Nouveautés de WebGPU (Chrome 134)

François Beaufort
François Beaufort

Publié le 26 février 2025

Améliorer les charges de travail de machine learning avec des sous-groupes

Après un an de développement et d'essais, la fonctionnalité WebGPU des sous-groupes permettant le parallélisme au niveau SIMD est désormais disponible. Il permet aux threads d'un groupe de travail de communiquer et d'exécuter des opérations mathématiques collectives, telles que le calcul d'une somme de nombres, et offre une méthode efficace de partage de données entre les threads. Consultez la proposition initiale et l'entrée chromestatus.

Pour information, Google Meet a vu sa vitesse augmenter de 2,3 à 2,9 fois lors des tests comparatifs des sous-groupes par rapport aux produits scalaires entiers empaquetés pour les nuanceurs de multiplication matricielle-vectorielle sur certains appareils lors du test de l'origine.

Lorsque la fonctionnalité "subgroups" est disponible dans un GPUAdapter, demandez un GPUDevice avec cette fonctionnalité pour bénéficier de la prise en charge des sous-groupes dans WGSL. Il est utile de vérifier les valeurs d'informations de l'adaptateur subgroupMinSize et subgroupMaxSize, par exemple si vous disposez d'un algorithme codé en dur qui nécessite un sous-groupe d'une certaine taille.

Vous devez également activer explicitement cette extension dans votre code WGSL avec enable subgroups; pour accéder aux valeurs intégrées suivantes aux étapes de calcul et de nuanceur de fragment:

  • subgroup_invocation_id: valeur intégrée pour l'indice du fil de discussion dans le sous-groupe.

  • subgroup_size: valeur intégrée pour l'accès à la taille du sous-groupe.

Les nombreuses fonctions intégrées de sous-groupe (par exemple, subgroupAdd(), subgroupBallot(), subgroupBroadcast(), subgroupShuffle()) permettent une communication et un calcul efficaces entre les invocations d'un sous-groupe. Ces opérations de sous-groupe sont classées comme des opérations SIMT (single-instruction multiple-thread). De plus, les fonctions intégrées au quad, qui fonctionnent sur un quad d'appels, facilitent la communication des données au sein du quad.

Vous pouvez utiliser des valeurs f16 avec des sous-groupes lorsque vous demandez une GPUDevice avec des fonctionnalités "shader-f16" et "subgroups".

L'exemple suivant est un bon point de départ pour explorer les sous-groupes: il montre un nuanceur qui utilise la fonction intégrée subgroupExclusiveMul() pour calculer les facteurs sans lire ni écrire de mémoire pour communiquer les résultats intermédiaires.

Suppression de la compatibilité des types de textures filtrables à virgule flottante en tant que mélangeables

Maintenant que le mélange des textures à virgule flottante 32 bits est disponible avec la fonctionnalité "float32-blendable", la compatibilité incorrecte des types de textures filtrables à virgule flottante en tant que mélangeables est supprimée. Consultez le problème 364987733.

Informations Dawn

Dawn nécessite désormais macOS 11 et iOS 14, et n'est compatible qu'avec Metal 2.3 ou version ultérieure. Consultez l'article 381117827.

La nouvelle méthode GetWGSLLanguageFeatures() de wgpu::Instance remplace désormais EnumerateWGSLLanguageFeatures(). Voir le problème 368672124.

Les types de liaisons suivants ont une valeur Undefined, et leurs valeurs par défaut dans la mise en page de la liaison ont été modifiées. Consultez le problème 377820810.

  • wgpu::BufferBindingType::Undefined est désormais Uniform.
  • wgpu::SamplerBindingType::Undefined est désormais Filtering.
  • wgpu::TextureSampleType::Undefined est désormais Float.
  • wgpu::StorageTextureAccess::Undefined devient WriteOnly

Il ne s'agit là que de quelques-uns des points clés. Consultez la liste exhaustive des commits.

Nouveautés de WebGPU

Liste de tout ce qui a été abordé dans la série Nouveautés de 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