Wat is er nieuw in WebGPU (Chrome 134)

François Beaufort
François Beaufort

Gepubliceerd: 26 februari 2025

Verbeter machine learning-workloads met subgroepen

Na een jaar van ontwikkeling en testen is de WebGPU-functie voor subgroepen die parallellisme op SIMD-niveau mogelijk maakt nu beschikbaar. Het zorgt ervoor dat threads in een werkgroep kunnen communiceren en collectieve wiskundige bewerkingen kunnen uitvoeren, zoals het berekenen van een som van getallen, en biedt een efficiënte methode voor het delen van gegevens over de threads heen. Bekijk het oorspronkelijke voorstel en de chromestatus-invoer .

Ter referentie: Google Meet zag een snelheidstoename van 2,3 tot 2,9 keer bij het benchmarken van subgroepen met verpakte integer dot-producten voor matrix-vector multiply shaders op sommige apparaten tijdens de origin-proef .

Wanneer de functie "subgroups" beschikbaar is in een GPUAdapter , vraagt ​​u een GPUDevice met deze functie aan om ondersteuning voor subgroepen te krijgen in WGSL. Het is handig om de informatiewaarden van subgroupMinSize en subgroupMaxSize adapter te controleren, bijvoorbeeld als u een hardgecodeerd algoritme hebt dat een subgroep van een bepaalde grootte vereist.

U moet deze extensie ook expliciet inschakelen in uw WGSL-code met enable subgroups; om toegang te krijgen tot de volgende ingebouwde waarden in zowel compute- als fragment shaders-fasen:

  • subgroup_invocation_id : een ingebouwde waarde voor de index van de thread binnen de subgroep.

  • subgroup_size : Een ingebouwde waarde voor toegang tot de subgroepgrootte.

De talrijke ingebouwde functies van subgroepen (bijvoorbeeld subgroupAdd() , subgroupBallot() , subgroupBroadcast() , subgroupShuffle() ) maken efficiënte communicatie en berekeningen tussen aanroepen binnen een subgroep mogelijk. Deze subgroepbewerkingen worden geclassificeerd als SIMT-bewerkingen (single-instruction multiple-thread). Bovendien vergemakkelijken de ingebouwde functies van de quad , die werken op een quad aanroepingen, de datacommunicatie binnen de quad.

U kunt f16-waarden gebruiken met subgroepen wanneer u een GPUDevice aanvraagt ​​met zowel de functies "shader-f16" als "subgroups" .

Het volgende voorbeeld is een goed startpunt voor het verkennen van subgroepen: het toont een arcering die de ingebouwde functie subgroupExclusiveMul() gebruikt om faculteiten te berekenen zonder geheugen te lezen of te schrijven om tussenresultaten te communiceren.

Verwijder de float-filterbare textuurtypes als mengbaar

Nu de 32-bits float textures blending beschikbaar is met de "float32-blendable" functie, wordt de onjuiste ondersteuning voor float filterbare textuurtypen als blendable verwijderd. Zie uitgave 364987733 .

Dawn-updates

Dawn vereist nu macOS 11 en iOS 14 en ondersteunt alleen Metal 2.3+. Zie uitgave 381117827 .

De nieuwe GetWGSLLanguageFeatures() methode van de wgpu::Instance vervangt nu EnumerateWGSLLanguageFeatures() . Zie uitgave 368672124 .

De volgende bindingstypen hebben een Undefined waarde en hun standaardwaarden in de bindingsindeling zijn gewijzigd. Zie uitgave 377820810 .

  • wgpu::BufferBindingType::Undefined is nu Uniform
  • wgpu::SamplerBindingType::Undefined is nu Filtering
  • wgpu::TextureSampleType::Undefined is nu Float
  • wgpu::StorageTextureAccess::Undefined is nu WriteOnly

Dit behandelt slechts enkele van de belangrijkste hoogtepunten. Bekijk de uitgebreide lijst met commits .

Wat is er nieuw in WebGPU

Een lijst met alles wat aan bod komt in de What's New in WebGPU -serie.

Chroom 134

Chroom 133

Chroom 132

Chroom 131

Chroom 130

Chroom 129

Chroom 128

Chroom 127

Chroom 126

Chroom 125

Chroom 124

Chroom 123

Chroom 122

Chroom 121

Chroom 120

Chroom 119

Chroom 118

Chroom 117

Chroom 116

Chroom 115

Chroom 114

Chroom 113