AI 引擎编译器选项 - 2022.1 简体中文

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

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文
表 1. AI 引擎选项
选项名称 描述
--constraints=<string> 约束(位置、边界框等)可使用 JSON 文件指定。该选项支持您指定一个或多个约束文件。
--heapsize=<int> 每个 AI 引擎使用的堆大小(以字节为单位)

对于栈、堆和同步缓冲器(32 字节,包括 graph 运行迭代数信息),可分配最多 32768 字节的数据存储器。默认堆大小设置为 1024 字节。将堆大小更改为其它值之前,请确保栈、堆和同步缓冲器大小总和不超过 32768 字节。

该选项用于分配文件作用域内的任意剩余数据,这些数据在用户 graph 中均未显式连接。

--stacksize=<int> 每个 AI 引擎使用的栈大小(以字节为单位)

对于栈、堆和同步缓冲器(32 字节),可分配最多 32768 字节的数据存储器。默认栈大小设置为 1024 字节。将栈大小更改为其它值之前,请确保栈、堆和同步缓冲器大小总和不超过 32768 字节。

该选项用作为标准编译器调用约定,包括栈分配的局部变量和寄存器溢出。

--pl-freq=<value> 为所有 PLIO 指定接口频率(以 MHz 为单位)。默认频率为 AI 引擎频率的四分之一,支持的最大频率为 AI 引擎频率的一半。在 graph 中提供了每个接口特定的 PL 频率。
--pl-register-threshold=<value> 为寄存的 AI 引擎到 PL 交汇指定频率(以 MHz 为单位)阈值。默认频率为 AI 引擎频率的八分之一,视特定器件速度等级而定。
注释: 如果值高于 AI 引擎阵列频率的四分之一,则将被忽略,并改用四分之一值。
表 2. CDO 选项
选项名称 描述
--broadcast-enable-core 使用广播启用与 graph 关联的所有 AI 引擎。该选项会在阵列中保留一条广播通道,用于核的使能。默认值为 true。
表 3. 编译器调试选项
选项名称 描述
--adf-api-log-level=<value> ADF API log 日志级别。可用的值如下:
  • 0:错误
  • 1:级别 0 + 警告
  • 2:级别 1 + 参考消息
  • 3:级别 2 + 调试消息

默认值为 2。

--kernel-linting 执行 graph 与内核之间的一致性检查。默认为 false。
--known-tripcount 将未知循环次数转换为已知循环次数。
--quiet 禁止 AI 引擎编译器输出。
--verbose AI 引擎编译器详细输出,在编译各阶段发射编译器消息。这些调试和追踪 log 日志可提供有关编译进程的实用消息。
表 4. 执行目标选项
选项名称 描述
--target=<hw|x86sim> AI 引擎编译器支持多种构建目标。默认值为 hw
  • hw 目标会生成 libadf.a 以供在目标平台上的硬件器件中和在硬件仿真中使用。
  • x86sim 目标会编译代码以供在x86 simulator(x86 仿真器)中使用,如 x86 功能仿真器 中所述。
表 5. 文件选项
选项名称 描述
--include=<string> 该选项可用于在 include 路径内包含额外目录,以供编译器前端处理。

指定一个或多个 include 目录。

--output=<string> 为输入数据流 graph 文件指定由前端生成的 output.json 文件。此输出文件会传递至后端,用于 AI 引擎器件的映射和代码生成。对于其它类型的输入,忽略此选项。
--output-archive=<string> 指定输出存档名称,其中将包含已编译的 AI 引擎工件。默认值为 libadf.a
--platform=<string>

指向 Vitis 平台文件的路径,执行硬件设计及其 RTL 协同仿真时,此平台文件用于定义可用的硬件和软件组件。可采用平台规范 (XPFM) 格式或硬件规格 (XSA) 格式。

--workdir=<string>

默认编译器将所有输出都写入当前目录中名为 Work 的子目录。该选项可用于指定其它输出目录。

表 6. 常规选项
选项名称 描述
--help 列出可用的 AI 引擎编译器选项,按此处所列出的分组进行排序。
--help-list 显示 AI 引擎编译器选项的字母列表。
--version 显示 AI 引擎编译器的版本。
表 7. 其它选项
选项名称 描述
--disable-multirate 禁用 ADF graph 中的多重速率。默认为 false。
--no-init 该选项用于禁用 AI 引擎数据存储器中的窗口缓冲器的初始化。该选项能够加速将二进制镜像加载到 SystemC-RTL 协同仿真框架中。默认为 false。
提示: 这不影响静态初始化的查找表。
--nodot-graph 默认情况下,AI 引擎编译器会生成 .dot.png 文件,以在 AI 引擎上直观显示用户指定的 graph 及其分区。该选项可用于消除 DOT graph 输出。默认为 false。
表 8. 模块专用选项
选项名称 描述
--Xchess=<string> 该选项可用于将内核专用选项传递给 CHESS 编译器,此编译器用于为每个 AI 引擎编译代码。

