חזרה
Fearless SIMD v1.0 שוחרר: ספריית Rust מוציאה את ה-unsafe מקוד SIMD
SiTech AI Team2 წთ. საკითხავი

Fearless SIMD v1.0 שוחרר: ספריית Rust מוציאה את ה-unsafe מקוד SIMD

Linebender פרסמה את fearless_simd v1.0, ספריית Rust שמציעה SIMD נייד וגישה בטוחה לאינטרינזיקות חומרה בלי קוד unsafe אד-הוק, ולצד זאת שלוש שנות עדכוני אבטחה לכל הגרסאות הבאות.

Linebender פרסמה את fearless_simd v1.0, ספריית Rust שמטרתה להוציא את unsafe מקוד SIMD — הטכניקה שמפעילה הוראה אחת על כמה ערכים בו-זמנית. ההכרזה פורסמה בבלוג הפרויקט ב-22 בספטמבר 2026, כשמונה שנים לאחר האב-טיפוס הראשון. הספרייה מכסה שלוש רמות שימוש: וקטוריזציה אוטומטית וריבוי גרסאות, הפשטות SIMD ניידות מלאות, וגישה בטוחה לאינטרינזיקות של החומרה.

ביצועים

ביקורת נפוצה על הפשטות SIMD ניידות היא שהן עולות בביצועים. עבור פעולות שהתנהגותן בשוליים תלויה בפלטפורמה, כמו swizzle או מקסימום של מספרי נקודה צפה, הספרייה מציעה שני וריאנטים: מדויק, שמחזיר תוצאה זהה בכל מקום, ומהיר, שמחזיר תוצאה תלוית פלטפורמה במקרים שבהם לא מצפים למקרי קצה.

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

בטיחות

הפשטות SIMD אחרות, כך לפי המחברים, מלאות בקוד unsafe: חיפוש לפי מילת המפתח מחזיר אלפי בלוקים. ב-fearless_simd אין צורך ב-unsafe אד-הוק. שני רכיבים קטנים עושים את העבודה: מאקרו kernel!, שנעזר ב-target feature 1.1 של המהדר כדי להפעיל את רוב האינטרינזיקות בבטחה, ומודול transmute בטוח בהשראת bytemuck ו-zerocopy, שמחליף הוראות טעינה ואחסון כמו _mm_loadu_epi32 בעטיפה אחת לשימוש חוזר. אם שני חלקים עצמאיים אלה בטוחים לזיכרון, יתר הקוד בטוח מכוח הבנייה.

ארגונומיה ויציבות

ריבוי גרסאות של פונקציות היה מסורבל ב-Rust: פתרונות קודמים דרשו אנוטציות #[inline(always)] והבנה של השלכותיהן, או הוסיפו תקורה בכל קריאה שפוגעת בפונקציות קטנות. לצד גרסה 1.0 יוצאת fearless_simd_macros v0.1 עם המאפיין #[simd], שמקבל את ההחלטות האלה אוטומטית; הדרך הידנית נשארת זמינה.

הפרויקט מבטיח שלוש שנות עדכוני אבטחה ל-v1.0 ולכל גרסה מאוחרת, ורואה מסלול לתמיכה בטיפוס f16 ובהרחבות SVE ו-RISC-V בלי לשבור את ה-API.

אימוץ והדרך אל std::simd

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

SSiTech

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

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