มีอะไรใหม่ใน WebGPU (Chrome 134)

François Beaufort
François Beaufort

เผยแพร่เมื่อวันที่ 26 กุมภาพันธ์ 2025

ปรับปรุงภาระงานแมชชีนเลิร์นนิงด้วยกลุ่มย่อย

หลังจากพัฒนาและทดสอบมา 1 ปี ตอนนี้ฟีเจอร์ WebGPU ของกลุ่มย่อยที่เปิดใช้การทำงานแบบขนานระดับ SIMD พร้อมให้ใช้งานแล้ว ซึ่งช่วยให้เธรดในกลุ่มงานสื่อสารและดำเนินการทางคณิตศาสตร์แบบรวมได้ เช่น การคำนวณผลรวมของตัวเลข และเสนอวิธีการที่มีประสิทธิภาพในการแชร์ข้อมูลข้ามเธรด โปรดดูข้อเสนอฉบับแรกและรายการ chromestatus

ข้อมูลอ้างอิงคือ Google Meet เพิ่มความเร็วขึ้น 2.3-2.9 เท่าเมื่อทำการเปรียบเทียบกลุ่มย่อยกับผลิตภัณฑ์จุดจำนวนเต็มแบบแพ็กสำหรับชิดเชอร์มการคูณเมทริกซ์กับเวกเตอร์ในอุปกรณ์บางเครื่องระหว่างช่วงทดลองใช้เวอร์ชัน Origin

เมื่อฟีเจอร์ "subgroups" พร้อมใช้งานใน GPUAdapter แล้ว ให้ขอ GPUDevice ที่มีฟีเจอร์นี้เพื่อรับการสนับสนุนกลุ่มย่อยใน WGSL คุณควรตรวจสอบค่าข้อมูลอะแดปเตอร์ subgroupMinSize และ subgroupMaxSize เช่น หากคุณมีอัลกอริทึมที่เขียนแบบฮาร์ดโค้ดซึ่งกำหนดให้มีกลุ่มย่อยที่มีขนาดที่แน่นอน

นอกจากนี้ คุณยังต้องเปิดใช้ส่วนขยายนี้อย่างชัดเจนในโค้ด WGSL ด้วย enable subgroups; เพื่อเข้าถึงค่าในตัวต่อไปนี้ทั้งในระยะเชดเดอร์การประมวลผลและระยะเชดเดอร์เศษส่วน

  • subgroup_invocation_id: ค่าในตัวสำหรับดัชนีของชุดข้อความภายในกลุ่มย่อย

  • subgroup_size: ค่าในตัวสำหรับการเข้าถึงขนาดกลุ่มย่อย

ฟังก์ชันในตัวของกลุ่มย่อยจํานวนมาก (เช่น subgroupAdd(), subgroupBallot(), subgroupBroadcast(), subgroupShuffle()) ช่วยให้การสื่อสารและการคํานวณระหว่างการเรียกใช้ภายในกลุ่มย่อยมีประสิทธิภาพ การดำเนินการของกลุ่มย่อยเหล่านี้จัดอยู่ในประเภทการดำเนินการแบบหลายเธรดคำสั่งเดียว (SIMT) นอกจากนี้ ฟังก์ชันในตัวของ Quad ซึ่งทำงานกับQuad ของการเรียกใช้ยังช่วยอำนวยความสะดวกในการรับส่งข้อมูลภายใน Quad

คุณสามารถใช้ค่า f16 กับกลุ่มย่อยได้เมื่อขอ GPUDevice ที่มีทั้งฟีเจอร์ "shader-f16" และ "subgroups"

ตัวอย่างต่อไปนี้เป็นจุดเริ่มต้นที่ดีในการสำรวจกลุ่มย่อย โดยแสดงชิเดอร์ที่ใช้ฟังก์ชันในตัวของ subgroupExclusiveMul() เพื่อคํานวณผลคูณโดยไม่ต้องอ่านหรือเขียนหน่วยความจําเพื่อสื่อสารผลลัพธ์ขั้นกลาง

นำการรองรับประเภทพื้นผิวที่กรองแบบลอยตัวออกเพื่อใช้เป็นพื้นผิวที่ผสมได้

เมื่อการผสมผสานพื้นผิวแบบ 32 บิตที่เป็นค่าลอยพร้อมใช้งานแล้วในฟีเจอร์ "float32-blendable" ระบบจะนำการรองรับที่ไม่ถูกต้องสำหรับประเภทพื้นผิวที่กรองค่าลอยได้ซึ่งนำมาผสมผสานได้ออก ดูปัญหา 364987733

การอัปเดต Dawn

ตอนนี้ Dawn ต้องใช้ macOS 11 และ iOS 14 และรองรับเฉพาะ Metal 2.3 ขึ้นไปเท่านั้น ดูปัญหา 381117827

ตอนนี้วิธีการ GetWGSLLanguageFeatures() ใหม่ของ wgpu::Instance จะใช้แทน EnumerateWGSLLanguageFeatures() ดูปัญหา 368672124

ประเภทการเชื่อมโยงต่อไปนี้มีค่า Undefined และค่าเริ่มต้นในเลย์เอาต์การเชื่อมโยงมีการเปลี่ยนแปลง ดูปัญหา 377820810

  • wgpu::BufferBindingType::Undefined เปลี่ยนชื่อเป็น Uniform
  • wgpu::SamplerBindingType::Undefined เปลี่ยนชื่อเป็น Filtering
  • wgpu::TextureSampleType::Undefined เปลี่ยนชื่อเป็น Float
  • wgpu::StorageTextureAccess::Undefined เปลี่ยนชื่อเป็น WriteOnly แล้ว

ข้อมูลนี้เป็นเพียงไฮไลต์สำคัญบางส่วนเท่านั้น ดูรายการคอมมิตทั้งหมด

มีอะไรใหม่ใน WebGPU

รายการทุกอย่างที่ครอบคลุมในชุดมีอะไรใหม่ใน WebGPU

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113