簡體   English   中英

CMake 找不到 NVIDA 的 opencl sdk

[英]CMake can not find opencl sdk by NVIDA

我剛剛安裝了 NVIDIA CUDA 工具包,以使用它在 Windows 8.1 上開發 OpenCL 應用程序。

我遇到了一些問題:

1- FinedOpenCl.cmake 不起作用,因為 opencl_dir 不是由 Nvidia 工具包設置的。

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-在設置過程中是否有任何選項可以自動進行所需的設置。

  1. 沒有標准的 FindOpenCl.cmake,所以我不知道你使用的是什么文件,但在我的代碼中我搜索了一堆不同的文件夾,包括這些:
$ENV{OPENCL_DIR}
$ENV{NVSDKCOMPUTE_ROOT}     # NVIDIA on Windows
$ENV{CUDA_PATH_V6_5}
$ENV{CUDA_PATH}

此外,根據路徑是否有最終的“\\”,我看到了一些麻煩——這似乎是 CMake 中的某種錯誤,它無法自動處理這兩種情況。 因此,請嘗試在您的環境變量中添加反斜杠。

  1. 這是事實 - NVIDIA 根本不包含 cl.hpp,但您可以從 Khronos 下載它: https ://www.khronos.org/registry/cl/api/1.1/cl.hpp。
  2. 這也應該由 FindOpenCl.cmake 處理 - 如果沒有,您將不得不自己編寫,或者找到一個正確設置 include 和 lib 變量的程序。

最后,在安裝過程中沒有修復任何這些的秘密選項:)

使用此處找到的定義: 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 Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v10.0\\ ,但它不是很方便,所以我還在C:上制作了符號鏈接( mklink /D linkname "path" ) “cuda”,所以/cygdrive/c/cuda/lib實際上指向C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v10.0\\lib

在 Windows 上模擬 Unix 環境並在命令提示符中編譯非常棘手,是的..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM