是否有任何方法通过CMake检测是否有一个FPGA加速器可用?
我想做这样的事
if (FPGA_AVAILABLE or FPGA_EMULATOR_ON)
# set stuff here
add_subdirectory(fpga_src)
endif()有办法这样做吗?我看过英特尔的OneAPI例子,但据我所知,它们并不是这样的,它们假设它们运行在正确的平台上。
发布于 2022-05-12 20:21:44
正如@aland在通过CMake和大多数其他编译器编译程序时所提到的,没有假设您所处的平台一定是目标平台。
一个典型的工作流将在CMake中运行该预定义脚本,该脚本执行检测,然后使用-D标志向DPC++编译器发送预处理器标志。既然您说您查看了oneAPI示例,我猜您看到了以下内容,这是我们使用-D标志的简单示例,它假定客户手动传递标志
下面是前面提到的sycl函数的输出:
$ sycl-ls
[opencl:acc:0] Intel® FPGA Emulation Platform for OpenCL™, Intel® FPGA Emulation Device 1.2 [2021.12.9.0.24_005321]
将其直接放入CMake将涉及使用CMake execute_process函数,将其分配给一个变量,然后围绕它构建CMake逻辑。看起来会是这样的:
execute_process(COMMAND sycl-ls OUTPUT_VARIABLE FOO)
此处引用该命令:https://cmake.org/cmake/help/latest/command/execute_process.html
如果你真的想变好,你可以利用类似于这种结构的东西来修剪输出的文本:
execute_process( COMMAND bash "-c" "echo -n hello | sed 's/hello/world/;'" OUTPUT_VARIABLE FOO )
这归功于这里,这样你就可以投入更多:CMake's execute_process and arbitrary shell scripts
为了安全起见,您可能还想保护sycl-ls命令不存在。祝你好运,编码愉快!
https://stackoverflow.com/questions/72068589
复制相似问题