CMake找不到NVIDA的opencl-sdk
CMake can not find opencl sdk by NVIDA
我刚刚安装了NVIDIA CUDA工具包,用于在windows 8.1上开发OpenCL应用程序。
我遇到了一些问题:
1-FinedOpenCl.cmake不起作用,因为英伟达工具包未设置opencl_dir。
cmake文件为:
FIND_PACKAGE(OpenCL REQUIRED)
INCLUDE_DIRECTORIES(${OPENCL_INCLUDE_DIR})
cmake误差为:
CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/FindPackageHandleStandardArgs.cmake:138 (message):
Could NOT find OpenCL (missing: OPENCL_LIBRARY OPENCL_INCLUDE_DIR)
Call Stack (most recent call first):
C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/FindPackageHandleStandardArgs.cmake:374 (_FPHSA_FAILURE_MESSAGE)
cmake/FindOpenCL.cmake:35 (find_package_handle_standard_args)
CMakeLists.txt:5 (FIND_PACKAGE)
2-c++接口没有cl.hpp。
3-标头和库位于不同的目录中,因此很难在应用程序中使用它们。
我的问题:
1-我能做些什么来解决它们吗?
2-在设置过程中是否有任何选项可以自动进行所需的设置。
使用此处的定义:http://www.cmake.org/cmake/help/v3.1/module/FindOpenCL.html
试试下面的(我在Windows 10 Pro和Ubuntu 14.04LTS上做了一个快速测试):
FIND_PACKAGE(OpenCL REQUIRED)
INCLUDE_DIRECTORIES(${OpenCL_INCLUDE_DIRS})
LINK_DIRECTORIES(${OpenCL_LIBRARY})
您可能还需要检查:如何在CMake文件中添加头文件路径
您可以使用其他-D
选项运行cmake
,如:
cmake [some_your_options] -DOpenCL_LIBRARY=/cygdrive/c/cuda/lib -DOpenCL_INCLUDE_DIR=/cygdrive/c/cuda/include [some_your_other_options] .....
因此,它将看到OpenCL这样的手动指定路径。
上面的例子提供给我的CygWin64,其中在文件夹C:cygdrive
中,我之前通过mklink
为所有需要的逻辑驱动器添加了几个符号链接,因此"c"
链接到"C:"
,"d"
链接到"D:"
,依此类推
我的NVidia CUDA安装路径实际上是C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.0
,但不是很方便,所以我还在C:
上制作了名为"CUDA"的符号链接(mklink /D linkname "path"
),所以/cygdrive/c/cuda/lib
实际上指向C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.0lib
。
windows上的Unix环境模拟和在命令提示符下编译是非常棘手的,是的。。
- 没有标准的FindOpenCl.cmake,所以我不知道你在使用什么文件,但在我的代码中,我在一堆不同的文件夹中搜索,包括以下文件夹:
$ENV{OPENCL_DIR}
$ENV{NVSDKCOMPUTE_ROOT} # NVIDIA on Windows
$ENV{CUDA_PATH_V6_5}
$ENV{CUDA_PATH}
此外,我还看到了一些问题,这取决于路径是否有最终的"\"——这似乎是CMake中的某种错误,它无法自动处理这两种情况。因此,请尝试在环境变量中添加一个反斜杠。
- 这是事实-NVIDIA根本不包括cl.hpp,但您可以从Khronos下载:https://www.khronos.org/registry/cl/api/1.1/cl.hpp.
- 这也应该由FindOpenCl.cmake来处理——如果没有,你将不得不自己编写,或者找到一个正确设置include和lib变量的程序
最后,在安装过程中没有任何秘密选项可以修复这些问题:)
- 使用std::vector的OpenCL矩阵乘法
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- Vulkan SDK 版本 1.1.85.0 在 Kubuntu 18.10 上链接
- 升级到 Windows 10 版本 1809 SDK 后,我无法编译使用 C++/WinRT 的项目
- 在设计 SDK 时,我是否应该在 C++ 头文件中完全隐藏内部类?
- Eventloop 卡住:NAO C++ SDK OnFaceDetection 示例
- OpenCL 内核参数中的字符***?
- 构建失败错误:无法使用 qibuild 构建C++ SDK Helloworld
- 在 NVIDIA GEFORCE GTX 1050 上下载适用于 Windows 10 的 openCL 1.2
- OpenCL 是否支持向量作为内核参数?
- Microsoft C++ 用于图形 API 的 Rest SDK
- 向量加法代码 OpenCL 返回 clCreateKernel 错误 -46
- 如何检索 Steamwork SDK 的当前版本
- 使用 AMD APP SDK 2.9 创建符合 OpenCL 1.1 的应用程序
- 在哪里可以找到图形卡HD4400的openCL-sdk
- CMake找不到NVIDA的opencl-sdk
- 英特尔 OpenCL SDK - 头文件在哪里
- 链接AMD SDK opencl时出现问题
- Problems with OpenCL (opencl.dll, AMD APP SDK, cl.h)
- 你可以在不下载SDK的情况下开始编程OpenCL吗