AMD Versal™
自适应 SoC AI 引擎多线程仿真器 (aiesimulator
) 包含全局存储器(DDR 存储器)和片上网络 (NoC) 的建模,以及 AI 引擎阵列的建模。使用仿真目标完成应用编译后,即可调用 AI 引擎多线程仿真器,如下所示。
aiesimulator –-pkg-dir=./Work
这将以多线程模式运行仿真器。使用的线程数取决于机器上可用的核数。基于机器上可用的核数以及 AI 引擎设计中使用的核拼块数量来完成设置默认线程数的计算。
您也可手动配置要使用的线程数。机器上可用的线程总数等于机器上可用的核数乘以每个核支持的线程数。
- 机器上可用的线程总数 = 机器上的核数 * 每个核的线程数
MTMAXTHREADS=<n>
选项,其中 n
是线程数。aiesimulator --pkg-dir=./Work -f <sim_opts.txt>
MTMAXTHREADS=<n>
各项配置和二进制文件都是由 AI 引擎编译器生成的,置于 Work 目录下(请参阅 对 AI 引擎计算图应用进行编译),并使用 --pkg-dir
选项来为仿真器指定这些配置和文件。计算图由 main
应用中所指定的控制线程来进行初始化、运行和终止。AI 引擎编译器负责对该控制线程进行编译,并将 PS IP 封装文件直接加载到仿真器中。
默认情况下,graph.run()
选项会指定永续运行的计算图。AI 引擎编译器会生成代码,以通过永续 While
循环来执行数据流计算图,因此仿真也会永续运行。要创建终止程序用于调试,请在计算图代码中指定 graph.run(<number_of_iterations>)
以将迭代的执行次数限制为指定次数。指定的迭代数可以是任意正整数。
graph::run(-1)
可指定永续运行的计算图。AI 引擎仿真器命令首先按 Work/config/scsim_config.json 文件中生成的编译器中指定的方式来配置仿真器。这包括加载 PL IP 块及其连接、配置 I/O 数据文件驱动程序以及配置 NoC 和全局存储器(DDR 存储器)连接。随后,它会执行指定的 PS 应用,最终退出仿真器。
AI 引擎仿真器具有可选 --profile 选项,该选项会在内核代码中启用 printfs
以将其显示在控制台上,并生成剖析信息。并且,--dump-vcd <filename> 选项还会在仿真持续期间生成值变转储 (VCD)。随后,即可使用 --simulation-cycle-timeout <number-of-cycles> 在指定时钟周期数过后退出仿真。
graph.run()
的运行轮数,那么仿真会永久运行。您需要按两次Ctrl+c才能退出仿真器。--simulation-cycle-timeout
选项在精确周期内停止仿真器。这样剖析报告上显示每一轮运行的总周期数都相同。<iostream>
以启用 printfs
。在内核代码中使用 #include
<iostream>
会导致 x86 仿真器和 aiesimulator
仿真器都出现编译错误。计算图和子计算图仿真运行时间
在包含大型计算图(由小型子计算图组成)的 AI 引擎设计上,建议先对各子计算图进行仿真。当子计算图经过验证并满足功能和性能方面的要求后,即可尝试对大型计算图进行仿真。根据子计算图大小,通常大型计算图的仿真时间更长。