มีปัญหา / อัลกอริทึมที่มีชื่อเสียงในการคำนวณทางวิทยาศาสตร์ที่ไม่สามารถเร่งความเร็วด้วยการขนาน


27

มีปัญหา / อัลกอริทึมที่มีชื่อเสียงในการคำนวณทางวิทยาศาสตร์ที่ไม่สามารถเร่งความเร็วด้วยการขนาน ดูเหมือนว่าฉันในขณะที่อ่านหนังสือเกี่ยวกับ CUDA ว่าสิ่งส่วนใหญ่สามารถ


การค้นหาแบบไบนารี่ไม่สามารถเร่งความเร็วได้ (อย่างมีนัยสำคัญเช่นจากปัจจัย) แม้ว่าจะพิจารณาลำดับชั้นหน่วยความจำก็ตาม

อัลกอริทึม Gram Schmidt: en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process

3
@Anycorn No, Gram-Schmidt แบบคลาสสิกที่มองซ้ายและการดัดแปลง Gram-Schmidt ที่ดูขวานั้นทำงานได้ดีในแบบคู่ขนาน มีอัลกอริทึม QR ขนานอื่น ๆ อีกมากมายรวมถึง TSQR ที่ได้รับความนิยมเมื่อเร็ว ๆ นี้
Jed Brown

@ ราฟาเอล: ฉันคิดว่า ist มีความเป็นไปได้ที่จะเพิ่มความเร็วในการค้นหาแบบไบนารีด้วยตัวบันทึกปัจจัย (n), n = # โปรเซสเซอร์ แทนที่จะแบ่งช่วงการค้นหาเป็นชิ้นส่วนและตรวจสอบตำแหน่งที่จะดำเนินการต่อให้แบ่งช่วงเวลาในส่วนต่างๆ บางทีฉันอาจรู้วิธีที่มีประสิทธิภาพมากกว่านี้
miracle173

คำตอบ:


32

ประเด็นสำคัญคือความยาวของเส้นทางคริติคอลเทียบกับจำนวนการคำนวณทั้งหมด ถ้าเป็นสัดส่วนกับดังนั้นการขนานจะให้ความเร็วคงที่ดีที่สุด ถ้ามีขนาดเล็กกว่า asymptotically จะมีช่องว่างสำหรับการขนานกันมากขึ้นเมื่อขนาดของปัญหาเพิ่มขึ้น สำหรับอัลกอริธึมที่คือพหุนามในขนาดอินพุตกรณีที่ดีที่สุดคือเพราะมีปริมาณน้อยมากที่สามารถคำนวณได้ในเวลาน้อยกว่าเวลาลอการิทึมCTCTCTTNClogT

ตัวอย่าง

  • C=Tสำหรับการแก้ปัญหาไตรภาคีโดยใช้อัลกอริทึมมาตรฐาน การดำเนินการทั้งหมดขึ้นอยู่กับการดำเนินการก่อนหน้านี้ที่เสร็จสิ้นดังนั้นจึงไม่มีโอกาสในการขนาน สามารถแก้ไขปัญหา Tridiagonal ในเวลาลอการิทึมบนคอมพิวเตอร์แบบขนานโดยใช้การแยกการซ้อนคำสั่งโดยตรงการสลายตัวของโดเมนหลายระดับหรือ multigrid ด้วยฟังก์ชั่นพื้นฐานที่สร้างขึ้นโดยใช้ส่วนขยายฮาร์มอนิก
  • การแก้ปัญหารูปสามเหลี่ยมด้านล่างที่หนาแน่นด้วยเมทริกซ์มีแต่เส้นทางวิกฤตินั้นมีเพียงดังนั้นความเท่าเทียมบางอย่างอาจเป็นประโยชน์m×mT=N=O(m2)C=m=T
  • multigrid และ FMM ทั้งสองมีกับเส้นทางที่สำคัญของความยาวTT=NC=logT
  • การถ่ายทอดคลื่นอย่างชัดเจนเป็นเวลาบนตาข่ายปกติของโดเมนต้องใช้ขั้นตอนเวลา (เพื่อความมั่นคง) ดังนั้น เส้นทางที่สำคัญอย่างน้อยk จำนวนเงินรวมของการทำงานคือd} จำนวนตัวประมวลผลที่มีประโยชน์สูงสุดคือปัจจัยที่เหลืออยู่ไม่สามารถกู้คืนได้โดยการขนานที่เพิ่มขึ้นτ(0,1)dk=τ/ΔtτN1/dC=kT=kN=τN(d+1)/dP=T/C=NN1/d

ความซับซ้อนที่เป็นทางการ

ระดับความซับซ้อน NCลักษณะปัญหาที่สามารถแก้ไขได้อย่างมีประสิทธิภาพในแบบคู่ขนาน (เช่นในเวลา polylogarithmic) ไม่ทราบว่าแต่มีการตั้งสมมติฐานอย่างกว้างขวางว่าเป็นเท็จ หากเป็นกรณีนี้แล้วP-complete จะอธิบายถึงปัญหาเหล่านั้นที่ "เรียงลำดับโดยเนื้อแท้" และไม่สามารถเร่งความเร็วได้อย่างมีนัยสำคัญโดยการขนานNC=P


