一貫性のある結果を得るため、スレッド数が固定で定数であることを確認します。仕様:
厳密な CNR モードでは、スレッド数が変わっても、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) は一部の関数とコード分岐に対してビット単位で数値再現性のある結果を提供します。次のルーチンと分岐は、厳密な CNR モードをサポートします (64 ビット・ライブラリーのみ)。
ほかのルーチンや CNR 分岐を使用する場合、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) は上記の制限事項に従って、標準の (厳密ではない) CNR モードで動作します。厳密な CNR モードを有効にすると、パフォーマンスが低下する可能性があります。
CNR モードが有効になっている場合 (OFF 以外のコードブランチ)、oneMKL は インテル® GPU 上の限られた関数セットに対してビット単位で再現可能な結果を提供します。
OpenMP* オフロード API と DPC++ API はどちらも GPU CNR モードをサポートしています。
コードが同じ GPU 上で実行される、または同じ製品名 (インテル® Arc™ A770 など) を持つ 2 つの GPU 間で実行される場合は、再現性が保証されます。
CNR モードであっても、最良のパフォーマンスが得られるように、データをアライメントすべきです。CNR モードではアライメントされていない入出力データもサポートしていますが、一部のインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 関数は、以前のインテル® プロセッサーでパフォーマンスが低下することがあります。詳細は、パフォーマンスを向上させるためのコーディング手法を参照してください。
入力データに NaN 値が含まれる場合、条件付き数値再現性はビット単位で同一の NaN 値を生成しません。
動的メモリー割り当てがある実行では失敗し、別の実行では成功する場合、これらの実行で再現性のある結果は得られません。
製品および性能に関する情報 |
|---|
性能は、使用状況、構成、およびその他の要因によって異なります。詳細については、www.Intel.com/PerformanceIndex (英語) をご覧ください。 改訂 #20201201 |