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

يتطلب تطبيق Dawn الآن استخدام نظامَي التشغيل macOS 11 وiOS 14، ولا يتوافق إلا مع الإصدار 2.3 من Metal أو الإصدارات الأحدث. يُرجى الاطّلاع على الطلب 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

الإصدار 134 من Chrome

Chrome 133

Chrome 132

Chrome 131

Chrome 130

الإصدار 129 من Chrome

Chrome 128

الإصدار 127 من Chrome

الإصدار 126 من Chrome

الإصدار 125 من Chrome

Chrome 124

Chrome 123

Chrome 122

الإصدار 121 من Chrome

الإصدار 120 من Chrome

الإصدار 119 من Chrome

Chrome 118

Chrome 117

Chrome 116

Chrome 115

الإصدار 114 من Chrome

Chrome 113