50

我正在尝试构建这个项目,它具有 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正确?

4

6 回答 6

66

cmake 被CUDA_TOOLKIT_ROOT_DIR称为 cmake 变量,而不是环境一。这就是为什么将它放入.bashrc 时它不起作用的原因。如果您查看 FindCUDA.cmake,它清楚地表明:

如果前缀不能由系统路径中的 nvcc 位置确定并且 REQUIRED 指定给 find_package(),脚本将提示用户指定 CUDA_TOOLKIT_ROOT_DIR。要使用工具包的不同安装版本,请在运行 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 ..
于 2013-11-14T15:22:13.837 回答
18

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

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

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

于 2015-03-27T12:37:05.403 回答
14

也许 CUDA 是从源代码安装的(并且nvcc不在路径中)。CUDA_TOOLKIT_ROOT_DIR然后由于nvcc缺少脚本而无法设置。对我来说,运行后效果很好:

sudo apt install nvidia-cuda-toolkit

(这个包可能需要几个 GiB 的空间)

于 2017-12-22T20:57:45.367 回答
6

从 CMake 3.8 开始,不推荐使用 FindCUDA,在 CMake 项目中使用 CUDA 的正确方法是通过project()enable_language()

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

于 2018-02-09T15:22:15.107 回答
2

在终端中,键入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 路径。

于 2013-11-14T15:12:41.130 回答
1

就我而言,我必须让/usr/lib/cuda指向实际的 CUDA 安装。所以我做了:

ln -s /usr/lib/cuda /home/nvidia_libraries/cuda_10.2

我在我的主文件夹本地安装了 cuda_10.2,而不是系统范围。

于 2021-11-09T15:13:07.883 回答