Neuigkeiten bei WebGPU (Chrome 134)

François Beaufort
François Beaufort

Veröffentlicht: 26. Februar 2025

Arbeitslasten für maschinelles Lernen mit Untergruppen verbessern

Nach einem Jahr Entwicklung und Tests ist die WebGPU-Funktion für Untergruppen verfügbar, die Parallelität auf SIMD-Ebene ermöglicht. Damit können Threads in einer Arbeitsgruppe kommunizieren und gemeinsame mathematische Operationen ausführen, z. B. die Summe von Zahlen berechnen. Außerdem bietet sie eine effiziente Methode für die Datenfreigabe zwischen Threads. Weitere Informationen finden Sie im ursprünglichen Vorschlag und im Chrome-Status-Eintrag.

Bei einem Benchmark für Untergruppen im Vergleich zu gepackten Integer-Punktprodukten für Matrix-Vektor-Multiplikations-Shader in Google Meet wurde während des Ursprungstests auf einigen Geräten eine 2,3- bis 2,9-fache Geschwindigkeitssteigerung festgestellt.

Wenn die Funktion "subgroups" in einem GPUAdapter verfügbar ist, fordern Sie ein GPUDevice mit dieser Funktion an, um die Unterstützung von Untergruppen in WGSL zu erhalten. Es ist hilfreich, die Adapterinformationen subgroupMinSize und subgroupMaxSize zu prüfen, z. B. wenn Sie einen fest codierten Algorithmus haben, der eine Untergruppe einer bestimmten Größe erfordert.

Sie müssen diese Erweiterung auch explizit in Ihrem WGSL-Code mit enable subgroups; aktivieren, um sowohl in Compute- als auch in Fragment-Shadern auf die folgenden integrierten Werte zuzugreifen:

  • subgroup_invocation_id: Ein integrierter Wert für den Index des Threads innerhalb der Untergruppe.

  • subgroup_size: Ein integrierter Wert für den Zugriff auf die Untergruppengröße.

Die zahlreichen integrierten Untergruppenfunktionen (z. B. subgroupAdd(), subgroupBallot(), subgroupBroadcast(), subgroupShuffle()) ermöglichen eine effiziente Kommunikation und Berechnung zwischen Aufrufen innerhalb einer Untergruppe. Diese Untergruppenoperationen werden als SIMT-Operationen (Single-Instruction Multiple-Thread) klassifiziert. Außerdem erleichtern die integrierten Quad-Funktionen, die auf einem Quad von Aufrufen ausgeführt werden, die Datenkommunikation innerhalb des Quads.

Sie können f16-Werte mit Untergruppen verwenden, wenn Sie ein GPUDevice mit den Funktionen "shader-f16" und "subgroups" anfordern.

Das folgende Beispiel ist ein guter Ausgangspunkt für die Erkundung von Untergruppen: Es zeigt einen Shader, der die integrierte Funktion subgroupExclusiveMul() verwendet, um Fakultäten zu berechnen, ohne Arbeitsspeicher zu lesen oder zu schreiben, um Zwischenergebnisse zu kommunizieren.

Unterstützung für filterbare Texturtypen mit Gleitkommazahlen als mischbar entfernen

Da das Mischen von 32-Bit-Gleitkomma-Texturen jetzt mit der "float32-blendable" Funktion verfügbar ist, wird die falsche Unterstützung für filterbare Texturtypen mit Gleitkommazahlen als mischbar entfernt. Siehe Problem 364987733.

Dawn-Updates

Dawn erfordert jetzt macOS 11 und iOS 14 und unterstützt nur Metal 2.3 oder höher. Siehe Problem 381117827.

Die neue Methode GetWGSLLanguageFeatures() von wgpu::Instance ersetzt jetzt EnumerateWGSLLanguageFeatures(). Siehe Problem 368672124.

Die folgenden Bindungstypen haben einen Undefined-Wert und ihre Standardwerte im Bindungslayout wurden geändert. Siehe Problem 377820810.

  • wgpu::BufferBindingType::Undefined ist jetzt Uniform
  • wgpu::SamplerBindingType::Undefined ist jetzt Filtering
  • wgpu::TextureSampleType::Undefined ist jetzt Float
  • wgpu::StorageTextureAccess::Undefined ist jetzt WriteOnly

Dies sind nur einige der wichtigsten Highlights. Eine vollständige Liste der Commits finden Sie hier.

Neues in WebGPU

Eine Liste aller Themen, die in der Reihe „Neues in WebGPU“ behandelt wurden.

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