RustのSIMDがGPUで動作可能に
原題: Rust SIMD on the GPU
なぜ重要か
RustのポータブルSIMDがGPUに対応することで、単一コードベースからCPU・GPU双方の演算資源を最大活用できる高性能アプリケーション開発の可能性が広がる。
VectorWareは2026年8月10日、RustのポータブルSIMD(core::simd)をGPU上で動作させることに成功したと発表した。同社はGPUネイティブなソフトウェア開発を目指しており、今回の成果によりRustの標準的な抽象化を用いてGPUのハードウェア性能を最大限に活用できる高性能アプリケーション開発が可能になる。
VectorWareは、RustのポータブルSIMDライブラリ(core::simd)をGPU上で実行できることを世界で初めて実証したと発表した。
同社はこれまでRustのスレッド(std::thread)をGPUのワープ(warp)にマッピングすることで、GPU上での並行処理を実現してきた。しかし、この手法ではスレッド内部の並列処理、すなわちSIMD(Single Instruction, Multiple Data)レーンの活用はできていなかった。
RustのポータブルSIMDはアーキテクチャ固有のベンダー組み込み関数(x86-64の_mm256_add_psやArmのvaddq_f32など)の上に抽象レイヤーを設け、Simd<T, N>という単一の汎用型でN個のT型要素からなるベクトルを表現する。これにより、ターゲットCPUに応じた適切なベクトル命令へのコンパイルが可能になる。
VectorWareは、NVIDIAのGPUが採用するSIMT(Single Instruction, Multiple Thread)モデルとSIMDの本質的な共通点に着目した。SIMTではワープが1つの命令を発行し、32個の各レーンがそれぞれ自身のデータに対してその命令を実行する仕組みであり、これはSIMDの「1命令で複数データを処理する」という概念と本質的に同一である。
具体的には、Simd<i16, 32>型のベクトル演算がCPU上ではvpaddwなどのx86-64命令にコンパイルされるのと同様に、GPU上ではadd.s16というPTX命令にコンパイルされ、32レーン全体で同時に加算が行われる。
また、core::simdはstdではなくcoreに属するため、同社が以前GPU向けに整備したstdサポートも不要であるという利点もある。
この成果により、CPU上でのスレッドとSIMDレーンの関係が、GPUのワープとワープレーンの関係に完全に対応する並列処理の階層構造が実現した。