インテル® C++ コンパイラー 16.0 ユーザー・リファレンス・ガイド
ループを SIMD (Single Instruction, Multiple Data) 命令を使用して同時に実行されるループに変換します。
#pragma omp simd [clause[, clause ...]] |
for-loops
clause |
次のいずれかです。
|
for loop |
次の形式でなければなりません。 for (init-expr; test-expr; incr-expr) structured-block |
simd 構造は、SIMD (Single Instruction, Multiple Data) 命令を使用して、関連するループの複数の反復を同時に実行できるようにします。collapse 節の整数値は、simd 構造に関連付けられるループの数を示します。nocollapse 節を指定すると、その直後のループのみ関連付けられます。for-loops 間に干渉するコードや OpenMP* 構造があってはなりません。
SIMD 命令を使用して 2 つのループを作成する例 |
---|
#pragma omp simd collapse(2) for(i=0; i<N; i++) { a[i] = b[i] * c[i]; for(i=0; i<N; i++) { d[i] = e[i] * f[i]; } } |