コンパイラーがライブラリー、インクルード・ファイル、設定ファイル、特定の設定など、ファイルを検索する際のパス (検索先) を指定して、システム環境をカスタマイズできます。
次の表は、コンパイラーに影響するコンパイル時の環境変数の一覧です。
コンパイル時の環境変数 |
説明 |
---|---|
CL (Windows*) _CL_ (Windows*) |
CL 変数で頻繁に使用するファイルとオプションを定義します。注: CL 環境変数に等号 (=) を含む文字列を設定することはできません。代わりに、シャープ記号 (#) を使用できます。次の例では、割り当てる文字列で等号 (=) の代わりにシャープ記号 (#) を使用しています: SET CL=/Dtest#100 |
IA32ROOT (IA-32 アーキテクチャーとインテル® 64 アーキテクチャー) |
標準以外のインストール構成の場合に、インクルードおよびライブラリー・ファイルを含むディレクトリーを指します。 注IA-32 は C++ でのみ利用できます。DPC++ では利用できません。 |
ICXCFG |
icx を使用してコンパイラーを起動したときにコンパイルをカスタマイズするための設定ファイルを指定します。 注この環境変数は C++ でのみ利用できます。DPC++ では利用できません。 |
ICPXCFG |
icpx を使用してコンパイラーを起動したときにコンパイルをカスタマイズするための設定ファイルを指定します。 注この環境変数は C++ でのみ利用できます。DPC++ では利用できません。 |
ICXCFG |
デフォルトの設定ファイルの代わりに、コンパイラーが使用する設定ファイルを指定します。 |
__INTEL_PRE_CFLAGS __INTEL_POST_CFLAGS |
コマンドラインにコンパイラー・オプションを追加します。 これは、コンパイラー設定ファイル icx.cfg ですでに提供されている機能の拡張です。 注デフォルトでは、icx.cfg (Windows* および Linux*)、または icpx.cfg (Linux*) という名前の設定ファイルが使用されます。このファイルは、コンパイラーの実行ファイルが格納されているディレクトリーにあります。別の場所にあるほかの設定ファイルを使用する場合は、ICXCFG (Windows* および Linux*)、ICPXCFG (Linux*) 環境変数を使用し、その設定ファイルのディレクトリーとファイル名を指定します。オプションをコマンドラインの先頭に追加する場合は __INTEL_PRE_CFLAGS を、最後に追加する場合は __INTEL_POST_CFLAGS を使用します。コマンドラインは、次のように構成されます。 構文: icx <PRE フラグ> <設定ファイルからのフラグ> <コンパイラー起動時のフラグ> <POST フラグ> 注/W5 (Windows*) または -w3 (Linux*) オプションを指定すると、ドライバーは環境変数によりオプションが変更されることを警告します。 |
PATH |
システムがバイナリー実行ファイルを検索するディレクトリーを指定します。 注Windows* では、これはダイナミック・リンク・ライブラリー (DLL) の検索にも影響します。 |
TMP TMPDIR TEMP |
一時ファイルの場所を指定します。これらの変数を指定しない場合、これらの変数がいずれも書き込み不可の場合、または見つからない場合、一時ファイルは /tmp (Linux*) または現在のディレクトリー (Windows*) に格納されます。 コンパイラーは、TMP、TMPDIR、TEMP の順に変数を検索します。 注Windows* では、これらの環境変数は Visual Studio* から設定できません。 |
LD_LIBRARY_PATH (Linux*) |
共有オブジェクト (.so ファイル) の場所を指定します。 |
INCLUDE (Windows*) |
ソース・ヘッダー・ファイル (インクルード・ファイル) のディレクトリーを指定します。 |
LIB (Windows*) |
コンパイラーとリンカーが使用するすべてのライブラリーのディレクトリーを指定します。 |
GNU* 環境変数と拡張 | |
CPATH (Linux*) |
C/C++ コンパイル用のインクルード・ディレクトリーのパスを指定します。 |
C_INCLUDE_PATH (Linux*) |
C コンパイル用のインクルード・ディレクトリーのパスを指定します。 |
CPLUS_INCLUDE_PATH (Linux*) |
C コンパイル用のインクルード・ディレクトリーのパスを指定します。 |
DEPENDENCIES_OUTPUT (Linux*) |
コンパイラーで処理されるシステム以外のヘッダーファイルに基づいて make の依存性を出力する方法を指定します。システム・ヘッダー・ファイルは依存性出力で無視されます。 |
GCC_EXEC_PREFIX (Linux*) |
リンカー (ld) とアセンブラー (as) の代替名を指定します。 |
GCCROOT (Linux*) |
GCC バイナリーの場所を指定します。 注この環境変数は C++ でのみ利用できます。DPC++ では利用できません。 |
GXX_INCLUDE (Linux*) |
GCC ヘッダーの場所を指定します。 注この環境変数は C++ でのみ利用できます。DPC++ では利用できません。 |
GXX_ROOT (Linux*) |
GCC バイナリーの場所を指定します。 注この環境変数は C++ でのみ利用できます。DPC++ では利用できません。 |
LIBRARY_PATH (Linux*) |
リンクフェーズで使用するライブラリーのパスを指定します。 |
SUNPRO_DEPENDENCIES (Linux*) |
この変数は、システム・ヘッダー・ファイルが無視されないことを除いて、DEPENDENCIES_OUTPUT と同じです。 |
次の表は、実行時に認識されるコンパイラーの環境変数をまとめたものです。
ランタイム環境変数 |
説明 |
---|---|
GNU* 拡張機能 (インテルの OpenMP* 互換ライブラリーにより認識) | |
GOMP_CPU_AFFINITY (Linux*) |
インテル® コンパイラーの OpenMP* 互換ライブラリーで認識される GNU* 拡張です。OS のプロセッサー ID のリストを指定します。 この環境変数は、最初の並列領域の前、または omp_get_max_threads()、omp_get_num_procs()、アフィニティー API 呼び出しを含む特定の API 呼び出しの前に設定する必要があります。この環境変数に関する詳細は、「スレッド・アフィニティー・インターフェイス」を参照してください。 デフォルト: アフィニティーは無効 |
GOMP_STACKSIZE (Linux*) |
インテル® コンパイラーの OpenMP* 互換ライブラリーで認識される GNU* 拡張です。OMP_STACKSIZE と同じです。KMP_STACKSIZE は、OMP_STACKSIZE を上書きする GOMP_STACKSIZE よりも優先されます。 デフォルト: 「OMP_STACKSIZE」の説明を参照してください。 |
OpenMP* 環境変数 (OMP_) と拡張 (KMP_) | |
OMP_CANCELLATION |
指定した種類の最内領域の取り消し要求を行います。TRUE の場合、CANCEL 構文と取り消しポイントが有効になり、取り消しが要求されます。FALSE の場合、取り消しは無効となり、CANCEL 構文と取り消しポイントは無視されます。 注内部バリアコードは、取り消しが行われたかどうかによって動作が異なります。そのため、グローバルフラグを繰り返しチェックし、取り消しが行われたかどうかを確認すべきです。取り消しが行われた場合、スレッドはバリアを実行せずに値 1 を返します (ほかのスレッドをウェイクアップする可能性があります)。そうでない場合、スレッドはバリアを実行し、値 0 を返します。 指定した種類の最内領域の取り消し要求を有効 (TRUE) または無効 (FALSE) にします。 デフォルト: FALSE 例: OMP_CANCELLATION=TRUE |
OMP_DISPLAY_ENV |
OpenMP* バージョン番号と OpenMP* 環境変数に関連する値の stderr への出力を有効 (TRUE) または無効 (FALSE) にします。 設定可能な値は、TRUE、FALSE、または VERBOSE です。 デフォルト: FALSE 例: OMP_DISPLAY_ENV=TRUE |
OMP_DEFAULT_DEVICE |
ターゲット領域で使用するデバイスを設定します。OpenMP* ルーチン omp_set_default_device または target プラグマの device 節でこの変数をオーバーライドできます。 指定されたデバイス番号のデバイスが存在しない場合、コードはホストで実行されます。この環境変数を設定されていない場合、number 0 が使用されます。 |
OMP_DYNAMIC |
スレッド数の動的調整を有効 (TRUE) または無効 (FALSE) にします。 デフォルト: FALSE 例: OMP_DYNAMIC=TRUE |
OMP_MAX_ACTIVE_LEVELS |
プログラムの入れ子構造の並列領域の最大レベル数です。 設定可能な値: 負ではない整数 デフォルト: 1 |
OMP_NESTED |
これは古い環境変数 (非推奨) です。OMP_MAX_ACTIVE_LEVELS を使用してください。 |
OMP_NUM_THREADS |
アプリケーションでほかの値が指定されていない場合は、OpenMP* 並列領域で使用する最大スレッド数を設定します。 すべての並列領域に対してスレッド数を指定する場合、1 つの整数値を設定します。入れ子レベルで 1 つの並列領域に対してそれぞれスレッド数を指定する場合、カンマ区切りリストを設定できます。 リストの最初の値は、最外入れ子レベルの並列領域のスレッド数を示し、2 つ目は次の内側の入れ子レベル、というように設定します。どのレベルでも、値を省略することができます。リストの最初の値が省略された場合、最外レベルではスレッドの通常のデフォルト値が使用されます。その他のレベルで値が省略された場合、そのレベルのスレッド数は、前のレベルから継承されます。 この環境変数は、Qopenmp (Windows*) または qopenmp (Linux*) オプションに適用されます。 デフォルト: プログラムを実行するオペレーティング・システムで現在認識されているプロセッサー数 構文: OMP_NUM_THREADS=value[,value]* |
OMP_PLACES |
抽象名または負でない数値で指定された、明示的に順序付けされたプレースリストです。除外演算子 “!” を使用して、演算子の直後の番号または位置を除外することもできます。 負でない数値の場合、番号の意味とリストの順序付けは実装定義に依存します。一般に、番号は実行環境における最小実行単位 (通常はハードウェア・スレッド) を表します。 次のような番号のリストを表すには、<lower-bound> : <length> : <stride> 形式で範囲を指定することができます。 "<lower-bound>, <lower-bound> + <stride>, ..., <lower-bound> +(<length>-1)*<stride>"<stride> を省略すると、ユニットストライドが仮定されます。範囲には、1 つの場所の番号を指定することも、一連の場所の番号を指定することもできます。 # EXPLICIT LIST EXAMPLE setenv OMP_PLACES "{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}" setenv OMP_PLACES "{0:4},{4:4},{8:4},{12:4}" setenv OMP_PLACES "{0:4}:4:4" 以下の抽象名は、実行環境とランタイム環境で認識されます。
システムで利用可能なプレースよりも少ないプレースを要求する場合や、システムで利用可能なリソースよりも多くのリソースを要求する場合、プレースリストに含まれる abstract_name タイプのリソースは実装定義に依存します。抽象名の厳密な定義も実装定義に依存します。実装で、ターゲット・プラットフォーム向けに適切な抽象名を追加することもできます。次のように、抽象名に括弧で囲んだ正の整数を追加してプレースリストの長さを表すことができます: abstract_name(num-places)。 # ABSTRACT NAMES EXAMPLE setenv OMP_PLACES threads setenv OMP_PLACES threads(4) 注数値をターゲット・プラットフォーム上のプロセッサーにマップできない場合の動作は実装定義に依存します。抽象名を使用して OMP_PLACES 環境変数を定義した場合の動作も実装定義に依存します。 |
OMP_PROC_BIND (Windows* および Linux*) |
対応する入れ子構造のレベルの並列領域に使用するスレッド・アフィニティー・ポリシーを設定します。プロセッサー・コンテキストへのスレッドのバインドを有効 (TRUE) または無効 (FALSE) にします。有効にすると、KMP_AFFINITY=scatter を指定するのと同じです。無効にすると、KMP_AFFINITY=none を指定するのと同じです。 設定可能な値: TRUE、FALSE、またはカンマ区切りのリスト (各要素の値は PRIMARY、MASTER (古い非推奨の値)、CLOSE、または SPREAD のいずれか) です。 デフォルト: FALSE FALSE に設定すると、実行環境は OpenMP* スレッドを OpenMP* 間で移動し、スレッド・アフィニティーは無効になり、並列構造の proc_bind は無視されます。false 以外に設定すると、実行環境は OpenMP* スレッドを OpenMP* 間で移動せず、スレッド・アフィニティーは有効になり、プライマリー・スレッドは OpenMP* プレースリストの最初の位置にバインドされます。 PRIMARY に設定すると、すべてのスレッドはプライマリー・スレッドと同じ場所にバインドされます。CLOSE に設定すると、スレッドは (プライマリー・スレッドがバインドされる場所に近い) 連続した場所にバインドされます。SPREAD に設定すると、プライマリー・スレッドのパーティションが分割され、スレッドは 1 つの場所の連続したサブパーティションにバインドされます。 注KMP_AFFINITY は GOMP_CPU_AFFINITY と OMP_PROC_BIND よりも優先されます。GOMP_CPU_AFFINITY は OMP_PROC_BIND よりも優先されます。 |
OMP_SCHEDULE |
ランタイム・スケジュールの型とチャンクサイズ (オプション) を設定します。 デフォルト: static、チャンクサイズの指定なし 構文の例: OMP_SCHEDULE="[modifier:]kind[,chunk_size]"
注一部の環境変数はインテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、インテル製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。 |
OMP_STACKSIZE |
スレッドのプライベート・スタックとして使用する各 OpenMP* スレッドに割り当てるバイト数を設定します。推奨するサイズは 16M です。 B (バイト)、K (キロバイト)、M (メガバイト)、G (ギガバイト)、T (テラバイト) などオプションのサフィックスを使用してバイト単位を指定します。値のみを指定すると、バイト単位は K (キロバイト) であると見なされます。 この変数は、ユーザープログラムによって生成されるオペレーティング・システムのネイティブスレッド、OpenMP* プログラムのシーケンシャル部分を実行するスレッドには影響ありません。 kmp_{set,get}_stacksize_s() ルーチンは値を設定/取得します。kmp_set_stacksize_s() ルーチンは、最初の並列領域が作成される前にシーケンシャル部分から呼び出される必要があります。この呼び出しが行われない場合、kmp_set_stacksize_s() を呼び出しても効果がありません。 デフォルト (IA-32 アーキテクチャー): 2M デフォルト (インテル® 64 アーキテクチャー): 4M 関連環境変数: KMP_STACKSIZE (OMP_STACKSIZE よりも優先されます) 構文: OMP_STACKSIZE=value |
OMP_THREAD_LIMIT |
OpenMP* プログラムで同時に実行されるスレッド数を制限します。 この制限に達し、オペレーティング・システムの別のネイティブスレッドが OpenMP* API コールや構造を検出すると、プログラムはエラーメッセージを表示してアボートします。OpenMP* 並列領域の開始時点でこの制限に達した場合は、チーム内のスレッド数が減少したことを示す警告メッセージが一度だけ生成されますが、プログラムの実行は続けられます。 この環境変数は、Qopenmp (Windows*) または qopenmp (Linux*) オプションを指定してコンパイルされたプログラムにのみ使用されます。 omp_get_thread_limit() ルーチンは制限値を返します。 デフォルト: 制限なし 関連環境変数: KMP_ALL_THREADS (OMP_THREAD_LIMIT よりも優先されます) 構文の例: OMP_THREAD_LIMIT=value |
OMP_WAIT_POLICY |
スレッドは待機中、スピンするか (active)、停止するか (passive) を決定します。 OMP_WAIT_POLICY=ACTIVE は KMP_LIBRARY=turnaround のエイリアスで、OMP_WAIT_POLICY=PASSIVE は KMP_LIBRARY=throughput のエイリアスです。 デフォルト: Passive 構文: OMP_WAIT_POLICY=value |
OMP_DISPLAY_AFFINITY |
最初の並列領域に入るとき、および OMP_AFFINITY_FORMAT に記載されている書式指定子でアクセス可能な情報に変更が生じたときに、並列領域内のすべての OpenMP* スレッドの書式付きアフィニティー情報を表示するようにランタイムに指示します。 設定可能な値: TRUE または FALSE デフォルト: FALSE |
OMP_AFFINITY_FORMAT |
OpenMP* スレッド・アフィニティー情報を表示する際の形式を定義します。設定可能な値は任意の文字列で、以下の形式フィールドを利用できます。
デフォルト: 'OMP: pid %P tid %i thread %n bound to OS proc set {%A}' |
OMP_MAX_TASK_PRIORITY |
初期値を設定してタスクの優先度の使用を制御します。 設定可能な値: 負ではない整数 デフォルト: 0 |
OMP_TOOL |
OpenMP* ランタイムが OMPT インターフェイスを使用するファース・トパーティー・ツールの登録を試みるかどうかを制御します。 設定可能な値: ENABLED または DISABLED デフォルト: ENABLED 注ホストの OpenMP* ランタイムのみサポートされます。 |
OMP_TOOL_LIBRARIES |
OMPT インターフェイスを使用するファースト・パーティー・ツールの場所のリストを設定します。このリストは、OS 固有のパス区切り文字を使用して、動的ロード可能なライブラリー名を列挙します。 デフォルト: 空 注ホストの OpenMP* ランタイムのみサポートされます。 |
OMP_TOOL_VERBOSE_INIT |
OpenMP* ランタイムが OMPT インターフェイスを使用するファース・トパーティー・ツールの登録の詳細なログを出力するかどうかを制御します。 値は以下のいずれかになります。
デフォルト: DISABLED 注ホストの OpenMP* ランタイムのみサポートされます。 |
OMP_DEBUG |
ツールをサポートするために OMPD ライブラリーが必要な情報を OpenMP* ランタイムが収集するかどうかを制御します。 設定可能な値: ENABLED または DISABLED デフォルト: DISABLED 注ホストの OpenMP* ランタイムのみサポートされます。 |
OMP_ALLOCATOR |
アロケーターを指定しない割り当ての呼び出し、ディレクティブ、および節のデフォルトのアロケーターを指定します。 デフォルト: omp_default_mem_alloc 構文: <PredefinedMemAllocator> | <PredefinedMemSpace> | <PredefinedMemSpace>:<Traits> <PredefinedMemAllocator> と <PredefinedMemSpace> で現在サポートされている値:
libmemkind が利用可能でサポートするシステムがある場合にサポートされる追加の値:
詳細は、OpenMP* 仕様 (英語) を参照してください。 |
OMP_NUM_TEAMS |
nteams-var ICV を設定することで、teams 構文によって作成されるチームの最大数を設定します。 設定可能な値: 正の整数 デフォルト: 1 |
OMP_TEAMS_THREAD_LIMIT |
teams 構文によって作成された各チームで使用する OpenMP* スレッドの最大数を設定します。 設定可能な値: 正の整数 デフォルト: <NumberOfProcessors> / <nteams-var ICV> |
KMP_AFFINITY (Windows* および Linux*) |
ランタイム・ライブラリーを有効にして、論理処理ユニットにスレッドをバインドします。 この環境変数は、最初の並列領域の前、または omp_get_max_threads()、omp_get_num_procs()、アフィニティー API 呼び出しを含む特定の API 呼び出しの前に設定する必要があります。この環境変数に関する詳細は、「スレッド・アフィニティー・インターフェイス」を参照してください。 デフォルト: noverbose,warnings,respect,granularity=core,none デフォルト (複数のプロセッサー・グループがある Windows*): noverbose,warnings,norespect,granularity=group,compact,0,0 注複数のプロセッサー・グループがある Windows* では、プロセス・アフィニティー・マスクが単一のプロセッサー・グループに等しい場合、norespect アフィニティー修飾子が仮定されます (これは Windows* 上でのデフォルトです)。そうでない場合は、respect アフィニティー修飾子が使用されます。 |
KMP_ALL_THREADS |
OpenMP* プログラムで同時に実行されるスレッド数を制限します。制限に達し、オペレーティング・システムの別のネイティブスレッドが OpenMP* API 呼び出しや構造に達すると、プログラムはエラーメッセージを表示してアボートすることがあります。OpenMP* 並列領域の開始時点でこの制限に達した場合は、チーム内のスレッド数が減少したことを示す警告メッセージが一度だけ生成されますが、プログラムの実行は続けられます。 この環境変数は、Qopenmp (Windows*) または qopenmp (Linux*) オプションを指定してコンパイルされたプログラムにのみ使用されます。 デフォルト: 制限なし |
KMP_BLOCKTIME |
並列領域の実行が終了した後、スレッドがスリープ状態になるまでスレッドが待機する時間 (ミリ秒単位) を設定します。 s (秒)、m (分)、h (時間)、d (日) などのサフィックスを使用して単位を指定します。 待機時間に制限を設けない場合は infinite を指定します。 デフォルト: 200 ミリ秒 関連環境変数: KMP_LIBRARY |
KMP_CPUINFO_FILE |
マシントポロジーの記述を含むファイルの代替名を指定します。このファイルは、/proc/cpuinfo と同じ形式でなければなりません。 デフォルト: なし |
KMP_DETERMINISTIC_REDUCTION |
OpenMP* 並列領域で reduction 節を実装するため、リダクション操作において特定の処理順序の使用を有効 (TRUE) または無効 (FALSE) にします。これにより、指定されたスレッド数、指定された並列領域、指定されたデータセットとリダクション操作に対して、OpenMP* の reduction 節で実行される浮動小数点リダクション操作の丸め誤差は常に同じとなり、一貫性のある浮動小数点結果が得られます。 注正しい動作を保証するため、コンパイル時に次のオプションを設定する必要があります。
デフォルト: FALSE |
KMP_DYNAMIC_MODE |
OMP_DYNAMIC=TRUE の場合に、並列領域に使用されるスレッド数を決定するメソッドを選択します。設定可能な値は次のとおりです (asat | load_balance | thread_limit)。
デフォルト (インテル® 64 アーキテクチャー): load_balance (サポートされているすべての OS) |
KMP_HOT_TEAMS_MAX_LEVEL |
ホットチームの入れ子構造の最大レベルを設定します。 注ホットチームとは、後続の並列領域で素早く再利用できるように最適化されたスレッドチームです。ホットチームでは、次の並列領域を実行できるようにスレッドが保持されます。一方、コールドチームでは、各並列領域の完了後、スレッドは解放され共通のスレッドプールに配置されます。 値が 2 以上の場合、入れ子構造の並列処理を有効にする必要があります。 デフォルト: 1 |
KMP_HOT_TEAMS_MODE |
ホットチームのスレッド数が減らされた場合のランタイムの動作を指定します。 値は以下のいずれかになります。
デフォルト: 0 |
KMP_HW_SUBSET |
ハードウェア・トポロジー階層に利用可能なハードウェア・リソースのサブセットを指定します。サブセットは、最上層から下に向かって、上層ユニットあたりのユニット数で指定されます。例えば、複雑で明示的なアフィニティー設定や制限プロセス・アフィニティー・マスクを記述する代わりに、OpenMP* アプリケーションで使用するソケット数 (最上層ユニット)、ソケットあたりのコア数、コアあたりのスレッド数を指定します。使用するリソースを設定するオフセット値を指定することもできます。利用可能な場合、リソースの異なるサブセットを選択するため属性を指定することができます。 KMP_TOPOLOGY_METHOD=hwloc の場合、拡張構文を利用できます。検出されたリソースに応じて、NUMA ノードや特定のキャッシュレベルを共有するハードウェア・リソースのグループなどの追加リソースを指定できます。 基本構文: num_unitsID[@offset][:attribute] [,num_unitsID[@offset][:attribute]...] サポートされているユニット ID では大文字と小文字は区別されません。
注ハードウェア・キャッシュは、ユニットとして指定できます (例えば、L2 キャッシュの場合は L2、最終レベルキャッシュの場合は LL)。拡張構文 (KMP_TOPOLOGY_METHOD=hwloc の場合): 検出された場合は、追加の ID を指定できます。次に例を示します。
KMP_HW_SUBSET で numa または tile ユニットが指定されている場合、KMP_TOPOLOGY_METHOD は自動的に hwloc に設定されるため、明示的に設定する必要はありません。 sockets や threads など、1 つ以上のリソースの種類を指定しない場合、利用可能なすべてのリソースが使用されます。 次の場合、ランタイム・ライブラリーは警告を出力し、KMP_HW_SUBSET の設定は無視されます。
OpenMP* アフィニティーが disabled に設定されている場合、この変数は効果がありません。 デフォルト: 省略すると、デフォルトで利用可能なすべてのハードウェア・リソースを使用します。 例:
設定の結果を確認するには、KMP_AFFINITY 環境変数で verbose 修飾子を指定します。OpenMP* ランタイム・ライブラリーは、KMP_HW_SUBSET 設定が適用される前後に、検出されたハードウェア・トポロジーに関する情報を stderr ストリームに出力します。例えば、インテル® Xeon Phi™ 7210 プロセッサー (SNC-4 クラスターモード) で KMP_AFFINITY=verbose KMP_HW_SUBSET=1N,1L2,1L1,1T と設定すると、次の行を含む、KMP_HW_SUBSET 設定が適用される前後に検出されたハードウェア・トポロジーに関する詳細な情報を stderr に出力します。
|
KMP_INHERIT_FP_CONTROL |
各並列領域の開始時点で、プライマリー・スレッドの浮動小数点の制御設定を OpenMP* ワーカースレッドへコピーすることを有効 (TRUE) または無効 (FALSE) にします。 デフォルト: TRUE |
KMP_LIBRARY |
OpenMP* ランタイム・ライブラリーの実行モードを選択します。この変数の値は、serial、turnaround、または throughput です。 デフォルト: throughput |
KMP_PLACE_THREADS |
これは古い環境変数です。KMP_HW_SUBSET を使用してください。 |
KMP_SETTINGS |
プログラム実行中の OpenMP* ランタイム・ライブラリー環境変数の出力を有効 (TRUE) または無効 (FALSE) にします。ユーザー定義の環境変数設定と OpenMP* ランタイム・ライブラリーにより使用される効率的な変数の値の 2 つの変数リストが出力されます。 デフォルト: FALSE |
KMP_STACKSIZE |
プライベート・スタックとして使用する各 OpenMP* スレッドに割り当てるバイト数を設定します。 推奨するサイズは 16m です。 B (バイト)、K (キロバイト)、M (メガバイト)、G (ギガバイト)、T (テラバイト) などオプションのサフィックスを使用してバイト単位を指定します。値のみを指定すると、バイト単位は K (キロバイト) であると見なされます。 KMP_STACKSIZE は GOMP_STACKSIZE (OMP_STACKSIZE よりも優先) よりも優先されます。 デフォルト (IA-32 アーキテクチャー): 2m デフォルト (インテル® 64 アーキテクチャー): 4m |
KMP_TOPOLOGY_METHOD |
OpenMP* が特定のマシン・トポロジー・モデル・メソッドを使用するように強制します。 設定可能な値は以下のとおりです。
デフォルト: all |
KMP_USER_LEVEL_MWAIT |
ring3 または WAITPKG から待機中のスレッドをスリープさせる代わりに、ユーザレベルの mwait の使用を有効 (TRUE)/無効 (FALSE) にします。 デフォルト: FALSE |
KMP_VERSION |
プログラム実行中の OpenMP* ランタイム・ライブラリーのバージョン情報の出力を有効 (TRUE) または無効 (FALSE) にします。 デフォルト: FALSE |
KMP_WARNINGS |
プログラム実行中の OpenMP* ランタイム・ライブラリーからの警告の表示を有効 (TRUE) または無効 (FALSE) にします。 デフォルト: TRUE |
OpenMP* オフロード環境変数 (OMP_、LIBOMPTARGET) | |
OMP_TARGET_OFFLOAD |
ターゲット領域をオフロードする際のプログラムの動作を制御します。 値は以下のいずれかになります。
デフォルト: DEFAULT |
LIBOMPTARGET_DEBUG |
オフロードランタイムからデバッグ情報を表示するかどうかを制御します。 値は以下のいずれかになります。
デフォルト: 0 |
LIBOMPTARGET_INFO |
オフロードランタイムから基本的なオフロード情報を表示するかどうかを制御します。 値は以下のいずれかになります。
デフォルト: 0 |
LIBOMPTARGET_PLUGIN |
ターゲット領域のオフロードに使用するオフロードプラグインを指定します。 値は以下のいずれかになります。
デフォルト: LEVEL_ZERO |
LIBOMPTARGET_DEVICETYPE |
ターゲット領域をオフロードするデバイスタイプを選択します。 値は以下のいずれかになります。
デバイスタイプのオフロード・プラグイン・サポート:
デフォルト: GPU |
LIBOMPTARGET_PLUGIN_PROFILE |
プラグインの基本的なプロファイルを有効にし、プログラム終了時にその結果を表示します。 デフォルト: Disabled 構文: <Value>[,usec], where <Value>=1 | T | t 報告される時間の単位は、「,usec」が追加されている場合はマイクロ秒、そうでない場合はミリ秒です。 |
LIBOMPTARGET_DYNAMIC_MEMORY_SIZE |
デバイス上の malloc 呼び出しを処理するための事前割り当てメモリーのサイズを MB 単位で設定します。 現在、デバイス上のメモリーを解放するための呼び出しは、メモリーを解放しません。すべての割り当てメモリーは、プログラムの終了時にのみ解放されます。 設定可能な値: 負ではない整数 デフォルト: 0 |
レベルゼロ・オフロード・プラグイン用の OpenMP* オフロード環境変数 | |
LIBOMPTARGET_LEVEL0_COMPILATION_OPTIONS |
ターゲットプログラムのネイティブバイナリーをビルドする際に追加のビルドオプションを渡します。 設定可能な値: 有効なレベルゼロ・ビルド・オプション |
LIBOMPTARGET_DEVICES |
デバイスがサブデバイスをサポートしている場合、サブデバイスまたはサブサブデバイスのユーザーへの公開方法を制御します。 値は以下のいずれかになります。
デフォルト: DEVICE |
LIBOMPTARGET_LEVEL0_MEMORY_POOL |
メモリープールの設定を制御します。 値は以下のいずれかになります。
例:
デフォルト: all,1,4,256 |
LIBOMPTARGET_LEVEL0_USE_COPY_ENGINE |
メモリー転送にコピーエンジンを使用しないようにします。 値は以下のいずれかになります。
デフォルト: 有効 |
LIBOMPTARGET_LEVEL0_DEFAULT_TARGET_MEM |
omp_target_alloc ルーチンによって返されるメモリータイプを選択します。 値は以下のいずれかになります。
デフォルト: DEVICE |
LIBOMPTARGET_LEVEL0_STAGING_BUFFER_SIZE |
ホストとデバイス間のデータ転送で使用されるステージング・バッファー・サイズを KB 単位で設定します。 設定可能な値: 負でない整数。0 はステージング・バッファーの使用を無効にします。 デフォルト: 4 |
OpenCL* オフロードプラグイン用の OpenMP* オフロード環境変数 | |
LIBOMPTARGET_OPENCL_COMPILATION_OPTIONS |
SPIR-V* ターゲットイメージからターゲットプログラムをコンパイルする際に、追加のコンパイルオプションを渡します。 設定可能な値: 有効な OpenCL* コンパイルオプション (英語) |
LIBOMPTARGET_OPENCL_LINKING_OPTIONS |
ターゲットプログラムをリンクする際に、追加のリンクオプションを渡します。 設定可能な値: 有効な OpenCL* リンクオプション (英語) |
LIBOMPTARGET_OPENCL_USE_SVM |
デフォルトのターゲット・メモリー・タイプに OpenCL* SVM メモリーを使用することを有効または無効にします。 値は以下のいずれかになります。
デフォルト: 無効 |
LIBOMPTARGET_OPENCL_DATA_TRANSFER_METHOD |
使用するメモリー転送方法を選択します。This is only effective when OpenCL SVM memory is enabled by setting LIBOMPTARGET_OPENCL_USE_SVM. 値は以下のいずれかになります。
デフォルト: 1 |
DPC++ 環境変数 |
|
DPCPP_CPU_CU_AFFINITY |
スレッド・アフィニティーを CPU に設定します。値と意味は次のとおりです。
この環境変数は、OpenMP* で使用される OMP_PROC_BIND 変数に似ています。 デフォルト: なし |
DPCPP_CPU_SCHEDULE |
スケジューラーがワークグループをスケジュールするアルゴリズムを指定します。現在、DPC++ はスケジューリングにインテル® oneTBB を使用しています。この値は、インテル® oneTBB スケジューラーによって使用されるパーティショナーを選択します。値と意味は次のとおりです。
デフォルト: dynamic |
DPCPP_CPU_NUM_CUS |
カーネルの実行に使用されるスレッド数を設定します。 オーバーサブスクリプションを回避するため、DPCPP_CPU_NUM_CUS の最大値はハードウェア・スレッドの数にしてください。DPCPP_CPU_NUM_CUS が 1 の場合、すべてのワークグループが単一のスレッドでシーケンシャルに実行されるので、デバッグに便利です。 この環境変数は、OpenMP* で使用される OMP_NUM_THREADS 変数に似ています。 デフォルト: なし。TBB により決定されます。 |
DPCPP_CPU_PLACES |
アフィニティーを設定する場所を指定します。値は { sockets | numa_domains | cores | threads } です。 この環境変数は、OpenMP* で使用される OMP_PLACES 変数に似ています。 値が numa_domains の場合、TBB NUMA API が使用されますこれは OpenMP* 5.1 仕様書の OMP_PLACES=numa_domains に類似しています。TBB タスク領域は numa ノードにバインドされ、SYCL* nd 範囲はタスク領域に均等に分散されます。 DPCPP_CPU_PLACES は DPCPP_CPU_CU_AFFINITY とともに使用することを推奨します。 デフォルト: cores |
次の表は、実行時に認識される CPU 環境変数をまとめたものです。
ランタイム時の設定 |
デフォルト値 |
説明 |
---|---|---|
CL_CONFIG_CPU_FORCE_PRIVATE_MEM_SIZE |
32KB |
CPU デバイスの CL_DEVICE_PRIVATE_MEM_SIZE を強制的に指定します。値に単位を含める必要があります。例: 8MB、8192KB、8388608B。 注ホスト・アプリケーションを十分なスタックサイズでコンパイルする必要があります。 |
CL_CONFIG_CPU_FORCE_LOCAL_MEM_SIZE |
32KB |
CPU デバイスの CL_DEVICE_LOCAL_MEM_SIZE を強制的に指定します。単位を含むサイズを設定する必要があります。例: 8MB、8192KB、8388608B。 注ホスト・アプリケーションを十分なスタックサイズでコンパイルする必要があります。アプリケーションと OpenCL* ランタイムの潜在的なオーバーヘッドをカバーするため、スタックサイズをローカル・メモリー・サイズの 2 倍に設定することを推奨します。 |
CL_CONFIG_CPU_EXPENSIVE_MEM_OPT |
0 |
高価なメモリーの最適化が有効であることを示すビットマップ。これらの最適化は JIT コンパイル時間の増加につながる可能性がありますが、パフォーマンスの利点をもたらします。 注現在は、最下位ビットのみが利用可能です。利用可能なビット:
|
CL_CONFIG_CPU_STREAMING_ALWAYS |
false |
非テンポラルな命令が使用されるかどうかを制御します。 |