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

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

インテル® MKL には、OpenMP* とは独立した、インテル® MKL スレッドを制御するための環境変数とサービス関数が用意されています。インテル® MKL 固有のスレッド化コントロールは、OpenMP* コントロールよりも優先されます。インテル® MKL 固有のスレッド化コントロールを使用して、インテル® MKL とほかのプログラム間で OpenMP* スレッドを分配します。

一部のインテル® MKL ルーチンは、アルゴリズムでサポートされない場合または (OpenMP* オーバーヘッドの軽減やデータの局所性の向上により) ルーチンのパフォーマンスが向上する場合、スレッド化コントロールによって推奨される OpenMP* スレッド数よりも少ないスレッド数を使用することがあります。アルゴリズムで許可される場合、OpenMP* オーバーヘッドとデータの局所性に関係なく、常に推奨される OpenMP* スレッド数を使用するには、MKL_DYNAMIC 環境変数を FALSE に設定するか、mkl_set_dynamic(0) を呼び出します。

『インテル® 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

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

OMP_NUM_THREADS

MKL_DOMAIN_NUM_THREADS

mkl_domain_set_num_threads

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

 

MKL_DYNAMIC

mkl_set_dynamic

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

OMP_DYNAMIC

mkl_set_num_threads() を呼び出して、MKL_NUM_THREADSMKL_DOMAIN_NUM_THREADSOMP_NUM_THREADS 環境変数の設定に関係なく、指定した OpenMP* スレッド数をインテル® MKL で使用します。

次の例は、インテル® MKL で 1 つのスレッドを使用するように強制します。

// ******* C language *******

#include <mkl.h>
...
mkl_set_num_threads ( 1 );
            

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

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