我正在尝试构建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
?
答案 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()
答案 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路径。