タイムライン トレースの解釈 - 2022.1 日本語

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 日本語

[Timeline Trace] ビューは、ホストおよびデバイスのイベントを共通のタイムラインに表示します。この情報は、アプリケーション実行の詳細を理解し、パフォーマンスを向上できる部分を特定するのに有益です。タイムライン トレース レポートには、[Host] と [Device] の 2 つのセクションがあります。[Host] セクションには、ホスト側から開始されるアクティビティのトレースが表示され、[Device] セクションには、FPGA の CU のアクティビティが表示されます。

レポートは、次のような構成になっています。

  • Host
    OpenCL API Calls
    すべての OpenCL API 呼び出しがトレースされます。アクティビティ時間はホストの視点から測定されます。
    General
    clCreateProgramWithBinaryclCreateContextclCreateCommandQueue などの一般的な OpenCL API 呼び出しがトレースされます。
    Queue
    特定のコマンド キューに関連する OpenCL API 呼び出しがトレースされます。これには、clEnqueueNDRangeKernelclEnqueueMigrateMemObjects などのコマンドが含まれます。ユーザー アプリケーションで複数のコマンド キューが作成された場合は、このセクションにすべてのキューとそのアクティビティが表示されます。
    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 用に指定されたときに生成されます。