การสนับสนุน SPIR-V ของ LLVM พัฒนาขึ้น ในขณะที่ Hero C Compiler ก้าวขึ้นมาเป็นทางเลือกใหม่สำหรับการเขียนโปรแกรม GPU

BigGo Editorial Team
การสนับสนุน SPIR-V ของ LLVM พัฒนาขึ้น ในขณะที่ Hero C Compiler ก้าวขึ้นมาเป็นทางเลือกใหม่สำหรับการเขียนโปรแกรม GPU

ภูมิทัศน์ของการเขียนโปรแกรมกราฟิกกำลังเผชิญกับวิวัฒนาการที่น่าสนใจในด้านเครื่องมือ SPIR-V โดยมีการถกเถียงเกี่ยวกับการใช้งาน LLVM และการปรากฏตัวของทางเลือกใหม่อย่าง Hero C Compiler (HCC) การพัฒนานี้เกิดขึ้นในช่วงเวลาที่เฟรมเวิร์กสำหรับการเขียนโปรแกรม GPU กำลังมีความสำคัญมากขึ้นสำหรับแอปพลิเคชันกราฟิกสมัยใหม่

สถานะปัจจุบันของ SPIR-V ใน LLVM

การสนทนาในชุมชนล่าสุดเผยให้เห็นว่าการสนับสนุน SPIR-V ของ LLVM อยู่ในช่วงการเปลี่ยนผ่าน แม้ว่า LLVM จะรองรับ SPIR-V ในโหมดคำนวณ แต่การใช้งาน SPIR-V ในโหมดกราฟิกยังอยู่ในขั้นตอนเริ่มต้น โดยกำลังทดสอบผ่านส่วนหน้า HLSL ที่อยู่ระหว่างการพัฒนาใน Clang ถึงแม้ว่า Microsoft DirectX Shader Compiler จะใช้ LLVM เป็นฐานและสนับสนุนการส่งออก SPIR-V แต่มีรายงานว่ายังมีข้อจำกัดด้านเทคนิคและเวอร์ชัน

คอมไพเลอร์ HLSL ของ Microsoft สำหรับ dx12+ นั้นใช้ LLVM เป็นฐานและสนับสนุนการส่งออก SPIR-V... แต่ตามที่เข้าใจคือมันเป็นการแก้ไขแบบชั่วคราวที่ติดอยู่กับ LLVM เวอร์ชันเก่า และไม่สามารถอัพเดทเข้าสู่เวอร์ชันหลักได้

สถานะการพัฒนา LLVM SPIR-V:

  • โหมดประมวลผล: รองรับอย่างสมบูรณ์
  • โหมดกราฟิก: อยู่ในขั้นตอนการพัฒนาเริ่มต้น
  • ส่วนหน้า HLSL: อยู่ระหว่างการพัฒนา
  • คอมไพเลอร์เชดเดอร์ DirectX: อ้างอิงจากเวอร์ชัน LLVM รุ่นเก่า

คุณสมบัติของคอมไพเลอร์ Hero C:

  • รองรับ Vulkan 1.3 ขึ้นไป
  • รองรับภาษา C11
  • สามารถคอมไพล์ SPIR-V โดยตรง
  • รองรับเชดเดอร์แบบ Vertex, Pixel และ Compute
  • ไม่รองรับการใช้พอยน์เตอร์ (ยกเว้นฟังก์ชันพิเศษภายในคอมไพเลอร์)
  • ไม่รองรับฟังก์ชันพอยน์เตอร์
  • รองรับแพลตฟอร์ม Windows และ Linux

Hero C Compiler ในฐานะทางเลือกใหม่

Hero C Compiler ได้ปรากฏตัวขึ้นในฐานะทางเลือกที่น่าสนใจ โดยนำเสนอการคอมไพล์จาก C ไปเป็น SPIR-V โดยตรงสำหรับ Vulkan API ต่างจากการใช้งาน LLVM ในปัจจุบัน HCC ใช้วิธีการที่ตรงไปตรงมามากกว่าด้วยการใช้ตัวระบุเฉพาะเช่น __hcc_vertex แทนการใช้การกำหนดแอตทริบิวต์ที่ซับซ้อน การออกแบบนี้สะท้อนให้เห็นถึงการมุ่งเน้นความเรียบง่ายและความตรงไปตรงมาในการเขียนโปรแกรมเชดเดอร์

ข้อพิจารณาด้านประสิทธิภาพและการปรับแต่ง

ชุมชนได้หยิบยกประเด็นที่น่าสนใจเกี่ยวกับศักยภาพในการปรับแต่ง โดยนักพัฒนาบางคนเสนอให้สำรวจการปรับแต่งแบบ QBE สำหรับเป้าหมาย GPU อย่างไรก็ตาม ข้อจำกัดทางเทคนิค โดยเฉพาะในส่วนของการสนับสนุน SIMD ยังคงเป็นความท้าทายสำหรับการปรับใช้เทคนิคการปรับแต่งที่ออกแบบสำหรับ CPU มาใช้กับการคอมไพล์เชดเดอร์ GPU

มุมมองในอนาคต

ภูมิทัศน์ดูเหมือนจะกำลังพัฒนาอย่างรวดเร็ว โดยการประกาศล่าสุดของ Microsoft เกี่ยวกับ DirectX ที่จะนำ SPIR-V มาใช้ บ่งชี้ถึงการเปลี่ยนแปลงของอุตสาหกรรมที่มุ่งสู่การสร้างมาตรฐาน การเคลื่อนไหวนี้ ประกอบกับการปรากฏตัวของเครื่องมือทางเลือกอย่าง HCC บ่งชี้ถึงอนาคตที่การเขียนโปรแกรม GPU จะเข้าถึงได้ง่ายขึ้น ในขณะที่ยังคงรักษาความสามารถด้านประสิทธิภาพสูง

สรุปได้ว่า ในขณะที่ LLVM ยังคงพัฒนาการสนับสนุน SPIR-V อย่างต่อเนื่อง เครื่องมือใหม่อย่าง HCC กำลังนำเสนอแนวทางทางเลือกสำหรับนักพัฒนาที่ต้องการทำงานกับ API กราฟิกสมัยใหม่ โดยเฉพาะในระบบนิเวศของ Vulkan ความหลากหลายของตัวเลือกด้านเครื่องมืออาจเป็นประโยชน์ต่อชุมชนการเขียนโปรแกรมกราฟิกโดยรวม

แหล่งอ้างอิง: Hero C Compiler