OpenMPでSIMDを有効にする
提供: C言語入門
スポンサーリンク
OpenMP 4.0で導入された主要な機能の1つは、ベクトル化/SIMD です。
読み方
- SIMD
- えすあいえむでぃ
- Single Instruction Multiple Data
- しんぐる いんすとらくしょん まるちぷる でーた
- ベクトル化
- べくとる か
- ベクトル演算
- べくとる えんざん
概要
OpenMP 4.0から、C言語やC++言語のプログラムをプラグマを用いて、明示的にSIMDに変換するように指示できます。
ベクトル化とは
ベクトル命令化 は、コンパイル時にループをベクトル演算命令に変換することです。
配列(ベクトル)をループで1つ1つ計算するようなコードを、ベクトル演算に変換して高速化できる場合があります。
SIMD(ベクトル演算)とは
SIMD (Single Instruction Multiple Data) とは、命令1つで、複数のデータ列を処理します。この演算は、パック演算やベクトル演算と呼ばれています。
ソースコード
simd construct は、「ループがSIMD ループに変換できること」を示すために、ループに対して適用できます。
#pragma omp simd for-loops
loop SIMD construct は、SIMD命令を使用して、並列に実行できるループを明示します。
#pragma omp for simd for-loop
コンパイル
gcc5 -fopenmp ...
実行例
関連項目
ツイート
スポンサーリンク