サポートされる環境変数

コンパイラーがライブラリー、インクルード・ファイル、設定ファイル、特定の設定など、ファイルを検索する際のパス (検索先) を指定して、システム環境をカスタマイズできます。

コンパイラーのコンパイル時の環境変数

次の表は、コンパイラーに影響するコンパイル時の環境変数の一覧です。

コンパイル時の環境変数

説明

IFORTCFG

デフォルトの設定ファイルの代わりに、コンパイラーが使用する設定ファイルを指定します。

デフォルトでは、コンパイラー実行ファイルと同じディレクトリーにあるデフォルトの設定ファイル (ifort.cfg) を使用します。

Windows* では、この環境変数は Visual Studio* から設定できません。

INTEL_LICENSE_FILE

インテルのライセンスファイルの場所を指定します。

Windows* では、この環境変数は Visual Studio* から設定できません。

__INTEL_PRE_FFLAGS

__INTEL_POST_FFLAGS

コマンドラインにコンパイラー・オプションを追加します。

これは、コンパイラー設定ファイル ifort.cfg ですでに提供されている機能の拡張です。

デフォルトでは、ifort.cfg という名前の設定ファイルが使用されます。このファイルは、コンパイラーの実行ファイルが格納されているディレクトリーにあります。別の場所にあるほかの設定ファイルを使用する場合は、IFORTCFG 環境変数を使用し、その設定ファイルのディレクトリーとファイル名を指定します。

オプションをコマンドラインの先頭に追加する場合は __INTEL_PRE_FFLAGS を、最後に追加する場合は __INTEL_POST_FFLAGS を使用します。コマンドラインは、次のように構成されます。

構文: ifort <PRE フラグ> <設定ファイルからのフラグ> <コンパイラー起動時のフラグ> <POST フラグ>

/W5 (Windows*) または -w3 (Linux* および macOS*) オプションを指定すると、ドライバーは環境変数によりオプションが変更されることを警告します。

INTEL_TARGET_ARCH_IA32 (Linux* および Windows*)

この環境変数を設定すると、すべての関連ツール (コンパイラーとインテル固有のリンカーツールを含む) が 32 ビット・コンパイル向けになります。この環境変数を設定しない場合、コンパイラーを起動するたびに、コマンドラインで明示的に /Qm32 (Windows*) または -m32 (Linux*) オプションを指定する必要があります。

macOS* での IA-32 アーキテクチャーのサポートは終了しました。その他のオペレーティング・システムでは 32 ビットは非推奨であり、将来のリリースで削除される予定です。

PATH

システムがバイナリー実行ファイルを検索するディレクトリーを指定します。

Windows* では、これはダイナミック・リンク・ライブラリー (DLL) の検索にも影響します。

TMP

TMPDIR

TEMP

一時ファイルの場所を指定します。これらの変数を指定しない場合、これらの変数がいずれも書き込み不可の場合、または見つからない場合、一時ファイルは /tmp (Linux* および macOS*) または現在のディレクトリー (Windows*) に格納されます。

コンパイラーは、TMPTMPDIRTEMP の順に変数を検索します。

Windows* では、これらの環境変数は Visual Studio* から設定できません。

LD_LIBRARY_PATH (Linux*)

共有オブジェクト (.so ファイル) の場所を指定します。

DYLD_LIBRARY_PATH (macOS*)

ダイナミック・ライブラリーのパスを指定します。

INCLUDE (Windows*)

