WGSL'de DP4a yerleşik işlev desteği
DP4a (4 Öğe ve Biriktirme Nokta Çarpımı), niceleme için derin öğrenme çıkarımında yaygın olarak kullanılan bir GPU talimatları kümesini ifade eder. Bu tür 8 bitlik niceleştirilmiş modellerin hesaplanmasını hızlandırmak için 8 bit tamsayılı nokta ürünlerini verimli bir şekilde gerçekleştirir. Bellek ve ağ bant genişliğinden (%75'e kadar) tasarruf edebilir ve çıkarım yapma konusunda tüm makine öğrenimi modellerinin f32 sürümlerine kıyasla performansını artırabilir. Bu nedenle, yapay zeka artık birçok popüler yapay zeka çerçevesinde yoğun olarak kullanılmaktadır.
navigator.gpu.wgslLanguageFeatures
'te "packed_4x8_integer_dot_product"
WGSL dil uzantısı mevcut olduğunda, dot4U8Packed
ve dot4I8Packed
yerleşik işlevleriyle WGSL gölgelendirici kodunuzdaki nokta ürün talimatlarına giriş olarak 8 bitlik tam sayıların 4 bileşenli vektörlerini paketleyen 32 bit tam sayı skalerlerini kullanabilirsiniz. Paketleme ve paket açma talimatlarını pack4xI8
, pack4xU8
, pack4xI8Clamp
, pack4xU8Clamp
, unpack4xI8
ve unpack4xU8
yerleşik WGSL işlevlerine sahip 8 bitlik tam sayılardan oluşan paketlenmiş 4 bileşenli vektörlerle de kullanabilirsiniz.
WGSL gölgelendirici kodunuzun üst kısmındaki requires packed_4x8_integer_dot_product;
ile taşınabilirlik potansiyelini belirtmek için zorunludur yönergesini kullanmanız önerilir. Aşağıdaki örneğe ve sorun tonu:1497'ye bakın.
if (!navigator.gpu.wgslLanguageFeatures.has("packed_4x8_integer_dot_product")) {
throw new Error(`DP4a built-in functions are not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({ code: `
requires packed_4x8_integer_dot_product;
fn main() {
const result: u32 = dot4U8Packed(0x01020304u, 0x02040405u); // 42
}`,
});
Bu spesifikasyona ve uygulamaya uygunluk için Şangay'daki Intel Web Graphics ekibine teşekkür ediyoruz.
WGSL'deki kısıtlanmamış işaretçi parametreleri
"unrestricted_pointer_parameters"
WGSL dil uzantısı, WGSL işlevlerine hangi işaretçilerin iletilebileceğiyle ilgili kısıtlamaları gevşetmektedir:
storage
,uniform
veworkgroup
parametre işaretçileri, boşlukları kullanıcı tarafından bildirilen işlevlere yönlendirir.Yapı üyelerine ve dizi öğelerine işaretçiler, kullanıcı tarafından bildirilen işlevlere iletme.
İşlev Parametreleri Olarak İşaretçiler | Daha fazla bilgi edinmek için WGSL turuna göz atın.
Bu özellik, navigator.gpu.wgslLanguageFeatures
kullanılarak özellik tarafından algılanabilir. WGSL gölgelendirici kodunuzun üst kısmındaki requires unrestricted_pointer_parameters;
ile taşınabilirlik potansiyelini belirtmek için her zaman bir requires-directive yönergesi kullanmanız önerilir. Aşağıdaki örneğe, WGSL spesifikasyonu değişiklikleri ve sorun tonu:2053'e bakın.
if (!navigator.gpu.wgslLanguageFeatures.has("unrestricted_pointer_parameters")) {
throw new Error(`Unrestricted pointer parameters are not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({ code: `
requires unrestricted_pointer_parameters;
@group(0) @binding(0) var<storage, read_write> S : i32;
fn func(pointer : ptr<storage, i32, read_write>) {
*pointer = 42;
}
@compute @workgroup_size(1)
fn main() {
func(&S);
}`
});
WGSL'de kompozitleri referans kaldırmak için söz dizimi şekeri
İster verilerle doğrudan ister işaretçi üzerinden çalışıyor olun, "pointer_composite_access"
WGSL dil uzantısı navigator.gpu.wgslLanguageFeatures
içinde mevcut olduğunda WGSL gölgelendirici kodunuz artık aynı nokta (.
) söz dizimini kullanan karmaşık veri türlerinin bileşenlerine erişimi desteklemektedir. İşleyiş şekli:
foo
işaretçiyse:foo.bar
(*foo).bar
yazmak için daha kullanışlı bir yöntemdir. Normalde, işaretçiyi bir "başvuru"ya dönüştürmek için yıldız işareti (*
) kullanılması gerekir. başvurulabilir, ancak artık hem işaretçiler hem de referanslar çok daha benzer ve neredeyse birbirinin yerine kullanılabilir.foo
işaretçi değilse: Nokta (.
) operatörü, üyelere doğrudan erişmek için kullandığınız şekilde çalışır.
Benzer şekilde, pa
bir dizinin başlangıç adresini depolayan bir işaretçiyse pa[i]
kullanılması, bu dizinin 'i
'inci öğesinin depolandığı bellek konumuna doğrudan erişim sağlar.
WGSL gölgelendirici kodunuzun üst kısmındaki requires pointer_composite_access;
ile taşınabilirlik potansiyelini belirtmek için zorunludur yönergesini kullanmanız önerilir. Aşağıdaki örneğe ve sorun tonu:2113'e bakın.
if (!navigator.gpu.wgslLanguageFeatures.has("pointer_composite_access")) {
throw new Error(`Pointer composite access is not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({ code: `
requires pointer_composite_access;
fn main() {
var a = vec3f();
let p : ptr<function, vec3f> = &a;
let r1 = (*p).x; // always valid.
let r2 = p.x; // requires pointer composite access.
}`
});
Şablon ve derinlik unsurları için ayrı salt okunur durum
Daha önce, oluşturma geçişlerindeki salt okunur derin şablon ekleri, her iki yönün (derinlik ve şablon) salt okunur olmasını gerektiriyordu. Bu sınırlama kaldırıldı. Şimdi, derinlik boyutunu örneğin temas gölge izleme için salt okunur biçimde kullanabilirsiniz. Şablon arabelleği ise daha fazla işlenmek üzere pikselleri tanımlamak için yazılır. Issue dawn:2146'yı inceleyin.
Şafak güncellemeleri
wgpuDeviceSetUncapturedErrorCallback()
ile ayarlanan yakalanmamış hata geri çağırması artık hata oluştuğunda hemen çağrılıyor. Geliştiricilerin sürekli olarak hata ayıklamayı beklediği ve istedikleri şey budur. şafak vaktini değiştirme:173620 bölümünü inceleyin.
webgpu.h API'den wgpuSurfaceGetPreferredFormat()
yöntemi uygulandı. Sorun şafak:1362 bölümünü inceleyin.
Bunlar, öne çıkan özelliklerden yalnızca bazılarıdır. Taahhütlerin kapsamlı listesini inceleyin.
WebGPU'daki Yenilikler
WebGPU'daki Yenilikler serisinde ele alınan her şeyin listesi.
Chrome 128 sürümü
- Alt gruplarla deneme yapma
- Çizgiler ve noktalar için derinlik önyargısı ayarlama özelliğini kullanımdan kaldırma
- preventDefault ise yakalanmamış hata olan Geliştirici Araçları uyarısını gizle
- WGSL ilk olarak örneklemeyi interpol eder ve
- Gün doğumu güncellemeleri
Chrome 127 sürümü
- Android'de OpenGL ES için deneysel destek
- GPUAdapter bilgi özelliği
- WebAssembly birlikte çalışabilirlik iyileştirmeleri
- İyileştirilmiş komut kodlayıcı hataları
- Gün doğumu güncellemeleri
Chrome 126
- maxTextureArraylayers sınırını artır
- Vulkan arka ucu için arabellek yükleme optimizasyonu
- Gölgelendirme derleme zamanı iyileştirmeleri
- Gönderilen komut arabellekleri benzersiz olmalıdır
- Gün doğumu güncellemeleri
Chrome 125 sürümü
Chrome 124 sürümü
- Salt okunur ve okuma-yazma depolama dokuları
- Service Worker'lar ve paylaşılan çalışan desteği
- Yeni bağdaştırıcı bilgi özellikleri
- Hata düzeltmeleri
- Gün doğumu güncellemeleri
Chrome 123
- WGSL'de DP4a yerleşik işlev desteği
- WGSL'deki kısıtlanmamış işaretçi parametreleri
- WGSL'de kompozitleri referans kaldırmak için söz dizimi şekeri
- Şablon ve derinlik unsurları için ayrı salt okunur durum
- Gün doğumu güncellemeleri
Chrome 122
- Uyumluluk moduyla erişimi genişletme (geliştirme aşamasındaki özellik)
- maxVertexAttributes sınırını artırma
- Gün doğumu güncellemeleri
Chrome 121
- Android'de WebGPU'yu destekleme
- Windows'da gölgelendirici derlemesi için FXC yerine DXC'yi kullanın
- Bilgi işlem ve oluşturma kartlarında zaman damgası sorguları
- Gölgelendirici modüllerine varsayılan giriş noktaları
- Display-p3'ü GPUExternalTexture renk alanı olarak destekle
- Bellek yığını bilgileri
- Gün doğumu güncellemeleri
Chrome 120
- WGSL'de 16 bit kayan nokta değerleri desteği
- Sınırları zorlayın
- Derinlik şablonu durumunda yapılan değişiklikler
- Bağdaştırıcı bilgisi güncellemeleri
- Zaman damgası sorgularının nicelenmesi
- Bahar temizliği özellikleri
Chrome 119 sürümü
- Filtrelenebilir 32 bit kayan dokular
- unorm10-10-10-2 tepe noktası biçimi
- AdX10a2uint doku biçimi
- Gün doğumu güncellemeleri
Chrome 118 sürümü
copyExternalImageToTexture()
ürününde HTMLImageElement ve ImageData desteği- Okunma-yazma ve salt okunur depolama dokusu için deneysel destek
- Gün doğumu güncellemeleri
Chrome 117 sürümü
- Köşe arabelleğini ayarlama
- Bağlama grubunun ayarını kaldır
- Cihaz kaybolduğunda eşzamansız ardışık düzen oluşturma sırasında karşılaşılan hataları susturma
- SPIR-V gölgelendirici modülü oluşturma güncellemeleri
- Geliştirici deneyimini iyileştirme
- Otomatik olarak oluşturulan düzenle ardışık düzenleri önbelleğe alma
- Gün doğumu güncellemeleri
Chrome 116
- WebCodecs entegrasyonu
- GPUAdapter tarafından iade edilen kayıp cihaz
requestDevice()
importExternalTexture()
çağrılırsa video oynatmanın sorunsuz olmasını sağlayın- Spesifikasyon uygunluğu
- Geliştirici deneyimini iyileştirme
- Gün doğumu güncellemeleri
Chrome 115 sürümü
- Desteklenen WGSL dil uzantıları
- Direct3D 11 için deneysel destek
- AC gücünde ayrı GPU'yu varsayılan olarak alma
- Geliştirici deneyimini iyileştirme
- Gün doğumu güncellemeleri
Chrome 114 sürümü
- JavaScript'i optimize edin
- Yapılandırılmamış tuvalde bulunangetCurrentTexture() işlemi InvalidStateError hatası veriyor
- WGSL güncellemeleri
- Gün doğumu güncellemeleri