Review Profile Report and Timeline Trace for the Bloom8x Kernel - Review Profile Report and Timeline Trace for the Bloom8x Kernel - 2024.1 English - XD099

Vitis Tutorials: Hardware Acceleration (XD099)

Document_ID
XD099
Release_Date
2024-06-19
Version
2024.1 English
  1. Run the following commands to view the Timeline Trace report with the Bloom8x kernel.

    vitis_analyzer $LAB_WORK_DIR/build/split_buffer/kernel_8/hw/runOnfpga_hw.xclbin.run_summary 
    
  2. Zoom in to display the following Timeline Trace report.

    missing image

    • The Timeline Trace confirms that you achieved the execution schedule you expected.

      • There is an overlap of the read and compute with write operations between the first and second iterations.

      • The execution time of the first kernel run and the first data read are effectively “hidden” behind the write data transfer from host. This results in a faster overall run.

  3. From the Profile Report, Host Data Transfer: Host Transfer shows that the “data transfer” from the host CPU consumes more than the “Kernel Compute Time”.

    • The Host to Global Memory WRITE Transfer takes about 178 ms, which is higher compared to using a single buffer.

    • The Host to Global Memory READ Transfer takes about 38 ms.

  4. Kernels & Compute Unit: Kernel Execution shows that the kernel execution time (calculated by enqueing both compute times) is also higher than when you used a single buffer. When overlapping the host data transfer and kernel, the DDR memory is not exclusive to either the host or kernel which results in a lower performance data transfer. However, you can see that the overall performance is better here compared to the earlier results without splitting words.

When the Bloom8x kernel is used, you can also confirm from the reports that the kernel enqueue time for each compute is smaller than each host transfer. Therefore, there is no real benefit of using the Bloom16x kernel because you are limited by the transfer time from the host. The execution time of the Bloom16x kernel will be faster, but the kernel does not improve the overall application performance. You can confirm this fact by using the Bloom16x kernel in the next step.