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

par-schedule、Qpar-schedule

ループ反復のスケジュール・アルゴリズムを指定します。

構文

Linux* および macOS*:

-par-schedule-keyword[=n]

Windows*:

/Qpar-schedule-keyword[[:]n]

引数

keyword

スケジュール・アルゴリズムかチューニング方法を指定します。設定可能な値は以下のとおりです。

auto

コンパイラーまたはランタイムシステムがスケジュール・アルゴリズムを決定します。

static

反復を連続するチャンクに分割します。

static-balanced

反復を同一サイズのチャンクに分割します。

static-steal

反復を同一サイズのチャンクに分割しますが、スレッドは近隣のスレッドからチャンクの一部をとる (移動する) ことができます。

dynamic

反復のセットを動的に取得します。

guided

最小の反復回数を指定します。

guided-analytical

指数分布または動的分布を使用して反復を分割します。

runtime

スケジュールに関する決定を実行時まで延期します。

n

チャンクサイズまたはチャンクごとの反復回数です。この設定は、static、dynamic、guided でのみ指定できます。詳細は、下記のキーワードの説明を参照してください。

デフォルト

static-balanced

反復は同一サイズのチャンクに分割され、そのチャンクはラウンドロビン方式 (総当り) でスレッド番号の順番にチームのスレッドへ振り分けられます。

説明

このオプションは、ループ反復のスケジュール・アルゴリズムを指定します。反復をチームのスレッド間でどのように分割するかを指定します。

このオプションは、[Q]parallel オプションと一緒に指定された場合のみ効果があります。

このオプションは、パフォーマンス・チューニングに影響を与え、自動並列化で最良のパフォーマンスを得ることができます。[q または Q]openmp オプションと一緒に使用すると、何の効果もありません。

オプション

説明

[Q]par-schedule-auto

コンパイラーまたはランタイムシステムがスケジュール・アルゴリズムを決定します。チームのスレッドに対して、あらゆるマッピングパターンが発生する可能性があります。

[Q]par-schedule-static

反復をサイズ n の連続するチャンクに分割します。分割された反復は、ラウンドロビン方式 (総当り) でスレッド番号順にチームのスレッドへ振り分けられます。最後に割り当てられるチャンクの反復回数は、ほかと比べて少ない場合があります。

n が指定されていない場合、反復はほぼ同じサイズのチャンクに分割され、各スレッドには最大で 1 つのチャンクが割り当てられます。

[Q]par-schedule-static-balanced

反復を同一サイズのチャンクに分割します。分割された反復は、ラウンドロビン方式 (総当り) でスレッド番号順にチームのスレッドへ振り分けられます。

[Q]par-schedule-static-steal

反復は同一サイズのチャンクに分割されますが、1 つのスレッドがそのチャンクを終了した場合、近隣のスレッドに分けられたチャンクの一部をとる (移動する) ことができます。

各スレッドは、そのチャンクの下限、上限を表す L と U を追跡します。反復は下限から実行され、同時に L が更新されて、新しい下限を表します。

[Q]par-schedule-dynamic

反復のセットを動的に取得するのに使用します。スレッドからの要求に対して、チャンクに分割された反復を割り当てます。スレッドはチャンクを実行して、実行が終わったら、次のチャンクを要求します。割り当てるチャンクがなくなるまで、これを繰り返します。

各スレッドがチャンクを実行し終わると、次の反復のセットが動的に取得されます。それぞれのチャンクには n 回の反復が含まれています。ただし、最後に割り当てられるチャンクの反復回数はこれよりも少ない場合があります。n が指定されていない場合、デフォルトは 1 です。

[Q]par-schedule-guided

最小の反復回数を指定するのに使用します。スレッドからの要求に対して、チャンクに分割された反復を割り当てます。スレッドはチャンクを実行して、実行が終わったら、次のチャンクを要求します。割り当てるチャンクがなくなるまで、これを繰り返します。

n が 1 の場合、各チャンクのサイズは割り当てられていない反復回数をスレッド数で割って、1 に切り下げた値になります。

nk (2 以上) の場合、各チャンクのサイズは、k に切り下げられる点を除いて同じ方法で決定されます (ただし、最後に割り当てられるチャンクの反復回数は k よりも少ない場合があります)。n が指定されていない場合、デフォルトは 1 です。

[Q]par-schedule-guided-analytical

指数分布または動的分布を使用して反復を分割します。この方法は、ランタイム実装に依存します。ループ境界は、高速な同期化で計算され、チャンクはチームのスレッドにより実行時に動的に振り分けられます。

[Q]par-schedule-runtime

スケジュールに関する決定を実行時まで延期します。OMP_SCHEDULE 環境変数の設定から、スケジュール・アルゴリズムとチャンクサイズを取得します。

このオプションは、互換マイクロプロセッサーとインテル製マイクロプロセッサーでは異なる動作をする可能性があります。

IDE オプション

なし

代替オプション

なし