インクルード・ファイル (INCLUDE 文でインクルードされるファイル、#include ファイル、RC INCLUDE ファイル1、および USE 文で参照されるモジュールファイル) のディレクトリー・パスを指定します。

1 ダイアログボックスやその他の Windows* GUI インターフェイスの作成に使用されるリソース・コンパイラーのファイル

LIB (Windows*)

コンパイラーとリンカーが使用するすべてのライブラリーのディレクトリーを指定します。

GNU* 環境変数と拡張

CPATH (Linux* および macOS*)

インクルード・ファイルおよびモジュールファイルのパスを指定します。

GCCROOT (Linux*)

GCC バイナリーの場所を指定します。-gcc-name オプションを使用する際に、コンパイラーが GCC バイナリーの場所を特定できない場合にのみ、この変数を設定します。

GXX_INCLUDE (Linux*)

GCC ヘッダーの場所を指定します。-gcc-name=directory-name/gcc または -gxx-name=directory-name/g++ で指定された必要な値をコンパイラーが見つけられない場合、この変数を設定して、GCC ファイルの場所を指定します。

GXX_ROOT (Linux*)

GCC バイナリーの場所を指定します。-gcc-name=directory-name/gcc または -gxx-name=directory-name/g++ で指定された必要な値をコンパイラーが見つけられない場合、この変数を設定して、GCC ファイルの場所を指定します。

LIBRARY_PATH (Linux* および macOS*)

リンクフェーズで使用するライブラリーのパスを指定します。

INTEL_ROOT はインテル® コンパイラー向けに予約されている環境変数です。その使用はサポートされていません。

コンパイラーのランタイム環境変数

インテル® Fortran コンパイラーのランタイムシステムは、いくつかの環境変数を認識します。これらの変数は、ランタイム診断のエラー報告をカスタマイズしたり、特定の状況下でプログラムを続行させたり、特定のダイアログボックスを非表示にしたり、Just-in-Time デバッグを実行するために使用できます。

ファイル I/O に関連する環境変数は、ファイルを開くときに解釈されます。ほかの変数は、プログラムの開始時に読み込まれます。

ランタイム環境変数の優先度は次のとおりです。

  1. OPEN キーワード

  2. 環境変数

  3. コマンドライン・オプション

ブール型の Fortran ランタイム環境変数は、次の表に示す値を使用して ON (有効) または OFF (無効) に設定できます。以下の規則は、OpenMP* (OMP_) およびその拡張 (KMP_)、または PGO の環境変数には適用されません。

ランタイム環境変数を ON または OFF に設定

非ゼロの数値のみの整数は環境変数を ON に設定します。

1

4938493848

t または Ty または Y で始まる文字列は環境変数を ON に設定します。

文字列の前に引用符やスペースを含めることはできません。" T"' YES' は、スペースと引用符が文字と見なされるため、環境変数は ON になりません。

T

t

TRUE

TFALSE

Y

y

yes

yeti

ON に設定するもの以外はすべて環境変数を OFF に設定します。

0

-1

+1

<値なし>

次の表は、実行時に認識されるコンパイラーの環境変数をまとめたものです。

ランタイム環境変数

説明

F_UFMTENDIAN

この変数は、リトルエンディアンからビッグエンディアンへの変換に使用されるユニット数を指定します。「環境変数 F_UFMTENDIAN を使用する方法」を参照してください。

変数は、最初のユニットを開くときに一度取得され、その後は開くたびに確認されます。

FOR_COARRAY_CONFIG_FILE (Windows* および Linux*)

この変数は、実行時に使用する Co-Array の設定ファイルとパスを指定します。実行時に、[Q]coarray-config-file=value 修飾子で指定された値を上書きします。

FOR_COARRAY_DEBUG_STARTUP (Windows* および Linux*)

ブール値。

TRUE に設定すると、Co-Array の並列サポートを開始するメッセージ・パッシング・インターフェイス (MPI) ランチャーコマンドを表示するように Fortran ランタイム・ライブラリーに指示します。

FOR_COARRAY_MPI_VERBOSE (Windows* および Linux*)

ブール値。

TRUE に設定すると、MPI がステータスおよびアクティビティー・メッセージを出力するように、'-verbose' 修飾子を Co-Array 実装の MPI サポートに渡すように Fortran ランタイム・ライブラリーに指示します。

FOR_COARRAY_NUM_IMAGES (Windows* および Linux*)

この変数は、Co-Array で作成されるイメージの数を指定します。実行時に、[Q]coarray-num-images=value 修飾子で指定された値を上書きします。どちらも指定しない場合は、論理プロセッサー数が使用されます。

FOR_DUMP_CORE_FILE

ブール値。

この変数は、Linux* では小文字で表す必要があります。

TRUE に設定すると、致命的なインテル® Fortran ランタイムエラーが発生した際に、コアダンプを行います。

デフォルト: FALSE

decfort_dump_flag は、FOR_DUMP_CORE_FILE の代替形式です。

FOR_FASTMEM_NORETRY

ブール値。

TRUE に設定すると、libmemkind ライブラリーが実行ファイルにリンクされていないか、ノードで HBW が利用できないため、FASTMEM 割り当てに失敗した場合、ランタイムが STAT= または ERRMSG= メッセージ、あるいはプログラムをアボートして適切なエラーメッセージを返すことで失敗をユーザーに通知するように指定します。

この変数は、プログラムの初期化時に一度取得され、FASTMEM メモリー割り当てを行うたびに確認されます。

デフォルト: TRUE

FOR_FASTMEM_RETRY

ブール値。

TRUE に設定すると、libmemkind ライブラリーが実行ファイルにリンクされていないか、ノードで HBW が利用できないため、FASTMEM 割り当てに失敗した場合、プラットフォームのデフォルトのメモリー・アロケーターからメモリーを割り当てるように指示します。

この変数は、プログラムの初期化時に一度取得され、FASTMEM メモリー割り当てを行うたびに確認されます。

デフォルト: FALSE

FOR_FASTMEM_RETRY_WARN

ブール値。

TRUE に設定すると、libmemkind ライブラリーが実行ファイルにリンクされていないか、ノードで HBW が利用できないため、FASTMEM 割り当てに失敗した場合、stdout に警告を出力し、プラットフォームのデフォルトのメモリー・アロケーターからメモリーを割り当てるように指示します。

この変数は、プログラムの初期化時に一度取得され、FASTMEM メモリー割り当てを行うたびに確認されます。

デフォルト: FALSE

FOR_FMT_TERMINATOR

この変数は、特定のレコード区切り文字を持つユニット数を指定できます。「レコード型」を参照してください。

変数は、最初のユニットを開くときに一度取得され、その後は開くたびに確認されます。

FORT_FMT_NO_WRAP_MARGIN

ブール値。

TRUE に設定すると、レコードが 80 文字を超えている場合、Fortran リスト指定出力で列の折り返しを無効にします。

この環境変数は、列の折り返しを無効にするだけです。右マージンの値を設定できる環境変数はありません。RECL= 指定子を使用して、ユニットを開くときに右マージンを設定できます。

デフォルト: FALSE (列を折り返します)

FOR_ACCEPT

ACCEPT 文では明示的な論理ユニット番号は指定されません。その代わりに、ACCEPT 文は暗黙の内部的な論理ユニット番号と FOR_ACCEPT 環境変数を使用します。FOR_ACCEPT が定義されていなければACCEPT f,iolist というコードは標準入力から読み取ります。FOR_ACCEPT が (オプションとしてパスを含むファイル名として) 定義されていれば、指定されたファイルが読み取られます。

FOR_DEBUGGER_IS_PRESENT

ブール値。

TRUE に設定すると、デバッガーでプログラムを実行していることを Fortran ランタイム・ライブラリーに通知し、致命的なエラーや継続可能なエラーが検出された際にデバッグ例外を生成します。

通常、Windows* システムでは、オペレーティング・システムからこの変数を抽出できます。

利便性を向上する機能

Windows* でユーザーがこの環境変数を TRUE 値 (1 など) に設定して、ユーザーのプログラムが ERROR STOP 文を実行すると、Windows* システム関数 __debugbreak が呼び出され、Windows* デバッガーが表示されます (実際に存在する場合)。

ユーザーは、デバッガーを使用してアプリケーションの状態を確認できます。任意の step または continue コマンドを実行すると、ERROR STOP プロセスが続行され、アプリケーションが終了します。

Linux* および macOS* システムでデバッグ例外を有効にするには、この変数を設定する必要があります。デバッガーでプログラムを実行していない場合にこの変数を TRUE に設定すると、予期しない動作が発生します。

デフォルト: FALSE

FOR_DEFAULT_PRINT_DEVICE (Windows*)

この変数は、DISPOSE='PRINT' 指定子 (CLOSE 文) で閉じられたファイルに対して、デフォルトの印刷デバイス PRN (LPT1) 以外の印刷デバイスを指定します。CLOSE 文の DISPOSE='PRINT' 指定子に関連付けられたファイルに対して別の印刷デバイスを指定するには、プログラムを実行する前に FOR_DEFAULT_PRINT_DEVICE を任意の使用可能なスプール印刷デバイスに設定してください。

OPEN: DISPOSE 指定子の PRINT 設定にも使用できます。

FOR_DIAGNOSTIC_LOG_FILE

ファイル名を設定すると、指定したファイルに診断出力を書き込みます。

Fortran ランタイムシステムは、そのファイルを開き (アペンド出力)、ファイルにエラー情報 (ASCII テキスト) を書き出そうと試みます。

FOR_DIAGNOSTIC_LOG_FILE の設定は FOR_DISABLE_DIAGNOSTIC_DISPLAY からは独立しているため、画面上での情報の表示を無効にすると同時に、エラー情報をファイルに収集することができます。ファイル名として割り当てたテキスト文字列はそのままの形で使用されるので、完全な名前を指定する必要があります。ファイルを開くことに失敗すると、エラーは報告されず、ランタイムシステムは診断処理を続行します。

「ランタイムエラーの場所を特定する方法」および「トレースバック」も参照してください。

FOR_DISABLE_DIAGNOSTIC_DISPLAY

ブール値。

TRUE に設定すると、すべてのエラー情報を非表示にします。この変数は、プログラムのエラー状態をテストすることだけが目的で、Fortran のランタイムシステムにプログラムの異常終了に関する情報は表示させたくない場合に便利です。

「トレースバック」も参照してください。

FOR_DISABLE_KMP_MALLOC

ブール値。

TRUE に設定すると、Fortran ALLOCATE 文を glibc malloc に強制的に解決します。

デフォルト: FALSE

FOR_FORCE_STACK_TRACE

ブール値。

TRUE に設定すると、ランタイム診断メッセージに続いてトレースバックを行います。

FOR_DISABLE_STACK_TRACE を同時に設定すると、FOR_FORCE_STACK_TRACEFOR_DISABLE_STACK_TRACE よりも優先されます。

デフォルト: FALSE

FOR_DISABLE_STACK_TRACE

ブール値。

TRUE に設定すると、致命的なエラー・メッセージ・テキストの表示の後に続くコール・スタック・トレース情報が表示されなくなります。

Fortran のランタイム・エラー・メッセージは、FOR_DISABLE_STACK_TRACE が TRUE に設定されているかどうかにかかわらず表示されます。デバッガーでプログラムを実行している場合、Fortran ライブラリーによるスタックトレース情報の自動出力は、ノイズを減らすために無効にされます。スタックトレースを表示するには、デバッガーのスタックトレース機能を使用します。

デフォルト: FALSE

「ランタイムエラーの場所を特定する方法」および「トレースバック」も参照してください。

FOR_IGNORE_EXCEPTIONS

ブール値。

TRUE に設定すると、「Just-in Time」デバッグの許可といったデフォルトのランタイム例外処理が無効になります。ランタイムシステムの例外ハンドラーは、オペレーティング・システムに対して EXCEPTION_CONTINUE_SEARCH を返し、オペレーティング・システムは、この例外を処理する他のハンドラーを探します。

デフォルト: FALSE

FOR_NOERROR_DIALOGS

ブール値。

TRUE に設定すると、特定の例外またはエラーの発生時に、ダイアログボックスの表示を無効にします。これは、実行の失敗によりテストストリーム全体が停止することを防ぐために、多数のテストプログラムをバッチモードで実行する場合に便利です。

デフォルト: FALSE

FOR_PRINT

PRINT 文でも WRITE 文でも論理ユニット番号の代わりにアスタリスク (*) を指定すると、明示的な論理ユニット番号は使用されません。その代わりに、どちらの文でも暗黙の内部論理ユニット番号と FOR_PRINT 環境変数が使用されます。FOR_PRINT が定義されていなければPRINT f,iolist または WRITE (*,f) iolist というコードは、標準出力に書き込みます。FOR_PRINT が (オプションとしてパスを含むファイル名として) 定義されていれば、指定されたファイルが読み取られます。

FOR_READ

READ 文で、ユニット番号の代わりにアスタリスク (*) を指定する場合、明示的な論理ユニット番号は使用されません。その代わりに、暗黙の内部論理ユニット番号と FOR_READ 環境変数が使用されます。FOR_READ が定義されていなければREAD (*,f) iolist または READ f,iolist というコードは標準入力から読み取ります。FOR_READ が (オプションとしてパスを含むファイル名として) 定義されていれば、指定されたファイルが読み取られます。

FOR_TYPE

TYPE 文では明示的な論理ユニット番号は指定されません。その代わりに、暗黙の内部論理ユニット番号と FOR_TYPE 環境変数が使用されます。FOR_TYPE が定義されていなければTYPE f,iolist というコードは標準出力に書き込みます。FOR_TYPE が (オプションとしてパスを含むファイル名として) 定義されていれば、指定されたファイルが読み取られます。

FORT_BLOCKSIZE

OPEN 文で BLOCKSIZE= が省略されている場合は、デフォルトの BLOCKSIZE 値を使用するように指定します。有効な値は、0 から 2147467264 です。サイズは、次の 512 バイト境界まで丸められます。

この変数は、常にバッファーされない stderr を除く、すべての Fortran I/O ユニットに適用されます。

この変数は、プログラムの初期化時に一度取得され、ユニットを開くたびに確認されます。

FORT_BUFFERCOUNT

OPEN 文で BUFFERCOUNT= が省略されている場合は、デフォルトの BUFFERCOUNT 値を使用するように指定します。有効な値は、0 から 127 です。0 に設定すると、デフォルト値の 1 が使用されます。

この変数は、stdout (ユニット *6) および stderr を除く、すべての Fortran I/O ユニットに適用されます。

この変数は、プログラムの初期化時に一度取得され、ユニットを開くたびに確認されます。

FORT_BUFFERED

ブール値。

TRUE に設定すると、stdout (ユニット *6) を除いて、すべての Fortran I/O ユニットの入出力には、ランタイム時にバッファー I/O を使用するように指定します。stderr への出力は常にバッファーされません。

デフォルト: FALSE

FORT_BUFFERING_THRESHOLD=n

書式なしシーケンシャル READ 操作で動的バッファリングを行うように指定します。

  • I/O リスト項目のうちサイズが <=n のものはバッファーに格納され、バッファーから I/O リスト項目へ 1 つずつ移動されます。
  • I/O リスト項目のうちサイズが >n のものはバッファーに格納せず、ファイルから I/O リスト項目へ 1 つずつ移動されます。

FORT_CONVERTn

「データ書式の指定方法」で説明されているように、特定のユニット番号 (n) に関連付けられた書式なしファイルのデータ書式を指定することができます。

FORT_CONVERT.ext および FORT_CONVERT_ext

「データ書式の指定方法」で説明されているように、特定のファイル拡張子サフィックス (.ext) を持つ書式なしファイルに対して、データ書式を指定することができます。

FORT_FMT_RECL

書式付きファイルのデフォルトのレコード長 (通常は 132 バイト) を指定します。

この変数は、プログラムの初期化時に一度取得され、ユニットを開くたびに確認されます。

FORT_UFMT_RECL

書式なしファイルのデフォルトのレコード長 (通常は 2040 バイト) を指定します。

この変数は、プログラムの初期化時に一度取得され、ユニットを開くたびに確認されます。

FORTn

OPEN 文でファイル名が指定されていないか暗黙の OPEN が使用され、fpscomp コンパイラー・オプションが filesfromcmd キーワードで指定されていない場合、特定のユニット番号 n に使用するファイル名を指定します。デフォルトでは、ユニット番号 0、5、および 6 に事前に接続されているファイルは、システムの標準 I/O ファイルに関連付けられます。

INTEL_CHKP_REPORT_MODE (Linux*)

実行時にポインターチェッカーのレポートモードを変更します。

INTEL_ISA_DISABLE

CPUID がオンボードであるとレポートした場合でも、名前付き機能 (カンマ区切りリスト) がホストに表示されないようにします。

NLSPATH (Linux* および macOS*)

インテル® Fortran のランタイム・エラー・メッセージ・カタログのパスを指定します。

TBK_ENABLE_VERBOSE_STACK_TRACE

ブール値。

TRUE に設定すると、エラー発生時に、トレースバック出力は詳細なコールスタック情報を表示します。

通常は、デフォルトの簡単な出力だけで、エラーの発生場所を特定することができます。この簡単な出力は、スタックフレーム 1 つにつき 1 行で、20 個までのスタックフレームが含まれます。各フレームについて、実行ファイルの名前に続き、PC、ルーチン名、行番号、およびソースファイルが表示されます。

詳細出力を選択すると、簡単な出力で表示される情報に加えて、エラーが機械語例外だった場合には例外コンテキスト・レコードが表示され (マシン・レジスター・ダンプ)、個々のフレームについてリターンアドレス、フレームポインター、スタックポインター、およびルーチンに対するパラメーター (存在する場合) が表示されます。この出力はかなり長くなることがあるため (16K バイトに制限されます)、出力を正確に記録したい場合には環境変数 FOR_DIAGNOSTIC_LOG_FILE を使用することを推奨します。多くの場合、詳細出力を使用する必要はありません。

デフォルト: FALSE

「ランタイムエラーの場所を特定する方法」および「トレースバック」も参照してください。

TBK_FULL_SRC_FILE_SPEC

ブール値。

TRUE に設定すると、トレースバック出力はパスを含む完全なファイル名情報を表示します。デフォルトでは、トレースバック出力は、ソースファイル・フィールドにファイル名と拡張子しか表示しません。

デフォルト: FALSE

「ランタイムエラーの場所を特定する方法」および「トレースバック」も参照してください。

FORT_TMPDIR

TMP

TMPDIR

TEMP

スクラッチファイルの作成場所に、代わりの作業ディレクトリーを指定します。

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* および macOS*)、および Qparallel (Windows*) または parallel (Linux* および macOS*) オプションに適用されます。

