< 目次

インテル® 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 がデフォルトでディスパッチされるかどうかも説明しています。



MKL_ENABLE_INSTRUCTIONS の値

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_INSTRUCTIONS 環境変数で指定された設定よりも優先されます。

最適化に関する注意事項

インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。

注意事項の改訂 #20110804