WebGPU 新功能 (Chrome 134)

François Beaufort
François Beaufort

發布日期:2025 年 2 月 26 日

使用子群組提升機器學習工作負載

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

以基準測試子群組與封裝整數點積,針對某些裝置上的矩陣向量乘法著色器進行基準測試時,Google Meet 的速度提升了 2.3 到 2.9 倍 (來源試用期間)。

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

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

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

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

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

要求 GPUDevice 時,如果同時使用 "shader-f16" 和 "subgroups" 功能,即可搭配子群組使用 f16 值。

以下範例是探索子群組的絕佳起點:這個著色器使用 subgroupExclusiveMul() 內建函式計算階乘,不會讀取或寫入記憶體來傳達中繼結果。

移除可做為可混合的浮點可篩選紋理類型支援

現在 32 位元浮點紋理混合已透過 "float32-blendable" 功能提供,因此系統會移除對浮點可篩選紋理類型做為可混合的錯誤支援。請參閱問題 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 155-156

Chrome 153-154

Chrome 151-152

Chrome 149-150

Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

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