Как установить CUDA Toolkit 7/8/9 в Debian 8 (Jessie) или 9 (Stretch)?

26

Как установить Cuda Toolkit 7.0 или 8 на Debian 8?

Я знаю, что Debian 8 поставляется с возможностью загрузки и установки CUDA Toolkit 6.0 с использованием apt-get install nvidia-cuda-toolkit, но как это сделать для CUDA toolkit версии 7.0 или 8?

Я попытался установить с помощью установщиков Ubuntu, как описано ниже:

sudo wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0-28_amd64.deb

dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb

sudo apt-get update

sudo apt-get install -y cuda

Однако это не сработало, и было возвращено следующее сообщение:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 cuda : Depends: cuda-7-0 (= 7.0-28) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Greg
источник
@nullgeppetto: Пожалуйста, попробуйте следовать инструкциям в моем ответе ниже :-)
einpoklum - восстановить Монику

Ответы:

30

Следующие инструкции действительны для CUDA 7.0, 7.5 и нескольких предыдущих (и, возможно, более поздних) версий. Что касается дистрибутивов Debian, они действительны для Jessie, Stretch и, возможно, для других версий. Они предполагают архитектуру amd64 (x86_64), но вы можете легко адаптировать их для x86 (x86_32).

Предварительные условия установки

  • g ++ - Вы должны использовать новейшую версию GCC, поддерживаемую вашей версией CUDA. Для CUDA 7.x это будет версия 4.9.3, последняя из строки 4.x; для CUDA 8.0 поддерживаются версии GCC 5.x. Если в вашем дистрибутиве используется GCC 5.x по умолчанию, используйте его, в противном случае следует использовать GCC 5.4.0. Более ранние версии пригодны для использования, но я бы не рекомендовал их, хотя бы для лучшей поддержки современных C ++ функций для кода на стороне хоста.
  • gcc - поставляется с g ++. Я даже думаю, что CMake может по умолчанию использовать nvcc для вызова gcc, а не g ++, в некоторых случаях с -xпереключателем (но не уверен в этом).
  • libGLU - библиотеки Mesa OpenGL (+ файлы разработки?)
  • libXi - X Window System Библиотеки расширений Xinput (+ файлы разработки?)
  • libXmu - библиотека " Разные утилиты" X Window System (+ файлы разработки?)
  • Ядро Linux - заголовки для версии ядра, которую вы используете.

Если вам нужен список определенных пакетов, это зависит от того, какой именно дистрибутив, но попробуйте следующее (для CUDA 7.x):

sudo apt-get install gcc g++ gcc-4.9 g++-4.9 libxi libxi6 libxi-dev libglu1-mesa libglu1-mesa-dev libxmu6 libxmu6-dev linux-headers-amd64 linux-source

И вы можете добавить некоторые -dbgверсии этих пакетов для отладки символов.

Я довольно уверен , что это покрывает все это - но я мог бы что - то пропустил я только что установлен уже. Кроме того, CUDA может работать с Clang , по крайней мере, экспериментально, но я не пробовал это.

Установка драйвера ядра CUDA

  1. Перейдите на страницу загрузок NVIDIA CUDA .
  2. Выберите « Linux»> «x86_64»> «Ubuntu» , а затем выберите любую последнюю версию (на момент написания: «Ubuntu 15.04»).
  3. Выберите опцию .run file .
  4. Загрузите файл .run (в настоящее время этот ). Удостоверьтесь, чтобы не вставить это /tmp.
  5. Сделать .run исполняемый файл: chmod a+x cuda_7.5.18_linux.run.
  6. Стать корнем.
  7. Запустите файл .run: сделайте вид, что принимаете их глупую лицензию на сжатие; скажите «да» установке только драйвера ядра NVIDIA и скажите «нет» всему остальному.

Установка должна сообщить вам, что она ожидает установки драйвера ядра NVIDIA, но вам следует перезагрузить компьютер, прежде чем продолжить / повторить установку инструментария. Так...

  1. По-видимому, удалось, перезагрузите компьютер.

Установка самой CUDA

  1. Будь корнем.
  2. Найдите и выполните cuda_7.5.18_linux.run
  3. На этот раз скажите «Нет» установке драйвера, а «Да» - установке всего остального и примите пути по умолчанию (или измените их, все, что вам подходит).

