NVIDIA הכריזה על פיתוח ערכת הכלים CUDA Rust, המאפשרת לשפת Rust לפתח ליבות הפועלות על גבי ה-GPU. ערכת הכלים מבטיחה בטיחות זיכרון בזמן קומפילציה ומונעת תנאי מרוץ. בשנה הבאה, CUDA Rust מתוכנן להיות מפותח לרמה המתאימה לפרויקטים של ייצור, בדומה לערכות הכלים CUDA C++ ו-CUDA Python.
שרשרת הכלים של CUDA Rust תומכת בשני מודלים לפיתוח ליבות מקבילות: SIMT (הוראות יחיד, הליכי משנה מרובים) ו-Tile. מודל ה-SIMT מאפשר הגדרה ברמה נמוכה של הליך משנה יחיד, הפעלה וניהול של אלפי הליכי משנה כאלה. מודל ה-Tile מציע רמת הפשטה גבוהה יותר, שבה במקום לנהל במפורש הליכי משנה בודדים, מוגדרים אלגוריתמים לפעולה על בלוקי נתונים (אריחים), ומהדר ה-Tile IR מטפל בכל מניפולציית הליכי משנה, סנכרון גישה, ניהול זיכרון וחלוקת נתונים על פני ליבות טנזור.
לפיתוח בשפת Rust באמצעות מודל SIMT, מפותח המהדר cuda-oxide, המאפשר קומפילציה של קוד בשפת Rust, באמצעות מערכת הסוגים הסטנדרטית ומודל הבעלות של Rust, ישירות להוראות לביצוע ב-. מכונה וירטואלית CUDA PTX (ביצוע הליכי משנה מקבילים). ליבות GPU נכתבות ב-Rust רגיל, אך פועלות בסביבת no_std ויכולות להשתמש רק בפונקציות מספריית libcore ומאבסטרקציות Rust מיוחדות, ללא גישה לספריית Rust הסטנדרטית (libstd).
ליבות CUDA שנכתבו ב-Rust מאפשרות שימוש בהגנה על סוגים (בטוחים), שימוש בבלוקים לא בטוחים וגישה להוראות חומרה ברמה נמוכה. כדי להבטיח בטיחות, מוצע הסוג DisjointSlice, המבטיח שלכל הליך יש גישה בלעדית רק לנתונים שלו. קוד cuda-oxide מורשה תחת רישיון Apache 2.0.
כדי ליישם את מודל הזנב, מוצעת ספריית cutile-rs. היא מאפשרת שימוש בשפת Rust האידיומטית ליצירת קוד שמתקדם ישירות לגרעיני CUDA. Cutile-rs מיישמת את כללי הבעלות וההשאלה המחמירים של Rust על קוד הפועל על ה-GPU. הגרעין מיושם כתוכנית בעלת הליך יחיד הפועלת על בלוק נתונים, והמהדר מפצל אוטומטית את החישוב ל-threads ומבטיח סנכרון שלהם. ל-threads מוענקת גישה משותפת לטנזורים בלתי ניתנים לשינוי, וטנזורים ניתנים לשינוי מחולקים לבלוקים מנותקים כדי להבטיח גישה בטוחה. קוד cutile-rs מופץ תחת רישיון Apache 2.0.
מקור: OpenNet.ru
