【しむでぃー】
SIMD とは?
公開:
💡 同じ計算を、複数の値へ一度に指示する
1つの命令で複数のデータ要素へ同じ演算を行う方式。画像や音声、数値計算などに利用される。複数コアによる並列実行とは別の仕組み。
📌 このページのポイント
同じ足し算をたくさんするとき、一度にできないの?
複数の値に同じ演算を指示するSIMDが使える場合があるよ。たとえば4組の数を別々に足す代わりに、1つのベクトル加算命令で扱うような仕組みだね。
4組なら、どんなふうに計算するの?
説明用に、1・2・3・4と10・20・30・40を各位置で足すと、11・22・33・44になる。各位置をレーンと考えればよいよ。隣り合う要素を全部足して合計する処理とは違うんだ。
4つのCPUコアを使うの?
それとは別だよ。1つのコアでもSIMD命令を使える。複数コアへ仕事を分ける並列処理と組み合わせることもできるけれど、SIMDという言葉だけではコアの数は決まらないんだ。
じゃあ4倍速くなるのかな?
必ずではないよ。データをメモリから読む時間、要素ごとの分岐、前の結果が必要な計算などが影響する。4レーンという数字は扱える要素の例で、処理全体の速度倍率ではないよ。
自分のプログラムでも使えるの?
まとめ:ざっくりこれだけ覚えればOK!
「SIMD」は「同じ計算を、複数の値へ一度に指示する」と押さえておこう!
📖 おまけ:英語の意味
「Single Instruction, Multiple Data」 = 単一命令・複数データ
💬 Single Instruction, Multiple Dataは「単一命令・複数データ」という意味の表現だよ。