选项字符串指定为 <kernel-function>:<optionid>=<value>。在映射指定内核函数的 AI 引擎上编译生成的源文件期间包含该选项字符串。

--Xelfgen=<string> 该选项可用于将附加命令行选项传递给编译器的 ELF 生成阶段,此阶段当前作为 make 命令来运行,用于构建所有 AI 引擎 ELF 文件。

例如,为了将并行编译数量限制为 4,请写入 -Xelfgen="-j4"

注释: 如果编译期间,log 日志中出现 bad_alloc 错误,或者如果 Vitis IDE 崩溃,可能是由于工作站上内存不足而导致的。除了增大机器上可用内存外,还有一种可行的变通方法是在代码生成阶段限制编译器使用的并行度。具体方法是在 GUI 中指定编译器 CodeGen 选项 -j1-j2,或者在命令行上指定 -Xelfgen=-j1-Xelfgen=-j2
--Xmapper=<string> 该选项可用于将其它命令行选项传递到编译器的映射器阶段。例如:
--Xmapper=DisableFloorplanning

如果设计在映射或布线阶段无法收敛,或者如果您要尝试通过减少存储体冲突来提升性能,则可尝试这些选项。

请参阅 映射器和布线器选项 以获取选项列表及其描述。

--Xpreproc=<string> 该选项可用于将常规选项传递到PREPROCESSOR阶段,用于执行所有源码编译 (AIE/PS/PL/x86sim)。例如:
--Xpreproc=-D<var>=<value>
--Xpslinker=<string> 该选项用于将常规选项传递到PS LINKER阶段。例如:
--Xpslinker=-L<libpath> -l<libname>
--Xrouter=<string> 该选项用于将常规选项传递到ROUTER阶段。例如:
-Xrouter=dmaFIFOsInFreeBankOnly
--fast-floats 该选项支持快速实现线性浮点标量运算,例如,add、sub、mul 和 compare。
--fast-nonlinearfloats 该选项支持快速实现非线性浮点标量运算,例如,sine/cosine、sqrt 和 inv。
--fastmath 该选项支持快速实现 float2fix、fplt 和 fpge。
注释:AI 引擎 graph 的后续编译中,仅对已修改的 AI 引擎进行重新编译。任何未修改的内核都不会进行重新编译。
表 9. 事件追踪选项
选项名称 描述
--event-trace=<value>

其中,<value> 为以下值之一:

  • functions
  • functions_partial_stalls
  • functions_all_stalls
  • runtime
事件追踪配置值。其中指定的 <value> 表示:
  • 不含停滞的函数转换视图。
  • 含串流/锁定/级联停滞的函数转换视图。
  • 含所有停滞(串流/锁定/级联/存储器)的函数转换视图。
  • 运行时事件追踪配置。
--event-trace-port=<value>
  • plio
  • gmio
设置 AI 引擎事件追踪端口。默认值为 gmio赛灵思建议使用 gmio 作为 event-trace-port(事件追踪端口)配置。如需了解更多信息,请参阅 事件追踪构建流程
  • AI 引擎事件追踪端口设置为 plio
  • AI 引擎事件追踪端口设置为 gmio
--num-trace-streams=<int> 表示追踪串流的数量。默认值为 16。
--trace-plio-width=<int> 表示追踪串流的 PLIO 宽度。默认值为 64。允许的值为 32 和 64。
表 10. 最优化选项
选项名称 描述
--xlopt=<int> 基于 opt 级别启用内核最优化组合。允许的值为 0 到 2;默认值为 1。
  • xlopt=1
    • 自动编译堆大小:使用内核分析来自动计算每个 AI 引擎的堆要求,由此保证易用性。因此,您无需指定堆大小。
    • 指导信息:通过提供指导信息来高亮未对齐的变量、可能由映射器分配的全局阵列、restrict 的不当使用以及可能出现的先读取后写入冲突。
  • xlopt=2
    • 自动内联:如果可自动内联函数,则执行此操作,即使这些函数未声明为 __inlineinline 也是如此。
    • 对展开的循环进行循环剥离:通过剥离,使循环迭代次数成为展开因子的倍数。基于循环的迭代次数和利益启发,将循环拆分为多个循环,并在拆分的循环上添加平铺编译指示。
    • 编译指示插入:在内核代码中自动推断和插入编译指示。
      注释: 编译器最优化 (xlopt > 0) 可能降低调试可视性。
--Xxloptstr=<string> 用于在 xlopt 级别 2 中启用/禁用最优化的选项字符串。
  • -xlinline-threshold=T:将自动内联阈值设置为 T(默认 T = 5000)
  • -annotate-pragma:自动插入循环展开、流水打拍和平铺编译指示(默认值 = true)
注释: 两个保留码字:aieadf 在 graph 编程中均为无效的名称空间标识符。