如何使用CMake选择OpenCL实现?

时间:2017-07-05 19:06:38

标签: cmake opencl

我有一个使用某些AMD扩展的Windows OpenCL应用程序。此外,我的应用程序有一些可选的CUDA组件。使用CMake构建visual studio解决方案时,FindOpenCL模块选择Nvidia OpenCL实现而不是AMD。是否有一种简单的方法可以让CMake使用AMD版本?

我尝试在FindOpenCL模块代码中评论Nvidia部分,但这不起作用。我可以修改一些注册表设置吗?我在安装AMD的SDK后安装了CUDA。安装顺序会有所作为吗?

1 个答案:

答案 0 :(得分:1)

最后,有效的方法是从PATHSfind_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)