חזרה
מצב ה-SIMD ב-Rust בשנת 2026: הספריות הבשילו, האינטרינזיקות עדיין כואבות
SiTech AI Team2 წთ. საკითხავი

מצב ה-SIMD ב-Rust בשנת 2026: הספריות הבשילו, האינטרינזיקות עדיין כואבות

הסקירה השנתית של סרגיי דוידוף על SIMD ב-Rust מראה שהספריות הניידות התקרבו לגרסה 1.0 ושהפצת גרסאות ב-x86 הפכה לקלה, בעוד טריגונומטריה ואינטרינזיקות נותרות החוליה החלשה באקוסיסטם.

סרגיי דוידוף פרסם ב-25 בספטמבר 2026 את הסקירה השנתית שלו על תמיכת SIMD ב-Rust. SIMD, כלומר הוראה אחת לנתונים רבים, מאפשר למעבד להחיל פעולה אריתמטית אחת על צרור שלם של מספרים: בשבבי x86 חדשים הווקטורים מגיעים ל-512 סיביות, מה שמאפשר בתיאוריה מהירות גבוהה פי 8 ב-f64 ופי 64 ב-u8.

אחרי הסקירה של השנה שעברה המחבר הפך לאחד מתחזיקי Fearless SIMD, ולכן, כדי למנוע ניגוד עניינים, ביקש מכותבי std::simd, wide, pulp ו-macerator לסקור טיוטה של המאמר, בעוד הוא שמר לעצמו את השליטה המערכתית. המסקנה שלו: התמיכה הבשילה מאוד, ו-Rust מושך כיום לכתיבת קוד SIMD גם כשבטיחות זיכרון אינה דרישת חובה.

מה מצא הסקר

ב-x86_64 המהדר רשאי להניח כברירת מחדל רק SSE2, ולכן כל דבר חדש יותר חייב להיבחר בזמן ריצה. AVX2 הושק ב-2013, אבל המעבד האחרון של Intel בלעדיו יצא ב-2021, ולפי סקר החומרה של Firefox 15% ממערכות ה-x86 עדיין חסרות אותו ב-2026. הפתרון המקובל הוא ריבוי גרסאות: אותו פונקציה מהודרת כמה פעמים לרמות SIMD שונות, ובזמן ריצה נבדקות תכונות המעבד ונבחרת הגרסה המתאימה. הקרייט multiversion עושה זאת בתכונה אחת, אם כי הוא מוסיף תקורה לפונקציות קטנות מאוד. בליבות ARM בנות 64 סיביות NEON הוא חובה, ולכן הבעיה היא כמעט רק של x86.

ספריות SIMD ניידות

std::simd יושב ישירות מעל LLVM ומכסה כל יעד ש-LLVM תומך בו, אך זמין רק ב-nightly. כשאין ב-LLVM פעולה מתאימה, הקוד נופל בשקט למימוש סקלרי, והמחבר מכנה זאת החטא הגדול. Fearless SIMD יצא בגרסה 1.0 עם מדיניות אבטחה: הוא מסתיר הרבה פחות קוד unsafe מהמתחרים וגורם לריבוי גרסאות לעבוד גם בפונקציות זעירות. wide מכסה פעולות רבות, כולל טריגונומטריה, אך אינו מתיישב עם ריבוי גרסאות. pulp מפעיל את ספריית האלגברה הליניארית faer, ו-macerator הוא הבקנד למעבד של burn.

אינטרינזיקות וחומרה

החל מ-Rust 1.87 אפשר לקרוא לאינטרינזיקות של הפלטפורמה בבטחה דרך target features וטוקנים של תכונות, כמו אלו שבקרייט archmage. אף על פי כן, האינטרינזיקות נשארות נקודת התורפה: המהדר פעמים רבות אינו ממיר אותן להוראות הרצויות, והמחבר מתעד מקרה שבו "אופטימיזציה" הפכה shuffle של 512 סיביות לאיטית יותר מההוראה שביקש, תיקון שנכנס ל-LLVM 23 אחרי הדיווח שלו. בצד החומרה, מעבדי Intel מוקדמים עם AVX-512 הורידו את תדר השבב כולו, התנהגות שתוקנה רק עם Ice Lake ב-2019, בעוד שלפי סקר Steam ל-23.9% מהמערכות יש AVX-512. הטריגונומטריה נותרה הפער הגדול ביותר.

SSiTech

SiTech — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.