Yang Baru di WebGPU (Chrome 134)

François Beaufort
François Beaufort

Dipublikasikan: 26 Februari 2025

Meningkatkan workload machine learning dengan subgrup

Setelah satu tahun pengembangan dan uji coba, fitur WebGPU subgrup yang memungkinkan paralelisme tingkat SIMD kini tersedia. Hal ini memungkinkan thread dalam grup kerja untuk berkomunikasi dan menjalankan operasi matematika kolektif, seperti menghitung jumlah angka, dan menawarkan metode yang efisien untuk berbagi data lintas thread. Lihat proposal asli dan entri chromestatus.

Sebagai referensi, Google Meet mengalami peningkatan kecepatan 2,3-2,9 kali lipat saat menjalankan benchmark subgrup terhadap produk titik bilangan bulat yang dikemas untuk shader perkalian matriks-vektor di beberapa perangkat selama uji coba origin.

Jika fitur "subgroups" tersedia di GPUAdapter, minta GPUDevice dengan fitur ini untuk mendapatkan dukungan subgrup di WGSL. Sebaiknya periksa nilai info adaptor subgroupMinSize dan subgroupMaxSize—misalnya, jika Anda memiliki algoritma hardcode yang memerlukan subgrup dengan ukuran tertentu.

Anda juga perlu mengaktifkan ekstensi ini secara eksplisit dalam kode WGSL dengan enable subgroups; untuk mendapatkan akses ke nilai bawaan berikut di tahap shader komputasi dan fragmen:

  • subgroup_invocation_id: Nilai bawaan untuk indeks rangkaian pesan dalam subgrup.

  • subgroup_size: Nilai bawaan untuk akses ukuran subgrup.

Banyak fungsi bawaan subgrup (misalnya, subgroupAdd(), subgroupBallot(), subgroupBroadcast(), subgroupShuffle()) memungkinkan komunikasi dan komputasi yang efisien antara pemanggilan dalam subgrup. Operasi subgrup ini diklasifikasikan sebagai operasi single-instruction multiple-thread (SIMT). Selain itu, fungsi bawaan quad, yang beroperasi pada quad pemanggilan, memfasilitasi komunikasi data dalam quad.

Anda dapat menggunakan nilai f16 dengan subgrup saat meminta GPUDevice dengan fitur "shader-f16" dan "subgroups".

Contoh berikut adalah titik awal yang baik untuk menjelajahi subgrup: contoh ini menunjukkan shader yang menggunakan fungsi bawaan subgroupExclusiveMul() untuk menghitung faktorial tanpa membaca atau menulis memori untuk mengomunikasikan hasil perantara.

Menghapus dukungan jenis tekstur yang dapat difilter float sebagai yang dapat digabungkan

Setelah gabungan tekstur float 32-bit tersedia dengan fitur "float32-blendable", dukungan yang salah untuk jenis tekstur yang dapat difilter float sebagai gabungan akan dihapus. Lihat masalah 364987733.

Update fajar

Dawn kini memerlukan macOS 11 dan iOS 14 serta hanya mendukung Metal 2.3+. Lihat masalah 381117827.

Metode GetWGSLLanguageFeatures() baru dari wgpu::Instance kini menggantikan EnumerateWGSLLanguageFeatures(). Lihat masalah 368672124.

Jenis binding berikut memiliki nilai Undefined dan nilai defaultnya dalam tata letak binding telah diubah. Lihat masalah 377820810.

  • wgpu::BufferBindingType::Undefined sekarang menjadi Uniform
  • wgpu::SamplerBindingType::Undefined sekarang menjadi Filtering
  • wgpu::TextureSampleType::Undefined sekarang menjadi Float
  • wgpu::StorageTextureAccess::Undefined kini menjadi WriteOnly

Bagian ini hanya membahas beberapa sorotan utama. Lihat daftar commit yang lengkap.

Yang Baru di WebGPU

Daftar semua yang telah dibahas dalam seri Yang Baru di 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