並列処理のための OpenMP ランタイム・オプション

並列処理に影響を及ぼす OpenMP ランタイム・オプションは、OMP 環境変数を指定して設定します。これらの環境変数は、以下の形式の構文を使用します。


構文図

OMP 環境変数が明示的に設定されない場合、デフォルト設定が使用されます。

注:
並列化されたプログラム・コードをコンパイルする場合は、スレッド・セーフ・コンパイラー・モードを使用して起動しなければなりません。

OpenMP ランタイム・オプションは、以下で説明する別々のカテゴリーに分類されます。

スケジューリング・アルゴリズム環境変数


OMP_SCHEDULE=algorithm このオプションは、omp schedule ディレクティブでスケジューリング・アルゴリズムを明示的に割り当てられないループに対して使用するスケジューリング・アルゴリズムを指定します。例を以下に示します。

OMP_SCHEDULE="guided, 4"

algorithm の有効なオプションは、以下のとおりです。

  • dynamic[, n]
  • guided[, n]
  • runtime
  • static[, n]

チャンク・サイズを 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 ディレクティブ

関連参照

並列処理を制御するプラグマ
並列処理に使用する組み込み関数

OpenMP 仕様の完全な情報については、以下を参照してください。

IBM Copyright 2003