web-dev-qa-db-fra.com

Comment laisser cmake trouver CUDA

J'essaye de construire ce projet , qui a CUDA comme dépendance. Mais le script cmake ne trouve pas l'installation CUDA sur le système:

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)

- Configuration incomplète, des erreurs se sont produites!

J'ai essayé de l'ajouter comme variable d'environnement à .bashrc, sans effet:

export CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-5.5

Comment puis-je Specify CUDA_TOOLKIT_ROOT_DIR correctement?

36
clstaudt

cmake a mentionné CUDA_TOOLKIT_ROOT_DIR en tant que variable cmake, pas d'environnement un. C'est pourquoi cela ne fonctionne pas lorsque vous le mettez dans .bashrc. Si vous regardez dans FindCUDA.cmake, il est clairement indiqué que:

Le script invitera l'utilisateur à spécifier CUDA_TOOLKIT_ROOT_DIR si le préfixe ne peut pas être déterminé par l'emplacement de nvcc dans le chemin système et REQUIS est spécifié pour find_package (). Pour utiliser une version installée différente de la boîte à outils, définissez la variable d'environnement CUDA_BIN_PATH avant d'exécuter cmake (par exemple CUDA_BIN_PATH =/usr/local/cuda1.0 au lieu de la valeur par défaut/usr/local/cuda) ou définissez CUDA_TOOLKIT_ROOT_DIR après la configuration. Si vous modifiez la valeur de CUDA_TOOLKIT_ROOT_DIR, divers composants qui dépendent du chemin d'accès seront déplacés.

Alors mettez CUDA_BIN_PATH dans .bashrc ou spécifiez CUDA_TOOLKIT_ROOT_DIR à cmake:

cmake -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-5.5 ..
49
Slava

FindCMake.cmake cherche des /usr/local/cuda. Dans votre cas, ce répertoire n'est peut-être pas là. Créez simplement un lien symbolique de ce nom vers votre répertoire d'installation CUDA réel:

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

Votre CMake devrait être en mesure de générer le Makefile pour votre projet maintenant.

14
Ashwin Nanjappa

Peut-être que cuda a été installé à partir des sources (et nvcc n'est pas dans le chemin). Ensuite, le script ne peut pas définir CUDA_TOOLKIT_ROOT_DIR en raison de "nvcc" manquant. Pour moi, cela a bien fonctionné après une "Sudo apt install nvidia-cuda-toolkit".

3
Kjell

Depuis CMake 3.8, FindCUDA est obsolète et la bonne façon d'utiliser CUDA dans les projets CMake est de l'activer via project() ou enable_language()

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

3
Hopobcn

Dans le terminal, saisissez nano ~/.bashrc. Ajoutez ensuite les lignes suivantes au fichier:

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

Enregistrez le fichier, puis saisissez source ~/.bashrc dans le terminal.

Vous pouvez valider si le chemin CUDA a été configuré en tapant nvcc --version dans le terminal.

0
Harshil Sharma