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

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

تاریخ انتشار: 26 فوریه 2025

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

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

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

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

همچنین باید این افزونه را در کد WGSL خود با enable subgroups; برای دسترسی به مقادیر داخلی زیر در هر دو مرحله shader و compute shader:

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

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

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

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

نمونه زیر نقطه شروع خوبی برای کاوش زیر گروه‌ها است: سایه‌زنی را نشان می‌دهد که از تابع داخلی 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 جدید است

فهرستی از همه چیزهایی که در سری What's New in WebGPU پوشش داده شده است.

کروم 134

کروم 133

کروم 132

کروم 131

کروم 130

کروم 129

کروم 128

کروم 127

کروم 126

کروم 125

کروم 124

کروم 123

کروم 122

کروم 121

کروم 120

کروم 119

کروم 118

کروم 117

کروم 116

کروم 115

کروم 114

کروم 113