NVIDIA מציעה Rust כשפה מן השורה הראשונה לפיתוח GPU
NVIDIA הודיעה על יוזמת CUDA Rust ופרסמה שני פרויקטי קוד פתוח - cuda-oxide ו-cutile-rs - שמאפשרים לכתוב גרעיני חישוב ל-GPU בשפת Rust במקום ב-C/C++ המסורתית. המהלך מכסה את שני מודלי התכנות של CUDA: SIMT הוותיק ו-Tile החדש יותר, ומבטיח בטיחות זיכרון שנבדקת כבר בזמן הקומפילציה.
✦ נכתב אוטומטית על ידי AIמבוסס על מקורות גלויים · עבר בקרת איכות אוטומטית
NVIDIA הודיעה על יוזמה בשם CUDA Rust, שמטרתה להפוך את שפת התכנות Rust לשפה מן השורה הראשונה לכתיבת גרעיני חישוב (kernels) עבור מעבדי גרפיקה. כחלק מהמהלך פרסמה החברה תחת הארגון NVlabs שני פרויקטי קוד פתוח - cuda-oxide ו-cutile-rs - שכל אחד מהם מכסה מודל תכנות שונה של CUDA, כך לפי הדיווח ב-MarkTechPost.
שני כלים, שני מודלים
cuda-oxide מיועד למודל התכנות המסורתי של CUDA, המכונה SIMT (Single Instruction, Multiple Threads) - השיטה שבה נכתב עד היום רוב קוד ה-GPU, בעיקר בשפות C ו-C++. לפי המקור, הכלי מקמפל קוד Rust דרך ייצוג הביניים MIR (Mid-level Intermediate Representation) של מהדר Rust, עובר דרך תשתית בשם Pliron ודרך LLVM, ומגיע בסופו של דבר לפורמט PTX - שפת הביניים שבה GPU-ים של NVIDIA מריצים בפועל את הקוד.
cutile-rs מיועד למודל תכנות חדש יותר, המכונה Tile. לפי המקור, הכלי מקמפל קוד "just-in-time" (JIT) דרך ייצוג ביניים ייעודי בשם CUDA Tile IR, ופועל על גרסת Rust יציבה (stable) החל מגרסה 1.89 ואילך - כלומר בלי תלות בגרסאות ניסיוניות (nightly) של השפה.
המשותף לשני הפרויקטים, לפי ההודעה, הוא האפשרות לכתוב קוד GPU עם "בטיחות בזמן קומפילציה" (compile-time safety).
למה זה חשוב
רוב הפיתוח על גבי CUDA נעשה כיום בשפות C ו-C++, שאינן כוללות הגנות מובנות מפני שגיאות זיכרון נפוצות כמו גלישת מאגר (buffer overflow) או גישה מקבילית לא מסונכרנת (race condition) - סוג בעיות שקשה לעיתים לאתר בקוד שרץ על GPU. מנגנון הבדיקה הייחודי של Rust, המכונה "בורו צ'קר" (borrow checker), תופס חלק ניכר מהשגיאות הללו כבר בשלב הקומפילציה, לפני שהקוד בכלל רץ - וזו הסיבה המרכזית לפופולריות של השפה בתחומי תכנות מערכות אחרים.
ככל הנראה, המהלך של NVIDIA משקף רצון להרחיב את מעגל השפות הנתמכות סביב CUDA מעבר ל-C/C++, ולמשוך מפתחים שמכירים כבר את Rust משפות מערכות אחרות. עם זאת, מדובר בפרויקטים שפורסמו תחת NVlabs - הארגון הניסיוני של החברה - כך שהמקור אינו מפרט לוח זמנים או התחייבות לשילוב מלא בערכת הפיתוח (SDK) הראשית של CUDA, ופרט זה נותר פתוח בשלב זה.