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