Yang Baru di WebGPU (Chrome 134)

François Beaufort
François Beaufort

Dipublikasikan: 26 Februari 2025

Meningkatkan kualitas workload machine learning dengan subgrup

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

Sebagai referensi, Google Meet mengalami peningkatan kecepatan 2,3-2,9 kali lipat saat mengukur tolok ukur subgrup terhadap produk titik bilangan bulat yang dipadatkan 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. Anda dapat memeriksa nilai info adaptor subgroupMinSize dan subgroupMaxSize—misalnya, jika Anda memiliki algoritma hard code 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 thread dalam subgrup.

  • subgroup_size: Nilai bawaan untuk akses ukuran subgrup.

Berbagai fungsi bawaan subgrup (misalnya, subgroupAdd(), subgroupBallot(), subgroupBroadcast(), subgroupShuffle()) memungkinkan komunikasi dan komputasi yang efisien antar-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 sementara.

Menghapus dukungan jenis tekstur yang dapat difilter float sebagai dapat digabungkan

Sekarang setelah perpaduan tekstur float 32-bit tersedia dengan fitur "float32-blendable", dukungan yang salah untuk jenis tekstur yang dapat difilter float sebagai dapat dipadukan dihapus. Lihat masalah 364987733.

Update Dawn

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 pengikatan berikut memiliki nilai Undefined dan nilai defaultnya dalam tata letak pengikatan 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 sekarang menjadi WriteOnly

Hal ini hanya mencakup beberapa sorotan utama. Lihat daftar commit yang lengkap.

Yang Baru di WebGPU

Daftar semua hal yang telah dibahas dalam seri Yang Baru di WebGPU.

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