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

François Beaufort
François Beaufort

תאריך פרסום: 26 בפברואר 2025

שיפור עומסי עבודה של למידת מכונה באמצעות קבוצות משנה

אחרי שנה של פיתוח וניסויים, התכונה WebGPU של קבוצות משנה שמאפשרת מקביליות ברמת SIMD זמינה עכשיו. היא מאפשרת לשרשורים בקבוצת עבודה לתקשר ולבצע פעולות מתמטיות משותפות, כמו חישוב סכום של מספרים, ומציעה שיטה יעילה לשיתוף נתונים בין שרשורים. אפשר לעיין בהצעה המקורית וברשומת ה-chromestatus.

לשם השוואה, ב-Google Meet נמדדו עליות במהירות של פי 2.3 עד פי 2.9 כשבוצעו השוואות בין תת-קבוצות לבין מכפלות סקלריות של מספרים שלמים דחוסים עבור תוכנות הצללה (shader) של מכפלת מטריצה בווקטור במכשירים מסוימים במהלך גרסת מקור לניסיון.

כשהתכונה "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".

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

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

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

עדכונים של Dawn

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

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

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

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

המידע הזה כולל רק נקודות עיקריות. רשימה מלאה של קומיטים

מה חדש ב-WebGPU

רשימה של כל הנושאים שמופיעים בסדרת המאמרים מה חדש ב-WebGPU.

‫Chrome 149-150

‫Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

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