RustのSIMD、2026年の最新事情

The state of SIMD in Rust in 2026

RustのSIMDはここ1年で大きく進歩した。自動ベクトル化は依然として不安定だが、Rust 1.98でalgebraic_add()が安定化し浮動小数点の最適化が可能に。ポータブルSIMD抽象化では、Fearless SIMDがマルチバージョニング、固定幅・ハードウェア幅ベクトル、型と幅のジェネリクスを備えたオールインワンソリューションとして登場。std::simdはnightly限定でAPIが不安定、wideやpulp、maceratorもそれぞれ長所と短所を持つ。x86のマルチバージョニング問題やAVX-512の速度検出など、実用上の課題も整理されている。

浮動小数点は奇妙だ。適度な精度で浮動小数点の配列を合計するといった些細なことでさえ、驚くほど複雑になる。
  1. sharktheone

    私はポータブルSIMDをとても期待しています。でも、手動で書いたSIMDの方が速いことが多いとも思っています。

    また、CraneliftのSIMDの状態もまだ非常にWIPです。彼らはほとんど128ビットベクトルのサブセットをサポートしているだけで、いくつかの稀な例外があります。

  2. the__alchemist

    私は自分のライブラリ`lin_alg`を使っています。これは浮動小数点値に関してcore_simdを模倣し、その概念をベクトルやクォータニオンに拡張したものです。安定版Rustにcore::simdが登場したら、最終的には浮動小数点部分をそれに置き換えるつもりです。

    欠点:現在はx86専用です。

  3. Archit3ch

    過激な意見:ポータブルSIMDなんて存在しない。

    パフォーマンス(=各プラットフォームごとに手書きのASMを書く)か、ポータビリティか、どちらかしか得られない。

    いわゆる「ポータブルSIMD」ライブラリが提供するのは「ポータブル自動ベクトル化」だ。「ポータブルなパフォーマンス」はアルゴリズムのグローバルな性質だ。自動ベクトル化に頼ると、実際には例えば最適でないレジスタスピルが発生する。マイクロベンチマークは素晴らしく見えるだろうけどね。;)

この日のほかの記事

2026-09-27