SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
เล็ทมีซี : เครื่องมือเรียนรูเพื่อฝกเขียนโปรแกรมสําหรับเครื่องหลาย
หนวยประมวลผลโดยใชภาษาซี/ซีพลัสพลัส
LET ME C : a Learning Tool providing a Multiprocessor-programming
Environment based on C/C++
โปรแกรมเพื่อสงเสริมการเรียนรู(นักศึกษา)
รายงานฉบับสมบูรณ
เสนอตอ
ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
สํานักงานพัฒนาวิทยาศาสตรและเทคโนโลยีแหงชาติ
กระทรวงวิทยาศาสตรและเทคโนโลยี
ไดรับทุนอุดหนุนโครงการวิจัย พัฒนาและวิศวกรรม
โครงการแขงขันพัฒนาโปรแกรมคอมพิวเตอรแหงประเทศไทย ครั้งที่ 11
ประจําปงบประมาณ 2552
โดย
นางสาวจตุรดา ดียิ่ง
นางสาวกุสุมา อาดัมภ
ชื่ออาจารยที่ปรึกษาโครงการ นางสาววรวรรณ มะเริงสิทธิ์
สถาบันการศึกษา มหาวิทยาลัยธรรมศาสตร
รหัสโครงการ 11p12c602
I
กิตติกรรมประกาศ (Acknowledgement)
โครงการเล็ทมีซี ไดรับทุนสนับสนุนการพัฒนาโครงการจากศูนยเทคโนโลยีอิเล็กทรอนิกสและ
คอมพิวเตอรแหงชาติ สํานักงานพัฒนาวิทยาศาสตรและเทคโนโลยีแหงชาติ กระทรวงวิทยาศาสตรและ
เทคโนโลยี ไดรับทุนอุดหนุนโครงการการแขงขันพัฒนาโปรแกรมคอมพิวเตอรแหงประเทศไทย ครั้งที่ 11
จากศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ สํานักงานพัฒนาวิทยาศาสตรและเทคโนโลยี
แหงชาติ และสํานักงานสงเสริมอุตสาหกรรมซอฟตแวรแหงชาติ พรอมระบุชื่อโครงการที่ไดรับทุนไวดวย
ขอขอบพระคุณอาจารยที่ปรึกษาที่ไดใหคําแนะนํา ขอคิดเห็น และใหความรูตางๆ รวมทั้งให
ความชวยเหลือในดานตางๆ
ขอขอบคุณภาพภาควิชาวิทยาการคอมพิวเตอร คณะวิทยาศาสตรและเทคโนโลยี
มหาวิทยาลัยธรรมศาสตร ที่ใหขอมูล ขาวเกี่ยวกับโครงการโครงการแขงขันพัฒนาโปรแกรมคอมพิวเตอร
แหงประเทศไทย
และขอขอบคุณเพื่อนๆ และผูที่เกี่ยวของทุกๆทานที่ใหคําปรึกษา และใหคําชวยเหลือตลอดการ
ทํางานจนสําเร็จลุลวงไปไดดวยดี
ผูพัฒนาโครงการจึงขอกราบขอบพระคุณมา ณ โอกาสนี้
นางสาวจตุรดา ดียิ่ง
นางสาวกุสุมา อาดัมภ
II
บทคัดยอ
นวัตกรรมของสถาปตยกรรมหนวยประมวลผลแบบมัลติคอร เพื่อเพิ่มศักยภาพการประมวลผล
ในภาวะวิกฤติการขาดแคลนพลังงาน ขอจํากัดของวิกฤตพลังงานเชน สถาปตยกรรมการ ออกแบบมีขอดี
ขอเสีย สรรถนะการทํางานและการใชพลังงานในการประมวลผล จึงเปนเรื่องที่สําคัญที่จะตองพิจารณา
ในดานฮารดแวรก็มุงใหความสําคัญกับการออกแบบเพื่อลดการใชพลังงานอยางสิ้นเปลือง อยางไรก็ตาม
ในบทบาทของโปรแกรมเมอรควรใหความสําคัญ กับการออกแบบโปรแกรมที่มีสมถนะไดตรงตามความ
ตองการ และใชพลังงานใหนอยที่สุด งานวิจัยชิ้นนี้มุงหวังใหผูเริ่มตนเขียนโปรแกรมเชิงขนาน ให
ความสําคัญทั้งการเขียนโปรแกรมอยางมีประสิทธิภาพและคํานึงถึงการประหยัดพลังงาน โดยใชเครื่องมือ
ที่ชื่อวา LET ME C ซึ่งเปนเครื่องมือตัวอยางที่ชวยให ผูเริ่มตนการเขียนโปรแกรมเชิงขนานไดศึกษาการ
เขียนโปรแกรมเชิงขนานและผลกระทบ จากการใชพลังงานของโปรแกรม
คําสําคัญ: เครื่องมือเรียนรู, การทําความเขาใจโปรแกรมเชิงขนาน, สมรรถนะการประมวลผลเชิง
ขนาน, การเขียนโปรแกรมที่ตระหนักถึงพลังงาน
III
Abstract
Emerging of multicore architecture makes high-performance PCs available. Despite
that, the limitation caused by power crisis on such architecture has made the trade offs between
performance and power-aware computing ever more important. Hardware vendors have
focused their design on how to reduce the power consumption of components. However,
programmers also play an important role in designing a program which could satisfy
performance requirement within the minimum power consumption. This research work proposes
an approach for training novice parallel programmers to be both performance- and power-
aware by using a learning tool called LET-ME-C. We demonstrated that the tool could, not only
guide the programmers on how the codes could be parallelized, but also depict the impact of
novice’s codes on performance and power consumption at prompt.
Keywords: Learning tool, Parallel Program Comprehension, Parallel Execution
performance, Power-aware programming
IV
บทนํา
การเปลี่ยนยุคของหนวยประมวลผลเขาสูยุคหลายหนวยประมวลผล (Multicore) สงผลกระทบ
ใหผูเขียนโปรแกรมประยุกตจะตองเปลี่ยนวิธีการพัฒนาโปรแกรมจากเชิงลําดับมาเปนเชิงขนาน เพื่อให
โปรแกรมสามารถดึงศักยภาพสูงสุดของหนวยประมวลผลทุกคอรในระบบขึ้นมาได โดยใหมีความ
สิ้นเปลืองพลังงานนอยที่สุด หนวยประมวลผลแบบหลายหนวยประมวลผล ประมวลผลพรอมกันไปเชิง
ขนานโดยรวมกันทํางานยอยซึ่งเปนอิสระตอกันทํางานพรอมกันไป ทําใหงานเสร็จเร็วขึ้น คอมพิวเตอรสวน
บุคคลที่มีหนวยประมวลผลแบบหลายหนวยประมวลผล มักจะมีสถาปตยกรรมแบบใชหนวยความจํารวม
กลาวคือ เมื่อแบงการประมวลผลของโปรแกรมเปนงานยอย แตละสวนงานยอยสามารถเรียกใชตัวแปรใน
หนวยความจํารวมกันได โดยไมตองใชการสื่อสารขอมูลระหวางหนวยประมวลผล ดังนั้นการประมวลผล
เชิงขนานโดยใชหนวยความจํารวมจึงไดรับความนิยมในกลุมผูพัฒนาโปรแกรมเชิงขนานบนเครื่องหลาย
หนวยประมวลผล ซึ่งผูพัฒนาโปรแกรมสวนใหญจะใชโอเพนเอ็มพี (OpenMP) เปนสวนตอประสาน
โปรแกรมประยุกต (API) เพื่อพัฒนาโปรแกรมเชิงขนานบนเครื่องดังกลาว เพราะโอเพนเอ็มพีอํานวยความ
สะดวกในการแบงงานยอย ควบคุมการสื่อสารระหวางงานยอยโดยใชตัวแปรรวมกัน ลักษณะการสื่อสาร
โดยใชตัวแปรรวมกันนี้มีความใกลเคียงกับโปรแกรมแบบลําดับ จึงทําใหการเขียนโปรแกรมทําไดรวดเร็ว
อยางไรก็ตาม ทั้งที่หนวยประมวลผลแบบหลายหนวยประมวลผล นั้นกลายเปนแพลตฟอรมหลักในการ
ประมวลผลปจจุบัน แตผูเรียนเขียนโปรแกรมเบื้องตนยังไมมีเครื่องมือเพื่อชวยทําความเขาใจการ
ประมวลผลเชิงขนาน บนสถาปตยกรรมมัลติคอร จึงทําใหความรูทางดานการเขียนโปรแกรมเชิงขนานโดย
ใชโอเพนเอ็มพี ยังคงจํากัดอยูในกลุมผูเชี่ยวชาญเทานั้น นอกจากนี้ผูเรียนเขียนโปรแกรมเบื้องตน มักจะ
มองขามความสําคัญของการปรับปรุงสมรรถนะของโปรแกรมเพื่อลดความสิ้นเปลืองพลังงาน จึงเปนเหตุ
ให โปรแกรมที่ผลิตไดอาจจะทํางานตรงตามความตองการ แตไมไดถูกปรับใหใชพลังงานอยางประหยัด
ที่สุด
เพื่อเปนทางเลือกสําหรับผูเรียนเขียนโปรแกรมที่ตองการปรับแนวทางการเขียนโปรแกรมเขาสู
ยุคมัลติคอรงายขึ้น รายงานหัวขอพิเศษฉบับนี้จึงนําเสนอ โครงงานเล็ทมีซี โครงงานสรางเครื่องมือเรียนรู
เพื่อฝกเขียนโปรแกรมสําหรับเครื่องหลายหนวยประมวลผลโดยใชภาษาซี/ซีพลัสพลัส เพื่อเปนเครื่องมือ
ชวยในการเรียนรู และฝกฝนการเขียนโปรแกรมที่มีการประมวลผลเชิงขนาน เพราะในปจจุบันการ
ออกแบบระบบคอมพิวเตอรเริ่มใหความสนใจกับการออกแบบหนวยประมวลผลใหมีความสามารถดาน
การประมวลผลเชิงขนาน เพื่อเพิ่มความเร็วในการประมวลผล นอกจากนี้เล็ทมีซียังมีการแสดงผลขอมูล
เกี่ยวกับการใชพื้นที่หนวยความจําของโปรแกรม แสดงปริมาณพลังงานที่สูญเสียในการประมวลผล
เพื่อใหผูใชคํานึงถึงประสิทธิภาพของโปรแกรมที่ไดพัฒนาขึ้น
V
สารบัญ
กิตติกรรมประกาศ (Acknowledgement) I
บทคัดยอ II
Abstract III
บทนํา IV
สารบัญ V
สารบัญรูป VI
วัตถุประสงคและเปาหมาย 1
- วัตถุประสงค 1
- ประโยชน 2
รายละเอียดของการพัฒนา 3
- เนื้อเรื่องยอ 3
- ทฤษฎีหลักการและเทคนิคหรือเทคโนโลยีที่ใช 11
- เครื่องมือที่ใชในการพัฒนา 12
- รายละเอียดโปรแกรมที่ไดพัฒนาในเชิงเทคนิค 12
- ขอบเขตและขอจํากัดของโปรแกรม 13
- กลุมผูใช 13
- ผลการทดสอบโปรแกรม 13
เอกสารอางอิง (Reference) 17
ภาคผนวก (Appendix) 18
VI
สารบัญรูป
รูปที่ 1 เครื่องมือเรียนรูเอลวิส (ALVIS) แบบแสดงผลตอบกลับอัตโนมัติ – ทันทีที่ผูเรียนพิมพผิด
(Hundhausen และ Brown, 2007) 4
รูปที่ 2 ผังตนไมตัดสินใจเพื่อประมาณการใชพลังงาน (Xian, Lu, & Li, 2007) 5
รูปที่ 3 การใชพลังงานของโปรแกรมอานไฟลสี่วิธี (Xian, Lu, & Li, 2007) 5
รูปที่ 4 ภาพ Visual Programming Environment (Tan & Cai, 1994) 6
รูปที่ 5 Scalable Graph จะถูกแสดงเปนภาพการแตกเทรดในลักษณะกรวย 3 มิติ (Kim, Lom, & Jun,
2007) 7
รูปที่ 6 แสดง Data dependence และ Graph 7
รูปที่ 7 Iteration Space ของ Array 1 มิติ 7
รูปที่ 9 แสดง Iteration Vector 8
รูปที่ 10 Loop-independent dependence 8
รูปที่ 12 Distance Vector 8
รูปที่ 8 Iteration Space ของ Array 2 มิติ 8
รูปที่ 11 Loop-carried dependence 8
รูปที่ 15 แสดง ตัวอยางที่ 2 ของลูปทเกิด loop carried dependency ซึ่งสามารถทําการแกไข
dependency 9
รูปที่ 13 แสดงการวิเคราะห loop carried dependency 9
รูปที่ 14 แสดง ตัวอยางที่ 1 ของลูปทเกิด loop carried dependency ซึ่งสามารถทําการแกไข
dependency 9
รูปที่ 16 โปรแกรมเล็ทซี (ฤทธิรณชัย, 2550) 10
รูปที่ 17 แสดงหนาจอเพื่อเลือกไฟล Setup 17
รูปที่ 18 หนาจอการเริ่มติดตั้งโปรแกรม 18
รูปที่ 19 เลือกประเภทการติดตั้งโปรแกรม 18
รูปที่ 20 เริ่มตนการติดตั้งโปรแกรม 18
รูปที่ 21 แสดงหนาจอขณะทําการติดตั้งโปรแกรม 19
รูปที่ 22 หนาจอแสดงการลงทะเบียนโปรแกรม 19
รูปที่ 23 หนาจอแสดงการเสร็จสิ้นการลงโปรแกรม 20
VII
รูปที่ 24 หนาจอแสดงการกําหนดคุณสมบัติของโปรแกรม 20
รูปที่ 25 เลือกประเภทการกําหนดคุณสมบัติของโปรแกรม 21
รูปที่ 26 กําหนดวินโดวสอ็อบชั่น 21
รูปที่ 27 กําหนดอ็อบชั่นความปลอดภัยของโปรแกรม 22
รูปที่ 28 แสดงหนาจอขณะติดตั้งการกําหนดคุณสมบัติของโปรแกรม 23
รูปที่ 29 เสร็จสิ้นการกําหนดคุณสมบัติของโปรแกรม 23
รูปที่ 30 แสดงหนาจอเพื่อเลือกไฟล jre-6u3-windows-i586-p-s.exe 24
รูปที่ 31 แสดงหนาจอใหยอมรับเงื่อนไขลิขสิทธิ์ของโปรแกรม 25
รูปที่ 32 แสดงหนาจอขณะทําการติดตั้งโปรแกรม 25
รูปที่ 33 แสดงหนาจอเสร็จสิ้นการติดตั้งโปรแกรม 26
รูปที่ 34 นําไฟล letmec_beta1 ไปวางยังที่ที่ตองการ 27
รูปที่ 35 ภาพภายในไฟล letmec_beta1 27
รูปที่ 36 ภาพ Logo ของเล็ทมีซี 28
รูปที่ 37 ภาพโปรแกรมเล็ทมีซี 28
รูปที่ 38 ภาพ Open file เพื่อเปดไฟล 29
รูปที่ 39 ภาพการเปดไฟล 29
รูปที่ 40 ภาพแสดงไฟล test.cpp 30
รูปที่ 41 ภาพแสดงการเลือกคําสั่ง การ Run โปรแกรม 30
รูปที่ 42 ภาพแสดงการ Run โปรแกรม 31
รูปที่ 43 ภาพแสดง Execution time และ Instruction count 31
รูปที่ 44 ภาพแสดงการเลือก รุนของ Processor และชื่อของรุน ของ Processor 32
รูปที่ 45 ภาพแสดงการยีนยันการเลือก Processor และการเปลียนแปลงของ Ideal Time 32
1
วัตถุประสงคและเปาหมาย
เล็ทมีซีเปนเครื่องมือชวยสอนเขียนโปรแกรมแบบขนาน (Parallel Programming) ที่สงเสริมให
ผูเรียนตระหนักถึงความสําคัญของการออกแบบโปรแกรมตอความสิ้นเปลืองพลังงาน ผูพัฒนาจึงมี
แนวทางในการพัฒนาโปรแกรมเล็ทมีซีขึ้นเพื่อเปนเครื่องมือชวยในการเรียนรู และฝกฝนการเขียน
โปรแกรมที่มีการประมวลผลเชิงขนาน เพราะในปจจุบันการออกแบบระบบคอมพิวเตอรเริ่มใหความสนใจ
กับการออกแบบหนวยประมวลผลใหมีความสามารถดานการประมวลผลเชิงขนาน เพื่อเพิ่มความเร็วใน
การประมวลผล นอกจากนี้เล็ทมีซียังมีการแสดงผลขอมูลเกี่ยวกับการใชพื้นที่หนวยความจําของโปรแกรม
แสดงปริมาณพลังงานที่สูญเสียในการประมวลผล เพื่อใหผูใชคํานึงถึงประสิทธิภาพของโปรแกรมที่ได
พัฒนาขึ้น
วัตถุประสงค
เพื่อสรางโปรแกรมเล็ทมีซีซึ่งเปนโปรแกรมประยุกตใชบนวินโดว ตอยอดจากโปรแกรมเล็ทซี โดย
เพิ่มสวนการสอนเขียนโปรแกรมเชิงขนานดังนี้
1. เพื่อพัฒนาตัวตัดคําและตัวเทียบไวยากรณ(Lexical scanner และ Syntactic Analyser)
ใหสามารถ อานไวยากรณ ของโอเพนเอ็มพีเอพีไอได
2. เพื่อพัฒนาสวนติดตอกับผูใชโปรแกรมเล็ทมีซี ใหสามารถไฮไลทไวยากรณของโปรแกรมเชิง
ขนานได
3. เพื่อพัฒนาสวนวิเคราะหประสิทธิภาพการประมวลผลโปรแกรมเชิงขนานที่ผูใชเขียนขึ้นใน
เล็ทมีซี
4. เพื่อพัฒนาตัววิเคราะหความสิ้นเปลืองพลังงานของโปรแกรมเชิงขนานที่ผูใชเขียนขึ้นใน
เล็ทมีซี
2
ประโยชน
1. การสรางโปรแกรมเล็ทมีซี เปนแนวคิดใหผูใชเขาใจการประมวลผลเชิงขนาน ซึ่งเปนความรู
เบื้องตนของการทํางานของคอมพิวเตอรที่มีระบบการประมวลผลเชิงขนานหรือคอมพิวเตอร
แบบ Core 2 Duo ที่ในปจจุบันคอมพิวเตอรจะเริ่มมีการพัฒนาระบบการประมวลผลแบบเชิง
ขนานมีแนวโนมใชกันมากขึ้น เพราะฉะนั้นผูใชคอมพิวเตอรจะสามารถศึกษาระบบการ
ประมวลผลเชิงขนานไดจากโปรแกรมเล็ทมีซี
2. สวนของการไฮไลทโปรแกรมจะชวยใหผูใชเห็นความผิดพลาดของการเขียนโปรแกรมไดงายขึ้น
และทันที โดยเมื่อผูใชพิมพคําสั่ง หรือโคดในสวนที่เปนคําสําคัญ เล็ทมีซีจะทําการไฮไลทใน
สวนทําเหลานั้นทันที ทําใหผูใชงานสามารถตรวจสอบไดทันที
3. สวนของการวิเคราะหพลังงานและประสิทธิภาพทําใหผูใชทราบถึงการใชพลังงานและ
ประสิทธิภาพของโปรแกรมที่ผูใชเขียนขึ้นได
4. การสรางสวนของโปรแกรมโดยใชจาวาเทคโนโลยี ทําใหผลลัพธที่ได สวนวิเคราะห
ประสิทธิภาพ หรือสวนวิเคราะหการใชพลังงาน สามารถนําไปพัฒนาตอเพื่อสรางเปน
โปรแกรมประยุกตอื่นๆ ได
3
รายละเอียดของการพัฒนา
ในการพัฒนาโครงงานเล็ทมีซีผูพัฒนาไดทําศึกษารายละเอียด ประวัติความเปนมาของขอมูล
ตางๆ ที่เกี่ยวของ และทฤษฎีตางๆ ที่มีความเกี่ยวของ ดังนี้
เนื้อเรื่องยอ (Story Board)
เครื่องมือเรียนรูสําหรับฝกเขียนโปรแกรมเริ่มตนมีในรูปแบบของโปรแกรมชวยสอน หรือ ซีเอไอ (Computer
Aided Instruction) โดยในป ค.ศ. 1970 มีระบบชวยสอนชื่อ “ทีช (TEACH)” ของมหาวิทยาลัยเอ็มไอที (MIT) เปน
โปรแกรมสอนเขียนโปรแกรมภาษา UNCL ใหกับนักศึกษาชั้นปที่หนึ่ง (Fenichel, Weizenbaum, & Yochelson, 1970)
[5] ในป ค.ศ. 1968 - 1969 ซึ่งไดรับการยอมรับจากผูเรียนโดยสวนใหญ แตผูวิจัยไมไดประเมินประสิทธิภาพของการ
เรียนรูที่ไดรับจากการใชโปรแกรม จึงไมอาจระบุไดวาโปรแกรมทีชมีสวนชวยพัฒนาศักยภาพของผูเรียน
ภายหลังจากระบบทีช มีคณะวิจัยกลุมหนึ่ง (เนวาเลียเนน และคณะ, 2006) กลาวถึงงานวิจัยซึ่งไดพัฒนา
เครื่องมือชวยสอนโดยใชภาพหลายชิ้น โดยกลาววา การศึกษาของเครื่องมือเหลานี้ไดแสดงใหเห็นวา การสอนเขียน
โปรแกรมโดยใชภาพมีผลสัมฤทธิ์ตอการเรียนรูระยะยาว (Long-term effects) จึงไดนําเสนองานวิจัยเพื่อพิสูจนผลกระทบ
จากการใชภาพเคลื่อนไหวหรือภาพนิ่ง ตอการเรียนรูระยะสั้น (Short-term effects) เนวาเลียเนน และคณะ ใชโปรแกรม
ชวยสอนชื่อ แพลนเอนี่ (PlanAni) มาทําการทดลอง โดยปรับใหแพลนเอนี่แสดงภาพเคลื่อนไหวในสองระดับ คือแสดงโดย
ละเอียด และแสดงอยางหยาบหรือแสดงเปนภาพนิ่ง ผูวิจัยทําการทดลองโดยใหผูเรียนกลุมเดียวกัน ทดลองใชแพลนเอนี่
ทั้งสองรูปแบบ และพบวาผูเรียนใหความสนใจกับขอความประกอบมากกวาภาพเคลื่อนไหว จึงสรุปไดวาการมี
ภาพเคลื่อนไหวโดยละเอียดไมไดมีผลกระทบตอการโตตอบระยะสั้นของผูเรียน เทากับการมีคําอธิบายหรือขอความ
ประกอบภาพ ซึ่งสอดคลองกับขอมูลในตัวโปรแกรม
ในป ค.ศ. 2005 เอฟโฟโปลัส และคณะ (Efopoulos, Dagdilelis, Evangelidis, & Satratzemi, 2005) เสนอ
เครื่องมือเรียนรูบนเว็บชื่อ ไวป (WIPE – Web Integrated Programming Environment) โดยเสนอวาเครื่องมือเรียนรูควร
ใชหลักการออกแบบสามประการไดแก
1. เครื่องมือควรออกแบบใหงายตอการใชงาน (Simplicity)
2. เครื่องมือควรใชขอมูลที่สอดคลองกับหนังสือหรือคูมือ (Consistency)
3. เครื่องมือควรเนนใหผูเรียนเขียนโปรแกรมไมใชออกแบบจอภาพ (Emphasis on the source code)
คณะวิจัยไดนําไวปไปทดลองใชกับนักศึกษาซึ่งเรียนเขียนโปรแกรมในชั้นปที่หนึ่ง และคนพบความผิดพลาดที่
นักศึกษาสวนใหญตองใชเวลานานในการแกไข ไดแก ผิดไวยากรณแปดประการ และการผิดเชิงตรรกะสี่ประการ
ฮันดฮาวเซนและบราวน (Hundhausen & Brown, 2007) ศึกษาผลกระทบของคุณลักษณะความมีชีวิตชีวา
(Live ness) ของเครื่องมือเรียนรู ตอผลสัมฤทธิ์ของการเรียนของผูเริ่มตนเรียนวิธีการเขียนโปรแกรมเชิงขั้นตอน
(Imperative programming) และไดคนพบวาผูเรียนจะเขียนคําสั่งที่ผิดไวยากรณและผิดความหมายนอยมากหากผูเรียน
ไดรับผลตอบกลับ (feedback) จากเครื่องมือเรียนรูเมื่อเทียบกับการไมไดรับผลตอบกลับ แตอยางไรก็ตาม ไมวาผูเรียนจะ
ไดรับผลตอบกลับดวยวิธีการใด ไมสงผลวาจะชวยใหผูเรียนลดการเขียนไวยากรณหรือความหมายผิดแตกตางกันอยางมี
4
นัยสําคัญทางสถิติ กลาวคือ การเลือกรับผลตอบกลับเมื่อตนตองการ (Self-select feedback) หรือ การแสดงผลตอบกลับ
ทันทีโดยอัตโนมัติ (Automatic feedback) นั้นไมมีความแตกตางกัน
งานวิจัยของ ฮันดฮาวเซนและบราวน ศึกษาสองในสามองคประกอบ ของคุณลักษณะความมีชีวิตชีวาของ
เครื่องมือเรียนรู ซึ่งทานิโมโตไดระบุไว (Tanimoto’s notion of liveness) ไดแก
1. ลักษณะของเนื้อหาที่ตอบกลับตอผูเรียน (feedback content)
2. เวลาที่ผูเรียนตองรอผลตอบกลับ (feedback delay)
3. วิธีการที่ผูเรียนไดรับผลตอบกลับ (feedback self-selection) ซึ่งหมายถึงผูเรียนสามารถเลือกรับผล
ตอบกลับเมื่อตองการ หรือ เครื่องมือเรียนรูแสดงผลตอบกลับทันทีโดยอัตโนมัติ
โดยใชเครื่องมือเรียนรูชื่อ เอลวิส (ALVIS) สอนเขียนโปรแกรมภาษาซัลซา (SALSA) ซึ่งเปนภาษาอยางงาย มี
ลักษณะคลายคําสั่งเทียม เอลวิสถูกปรับเปนสามรูปแบบจําแนกตามลักษณะการแสดงผลตอบกลับ ฮันดฮาวเซนและบ
ราวน คัดเลือกนักศึกษาระดับปริญญาตรีชั้นปที่ 1 โดยคัดเลือกผูที่ไมเคยเขียนโปรแกรมมากอน โดยนักวิจัยคาดวาจะทํา
การทดลองในอนาคตเพื่อหาผลกระทบของการชะลอเวลาสงผลตอบกลับ และความเปนไปไดที่จะสรางเครื่องมือเรียนรูที่
ปรับตามลักษณะความตองการของผูเรียนได
รูปที่ 1 เครื่องมือเรียนรูเอลวิส (ALVIS) แบบแสดงผลตอบกลับอัตโนมัติ – ทันทีที่ผูเรียนพิมพผิด
(Hundhausen และ Brown, 2007)
สวนการเขียนโปรแกรมโดยตระหนักถึงพลังงาน (Power-aware programming) นั้นเปนประเด็น
สําคัญในการผลิตโปรแกรมสําหรับระบบฝงตัว หรือสําหรับหนวยประมวลผลแบบฝงตัว ซึ่งการวิเคราะห
ความสิ้นเปลืองพลังงานไฟฟานั้น อธิบายโดยใชปริมาณพลังงานในหนวย วัตต (watt) วัตตตอชั่วโมง
(watt-hour) หรือ จูล (Joule) การประมาณการใชพลังงานในปจจุบันทําโดยวิเคราะหจากคําสั่ง
ภาษาแอสเซมบลี โดยคอมไพเลอรซึ่งการวิเคราะหแบงเปน ระดับรอบของสัญญาณนาฬิกา ระดับคําสั่ง
ระดับกลุมคําสั่ง และระดับฟงกชั่น
เซียนและคณะ (Xian, Lu, & Li, 2007)เสนอเครื่องมือเขียนโปรแกรมเพื่อสรางโปรแกรมประยุกต
ที่ตระหนักถึงการใชพลังงาน โดยเครื่องมือนี้จะแสดงคุณลักษณะการใชพลังงานของโปรแกรมเมื่อ
5
ประมวลผล เครื่องมือเขียนโปรแกรมที่นักวิจัยเสนอมีลักษณะเปน ไลบราลี่ที่โปรแกรมประยุกตสามารถ
เรียกใชได (Application Program Interface Library) ที่จะนําไปใชเพื่อวิเคราะหความสิ้นเปลืองพลังงาน
การประมาณความสิ้นเปลืองพลังงานทําโดยแบงการทํางานของคําสั่งในโปรแกรมเปนสามชนิด
การสงรับขอมูลจากเครือขาย (net) การอานเขียนดิสก (disk) การคํานวณที่หนวยประมวลผล (processor)
เมื่อโปรแกรมประมวลจนถึงคําสั่งQueryEnergy ไลบรารี่จะประสานงานกับ OS เพื่อนํากลุมคําสั่งที่อยู
ในชวงมาแยกชนิดและประเมินคาพลังงานของคําสั่งแตละชนิดโดยใชตนไมตัดสินใจ (ดังรูปที่ 2) และ
คํานวณคาประมาณการสิ้นเปลืองพลังงานออกมาในหนวยจูล (ดังรูปที่3)
รูปที่ 2 ผังตนไมตัดสินใจเพื่อประมาณการใชพลังงาน (Xian, Lu, & Li, 2007)
รูปที่ 3 การใชพลังงานของโปรแกรมอานไฟลสี่วิธี (Xian, Lu, & Li, 2007)
ผลลัพธจากการทดลองพบวาไลบรารีสามารถชวยใหผูสรางโปรแกรมไดประเมินความสิ้นเปลือง
พลังงานของโปรแกรมได และชวยใหผูเขียนโปรแกรมตระหนักตอความสําคัญในการประเมินการใช
พลังงานในระหวางพัฒนาโปรแกรม
การเขียนโปรแกรมที่มีการทํางานแบบประมวลผลเชิงขนาน จะชวยลดเวลาในการประมวลผลให
ลดลง และเพิ่มประสิทธิภาพใหกับคอมพิวเตอร แตเนื่องจากการพัฒนาโปรแกรมเชิงขนาน มีความยุงยาก
ซับซอนในการเขียนโปรแกรม ดังนั้นหัวใจหลักที่ชวยในการพัฒนาโปรแกรมเชิงขนานจึงอยูกับเครื่องมือที่
ชวยในการพัฒนา ซึ่งยังมีนอย ในป ค.ศ.1994 ฮงคอนเทน และคณะ (Tan และ Cai, 1994) ไดเสนอ
เครื่องมือที่ชื่อวา วีพีคอนส (VPEcons) ซึ่งเปนเครื่องมือที่ชวยในเขียนโปรแกรมเชิงขนาน ประเภท Visual
6
Programming Environment โดยเริ่มจากการพัฒนาเปนรูปแบบของ Model รูปภาพ เพื่อใหงายตอการ
เขาใจระบบการทํางานของโปรแกรมที่ออกแบบ และลักษณะของโปรแกรมประเภท Visual
Programming Environment
รูปที่ 4 ภาพ Visual Programming Environment (Tan & Cai, 1994)
วีพีคอนส จึงเปนอีกเครื่องมือหนึ่งที่เขามาชวยในการพัฒนาโปรแกรมเชิงขนานใหงายขึ้น โดย
ลักษณะของ วีพีคอนสจะใชกราฟฟกเขามาเปนเครื่องมือชวยในการออกแบบโปรแกรมเชิงขนานใหอยูใน
รูปแบบของโมเดล หลังจาก VPECons จะแปลงจากรูปแบบของโมเดลเปนภาษา C ที่สามารถทํางาน
บนระบบเชิงขนานได
ภายหลังมีการใชคําสั่งโอเพนเอ็มพี ซึ่งเปนสวนตอประสานโปรแกรมประยุกต(API) ที่ถูกเลือกใช
สําหรับพัฒนาโปรแกรมเชิงขนาน สามารถรองรับการโปรแกรมในภาษาซี/ซีพลัสพลัสและฟอรเทน รวมถึง
รวมถึง ยูนิค(Unix )และไมโครซอรฟ วินโดวร (Microsoft Window) ในป ค.ศ. 2004 เรนี คลอบเบอร และ
คณะ (Kobler, Kranzlmuller, และ Volkert, 2004) ไดเสนอเครื่องมือที่ชื่อวา เดวิซ (DeWiz) ในรูปแบบ
ของกราฟแสดงเหตุการณ(Event Graph) ที่จะอธิบายการเปลี่ยนแปลงในแตละขั้นตอนการประมวลผล
คําสั่งตางๆ ในสวนของโปรแกรมเชิงขนาน (Critical Regions) ที่ถูกแทรกดวยคําสั่งของ OpenMP
ในการใชคําสั่ง เพื่อใชในการแตกเทรดมักจะเกิดปญหาในการแยงกันใชขอมูล หรือที่เรียกวา
Data race ยังโจ คิม และคณะ (Kim, Lom, และ Jun, 2007) ไดมีการนําเสนอ Thread Visualization tool
ซึ่งเปนเครื่องมือที่เขามาชวยแสดง ลําดับการทํางานของการแตกเทรด เปนภาพ Scalable Graph ที่ถูก
แสดงเปนภาพการแตกเทรดในลักษณะกรวย 3 มิติ (3D Cone Scalable Thread Visualization และจะถูก
ตรวจสอบประสิทธิภาพ ในการคนหาการแยงกันใชขอมูล ไดโดย Synthetic Program
7
รูปที่ 5 Scalable Graph จะถูกแสดงเปนภาพการแตกเทรดในลักษณะกรวย 3 มิติ (Kim, Lom, & Jun, 2007)
Data Dependence
เปนการ รอบันทึกและการอานคาของขอมูลลงหนวยความจํา ที่ตองพิจาณาในเรื่องของลําดับการประมวลผล
ของตัวแปรในโปรแกรม โดยสามารถแบงประเภทไดดังนี้
1. Flow Dependence (or true dependence) : (RAW: read after write)
2. Antidependence : (WAR: write after read)
3. Output Dependence: (WAW: writer after write)
รูปที่ 6 แสดง Data dependence และ Graph
การวิเคราะห loop carried dependency
Loop dependence คือการที่ในหนึ่งรอบการวนลูปแตละครั้ง statement การทํางานขางในลูปมี
dependency กันระหวางลูป กลาวคือขางในการทํางานของลูปมีขอมูลที่เกิดความเกี่ยวเนื่องกันในลักษณะของ
Data dependency ทําใหลูปนั้นประมวลผลโดยการแบงการทํางานออกเปนเทรดยอยๆไมได
สิ่งที่ตองพิจารณาในการวิเคราะห loop carried dependency มีดังนี้
1. Iteration Space
เปนตัวบอกจํานวนครั้งที่เกิดการวนลูป ซึ่งหมายความวา loop มีการกวาดพื้นที่ไปเทาใด เชน
do i = 1,100
A(i) = A(i)+1
enddo
รูปที่ 7 Iteration Space ของ Array 1 มิติ
8
2. Iteration Vector
Iteration Vector เปนคาที่บอกขนาด และทิศทางของ iซึ่งเปนตัวกําหนดการวนลูป วาคา iมีการเพิ่มหรือ
ลด ไปในทิศทางใด
รูปที่ 9 แสดง Iteration Vector
จากรูป Iteration Vector คือคา i ที่มีการเพิ่มทีละ 1 และเคลื่อนที่ไปในทิศทางขวามือ
3. Dependence and Loop
ในการประมวลผลเชิงขนานนั้น จําเปนตองพิจารณาดวยวา ขางในลูปมีการเกิด dependency แบบใดซึ่ง
ในบางลักษณะของ dependency สามารถแกไขได ซึ่งสงผลใหสามารถแบงการทํางานเปนสวนยอยๆที่
สามารถทํางานพรอมกันได
ลักษณะของ Dependency
- Loop-independent dependence
รูปที่ 10 Loop-independent dependence
- Loop-carried dependences
4. Distance Vectors
เปนคาที่บอกวา คา output ที่การประมวลผลกอนหนา จะเปนคา input ที่คําสั่งตอมา ซึ่งอยูในลูปเดียวกัน โดย
มีระยะหาง เปนเทาใด โดยหาคา Distance Vector ไดจาก v = iT – iS (target– source)
รูปที่ 12 Distance Vector
do j = 1,6
do i = 1,5
A(j,i) = A(j-1,i-1)+1
enddo
enddo
do i = 1,100
A(i) = B(i) + 1
C(i) = A(i) * 2
enddo
do i = 1,6
do j = 1,5
A(i,j) = A(i-1,j-2)+1
enddo
enddo
Distance Vector : (1,2)
do i = 1,100
A(i) = A(i-1)+1
enddo
do i = 1,100
A(i) = B(i) + 1
C(i) = A(i-1) * 2
enddo
รูปที่ 8 Iteration Space ของ Array 2 มิติ
รูปที่ 11 Loop-carried dependence
9
วิเคราะหหา loop carried dependency
ในการเขียนโปรแกรม เชิงขนาน นั้น สิ่งแรกที่ตองคํานึงถึงนั้นคือ การพิจารณาวาในโคดสวนใดสามารถทําการ
ประมวลผลเชิงขนานได โดยตองวิเคราะห วาเกิด dependency หรือไม โดยหาจากการหาคาของ iteration space และ
คาของ distance vector โดยทั้งสองจะทําใหทราบวาการทํางานของลูปนั้น มี input ใดที่รอ output อื่นอยูซึ่งหมายความ
วาในการทํางานนั้นเกิด dependency ซึ่งในขั้นตอมาคือการวิเคราะหวา dependency สามารถแกไขไดหรือไม ถา
สามารถแกไข ได หมายความวา โคดสวนนั้นสามารถทําการประมวลผลเชิงขนานได
จากโคดตัวอยาง
วิเคราะหหา Distance vectors ได
Distance vectors : (1,0) for accesses to A
(0,1) for accesses to B
A เกิด loop carries dependency ที่ลูป i
B เกิด loop carries dependency ที่ลูป j
Loop Transformations
ลักษณะของลูปขางลางนี้ เปนลูปที่เกิด loop carried dependency ซึ่งสามารถทําการแกไข
dependency ที่เกิดขึ้นได โดยการสลับการทํางานของลูปขางใน กับลูปขางนอก ทําใหสามารถแบงงานยอย
เพื่อการประมวลผลเชิงขนานได
รูปที่ 15 แสดง ตัวอยางที่ 2 ของลูปทเกิด loop carried dependency ซึ่งสามารถทําการแกไข dependency
do i = 1,5
do j = 1,5
A(i,j) = B(i-1,j)+1
B(i,j) = A(i, j-1) * 2
enddo
enddo
do i = 1,6
do j = 1,5
A(i,j) = A(i-1,j-2)+1
enddo
enddo
do j = 1,5
do i = 1,6
A(i,j) = A(i-1,j-2)+1
enddo
enddo
รูปที่ 13 แสดงการวิเคราะห loop carried dependency
รูปที่ 14 แสดง ตัวอยางที่ 1 ของลูปทเกิด loop carried dependency ซึ่งสามารถทําการแกไข dependency
10
จากการศึกษาเครื่องมือเรียนรูสําหรับฝกเขียนโปรแกรม โดยโปรแกรมเล็ทซี (ฤทธิรณชัย, 2550)
ซึ่งเปนเครื่องมือชวยสอนเขียนโปรแกรมเชิงลําดับรูปแบบหนึ่ง
รูปที่ 16 โปรแกรมเล็ทซี (ฤทธิรณชัย, 2550)
และจากการศึกษาเรื่องของการพัฒนาโปรแกรมเชิงขนาน ทําใหทราบวา โปรแกรมในลักษณะ
เครื่องมือเรียนรูสามารถชวยใหโปรแกรมเมอรมีผลสัมฤทธิ์ทางการเรียนเพิ่มมากขึ้น ประกอบกับแนวโนม
ของคอมพิวเตอรในอนาคต การออกแบบระบบคอมพิวเตอรเริ่มใหความสนใจกับการ เพิ่มความเร็วในการ
ประมวลผล โดยออกแบบใหเครื่องคอมพิวเตอรมีหลายหนวยประมวลผล ซึ่งจะชวยลดเวลาในการ
ประมวลผลใหลดลง และเพิ่มประสิทธิภาพใหกับคอมพิวเตอรไดเปนอยางมาก ดังนั้นการทํางานแบบ
ประมวลผลเชิงขนานจึงมีแนวโนมวาถูกนําไปใชกันมากในอนาคตอันใกล และยังขาดเครื่องมือสําหรับการ
ชวยเขียนโปรแกรมเชิงขนาน จึงเปนเรืองที่นาสนใจที่จะสรางโปรแกรมเพื่อชวยโปรแกรมเมอรในการเขียน
โปรแกรมเชิงขนานขึ้นมา
การพัฒนาเกี่ยวกับการเขียนโปรแกรมเชิงขนานกอนหนานั้นมีเครื่องมือที่ถูกพัฒนาขึ้นมากมาย
โดยสวนใหญจะเนนการแสดงภาพการทํางานของโปรแกรมที่ทํางานเชิงขนานที่มีความซับซอนเพื่อให
เขาใจไดงายขึ้น และเพื่อตรวจหาความผิดพลาดจาการทํางานเชิงขนาน และจากการวิจัยตางๆไดชี้ให
ตระหนักวาการทํางานเชิงขนานมีลักษณะโครงสรางที่ซับซอนซึ่งเกิดจากการทํางานของสวนยอยเปน
จํานวนมาก และการแสดงเปนรูปภาพของโครงสราง และพฤติกรรมของการประมวลผลเชิงขนานนั้นมี
ความจําเปนและสามารถชวยใหเขาใจโปรแกรมเชิงขนานไดงายขึ้น ผูพัฒนาเล็ทมีซีจึงเลือกที่จะพัฒนา
เครื่องมือชวยเขียนโปรแกรมเชิงขนานโดยใหความสามารถการแสดงภาพการทํางานของโปรแกรมเชิง
ขนานเปนสิ่งสําคัญที่โปรแกรมตองมี
11
ทฤษฎีหลักการและเทคนิคหรือเทคโนโลยีที่ใช
1. การหาคาประสิทธิภาพจะมีสวนที่ติดตอกับผูใช ซึ่งแบงออกเปนสองสวนหลัก คือ
1.1 เวลาที่ไดจากการประมวลผลจริง (Measured Response Time) ในสวนนี้จะเปนสวนที่มี
การแสดงเวลาที่จับไดในการประมวลผลโปรแกรมที่ผูเรียนเขียนขึ้นจริง โดยมีหนวยเปนมิลลิวินาที
(ms)
1.2 เวลาประมวลผลที่ไดจากการคํานวณ (Theoretical Execution Time) ในสวนนี้จะเปน
สวนที่มีการแสดงเวลาในการประมวลผลโปรแกรมที่ผูเรียนเขียนขึ้นโดยไดจากการคํานวณ ซึ่งเวลา
ดังกลาวสามารถหาไดจากสมการประเมินประสิทธิภาพ (Performance Equation) โดยสมการ
ประเมินประสิทธิภาพ มีดังนี้
ประมาณความเร็วในการประมวลผล (Execution Time Equation)
คําอธิบายสมการ
1. Execution Time คือ เวลาในการประมวลผล มีหนวยเปน วินาที (second)
2. Instruction Count คือ จํานวนคําสั่งที่ประมวลผลในโปรแกรม
3. CPI หรือ Cycle Per Instruction คือ จํานวนรอบการทํางานตอหนึ่งคําสั่ง
4. Clock Rate คือ ความถี่ของสัญญาณนาฬิกาของหนวยประมวลผล มีหนวยเปน เฮิรซ (Hz)
2. ประเภทชุดคําสั่งภาษาของเครื่อง ไดแก
1. Data Transfer Instruction
2. Control Transfer Instruction
3. I/O Instruction
4. Floating-point Instructions
5. Binary Arithmetic Instructions
6. No Operation Instructions
Execution Time = Instruction Count * CPI * 1/Clock Rate
12
เครื่องมือที่ใชในการพัฒนา
1. ภาษา Java
2. Eclipse RCP
3. Java CUP
4. JFlax
5. JFreeChart
รายละเอียดโปรแกรมที่ไดพัฒนาในเชิงเทคนิค (Software Specification)
1. Input/Output Specification
1.1 Input Specification
- โคดภาษา C++ ที่ผูใชเขียนขึ้น
1.2 Output Specification
- โคดโปรแกรมที่ทําการไฮไลท
- แสดงผลการคอมไพลโปรแกรม และ Error ของโปรแกรมที่ผูใชเขียนขึ้น
- แสดง Instruction ดวย Pie Chart
- แสดง Excuetion Time ดวย Bar Chart
2. Functional Specification
2.1 สามารถวิเคราะหและไฮไลท(highlight)ไวยากรณของโปรแกรม
2.2 สามารถ Compile และ Run โปรแกรมที่ผูใชเขียนขึ้นได
2.3 สามารถรายงาน error ของโปรแกรม
2.4 สามารถคํานวณ Excuetion Time ของโปรแกรมและแสดงออกมาในรูปแบบของ Bar Chart
ได
2.5 คํานวณหา Instruction count ของโปรแกรม และแสดงออกมาในรูปแบบของ Pie Chart ได
13
ขอบเขตและขอจํากัดของโปรแกรมที่พัฒนา
การสรางเครื่องมือเรียนรูบนวินโดวส
การสรางสวนวิเคราะห และไฮไลทภาษา
การสรางสวนวิเคราะหเพื่อสงเสริมการเขียนโปรแกรมที่ตระหนักถึงประสิทธิภาพและพลังงาน
กลุมผูใชโปรแกรม
นักศึกษาและผูสนใจเกี่ยวกับการเขียนโปรแกรมเชิงขนาน ซึ่งเปนพื้นฐานของการพัฒนาของ
สถาปตยกรรมหนวยประมวลผลแบบมัลติคอร เพื่อเพิ่มศักยภาพการประมวลผล
ผลการทดสอบโปรแกรม
1. ทดสอบการไฮไลทภาษาของเล็ทมีซี
ผลการทดสอบ มีการ ไฮไลทสีของคําสําคัญ ไดถูกตอง
2. ทดสอบการ Compile และ Run โปรแกรมที่ผูใชเขียนขึ้น
ผลการทดสอบ สามารถ Compile และ Run Program ที่ผูใชเขียนขึ้นไดถูกตอง
3. ทดสอบการแสดง error ของโปรแกรม
ผลการทดสอบ มีการแสดง error ในสวนของ Console View ได
4. คํานวณ Excuetion Time ของโปรแกรม
ผลการทดสอบ มีการแสดงผลการคํานวณ Excuetion Time ดวย Bar Chart
5. คํานวณหา Instruction count ของโปรแกรม
ผลการทดสอบ มีการแสดงผลการคํานวณ Instruction count ดวย Pie Chart
14
ปญหาและอุปสรรค
เล็ทมีซีมีการพัฒนาที่คอยขางซับซอน การพัฒนาจึงตองถูกแบงออกเปนสวนๆ และจะมีการพัฒนา
ที่แตกตางกัน จึงตองใชเวลาในการวิเคราะหและพิจารณาในแตละสวน
เล็ทมีซี มีสวนที่เปน Compiler ซึ่งตองมีการเขียนในสวน Passer และ Scanner ที่ตองใชเวลาใน
การเขียน และตองมีการตรวจสอบ
มีสวนที่ตองใชเครื่องมือเขามาชวยในการพัฒนาโครงการ เชน Eclipse RCP ซึ่งผูพัฒนาไมมี
ความคุนเคย และตองมีการศึกษาเครื่องมือที่เขามาชวยในการพัฒนา ซึ่งอาจตองใชเวลาใน
การศึกษามาก
เล็ทมีซี ตองมีการนําสวนตางๆ ที่ไดพัฒนาขึ้นมาประกอบเปนระบบใหญ โดยแตละสวนทําการ
พัฒนาโดยใชวิธีแตกตางกัน และจะมีปญหาในการประกอบเขากันเปนระบบใหญ
แนวทางในการพัฒนาและประยุกตใชรวมกับงานอื่นๆ ในขั้นตอไป
โครงงานเล็ทมีซีเปนเครื่องมือชวยสอนภาษาเขียนโปรแกรมเชิงขนาน ดวยภาษาซีพลัสพลัส
เพราะเนื่องจากคอมพิวเตอรสวนใหญถูกพัฒนาใหมีหนวยประมวลผลหลายคอร ดังนั้นผูเขียนโปรแกรม
จะตองเปลี่ยนวิธีการพัฒนาโปรแกรมจากเชิงลําดับมาเปนเชิงขนาน เพื่อเปนสิ่งที่จะเพิ่มประสิทธิภาพของ
เครื่องประมวลผลหลายคอรใหทํางานไดเต็มประสิทธิภาพยิ่งขึ้น และเนื่องจากสภาวะโลกในปจจุบันมีการ
ตระหนักถึงการใชพลังงานมากขึ้น การเขียนโปรแกรมที่คํานึงถึงการประหยัดพลังงานจึงเปนอีกสิ่งหนึ่งที่
ตองเห็นความสําคัญอีกเชนกัน เล็ทมีซีจึงเปนเครื่องมือทีจะชวยใหผูใชจึงจําเปนตองมีการเรียนรูการเขียน
โปรแกรมเชิงขนาน และในขนะเดียวกันก็ชวยใหผูใชเห็นถึงการใชพลังงานของโปรแกรมที่ไดเขียนขึ้นเชนกัน
เพื่อใหผูใชนําไปปรับปรุง เพื่อใหโปรแกรมที่พัฒนามีประสิทธิภาพยิ่งขึ้น
เนื่องจากเล็ทมีซีเปนโปรแกรมที่อานภาษาซีพลัสพลัส แตสามารถพัฒนาเพิ่มเติมเพื่อนําไปใช
วิเคราะหภาษาอื่นๆ เชน ซี จาวา หรือ ชีซาพ โดยนําสวนของ Passer และ Scanner ของเล็ทมีซีไปพัฒนา
เพิ่มเติม
15
ขอสรุปและขอเสนอแนะ
โครงงานเล็มมีซีถูกออกแบบใหมีโครงสรางที่สามารถทําความเขาใจไดงาย ซึ่งผูสนใจสามารถ
นําไปพัฒนาตอใหมีประสิทธิภาพ และทํางานไดหลากหลายมากขึ้น โดยการพัฒนาใหมีการแสดงผลใน
รูปแบบตางๆ ที่มีความหลากหลายและใหงายตอการเขาใน เชน การใชภาพประกอบการแสดงผล ภาพ
ประกอบการประมวลผล การเพิ่มคําอธิบาย หรือ เพิ่มเนื้อหาที่จะเขามาชวยในการเรียนรูเพิ่มเติม
ในสวนของ การคํานวณหา ชุดคําสั่ง Instruction count สามารถนําไปพัฒนาในการหาพลังงาน
ไฟฟา เพื่อวิเคราะหความสิ้นเปลืองพลังงานของโปรแกรมที่เขียนได
16
เอกสารอางอิง (Reference)
Efopoulos, V., Dagdilelis, V., Evangelidis, G., & Satratzemi, M. (2005). a programming
environment for novices. Proceedings of the 10th annual SIGCSE conference on
Innovation and technology in computer science education (pp. 113-117). Caparica,
Portugal: ACM Press New York, NY, USA.
Fenichel, R. R., Weizenbaum, J., & Yochelson, J. C. (1970). A program to teach programming.
In Communications of the ACM (pp. 141-146). New York: ACM.
Hundhausen, C. D., & Brown, J. L. (2007). An experimental study of the impact of visual
semantic feedback on novice programming. In Journal of Visual Languages and
Computing (pp. 537-559). Orlando, FL, USA: Academic Press, Inc.
Kim, Y.-J., Lom, J.-S., & Jun, Y.-K. (2007). Scalable Thread Visualization for Debugging Data
Race in OpenMP Programs., (pp. 310-321).
Mahim, M., J., C. T., Tiberiu, C., Girish, V., C., G. S., & Mihai, B. (December 2006). Tartan:
evaluating spatial computation for whole program execution. the 12th international
Conference on Architectural Support For Programming Languages and Operating
Systems (pp. 163-174). New York, NY, USA: ACM.
Tan, H.-K., & Cai, W. (1994). VPEcons:Avisual Constructor for Parallel Programming.
Xian, C., Lu, Y.-H., & Li, Z. (2007). A programming environment with runtime energy
characterization for energy-aware applications. the 2007 international symposium on
Low power electronics and design (pp. 141-146). New York, NY, USA: ACM.
ฤทธิรณชัย, พ. (2550). โครงงานปญหาพิเศษระดับปริญญาตรี เรื่อง เล็ทซี: เครื่องมือเรียนรูเพื่อฝกเปน
C++ โปรแกรมเมอรที่มีประสิทธิภาพและพอเพียง. กรุงเทพ: มหาวิทยาลัยธรรมศาสตร.
17
ภาคผนวก (Appendix)
คูมือการติดตั้งอยางละเอียด
1. MySQL Server Version 5.0 ซึ่งมีขั้นตอนการติดตั้งโปรแกรม ดังรูปขางลางตอไปนี้
1. เลือกไฟล Setup
รูปที่ 17 แสดงหนาจอเพื่อเลือกไฟล Setup
2. หลังจากขึ้นหนาตาง Setup ใหกดปุม Next >
18
รูปที่ 18 หนาจอการเริ่มติดตั้งโปรแกรม
3. เลือกติดตั้งโปรแกรมแบบ Typical เนื่องจากเปนการลงแบบมาตรฐาน จากนั้นกดปุม Next >
รูปที่ 19 เลือกประเภทการติดตั้งโปรแกรม
4. กดปุม Install เพื่อเริ่มตนการติดตั้งโปรแกรม
รูปที่ 20 เริ่มตนการติดตั้งโปรแกรม
19
5. ระบบจะทําการติดตั้งโปรแกรมลงบนเครื่องคอมพิวเตอร
รูปที่ 21 แสดงหนาจอขณะทําการติดตั้งโปรแกรม
6. เลือก Skip Sign-Up จากนั้นกดปุม Next >
รูปที่ 22 หนาจอแสดงการลงทะเบียนโปรแกรม
20
7. เลือก Configure the MySQL Server now จากนั้นกดปุม Finish เพื่อทําการกําหนดคุณสมบัติ
ของโปรแกรม
รูปที่ 23 หนาจอแสดงการเสร็จสิ้นการลงโปรแกรม
8. กดปุม Next > เพื่อทําการกําหนดคุณสมบัติของโปรแกรม
รูปที่ 24 หนาจอแสดงการกําหนดคุณสมบัติของโปรแกรม
21
9. เลือก Standard Configuration จากนั้นกดปุม Next >
รูปที่ 25 เลือกประเภทการกําหนดคุณสมบัติของโปรแกรม
10. เลือก Install As Windows Service และ Launch the MySQL Server automatically จากนั้นกด
ปุม Next>
รูปที่ 26 กําหนดวินโดวสอ็อบชั่น
22
11. เลือก Modify Security Settings แลวใสรหัสผาน หลังจากนั้นเลือก Enable root access from
remote machines แลวกดปุม Next >
รูปที่ 27 กําหนดอ็อบชั่นความปลอดภัยของโปรแกรม
12. กดปุม Execute เพื่อทําการกําหนดคุณสมบัติของโปรแกรม
23
รูปที่ 28 แสดงหนาจอขณะติดตั้งการกําหนดคุณสมบัติของโปรแกรม
13. กดปุม Finish เปนการเสร็จสิ้นการกําหนดคุณลักษณะของโปรแกรม
รูปที่ 29 เสร็จสิ้นการกําหนดคุณสมบัติของโปรแกรม
24
2 . การติดตั้งโปรแกรมที่ใชในโปรแกรมเล็ทมีซี โดยภายในเครื่องคอมพิวเตอรของผูใช ตองมี
GNU make 3.8 ขึ้นไป และ มี GNU gcc และ โปรแกรมที่นํามาติดตั้ง มีดังนี้
2.1 Java Runtime Environment (JRE) Version 1.6 ซึ่งมีขั้นตอนการติดตั้งโปรแกรม ดังรูปขางลาง
ตอไปนี้
1. เลือกไฟล jre-6u3-windows-i586-p-s.exe
รูปที่ 30 แสดงหนาจอเพื่อเลือกไฟล jre-6u3-windows-i586-p-s.exe
25
2. กดปุม Accept > เพื่อยอมรับเงื่อนไขลิขสิทธิ์ของโปรแกรมตามกฎหมาย
รูปที่ 31 แสดงหนาจอใหยอมรับเงื่อนไขลิขสิทธิ์ของโปรแกรม
3. ระบบจะทําการติดตั้งโปรแกรมลงบนเครื่องคอมพิวเตอร
รูปที่ 32 แสดงหนาจอขณะทําการติดตั้งโปรแกรม
4. กดปุม Finish เปนการเสร็จสิ้นการติดตั้งโปรแกรม
26
รูปที่ 33 แสดงหนาจอเสร็จสิ้นการติดตั้งโปรแกรม
2.2 การติดตั้งเล็ทมีซี
1. สามารถคัดลอกไฟล letmec_beta1 ไปวางยังที่ที่ตองการไดเลย
27
รูปที่ 34 นําไฟล letmec_beta1 ไปวางยังที่ที่ตองการ
2. เปดไฟล letmec_beta1 จะพบไฟลดังภาพ
รูปที่ 35 ภาพภายในไฟล letmec_beta1
3. เลือกเปดไฟล letmec_bet.exe จะปรากฏ Logo ของเล็ทมีซี ดังภาพ(สามารถสราง Shoutcu ได
จากไฟลนี้)
28
รูปที่ 36 ภาพ Logo ของเล็ทมีซี
4. จะปรากฏภาพโปรแกรมเล็ทมีซี
รูปที่ 37 ภาพโปรแกรมเล็ทมีซี
คูมือการใชงานอยางละเอียด
1. เลือก Open file เพื่อเปดไฟลที่ตองการ
29
รูปที่ 38 ภาพ Open file เพื่อเปดไฟล
2. เลือกไฟลที่ตองการ ดังตัวอยางคือ test1.cpp
รูปที่ 39 ภาพการเปดไฟล
3. ไฟลที่เปดขึ้นมาได ดังภาพคือไฟล test1.cpp
30
รูปที่ 40 ภาพแสดงไฟล test.cpp
4. เลือก Analysis -> Run ทําการ Run โปรแกรม
รูปที่ 41 ภาพแสดงการเลือกคําสั่ง การ Run โปรแกรม
31
5. เล็ทมีซีจะแสดงผลการ Run โปรแกรมที่ผูใชเขียนขึ้น
รูปที่ 42 ภาพแสดงการ Run โปรแกรม
6. โปรแกรมเล็มทีซี จะแสดง Execution time และ Instruction count
รูปที่ 43 ภาพแสดง Execution time และ Instruction count
32
7. เราสามารถเลือก รุนของ Processor และชื่อของรุน ของ Processor ได
รูปที่ 44 ภาพแสดงการเลือก รุนของ Processor และชื่อของรุน ของ Processor
8. กด Confirm เพื่อยีนยันการเลือก คาของ Ideal Time จะเปลียนไป
รูปที่ 45 ภาพแสดงการยีนยันการเลือก Processor และการเปลียนแปลงของ Ideal Time

Mais conteúdo relacionado

Semelhante a ตัวอย่างโครงงาน

โครงงานคอม 5
โครงงานคอม 5โครงงานคอม 5
โครงงานคอม 5
wipawanmmiiww
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ
jamiezaa123
 
โครงงานระบบปฏิบัติการ
โครงงานระบบปฏิบัติการโครงงานระบบปฏิบัติการ
โครงงานระบบปฏิบัติการ
Thanapon Seadthaisong
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
ภาคิน ดวงคุณ
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ
jamiezaa123
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .
jamiezaa123
 
โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ
jamiezaa123
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
NeNo Srimueagbun
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
NeNo Srimueagbun
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
NeNo Srimueagbun
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
NeNo Srimueagbun
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
NeNo Srimueagbun
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
NeNo Srimueagbun
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
jamiezaa123
 

Semelhante a ตัวอย่างโครงงาน (20)

โครงงานคอม 5
โครงงานคอม 5โครงงานคอม 5
โครงงานคอม 5
 
โครงงาน
โครงงานโครงงาน
โครงงาน
 
โครงาน
โครงานโครงาน
โครงาน
 
Joomla CMS
Joomla CMSJoomla CMS
Joomla CMS
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ
 
Jamie
JamieJamie
Jamie
 
โครงงานระบบปฏิบัติการ
โครงงานระบบปฏิบัติการโครงงานระบบปฏิบัติการ
โครงงานระบบปฏิบัติการ
 
โครงงานระบบปฏิบัติการ
โครงงานระบบปฏิบัติการโครงงานระบบปฏิบัติการ
โครงงานระบบปฏิบัติการ
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่ิอง ระบบปฏิบัติการ
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์ เรื่อง ระบบปฏิบัติการ .
 
โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ
โครงงานคอมพิวเตอร์ เรื่อง ระบบปฏิบัติการ
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
 
เผยแพร่ความรู้ออนไลน์ ใหม่
เผยแพร่ความรู้ออนไลน์ ใหม่เผยแพร่ความรู้ออนไลน์ ใหม่
เผยแพร่ความรู้ออนไลน์ ใหม่
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
 
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
โครงงานคอมพิวเตอร์ เผยแพร่ความรู้ออนไลน์
 

Mais de jokercoke

ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...
ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...
ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...
jokercoke
 
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
jokercoke
 
ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...
ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...
ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...
jokercoke
 
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
jokercoke
 
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
jokercoke
 
แบบเสนอร่างโครงงานคอมพิวเตอร์
แบบเสนอร่างโครงงานคอมพิวเตอร์แบบเสนอร่างโครงงานคอมพิวเตอร์
แบบเสนอร่างโครงงานคอมพิวเตอร์
jokercoke
 
แบบเสนอร่างโครงงานคอมพิวเตอร์
แบบเสนอร่างโครงงานคอมพิวเตอร์แบบเสนอร่างโครงงานคอมพิวเตอร์
แบบเสนอร่างโครงงานคอมพิวเตอร์
jokercoke
 
แบบเสนอร่างโครงงาน
แบบเสนอร่างโครงงานแบบเสนอร่างโครงงาน
แบบเสนอร่างโครงงาน
jokercoke
 
ใบงานที่ 9 15
ใบงานที่ 9 15ใบงานที่ 9 15
ใบงานที่ 9 15
jokercoke
 
ใบงานที่ 9-15
ใบงานที่ 9-15ใบงานที่ 9-15
ใบงานที่ 9-15
jokercoke
 
วิธีการเพาะเห็ดฟางแบบกองเตี้ย
วิธีการเพาะเห็ดฟางแบบกองเตี้ยวิธีการเพาะเห็ดฟางแบบกองเตี้ย
วิธีการเพาะเห็ดฟางแบบกองเตี้ย
jokercoke
 

Mais de jokercoke (12)

ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...
ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...
ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...
 
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
 
ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...
ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...
ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการศึกษา...
 
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
 
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
เฉลย ข้อสอบ O-NET วิชา สุขศึกษาและพลศึกษา ศิลปะ การงานอาชีพและเทคโนโลยี ปีการ...
 
แบบเสนอร่างโครงงานคอมพิวเตอร์
แบบเสนอร่างโครงงานคอมพิวเตอร์แบบเสนอร่างโครงงานคอมพิวเตอร์
แบบเสนอร่างโครงงานคอมพิวเตอร์
 
แบบเสนอร่างโครงงานคอมพิวเตอร์
แบบเสนอร่างโครงงานคอมพิวเตอร์แบบเสนอร่างโครงงานคอมพิวเตอร์
แบบเสนอร่างโครงงานคอมพิวเตอร์
 
แบบเสนอร่างโครงงาน
แบบเสนอร่างโครงงานแบบเสนอร่างโครงงาน
แบบเสนอร่างโครงงาน
 
ใบงานที่ 9 15
ใบงานที่ 9 15ใบงานที่ 9 15
ใบงานที่ 9 15
 
ใบงานที่ 9-15
ใบงานที่ 9-15ใบงานที่ 9-15
ใบงานที่ 9-15
 
Blog
BlogBlog
Blog
 
วิธีการเพาะเห็ดฟางแบบกองเตี้ย
วิธีการเพาะเห็ดฟางแบบกองเตี้ยวิธีการเพาะเห็ดฟางแบบกองเตี้ย
วิธีการเพาะเห็ดฟางแบบกองเตี้ย
 

ตัวอย่างโครงงาน

  • 1. เล็ทมีซี : เครื่องมือเรียนรูเพื่อฝกเขียนโปรแกรมสําหรับเครื่องหลาย หนวยประมวลผลโดยใชภาษาซี/ซีพลัสพลัส LET ME C : a Learning Tool providing a Multiprocessor-programming Environment based on C/C++ โปรแกรมเพื่อสงเสริมการเรียนรู(นักศึกษา) รายงานฉบับสมบูรณ เสนอตอ ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ สํานักงานพัฒนาวิทยาศาสตรและเทคโนโลยีแหงชาติ กระทรวงวิทยาศาสตรและเทคโนโลยี ไดรับทุนอุดหนุนโครงการวิจัย พัฒนาและวิศวกรรม โครงการแขงขันพัฒนาโปรแกรมคอมพิวเตอรแหงประเทศไทย ครั้งที่ 11 ประจําปงบประมาณ 2552 โดย นางสาวจตุรดา ดียิ่ง นางสาวกุสุมา อาดัมภ ชื่ออาจารยที่ปรึกษาโครงการ นางสาววรวรรณ มะเริงสิทธิ์ สถาบันการศึกษา มหาวิทยาลัยธรรมศาสตร รหัสโครงการ 11p12c602
  • 2. I กิตติกรรมประกาศ (Acknowledgement) โครงการเล็ทมีซี ไดรับทุนสนับสนุนการพัฒนาโครงการจากศูนยเทคโนโลยีอิเล็กทรอนิกสและ คอมพิวเตอรแหงชาติ สํานักงานพัฒนาวิทยาศาสตรและเทคโนโลยีแหงชาติ กระทรวงวิทยาศาสตรและ เทคโนโลยี ไดรับทุนอุดหนุนโครงการการแขงขันพัฒนาโปรแกรมคอมพิวเตอรแหงประเทศไทย ครั้งที่ 11 จากศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ สํานักงานพัฒนาวิทยาศาสตรและเทคโนโลยี แหงชาติ และสํานักงานสงเสริมอุตสาหกรรมซอฟตแวรแหงชาติ พรอมระบุชื่อโครงการที่ไดรับทุนไวดวย ขอขอบพระคุณอาจารยที่ปรึกษาที่ไดใหคําแนะนํา ขอคิดเห็น และใหความรูตางๆ รวมทั้งให ความชวยเหลือในดานตางๆ ขอขอบคุณภาพภาควิชาวิทยาการคอมพิวเตอร คณะวิทยาศาสตรและเทคโนโลยี มหาวิทยาลัยธรรมศาสตร ที่ใหขอมูล ขาวเกี่ยวกับโครงการโครงการแขงขันพัฒนาโปรแกรมคอมพิวเตอร แหงประเทศไทย และขอขอบคุณเพื่อนๆ และผูที่เกี่ยวของทุกๆทานที่ใหคําปรึกษา และใหคําชวยเหลือตลอดการ ทํางานจนสําเร็จลุลวงไปไดดวยดี ผูพัฒนาโครงการจึงขอกราบขอบพระคุณมา ณ โอกาสนี้ นางสาวจตุรดา ดียิ่ง นางสาวกุสุมา อาดัมภ
  • 3. II บทคัดยอ นวัตกรรมของสถาปตยกรรมหนวยประมวลผลแบบมัลติคอร เพื่อเพิ่มศักยภาพการประมวลผล ในภาวะวิกฤติการขาดแคลนพลังงาน ขอจํากัดของวิกฤตพลังงานเชน สถาปตยกรรมการ ออกแบบมีขอดี ขอเสีย สรรถนะการทํางานและการใชพลังงานในการประมวลผล จึงเปนเรื่องที่สําคัญที่จะตองพิจารณา ในดานฮารดแวรก็มุงใหความสําคัญกับการออกแบบเพื่อลดการใชพลังงานอยางสิ้นเปลือง อยางไรก็ตาม ในบทบาทของโปรแกรมเมอรควรใหความสําคัญ กับการออกแบบโปรแกรมที่มีสมถนะไดตรงตามความ ตองการ และใชพลังงานใหนอยที่สุด งานวิจัยชิ้นนี้มุงหวังใหผูเริ่มตนเขียนโปรแกรมเชิงขนาน ให ความสําคัญทั้งการเขียนโปรแกรมอยางมีประสิทธิภาพและคํานึงถึงการประหยัดพลังงาน โดยใชเครื่องมือ ที่ชื่อวา LET ME C ซึ่งเปนเครื่องมือตัวอยางที่ชวยให ผูเริ่มตนการเขียนโปรแกรมเชิงขนานไดศึกษาการ เขียนโปรแกรมเชิงขนานและผลกระทบ จากการใชพลังงานของโปรแกรม คําสําคัญ: เครื่องมือเรียนรู, การทําความเขาใจโปรแกรมเชิงขนาน, สมรรถนะการประมวลผลเชิง ขนาน, การเขียนโปรแกรมที่ตระหนักถึงพลังงาน
  • 4. III Abstract Emerging of multicore architecture makes high-performance PCs available. Despite that, the limitation caused by power crisis on such architecture has made the trade offs between performance and power-aware computing ever more important. Hardware vendors have focused their design on how to reduce the power consumption of components. However, programmers also play an important role in designing a program which could satisfy performance requirement within the minimum power consumption. This research work proposes an approach for training novice parallel programmers to be both performance- and power- aware by using a learning tool called LET-ME-C. We demonstrated that the tool could, not only guide the programmers on how the codes could be parallelized, but also depict the impact of novice’s codes on performance and power consumption at prompt. Keywords: Learning tool, Parallel Program Comprehension, Parallel Execution performance, Power-aware programming
  • 5. IV บทนํา การเปลี่ยนยุคของหนวยประมวลผลเขาสูยุคหลายหนวยประมวลผล (Multicore) สงผลกระทบ ใหผูเขียนโปรแกรมประยุกตจะตองเปลี่ยนวิธีการพัฒนาโปรแกรมจากเชิงลําดับมาเปนเชิงขนาน เพื่อให โปรแกรมสามารถดึงศักยภาพสูงสุดของหนวยประมวลผลทุกคอรในระบบขึ้นมาได โดยใหมีความ สิ้นเปลืองพลังงานนอยที่สุด หนวยประมวลผลแบบหลายหนวยประมวลผล ประมวลผลพรอมกันไปเชิง ขนานโดยรวมกันทํางานยอยซึ่งเปนอิสระตอกันทํางานพรอมกันไป ทําใหงานเสร็จเร็วขึ้น คอมพิวเตอรสวน บุคคลที่มีหนวยประมวลผลแบบหลายหนวยประมวลผล มักจะมีสถาปตยกรรมแบบใชหนวยความจํารวม กลาวคือ เมื่อแบงการประมวลผลของโปรแกรมเปนงานยอย แตละสวนงานยอยสามารถเรียกใชตัวแปรใน หนวยความจํารวมกันได โดยไมตองใชการสื่อสารขอมูลระหวางหนวยประมวลผล ดังนั้นการประมวลผล เชิงขนานโดยใชหนวยความจํารวมจึงไดรับความนิยมในกลุมผูพัฒนาโปรแกรมเชิงขนานบนเครื่องหลาย หนวยประมวลผล ซึ่งผูพัฒนาโปรแกรมสวนใหญจะใชโอเพนเอ็มพี (OpenMP) เปนสวนตอประสาน โปรแกรมประยุกต (API) เพื่อพัฒนาโปรแกรมเชิงขนานบนเครื่องดังกลาว เพราะโอเพนเอ็มพีอํานวยความ สะดวกในการแบงงานยอย ควบคุมการสื่อสารระหวางงานยอยโดยใชตัวแปรรวมกัน ลักษณะการสื่อสาร โดยใชตัวแปรรวมกันนี้มีความใกลเคียงกับโปรแกรมแบบลําดับ จึงทําใหการเขียนโปรแกรมทําไดรวดเร็ว อยางไรก็ตาม ทั้งที่หนวยประมวลผลแบบหลายหนวยประมวลผล นั้นกลายเปนแพลตฟอรมหลักในการ ประมวลผลปจจุบัน แตผูเรียนเขียนโปรแกรมเบื้องตนยังไมมีเครื่องมือเพื่อชวยทําความเขาใจการ ประมวลผลเชิงขนาน บนสถาปตยกรรมมัลติคอร จึงทําใหความรูทางดานการเขียนโปรแกรมเชิงขนานโดย ใชโอเพนเอ็มพี ยังคงจํากัดอยูในกลุมผูเชี่ยวชาญเทานั้น นอกจากนี้ผูเรียนเขียนโปรแกรมเบื้องตน มักจะ มองขามความสําคัญของการปรับปรุงสมรรถนะของโปรแกรมเพื่อลดความสิ้นเปลืองพลังงาน จึงเปนเหตุ ให โปรแกรมที่ผลิตไดอาจจะทํางานตรงตามความตองการ แตไมไดถูกปรับใหใชพลังงานอยางประหยัด ที่สุด เพื่อเปนทางเลือกสําหรับผูเรียนเขียนโปรแกรมที่ตองการปรับแนวทางการเขียนโปรแกรมเขาสู ยุคมัลติคอรงายขึ้น รายงานหัวขอพิเศษฉบับนี้จึงนําเสนอ โครงงานเล็ทมีซี โครงงานสรางเครื่องมือเรียนรู เพื่อฝกเขียนโปรแกรมสําหรับเครื่องหลายหนวยประมวลผลโดยใชภาษาซี/ซีพลัสพลัส เพื่อเปนเครื่องมือ ชวยในการเรียนรู และฝกฝนการเขียนโปรแกรมที่มีการประมวลผลเชิงขนาน เพราะในปจจุบันการ ออกแบบระบบคอมพิวเตอรเริ่มใหความสนใจกับการออกแบบหนวยประมวลผลใหมีความสามารถดาน การประมวลผลเชิงขนาน เพื่อเพิ่มความเร็วในการประมวลผล นอกจากนี้เล็ทมีซียังมีการแสดงผลขอมูล เกี่ยวกับการใชพื้นที่หนวยความจําของโปรแกรม แสดงปริมาณพลังงานที่สูญเสียในการประมวลผล เพื่อใหผูใชคํานึงถึงประสิทธิภาพของโปรแกรมที่ไดพัฒนาขึ้น
  • 6. V สารบัญ กิตติกรรมประกาศ (Acknowledgement) I บทคัดยอ II Abstract III บทนํา IV สารบัญ V สารบัญรูป VI วัตถุประสงคและเปาหมาย 1 - วัตถุประสงค 1 - ประโยชน 2 รายละเอียดของการพัฒนา 3 - เนื้อเรื่องยอ 3 - ทฤษฎีหลักการและเทคนิคหรือเทคโนโลยีที่ใช 11 - เครื่องมือที่ใชในการพัฒนา 12 - รายละเอียดโปรแกรมที่ไดพัฒนาในเชิงเทคนิค 12 - ขอบเขตและขอจํากัดของโปรแกรม 13 - กลุมผูใช 13 - ผลการทดสอบโปรแกรม 13 เอกสารอางอิง (Reference) 17 ภาคผนวก (Appendix) 18
  • 7. VI สารบัญรูป รูปที่ 1 เครื่องมือเรียนรูเอลวิส (ALVIS) แบบแสดงผลตอบกลับอัตโนมัติ – ทันทีที่ผูเรียนพิมพผิด (Hundhausen และ Brown, 2007) 4 รูปที่ 2 ผังตนไมตัดสินใจเพื่อประมาณการใชพลังงาน (Xian, Lu, & Li, 2007) 5 รูปที่ 3 การใชพลังงานของโปรแกรมอานไฟลสี่วิธี (Xian, Lu, & Li, 2007) 5 รูปที่ 4 ภาพ Visual Programming Environment (Tan & Cai, 1994) 6 รูปที่ 5 Scalable Graph จะถูกแสดงเปนภาพการแตกเทรดในลักษณะกรวย 3 มิติ (Kim, Lom, & Jun, 2007) 7 รูปที่ 6 แสดง Data dependence และ Graph 7 รูปที่ 7 Iteration Space ของ Array 1 มิติ 7 รูปที่ 9 แสดง Iteration Vector 8 รูปที่ 10 Loop-independent dependence 8 รูปที่ 12 Distance Vector 8 รูปที่ 8 Iteration Space ของ Array 2 มิติ 8 รูปที่ 11 Loop-carried dependence 8 รูปที่ 15 แสดง ตัวอยางที่ 2 ของลูปทเกิด loop carried dependency ซึ่งสามารถทําการแกไข dependency 9 รูปที่ 13 แสดงการวิเคราะห loop carried dependency 9 รูปที่ 14 แสดง ตัวอยางที่ 1 ของลูปทเกิด loop carried dependency ซึ่งสามารถทําการแกไข dependency 9 รูปที่ 16 โปรแกรมเล็ทซี (ฤทธิรณชัย, 2550) 10 รูปที่ 17 แสดงหนาจอเพื่อเลือกไฟล Setup 17 รูปที่ 18 หนาจอการเริ่มติดตั้งโปรแกรม 18 รูปที่ 19 เลือกประเภทการติดตั้งโปรแกรม 18 รูปที่ 20 เริ่มตนการติดตั้งโปรแกรม 18 รูปที่ 21 แสดงหนาจอขณะทําการติดตั้งโปรแกรม 19 รูปที่ 22 หนาจอแสดงการลงทะเบียนโปรแกรม 19 รูปที่ 23 หนาจอแสดงการเสร็จสิ้นการลงโปรแกรม 20
  • 8. VII รูปที่ 24 หนาจอแสดงการกําหนดคุณสมบัติของโปรแกรม 20 รูปที่ 25 เลือกประเภทการกําหนดคุณสมบัติของโปรแกรม 21 รูปที่ 26 กําหนดวินโดวสอ็อบชั่น 21 รูปที่ 27 กําหนดอ็อบชั่นความปลอดภัยของโปรแกรม 22 รูปที่ 28 แสดงหนาจอขณะติดตั้งการกําหนดคุณสมบัติของโปรแกรม 23 รูปที่ 29 เสร็จสิ้นการกําหนดคุณสมบัติของโปรแกรม 23 รูปที่ 30 แสดงหนาจอเพื่อเลือกไฟล jre-6u3-windows-i586-p-s.exe 24 รูปที่ 31 แสดงหนาจอใหยอมรับเงื่อนไขลิขสิทธิ์ของโปรแกรม 25 รูปที่ 32 แสดงหนาจอขณะทําการติดตั้งโปรแกรม 25 รูปที่ 33 แสดงหนาจอเสร็จสิ้นการติดตั้งโปรแกรม 26 รูปที่ 34 นําไฟล letmec_beta1 ไปวางยังที่ที่ตองการ 27 รูปที่ 35 ภาพภายในไฟล letmec_beta1 27 รูปที่ 36 ภาพ Logo ของเล็ทมีซี 28 รูปที่ 37 ภาพโปรแกรมเล็ทมีซี 28 รูปที่ 38 ภาพ Open file เพื่อเปดไฟล 29 รูปที่ 39 ภาพการเปดไฟล 29 รูปที่ 40 ภาพแสดงไฟล test.cpp 30 รูปที่ 41 ภาพแสดงการเลือกคําสั่ง การ Run โปรแกรม 30 รูปที่ 42 ภาพแสดงการ Run โปรแกรม 31 รูปที่ 43 ภาพแสดง Execution time และ Instruction count 31 รูปที่ 44 ภาพแสดงการเลือก รุนของ Processor และชื่อของรุน ของ Processor 32 รูปที่ 45 ภาพแสดงการยีนยันการเลือก Processor และการเปลียนแปลงของ Ideal Time 32
  • 9. 1 วัตถุประสงคและเปาหมาย เล็ทมีซีเปนเครื่องมือชวยสอนเขียนโปรแกรมแบบขนาน (Parallel Programming) ที่สงเสริมให ผูเรียนตระหนักถึงความสําคัญของการออกแบบโปรแกรมตอความสิ้นเปลืองพลังงาน ผูพัฒนาจึงมี แนวทางในการพัฒนาโปรแกรมเล็ทมีซีขึ้นเพื่อเปนเครื่องมือชวยในการเรียนรู และฝกฝนการเขียน โปรแกรมที่มีการประมวลผลเชิงขนาน เพราะในปจจุบันการออกแบบระบบคอมพิวเตอรเริ่มใหความสนใจ กับการออกแบบหนวยประมวลผลใหมีความสามารถดานการประมวลผลเชิงขนาน เพื่อเพิ่มความเร็วใน การประมวลผล นอกจากนี้เล็ทมีซียังมีการแสดงผลขอมูลเกี่ยวกับการใชพื้นที่หนวยความจําของโปรแกรม แสดงปริมาณพลังงานที่สูญเสียในการประมวลผล เพื่อใหผูใชคํานึงถึงประสิทธิภาพของโปรแกรมที่ได พัฒนาขึ้น วัตถุประสงค เพื่อสรางโปรแกรมเล็ทมีซีซึ่งเปนโปรแกรมประยุกตใชบนวินโดว ตอยอดจากโปรแกรมเล็ทซี โดย เพิ่มสวนการสอนเขียนโปรแกรมเชิงขนานดังนี้ 1. เพื่อพัฒนาตัวตัดคําและตัวเทียบไวยากรณ(Lexical scanner และ Syntactic Analyser) ใหสามารถ อานไวยากรณ ของโอเพนเอ็มพีเอพีไอได 2. เพื่อพัฒนาสวนติดตอกับผูใชโปรแกรมเล็ทมีซี ใหสามารถไฮไลทไวยากรณของโปรแกรมเชิง ขนานได 3. เพื่อพัฒนาสวนวิเคราะหประสิทธิภาพการประมวลผลโปรแกรมเชิงขนานที่ผูใชเขียนขึ้นใน เล็ทมีซี 4. เพื่อพัฒนาตัววิเคราะหความสิ้นเปลืองพลังงานของโปรแกรมเชิงขนานที่ผูใชเขียนขึ้นใน เล็ทมีซี
  • 10. 2 ประโยชน 1. การสรางโปรแกรมเล็ทมีซี เปนแนวคิดใหผูใชเขาใจการประมวลผลเชิงขนาน ซึ่งเปนความรู เบื้องตนของการทํางานของคอมพิวเตอรที่มีระบบการประมวลผลเชิงขนานหรือคอมพิวเตอร แบบ Core 2 Duo ที่ในปจจุบันคอมพิวเตอรจะเริ่มมีการพัฒนาระบบการประมวลผลแบบเชิง ขนานมีแนวโนมใชกันมากขึ้น เพราะฉะนั้นผูใชคอมพิวเตอรจะสามารถศึกษาระบบการ ประมวลผลเชิงขนานไดจากโปรแกรมเล็ทมีซี 2. สวนของการไฮไลทโปรแกรมจะชวยใหผูใชเห็นความผิดพลาดของการเขียนโปรแกรมไดงายขึ้น และทันที โดยเมื่อผูใชพิมพคําสั่ง หรือโคดในสวนที่เปนคําสําคัญ เล็ทมีซีจะทําการไฮไลทใน สวนทําเหลานั้นทันที ทําใหผูใชงานสามารถตรวจสอบไดทันที 3. สวนของการวิเคราะหพลังงานและประสิทธิภาพทําใหผูใชทราบถึงการใชพลังงานและ ประสิทธิภาพของโปรแกรมที่ผูใชเขียนขึ้นได 4. การสรางสวนของโปรแกรมโดยใชจาวาเทคโนโลยี ทําใหผลลัพธที่ได สวนวิเคราะห ประสิทธิภาพ หรือสวนวิเคราะหการใชพลังงาน สามารถนําไปพัฒนาตอเพื่อสรางเปน โปรแกรมประยุกตอื่นๆ ได
  • 11. 3 รายละเอียดของการพัฒนา ในการพัฒนาโครงงานเล็ทมีซีผูพัฒนาไดทําศึกษารายละเอียด ประวัติความเปนมาของขอมูล ตางๆ ที่เกี่ยวของ และทฤษฎีตางๆ ที่มีความเกี่ยวของ ดังนี้ เนื้อเรื่องยอ (Story Board) เครื่องมือเรียนรูสําหรับฝกเขียนโปรแกรมเริ่มตนมีในรูปแบบของโปรแกรมชวยสอน หรือ ซีเอไอ (Computer Aided Instruction) โดยในป ค.ศ. 1970 มีระบบชวยสอนชื่อ “ทีช (TEACH)” ของมหาวิทยาลัยเอ็มไอที (MIT) เปน โปรแกรมสอนเขียนโปรแกรมภาษา UNCL ใหกับนักศึกษาชั้นปที่หนึ่ง (Fenichel, Weizenbaum, & Yochelson, 1970) [5] ในป ค.ศ. 1968 - 1969 ซึ่งไดรับการยอมรับจากผูเรียนโดยสวนใหญ แตผูวิจัยไมไดประเมินประสิทธิภาพของการ เรียนรูที่ไดรับจากการใชโปรแกรม จึงไมอาจระบุไดวาโปรแกรมทีชมีสวนชวยพัฒนาศักยภาพของผูเรียน ภายหลังจากระบบทีช มีคณะวิจัยกลุมหนึ่ง (เนวาเลียเนน และคณะ, 2006) กลาวถึงงานวิจัยซึ่งไดพัฒนา เครื่องมือชวยสอนโดยใชภาพหลายชิ้น โดยกลาววา การศึกษาของเครื่องมือเหลานี้ไดแสดงใหเห็นวา การสอนเขียน โปรแกรมโดยใชภาพมีผลสัมฤทธิ์ตอการเรียนรูระยะยาว (Long-term effects) จึงไดนําเสนองานวิจัยเพื่อพิสูจนผลกระทบ จากการใชภาพเคลื่อนไหวหรือภาพนิ่ง ตอการเรียนรูระยะสั้น (Short-term effects) เนวาเลียเนน และคณะ ใชโปรแกรม ชวยสอนชื่อ แพลนเอนี่ (PlanAni) มาทําการทดลอง โดยปรับใหแพลนเอนี่แสดงภาพเคลื่อนไหวในสองระดับ คือแสดงโดย ละเอียด และแสดงอยางหยาบหรือแสดงเปนภาพนิ่ง ผูวิจัยทําการทดลองโดยใหผูเรียนกลุมเดียวกัน ทดลองใชแพลนเอนี่ ทั้งสองรูปแบบ และพบวาผูเรียนใหความสนใจกับขอความประกอบมากกวาภาพเคลื่อนไหว จึงสรุปไดวาการมี ภาพเคลื่อนไหวโดยละเอียดไมไดมีผลกระทบตอการโตตอบระยะสั้นของผูเรียน เทากับการมีคําอธิบายหรือขอความ ประกอบภาพ ซึ่งสอดคลองกับขอมูลในตัวโปรแกรม ในป ค.ศ. 2005 เอฟโฟโปลัส และคณะ (Efopoulos, Dagdilelis, Evangelidis, & Satratzemi, 2005) เสนอ เครื่องมือเรียนรูบนเว็บชื่อ ไวป (WIPE – Web Integrated Programming Environment) โดยเสนอวาเครื่องมือเรียนรูควร ใชหลักการออกแบบสามประการไดแก 1. เครื่องมือควรออกแบบใหงายตอการใชงาน (Simplicity) 2. เครื่องมือควรใชขอมูลที่สอดคลองกับหนังสือหรือคูมือ (Consistency) 3. เครื่องมือควรเนนใหผูเรียนเขียนโปรแกรมไมใชออกแบบจอภาพ (Emphasis on the source code) คณะวิจัยไดนําไวปไปทดลองใชกับนักศึกษาซึ่งเรียนเขียนโปรแกรมในชั้นปที่หนึ่ง และคนพบความผิดพลาดที่ นักศึกษาสวนใหญตองใชเวลานานในการแกไข ไดแก ผิดไวยากรณแปดประการ และการผิดเชิงตรรกะสี่ประการ ฮันดฮาวเซนและบราวน (Hundhausen & Brown, 2007) ศึกษาผลกระทบของคุณลักษณะความมีชีวิตชีวา (Live ness) ของเครื่องมือเรียนรู ตอผลสัมฤทธิ์ของการเรียนของผูเริ่มตนเรียนวิธีการเขียนโปรแกรมเชิงขั้นตอน (Imperative programming) และไดคนพบวาผูเรียนจะเขียนคําสั่งที่ผิดไวยากรณและผิดความหมายนอยมากหากผูเรียน ไดรับผลตอบกลับ (feedback) จากเครื่องมือเรียนรูเมื่อเทียบกับการไมไดรับผลตอบกลับ แตอยางไรก็ตาม ไมวาผูเรียนจะ ไดรับผลตอบกลับดวยวิธีการใด ไมสงผลวาจะชวยใหผูเรียนลดการเขียนไวยากรณหรือความหมายผิดแตกตางกันอยางมี
  • 12. 4 นัยสําคัญทางสถิติ กลาวคือ การเลือกรับผลตอบกลับเมื่อตนตองการ (Self-select feedback) หรือ การแสดงผลตอบกลับ ทันทีโดยอัตโนมัติ (Automatic feedback) นั้นไมมีความแตกตางกัน งานวิจัยของ ฮันดฮาวเซนและบราวน ศึกษาสองในสามองคประกอบ ของคุณลักษณะความมีชีวิตชีวาของ เครื่องมือเรียนรู ซึ่งทานิโมโตไดระบุไว (Tanimoto’s notion of liveness) ไดแก 1. ลักษณะของเนื้อหาที่ตอบกลับตอผูเรียน (feedback content) 2. เวลาที่ผูเรียนตองรอผลตอบกลับ (feedback delay) 3. วิธีการที่ผูเรียนไดรับผลตอบกลับ (feedback self-selection) ซึ่งหมายถึงผูเรียนสามารถเลือกรับผล ตอบกลับเมื่อตองการ หรือ เครื่องมือเรียนรูแสดงผลตอบกลับทันทีโดยอัตโนมัติ โดยใชเครื่องมือเรียนรูชื่อ เอลวิส (ALVIS) สอนเขียนโปรแกรมภาษาซัลซา (SALSA) ซึ่งเปนภาษาอยางงาย มี ลักษณะคลายคําสั่งเทียม เอลวิสถูกปรับเปนสามรูปแบบจําแนกตามลักษณะการแสดงผลตอบกลับ ฮันดฮาวเซนและบ ราวน คัดเลือกนักศึกษาระดับปริญญาตรีชั้นปที่ 1 โดยคัดเลือกผูที่ไมเคยเขียนโปรแกรมมากอน โดยนักวิจัยคาดวาจะทํา การทดลองในอนาคตเพื่อหาผลกระทบของการชะลอเวลาสงผลตอบกลับ และความเปนไปไดที่จะสรางเครื่องมือเรียนรูที่ ปรับตามลักษณะความตองการของผูเรียนได รูปที่ 1 เครื่องมือเรียนรูเอลวิส (ALVIS) แบบแสดงผลตอบกลับอัตโนมัติ – ทันทีที่ผูเรียนพิมพผิด (Hundhausen และ Brown, 2007) สวนการเขียนโปรแกรมโดยตระหนักถึงพลังงาน (Power-aware programming) นั้นเปนประเด็น สําคัญในการผลิตโปรแกรมสําหรับระบบฝงตัว หรือสําหรับหนวยประมวลผลแบบฝงตัว ซึ่งการวิเคราะห ความสิ้นเปลืองพลังงานไฟฟานั้น อธิบายโดยใชปริมาณพลังงานในหนวย วัตต (watt) วัตตตอชั่วโมง (watt-hour) หรือ จูล (Joule) การประมาณการใชพลังงานในปจจุบันทําโดยวิเคราะหจากคําสั่ง ภาษาแอสเซมบลี โดยคอมไพเลอรซึ่งการวิเคราะหแบงเปน ระดับรอบของสัญญาณนาฬิกา ระดับคําสั่ง ระดับกลุมคําสั่ง และระดับฟงกชั่น เซียนและคณะ (Xian, Lu, & Li, 2007)เสนอเครื่องมือเขียนโปรแกรมเพื่อสรางโปรแกรมประยุกต ที่ตระหนักถึงการใชพลังงาน โดยเครื่องมือนี้จะแสดงคุณลักษณะการใชพลังงานของโปรแกรมเมื่อ
  • 13. 5 ประมวลผล เครื่องมือเขียนโปรแกรมที่นักวิจัยเสนอมีลักษณะเปน ไลบราลี่ที่โปรแกรมประยุกตสามารถ เรียกใชได (Application Program Interface Library) ที่จะนําไปใชเพื่อวิเคราะหความสิ้นเปลืองพลังงาน การประมาณความสิ้นเปลืองพลังงานทําโดยแบงการทํางานของคําสั่งในโปรแกรมเปนสามชนิด การสงรับขอมูลจากเครือขาย (net) การอานเขียนดิสก (disk) การคํานวณที่หนวยประมวลผล (processor) เมื่อโปรแกรมประมวลจนถึงคําสั่งQueryEnergy ไลบรารี่จะประสานงานกับ OS เพื่อนํากลุมคําสั่งที่อยู ในชวงมาแยกชนิดและประเมินคาพลังงานของคําสั่งแตละชนิดโดยใชตนไมตัดสินใจ (ดังรูปที่ 2) และ คํานวณคาประมาณการสิ้นเปลืองพลังงานออกมาในหนวยจูล (ดังรูปที่3) รูปที่ 2 ผังตนไมตัดสินใจเพื่อประมาณการใชพลังงาน (Xian, Lu, & Li, 2007) รูปที่ 3 การใชพลังงานของโปรแกรมอานไฟลสี่วิธี (Xian, Lu, & Li, 2007) ผลลัพธจากการทดลองพบวาไลบรารีสามารถชวยใหผูสรางโปรแกรมไดประเมินความสิ้นเปลือง พลังงานของโปรแกรมได และชวยใหผูเขียนโปรแกรมตระหนักตอความสําคัญในการประเมินการใช พลังงานในระหวางพัฒนาโปรแกรม การเขียนโปรแกรมที่มีการทํางานแบบประมวลผลเชิงขนาน จะชวยลดเวลาในการประมวลผลให ลดลง และเพิ่มประสิทธิภาพใหกับคอมพิวเตอร แตเนื่องจากการพัฒนาโปรแกรมเชิงขนาน มีความยุงยาก ซับซอนในการเขียนโปรแกรม ดังนั้นหัวใจหลักที่ชวยในการพัฒนาโปรแกรมเชิงขนานจึงอยูกับเครื่องมือที่ ชวยในการพัฒนา ซึ่งยังมีนอย ในป ค.ศ.1994 ฮงคอนเทน และคณะ (Tan และ Cai, 1994) ไดเสนอ เครื่องมือที่ชื่อวา วีพีคอนส (VPEcons) ซึ่งเปนเครื่องมือที่ชวยในเขียนโปรแกรมเชิงขนาน ประเภท Visual
  • 14. 6 Programming Environment โดยเริ่มจากการพัฒนาเปนรูปแบบของ Model รูปภาพ เพื่อใหงายตอการ เขาใจระบบการทํางานของโปรแกรมที่ออกแบบ และลักษณะของโปรแกรมประเภท Visual Programming Environment รูปที่ 4 ภาพ Visual Programming Environment (Tan & Cai, 1994) วีพีคอนส จึงเปนอีกเครื่องมือหนึ่งที่เขามาชวยในการพัฒนาโปรแกรมเชิงขนานใหงายขึ้น โดย ลักษณะของ วีพีคอนสจะใชกราฟฟกเขามาเปนเครื่องมือชวยในการออกแบบโปรแกรมเชิงขนานใหอยูใน รูปแบบของโมเดล หลังจาก VPECons จะแปลงจากรูปแบบของโมเดลเปนภาษา C ที่สามารถทํางาน บนระบบเชิงขนานได ภายหลังมีการใชคําสั่งโอเพนเอ็มพี ซึ่งเปนสวนตอประสานโปรแกรมประยุกต(API) ที่ถูกเลือกใช สําหรับพัฒนาโปรแกรมเชิงขนาน สามารถรองรับการโปรแกรมในภาษาซี/ซีพลัสพลัสและฟอรเทน รวมถึง รวมถึง ยูนิค(Unix )และไมโครซอรฟ วินโดวร (Microsoft Window) ในป ค.ศ. 2004 เรนี คลอบเบอร และ คณะ (Kobler, Kranzlmuller, และ Volkert, 2004) ไดเสนอเครื่องมือที่ชื่อวา เดวิซ (DeWiz) ในรูปแบบ ของกราฟแสดงเหตุการณ(Event Graph) ที่จะอธิบายการเปลี่ยนแปลงในแตละขั้นตอนการประมวลผล คําสั่งตางๆ ในสวนของโปรแกรมเชิงขนาน (Critical Regions) ที่ถูกแทรกดวยคําสั่งของ OpenMP ในการใชคําสั่ง เพื่อใชในการแตกเทรดมักจะเกิดปญหาในการแยงกันใชขอมูล หรือที่เรียกวา Data race ยังโจ คิม และคณะ (Kim, Lom, และ Jun, 2007) ไดมีการนําเสนอ Thread Visualization tool ซึ่งเปนเครื่องมือที่เขามาชวยแสดง ลําดับการทํางานของการแตกเทรด เปนภาพ Scalable Graph ที่ถูก แสดงเปนภาพการแตกเทรดในลักษณะกรวย 3 มิติ (3D Cone Scalable Thread Visualization และจะถูก ตรวจสอบประสิทธิภาพ ในการคนหาการแยงกันใชขอมูล ไดโดย Synthetic Program
  • 15. 7 รูปที่ 5 Scalable Graph จะถูกแสดงเปนภาพการแตกเทรดในลักษณะกรวย 3 มิติ (Kim, Lom, & Jun, 2007) Data Dependence เปนการ รอบันทึกและการอานคาของขอมูลลงหนวยความจํา ที่ตองพิจาณาในเรื่องของลําดับการประมวลผล ของตัวแปรในโปรแกรม โดยสามารถแบงประเภทไดดังนี้ 1. Flow Dependence (or true dependence) : (RAW: read after write) 2. Antidependence : (WAR: write after read) 3. Output Dependence: (WAW: writer after write) รูปที่ 6 แสดง Data dependence และ Graph การวิเคราะห loop carried dependency Loop dependence คือการที่ในหนึ่งรอบการวนลูปแตละครั้ง statement การทํางานขางในลูปมี dependency กันระหวางลูป กลาวคือขางในการทํางานของลูปมีขอมูลที่เกิดความเกี่ยวเนื่องกันในลักษณะของ Data dependency ทําใหลูปนั้นประมวลผลโดยการแบงการทํางานออกเปนเทรดยอยๆไมได สิ่งที่ตองพิจารณาในการวิเคราะห loop carried dependency มีดังนี้ 1. Iteration Space เปนตัวบอกจํานวนครั้งที่เกิดการวนลูป ซึ่งหมายความวา loop มีการกวาดพื้นที่ไปเทาใด เชน do i = 1,100 A(i) = A(i)+1 enddo รูปที่ 7 Iteration Space ของ Array 1 มิติ
  • 16. 8 2. Iteration Vector Iteration Vector เปนคาที่บอกขนาด และทิศทางของ iซึ่งเปนตัวกําหนดการวนลูป วาคา iมีการเพิ่มหรือ ลด ไปในทิศทางใด รูปที่ 9 แสดง Iteration Vector จากรูป Iteration Vector คือคา i ที่มีการเพิ่มทีละ 1 และเคลื่อนที่ไปในทิศทางขวามือ 3. Dependence and Loop ในการประมวลผลเชิงขนานนั้น จําเปนตองพิจารณาดวยวา ขางในลูปมีการเกิด dependency แบบใดซึ่ง ในบางลักษณะของ dependency สามารถแกไขได ซึ่งสงผลใหสามารถแบงการทํางานเปนสวนยอยๆที่ สามารถทํางานพรอมกันได ลักษณะของ Dependency - Loop-independent dependence รูปที่ 10 Loop-independent dependence - Loop-carried dependences 4. Distance Vectors เปนคาที่บอกวา คา output ที่การประมวลผลกอนหนา จะเปนคา input ที่คําสั่งตอมา ซึ่งอยูในลูปเดียวกัน โดย มีระยะหาง เปนเทาใด โดยหาคา Distance Vector ไดจาก v = iT – iS (target– source) รูปที่ 12 Distance Vector do j = 1,6 do i = 1,5 A(j,i) = A(j-1,i-1)+1 enddo enddo do i = 1,100 A(i) = B(i) + 1 C(i) = A(i) * 2 enddo do i = 1,6 do j = 1,5 A(i,j) = A(i-1,j-2)+1 enddo enddo Distance Vector : (1,2) do i = 1,100 A(i) = A(i-1)+1 enddo do i = 1,100 A(i) = B(i) + 1 C(i) = A(i-1) * 2 enddo รูปที่ 8 Iteration Space ของ Array 2 มิติ รูปที่ 11 Loop-carried dependence
  • 17. 9 วิเคราะหหา loop carried dependency ในการเขียนโปรแกรม เชิงขนาน นั้น สิ่งแรกที่ตองคํานึงถึงนั้นคือ การพิจารณาวาในโคดสวนใดสามารถทําการ ประมวลผลเชิงขนานได โดยตองวิเคราะห วาเกิด dependency หรือไม โดยหาจากการหาคาของ iteration space และ คาของ distance vector โดยทั้งสองจะทําใหทราบวาการทํางานของลูปนั้น มี input ใดที่รอ output อื่นอยูซึ่งหมายความ วาในการทํางานนั้นเกิด dependency ซึ่งในขั้นตอมาคือการวิเคราะหวา dependency สามารถแกไขไดหรือไม ถา สามารถแกไข ได หมายความวา โคดสวนนั้นสามารถทําการประมวลผลเชิงขนานได จากโคดตัวอยาง วิเคราะหหา Distance vectors ได Distance vectors : (1,0) for accesses to A (0,1) for accesses to B A เกิด loop carries dependency ที่ลูป i B เกิด loop carries dependency ที่ลูป j Loop Transformations ลักษณะของลูปขางลางนี้ เปนลูปที่เกิด loop carried dependency ซึ่งสามารถทําการแกไข dependency ที่เกิดขึ้นได โดยการสลับการทํางานของลูปขางใน กับลูปขางนอก ทําใหสามารถแบงงานยอย เพื่อการประมวลผลเชิงขนานได รูปที่ 15 แสดง ตัวอยางที่ 2 ของลูปทเกิด loop carried dependency ซึ่งสามารถทําการแกไข dependency do i = 1,5 do j = 1,5 A(i,j) = B(i-1,j)+1 B(i,j) = A(i, j-1) * 2 enddo enddo do i = 1,6 do j = 1,5 A(i,j) = A(i-1,j-2)+1 enddo enddo do j = 1,5 do i = 1,6 A(i,j) = A(i-1,j-2)+1 enddo enddo รูปที่ 13 แสดงการวิเคราะห loop carried dependency รูปที่ 14 แสดง ตัวอยางที่ 1 ของลูปทเกิด loop carried dependency ซึ่งสามารถทําการแกไข dependency
  • 18. 10 จากการศึกษาเครื่องมือเรียนรูสําหรับฝกเขียนโปรแกรม โดยโปรแกรมเล็ทซี (ฤทธิรณชัย, 2550) ซึ่งเปนเครื่องมือชวยสอนเขียนโปรแกรมเชิงลําดับรูปแบบหนึ่ง รูปที่ 16 โปรแกรมเล็ทซี (ฤทธิรณชัย, 2550) และจากการศึกษาเรื่องของการพัฒนาโปรแกรมเชิงขนาน ทําใหทราบวา โปรแกรมในลักษณะ เครื่องมือเรียนรูสามารถชวยใหโปรแกรมเมอรมีผลสัมฤทธิ์ทางการเรียนเพิ่มมากขึ้น ประกอบกับแนวโนม ของคอมพิวเตอรในอนาคต การออกแบบระบบคอมพิวเตอรเริ่มใหความสนใจกับการ เพิ่มความเร็วในการ ประมวลผล โดยออกแบบใหเครื่องคอมพิวเตอรมีหลายหนวยประมวลผล ซึ่งจะชวยลดเวลาในการ ประมวลผลใหลดลง และเพิ่มประสิทธิภาพใหกับคอมพิวเตอรไดเปนอยางมาก ดังนั้นการทํางานแบบ ประมวลผลเชิงขนานจึงมีแนวโนมวาถูกนําไปใชกันมากในอนาคตอันใกล และยังขาดเครื่องมือสําหรับการ ชวยเขียนโปรแกรมเชิงขนาน จึงเปนเรืองที่นาสนใจที่จะสรางโปรแกรมเพื่อชวยโปรแกรมเมอรในการเขียน โปรแกรมเชิงขนานขึ้นมา การพัฒนาเกี่ยวกับการเขียนโปรแกรมเชิงขนานกอนหนานั้นมีเครื่องมือที่ถูกพัฒนาขึ้นมากมาย โดยสวนใหญจะเนนการแสดงภาพการทํางานของโปรแกรมที่ทํางานเชิงขนานที่มีความซับซอนเพื่อให เขาใจไดงายขึ้น และเพื่อตรวจหาความผิดพลาดจาการทํางานเชิงขนาน และจากการวิจัยตางๆไดชี้ให ตระหนักวาการทํางานเชิงขนานมีลักษณะโครงสรางที่ซับซอนซึ่งเกิดจากการทํางานของสวนยอยเปน จํานวนมาก และการแสดงเปนรูปภาพของโครงสราง และพฤติกรรมของการประมวลผลเชิงขนานนั้นมี ความจําเปนและสามารถชวยใหเขาใจโปรแกรมเชิงขนานไดงายขึ้น ผูพัฒนาเล็ทมีซีจึงเลือกที่จะพัฒนา เครื่องมือชวยเขียนโปรแกรมเชิงขนานโดยใหความสามารถการแสดงภาพการทํางานของโปรแกรมเชิง ขนานเปนสิ่งสําคัญที่โปรแกรมตองมี
  • 19. 11 ทฤษฎีหลักการและเทคนิคหรือเทคโนโลยีที่ใช 1. การหาคาประสิทธิภาพจะมีสวนที่ติดตอกับผูใช ซึ่งแบงออกเปนสองสวนหลัก คือ 1.1 เวลาที่ไดจากการประมวลผลจริง (Measured Response Time) ในสวนนี้จะเปนสวนที่มี การแสดงเวลาที่จับไดในการประมวลผลโปรแกรมที่ผูเรียนเขียนขึ้นจริง โดยมีหนวยเปนมิลลิวินาที (ms) 1.2 เวลาประมวลผลที่ไดจากการคํานวณ (Theoretical Execution Time) ในสวนนี้จะเปน สวนที่มีการแสดงเวลาในการประมวลผลโปรแกรมที่ผูเรียนเขียนขึ้นโดยไดจากการคํานวณ ซึ่งเวลา ดังกลาวสามารถหาไดจากสมการประเมินประสิทธิภาพ (Performance Equation) โดยสมการ ประเมินประสิทธิภาพ มีดังนี้ ประมาณความเร็วในการประมวลผล (Execution Time Equation) คําอธิบายสมการ 1. Execution Time คือ เวลาในการประมวลผล มีหนวยเปน วินาที (second) 2. Instruction Count คือ จํานวนคําสั่งที่ประมวลผลในโปรแกรม 3. CPI หรือ Cycle Per Instruction คือ จํานวนรอบการทํางานตอหนึ่งคําสั่ง 4. Clock Rate คือ ความถี่ของสัญญาณนาฬิกาของหนวยประมวลผล มีหนวยเปน เฮิรซ (Hz) 2. ประเภทชุดคําสั่งภาษาของเครื่อง ไดแก 1. Data Transfer Instruction 2. Control Transfer Instruction 3. I/O Instruction 4. Floating-point Instructions 5. Binary Arithmetic Instructions 6. No Operation Instructions Execution Time = Instruction Count * CPI * 1/Clock Rate
  • 20. 12 เครื่องมือที่ใชในการพัฒนา 1. ภาษา Java 2. Eclipse RCP 3. Java CUP 4. JFlax 5. JFreeChart รายละเอียดโปรแกรมที่ไดพัฒนาในเชิงเทคนิค (Software Specification) 1. Input/Output Specification 1.1 Input Specification - โคดภาษา C++ ที่ผูใชเขียนขึ้น 1.2 Output Specification - โคดโปรแกรมที่ทําการไฮไลท - แสดงผลการคอมไพลโปรแกรม และ Error ของโปรแกรมที่ผูใชเขียนขึ้น - แสดง Instruction ดวย Pie Chart - แสดง Excuetion Time ดวย Bar Chart 2. Functional Specification 2.1 สามารถวิเคราะหและไฮไลท(highlight)ไวยากรณของโปรแกรม 2.2 สามารถ Compile และ Run โปรแกรมที่ผูใชเขียนขึ้นได 2.3 สามารถรายงาน error ของโปรแกรม 2.4 สามารถคํานวณ Excuetion Time ของโปรแกรมและแสดงออกมาในรูปแบบของ Bar Chart ได 2.5 คํานวณหา Instruction count ของโปรแกรม และแสดงออกมาในรูปแบบของ Pie Chart ได
  • 21. 13 ขอบเขตและขอจํากัดของโปรแกรมที่พัฒนา การสรางเครื่องมือเรียนรูบนวินโดวส การสรางสวนวิเคราะห และไฮไลทภาษา การสรางสวนวิเคราะหเพื่อสงเสริมการเขียนโปรแกรมที่ตระหนักถึงประสิทธิภาพและพลังงาน กลุมผูใชโปรแกรม นักศึกษาและผูสนใจเกี่ยวกับการเขียนโปรแกรมเชิงขนาน ซึ่งเปนพื้นฐานของการพัฒนาของ สถาปตยกรรมหนวยประมวลผลแบบมัลติคอร เพื่อเพิ่มศักยภาพการประมวลผล ผลการทดสอบโปรแกรม 1. ทดสอบการไฮไลทภาษาของเล็ทมีซี ผลการทดสอบ มีการ ไฮไลทสีของคําสําคัญ ไดถูกตอง 2. ทดสอบการ Compile และ Run โปรแกรมที่ผูใชเขียนขึ้น ผลการทดสอบ สามารถ Compile และ Run Program ที่ผูใชเขียนขึ้นไดถูกตอง 3. ทดสอบการแสดง error ของโปรแกรม ผลการทดสอบ มีการแสดง error ในสวนของ Console View ได 4. คํานวณ Excuetion Time ของโปรแกรม ผลการทดสอบ มีการแสดงผลการคํานวณ Excuetion Time ดวย Bar Chart 5. คํานวณหา Instruction count ของโปรแกรม ผลการทดสอบ มีการแสดงผลการคํานวณ Instruction count ดวย Pie Chart
  • 22. 14 ปญหาและอุปสรรค เล็ทมีซีมีการพัฒนาที่คอยขางซับซอน การพัฒนาจึงตองถูกแบงออกเปนสวนๆ และจะมีการพัฒนา ที่แตกตางกัน จึงตองใชเวลาในการวิเคราะหและพิจารณาในแตละสวน เล็ทมีซี มีสวนที่เปน Compiler ซึ่งตองมีการเขียนในสวน Passer และ Scanner ที่ตองใชเวลาใน การเขียน และตองมีการตรวจสอบ มีสวนที่ตองใชเครื่องมือเขามาชวยในการพัฒนาโครงการ เชน Eclipse RCP ซึ่งผูพัฒนาไมมี ความคุนเคย และตองมีการศึกษาเครื่องมือที่เขามาชวยในการพัฒนา ซึ่งอาจตองใชเวลาใน การศึกษามาก เล็ทมีซี ตองมีการนําสวนตางๆ ที่ไดพัฒนาขึ้นมาประกอบเปนระบบใหญ โดยแตละสวนทําการ พัฒนาโดยใชวิธีแตกตางกัน และจะมีปญหาในการประกอบเขากันเปนระบบใหญ แนวทางในการพัฒนาและประยุกตใชรวมกับงานอื่นๆ ในขั้นตอไป โครงงานเล็ทมีซีเปนเครื่องมือชวยสอนภาษาเขียนโปรแกรมเชิงขนาน ดวยภาษาซีพลัสพลัส เพราะเนื่องจากคอมพิวเตอรสวนใหญถูกพัฒนาใหมีหนวยประมวลผลหลายคอร ดังนั้นผูเขียนโปรแกรม จะตองเปลี่ยนวิธีการพัฒนาโปรแกรมจากเชิงลําดับมาเปนเชิงขนาน เพื่อเปนสิ่งที่จะเพิ่มประสิทธิภาพของ เครื่องประมวลผลหลายคอรใหทํางานไดเต็มประสิทธิภาพยิ่งขึ้น และเนื่องจากสภาวะโลกในปจจุบันมีการ ตระหนักถึงการใชพลังงานมากขึ้น การเขียนโปรแกรมที่คํานึงถึงการประหยัดพลังงานจึงเปนอีกสิ่งหนึ่งที่ ตองเห็นความสําคัญอีกเชนกัน เล็ทมีซีจึงเปนเครื่องมือทีจะชวยใหผูใชจึงจําเปนตองมีการเรียนรูการเขียน โปรแกรมเชิงขนาน และในขนะเดียวกันก็ชวยใหผูใชเห็นถึงการใชพลังงานของโปรแกรมที่ไดเขียนขึ้นเชนกัน เพื่อใหผูใชนําไปปรับปรุง เพื่อใหโปรแกรมที่พัฒนามีประสิทธิภาพยิ่งขึ้น เนื่องจากเล็ทมีซีเปนโปรแกรมที่อานภาษาซีพลัสพลัส แตสามารถพัฒนาเพิ่มเติมเพื่อนําไปใช วิเคราะหภาษาอื่นๆ เชน ซี จาวา หรือ ชีซาพ โดยนําสวนของ Passer และ Scanner ของเล็ทมีซีไปพัฒนา เพิ่มเติม
  • 23. 15 ขอสรุปและขอเสนอแนะ โครงงานเล็มมีซีถูกออกแบบใหมีโครงสรางที่สามารถทําความเขาใจไดงาย ซึ่งผูสนใจสามารถ นําไปพัฒนาตอใหมีประสิทธิภาพ และทํางานไดหลากหลายมากขึ้น โดยการพัฒนาใหมีการแสดงผลใน รูปแบบตางๆ ที่มีความหลากหลายและใหงายตอการเขาใน เชน การใชภาพประกอบการแสดงผล ภาพ ประกอบการประมวลผล การเพิ่มคําอธิบาย หรือ เพิ่มเนื้อหาที่จะเขามาชวยในการเรียนรูเพิ่มเติม ในสวนของ การคํานวณหา ชุดคําสั่ง Instruction count สามารถนําไปพัฒนาในการหาพลังงาน ไฟฟา เพื่อวิเคราะหความสิ้นเปลืองพลังงานของโปรแกรมที่เขียนได
  • 24. 16 เอกสารอางอิง (Reference) Efopoulos, V., Dagdilelis, V., Evangelidis, G., & Satratzemi, M. (2005). a programming environment for novices. Proceedings of the 10th annual SIGCSE conference on Innovation and technology in computer science education (pp. 113-117). Caparica, Portugal: ACM Press New York, NY, USA. Fenichel, R. R., Weizenbaum, J., & Yochelson, J. C. (1970). A program to teach programming. In Communications of the ACM (pp. 141-146). New York: ACM. Hundhausen, C. D., & Brown, J. L. (2007). An experimental study of the impact of visual semantic feedback on novice programming. In Journal of Visual Languages and Computing (pp. 537-559). Orlando, FL, USA: Academic Press, Inc. Kim, Y.-J., Lom, J.-S., & Jun, Y.-K. (2007). Scalable Thread Visualization for Debugging Data Race in OpenMP Programs., (pp. 310-321). Mahim, M., J., C. T., Tiberiu, C., Girish, V., C., G. S., & Mihai, B. (December 2006). Tartan: evaluating spatial computation for whole program execution. the 12th international Conference on Architectural Support For Programming Languages and Operating Systems (pp. 163-174). New York, NY, USA: ACM. Tan, H.-K., & Cai, W. (1994). VPEcons:Avisual Constructor for Parallel Programming. Xian, C., Lu, Y.-H., & Li, Z. (2007). A programming environment with runtime energy characterization for energy-aware applications. the 2007 international symposium on Low power electronics and design (pp. 141-146). New York, NY, USA: ACM. ฤทธิรณชัย, พ. (2550). โครงงานปญหาพิเศษระดับปริญญาตรี เรื่อง เล็ทซี: เครื่องมือเรียนรูเพื่อฝกเปน C++ โปรแกรมเมอรที่มีประสิทธิภาพและพอเพียง. กรุงเทพ: มหาวิทยาลัยธรรมศาสตร.
  • 25. 17 ภาคผนวก (Appendix) คูมือการติดตั้งอยางละเอียด 1. MySQL Server Version 5.0 ซึ่งมีขั้นตอนการติดตั้งโปรแกรม ดังรูปขางลางตอไปนี้ 1. เลือกไฟล Setup รูปที่ 17 แสดงหนาจอเพื่อเลือกไฟล Setup 2. หลังจากขึ้นหนาตาง Setup ใหกดปุม Next >
  • 26. 18 รูปที่ 18 หนาจอการเริ่มติดตั้งโปรแกรม 3. เลือกติดตั้งโปรแกรมแบบ Typical เนื่องจากเปนการลงแบบมาตรฐาน จากนั้นกดปุม Next > รูปที่ 19 เลือกประเภทการติดตั้งโปรแกรม 4. กดปุม Install เพื่อเริ่มตนการติดตั้งโปรแกรม รูปที่ 20 เริ่มตนการติดตั้งโปรแกรม
  • 27. 19 5. ระบบจะทําการติดตั้งโปรแกรมลงบนเครื่องคอมพิวเตอร รูปที่ 21 แสดงหนาจอขณะทําการติดตั้งโปรแกรม 6. เลือก Skip Sign-Up จากนั้นกดปุม Next > รูปที่ 22 หนาจอแสดงการลงทะเบียนโปรแกรม
  • 28. 20 7. เลือก Configure the MySQL Server now จากนั้นกดปุม Finish เพื่อทําการกําหนดคุณสมบัติ ของโปรแกรม รูปที่ 23 หนาจอแสดงการเสร็จสิ้นการลงโปรแกรม 8. กดปุม Next > เพื่อทําการกําหนดคุณสมบัติของโปรแกรม รูปที่ 24 หนาจอแสดงการกําหนดคุณสมบัติของโปรแกรม
  • 29. 21 9. เลือก Standard Configuration จากนั้นกดปุม Next > รูปที่ 25 เลือกประเภทการกําหนดคุณสมบัติของโปรแกรม 10. เลือก Install As Windows Service และ Launch the MySQL Server automatically จากนั้นกด ปุม Next> รูปที่ 26 กําหนดวินโดวสอ็อบชั่น
  • 30. 22 11. เลือก Modify Security Settings แลวใสรหัสผาน หลังจากนั้นเลือก Enable root access from remote machines แลวกดปุม Next > รูปที่ 27 กําหนดอ็อบชั่นความปลอดภัยของโปรแกรม 12. กดปุม Execute เพื่อทําการกําหนดคุณสมบัติของโปรแกรม
  • 31. 23 รูปที่ 28 แสดงหนาจอขณะติดตั้งการกําหนดคุณสมบัติของโปรแกรม 13. กดปุม Finish เปนการเสร็จสิ้นการกําหนดคุณลักษณะของโปรแกรม รูปที่ 29 เสร็จสิ้นการกําหนดคุณสมบัติของโปรแกรม
  • 32. 24 2 . การติดตั้งโปรแกรมที่ใชในโปรแกรมเล็ทมีซี โดยภายในเครื่องคอมพิวเตอรของผูใช ตองมี GNU make 3.8 ขึ้นไป และ มี GNU gcc และ โปรแกรมที่นํามาติดตั้ง มีดังนี้ 2.1 Java Runtime Environment (JRE) Version 1.6 ซึ่งมีขั้นตอนการติดตั้งโปรแกรม ดังรูปขางลาง ตอไปนี้ 1. เลือกไฟล jre-6u3-windows-i586-p-s.exe รูปที่ 30 แสดงหนาจอเพื่อเลือกไฟล jre-6u3-windows-i586-p-s.exe
  • 33. 25 2. กดปุม Accept > เพื่อยอมรับเงื่อนไขลิขสิทธิ์ของโปรแกรมตามกฎหมาย รูปที่ 31 แสดงหนาจอใหยอมรับเงื่อนไขลิขสิทธิ์ของโปรแกรม 3. ระบบจะทําการติดตั้งโปรแกรมลงบนเครื่องคอมพิวเตอร รูปที่ 32 แสดงหนาจอขณะทําการติดตั้งโปรแกรม 4. กดปุม Finish เปนการเสร็จสิ้นการติดตั้งโปรแกรม
  • 34. 26 รูปที่ 33 แสดงหนาจอเสร็จสิ้นการติดตั้งโปรแกรม 2.2 การติดตั้งเล็ทมีซี 1. สามารถคัดลอกไฟล letmec_beta1 ไปวางยังที่ที่ตองการไดเลย
  • 35. 27 รูปที่ 34 นําไฟล letmec_beta1 ไปวางยังที่ที่ตองการ 2. เปดไฟล letmec_beta1 จะพบไฟลดังภาพ รูปที่ 35 ภาพภายในไฟล letmec_beta1 3. เลือกเปดไฟล letmec_bet.exe จะปรากฏ Logo ของเล็ทมีซี ดังภาพ(สามารถสราง Shoutcu ได จากไฟลนี้)
  • 36. 28 รูปที่ 36 ภาพ Logo ของเล็ทมีซี 4. จะปรากฏภาพโปรแกรมเล็ทมีซี รูปที่ 37 ภาพโปรแกรมเล็ทมีซี คูมือการใชงานอยางละเอียด 1. เลือก Open file เพื่อเปดไฟลที่ตองการ
  • 37. 29 รูปที่ 38 ภาพ Open file เพื่อเปดไฟล 2. เลือกไฟลที่ตองการ ดังตัวอยางคือ test1.cpp รูปที่ 39 ภาพการเปดไฟล 3. ไฟลที่เปดขึ้นมาได ดังภาพคือไฟล test1.cpp
  • 38. 30 รูปที่ 40 ภาพแสดงไฟล test.cpp 4. เลือก Analysis -> Run ทําการ Run โปรแกรม รูปที่ 41 ภาพแสดงการเลือกคําสั่ง การ Run โปรแกรม
  • 39. 31 5. เล็ทมีซีจะแสดงผลการ Run โปรแกรมที่ผูใชเขียนขึ้น รูปที่ 42 ภาพแสดงการ Run โปรแกรม 6. โปรแกรมเล็มทีซี จะแสดง Execution time และ Instruction count รูปที่ 43 ภาพแสดง Execution time และ Instruction count
  • 40. 32 7. เราสามารถเลือก รุนของ Processor และชื่อของรุน ของ Processor ได รูปที่ 44 ภาพแสดงการเลือก รุนของ Processor และชื่อของรุน ของ Processor 8. กด Confirm เพื่อยีนยันการเลือก คาของ Ideal Time จะเปลียนไป รูปที่ 45 ภาพแสดงการยีนยันการเลือก Processor และการเปลียนแปลงของ Ideal Time