- SCALE เป็นชุดเครื่องมือเขียนโปรแกรม GPGPU ที่ทำให้สามารถคอมไพล์แอปพลิเคชัน CUDA แบบเนทีฟสำหรับ AMD GPU ได้
- ไม่จำเป็นต้องแก้ไขโปรแกรม CUDA หรือระบบบิลด์ และกำลังพัฒนาการรองรับผู้ผลิต GPU เพิ่มเติมและ CUDA API เพิ่มเติมอยู่
ทำงานอย่างไร?
- SCALE มีนวัตกรรมสำคัญหลายอย่างเมื่อเทียบกับโซลูชัน GPGPU ข้ามแพลตฟอร์มอื่น ๆ
- รองรับโปรแกรม CUDA ได้โดยตรง โดยไม่ต้องพอร์ตไปเป็นภาษาอื่น ซึ่งรวมถึงกรณีที่โปรแกรมใช้ inline PTX
asm ด้วย
- คอมไพเลอร์ของ SCALE รองรับตัวเลือกบรรทัดคำสั่งและไวยากรณ์ CUDA แบบเดียวกับ
nvcc จึงทำงานเป็นตัวแทนแบบดรอปอินได้
- ปลอมตัวเป็นการติดตั้ง NVIDIA CUDA Toolkit ทำให้เครื่องมือและสคริปต์บิลด์เดิมยังคงทำงานได้ตามปกติ
มีการทดสอบกับโปรเจ็กต์ใดบ้าง?
- มีการคอมไพล์โปรเจ็กต์ CUDA โอเพนซอร์สและรันทดสอบเพื่อยืนยันการทำงานของ SCALE
- ขณะนี้โปรเจ็กต์โอเพนซอร์สต่อไปนี้ถูกรวมอยู่ในการทดสอบอัตโนมัติรายคืนและผ่านทั้งหมด
- NVIDIA Thrust, Blender Cycles, AMGX, llama-cpp, faiss, xgboost, GOMC, stdgpu, hashcat
รองรับ GPU ใดบ้าง?
- รองรับ GPU target ต่อไปนี้ และถูกรวมอยู่ในการทดสอบ Nightly
- AMD
gfx1030 (Navi 21, RDNA 2.0)
- AMD
gfx1100 (Navi 31, RDNA 3.0)
- GPU target ต่อไปนี้ผ่านการทดสอบแบบแมนนวลชั่วคราวแล้ว และ "ดูเหมือนว่าจะใช้งานได้"
- กำลังพัฒนาการรองรับ GPU ต่อไปนี้อยู่
- AMD
gfx900 (Vega 10, GCN 5.0)
- หากต้องการการรองรับสถาปัตยกรรม AMD GPU บางรุ่นอย่างเร่งด่วน โปรดติดต่อทีมงาน
องค์ประกอบของ SCALE
- คอมไพเลอร์ที่เข้ากันได้กับ
nvcc ซึ่งสามารถคอมไพล์ CUDA แบบไวยากรณ์ nvcc สำหรับ AMD GPU ได้ รวมถึง PTX asm
- การติดตั้งใช้งาน CUDA runtime และ driver API สำหรับ AMD GPU
- ไลบรารี wrapper แบบโอเพนซอร์สที่มอบหมายให้ ROCm library ทำงานเพื่อให้บริการ API แบบ "CUDA-X" โดยไลบรารีอย่าง
cuBLAS และ cuSOLVER ใช้วิธีนี้
SCALE ต่างจากโซลูชันอื่นอย่างไร
- แทนที่จะเสนอวิธีใหม่ในการเขียนซอฟต์แวร์ GPGPU, SCALE ทำให้สามารถคอมไพล์โปรแกรมที่เขียนด้วยภาษา CUDA ซึ่งใช้งานกันอย่างแพร่หลาย ให้ทำงานบน AMD GPU ได้โดยตรง
- SCALE ตั้งเป้าความเข้ากันได้กับ NVIDIA CUDA อย่างสมบูรณ์ โดยเชื่อว่าผู้ใช้ควรจะรองรับผู้ผลิต GPU หลายรายได้โดยไม่ต้องดูแลหลายโค้ดเบสหรือยอมลดทอนประสิทธิภาพ
- ภาษาของ SCALE เป็น superset ของ NVIDIA CUDA และมีส่วนขยายทางภาษาแบบเลือกใช้ที่ช่วยให้การเขียนโค้ด GPU ง่ายและมีประสิทธิภาพมากขึ้นสำหรับผู้ใช้ที่ต้องการก้าวข้าม
nvcc
- SCALE ยังอยู่ระหว่างการพัฒนา หากมี API ที่ขาดหายไปจนขัดขวางการใช้งาน โปรดติดต่อทีมงาน เพื่อให้สามารถปรับลำดับความสำคัญในการพัฒนาได้
สรุปโดย GN⁺
- SCALE เป็นชุดเครื่องมือสำคัญที่ช่วยให้คอมไพล์แอปพลิเคชัน CUDA แบบเนทีฟสำหรับ AMD GPU ได้
- สามารถรันโปรแกรม CUDA เดิมบน AMD GPU ได้โดยไม่ต้องแก้ไข ซึ่งเป็นข้อได้เปรียบอย่างมากสำหรับนักพัฒนา
- ด้วยเป้าหมายความเข้ากันได้อย่างสมบูรณ์กับ NVIDIA CUDA จึงเอื้อต่อการรองรับผู้ผลิต GPU หลายราย
- โครงการนี้ยังอยู่ระหว่างพัฒนา และหาก API ที่ต้องการยังไม่มี ผู้ใช้สามารถติดต่อทีมพัฒนาเพื่อปรับลำดับความสำคัญได้
- โปรเจ็กต์ที่มีความสามารถคล้ายกัน ได้แก่ ROCm และ HIP
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
มีความเห็นว่าหลายคนคิดว่า AMD ควรรองรับเลเยอร์แปล แต่สิ่งนี้เป็นไอเดียที่ไม่ดี
มีความเห็นว่าการไล่ตามความเข้ากันได้แบบ bug-compatible เป็นเรื่องโง่
มีความเห็นว่าไม่เข้าใจว่าโค้ดที่พึ่งพาฮาร์ดแวร์อย่างมากจะสามารถ "ใช้งานได้เลย" บน AMD ได้อย่างไร
ถ้าเป็นเรื่องจริงก็ถือว่าน่าประทับใจ แต่มีความเห็นว่าโปรเจ็กต์นี้ไม่ได้เป็นโอเพนซอร์ส และยังขาดรายละเอียดที่ชัดเจนว่าใช้งานอย่างไร
มีความเห็นว่าสาเหตุหลักของมูลค่าสูงของ Nvidia คือ AMD ไม่ลงทุนทำให้ GPU ของตัวเองมีประโยชน์ต่อ ML
มีความเห็นว่า AMD ทำพลาดมากจนอยากแสดงความยินดีกับโปรเจ็กต์แบบนี้
เคยทำงานที่ Spectral Compute เมื่อหลายปีก่อน
เคยเขียน CUDA มาบ้างเล็กน้อย
มีความเห็นว่าโปรเจ็กต์นี้ยอดเยี่ยมมาก
เป็นเรื่องดีที่มีหน้าอธิบายข้อจำกัดในปัจจุบัน แต่มีความเห็นว่าสิ่งที่คนส่วนใหญ่อธิบายว่าเป็น "CUDA" นั้นเป็นเพียงส่วนเล็ก ๆ ของความสามารถจริงของ CUDA
มีความเห็นว่าเรื่องนี้อาจเป็นจริงได้เพราะในทางเทคนิคแล้วทำได้