ข้อกังวลของ Khronos ซึ่งรับผิดชอบในการพัฒนาข้อกำหนดตระกูล OpenGL, Vulkan และ OpenCL
ในขั้นตอนปัจจุบัน ข้อกำหนดดังกล่าวได้รับการกำหนดสถานะชั่วคราว ซึ่งแสดงถึงความเป็นไปได้ในการปรับปรุงตามความคิดเห็นที่ส่งผ่าน
โดดเด่นที่สุด
- ขณะนี้ OpenCL 3.0 API ครอบคลุม OpenCL ทุกรุ่น (1.2, 2.x) โดยไม่ต้องระบุข้อกำหนดเฉพาะสำหรับแต่ละเวอร์ชันแยกกัน OpenCL 3.0 มอบความสามารถในการขยายฟังก์ชันการทำงานหลักผ่านการผสานรวมข้อกำหนดเพิ่มเติมที่จะซ้อนกันในรูปแบบของตัวเลือกโดยไม่ปิดกั้นลักษณะเสาหินของ OpenCL 1.2/2.X
- เฉพาะฟังก์ชันการทำงานที่สอดคล้องกับ OpenCL 1.2 เท่านั้นที่ได้รับการประกาศให้เป็นข้อบังคับ และคุณลักษณะทั้งหมดที่เสนอในข้อกำหนด OpenCL 2.x ได้รับการจัดประเภทเป็นตัวเลือก แนวทางนี้จะทำให้ง่ายต่อการสร้างการใช้งานแบบกำหนดเองที่เข้ากันได้กับ OpenCL 3.0 และจะขยายขอบเขตของอุปกรณ์ที่สามารถใช้ OpenCL 3.0 ได้ ตัวอย่างเช่น ผู้ผลิตสามารถใช้การสนับสนุน OpenCL 3.0 โดยไม่ต้องใช้คุณลักษณะเฉพาะของ OpenCL 2.x เพื่อเข้าถึงคุณลักษณะภาษาที่เป็นตัวเลือก OpenCL 3.0 ได้เพิ่มระบบแบบสอบถามทดสอบที่ช่วยให้คุณสามารถประเมินการสนับสนุนองค์ประกอบ API แต่ละรายการ รวมถึงมาโครพิเศษ
- การรวมเข้ากับข้อกำหนดที่เผยแพร่ก่อนหน้านี้ช่วยให้ย้ายแอปพลิเคชันไปยัง OpenCL 3.0 ได้ง่ายขึ้น แอปพลิเคชัน OpenCL 1.2 จะสามารถทำงานบนอุปกรณ์ที่รองรับ OpenCL 3.0 ได้โดยไม่ต้องดัดแปลง แอปพลิเคชัน OpenCL 2.x จะไม่จำเป็นต้องมีการเปลี่ยนแปลงโค้ด ตราบใดที่สภาพแวดล้อม OpenCL 3.0 มีฟังก์ชันที่จำเป็น (เพื่อให้มั่นใจในการพกพาในอนาคต ขอแนะนำให้แอปพลิเคชัน OpenCL 2.x เพิ่มแบบสอบถามทดสอบเพื่อประเมินการสนับสนุนสำหรับฟีเจอร์ OpenCL 2.x กำลังใช้). นักพัฒนาไดรเวอร์ที่มีการใช้งาน OpenCL สามารถอัปเกรดผลิตภัณฑ์ของตนเป็น OpenCL 3.0 ได้อย่างง่ายดาย โดยเพิ่มเฉพาะการประมวลผลแบบสอบถามสำหรับการเรียก API บางอย่าง และค่อยๆ เพิ่มฟังก์ชันการทำงานเมื่อเวลาผ่านไป
- ข้อมูลจำเพาะของ OpenCL 3.0 สอดคล้องกับสภาพแวดล้อม ส่วนขยาย และข้อมูลจำเพาะของการนำเสนอระดับกลางทั่วไป SPIR-V ซึ่งใช้โดย Vulkan API เช่นกัน การรองรับข้อกำหนด SPIR-V 1.3 รวมอยู่ใน OpenCL 3.0 หลักเป็นคุณสมบัติเสริม โดยการใช้ตัวแทนระดับกลาง
สไปร์-วี เพิ่มการรองรับการดำเนินการกับกลุ่มย่อยสำหรับแกนประมวลผล
- เพิ่มการรองรับสำหรับส่วนขยายสำหรับการดำเนินการ DMA แบบอะซิงโครนัส (Asynchronous DMA) ซึ่งรองรับในชิปคล้าย DSP ที่มีการเข้าถึงหน่วยความจำโดยตรง DMA แบบอะซิงโครนัสทำให้สามารถใช้ธุรกรรม DMA เพื่อถ่ายโอนข้อมูลระหว่างหน่วยความจำส่วนกลางและหน่วยความจำภายในแบบอะซิงโครนัส ควบคู่ไปกับการคำนวณหรือการดำเนินการถ่ายโอนข้อมูลอื่นๆ
- ข้อมูลจำเพาะส่วนขยายการเขียนโปรแกรม C Parallel ได้รับการอัปเดตเป็น
เวอร์ชัน 3.0 และการพัฒนาส่วนขยายภาษา OpenCL สำหรับ C++ ถูกยกเลิกเพื่อสนับสนุนโครงการ “C++ สำหรับ OpenCL” C++ สำหรับ OpenCL เป็นคอมไพเลอร์ที่ใช้ Clang/LLVM และการออกอากาศ เคอร์เนล C++ และ OpenCL C เป็นตัวแทนระดับกลาง SPIR-V หรือรหัสเครื่องระดับต่ำ ผ่านการออกอากาศ SPIR-V ยังจัดระเบียบแอสเซมบลีของแอปพลิเคชัน C++ โดยใช้ไลบรารีเทมเพลต SYCL ซึ่งช่วยให้การสร้างแอปพลิเคชันแบบขนานง่ายขึ้น - มีการเสนอคอมไพเลอร์สำหรับการออกอากาศ OpenCL ผ่าน Vulkan API
ซีแอลเอสพีวี ซึ่งแปลงเคอร์เนล OpenCL เป็นตัวแทน Vulkan SPIR-V และเลเยอร์ซีแอลวีเค เพื่อเปิดใช้งาน OpenCL API เพื่อทำงานบน Vulkan
ที่มา: opennet.ru