呼び出し記述ライン

CPU 呼び出しの説明ライン

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) の verbose モードでは、verbose 対応関数を呼び出すと説明ラインが出力されます。このラインは、MKL_VERBOSE という文字列で始まり、スペースが区切り文字となります。このラインの形式は、将来のリリースで変更される可能性があります。

次の表は、CPU アプリケーションの Verbose 呼び出しの説明ラインに含まれる情報を示し、詳細情報へのリンクを示します。

情報

説明

関連リンク

関数名

出力される名前は、アプリケーションのソースコードで使用されている名前と異なる場合がありますが (たとえば、CBLAS 関数の cblas_ プレフィクスは出力されません)、その名前から簡単に関数を認識することができます。

 

引数の値。

  • 値は、正式な引数リストの順序でリストされます。リストは関数名の直後に括弧で囲まれ、カンマで区切られます。
  • 配列は (データのアライメントが分かるように) アドレスで出力されます。
  • 参照によって渡される整数スカラー・パラメーターは値で出力されます。NULL 参照はゼロ値で表されます。
  • 文字値は引用符なしで出力されます。
  • 参照渡しのパラメーターの値はすべて関数の戻り値で出力されます。たとえば、LAPACK 関数の info パラメーターの出力された値は、関数の実行後の値です。
  • ScaLAPACK ドメインの verbose 対応関数の場合、標準入力パラメーターに加えて、ブロッキング係数、MPI ランク、プロセスグリッドに関する情報も出力されます。
 

関数の時間。

  • 時間は、明示的に示された容易に識別できる単位 (秒、ミリ秒など) で出力されます。

  • 時間は実行ごとに変動する可能性があります。

  • 特に問題のサイズが小さい場合やマルチソケット・マシンの場合、出力される時間は実際に関数呼び出しにかかった時間よりも長くなることがあります。この影響を軽減するには、アフィニティー・ マスクを設定して、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) を呼び出すスレッドを CPU コアにバインドします。

アフィニティー・マスクを設定するオプションについては、マルチコア・パフォーマンスの管理を参照してください。

MKL_CBWR 環境変数の値。

出力される値には、プリフィクス CNR: が付いています。

条件付き数値再現性の導入ガイド

MKL_DYNAMIC 環境変数の値。

出力される値には、プリフィクス Dyn: が付いています。

MKL_DYNAMIC

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) メモリー・マネージャーのステータス。

出力される値には、プリフィクス FastMM: が付いています。

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) メモリー・マネージャーの説明については、oneMKL におけるメモリーリークの回避を参照してください。

呼び出しスレッドの OpenMP* スレッド番号。

出力される値には、プリフィクス TID: が付いています。

 

全般的なスレッド数とドメイン固有のスレッド数を定義するカンマで区切ったインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 環境変数の値。

出力される最初の値には、プリフィクス NThr: が付いています。

スレッド制御のための oneMKL 固有の環境変数

以下は、呼び出しの説明ラインの出力例です (OpenMP* によるスレッド化)。

MKL_VERBOSE DGEMM(n,n,1000,1000,240,0x7ffff708bb30,0x7ff2aea4c000,1000,0x7ff28e92b000,240,0x7ffff708bb38,0x7ff28e08d000,1000) 1.66ms CNR:OFF Dyn:1 FastMM:1 TID:0 NThr:16

以下は、呼び出しの説明ラインの出力例です (TBB によるスレッド化)。

MKL_VERBOSE DGEMM(n,n,1000,1000,240,0x7ffff708bb30,0x7ff2aea4c000,1000,0x7ff28e92b000,240,0x7ffff708bb38,0x7ff28e08d000,1000) 1.66ms CNR:OFF Dyn:1 FastMM:1

選択したスレッドの詳細については、バージョン情報ラインを参照してください。

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) の verbose モードの制限により、以下の情報は出力されません。

GPU 呼び出しの説明ライン

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) の verbose モードでは、verbose 対応関数を呼び出すと説明ラインが出力されます。このラインは、MKL_VERBOSE という文字列で始まり、スペースが区切り文字となります。このラインの形式は、将来のリリースで変更される可能性があります。

次の表は、GPU を使用した verbose アプリケーションの呼び出し説明ラインに含まれる情報を示しています。

情報 説明
関数名 出力される名前は、アプリケーションのソースコードで使用されている名前と異なる場合がありますが、その名前から簡単に関数を認識することができます。
引数の値
  • 値は、正式な引数リストの順序でリストされます。関数名の直後に出力され、リストは括弧で囲まれ、値はカンマで区切られます。
  • 配列は (データのアライメントが分かるように) アドレスで表されます。
  • 参照によって渡される整数スカラー・パラメーターは値で出力されます。NULL 参照はゼロ値で表されます。
  • 文字は引用符なしで表されます。
  • 参照渡しのパラメーターの値はすべて関数の戻り値で表されます。
関数の時間
  • GPU アプリケーションの時間計測ありで verbose が有効になっている場合、カーネルの実行は同期され (前のカーネルが後のカーネルをブロックする)、測定時間にはホストとデバイスでの潜在的なデータ転送やコピーが含まれる場合があります。
  • GPU アプリケーションの時間計測なしで Verbose が有効になっている場合、時間は 0 として出力されます。
  • 時間は、明示的に示された容易に識別できる単位 (秒、ミリ秒など) で出力されます。
  • 時間は実行ごとに変動する可能性があります。
  • また、問題サイズが小さい場合、実際に関数呼び出しに費やされた時間よりも大きくなることがあります。
デバイス・インデックス

カーネルが実行されている GPU デバイスのインデックスは、文字列 "GPU" の後に表示されます (例: GPU0、GPU1、GPU2 など)。特定のデバイスの詳細については、インデックスを使用して GPU 情報ラインを参照してください。

カーネルがホスト CPU で実行される場合、このフィールドは空になります。

以下は、呼び出しの説明ラインの出力例です。

MKL_VERBOSE FFT(dcfi64) 224.30us GPU0

いくつかの制限

GPU アプリケーションの場合、次の 2 つのケースで、呼び出しの説明ラインが順序どおりに表示されないことがあります (verbose 出力に表示される呼び出しの説明ラインの順序は、関数でカーネルが送信される順序と一致しないことがあります)。

  • Verbose は時間計測なしで有効になり、カーネル実行は非同期のままになります。
  • カーネルは GPU デバイスではなく、ホスト CPU 上で実行されます (この場合、デバイス・インデックスは表示されません)。