インテル® MKL 2020 デベロッパー・ガイド
一貫性のある結果を得るため、スレッド数が固定で定数であることを確認します。
厳密な CNR モードでは、スレッド数が変わっても、インテル® MKL は一部の関数とコード分岐に対してビット単位で数値再現性のある結果を提供します。次のルーチンと分岐は、厳密な CNR モードをさぽーとします (64 ビット・ライブラリーのみ):
ほかのルーチンや CNR 分岐を使用する場合、インテル® MKL は上記の制限事項に従って、標準の (厳密ではない) CNR モードで動作します。厳密な CNR モードを有効にすると、パフォーマンスが低下する可能性があります。
CNR モードであっても、最良のパフォーマンスが得られるように、データをアライメントすべきです。CNR モードではアライメントされていない入出力データもサポートしていますが、一部のインテル® MKL 関数は以前のインテル® プロセッサーでパフォーマンスが低下することがあります。詳細は、パフォーマンスを向上させるためのコーディング手法を参照してください。
入力データに NaN 値が含まれる場合、条件付き数値再現性はビット単位で同一の NaN 値を生成しません。
動的メモリー割り当てがある実行では失敗し、別の実行では成功する場合、これらの実行で再現性のある結果は得られません。
最適化に関する注意事項 |
---|
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。 注意事項の改訂 #20110804 |