par-schedule、Qpar-schedule

 

ループ反復のスケジューリング・アルゴリズムまたはチューニング方法を指定します。

IDE オプション

なし

アーキテクチャー

IA-32、インテル® 64、IA-64 アーキテクチャー

構文

Linux および Mac OS X:

-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

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

説明

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

このオプションは、パフォーマンス・チューニングに影響を与え、自動並列化で最良のパフォーマンスを得ることができます。

オプション

説明

-par-schedule-auto または /Qpar-schedule-auto

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

-par-schedule-static または /Qpar-schedule-static

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

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

-par-schedule-static-balanced または /Qpar-schedule-static-balanced

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

-par-schedule-static-steal または /Qpar-schedule-static-steal

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

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

-par-schedule-dynamic または /Qpar-schedule-dynamic

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

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

-par-schedule-guided または /Qpar-schedule-guided

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

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

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

-par-schedule-guided-analytical または /Qpar-schedule-guided-analytical

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

-par-schedule-runtime または /Qpar-schedule-runtime

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

代替オプション

なし