从命令行编译和运行计算图 - 2023.2 简体中文

AI 引擎内核与计算图编程指南 (UG1079)

Document ID
UG1079
Release Date
2023-12-04
Version
2023.2 简体中文
  1. 要编译计算图,请执行以下命令(请参阅 AI 引擎工具和流程用户指南(UG1076) 中的对 AI 引擎计算图应用进行编译以获取更多详细信息)。
    aiecompiler  project.cpp

    此程序名为 project.cppaiecompiler 会读取指定的输入计算图、将其编译到 AI 引擎阵列中、生成各项报告,并在 Work 目录中生成输出文件。

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

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

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

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

    要打开 aiecompiler 汇总,请使用以下命令:

    vitis -a ./Work/graph.aiecompile_summary
  5. 要运行编译计算图,请执行以下命令(请参阅 AI 引擎工具和流程用户指南(UG1076) 中的对 AI 引擎计算图应用进行仿真以获取更多详细信息)。
    aiesimulator –-pkg-dir=./Work

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

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

    计算图可在器件启动时在硬件中加载,或者也可以通过主机应用来加载。如需了解有关在硬件中部署计算图以及与其关联的流程的详细信息,请参阅 Vitis 统一软件平台文档:应用加速开发(UG1393) 中的构建和运行系统

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