首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Intel oneapi检测我是否在FPGA上

Intel oneapi检测我是否在FPGA上
EN

Stack Overflow用户
提问于 2022-04-30 12:36:20
回答 1查看 89关注 0票数 0

是否有任何方法通过CMake检测是否有一个FPGA加速器可用?

我想做这样的事

代码语言:javascript
复制
if (FPGA_AVAILABLE or FPGA_EMULATOR_ON)
   # set stuff here
   add_subdirectory(fpga_src)
endif()

有办法这样做吗?我看过英特尔的OneAPI例子,但据我所知,它们并不是这样的,它们假设它们运行在正确的平台上。

EN

回答 1

Stack Overflow用户

发布于 2022-05-12 20:21:44

正如@aland在通过CMake和大多数其他编译器编译程序时所提到的,没有假设您所处的平台一定是目标平台。

一个典型的工作流将在CMake中运行该预定义脚本,该脚本执行检测,然后使用-D标志向DPC++编译器发送预处理器标志。既然您说您查看了oneAPI示例,我猜您看到了以下内容,这是我们使用-D标志的简单示例,它假定客户手动传递标志

https://github.com/oneapi-src/oneAPI-samples/tree/master/DirectProgramming/DPC%2B%2BFPGA/Tutorials/GettingStarted/fpga_compile

下面是前面提到的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命令不存在。祝你好运,编码愉快!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72068589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档