CMake检测到错误的OpenCL版本。

问题描述 投票:0回答:1

以下 此职位在这里,我使用了 本说明 来安装NVIDIA的OpenCL SDK。该 clinfo 工具能正确检测到1.2的OpenCL版本。然而,下面的 CMakeLists.txt 文件。

cmake_minimum_required(VERSION 3.1)

project(OpenCL_Example)

find_package(OpenCL REQUIRED)
include_directories(${OpenCL_INCLUDE_DIRS})
link_directories(${OpenCL_LIBRARY})

add_executable(main main.c)
target_include_directories(main PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(main ${OpenCL_LIBRARY})

复制自 此处检测到错误的OpenCL 1.1版本......--寻找CL_VERSION_1_1--发现--发现OpenCL: C:Program FilesNVIDIA GPU Computing ToolkitCUDAv3.2libWin32OpenCL.lib (发现版本 "1.1")

-- 寻找CL_VERSION_1_1 - 找到-- 找到OpenCL:C:Program FilesNVIDIA GPU Computing ToolkitCUDAv3.2libWin32OpenCL.lib (找到版本 "1.1")

如果您能帮我知道是什么问题,如何解决,我将感激不尽。

P.S.1. 你可以使用下面的虚拟 main.c 测试用的C代码

#include <CL/cl.h>
#include <stdio.h>

int main() {
    printf("Hello, World! \n");
    return 0;
}

P.S.2. 遵循 此微博,我跑了 cmake .. --debug-find 并得到 此日志. 但还是不知道问题出在哪里。

P.S.3. 以下是 此微博,原来我安装了 一个非常过时的CUDA工具箱. 卸载后,现在我得到

-- 找到OpenCL:C:Program Files (x86)IntelSWToolssystem_studio_2020OpenCLsdklibx86OpenCL.lib (找到版本 "2.2")

也就是英特尔的SDK。基本上是第二个结果,在 谷歌搜索 " 英伟达OpenCL SDK下载",首先是完全搞不懂。所以我不得不卸载它,从这里安装最新版本。NVIDIA至少可以提一下,必须安装CUDA工具包才能得到OpenCL SDK!

c windows cmake opencl nvidia
1个回答
1
投票

NVidia Cuda v3.2 是根据 这个 2010年11月和 OpenCL 1.2 规格在一年后的2011年11月15日发布。所以我怀疑 cmake 正在检测 OpenCL 1.1 正确。

如果您安装了另一个SDK,而您又想用 cmake 检测 OpenCL 1.2 尽管有其他SDK支持旧版本,你需要在 cmake. 否则它将找到第一个 OpenCL 在搜索路径上停止。所以应该指定 find_package(OpenCL 1.2 REQUIRED) 或如@方块糖所言 find_package(OpenCL 1.2 EXACT REQUIRED) 如果你想要精确的版本。

然而,您可能需要将其他 SDK 的路径添加到 PATH 中,或在 cmake 以使其有机会审查其他 OpenCL 版本。如果你有一个看 find cmake 宏的内容中包含了一些典型的搜索路径,如果你的SDK安装在其他非标准路径上,你必须自己告诉cmake。尤其是在 Windows 在这里,你没有标准的更具体的包含或库的安装路径,例如在 Linux. 关于 Windows 还真有 Program Files 但这太通用了,而且 cmake 将不得不递归地搜索它,我不确定这是否被支持。

我怀疑你可能有 nvidia cuda 3.2 toolkit 路径只添加到PATH,或者你只在cmake中指定了那个路径。所以问题就出在这里。添加其他SDK的路径可能会解决这个问题。

另外,我认为 clinfo 检查运行时 OpenCL 意思是它可以是任何供应商 OpenCL.dll 在您的NVidia GPU上支持OpenCL 1.2和 cmake 在SDK的头中检查 OpenCL 你安装的SDK支持的版本。所以这里可能有差异。在这种情况下,你可能需要安装更新的cuda工具包。

© www.soinside.com 2019 - 2024. All rights reserved.