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, erken erişim denemesi sırasında bazı cihazlarda matris-vektör çarpımı gölgelendiricileri için alt gruplar paketlenmiş tam sayı nokta çarpımlarına göre karşılaştırıldığında Google Meet'in hızında 2,3-2,9 kat artış görüldü.

"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 ileti 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ırma

"float32-blendable" özelliğiyle 32 bit kayan nokta dokularını karıştırma kullanıma sunulduğundan, kayan nokta filtreleyebilen doku türlerinin karıştırılabilir olarak yanlış şekilde 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() yerine kullanılı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ı commit listesine göz atın.

WebGPU'daki yenilikler

WebGPU'daki Yenilikler serisinde ele alınan her şeyin listesi.

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