下表列出了可用于 AI 引擎的预定义指标集配置,所列配置按分配给可用计数器的优先顺序排序。在
xrt.ini
文件中,所有这些指标名称均应采用小写,且分配到指标选择器 aie_profile_core_metrics
。
指标名称 | 事件 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 引擎是否存在数据通信问题。
指标名称 | 事件 ID | 描述 |
---|---|---|
Memory Stall Time | 23 | AI 引擎因存储器停滞而变为不活动的时间。 |
Stream Stall Time | 24 | AI 引擎因串流停滞而变为不活动的时间。 |
Lock Stall Time | 26 | AI 引擎处于锁定停滞的时间。 |
Cascade Stall Time | 25 | AI 引擎处于级联停滞的时间。 |
AI 引擎在多种情况下都有可能发生停滞:
- 如果单个核、多个核和/或 DMA 请求对同一个存储体进行多次访问,则可能发生存储器停滞。
- 如果串流上的数据生成与数据耗用速率不同,导致输入串流发生数据匮乏或者输出串流发生上溢,则可能发生串流停滞。
- 如果级联写入程序与级联读取程序的速率不同,则可能发生级联停滞。
- 如果窗口数据生产者与窗口数据使用者的迭代速率不同,则可能发生锁定停滞。
指标名称 | 事件 ID | 描述 |
---|---|---|
Vector Instruction Time | 37 | AI 引擎用于执行矢量指令的时间:矢量处理器指令和矢量数据加载/存储 |
Load Instruction Time | 38 | AI 引擎用于执行加载指令(将数据从存储器移至寄存器)的时间 |
Store Instruction Time | 39 | AI 引擎用于执行存储指令(将数据从寄存器移至存储器)的时间 |
Cumulative Instruction Time | 32 | AI 引擎用于存储器和串流访问以及锁定获取/释放的时间 |
所有这些指示符都允许您估算内核的效率。为了提升效率,您应最优化数据访问、多使用矢量指令替代标量指令,并尽可能对串流使用 128 位访问。
指标名称 | 事件 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) 值异常的数量 |
浮点异常导致错误结果。如果异常数量过多,或者代码关键区域内有单个异常,您可能就必须对浮点算法进行重新编码。
指标名称 | 事件 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 引擎用于对数据串流执行写入指令的时间。 |
指标名称 | 事件 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 引擎和存储器模块事件发射到可编程逻辑。
指标名称 | 事件 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 为单位) |
这些指标适用于对系统的总体输出写入带宽进行求值。
指标名称 | 事件 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 为单位) |
这些指标适用于对系统的总体输出读取带宽进行求值。