对于 OpenCL 内核,在软件仿真期间可以执行额外的运行时检查。这些额外检查包括:
- 检查 OpenCL 内核是否对接口缓冲器执行界外访问 (
fsanitize=address
)。 - 检查内核是否访问未初始化的本地存储器 (
fsanitize=memory
)。
这些 Vitis 编译器选项是通过 --advanced
编译器选项使用以下命令语法来启用的,如 --advanced 选项 中所述:
--advanced.param compiler.fsanitize=address,memory
应用这些选项后,仿真运行会生成调试 log 日志,其中包含已写入 <project_dir>/Emulation-SW/<proj_name>-Default>/emulation_debug.log 的仿真诊断消息。
fsanitize
指令同样可在配置文件中指定,如下所述:
[advanced]
#param=<param_type>:<param_name>.<value>
param=compiler.fsanitize=address,memory
随后,在 v++
命令行上指定配置文件:
v++ -l –t sw_emu --config ./advanced.cfg -o bin_kernel.xclbin
如需了解有关 --config
选项的更多信息,请参阅 Vitis 编译器配置文件。