الميزات الجديدة في 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 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