実行ごとに再現可能な結果を得るには、スレッド数が固定されていて、一定であることを確認してください。仕様:
厳密な 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 値が生成されることは保証されません。
動的メモリー割り当てが 1 回目の実行では失敗し、別の実行で成功した場合、これら 2 回の実行間で再現可能な結果が得られない可能性があります。
製品および性能に関する情報 |
|---|
性能は、使用状況、構成、およびその他の要因によって異なります。詳細については、www.Intel.com/PerformanceIndex (英語) をご覧ください。 改訂 #20201201 |