เผยแพร่เมื่อวันที่ 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
- ปรับปรุงเวิร์กโหลดแมชชีนเลิร์นนิงด้วยกลุ่มย่อย
- นำการรองรับประเภทพื้นผิวที่กรองแบบลอยตัวออกเพื่อใช้เป็นพื้นผิวที่ผสมได้
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 133
- รูปแบบเวิร์กเท็กซ์แบบ unorm8x4-bgra และแบบคอมโพเนนต์เดียวเพิ่มเติม
- อนุญาตให้ขอขีดจํากัดที่ไม่รู้จักด้วยค่าที่ไม่ระบุ
- การเปลี่ยนแปลงกฎการจัดแนว WGSL
- ประสิทธิภาพ WGSL ที่เพิ่มขึ้นเมื่อมีการทิ้ง
- ใช้ displaySize ของ VideoFrame สำหรับพื้นผิวภายนอก
- จัดการรูปภาพที่มีการวางแนวที่ไม่ใช่ค่าเริ่มต้นโดยใช้ copyExternalImageToTexture
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- เปิดใช้โหมดความเข้ากันได้ด้วย featureLevel
- การล้างข้อมูลฟีเจอร์กลุ่มย่อยเวอร์ชันทดลอง
- เลิกใช้งานขีดจำกัด maxInterStageShaderComponents
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 132
- การใช้งานมุมมองพื้นผิว
- การผสมพื้นผิวแบบจำนวนลอยตัว 32 บิต
- แอตทริบิวต์ adapterInfo ของ GPUDevice
- การกําหนดค่าบริบท Canvas ด้วยรูปแบบที่ไม่ถูกต้องจะทำให้เกิดข้อผิดพลาด JavaScript
- การกรองข้อจำกัดของตัวสุ่มตัวอย่างในพื้นผิว
- การทดสอบกลุ่มย่อยแบบขยาย
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- การรองรับรูปแบบพื้นผิวแบบ 16 บิตที่ปรับมาตรฐานแล้วในขั้นทดลอง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 131
- ตัดระยะทางใน WGSL
- GPUCanvasContext getConfiguration()
- องค์ประกอบพื้นฐานของจุดและเส้นต้องไม่มีอคติด้านความลึก
- ฟังก์ชันการสแกนแบบรวมในตัวสำหรับกลุ่มย่อย
- การรองรับการดึงข้อมูลแบบหลายดึงข้อมูลโดยอ้อมในขั้นทดลอง
- ตัวเลือกการคอมไพล์โมดูล Shader เป็นแบบคณิตศาสตร์ที่เข้มงวด
- นํา GPUAdapter requestAdapterInfo() ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 130
- การผสมผสานแหล่งที่มาแบบคู่
- การปรับปรุงเวลาคอมไพล์ Shader ใน Metal
- การเลิกใช้งาน GPUAdapter requestAdapterInfo()
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 129
- การรองรับ HDR ด้วยโหมดการปรับโทนสีของ Canvas
- การรองรับกลุ่มย่อยที่เพิ่มขึ้น
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 128
- การทดสอบกลุ่มย่อย
- เลิกใช้งานการตั้งค่าความเอียงของภาพสำหรับเส้นและจุด
- ซ่อนคำเตือนข้อผิดพลาดของเครื่องมือสำหรับนักพัฒนาเว็บที่ไม่ได้บันทึกไว้หาก preventDefault
- WGSL จะปัดเศษการสุ่มตัวอย่างก่อน แล้วทำอย่างใดอย่างหนึ่งต่อไปนี้
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 127
- การรองรับ OpenGL ES ใน Android แบบทดลอง
- แอตทริบิวต์ข้อมูล GPUAdapter
- การปรับปรุงความสามารถในการทำงานร่วมกันของ WebAssembly
- ข้อผิดพลาดเกี่ยวกับโปรแกรมเข้ารหัสคําสั่งที่ปรับปรุงแล้ว
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 126
- เพิ่มขีดจํากัด maxTextureArrayLayers
- การเพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สําหรับแบ็กเอนด์ Vulkan
- การปรับปรุงเวลาคอมไพล์ Shader
- บัฟเฟอร์คำสั่งที่ส่งต้องไม่ซ้ำกัน
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 125
Chrome 124
- พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและแบบอ่านและเขียน
- การรองรับ Service Worker และ Shared Worker
- แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
- แก้ไขข้อบกพร่อง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 123
- การรองรับฟังก์ชันในตัวของ DP4a ใน WGSL
- พารามิเตอร์พอยน์เตอร์ที่ไม่มีข้อจำกัดใน WGSL
- Syntax sugar สำหรับการนำคอมโพสิทมาอ้างอิงใน WGSL
- แยกสถานะอ่านอย่างเดียวสำหรับแสตนซิลและมิติความลึก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 122
- ขยายการเข้าถึงด้วยโหมดความเข้ากันได้ (ฟีเจอร์ที่อยู่ระหว่างการพัฒนา)
- เพิ่มขีดจํากัด maxVertexAttributes
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 121
- รองรับ WebGPU ใน Android
- ใช้ DXC แทน FXC สำหรับการคอมไพล์ shader ใน Windows
- การค้นหาการประทับเวลาในการคำนวณและผ่านการแสดงผล
- จุดแรกเข้าเริ่มต้นไปยังโมดูล Shader
- รองรับ display-p3 เป็นพื้นที่สี GPUExternalTexture
- ข้อมูลกองหน่วยความจำ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 120
- การรองรับค่าทศนิยม 16 บิตใน WGSL
- ก้าวข้ามขีดจำกัด
- การเปลี่ยนแปลงสถานะความลึกของหลุมร่อง
- การอัปเดตข้อมูลอะแดปเตอร์
- การแปลงค่าการค้นหาการประทับเวลา
- ฟีเจอร์ทำความสะอาดช่วงฤดูใบไม้ผลิ
Chrome 119
- พื้นผิวแบบจำนวนลอยตัว 32 บิตที่กรองได้
- รูปแบบเวิร์กเท็กซ์ unorm10-10-10-2
- รูปแบบพื้นผิว rgb10a2uint
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 118
- การรองรับ HTMLImageElement และ ImageData ใน
copyExternalImageToTexture()
- การรองรับแบบทดลองสำหรับพื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่าน/เขียน
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 117
- ยกเลิกการตั้งค่าบัฟเฟอร์เวิร์กเทกซ์
- ยกเลิกการตั้งค่ากลุ่มการเชื่อมโยง
- ซ่อนข้อผิดพลาดจากการสร้างไปป์ไลน์แบบแอสซิงค์เมื่ออุปกรณ์สูญหาย
- การอัปเดตการสร้างโมดูล Shader ของ SPIR-V
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- การแคชไปป์ไลน์ที่มีเลย์เอาต์ที่สร้างขึ้นโดยอัตโนมัติ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 116
- การผสานรวม WebCodecs
- อุปกรณ์ที่สูญหายที่ GPUAdapter
requestDevice()
แสดง - ทำให้การเล่นวิดีโอราบรื่นหากมีการเรียกใช้
importExternalTexture()
- การปฏิบัติตามข้อกำหนด
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 115
- ส่วนขยายภาษา WGSL ที่รองรับ
- การรองรับ Direct3D 11 แบบทดลอง
- ใช้ GPU แบบแยกต่างหากโดยค่าเริ่มต้นเมื่อใช้แหล่งจ่ายไฟ AC
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 114
- เพิ่มประสิทธิภาพ JavaScript
- getCurrentTexture() ใน Canvas ที่ไม่ได้กําหนดค่าจะแสดงข้อผิดพลาด InvalidStateError
- ข้อมูลอัปเดตเกี่ยวกับ WGSL
- ข้อมูลอัปเดตเกี่ยวกับ Dawn