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

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

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

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

  1. 使用 --event-trace 和其它相应的标志来编译 graph。

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

    aiecompiler --verbose --pl-freq=100 --workdir=./myWork \
    --event-trace-port=gmio --event-trace=runtime \
    --num-trace-streams=1 --xlopt=0 --include="./" \ 
    --include="./src" --include="./src/kernels" --include="./data" \
    ./src/graph.cpp
    注释:
    • 前述示例演示了使用 --event-trace=runtime 配置编译设计的操作。该选项可用于配置 AI 引擎在运行时期间捕获的事件的类型。
    • --event-trace-port=gmio 选项使用 GMIO 来捕获事件追踪数据。该选项使用 AI 引擎到 NoC 事件追踪路径。替代方法是使用 PLIO,它使用 AI 引擎到 PL 路径来捕获事件追踪数据。此方法使用编程逻辑资源捕获从 AI 引擎到 DDR 的数据。
    • 赛灵思建议使用 gmio 选项作为 event-trace-port(事件追踪端口)配置。该选项使用 AI 引擎到 NoC 事件追踪路径。这样即可避免使用编程逻辑资源,并避免由于 PL 资源使用而导致的时序错误。
    • GMIO = AI 引擎 NoC 事件路径。GMIO 是默认事件追踪端口配置。
    • PLIO = AI 引擎到 PL 事件追踪路径,此外还使用 PL 资源来捕获追踪数据。
  2. 使用 Vitis 编译器来编译和链接设计。

    编译 AI 引擎 graph 应用后,必须构建系统的其它要素,如 使用 Vitis 工具流程来集成应用 中所述。在 libadf.a 文件中从 AI 引擎编译器启用 --event-trace 后,由 Vitis 编译器生成的系统硬件会包含为 PS 应用编译的 ELF 文件、为 AI 引擎处理器编译的 ELF 文件以及 PL 的 XCLBIN 文件。这些都是在硬件上运行系统所需的要素。

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

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

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