インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) には、再現性のある結果を得る関数と環境変数が用意されています。関数と環境変数のどちらかを使用してインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) を設定できますが、関数のほうがより柔軟性があります。
次の例は、条件付き数値再現性用の設定方法を示しています。
これらの例では、入力データと出力データをアライメントすることを推奨していますが、CNR モードで実行するインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 関数でアライメントされていないデータを使用することもできます。データ・アライメントの詳細については、再現性の条件を参照してください。
インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) の呼び出しがインテル® AVX2 対応のインテル® プロセッサーで同じ結果になることを保証するには、次の操作を行います。
アプリケーションが固定のスレッド数を使用していることを確認します
(推奨) インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 関数呼び出しの入力配列と出力配列を適切にアライメントします
以下のいずれかの操作を行います。
mkl_cbwr_set(MKL_CBWR_AVX2) 呼び出します
次の環境変数を設定します。
export MKL_CBWR = AVX2
インテル以外のプロセッサーと、インテル® AVX2 命令をサポートしていないインテル® プロセッサーでは、上記の関数呼び出しでエラーが返されて CNR モードが有効にならず、代わりに AUTO 分岐が使用されるため、この環境設定の結果が異なる場合があります。
インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) の呼び出しがインテル® SSE2 対応のインテル® プロセッサーで同じ結果になることを保証するには、次の操作を行います。
アプリケーションが固定のスレッド数を使用していることを確認します
(推奨) インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 関数呼び出しの入力配列と出力配列を適切にアライメントします
以下のいずれかの操作を行います。
mkl_cbwr_set(MKL_CBWR_SSE2) 呼び出します
次の環境変数を設定します。
export MKL_CBWR = SSE2
インテル以外のプロセッサーでは、上記の関数呼び出しでエラーが返されて CNR モードが有効にならず、代わりに AUTO 分岐が使用されるため、この環境設定の結果が異なる場合があります。
インテル以外のプロセッサーでは、関数呼び出しでは MKL_CBWR_AUTO および MKL_CBWR_COMPATIBLE オプションのみ、環境変数では AUTO および COMPATIBLE オプションのみをサポートしています。
インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) の呼び出しがインテル® SSE2 対応のインテル® プロセッサーまたは互換プロセッサーで同じ結果になることを保証するには、次の操作を行います。
アプリケーションが固定のスレッド数を使用していることを確認します。
(推奨) インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 関数呼び出しの入力配列と出力配列を適切にアライメントします
以下のいずれかの操作を行います。
Call mkl_cbwr_set(MKL_CBWR_COMPATIBLE) 呼び出します
次の環境変数を設定します。
export MKL_CBWR = COMPATIBLE
インテル® プロセッサーと互換プロセッサーには、近似命令 (rcpps/rsqrtps) のように異なる結果を返す命令がいくつかあるため、特別な MKL_CBWR_COMPATIBLE/COMPATIBLE オプションが提供されています。このオプションは、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) がそれらの命令を使用することなく単一のインテル® SSE2 用コードパスを実行することを保証します。
oneMKL の呼び出しがインテル® AVX2 対応のインテル® プロセッサーで同じ結果になることを保証するには、次の操作を行います。
環境変数を使用した分岐の指定の詳細。 |
インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) デベロッパー・リファレンスの次のセクションを参照してください。
条件付き数値再現性 (CNR) 用サポート関数 |
関数を使用したインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) の CNR モードの設定方法。 |
インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) PARDISO (並列直接法スパースソルバー・インターフェイス) |
PARDISO 用の CNR モードの設定方法。 |
製品および性能に関する情報 |
|---|
性能は、使用状況、構成、およびその他の要因によって異なります。詳細については、www.Intel.com/PerformanceIndex (英語) をご覧ください。 改訂 #20201201 |