SIMD
PCI Express接続の汎用SIMDアクセラレータ。倍精度の行列演算を高速に行う目的で、ワークステーション、スーパーコンピュータなどに搭載される。
CSX600 - クリアスピードによるメニーコアSIMD演算ユニット
SX-Aurora TSUBASA Vector Engine - NECのスパコンSX-Aurora TSUBASA搭載の演算ユニットをバラ売りしたもの。8コア、最大2.45TFLOPS
SIMD命令を利用するには、各プロセッサの固有命令をアセンブラで直接記述するほか、高水準言語のコンパイラに実装されている組み込み関数(英語版) (intrinsics/intrinsic functions) を利用する方法もある。通例C言語/C++コンパイラには各プロセッサ固有の組み込み関数を定義したヘッダーファイルが用意されており、組み込み関数を呼び出すことで、アセンブラを使用することなく対応するSIMD命令を利用したソースコードを記述することができる。ただしSIMD命令セットおよび組み込み関数はプロセッサによって異なるため、このように手動でベクトル化するとソースコードの移植性が低下するという問題がある。また、本来のアルゴリズムとは関係のない下位レベルのコードを記述しなければならないため、メンテナンス性も低下する。
コンパイラの中には、SIMD命令による自動ベクトル化に対応しているものもある。
3Dゲームに必要な物理演算を高速化するため、SIMDを利用。
PhysX(用のチップ)
自動ベクトル化はコンパイラ最適化の一種であり、特定のデータ型の連続したメモリ領域に対する同一の演算の繰り返しなど、特定のパターンに合致する処理を、SIMD命令を使ったベクトル演算に置き換えて高速化する。自動ベクトル化は手動ベクトル化と比較してきめ細やかな制御は難しく、高速化の度合いはコンパイラの解析能力に左右されるが、ソースコードの移植性やメンテナンス性を維持したまま高速化できるというメリットもある。Clang/LLVMのように、コンパイラ最適化のヒントとしてベクトル幅などを固有のプラグマ指令で指定できるものもある。
OpenMP 4.0ではSIMDベクトル化のプラグマ指令が導入された。
.NET Coreおよび.NET Framework 4.6以降の64ビット版実行時コンパイラ (RyuJIT) は、System.Numerics名前空間に含まれるSIMD対応型を使って記述されたマネージコードを、SIMD命令で並列化されたネイティブ機械語コードにJITコンパイルすることができる。