インテル® MKL 2017 デベロッパー・ガイド
インテル® MKL には、再現性のある結果を得るための関数と環境変数が用意されています。いずれかを使用してインテル® MKL を設定できますが、関数のほうがより柔軟性があります。
次の例は、条件付き数値再現性用の設定方法を示しています。
これらの例では、入力データと出力データをアライメントすることを推奨していますが、CNR モードで実行するインテル® MKL 関数でアライメントされていないデータを使用することもできます。データ・アライメントの詳細については、「再現性の条件」を参照してください。
インテル® MKL の呼び出しがインテル® AVX2 対応のインテル® プロセッサーで同じ結果になることを保証するには、次の操作を行います。
アプリケーションが固定のスレッド数を使用していることを確認します。
(推奨) インテル® MKL 関数呼び出しの入力配列と出力配列を適切にアライメントします。
以下のいずれかの操作を行います。
次の呼び出しを行います。
mkl_cbwr_set(MKL_CBWR_AVX2)
次の環境変数を設定します。
export MKL_CBWR = AVX2
インテル以外のプロセッサーと、インテル® AVX2 命令をサポートしていないインテル® プロセッサーでは、上記の関数呼び出しでエラーが返されて CNR モードが有効にならず、代わりに AUTO 分岐が使用されるため、この環境設定の結果が異なる場合があります。
インテル® MKL の呼び出しがインテル® SSE2 対応のインテル® プロセッサーで同じ結果になることを保証するには、次の操作を行います。
アプリケーションが固定のスレッド数を使用していることを確認します。
(推奨) インテル® MKL 関数呼び出しの入力配列と出力配列を適切にアライメントします。
以下のいずれかの操作を行います。
次の呼び出しを行います。
mkl_cbwr_set(MKL_CBWR_SSE2)
次の環境変数を設定します。
export MKL_CBWR = SSE2
インテル以外のプロセッサーでは、上記の関数呼び出しでエラーが返されて CNR モードが有効にならず、代わりに AUTO 分岐が使用されるため、この環境設定の結果が異なる場合があります。
インテル以外のプロセッサーでは、関数呼び出しでは MKL_CBWR_AUTO および MKL_CBWR_COMPATIBLE オプションのみ、環境変数では AUTO および COMPATIBLE オプションのみをサポートしています。
インテル® MKL の呼び出しがインテル® SSE2 対応のインテル® プロセッサーおよび互換プロセッサーで同じ結果になることを保証するには、次の操作を行います。
アプリケーションが固定のスレッド数を使用していることを確認します。
(推奨) インテル® MKL 関数呼び出しの入力配列と出力配列を適切にアライメントします。
以下のいずれかの操作を行います。
次の呼び出しを行います。
mkl_cbwr_set(MKL_CBWR_COMPATIBLE)
次の環境変数を設定します。
export MKL_CBWR = COMPATIBLE
インテル® プロセッサーと互換プロセッサーには、近似命令 (rcpps/rsqrtps) のように異なる結果を返す命令がいくつかあるため、特別な MKL_CBWR_COMPATIBLE/COMPATIBLE オプションが提供されています。このオプションは、インテル® MKL がこれらの命令を使用しないで単一のインテル® SSE2 用コードパスを実行することを保証します。
環境変数を使用した分岐の指定の詳細。 |
『インテル® MKL デベロッパー・リファレンス』の次のセクション:
条件付き数値再現性 (CNR) 用サポート関数 |
関数を使用したインテル® MKL の CNR モードの設定方法。 |
インテル® MKL PARDISO - 並列直接法スパース・ソルバー・インターフェイス |
PARDISO 用の CNR モードの設定方法。 |
最適化に関する注意事項 |
---|
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。 注意事項の改訂 #20110804 |