[Timeline Trace] ビューは、ホストおよびデバイスのイベントを共通のタイムラインに表示します。この情報は、アプリケーション実行の詳細を理解し、パフォーマンスを向上できる部分を特定するのに有益です。タイムライン トレース レポートには、[Host] と [Device] の 2 つのセクションがあります。[Host] セクションには、ホスト側から開始されるアクティビティのトレースが表示され、[Device] セクションには、FPGA の CU のアクティビティが表示されます。
レポートは、次のような構成になっています。
-
Host
-
OpenCL
API Calls
- すべての OpenCL API 呼び出しがトレースされます。アクティビティ時間はホストの視点から測定されます。
-
-
General
-
clCreateProgramWithBinary
、clCreateContext
、clCreateCommandQueue
などの一般的な OpenCL API 呼び出しがトレースされます。
-
-
Queue
- 特定のコマンド キューに関連する OpenCL API 呼び出しがトレースされます。これには、
clEnqueueNDRangeKernel
、clEnqueueMigrateMemObjects
などのコマンドが含まれます。ユーザー アプリケーションで複数のコマンド キューが作成された場合は、このセクションにすべてのキューとそのアクティビティが表示されます。
-
-
Data Transfer
- ホストからデバイス メモリまでの DMA 転送がトレースされます。OpenCL ランタイムにインプリメントされる DMA スレッドは複数あり、通常は同数の DMA チャネルがあります。DMA 転送は、ユーザー アプリケーションが
clEnqueueMigrateMemObjects
などの OpenCL API を呼び出すことにより開始されます。これらの DMA 要求がランタイムに転送され、スレッドの 1 つに割り当てられます。ホストからデバイスまでのデータ転送は Write の下、デバイスからホストまでのデータ転送は Read の下に表示されます。
-
Kernel Enqueues
- ホスト プログラムによりエンキューされたカーネルが表示されます。ここに示されるカーネルを、デバイスのカーネル/CU と混同しないようにしてください。ここではカーネルとは
NDRangeKernels
および OpenCL コマンド clEnqueueNDRangeKernels
および clEnqueueTask
で作成されるタスクを指します。これらはホストの視点から測定された時間に対してプロットされます。複数のカーネルが同時に実行されるようにスケジュールでき、実行がスケジュールされた時点からカーネル実行の終了までがトレースされます。複数のエントリがあるのは、このためです。行数は、オーバーラップするカーネル実行の数によって異なります。注記: 実際にはプロセスが即座に実行できない場合もあるので、カーネルのオーバーラップはデバイス上の並列実行とは異なります。
-
Device "name"
-
Binary Container "name"
- バイナリ コンテナーの名前。
-
-
Accelerator "name"
- FPGA 上の計算ユニット (アクセラレータ) の名前。
-
-
User Functions
-
Vitis HLS ツールのカーネルの場合、データフロー プロセスとしてインプリメントされる関数がトレースされます。これらの関数のトレースは、現在並列実行されているこれらの関数のアクティブなインスタンス数を示します。これらの名前は、波形がイネーブルの場合にハードウェア エミュレーションで生成されます。
注記: 関数レベルのアクティビティは、ハードウェア エミュレーションでのみ可能です。
-
Function: "name a"
-
Function: "name b"
-
Read
- CU は、AXI-MM ポートを使用して DDR から読み出しを実行します。CU で読み出されるデータのトレース データがここに表示されます。アクティビティはトランザクションとして表示され、各トランザクションのツール ヒントに詳細な AXI トランザクションが表示されます。これらの名前は、
--profile.data
がを CU のために使用されると生成されます。
-
Write
- CU は、AXI-MM ポートを使用して DDR への書き込みを実行します。CU で書き込まれるデータのトレースがここに表示されます。アクティビティはトランザクションとして表示され、各トランザクションのツール ヒントに詳細な AXI トランザクションが表示されます。これは、
--profile.data
が CU 用に指定されたときに生成されます。