Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to let cmake find CUDA

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?

like image 468
clstaudt Avatar asked Nov 14 '13 14:11

clstaudt


People also ask

How do I find my cuda compiler?

By default, the CUDA SDK Toolkit is installed under /usr/local/cuda/. The nvcc compiler driver is installed in /usr/local/cuda/bin, and the CUDA 64-bit runtime libraries are installed in /usr/local/cuda/lib64.

What is Cmake_cuda_architectures?

The command set(CMAKE_CUDA_ARCHITECTURES 52 61 75) defines standard variable which hide the cache variable but do not overwrite it. If you want to overwrite the cache variable, you have to edit it with cmake-gui or using the following syntax: set(<variable> <value>...


1 Answers

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:

The script will prompt the user to specify CUDA_TOOLKIT_ROOT_DIR if the prefix cannot be determined by the location of nvcc in the system path and REQUIRED is specified to find_package(). To use a different installed version of the toolkit set the environment variable CUDA_BIN_PATH before running cmake (e.g. CUDA_BIN_PATH=/usr/local/cuda1.0 instead of the default /usr/local/cuda) or set CUDA_TOOLKIT_ROOT_DIR after configuring. If you change the value of CUDA_TOOLKIT_ROOT_DIR, various components that depend on the path will be relocated.

So put CUDA_BIN_PATH into .bashrc or specify CUDA_TOOLKIT_ROOT_DIR to cmake:

cmake -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-5.5 .. 
like image 65
Slava Avatar answered Oct 30 '22 21:10

Slava