解读剖析汇总 - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

剖析汇总 (Profile Summary) 包含主机应用和内核的大量实用统计数据。此报告能够笼统展示您应用中的功能瓶颈。下表显示了剖析汇总描述。

Settings

显示此报告和 XRT 配置设置。

Summary

显示汇总统计数据,包括器件执行时间和器件电源。

Kernels & Compute Units

下表显示了已调度和已执行的所有内核功能的剖析汇总数据。

表 1. Kernel Execution
名称 描述
Kernel 内核名
Enqueues 内核排队次数。如果内核仅排队一次,则以下统计数据全部相同。
Total Time 所有队列的运行时间总和(按 OpenCL 执行模型下的 START 到 END 来测量)(以 ms 为单位)
Minimum Time 所有队列的最小运行时间
Average Time 平均内核运行时间(以 ms 为单位)

(总时间) / (队列数)

Maximum Time 所有队列的最大运行时间(以 ms 为单位)

下表显示了顶层内核函数的剖析汇总数据。

表 2. Top Kernel Execution
名称 描述
Kernel 内核名
Kernel Instance Address 内核实例的主机地址(十六进制)
Context ID 主机上的上下文 ID
Command Queue ID 主机上的命令队列 ID
Device 在其中执行内核的器件的名称(格式:<device>-<ID>
Start Time 执行开始时间(以 ms 为单位)
Duration 执行持续时间(以 ms 为单位)

下表显示了器件上所有计算单元的剖析汇总数据。

表 3. Compute Unit Utilization
名称 描述
Compute Unit 计算单元名
Kernel 与此计算单元关联的内核
Device 器件名称(格式:<device>-<ID>
Calls 计算单元的调用次数
Dataflow Execution 指定 CU 是否随数据流一起执行
Max Parallel Executions 数据流区域中的执行次数
Dataflow Acceleration 显示因数据流执行而提升的性能
CU Utilization (%) 显示 CU 耗用的内核总计运行时间的百分比
Total Time 所有调用的运行时间总和(以 ms 为单位)
Minimum Time 所有调用的最小运行时间(以 ms 为单位)
Minimum runtime of all calls (总时间) / (工作组数)
Maximum Time 所有调用的最大运行时间(以 ms 为单位)
Clock Frequency 用于指定加速器的时钟频率(以 MHz 为单位)

下表显示了器件上计算单元的运行时间和停滞的剖析汇总数据。

表 4. Compute Unit Running Times & Stalls
名称 描述
Compute Unit 计算单元名
Execution Count 计算单元的执行计数
Running Time 计算单元运行的总时间(以 µs 为单位)
Intra-Kernel Dataflow Stalls (%) 计算单元停滞处理内核内部串流的时间百分比
External Memory Stalls (%) 计算单元停滞处理外部存储器访问的时间百分比
Inter-Kernel Pipe Stalls (%) 计算单元停滞处理内核间流水线访问的时间百分比

Kernel Data Transfers

下表显示了内核到全局存储器的数据传输。

表 5. Data Transfer
名称 描述
Compute Unit Port 计算单元/端口的名称
Kernel Arguments 连接到此端口的内核实参的列表
Device 器件名称(格式:<device>-<ID>
Memory Resources 该端口访问的存储器资源
Transfer Type 内核数据传输的类型
Number of Transfers AXI 传输事务内的内核数据传输次数
注释: 这可能包含 printf 传输。
Transfer Rate 内核数据传输速率(以 MB/s 为单位):

传输速率 = (总字节数) / (总计 CU 执行时间)

其中总计 CU 执行时间是 CU 保持活动状态的总时间
Avg Bandwidth Utilization (%) 内核数据传输的平均带宽:

带宽使用率 (%) = (100 * 传输速率) / (0.6 * 最大理论速率)

Avg Size 内核数据传输的平均大小(以 KB 为单位):

平均大小 = (总 KB 数) / (传输次数)

Avg Latency 内核数据传输的平均时延(以 ns 为单位)

下表显示了内核到全局存储器的顶层数据传输。

表 6. Top Data Transfer
名称 描述
Compute Unit 计算单元名
Device 器件名
Number of Transfers 写入和读取数据传输数量
Avg Bytes per Transfer 内核数据传输的平均字节数:

平均字节数 = (总字节数) / (传输次数)

Transfer Efficiency (%) 内核数据传输的效率:

效率 = (平均字节数) / min((存储器字节宽度 * 256), 4096)

Total Data Transfer 内核传输的数据总量(以 MB 为单位):

数据总量 = (写入总量) + (读取总量)

Total Write 内核写入的数据总量(以 MB 为单位)
Total Read 内核读取的数据总量(以 MB 为单位)
Total Transfer Rate 平均总数据传输速率(以 MB/s 为单位):

总传输速率 = (数据传输总量) / (总计 CU 执行时间)

其中总计 CU 执行时间是 CU 保持活动状态的总时间

下表显示了数据传输串流。

注释: 仅当存在串流时,该表才会显示
表 7. Data Transfer Streams
名称 描述
Master Port 主计算单元和端口的名称
Master Kernel Arguments 连接到此端口的内核实参的列表
Slave Port 从计算单元和端口的名称
Slave Kernel Arguments 连接到此端口的内核实参的列表
Device 器件名称(格式:<device>-<ID>
Number of Transfers 串流数据包数
Transfer Rate 串流数据传输速率(以 MB/s 为单位):

传输速率 = (总字节数) / (总计 CU 执行时间)

其中总计 CU 执行时间是 CU 保持活动状态的总时间

Avg Size 内核数据传输的平均大小(以 KB 为单位):

平均大小 = (总 KB 数) / (传输次数)

Link Utilization (%) 链接使用率 (%):

链接使用率 = 100 * (链接忙碌周期数 - 链接停滞周期数 - 链接匮乏周期数) / (链接忙碌周期数)

Link Starve (%) 链接匮乏 (%):

链接匮乏 = 100 * (链接匮乏周期数) / (链接忙碌周期数)

Link Stall (%) 链接停滞 (%):

链接停滞 = 100 * (链接停滞周期数) / (链接忙碌周期数)

Host Data Transfers

下表显示了主机与器件存储器之间通过 PCI Express® 链路的所有写入传输的剖析数据。

表 8. Top Memory Writes
名称 描述
Buffer Address 指定缓冲器的地址位置
Context ID 主机上的 OpenCL 上下文 ID
Command Queue ID 主机上的 OpenCL 命令队列 ID
Start Time 写入操作开始时间(以 ms 为单位)
Duration 写入操作持续时间(以 ms 为单位)
Buffer Size 正在传输的数据量(以 KB 为单位)
Writing Rate 数据传输速率(以 MB/s 为单位):

(缓冲器大小)/(持续时间)

下表显示了主机与器件存储器之间通过 PCI Express® 链路的所有读取传输的剖析数据。

表 9. Top Memory Reads
名称 描述
Buffer Address 指定缓冲器的地址位置
Context ID 主机上的上下文 ID
Command Queue ID 主机上的命令队列 ID
Start Time 读取操作开始时间(以 ms 为单位)
Duration 读取操作持续时间(以 ms 为单位)
Buffer Size 正在传输的数据量(以 KB 为单位)
Reading Rate 数据传输速率(以 MB/s 为单位):

(缓冲器大小) / (持续时间)

下表显示了主机到全局存储器的数据传输。

表 10. Data Transfer
名称 描述
Context:Number of Devices 上下文 ID 和上下文中的器件数
Transfer Type 内核主机传输的类型
Number of Buffer Transfers 主机缓冲器传输次数
注释: 这可能包含 printf 传输。
Transfer Rate 主机缓冲器传输速率(以 MB/s 为单位):

传输速率 = (总字节数) / (以 µs 为单位的总时间)

Avg Bandwidth Utilization (%) 主机缓冲器传输的平均带宽:

带宽使用率 (%) = (100 * 传输速率) / (最大理论速率)

Avg Size 主机缓冲器传输的平均大小(以 KB 为单位):

平均大小 = (总 KB 数) / (传输次数)

Total Time 主机缓冲器传输持续时间总和(以 ms 为单位)
Avg Time 主机缓冲器传输平均持续时间(以 ms 为单位)

API Calls

下表显示在主机应用中执行的所有 OpenCL 主机 API 函数调用的剖析数据。顶部显示的条形图表示 API 调用时间占总时间的百分比。

表 11. API Calls
名称 描述
API Name API 函数名称(例如,clCreateProgramWithBinaryclEnqueueNDRangeKernel
Calls 由主机应用对此 API 执行的调用次数
Total Time 所有调用的运行时间总和(以 ms 为单位)
Minimum Time 所有调用的最小运行时间(以 ms 为单位)
Average Time 平均时间(以 ms 为单位)

(总时间) / (调用次数)

Maximum Time 所有调用的最大运行时间(以 ms 为单位)

Device Power

下表显示了器件电源的剖析数据。

表 12. Device Power
名称 描述
Power Used By Platform 显示数据中心加速卡上 3 条电源轨的折线图:
  • 12V 辅助电源
  • 12V PCIe
  • 内部电源
显示卡的长期功耗 (W) 使用情况。
Temperature 针对温度读数为非零值的每个器件创建一张图表。针对读出以 (°C) 为单位的每个温度传感器显示一条折线。
Fan Speed 针对风扇速度读数为非零值的每个器件创建一张图表。风扇速度以 RPM 来计量。

Kernel Internals

下表显示了以微秒 (µs) 为单位的计算单元运行时间,并报告停滞时间占运行时间的百分比。

提示: “Kernel Internals”选项卡报告以 µs 为单位的时间,而“Profile Summary”报告其余部分则以毫秒 (ms) 为单位来报告时间。
表 13. CU Runtime and Stalls
名称 描述
Compute Unit 表示计算单元实例名称
Running Time 报告 CU 的总运行时间(以 µs 为单位)
Intra-Kernel Dataflow Stalls (%) 报告在内核之间进行数据串流时,停滞中耗用的运行时间百分比
External Memory Stalls (%) 报告在 CU 外部进行存储器传输时,停滞中耗用的运行时间百分比
Inter-Kernel Pipe Stalls (%) 报告串流数据进出 CU 期间,停滞中耗用的运行时间百分比

下表显示了计算单元上特定端口的数据传输。

表 14. CU Port Data Transfers
名称 描述
Port 表示计算单元上的端口名称
Compute Unit 表示计算单元实例名称
Write Time 指定端口上的总计数据写入时间(以 µs 为单位)
Outstanding Write (%) 指定写入进程中耗用的运行时间百分比
Read Time 指定端口上的总计数据读取时间(以 µs 为单位)
Outstanding Read (%) 指定读取进程中耗用的运行时间百分比

下表显示了计算单元上功能端口的数据传输。

表 15. Functional Port Data Transfers
名称 描述
Port 端口名称
Function 功能名称
Compute Unit 计算单元名
Write Time 端口包含未完成的写入的总时间(以 µs 为单位)
Outstanding Write (%) 端口包含未完成的写入的时间百分比
Read Time 端口包含未完成的读取的总时间(以 µs 为单位)
Outstanding Read (%) 端口包含未完成的读取的时间百分比

下表显示了计算单元上运行时间和停滞时间。

表 16. Functions
名称 描述
Compute Unit 计算单元名
Function 功能名称
Running Time 总计功能运行时间(以 ms 为单位)
Intra-Kernel Dataflow Stalls 功能停滞处理内核内部串流的时间百分比(以 ms 为单位)
External Memory Stalls 功能停滞处理外部存储器访问的时间百分比(以 ms 为单位)
Inter-Kernel Pipe Stalls 功能停滞处理内核间流水线访问的时间百分比(毫秒)

Shell Data Transfers

下表显示 DMA 数据传输。

表 17. DMA Data Transfer
名称 描述
Device 器件名称(格式:<device>-<ID>
Transfer Type 数据传输的类型
Number of Transfers AXI 传输事务内的数据传输次数
Transfer Rate 数据传输速率(以 MB/s 为单位):

传输速率 = (总字节数) / (以 µs 为单位的总时间)

Total Data Transfer 已传输的数据总量(以 MB 为单位)
Total Time 数据传输的总计持续时间(以 ms 为单位)
Avg Size 数据传输的平均大小(以 KB 为单位):

平均大小 = (总 KB 数) / (传输次数)

Avg Latency 数据传输的平均时延(以 ns 为单位)

对于 DMA 旁路和全局存储器到全局存储器数据传输,请参阅以上“DMA 数据传输”表。

NoC Counters

提示: 除非在实现期间特意生成此数据,否则此数据不予显示。

NoC 计数器显示的是 NoC 计数器读取和 NoC 计数器写入信息。仅当存在非零 NoC 计数器数据时,才会显示这些部分。

每个部分都有 1 个表,其中包含汇总数据以及传输速率和时延的折线图。这些图形可包含多个 NoC 计数器,以便您通过该表格的“Chart”(图表)列中的复选框来开关计数器。

根据设计,可能可以将 NoC 计数器关联到 CU 端口。在此情况下,CU 端口会显示在表格中,选中此端口即可对系统框图、剖析汇总以及包含 CU 端口作为可选对象的任何其它视图进行交叉探测。

表 18. NoC Counters Read or Write
名称 描述
Compute Unit Port 计算单元/端口的名称
Name NoC 端口名称
Traffic Class 流量类的类型
Requested QoS QoS (MB/s):请求的服务质量(以 MB/s 为单位)
Min Transfer Rate 数据传输的最小速率(以 MB/s 为单位)
Avg Transfer Rate 数据传输的平均速率(以 MB/s 为单位)
Max Transfer Rate 数据传输的最大速率(以 MB/s 为单位)
Avg Size 数据传输的平均大小(以 KB 为单位):

平均大小 = (总 KB 数) / (传输次数)

“Min Latency” 数据传输的最小时延(以 ns 为单位)
“Avg Latency” 数据传输的平均时延(以 ns 为单位)
“Max Latency” 数据传输的最大时延(以 ns 为单位)

AI Engine Counters

如果存在非零 AI 引擎计数器数据,就会显示 AI 引擎计数器。如果存在不兼容的 AI 引擎计数器配置,则这部分会显示 1 条消息称此配置不支持性能剖析。

这部分包含 1 个表,其中包含汇总数据以及活动时间和使用情况的折线图。仅当启用停滞剖析时,使用情况图表才可用。

这些图形可包含多个 AI 引擎计数器,以便您通过该表格的“Chart”列中的复选框来开关计数器。

可以对拼块 (tile) 和 AI 引擎阵列与 Graph 视图进行交叉探测。

注释: 根据 AI 引擎计数器的配置方式,可能显示一个或多个指标列。这些指标列包括存储器停滞、串流停滞、调用实例时间、组错误时间等。欲知详情,请参阅 Versal ACAP AI 引擎编程环境用户指南 (UG1076)
表 19. AI Engine Counters
名称 描述
Tile AI 引擎拼块 [列, 行]
Clock Frequency (MHz) 用于 AI 引擎拼块的时钟频率(以 MHz 为单位)