ویژگی‌های جدید WebGPU (‏Chrome 134)

François Beaufort
François Beaufort

منتشرشده: ۲۶ فوریه ۲۰۲۵

بهبود دادن حجم کار یادگیری ماشین با زیرگروه‌ها

پس‌از یک سال توسعه و آزمایش، ویژگی زیرگروه‌ها در WebGPU که موازی‌سازی سطح SIMD را فعال می‌کند اکنون دردسترس است. این ویژگی به رشته‌های موجود در گروه کاری امکان می‌دهد با هم ارتباط برقرار کنند و عملیات ریاضی جمعی را اجرا کنند، مثلاً مجموع اعداد را محاسبه کنند، و روشی کارآمد برای هم‌رسانی داده بین رشته‌ها ارائه می‌دهد. پیشنهاد اصلی و ورودی chromestatus را ببینید.

برای اطلاع، Google Meet درطول آزمایش مبدأ، هنگام مقایسه زیرگروه‌ها با ضرب نقطه‌ای عدد صحیح بسته‌بندی‌شده برای سایه‌زن‌های ضرب ماتریس-بردار در برخی‌از دستگاه‌ها، شاهد افزایش سرعت ۲٫۳ تا ۲٫۹ برابری بود.

وقتی ویژگی "subgroups" در GPUAdapter دردسترس است، GPUDevice با این ویژگی را درخواست کنید تا از زیرگروه‌ها در WGSL پشتیبانی شود. بررسی مقادیر اطلاعات آداپتور subgroupMinSize و subgroupMaxSize مفید است—برای مثال، اگر الگوریتم کدبندی‌شده‌ای دارید که به زیرگروهی با اندازه معین نیاز دارد.

همچنین باید این افزونه را به‌طور صریح در کد WGSL خود با enable subgroups; فعال کنید تا به مقادیر داخلی زیر در هر دو مرحله سایه‌زن محاسباتی و سایه‌زن تکه‌تکه دسترسی پیدا کنید:

  • ‫subgroup_invocation_id: مقدار داخلی برای شاخص رشته در زیرگروه.

  • ‫subgroup_size: مقدار داخلی برای دسترسی به اندازه زیرگروه.

تعداد زیاد کارکردهای داخلی زیرگروه (برای نمونه، subgroupAdd()، subgroupBallot()، subgroupBroadcast()، subgroupShuffle()) ارتباط و محاسبات کارآمد بین فراخوانی‌ها را در یک زیرگروه امکان‌پذیر می‌کند. این عملیات‌های زیرگروه به‌عنوان عملیات‌های تک‌دستور چندرشته‌ای (SIMT) طبقه‌بندی می‌شوند. علاوه‌براین، توابع داخلی چهارگانه که روی چهارگانه فراخوانی‌ها عمل می‌کنند، ارتباط داده‌ای را در چهارگانه تسهیل می‌کنند.

وقتی GPUDevice را با هر دو ویژگی "shader-f16" و "subgroups" درخواست می‌کنید، می‌توانید از مقادیر f16 با زیرگروه‌ها استفاده کنید.

نمونه زیر نقطه شروع خوبی برای کاوش زیرگروه‌ها است: این نمونه سایه‌زنی را نشان می‌دهد که از تابع داخلی subgroupExclusiveMul() برای محاسبه فاکتوریل‌ها بدون خواندن یا نوشتن حافظه برای انتقال نتایج میانی استفاده می‌کند.

برداشتن پشتیبانی از انواع بافت فیلترپذیر شناور به‌عنوان ترکیب‌شدنی

اکنون که ترکیب بافت‌های شناور ۳۲ بیتی با ویژگی "float32-blendable" دردسترس است، پشتیبانی نادرست از انواع بافت فیلترپذیر شناور به‌عنوان ترکیب‌شدنی برداشته شده است. مشکل ۳۶۴۹۸۷۷۳۳ را ببینید.

به‌روزرسانی‌های سپیده‌دم

‫Dawn اکنون به macOS 11 و iOS 14 نیاز دارد و فقط از Metal 2.3+ پشتیبانی می‌کند. مشکل ۳۸۱۱۱۷۸۲۷ را ببینید.

روش جدید GetWGSLLanguageFeatures() در wgpu::Instance اکنون جایگزین EnumerateWGSLLanguageFeatures() شده است. مشکل ۳۶۸۶۷۲۱۴ را ببینید.

انواع ملزم‌سازی زیر مقدار Undefined دارند و مقادیر پیش‌فرض آن‌ها در چیدمان ملزم‌سازی تغییر کرده است. مشکل ۳۷۷۸۲۰۸۱۰ را ببینید.

  • wgpu::BufferBindingType::Undefined اکنون Uniform است
  • wgpu::SamplerBindingType::Undefined اکنون Filtering است
  • wgpu::TextureSampleType::Undefined اکنون Float است
  • ‫wgpu::StorageTextureAccess::Undefinedاکنون WriteOnly است

این فقط برخی‌از نکات برجسته کلیدی را پوشش می‌دهد. فهرست کامل تعهدات را بررسی کنید.

ویژگی‌های جدید WebGPU

فهرستی از همه مواردی که در مجموعه ویژگی‌های جدید WebGPU پوشش داده شده است.

‫۱۵۵-۱۵۶ Chrome

‫۱۵۳-۱۵۴ Chrome

Chrome 151-152

‫۱۴۹-۱۵۰ Chrome

‫۱۴۷-۱۴۸ Chrome

‫۱۴۶ Chrome

‫Chrome 145

‫۱۴۴ Chrome

‫۱۴۳ Chrome

‫۱۴۲ Chrome

Chrome 141

‫۱۴۰ Chrome

Chrome 139

‫Chrome 138

Chrome 137

‫Chrome 136

‫۱۳۵ Chrome

‫۱۳۴ Chrome

‫Chrome 133

‫۱۳۲ Chrome

‫۱۳۱ Chrome

‫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