2026年、RustのSIMDはどこまで進化したのか?現状を徹底解説
The state of SIMD in Rust in 2026
The state of SIMD in Rust in 2026
2026年時点における、RustでのSIMD(Single Instruction, Multiple Data)活用状況についてのまとめです。Rustのエコシステムにおいて、並列処理の最適化がどのようなフェーズにあるのかを考察します。
辛口な意見だけど、ポータブルなSIMDなんて存在しないよ。
パフォーマンスを取る(プラットフォームごとに手書きでアセンブラを書く)か、ポータビリティを取るか、どっちかしか選べない。両立は無理だね。
いわゆる「ポータブルSIMD」ライブラリが提供しているのは「ポータブルな自動ベクトル化」であって、「ポータブルなパフォーマンス」はアルゴリズム全体の特性に依存するものなんだ。自動ベクトル化に頼ると、実際にはレジスタのスピルが最適化されなかったりするしね。マイクロベンチマークの数字だけは良く見えるんだけどさ。 ;)
俺は自分で書いた lin_alg ってライブラリを使ってる。浮動小数点値に関しては core_simd を真似たものだけど、それをベクトルやクォータニオンにまで拡張してるんだ。Rustのstable版で core::simd が使えるようになったら、浮動小数点の部分はそっちに置き換えるつもり。
欠点は、現状だとx86でしか動かないってところかな。
そろそろステンレス鋼(stainless steel)に切り替えない?
ポータブルSIMDにはすごく期待してるんだ。でも、結局は手書きのSIMDの方が速いケースが多いんじゃないかと思ってる。
それにCraneliftのSIMD対応状況もまだまだ開発中って感じだしね。今のところ128bitベクトルのサブセットをサポートしてる程度で、例外的なケースもほとんどないのが現状だよ。