78
การจาแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง ความเร็วแบบจาลองแบบหลายเอเจ้นต์ ที่พัฒนาด้วยภาษาจาวา โดย นายปิติพัฒน์ เพ็ญภาคกุล วิทยานิพนธ์นี้เป็นส่วนหนึ่งของการศึกษาตามหลักสูตร วิทยาศาสตรมหาบัณฑิต (วิทยาการคอมพิวเตอร์) ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยธรรมศาสตร์ ปีการศึกษา 2558 ลิขสิทธิ์ของมหาวิทยาลัยธรรมศาสตร

การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ ที่พัฒนาด้วยภาษาจาวา

โดย

นายปิติพัฒน์ เพ็ญภาคกุล

วิทยานิพนธ์นี้เป็นส่วนหนึ่งของการศึกษาตามหลักสูตร วิทยาศาสตรมหาบัณฑิต (วิทยาการคอมพิวเตอร์)

ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยธรรมศาสตร์

ปีการศึกษา 2558 ลิขสิทธิ์ของมหาวิทยาลัยธรรมศาสตร์

Page 2: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ ที่พัฒนาด้วยภาษาจาวา

โดย

นายปิติพัฒน์ เพ็ญภาคกุล

วิทยานิพนธ์นี้เป็นส่วนหนึ่งของการศึกษาตามหลักสูตร วิทยาศาสตรมหาบัณฑิต (วิทยาการคอมพิวเตอร์)

ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยธรรมศาสตร์

ปีการศึกษา 2558 ลิขสิทธิ์ของมหาวิทยาลัยธรรมศาสตร์

Page 3: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

An OpenCL Kernels Classification for Studying The Acceleration of a Java Multiagent Simulation

BY

Mr. Pitipat Penbharkkul

A THESIS SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS

FOR THE DEGREE OF MASTER OF SCIENCE (COMPUTER SCIENCE) DEPARTMENT OF COMPUTER SCIENCE

FACULTY OF SCIENCE AND TECHNOLOGY THAMMASAT UNIVERSITY

ACADEMIC YEAR 2015 COPYRIGHT OF THAMMASAT UNIVERSITY

Page 4: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง
Page 5: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

1

หัวข้อวิทยานิพนธ์ การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ ที่พัฒนาด้วยภาษาจาวา

ชื่อผู้เขียน นายปิติพัฒน์ เพ็ญภาคกุล ชื่อปริญญา วิทยาศาสตรมหาบัณฑิต สาขาวิชา/คณะ/มหาวิทยาลัย สาขาวิชาวิทยาการคอมพิวเตอร์

คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยธรรมศาสตร์

อาจารย์ที่ปรึกษาวิทยานิพนธ์

ผู้ช่วยศาสตราจารย์ ดร.วรวรรณ ดีอัซ การ์บาโย (มะเริงสิทธิ์)

ปีการศึกษา 2558

บทคัดย่อ

แม้ว่าแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาจะสามารถประมวลผลด้วยหน่วยประมวลผลกราฟฟิกหรือการเร่งความเร็วด้วยโอเพนซีแอล เพ่ือเร่งความเร็วให้ได้มากขึ้นกว่าหลายร้อยเท่า อย่างไรก็ตาม ประสิทธิภาพที่ได้รับจากการเร่งความเร็วจาวาส่วนใหญ่ขึ้นอยู่กับการจ าแนกงานการค านวณ (เคอร์เนล) ไปยังอุปกรณ์อย่างเหมาะสม ด้วยเหตุนี้ สมรรถนะของแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาเมื่อถูกเร่งความเร็วแล้ว อาจจะไม่เร็วขึ้นในทุกครั้ง ดังนั้นการที่จะท าให้สมรรถนะของแบบจ าลองสูงขึ้นได้เสมอ เมื่อมีการส่งหลายเคอร์เนลจากโปรแกรมจ าลองเดียวกันไปค านวณพร้อมกัน จึงควรมีเทคนิคการสร้างการจ าแนกงานเพ่ือจัดส่งเคอร์เนลของโอเพนซีเอลไปประมวลผลยังอุปกรณ์ท่ีเหมาะสม

ผลงานวิทยานิพนธ์ฉบับนี้ จึงน าเสนอการพัฒนาการจ าแนกงานส าหรับจัดส่ง เคอร์เนลของโอเพนซีแอลเพ่ือส่งไปค านวณบนอุปกรณ์ที่เหมาะสม ตัวจ าแนกงานสามารถระบุอุปกรณ์ของโอเพนซีแอลส าหรับเคอร์เนลที่เหมาะสมบนพ้ืนฐานของคุณลักษณะคงที่ (static) และไม่คงที่ (dynamic) ของโปรแกรม โดยที่เคอร์เนลจะถูกจัดกลุ่มไปยังอุปกรณ์ที่เหมาะสมโดยใช้วิธีเอสวีเอ็มแบบหลายกลุ่ม (multiclass support virtual machine) หลังจากนั้นเคอร์เนลจะถูกจ่ายงานไปยังล าดับงาน (queue) ที่เหมาะสม นโยบายการจ่ายงานที่น าเสนอจะถูกเปรียบเทียบระหว่างนโยบายการจ่ายงานแบบมาก่อนได้ก่อน (first-come-first-serve) กับรูปแบบการจ่ายงานที่ดีที่สุด (oracle) ซึ่งท าการทดลองกับการจ่ายงานแปดเคอร์เนล ผลลัพธ์ที่ได้จากนโยบายที่น าเสนอแสดงให้เห็นถึง

Page 6: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

2

ความเร็วที่เพ่ิมข้ึน 45 เปอร์เซนต์ เมื่อเทียบกับนโยบายการจ่ายงานแบบมาก่อนได้ก่อน อย่างไรก็ตามนโยบายที่น าเสนอก็ยังช้ากว่านโยบายการจ่ายงานที่ดีที่สุดอยู่ 22.5 เปอร์เซนต์ ซึ่งผลลัพธ์ดูเหมือนจะยืนยันว่านโยบายการจ าแนกเคอร์เนลอาจมีผลในการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาอย่างยั่งยืน

ค าส าคัญ: จีพีจีพียู, โอเพนซีเอล, แบบจ าลองแบบหลายเอเจ้นต์, ประสิทธิภาพ, การเร่งความเร็ว,

เอสวีเอ็ม, เมสัน

Page 7: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

3

Thesis Title An OpenCL Kernels Classification for Studying the Acceleration of a Java Multiagent Simulation

Author Mr. Pitipat Penbharkkul Degree Master of Science Major Field/Faculty/University Computer Science

Faculty of Science and Technology Thammasat University

Thesis Advisor Asst.Prof.Dr.Worawan Diaz Carballo (Marurngsith)

Academic Years 2015

ABSTRACT Java-based multi-agent simulation (MAS) can be offloaded to graphical

processing units (GPU) and other OpenCL accelerators to achieve many hundred-fold speedups. However, the performance gain from the accelerated code depends strongly on whether the computation (kernels) have been scheduled to the appropriate devices. Thus, accelerating Java MAS may not lead to a sustainable speedup. This paper proposes a method for a kernel classifier to specify suitable devices to execute OpenCL kernels. The classifier can identify suitable OpenCL devices for kernels based on the static and dynamic characteristics of the code of the kernels. Kernels are grouped by their suitability for particular devices using the multiclass support virtual machine technique. After that, kernels are scheduled to an appropriate task queue. Kernel scheduling based on the proposed technique is compared against the first-come-first-serve (FCFS) technique and against oracle scheduling when handling eight kernels. Our results show that, using the proposed method, all kernels finished execution 45 percent sooner than using the FCFS technique. However, the overall execution time was 22.5 percent longer than with oracle scheduling. Our results seem to confirm that kernel classification techniques

Page 8: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

4

might contribute towards sustainable high performance in accelerated Java-based MAS models.

Keywords: GPGPU, OpenCL, Multi-agent Simulation, Performance, Acceleration, SVM, MASON.

Page 9: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

5

สารบัญ

บทคัดย่อ 1

สารบัญ 5

สารบัญตาราง 7

สารบัญภาพ 8

สารบัญภาพ (ต่อ) 9

บทที่ 1 บทน า 10

1.1 ที่มาของปัญหา 10 1.2 สมมติฐานของงานวิจัย 14 1.3 วัตถุประสงค์งานวิจัย 14 1.4 ขอบเขตงานวิจัย 15 1.5 ประโยชน์ที่คาดว่าจะได้รับ 15 1.6 รายละเอียดวิทยานิพนธ์ 15

บทที่ 2 วรรณกรรมและงานวิจัยที่เกี่ยวข้อง 17

2.1 แบบจ าลองแบบหลายเอเจ้นต์ 17 2.2 การเร่งความเร็วของโปรแกรมโดยใช้มาตรฐานโอเพนซีแอล 18 2.3 เทคนิคการจ่ายงานประมวลผล 21 2.4 การจัดจ าแนกด้วยเทคนิคการเรียนรู้แบบเครื่องจักร 25 2.5 การเร่งความเร็วของแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวา 26 2.6 การพัฒนาต่อยอดจากทฤษฎีและงานวิจัยที่เกี่ยวข้อง 27

บทที่ 3 วิธีการวิจัย 28

Page 10: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

6

3.1 ระเบียบวิธีในการท าวิจัย 28 3.2 สถาปัตยกรรมของระบบ 31 3.3 การจ าแนกโอเพนซีแอลเคอร์เนล 34 3.4 การทดลองเพ่ือวิเคราะห์ประสิทธิภาพของโมเดลเชิงเอเจ้นต์ที่เร่งความเร็วด้วยโอเพนซีเอล 39

บทที่ 4 ผลการวิจัยและอภิปรายผล 41

4.1 ประสิทธิภาพของตัวจ าแนกประเภทและการจ่ายงาน 41 4.2 แนวทางการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ 45

บทที่ 5 สรุปผลการวิจัยและข้อเสนอแนะ 50

รายการอ้างอิง 52

ภาคผนวก 56

ภาคผนวก ก 57 ส่วนของโปรแกรมท่ีถูกปรับปรุงในโปรแกรมการรวมกลุ่มของนักเรียนในสนาม 57 ภาคผนวก ข 65 ตัวอย่างการเก็บคุณลักษณะ 65 ภาคผนวก ค 67 บทความตีพิมพ์ 67

ประวัติผู้เขียน 74

Page 11: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

7

สารบัญตาราง

ตารางที่ หน้า 3-1 คุณลักษณะที่ใช้ในการวิเคราะห์เพื่อจ าแนกประเภทของเคอร์เนล 35 3-2 กลุ่มของคุณลักษณะที่มีผลต่อปัจจัย 35 3-3 โปรแกรมท่ีใช้ในการเก็บคุณลักษณะ 37 3-4 กลุ่มของโปรแกรมตามรูปแบบการค านวณ 38 3-5 รายละเอียดของเครื่องที่ใช้ทดสอบ 39 4-1 เวลาในการประมวลผลของเคอร์เนลในแต่ละอุปกรณ์และผลการจ าแนกโปรแกรม ที่ใช้ทดสอบ 43 4-2 คุณลักษณะของเคอร์เนลโมเดล Student Schoolyard Cliques 48 4-3 ผลของการจ าแนกโมเดล โมเดล Student Schoolyard Cliques 49

Page 12: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

8

สารบัญภาพ