デフォルト: プログラムを実行するオペレーティング・システムで現在認識されているプロセッサー数

構文: 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"

以下の抽象名は、実行環境とランタイム環境で認識されます。

  • threads: それぞれの場所は、ターゲットマシン上の 1 つのハードウェア・スレッドに対応します。
  • cores: それぞれの場所は、ターゲットマシン上の 1 つのコア (1 つ以上のハードウェア・スレッドを持つ) に対応します。
  • ll_caches: それぞれの場所は、デバイスの最終レベルのキャッシュを共有するコアのセットに対応しています。
  • numa_domains: それぞれの場所は、デバイス上で最も近いメモリーが 1) 同じメモリーで、2) コアから同じような距離にあるコアのセットに対応します。
  • sockets: それぞれの場所は、ターゲットマシン上の 1 つのソケット (1 つ以上のコアで構成される) に対応します。

システムで利用可能なプレースよりも少ないプレースを要求する場合や、システムで利用可能なリソースよりも多くのリソースを要求する場合、プレースリストに含まれる 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 を指定するのと同じです。

設定可能な値: TRUEFALSE、またはカンマ区切りのリスト (各要素の値は PRIMARYMASTER (古い非推奨の値)、CLOSE、または SPREAD のいずれか) です。

デフォルト: FALSE

