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