WebGPU 新功能 (Chrome 134)

François Beaufort
François Beaufort

發布日期:2025 年 2 月 26 日

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

經過一年的開發和試驗,我們現在推出可啟用 SIMD 層級並行的 WebGPU 功能子群組。工作群組中的執行緒可藉此通訊及執行集體數學運算 (例如計算數字總和),並提供有效率的跨執行緒資料共用方法。請參閱原始提案chromestatus 項目

原始碼試用期間,我們在部分裝置上,針對矩陣向量乘法著色器,以封裝整數點積為子群組進行基準化測試,結果顯示 Google Meet 的速度提升了 2.3 到 2.9 倍。

如果 "subgroups" 功能在 GPUAdapter 中可用,請要求使用這項功能的 GPUDevice,在 WGSL 中取得子群組支援。檢查 subgroupMinSizesubgroupMaxSize 配接器資訊值很有幫助,舉例來說,如果您有需要特定大小子群組的硬式編碼演算法,這項檢查就很有用。

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

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

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

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

要求 GPUDevice 時,如果同時具有 "shader-f16""subgroups" 功能,您就可以搭配子群組使用 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 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