13

ในการให้แง่มุมทางทฤษฎีกับสิ่งนี้ถูกกำหนดให้เป็นคลาสความซับซ้อนที่สามารถแก้ไขได้ในเวลาบนระบบที่มีตัวประมวลผลแบบขนานยังไม่ทราบว่า (แม้ว่าคนส่วนใหญ่สงสัยว่าไม่ใช่) โดยที่คือชุดของปัญหาที่แก้ไขได้ในเวลาพหุนาม ปัญหา "ที่ยากที่สุด" ในการขนานเป็นที่รู้จักกันว่าปัญหาในแง่ที่ว่าทุกปัญหาในสามารถลดลงเป็นปัญหาสมบูรณ์ผ่านลดลง หากคุณแสดงให้เห็นว่ามีปัญหาสมบูรณ์เดียวในคุณพิสูจน์ว่าNCO ( n k ) P = N C P P P P N C P N C P = N CO(logcn)O(nk)P=NCPPPPNCPNCP=NC (แม้ว่าอาจเป็นเท็จดังกล่าวข้างต้น)

ดังนั้นปัญหาใด ๆ ที่เป็น Complete จะเป็นการยากที่จะทำให้ขนานกัน ปัญหาที่สมบูรณ์ที่เราไม่ได้มีอย่างต่อเนื่องแม้จะดีมาก speedups ปัจจัยคือการเขียนโปรแกรมเชิงเส้น (ดูนี้แสดงความคิดเห็นหรือแลกเปลี่ยน)PPP


9

เริ่มต้นด้วยการ grocking กฎหมายของดาห์ล โดยพื้นฐานแล้วอะไรก็ตามที่มีลำดับขั้นตอนจำนวนมากจะได้รับประโยชน์เล็กน้อยจากการขนาน ตัวอย่างเล็ก ๆ น้อย ๆ ได้แก่ การแยกวิเคราะห์ regex และการบีบอัดอัตราส่วนสูงที่สุด

นอกเหนือจากนั้นปัญหาสำคัญมักจะเป็นปัญหาคอขวดในแบนด์วิดธ์หน่วยความจำ โดยเฉพาะอย่างยิ่งกับ GPU ส่วนใหญ่ของทฤษฎี flops ของคุณล้ำกว่าจำนวนจุดลอยตัวที่คุณสามารถเข้าถึงของ ALU ของคุณเช่นอัลกอริทึมดังกล่าวที่มีความเข้มทางคณิตศาสตร์ต่ำ (flops / แคชพลาด) จะใช้เวลาส่วนใหญ่รอ RAM

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

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

ตัวอย่างที่ไม่มีปัญหาการแตกกิ่งคือการคำนวณเวกเตอร์ซึ่งเป็นผลรวมสะสมของเวกเตอร์อื่น ([1,2,1] -> [1,3,4])

ฉันไม่รู้ว่าสิ่งเหล่านี้นับว่า "มีชื่อเสียง" แต่มีปัญหามากมายที่การคำนวณแบบขนานจะไม่ช่วยคุณ


3
"ตัวอย่างการแตกสาขา" ที่คุณให้ไว้คือ prefix-sum ซึ่งจริงๆแล้วมีอัลกอริทึมแบบขนานที่ดี: http.developer.nvidia.com/GPUGems3/gpugems3_ch39.html การคำนวณจำนวนศูนย์ควรมีประสิทธิภาพด้วยเหตุผลที่คล้ายคลึงกัน ไม่มีทางแก้ไขความเข้มเลขคณิตแม้ว่า ...
Max Hutchinson

เย็น. ฉันยืนแก้ไขในอันนั้น
meawoppl

8

วิธีเดินเร็ว (ดัง) สำหรับแก้สมการ Eikonal ไม่สามารถเร่งได้โดยการขนาน มีวิธีการอื่น ๆ (เช่นวิธีการกวาดอย่างรวดเร็ว) สำหรับการแก้สมการ Eikonal ที่คล้อยตามการปรับให้เป็นแบบขนานได้มากขึ้น

ปัญหาของสมการ Eikonal คือการไหลของข้อมูลขึ้นอยู่กับการแก้ปัญหาของตัวเอง การพูดอย่างหลวม ๆ ข้อมูลจะไหลไปตามลักษณะ (เช่นแสงของแสงในทัศนศาสตร์) แต่ลักษณะนั้นขึ้นอยู่กับวิธีการแก้ปัญหานั้นเอง และการไหลเวียนของข้อมูลสำหรับสมการ Eikonal แบบไม่ต่อเนื่องนั้นยิ่งแย่กว่านั้นซึ่งต้องการการประมาณเพิ่มเติม (เช่นมีอยู่ในวิธีการกวาดอย่างรวดเร็ว) หากต้องการการเร่งความเร็วแบบขนานใด ๆ

