从命令行编译和运行 graph - 2022.1 简体中文

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

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文
  1. 要编译 graph,请执行以下命令(请参阅 编译 AI 引擎 graph 应用 以获取更多详细信息)。
    aiecompiler  project.cpp

    此程序名为 project.cppAI 引擎编译器需读取输入 graph、将其编译到 AI 引擎阵列中、生成各项报告,并在 Work 目录中生成输出文件。

  2. 将 C++ 输入解析到以 JavaScript 对象表示法 (JSON) 来表示的图形中间形式后,AI 引擎 编译器会执行资源映射和调度分析,并将 graph 中的内核节点映射到 AI 引擎阵列中的处理核,将数据窗口映射到存储体。JSON 表示法将以映射信息来加以扩充。每个 AI 引擎还需要对映射到它的所有内核进行调度。

    首先将输入 graph 分区为映射到同一个核的多个内核分组。

    project_mapping_analysis_report.txt 文件中还可按表格报告形式来查看映射器输出。此形式可用于报告节点到处理核的映射以及数据窗口到存储体的映射。处理器间通信则会相应采用双存储体形式作为乒乓缓冲器来进行存储。

  3. AI 引擎编译器会分配必要的锁定、存储缓冲器以及 DMA 通道和描述符,并生成布线信息,以供将 graph 映射到 AI 引擎阵列。它会为每个核综合一个主程序,用于调度核上的所有内核,并在缓冲器之间实现必要的锁定机制和数据拷贝。每个核的 C 语言程序均使用 Synopsys Single Core Compiler(新思单核编译器)进行编译,以生成可加载的 ELF 文件。AI 引擎编译器还会生成控制 API 以从 main 应用和仿真器配置脚本 scsim_config.json 来控制 graph 初始化、执行和终止。这些都存储在 Work 目录内的各子文件夹下(请参阅 编译 AI 引擎 graph 应用 以获取更多详细信息)。
  4. 完成 AI 引擎 graph 编译后,AI 引擎编译器会编写名为 <graph-file-name>.aiecompile_summary 的编译结果汇总报告,可在 Vitis 分析器内查看。此汇总包含各报告的集合,以及反映已编译的构建中实现的 AI 引擎应用的状态。此汇总报告会写入 AI 引擎编译器的工作目录,该目录由 --workdir 选项指定,默认为 ./Work

    要打开 AI 引擎编译器汇总,请使用以下命令:

    vitis_analyzer ./Work/graph.aiecompile_summary
  5. 要运行 graph,请执行以下命令(请参阅 AI 引擎 graph 应用仿真 以获取更多详细信息)。
    aiesimulator –-pkg-dir=./Work

    这样即可启动基于 SystemC 的仿真器,且控制程序为 main 应用。控制程序中使用的 graph API 可配置 AI 引擎阵列,包括设置静态布线、DMA 编程、将 ELF 文件加载到各核上,然后发起 AI 引擎阵列执行。

    仿真结束时,会在 aiesimulator_output 目录内生成输出数据,它应与引用数据相匹配。

    graph 可在器件启动时在硬件中加载,或者也可以通过主机应用来加载。如需了解有关在硬件中部署 graph 以及与其关联的流程的详细信息,请参阅 使用 Vitis 工具流程来集成应用 中所提供的详细描述。

注释:AI 引擎 graph 的后续编译中,仅对已修改的 AI 引擎进行重新编译。任何未修改的内核都不会进行重新编译。