การเปิดตัว GPUPrefixSums ซึ่งเป็นไลบรารีที่ครอบคลุมและใช้อัลกอริทึม GPU prefix sum ที่ทันสมัยที่สุด ได้จุดประกายการถกเถียงที่น่าสนใจในชุมชนนักพัฒนาเกี่ยวกับแอปพลิเคชันของ primitive การคำนวณแบบขนานพื้นฐานนี้ที่มีความสำคัญที่สุดในภูมิทัศน์เทคโนโลยีปัจจุบัน
ชุมชนชื่นชมการใช้งานข้ามแพลตฟอร์ม
นักพัฒนาตื่นเต้นเป็นพิเศษกับการรองรับแพลตฟอร์มที่หลากหลายและประโยชน์ใช้สอยในทางปฏิบัติของไลบรารี โครงการนี้นำเสนอการใช้งานในสภาพแวดล้อมหลายแบบรวมถึง D3D12, CUDA, Unity และแม้แต่เวอร์ชัน WGPU ที่อยู่ในระยะทดลอง นักพัฒนาคนหนึ่งกล่าวว่าทั้งไลบรารีนี้และโครงการ GPUSorting ที่เกี่ยวข้องได้ช่วยเหลือเป็นอย่างมาก โดยเฉพาะเมื่อโซลูชันที่มีอยู่เช่น CUB ไม่ทำงานได้ดีกับ CUDA Driver API
ความน่าสนใจของไลบรารีนี้ไม่ได้จำกัดอยู่แค่การให้โค้ดที่ใช้งานได้เท่านั้น แต่ยังนำเทคนิคการวิจัยที่ทันสมัยมาสู่ compute shader แบบพกพาที่ใช้งานได้จริงซึ่งนักพัฒนาสามารถนำไปใช้ในโครงการของตนได้ สิ่งนี้เชื่อมช่องว่างที่มักทำให้หงุดหงิดระหว่างการวิจัยทางวิชาการกับการใช้งานในโลกจริง
การรองรับแพลตฟอร์ม:
- D3D12: การใช้งานแบบเต็มรูปแบบพร้อมการสำรวจขนาด wave/subgroup อย่างครอบคลุม
- CUDA: สำหรับวัตถุประสงค์ในการทดสอบประสิทธิภาพและการสาธิต (แนะนำให้ใช้ผ่านไลบรารี CUB สำหรับการใช้งานจริง)
- Unity: เปิดตัวเป็นแพ็กเกจ Unity สำหรับ Unity 2021.3.35f1 หรือสูงกว่า
- WGPU: การใช้งานแบบทดลองขั้นพื้นฐานสำหรับการทดสอบเท่านั้น
นวัตกรรมทางเทคนิค: Decoupled Fallback
คุณสมบัติที่โดดเด่นและสร้างความสนใจคือเทคนิค Decoupled Fallback ซึ่งแก้ไขปัญหาสำคัญใน GPU computing เมื่อ thread block ติดอยู่ในการรอการดำเนินการก่อนหน้า วิธีการนี้ช่วยให้พวกมันหมุนรอเป็นจำนวนรอบที่กำหนดก่อนที่จะทำการดำเนินการ fallback thread block หลายตัวสามารถพยายามทำ fallback พร้อมกันได้ แต่การดำเนินการแบบ atomic จะทำให้มั่นใจว่ามีเพียงตัวเดียวเท่านั้นที่จะสำเร็จในการกระจายผลลัพธ์
นวัตกรรมนี้มีความหวังเป็นพิเศษสำหรับ GPU Apple M-series แม้ว่าการพัฒนาล่าสุดจะเกิดขึ้นในโครงการแยกต่างหากที่เรียกว่า Valhalla เทคนิคนี้แสดงถึงโซลูชันที่ใช้งานได้จริงสำหรับธรรมชาติที่คาดเดาไม่ได้ของการจัดตาราง GPU ในฮาร์ดแวร์จากผู้ผลิตต่างๆ
การใช้งานอัลกอริทึม:
- การสแกนพื้นฐาน: Kogge-Stone, Sklansky, Brent-Kung, Reduce Scan, Raking Reduce-Scan
- การสแกนแบบ Warp-Synchronized: หลายรูปแบบรวมถึงการใช้งาน Warp-Sized-Radix
- รูปแบบระดับอุปกรณ์: Reduce-Then-Scan, Chained Scan พร้อม Decoupled Lookback
- เทคนิคใหม่: Decoupled Fallback เพื่อปรับปรุงความน่าเชื่อถือบนอุปกรณ์ที่ไม่มีการรับประกัน
การถกเถียงที่ร้อนแรงเรื่องแอปพลิเคชันในโลกจริง
การประกาศนี้จุดประกายการถกเถียงที่มีความหลงใหลอย่างน่าประหลาดใจเกี่ยวกับแอปพลิเคชัน prefix sum ใดที่มีความสำคัญที่สุดในการคอมพิวติ้งยุคใหม่ ในขณะที่เอกสารของไลบรารีกล่าวถึงการใช้งานในการเรียงลำดับ การบีบอัด และการสำรวจกราฟ สมาชิกในชุมชนได้โต้เถียงกันเรื่องลำดับความสำคัญ
นักพัฒนาบางคนสนับสนุน radix sorting ว่าเป็นแอปพลิเคชันที่สำคัญที่สุด โดยเฉพาะสำหรับแอปพลิเคชันกราฟิกเช่น Gaussian Splatting ที่การเรียงลำดับบน GPU เป็นสิ่งจำเป็น คนอื่นๆ โต้แย้งว่าการดำเนินการ sparse matrix ซึ่งเป็นพื้นฐานของทุกสิ่งตั้งแต่การพยากรณ์อากาศไปจนถึงการฝึก large language model เป็นกรณีการใช้งานที่สำคัญที่สุด
การคูณเมทริกซ์เป็นสิ่งที่พื้นฐานมากสำหรับโลกยุคใหม่
การถกเถียงเผยให้เห็นว่าโดเมนต่างๆ ให้ความสำคัญกับแอปพลิเคชันที่แตกต่างกัน นักพัฒนาเกมมุ่งเน้นไปที่ spatial partitioning และระบบการจัดการยูนิต ในขณะที่ผู้ปฏิบัติงาน scientific computing เน้นการคูณ sparse matrix สำหรับการจำลองและ workflow การเรียนรู้ของเครื่อง
คำถามเรื่องประสิทธิภาพและการพิจารณาในทางปฏิบัติ
แม้จะมีความกระตือรือร้น แต่คำถามในทางปฏิบัติยังคงมีอยู่เกี่ยวกับเวลาที่แนวทาง GPU มีความเหมาะสม นักพัฒนาสงสัยเกี่ยวกับจุดคุ้มทุนที่ GPU prefix sum มีประสิทธิภาพเหนือกว่าการใช้งาน CPU โดยพิจารณาต้นทุนค่าใช้จ่ายในการตั้งค่า สำหรับกรณีการใช้งานหลายๆ แบบ การตัดสินใจไม่ได้เกี่ยวกับประสิทธิภาพดิบแต่เป็นความจำเป็น เมื่อข้อมูลอยู่บน GPU อยู่แล้ว การคัดลอกไป CPU และกลับมาจะมีต้นทุนสูงเกินไป
การทดสอบของไลบรารีถูกจำกัดอยู่ที่ wave size 4, 16, 32 และ 64 เนื่องจากข้อจำกัดของฮาร์ดแวร์ และการใช้งาน WGPU ยังคงอยู่ในระยะทดลอง ข้อจำกัดเหล่านี้เน้นย้ำถึงความท้าทายที่ยังคงมีอยู่ในการสร้างโซลูชัน GPU compute ที่พกพาได้จริงๆ ในระบบนิเวศฮาร์ดแวร์ที่หลากหลาย
โครงการ GPUPrefixSums แสดงถึงทั้งความสำเร็จทางเทคนิคและความต้องการของชุมชน โดยให้เครื่องมือแก่นักวิจัยและนักพัฒนาที่เคยถูกจำกัดอยู่ในเอกสารทางวิชาการหรือการใช้งานแบบกรรมสิทธิ์
อ้างอิง: GPU Prefix Sums