
Rust-da SIMD-nin 2026-cı ildəki vəziyyəti: kitabxanalar yetkinləşdi, intrinsics hələ ağrıdır
Sergey Davidoff-un Rust-da SIMD dəstəyi ilə bağlı illik icmalı göstərir ki, portativ kitabxanalar 1.0 versiyasına yaxınlaşıb, x86-da multiversioning artıq problem deyil, lakin triqonometriya və intrinsics ən zəif halqalar olaraq qalır.
Sergey Davidoff Rust-da SIMD dəstəyi ilə bağlı illik icmalını 25 sentyabr 2026-cı ildə dərc edib. SIMD, yəni bir təlimatla çoxlu verilən, prosessora bir arifmetik əməliyyatı bütöv bir ədəd paketinə tətbiq etməyə imkan verir: yeni x86 çiplərində vektorlar 512 bitə çatır və bu, nəzəri olaraq f64 üçün 8 dəfə, u8 üçün isə 64 dəfə sürət deməkdir.
Keçən ilki icmaldan sonra müəllif Fearless SIMD layihəsinin baxıcılarından biri olub; maraqlar toqquşmasının qarşısını almaq üçün məqalənin qaralamasını std::simd, wide, pulp və macerator müəlliflərinə yoxlatdırıb, redaktor nəzarətini isə özündə saxlayıb. Nəticə budur: dəstək xeyli yetkinləşib və Rust SIMD kodu üçün yaddaş təhlükəsizliyi mütləq tələb olmadıqda belə cəlbedicidir.
Sorğu nə tapdı
x86_64-də kompilyator standart olaraq yalnız SSE2-yə arxalana bilər, ona görə daha yeni hər şey icra zamanı seçilməlidir. AVX2 2013-cü ildə çıxdı, lakin onsuz son Intel prosessoru 2021-ci ildə buraxıldı və Firefox-un aparat sorğusuna görə 2026-cı ildə də x86 sistemlərin 15%-i AVX2-yə malik deyil. Əsas həll multiversioning-dir: eyni funksiya bir neçə SIMD səviyyəsi üçün kompilyasiya olunur və icra zamanı prosessorun imkanları yoxlanılaraq uyğun variant seçilir. multiversion kitabxanası bunu bir atributla edir, amma çox kiçik funksiyalara əlavə yük gətirir. ARM 64 bitlik nüvələrdə NEON-u məcburi etdiyi üçün problem əsasən x86-ya aiddir.
Portativ SIMD kitabxanaları
std::simd birbaşa LLVM üzərində dayanır və LLVM-in dəstəklədiyi hər hədəfi əhatə edir, ancaq yalnız nightly-də mövcuddur. LLVM-də uyğun əməliyyat olmadıqda kod səssizcə skalyar riyaziyyata qayıdır və müəllif bunu ən böyük günah adlandırır. Fearless SIMD təhlükəsizlik siyasəti ilə birlikdə 1.0 versiyasını buraxdı: rəqiblərinə nisbətən qat-qat az unsafe kod saxlayır və multiversioning-i balaca funksiyalarda da işlədir. wide triqonometriya daxil bir çox əməliyyatı əhatə edir, lakin multiversioning ilə uyğunlaşmır. pulp faer xətti cəbr kitabxanasını qidalandırır, macerator isə burn-ün CPU backend-idir.
Intrinsics və aparat
Rust 1.87-dən platforma intrinsics-lərini target feature-lar və archmage kitabxanasındakı kimi xüsusiyyət tokenləri vasitəsilə təhlükəsiz çağırmaq mümkündür. Buna baxmayaraq intrinsics ən zəif halqa olaraq qalır: kompilyator onları çox vaxt istənilən təlimatlara çevirə bilmir və müəllif "optimizasiyanın" onun istədiyi 512 bitlik shuffle-ı yavaşlatdığı halı sənədləşdirir; bu xəta onun bildirişindən sonra LLVM 23-də düzəldilib. Aparat tərəfdə AVX-512 olan erkən Intel prosessorları bütün çipin tezliyini aşağı salırdı və bu davranış yalnız 2019-cu ildə Ice Lake ilə düzəldildi; Steam sorğusuna görə sistemlərin 23,9%-də AVX-512 var. Rust ekosistemində ən böyük boşluq isə triqonometriyadır.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.