FALSE に設定すると、実行環境は OpenMP* スレッドを OpenMP* 間で移動し、スレッド・アフィニティーは無効になり、並列構造の proc_bind は無視されます。false 以外に設定すると、実行環境は OpenMP* スレッドを OpenMP* 間で移動せず、スレッド・アフィニティーは有効になり、プライマリー・スレッドは OpenMP* プレースリストの最初の位置にバインドされます。

PRIMARY に設定すると、すべてのスレッドはプライマリー・スレッドと同じ場所にバインドされます。CLOSE に設定すると、スレッドは (プライマリー・スレッドがバインドされる場所に近い) 連続した場所にバインドされます。SPREAD に設定すると、プライマリー・スレッドのパーティションが分割され、スレッドは 1 つの場所の連続したサブパーティションにバインドされます。

KMP_AFFINITYGOMP_CPU_AFFINITYOMP_PROC_BIND よりも優先されます。GOMP_CPU_AFFINITYOMP_PROC_BIND よりも優先されます。

OMP_SCHEDULE

ランタイム・スケジュールの型とチャンクサイズ (オプション) を設定します。

デフォルト: static、チャンクサイズの指定なし

構文の例: OMP_SCHEDULE="[modifier:]kind[,chunk_size]"

  • modifiermonotonic または nonmonotonic のいずれか
  • kindstaticdynamicguided、または auto のいずれか
  • chunk_size は正の整数

一部の環境変数はインテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、インテル製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。

OMP_STACKSIZE

スレッドのプライベート・スタックとして使用する各 OpenMP* スレッドに割り当てるバイト数を設定します。推奨するサイズは 16M です。

B (バイト)、K (キロバイト)、M (メガバイト)、G (ギガバイト)、T (テラバイト) などオプションのサフィックスを使用してバイト単位を指定します。値のみを指定すると、バイト単位は K (キロバイト) であると見なされます。

この変数は、ユーザープログラムによって生成されるオペレーティング・システムのネイティブスレッド、OpenMP* プログラムのシーケンシャル部分を実行するスレッドまたは Qparallel (Windows*) または parallel (Linux* および macOS*) オプションを使用して作成された並列プログラムには影響ありません。

kmp_{set,get}_stacksize_s() ルーチンは値を設定/取得します。kmp_set_stacksize_s() ルーチンは、最初の並列領域が作成される前にシーケンシャル部分から呼び出される必要があります。この呼び出しが行われない場合、kmp_set_stacksize_s() を呼び出しても効果がありません。

デフォルト (IA-32 アーキテクチャー): 2M

デフォルト (インテル® 64 アーキテクチャー): 4M

macOS* での IA-32 アーキテクチャーのサポートは終了しました。その他のオペレーティング・システムでは 32 ビットは非推奨であり、将来のリリースで削除される予定です。

関連環境変数: KMP_STACKSIZE (OMP_STACKSIZE よりも優先されます)

構文: OMP_STACKSIZE=value

OMP_THREAD_LIMIT

OpenMP* プログラムで同時に実行されるスレッド数を制限します。

この制限に達し、オペレーティング・システムの別のネイティブスレッドが OpenMP* API コールや構造を検出すると、プログラムはエラーメッセージを表示してアボートします。OpenMP* 並列領域の開始時点でこの制限に達した場合は、チーム内のスレッド数が減少したことを示す警告メッセージが一度だけ生成されますが、プログラムの実行は続けられます。

この環境変数は、Qopenmp (Windows*) または qopenmp (Linux* および macOS*)、あるいは Qparallel (Windows*) または parallel (Linux* および macOS*) オプションを指定してコンパイルされたプログラムにのみ使用されます。

