loop pragma

ループのコードを自動並列化によって処理する方法を制御します。あるいは、ループを自動ベクター化の対象から除外します。

構文

#pragma loop( hint_parallel(n) )
#pragma loop( no_vector )
#pragma loop( ivdep )

パラメーター

hint_parallel(n)
n 個のスレッドにまたがってこのループを並列化するようにコンパイラにヒントを与えます。ここで n は、正の整数リテラルまたはゼロです。 n がゼロの場合、スレッドの最大数が実行時に使用されます。 これは、コマンドではなく、コンパイラに対するヒントです。 ループが並列化される保証はありません。 ループにデータの依存関係または構造上の問題がある場合は、並列化されません。 たとえば、ループ本体の外で使用されるスカラーに格納する場合は、並列化されません。

/Qpar コンパイラ スイッチが指定されていない場合、このオプションはコンパイラによって無視されます。

no_vector
既定では、自動ベクター化は、そこからメリットが得られると評価するすべてのループをベクター化しようとします。 この pragma は、後続のループの自動ベクター化を無効にする場合に指定します。

ivdep
このループでベクターの依存関係を無視するようにコンパイラにヒントを与えます。

解説

looppragma を使用するには、ループ定義の中ではなく直前に置きます。 pragma は後続のループのスコープ内で有効です。 1 つのループに複数の pragma ディレクティブを任意の順序で適用できますが、それぞれを別々の pragma ステートメントで指定する必要があります。

関連項目

自動並列化と自動ベクター化
pragma ディレクティブと __pragma および _Pragma キーワード