事件追踪构建流程 - 2023.2 简体中文

AI 引擎工具和流程用户指南 (UG1076)

Document ID
UG1076
Release Date
2023-12-04
Version
2023.2 简体中文

事件追踪构建流程如下所示:

  1. 使用 --event-trace 和其他相应的标志来编译计算图。

    用于事件追踪的 AI 引擎编译器命令示例如下所示:

    aiecompiler --verbose --pl-freq=100 --workdir=./myWork \
    --event-trace-port=gmio --event-trace=runtime \
    --num-trace-streams=8 --xlopt=0 --include="./" \ 
    --include="./src" --include="./src/kernels" --include="./data" \
    ./src/graph.cpp

    如需获取有关使用统一的命令行接口的示例,请参阅 Vitis 统一软件平台文档:应用加速开发(UG1393)

    注释:
    • 前述示例演示了使用 --event-trace=runtime 配置编译设计的操作。该选项可用于配置 AI 引擎在运行时期间捕获的事件的类型。
    • --event-trace-port=gmio 选项使用 GMIO 来捕获事件追踪数据。该选项使用 AI 引擎到 NoC 事件追踪路径。替代方法是使用 PLIO,它使用 AI 引擎到 PL 路径来捕获事件追踪数据。此方法使用编程逻辑资源捕获从 AI 引擎到 DDR 的数据。
      • gmioAI 引擎 NoC 事件路径。GMIO 是默认事件追踪端口配置。
      • plioAI 引擎到 PL 事件追踪路径。事件数据会被传输到 PL,并存储在 BRAM 和 URAM 资源内。此附加 PL 资源可能在硬件设计侧引发时序错误。
      注释: 您应使用编译器选项 --graph-iterator-event 基于计算图迭代来延迟事件追踪数据。如需了解有关延迟事件追踪的更多信息,请参阅 XSDB 流程 中的 表 1XRT 流程 中的 表 1
  2. 使用 Vitis 编译器来编译和链接设计。

    编译 AI 引擎计算图应用后,必须构建系统的其他要素,如 Vitis 统一软件平台文档:应用加速开发(UG1393)构建和运行系统中所述。在 libadf.a 文件中从 AI 引擎编译器启用 --event-trace 后,由 Vitis 编译器生成的系统硬件会包含为 PS 应用编译的 ELF 文件、为 AI 引擎处理器编译的 ELF 文件以及 PL 的 XCLBIN 文件。这些都是在硬件上运行系统所需的要素。

  3. 完成链接并创建器件二进制文件后,运行 Vitis 编译器 --package 步骤即可创建启动器件所需的 sd_card 文件夹和文件,如 Vitis 统一软件平台文档:应用加速开发(UG1393)封装 Versal 设计中所述。此步骤会对为系统构建 BOOT.BIN 文件所需的所有一切进行封装。为器件封装启动文件时,还必须指定 --package.defer_aie_run 以伴随 ELF 文件一起加载 AI 引擎应用,但等待至 graph.run 发出指令后再运行该应用,如 AI 引擎内核与计算图编程指南 (UG1079)计算图执行控制中所述。

    aiecompiler --event-trace 选项具有一项功能特性,您可使用 runtime 实参编译自己的设计以捕获数据。您可使用该选项来编译 AI 引擎计算图,对其进行设置用于事件追踪,并指定要在运行时捕获的剖析数据的类型:functionsfunctions_partial_stallsfunctions_all_stalls。因此,您无需重新编译设计以捕获不同类型的数据。使用该功能特性可以减少重新编译计算图和重新封装设计的需求。

    表 1. 预定义的事件追踪级别中支持的事件
    事件类型 预定义的事件追踪级别
    functions functions_partial_stalls functions_all_stalls
    函数调用/返回 已捕获 已捕获 已捕获
    串流停滞 不适用 已捕获 已捕获
    级联停滞 不适用 已捕获 已捕获
    锁定停滞 不适用 已捕获 已捕获
    存储器停滞 不适用 不适用 已捕获
    函数调用/返回
    调用和返回内核函数时生成的事件。
    串流停滞
    当核停滞时生成的事件。停滞原因可能是输入处无数据或者串流输出处存在来自核的反压。
    级联停滞
    当核停滞时生成的事件。停滞原因可能是输入处无数据或者串流输出处存在来自核的反压。
    锁定停滞
    如果由于当前正在获取锁定而导致核停滞,则会生成此类事件。
    存储器停滞
    如果由于存储器冲突导致核停滞,则会生成此类事件。