Data di pubblicazione: 26 febbraio 2025
Migliorare i carichi di lavoro di machine learning con i sottogruppi
Dopo un anno di sviluppo e prove, la funzionalità WebGPU dei sottogruppi che consente il parallelismo a livello SIMD è ora disponibile. Consente ai thread di un gruppo di lavoro di comunicare ed eseguire operazioni matematiche collettive, come il calcolo di una somma di numeri, e offre un metodo efficiente per la condivisione dei dati tra thread. Consulta la proposta originale e la voce di chromestatus.
Come riferimento, Google Meet ha registrato un aumento della velocità di 2,3-2,9 volte durante il benchmarking dei sottogruppi rispetto ai prodotti in virgola mobile con numeri interi impacchettati per gli shader di moltiplicazione matrice-vettore su alcuni dispositivi durante la prova dell'origine.
Quando la funzionalità "subgroups"
è disponibile in un GPUAdapter
, richiedi un GPUDevice
con questa funzionalità per ottenere il supporto dei sottogruppi in WGSL. È utile controllare i valori delle informazioni dell'adattatore subgroupMinSize
e subgroupMaxSize
, ad esempio se hai un algoritmo hardcoded che richiede un sottogruppo di una determinata dimensione.
Inoltre, devi attivare esplicitamente questa estensione nel codice WGSL con enable subgroups;
per accedere ai seguenti valori predefiniti sia nelle fasi di calcolo che negli shader di frammento:
subgroup_invocation_id
: un valore predefinito per l'indice del thread all'interno del sottogruppo.subgroup_size
: un valore predefinito per l'accesso alle dimensioni dei sottogruppi.
Le numerose funzioni predefinite dei sottogruppi (ad esempio subgroupAdd()
, subgroupBallot()
, subgroupBroadcast()
, subgroupShuffle()
) consentono una comunicazione e un calcolo efficienti tra le invocazioni all'interno di un sottogruppo. Queste operazioni di sottogruppi sono classificate come operazioni SIMT (single-instruction multiple-thread). Inoltre, le funzioni integrate del quad, che operano su un quad di invocazioni, facilitano la comunicazione dei dati all'interno del quad.
Puoi utilizzare i valori f16 con i sottogruppi quando richiedi un GPUDevice
con le funzionalità "shader-f16"
e "subgroups"
.
Il seguente esempio è un buon punto di partenza per esplorare i sottogruppi: mostra uno shader che utilizza la funzione subgroupExclusiveMul()
integrata per calcolare i fattoriali senza leggere o scrivere nella memoria per comunicare i risultati intermedi.
Rimuovere il supporto dei tipi di texture filtrabili con valori float come miscelabili
Ora che la fusione delle texture con valori float a 32 bit è disponibile con la funzionalità "float32-blendable"
, il supporto errato dei tipi di texture filtrabili con valori float come miscibibili è stato rimosso. Consulta il problema 364987733.
Aggiornamenti di Dawn
Dawn ora richiede macOS 11 e iOS 14 e supporta solo Metal 2.3 e versioni successive. Consulta il problema 381117827.
Il nuovo metodo GetWGSLLanguageFeatures()
di wgpu::Instance
ora sostituisce EnumerateWGSLLanguageFeatures()
. Consulta il problema 368672124.
I seguenti tipi di vincolo hanno un valore Undefined
e i relativi valori predefiniti nel layout del vincolo sono stati modificati. Consulta il problema 377820810.
wgpu::BufferBindingType::Undefined
ora èUniform
wgpu::SamplerBindingType::Undefined
ora èFiltering
wgpu::TextureSampleType::Undefined
ora èFloat
wgpu::StorageTextureAccess::Undefined
è diventatoWriteOnly
Sono riportati solo alcuni punti salienti. Consulta l'elenco completo dei commit.
Novità di WebGPU
Un elenco di tutto ciò che è stato trattato nella serie Novità di WebGPU.
Chrome 134
- Migliora i carichi di lavoro di machine learning con i sottogruppi
- Rimuovi il supporto dei tipi di texture filtrabili con valori float come miscelabili
- Aggiornamenti di Dawn
Chrome 133
- Formati di vertici unorm8x4-bgra e a 1 componente aggiuntivi
- Consenti la richiesta di limiti sconosciuti con valore non definito
- Modifiche alle regole di allineamento WGSL
- Miglioramenti del rendimento di WGSL con l'eliminazione
- Utilizzare displaySize di VideoFrame per le texture esterne
- Gestire le immagini con orientamenti non predefiniti utilizzando copyExternalImageToTexture
- Miglioramento dell'esperienza degli sviluppatori
- Attivare la modalità di compatibilità con featureLevel
- Pulizia delle funzionalità dei sottogruppi sperimentali
- Ritiro del limite maxInterStageShaderComponents
- Aggiornamenti di Dawn
Chrome 132
- Utilizzo della visualizzazione delle texture
- Mescolanza di texture con formato a virgola mobile 32 bit
- Attributo adapterInfo di GPUDevice
- La configurazione del contesto della tela con un formato non valido genera un errore JavaScript
- Limitazioni dei filtri di campionamento nelle texture
- Sperimentazione dei sottogruppi estesi
- Miglioramento dell'esperienza degli sviluppatori
- Supporto sperimentale per i formati delle texture normalizzate a 16 bit
- Aggiornamenti di Dawn
Chrome 131
- Tagliare le distanze in WGSL
- GPUCanvasContext getConfiguration()
- Gli elementi primitivi punto e linea non devono avere bias di profondità
- Funzioni integrate di scansione inclusiva per i sottogruppi
- Supporto sperimentale per il rendering indiretto multi-draw
- Opzione di compilazione del modulo shader matematica rigorosa
- Rimuovi requestAdapterInfo() di GPUAdapter
- Aggiornamenti di Dawn
Chrome 130
- Combinazione di due sorgenti
- Miglioramenti ai tempi di compilazione degli shader su Metal
- Obsoletezza di requestAdapterInfo() di GPUAdapter
- Aggiornamenti di Dawn
Chrome 129
- Supporto HDR con modalità di mappatura tonale della tela
- Supporto dei sottogruppi ampliato
- Aggiornamenti di Dawn
Chrome 128
- Sperimentazione con i sottogruppi
- Ritiro dell'impostazione della bias di profondità per linee e punti
- Nascondere l'avviso DevTools relativo a un errore non rilevato se preventDefault
- WGSL esegue prima l'interpolazione del campionamento e poi
- Aggiornamenti di Dawn
Chrome 127
- Supporto sperimentale per OpenGL ES su Android
- Attributo info di GPUAdapter
- Miglioramenti all'interoperabilità di WebAssembly
- Errori relativi all'encoder dei comandi migliorati
- Aggiornamenti di Dawn
Chrome 126
- Aumentare il limite di maxTextureArrayLayers
- Ottimizzazione del caricamento del buffer per il backend Vulkan
- Miglioramenti ai tempi di compilazione degli shader
- Gli spazi dei comandi inviati devono essere univoci
- Aggiornamenti di Dawn
Chrome 125
- Sottogruppi (funzionalità in fase di sviluppo)
- Eseguire il rendering di una sezione della texture 3D
- Aggiornamenti di Dawn
Chrome 124
- Texture di archiviazione di sola lettura e di lettura e scrittura
- Supporto di worker di servizio e worker condivisi
- Nuovi attributi delle informazioni sull'adattatore
- Correzioni di bug
- Aggiornamenti di Dawn
Chrome 123
- Supporto delle funzioni integrate DP4a in WGSL
- Parametri del cursore non soggetti a restrizioni in WGSL
- Sintassi alternativa per il dereferenziamento dei compositi in WGSL
- Stato di sola lettura separato per gli aspetti di stencil e profondità
- Aggiornamenti di Dawn
Chrome 122
- Ampliare la copertura con la modalità di compatibilità (funzionalità in fase di sviluppo)
- Aumentare il limite di maxVertexAttributes
- Aggiornamenti di Dawn
Chrome 121
- Supporto di WebGPU su Android
- Utilizzare DXC anziché FXC per la compilazione degli shader su Windows
- Query sui timestamp nei passaggi di calcolo e rendering
- Punti di contatto predefiniti per i moduli shader
- Supporto di display-p3 come spazio colore GPUExternalTexture
- Informazioni sugli heap di memoria
- Aggiornamenti di Dawn
Chrome 120
- Supporto dei valori in virgola mobile a 16 bit in WGSL
- Spingere i limiti al massimo
- Modifiche allo stato della maschera di profondità
- Aggiornamenti delle informazioni sugli adattatori
- Quantizzazione delle query sui timestamp
- Funzionalità per le pulizie di primavera
Chrome 119
- Texture con formato a virgola mobile 32 bit filtrabili
- Formato vertice unorm10-10-10-2
- Formato texture rgb10a2uint
- Aggiornamenti di Dawn
Chrome 118
- Supporto di HTMLImageElement e ImageData in
copyExternalImageToTexture()
- Supporto sperimentale per le texture di archiviazione in lettura/scrittura e di sola lettura
- Aggiornamenti di Dawn
Chrome 117
- Buffer di vertici non impostato
- Reimpostare il gruppo di associazione
- Ignorare gli errori della creazione della pipeline asincrona quando il dispositivo viene smarrito
- Aggiornamenti sulla creazione di moduli shader SPIR-V
- Miglioramento dell'esperienza degli sviluppatori
- Pipeline di memorizzazione nella cache con layout generato automaticamente
- Aggiornamenti di Dawn
Chrome 116
- Integrazione di WebCodecs
- Dispositivo smarrito restituito da GPUAdapter
requestDevice()
- Mantenere la riproduzione video fluida se viene chiamato
importExternalTexture()
- Conformità alle specifiche
- Miglioramento dell'esperienza degli sviluppatori
- Aggiornamenti di Dawn
Chrome 115
- Estensioni di lingua WGSL supportate
- Supporto sperimentale per Direct3D 11
- Ottenere una GPU discreta per impostazione predefinita con alimentazione CA
- Miglioramento dell'esperienza degli sviluppatori
- Aggiornamenti di Dawn
Chrome 114
- Ottimizza JavaScript
- getCurrentTexture() su canvas non configurato genera un errore InvalidStateError
- Aggiornamenti WGSL
- Aggiornamenti di Dawn