موارد جدید در WebGPU (Chrome 134)

فرانسوا بوفور
François Beaufort

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

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

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

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

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

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

  • subgroup_invocation_id : یک مقدار داخلی برای اندیس نخ درون زیرگروه.

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

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

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

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

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

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

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

داون اکنون به macOS 11 و iOS 14 نیاز دارد و فقط از Metal 2.3+ پشتیبانی می‌کند. به شماره 381117827 مراجعه کنید.

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

انواع اتصال زیر دارای مقدار Undefined هستند و مقادیر پیش‌فرض آنها در طرح اتصال تغییر یافته است. به شماره 377820810 مراجعه کنید.

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

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

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

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

کروم ۱۴۲

کروم ۱۴۱

کروم ۱۴۰

کروم ۱۳۹

کروم ۱۳۸

کروم ۱۳۷

کروم ۱۳۶

کروم ۱۳۵

کروم ۱۳۴

کروم ۱۳۳

کروم ۱۳۲

کروم ۱۳۱

کروم ۱۳۰

کروم ۱۲۹

کروم ۱۲۸

کروم ۱۲۷

کروم ۱۲۶

کروم ۱۲۵

کروم ۱۲۴

کروم ۱۲۳

کروم ۱۲۲

کروم ۱۲۱

کروم ۱۲۰

کروم ۱۱۹

کروم ۱۱۸

کروم ۱۱۷

کروم ۱۱۶

کروم ۱۱۵

کروم ۱۱۴

کروم ۱۱۳