ループ

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

#pragma loop( hint_parallel(n) )

#pragma loop( no_vector )

#pragma loop( ivdep )

パラメーター

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

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

  • no_vector
    自動ベクター化は既定でオンになっており、必要と評価されたすべてのループのベクター化が試みられます。 このプラグマは、後続のループの自動ベクター化を無効にする場合に指定します。

  • ivdep
    このループでベクターの依存関係を無視するようにコンパイラにヒントを与えます。 このプラグマは、hint_parallel と共に使用します。

解説

loop プラグマを使用するには、ループ定義の中ではなく直前にプラグマを置きます。 プラグマは後続のループのスコープ内で有効です。 1 つのループに複数のプラグマを任意の順序で適用できますが、プラグマを 1 つずつ個別のステートメントで指定する必要があります。

参照

関連項目

自動並列のエラーおよび警告

プラグマ ディレクティブと __Pragma キーワード