เหตุใดโปรแกรมเมอร์กำหนดรูปแบบการเขียนโปรแกรมเพื่อแทนที่ C / POSIX สำหรับการขนาน


10

ผู้ให้บริการสถาปัตยกรรมคอมพิวเตอร์ใหม่พยายามแนะนำรูปแบบการเขียนโปรแกรมใหม่อย่างสม่ำเสมอเช่นเมื่อเร็ว ๆ นี้ CUDA / OpenCL สำหรับ GPGPU และแทนที่ C / POSIX เป็นอินเทอร์เฟซการควบคุมไปยังแพลตฟอร์มแบบคู่ขนาน (Poss & Koening, AM3: สู่ตัวเร่งความเร็ว Unix สำหรับหลายคอร์, 2015)

ทำไมนักออกแบบสถาปัตยกรรมจึงพยายามออกแบบโมเดลการเขียนโปรแกรมใหม่เพื่อแทนที่ C / POSIX สำหรับการคำนวณแบบขนาน C / POSIX ไม่เหมาะกับมัลติโปรเซสเซอร์หรือผู้เขียนต้นฉบับของ C / POSIX ไม่จำเป็นต้องใช้การคำนวณแบบขนานในการออกแบบ C / POSIX หรือไม่? หรือเป็นกรณีที่โปรแกรมเมอร์ต้องการความสามารถมากกว่า C / POSIX ที่สามารถส่งมอบได้ดังนั้นจึงหันไปใช้การออกแบบใหม่เช่น CUDA / OpenCL เป็นต้น


7
โปรดจำไว้ว่าซอฟต์แวร์เป็นสิ่งที่เป็นนามธรรมของฮาร์ดแวร์ หากฮาร์ดแวร์เปลี่ยนแปลงมากเกินไปสิ่งที่เป็นนามธรรมซอฟต์แวร์อาจไม่ดีอีกต่อไป ฉันเชื่อว่านี่เป็นเรื่องจริงเมื่อพิจารณาใช้เธรด POSIX สำหรับ GPU แต่ฉันจะปล่อยให้คนอื่นอธิบายเพิ่มเติมในคำตอบ

คำตอบ:


10

เปรียบเทียบเธรด POSIX และ Grand Central Dispatch ตัวอย่างเช่น ฉันมีรหัสที่ส่งไปยังสี่กระทู้ในแปดบรรทัดของรหัส ด้วย POSIX นั่นจะเป็นฝันร้ายแน่นอน

ในทางกลับกัน CUDA / OpenCL ไม่ได้เกี่ยวกับการมัลติเธรดเลย แต่เกี่ยวกับการใช้ความสามารถของเวกเตอร์ขนาดใหญ่ (พวกเขาสามารถทำมัลติเธรดได้เช่นกัน แต่ vectorizing เป็นสิ่งสำคัญ)


9

มีความแตกต่างระหว่างการเขียนโปรแกรมแบบขนานSIMDและแบบจำลองการเขียนโปรแกรมแบบขนานดั้งเดิมที่ POSIX ใช้

SIMD เป็นรุ่นที่ใช้ CUDA, OpenCL และอื่น ๆ มีชุดคำสั่งชุดเดียวที่ดำเนินการพร้อมกันโดยหลายเธรดซึ่งแต่ละชุดจะดำเนินการด้วยแหล่งข้อมูลของตนเอง สิ่งนี้มีประโยชน์มากสำหรับสิ่งต่าง ๆ เช่นกราฟิกสามมิติที่มีการแปลงแบบเดียวกันกับคะแนนจำนวนมาก

โมเดล POSIX ถือว่าแต่ละเธรดรันแบบอะซิงโครนัสและแต่ละเธรดสามารถเรียกใช้โค้ดที่แตกต่างกันโดยสิ้นเชิง

ทั้งสองรุ่นมีจุดแข็งและจุดอ่อน - นั่นเป็นสาเหตุที่พวกเขาแตกต่างกัน POSIX มีความยืดหยุ่นมากขึ้น แต่ CUDA / OpenCL / ฯลฯ สามารถใช้ประโยชน์จากฮาร์ดแวร์พิเศษได้โดยเรียกใช้เธรด (มักจะง่ายกว่า) หลายพันรายการในแต่ละครั้ง

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