インテル® MKL 2017 デベロッパー・ガイド
インテル® MKL は、デフォルトで、使用しているインテル® プロセッサーでサポートされているコードパスを自動的に照会して、最適な命令セット・アーキテクチャー (ISA) にディスパッチします。MKL_ENABLE_INSTRUCTIONS 環境変数または mkl_enable_instructions サポート関数を利用して、選択した ISA 固有のコードパスにディスパッチすることができます。例えば、インテル® アドバンスト・ベクトル・エクステンション 2 (インテル® AVX2) ベースのインテル® プロセッサーでインテル® アドバンスト・ベクトル・エクステンション (インテル® AVX) コードパスを実行したり、インテル® AVX ベースのインテル® プロセッサーでインテル® ストリーミング SIMD 拡張命令 4-2 (インテル® SSE4-2) コードパスを実行することができます。この機能は、インテル以外のプロセッサーでは利用できません。
インテル® MKL は、ハードウェアで利用可能なアーキテクチャーよりも新しいアーキテクチャーをサポートする場合がありますが、その場合でも、ライブラリーは、デフォルトで新しい ISA に固有のコードパスを自動的にディスパッチすることはありません。まだリリースされていないインテル® プロセッサー向けの ISA を有効にする必要がある場合、またはシミュレーション環境で作業を行っている場合は、MKL_ENABLE_INSTRUCTIONS 環境変数または mkl_enable_instructions サポート関数を使用してください。
以下の表は、MKL_ENABLE_INSTRUCTIONS の値と、指定されたプロセッサーでサポートされる対応する ISA をリストしています。要求された ISA が特定のインテル® プロセッサーでサポートされていない場合、MKL_ENABLE_INSTRUCTIONS はデフォルトの ISA にディスパッチします。例えば、インテル® AVX2 ベースのプロセッサーでインテル® AVX-512 コードパスを実行するように要求した場合、インテル® MKL はインテル® AVX2 コードパスを実行します。表では、この ISA をサポートするプロセッサーで ISA がデフォルトでディスパッチされるかどうかも説明しています。
|
ISA |
デフォルトでディスパッチ |
---|---|---|
AVX512 |
インテル® Xeon® プロセッサー・ベースのシステムでのインテル® AVX-512 |
X |
AVX512_MIC |
インテル® Xeon Phi™ プロセッサーおよびコプロセッサー・ベースのシステムでのインテル® AVX-512 |
○ |
AVX2 |
インテル® AVX2 |
○ |
AVX |
インテル® AVX |
○ |
SSE4_2 |
インテル® SSE4-2 |
○ |
引数値を含む mkl_enable_instructions 関数の詳細については、『インテル® MKL デベロッパー・リファレンス』を参照してください。
次に例を示します。
次の呼び出しを行います。
mkl_enable_instructions(MKL_ENABLE_AVX512)
次の環境変数を設定します。
bash シェルの場合:
export MKL_ENABLE_INSTRUCTIONS=AVX512
C シェル (csh または tcsh) の場合:
setenv MKL_ENABLE_INSTRUCTIONS AVX512
次の呼び出しを行います。
mkl_enable_instructions(MKL_ENABLE_AVX2)
次の環境変数を設定します。
bash シェルの場合:
export MKL_ENABLE_INSTRUCTIONS=AVX2
C シェル (csh または tcsh) の場合:
setenv MKL_ENABLE_INSTRUCTIONS AVX2
mkl_enable_instructions 関数で指定された設定は、MKL_ENABLE_INSTRUCTIONS 環境変数で指定された設定よりも優先されます。
最適化に関する注意事項 |
---|
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。 注意事項の改訂 #20110804 |