如何让cmake找到CUDA

时间:2013-11-14 14:35:31

标签: c++ build cuda cmake

我正在尝试构建this project,它将CUDA作为依赖项。但是cmake脚本无法在系统上找到CUDA安装:

cls ~/workspace/gpucluster/cluster/build $ cmake ..
-- The C compiler identification is GNU 4.7.1
-- The CXX compiler identification is GNU 4.7.1
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMake Error at /usr/share/cmake/Modules/FindCUDA.cmake:488 (message):
  Specify CUDA_TOOLKIT_ROOT_DIR
Call Stack (most recent call first):
  CMakeLists.txt:20 (find_package)

- 配置不完整,发生错误!

我尝试将其作为环境变量添加到.bashrc,无效:

export CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-5.5

我如何正确Specify CUDA_TOOLKIT_ROOT_DIR

5 个答案:

答案 0 :(得分:46)

cmake提到CUDA_TOOLKIT_ROOT_DIR为cmake变量,而不是环境变量。这就是为什么当你把它放入.bashrc时它不起作用的原因。如果你研究FindCUDA.cmake,它会清楚地说:

  

如果是前缀,脚本将提示用户指定CUDA_TOOLKIT_ROOT_DIR   不能通过系统路径中的nvcc的位置和REQUIRED来确定   指定为find_package()。要使用不同的已安装版本   toolkit在运行cmake之前设置环境变量CUDA_BIN_PATH   (例如CUDA_BIN_PATH = / usr / local / cuda1.0而不是默认的/ usr / local / cuda)   或配置后设置CUDA_TOOLKIT_ROOT_DIR。如果更改了值   CUDA_TOOLKIT_ROOT_DIR,依赖于路径的各种组件将是   重新安置。

所以将CUDA_BIN_PATH放入.bashrc或指定CUDA_TOOLKIT_ROOT_DIR为cmake:

cmake -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-5.5 ..

答案 1 :(得分:13)

FindCMake.cmake查找/usr/local/cuda。在您的情况下,该目录可能不在那里。只需在您的实际CUDA安装目录中创建该名称的符号链接:

$ sudo ln -s /usr/local/cuda-5.5 /usr/local/cuda

您的CMake现在应该能够为您的项目生成Makefile。

答案 2 :(得分:3)

也许cuda是从源代码安装的(并且nvcc不在路径中)。然后脚本无法设置CUDA_TOOLKIT_ROOT_DIR,因为   失踪。对我而言,在安装了nvidia-cuda-toolkit后,它的工作正常。

答案 3 :(得分:2)

自CMake 3.8起,不推荐使用FindCUDA,并且在CMake项目中使用CUDA的正确方法是通过project()enable_language()

启用它

https://cmake.org/cmake/help/v3.8/release/3.8.html#cuda

答案 4 :(得分:0)

在终端中,键入nano ~/.bashrc。然后将以下行添加到文件中:

export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/lib
export CPLUS_INCLUDE_PATH=/usr/local/cuda/include

保存文件,然后在终端输入source ~/.bashrc

您可以通过在终端输入nvcc --version来验证是否已设置CUDA路径。