インテル® MKL 2017 デベロッパー・ガイド
このセクションでは、マルチスレッド・アプリケーションからインテル® MKL 関数を呼び出す典型的な使用モデルと利用可能なオプションを要約します。これらの推奨設定は、すべてのマルチスレッド環境に提供されます: OpenMP*、インテル® スレッディング・ビルディング・ブロック (インテル® TBB)、、Windows® スレッドなど。
効果: インテル® MKL の内部スレッド化は、アプリケーションによるスレッド化の妨げになったり、アプリケーションの速度を低下させることがあります。
例: アプリケーションがトップレベルでスレッド化されている場合やほかのアプリケーションと同時に実行する場合。
オプション:
シーケンシャル・ライブラリーとスタティックまたはダイナミックにリンクします。
シングル・ダイナミック・ライブラリー mkl_rt.lib とリンクして、環境変数または関数呼び出しを使用してシーケンシャル・ライブラリーを選択します。
MKL_THREADING_LAYER=sequential に設定します。
mkl_set_threading_layer(MKL_THREADING_SEQUENTIAL)‡ を呼び出します。
効果: アプリケーション・スレッドは特定の計算専用になります。
例: 1 つのスレッドが 1 つのコアを除くすべてのコア上で方程式を解き、シングルコア上で実行する別のスレッドがデータベースを更新する場合。
リンクオプション:
スレッド・ライブラリーとスタティックまたはダイナミックにリンクします。
シングル・ダイナミック・ライブラリー mkl_rt.lib とリンクして、環境変数または関数呼び出しを使用してスレッド・ライブラリーを選択します。
MKL_THREADING_LAYER=intel または MKL_THREADING_LAYER=tbb に設定します。
mkl_set_threading_layer(MKL_THREADING_INTEL) または mkl_set_threading_layer(MKL_THREADING_TBB) を呼び出します。
OpenMP* によるスレッド化のその他のオプション:
MKL_NUM_THREADS 環境変数にインテル® MKL の OpenMP* スレッド数を設定します。
MKL_DOMAIN_NUM_THREADS 環境変数にインテル® MKL の特定の関数ドメインの OpenMP* スレッド数を設定します。
アプリケーション・スレッドが複数のインテル® MKL 関数ドメインで動作する場合に使用します。
mkl_set_num_threads() を呼び出します。
実行時にインテル® MKL の OpenMP* スレッド数をグローバルに設定する場合に使用します。
mkl_domain_set_num_threads() を呼び出します。
アプリケーション・スレッドが複数のインテル® MKL 関数ドメインで動作する場合に使用します。
mkl_set_num_threads_local() を呼び出します。
特定のスレッドから呼び出されるインテル® MKL の OpenMP* スレッド数を設定するのに使用します。
アプリケーションで OpenMP* によるスレッド化を使用する場合、追加の設定が必要になることがあります。
環境変数 MKL_DYNAMIC=FALSE を設定するか、mkl_set_dynamic(0) を呼び出して、インテル® MKL が入れ子構造の並列領域で OpenMP* スレッド数を動的に減らさないようにします。
‡ 関数の詳細については、インテル® ソフトウェア・ドキュメント・ライブラリー (英語) にある『インテル® MKL デベロッパー・リファレンス』の「Support Functions」セクションを参照してください。
最適化に関する注意事項 |
---|
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。 注意事項の改訂 #20110804 |