如何让cmake找到CUDA

新手上路,请多包涵

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

原文由 clstaudt 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.2k
2 个回答

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 ..

原文由 Slava 发布,翻译遵循 CC BY-SA 3.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 路径。

原文由 Harshil Sharma 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题