ループを SIMD (Single Instruction, Multiple Data) 命令を使用して同時に実行されるループに変換します。
構文
#pragma omp simd [clause[, clause ...]] |
for-loops
引数
clause |
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]; }