I am trying to build this project, which has CUDA as a dependency. But the cmake script cannot find the CUDA installation on the system:
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)
-- Configuring incomplete, errors occurred!
I've tried adding it as an environment variable to .bashrc
, to no effect:
export CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-5.5
How do I Specify CUDA_TOOLKIT_ROOT_DIR
correctly?
FindCMake.cmake
looks for/usr/local/cuda
. In your case, that directory might not be there. Just create a symbolic link of that name to your actual CUDA installation directory:Your CMake should be able to generate the Makefile for your project now.
Since CMake 3.8, FindCUDA is deprecated and the proper way of using CUDA in CMake projects is enabling it via
project()
orenable_language()
https://cmake.org/cmake/help/v3.8/release/3.8.html#cuda
Maybe cuda was installed from sources (and nvcc is not in the path). Then the script can not set CUDA_TOOLKIT_ROOT_DIR because of 'nvcc' missing. For me it worked fine after a 'sudo apt install nvidia-cuda-toolkit'.
cmake mentioned
CUDA_TOOLKIT_ROOT_DIR
as cmake variable, not environment one. That's why it does not work when you put it into .bashrc. If you look into FindCUDA.cmake it clearly says that:So put
CUDA_BIN_PATH
into .bashrc or specifyCUDA_TOOLKIT_ROOT_DIR
to cmake:In terminal, type
nano ~/.bashrc
. Then add the following lines to the file:Save the file, then type
source ~/.bashrc
in terminal.You may validate if CUDA path has been setup by typing
nvcc --version
in terminal.