الميزات الجديدة في WebGPU (إصدار Chrome 134)

François Beaufort
François Beaufort

تاريخ النشر: 26 فبراير 2025

تحسين أعباء عمل تعلُّم الآلة باستخدام المجموعات الفرعية

بعد عام من التطوير والتجارب، أصبحت ميزة المجموعات الفرعية التي تتيح التوازي على مستوى تعليمات SIMD متاحة الآن في WebGPU. تتيح هذه الميزة سلاسل المحادثات في مجموعة عمل التواصل وتنفيذ عمليات رياضية جماعية، مثل حساب مجموع الأرقام، كما توفّر طريقة فعّالة لمشاركة البيانات بين سلاسل المحادثات. يمكنك الاطّلاع على الاقتراح الأصلي وإدخال chromestatus.

للعلم، حقّق Google Meet زيادة في السرعة بمقدار 2.3 إلى 2.9 مرة عند قياس أداء المجموعات الفرعية بمنتجات النقاط الصحيحة المعبّأة لبرامج تظليل ضرب المصفوفة في المتّجه على بعض الأجهزة خلال مرحلة التجربة والتقييم.

عندما تتوفّر ميزة "subgroups" في GPUAdapter، اطلب GPUDevice تتضمّن هذه الميزة للحصول على دعم المجموعات الفرعية في WGSL. من المفيد التحقّق من قيم معلومات محوّل subgroupMinSize وsubgroupMaxSize، مثلاً إذا كان لديك خوارزمية مبرمَجة تتطلّب مجموعة فرعية بحجم معيّن.

عليك أيضًا تفعيل هذه الإضافة بشكل صريح في رمز WGSL باستخدام enable subgroups; للوصول إلى القيم المضمّنة التالية في كلّ من مراحل التظليل الحسابي وتظليل الأجزاء:

  • ‫subgroup_invocation_id: قيمة مضمّنة لفهرس سلسلة المحادثات ضمن المجموعة الفرعية

  • ‫subgroup_size: قيمة مضمّنة للوصول إلى حجم المجموعة الفرعية

تتيح الدوال المضمّنة العديدة للمجموعات الفرعية (مثل subgroupAdd() وsubgroupBallot() وsubgroupBroadcast() وsubgroupShuffle()) إمكانية التواصل والحساب بكفاءة بين عمليات الاستدعاء داخل المجموعة الفرعية. يتم تصنيف عمليات المجموعات الفرعية هذه على أنّها عمليات تعليمات فردية وخيوط متعددة (SIMT). بالإضافة إلى ذلك، تسهّل وظائف الرباعي المضمّنة، التي تعمل على رباعي من عمليات الاستدعاء، عملية تبادل البيانات داخل الرباعي.

يمكنك استخدام قيم f16 مع المجموعات الفرعية عند طلب GPUDevice يتضمّن الميزتَين "shader-f16" و"subgroups".

يُعدّ المثال التالي نقطة بداية جيدة لاستكشاف المجموعات الفرعية: يعرض أداة تظليل تستخدم الدالة المضمّنة subgroupExclusiveMul() لاحتساب العوامل الرياضية بدون قراءة الذاكرة أو الكتابة فيها لنقل النتائج الوسيطة.

إزالة أنواع المواد القابلة للتصفية ذات القيم العشرية باعتبارها قابلة للمزج

بعد أن أصبحت ميزة دمج مواد العرض ذات النقطة العائمة 32 بت متاحة مع ميزة "float32-blendable"، تمت إزالة الدعم غير الصحيح لأنواع مواد العرض القابلة للفلترة ذات النقطة العائمة باعتبارها قابلة للدمج. يمكنك الاطّلاع على المشكلة رقم 364987733.

تعديلات الفجر

يتطلّب Dawn الآن نظام التشغيل macOS 11 وiOS 14 ويتوافق فقط مع Metal 2.3 أو الإصدارات الأحدث. يمكنك الاطّلاع على المشكلة 381117827.

تحلّ طريقة GetWGSLLanguageFeatures() الجديدة في wgpu::Instance الآن محل EnumerateWGSLLanguageFeatures(). يمكنك الاطّلاع على المشكلة 368672124.

تحتوي أنواع الربط التالية على القيمة Undefined وتم تغيير قيمها التلقائية في تخطيط الربط. يمكنك الاطّلاع على المشكلة 377820810.

  • wgpu::BufferBindingType::Undefined أصبحت الآن Uniform.
  • wgpu::SamplerBindingType::Undefined أصبحت الآن Filtering.
  • wgpu::TextureSampleType::Undefined أصبحت الآن Float.
  • ‫wgpu::StorageTextureAccess::Undefined أصبح الآن WriteOnly

هذا يشمل بعض النقاط الرئيسية فقط. اطّلِع على قائمة عمليات الدمج الشاملة.

الميزات الجديدة في WebGPU

قائمة بكل ما تم تناوله في سلسلة الميزات الجديدة في WebGPU

‫Chrome 155-156

‫Chrome 153-154

‫Chrome 151-152

‫Chrome 149-150

Chrome 147-148

‫Chrome 146

‫Chrome 145

‫Chrome 144

Chrome 143

‫Chrome 142

‫Chrome 141

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