หากต้องการดูความยากลำบากในการทำคู่ขนานจินตนาการเขาวงกตที่ดีเช่นในบางส่วนของตัวอย่างในหน้าเว็บของ Sethian จำนวนเซลล์บนเส้นทางที่สั้นที่สุดผ่านเขาวงกต (อาจ) เป็นขอบเขตที่ต่ำกว่าสำหรับจำนวนขั้นตอน / การวนซ้ำขั้นต่ำของอัลกอริทึม (ขนาน) ใด ๆ ที่แก้ปัญหาที่เกี่ยวข้อง

(ฉันเขียน "(อาจ))" เพราะขอบเขตที่ต่ำกว่านั้นเป็นเรื่องยากที่จะพิสูจน์ได้และมักจะต้องมีข้อสมมติฐานที่สมเหตุสมผลเกี่ยวกับการดำเนินการที่ใช้โดยอัลกอริทึม)


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

โดยทั่วไปเมื่อวิธี multigrid ทำได้ดีก็หมายความว่าความละเอียดของปัญหาต่ำกว่าการทำให้ตกหล่นและ "จำนวนคำตอบที่ถูกต้อง" ที่ไม่ได้สัดส่วนนั้นมาจากขั้นตอนการแก้ปัญหาที่แน่นอน แค่การสังเกต แต่ขอบเขตล่างของสิ่งนั้นเป็นเรื่องยุ่งยาก!
meawoppl

@JedBrown จากมุมมองที่ใช้งานได้จริง multigrid สำหรับความถี่สูง Helmholtz ค่อนข้างท้าทายตรงข้ามกับความคิดเห็นของคุณ และการใช้ multigrid สำหรับสมการ eikonal คือ "ผิดปกติ" เพื่อพูดน้อยที่สุด แต่ฉันเห็นการคัดค้าน "เชิงทฤษฎี" ของคุณเทียบกับขอบเขตล่างที่แนะนำ: การชดเชยเวลาจากจุดต่าง ๆ ภายในเขาวงกตสามารถคำนวณได้ก่อนที่เวลาจะถึงจุดเหล่านี้เป็นที่รู้จักและเพิ่มในแบบคู่ขนานหลังจากมีข้อมูลหาย แต่ในทางปฏิบัติผู้ใช้ eikonal คู่ขนานมีความสุขถ้าพวกเขาเข้าใกล้ขอบเขตจริง
Thomas Klimpel

ฉันไม่ได้ตั้งใจจะบอกว่ามันเป็นเรื่องง่ายช่องว่างคลื่นรังสีนั้นเป็นเรื่องเทคนิคมาก แต่ฉันคิดว่าเราเห็นด้วยว่ามีโอกาสสำหรับความเท่าเทียมในพื้นที่เปิดอยู่แล้วในขณะที่ "เขาวงกต" แคบ ๆ (ซึ่งเผยให้เห็นการขนานที่น้อยมากกับวิธีการมาตรฐาน) ปัญหาการลดอัตราการสุ่มสัญญาณทำได้ง่ายกว่า
Jed Brown

@JedBrown Slide 39 จากwww2.ts.ctw.utwente.nl/venner/PRESENTATIONS/MSc_Verburg.pdf (จากปี 2010) กล่าวว่าสิ่งต่าง ๆ เช่น "ขยายตัวแก้ปัญหาจาก 2D เป็น 3D" และ "ปรับวิธีการแก้ปัญหาที่มีปัญหาที่แตกต่างกันอย่างมาก" ดังนั้นคลื่นพหุคูณอาจมีแนวโน้ม แต่ "ยังไม่สุก" ดูเหมือนจะเหมาะสมกว่า "เทคนิคมาก" สำหรับการอธิบายปัญหาในปัจจุบัน และมันไม่ได้เป็นตัวแก้ปัญหาความถี่สูงของเฮล์มโฮลทซ์ (เพราะมันเป็นตัวแก้ปัญหา "คลื่นเต็มรูปแบบ") มีคนอื่น ๆ ที่เป็น "ผู้ใหญ่ที่เพียงพอ" ตัวแก้แบบเฮลฮอล์ทมัลติ (ตัวเต็มคลื่น) ตัวแก้ปัญหา แต่ก็ยังเป็น
โทมัสคลิมเพล

1

ปัญหาอีกประเภทหนึ่งที่ยากต่อการขนานกันในทางปฏิบัติคือปัญหาที่ละเอียดอ่อนต่อข้อผิดพลาดในการปัดเศษ

ลองพิจารณาตัวอย่างของกระบวนการ Gram – Schmidtและการดัดแปลงแบบอนุกรม อัลกอริทึมทำงานร่วมกับเวกเตอร์ดังนั้นคุณอาจใช้การดำเนินการเวกเตอร์แบบขนาน แต่นั่นไม่ได้ปรับขนาดได้ดี ถ้าจำนวนของเวกเตอร์มีขนาดใหญ่และขนาดของเวกเตอร์มีขนาดเล็กการใช้แบบคลาสสิกแบบขนานแกรม - ชมิดท์และการเปลี่ยนรูปแบบอาจจะเสถียรและเร็วกว่าแบบแกรมเดียวที่แก้ไขเพียงครั้งเดียว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.