omp_get_thread_limit() ルーチンは制限値を返します。

デフォルト: 制限なし

関連環境変数: KMP_ALL_THREADS (OMP_THREAD_LIMIT よりも優先されます)

構文の例: OMP_THREAD_LIMIT=value

OMP_WAIT_POLICY

スレッドは待機中、スピンするか (active)、停止するか (passive) を決定します。

OMP_WAIT_POLICY=ACTIVEKMP_LIBRARY=turnaround のエイリアスで、OMP_WAIT_POLICY=PASSIVEKMP_LIBRARY=throughput のエイリアスです。

デフォルト: Passive

構文: OMP_WAIT_POLICY=value

OMP_DISPLAY_AFFINITY

最初の並列領域に入るとき、および OMP_AFFINITY_FORMAT に記載されている書式指定子でアクセス可能な情報に変更が生じたときに、並列領域内のすべての OpenMP* スレッドの書式付きアフィニティー情報を表示するようにランタイムに指示します。

設定可能な値: TRUE または FALSE

デフォルト: FALSE

OMP_AFFINITY_FORMAT

OpenMP* スレッド・アフィニティー情報を表示する際の形式を定義します。設定可能な値は任意の文字列で、以下の形式フィールドを利用できます。

  • %t または %{team_num}: omp_get_team_num() の戻り値
  • %T または %{num_teams}: omp_get_num_teams() の戻り値
  • %L または %{nesting_level}: omp_get_level() の戻り値
  • %n または %{thread_num}: omp_get_thread_num() の戻り値
  • %a または %{ancestor_tnum}: omp_get_ancestor_thread_num(omp_get_level() – 1) の戻り値
  • %H または %{host}: ホストデバイス名
  • %P または %{process_id}: プロセス ID
  • %i または %{native_thread_id}: プラットフォーム上のネイティブスレッド ID
  • %A または %{thread_affinity}: スレッドが実行可能なプロセッサー ID のリスト

デフォルト: '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: 登録のログを出力しません。
  • STDOUT: 登録のログを stdout に出力します。
  • STDERR: 登録のログを stderr に出力します。
  • File_Name: 登録のログを File_Name で指定された場所に出力します。

デフォルト: DISABLED

ホストの OpenMP* ランタイムのみサポートされます。

OMP_DEBUG

ツールをサポートするために OMPD ライブラリーが必要な情報を OpenMP* ランタイムが収集するかどうかを制御します。

設定可能な値: ENABLED または DISABLED

デフォルト: DISABLED

ホストの OpenMP* ランタイムのみサポートされます。

OMP_ALLOCATOR

アロケーターを指定しない割り当ての呼び出し、ディレクティブ、および節のデフォルトのアロケーターを指定します。

デフォルト: omp_default_mem_alloc

構文: <PredefinedMemAllocator> | <PredefinedMemSpace> | <PredefinedMemSpace>:<Traits>

<PredefinedMemAllocator> と <PredefinedMemSpace> で現在サポートされている値:

  • omp_default_mem_allocomp_default_mem_space

libmemkind が利用可能でサポートするシステムがある場合にサポートされる追加の値:

  • omp_high_bw_mem_allocomp_high_bw_mem_space
  • omp_large_cap_mem_allocomp_large_cap_mem_space

詳細は、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* および macOS*) オプションを指定してコンパイルされたプログラムにのみ使用されます。

デフォルト: 制限なし

KMP_BLOCKTIME

並列領域の実行が終了した後、スレッドがスリープ状態になるまでスレッドが待機する時間 (ミリ秒単位) を設定します。

s (秒)、m (分)、h (時間)、d (日) などのサフィックスを使用して単位を指定します。

待機時間に制限を設けない場合は infinite を指定します。

デフォルト: 200 ミリ秒

関連環境変数: KMP_LIBRARY

KMP_CPUINFO_FILE

マシントポロジーの記述を含むファイルの代替名を指定します。このファイルは、/proc/cpuinfo と同じ形式でなければなりません。

デフォルト: なし

KMP_DETERMINISTIC_REDUCTION

OpenMP* 並列領域で reduction 節を実装するため、リダクション操作において特定の処理順序の使用を有効 (TRUE) または無効 (FALSE) にします。これにより、指定されたスレッド数、指定された並列領域、指定されたデータセットとリダクション操作に対して、OpenMP* の reduction 節で実行される浮動小数点リダクション操作の丸め誤差は常に同じとなり、一貫性のある浮動小数点結果が得られます。

正しい動作を保証するため、コンパイル時に次のオプションを設定する必要があります。
  • -fp-model precise (Linux*)
  • -fp:precise (Windows*)

デフォルト: FALSE

KMP_DYNAMIC_MODE

OMP_DYNAMIC=TRUE の場合に、並列領域に使用されるスレッド数を決定するメソッドを選択します。設定可能な値は次のとおりです (asat | load_balance | thread_limit)。

  • asat: 並列開始時にスレッド数を推定します。

    asat (自動自己割り当てスレッド) のサポートは終了しました。将来のリリースでは削除される予定です。

  • load_balance: システムで利用可能な実行ユニットより多いスレッドを使用しないようにします。

  • thread_limit: システムの合計実行ユニットより多いスレッドを使用しないようにします。

デフォルト (IA-32 アーキテクチャー): load_balance (サポートされているすべての OS)

デフォルト (インテル® 64 アーキテクチャー): load_balance (サポートされているすべての OS)

macOS* での IA-32 アーキテクチャーのサポートは終了しました。その他のオペレーティング・システムでは 32 ビットは非推奨であり、将来のリリースで削除される予定です。

KMP_HOT_TEAMS_MAX_LEVEL

ホットチームの入れ子構造の最大レベルを設定します。

ホットチームとは、後続の並列領域で素早く再利用できるように最適化されたスレッドチームです。ホットチームでは、次の並列領域を実行できるようにスレッドが保持されます。一方、コールドチームでは、各並列領域の完了後、スレッドは解放され共通のスレッドプールに配置されます。

値が 2 以上の場合、入れ子構造の並列処理を有効にする必要があります。

デフォルト: 1

KMP_HOT_TEAMS_MODE

ホットチームのスレッド数が減らされた場合のランタイムの動作を指定します。

値は以下のいずれかになります。

  • 0: 余分なスレッドを解放して共通のスレッドプールに戻します。

  • 1: 後続の並列領域で素早く利用できるように余分なスレッドを保持します。

デフォルト: 0

KMP_HW_SUBSET

ハードウェア・トポロジー階層に利用可能なハードウェア・リソースのサブセットを指定します。サブセットは、最上層から下に向かって、上層ユニットあたりのユニット数で指定されます。例えば、複雑で明示的なアフィニティー設定や制限プロセス・アフィニティー・マスクを記述する代わりに、OpenMP* アプリケーションで使用するソケット数 (最上層ユニット)、ソケットあたりのコア数、コアあたりのスレッド数を指定します。使用するリソースを設定するオフセット値を指定することもできます。利用可能な場合、リソースの異なるサブセットを選択するため属性を指定することができます。

