インテル® MKL 11.3 ユーザーズガイド

MKL_DOMAIN_NUM_THREADS

MKL_DOMAIN_NUM_THREADS 環境変数は、特定の関数ドメイン用の OpenMP* スレッド数を示します。

MKL_DOMAIN_NUM_THREADS には、文字列値 <MKL 環境文字列> を以下の形式で指定します。

<MKL 環境文字列> ::= <MKL ドメイン環境文字列> { <区切り文字><MKL ドメイン環境文字列> }

<区切り文字> ::= [ <スペース記号>* ] ( <スペース記号> | <カンマ記号> | <セミコロン記号> | <コロン記号>) [ <スペース記号>* ]

<MKL ドメイン環境文字列> ::= <MKL ドメイン環境名><使用法><スレッド数>

<MKL ドメイン環境名> ::= MKL_DOMAIN_ALL | MKL_DOMAIN_BLAS | MKL_DOMAIN_FFT | MKL_DOMAIN_VML | MKL_DOMAIN_PARDISO

<使用法> ::= [ <スペース記号>* ] ( <スペース記号> | <等号記号> | <カンマ記号>) [ <スペース記号>* ]

<スレッド数> ::= <正の整数>

<正の整数> ::= <10 進数> | <8 進数> | <16 進数>

上記の構文で、<MKL ドメイン環境名> の値は、次の関数ドメインを示します。

MKL_DOMAIN_ALL

すべての関数ドメイン

MKL_DOMAIN_BLAS

BLAS ルーチン

MKL_DOMAIN_FFT

非クラスターフーリエ変換関数

MKL_DOMAIN_VML

ベクトル数学関数

MKL_DOMAIN_PARDISO

PARDISO

次に例を示します。

MKL_DOMAIN_ALL 2 : MKL_DOMAIN_BLAS 1 : MKL_DOMAIN_FFT 4

MKL_DOMAIN_ALL=2 : MKL_DOMAIN_BLAS=1 : MKL_DOMAIN_FFT=4

MKL_DOMAIN_ALL=2,  MKL_DOMAIN_BLAS=1,  MKL_DOMAIN_FFT=4

MKL_DOMAIN_ALL=2;  MKL_DOMAIN_BLAS=1;  MKL_DOMAIN_FFT=4

MKL_DOMAIN_ALL  = 2  MKL_DOMAIN_BLAS 1 ,  MKL_DOMAIN_FFT  4

MKL_DOMAIN_ALL,2: MKL_DOMAIN_BLAS 1, MKL_DOMAIN_FFT,4 .

グローバル変数 MKL_DOMAIN_ALL、MKL_DOMAIN_BLAS、MKL_DOMAIN_FFT、MKL_DOMAIN_VML MKL_DOMAIN_PARDISO、およびインテル® MKL スレッド化コントロール関数用のインターフェイスは、mkl.h ヘッダーファイルに記述されています。

以下の表は、MKL_DOMAIN_NUM_THREADS の値がどのように解釈されるかを示しています。

MKL_DOMAIN_NUM_THREADS の値

解釈

MKL_DOMAIN_ALL=4

インテル® MKL のすべての部分で 4 つの OpenMP* スレッドを使用しようとします。実際のスレッド数は、MKL_DYNAMIC の設定やシステムリソースの状況に応じて異なります。 この設定は、MKL_NUM_THREADS = 4 と等価です。

MKL_DOMAIN_ALL=1、MKL_DOMAIN_BLAS=4

BLAS で 4 つのスレッドを使用することを除いて、インテル® MKL のすべての部分で 1 つの OpenMP* スレッドを使用しようとします。

MKL_DOMAIN_VML=2

VML で 2 つ OpenMP* のスレッドを使用しようとします。設定は、インテル® MKL のほかの部分には影響しません。

ドメイン固有の設定は、ほかの設定よりも優先されることに注意してください。例えば、MKL_DOMAIN_NUM_THREADS が "MKL_DOMAIN_BLAS=4" に設定された場合、MKL_NUM_THREADS の設定に関係なく、BLAS で 4 つの OpenMP* スレッドを使用するように推奨します。関数呼び出し "mkl_domain_set_num_threads ( 4, MKL_DOMAIN_BLAS );" も、mkl_set_num_threads() への呼び出しに関係なく、BLAS で 4 つの OpenMP* スレッドを使用するように推奨します。
しかし、"mkl_domain_set_num_threads (4, MKL_DOMAIN_ALL);" のように、"MKL_DOMAIN_ALL" が入力の関数呼び出しは、"mkl_set_num_threads(4)" と等価であるため、後の mkl_set_num_threads 呼び出しのほうが優先されることに注意してください。 同様に、MKL_DOMAIN_NUM_THREADS が "MKL_DOMAIN_ALL=4" に設定された場合、MKL_NUM_THREADS = 2 よりも優先されます。

例えば、MKL_DOMAIN_NUM_THREADS 環境変数では、"MKL_DOMAIN_BLAS=4,MKL_DOMAIN_FFT=2" のように複数の変数を一度に設定することができますが、対応する関数で文字列構文は使用できません。 このため、関数呼び出しで同じことを行うには、以下のように複数の呼び出しを行う必要があります。

mkl_domain_set_num_threads ( 4, MKL_DOMAIN_BLAS );

mkl_domain_set_num_threads ( 2, MKL_DOMAIN_FFT );