دعم دوال DP4a المضمنة في WGSL
يشير DP4a (منتج النقطة لـ 4 عناصر والتراكم) إلى مجموعة من تعليمات وحدة معالجة الرسومات التي يشيع استخدامها في استنتاج التعلم المتعمق للقياس الكمي. وهي توفّر منتجات نقاط بأعداد صحيحة مكونة من 8 بت لتسريع عملية احتساب هذه النماذج المحدّدة بـ int8. وبإمكانه توفير (ما يصل إلى %75) من معدّل نقل البيانات للشبكة والذاكرة وتحسين أداء أيّ نماذج لتعلُّم الآلة في التأثير مقارنةً بالإصدار f32. ونتيجةً لذلك، أصبح مُستخدَمًا بشكل كبير في العديد من أُطر عمل الذكاء الاصطناعي (AI) الرائجة.
عند توفُّر إضافة اللغة WGSL "packed_4x8_integer_dot_product"
في navigator.gpu.wgslLanguageFeatures
، يمكنك الآن استخدام مقاييس أعداد صحيحة 32 بت تضم متّجِهات مكونة من 4 مكوّنات من أعداد صحيحة 8 بت كمدخلات إلى تعليمات منتج نقطي في رمز أداة تظليل WGSL مع الدالتَين dot4U8Packed
وdot4I8Packed
المُدمجتَين. يمكنك أيضًا استخدام تعليمات التعبئة وفك الضغط مع المتجهات المعبأة المكونة من 4 مكونات بأعداد صحيحة 8 بت مع الدوال المدمجة pack4xI8
وpack4xU8
وpack4xI8Clamp
وpack4xU8Clamp
وunpack4xI8
وunpack4xU8
WGSL.
نقترح استخدام يتطلب توجيهًا للإشارة إلى إمكانية عدم قابلية النقل باستخدام requires packed_4x8_integer_dot_product;
في أعلى رمز أداة تظليل WGSL. راجِع المثال التالي وissue tint:1497.
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
}`,
});
نشكر فريق رسومات الويب من Intel في شنغهاي على الاهتمام بهذه المواصفات والتنفيذ حتى اكتمال هذه العملية.
معلَمات المؤشر غير المحدودة في WGSL
تخفف إضافة اللغة WGSL "unrestricted_pointer_parameters"
القيود المفروضة على المؤشرات التي يمكن تمريرها إلى دوال WGSL:
مؤشرات المَعلمات لمساحات العناوين
storage
وuniform
وworkgroup
إلى الدوال التي أفصح عنها المستخدمتمرير المؤشرات إلى بنية الأعضاء وعناصر الصفيف إلى الدوال التي أفصح عنها المستخدم
راجِع المؤشرات كمَعلمات للدوال | ننصحك بجولة في WGSL لمعرفة المزيد عنها.
يمكن اكتشاف هذه الميزة باستخدام navigator.gpu.wgslLanguageFeatures
. نقترح استخدام يتطلب التوجيه دائمًا للإشارة إلى إمكانية عدم قابلية النقل باستخدام requires unrestricted_pointer_parameters;
في أعلى رمز أداة تظليل WGSL. يمكنك الاطّلاع على المثال التالي التغييرات في مواصفات WGSL وissue tint:2053.
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
عند توفُّر إضافة اللغة WGSL "pointer_composite_access"
في navigator.gpu.wgslLanguageFeatures
، يتيح الآن رمز أداة تظليل WGSL الوصول إلى مكوّنات أنواع البيانات المعقّدة باستخدام بنية النقطة (.
) نفسها، سواء كنت تعمل مباشرةً على البيانات أو من خلال مؤشر عليها. إليك آلية العمل:
إذا كان
foo
مؤشرًا: تُعتبرfoo.bar
طريقة أكثر ملاءمة لكتابة(*foo).bar
. عادةً ما تكون علامة النجمة (*
) مطلوبة لتحويل المؤشر إلى "مرجع". التي يمكن إلغاء الإشارة إليها، ولكن الآن أصبحت كل من المؤشرات والمراجع أكثر تشابهًا وقابلية للتبديل إلى حد كبير.إذا لم يكن
foo
مؤشرًا: يعمل عامل التشغيل النقطة (.
) تمامًا كما اعتدت في الوصول إلى الأعضاء مباشرةً.
وبالمثل، إذا كان pa
هو مؤشر يخزِّن عنوان البداية لمصفوفة، سيتيح لك استخدام pa[i]
إمكانية الوصول المباشر إلى موقع الذاكرة الذي يتم فيه تخزين العنصر 'i
'th من هذا الصفيف.
نقترح استخدام يتطلب توجيهًا للإشارة إلى إمكانية عدم قابلية النقل باستخدام requires pointer_composite_access;
في أعلى رمز أداة تظليل WGSL. راجِع المثال التالي وissue tint:2113.
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.
}`
});
حالة منفصلة للقراءة فقط لجوانب الاستنسل والعمق
في السابق، كانت مرفقات استنسل العمق للقراءة فقط في بطاقات العرض تتطلب أن يكون كلا الجانبين (العمق والاستنسل) للقراءة فقط. وقد أزلنا هذا القيد. أما الآن، فقد أصبح بإمكانك استخدام جانب العمق في وضع القراءة فقط، مثلاً لتتبُّع ظلال التلامس، بينما تتم كتابة المخزن المؤقت بالاستنسل لتحديد وحدات البكسل لإجراء مزيد من المعالجة. راجِع عدد الفجر:2146.
آخر أخبار الفجر
يتم الآن استدعاء مجموعة معاودة الاتصال للخطأ التي لم يتم التقاطها باستخدام wgpuDeviceSetUncapturedErrorCallback()
على الفور عند حدوث الخطأ. وهذا ما يتوقعه المطوّرون باستمرار ويريدونه في تصحيح الأخطاء. راجِع change dawn:173620.
تم تنفيذ الطريقة wgpuSurfaceGetPreferredFormat()
من webgpu.h API. راجِع عدد الفجر:1362.
يتناول هذا فقط بعض النقاط الرئيسية. يمكنك الاطّلاع على قائمة الالتزامات الشاملة.
الميزات الجديدة في WebGPU
قائمة بكل ما تم تناوله في سلسلة الميزات الجديدة في WebGPU.
الإصدار 128 من Chrome
- تجربة المجموعات الفرعية
- إيقاف ضبط انحياز عمق الخطوط والنقاط
- إخفاء تحذير "أدوات مطوري البرامج" للخطأ الذي لم يتم تسجيله في حال منع التثبيت التلقائي
- دمج WGSL أخذ العينات أولاً وإمّا
- إشعارات الفجر
الإصدار 127 من Chrome
- التوافق التجريبي مع OpenGL ES على أجهزة Android
- سمة معلومات محوّل وحدة معالجة الرسومات
- تحسينات إمكانية التشغيل التفاعلي WebAssembly
- الأخطاء المحسّنة في برنامج ترميز الأوامر
- إشعارات الفجر
الإصدار 126 من Chrome
- زيادة حد maxTextureArrayLayers
- تحسين تحميل المخزن المؤقت لخلفية Vulkan
- تحسينات وقت تجميع Shader
- يجب أن تكون المخزن المؤقت للأوامر المرسَلة فريدة
- إشعارات الفجر
الإصدار 125 من Chrome
الإصدار 124 من Chrome
- زخارف مساحة التخزين للقراءة فقط والقراءة والكتابة
- دعم مشغّلي الخدمات والعاملين المشترَكين
- السمات الجديدة لمعلومات المحوّلات
- إصلاح الأخطاء
- إشعارات الفجر
الإصدار 123 من Chrome
- توفُّر دوال DP4a المضمَّنة في WGSL
- معلَمات المؤشر غير المحدودة في WGSL
- سكر البنية لتمييز المركّبات في WGSL
- حالة القراءة فقط لجوانب الاستنسل والعمق
- إشعارات الفجر
الإصدار 122 من Chrome
- توسيع مدى الوصول باستخدام وضع التوافق (الميزة قيد التطوير)
- زيادة حد maxVertexAttributes
- إشعارات الفجر
الإصدار 121 من Chrome
- إتاحة استخدام WebGPU على Android
- استخدام DXC بدلاً من FXC لتجميع أدوات التظليل على Windows
- طلبات البحث عن الطابع الزمني في بطاقات الحوسبة والعرض
- نقاط الدخول التلقائية لوحدات أدوات التظليل
- إتاحة العرض-p3 كمساحة لونية في GPUExternalTexture
- معلومات حول الذاكرة المجمّعة
- إشعارات الفجر
الإصدار 120 من Chrome
- إتاحة قيم النقطة العائمة 16 بت في WGSL
- تجاوز الحدود
- التغييرات على حالة الاستنسل العميق
- تعديلات على معلومات المحوّل
- تحديد كمية طلبات الطابع الزمني
- ميزات تنظيف الربيع
الإصدار 119 من Chrome
- زخارف عائمة 32 بت قابلة للفلترة
- تنسيق رأس العمود unorm10-10-10-2
- تنسيق مادة عرض rgb10a2uint
- إشعارات الفجر
الإصدار 118 من Chrome
- إتاحة HTMLImageElement وImageData في
copyExternalImageToTexture()
- إتاحة تجريبية لزخرفة مساحة التخزين للقراءة والقراءة فقط
- إشعارات الفجر
الإصدار 117 من Chrome
- إلغاء ضبط المخزن المؤقت للرأس
- إلغاء ضبط مجموعة الربط
- كتم الأخطاء الناتجة عن إنشاء مسار غير متزامن عند فقدان الجهاز
- تعديلات على إنشاء وحدة تظليل SPIR-V
- تحسين تجربة المطوِّرين
- مسارات التخزين المؤقت باستخدام التنسيق الذي يتم إنشاؤه تلقائيًا
- إشعارات الفجر
الإصدار 116 من Chrome
- دمج WebCodecs
- الجهاز المفقود الذي تم إرجاعه من خلال محوّل وحدة معالجة الرسومات
requestDevice()
- الحفاظ على سلاسة تشغيل الفيديو في حال اختيار
importExternalTexture()
- توافق المواصفات
- تحسين تجربة المطوِّرين
- إشعارات الفجر
الإصدار 115 من Chrome
- إضافات لغات WGSL المتوافقة
- الدعم التجريبي لـ Direct3D 11
- الحصول على وحدة معالجة رسومات منفصلة تلقائيًا باستخدام طاقة التيار المتردد
- تحسين تجربة المطوِّرين
- إشعارات الفجر
الإصدار 114 من Chrome
- تحسين JavaScript
- getCurrentTexture() على لوحة الرسم التي لم يتم ضبطها تؤدي إلىValidStateError
- إشعارات من WGSL
- إشعارات الفجر