KMP_TOPOLOGY_METHOD=hwloc の場合、拡張構文を利用できます。検出されたリソースに応じて、NUMA ノードや特定のキャッシュレベルを共有するハードウェア・リソースのグループなどの追加リソースを指定できます。

基本構文:

num_unitsID[@offset][:attribute] [,num_unitsID[@offset][:attribute]...]

サポートされているユニット ID では大文字と小文字は区別されません。

S - ソケット
num_units は、要求されるソケット数を指定します。
D - ダイ
num_units は、ソケットあたりの要求されるダイ数を指定します。
C - コア
num_units は、ダイあたりの要求されるコア数を指定します (存在する場合)。それ以外の場合はソケットあたりの要求されるコア数を指定します。
T - スレッド
num_units は、コアあたりの要求されるハードウェア・スレッド数を指定します。
offset
(オプション) スキップするユニット数。
attribute
(オプション) 特定のレベルのリソースを区別する属性。インテル® ハイブリッド・テクノロジーが有効なマシンのコアレベルでのみ利用できます。利用可能な属性は次のとおりです。
  • コアの種類: intel_atom または intel_core
  • コア効率: effnum として指定されます。num は、0 から (マシントポロジーで検出されたコア効率の数 - 1) の範囲です。例: eff0。効率が大きいほど、ハイパフォーマンスなコアとなります。コアの種類よりもコア効率が大きくなる場合があります。KMP_AFFINITY=verbose に設定して確認できます。

ハードウェア・キャッシュは、ユニットとして指定できます (例えば、L2 キャッシュの場合は L2、最終レベルキャッシュの場合は LL)。

拡張構文 (KMP_TOPOLOGY_METHOD=hwloc の場合):

検出された場合は、追加の ID を指定できます。次に例を示します。

N - NUMA
num_units は、上層ユニットあたり (例えば、ソケットあたり) の要求される NUMA ノードの数を指定します。
TI - タイル
num_units は、上層ユニットあたり (例えば、NUMA ノードあたり) の要求されるタイル数を指定します。

KMP_HW_SUBSETnuma または tile ユニットが指定されている場合、KMP_TOPOLOGY_METHOD は自動的に hwloc に設定されるため、明示的に設定する必要はありません。

sockets や threads など、1 つ以上のリソースの種類を指定しない場合、利用可能なすべてのリソースが使用されます。

次の場合、ランタイム・ライブラリーは警告を出力し、KMP_HW_SUBSET の設定は無視されます。

  • 選択したトポロジー検出手法でサポートされないリソースが指定された場合
  • リソースが 2 回指定された場合 (属性がリソースを区別する場合は除く)
  • 利用できない、マシントポロジーで検出されない、または競合するため、属性が使用される場合

OpenMP* アフィニティーが disabled に設定されている場合、この変数は効果がありません。

デフォルト: 省略すると、デフォルトで利用可能なすべてのハードウェア・リソースを使用します。

例:

  • 2s,4c,2t: 最初の 2 つのソケット (s0 と s1)、各ソケットで最初の 4 つのコア (c0-c3)、コアあたり 2 スレッドを使用します。

  • 2s@2,4c@8,2t: 最初の 2 つのソケット (s0 と s1) をスキップし 2 つのソケットを使用し、各ソケットで最初の 8 つのコア (c0-c7) をスキップし 4 つのコア (c8-c11) を使用し、コアあたり 2 スレッドを使用します。

  • 5C@1,3T: 利用可能なすべてのソケットを使用し、最初のコアをスキップし 5 つのコアを使用し、コアあたり 3 スレッドを使用します。

  • 1T: すべてのソケットですべてのコアを使用し、コアあたり 1 スレッドを使用します。

  • 1s, 1d, 1n, 1c, 1t: 1 ソケット、1 ダイ、1 NUMA ノード、1 コア、1 スレッドを使用します。結果としてハードウェア・スレッドを使用します。

  • 4c:intel_atom,5c:intel_core: 利用可能なすべてのソケットを使用し、1 ソケットあたり 4 つの Intel Atom® プロセッサー・コアと 5 つのインテル® Core™ プロセッサー・コアを使用します。

  • 2c:eff0,3c:eff1: 利用可能なすべてのソケットを使用し、1 ソケットあたり効率 0 で 2 コアと効率 1 で 3 コアを使用します。

  • 1s, 1c, 1t: 1 ソケット、1 コア、1 スレッドを使用します。3 層トポロジー・アーキテクチャーでシングルスレッドが使用されるか、4 層または 5 層アーキテクチャーで複数のスレッドが使用される可能性があります。hwloc は、OpenMP* ランタイム・ライブラリーで使用されるデフォルトの方法よりも多くのトポロジー層を検出できることが多いため、指定された KMP_TOPOLOGY_METHOD によっては、同じアーキテクチャーで結果が異なる場合があります。

設定の結果を確認するには、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 に出力します。

  • Info #191: KMP_AFFINITY: 1 socket x 4 NUMA domains/socket x 8 tiles/NUMA domain x 2 cores/tile x 4 threads/core.(64 total cores)
  • Info #191: KMP_HW_SUBSET 1 socket x 1 NUMA domain/socket x 1 tile/NUMA domain x 1 core/tile x 1 thread/core (1 total cores)

KMP_INHERIT_FP_CONTROL

各並列領域の開始時点で、プライマリー・スレッドの浮動小数点の制御設定を OpenMP* ワーカースレッドへコピーすることを有効 (TRUE) または無効 (FALSE) にします。

デフォルト: TRUE

KMP_LIBRARY

OpenMP* ランタイム・ライブラリーの実行モードを選択します。この変数の値は、serialturnaround、または 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 (キロバイト) であると見なされます。

この変数は、ユーザープログラムによって生成されるオペレーティング・システムのネイティブスレッド、OpenMP* プログラムのシーケンシャル部分を実行するスレッド、または Qparallel (Windows*) または parallel (Linux* および macOS*) オプションを使用して作成された並列プログラムには影響ありません。

KMP_STACKSIZEGOMP_STACKSIZE (OMP_STACKSIZE よりも優先) よりも優先されます。

デフォルト (IA-32 アーキテクチャー): 2m

デフォルト (インテル® 64 アーキテクチャー): 4m

macOS* での IA-32 アーキテクチャーのサポートは終了しました。その他のオペレーティング・システムでは 32 ビットは非推奨であり、将来のリリースで削除される予定です。

KMP_TOPOLOGY_METHOD

OpenMP* が特定のマシン・トポロジー・モデル・メソッドを使用するように強制します。

