インテル® MKL 2017 デベロッパー・ガイド
インテル® MKL は、サポートしている命令セット・アーキテクチャー (ISA) によって決定されるコード分岐のために、条件付き数値再現性を提供しています。次のいずれかの形式で、MKL_CBWR 環境変数に値を指定します。
MKL_CBWR="<branch>"
MKL_CBWR="BRANCH=<branch>"
<branch> は、CNR 分岐を表します。値は次のいずれかになります。
値 |
説明 |
---|---|
AUTO |
CNR モードは、標準 ISA ベースのディスパッチ・モデル (固定キャッシュサイズ、決定性のあるリダクション、スタティック・スケジュールを保証) を使用します。 |
CNR モードは、次の ISA の分岐を使用します。 | |
COMPATIBLE |
インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) (rcpps/rsqrtps 命令を除く) |
SSE2 |
インテル® SSE2 |
SSE3 |
非推奨。インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3) この設定は後方互換性のために残されています。SSE2 と等価です。 |
SSSE3 |
インテル® ストリーミング SIMD 拡張命令 3 補足命令 (インテル® SSSE3) |
SSE4_1 |
インテル® ストリーミング SIMD 拡張命令 4-1 (インテル® SSE4-1) |
SSE4_2 |
インテル® ストリーミング SIMD 拡張命令 4-2 (インテル® SSE4-2) |
AVX |
インテル® アドバンスト・ベクトル・エクステンション (インテル® AVX) |
AVX2 |
インテル® アドバンスト・ベクトル・エクステンション 2 (インテル® AVX2) |
CNR 分岐を指定するときは、次の点に注意してください。
一貫した結果は、再現性の条件の下で提供されます。
AUTO および COMPATIBLE 以外の設定は、インテル® プロセッサーでのみ利用可能です。
現在プログラムを実行しているプロセッサー向けに最適化された CNR 分岐を取得するには、AUTO を選択するか、mkl_cbwr_get_auto_branch 関数を呼び出します。
MKL_CBWR 環境変数を設定するか、mkl_set_cbwr_branch 関数を呼び出すと、コード分岐が固定され、再現性モードが設定されます。
分岐の値が正しくないか、プロセッサーまたはオペレーティング・システムが指定された ISA をサポートしていない場合、CNR はその値を無視して AUTO 分岐を使用します。警告メッセージは表示されません。
CNR の動作を定義する関数の呼び出しは、CBWR で制御する算術ライブラリー関数の前に行う必要があります。
関数で指定された設定は、環境変数で指定された設定よりも優先されます。
関数を使用した分岐の指定方法は、『インテル® MKL デベロッパー・リファレンス』を参照してください。
最適化に関する注意事項 |
---|
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。 注意事項の改訂 #20110804 |