WebGPU 新功能 (Chrome 134)

François Beaufort
François Beaufort

發布日期:2025 年 2 月 26 日

使用子群組改善機器學習工作負載

經過一年的開發和測試,現在已推出可啟用 SIMD 等級並行處理的子群組 WebGPU 功能。這可讓工作群組中的執行緒進行通訊及執行集體數學運算,例如計算數字的總和,並提供跨執行緒資料共用作業的有效方法。請參閱原始提案chromestatus 項目

供您參考,在原點測試期間,Google Meet 針對矩陣向量乘法著色器的已封裝整數點積積算式,對子群組進行基準測試,在某些裝置上速度提升了 2.3 到 2.9 倍。

GPUAdapter 提供 "subgroups" 功能時,請要求 GPUDevice 提供這項功能,以便在 WGSL 中取得子群組支援。檢查 subgroupMinSizesubgroupMaxSize 轉接器資訊值很有幫助,例如,如果您有硬式編碼的演算法,需要特定大小的子群組。

您還必須使用 enable subgroups; 在 WGSL 程式碼中明確啟用此擴充功能,才能在運算和片段著色器階段存取下列內建值:

  • subgroup_invocation_id:子群組中執行緒索引的內建值。

  • subgroup_size:子群組大小存取權的內建值。

許多子群組內建函式 (例如 subgroupAdd()subgroupBallot()subgroupBroadcast()subgroupShuffle()) 可在子群組內的叫用之間進行有效的通訊和運算。這些子群組作業歸類為單一指令多執行緒 (SIMT) 作業。此外,四元式內建函式會針對四元式的叫用作業,方便在四元式內進行資料通訊。

當您同時要求含有 "shader-f16""subgroups" 功能的 GPUDevice 時,可以使用子群組的 f16 值。

以下範例是探索子群組的好起點:它顯示著色器,使用 subgroupExclusiveMul() 內建函式計算階乘,不必讀取或寫入記憶體來傳達中間結果。

移除浮點可篩選紋理類型的支援功能,以便混合

由於 "float32-blendable" 功能支援32 位元浮點紋理混合,因此已移除浮點可篩選紋理類型不正確支援混合功能的支援。請參閱問題 364987733

黎明更新

Dawn 現在需要 macOS 11 和 iOS 14,且只支援 Metal 2.3 以上版本。請參閱 問題 381117827

wgpu::Instance 的新 GetWGSLLanguageFeatures() 方法現在已取代 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