AI 引擎剖析 - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文
下表列出了可用于 AI 引擎的预定义指标集配置,所列配置按分配给可用计数器的优先顺序排序。在 xrt.ini 文件中,所有这些指标名称均应采用小写,且分配到指标选择器 aie_profile_core_metrics
表 1. heat_map Metric
指标名称 事件 ID 描述
Active Time 28 AI 引擎启用后变为活动状态的时间。
Stall Time 22 AI 引擎变为停滞状态的时间。此停滞包括 AI 引擎存储器停滞、串流停滞、级联停滞和锁定停滞。
Vector Instruction Time 37 AI 引擎在矢量处理器中执行指令的时间。
Cumulative Instruction Time 32 AI 引擎执行 load/store(加载/存储)、stream get/put(串流获取/放置)、lock acquire/release(锁定获取/释放)指令。
Active Utilization 衍生 AI 引擎保持主动执行指令而不停滞的时间。此百分比与 Active Time(活动时间)有关。
Vector Instruction Utilization 衍生 AI 引擎执行矢量指令的时间。此百分比与 Active Utilization(主动使用)时间(活动 - 停滞)有关。
这些指示符有助于您了解 AI 引擎中实现的内核的效率。您可将停滞时间与活动时间进行比较,以判定每个 AI 引擎是否存在数据通信问题。
表 2. stalls(停滞)指标
指标名称 事件 ID 描述
Memory Stall Time 23 AI 引擎因存储器停滞而变为不活动的时间。
Stream Stall Time 24 AI 引擎因串流停滞而变为不活动的时间。
Lock Stall Time 26 AI 引擎处于锁定停滞的时间。
Cascade Stall Time 25 AI 引擎处于级联停滞的时间。
AI 引擎在多种情况下都有可能发生停滞:
  • 如果单个核、多个核和/或 DMA 请求对同一个存储体进行多次访问,则可能发生存储器停滞。
  • 如果串流上的数据生成与数据耗用速率不同,导致输入串流发生数据匮乏或者输出串流发生上溢,则可能发生串流停滞。
  • 如果级联写入程序与级联读取程序的速率不同,则可能发生级联停滞。
  • 如果窗口数据生产者与窗口数据使用者的迭代速率不同,则可能发生锁定停滞。
表 3. execution(执行)指标
指标名称 事件 ID 描述
Vector Instruction Time 37 AI 引擎用于执行矢量指令的时间:矢量处理器指令和矢量数据加载/存储
Load Instruction Time 38 AI 引擎用于执行加载指令(将数据从存储器移至寄存器)的时间
Store Instruction Time 39 AI 引擎用于执行存储指令(将数据从寄存器移至存储器)的时间
Cumulative Instruction Time 32 AI 引擎用于存储器和串流访问以及锁定获取/释放的时间
所有这些指示符都允许您估算内核的效率。为了提升效率,您应最优化数据访问、多使用矢量指令替代标量指令,并尽可能对串流使用 128 位访问。
表 4. floating_point(浮点)指标
指标名称 事件 ID 描述
Floating-Point Overflow Exception 50 由 AI 引擎生成的浮点上溢异常的数量
Floating-Point Underflow Exception 51 由 AI 引擎生成的浮点下溢异常的数量
Floating-Point Invalid Exception 52 由 AI 引擎生成的浮点无效异常的数量
Floating-point Divide by Zero Exception 53 由 AI 引擎生成的浮点除以零 (0) 值异常的数量
浮点异常导致错误结果。如果异常数量过多,或者代码关键区域内有单个异常,您可能就必须对浮点算法进行重新编码。
表 5. stream_put_get 指标
指标名称 事件 ID 描述
Cascade Read Instruction Time 42 AI 引擎用于对级联串流执行读取指令的时间。
Cascade Write Instruction Time 43 AI 引擎用于对级联串流执行写入指令的时间。
Stream Read Instruction Time 40 AI 引擎用于对数据串流执行读取指令的时间。
Stream Write Instruction Time 41 AI 引擎用于对数据串流执行写入指令的时间。
表 6. aie_trace 指标
指标名称 事件 ID 描述
AI Engine Trace Word Count 75 生成的 AI 引擎追踪量。
AI Engine Trace Stall Count 76 生成的 AI 引擎追踪反压事件量。
Memory Module Trace Word Count 79 生成的存储器模块追踪量。
Memory Module Trace Stall Count 80 生成的存储器模块追踪反压事件量。
这些指标(尤其是停滞计数)有助于定义正确数量的串流,以便将 AI 引擎和存储器模块事件发射到可编程逻辑。
表 7. write_bandwidths 指标
指标名称 事件 ID 描述
Active Time 28 AI 引擎启用后变为活动状态的时间。
Stream Write Instruction Time 41 AI 引擎用于对数据串流执行写入指令的时间。
Cascade Write Instruction Time 43 AI 引擎用于对级联串流执行写入指令的时间。
Stall Time 22 AI 引擎变为停滞状态的时间。此停滞包括 AI 引擎存储器停滞、串流停滞、级联停滞和锁定停滞。
Stream Write Bandwidth (MB/s) 衍生 串流端口的写入带宽(以 MB/s 为单位)
Cascade Write Bandwidth (MB/s) 衍生 级联端口的写入带宽(以 MB/s 为单位)
这些指标适用于对系统的总体输出写入带宽进行求值。
表 8. read_bandwidths Metric
指标名称 事件 ID 描述
Active Time 28 AI 引擎启用后变为活动状态的时间。
Stream Read Instruction Time 40 AI 引擎用于对数据串流执行读取指令的时间。
Cascade Read Instruction Time 42 AI 引擎用于对级联串流执行读取指令的时间。
Stall Time 22 AI 引擎变为停滞状态的时间。此停滞包括 AI 引擎存储器停滞、串流停滞、级联停滞和锁定停滞。
Stream Read Bandwidth (MB/s) 衍生 串流端口的读取带宽(以 MB/s 为单位)
Cascade Read Bandwidth (MB/s) 衍生 级联端口的读取带宽(以 MB/s 为单位)

这些指标适用于对系统的总体输出读取带宽进行求值。