SIMD (Single Instruction, Multiple Data) 命令を使用して同時に実行可能なループの開始位置を指定します。ループの各反復は、チーム内の 1 つのスレッドにより実行されます。
構文
#pragma omp for simd[clause{[, clause, ...]] |
for loops
引数
clause |
次のいずれかです。
|
for loop |
次の形式でなければなりません。
for (init-expr; test-expr; incr-expr)
structured-block
|
説明
このプラグマは、simd 構文に適用される任意の節と一致する方法で、関連する for ループを SIMD ループに変換します。生成される SIMD チャンクと残りの反復は、for 構文に適用される任意の節と一致する方法で、並列領域の暗黙のタスクにわたって分配されます。
例
次の例は、この宣言子を指定し、SIMD 命令を使用してループをコンパイルする方法を示します。
#pragma omp for simd schedule(static,10)
{
for (i=0; i<N; i++) {
a[i] = b[i] * c[i];
}
}