設定可能な値は以下のとおりです。

  • all

    OpenMP* がプラットフォームとその他の環境変数の設定に基づいて最適なトポロジーメソッドを選択します。

  • cpuid_leaf11

    cpuid 命令のリーフ 11 により指定された APIC ID をデコードします。

  • cpuid_leaf4

    cpuid 命令のリーフ 4 により指定された APIC ID をデコードします。

  • cpuinfo

    KMP_CPUINFO_FILE を指定しない場合は、/proc/cpuinfo を解析してトポロジーを特定するように強制できます (Linux* のみ)。

    前述のように、KMP_CPUINFO_FILE を指定する場合は、それを使用します (Windows* または Linux*)。

  • group

    2 レベルのマップ (レベル 0 はグループ内の異なるプロセッサーを指定、レベル 1 は異なるグループを指定) として判断します (64 ビットの Windows* のみ)。

    group のサポートは非推奨になり、将来のリリースで削除される予定です。代わりに all を使用してください。

  • flat

    プロセッサーの flat (線形) リストとして判断します。

  • hwloc

    Portable Hardware Locality (hwloc) ライブラリーと同様に判断します。最も詳細なモデルで、NUMA ノード、パッケージ、コア、ハードウェア・スレッド、キャッシュ、Windows* プロセッサー・グループなどを含みます。

デフォルト: 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)

この機能は ifx でのみ利用できます。

OMP_TARGET_OFFLOAD

ターゲット領域をオフロードする際のプログラムの動作を制御します。

値は以下のいずれかになります。

  • MANDATORY

    デバイス構文またはデバイス・メモリー・ルーチンに遭遇し、デバイスが利用できないか、またはサポートされていない場合、プログラムの実行は終了されます。

  • DISABLED

    デバイスへのターゲットオフロードを無効にして、ホストで実行します。

  • DEFAULT

    デバイスが利用可能でサポートされている場合はターゲットオフロードを有効にします。

デフォルト: DEFAULT

LIBOMPTARGET_DEBUG

オフロードランタイムからデバッグ情報を表示するかどうかを制御します。

値は以下のいずれかになります。

  • 0

    無効になります。

  • 1

    デバイス検出、カーネルコンパイル、メモリーコピー操作、カーネル呼び出し、その他プラグインに依存するアクションなどの基本的なデバッグ情報を表示します。

  • 2

    1 で表示される情報に加えて、呼び出された GPU ランタイム API 関数と引数/パラメーターが表示されます。

デフォルト: 0

LIBOMPTARGET_INFO

オフロードランタイムから基本的なオフロード情報を表示するかどうかを制御します。

値は以下のいずれかになります。

  • 0

    無効になります。

  • 1

    OpenMP* デバイスカーネルに入るときにすべてのデータ引数を出力します。

  • 2

    デバイス・マッピング・テーブルにマップされたアドレスがすでに存在する場合は示します。

  • 4

    ターゲットオフロードに失敗した場合、デバイス・ポインター・マップの内容をダンプします。

  • 8

    デバイス・マッピング・テーブルのエントリーが変更された場合は示します。

  • 32

    デバイスとの間でデータがコピーされた場合は示します。

デフォルト: 0

LIBOMPTARGET_PLUGIN

ターゲット領域のオフロードに使用するオフロードプラグインを指定します。

値は以下のいずれかになります。

  • LEVEL_ZERO | LEVEL0 | level_zero | level0

    レベルゼロ・オフロード・プラグインを使用します。

  • OPENCL | opencl

    OpenCL* オフロードプラグインを使用します。

  • X86_64 | x86_64

    X86_64 プラグインを使用します。

デフォルト: LEVEL_ZERO

LIBOMPTARGET_DEVICETYPE

ターゲット領域をオフロードするデバイスタイプを選択します。

値は以下のいずれかになります。

  • GPU | gpu

    GPU デバイスが使用されます。

  • CPU | cpu

    CPU デバイスが使用されます。

デバイスタイプのオフロード・プラグイン・サポート:

  • レベルゼロ・オフロード・プラグインは GPU タイプのみサポートします。

  • OpenCL* オフロードプラグインは GPUCPU の両方のタイプをサポートします。

  • X86_64 オフロードプラグインはこの変数を無視します。

デフォルト: GPU

LIBOMPTARGET_PLUGIN_PROFILE

プラグインの基本的なプロファイルを有効にし、プログラム終了時にその結果を表示します。

デフォルト: Disabled

構文: <Value>[,usec], where <Value>=1 | T | t

報告される時間の単位は、「,usec」が追加されている場合はマイクロ秒、そうでない場合はミリ秒です。

LIBOMPTARGET_DYNAMIC_MEMORY_SIZE

デバイス上の malloc 呼び出しを処理するための事前割り当てメモリーのサイズを MB 単位で設定します。

現在、デバイス上のメモリーを解放するための呼び出しは、メモリーを解放しません。すべての割り当てメモリーは、プログラムの終了時にのみ解放されます。

設定可能な値: 負ではない整数

デフォルト: 0

レベルゼロ・オフロード・プラグイン用の OpenMP* オフロード環境変数

この機能は ifx でのみ利用できます。

LIBOMPTARGET_LEVEL0_COMPILATION_OPTIONS

ターゲットプログラムのネイティブバイナリーをビルドする際に追加のビルドオプションを渡します。

設定可能な値: 有効なレベルゼロ・ビルド・オプション

LIBOMPTARGET_DEVICES

デバイスがサブデバイスをサポートしている場合、サブデバイスまたはサブサブデバイスのユーザーへの公開方法を制御します。

値は以下のいずれかになります。

  • DEVICE | device

    トップレベルのデバイスのみ OpenMP* デバイスとして報告され、subdevice 節はサポートされます。

  • SUBDEVICE | subdevice

    第 1 レベルのデバイスのみ OpenMP* デバイスとして報告され、subdevice 節はサポートされます。

  • SUBSUBDEVICE | subsubdevice

    第 2 レベルのデバイスのみ OpenMP* デバイスとして報告され、subdevice 節はサポートされます。

  • ALL | all

    すべてのデバイスとサブデバイスが OpenMP* デバイスとして報告され、subdevice 節は無視されます。

デフォルト: DEVICE

LIBOMPTARGET_LEVEL0_MEMORY_POOL

メモリープールの設定を制御します。

値は以下のいずれかになります。

  • 0

    メモリープールの使用を無効にします。

  • <PoolInfoList>=<PoolInfo>[,<PoolInfoList>]

    <PoolInfo>=<MemType>[,<AllocMax>[,<Capacity>[,<PoolSize>]]]

    <MemType>=all | device | host | shared

    <AllocMax> は正の整数または空です。

    <Capacity> は正の整数または空です。

    <PoolSize> は正の整数または空です。

    <AllocMax> はプールでサポートされる最大割り当てサイズ (MB)、<Capacity> はレベルゼロランタイムから割り当てられる単一メモリーブロックでサポートされる割り当て数、<PoolSize> は最大合計プールサイズ (MB) を意味します。

