仅对英特尔可见 — GUID: ewa1399506225986
Ixiasoft
3.6.4. 仿真OpenCL Kernel
若要仿真OpenCL™ kernel,需要在构建kernel的平台上运行.aocx仿真文件。OpenCL Emulator使用一个与面向FPGA硬件时不同的OpenCL平台。
请按照以下步骤对kernel进行仿真:
若要运行主机应用程序来进行仿真,需要调用 env CL_CONFIG_CPU_EMULATE_DEVICES=<number_of_devices> <host_application_filename> 命令。
此命令指定Emulator需要提供的相同仿真器件的数量。默认情况下,仿真器平台(emulator platform)提供一个仿真器件。因此,如果主机代码只要求一个器件,那么您不需要设置CL_CONFIG_CPU_EMULATE_DEVICES环境变量。
对于hello_world设计示例,请运行bin/host -emulator。-emulator参数通知主机程序为OpenCL选择Intel® FPGA Emulation Platform。
成功仿真kernel之后,您会看到以下输出:
... ... ... Using AOCX: hello_world.aocx Kernel initialization is complete. Launching the kernel... Thread #2: Hello from Intel FPGA OpenCL Compiler! Kernel execution is complete.
注:
- Intel® FPGA SDK for OpenCL™ Pro Edition中的emulator是基于GCC 7.2.0,作为离线编译器的一部分进行构建的。当对一个仿真的OpenCL器件执行主机程序时,libstdc++.so的版本必须至少为GCC 7.2.0的版本。换言之, LD_LIBRARY_PATH 环境变量必须要确保能找到libstdc++.so的正确版本。
如果未找到libstdc++.so的正确版本,那么对clGetPlatformIDs函数的调用将无法加载FPGA emulator platform,并返回CL_PLATFORM_NOT_FOUND_KHR (error code -1001)。根据找到的libstdc++.so版本,可能会成功地调用clGetPlatformIDs,但稍后对clCreateContext函数的调用可能会失败,返回CL_DEVICE_NOT_AVAILABLE (error code -2)。
如果LD_LIBRARY_PATH没有指向一个足够新的libstdc++.so,那么使用以下命令语句调用主机程序:
env LD_LIBRARY_PATH=<path to sufficiently new libstdc++.so>:$LD_LIBRARY_PATH <host> [host arguments]
- 若要使能kernel代码的调试,默认情况下,对FPGA emulator的优化是禁止的。在仿真kernel代码时,这会导致次优的执行速度。
您可以将-g0标志传递给aoc编译命令以禁止调试并使能优化。这可以实现更快的仿真器执行速度。
相关信息