Установщик, скорее всего, потерпит неудачу . Это хорошо, если предположить, что мы ожидаем такого рода ошибки: в ней должно быть указано, что версия вашего компилятора не поддерживается - CUDA 7.0 или 7.5 поддерживает до gcc 4.9, и у вас есть версия 5.x по умолчанию. Теперь, если вы получили сообщение об отсутствующих библиотеках , это означает, что мои инструкции относительно предварительных условий как-то не сработали, и вы должны прокомментировать здесь, чтобы я мог их исправить. Предполагая, что вы получили «хороший провал», перейдите к:

  1. Повторно вызовите файл .run, на этот раз с параметром --override.
  2. Сделайте тот же выбор, что и на шаге 11.

CUDA теперь должен быть установлен по умолчанию в разделе /usr/local/cuda(это символическая ссылка). Но мы еще не закончили!

Поручить компилятору NVIDIA nvcc использовать правильную версию g ++

Компилятор NVIDIA CUDA фактически вызывает g ++ как часть процесса компоновки и / или для компиляции реальных файлов C ++, а не .cu. Я думаю. В любом случае, по умолчанию он запускает все, что находится на вашем пути, как g++; но если вы поместите другойg++ под /usr/local/cuda/bin, он будет использовать это первым! Так...

  1. Выполнить symlink /usr/bin/g++-4.9 /usr/local/cuda/bin/g++(и для хорошей меры, может быть, также symlink /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc.

Вот и все.

Попробовать установку

  1. cd /root/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd
  2. make

Сборка должна завершиться успешно, и когда вы это сделаете

  1. ./vectorAdd

вы должны получить следующий вывод:

root@mymachine:~/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd# ./vectorAdd
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done

Заметки

  • Вам не нужно устанавливать NVIDIA GDK (GPU Development Kit), но это не повредит и может быть полезно для некоторых. Установите его в корневой каталог вашей системы; это довольно безопасно, и есть деинсталлятор потом /usr/bin/uninstall_gdk.pl. В CUDA 8 он уже интегрирован в саму CUDA IIANM.
  • Не устанавливайте дополнительные пакеты с такими именами, как nvidia -... или cuda ...; они могут не повредить, но они, конечно, не помогут.
  • Прежде чем делать что-либо из этого, вы можете убедиться, что ваш GPU вообще распознается, используя lspci | grep -i nvidia.
einpoklum - восстановить Монику
источник
... ну, почти все это: вы, конечно, не можете установить драйвер ядра, если вы не root. Но вы можете создавать (не запускать) код CUDA без него.
einpoklum - восстановить Монику
Просто попробовал это. установщик cuda просто отказывается устанавливать. Выручает предупреждение, что вам следует использовать файл .deb.
@WernerVanBelle: Вы можете опубликовать это как отдельный вопрос? Или хотя бы процитировать предупреждение, если оно слишком короткое? Кроме того, во IIRC есть опция командной строки «force», вы пробовали это?
einpoklum - восстановить Монику
Все это - кроме установки драйвера - также может быть выполнено пользователем без полномочий root в вашем домашнем каталоге, но этого будет достаточно только для создания кода CUDA, а не для его запуска . Для этого вам понадобится соответствующий драйвер nVIDIA в вашем ядре, и это может сделать только пользователь root. Извините за мой предыдущий комментарий, который предложил иначе. Кроме того, для сборки в качестве пользователя без полномочий root вам может потребоваться создать собственную версию gcc / g ++, если ваш дистрибутив имеет только более новую версию (для CUDA 7.x вам потребуется gcc 4.9.3).
einpoklum - восстановить Монику
@celavek: если вы считаете, что этот ответ недостаточно хорошо описывает Debian 9, объясните, почему, прежде чем предлагать правку.
einpoklum - восстановить Монику
6

Я думаю, что вы должны сделать это с помощью backports, на самом деле я гладко устанавливаю nvidia-cuda-toolkit7.5 на Debian Jessie.

Добавить бэкпорт, не бесплатно, к вашему /etc/apt/sources.list. Для меня (на Джесси) я просто положил это в нижней части моего файла:

# jessie-backports
deb http://httpredir.debian.org/debian jessie-backports main contrib non-free

сохранено, apt-get update и, наконец:

apt-get install -t jessie-backports nvidia-cuda-toolkit
Poso
источник
1

После добавления contrib и несвободных репозиториев в sources.list и запуска обновления apt-get CUDA Toolkit находится в Synaptic под nvidia-cuda-toolkit.

Картинка по умолчанию
источник
1

С Debian 9 «растянуть» со старым GPU (GT 720) необходимы дополнительные шаги. Я вижу, что кто-то выше (@celavek) имел это, поэтому я объясню, что сработало для меня. Принятый ответ охватывает практически все необходимое. Признание этого является довольно нишевым примером, но, надеюсь, здесь могут быть некоторые полезные вещи, которые спасут людей от нескольких поисков в Google.

Для CUDA 8.0 на шаге 1 нажмите «Legacy Releases» и выберите «CUDA Toolkit 8.0 GA 2». Затем Linux, x86_64, Ubuntu, 16.04, runfile (локальный).

Я не принял упакованный драйвер и вместо этого использовал мои ранее установленные драйверы 384.130 для моего графического процессора. Больше информации об этом здесь: Debian Wiki . Ваш пробег может варьироваться, я не могу говорить за карты, кроме GT 720. Это был путь, который я выбрал, я не жалею (пока).

Если установка не удалась из-за невозможности локального InstallUtils.pm на шаге 12, вам нужно будет распаковать файл cuda_8.0.61_375.26_linux.run, но запустить его с флагом --tar mxvf. Затем (от имени root) скопируйте InstallUtils.pm в / usr / lib / x86_64-linux-gnu / pearl-base:

./cuda_8.0.61_375.26_linux.run --tar mxvf
sudo cp InstallUtils.pm /usr/lib/x86_64-linux-gnu/perl-base

Теперь команда 12 шага должна пройти успешно.

Ваш Debian 9.0 поставляется с g ++ версии 6+, этого не будет. Компиляция vectorAdd на шаге 15 не удастся. Я следовал этому техническому документу: Установка нескольких версий GCC для установки версии 5.5.0. Для 5.5.0 вам понадобится этот файл

wget http://mirrors.concertpass.com/gcc/releases/gcc-5.5.0/gcc-5.5.0.tar.xz

и распакуйте архив с этим:

tar -xJf gcc-5.5.0.tar.xz

Мне нужно было обновить некоторые вещи (библиотеки и добавить 32-битную компиляцию), чтобы это работало на меня:

sudo apt-get install libgmp3-dev libmpfr-dev libmpc-dev
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential gcc-multilib rpm libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386

Теперь вы можете настроить, сделать и установить компилятор.

Не забудьте настроить с помощью prefix = / USR / местные / ССАГПЗ / 5.5.0 флаг

Теперь вы можете скомпилировать пример vectorAdd в шаге 15 следующим образом:

make HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++

Или это:

export HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++
make

Нет необходимости изменять Makefile, он корректно обрабатывает переопределение компилятора.

Теперь у вас должна быть работающая установка CUDA 8.0 на растяжку.

Инго
источник
0

Попробуйте использовать сетевые установщики для Ubuntu с этой страницы:

https://developer.nvidia.com/cuda-downloads#linux

Установщики для Ubuntu 14. * должны быть достаточно совместимы.

Томаш Клим
источник
1
Я должен был упомянуть, что установщик Ubuntu не работал - обновил пост, чтобы отразить это.
Грег
@ Грег, ты разобрался, как установить Cuda на Debian?
nullgeppetto
@nullgeppetto Я отказался от идеи Debian, так как обнаружил слишком много проблем с совместимостью, которые мне не удалось преодолеть.
Грег
@ Грег, хм, это то, чего я боялся .. Итак, ты пошел на * Ubuntu или что-то еще? Лично я все еще жду своего gtx 960, поэтому я попробую Debian ... Я дам вам знать, если хотите.
nullgeppetto
0

Проверка установки в Debian 9 Stretch и изменение PATH & LD_LIBRARY_PATH

Ответ Einpoklum выше помог мне установить CUDA 10.0 на Debian 9 Stretch.

После успешной установки CUDA я не смог проверить версию и устранить проблему, потому что мне нужно было постоянно изменять PATH & LD_LIBRARY_PATH путем редактирования файла .bashrc.


Документация по CUDA Toolkit здесь

Келли
источник