我有一个使用某些AMD扩展的Windows OpenCL应用程序。此外,我的应用程序有一些可选的CUDA组件。使用CMake构建visual studio解决方案时,FindOpenCL模块选择Nvidia OpenCL实现而不是AMD。是否有一种简单的方法可以让CMake使用AMD版本?
我尝试在FindOpenCL模块代码中评论Nvidia部分,但这不起作用。我可以修改一些注册表设置吗?我在安装AMD的SDK后安装了CUDA。安装顺序会有所作为吗?
答案 0 :(得分:1)
最后,有效的方法是从PATHS
和find_library
命令中的find_path
建议中删除NVIDIA环境变量,然后添加NO_DEFAULT_PATH
。问题在于,尽管我删除了这些建议,但CMake正在添加默认路径,其中包括NVIDIA的OpenCL实现。这两个命令最终如下所示:
find_path(OpenCL_INCLUDE_DIR
NAMES
CL/cl.h OpenCL/cl.h
NO_DEFAULT_PATH
PATHS
ENV "PROGRAMFILES(X86)"
ENV AMDAPPSDKROOT
ENV ATISTREAMSDKROOT
PATH_SUFFIXES
include
OpenCL/common/inc
"AMD APP/include")
find_library(OpenCL_LIBRARY
NAMES OpenCL
NO_DEFAULT_PATH
PATHS
ENV "PROGRAMFILES(X86)"
ENV AMDAPPSDKROOT
ENV ATISTREAMSDKROOT
PATH_SUFFIXES
"AMD APP/lib/x86_64"
lib/x86_64
lib/x64
OpenCL/common/lib/x64)