WebGPU'da Yenilikler (Chrome 134)

François Beaufort
François Beaufort

Yayınlanma tarihi: 26 Şubat 2025

Alt gruplarla makine öğrenimi iş yüklerini iyileştirme

Bir yıl süren geliştirme ve denemelerden sonra, SIMD düzeyinde paralelliği etkinleştiren alt grup WebGPU özelliği kullanıma sunuldu. Bir çalışma grubundaki iş parçacıklarının iletişim kurmasına ve sayıların toplamını hesaplama gibi toplu matematik işlemlerini gerçekleştirmesine olanak tanır ve iş parçacıları arasında veri paylaşımı için verimli bir yöntem sunar. Orijinal teklife ve chromestatus girişine bakın.

Referans olarak, Google Meet'te orijinal deneme sırasında bazı cihazlarda matris-vektor çarpma gölgelendiricileri için alt gruplar paketlenmiş tam sayı nokta çarpımları ile karşılaştırıldığında 2,3-2,9 kat hız artışı görüldü.

"subgroups" özelliği bir GPUAdapter'te kullanıma sunulduğunda, WGSL'de alt grup desteği almak için bu özelliğe sahip bir GPUDevice isteyin. subgroupMinSize ve subgroupMaxSize bağdaştırıcısı bilgi değerlerini kontrol etmek yararlı olabilir. Örneğin, belirli boyutta bir alt grup gerektiren kodlanmış bir algoritmanız varsa.

Hem hesaplama hem de parçacık gölgelendirici aşamalarında aşağıdaki yerleşik değerlere erişmek için WGSL kodunuzda bu uzantıyı enable subgroups; ile açıkça etkinleştirmeniz de gerekir:

  • subgroup_invocation_id: Alt gruptaki ileti dizisinin dizini için yerleşik bir değer.

  • subgroup_size: Alt grup boyutuna erişim için yerleşik bir değer.

Çok sayıda alt grup yerleşik işlevi (örneğin, subgroupAdd(), subgroupBallot(), subgroupBroadcast(), subgroupShuffle()), alt grup içindeki çağrılar arasında verimli iletişim ve hesaplama sağlar. Bu alt grup işlemleri tek talimat birden fazla iş parçacığı (SIMT) işlemleri olarak sınıflandırılır. Ayrıca, dörtlü çağrıda çalışan dörtlü yerleşik işlevler, dörtlü içindeki veri iletişimini kolaylaştırır.

Hem "shader-f16" hem de "subgroups" özelliklerine sahip bir GPUDevice istediğinizde alt gruplarla f16 değerlerini kullanabilirsiniz.

Aşağıdaki örnek, alt grupları keşfetmek için iyi bir başlangıç noktasıdır: Ara sonuçları iletmek için bellek okumadan veya yazmadan faktöriyel hesaplamak üzere subgroupExclusiveMul() yerleşik işlevini kullanan bir gölgelendirici gösterir.

Karıştırılabilir olarak kayan nokta filtrelenebilir doku türleri desteğini kaldırın

"float32-blendable" özelliğiyle 32 bit kayan nokta dokuları karıştırma özelliği kullanıma sunulduğundan, kayan nokta filtrelenebilir doku türleri için karıştırılabilir olarak yanlış destek kaldırıldı. 364987733 numaralı soruna bakın.

Şafak güncellemeleri

Dawn artık macOS 11 ve iOS 14'ü gerektiriyor ve yalnızca Metal 2.3 ve sonraki sürümleri destekliyor. 381117827 numaralı soruna bakın.

wgpu::Instance için yeni GetWGSLLanguageFeatures() yöntemi, EnumerateWGSLLanguageFeatures() yönteminin yerini aldı. 368672124 numaralı soruna bakın.

Aşağıdaki bağlama türleri Undefined değerine sahiptir ve bağlama düzenindeki varsayılan değerleri değiştirilmiştir. 377820810 numaralı soruna bakın.

  • wgpu::BufferBindingType::Undefined, Uniform olarak değiştirilmiştir
  • wgpu::SamplerBindingType::Undefined, Filtering olarak değiştirilmiştir
  • wgpu::TextureSampleType::Undefined, Float olarak değiştirilmiştir
  • wgpu::StorageTextureAccess::Undefined adlı bankanın yeni adı WriteOnly

Bu, önemli noktalardan yalnızca bazılarını kapsar. Kapsamlı commit listesine göz atın.

WebGPU'daki Yenilikler

WebGPU'daki Yenilikler serisinde ele alınan tüm konuların listesi.

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