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

François Beaufort
François Beaufort

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

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

بعد عام من التطوير والتجارب، أصبحت ميزة المجموعات الفرعية في WebGPU التي تتيح التوازي على مستوى تعليمات SIMD متاحة الآن. وتسمح هذه الميزة لسلاسل التعليمات في مجموعة العمل بالتواصل وتنفيذ عمليات رياضية جماعية، مثل حساب مجموع الأرقام، كما توفّر طريقة فعّالة لمشاركة البيانات بين سلاسل التعليمات. يمكنك الاطّلاع على الاقتراح الأصلي وإدخال 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 149-150

Chrome 147-148

‫Chrome 146

Chrome 145

‫Chrome 144

Chrome 143

الإصدار 142 من Chrome

‫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