Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
1
บทท 1
บทน ำ
ควำมเปนมำและควำมส ำคญของปญหำ ในการแกปญหาอยางการสลบกนในพชคณตดวยขนตอนวธหาค าตอบทเหมาะสมทสด
สวนใหญนน ถงแมวาจะใชการคนหาทนอยกวา n! แตกยงตองใชการคนหาเขาไปยงตนไม หรอกลมของค าตอบจ านวนหนง ไมเวนแมแตขนตอนวธเชงพนธกรรมทสบคนค าตอบจากประชากรในแตละรน รวมถงงานจากขนตอนอยางการกลายพนธ และการผสม ส าหรบสรางประชากรในรนตอไป ท าใหเมอนกวจยตองการศกษาเพอดผลกระทบของพารามเตอรและหาพารามเตอรทเหมาะสมส าหรบปญหานนๆ พวกเขาตองท าการทดลองดวยพารามเตอรทตางกนหลายชดเพอจะไดพารามเตอรทเหมาะสมส าหรบปญหานน มการงานวจยของ Juan Li [1] ทศกษาผลของพารามเตอรของชนตอนวธเชงพนธกรรมในปญหา การวางแผนโครงขายการใหบรการสอสารสวนบคคลเพอหาคาพารามเตอรทเหมาะสมส าหรบปญหาน พบวาคณภาพของค าตอบดขนเมอเพมขนาดของประชากร งานวจยของ Sofiene และ Jaleleddine [2] ศกษาผลของพารามเตอรของขนตอนวธเชงพนธกรรม ส าหรบปญหาการลเขาของสนามแมเหลกไฟฟา พบวาการเพมขนาดของประชากรท าใหเขาใกลค าตอบทดกวา แตประชากรทใหญท าใหเวลาทใชในการลเขาของ สนามแมเหลกไฟฟา มากขนตามมา งานวจยของ Mohd Zakimi [3] ศกษาผลของพารามเตอรของขนตอนวธเชงพนธกรรม ในปญหา Multi objective Optimization (MMO) ซงพบวาพารามเตอรทเหมาะสมของปญหานอยางขนาดประชากรอาจไมใชขนาดทมากขนเรอยๆ แตเปนขนาดทเหมาะสมคาหนง แนนอนวาหากขนตอนวธทตองการศกษาความเกยวของของพารามเตอรเหลานมความซบซอน การทดลองแตละครงตองใชระยะเวลานานส าหรบการค านวณแบบปกต ตวประมวลผลกราฟก (GPU) เปนหนงในตวเลอกทสามารถน ามาเพมความเรวได เนองจาก GPU มราคาทถกและพลงในการค านวณทมากกวาเมอเปรยบเทยบกบ CPU[4] ซงจะกลาวถงตวอยางการทดลองทน า GPU ไปเพมความเรวใหกบขนตอนวธเชงพนธกรรมในหวถดไป
ขนตอนวธอบตการณรวมกน (COIN) เปนหนงในขนตอนวธหาค าตอบทเหมาะสมทสด ทแสดงใหเหนความสามารถเมอเปรยบเทยบกบขนตอนวธทนยมหลายตว [5] พารามเตอรของ COIN เองกเปนทนาสนใจวาการเปลยนแปลงคาพารามเตอรบางตว อยางเชนจ านวนการเลอกประชากรของกลมทดและไมดนนจ าเปนตองเทากนหรอไม จ านวนการเลอกประชากรทเหมาะคาหนงอาจท าใหสามารถหาค าตอบไดดวยจ านวนรนทนอยลงหรอไม แนนอนวา
2
การทดลองในแตละรอบนนหากวาพารามเตอรบางตวซงมผลท าใหปรมาณขอมลในการค านวณมมากขน อยางจ านวนประชากร กจะตองใชเวลามากขนในการค านวณในแตละรอบ ดงนนเมอน า ขนตอนวธอบตการณรวมกน มาท างานบน GPU แลว ดวยการท างานแบบขนานเราสามารถใชเวลาในการท าการทดลองในแตละรอบนอยลง สงผลใหเวลาทตองใชในการศกษานอยลงเชนกน กระบวนการวเคราะห ขนตอนวธอบตการณรวมกน เพอออกแบบการท างานแบบขนาน ,การจดแบงลกษณะของโครงสราง เทรด และ บลอก เพอใหท างานบน GPU จะถกกลาวถงตอไป
วตถประสงคของกำรวจย
น าขนตอนวธอบตการณรวมกน ไปท างานแบบขนานบนหนวยประมวลผลกราฟก เพอท าให ขนตอนวธอบตการณรวมกนท างานเรวกวาการประมวลผลบนหนวยประมวลผลกลาง แบบปกต
ขอบเขตของกำรวจย 1. เปรยบเทยบการท างานของ ขนตอนวธอบตการณรวมกน ดงเดมท
ท างานบนหนวยประมวลผลกลาง intel core i3 2.1 GHz กบ ขนตอนวธอบตการณรวมกน ทถกเขยนดวย CUDA C เพอการประมวลผลแบบขนานบน GPU NVIDIA Geforce GT 540M ในหนวยของเวลาไมโครเซคน โดยท าการทดลอง 10 ครงและน าคาเฉลยมาเปรยบเทยบ
2. ใชปญหาการเดนทางของนกขาย(TSP) เพอค านวณคาความเหมาะสม ของประชากรแตละตวในแตละรน โดยใชจ านวนประชากร 500 และ1000 ตวตอรน
ประโยชนทคำดวำจะไดรบ
สามารถน าขนตอนวธอบตการณรวมกนในรปแบบขนานนไปท างานวจยอนทตองท าการประมวลผลซ าๆดวยชดขอมลทมปรมาณมากโดยใชเวลานอยกวาการท างานปกตบนหนวยประมวลผลกลาง เชน การทดลองหาพารามเตอรทเหมาะสมส าหรบชดขอมลหนง
วธด ำเนนกำรวจย
1. ศกษาทฤษฎและงานวจยทเกยวของ
3
2. วเคราะหลกษณะการท างานของขนตอนวธอบตการณรวมกนเพอหาลกษณะการท างานแบบขนาน
3. ออกแบบโปรแกรมเพอใหขนตอนวธอบตการณรวมกนท างานแบบขนานบนอปกรณประมวลผลกราฟก
4. เขยนโปรแกรมทงแบบประมวลผลล าดบบนหนวยประมวลผลกลางและแบบขนานบนหนวยประมวลผลกราฟก
5. ทดลองประมวลผลทงสองแบบและจบเวลา
6. วเคราะหผลการทดลอง
7. สรปผลการวจยและเรยบเรยงวทยานพนธ
โครงสรำงของวทยำนพนธ
วทยานพนธฉบบนประกอบไปดวย 5 บทหลก คอ บทน า เอกสารและทฤษฎทเกยวของ วธด าเนนการวจย การทดลองและผลการทดลอง และสรปงานวจยกบแนวทางพฒนาตอ
ในบทแรกจะกลาวถง ความเปนมา ปญหา วตถประสงค ขอบเขตของงานวจย ประโยชนทจะไดรบ ขนตอนการท าวจย โครงสรางของวทยานพนธ และผลงานทตพมพ จากวทยานพนธ บททสอง จะกลาวถง ทฤษฎของวธอบตการณรวมกนและ ประวตและการท างานเบองตนของ NVIDIA CUDA C บททสามกลาวถงวธด าเนนงานวจย ซงจะอธบายขนตอนและหวขอทตองศกษารวมถงการออกแบบโปรแกรมเพอประยกตขนตอนวธอบตการณรวมกนบนหนวยประมวลผลกราฟก บททส อธบายวธการทดลองและแสดงผลการทดลอง ตลอดจนวเคราะหผลการทดลอง และบทสดทายจะสรปงานวจยพรอมแนะแนวทางเพอพฒนาตอยอดงานวจยนใหดขนตอไป
ผลงำนทตพมพจำกวทยำนพนธ 2012 Ninth International Joint Conference on Computer Science and Software
Engineering (JCSSE) pp 126-130
4
บทท 2
เอกสำรและงำนวจยทเกยวของ
2.1 ขนตอนวธอบตกำรณรวมกน เปนหนงในขนตอนวธเชงพนธกรรมทมแนวคดส าคญทแตกตางจาก ขนตอนวธ
เชงพนธกรรม แบบดงเดม คอ การน าค าตอบทไมดมารวมพจารณาและเรยนรเพอหลกเลยงโอกาสของการไดมาซงค าตอบทไมดนนในรนถดไป จากการทดลอง [5] ทแสดงใหเหนวาการเรยนรจากค าตอบทดและไมดพรอมกน ดกวาการเรยนรจากค าตอบทด หรอไมดเพยงอยางเดยว และยงเปรยบเทยบกบขนตอนวธทนยมหลายตว [5]
วธอบตการณรวมกน แบงการท างานออกเปน 5 ขนตอนหลก คอ ก าหนดคาเรมตน, สรางกลมของประชากร , ประเมนคาความเหมาะสมของประชากรแตละตว , เลอกประชากรจ านวนหนงออกมาเปนกลมทดและไมด , ปรบปรงคาความนาจะเปนรวม เราสามารถพจารณาการท างานภายในของ 5 ขนตอนหลกไดดงน
2.1.1 ก ำหนดคำเรมตน ตวก าเนด คอ ตารางขนาดเทากบ n x n ซง n คอ ขนาดของค าตอบ ในตารางน บรรจตนไมทขนตอกน (dependency tree) ซงแตละแถวก าหนดใหเปน ตนไมทขนตอกน หนงตน และแตละคอลมนคอความนาจะเปนรวม )X|h(X ji ซงเปรยบไดกบกงของตนไม , iX แทนแถวของตารางขณะท jX แสดงคอลมน และก าหนดวาเมอเกดเหตการณ iX และตามดวย jX ต าแหนงท ijX คอความนาจะเปนรวม )X|h(X ji การก าหนดคาเรมตนใหกบตารางจะแบงความนาจะเปนรวม ไปยงทกคอลมน
เทาๆกน คอ )(n 1
1
ยกเวนต าแหนงท i เทากบ j จะไดตารางทเตมเตมดวยคาความนาจะเปน
รวมทเทากนทกต าแหนง ส าหรบต าแหนง ijX ซง i เทากบ j จะได ความนาจะเปนรวมเปน 0
5
0 0.25 0.25 0.25
0.25 0 0.25 0.25
0.25 0.25 0 0.25
0.25 0.25 0.25 0
0.25
0.25
0.25
0.25
0.25 0.25 0.25 0.25 0.25
A
B
C
D
E
A B C D E
0 0.40 0.20 0.20
0.25 0 0.25 0.25
0.25 0.25 0 0.25
0.25 0.25 0.25 0
0.20
0.25
0.25
0.25
0.25 0.25 0.25 0.25 0.25
A
B
C
D
E
A B C D E
(a) (b)
0 0.10 0.30 0.30
0.25 0 0.25 0.25
0.25 0.25 0 0.25
0.25 0.25 0.25 0
0.30
0.25
0.25
0.25
0.25 0.25 0.25 0.25 0.25
A
B
C
D
E
A B C D E
(c) รปท 2-1 ตวก าเนด ขนาด 5x5 หลงจากผานการก าหนดคาเรมตน ทกชองจะถกเตมดวยความ
นาจะเปนรวมเทากบ )(n 1
1
ยกเวนชองท i เทากบ j ความนาจะเปนรวมเทากบ 0
2.1.2 กำรสรำงกลมของประชำกร ประชากรแตละตวคอผลจากการเดนทางใน dependency tree ในแตละแถวของตาราง ตวก าเนด โดย เรมจากต าแหนง iX ใดๆ ตามความนาจะเปนทเหมาะสม เชน หากวาไมมขอสงเกตทชดเจนวาต าแหนงใดนาจะถกเลอกเปนพเศษแลว อาจใหความนาจะเปนของการเลอก
ต าแหนงเรมตนเทากนท n
1 ต าแหนงนจะกลายเปนรากของตนไม เมอไดรากของตนไมมาแลว
สมาชกของค าตอบทเหลอไดมาจากการคนเขาไปยงตนไมดวยวธลงลกกอน ส าหรบการเลอกแตละ jX จะเลอกจากความนาจะเปนรวม )X|h(X ji ของแตละกง 2.1.3 กำรประเมนคำควำมเหมำะสมของประชำกร สงทไดมาจากขนตอนการสรางกลมประชากรคอค าตอบทประกอบไปดวยกลมของค าตอบทยงไมสามารถบอกไดถงความดหรอไมดของประชากรแตละตว ในขนตอนนจะท าการประเมนคาความเหมาะสมจากฟงกชนความเหมาะสม ซงแตกตางกนไปในแตละปญหา เชน ปญหา TSP คาความเหมาะสม คอ คาระยะทางรวมของทกเมองบนเสนทางทสรางขนมา 2.1.4 เลอกประชำกรเปนกลมทดและไมด เมอไดคาความเหมาะสมของประชากรแตละตวแลว เราสามารถแบงเปนกลมทดและไมดไดจากคาความเหมาะสม วธในการแบงทม 2 วธ [5] วธแรกคอการแบงแบบเทากน (uniform) และแบบปรบตว ในงานวจยนเราใชวธแบงแบบเทากนคอการเลอกจากประชากรทมคาความเหมาะสมมากทสดลงไปหานอยเปนจ านวน c เปอรเซนต เปนกลมทด และเลอกจากประชากรทมคาความเหมาะสมนอยทสดไปหามาก c เปอรเซนตเทากน เพอเปนตวแทนของกลมทไมด
6
2.1.5 กำรปรบปรงคำควำมนำจะเปนรวม กลมของค าตอบทดและไมดทไดจากขนตอนการเลอกประชากรจะกลายเปนตวแทนของกลมค าตอบทงหมด เมอพจารณาคล าดบ ji X,X ของแตละตวแทน เขยนไดวา ji,X
มความนาจะเปนรวม )X|h(X ji เมอนบคล าดบนในกลมประชากรทด มจ านวน ji,r สมการการใหรางวลคอ
)1(,11 1
2,,
1
, jmr)(n
kr)(n
k+X=X
n
=m
mi,ji
t
ji
t
ji
mi,r คอชองอนๆทไมใช j
นพจน
n
=m
mi,r)(n
k
121
คอการลดคาชองอนๆลง
เชนเดยวกน สมการการลงโทษ เมอ jip , คอจ านวน ji X,X ทพบในกลมทไมด คอ
)2(,11 1
2,,
1
, jmp)(n
kp)(n
kX=X
n
=m
mi,ji
t
ji
t
ji
เมอรวมสมการ (1) และ (2) เขาไวดวยกน
)3(,11 1
2,,,
1
, jmpr)(n
kpr
)(n
kX=X
n
=m
mi,mi,jiji
t
ji
t
ji
มกฎบางขอเพมเตมในการ ส าหรบการปรบปรงคาความนาจะเปนรวมน เนอง
ดวยการปรบปรงคาความนาจะเปนรวมนนคอการเพม หรอ ลด ดวยอตราสวนคงท แตความนาจะเปนตองไมเปนคาตดลบ มากกวานนถาความนาจะเปนรวมไดถกเพมคาไปถงจดๆหนงแลวตองไมเพมคาขนอก เพอใหเหลอความนาจะเปนในการเลอกสมาชกตวอนดวย เพอใหสามารถสรางค าตอบทหลากหลาย 2.2 หนวยประมวลผลกรำฟกและ CUDA C
7
นบตงแตชดพฒนา CUDA (Compute Unified Device Architecture ) เปดตวเมอ เดอนพฤศจกายน ป 2006 ดวยสถาปตยกรรมทรวม CPU และ อปกรณประมวลผล GPU มารวมกนประมวลผล ใชฟงกชนทสามารถเรยกไดจาก CPU และท างานทอปกรณประมวลผล GPU จะถกเรยกพรอมกนเปนจ านวนตามทก าหนดดวยตวเลขของ บลอก และ เทรด ซงจ านวนทถกประมวลผลจรงในชวงเวลาหนงจะเปนไปตามจ านวนแกนของ GPU ทม
เทรด คอ หนวยยอยทสด ซงกลมของ เทรด จะอยภายได บลอก หนงและท างานภายในแกนประมวลผลเดยวกน สวน บลอก กลมของ บลอก เรยกวา กรด แตละบลอกสามารถถกประมวลผลแยกกนไปตามแกนทวางและพรอมประมวลผลได ดงนนงานทถกประมวลผลในแตละ บลอก นนควรจะเปนงานทไมเกยวเนองกน ภาพท 2 แสดงใหเหนถงภาพของการแบง บลอก และ เทรด โดยในภาพ บลอก ถกแบงออกเปน 2 มต และในแตละบลอกนนบรรจ เทรด ทสามารถอางถงดวยตวเลข 2 มตเชนกน
รปท 2-2 การแบง บลอกและเทรด โดยกลมของบลอกทอางถงโดยตวเลข 2 มตอยภายใตกรด
เดยวกน และในแตละ บลอก บรรจ เทรด ทอางถงดวยเลข 2 มต
สถาปตยกรรม SIMT (Single-Instruction, Multiple-Thread) ชดพฒนา CUDA นนไดถกสรางขนจากชดของสตรมมงมลตโพรเซสเซอรท
ท างานพรอมกน เมอชดค าสงจาก CPU เรยกไปยง GPU จ าวนของเทรดตอบลอกทก าหนดโดยโปรแกรมเมอร เทรดจะถกแบงออกเปนกลมตามจ านวนวารป ( วารป คอ กลมของเทรดทท างานพรอมกนหนงชด จ านวนของเทรดทอยในวารปนแตกตางกนไปตามรนของตวประมวลผลกราฟก ตวอยางเชนใน รนของความสามารถการค านวณ 2.x หนงวารปจะม 48 เทรด และในรนทต ากวาจะม 32 เทรด) จากนนมลตโพรเซสเซอรจะสราง จดการวางเสนทาง และสงใหกลมของเทรด
8
ท างาน ในเทรดแตละตวจะมตวนบโปรแกรมและรจสเตอรเกบสถานะของตวเองดงนนเทรดแตละตวจะสามารถท างานแตกตางจากเทรดอนทอยในวารปเดยวกนได
การท างานของแตละเทรดในวารปนนมความเกยวของทางดานประสทธภาพการท างาน เนองจากการท างานของเทรดทกตวในวารปจะเรมตนจากต าแหนงโปรแกรมเดยวกนและท างานตามชดค าสงทเหมอนกนไปเรอยๆ แตถามเทรดบางตวทตองท างานแตกตางจากเทรดตวอนเนองจากเงอนไขบางอยางเฉพาะตว มลตโพรเซสเซอรจะใหเทรดตวอนหยดรอ และปลอยใหเทรดตวทท างานแตกตางนนไดท างานของตวเองเสรจสน และเมอชดค าสงของเทรดตวนนเปนชดเดยวกบเทรดตวอน มลตโพรเซสเซอรจะสงใหเทรดทกตวท างานพรอมกนอกครง นคอความหมายของ Single-Instruction , Multiple-Thread ทหนงค าสงจะสงใหเทรดท างานพรอมกนหลายตว ดงทอธบาย หากวาการท างานของโปรแกรมมเงอนไขทท าใหบางเทรดในวารปตองท างานแตกตางจากเทรดตวอน ประสทธภาพการท างานของจะดอยลงเนองจากตองมการหยดรอกน จากสถาปตยกรรม SIMT นน โปรแกรมเมอรสามารถเขยนโปรแกรมในระดบของเทรดเพอใหเทรดท างานแบบขนานใหไดประสทธภาพการท างานสงสดได แตส าหรบการน าตวประมวลผลไปประยกตใชกบปญหาทเนนทางดานความถกตองมากกวา การท างานภายในของ SIMT นนอาจไมตองน ามาพจารณามาก
จ านวนของรจสเตอรและความจ ารวมเปนทรพยากรทจ ากด ดงนนจ านวนของบลอกและวารปทถกประมวลผลโดยมลตโพรเซสเซอร ณ เวลาหนงเองกถกจ ากดโดยจ านวนของรจสเตอรและความจ ารวมทมอยบนมลตโพรเซสเซอร ถาทรพยากรเหลานมไมเพยงพอทจะส าหรบเทรดทงหมดทอยในหนงบลอก การท างานนนจะลมเหลว สมการ (4) ,(5) ,(6) แสดงการค านวณจ านวนวารป จ านวนรจสเตอร และจ านวนความจ ารวมทใชในหนงบลอก
(
) (4)
คอ จ านวนเทรดตอบลอก
คอ ขนาดของวารป ซงในรนความสามารถการค านวณ 2.x เทากบ 48
( )คอ ท าให มคาใกลจ านวนเทาของ มากทสด ในสมการ
คอการท าให
มคาเปนจ านวนเทาของ 1
จากสมการท (4) จะไดจ านวนวารปในหนงบลอกมาซงจะใชน าไปหาจ านวนรจสเตอรและจ านวนความจ ารวมตอไปในสมการท (5) และ (6) ตามล าดบ
9
( ) (5)
คอ จ านวนเทรดนอยสดทสามารถจองได เทากบ 64 ส าหรบรนของความสามารถการค านวณ
คอ จ านวนรจสเตอรทถกใชโดยเคอรเนล จากสมการท (5) ถาจ านวนรจสเตอรทตองใชในหนงบลอกมากกวาจ านวน
รจสเตอรทมอยในมลตโพรเซสเซอร จ านวนของวารปตอบลอกจะถกลดลงในตอนค านวณจรงเพอใหโปรแกรมสามารถท างานได
( ) (6)
คอ จ านวนของความจ ารวมทถกใชโดยเคอรเนลมหนวยเปนไบท
คอ จ านวนความจ ารวมทนอยทสดทสามารถจองได มขนาด 128 ไบทส าหรบรนของความสามารถการค านวณ 2.x
สงเกตไดวาหากจ านวนเทรดตอบลอกทโปรแกรมเมอรก าหนดใหในกบเคอรเนล
นนไมเปนจ านวนเทาของจ านวนวารปสงสดตามรนของความสามารถการค านวณของตวประมวลผลกราฟก เชน รนของความสามารถการค านวณ 2.x มจ านวนวารปสงสด 48 จะท าใหเหลอเศษและตองปดเปนจ านวนวารปตอบลอกขนอกหนงคา ตวอยางเชน จ านวนเทรดตอบลอกคอ 49 จากสมการ (4) เราจะไดจ านวนวารปตอบลอกเปน 2 ท าใหการจองรจสเตอรและความจ ารวมเพมขนอยางมาก ซงจะมผลใหความสามารถในการค านวณของมลตโพรเซสเซอรลดลง ชนดของความจ าในอปกรณประมวลผล ในอปกรณประมวลผลกราฟกนนมชนดของความจ าอยจ านวนหนง ผ เขยนโปรแกรมสามารถเลอกใชเพอเพมอตราสวน CGMA (Compute to global memory access) ซงเปนจ านวนตวเลขทศนยมทบอกถงประสทธภาพของการสงผานขอมลในความจ าทวไป ( global memory )
10
รปท 2-3 ความจ าในอปกรณประมวลผลกราฟก GeForce 8800 GTX
จากรปท 2-3 ดานลางสดของรปจะเหนไดวาโฮสจะอานและเขยนขอมลไปทความจ าทวไป ( Global Memory)หรอ ความจ าคงท ( Constant Memory ) โดยการเรยกจาก API ฟงกชน ความจ าแบบคงทจะถกอานอยางเดยวซงจะถายโอนขอมลไดเรวกวาในบางกรณเนองจากมการแคชขอมลและสามารถถกเขาถงแบบขนานไดดกวาความจ าทวไป เหนอเทรดขนไปเปนรจสเตอรและความจ ารวม ตวแปรทอยในหนวยความจ านจะสามารถอานและเขยนแบบขนานไดอยางรวดเรว รจสเตอรจะถกจองไวใหกบเทรดเปนรายตว เทรดแตละตวสามารถเขาถงรจสเตอรของตวเองไดเทานน โดยปกตแลวในการประมวลผลเคอรเนลในแตละครง รจสเตอรจะถกใชเกบตวแปรทมการใชบอยครงและเขาถงไดจากเทรดทเปนเจาของเทานน ความจ ารวมจะถกจองไวส าหรบกลมของเทรด เทรดทกตวทอยในกลมเดยวกนจะสามารถเขาถงความจ ารวมของกลมตวเองไดเทานน ซงความจ ารวมนมประโยชนในการแลกเปลยนขอมลระหวางเทรดในกลมเดยวกนได การใชงานความจ าใหเกดประสทธภาพสงสด
ในภาพรวมของการใชงานความจ าใหเกดประสทธภาพสงสดนนคอการพยายามลดการสงผานขอมลในเสนทางทมความกวางของชองทางในการรบสงขอมลต า (low bandwidth) เชนการสงผานขอมลระหวางอปกรณประมวลผลกราฟกกบโฮส ซงมความกวางของชองทางในการรบสงขอมลต ากวาชองทางการสงผานขอมลระหวางความจ าทวไปภายในอปกรณประมวลผลกราฟกเอง และนอกจากการลดการสงผานขอมลระหวางอปกรณและโฮสแลว การใชความจ าอยางมประสทธภาพยงสามารถท าไดโดยการเพมการสงผานขอมลระหวางความจ าทวไปและความจ า
11
ภายในหนวยประมวลผลกราฟก คอ ความจ ารวม ( Shared memory ) ซงเปนหนวยความจ าทอยตดกบหนวยประมวลผลและมความเรวในการสงผานขอมลทรวดเรว เราสามารถพจารณาการเขาถงของความจ าแตละชนดในเชงลกเพอใหเขาใจการท างานและสามารถออกแบบการอานเขยนหนวยความจ าแตละชนดเพอใหเกดประสทธภาพสงสดไดดงน ความจ าทวไป ( Global Memory ) ดงกลาวขางตนวาการสงขอผานขอมลทมประสทธภาพคอการสงผานทเปนกลมกอน (Coalesce) ถาขนาดของขอมลทสงผานแตละครงมขนาดไดใกลเคยงกบขนาดสงสดของอตราการสงผานขอมลสงสดได ยงจะท าใหเกดประสทธภาพมากขนเทานน ในการเขาถงความจ าสามารถสงขอมลดวยขนาด 32, 64 หรอ 128 ไบท โดยปกตแลวความจ าจะเรยงตอกนเปนจ านวนเทาของ 32 ,64, 128 ไบท เมอวารปหรอกลมของเทรดไดประมวลผลค าสงหนงค าสงเพอเขาถงความจ าทวไป การสงผานขอมลแบบกลมกอนจะเกดขนไดหรอไมขนอยกบจ านวนไบททเทรดแตละตวในวารปอานหรอเขยนขอมลวาเปนจ านวนเทาของ 32, 64 หรอ 128 ไบทหรอไม และอยกระจายกนในความจ าทวไปมากนอยแคไหนยงขอมลถกกระจายออกเปนสวนๆ มาก ท าใหจ านวนครงในการรองขอการอานเขยนขอมลจะถกแบงออกเปนหลายครงมากขน ท าใหการสงผานขอมลไมมประสทธภาพ เชน ถาขนาดของการสงผานเปน 32 ไบท และแตละเทรดถงขอมลครงละ 4 ไบท ดงนนปรมาณงานทท าไดคอ คอ 8 จ านวนครงในการสงผานขอมลและปรมาณงานทท าไดนนขนอยกบรนของความสามารถในการค านวณของอปกรณประมวลผลกราฟก ส าหรบรนของความสามารถในการค านวณ 1.0 และ 1.1 นน หากวาขอมลทแตละเทรดตองการนนอยกนอยางกระจดกระจายในหนวยความจ าจะท าใหการสงผานขอมลแบบกลมกอนนนเกดขนไดยาก แตส าหรบรนของความสามารถในการประมวลผล 2.x จะมการเกบขอมลทไดอานหรอเขยนมากอนหนานหรอ cache ท าใหลดผลกระทบจากการกระจายตวอยของขอมลในหนวยความจ าและเพมปรมาณงานทท าได เพอเพมปรมาณงานทท าไดของความจ าทวไป จะตองเพมการสงผานขอมลแบบกลมกอนใหมากทสดโดยวธการดงน
ปรบแตงการเขาถงขอมลใหมรปแบบทแนนอนใหมากทสด เชน ในกรณรนความสารมารถของการประมวลผล 1.2 ขนไป การเรยกอานขอมลของแตละเทรด ควร
12
มขนาด 32 ไบทส าหรบการเขาถงขอมลทละ 8 บต ,64 ไบทส าหรบ 16 บต และ 128 ไบท ส าหรบ 32,64,128 บต
รปท 2-4 รปแบบการเขาถงต าแหนงขอมลแบบเรยงตวทอยภายใน 128 ไบทเดยวกนและไมอยภายใน 128 ไบทเดยวกน
จากรปท 2-4 บนจะเหนไดวาการสงผานขอมลจะเกดขนครงเดยวและมขนาด 128 ไบท ถาต าแหนงขอมลทรองขออยภายใน 128 ไบทเดยวกน และรปลางถาต าแหนงขอมลทรองไมอยภายใน 128 ไบท เดยวกน จะเกดการรองขอขอมลสองครงแทนทจะเปนครงเดยวเหมอนกรณรปบน
13
รปท 2-5 ประสทธภาพของการคดลอกขอมลตามระยะหางจากต าแหนงเรมบน GTX 280 และ
GTX 8800 จากรปท 2-5 จะเหนไดวาทต าแหนงทระยะหางเปน 0 หรอ ท 16 ไบท การสงผานขอมลจะมประสทธภาพทสดเนองจากใชการสงผานครงเดยวท าใหอตราการสงผานขอมลสงถง 74 GBps ขณะทระยะหางอนซงไมเปนจ านวนเทาของ 16 ไบทอตราการสงผานขอมลลดลงเหลอเพยง 7 GBpsหรอ ประสทธภาพลดลงประมาณ 8 เทา จากกราฟทแสดงใหเราเหนไดวาถงแมจะมรปแบบในการเขาถงขอมลแลวแตถาต าแหนงการเขาถงขอมลไมเปนจ านวนเทาทเหมาะสมแลว อตราการสงผานขอมลจะลดลงอยางมาก ในรนความสารมารถการค านวณ 2.x นนปญหานจะนอยลงเนองจากมการแคชขอมลทเคยอานมากอนไว ท าใหตองมการสงผานขอมลเฉพาะทไมมอยในแคช
ใชชนดของตวแปรทสามารถก าหนดการเรยงตวในหนวยความจ าได ค าสงในการเขาถงขอมลทงอานและเขยนขอมลบนความจ าทวไปนน
สนบสนนการรองขอขอมลทขนาด 4, 8, 16 ไบท ถาขอมลของตวแปรตวหนงมต าแหนงบนหนวยความจ าไมเรยงกน ค าสงในการเขาถงจะถกแยกออกเปนหลายค าสงแทนทจะเปนค าสงเดยว
14
ดงนนเพอท าใหแนใจวาตวแปรเรยงตวในหนวยความจ าเปนขนาด 2, 4, 8 หรอ 16 ไบทตามทตองการ การใชตวแปรทใหมากบชดพฒนา เชน __align__(8) ,__align__(16) ตวอยางการใช คอ
struct __align__(8) { float x; float y; };
เตมขอมลสวนทขาดส าหรบการเขาถงในบางกรณ ในกรณทความจ าทวไปถกใชเพอเกบขอมลแบบอะเรยสองมต และความ
กวางของอะเรยไมเปนจ านวนเทาของขนาดวารป การเขาถงในการอานเขยนขอมลจ าไมมประสทธภาพ แตยงมวธทเขาถงหนวยความจ าไดอยางมประสทธภาพโดยการใชฟงกชน cudaMallocPitch() และ cuMemAllocPitch() และ ฟงกชนส าเนาความจ าทเกยวของ ผ เขยนโปรแกรมกสามารถจองหนวยความจ าดวยวธนเพอเพมความสามารถในการอานเขยนหนวยความจ าใหมประสทธภาพได
รปท 2-6 การเขาถงหนวยความจ าทวไปดวยขนาด 4, 8 และ 16 ไบท
จากรปท 2-6 แสดงการเขาถงความจ าทวไปดวยขนาด 4, 8, และ 16 ไบท การเขาถง
ขอมลทอยในความจ าทวไปดวยขนาดไบททมากขนจะท าใหปรมาณขอมลทสงผานไดตอวนาท
15
มากขนตามแกนนอน สวนแกนนอนแสดงจ านวนเทรดทรองขอขอมลซงจ านวนเทรดทมากขนจะท าใหปรมาณการสงผานขอมลมมากขนเชนกน
ความจ ารวม ( Shared Memory ) ความจ ารวมเปนหนวยความจ าซงอยบนชพ หรออยใกลกบตวประมวลผลดงนน
มนจงท างานไดเรวกวาความจ าภายใน ( local memory ) และความจ าทวไป ( global memory ) ความเรว
เพอใหสามารใชความเรวในการสงผานขอมลสงสดและการเขาถงแบบพรอมกน ความจ ารวมจะถกแบงออกเปนโมดลขนาดเทาๆกนเรยกวาแบงค ซงท าใหสามรถเขาถงไดพรอมๆกนได ดงนนถามการอานหรอเขยนต าแหนงความจ าท n ซงอยตางแบงคกนจะสามารถเขาถงไดพรอมๆกนท าใหอตราการสงผานขอมลสง
รปท 2-7 การเขาถงแบงคของความจ ารวม ดานซายแสดงการเขาถงแบงคปกต รป
ดานขวาแสดงการเขาถงแบงคทขดแยง อยางไรกตาม ถามการอานหรอเขยนขอมลบนแบงคเดยวกน จากหลายเทรด
พรอมๆกน เรยกเหตการณนวาการเขาถงแบงคทขดแยง ดงรปท 2-7 เมอมการเขาถงแบงคเดยวกน การรองขอจะถกแบงออกเปนหลายค าสง เพอรอควกนในการใชความจ า ดงนนปจจยทมผลในการลดอตราการสงผานขอมลในกรณความจ ารวมคอจ านวนของการรองขอทถกแบงออกมา ขอยกเวนอยางเดยว คอ ถาเทรดทรองขอไปยงทแบงคเดยวกนเปนเทรดทอยในวารปเดยวกน จะไมเกดการขดแยงแตจะมการกระจายขอมลต าแหนงทรองขอไปยงทกเทรดพรอมกนแทน
16
เพอลดเหตการณของการเขาถงทขดแยงของแบงค ตองเขาใจลกษณะการเขาถงแบงคจากเทรดในวารป
แบงคของความจ ารวมจะถกแบงออกใหมขนาด 32 บตและแตละแบงคจะมอตราการสงผานขอมล 32 บตตอหนงรอบนาฬกาหนวยประมวลผล ส าหรบรนความสามารถในการประมวลผล 1.ทขนาดวารป 32 เทรดและจ านวนของแบงเปน 16 การรองขอในการใชความจ าจะถกแบงออกเผนสองค าสง อนแรกเปนของครงแรกของวารปและอกค าสงส าหรบครงหลงของวารปและจะไมเกดการขดแยงในกรณทแตละครงวารปเขาถงความจ าทต าแหนงเดยวกน
ส าหรบรนความสามารถการประมวลผล 2.x ขนาดของวารปเปน 32 เหมอนกนแตขนาดของแบงคเปน 32 บต ดงนนค าสงในการเขาถงแบงคจะไมถกแบงออกเปนสองค าสงเหมอนในรนความสามารถการประมวลผล 1.x ดงนนกรณทเกดการขดแยงไดจะสามารถมาจากทงสองครงวารป
ความจ าภายใน ( local memory ) ความจ าภายในนนสามารถถกเขาถงไดเฉพาะเทรดทจองเทานน ทเปน
เชนนไมไดเปนเพราะมนอยใกลหนวยประมวลผล อนทจรงแลวมนอยภายนอกตวชพ ( off-chip ) ดงนนการใชความจ าภายในนนคอนขางชา และเปรยบเสมอนการเขาถงความจ าทวไป ทไมมการแคชบนรนความสามารถการประมวลผล 1.x ดงนนความจ าภายในนนไมไดมความเรวในการเขาถงดงเชนชอของมนในรนความสามารถการประมวลผล 1.x หนาทของความจ าภายในนนถกใชเกบคาตวแปรทเกดขนโดยอตโนมตซงเปนหนาทของ nvcc ทจะตดสนวามรจสเตอรเพยงพอทจะเกบตวแปรใหมหรอไม โดยปกตแลว nvcc จะเกบตวแปรทมขนาดใหญ เชน ตวแปรโครงสราง หรออะเรย ซงพนทของรจสเตอรอาจมไมเพยงพอตอการเกบคาของตวแปร และตวแปรเองอาจมการขยายขนาดภายหลง ในการดวา nvcc ตดสนใหตวแปรใดใชความจ าภายใด สามารถดไดจากผลลพธหลงการคอมไพลโปรแกรมทออกมาเปน PTX assembly (โดยเตมตวเลอกการคอมไพล –ptx เพมใหกบ nvcc) หลงจากการคอมไพลสวนแรก ถามการใชความจ าภายในเกดขนจะถกแสดงดวย .local ถาพบวาไมมการจองความจ าภายในในการคอมไพลสวนแรก อาจจะมการจองเปนความจ าภายในในภายหลงไดเนองจากขนาดของขอมลทเพมขนจนใหญเกนกวารจสเตอรจะเกบได การตรวจสอบวาตวแปรนนๆจะถกจองในหนวยความจ าภายในหรอไมนนไมสามารถท าได แตสามารถดไดในภาพรวมของดวยการใสตวเลอกในการคอมไพล –ptxas-options=-v
17
ความจ าเทกเทอร (Texture Memory) ความจ าเทกเทอรเปนความจ าชนดอานอยางเดยวและมแคช ดงนนตว
ประมวลผลจะใชการอานเสยเวลาในการอานขอมลจากความเทกเทอรเพยงครงเดยวในตอนแรกหรอตอนทหาขอมลไมพบในแคช หลงจากนนตวประมวลผลจะอานขอมลจากแคชเพยงอยางเดยวท าใหใชเวลาในการอานนอยเมอขอมลไมมการเปลยนแปลงบอย ตวเทกเทอรแคชนนถกปรบแตงเพอใหเขากบภาพสองมต ดงนนเทรดทอยในวารปเดยวกนและอานความจ าเทกเทอรทต าแหนงเดยวกนจะเขาถงหนวยความจ าอยางมประสทธภาพ
ความจ าคงท (Constant Memory) มขนาด 64 กโลบตและไมไดอยบนชพ (off-chip) ลกษณะของความจ า
คงทคอมการแคชขอมลเหมอนกบความจ าเทกเทอรทจะมการอานขอมลมาใหมเฉพาะขอมลทหาไดจากแคชของมนท าใหท างานไดเรวในกรณทไมมการเปลยนแปลงขอมลบอย
การอานขอมลจากแคชของความจ าคงทมความเรวพอๆกบการอานขอมลจากรจสเตอรทเดยวบนเงอนไขทวาทกเทรดทอยในครงวารปอานขอมลทต าแหนงเดยวกน ส าหรบการอานขอมลทอยตางต าแหนงกนการเขาถงจะเปนไปในลกษณะอนกรม ดงนนความเรวในการอานเขยนขอมลของเทรดจะแปรผนกบจ านวนต าแหนงทแตกตางของความจ าทเขาถงจากเทรด
รจสเตอร (Register) โดยทวไปการเขาถงรจสเตอรจะใชเวลาเปนศนยตอการท างานหนงค าสง
แตบางครงอาจมความชาไดเนองจาก รจสเตอรอาน หลงจากมการเขยนขอมลหรออาจเปนการขดแยงของการเขาถงแบงคของรจสเตอร
การคางของการอานหลงการเขยนจะมระยะเวลาประมาณ 24 รอบนาฬกา แตการคางนแทบจะมองไมเหนเนองจากในกลมของตวประมวลผลจะมอยางนอย 192 เทรดทท างานอย (เทากบ 6 วารป) ส าหรบรนความสามารถการประมวลผล 1.x ส าหรบรนความสามารถการประมวลผล 2.0 นนมเทรด 768 ซงยงท าใหการคางแทบจะไมมเลย ตวคอมไพลและจดการตารางของเทรดจะจดตารางขอค าสงเพอหลกเลยงการเกดการขดแยงของแบงค มนจะท าไดดทสดถาจ านวนของเทรดตอบลอกเปนจ านวนเทาของ 64
ภาวะกดดนของรจสเตอร เปนชอเรยกของเหตการณทไมมรจสเตอรเพยงพอตองานท าปอนเขาไปยงตวประมวลผลถงแมวาตวประมวลผลนนจะมรจสเตอร 32 บต อยจ านวนหลกพน เพราะวารจสเตอรเหลานตองถกแบงโดยเทรดจ านวนมากเชนกนทอยบนตว
18
ประมวลผลนน เพอปองกนเหตการณน สามารใสตวจ ากดจ านวนรจสเตอรทใชไดโดยใสmaxrregcount=N โดยท N คอจ านวนรจสเตอรสงสดทใหใชได
ใน GPU นนมหนวยความจ าหลายระดบแตท GPU ใชตดตอกบ CPU นนจะท าผานความจ าทวไปซงการเขาแลกเปลยนขอมลจะชากวาหนวยความจ าทอยกบหนวยประมวลยอยแตละตว ซงถกเรยกวา ความจ ารวมซงหนวยความจ านจะอยตดกบหนวยประมวลผลยอยแตละตวท าใหการแลกเปลยนขอมลสามารถท าไดดวยความเรวกวาความจ าทวไปและทก เทรด ภายในหนวยประมวลผลยอยนนสามารถเหนและแลกเปลยนขอมลระหวางเทรด ดวยความจ ารวมนได การเขยนโปรแกรมใหยายขอมลทตองเรยกประมวลผลมากหรอบอยใหมาอยทความจ ารวมแทนกเปนการเพมความเรวใหกบการประมวลผลดวยเชนกน
การน า GPU ประยกตเขากบงานทวหรอ General Purpose computing on Graphics Processing Units (GPGPU) ชดพฒนาของ NVidia น ท าใหเราสามารถใชประโยชนของสถาปตยกรรมทออกแบบมาส าหรบการประมวลผลแบบขนาน มาชวยเพมความเรวในการค านวณงานทสามารถออกแบบใหอยในรปแบบขนานได ดวยการใชภาษา C ในการเขยนโปรแกรมท าใหนกพฒนาเรยนรเพมเตมอกเลกนอยกสามารถเขยนโปรแกรมไดดวยโมเดลการเขยนโปรแกรมแบบขนานทถกออกแบบมาส าหรบการแกปญหาโดยใชหลกสามอยาง คอ การแบงงานออกเปนกลมของ เทรด , ความจ ารวม และ การ synchronization การแบงงานทไมเกยวเนองหรอไมขนตอกนไปยงแตละบลอกและการแบงปญหายอยทตองใชการตดตอแลกเปลยนขอมลกนใหอยในรปแบบ เทรด ในแตละบลอกอกท ซง synchronization จะเขามาเพอท าใหแนใจวางานทก าลงด าเนนอยในแตละ เทรด จะมาหยดพรอมกนทจดทเราก าหนด เราจงไดเหนงานวจยทน า GPU มาใชงานกบ ขนตอนวธ ทเปนทรจกและสามารถเพมความเรวใหกบวธขนตอน เหลานนได เชน งานวจยดงตอไปน
Jun Li [6] ทน าความสามารถในการค านวณททรงพลงของ GPU มาประยกตใชกบขนตอนวธเชงคาดการณลวงหนา-ยอนหลง (forward-backward) ซงมความซบซอนเชงเวลาเทากบ โดยขนตอนแรกคอออกแบบการท างานแบบขนานใหขนตอนการหาความนาจะเปนใหกบการคาดการณลวงหนาแตละเสนทาง และขนตอนทสองคอการรวมคาความนาจะเปนทงหมดดวยวธแบบขนานอกครง ในงานวจยยงไดใชประโยชนจากความเรวของหนวยความจ าทเรวกวาหนวยความจ าบน CPU เพอเพมความเรวขนอก งานวจยนสามารถเรงความเรวใหกบ Hidden Markov Models ได 4-25 เทา
19
งานของ Stefano [7] ทน า GPU มาเรงความเรวของโครงขายประสาทเทยม (Artificial Neural Network) ในงานการเรยนรจ าเสยงโดยใชกระบวนการฝกฝนแบบสงคายอนกลบ (back-propagation) งานวจยไดท าการเรยนรโดยใชแบบจ าลองของเสยงทมค าศพทขนาดใหญ ในงานวจยไดแสดงการเปรยบเทยบความเรวทไดจากการใชมลตเทรดบนหนวยประมวลผลหลายแกนกบความเรวทไดจากตวประมวลผลกราฟก ซงแสดงใหเปนวาสามารถลดเวลาทตองใชในการเรยนรชดค าศพทขนาดใหญนลงได 6 เทา
งานของ Hongwei [8] ทน า GPU มาเรงความเรวของ Message Digest algorithm 5(MD5) ดวยการออกแบบเปนสองขนตอน ขนตอนแรกคอการประมวลผลเบองตนของ ขอความเชนการส ารวจเขาไปในขอความเพอหาชดของตวอกษรทจะเขารหสและหาความยาวของขอความ ขนตอนทสองคอการเขารหสพรอมๆกนหลายขอความ โดยหนงเทรดแทนการท างานของการเขารหสใหกบหนงขอความ งานวจยไดแสดงใหเหนวาสามารถเพมความเรวไดมากกวา 10 เทาของการท างานบน CPU
20
บทท 3
วธด ำเนนกำรวจย ความสามารถในการประมวลผลแบบขนานของหนวยประมวลผลกราฟก สามารถ
น ามาประยกตใชกบขนตอนวธอบตการณรวมกนเพอเพมความเรวไดดวยการศกษาและปฏบตตามแนวทางดงตอไปน 3.1 กำรค ำนวณประสทธภำพกำรใชงำนหนวยประมวลผลกรำฟก
หนงในความสามารถของหนวยประมวลผลกราฟก คอ การทหนวยประมวลกราฟกออกแบบมาเพอการค านวณปรมาณมาก โดยการจดวางหนวยความจ าทตดอยกบแตละหนวยประมวลผล ดงนนการทใชหนวยประมวลผลไดอยางเตมความสามารถ จ านวนเทรดตอบลอกเปนปจจยหนง จ านวนเทรดตอบลอกทสอดคลองกบจ านวนของหนวยประมวลผลจะแตกตางกนไปตามรนของความสามารถในการค านวณของอปกรณประมวลผลกราฟก
รปท 3-1 ตารางการค านวณการครอบครองหนวยประมวลผลกราฟกของ NVIDIA
21
ส าหรบการค านวณจ านวนเทรดตอบลอกนน ชดพฒนาของ NVIDIA ไดใหเครองมอซงเปนตารางค านวณการครอบครองหนวยประมวลผลกราฟกมาดงรปท 3-1 โดยการใชเบองตนคอ
1. เลอกรนของความสามารถในการค านวณของอปกรณประมวลผลกราฟกใหตรงกบรนของอปกรณประมวลผลกราฟกทใช ซงรนของความสามารถในการประมวลผลทสงกวาหรอเทากบ 2 นน จะตองเลอกหนวยความจ ารวมกนทตรงกบรนของอปกรณประมวลผล
รปท 3-2 ตวอยางขอความทไดจากการคอมไพลเคอรเนล SortFitness ดวยตวเลอกการคอมไพล --ptxas-options=-v จะไดจ านวนรจสเตอรทใชไป 15 รจสเตอรและหนวยความจ ารวมกนทใชไป 16 ไบท
2 ใสจ านวนรจสเตอรและหนวยความจ ารวมกนส าหรบแตละเคอรเนลทได
จากขนตอนการคอมไพลโปรแกรมดวยตวเลอกการคอมไพล --ptxas-options=-v เพอใหตวคอมไพล nvcc แสดงรายละเอยดของรจสเตอรและหนวยความจ ารวมกนออกมาดงรปท 3-2 เตมตวเลขรจสเตอรในชอง Registers Per Thread ส าหรบตวเลขของหนวยความจ ารวมกนทแสดงออกมาในขนตอนคอมไพลโปรแกรมนนเปนจ านวนหนวยความจ ารวมกนทระบจ านวนทแนนอนทยงไมนบรวมหนวยความจ ารวมกนแบบภายนอกซงใชตวก าหนดชนดของตวแปรแบบ extern __shared__ ซงผ ใชตองนบเองวาใชหนวยความจ ารวมกนในแตละเคอรเนลไปเปนจ านวนเทาไหรลงไปยงชอง Shared Memory Per Block (bytes)
1>ptxas info : Compiling entry function
'_Z14SortFitnessGPUiiP9stFitnessPiS1_S1_' for 'sm_20'
1>ptxas info : Function properties for
_Z14SortFitnessGPUiiP9stFitnessPiS1_S1_
1> 0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
1>ptxas info : Used 15 registers, 16+0 bytes smem, 72 bytes cmem[0],
16 bytes cmem[14]
22
รปท 3-3 กราฟแสดงการครอบครองของหนวยประมวลผล
3. ปรบจ านวนเทรดตอบลอกในชอง Threads Per Block เพอใหไดคาการ
ครอบครองมากทสด เพอใหการใชหนวยประมวลผลมประสทธภาพมากทสดจากรปท 3-3 จ านวนเทรดตอบลอกทท าใหจ านวนเหมาะสมทสด 48 วารป (จะแตกตางตามรนของอปกรณประมวลผลกราฟก) คอทจ านวนเทรดตอบลอกเทากบ 192 ,256 ,384 ,512 และ 768
ส าหรบการค านวณการครอบครองนนเปนเพยงวธหนงทท าใหประสทธผลการประมวลมากขนแตความเรวในการประมวลผลกยงขนอยกบปจจยอนๆ อยางเชน การจดเกบขอมลในหนวยความจ า ซงถาสามารถจดวางใหเรยงตอกนจะท าใหอตราการอานหรอเขยนขอมลมประสทธภาพสงขน 3.2 กำรก ำหนดตวแปรและคำเรมตน
การก าหนดตวแปรทเปนแบบทวไปซงตองใชแลกเปลยนขอมลทงอานและเขยนในการท างานของเคอรเนลทเกยวของ เมอเราพจารณาขนตอนทง 5 ขนตอนแลวเราจะพบวาจะตองมตวแปรทวไปทส าคญดงน
1. ตวแปรส าหรบเกบตาราง จะถกอานในขนตอนการก าเนดประชากรและจะถกเขยนเมออยในขนตอนปรบปรงตวก าเนด
23
A B
C DB C D
A
C D
C
1st Path
A C D
B
A D
C
2nd
Path
m path
…
2. ตวแปรส าหรบเกบประชากร ในขนตอนก าเนดประชากรจะสรางประชากรซงเปนล าดบของเมองทตอเนองกนและน าล าดบนไปเกบในตวแปรส าหรบเกบประชากร ตวแปรนจะถกน าไปใชอกครงในขนตอนการปรบปรงประชากร
3. ตวแปรส าหรบเกบระยะทางระหวางเมอง ตวแปรนจะถกอานโดยเคอรเนลทท าหนาทรวมระยะทางของล าดบเมองทถกสรางจากขนตอนก าเนดประชากร
3.3 กำรประยกตขนตอนวธอบตกำรณรวมกนบนหนวยประมวลผลกรำฟก
ขนตอนวธอบตการณรวมกนแบงออกเปน 5 ขนตอนหลกเชนกนและน ามาออกแบบการท างานแบบขนานไดดงน 3.3.1 กำรก ำหนดคำเรมตน
ในขนตอนนการท างานไมตางจากทกลาวถงในทฤษฏซงจะท างานครงเดยวตอนเรมตน จงไมมการออกแบบใดๆ เพอเพมความเรวและขนตอนนจะประมวลผลบนหนวยประมวลผลกลางตามปกต 3.3.2 กำรสรำงกลมของประชำกร
ก. ลกษณะงาน ขนตอนวธจะสรางค าตอบซงเปนล าดบงานยอยทเรยงตอกนออกมาจ านวนหนง
จากการสมเลอกแตละโหนดตามความนาจะเปนทอยใน ตวก าเนด เมอเปรยบเทยบกบปญหา TSP ค าตอบคอ ล าดบของเสนทางทสามารถผานทกเมองไดโดยไมยอนกลบมายงเมองทไปมาแลว
ภาพท 3-4 (ก) แสดงเสนทางระหวางเมองในปญหา TSP (ข) แสดงการสรางค าตอบซงเปนเสนทางจากเมองสเมองจ านวน m เสนทาง
(ก) (ข)
24
ข. การแบงงาน ในขนตอนน งานทเกยวของคอการสมหาเสนทางตามความนาจะเปนทอยในตว
ก าเนด เมอพจารณาความเกยวของของงานในการหาเสนทางแตละเสนทางแลว สามารถพจารณาไดวาไมมความเกยวเนองของกน โดยการหาเสนทางแตละเสนจะใชเฉพาะขอมลความนาจะเปนจากตวก าเนด รวมกนและไมมการเขยนคาใดๆ กลบลงไปยงตวก าเนด ดงนนเราสามารแบงงานออกใหอยในรปของบลอกและเทรด โดยแตละเทรดจะท าการก าเนดเสนทางเปนอสระโดยไมเกยวของกบเทรดอน
b blocks
t threads
Generating
a population
Generating
a population
Generating
a population
Generating
a populationGen...
Generating
a population
Generating
a population
Generating
a population
Generating
a populationGen...
Generating
a population
Generating
a population
Generating
a population
Generating
a populationGen...
รปท 3-5 การแบงงานของการก าเนดเสนทางออกเปน b บลอก และ t เทรด โดยงานในแตละเทรดนนท างานเปนอสระไมเกยวของกบเทรดอนทงในบลอกเดยวกนและตางบลอก
ส าหรบการหาจ านวนเทรดทเหมาะสมในแตละบลอกนนยงคงใชตารางค านวณ
“CUDA Occupancy Calculator” โดยปอนขอมลรจสเตอรและหนวยความจ ารวมกนทไดออกมาจากการคอมไฟลรหสตนฉบบของโปรแกรม จากนนตารางจะแสดงจ านวนเทรดตอบลอกทเหมาะสมทสดออกมาบนกราฟ ใหเราเลอกจ านวนเทรดตอบลอกทมการครอบครองหนวยประมวลผลมากทสดมา ส าหรบจ านวนบลอกคอการน าจ านวนประชากร m ประชากรมาหารดวยจ านวนเทรด t ดงนนจะได
เมอเราก าหนดจ านวนบลอกและเทรดแลวจะสรางเทรดออกมา
ทงหมด b×t ตว ดงนนเคอรเนลการก าเนดประชากรจะถกเรยกเปนจ านวนเทากน ขนตอนการท างานของเคอรเนลสามารถเขยนเปนล าดบไดดงน
25
1. สมตวเลขเพอหาเมองแรก โดยสมจากความนาจะเปน
( ) ทซง
คอจ านวนเมอง 2. วนรอบตามจ านวนเมองทเหลอ รอบ
ก. สมตวเลขเพอหาเมองถดไป โดยดวาตวเลขทไดมาตกอยในชวงความนาจะเปนรวม ( | ) ของ ใดๆ
ข. ลบเมองทเลอกแลวออกจากเมองทสามารถเลอกได ค. วนซ าจนครบตามจ านวนรอบ
3. สงค าตอบซงอยในรปของล าดบเมองกลบไปเกบทตวแปรแบบทวไป 3.3.3 กำรประเมนคำควำมเหมำะสมของประชำกรแตละตว ก. ลกษณะงาน การประเมนคาความเหมาะสมของประชากรคอการหาคาความเหมาะสม (Fitness) ของแตละค าตอบ ซงประเมนไดจากฟงกชนคาความเหมาะทจะแตกตางกนไปตามลกษณะปญหา หากเปรยบเทยบกบปญหา TSP ในขนตอนนคอการหาระยะทางรวมของล าดบเมองทสรางจากขนตอนก าเนดประชากร โดยน าเอาระยะทางระหวางเมองมารวมกนออกมาเปนคาความเหมาะสมของแตละเสนทาง
A->C
4
C->D
6
D->B
4
B->E
6
E->A
7
C->B
3
B->A
1
A->E
7
E->D
6
D->C
2
C->D
2
D->E
6
E->A
7
A->B
1
B->C
3
+ + + +
+ + + +
+ + + +
……...
……...
……...
27
19
19
รปท 3-6 การค านวณระยะทางรวมของแตละเสนทสรางขนมาจากขนตอนสรางประชากร
ข. การแบงงาน การกระจายงานทสามารถท าไปพรอมกนเปนวธทท าใหการประมวลผลรวมนนมความเรวทสด สามารถแบงงานของการรวมระยะทางของแตละเสนทางใหไปอยใน บลอกและเทรด โดยการค านวณหาจ านวนเทรดตอบลอกทเหมาะสม ใชการปอนคารจสเตอรและ
26
หนวยความจ ารวมทถกใชไปในเคอรเนลนซงหาไดจากการขนตอนการคอมไฟลโปรแกรมลงไปยงตาราง “CUDA Occupancy Calculator” ทายทสดกราฟจะแสดงคาเทรกตอบลอกทเหมาะสม
A->C
4C->D
6
D->B
4
B->E
6E->A
7
C->B
3B->A
1A->E
7E->D
6
D->C
2
C->D
2D->E
6E->A
7A->B
1
B->C
3
+ + + +
+ + + +
+ + + +……...
……...
……...
27
19
19
t
threads
b blocks
t
threads
รปท 3-7 การแบงงานของการประเมนคาความเหมาะสมของ m เสนทาง ไปยง m บลอก และ
ภายในแตละบลอกแบงเปน n+1 เทรด
สามารถแบงงานของการประเมนคาความเหมาะสมออกไดเปน b บลอกและ t เทรด โดยจ านวนของบลอกหาไดจากการน าจ านวนประชากรทงหมดหารดวยจ านวนเทรดตอบลอก
โดย m จ านวนประชากร ส าหรบขนตอนการท างานยอยในแตละเทรดหรอแต
ละเคอรเนลของการประเมนคาความเหมาะสมมดงน 1. วนรอบเปนจ านวน เมอง 2. อานคล าดบของเมอง จากตวแปรทวไปทเกบประชากร 3. อานคาระยะทางระหวางเมองของ จากตวแปรทวไปทเกบ
ระยะทางระหวางเมอง 4. บวกระยะทาง 5. เรมขนตอนสาม โดยเลอนไปยงคล าดบถดไป i = i + 1 จน รอบ
3.3.4 กำรเรยงคำควำมเหมำะสม ในการเรยงล าดบคาความเหมาะสมน เราไดเลอกการเรยงล าดบแบบประสารเพราะมความเรวในการเรยงล าดบเรวทสดแบบหนง คอ O(n log n) ส าหรบขอมล n ตว
ก. ลกษณะงาน จากหวขอท 3.3.3 หลงจากทเราได ขอมลชดหนงทเกบคาความเหมาะสมของทกตวอยางประชากรแลวน ามาเรยงล าดบจากนอยไปหามาก เมอประยกตใชกบปญหา TSP การ
27
เรยงล าดบเสนทางทสนทสดไปหาเสนทางทยาวมากทสดเพอเปนขอมลใหการปรบปรงคาความนาจะเปนรวม ในหวขอ 3.3.5 ตอไป
ข. การแบงงาน จากการทดลองพบวาความเรวในการใช GPU นนไมไดใหความเรวมากนกเมอเทยบกบ CPU เนองจากจ านวนประชากรทน ามาเรยงนนมจ านวนไมมากดงนนจงไมสามารถใชการค านวณของ GPU ไดอยางเตมท ดงนนในขนตอนนจงให CPU เปนตวค านวณแทน เวลาทเกดจากการสงขอมลไปและกลบจากหนวยประมวลผลกลางมายงหนวยประมวลผลกราฟกนนไมไดใช
3.3.5 กำรปรบปรงคำควำมนำจะเปนรวม ส าหรบขนตอนสดทายคอการเรยนรและปรบปรงคาความนาจะเปนรวมใน ตวก าเนด ตามค าตอบแตละตว ทงกลมทดเพอน าไปปรบปรงคาเพมคาความนาจะเปนของการเกดค าตอบทด และลดความนาจะเปนของการเกดของค าตอบทไมด ก. ลกษณะงาน อนพตของกลมค าตอบทด และกลมทไมด จ านวนของตวอยางของกลมทดและไมดนนใชวธแบงอยางเทากนโดยเปนสดสวน C เปอรเซนตของจ านวนกลมค าตอบทงหมด กลม C เปอรเซนตของประชากรทมคาความเหมาะสมจากมากทสดลงมาจะจดวาเปนกลมของตวอยางทด และ C เปอรเซนตของประชากรทมคาความเหมาะสมนอยทสดขนไปยงมาก จะกลายเปนกลมตวอยางทไมด
0 0.25 0.25 0.25
0.25 0 0.25 0.25
0.25 0.25 0 0.25
0.25 0.25 0.25 0
0.25
0.25
0.25
0.25
0.25 0.25 0.25 0.25 0
A
B
C
D
E
A B C D E
0 0.40 0.20 0.20
0.25 0 0.25 0.25
0.25 0.25 0 0.25
0.25 0.25 0.25 0
0.20
0.25
0.25
0.25
0.25 0.25 0.25 0.25 0
A
B
C
D
E
A B C D E
( ) ( )
0 0.10 0.30 0.30
0.25 0 0.25 0.25
0.25 0.25 0 0.25
0.25 0.25 0.25 0
0.30
0.25
0.25
0.25
0.25 0.25 0.25 0.25 0
A
B
C
D
E
A B C D E
( )
รปท 3-8 (ก) แสดงคาเรมตนของตวก าเนด (ข) แสดงการปรบปรงคาความนาจะเปนในกรณท (A,B) เปนสวนหนงของเสนทางกลมด ต าแหนงทไมใช (A,B) จะถกดงคาความนาจะเปนออกไป
28
0.05 และน าไปเพมใหกบ (A,B) (ค) แสดงการกระจายคาความนาจะเปนใหกบ คอลมนอน ในกรณท (A,B) เปนสวนหนงของเสนทางกลมไมด
งานตอมาทตองท า คอ การพจารณาหนวยยอยของค าตอบทดและไมดมาเพม
หรอลดความนาจะเปนของ ตวก าเนด หากยกตวอยางปญหา TSP กลมตวอยางทดคอ กลมเสนทางทคาความเหมาะสมมากทสด หรอเปนกลมเสนทางทสนทสดจ านวน C เปอรเซนตของเสนทางทงหมด เสนทางระหวางเมอง A->B ซงเปนสมาชกของกลมเสนทางทด A->B->C->D->E->A แลว คาความนาจะเปนของ (A,B) , (A,C) ,(A,D) ,(A,E) จะถกลดลงและรวบรวมไปเพมใหกบ (A,B) ดวยอตราสวนทเทากน ภาพท 3-8 (ก) แสดงคาเรมตน ซงความนาจะเปนของการเลอกทกเสนทางจะมคาเทากน คอ 0.25 ภาพท 3-8 (ข) เปนการปรบปรงคาความนาจะเปนในกรณท (A,B) เปนสวนหนงของเสนทางกลมด ต าแหนงทไมใช (A,B) จะถกดงคาความนาจะเปนออกไป 0.05 และน าไปเพมใหกบ (A,B) ในทางตรงกนขาม ถา (A,B) เปนสวนหนงของเสนทางกลมไมด คาจาก คอลมน (A,B) จะถกกระจายไปใหกบ คอลมนอนทไมใช (A,B) ดงภาพท 3-8 (ค)
ข. การแบงงาน จากทกขนตอนดานบน จะไดตารางของประชากรทเรยงล าดบตามคาความ
เหมาะสมแลว ในขนตอนนจะดงเอากลมของประชากรทดจ านวน j ตวหรอ C% ของประชากรทงหมดและกลมของประชากรทไมดจ านวนอก j ตวหรอ C% เชนกนรวมแลว 2j ตวหรอ 2C% ของประชากรทงหมดมา ปรบปรง ตวก าเนด จากลกษณะงานทไดอธบายไป เมอน าประชากร 1 ตวขนาด k+1 ไปปรบปรง ตวก าเนด แลวจะเกดงานขน k2 ส าหรบการปรบปรงตวเลขความนาจะเปนรวมทงหมดใน ตวก าเนด ขนาด kxk ตว ดงนนเมอน าประชากรจ านวน 2j ตว ไปปรบปรง ตวก าเนด จะเกดงานขน 2jk2
เมอมองลกลงไปอกส าหรบงานน จดประสงคหลกในงาน คอ การคนเขาไปใน population matrix ขนาด i x (k+1) (เมอ i คอจ านวนประชากรทสรางขนมาในแตละรน และ k คอขนาดของปญหา ) แลวนบจ านวนคล าดบ rc X,X ทพบในกลมดไดผลรวมออกมาเปน rc,r และคล าดบ pc X,X ทพบในกลมไมดไดผลรวมออกมาเปน pc,p จากนนจงน าเขาสมการ (1),(2) เพอปรบปรง ตวก าเนด
แบงงานออกเปนสองขนตอนใหญส าหรบการประมวลผลแบบขนานคอ แบงงานการตรวจสอบวามคล าดบ rc X,X และ pc X,X ใน population matrix ออกเปน 2j x k บลอก
29
และน าผลไปเกบไวในเมทรก 3 มต ซงผลลพธชวคราวมขนาด 2j x k x k ดงภาพ 3-9 (ก) ขนตอนทสองรวมคาในมต 2j ใหเหลอค าตอบเปนเมทรก 2 มต ขนาด k x k งานจะถกแบงออกใหอยในรปเทรด เพอใชการรวมแบบขนานเชนเดยวกบทใชในขนตอนประเมนคาความเหมาะสมของประชากรเพอเพมความเรว สวนงานในมต k x k นนเปนงานทไมเกยวเนองกนจงสามารถแบงงานใหอยในรปแบบบลอก k ได ดงเชนภาพท 3-9 (ข)
t threads
j blocks
(Bad
candidate
C% of m
population)
j blocks
(Good
candidate
C% of m
population)
k
Temporary Matrix size 2jk2
Population matrix size i x (k+1)
i population
2j
( ) Generate temporary matrix
Count & Store
t threads
( ) Update generator matrix
Temporary Matrix size 2jk2
Generator size k x k
Update generator
รปท 3-9 (ก) การปรบปรงคาในตวก าเนด เรมจากการนบจ านวนคล าดบ rc X,X และ pc X,X
และน าไปเกบไวในตาราง (ข) แสดงการรวมคาในมต 2j เพอน าไปปรบปรงคาในตวก าเนด
30
บทท 4
กำรทดลองและผลกำรทดลอง
เครองมอทใชในกำรวจย
ในการทดลองใชหนวยประมวลผลกลาง Intel core i3 ความเรวนาฬกา 2.1 GHz หนวยความจ า 8 GB ซงจะใชประมวลผล วธอบตการณรวมกนแบบประมวลผลแบบล าดบตอเนองและหนวยประมวลผลกราฟก NVIDIA Geforce GT 540 M ซงมความเรวของสญญาณนาฬกา 1344 MHz ขนาดของหนวยความจ าภายใน 2 GB โดยจะใชท าสอบประมวลผลวธอบตการณรวมกนแบบขนาน
กำรทดลอง
การทดลองจะท าการประมวลผลวธอบตการณรวมกนทงแบบประมวลผลแบบล าดบตอเนองและแบบประมวลผลแบบขนาน ขอมลทไดจากการทดลองจะอยในรปของเวลา และคาเหมาะสมทสดของปญหา การเดนทางของนกขาย (TSP) ทค านวณออกมาไดจากวธอบตการณรวมกนทงสองแบบ
การวดเวลา
ฟงกชนทใชเพอวดเวลานนใชฟงชนกทวดเวลาของภาษา C ไดแกฟงกชน QueryPerfomanceFrequency [11] และฟงกชน QueryPerformanceCounter [12] ท างานรวมกนเพอเรมตนการวดเวลา
รปท 4-1 ฟงกชนทใชในการเรมตนจบเวลา ฟงกชน startWatch ซงภายในใช ฟงกชน QueryPerformanceFrequency ใชเพอหาความถของของตววดประสทธภาพทก าลงใชอย และ
ฟงกชน QueryPerformanceCounter ใชเพอเรมตนนบเวลา
void startWatch()
{
QueryPerformanceFrequency( (LARGE_INTEGER *)&pf );
freq_ = 1.0 / (double)pf;
QueryPerformanceCounter( (LARGE_INTEGER *)&baseTime_ );
}
31
ฟงกชน QueryPerfomanceFrequency นนใชเพอหาจ านวนหนวยเวลาทวดไดในหนงวนาทของตววดประสทธภาพความละเอยดสงทใชอย ซงถาหนวยประมวลผลกลางทใชอยนนไมสนบสนนตววดประสทธภาพความละเอยดสงนคาทไดกลบมาจะเปน 0 คาไดมาจากฟงกชนนเปนจ านวนเวลาทนบไดในหนงวนาท ดงนนความถตองน ามาหารดวย หนงเพอกลายเปนความถ หลงจากนนฟงกชน QueryPerformanceCounter จ าท าการเรมจบเวลาโดยคาทคนมาจะเปนเวลา ณ จดเรมตน
รปท 4-2 ฟงกชนทใชในการหยดจบเวลา ฟงกชน startWatch ซงภายในใช ฟงกชน QueryPerformanceFrequency ใชเพอหาความถของของตววดประสทธภาพทก าลงใชอย และ
ฟงกชน QueryPerformanceCounter ใชเพอเรมตนนบเวลา
หลงจากประมวลผลเสรจ ฟงกชน QueryPerformanceCounter จะถกเรยกอกครงและคาทไดจากฟงกชนน คอ เวลา ณ เวลาปจจบน ดงนน เวลาทใชไปคอการน าคาเวลาทเราไดตอนเรมตนการจบเวลา มาลบออกจากคาเวลาทได ณ เวลาปจจบน
�
�
รปท 4-3 ต ำแหนงกำรจบเวลำโดยเรมจำกกำรจองหนวยควำมจ ำและหยดหลงจำกประมวลผลเสรจ
void stopWatch()
{
QueryPerformanceCounter( (LARGE_INTEGER *)&val );
dif = (val - baseTime_) * freq_;
printf("Execute time %g",dif);
}
32
การวดเวลาจะเรมตนวดจากการสงขอมลน าเขาทอยในรปตารางของความยาวระหวางเมองของแตละเมอง ไปใหแกขนตอนการประมวลผลเพอใหไดค าตอบหลงจากประมวลและไดค าตอบเปนคาทเหมาะส าหรบปญหาออกมา จะหยดจบเวลา เวลาทไดจะอยในรปของวนาท
การวดเวลาทงบนหนวยประมวลผลกลางและบนหนวยประมวลผลกราฟกนนไมแตกตาง แตเนองจากหลกการท างานของค าสงทเรยกไปยงเคอรเนลของหนวยประมวลผลกราฟกนน เคอรเนลจะคนคากลบมายงฝงของหนวยประมวลผลกลางทนทโดยมไดตองประมวลผลใหเสรจสนกอน ดงนนหนวยประมวลผลกลางจะเรยกไปยงเคอรเนลถดไปทนท เมอเปนเชนนการวดเวลาส าหรบหนวยประมวลผลกราฟกโดยใชฟงกชน QueryPerformanceFrequency และ QueryPerformanceCounter จะผดพลาด เวลาทไดจะเปนแคเวลาทหนวยประมวลผลกลางใชเรยกไปยงเคอรเนลเทานน ดงนน กอนทจะเรมเรยกฟงกชนวดเวลาตองท าการท าใหตรงกน (synchronization) โดยใชฟงกชนของ CUDA คอ cudaThreadSynchronize() [3-1]ส าหรบ CUDA เวอรชนต ากวา 2.0 และส าหรบเวอรชนทสงกวาหรอเทากบ 2.0 จะใชฟงกชน cudaDeviceSynchronize() [3-2] เมอเรยกฟงกชนเหลาน จะท าให ณ จดทเรยก เทรดของหนวยประมวลผลกลางและตวควบคมของหนวยประมวลผลกราฟกมการท าใหตรงกนดานเวลา หลงจากเรยกฟงกชน cudaDeviceSynchronize() แลวจงคอยเรยกฟงกชนวดเวลา และท าเชนเดยวกนหลงจากเรยกเคอรเนลเพอประมวลผลเสรจสนแลว เมอตองการวดเวลาจะตองเรยกฟงกชน cudaDeviceSynchronize() อกครงแลวจงเรยกฟงชนกวดเวลา
เวลาทเกดจากการจองหนวยความจ าเรมตนและเวลาจากการคนหนวยความจ า นนจะไมไดถกน ามาวดดวยเนองจากวตถประสงคในการใชงานทตองการใหสามารถท าการทดลองซ า ไดเรอยอกๆ เพอปรบเปลยนพารามเตอร และเกบผลการทดลองโดยทไมตองออกจากโปรแกรม ดงนนเราจงวดเฉพาะเวลาทเกยวของในแตละรอบจรง
กำรเกบขอมล
ขอมลเวลาทไดจากการทดลอง 10 ครง ทงการทดลองบนหนวยประมวลผลกบหนวยประมวลผลกลางและหนวยประมวลผลกราฟกจะถกน ามาหาคาเฉลยเพอเปรยบเทยบความเรวของทงสองหนวยประมวลผล โดยจะน าเวลาเฉลยทไดจากหนวยประมวลผลกลางมาหารดวยเวลาเฉลยทไดจากหนวยประมวลผลกราฟก ดงนน ผลทายสดของการเปรยบเทยบเวลาจะ
33
ออกมาอยในรปจ านวนเทา มากกวานนการเปรยบเทยบ จะรวมถงการเปรยบเทยบความเรวในแตละระดบประชากร ในการทดลองนเราไดใชตวอยางประชากรท 500 และ 1000 ซงเพยงพอส าหรบการแสดงความแตกตางของความเรวในการประมวลผลของทงสองหนวยประมวล
การน าวธการแกปญหาใดๆ ไปประยกตจากการประมวลผลแบบล าดบตอเนองไปเปนการประมวลผลแบบขนาน สงทไมเปลยนแปลงคอลกษณะของการหาค าตอบ ค าตอบทไดควรมคาทใกลเคยงกน ส าหรบ วธการอบตการณรวมกน คาทเหมาะสมทไดมาจากการประมวลผลจากการประมวลผลทงสองแบบตองมคาใกลเคยงกน และไมหางจากคาทดทสดของปญหา
ผลกำรทดลอง
จากการทดลองโปรแกรมทงบนหนวยประมวลผลกลางและบนหนวยประมวลผลกราฟกโดยใชฟงกชนวดเวลาอนเดยวกน ผลการทดลองสามารถแสดงดงตาราง 4-1
ปญหำ ประชำกร หนวยประมวลผล เวลำเฉลย (วนำท) ควำมเรว(เทำ)
grostel24 500 CPU 2.360 7.08
GPU 0.333
1000 CPU 4.672 8.74 GPU 0.534
grostel48 500 CPU 6.017 6.85
GPU 0.878
1000 CPU 12.815 9.50 GPU 1.349
pr76 500 CPU 14.121 6.48
GPU 2.179
1000 CPU 29.901 7.79 GPU 3.835
kroA100 500 CPU 18.776 5.31
GPU 3.536
1000 CPU 41.662 6.57 GPU 6.338
ตารางท 4-1 เวลาทใชในการประมวลผลหนวยประมวลผลกลางและหนวยประมวลผลกราฟกและจ านวนเทาของความเรวของหนวยประมวลผลกราฟกตอหนวยประมวลผลกลาง
34
ตารางท 4-1 เปรยบเทยบเวลาทใชไปในการทดลองโปรแกรมระหวางหนวยประมวลผลกลางและหนวยประมวลผลกราฟกโดยใชพารามเตอรเหมอนกน โปรแกรมท างานเปนจ านวน 200 รอบหรอ 200 รน จ านวนรนซงเปนพารามเตอรตวหนงของขนตอนวธพนธกรรม ตวเลข 200 ทใชมไดมผลตอการเพมขนหรอลดลงของอตราสวนความเรวในการท างานของโปรแกรมเมอเปรยบเทยบทงสองหนวยประมวลผล เวลาทใชจะเพมขนแปรผนตรงตอจ านวนรอบ ตวเลขทน ามาใชนเปนจ านวนรอบทขนตอนวธอบตการณรวมกนสามารถใหคาทดทสดส าหรบค าตอบของปญหาการเดนทางของนกขายท 24 เมองคอ 1272
ความเรวทหนวยประมวลผลกราฟกสามารถท าไดเรวกวาหนวยประมวลผลกลางนนจะเพมขนเมอเพมจ านวนประชากรซงเปนพารามเตอรหนงของขนตอนวธอบตการณรวมกน
ส าหรบการประเมนวาขนตอนวธอบตการณรวมกนสามารถประยกตไปท างานแบบขนานบนหนวยประมวลผลกราฟกไดหรอไมนน ส าหรบค าตอบทไดมการสมเขามาเกยวของดวย ดงนนดผลของค าตอบทไดจากขนตอนวธอบตการณรวมกนวาใกลเคยงกบผลทไดจากการท างานบนหนวยประมวลผลกลางหรอไม โดยคาเฉลยนนไมควรหางกนมาก
ปญหำ หนวยประมวลผล จ ำนวนประชำกร
500 1000 ดทสด เฉลย ดทสด เฉลย
Grostel24 CPU 1272 1318 1272 1291
GPU 1272 1283 1272 1275
Grostel48 CPU 5648 5975 5606 5909
GPU 5414 5529 5170 5379
Padberg/Rinaldi 76
CPU 135218 142694 124292 134268
GPU 137041 143889 131592 135548
kroA100 CPU 38698 39950 35616 38417
GPU 36127 37309 33065 34172
ตารางท 4-2 ค าตอบทไดจากขนตอนวธอบตการณรวมกนบนหนวยประมวลผลกลางและหนวยประมวลผลกราฟก
35
จากตารางท 4-2 สงเกตไดวาค าตอบทไดจากขนตอนวธอบตการณรวมกนบนหนวยประมวลผลกราฟกนนมคาทไมแตกตางจากหนวยประมวลผลกลางอยางมนยยะอกทงทจ านวนเมอง 24 เมองยงใหคาทเปนค าตอบทดทสดคอ 1272
จ านวนประชากร ขนตอน
500 1000
CPU GPU CPU GPU ก าเนดประชากร 0.0207 67.94% 0.0025 54.19% 0.0432 67.94% 0.0034 45.88% ประเมนคาความเหมาะสม 0.0003 0.93% 0.0001 2.94% 0.0005 0.93% 0.0003 3.72% จดเรยงประชากร 0.0007 2.19% 0.0007 13.44% 0.0011 2.19% 0.0011 14.41% ปรบปรงตวก าเนด 0.0088 28.94% 0.0013 29.43% 0.0177 28.94% 0.0027 36.00% รวมเวลา 0.0305 0.0045 0.0624 0.0074
ตารางท 4-3 เวลาทใชไปในแตแตละขนตอน เปรยบเทยบบนหนวยประมวลผลกลางและหนวยประมวลผลกราฟก ท 48 เมองและจ านวนประชากร 500 และ 1000
เมอพจารณาตารางท 4-3 พบวาขนตอนทใชเวลาท างานมากทสดคอการก าเนดประชากร ซงใชเวลา 67.94%, 54.19% และ 67.94% และ 53.51% ของเวลาทใชในประมวลผลทงหมดทหนวยประมวลผลกลางและหนวยประมวลผลกราฟกทประชากร 500 และ 1000 ตามล าดบ และงานทใชเวลาเปนอนดบสอง คอ งานปรบปรงตวก าเนด ใชเวลาเปน 28.94% ,29.43% และ 29.43 % ทหนวยประมวลผลกลางและหนวยประมวลผลกราฟก ทจ านวนเมอง 48 เมอง ซงหากพจารณาแลวถาสามารถลดเวลาของการก าเนดประชากรและปรบปรงตวก าเนดไดมากเทาไรจะเพมความเรวไดเทานน
36
ขนตอน ตามทฤษฎ ประชากร 500
ประชากร1000
ประชากร1500
ประชากร2000
ก าเนดประชากร 66.7% 16% 32.4% 47.9% 61.2% ประเมนคาความเหมาะสม 100% 16.3% 31.9% 46% 61% ปรบปรงตวก าเนด (1) 33.3% 26.8% 26.8% 26.8% 26.8% ปรบปรงตวก าเนด (2) 100% 74.1% 74.3% 74.4% 74.5%
ตารางท 4-4 เปอรเซนตการใชงานหนวยประมวลผลแตละขนตอน ทประชากร 500, 1000, 1500 และ 2000
จากการวดเปอรเซนตการใชงานหนวยประมวลผลของอปกรณประมวลผลกราฟกซงไดจากการทดสอบบน NVIADIA visual profiler ซงเปนเครองมอทอยในชดพฒนาโปรแกรม CUDA เมอท าการประมวลผลโดยใหแสดงผลลพธจากการวเคราะหการใชงานหนวยประมวลผล สงเกตไดวาเปอรเซนตเพมขนเรอยๆ เมอเพมจ านวนประชากรทงในขนตอนก าเนดประชากรและประเมนคาความเหมาะสม ในขณะทในขนตอนปรบปรงตวก าเนดทแบงเปนขนตอนยอยสองขนตอนไมมการใชงานหนวยประมวลผลเพมขนเลย ถอไดวาคอนขางคงท
จากตารางท 4-4 จงสอดคลองกบตารางท 4-3 ทซงความเรวทเพมขนเมอเพมจ านวนประชากรนนไดมาจากขนตอนก าเนดประชากรซงใชเวลาในการประมวลผลมากทสด ดงทไดกลาววาหากลดเวลาในสวนของการก าเนดประชากรไดมากเทาไรยงมสวนในการลดเวลารวมในการประมวลผลทงหมดไดมากขนเทานน การลดของเวลาในขนตอนก าเนดประชานนเปนเพราะ ยงเพมจ านวนประชากรมากขนการใชหนวยความจ ายงมากขนตามล าดบ ท าใหเวลาทหนวยประมวลผลหยดท างาน (idle) นอยลง หนวยประมวลผลท างานเตมเวลามากขนไดงานทมากขน
การเพมขนของเปอรเซนตการใชงานหนวยประมวลผลในขนตอนประเมนคาความเหมาะสมนนเพมขนดงเชนขนตอนการก าเนดประชากร แตไมไดท าใหเวลารวมลดลงมากนกเนองจาก การประมวลผลในขนตอนประเมนคาความเหมาะสมนนถอวาใชเวลานอยมากเมอเทยบกบขนตอนอน เชน ขนตอนการก าเนดประชากร
37
วเครำะหกำรทดลอง
เพอเพมความเขาใจเกยวกบความเรวทเพมขนบนหนวยประมวลผลกราฟก จะวเคราะหหลกการท างานและเวลาทใชไปในแตละขนตอนเปรยบเทยบระหวางหนวยประมวลผลกราฟกและหนวยประมวลผลกลาง
กำรวเครำะหจำกหลกกำรท ำงำน
จากผลการทดลองเหนไดวาจ านวนประชากรมผลกบความเรวในการประมวลผลของทงหนวยประมวลผลกลางและหนวยประมวลผลกราฟกทแตกตางกน
รปท 4-4 แสดงการจดแบงบลอกเขาไปประมวลผลในแกนประมวลผลของหนวยประมวลผลกราฟก
เพอใหเหนความเกยวของของความเรวทเพมขนเมอจ านวนประชากรเพมขนพจารณาการท างานของหนวยประมวลผลกราฟกซงมการจดเรยงการท างานของแตละบลอกทแบงไวกอนแลวเขาไปยงแกนประมวลผลแตละแกนและท าการประมวลผลพรอมๆกนเมอเปรยบเทยบการท างานของหนวยประมวลผลกลางทท างานของแตละขนตอนเปนล าดบ ดงนนเวลาทใชในการก าเนดประชากรแตละตวบนหนวยประมวลผลกลางจะแปรผนตอจ านวนประชากร ขณะทบนหนวยประมวลผลกราฟกนนจะไมแปรผนตรงตอจ านวนประชากรแตจะขนอยกบจ านวนแกนประมวลผลของอปกรณประมวลผลแตละรน รปท 4-4 การท างานของหนวยประมวลผล
38
กราฟกจะจดเรยงบลอกเขาไปประมวลผลตามจ านวนแกนประมวลผลทม ดงนนหากวาแกนประมวลในอปกรณประมวลผลกราฟกมมากจะเกดการประมวลแบบขนานพรอมกนเปนการเพมความเรวในการประมวลผลใชเวลาไมแปรผนกบจ านวนบลอก
P1 P2 P3 P4 P5
Block 1
P1
P2
P3
P4
P5
...
Pn
P6 P7 P8 P9 P10
Block 2
... ... ... ... Pn
Block n
... … ... ... ...
Block n-1
CPUGPU
รปท 4-5 ตวอยางเปรยบเทยบงานของการก าเนดประชากร P1 ถง Pn ของขนตอนการก าเนดประชากรระหวางหนวยประมวลผลกราฟกและหนวยประมวลผลกลาง
เราสามารถอธบายโดยยกตวอยางงานในการก าเนดประชากร จากรปท 4-5 งานในการก าเนดประชากร P1 ถง P5 อยภายในบลอกเดยวกน และงาน P6 ถง P10 ซงอยในบลอกท 2 สามารถถกประมวลผลพรอมกนโดยใชแกนประมวลผลแยกกนเปนอสระ ในขณะทหนวยประมวลผลกลางงาน P2 สามารถใชหนวยประมวลผลเมอเสรจงาน P1 แลว จากรปท 4-5 เปนเพยงตวอยางเมอพจารณาวาหนวยประมวลผลกลางมแกนผลมวลผลเดยว ในขณะทในปจจบนหนวยประมวลผลกลางมจ านวนแกนประมวลผลเพมขน แตเชนกนจ านวนแกนหนวยประมวลผลกราฟกกเพมมากกวาและมากขนเรอยๆ
จากการอธบายเกยวกบการประมวลผลแบบขนานดวยแกนประมวลผลกราฟกซงมจ านวนมากกวาจ านวนแกนประมวลผลของหนวยประมวลผลกลาง เชน ในงานวจย จ านวนแกน
39
ประมวลผลของ NVIDIA GeForce 540M นนมจ านวน 96 แกนประมวลผล ทความเรวนาฬกา 1344 MHz ดงนน จากการออกแบบเชนรปท 4-5 เมอมจ านวนประชากรเพมมากขนจะท าใหเวลาทถกใชไมแปรผนกบจ านวนประชากรเชนในหนวยประมวลผลกลาง แตแปรผนกบจ านวนแกนประมวลผล
40
บทท 5
สรปผลกำรวจย และแนวทำงในกำรพฒนำตอ
สรปผลกำรวจย
งานวจยนน าเสนอการพฒนาวธขนตอนอบตการณรวมกนใหประมวลผลแบบขนานบนหนวยประมวลผลกราฟก และท าการเปรยบเทยบความเรวหนวยประมวลผลทงสองแบบจากผลการทดลองทงหมดเราไดทราบวาการท างานแบบขนานบนหนวยประมวลผลกราฟกของขนตอนวธอบตการณรวมกนนนท างานไดเรวกวาบนหนวยประมวลผลกลาง ซงจ านวนเทาของความเรวนนเพมขนเมอจ านวนประชากรทเพมขน เปนผลมาจากสถาปตยกรรมของหนวยประมวลผลกราฟกทท ามาเพอการประมวลผลแบบขนานและการประมวลผลปรมาณมาก อกทงการออกแบบการโปรแกรมของขนตอนวธอบตการณรวมกนเสยใหมเพอใหท างานแบบขนานบนหนวยประมวลผลกราฟก
แนวทำงในกำรพฒนำตอ
อยางทไดอธบายในการวเคราะหผลการทดลอง เวลาสวนใหญไดถกใชไปในขนตอนการก าเนดประชากร ซงถาเราสามารถลดเวลาในสวนนไดมากเทาไรกหมายถงสามารถเพมความเรวของขนตอนวธอบตการณรวมกนบนหนวยประมวลผลกราฟกใหยงมากขน การออกแบบการท างานแบบขนานโดยพจารณาการใชหนวยความจ าทน ามาใชไมวาจะเปนหนวยความจ าคงท หนวยความจ ารวมกนซงใหความเรวในการเขาถงทแตกตางกนมารวมดวยในการออกแบบเพมเตมอาจสามารถเพมความเรวมากยงขน