例:

  • all,2,8,1024

    すべてのメモリータイプでメモリープールを有効にし、レベルゼロから割り当てられる単一ブロックから最大 8 個の 2MB ブロックを割り当て、合計 1GB のプールサイズが許容されます。

  • device,1,4,512

    device メモリータイプでのみメモリープールを有効にし、レベルゼロから割り当てられる単一ブロックから最大 4 個の 1MB ブロックを割り当て、合計 512MB のプールサイズが許容されます。

デフォルト: all,1,4,256

LIBOMPTARGET_LEVEL0_USE_COPY_ENGINE

メモリー転送にコピーエンジンを使用しないようにします。

値は以下のいずれかになります。

  • 0 | F | f

    コピーエンジンの使用を無効にします。

デフォルト: 有効

LIBOMPTARGET_LEVEL0_DEFAULT_TARGET_MEM

omp_target_alloc ルーチンによって返されるメモリータイプを選択します。

値は以下のいずれかになります。

  • DEVICE | device

    device タイプが返されます。デバイスがメモリーを所有し、データ移動は明示的に行われます。

  • SHARED | shared

    shared タイプが返されます。メモリーの所有権はホストとデバイスで共有され、データ移動は暗黙的に行われます。

  • HOST | host

    host タイプが返されます。ホストがメモリーを所有し、データ移動は暗黙的に行われます。

デフォルト: DEVICE

LIBOMPTARGET_LEVEL0_STAGING_BUFFER_SIZE

ホストとデバイス間のデータ転送で使用されるステージング・バッファー・サイズを KB 単位で設定します。

設定可能な値: 負でない整数。0 はステージング・バッファーの使用を無効にします。

デフォルト: 4

OpenCL* オフロードプラグイン用の OpenMP* オフロード環境変数

この機能は ifx でのみ利用できます。

LIBOMPTARGET_OPENCL_COMPILATION_OPTIONS

SPIR-V* ターゲットイメージからターゲットプログラムをコンパイルする際に、追加のコンパイルオプションを渡します。

設定可能な値: 有効な OpenCL* コンパイルオプション (英語)

LIBOMPTARGET_OPENCL_LINKING_OPTIONS

ターゲットプログラムをリンクする際に、追加のリンクオプションを渡します。

設定可能な値: 有効な OpenCL* リンクオプション (英語)

LIBOMPTARGET_OPENCL_USE_SVM

デフォルトのターゲット・メモリー・タイプに OpenCL* SVM メモリーを使用することを有効または無効にします。

値は以下のいずれかになります。

  • 1 | T | t

    OpenCL* SVM メモリーの使用を有効にします。

  • 0 | F | f

    OpenCL* SVM メモリーの使用を無効にします。

デフォルト: 無効

LIBOMPTARGET_OPENCL_DATA_TRANSFER_METHOD

使用するメモリー転送方法を選択します。This is only effective when OpenCL SVM memory is enabled by setting LIBOMPTARGET_OPENCL_USE_SVM.

値は以下のいずれかになります。

  • 0

    一時的な OpenCL* バッファーで clEnqueueReadWriteBuffer API を使用します。

  • 1

    clEnqueueSVMMapUnmap API を使用します。

  • 2

    clEnqueueSVMMemcpy API を使用します。

デフォルト: 1

プロファイルに基づく最適化 (PGO_) 環境変数

INTEL_PROF_DUMP_CUMULATIVE

インストルメント済みユーザー・アプリケーションの実行中に、インターバル・プロファイル・ダンプ (INTEL_PROF_DUMP_INTERVAL 関数または _PGOPTI_Set_Interval_Prof_Dump 関数により開始) を使用する際、プロファイル情報を含む複数の .dyn ファイルを作成する代わりに、1 つの .dyn ファイルを作成することができます。設定されていない場合は、インストルメント済みユーザー・アプリケーションを実行すると、それぞれのインターバルに対して新しい .dyn ファイルが作成されます。

この環境変数は、終了しないアプリケーションや、異常終了するアプリケーション (通常の終了コードを省略) に対して設定すると便利です。

INTEL_PROF_DUMP_INTERVAL

インストルメント済みのユーザー・アプリケーション内で、インターバル・プロファイルのダンプを開始します。この環境変数は、インストルメント済みのユーザー・アプリケーションでインターバル・プロファイル・ダンプに使用されることがあります。

INTEL_PROF_DYN_PREFIX

別の PGO 実行によってダンプされた .dyn ファイルと区別するため、.dyn ファイル名に追加するプリフィクスを指定します。インストルメント済みアプリケーションを実行すると、<prefix>_<timestamp>_<pid>.dyn という名前の .dyn ファイルが生成されます。<prefix> は指定した識別子です。

この環境変数で指定する値では、次の文字を使用できません: < > : " / \ | ? *。無効なプリフィクスを指定すると、デフォルトの命名規則が使用されます。

PROF_DIR

プロファイル・ファイル (拡張子が .dyn.dpi.spi などのファイル) を保存するディレクトリーを指定します。デフォルトでは、.dyn ファイルは、[Q]prof-gen オプションでコンパイルされたバイナリーにある最初に実行されたインストルメント済みルーチンを含むファイルのソース・ディレクトリーに保存されます。

この変数は、プロファイル処理の 3 つのフェーズすべてに適用されます。

  • インストルメンテーション・コンパイルとリンク

  • インストルメント済みプログラムの実行

  • フィードバック・コンパイル

PROF_DPI

.dpi ファイルの名前です。

デフォルト: pgopti.dpi

PROF_DUMP_INTERVAL

これは古いオプション (非推奨) です。INTEL_PROF_DUMP_INTERVAL を使用してください。

PROF_NO_CLOBBER

フィードバック・コンパイル・フェーズでの処理を少し変更する変数です。デフォルトでは、フィードバック・コンパイル・フェーズでは、すべての動的情報ファイルから得たデータがマージされます。そして .dyn ファイルが既存の pgopti.dpi ファイルよりも新しい場合は、pgopti.dpi ファイルを上書きします。

この変数を設定すると、コンパイラーは既存の pgopti.dpi ファイルを上書きせずに、警告を発行します。新しい動的情報ファイルを使用するには、既存の pgopti.dpi ファイルを削除する必要があります。

次の表は、実行時に認識される 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 コンパイル時間の増加につながる可能性がありますが、パフォーマンスの利点をもたらします。

現在は、最下位ビットのみが利用可能です。

利用可能なビット:

  • 0: OpenCL* アドレス空間エイリアス解析

CL_CONFIG_CPU_STREAMING_ALWAYS

false

非テンポラルな命令が使用されるかどうかを制御します。

関連情報