Як встановити 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 версії 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.

@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 - Бібліотеки розширень Xinput для X Window System (+ файли розробки?)
  • 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 може працювати з клангом , принаймні експериментально, але я цього не пробував.

Встановлення драйвера ядра CUDA

  1. Перейдіть на сторінку завантажень CUDA NVIDIA .
  2. Виберіть Linux> x86_64> Ubuntu , а потім будь-яку найновішу версію у них (на момент написання: Ubuntu 15.04).
  3. Виберіть опцію файлу .run .
  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(це символьна посилання). Але ми не закінчили!

Направлення компілятора nvcc NVIDIA для використання правильної версії g ++

Компілятор CUDA NVIDIA насправді викликає 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 ...; вони можуть не зашкодити, але вони точно не допоможуть.
  • Перш ніж робити будь-яку з цих речей, ви можете переконатися, що ваш графічний графік взагалі розпізнається, використовуючи lspci | grep -i nvidia.

... ну, майже все це: Ви, звичайно, не можете встановити драйвер ядра, якщо ви не root. Але ви можете створити (не запустити) код CUDA без нього.
einpoklum - відновити Моніку

Просто спробував це. інсталятор cuda просто відмовляється встановлювати. Він виконує застереження, що вам слід скористатися .deb-файлом.

@WernerVanBelle: Чи можете ви розмістити це як окреме запитання? Або хоча б цитувати попередження, якщо воно занадто коротке? Крім того, IIRC має певний параметр командного рядка "сила", ви пробували це?
einpoklum - відновити Моніку

Все це - крім встановлення драйверів - також можна виконати як некореневий користувач у вашому домашньому каталозі, але цього буде достатньо лише для створення CUDA-коду, а не для його запуску . Для цього вам потрібен відповідний драйвер nVIDIA у вашому ядрі, і це може зробити лише користувач root. Вибачте за попередній коментар, який запропонував інакше. Крім того, для створення як некорінного користувача вам може знадобитися створити власну версію gcc / g ++, якщо ваш дистрибутив має лише більш нову версію (для CUDA 7.x вам знадобиться gcc 4.9.3).
einpoklum - відновити Моніку

@celavek: якщо ви вважаєте, що ця відповідь недостатньо добре висвітлює Debian 9, будь ласка, поясніть, чому перед тим, як зробити запропоновану редакцію.
einpoklum - відновити Моніку

6

Я думаю, що ви повинні це зробити за допомогою підсилок, я фактично плавно встановлюю 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


1

У Debian 9 "розтягування" зі старшим графічним процесором (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 драйвери для мого GPU. Більше інформації про це тут: 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 / local / gcc / 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 не працював - оновив пост, щоб відобразити це.
Грег

@Greg, ви придумали, як з часом встановити Cuda на Debian?
nullgeppetto

@nullgeppetto Я в кінці кінців відмовився від ідеї про Debian, оскільки знайшов занадто багато проблем із сумісністю, які я не зміг подолати.
Грег

@Greg, хммм, ось чого я боявся .. Отже, ти пішов на * ubuntu чи щось інше? Особисто я все ще чекаю свого gtx 960, тому спробую спробувати Debian ... Повідомлю вас, якщо хочете.
nullgeppetto

0

Перевірка встановлення на Debian 9 Stretch & change PATH & LD_LIBRARY_PATH

Відповідь Einpoklum допомогла мені встановити CUDA 10.0 на Debian 9 Stretch.

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


Документація інструментарію CUDA тут

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.