インテル® マス・カーネル・ライブラリー 11.2 ユーザーズガイド

スレッド化コントロール用のインテル® MKL 固有の環境変数

インテル® マス・カーネル・ライブラリー (インテル® MKL) には、オプションのスレッド化コントロール (OpenMP* とは独立した環境変数とサービス関数) が用意されています。これらのコントロールは OpenMP* の等価な変数と似ていますが、OpenMP* 変数よりも優先されます。つまり、インテル® MKL 固有のコントロールが最初に検査されます。これらのコントロールを OpenMP* 変数とともに使用することで、インテル® MKL とライブラリーを互いに呼び出さないアプリケーションの部分をスレッド化することができます。

これらのコントロールを使用すると、OpenMP* 設定とは無関係にインテル® MKL のスレッド数を指定できます。インテル® MKL は実際には推奨と異なるスレッド数を使用することがありますが、コントロールは呼び出しアプリケーションで使用されている数が利用できない場合、推奨するスレッド数を使用するようにライブラリーに指示します。

インテル® MKL では、システムリソースなど、特定の理由により、スレッド数が選択できないことがあります。

アプリケーションでインテル® MKL スレッド化コントロールを使用するかどうかは任意です。コントロールを使用しない場合、ライブラリーは、デフォルトのスレッド数が異なることを除けば、スレッド化に関してはインテル® MKL 9.1 と同じように動作します。

『インテル® MKL リファレンス・マニュアル』の「Fourier Transform Functions」のセクションの「Number of User Threads」サブセクションに、インテル® MKL スレッド化コントロールを使用して FFT 計算のスレッド数を設定する方法が説明されています。

次の表は、スレッド化コントロール用のインテル® MKL 環境変数とサービス関数、および等価な OMP 環境変数の一覧です。

環境変数

サポート関数

内容

等価な OpenMP* 環境変数

MKL_NUM_THREADS

mkl_set_num_threads

mkl_set_num_threads_local

使用するスレッド数を示します。

OMP_NUM_THREADS

MKL_DOMAIN_NUM_
THREADS

mkl_domain_set_num_threads

特定の関数ドメイン用のスレッド数を示します。

 

MKL_DYNAMIC

mkl_set_dynamic

インテル® MKL がスレッド数を動的に変更できるようにします。

OMP_DYNAMIC

関数はそれぞれの環境変数よりも優先されます。
このため、インテル® MKL がアプリケーションで指定されたスレッド数を使用し、アプリケーションのユーザーが環境変数を使用してスレッド数を変更しないようにする場合は、mkl_set_num_threads() を呼び出してスレッド数を設定します。この設定は、環境変数の設定よりも優先されます。

次の例は、インテル® MKL 関数 mkl_set_num_threads() を使用して 1 つのスレッドに設定する方法を示しています。

// ******* C language *******
#include <omp.h>
#include <mkl.h>
...
mkl_set_num_threads ( 1 );
            

            
// ******* Fortran language *******
...
call mkl_set_num_threads( 1 )
            

スレッド化コントロール関数、パラメーター、呼び出し構文、コードの例は、『インテル® MKL リファレンス・マニュアル』を参照してください。


このヘルプトピックについてのフィードバックを送信