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

François Beaufort
François Beaufort

เผยแพร่: 26 กุมภาพันธ์ 2025

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

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

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

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

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

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

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

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

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

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

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

ตอนนี้ 32-bit float textures blending พร้อมใช้งานแล้วในฟีเจอร์ "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 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

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