5

我是 OpenCL 的新手。在 Internet 的帮助下,我在 OpenCL 中编写了矢量添加代码。我已经包含了一个头文件,即CL/cl.h使用#include.

我使用的是 NVIDIA 显卡,OpenCL 实现是 NVIDIA_GPU_Computing_SDK。我的 OpenCL 头文件位于此路径/opt/NVIDIA_GPU_Computing_SDK/OpenCL/common/inc。通过在编译代码时添加此路径,我可以通过 linux 终端运行 OpenCL 程序。但现在我想为这段代码编写 CMake 文件。由于此路径问题,CMake 文件对 C 程序运行良好,但对 OpenCL 程序运行不正常。在终端,我以前输入$cmake .,之后$make,它会搜索一个由cmake创建的Makefile,现在我的错误是输入命令后make

fatal error: CL/cl.h: No such file or directory!

现在告诉我如何将这个头文件包含到 CMake 文件中?

4

3 回答 3

14

您需要将这些行放入 CMakeLists.txt:

include_directories(/opt/NVIDIA_GPU_Computing_SDK/OpenCL/common/inc)
link_directories(/opt/NVIDIA_GPU_Computing_SDK/OpenCL/common/<lib or something similar>)

add_executable(yourexe src1.c ...)
target_link_libraries(yourexe OpenCL)

但请注意,这不是可移植的,因为 OpenCL SDK 可以位于另一台机器上的其他位置。正确的方法是使用FindOpenCL.cmake模块。

于 2012-10-12T12:19:27.770 回答
2

也许您可以使用 CMake“查找”脚本,例如:

OpenCL Programming Guide Book 中的 CMake 文件示例:http ://code.google.com/p/opencl-book-sa​​mples/source/browse/trunk/CMakeLists.txt?r=14

于 2012-10-12T12:21:03.683 回答
2

我一直在寻找在 Windows、OSX 和 Linux 上运行良好的 FindOpenCL.cmake 宏...我找不到在每个平台上运行良好的宏,所以我编写了新的宏,我在几个项目中使用(webcl-验证器和 opencl-testsuite)。

https://github.com/elhigu/cmake-findopencl

特别是 Windows 支持在这一方面得到了改进。

在 Windows 中,它会检查是否应该使用 64 位或 32 位库,它还会尝试根据 Nvidia、Intel 和 AMD OpenCL SDK 设置的环境变量来查找库。

它还尝试在 Cygwin 中查找 .lib,但它不适用于我尝试过的其他脚本。

于 2014-04-16T14:58:21.843 回答