並列処理に影響を及ぼす OpenMP ランタイム・オプションは、OMP 環境変数を指定して設定します。これらの環境変数は、以下の形式の構文を使用します。
OMP 環境変数が明示的に設定されない場合、デフォルト設定が使用されます。
OpenMP ランタイム・オプションは、以下で説明する別々のカテゴリーに分類されます。
OMP_SCHEDULE=algorithm | このオプションは、omp schedule
ディレクティブでスケジューリング・アルゴリズムを明示的に割り当てられないループに対して使用するスケジューリング・アルゴリズムを指定します。例を以下に示します。
OMP_SCHEDULE="guided, 4"
algorithm の有効なオプションは、以下のとおりです。
チャンク・サイズを n で指定する場合、 n の値は 1 以上の整数値でなければなりません。
デフォルトのスケジューリング・アルゴリズムは static です。 |
OMP_NUM_THREADS=num | num は、必要な並列スレッドの数を示します。この数は、システムで使用可能なプロセッサーの数と通常同じです。
この数は、omp_set_num_threads( ) ランタイム・ライブラリー関数を呼び出すことによって、プログラム実行中にオーバーライドすることができます。
アプリケーションによっては、使用可能なプロセッサーの最大数を超えてスレッドを使用することはできません。その他のアプリケーションは、存在するプロセッサー数より多くのスレッドを使用するとパフォーマンスがかなり向上します。このオプションでは、プログラムを実行するために使用するユーザー・スレッドの数を完全に制御することができます。
num のデフォルト値は、システムで使用可能なプロセッサーの数です。
いくつかの #pragma omp ディレクティブで使用可能な num_threads 文節を使用して、指定された parallel section の OMP_NUM_THREADS の設定をオーバーライドすることができます。 |
OMP_NESTED=TRUE|FALSE | この環境変数は、ネストされた並列性を使用可能または使用不可にします。この環境変数の設定は、
omp_set_nested( ) ランタイム・ライブラリー関数を呼び出してオーバーライドすることができます。
ネストされた並列性が使用不可の場合、ネストされた並列領域は直列化され、現在のスレッドで稼働します。
現在のインプリメンテーションでは、ネストされた並列領域は、常に直列化されています。その結果、OMP_SET_NESTED は何の影響も及ぼさず、 omp_get_nested() は常に 0 を戻します。 -qsmp=nested_par オプションがオンの場合 (非精密 OMP モードでのみ) は、ネストされた並列領域は、追加のスレッドを使用可能として使用する場合があります。ただし、ネストされた並列領域を実行するために、新規のチームが作成されることはありません。
OMP_NESTED のデフォルト値は FALSE です。 |
OMP_DYNAMIC=TRUE|FALSE | この環境変数は、並列領域の実行に使用可能なスレッドの数の動的調整を使用可能または使用不可にします。
TRUE に設定されている場合、並列領域の実行に使用可能なスレッドの数は、システム・リソースを最も有効に使用するために実行時に調整されます。
FALSE に設定されている場合、動的調整は使用不可になります。
デフォルト設定は TRUE です。 |
OpenMP 仕様の完全な情報については、以下を参照してください。