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
このループでベクターの依存関係を無視するようにコンパイラにヒントを与えます。
解説
loop
pragma を使用するには、ループ定義の中ではなく直前に置きます。 pragma は後続のループのスコープ内で有効です。 1 つのループに複数の pragma ディレクティブを任意の順序で適用できますが、それぞれを別々の pragma ステートメントで指定する必要があります。