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ıllık geliştirme ve deneme sürecinin ardından, SIMD düzeyinde paralelliği etkinleştiren WebGPU alt grupları özelliği kullanıma sunuldu. Bir çalışma grubundaki iş parçacıklarının iletişim kurmasına ve toplu matematik işlemleri (ör. sayıların toplamını hesaplama) yapmasına olanak tanır. Ayrıca, iş parçacıkları arasında veri paylaşımı için verimli bir yöntem sunar. Orijinal teklif ve chromestatus girişine bakın.

Referans olarak, orijin denemesi sırasında bazı cihazlarda matris-vektör çarpımı gölgelendiricileri için alt gruplar packed integer dot products ile karşılaştırıldığında Google Meet'in 2,3-2,9 kat daha hızlı olduğu görülmüştür.

"subgroups" özelliği GPUAdapter içinde kullanılabildiğinde, WGSL'de alt grup desteği almak için bu özelliği içeren bir GPUDevice isteyin. subgroupMinSize ve subgroupMaxSize bağdaştırıcı bilgi değerlerini kontrol etmek faydalı olabilir. Örneğin, belirli bir boyutta alt grup gerektiren sabit kodlanmış bir algoritmanız varsa.

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

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

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

Çok sayıda alt grup yerleşik işlevi (ör. subgroupAdd(), subgroupBallot(), subgroupBroadcast(), subgroupShuffle()), bir alt gruptaki çağırmalar arasında verimli iletişim ve hesaplama yapılmasını sağlar. Bu alt grup işlemleri, tek talimatlı çoklu iş parçacığı (SIMT) işlemleri olarak sınıflandırılır. Ayrıca, dörtlü çağırma üzerinde çalışan dörtlü yerleşik işlevler, dörtlü içinde veri iletişimini kolaylaştırır.

Hem "shader-f16" hem de "subgroups" özelliklerini içeren bir GPUDevice istediğinizde alt gruplarla birlikte f16 değerlerini kullanabilirsiniz.

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

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

"float32-blendable" özelliğiyle 32 bit kayan nokta dokularının karıştırılması kullanıma sunulduğundan, kayan nokta filtreleyebilen doku türlerinin karıştırılabilir olarak yanlış desteklenmesi kaldırıldı. 364987733 numaralı soruna bakın.

Dawn güncellemeleri

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

wgpu::Instance için yeni GetWGSLLanguageFeatures() yöntemi artık EnumerateWGSLLanguageFeatures()'ın yerini alıyor. 368672124 numaralı sorunu inceleyin.

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ı sorunu inceleyin.

  • 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 artık WriteOnly

Bu özet yalnızca önemli noktalardan bazılarını kapsar. Kapsamlı işleme listesine göz atın.

WebGPU'daki yenilikler

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

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