מה חדש ב-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() כדי לחשב עצרות בלי לקרוא או לכתוב זיכרון כדי להעביר תוצאות ביניים.

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

עכשיו, כשתכונת המיזוג של טקסטורות 32-bit float זמינה עם התכונה "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

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

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