プロファイル サマリには、OpenCL アプリケーションに役立つさまざまな統計が含まれ、アプリケーションの機能的なボトルネックの概要が表示されます。プロファイル サマリには、4 つのセクションから構成され、次の情報が表示されます。
-
Top Operations
-
Top Data Transfer: Kernels and Global
Memory: FPGA とデバイス メモリ間の最上位データ転送のプロファイル データを表示します。
- Device: デバイス名
- Compute Unit: 計算ユニット名
- Number of Transfers: デバイスで監視される書き込みおよび読み出し AXI トランザクションの合計
- Average Bytes per Transfer: (読み出しバイト数合計 + 書き込みバイト数合計) / (読み出し AXI トランザクション数合計 + 書き込み AXI トランザクション数合計)
-
Transfer Efficiency (%): (転送ごとの平均バイト数) / min(4K, (メモリ ビット幅/8 * 256))
AXI4 仕様では、最大バースト長が 256、最大バースト サイズが 4K バイトに制限されています。
- Total Data Transfer (MB): (読み出しバイト数合計 + 書き込みバイト数合計) / 1.0E6
- Total Write (MB): (書き込みバイト数合計) / 1.0E6
- Total Read (MB): (読み出しバイト数合計) / 1.0E6
- Transfer Rate (MB/s): (データ転送数合計) / (計算ユニットの合計時間)
-
Top Kernel Execution
- Kernel Instance Address: カーネル インスタンスのホスト アドレス (16 進数)
- Kernel: カーネル名
- Context ID: ホストのコンテキスト ID
- Command Queue ID: ホストのコマンド キュー ID
-
Device: カーネルが実行されたデバイスの名前 (フォーマット:
<device>-<ID>
) - Start Time (ms): 実行の開始時間 (ms)
- Duration (ms): 実行期間 (ms)
- Global Work Size: カーネルの NDRange
- Local Work Size: カーネルのワーク グループ サイズ
-
Top Memory Writes: Host and Device Global
Memory
- Buffer Address: バッファーのホスト アドレス (16 進数)
- Context ID: ホストのコンテキスト ID
- Command Queue ID: ホストのコマンド キュー ID
- Start Time (ms) : 書き込み転送の開始時間 (ms)
- Duration (ms): 書き込み転送期間 (ms)
- Buffer Size (KB): 書き込み転送サイズ (KB)
- Writing Rate (MB/s): 書き込みレート = (バッファー サイズ) / (期間)
-
Top Memory Reads: Host and Device Global
Memory
- Buffer Address: バッファーのホスト アドレス (16 進数)
- Context ID: ホストのコンテキスト ID
- Command Queue ID: ホストのコマンド キュー ID
- Start Time (ms): 読み出し転送の開始時間 (ms)
- Duration (ms): 読み出し転送期間 (ms)
- Buffer Size (KB): 読み出し転送サイズ (KB)
- Reading Rate (MB/s): 読み出しレート = (バッファー サイズ) / (期間)
-
Top Data Transfer: Kernels and Global
Memory: FPGA とデバイス メモリ間の最上位データ転送のプロファイル データを表示します。
-
Kernels & Compute Units
-
Kernel Execution (includes estimated device
times): スケジュールおよび実行されたすべてのカーネルのプロファイル データ サマリを表示します。
- Kernel: カーネル名
- Number of Enqueues: カーネルがエンキューされる回数
- Total Time (ms): すべてのエンキューのランタイム合計 (OpenCL 実行モデルで START から END まで測定)
- Minimum Time (ms): すべてのエンキューの最小ランタイム
- Average Time (ms): (合計時間) / (エンキュー数)
- Maximum Time (ms): すべてのエンキューの最大ランタイム
-
Compute Unit Utilization (includes
estimated device times): FPGA のすべての計算ユニットのサマリ プロファイル データを表示します。
-
Device: デバイス名 (フォーマット:
<device>-<ID>
) - Compute Unit: 計算ユニット名
- Kernel: 計算ユニットが関連付けられるカーネル
- Global Work Size: カーネルの NDRange (フォーマットは x:y:z)
- Local Work Size: ローカル ワーク グループ サイズ (フォーマットは x:y:z)
- Number of Calls: 計算ユニットが呼び出される回数
- Total Time (ms): すべての呼び出しのランタイム合計
- Minimum Time (ms): すべての呼び出しの最小ランタイム
- Average Time (ms): (合計時間) / (ワーク グループ数)
- Maximum Time (ms): すべての呼び出しの最大ランタイム
- Clock Frequency (MHz): アクセラレータに使用されるクロック周波数 (MHz)
-
Device: デバイス名 (フォーマット:
-
Kernel Execution (includes estimated device
times): スケジュールおよび実行されたすべてのカーネルのプロファイル データ サマリを表示します。
-
Data Transfers
-
Data Transfer: Host and Global
Memory: ホストとデバイス メモリ間の
PCI Express®
リンクを介したすべての読み出しおよび書き込み転送のプロファイル データを表示します。
- Context:Number of Devices: コンテキスト ID およびコンテキスト内のデバイス数
- Transfer Type: [READ] または [WRITE]
-
Number of Transfers: ホスト データ転送数注記:
printf
転送が含まれる場合があります。 -
Transfer Rate (MB/s): (送信バイト数合計) / (合計時間 (µs))
合計時間にはソフトウェア オーバーヘッドが含まれます。
-
Average Bandwidth Utilization
(%): (転送レート) / (最大転送レート)
最大転送レート = (256/8 バイト) * (300 MHz) = 9.6 GB/s
- Average Size (KB): (送信された合計 KB) / (転送数)
- Total Time (ms): 転送の合計時間
- Average Time (ms): (合計時間) / (転送数)
-
Data Transfer: Kernels and Global
Memory: FPGA とデバイス メモリ間のすべての読み出しおよび書き込み転送のプロファイル データを表示します。
- Device: デバイス名
- Compute Unit/Port Name: <計算ユニット名>/<ポート名>
- Kernel Arguments: このポートに接続される引数のリスト
- DDR Bank: このポートが接続される DDR バンク数
- Transfer Type: [READ] または [WRITE]
-
Number of Transfers: デバイスで監視される AXI トランザクションの数注記:
printf
転送が含まれる場合があります。 -
Transfer Rate (MB/s): (送信されたバイト数合計) / (計算ユニット合計時間)
- 計算ユニットの合計時間 = 計算ユニットの合計実行時間
- 送信バイト数合計 = すべてのトランザクションのバイト数合計
-
Average Bandwidth Utilization
(%): (転送レート) / (0.6 * 最大転送レート)
最大転送レート = (512/8 バイト) * (300 MHz) = 19200 MB/s
- Average Size (KB): (送信された合計 KB) / (AXI トランザクション数)
- Average Latency (µs): (全トランザクションのレイテンシ合計) / (AXI トランザクション数)
-
Data Transfer: Host and Global
Memory: ホストとデバイス メモリ間の
PCI Express®
リンクを介したすべての読み出しおよび書き込み転送のプロファイル データを表示します。
- [OpenCL API Calls]: ホスト アプリケーションで実行されるすべての OpenCL ホスト API 関数呼び出しのプロファイル データを表示します。
-
API Name: API 関数の名前 (例:
clCreateProgramWithBinary
、clEnqueueNDRangeKernel
) - Number of Calls: この API の呼び出し回数
- Total Time (ms): すべての呼び出しのランタイム合計
- Minimum Time (ms): すべての呼び出しの最小ランタイム
- Average Time (ms): (合計時間) / (呼び出し回数)
- Maximum Time (ms): すべての呼び出しの最大ランタイム
-
API Name: API 関数の名前 (例:
-
Kernel Internals
-
Compute Units: Running Time and
Stalls: 計算ユニットの実行時間 (マイクロ秒) と、その実行時間の停止時間の割合 (%) をレポートします。 ヒント: Kernel Internals タブでは、時間をマイクロ秒 (µs) でレポートしますが、[Profile Summary] レポートのほかの部分の時間単位はミリ秒 (ms) です。
- Compute Unit: 計算ユニットのインスタンス名を示します。
- Running Time (µs): CU の実行時間の合計をレポートします。
- Intra-Kernel Stream Stalls (%): カーネル間のデータ ストリーミング中に停止した実行時間の割合 (%) をレポートします。
- External Memory Stalls (%): CU 外のメモリ転送で停止した実行時間の割合 (%) をレポートします。
- External Stream Stalls (%): CU 内外のデータ ストリーミング中に停止した実行時間の割合 (%) をレポートします。
-
Functions: Running Time and
Stalls: CU 内の関数の実行時間 (マイクロ秒) と、その実行時間の停止時間の割合 (%) をレポートします。
- Compute Unit: 計算ユニットのインスタンス名を示します。
- Function: CU 内の関数名を示します。
- Running Time (µs): 関数の実行時間の合計をレポートします。
- Intra-Kernel Stream Stalls (%): カーネル間のデータ ストリーミング中に停止した実行時間の割合 (%) をレポートします。
- External Memory Stalls (%): CU 外のメモリ転送で停止した実行時間の割合 (%) をレポートします。
- External Stream Stalls (%): CU 内外のデータ ストリーミング中に停止した実行時間の割合 (%) をレポートします。
-
Compute Units: Port Data
Transfer: 計算ユニットの特定ポートのデータ転送をレポートします。
- Compute Unit: 計算ユニットのインスタンス名を示します。
- Port: 計算ユニットのポート名を示します。
- Write Time (µs): ポートのデータ書き込み時間合計を指定します。
- Outstanding Write (%): 書き込み処理にかかった実行時間の割合 (%) を指定します。
- Read Time (µs): ポートのデータ読み出し時間合計を指定します。
- Outstanding Read (%): 読み出し処理にかかった実行時間の割合 (%) を指定します。
-
Compute Units: Running Time and
Stalls: 計算ユニットの実行時間 (マイクロ秒) と、その実行時間の停止時間の割合 (%) をレポートします。