インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 関数を呼び出すアプリケーションをビルドする場合、次の点を決定すると役立つ場合があります。
インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) の verbose モードを有効にすると、アプリケーションはこれらの情報を標準出力デバイスに表示します。これらの情報を出力可能な関数は、verbose 対応関数と呼ばれます。
インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) ドメインで verbose モードがアクティブな場合、各 verbose 対応関数の呼び出し終了時に情報が出力されます。ただし、関数呼び出しの途中でアプリケーションが終了した場合、その関数の情報は出力されません。verbose 対応関数への最初の呼び出しでは、バージョン情報行も出力されます。
GPU アプリケーションの場合、ホスト CPU のバージョン情報ラインが表示された後、verbose 対応関数の最初の呼び出しによって追加情報 (1 行以上の GPU 情報ライン) も表示されます。複数の GPU が検出された場合は、各 GPU デバイスが別々のラインに表示されます。
CPU アプリケーションの詳細と GPU アプリケーションの詳細には、異なる実装があります。インテル® MKL の verbose モードには、CPU アプリケーションで使用する場合、無効 (デフォルト) と有効の 2 つのモードがあります。インテル® MKL の verbose モードには、GPU アプリケーションで使用する場合、無効 (デフォルト)、時間なしで有効、同期時間で有効の 3 つのモードがあります。
Verbose モードを変更するには、環境変数 MKL_VERBOSE を設定します。
| CPU アプリケーション | GPU アプリケーション | |
|---|---|---|
| MKL_VERBOSE を 0 に設定します。 | Verbose を無効にするには | Verbose を無効にするには |
| MKL_VERBOSE を 1 に設定します。 | Verbose を有効にするには | 時間なしで Verbose を有効にするには |
| MKL_VERBOSE を 2 に設定します。 | Verbose を有効にするには | 同期時間なしで Verbose を有効にするには |
またはサポート機能を呼び出すmkl_verbose(int mode):
| CPU アプリケーション | GPU アプリケーション | |
|---|---|---|
| mkl_verbose( 0 ) を呼び出します | Verbose を無効にするには | Verbose を無効にするには |
| mkl_verbose( 1 ) を呼び出します | Verbose を有効にするには | 時間なしで Verbose を有効にするには |
| mkl_verbose( 2 ) を呼び出します | Verbose を有効にするには | 同期時間なしで Verbose を有効にするには |
Verbose 出力は、CPU のバージョン情報ラインと呼び出し説明ラインで構成されます。
CPU アプリケーションの場合、次のドメインで oneMKL Verbose モードを有効にできます。
Verbose 機能は、OpenMP* オフロードで DPC++ API または C/Fortran API を使用する GPU アプリケーションで有効になります。GPU アプリケーションで使用する場合、verbose を使用すると、実行時間の測定を verbose モードで有効または無効にすることができます。時間計測は同期的に行われるため、時間計測とともに verbose が有効になっている場合、カーネルの実行も同期的になります (前のカーネルが後のカーネルをブロックします)
Verbose 出力は、バージョン情報ライン、GPU 情報ライン、および GPU の呼び出し説明ラインで構成されます。
GPU アプリケーションの場合、次のドメインで oneMKL Verbose モードを有効にできます。
関数呼び出しを使用した Verbose モードの有効化と無効化は、どちらも環境設定よりも優先されます。mkl_verbose 関数の詳細な説明については、C 版のインテル® oneAPI マス・カーネル・ライブラリー開発者リファレンス、または Fortran 版のインテル® oneAPI マス・カーネル・ライブラリー開発者リファレンスを参照してください。両方のリファレンスは、インテル® ソフトウェア・ドキュメント・ライブラリーで入手できます。
インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) の verbose モードは、スレッドローカルな状態ではなく、グローバルな状態です。つまり、アプリケーションがマルチスレッドから verbose モードに変更した場合、結果は不定です。
verbose モードを有効にするとすべての verbose 対応関数で出力操作が行われるため、verbose 対応関数の呼び出しが多い場合、アプリケーションのパフォーマンスが低下する可能性があります。