WebGPU の新機能(Chrome 134)

François Beaufort
François Beaufort

公開日: 2025 年 2 月 26 日

サブグループを使用して ML ワークロードを改善する

1 年間の開発とトライアルを経て、SIMD レベルの並列処理を可能にする WebGPU 機能のサブグループが利用可能になりました。これにより、ワークグループ内のスレッドが通信して、数値の合計の計算などの集合的な数学演算を実行できます。また、スレッド間のデータ共有に効率的な方法を提供します。元の提案chromestatus エントリをご覧ください。

参考として、一部のデバイスで オリジン トライアル中に、行列ベクトル乗算シェーダーの パックされた整数ドット積に対してサブグループをベンチマークしたところ、Google Meet で 2.3 ~ 2.9 倍の速度向上が見られました。

GPUAdapter"subgroups" 機能が利用可能な場合は、この機能を含む GPUDevice をリクエストして、WGSL でサブグループのサポートを取得します。subgroupMinSize アダプタと subgroupMaxSize アダプタの情報値を確認すると便利です。たとえば、特定のサイズのサブグループを必要とするアルゴリズムがハードコードされている場合などです。

また、コンピューティング シェーダーとフラグメント シェーダーの両方のステージで次の組み込み値にアクセスするには、enable subgroups; を使用して WGSL コードでこの拡張機能を明示的に有効にする必要があります。

  • subgroup_invocation_id: サブグループ内のスレッドのインデックスの組み込み値。

  • subgroup_size: サブグループ サイズ アクセスの組み込み値。

多数のサブグループ組み込み関数subgroupAdd()subgroupBallot()subgroupBroadcast()subgroupShuffle() など)により、サブグループ内の呼び出し間の効率的な通信と計算が可能になります。これらのサブグループ オペレーションは、単一命令複数スレッド(SIMT)オペレーションとして分類されます。また、呼び出しの quad で動作する quad 組み込み関数により、quad 内のデータ通信が容易になります。

"shader-f16""subgroups" の両方の特徴を持つ GPUDevice をリクエストする場合、サブグループで f16 値を使用できます。

次のサンプルは、サブグループを調べるための出発点として最適です。このサンプルは、subgroupExclusiveMul() 組み込み関数を使用して階乗を計算するシェーダーを示しています。このシェーダーは、中間結果を伝達するためにメモリの読み取りや書き込みを行いません。

ブレンド可能な float フィルタリング可能なテクスチャ タイプのサポートを削除

"float32-blendable" 機能で 32 ビット浮動小数点テクスチャのブレンドが利用可能になったため、ブレンド可能な浮動小数点フィルタリング可能なテクスチャ型に対する誤ったサポートが削除されました。問題 364987733 をご覧ください。

Dawn のアップデート

Dawn で macOS 11 と iOS 14 が必要になり、Metal 2.3 以降のみがサポートされるようになりました。問題 381117827 をご覧ください。

wgpu::Instance の新しい GetWGSLLanguageFeatures() メソッドが EnumerateWGSLLanguageFeatures() に置き換わりました。問題 368672124 を参照してください。

次のバインディング タイプには Undefined 値があり、バインディング レイアウトのデフォルト値が変更されています。問題 377820810 をご覧ください。

  • wgpu::BufferBindingType::UndefinedUniform に変更
  • wgpu::SamplerBindingType::UndefinedFiltering に変更
  • wgpu::TextureSampleType::UndefinedFloat に変更
  • wgpu::StorageTextureAccess::UndefinedWriteOnly になりました

ここでは、主なハイライトの一部のみを取り上げます。コミットの一覧をご覧ください。

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