oneMKL を Verbose モードで使用

インテル® 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 を有効にするには

CPU アプリケーションの Verbose

Verbose 出力は、CPU のバージョン情報ラインと呼び出し説明ラインで構成されます。

CPU アプリケーションの場合、次のドメインで oneMKL Verbose モードを有効にできます。

GPU アプリケーションの Verbose

Verbose 機能は、OpenMP* オフロードで DPC++ API または C/Fortran API を使用する GPU アプリケーションで有効になります。GPU アプリケーションで使用する場合、verbose を使用すると、実行時間の測定を verbose モードで有効または無効にすることができます。時間計測は同期的に行われるため、時間計測とともに verbose が有効になっている場合、カーネルの実行も同期的になります (前のカーネルが後のカーネルをブロックします)

Verbose 出力は、バージョン情報ライン、GPU 情報ライン、および GPU の呼び出し説明ラインで構成されます。

GPU アプリケーションの全体の実行時間が報告されます。選択した機能については、入力キューがプロファイル情報を使用して作成された場合、デバイス実行時間も報告されます (oneAPI GPU 最適化ガイド [PDF] を参照)。

GPU アプリケーションの場合、次のドメインで oneMKL Verbose モードを有効にできます。

CPU と GPU 両方の Verbose

関数呼び出しを使用した Verbose モードの有効化と無効化は、どちらも環境設定よりも優先されます。mkl_verbose 関数の詳細な説明については、C 版のインテル® oneAPI マス・カーネル・ライブラリー開発者リファレンス、または Fortran 版のインテル® oneAPI マス・カーネル・ライブラリー開発者リファレンスを参照してください。両方のリファレンスは、インテル® ソフトウェア・ドキュメント・ライブラリーで入手できます。

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) の verbose モードは、スレッドローカルな状態ではなく、グローバルな状態です。つまり、アプリケーションがマルチスレッドから verbose モードに変更した場合、結果は不定です。

警告:

verbose モードを有効にするとすべての verbose 対応関数で出力操作が行われるため、verbose 対応関数の呼び出しが多い場合、アプリケーションのパフォーマンスが低下する可能性があります。

関連情報