Подтвердить что ты не робот

Как дать cmake найти CUDA

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

4b9b3361

Ответ 1

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

script предложит пользователю указать CUDA_TOOLKIT_ROOT_DIR, если префикс не может определяться расположением nvcc в системном пути и ТРЕБУЕМЫМ указывается find_package(). Чтобы использовать другую установленную версию toolkit установите переменную среды CUDA_BIN_PATH перед запуском cmake (например, 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 ..

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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