ภาพที่ หน้า 1-1 การเปรียบเทียบการจ่ายงานของเคอร์เนล 13 2-1 ประวัติศาสตร์ของของภาษาในการออกค าสั่งการค านวณหน่วยประมวลผลกราฟิก 18 2-2 ตัวอย่างโปรแกรมโอเพนซีแอล 20 2-3 ภาพรวมของการประมวลผลแบบกระจาย 1 (Long, Lin, & Sun, 2011) 22 2-4 ภาพรวมของการประมวลผลแบบกระจาย 2 (Dai & Lin, 2013) 22 2-5 การจ าแนกคุณลักษณะ (Wen, Wang, & O'Boyle, 2014) 23 2-6 คุณลักษณะที่ใช้จ าแนก (Wen et al., 2014) 23 2-7 การเรียนรู้เครื่องจักรของตัวพยากรณ์ (Wen et al., 2014) 24 2-8 การพยากรณ์รูปแบบของความเร็ว (Wen et al., 2014) 24 2-9 การจ่ายงานและการจัดล าดับ (Wen et al., 2014) 24 2-10 การจ าแนกด้วยวิธีเอสวีเอ็ม (Corinna Cortes, 1995) 26 3-1 สถาปัตยกรรมการผูกโอเพนซีเอลด้วยเจโอซีแอล 30 3-2 สถาปัตยกรรมการแลกเปลี่ยนข้อมูลระหว่างหน่วยความจ า 31 3-3 ภาพรวมแสดงส่วนงานของระบบที่น าเสนอ 31 3-4 สถาปัตยกรรมการเก็บคุณลักษณะของเคอร์เนล 32 3-5 สถาปัตยกรรมการจ าแนกเคอร์เนลด้วยวิธีเอสวีเอ็มแบบหลายประเภท 33 3-6 ภาพรวมแสดงขั้นตอนการจ่ายงานของระบบที่เสนอ 33 3-7 สถาปัตยกรรมระบบก่อนการประมวลผล 34 3-8 สถาปัตยกรรมระบบระหว่างประมวลผล 34 3-9 ภาพรวมของนโยบายการจ่ายงานที่น าเสนอ 38 4-1 การจ่ายงานเคอร์เนลแบบอุปกรณ์ท่ีเร็วที่สุด 43 4-2 การจ่ายงานเคอร์แบบมาก่อนได้ก่อน 44 4-3 การจ่ายงานเคอร์เนลแบบที่ดีที่สุด 44 4-4 การจ่ายงานเคอร์เนลแบบที่น าเสนอ 44 4-5 ตัวอย่างโปรแกรม Student Schoolyard Cliques 46 4-6 ปฏิสัมพันธ์ของส่วนประกอบที่ใช้ในการท างานของโอเพนซีแอลบนเมสันโมเดล 46 4-7 เวลาในการประมวลผลบนซีพียูโดยไม่ใช้โอแพนซีแอล 47

Page 13: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

9

สารบัญภาพ (ต่อ)

ภาพที่ หน้า 4-8 ความเร็วที่เพ่ิมข้ึนของการใช้โอเพนซีแอล 48

Page 14: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

10

บทที่ 1 บทน า

ผลงานวิทยานิพนธ์ฉบับนี้เสนอแนวทางการเร่งความเร็วของการค านวณข้อมูลเชิงขนานในโปรแกรมจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาให้มีสมรรถนะสูงขึ้น โดยน าเทคนิคการจัดล าดับการประมวลผลเคอร์เนลของโอเพนซีแอล มาใช้สร้างการจ าแนกงานที่สามารถเลือกส่งเคอร์เนลไปประมวลผลที่หน่วยประมวลผลกลาง (ซีพียู) หน่วยประมวลผลกราฟิกส์ (จีพียู) หรืออุปกรณ์เร่งการประมวลผลอ่ืนตามความเหมาะสม เนื้อหาในบทน านี้ น าเสนอที่มาของปัญหา วัตถุประสงค์และขอบเขตของงานวิจัย และประโยชน์ที่คาดว่าจะได้รับจากการวิจัย

1.1 ที่มาของปัญหา

การจ าลองแบบหลายเอเจ้นต์เป็นรูปแบบการจ าลองการด าเนินงานพร้อมกันและมี

ปฏิสัมพันธ์ของเอเจ้นต์ เพ่ือจุดประสงค์ในการคาดการณ์ลักษณะของปรากฏการณ์ที่ซับซ้อน (Crooks & Heppenstall, 2012) การจ าลองแบบหลายเอเจ้นต์มักจะพัฒนาบนแพลตฟอร์มหรือเฟรมเวิร์ก เช่น เจด (JADE), รีพาสต์ (Repast), เมสัน (MASON), จีโอเมสัน (GeoMASON), เน็ตโลโก้ (NetLogo) และ สวอร์ม (SWARM) เป็นต้น ดังที่กล่าวใน (Marurngsith, 2014; Railsback, Lytinen, & Jackson, 2006) ซึ่งจาวาเป็นแพลตฟอร์มที่มีประสิทธิภาพและนิยมใช้เนื่องจาก เป็นภาษาที่ใช้ได้หลายระบบ (portability) มีฟังก์ชันช่วยเหลือมากมายในชุดพัฒนา และต้องการระบบติดต่อกับผู้ใช้เพ่ือการแสดงผลภาพเคลื่อนไหว ดังนั้นเฟรมเวิร์กส่วนใหญ่ เช่น เจด, รีฟาสต์, เมสัน, จีโอเมสัน และ สวอร์ม จึงใช้ภาษาจาวาเพ่ือสร้างแบบจ าลอง แม้ว่าการจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาจะได้รับความนิยมเนื่องจากสามารถใช้ในหลายระบบ แต่ด้วยสมรรถนะและประสิทธิภาพในการปรับขนาดนั้นจ ากัด (Parry & Bithell, 2012) การจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยจาวาจึงเหมาะที่จะน ามาเร่งความเร็วบนแพลตฟอร์มร่วมหลายประเภท เช่น การค านวณด้วยหน่วยประมวลผลหลัก หรือ ซีพียู (CPU ย่อมาจาก Central Processing Unit) หน่วยประมวลผลกราฟิก หรือ จีพียู (GPU ย่อมาจาก Graphical Processing Unit) หน่วยเร่งการประมวลผล หรือ เอพียู (APU ย่อมาจาก Accelerated Processing Unit) และหน่วยประมวลผลร่วม (Coprocesser)

การพัฒนาของภาษาและเครื่องมือพัฒนาโปรแกรมส าหรับจีพียู โดยเฉพาะอย่างยิ่งภาษาคูด้า (CUDA) และมาตรฐานโอเพนซีแอล (OpenCL Standard) ท าให้การประมวลผลบนจีพียูกลายเป็นเทคนิคส าคัญที่ใช้เร่งความเร็วการประมวลผลส าหรับแอพพลิเคชันสมรรถนะสูง (Brodtkorb,

Page 15: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

11

Hagen, & Sætra, 2013) (Aaby, Perumalla, & Seal, 2010a) (A. Hayashi, M. Grossman, J. Zhao, J. Shirako, & V. Sarkar, 2013) (N. M. Ho, Thoai, & Wong, 2015) (X. Li, Cai, & Turner, 2016) และถูกน ามาใช้เร่งความเร็วโปรแกรมประยุกต์ในหลายวงการ รวมทั้งเพ่ือเร่งความเร็วการประมวลผลแบบจ าลองแบบหลายเอเจ้นต์ (Richmond, Walker, Coakley, & Romano, 2010) แม้ว่าโปรแกรมที่เร่งความเร็วด้วยภาษาคูด้าจะได้รับการยอมรับว่ามีสมรรถนะสูงกว่าการเร่งความเร็วด้วยโอเพนซีแอล แต่เนื่องจากภาษาคูด้าใช้ได้บนจีพียูของบริษัทเอ็นวีเดียร์เท่านั้น จึงท าให้มาตรฐานโอเพนซีแอลได้รับความสนใจเพราะโปรแกรมสามารถใช้ได้บนหลายแพลตฟอร์ม และรูปแบบค าสั่งโอเพนซีแอลไม่ได้ส่งผลให้สมรรถนะของอุปกรณ์ที่มาจากบริษัทผู้ผลิตบริษัทหนึ่งมีค่าแตกต่างจากอุปกรณ์ท่ีผลิตจากบริษัทอ่ืน (Su, Chen, Lan, Huang, & Wu, 2012)

ข้อจ ากัดที่เป็นที่รู้กันดีในการเร่งความเร็วของโอเพนซีแอลคือ ประสิทธิภาพที่ได้จากการเร่งความเร็วนั้น ส่วนใหญ่จะขึ้นอยู่กับการจ่ายงานการค านวณ (เคอร์เนล) ไปยังอุปกรณ์ที่เหมาะสม ซึ่งข้อจ ากัดนี้ยังคงมีผลต่อการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวา ดังนั้นความเร็วที่ เ พ่ิมขึ้นอาจจะเพ่ิมขึ้นมากถึงร้อยเท่าหรือไม่เร็วขึ้นเลย แนวทางในการพยากรณ์ประสิทธิภาพของเคอร์เนลส าหรับอุปกรณ์ที่แตกต่างกันได้ถูกกล่าวถึงสามงานวิจัย (Yan, Grossman, & Sarkar, 2009) (Mokhtari & Stumm, 2014; Rossbach, Yu, Currey, Martin, & Fetterly, 2013) โดยที่การเก็บข้อมูลของเคอร์เนลนั้นเป็นกุญแจส าคัญที่ใช้ในการจ าแนกเคอร์เนล ยกตัวอย่างเช่น การใช้ข้อมูลจากการเก็บข้อมูลเก่า (Sato, Komatsu, Takizawa, & Kobayashi, 2011) หรือการสร้างเฟรมเวิร์กที่ใช้ในการเก็บข้อมูลจากไลบรารี (Matoga, Chaves, Tom, x00E, & Roma, 2013) และการสร้างคอมไพเลอร์เพ่ือเก็บข้อมูลและจ าแนกเคอร์เนลเพ่ือเลือกอุปกรณ์ที่เกมาะสมในการประมวลผลได้ถูกน าเสนอใน (Lopez-Novoa, Mendiburu, Miguel-Alonso, & Society, 2015) (Wen et al., 2014) ซึ่งงานวิจัยเหล่านี้ได้ยืนยันประโยชน์ของการใช้เทคนิคการจ าแนกอุปกรณ์ที่เหมาะสมเพื่อเร่งความเร็วเคอร์เนลว่ามีความแม่นย าถึง 87 เปอร์เซนต์

แบบจ าลองแบบหลายเอเจ้นต์ส่วนใหญ่พัฒนาโดยใช้เครื่องมือสร้างแบบจ าลองที่ใช้ภาษาจาวาเพ่ือให้สามารถน าไปใช้ได้ในทุกระบบ เมื่อศึกษาการท างานของแบบจ าลองดังกล่าว พบว่าแบบจ าลองมีการประมวลผลแบบหลายเทรด แต่การกระจายเทรดนั้นขึ้นอยู่กับการจัดการของเวอร์ชวลแมชชีนและระบบปฏิบัติการ ผู้สร้างแบบจ าลองไม่สามารถจัดการเทรดได้ ท าให้มีงานวิจัยหลายงานน าเสนอแนวทางเร่งความเร็ว ด้วยวิธีการตัดส่วนของค าสั่งในโปรแกรมแบบจ าลองที่มีการท างานเชิงขนานมาสร้างเป็นเคอร์เนลของโอเพนซีแอล และส่งไปประมวลผลบนจีพียู การเร่งความเร็วของโปรแกรมภาษาจาวาบนจีพียูนั้นท าได้สองวิธี

Page 16: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

12

(1) ใช้อุปกรณ์ค านวณแบบขนานแบบอัตโนมัติ (Central, 2011; Akihiro Hayashi, Max Grossman, Jisheng Zhao, Jun Shirako, & Vivek Sarkar, 2013)

(2) ระบุส่วนค านวณเชิงขนานด้วยตนเองโดยใช้วิธีผูกจาวากับโอเพนซีเอล เช่น เจโอซีแอล (JOCL) หรือ จาวาโอซีแอล (JavaOCL) อย่างไรก็ตาม อุปสรรคอย่างหนึ่งของการเร่งความเร็วส่วนการค านวณเชิงขนานของโอเพนซีแอล ที่เรียกว่าเคอร์เนล (Kernel) คือการจัดล าดับการประมวลผล หรือการเลือกส่งเคอร์เนลไปประมวลผลที่อุปกรณ์ ซึ่งหากการเลือกอุปกรณ์ไม่สัมพันธ์กับคุณลักษณะการประมวลผลของเคอร์เนล โปรแกรมท่ีเร่งความเร็วด้วยโอเพนซีแอลอาจจะเร็วขึ้นหลายร้อยเท่าหรือไม่เร็วขึ้นเลย

ตัวอย่างในภาพที่ 1-1 (ตัวอย่างท่ีน าเสนอ ใช้แนวคิดมาจากข้อมูลที่น าเสนอใน (Wen et al., 2014)) แสดงปัญหาเวลาในการประมวลผลของโปรแกรมที่แตกต่างกัน เมื่อมีการจ่ายเคอร์เนลหลายเคอร์เนลของโปรแกรมเดียวกันโดยใช้นโยบายการจ่ายงานที่แตกต่างกันสี่นโยบาย สมมติให้โปรแกรมแบบจ าลองแบบหลายเอเจ้นต์ มีเคอร์เนลที่ค านวณข้อมูลเชิงขนานที่สามารถท างานพร้อมกันได้สี่เคอร์เนล คือ เคอร์เนล A, B, C และ D ตามล าดับ โดยที่เวลาในการประมวลผลเคอร์เนลดังกล่าวบนซีพียูและจีพียู จะไม่เท่ากัน ดังที่แสดงในกราฟในรูป 1-1 (ก) ตัวอย่างเช่นเคอร์เนล A หากประมวลผลบนซีพียูจะใช้เวลา 80 วินาที แต่เมื่อประมวลผลบนจีพียูจะใช้เวลา 175 วินาที เป็นต้น เมื่อน าเคอร์เนลไปจ่ายงานด้วยวิธีที่แตกต่างกันสี่วิธี ดังแสดงในรูป 1 -1 (ข) คือ การจ่ายงานเคอร์เนลบนซีพียูทั้งหมด, การจ่ายงานทุกเคอร์เนลบนจีพียูทั้งหมด, การจ่ายงานแบบมาก่อนได้ก่อน (โดยก าหนดให้ล าดับการส่งเคอร์เนลเข้าตัวจ่ายงานเป็น A, B, C และ D ตามล าดับ และล าดับการจ่ายงานคือจ่ายไปยังซีพียูก่อนจีพียูและสลับแบบวนรอบ), และการจ่ายงานด้วยวิธีที่ดีที่สุดซึ่งสมมติว่าหน่วยจ่ายงานรู้เวลาในการประมวลผลของเคอร์เนลทุกตัวบนทุกอุปกรณ์แล้วล่วงหน้า ผลจากการจ่ายงานคือ การจ่ายงานบนซีพียูทั้งหมดช้าที่สุด ซึ่ง โปรแกรมประมวลผลสี่เคอร์เนลเสร็จในเวลา 487 วินาที และการจ่ายงานด้วยวิธีที่ดีที่สุดจะเร็วที่สุด ซึ่ง โปรแกรมประมวลผลสี่เคอร์เนลเสร็จในเวลา 120 วินาที ตัวอย่างนี้แสดงให้เห็นว่า วิธีการจ่ายงานมีผลต่อสมรรถนะของโปรแกรมที่ถูกเร่งความเร็วด้วยการส่งเคอร์เนลของโอเพนซีแอลไปประมวลผลเชิงขนาน ถึง 4.06 เท่า หรือประมาณร้อยละ 300

Page 17: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

13

ภาพที่ 1-1 การเปรียบเทียบการจา่ยงานของเคอร์เนล

งานวิจัยของเหวินและคณะ ชี้ให้เห็นว่าเมื่อมีเคอร์เนลหลายเคอร์เนลจากหลายโปรแกรมที่ต่างกัน ถูกส่งไปท างานที่ซีพียูและจีพียูโดยไม่ค านึงถึงเวลาในการประมวลผล อาจส่งผลให้อัตราการผลิตผลลัพธ์ของระบบโดยรวมไม่ได้สูงขึ้น เหวินและคณะจึงน าเสนอเทคนิคการจ่ายงานโดยใช้เทคนิคการเรียนรู้ของเครื่องจักรมาจ าแนกเคอร์เนล และส่งเคอร์เนลไปประมวลผลยังอุปกรณ์ที่เหมาะสม ซึ่งผลลัพธ์พบว่าอัตราการผลิตผลลัพธ์เร็วขึ้นร้อยละ 25 และเวลาครบวงงานเร็วขึ้นถึงร้อยละ 65

ผลงานวิทยานิพนธ์ฉบับนี้จึงน าเสนอการท าวิทยานิพนธ์ในหัวข้อ “การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพ่ือศึกษาแนวทางการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ ที่พัฒนาด้วยภาษาจาวา” เพ่ือศึกษาประเด็นที่กล่าวมา โดยมีเป้าหมายที่จะศึกษาแนวทางในการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวา โดยก าหนดค าถามในการวิจัย ดังนี้

0

50

100

150

200

เคอร์เนล A เคอร์เนล B เคอร์เนล C เคอร์เนล D

เวลา

ในกา

รประ

มวลผ

ล (ว

ินาที)

CPU

GPU

0 100 200 300 400 500

CPU

(1) การจ่ายงานเฉพาะบนซีพียู (all-cpu)

0 100 200 300 400 500

CPU

(2) การจ่ายงานเฉพาะบนจีพียู (all-gpu)

0 100 200 300 400 500

CPU

(3) การจ่ายงานแบบมาก่อนได้ก่อน (FCFS) 0 100 200 300 400 500

CPU

GPU

(4) การจ่ายงานที่ดีที่สุด (Oracle)

เวลาประมวลผลเคอร์เนล A

เวลาประมวลผลเคอร์เนล B

เวลาประมวลผลเคอร์เนล C

เวลาประมวลผลเคอร์เนล D

(ก) ด้านบน แสดงเวลาการประมวลผลของเคอร์เนล A, B, C, D บนซีพียูและจพีียู (ข) ด้านล่าง แสดงเวลาการประมวลผลโปรแกรมทั้งหมด เมื่อจ่ายเคอร์เนลไปประมวลผลด้วยวิธทีี่แตกต่างกันสี่วิธี

Page 18: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

14

“หากน าเทคนิคการจ่ายงานประมวลผลเคอร์เนลของโอเพนซีแอลจากการจ าแนกด้วยวิธีการเรียนรู้แบบเครื่องจักรตามเทคนิคเอสวีเอ็ม เพ่ือจ าแนกงานประมวลผลเคอร์เนลส าหรับอุปกรณ์มากกว่าสองอุปกรณ์จะส่งผลต่อ จะส่งผลต่อความเร็วในการประมวลผลอย่างไร และสามารถน าแนวทางนี้ไปเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาได้อย่างไร”

1.2 สมมติฐานของงานวิจัย

1. การจ่ายงานประมวลผลเคอร์เนลหลายตัวจากโปรแกรมแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาโปรแกรมเดียว โดยใช้การจ าแนกด้วยวิธีการเรียนรู้แบบเครื่องจักรตามเทคนิคเอสวีเอ็มแบบหลายประเภท จะมีความแม่นย าในการจ่ายงานการประมวลผลเคอร์เนลไปยังอุปกรณ์ที่เหมาะสม และจะส่งผลให้โปรแกรมแบบจ าลองมีอัตราเร็วขึ้นที่สูงกว่าการจ่ายงานแบบมาก่อนได้ก่อน

2. การเร่งความเร็วของโปรแกรมแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาด้วยการใช้เจโอซีแอล จะท าให้โปรแกรมแบบจ าลองประมวลผลเร็วกว่าการประมวลผลแบบหลายคอร์

1.3 วัตถุประสงค์งานวิจัย 1. เพ่ือพัฒนาการจ าแนกโอเพนซีแอลโดยใช้เทคนิคเอสวีเอ็มแบบหลายกลุ่ม และศึกษาแนวทางพัฒนาระบบส าหรับจ าแนกงานประมวลผลเคอร์เนลหลายตัวจากแบบจ าลองแบบหลาย เอเจ้นต์ที่พัฒนาด้วยภาษาจาวา 2. เพ่ือทดสอบสมรรถนะของการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาโดยใช้เครื่องมือเจโอซีแอล เมื่อเที่ยบกับการประมวลผลแบบหลายคอร์ตามปกติ 3. เพ่ือเปรียบเทียบการจ่ายเคอร์แนลหลายเคอร์แนลไปประมวลผล โดยใช้เทคนิค ที่น าเสนอ (FCFS+Classification) เทียบกับเทคนิคอุปกรณ์ที่เร็วที่สุด (Fastest Device), มาก่อนได้ก่อน (First Come First Serve) และเทคนิคการจ่ายงานที่ดีที่สุด (Oracle)

Page 19: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

15

1.4 ขอบเขตงานวิจัย 1. ระบบถือว่าเคอร์เนลของโอเพนซีแอลที่ถูกส่งมาประมวลผลพร้อมกันทุกเคอร์เนลมีความ

ขนาน และไม่มีความขึ้นต่อกัน สามารถประมวลผลในล าดับใดก็ได้ หากเคอร์เนลมีความขึ้นต่อกันผู้ใช้ต้องระบุจุดประสานจังหวะในแบบจ าลอง เพื่อให้ไม่มีการส่งเคอร์เนลมายังตัวจ่ายงาน

2. การจัดการโอนย้ายข้อมูลระหว่างหน่วยความจ าเป็นหน้าที่ของผู้ใช้ที่ต้องระบุในโปรแกรมก่อนส่งเคอร์เนลมายังตัวจ่ายงาน

3. ระบบจ่ายงานใช้มาตรฐานโอเพนซีแอลเวอร์ชัน 1.2 4. โปรแกรมแบบจ าลองแบบหลายเอเจ้นต์พัฒนาด้วยเครื่องมือสร้างแบบจ าลองจีโอเมสัน

เป็นแพลตฟอร์มในการพัฒนา 5. ระบบจ่ายงานท างานบนระบบปฏิบัติการวินโดวส์ 10 แบบ 64 บิต (64-bit Windows) 6. การทดสอบระบบจ่ายงานจะท างานบนสองจีพียู โดยใช้ หน่วยประมวลผลกราฟิกของ

บริษัทเอ็นวีเดียร์ (NVIDIA) และอินเทล (Intel) เป็นแพลตฟอร์ม

1.5 ประโยชน์ที่คาดว่าจะได้รับ ผลที่ได้จากงานวิจัยจะยืนยันสมมติฐานทั้งสองข้อ และให้ข้อมูลเชิงลึกเกี่ยวกับการเร่งความเร็วของการจ าลองแบบหลายเอเจ้นต์บนแพลตฟอร์มร่วมหลายประเภท หากการวิจัยประสบความส าเร็จ อาจสามารถพัฒนาวิธีการเพ่ือเพ่ิมความแม่นย าในการจ าแนกอุปกรณ์ที่เหมาะสมโดยน าคุณลักษณะของเคอร์เนลที่ละเอียดขึ้นมาร่วมพิจารณา นอกจากนี้เทคนิคการจัดล าดับงานอาจถูกพัฒนาให้มีประสิทธิภาพมากขึ้นเพ่ือรองรับอุปกรณ์ร่วมประเภทอ่ืนในอนาคต เพ่ือเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์

1.6 รายละเอียดวิทยานิพนธ์ วิทยานิพนธ์ฉบับนี้ประกอบด้วย บทที่ 1 บทน า กล่าวถึงที่มาและความส าคัญของปัญหา รวมถึงประเด็นต่างๆ เก่ียวกับการท าวิจัยอันได้แก่ วัตถุประสงค์, ขั้นตอน, ขอบเขต และประโยชน์ของงานวิจัยฉบับนี้

บทที่ 2 วรรณกรรมและงานวิจัยที่ เกี่ยวข้อง กล่าวถึงทฤษฎีและองค์ความรู้ที่น ามาประยุกต์ใช้ในงานวิจัย และกล่าวถึงงานวิจัยที่เกี่ยวข้องที่ได้ศึกษาและน ามาใช้อ้างอิง

บทที่ 3 วิธีการวิจัย กล่าวถึงข้ันตอนการท าวิจัยโดยละเอียด รายละเอียดโครงงานที่ได้พัฒนา และองค์ความรู้และเนื้อหาที่ได้รเิริ่มใหม ่

Page 20: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

16

บทที่ 4 ผลการวิจัยและอภิปรายผล อธิบายรายละเอียดวิธีการทดลอง แสดงผลลัพธ์ที่ได้รับจากการทดลองท้ังในรูปแบบกราฟและค าอธิบาย รวมทั้งอภิปรายผลการทดลอง สรุปจุดเด่นและจุดด้อยของงานวิจัย และเหตุผลสนับสนุนผลการทดลอง

บทที่ 5 สรุปผลการวิจัยและข้อเสนอแนะ กล่าวถึงบทสรุปที่ได้รับจากผลการทดลอง องค์ความรู้ใหม่จากงานวิจัย จุดเด่นจุดด้อยของงานวิจัย และข้อเสนอแนะต่องานวิจัยฉบับนี้

Page 21: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

17

บทที่ 2 วรรณกรรมและงานวิจัยที่เกี่ยวข้อง

ผลงานวิทยานิพนธ์ฉบับนี้ เสนอแนวทางการเร่งสมรรถนะโปรแกรมจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาบนจีพียูและซีพียู โดยการพัฒนาตัวจ่ายงานประมวลผลส าหรับจัดส่งเคอร์เนลของโอเพนซีแอลไปยังอุปกรณ์ที่เหมาะสม การพิจารณาเลือกอุปกรณ์ที่เหมาะสมนี้ท าโดยการเก็บค่าคุณลักษณะของเคอร์เนลระหว่างคอมไพล์ และก่อนการประมวลผล และใช้เทคนิคการเรียนรู้ด้วยเครื่องจักรมาจัดแบ่งเคอร์เนล เพ่ือให้ตัวจ่ายงานเลือกจ่ายงานไปยังอุปกรณ์ที่เหมาะสม การท าวิจัยตามมีพ้ืนฐานเชิงทฤษฎี และแนวคิดจากงานวิจัยที่เกี่ยวข้องสี่ส่วน ได้แก่ การจ าลองแบบหลายเอเจ้นต์และการเร่งความเร็วบนแพลตฟอร์มร่วมหลายประเภท, การเร่งความเร็วของโปรแกรมโดยใช้มาตรฐานโอเพนซีแอล, เทคนิคการจ่ายงานประมวลผล และการจัดจ าแนกด้วยเทคนิคการเรียนรู้แบบเครื่องจักร เนื้อหาในบทนี้น าเสนอรายละเอียดของทฤษฎีและงานวิจัยที่เกี่ยวข้องทั้งสี่ส่วน พร้อมทั้งสรุปแนวทางการพัฒนางานวิจัยตามผลงานวิทยานิพนธ์ เพ่ือต่อยอดจากทฤษฎีและงานวิจัยที่เก่ียวข้อง

2.1 แบบจ าลองแบบหลายเอเจ้นต์ (1) ชาลส์ เอ็ม. มาคาล และคณะ (Macal & North, 2011) ได้ท าการแนะน าสั้นๆเกี่ยวกับ

การสร้างแบบจ าลองแบบหลายเอเจ้นต์ โดยอธิบายถึงพ้ืนฐานการจ าลองแบบหลายเอเจ้นต์ ยกตัวอย่างแพลทฟอร์ม และระบุถึงวิธีในการพัฒนาแบบจ าลองแบบหลายเอเจนต์

(2) แอนดรูว์ ที. คลูกส์ และคณะ (Crooks & Heppenstall, 2012) ได้ท าการแนะน าเกี่ยวกับการสร้างแบบจ าลองแบบหลายเอเจ้นต์ โดยอธิบายว่าเอเจนต์คืออะไร , กฎ, พฤติกรรม, ความสัมพันธ์ของเอเจ้นต์, สภาพแวดล้อมที่มีผลต่อเอเจ้นต์, เซลลูล่า ออโตมาต้า, การสร้างเอเจ้นต์, การจ าลอง, การทดสอบและการทวนสอบ, ข้อเด่น ข้อด้อย และแอพพลิเคชั่นที่ใช้แบบจ าลองแบบหลายเอเจ้นต์ในการแก้ปัญหาต่าง

(3) เรลส์แบค และคณะ (Railsback et al., 2006) ได้ท าการทบทวนแพลตฟอร์มที่ใช้ในแบบจ าลองแบบหลายเอเจ้นต์เป็นจ านวนห้าแพลตฟอร์มได้แก่ เมสัน (MASON), เน็ตโลโก้ (NetLogo), รีพาส (Repast), จาวาสวอม (Java Swarm) และ อ็อปเจ็กต์ทีพ-ซี สวอม (Objective-C Swarm) โดยการอธิบายวัตถุประสงค์, ปรัชญา, ค าศัพท์, วิธีการจ่ายงานงาน และการสร้างเลขสุ่มในแต่ละแพลตฟอร์ม เพ่ือให้เข้าใจหลักการท างานของแต่ละแพลตฟอร์ม จากนั้นได้ท าการพัฒนารูปแบบในแบบจ าลองแบบหลายเอเจ้นต์ที่ชื่อว่า Stupid model จ านวนสิบหกรูปแบบซึ่งในแต่ละ

Page 22: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

18

รูปแบบจะมีความซับซ้อนขึ้นตามล าดับ ส าหรับใช้ในการทดสอบและเปรียบเทียบเวลาในการด าเนินงาน (Execution time) ในแต่ละแพลตฟอร์ม และท าการสรุปข้อเด่นข้อด้อย พร้อมทั้งให้ค าแนะน าในแต่ละแพลตฟอร์ม (4) ลุคและคณะ (Luke, 2015) ได้ท าหนังสือแนะน าการใช้งานเมสันเฟรมวิร์ก ตั้งแต่พ้ืนฐานการท างานแบบหลายเอเจ้นต์ ไปจนถึงการแสดงผลแบบหลายมิติ

2.2 การเร่งความเร็วของโปรแกรมโดยใช้มาตรฐานโอเพนซีแอล

2.2.1 สาระส าคัญของมาตรฐานโอเพนซีแอล

บร๊อดคอร์บ และคณะ (Brodtkorb et al., 2013) ได้ท าการอธิบายกลยุทธ์และแนวโน้มของการประมวลผลโดยใช้การค านวณของหน่วยประมวลผลหลักตั้งแต่อดีตถึงปัจจุบัน ซึ่งรวมถึงโอเพนซีเอล

ภาพที่ 2-1 ประวตัิศาสตรข์องของภาษาในการออกค าสั่งการค านวณหน่วยประมวลผลกราฟิก (Brodtkorb et al., 2013)

โอเพนซีแอล (OpenCL: Open Computing Language) คือหนึ่งในเฟรมเวิร์กระบบประมวลผลร่วมหลายประเภท เป็นมาตรฐานจากกลุ่มโครนอส (Group, 2013) ซึ่งเป็นองค์กรกลางผู้วางมาตรฐานกลางในระบบต่างๆ ที่เกี่ยวข้องกับการประมวลผลคอมพิวเตอร์ เช่น โอเพนจีแอล (OpenGL), เว็บจีแอล (WebGL), โอพนวีจี (OpenVG) และโอเพนแม็กซ์ (OpenMAX) เป็นต้น โอเพนซีแอลมีจุดเด่นที่เป็นมาตรฐานกลางและเปิดเสรี สามารถท างานร่วมกับฮาร์ดแวร์ยี่ห้อใดก็ได้ , สนับสนุนหลาย

Page 23: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

19

ระบบปฏิบัติการ, ใช้ภาษาระดับสูงที่เป็นที่นิยมอย่างภาษาซีและซีพลัสพลัสในการเขียนโปรแกรม และนักพัฒนาสามารถใช้ได้โดยไม่เสียค่าใช้จ่ายใดๆ เฟรมเวิร์กโอเพนซีแอลได้เตรียมกรอบวิธีการพัฒนาโปรแกรม, มาตรฐานภาษา, ชุดพัฒนาซอฟแวร์, และรูปแบบการท างานของระบบฮาร์ดแวร์ไว้พร้อมใช้แล้ว การพัฒนาโปรแกรม โอเพนซีแอลมีกรอบวิธีการพัฒนาโปรแกรมให้โปรแกรมเมอร์ปฏิบัติตาม ได้แก่ การเขียนโค้ดต้นฉบับภาษาซีหรือซีพลัสพลัสและโค้ดต้นฉบับโอเพนซีแอลตามไวยากรณ์, การแบ่งงานเชิงขนาน, การเขียนเชื่อมต่อกับไลบรารี่ และการคอมไพล์โค้ดด้วยชุดพัฒนาซอฟแวร์โอเพนซีแอล โดยที่โค้ดจะถูกคอมไฟล์ไปเป็นเคอร์เนล

เคอร์เนลของโอเพนซีเอล

เคอร์เนลของโอเพนซีเอลคือ ชุดค าสั่งของโอเพนซีเอลส าหรับคอมไฟล์โค้ดของชุดค าสั่งเดิมเป็นชุดค าสั่งเพ่ือที่จะแจกงานไปยังอุปกรณ์ต่างๆบนแพลทฟอร์มนั้นๆ ซึ่งต้องสร้างเคอร์เนลในเคอร์เนลโปรแกรมโดยใช้ค าสั่ง clCreateKernel โดยต้องส่งเคอร์เนลไฟล์ (ไฟล์นามสกุล .cl) เป็นพารามิเตอร์เพื่อให้เคอร์เนลรู้ว่าจะท าการคอมไพล์โปรแกรมใด

การจ่ายงานเคอร์เนลไปยังอุปกรณ์

การจ่ายงานเคอร์เนลของโอเพนซีเอลไปยังอุปกรณ์ ต้องระบุอุปกรณ์ที่จะท าการประมวลผล clGetDeviceIDs บนแพลทฟอร์ ม clGetPlatformIDs จ า กนั้ น ส ร้ า ง โ ป รแกรมด้ ว ยค า สั่ ง clCreateProgramWithSource เพ่ือระบุถึงเคอร์เนลไฟล์ที่ต้องการประมวลผล จากนั้นคอมไพล์เคอร์เนลไฟล์ด้วยค าสั่ง clBuildProgram และระบุเคอร์เนลฟังก์ชันที่ต้องกาประมวลผลในเคอร์เนลไฟล์ ด้ วยค าสั่ ง clCreateKernel จากนั้ นสร้ า งคิ ว (queue) โดย ใช้ ค าสั่ ง clCreateCommandQueue ที่รับคอนเทค (Context) และอุปกรณ์เป็นพารามิเตอร์ ซึ่งใช้เป็นตัวเชื่อมระหว่างเคอร์เนลและอุปกรณ์ เพ่ือใช้ในการจ่ายและจัดล าดับงาน โดยที่การจัดล าดับของคิวจะใช้ค าสั่ง clEnqueueTask ซึ่งต้องระบุคิว เคอร์เนลและประเภทอุปกรณ์เป็นพารามิเตอร์เพ่ือให้ทราบว่าคิวไหนที่จะท าการจัดล าดับ โปรแกรมเคอร์เนลที่จะท าการประมวลผลและใช้อุปกรณ์ไหนเป็นตัวประมวลผล จากนั้นท าการประมวลผลเคอร์เนลที่อยู่ในคิวโดยใช้ค าสั่ง clEnqueueTask หรือ clEnqueueNDRangeKernel ดังตัวอย่างโอเพนซีแอลภาพที่ 2-2

Page 24: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

20

ภาพที่ 2-2 ตัวอย่างโปรแกรมโอเพนซีแอล

2.2.2 การเร่งความเร็วโปรแกรมภาษาจาวาโดยใช้โอเพนซีแอล การเร่งความเร็วโปรแกรมภาษาจาวาโดยใช้โอเพนซีแอลท าได้สองวิธีคือ (1) ใช้ครื่องมือท าให้การประมวลผลเป็นเชิงขนานโดยอัตโนมัติอาพาราพี

(Aparapi)

Page 25: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

21

การประมวลผลเป็นเชิงขนานโดยอัตโนมัติอาพาราพีเป็นเอพีไอส าหรับการสั่งการประมวลผลบนหน่วยประมวลผลกราฟิกในภาษาจาวาซึ่งพัฒนาโดยกูเกิ้ล (Google) โดยใช้มาตรฐานของโอเพนซีเอล

(2) ใช้เครื่องมือประกอบภาษาจาวาเข้ากับโอเพนซีเอล (Java-OpenCL Binding)

เครื่องมือประกอบภาษาจาวาเข้ากับโอเพนซีเอลมีอยู่สองเครื่องมือคือ เจโอซีเอล (jocl) และ จาวาซีเอล (Google)

2.3 เทคนิคการจ่ายงานประมวลผล

2.3.1 การจ่ายงานประมวลผลบนระบบประมวลผลแบบกระจาย

หลงกับหลิน และคณะ (Long et al., 2011) ได้เสนอวิธีการค านวณการประมวลผลเชิงเอเจ้นต์ด้วยวิธีการแบบกระจาย (Distributed System) บนแพลตฟอร์มเจด (JADE) เพ่ือกระจายความสมดุลของเอเจ้นต์ โดยในแต่ละการด าเนินงานการจ าลองของเอเจ้นต์จะใช้วิธีสื่อสารด้วยข้อความ ซึ่งจะมีคอนเทนเนอร์หลักที่มีเอเจ้นต์บริการกลางที่คอยประสานการสื่อสารกับเอเจ้นต์ท้องถิ่น ซึ่งท าหน้าที่คอยประสานงานกับเอเจ้นต์สมาชิกในคอนเทนเนอร์ย่อย และในทุกคอนเทนเนอร์จะมีเอเจ้นต์จัดการอพยพ ซึ่งจะท าหน้าที่ตรวจสอบจ านวนของเอเจ้นต์เพ่ือคอยคงสมดุล โดยการการอพยพเอเจ้นต์ไปยังคอนเทนเนอร์อ่ืนๆ อีกทั้งยังท าหน้าที่ในการจัดล าดับงานอีกด้วย ซึ่งผลลัพธ์ที่ได้จะมีประสิทธิภาพมากขึ้นก็ต่อเมื่อจ านวนเอเจ้นต์เพ่ิมมากข้ึน

Page 26: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

22

ภาพที่ 2-3 ภาพรวมของการประมวลผลแบบกระจาย 1 (Long et al., 2011)

ไดกับหลิน และคณะ (Dai & Lin, 2013)ได้น าเสนอขั้นตอนวิธีในการจัดล าดับงานเพ่ือแอพพลิเคชั่นในการประมวลผลแบบหลายเอเจ้นต์ในรูปแบบการค านวณแบบกระจาย โดยออกแบบอัลกอริทึมเพ่ือควบคุมเอเจ้นต์กลางบนโฮสหลักที่ท าหน้าที่กระจายงานหลีกเลี่ยงการค านวณเกินพิกัด และเอเจ้นต์กระจายภาระ ซึ่งจะท าหน้าที่ตรวจสอบภาระงานในแต่ละโฮส โดยได้ท าการทดลองบนแพลตฟอร์มเจด ซึ่งผลลัพธ์ที่ได้จะมีประสิทธิภาพมากขึ้นก็ต่อเมื่อจ านวนเอเจ้นต์เพ่ิมมากขึ้น

ภาพที่ 2-4 ภาพรวมของการประมวลผลแบบกระจาย 1 (Dai & Lin, 2013)

Page 27: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

23

2.3.2 การจ่ายงานประมวลผลเคอร์เนลบนแพลทฟอร์มร่วมหลายประเภท เหวิน และคณะ (Wen et al., 2014) ได้น าเสนอการเลือกส่งเคอร์เนลไปประมวลผลที่

อุปกรณ์ หากการเลือกอุปกรณ์ไม่สัมพันธ์กับคุณลักษณะการประมวลผลของเคอร์เนล โปรแกรมที่เร่งความเร็วด้วยโอเพนซีแอลอาจจะไม่เร็วขึ้นได้ เหวิน และคณะจึงเสนอวิธีการแจกงานส าหรับโอเพนซีแอลบนแพลทฟอร์มร่วมหลายประเภทโดยใช้วิธีการเก็บคุณลักษณะเฉพาะของเคอร์เนลเพ่ือน ามาคัดแยกอัตราเร่งเชิงพยากรณ์เพ่ือแจกงานให้เหมาะสมกับอุปกรณ์ โดยที่ตัวพยากรณ์จะท าการเข้ากระบวนการฝึกการเรียนรู้ของเครื่องจักรก่อน เพ่ือให้จ าแนกประเภทของความเร็วได้อย่างถูกต้อง

(1) การเก็บคุณลักษณะเฉพาะของเคอร์เนลเพ่ือน ามาคัดแยกอัตราเร่งเชิงพยากรณ ์การเก็บคุณลักษณะเฉพาะของเคอร์เนลจะเก็บจากคุณลักษณะสองคุณลักษณะคือ

คุณลักษณะคงที่ (Static features) และคุณสมบัติในขณะท างาน (Runtime features) เพ่ือน าไปพยากรณ์ดังภาพที่ 2-5 และ 2-6

ภาพที่ 2-5 การจ าแนกคุณลักษณะ (Wen et al., 2014)

ภาพที่ 2-6 คุณลักษณะที่ใช้จ าแนก (Wen et al., 2014)

(2) การคัดแยกอัตราเร่งด้วยเทคนิคการเรียนรู้แบบเครื่องจักร ก่อนการคัดแยกอัตราเร่ง เหวิน และคณะได้สร้างการฝึกการเรียนรู้แบบเครื่องจักร

ให้กับตัวพยากรณ์อัตราเร่งดังภาพที่ 2-7 โดยใช้วิธีการเรียนรู้แบบเอสวีเอ็มเพ่ือให้ได้ตัวพยากรณ์ที่แม่นย าเพ่ือใช้ในการแจกงานได้อย่างเหมาะสมดังภาพที่ 2-8

Page 28: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

24

ภาพที่ 2-7 การเรยีนรู้เครื่องจักรของตวัพยากรณ์ (Wen et al., 2014)

ภาพที่ 2-8 การพยากรณ์รูปแบบของความเร็ว (Wen et al., 2014)

(3) การจ่ายงานประมวลผล ตัวจ่ายงานจะท าการจ่ายงานไปยังอุปกรณ์ (หน่วยประมวลผลหลัก, หน่วย

ประมวลผลกราฟิก) โดยจะข้ึนอยู่กับประเภทของความเร็วที่ได้พยากรณ์ไปเบื้องต้น โดยงานประเภทความเร็วต่ าจะถูกส่งไปให้หน่วยประมวลผลหลักประมวลผล ส่วนงานประเภทความเร็วสูงจะถูกส่งไปให้หน่วยประมวลผลกราฟิกประมวลผล และท าการจัดล าดับการเข้าคิวของงานในแต่ละอุปกรณ์โดยขึ้นอยู่กับขนาดของอินพุตดังภาพที่ 2-9

ภาพที่ 2-9 การจ่ายงานและการจัดล าดับ (Wen et al., 2014)

Page 29: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

25

(4) ผลการทดลองและข้อจ ากัด เหวิน และคณะได้ใช้โปรโตคอลเอสทีพีและเอเอ็นเอ็นทีในการเปรียบเทียบระบบ

แบบมาก่อนได้ก่อนบนหน่วยประมวลผลกราฟิกเอเอ็มดีและเอ็นวิเดีย อีกทั้งยังได้เปรียบเทียบกับระบบสเตทออฟดิอาร์ท (State-of-the-art) คือ ฟลูอิทซีเอล (FluidCL) ซึ่งผลลัพธ์พบว่าอัตราการผลิตผลลัพธ์เร็วขึ้นร้อยละ 25 และเวลาครบวงงานเร็วขึ้นถึงร้อยละ 65

ข้อจ ากัดในการเร่งสมรรถนะของงานวิจัยนี้คือตัวพยากรณ์ ถึงแม้ จะพยากรณ์ที่สมบูรณ์แบบแล้วก็ตาม (เป็นไปไม่ได้จริง) ก็ยังไม่สามารถเร่งสมรรถนะได้สูงมากเมื่อเทียบกับการจ่ายงานที่ถูกต้องสมบูรณ์โดยปราศจากตัวพยากรณ์ เพราะมีโอเวอร์เฮด (Overhead) ในการแยกคุณลักษณะและการท าการพยากรณ์

2.4 การจัดจ าแนกด้วยเทคนิคการเรียนรู้แบบเครื่องจักร

2.4.1 เทคนิคการจ าแนกด้วยวิธีเอสวีเอ็ม (1) เทคนิคเอสวีเอ็ม (Support Vector Machines หรือ Support Vector Networks)

(Corinna Cortes, 1995) คือวิธีการเรียนรู้การจ าแนกประเภทงานออกเป็นสองกลุ่มหรือหลายกลุ่มโดยการหาเส้นจ าแนกที่ดีท่ีสุดในการจ าแนกกลุ่มสองกลุ่มออกจากกัน ซึ่งท าได้จากการน ากลุ่มทดลอง (Training set) มาระบุอยู่ในกราฟ จากนั้นท าการหาเส้นจ าแนกที่ดีที่สุดในการจ าแนกกลุ่มสองกลุ่มออกจากกัน โดยเลือกจากระยะห่างมุมฉากเฉลี่ยที่มากท่ีสุดระหว่างตัวทดลองที่อยู่ใกล้เส้นจ าแนกมากที่สุดในแต่ละกลุ่มกับเส้นจ าแนกนั้น เมื่อมีตัวทดสอบ (Test set) เข้ามาในกราฟก็จะสามารถจ าแนกประเภทของตัวทดลองนั้นๆได้ จากนั้นท าการหาเส้นจ าแนกที่ดีท่ีสุดต่อไป

Page 30: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

26

ภาพที่ 2-10 การจ าแนกด้วยวิธีเอสวีเอ็ม (Corinna Cortes, 1995)

(2) เหว่ยและคณะ (Chih-Wei & Chih-Jen, 2002) ได้ท าการเปรียบเทียบเทคนิคของเอสวีเอ็มสามวิธี ได้แก่ เทคนิค one-against-all, one-against-one และ directed acyclic graph SVM (DAGSVM) และสรุปถึงความเหมาะสมในการใช้ของแต่ละรูปแบบ

2.4.2 การใช้เอสวีเอ็มจากไลบรารีเร่งความเร็วการวิเคราะห์ข้อมลูของอินเทล (INTEL)

เทคนิคการจ าแนกด้วยวิธีเอสวีเอ็มได้ถูกอินเทล น ามาพัฒนาเป็นส่วนหนึ่งของไลบรารีเร่งความเร็วที่ชื่อว่าอินเทลดีเอเอเอล (INTEL® DATA ANALYTICS ACCELERATION LIBRARY) ซึ่งช่วยให้นักพัฒนาสามารถใช้วิธีการจ าแนกด้วยวิธีเอสวีเอ็มได้โดยไม่ต้องสร้างอัลกอริทึมขึ้นมาใหม่

2.5 การเร่งความเร็วของแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวา

(1) โลเปสและคณะ (Lopez-Novoa et al., 2015) ได้ท าการส ารวจศาสตร์ในการค านวณของหน่วยประมวณผลร่วมซึ่งจะเน้นไปที่การเร่ง GPUs และ Intel’s Xeon Phi อีกทั้งยังท าการส ารวจระบบการประมวณผลร่วมและเฟรมเวิร์กที่ช่วยในการพัฒนา โดยประเด็นส าคัญมุ่งเน้นไปที่ performance models, อุปกรณ์ รวมไปถึงการจ าลอง ที่ได้น าเสนอในแพลทฟอร์มข้างต้น

(2) เอบี้และคณะ (Aaby, Perumalla, & Seal, 2010b) ได้น าเสนอวิธีในการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาด้วยวิธีการคลัสเตอร์ (Cluster) จีพียู และเทคนิคการซ่อนเลเทนซี่ (Latency) ซึ่งสามารถเร่งความเร็วโมเดล Conway’s Game of Life ได้เพ่ิมข้ึน 100 เท่า

Page 31: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

27

(3) โฮและคณะ (N.M. Ho, Thoai, & Wong) ได้น าเสนอวิธีในการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาบนเฟรมเวิร์กเมสันโดยใช้เจคูด้า (JCuda) และออกแบบการแบ่งกริด (Grid) ออกเป็นส่วนย่อยๆ เพ่ือให้จีพียูค านวณได้ในเวลาเดียวกัน ซึ่งสามารถเร่งความเร็วเพ่ิมข้ึน 468 เท่า

(4) ลีและคณะ (Xiaosong Li, Cai, & Turner) ได้น าเสนอวิธีการได้น าเสนอวิธีในการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาบนเฟรมเวิร์กเมสันและ เฟลม (Flame) โดยใช้โดยใช้เจคูด้า และออกแบบวิธีสร้าง AgentPool ซึ่งท าหน้าที่จัดการเอเจ้นต์ในการสร้างและลบเอเจ้นต์และออกแบบปฏิสัมพันธ์ของเอเจ้นต์ภายใน AgentPool

2.6 การพัฒนาต่อยอดจากทฤษฎีและงานวิจัยที่เกี่ยวข้อง

ผลงานวิทยานิพนธ์นี้น าเทคนิคการจ่ายเคอร์เนลไปประมวลผล โดยใช้งานวิจัยของเหวินและคณะ (Wen et al., 2014) เป็นต้นแบบ โดยงานวิจัยดังกล่าวใช้การปรับปรุงภายในคอมไพเลอร์และการแทรกค าสั่งด้วยคอมไพเลอร์ เพื่อจ่ายเคอร์เนลหลายเคอร์เนลจากหลายโปรแกรมที่ต่างกัน โดยใช้เทคนิคการเรียนรู้ของเครื่องจักรสองเทคนิคมาจ าแนกเคอร์เนล งานวิจัยตามผลงานวิทยานิพนธ์นี้ เลือกน าเทคนิคการจ าแนกด้วยวิธีการเรียนรู้แบบเครื่องจักรตามเทคนิคเอสวีเอ็มแบบหลายประเภท ซึ่งยืนยันจากงานวิจัยของเหวินและคณะว่าให้ความแม่นย าในการจ าแนกสูงและสามารถท าให้ อัตราการผลิตผลลัพธ์เร็วขึ้นเมื่อจ่ายเคอร์เนลหลายตัวจากหลายโปรแกรมพร้อมกัน มาพัฒนาเป็นการจ่ายงานประมวลผลเคอร์เนลหลายตัวจากโปรแกรมแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาโปรแกรมเดียว โดยต่อยอดวิธีการเรียกตัวจ่ายงานผ่านไลบรารี แทนที่จะเป็นการแทรกค าสั่งในคอมไพเลอร์

Page 32: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

28

บทที่ 3 วิธีการวิจัย

ผลงานวิทยานิพนธ์ฉบับนี้ น าแนวคิดทางทฤษฎีและงานวิจัยที่เกี่ยวข้องที่น าเสนอในบทที่แล้ว มาใช้เป็นพ้ืนฐานในการออกแบบวิธีการวิจัย เพ่ือพัฒนาตัวจ่ายงานประมวลผล ที่รับเคอร์เนลที่เขียนโดยใช้เครื่องมือประกอบภาษาจาวากับโอเพนซีแอล มาจ าแนกกลุ่มตามอัตราเร็วขึ้นเชิงพยากรณ์ และส่งไปประมวลผลยังอุปกรณ์ที่เหมาะสม โดยมีเป้าหมายให้แบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาสามารถเร่งความเร็วบนแพลตฟอร์มร่วมหลายประเภท แล้วมีอัตราเร็วขึ้นที่เทียบเท่าหรือสูงกว่าการใช้โอเพนซีแอลโดยไม่ปรับปรุงการจ่ายงาน เนื้อหาในบทนี้กล่าวถึงภาพรวมในการท าวิจัย การออกแบบขั้นตอนในการวิจัย แนวคิดในการพัฒนาส่วนประกอบของระบบที่คาดว่าจะพัฒนาตามผลงานวิทยานิพนธ์นี้

3.1 ระเบียบวิธีในการท าวิจัย

ผลงานวิทยานิพนธ์ฉบับนี้ เสนอแนวทางการวิจัยเพ่ือศึกษาแนวทางการเร่งความเร็วของแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาบนแพลตฟอร์มร่วมหลายประเภท ด้วยการจ าแนกงานประมวลผลเคอร์เนลของโอเพนซีแอลเพ่ือจ่ายงานไปยังอุปกรณ์ที่เหมาะสม เพ่ือให้การวิจัยบรรลุวัตถุประสงค์ตามที่ตั้งไว้ การวิจัยมีระเบียบวิธีการด าเนินการแบ่งเป็นเจ็ดขั้นตอน ได้แก่ การก าหนดปัญหา การตั้งสมมติฐาน การรวมรวมข้อมูลและทบทวนวรรณกรรม การออกแบบและพัฒนาระบบ การท าการทดลองเพ่ือตรวจสอบความถูกต้องของระบบ การทวนสอบระบบ และการประเมินผลส าเร็จของงานเพ่ือรับรองสมมติฐาน ดังมีรายละเอียดต่อไปนี้

3.1.1 การก าหนดปัญหา

แบบจ าลองแบบหลายเอเจ้นต์ส่วนใหญ่พัฒนาโดยใช้เครื่องมือสร้างแบบจ าลองที่ใช้ภาษาจาวาเพ่ือให้สามารถน าไปใช้ได้ในทุกระบบ ซึ่งเมื่อศึกษาการท างานของแบบจ าลองดังกล่าว พบว่าแบบจ าลองมีการประมวลผลแบบหลายเทรด แต่การกระจายเทรดนั้นขึ้นอยู่กับการจัดการของเวอร์ชวลแมชชีน (Virtual Machine) และระบบปฏิบัติการ ผู้สร้างแบบจ าลองไม่สามารถจัดการเทรดได้ ท าให้มีงานวิจัยหลายงานน าเสนอแนวทางเร่งความเร็ว ด้วยวิธีการตัดส่วนของค าสั่งในโปรแกรมแบบจ าลองที่มีการท างานเชิงขนานมาสร้างเป็นเคอร์เนลของโอเพนซีแอล และส่งไปประมวลผลบนจีพียู อย่างไรก็ตามมีงานวิจัยของเหวินและคณะ (Wen et al., 2014) ชี้ให้เห็นว่าเมื่อมีเคอร์เนลหลายเคอร์เนลจากหลายโปรแกรมที่ต่างกัน ถูกส่งไปท างานที่ซีพียูและจีพียูโดยไม่ค านึงถึงเวลาในการ

Page 33: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

29

ประมวลผล อาจส่งผลให้อัตราการผลิตผลลัพธ์ของระบบโดยรวมไม่ได้สูงขึ้น เหวินและคณะจึงน าเสนอเทคนิคการจ่ายงานโดยใช้เทคนิคการเรียนรู้ของเครื่องจักรมาจ าแนกเคอร์เนล และส่งเคอร์เนลไปประมวลผลยังอุปกรณ์ท่ีเหมาะสม ซึ่งผลลัพธ์พบว่าอัตราการผลิตผลลัพธ์เร็วขึ้นร้อยละ 25 และเวลาครบวงงานเร็วขึ้นถึงร้อยละ 65 ดังรายละเอียดที่น าเสนอในบทที่ 2 ผลงานวิทยานิพนธ์ฉบับนี้จึงก าหนดค าถามในการวิจัยต่อเนื่องจากประเด็นดังกล่าว ดังนี้

“หากน าเทคนิคการจ่ายงานประมวลผลเคอร์เนลของโอเพนซีแอลจากการจ าแนกด้วยวิธีการเรียนรู้แบบเครื่องจักรตามเทคนิคเอสวีเอ็ม เพ่ือจ าแนกงานประมวลผลเคอร์เนลส าหรับอุปกรณ์มากกว่าสองอุปกรณ์จะส่งผลต่อความเร็วในการประมวลผลอย่างไร และสามารถน าแนวทางนี้ไปเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาได้อย่างไร”

3.1.2 การตั้งสมมติฐาน

ผลงานวิทยานิพนธ์ในหัวข้อ “การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพ่ือศึกษาแนวทางการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ ที่พัฒนาด้วยภาษาจาวา” จึงมีเป้าหมายตอบปัญหาที่ระบุในหัวข้อ 3.1.1 โดยตั้งสมมติฐานดังต่อไปนี้

1. การการจ่ายงานประมวลผลเคอร์เนลหลายตัวจากโปรแกรมแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาโปรแกรมเดียว โดยใช้การจ าแนกด้วยวิธีการเรียนรู้แบบเครื่องจักรตามเทคนิคเอสวีเอ็มแบบหลายประเภท จะมีความแม่นย าในการจ่ายงานการประมวลผลเคอร์เนลไปยังอุปกรณ์ท่ีเหมาะสม และจะส่งผลให้โปรแกรมแบบจ าลองมีอัตราเร็วขึ้นที่สูงกว่าการจ่ายงานแบบมาก่อนได้ก่อน

2. การเร่งความเร็วของโปรแกรมแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาด้วยการใช้เจโอซีแอล จะท าให้โปรแกรมแบบจ าลองประมวลผลเร็วกว่าการประมวลผลแบบหลายคอร์

3.1.3 การรวบรวมข้อมูลและทบทวนวรรณกรรม

การรวบรวมข้อมูลและทบทวนวรรณกรรม มีเป้าหมายหลักเพ่ือหาองค์ความรู้และเทคนิคที่สามารถน ามาใช้เร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวา บนแพลตฟอร์มร่วมหลายประเภท ซึ่งมีการด าเนินการเป็นล าดับดังนี้

Page 34: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

30 1. ศึกษาทฤษฎีและงานวิจัยที่เกี่ยวกับการจ าลองแบบหลายเอเจ้นต์ที่สร้างจาก

เครื่องมือสร้างแบบจ าลองที่เป็นที่นิยมใช้ในปัจจุบัน ได้แก่ รีพาสต์ เน็ตโลโก้ และ จีโอเมสัน มีการติดตั้งซอฟต์แวร์เพ่ือศึกษาวิธีการสร้างโมเดลจากตัวอย่างแบบจ าลองที่ทุกระบบมีให้ และเทียบกับผลลัพธ์ที่น าเสนอในบทความ (Railsback et al., 2006) ส าหรับจีโอเมสันศึกษาจากแบบจ าลองอุทกภัยขนาดใหญ่ทียู-เอฟเอส (Vijitpornkul & Marurngsith, 2015) ขั้นตอนนี้รวมถึงการศึกษาภาษาและศัพท์เฉพาะที่ใช้ในการสร้างแบบจ าลอง เช่น ภาษาโลโก้ท่ีใช้ในโปรแกรมเน็ตโลโก้ และศัพท์เฉพาะเกี่ยวกับการสร้างแบบจ าลองบนชั้นข้อมูลสารสนเทศภูมิศาสตร์ ที่ใช้ในจีโอเมสัน

2. ศึกษาทฤษฎีและเทคนิคการเร่งความเร็วของโปรแกรมภาษาจาวาด้วยเครื่องมือประกอบภาษาจาวาเข้ากับโอเพนซีเอล เจโอซีแอล ท าการทดลองประมวลผลโปรแกรมตัวอย่าง

3. ศึกษาทฤษฎีเกี่ยวกับการใช้มาตรฐานโอเพนซีแอลเพ่ือย้ายงานประมวลข้อมูลเชิงขนาน ไปประมวลผลบนจีพียู เขียนโปรแกรมเพ่ือทดสอบการท างาน และศึกษาการจ่ายงาน

4. รวบรวมข้อมูล ทฤษฎี และงานวิจัยที่เกี่ยวข้องกับเร่งความเร็วของโปรแกรมแบบจ าลองแบบหลายเอเจ้นต์ การเร่งความเร็วของโปรแกรมที่เขียนด้วยมาตรฐานโอเพนซีแอลด้วยการจ่ายงาน เทคนิควิธีการจ่ายงาน ศึกษาและเรียบเรียงวรรณกรรม

5. ศึกษาทฤษฎีเกี่ยวกับการเรียนรู้ของเครื่องจักรด้วยเทคนิคเอสวีเอ็ม และวิธีการพัฒนาโดยโปรแกรมที่มีการเรียนรู้ของเครื่องจักรด้วยภาษาซีพลัสพลัสโดยใช้ไลบรารีอินเทลดีเอเอแอล (DAAL ไลบรารีเพื่อเร่งความเร็วการวิเคราะห์ข้อมูลของอินเทล)

3.1.4 การออกแบบและพัฒนาระบบ

ออกสถาปัตยกรรมการประมวลผลแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาโดยใช้โอเพนซีแอล ดังภาพที่ 3-1

ภาพที่ 3-1 สถาปตัยกรรมการผูกโอเพนซีเอลด้วยเจโอซีแอล

Page 35: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

31

กล่าวคือ เมื่อเรียกจาวาโปรแกรมโดยใช้เจโอซีแอลเป็นตัวผูกเจโอซีแอล จะท าให้เกิดโฮสแอปพลิเคชั่น (Host Application) และฟังก์ชันเคอร์เนล (Kernel Function) ซึ่งโฮสแอปพลิเคชั่นจะท าการตั้งค่าสภาพแวดล้อมในการด าเนินงานสี่ขั้นตอนหลักๆคือ

(1) รับจ านวนแพลทฟอร์มทั้งหมดท่ีอยู่ในเครื่อง (2) รับจ านวนอุปกรณ์ทั้งหมดท่ีอยู่ในแพลทฟอร์ม (3) สร้างพ้ืนที่ท างานในแต่ละแพลทฟอร์ม (Context) (4) สร้างคิวงานส าหรับประมวลผลในแต่ละอุปกรณ์ (Command queue)

โฮสแอปพลิเคชั่นยังท าหน้าที่สร้างโปรแกรมอ็อปเจ็กต์ อ่านเคอร์เนลไฟล์ เรียกคอลไพเลอร์โอเพนซีแอลเพ่ือสร้างไบนารี่ส าหรับเคอร์เนลฟังก์ชัน จองพ้ืนที่หน่วยความจ าในแรมและแลกเปลี่ยนกับหน่วยความจ าของอุปกรณ์ ดังภาพที ่3-2

3.2 สถาปัตยกรรมของระบบ

3.2.1 ภาพรวมแสดงขั้นตอนการท างานของระบบที่น าเสนอ

ภาพที่ 3-3 ภาพรวมแสดงส่วนงานของระบบที่น าเสนอ (ส่วนงานที่จะถูกพัฒนาขึ้นในงานวิจัยน้ีไฮไลท์ด้วยสีฟ้า)

MASON Multiagent

Simulation Model

Accelerating Code

using JOCL Binding

Static Kernel Characteristic

Collector (SKCC)

OpenCL Kernel

Scheduler

(Implemented in

MASON Scheduler)

Multiclass SVM

Kernel Classifier

MASON Multiagent

Simulation Model

(Java + OpenCL)

CPU

GPU/Accelerator Kernels

Kernels

Before Execution

GPU/Accelerator Kernels

ภาพที่ 3-2 สถาปตัยกรรมการแลกเปลี่ยนข้อมูลระหว่างหน่วยความจ า

Page 36: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

32

ระบบจ่ายงานที่น าเสนอนี้ประกอบด้วยส่วนงานสามส่วน ดังที่แสดงในภาพที่ 3-3 ได้แก่ ส่วนการเก็บคุณลักษณะของเคอร์เนลก่อนประมวลผลหรือเอสเคซีซี (SKCC ย่อมาจาก Static Kernel Characteristic Collector), ส่วนการจ่ายเคอร์เนลลงคิวงาน (OpenCL Kernel Scheduler) และ ส่วนการจ าแนกเคอร์เนลด้วยวิธีเอสวีเอ็ม (SVM Kernel Classifier) ส่วนงานทั้งสามส่วนจะถูกพัฒนาด้วยภาษาซีพลัสพลัส โดยส่วนเอสเคซีซี จะพัฒนาเป็นโปรแกรมพร้อมประมวลผล และส่วนงานสองส่วนหลังจะพัฒนาเป็นไลบรารี ที่โปรแกรมภาษาจาวาเรียกใช้ได้ผ่านการเชื่อมต่อด้วยเจเอ็นไอ รายละเอียดการออกแบบและแนวทางพัฒนาส่วนงานทั้งสามส่วนนี้อธิบายในหัวข้อ 3.2 – 3.5

การจ่ายงานการประมวลผลเคอร์เนลของโอเพนซีแอลเพ่ือเร่งความเร็วของแบบจ าลองแบบหลายเอเจ้นต์บนแพลตฟอร์มร่วมหลายประเภท จะท าโดยการน าแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยจีโอเมสันมาเร่งความเร็วโดยการใช้เจโอซีแอล เพ่ือประกอบภาษาจาวาเข้ากับโอเพนซีเอล ท าให้สามารถประมวลผลด้วยหน่วยประมวลผลกราฟิกได้ โดยก่อนที่จะท าการเลือกหน่วยประมวลที่จะถูกประมวลผล ต้องท าการเก็บคุณลักษณะของเคอร์เนลเพ่ือใช้ในการจ าแนกประเภท ซึ่งสามารถท าให้ตัวจ าแนกเคอร์เนลจ าแนกได้ว่าคุณลักษณะใดที่ควรให้หน่วยประมวลผลกราฟิกเป็นผู้ประมวลผล โดยที่ตัวจ าแนกเคอร์เนลจะสามารถเลือกได้โดยการจ าแนกประเภทของอัตราเร็ว ของอุปกรณ ์ซึ่งการจ าแนกประเภทของความเร็วจะท าได้จากวิธีการเรียนรู้แบบเอสวีเอ็ม

ภาพที่ 3-4 สถาปตัยกรรมการเกบ็คุณลักษณะของเคอร์เนล

MASON Multiagent

Simulation Model Accelerating Code using JOCL Binding

Static Kernel Characteristic Collector (SKCC)

ไฟล์ต้นฉบับของแบบจ าลอง (.Java)

ปรับปรุงส่วนงานค านวณข้อมูลเชิงขนาน ให้เป็นเคอร์เนลของโอเพนซีเอล

เก็บคุณลักษณะของเคอร์เนล ก่อนประมวลผลลงแฟ้มข้อความ

.java

Kern

.java .cl

ocl Kernel A

Kernel B Kernel C

Info of A Info of B Info of C

StaicInfo.txt

Page 37: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

33

ภาพที่ 3-5 สถาปตัยกรรมการจ าแนกเคอร์เนลด้วยวิธีเอสวีเอ็มแบบหลายประเภท

ภาพที่ 3-6 ภาพรวมแสดงขั้นตอนการจ่ายงานของระบบที่เสนอ

3.2.2 สถาปัตยกรรมของระบบ (1) ออกแบบตัวเก็บคุณลักษณะของเคอร์เนลก่อนประมวลผล (Static Kernel

Characteristics Collector)

(2) การออกแบบคุณสมบัติของเคอร์เนลในระหว่างคอมไพล์

(3) การพัฒนาโมดูลตัวจ าแนกเคอร์เนลด้วยวิธีเอสวีเอ็ม

(4) ตัวจ่ายเคอร์เนล (Kernel Scheduler)

OpenCL Kernel Scheduler

SVM Kernel Classifier

เมื่อประมวลผลแบบจ าลองใน Host Program จะมีค าสั่งเรียกตัวจา่ยงานที่สร้างขึ้น

ตัวจ่ายงานเก็บคุณลักษณะตอนประมวลผลของเคอร์เนลและเรียกตัว

จ าแนกเคอร์เนล

ตัวจ าแนกเคอร์เนลใช้วธิีเอสวีเอ็มเพื่อจัดเคอร์เนลตามอัตราเร็วขึ้นเป็นหลายกลุ่ม

.java

ocl

Kern .cl

Kernel A

Kernel B Kernel C

StaicInfo.txt

Info of A Info of B Info of C

DynamicInfo.txt

OpenCL Kernel Scheduler

ตัวจ่ายงานส่งงานลงคิวค าสั่ง (Command Queue) ตามล าดบัโดยส่งงานกลุ่มเร็วขึ้นสูงไปยังจีพียู และต่ าไปยงัซีพีย ู

OpenCL Command Queue

Device 1 Device 0

A

B

C

Device 0

Device 1 B A

C

Device 2 D

Device 2

D

Device 1 Device 0

A

B

C

Device 2

D

Page 38: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

34

ภาพที่ 3-8 สถาปตัยกรรมระบบระหวา่งประมวลผล

3.3 การจ าแนกโอเพนซีแอลเคอร์เนล

การจ าแนกโอเพนซีเอลเคอร์เนลจะถูกตัดสินโดยการเก็บคุณลักษณะของเคอร์เนล โดยที่จะท าการเก็บคุณลักษณะจากเคอร์เนลไฟล์ ซึ่งจะท าการเก็บคุณลักษณะก่อนท าการประมวลผลเพ่ือหาอุปกรณ์ที่เหมาะสมส าหรับเคอร์เนลนั้นๆ โดยค านึงถึงปัจจัยที่มีผลกระทบต่อการเร่งความเร็วห้าปัจจัยดังนี้

(1) จ านวนงานต่อเคอร์เนลหนึ่งตัว (Load balance) (2) ขนาดพ้ืนที่ในการเข้าถึง (Coalescing) (3) การสื่อสารระหว่างโฮสและเคอร์เนล (Communication) (4) การประสานจังหวะระหว่างเคอร์เนล (Synchronization) (5) ภาระการค านวณของเคอร์เนล (Computation Load)

Static Kernel Characteristic Collector (Executable)

ข้อมูลเข้า: ไฟล์ต้นฉบับของแบบจ าลองที่แทรกค าสั่งโอเพนซีแอลแล้ว

.java

ocl

Kern .cl

Kernel A

Kernel B Kernel C

Kernel

Info of A Info of B Info of C

StaticInfo.txt

OS: Windows

Device

Device MASON

OS: Windows

Java Virtual Machine

JOCL

Binding

Java Native

Interface (JNI)

OpenCL Kernel Scheduler

SVM Kernel Classifier

Library

OpenCL

SDK

Intel

DAAL

ภาพที่ 3-7 สถาปตัยกรรมระบบก่อนการประมวลผล

Page 39: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

35

โดยที่ จ านวนงานต่อเคอร์เนลหนึ่งตัว คือจ านวนการเรียกใช้เคอร์เนลหนึ่งตัวจากโฮสโปรแกรม ขนาดพ้ืนที่ในการเข้าถึง คือขนาดของพ้ืนที่ในหน่วยความจ าที่เคอร์เนลจะต้องเข้าถึง การสื่อสารระหว่างโฮสและเคอร์เนล คือการสื่อสารต่างๆระหว่างโฮสกับเคอร์เนลเพ่ือแลกเปลี่ยนข้อมูลซึ่งกันและกัน การประสานจังหวะระหว่างเคอร์เนล คือ เวลาที่ใช้ในการรอข้อมูลเพ่ือใช้ในการประมวลผลระหว่างเคอร์เนล และภาระการค านวณของเคอร์เนล คือภาระของเคอร์เนลที่ใช้ในการค านวณ

ซึ่งได้เป็นคุณลักษณะที่ต้องการเก็บดังตารางที่ 3-1

โดยที่คุณลักษณะที่เหมือนกับงานของเหวินและคณะได้แก่ global size, local size, input buffer size, barriers, math functions, int and float scalar operation, int and float vector operation, atomic, control คุณลักษณะที่เก็บแตกต่างจากงานของเหวินและคณะตรงที่งานของเหวินและคณะไม่ได้เก็บ iteration, workgroup dimension, parameters และผลงานนี้ไม่ได้เก็บ load/store ซึ่งเป็นหนึ่งในปัจจัยที่ส าคัญหนึ่งที่มีผลกระทบต่อการเร่งความเร็ว เนื่องจากงานวิจัยนี้ไม่ได้พัฒนาคอมไพล์เลอร์ขึ้นมาเพ่ือเก็บคุณลักษณะ ซึ่งคุณลักษณะที่เก็บเหล่านี้ถูกจัดกลุ่มตามปัจจัยห้าปัจจัยดังตารางที่ 3-2

Load Balance iteration

Coalescing workgroup dimension, input buffer size Communication parameters

Synchronization barriers, global size, local size

Computation

Load

math function, int and float vector/scalar

operations,atomic, conntrol

ตารางที่ 3-2 กลุ่มของคุณลักษณะที่มผีลต่อปัจจัย

ตารางที่ 3-1 คุณลักษณะที่ใช้ในการวิเคราะห์เพื่อจ าแนกประเภทของเคอร์เนล

Page 40: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

36

โดยที่การเก็บ iteration คือจ านวนครั้งของการเรียกใช้เคอร์เนลจากโฮสโปรแกรม แสดงให้เห็นถึงจ านวนงานต่อเคอร์เนลหนึ่งตัว การเก็บ workgroup dimension คือจ านวนมิติที่ใช้ในการระบุเวิร์กไอเทมและ input buffer size คือขนาดของข้อมูลเข้าและออก ซึ่งส่งผลต่อขนาดพ้ืนที่ในการเข้าถึง การเก็บ parameters คือจ านวนพารามิเตอร์ที่ส่งจากโฮสไปสู่เคอร์เนลเพ่ือใช้ในการค านวณ ซึ่งส่งผลต่อการติดต่อสื่อสารระหว่างโฮสกับเคอร์เนล การเก็บ barriers คือจ านวนค าสั่งที่ใช้เพ่ือรอเคอร์เนลตัวอ่ืนๆ เพ่ือควบคุมจังหวะในการประมวลผล และ global size, local size คือขนาดที่ใช้ในการประมวลผลในแต่ละเวิร์กไอเทม ซึ่งอาจจะต้องมีการส่งข้อมูลระหว่างกันท าให้ มีผลต่อการประสานจังหวะระหว่างเคอร์เนล และการเก็บ math function, int and float vector/scalar operations, atomic, control คือจ าการการเก็บการด าเนินการค านวนทางคณิตศาสตร์ในเคอร์เนลฟังก์ชัน ซึ่งมีผลต่อภาระการค านวณของเคอร์เนล

ซึ่งใช้โปรแกรมจากตัวอย่างในการเก็บคุณลักษณะเพ่ือใช้ในการเรียนรู้เอสวีเอ็มแบบหลายประเภท ดังตารางที่ 3-3

3.3.1 การจ าแนกด้วยวิธีเอสวีเอ็มแบบหลายกลุ่ม เก็บคุณลักษณะในหัวข้อที่ 3.3 จากโปรแกรมยี่สิบเอ็ดโปรแกรมจากสองค่าย ได้แก่อินเทล

และเอ็นวิเดียดังตารางที่ 3-3 โดยที่ Input size คือขนาดอินพุตของโปรแกรมซึ่งมีหน่วยเป็นไบต์ #KN คือจ านวนเคอร์เนลในโปรแกรมและ Dim คือ workgroup dimension น ามาฝึกฝนหาอุปกรณ์ที่เหมาะสมในการประมวลผล โดยวัดจากเวลาในการประมวลผลของเคอร์เนลยี่สิบเอ็ดโปรแกรมในแต่ละอุปกรณ ์โดยที่น าสิบสามโปรแกรมไปฝึกฝนและแปดโปรแกรมไปทดสอบ (ตารางที่ 3-4) โดยใช้วิธีเอสวีเอ็มแบบหลายกลุ่ม จากไลบรารีอินเทลดีเอเอแอล เพ่ือพยากรณ์เคอร์เนลที่เหมาะสมของกับอุปกรณ์ของเคอร์เนลที่ใช้ท าการทดสอบ

Page 41: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

37

จากตารางที่ 3-3 โปรแกรมทดสอบ (Workload) ส่วนใหญ่มีขนาดข้อมูลในช่วงระหว่าง 8 ล้ า น เ ซ ลถึ ง 4 5 2 ล้ า น เ ซ ล แต่ ล ะ เ ซล มี ข น า ดข้ อมู ล เ ป็ น 1 ไบ ต์ ย ก เ ว้ น โ ป รแ กร ม HiddenMarkovModel ที่มีขนาดอินพุตเล็กสุดคือ 404 เซล ดังนั้นความต้องการในการใช้หน่วยความจ าเพื่อรองรับข้อมูลอินพุตจะอยู่ระหว่าง 404 ถึง 452 ล้านไบต์ โดยที่โปรแกรมทดสอบมีจ านวนเคอร์เนลฟังก์ชันที่ถูกเรียกใช้อยู่ระหว่าง 1 ถึง 6 ฟังก์ชัน ซึ่งส่วนใหญ่ลักษณะการเรียกใช้เคอร์เนลมักจะเรียกใช้แบบวนรอบ (loop) โดยที่การส่งข้อมูลของเคอร์เนลลงหน่วยเร่งการประมวลผลมักจะมีจ านวนมิติ 1 ถึง 2 มิติตามรูปแบบของข้อมูลเข้าและผลลัพธ์ที่ได้

ตารางที่ 3-3 โปรแกรมที่ใช้ในการเก็บคุณลักษณะ

Page 42: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

38

ซึ่งเมื่อพิจารณาถึงการท างานของโปรแกรมที่น ามาเก็บคุณลักษณะ สามารถจัดกลุ่มของโปรแกรมตามรูปแบบการค านวณของเคอร์เนลได้ดังนี้

3.3.2 การจ่ายเคอร์เนลลงคิวงานและนโยบายการจ่ายงาน ผู้วิจัยน าเคอร์เนลจากโปรแกรมจากตารางที่ 3-2 มาวัดผลและเปรียบเทียบด้วยโยบายการการจ่ายงานต่างๆ ได้แก่ นโยบายการจ่ายงานแบบแบบมาก่อนได้ก่อน กล่าวคือเมื่ออุปกรณ์ใดๆว่าง ให้จ่ายเคอร์เนลที่มาเข้าคิวงานก่อนให้อุปกรณ์ที่ว่างนั้นประมวลผลตามล าดับ นโยบายจ่ายการงานแบบไปให้อุปกรณ์ท่ีประมวลผลเร็วที่สุด กล่าวคือ อุปกรณ์ใดประมวลเคอร์เนลจากคิวงานล่าสุดได้เร็วที่สุดให้อุปกรณ์นั้นเป็นตัวประมวลผล นโยบายการจ่ายงานแบบที่ดีที่สุดกล่าวคือ วิธีที่ดีที่เร็วที่สุดในการจ่ายงานเคอร์เนลไปประมวลผลบนและนโยบายการจ่ายงานแบบที่น าเสนอ กล่าวคือ วิธีจ่ายงานเคอร์เนลโดยใช้วิธีจ าแนกด้วยเอสวีเอ็มแบบหลายกลุ่ม โดยที่น าสิบสามโปรแกรมจากหัวข้อที่ 3.3.1 เป็นตัวฝึกฝนและแปดโปรแกรมเป็นทดสอบเมื่อจ าแนกประเภทออกมาเป็นประเภทอุปกรณ์ที่เหมาะสมเพื่อส่งไปยังอุปกรณ์นั้นๆเพ่ือประมวลผล

Testing data Device 2

D

OpenCL Kernel Scheduler

OpenCL Command Queue

Device 0

Device 1

B A

C Training set SVM Multi-

class Classifier

ภาพที่ 3-9 ภาพรวมของนโยบายการจ่ายงานที่น าเสนอ

Matrix CalculationCovolutionSeparable, MatrixMul, MatVecmul, Reduction, Transpose, VectorAdd,GEMM

Audio & Image CalculationDCT8x8,GodRays , MedianFilter, ProGraphicsOpt, ToneMapping, ToneMappingMultiDevice

OthersBlackScholes, DotProduct, FDTD3d, HiddenMarkovModel, SimpleOptimization

ตารางที่ 3-4 กลุ่มของโปรแกรมตามรปูแบบการค านวณ

Page 43: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

39

3.4 การทดลองเพื่อวิเคราะห์ประสิทธิภาพของโมเดลเชิงเอเจ้นต์ที่เร่งความเร็วด้วยโอเพนซีเอล

โมเดลเชิงเอเจ้นต์ที่ใช้เป็นตัวอย่างในเอกสารสอนใช้ไลบราลีเมสัน ชื่อโมเดลการรวมกลุ่มของนักเรียนในสนาม (Student Schoolyard Cliques) ถูกน ามาเร่งความเร็วด้วยการใช้แทรกภาษาโอเพนซีแอลเวอร์ชัน 1.2 เข้าไปในต้นฉบับของโมเดลซึ่งพัฒนาด้วยภาษาจาวา โดยใช้เครื่องมือประกอบเจโอซีแอล โมเดลดังกล่าวถูกน ามาประมวลผลบนเครื่องส าหรับท าการทดลองเพ่ือวิเคราะห์ประสิทธิภาพของโมเดลเชิงเอเจ้นต์ที่เร่งความเร็วด้วยโอเพนซีเอล

(1) ท าการทดลองบนเครื่องที่มีระบบปฏิบัติการวินโดวส์สิบ โดยที่เครื่องที่ใช้ท าการทดลองนั้นซีพียูหนึ่งตัว และมีจีพียสูองตัว รายละเอียดดังตารางที่ 3-5 Detail OpenCL Platform Host Machine

Dev 0 Intel Core i7-4710HQ (2.50 GHz, 6 MB L3 Cache, up to 3.50 GHz), 8GB RAM

Accelerator Dev 1 Dev 2

NVIDIA GeForce GTX 850M (4GB GDDR3), 640 cores, 902MHz, Memory of 4096MB, OpenCL1.2 Intel(R) HD Graphics 4600 (No dedicated Memory, using max of 1.7 GB RAM), 100 Effective SPUs Count, 400MHz, OpenCL1.2

OS Windows 10 Pro ตารางที่ 3-5 รายละเอียดของเครื่องที่ใช้ทดสอบ

จีพียูในเครื่องทดสอบมีสองรุ่น ได้แก่ จีพียูรุ่นจีฟอร์ซจีทีเอ็กซ์ 850เอ็ม ของบริษัทเอ็นวีเดีอร์ (NVIDIA GeForce GTX 850M) และจีพียูที่ฝังอยู่ในหน่วยประมวลผลของอินเทล รุ่นเอ็ชดีกราฟิกส์ 4600 (Intel(R) HD Graphics 4600) จีพียูทั้งสองรุ่นมีศักยภาพการประมวลผลที่แตกต่างกันเป็นอย่างมาก โดยจีพียูจีฟอร์ซจีทีเอ็กซ์ 850เอ็ม เป็นหน่วยประมวลผลกราฟฟิกส์ส าหรับคอมพิวเตอร์พกพา ที่มีแกนประมวลผล 640 คอร์ ความเร็วสัญญาณนาฬิกาของแกนประมวลผลที่ 902 เมกะเฮิรตซ์ ซึ่งถือเป็นจีพียูที่มีก าลังประมวลผลปานกลาง จีพียูรุ่นนี้มีหน่วยความจ ารูปแบบดีดีอาร์สาม (DDR3) มากถึง 4 กิกะไบต์ และรองรับมาตรฐานโอเพนซีแอล เวอร์ชัน 1.2 จากคุณลักษณะการประมวลผลดังกล่าว คาดว่าจีพียจูีฟอร์ซจีทีเอ็กซ์ 850 เอ็ม จะมีก าลังการประมวลผลสูงที่สุดในกรณีที่เคอร์เนลมีข้อมูลเชิงขนานที่เป็นอิสระต่อกันเป็นจ านวนมาก

(2) จีพียูตัวที่สอง คือ จีพียูอินเทลรุ่นเอ็ชดีกราฟิกส์ 4600 เป็นหน่วยประมวลผลกราฟฟิกที่มีประสิทธิภาพการค านวณต่ ากว่าจีพียูตัวแรก และจัดเป็นจีพียูบนอุปกรณ์พกพาที่มีก าลัง

Page 44: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

40

ประมวลผลต่ า1 มีหน่วยประมวลผลแบบสตรีม (Stream Processing Unit หรือ SPU) สูงที่สุด 100

ตัว แต่ละตัวท างานที่ความเร็วสัญญาณนาฬิกาที่ 400 เมกะเฮิรตซ์ (ความเร็วเพียงร้อยละ 44.3 เมื่อเทียบกับจีพียูเอ็นวีเดอร์จีฟอร์ซจีทีเอ็กซ์ 850เอ็ม) จีพียูรุ่นเอ็ชดีกราฟิกส์ 4600 นี้ ไม่มีหน่วยความจ าเป็นของตัวเอง แต่จะใช้หน่วยความหลักหรือแรมของเครื่องในการพักข้อมูล จีพียูสามารถอ้างถึงพ้ืนที่ในแรมได้มากที่สุดที่ 1.7 กิกะไบต์ ซึ่งมีพ้ืนที่เพียงประมาณร้อยละ 42.5 ของจีพียูตัวแรก แต่สามารถรองรับมาตรฐานโอเพนซีแอลเวอร์ชัน 1.2 ได้เช่นกัน หน่วยวัดที่แสดงถึงประสิทธิภาพของโมเดลการรวมกลุ่มของนักเรียนในสนาม คือ ความเร็วในการประมวลผล โดยจับค่าความเร็วการประมวลผลของโมเดลในหน่วยมิลลิวินาที มีการจับความเร็วเมื่อประมวลผลโมเดลในสองลักษณะ คือ เมื่อประมวลผลโมเดลแบบหลายคอร์บนซีพียูโดยไม่ใช้โอเพนซีแอล และเมื่อประมวลผลโมเดลบนอุปกรณ์โอเพนซีแอลทั้งสามอุปกรณ์บนเครื่องทดลองทั้งบนซีพียู (Dev0), จีพียูเอ็นวีเดอร์จีฟอร์ซจีทีเอ็กซ์ 850เอ็ม (Dev1), และจีพียูอินเทลรุ่นเอ็ชดีกราฟิกส์ 4600 (Dev2)

(3) มีการสรุปผลลัพธ์ของเวลาการประมวลผลที่เก็บได้ในขั้นตอนที่ (2) โดยใช้อัตราการเร็วขึ้น (Speedup) ซึ่งเป็นสัดส่วนของเวลาในการประมวลผลบนซีพียูแบบมัลติคอร์ ต่อเวลาการประมวลผลบนจีพียูโดยใช้โอเพนซีแอล ค่าอัตราการเร็วขึ้นจะแสดงว่าการเร่งความเร็วโดยใช้โอเพนซีแอลนั้นเร็วกว่าการประมวลผลแบบมัลติคอร์อยู่ที่เท่า

(4) ผลลัพธ์ของอัตราการเร็วขึ้นน ามาแสดงผลในรูปแบบกราฟเส้น เพ่ือแสดงการเปลี่ยนแปลงของอัตราการเร็วขึ้นเมื่อเอเจ้นต์หลักในโมเดล (นักเรียน) มีจ านวนเพ่ิมข้ึน

1 ข้อมูลจาก http://graphics-cards.specout.com/l/2462/Intel-HD-Graphics-4600

Page 45: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

41

บทที่ 4 ผลการวิจัยและอภิปรายผล

ผลงานวิทยานิพนธ์ฉบับนี้ น าเสนอวิธีการวิจัยที่น าเสนอในบทที่แล้ว มาใช้เป็ นพ้ืนฐานในการวิจัย การศึกษา เพ่ือเรียนรู้พัฒนาตัวจ่ายงานประมวลผลที่รับเคอร์เนล ซ่ึงเขียนโดยใช้เครื่องมือประกอบภาษาจาวากับโอเพนซีแอล มาจ าแนกกลุ่มตามอัตราเร็วขึ้นเชิงพยากรณ์ และส่งไปประมวลผล ยังอุปกรณ์ที่เหมาะสม รวมถึงพ้ืนฐานในการสร้างแบบจ าลองแบบหลายเอเจ้นต์ เนื้อหาในบทนี้ กล่าวถึง ผลของการวิจัยของผลงานวิทยานิพนธ์ฉบับนี้ ซึ่งแบ่งการวิจัยเป็นสองส่วน ได้แก่

4.1 ประสิทธิภาพของตัวจ าแนกประเภทและการจ่ายงาน

เป้าหมายผลของการวิจัยที่สองคือประสิทธิภาพและความแม่นย าของตัวจ าแนกประเภทงานของเคอร์เนลแบบจ าลองแบบหลายเอเจ้นต์ โดยได้ท าการเก็บคุณสมบัติของโปรแกรมยี่สิบเอ็ดโปรแกรมและน าเข้าสู่กระบวนการฝึกฝนเรียนรู้การจ าแนก โดยที่แปดเคอร์เนลได้ถูกเก็บคุณลักษณะ เพ่ือใช้เป็นตัวทดสอบ ซึ่งได้ผลดัง ตารางที่ 4-1 โดยจะเห็นว่าโปรแกรม BitonicSort นั้นใช้เวลาในการประมวลผลนานที่สุดและสามารถเร่งความเร็วได้อย่างมากบนอุปกรณ์ที่1 (Dev1) นอกจากนี้ยังเห็นความแตกต่างของเวลาในการประมวลผลระหว่างอุปกรณ์ที่1 กับอุปกรณ์ท่ี2 อย่างชัดเจน

เมื่อน าเคอร์เนลที่ถูกทดสอบมาท าการจ าแนกโดยใช้เทคนิคต่างๆ ซึ่งแสดงให้เห็นถึงเทคนิคการจ าแนกประเภทงานทั้งหมดสี่เทคนิควิธี ได้แก่

(1) ทุกเคอร์เนลถูกก าหนดอุปกรณ์ไปยังอุปกรณ์ท่ีประมวลผลเร็วที่สุด (2) เรียงล าดับงานแบบมาก่อนได้ก่อน (3) เรียงล าดับงานแบบที่ดีที่สุดเท่าท่ีจะเป็นไปได ้(4) เรียงล าดับโดยใช้เทคนิคมาก่อนได้ผสมกับการจ าแนกประเภท (เทคนิคที่

น าเสนอ)

ผลลัพธ์ (ภาพที่ 4-1 – 4-4) แสดงให้เห็นถึงนโยบายการจ่ายงานในรูปแบบที่แตกต่างกัน โดยที่นโยบายแบบจ่ายงานไปให้อุปกรณ์ที่ประมวลผลเร็วที่สุด กล่าวคือ อุปกรณ์ใดประมวลเคอร์เนลจากคิวงานล่าสุดได้เร็วที่สุดให้อุปกรณ์นั้นเป็นตัวประมวลผล ซึ่งจากตารางที่ 4-1 จะเห็นว่าเคอร์เนล A ประมวลผลได้เร็วที่สุดที่อุปกรณ์ที่2 (Dev2) ส่วนเคอร์เนล B ประมวลผลได้เร็วที่สุดที่อุปกรณ์ที่0 (Dev0) ส่วนเคอร์เนลที่เหลือประมวลผลได้เร็วที่สุดที่ อุปกรณ์ที่1 (Dev1) ซึ่งเวลาในการประมวลผลรวมเท่ากับ 3,319.02 มิลลิวินาที ดังภาพที่ 4-1

Page 46: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

42

นโยบายการจ่ายงานแบบมาก่อนได้ก่อน กล่าวคือ เมื่ออุปกรณ์ใดๆว่าง ให้จ่ายเคอร์เนลที่มาเข้าคิวงานก่อนให้อุปกรณ์ที่ว่างนั้นประมวลผลตามล าดับ โดยที่เริ่มจากอุปกรณ์ท่ี0 (Dev0) เรียงล าดับไปจนถึงอุปกรณ์ท่ี2 (Dev2) ซึ่งเวลาในการประมวลผลรวมเท่ากับ 4,834.55 มิลลิวินาที

นโยบายการจ่ายงานแบบที่ดีที่สุด กล่าวคือ วิธีที่เร็วที่สุดในการจ่ายงานเคอร์เนลทดสอบไปประมวลผลบนอุปกรณ์ ซึ่งเวลาในการประมวลผลรวมเท่ากับ 2709.99 มิลลิวินาที

นโยบายจ่ายงานแบบที่น าเสนอ กล่าวคือ วิธีจ่ายงานเคอร์เนลโดยใช้วิธีจ าแนกด้วยเอสวีเอ็มแบบหลายกลุ่ม โดยที่น าสิบสามโปรแกรมจากหัวข้อที่ 3.3.1 เป็นตัวฝึกฝนและแปดโปรแกรมเป็นทดสอบเมื่อจ าแนกประเภทออกมาเป็นประเภทอุปกรณ์ที่เหมาะสมเพ่ือส่งไปยังอุปกรณ์นั้นๆเพ่ือประมวลผล ซึ่งเวลาในการประมวลผลรวมเท่ากับ 3,319.02 มิลลิวินาที ทว่าผลการจ าแนกเคอร์เนลบี (MedianFilte)r นั้นผิดพลาดจากอุปกรณ์ที่0 (Dev0) เป็น อุปกรณ์ที่2 (Dev2) (ตารางที่ 4-1) ซึ่งความแม่นย าในการจ าแนกอยู่ที่ 87.5 เปอร์เซ็นต์ ซึ่งเทคนิคที่ได้น าเสนอไปข้างต้นดีกว่ารูปแบบการจ าแนกด้วยวิธีมาก่อนได้ก่อนถึง 45 เปอร์เซ็นต์ แต่ช้ากว่ารูปแบบที่ดีที่สุด 25 เปอร์เซ็นต์ และใกล้เคียงกับรูปแบบที่ก าหนดอุปกรณ์ไปยังอุปกรณ์ท่ีประมวลผลเร็วที่สุด

ข้อจ ากัดของผลงานนี้คือการพยากรณ์จ าแนกของเคอร์เนลบี (Median filter) นั้นผิดจากอุปกรณ์ท่ี0 (Dev0) เป็น อุปกรณ์ท่ี2 (Dev2) ซึ่งความแม่นย าในการจ าแนกอยู่ที่ 87.5 เปอร์เซ็นต์ อีกทั้งเนื่องจากจ านวนของตัวฝึกฝนและตัวทดสอบที่มีน้อย อาจท าให้ผลลัพธ์ความแม่นย ายังไม่คงที่

Page 47: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

43

Kernels Classify เวลาประมวลผล (หน่วย: มิลลิวนิาที)

Dev0 Dev1 Dev2

A VectorAdd Dev2 0.04 4.33 0.02

B MedianFilter Dev2 14.29 34.39 35.91

C BitonicSort Dev1 4,641.23 2,709.99 4,834.55

D SobelGraphic Dev1 3.42 1.26 1.98

E MT Naïve Dev1 483.36 198.31 602.09

F MT Simple Copy Dev1 377.40 135.43 215.87

G MT Shared Copy Dev1 483.48 135.43 305.85

H Matrix Transpose Dev1 575.98 138.60 319.77

ภาพที่ 4-1 การจ่ายงานเคอร์เนลแบบอปุกรณ์ที่เร็วที่สุด

ตารางที่ 4-1 เวลาในการประมวลผลของเคอร์เนลในแต่ละอุปกรณ์และผลการจ าแนกโปรแกรมที่ใช้ทดสอบ

Page 48: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

44

ภาพที่ 4-2 การจ่ายงานเคอร์แบบมาก่อนได้ก่อน

ภาพที่ 4-3 การจ่ายงานเคอร์เนลแบบทีด่ีที่สุด

ภาพที่ 4-4 การจ่ายงานเคอร์เนลแบบทีน่ าเสนอ

Page 49: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

45

4.2 แนวทางการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์

4.2.1 การเร่งความเร็วโมเดลโมเดลการรวมกลุ่มของนั กเรียนในสนาม (Student schoolyard clique)

ผู้วิจัยพัฒนาการเปิดใช้งานโอเพนซีเอลบนเมสัน โดยที่คลาสสามคลาสของเมสันจะถูกปรับแต่งเช่น Scheduler, GUIState และ IterativeRepeat และเมทอดสี่เมทอดจะถูกเพ่ิมเข้าไปในคลาส Scheduler ที่ซึ่งการท างานของ Context, Devices, Command queue, program และ เคอร์เนลจะถูกเก็บไว้ใน Scheduler ซึ่งสามารถเข้าถึงโดยผ่านโมเดลคลาส อีกทั้งโมเดลคลาสยังที่ได้รับมาจาก SimState ควรจะต้องปรับแต่งโดยผู้ออกแบบโมเดล ดังเช่นผลงานวิทยานิพนธ์ฉบับนี้ ได้ท าการน าโมเดลตัวอย่างที่ชื่อว่า โมเดลการรวมกลุ่มของนักเรียนในสนาม มาท าการเร่งความเร็ว โดยที่ผู้ใช้โปรแกรมสามารถเรียกใช้โอเพนซีเอลและ เลือกอุปกรณ์ที่จะใช้ได้ด้วยพารามิเตอร์ในการการตั้งค่าโมเดล เมื่อโปรแกรมท างานตัวโมเดลจะเรียกเมทอด Scheduler ที่ซึ่งจะท าการสร้างสิ่งแวดล้อมของโอเพนซีแอล อีกทั้งโมเดลยังท าการจองพ้ืนที่ในแรมเพ่ือแลกเปลี่ยนข้อมูลที่ส าคัญกับอุปกรณ์อีกด้วย พฤติกรรมของเอเจ้นต์นักเรียน (Student) ในแต่ละขั้นตอนได้ถูกพัฒนาไว้ในฟังก์ชันเคอร์เนล ถ้าโมเดลถูกตั้งค่าให้ใช้งานโอเพนซีแอล เมทอด parallelStep ใน Scheduler จะถูกเรียกใช้แทนที่เมทอด step การท างานของ parallelStep จะท างานคล้ายกับของเดิมกล่าวคือ เมทอด parallelStep จะท าการเก็บอ็อปเจ็กต์ ตามการประทับเวลา (timestamp) สู่ลิสต์ของอ็อปเจ็กต์ ต่อมา parallelStep จะท าการจ าแนกอ็อปเจ็กต์ ตามคลาสต่างๆด้วยการเรียกใช้คลาส IterativeRepeat เพ่ือให้ได้ชื่อของเอเจ้นต์ ที่ซึ่งอ็อปเจ็กต์ ของคลาสที่มีเคอร์เนลฟังก์ชันจะถูกน าออกจากคิวธรรมดาไปไว้ในลิสของอ็อปเจ็กต์ เพ่ือค านวณโดยอุปกรณ์โอเพนซีแอล โดยที่อ็อปเจ็กต์ ธรรมดาจะถูกประมวลผลด้วยวิธีปกติ ส่วนอ็อปเจ็กต์ ส าหรับโอเพนซีแอลจะถูกส่งไปที่โมเดลเพ่ือประมวลผลงานของโอเพนซีแอล ซึ่งเมทอด executeOpenCLJob ในโมเดลจะท าการปรับปรุงค่าในบัฟเฟอร์หน่วยความจ า จากนั้นส่งเคอร์เนลไปยัง Command queue และอ่านผลลัพธ์กลับมาจากอุปกรณ์โอเพนซีแอล จากนั้นปรับปรุงสถานะของเอเจ้นต์ทุกตัว โดยที่กระบวนการนี้จะถูกท าซ้ าจนกว่าจะจบการจ าลอง ซึ่งผลของการจ าแนกเคอร์เนลไปยังอุปกรณ์ที่พยากรณ์ไว้ในแต่ละอุปกรณ์ควรจะเหมาะสมกับการประมวลผลเคอร์เนลนั้นๆ

Page 50: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

46

ภาพที่ 4-5 ตัวอย่างโปรแกรม Student Schoolyard Cliques

ภาพที่ 4-6 ปฏสิัมพันธ์ของส่วนประกอบที่ใช้ในการท างานของโอเพนซีแอลบนเมสันโมเดล

Page 51: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

47

4.2.2 ประสิทธิภาพของการเร่งความเร็ว ผลของการเร่งความเร็วของโมเดลการรวมกลุ่มของนักเรียนในสนาม ได้ถูกวิเคราะห์และ

เปรียบเทียบระหว่างการท างานบนซีพียูแบบปกติและ การท างานบนจีพียูโดยใช้โอเพนซีแอล จากภาพที่ 4-7 จะเห็นการท างานแบบปกติเมื่อใช้จ านวนนักเรียนตั้งแต่ 1,000 คน ไปจนกระทั้งถึง 250,000 คน ซึ่งวัดเวลาในการประมวลผลได้อยู่ในช่วง 7.3 มิลลิวินาที ถึง 723.2 มิลลิวินาที ท าให้เห็นการเติบโตของเวลาในการประมวลผลเป็นแบบเอกโพเนนเชียล ผลของการเก็บเวลาในการประมวลผลและเปรียบเทียบโดยใช้โอเพนซีแอลบนจีพียู Nvidia (Dev1) และซีพียู (Dev0) แสดงให้เห็นถึงความเร็วที่ไม่แตกต่างกันมากนัก เมื่อจ านวนเอเจ็นต์ (Students) เมื่อมีจ านวนน้อย การท างานด้วยโอเพนซีแอลจะช้ากว่ารูปแบบปกติ (จ านวนเอเจ็นต์น้อยกว่า 5,000) แต่จะเร็วกว่าเมื่อเอเจ็นต์มีจ านวนมากกว่า 5,000 ซึ่งจากภาพที่ 4-8 จะเห็นถึงความเร็วที่เพ่ิมขึ้นได้สูงสุดถึง 27.6 เท่า เมื่อจ านวนเอเจ้นต์เพ่ิมข้ึนไปจนถึง 250,000 เอเจ้นต์

ข้อจ ากัดของผลงานนี้คือ พ้ืนที่ในหน่วยความจ านั้นมีจ ากัด อันเนื่องมาจากตัวเมสันเฟรมเวิร์กเองจะเก็บชนิดข้อมูลส่วนใหญ่เป็น Double ซึ่งก่อนที่จะประมวลผลเคอร์เนล ข้อมูลที่จ าเป็นของเอเจ้นต์จะถูกจัดสรรให้โฮสและอุปกรณ์ที่ใช้โอเพนซีแอล ดังนั้นผลงานนี้จึงไม่สามารถมีจ านวนเอเจ้นต์มากไปกว่า 250,000 ได้ เมื่อท าการเร่งเความเร็วแล้ว ที่ซึ่งจ านวนข้อมูล เอเจ้นต์เพ่ิมขึ้นจนเกินข้อจ ากัดของอุปกรณ์

ภาพที่ 4-7 เวลาในการประมวลผลบนซีพียูโดยไม่ใช้โอแพนซีแอล

Page 52: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

48

4.2.3 การจ าแนกเคอร์เนลของโมเดลการรวมกลุ่มของนักเรียนในสนาม ผลการการเก็บข้อมูลคุณลักษณะของเคอร์เนลจากโมเดลการรวมกลุ่มของนักเรียนในสนาม

ได้ค่าคุณลักษณะดังตารางที่ 4-2 คุณลักษณะ ค่า คุณลักษณะ ค่า

Input size 580,040 int-Outside loop 0 HIsInLoop 1 int-Inside loop 0

HNumIterations 120 uint-Outside loop 0 HWorkDim 1 uint-Inside loop 0 HWorkgroup Global 1K-250K float-Outside loop 33 HWorkgroup local 1 float-Inside loop 0 Parameters 9 ufloat-Outside loop 0 Control loop 0 ufloat-Inside loop 0 If-Outside loop 8 logic-Outside loop 0

If-InsideLoop 0 logic-Inside loop 0 Barriers-Outside loop 2 bitwise-Outside loop 0

Barriers-InsideLoop 0 bitwise-Inside loop 0 matFunc-Outside loop 3 atomic-Outside loop 2 matFunc-Inside loop 0 atomic-Inside loop 0

ตารางที ่4-2 คุณลักษณะของเคอร์เนลโมเดลการรวมกลุ่มของนักเรียนในสนาม

ภาพที่ 4-8 ความเร็วที่เพ่ิมขึ้นของการใช้โอเพนซีแอล

Page 53: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

49

จากตารางที่ 4-2 จะเห็นได้ว่าขนาดของอินพุตมีขนาดเท่ากับ 580,040 ไบต์ จ านวนรอบในการเรียกใช้เคอร์เนลมีค่าเท่ากับ 120 รอบ ซึ่งมีค่าเท่ากับจ านวนก้าว (Step) ทั้งหมดของโมเดล ในขณะที่จ านวนเวิร์กกรุ๊ปโกลบอลมีค่าอยู่ในช่วงระหว่าง 1,000 เซล ถึง 250,000 เซล ซึ่งขึ้นอยู่กับจ านวนของเอเจ้นต์ที่ใช้ทดสอบในแต่ละครั้งที่จองพ้ืนที่ในหน่วยความจ าด้วย Long มีจ านวนอยู่ในช่วงระหว่าง 8,000 ไบต์ ถึง 2,000,000 ไบต์ ส่วนจ านวนเวิร์กกรุ๊ปโลคอล จ านวนพารามิเตอร์ จ านวนเงื่อนไข จ านวนตัวขั้น จ านวนฟังก์ชั่นทางคณิตศาสตร์ จ านวนโอเปอเรชั่นของเลขจ านวนจริง และจ านวนอะตอมมิคมีค่าเท่ากับ 1, 9, 8, 2 ,3 ,33, 2 ตามล าดับ โดยที่ผลของการจ าแนกเคอร์เนลของโมเดลการรวมกลุ่มของนักเรียนในสนาม ได้ถูกทดสอบโดยใช้โปรแกรมฝึกฝนเดิมยี่สิบเอ็ดโปรแกรมที่ได้ถูกเก็บคุณลักษณะไปแล้วเบื้องต้น และทดสอบได้ผลลัพธ์เป็นอุปกรณ์ที่1 (Dev1) ตั้งแต่เอเจ้นต์มีจ านวน 1,000 เอเจ้นต์ ถึง 250,000 เอเจ้นต์ ซึ่งไม่ตรงกับอุปกรณ์ที่ถูกต้องซึ่งเป็นอุปกรณ์ที่2 (Dev2) เนื่องจากเวลาในการประมวลผลของอุปกรณ1์และอุปกรณ์ท่ี2 เมื่อจ านวนเอเจ้นต์มีจ านวนไม่มากพอนั้นใกล้เคียงกัน อีกทั้งโปรแกรมฝึกฝนยังมีจ ากัดส่งผลให้ผลลัพธ์คลาดเคลื่อน ซ่ึงผลลัพธ์แสดงให้เห็นในตารางที่ 4-3

จ านวนเอเจน้ต์นักเรียน เวลาประมวลผล (หน่วย: มิลลิวนิาที)

ผลการจ าแนก Dev1 Dev2

1K 9.13 10.43 Dev1

5K 9.42 9.42 Dev1 15K 9.88 10.28 Dev1 50K 11.48 11.84 Dev1

100K 13.81 14.37 Dev1 250K 26.2 27.19 Dev1

ตารางที่ 4-3 ผลของการจ าแนกโมเดล โมเดลการรวมกลุ่มของนักเรียนในสนาม

ทั้งนี้ยังได้ทดสอบเพ่ิมเติมโดยการเพ่ิมจ านวนเอเจ้นต์ขึ้นไป ซึ่งตัวจ าแนกยังคงจ าแนกเป็นอุปกรณ์ที่1เช่นเดิม จนกระทั่งเมื่อเอเจ้นต์เพ่ิมขึ้นไปเป็นจ านวน 6,650,000 เอเจ้นต์เป็นต้นไป ตัวจ าแนกจึงจะเปลี่ยนผลการจ าแนกเป็นอุปกรณ์ที่2

Page 54: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

50

บทที่ 5 สรุปผลการวิจัยและข้อเสนอแนะ

ผลงานวิทยานิพนธ์ฉบับนี้ ได้ศึกษาแนวทางในการเร่งความเร็วโปรแกรมแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวาบนอุปกรณ์ประมวลผลโอเพนซีแอล ด้วยการพัฒนาตัวจ าแนกเคอร์แนล โดยใช้เทคนิคการเรียนรู้ของเครื่องจักรแบบหลายกลุ่มเพ่ือพิจารณาเลือกอุปกรณ์ที่เหมาะสม ในรายงานได้สรุปถึงที่มาของปัญหา เป้าหมายและวัตถุประสงค์ของการวิจัย ข้อจ ากัดและประโยชน์ที่คาดว่าจะได้รับในบทน า และในบทถัดมาได้กล่าวถึง พ้ืนฐานเชิงทฤษฎี และแนวคิดจากงานวิจัยที่เกี่ยวข้องหกส่วน ได้แก่ แบบจ าลองแบบหลายเอเจ้นต์, การเร่งความเร็วของโปรแกรมโดยใช้มาตรฐานโอเพนซีแอล, เทคนิคการจ่ายงานประมวลผล, การจัดจ าแนกด้วยเทคนิคการเรียนรู้แบบเครื่องจักร, การเร่งความเร็วของแบบจ าลองแบบหลายเอเจ้นต์ที่พัฒนาด้วยภาษาจาวา และการพัฒนาต่อยอดจากทฤษฎีและงานวิจัยที่เกี่ยวข้อง

การวิจัยได้ออกแบบให้มีระเบียบวิธีการด าเนินการแบ่งเป็นสี่ขั้นตอน ได้แก่ ระเบียบการท าวิจัย สถาปัตยกรรมของระบบ การจ าแนกโอเพนซีแอลเคอร์เนล และการทดลองเพ่ือวิเคราะห์ประสิทธิภาพของโมเดลเชิงเอเจ้นต์ที่เร่งความเร็วด้วยโอเพนซีเอล

ผลการวิจัยได้ท าการวิจัยสองการวิจัยได้แก่ (1) ทดสอบประสิทธิภาพของตัวจ าแนกประเภทและการจ่ายงาน ผู้วิจัยท าการวิจัยเทคนิคการจ าแนกเคอร์เนลของโอแพนซีแอลเพ่ือใช้ระบุอุปกรณ์โอเพนซี

แอลที่เหมาะสมเพ่ือเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ โดยแบบจ าลองถูกพัฒนาบนเมสันเฟรมเวิร์ก ที่ซึง่ผลลัพธ์ในการจ าแนกเคอร์เนลที่เหมาะสมมีความแม่นย า 87.5 เปอร์เซ็นต์ของจ านวนโปรแกรมทดสอบ และทดสอบการจ่ายงานของเคอร์เนลซึ่งเทคนิคที่ได้น าเสนอดีกว่ารูปแบบการจ าแนกด้วยวิธีมาก่อนได้ก่อนถึง 45 เปอร์เซ็นต์ แต่ช้ากว่ารูปแบบที่ดีที่สุด 25เปอร์เซ็นต์ และใกล้เคียงกับรูปแบบที่ก าหนดอุปกรณ์ไปยังอุปกรณ์ท่ีประมวลผลเร็วที่สุด (2) แนวทางการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์

ผู้วิจัยท าการเร่งความเร็วแบบจ าลองแบบหลายเอเจ้นต์ (Student Schoolyard Clique) ได้ผลลัพธ์เมื่อจ านวนเอเจ็นต์ เมื่อมีจ านวนน้อย การท างานด้วยโอเพนซีแอลจะช้ากว่ารูปแบบปกติ แต่จะเร็วกว่าเมื่อเอเจ็นต์มีจ านวนมากกว่า 5,000 ซ่ึงเพ่ิมข้ึนได้สูงสุดถึง 27.6 เท่า การเร่งความเร็วแบบจ าของแบบหลายเอเจ้นต์มีความท้าท้ายที่มีผลต่อประสิทธิภาพในการประมวลผลดังนี้

Page 55: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

51

(1) การเปลี่ยนอัลกอริทึมในการท างานของแบบจ าลองไปสู่เวิร์กไอเทม เนื่องจากเมสันเฟรมเวิร์กไม่ได้ถกูออกแบบมาให้เร่งความเร็วด้วยโอเพนซีแอลได้ ดังนั้นการ

เปลี่ยนอัลกอริทึมในการท างานของแบบจ าลองไปสู่เวิร์กไอเทมได้นั้น ต้องศึกษาการท างานของเฟรมเวิร์กให้เข้าใจทั้งหมด อีกท้ังยังต้องปรับปรุงให้สามารถเร่งความเร็วด้วยโอเพนซีแอลได้อีกด้วย

(2) การแลกเปลี่ยนข้อมูลระหว่างหน่วยความจ า เนื่องจากโปรแกรมแบบจ าลองแบบหลายเอเจ้นต์ในแต่ละโปรแกรมมีลักษณะที่แตกต่างกัน

ไปโดยสิ้นเชิง ยกตัวอย่างเช่น ชนิดของเอเจ้นต์, จ านวนของเอเจ้นต์, พฤษติกรรมของเอเจ้นต์, สถานะของเอเจ้นต์, คุณลักษณะของเอเจ้นต์, การตายและการเกิดของเอเจ้นต์, รูปแบบของพ้ืนที่, คุณลักษณะของพ้ืนที่ ซึ่งมีผลต่อออกแบบการแลกเปลี่ยนข้อมูลระหว่างหน่วยความจ าให้เหมาะสมกับการท างานในแต่ละโปรแกรม อีกทั้งตัวเมสันเฟรมเวิร์กยังเก็บข้อมูลส่วนใหญ่เป็นชนิดดับเบิ้ล ซึ่งมีผลต่อการประมวลท าให้การออกแบบการแลกเปลี่ยนข้อมูลระหว่างหน่วยความจ า

(3) เวลาที่เพิ่มขึ้นในการประสานจังหวะ เนื่องจากเอเจ้นต์ หรือพ้ืนที่ มักจะมีการแลกเปลี่ยนข้อมูลระหว่างกันอยู่เสมอ ท าให้เกิดเวลา

ในการประสานจังหวะที่เพ่ิมข้ึน ซ่ึงมีผลต่อการเร่งความเร็วของแบบจ าลอง (4) วิธีการสุ่มค่าบนเมสัน เนื่องจากเมสันเฟรมเวิร์กนั้นมีวิธีการสุ่มค่าท่ีน้อยและไม่เหมือนใคร จึงท าให้การสุ่มเลขบน

อุปกรณ์เร่งความเร็วให้เหมือนกับเมสันนั้นท าได้ยากยิ่งขึ้น และอาจจะท าให้ต้องเพ่ิมพ้ืนที่การแลกเปลี่ยนข้อมูลระหว่างหน่วยความจ า ซึ่งมีผลต่อการความเร็วในการประมวลผลอีกด้วย

Page 56: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

52

รายการอ้างอิง

หนังสือและบทความในหนังสือ

Luke, S. (2015). Multiagent Simulation And the MASON Library. Retrieved from https://cs.gmu.edu/~eclab/projects/mason/manual.pdf

Yan, Y., Grossman, M., & Sarkar, V. (2009) JCUDA: A programmer-friendly interface for accelerating java programs with CUDA. Vol. 5704 LNCS. Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (pp. 887-899).

Crooks, A., & Heppenstall, A. (2012). Introduction to Agent-Based Modelling. In A. J. Heppenstall, A. T. Crooks, L. M. See, & M. Batty (Eds.), Agent-Based Models of Geographical Systems (pp. 85-105): Springer Netherlands.

Marurngsith, W. (2014) Computing platforms for large-scale multi-agent simulations: The niche for heterogeneous systems. Vol. 8669 LNCS. Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (pp. 424-432).

Parry, H. R., & Bithell, M. (2012). Large Scale Agent-Based Modelling: A Review and Guidelines for Model Scaling. In A. J. Heppenstall, A. T. Crooks, L. M. See, & M. Batty (Eds.), Agent-Based Models of Geographical Systems (pp. 271-308): Springer Netherlands.

บทความวารสาร

Hayashi, A., Grossman, M., Zhao, J., Shirako, J., & Sarkar, V. (2013). Accelerating Habanero-Java programs with OpenCL generation.

Rossbach, C. J., Yu, Y., Currey, J., Martin, J. P., & Fetterly, D. (2013). Dandelion: A compiler and runtime for heterogeneous systems. Paper presented at the

Page 57: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

53

SOSP 2013 - Proceedings of the 24th ACM Symposium on Operating Systems Principles.

Chih-Wei, H., & Chih-Jen, L. (2002). A comparison of methods for multiclass support vector machines. IEEE Transactions on Neural Networks, 13(2), 415-425. doi:10.1109/72.991427

Corinna Cortes, V. V. (1995). Support-Vector Networks.

Dai, H., & Lin, J. (2013). A novel dynamic agent scheduling algorithm for distributed agent-based applications. Journal of Computational Information Systems, 9(22), 9185-9192.

Lopez-Novoa, U., Mendiburu, A., Miguel-Alonso, J., & Society, I. C. (2015). A Survey of Performance Modeling and Simulation Techniques for Accelerator-Based Computing.

Railsback, S. F., Lytinen, S. L., & Jackson, S. K. (2006). Agent-based Simulation Platforms: Review and Development Recommendations. SIMULATION, 82(9), 609-623. doi:10.1177/0037549706073695

Richmond, P., Walker, D., Coakley, S., & Romano, D. (2010). High performance cellular level agent-based simulation with FLAME for the GPU. Briefings in Bioinformatics, 11(3), 334-347.

บทความตีพิมพ์ในที่ประชุมวิชาการ

Aaby, B. G., Perumalla, K. S., & Seal, S. K. (2010). Efficient simulation of agent-based models on multi-GPU and multi-core clusters.

Brodtkorb, A. R., Hagen, T. R., & Sætra, M. L. (2013). Graphics processing unit (GPU) programming strategies and trends in GPU computing. J. Parallel Distrib. Comput., 73(1), 4-13. doi:10.1016/j.jpdc.2012.04.003

Sato, K., Komatsu, K., Takizawa, H., & Kobayashi, H. (2011, 26-28 May 2011). A History-Based Performance Prediction Model with Profile Data Classification for

Page 58: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

54

Automatic Task Allocation in Heterogeneous Computing Systems. Paper presented at the Parallel and Distributed Processing with Applications (ISPA), 2011 IEEE 9th International Symposium on.

Matoga, A., Chaves, R., Tom, P., x00E, & Roma, N. (2013, 1-5 July 2013). A flexible shared library profiler for early estimation of performance gains in heterogeneous systems. Paper presented at the High Performance Computing and Simulation (HPCS), 2013 International Conference on.

Mokhtari, R., & Stumm, M. (2014). BigKernel - High performance CPU-GPU communication pipelining for big data-style applications. Paper presented at the Proceedings of the International Parallel and Distributed Processing Symposium, IPDPS.

Long, Q., Lin, J., & Sun, Z. (2011). Agent scheduling model for adaptive dynamic load balancing in agent-based distributed simulations. Simulation Modelling Practice and Theory, 19(4), 1021-1034.

Macal, C. M., & North, M. J. (2011). Introductory tutorial: agent-based modeling and simulation. Paper presented at the Proceedings of the Winter Simulation Conference, Phoenix, Arizona.

Su, C. L., Chen, P. Y., Lan, C. C., Huang, L. S., & Wu, K. H. (2012). Overview and comparison of OpenCL and CUDA technology for GPGPU. Paper presented at the IEEE Asia-Pacific Conference on Circuits and Systems, Proceedings, APCCAS.

Vijitpornkul, S., & Marurngsith, W. (2015, 19-22 Aug. 2015). Simulating crowd movement in agent-based model of large-scale flood. Paper presented at the Advanced Informatics: Concepts, Theory and Applications (ICAICTA), 2015 2nd International Conference on.

Wen, Y., Wang, Z., & O'Boyle, M. F. P. (2014). Smart multi-task scheduling for Open CL programs on CPU/GPU heterogeneous platforms. Paper presented at the

Page 59: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

55

2014 21st International Conference on High Performance Computing, HiPC 2014.

Ho, N. M., Thoai, N., & Wong, W. F. Multi-agent simulation on multiple GPUs.

Li, X., Cai, W., & Turner, S. J. Supporting efficient execution of continuous space agent-based simulation on GPU.

สื่ออิเล็กทรอนิกส์

Group, K. (2013). OpenCL - The open standard for parallel programming of heterogeneous systems. Retrieved from www.khronos.org

Central, A. D. (2011). APARAPI: An Opensource API for Expressing Parallel Workloads in Java.

Google. Aparapi. Retrieved from https://code.google.com/archive/p/aparapi/

Intel. Support Vector Machine Classifier. Retrieved from https://software.intel.com/en-us/node/564708

Google. JavaCL.

jocl. Retrieved from http://www.jocl.org/

Page 60: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

56

ภาคผนวก

Page 61: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

57

ภาคผนวก ก

ส่วนของโปรแกรมที่ถกูปรับปรุงในโปรแกรมการรวมกลุม่ของนักเรียนในสนาม

Page 62: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

58

Page 63: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

59

Page 64: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

60

Page 65: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

61

Page 66: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

62

Page 67: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

63

Page 68: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

64

Page 69: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

65

ภาคผนวก ข

ตัวอย่างการเก็บคุณลักษณะ

โฮสโปรแกรม

เคอร์เนลโปรแกรม

Page 70: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

66

ตัวอย่างการเก็บคุณลักษณะ

No 1 2 3 4

WorkloadID 1 1 2 2

from NVIDIA NVIDIA NVIDIA NVIDIA

Workload Name oclBlackScholes oclBlackScholes oclConvolutionSeparable oclConvolutionSeparable

Kernel Name BlackScholes_1 BlackScholes_1 convolutionRows_1 convolutionColumns_1

HCallerLineNo 132 153 89 109

HIsInLoop 0 1 0 0

HNumIterations 0 16 0 0

HWorkDim 1 1 2 2

HWorkgroup Global 61440 61440 1179648 1179648

HWorkgroup local 128 128 64 128

จ ำนวนParameters 8 8 6 6

Control loop 4000000 4000000 146 146

If-Outside loop 0 0 0 0

If-InsideLoop 4000000 4000000 2 2

Barriers-Outside loop 0 0 1 1

Barriers-InsideLoop 0 0 0 0

matFunc-Outside loop 0 0 0 0

matFunc-Inside loop 24000000 24000000 0 0

int-Outside loop 0 0 13 14

int-Inside loop 0 0 0 961

uint-Outside loop 4000000 4000000 0 0

uint-Inside loop 0 0 0 0

float-Outside loop 0 0 6 6

float-Inside loop 84000000 84000000 256 256

ufloat-Outside loop 0 0 0 0

ufloat-Inside loop 0 0 0 0

logic-Outside loop 0 0 0 0

logic-Inside loop 0 0 0 0

bitwise-Outside loop 0 0 0 0

bitwise-Inside loop 0 0 0 0

atomic-Outside loop 0 0 0 0

atomic-Inside loop 0 0 0 0

Page 71: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

67

ภาคผนวก ค

บทความตีพิมพ์ ชื่อบทความ

Classification of OpenCL Kernels for Accelerating Java Multi-agent Simulation

สถานทีต่ีพิมพ์

EUROSIM 2016, 12 - 16 September 2016, Oulu Finland

The 9th Eurosim Congress on Modelling and Simulation

Page 72: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

68

Page 73: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

69

Page 74: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

70

Page 75: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

71

Page 76: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

72

Page 77: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

73

Page 78: การจ าแนกประเภทเคอร์เนลของโอเ ...ethesisarchive.library.tu.ac.th/thesis/2015/TU_2015... · 2018-06-01 · การจ าแนกประเภทเคอร์เนลของโอเพนซีเอลเพื่อศึกษาแนวทางการเร่ง

74

ประวัติผู้เขียน

ชื่อ นายปิติพัฒน์ เพ็ญภาคกุล วันเดือนปีเกิด 5 ตุลาคม 2533