מה חדש ב-WebGPU (גרסה 134 של Chrome)

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). בנוסף, הפונקציות המובנות של quad, שפועלות על quad של הפעלות, מאפשרות תקשורת נתונים בתוך ה-quad.

אפשר להשתמש בערכי f16 עם קבוצות משנה כשמבקשים GPUDevice עם התכונות "shader-f16" ו-"subgroups".

הדוגמה הבאה היא נקודת התחלה טובה לבדיקת קבוצות משנה: היא מציגה Shader שמשתמש בפונקציה המובנית subgroupExclusiveMul() כדי לחשב עצרות בלי לקרוא או לכתוב זיכרון כדי להעביר תוצאות ביניים.

הסרת התמיכה בסוגי טקסטורה שניתנים לסינון כסוגים שניתנים למיזוג

עכשיו, כשמיזוג של טקסטורות בפורמט float של 32 ביט זמין באמצעות התכונה "float32-blendable", הוסרה התמיכה השגויה בסוגי טקסטורות שניתנים לסינון בפורמט float כטקסטורות שניתנות למיזוג. מידע נוסף על בעיה 364987733

עדכונים לגבי שעות השחר

כדי להשתמש ב-Dawn צריך macOS 11 ו-iOS 14, והוא תומך רק ב-Metal 2.3 ומעלה. אפשר לעיין בבעיה 381117827.

השיטה החדשה GetWGSLLanguageFeatures() של wgpu::Instance מחליפה עכשיו את EnumerateWGSLLanguageFeatures(). בעיה מספר 368672124

לסוגי הקישור הבאים יש ערך Undefined, וערכי ברירת המחדל שלהם בפריסת הקישור השתנו. למידע נוסף

  • האפשרות wgpu::BufferBindingType::Undefined נקראת Uniform עכשיו
  • האפשרות wgpu::SamplerBindingType::Undefined נקראת Filtering עכשיו
  • האפשרות wgpu::TextureSampleType::Undefined נקראת Float עכשיו
  • wgpu::StorageTextureAccess::Undefined נקרא עכשיו WriteOnly

הנקודות האלה הן רק חלק מהדברים החשובים. רשימה מלאה של קומיטים

מה חדש ב-WebGPU

רשימה של כל הנושאים שמופיעים בסדרה What's New in WebGPU.

‫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