Rustの SIMD 現状報告 2026年版

원제: The state of SIMD in Rust in 2026

왜 중요한가

Rustの SIMD エコシステムの成熟度が実務レベルで整理され、ライブラリ選定の判断材料となる点で開発者への影響が大きい。

Rust セキュリティエンジニアの Sergey Davidoff 氏が2026年9月25日、「Rustにおける SIMD の現状 2026年版」を公開した。同氏は前年の調査を経て Fearless SIMD のメンテナーとなり、std::simd・wide・pulp・macerator など主要ライブラリの著者らによるレビューを経て本記事を執筆。x86の拡張乱立やマルチバージョニングの課題を網羅的に解説している。

Davidoff 氏は昨年の SIMD ライブラリ調査をきっかけに Fearless SIMD の開発に貢献し、現在はメンテナーを務める。利益相反を避けるため、std::simd・wide・pulp・macerator の各著者を招いてドラフトレビューを実施したが、編集権は本人が保持している。

記事はまず SIMD の基本から説明する。現代の CPU は演算ユニットを多数持つが、命令デコードがボトルネックになるため演算資源は過小活用されがちだ。SIMD は一つの命令で複数データを一括処理し、最近の x86 では 512 ビットのベクトル幅により f64 で理論上 8 倍、u8 で 64 倍の高速化が可能とされる。

命令セットの複雑さも詳述される。ARM の「NEON」は 64 ビット ARM 全機種で必須、WebAssembly は「128-bit packed SIMD extension」を別バイナリで提供する。一方 x86_64 は SSE2・SSE4.2・AVX・AVX2・AVX-512 と拡張が累積しており、デフォルトコンパイルは SSE2 止まりだ。解決策として「RUSTFLAGS='-C target-cpu=x86-64-v3'」でサーバー環境向けにビルドする方法と、同一関数を複数の SIMD 拡張向けにコンパイルし実行時に CPU を検出して切り替える「関数マルチバージョニング」の二択を提示している。

SIMD の利用手段としては、①コンパイラによる自動ベクタライゼーション、②i32x4 のようなポータブル SIMD 抽象、③プラットフォーム固有の intrinsics の三段階を整理しており、各ライブラリの比較は本文で詳細に展開される。

출처

shnatsel.github.io — 원문 읽기 →