2013-11-14 4 views
23

Я пытаюсь построить this project, который имеет CUDA как зависимость. Но сценарий CMake не может найти установку 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 правильно?

ответ

33

cmake упомянутый CUDA_TOOLKIT_ROOT_DIR как cmake переменная, не окружающая среда один. Вот почему это не работает, когда вы помещаете его в .bashrc. Если вы посмотрите в FindCUDA.cmake ясно говорит, что:

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.

Так положил CUDA_BIN_PATH в .bashrc или указать CUDA_TOOLKIT_ROOT_DIR в CMake:

cmake -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-5.5 .. 
+1

Можете ли вы указать, как указать 'CUDA_TOOLKIT_ROOT_DIR' для cmake? Я обычно не являюсь пользователем cmake. – clstaudt

+0

@cls добавил пример – Slava

+0

Это помогло мне сделать следующий шаг: 'НЕ МОЖЕТ найти CUDA (отсутствует: CUDA_NVCC_EXECUTABLE)'. Вероятно, установка неполна, так как у меня есть только библиотеки и заголовки, а не исполняемые файлы. – clstaudt

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 в терминале.

Вы можете проверить, был ли установлен путь CUDA, набрав nvcc --version в терминале.

+0

Все переменные окружения устанавливаются как вы предложили, но остатки ошибок тоже самое. – clstaudt

8

FindCMake.cmake ищет /usr/local/cuda. В вашем случае этот каталог может отсутствовать. Просто создайте символическую ссылку с этим именем в вашей реальной директории установки CUDA:

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

Ваш CMake должен быть в состоянии генерировать Makefile для вашего проекта в настоящее время.

+2

это исправлено для меня после двух дней рытья. по какой-то причине установка cuda из apt-get не symlink/cuda с /cuda-8.0 – user2338089

0

Возможно, cuda был установлен из источников (и nvcc не находится на пути). Тогда скрипт не может установить CUDA_TOOLKIT_ROOT_DIR из-за отсутствия «nvcc». Для меня это отлично работало после «sudo apt install nvidia-cuda-toolkit».

Смежные вопросы