インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス

omp simd

ループを SIMD (Single Instruction, Multiple Data) 命令を使用して同時に実行されるループに変換します。

構文

#pragma omp simd [clause[, clause ...]]

for loop

引数

clause

次のいずれかです。

  • aligned(list[:linear-step])

  • collapse(n)

  • lastprivate(list)

  • linear(list[:linear-step])

  • private(list)

  • reduction(operator:list)

  • safelen(length)

for loop

次の形式でなければなりません。

for (init-expr; test-expr; incr-expr)

structured-block

説明

simd 構造は、SIMD (Single Instruction, Multiple Data) 命令を使用して、関連するループの複数の反復を同時に実行できるようにします。 collapse 節の整数値は、simd 構造に関連付けられるループの数を示します。 nocollapse 節を指定すると、その直後のループのみ関連付けられます。 for loop 間に干渉するコードや 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]; }
}