Следующие инструкции действительны для 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
- Перейдите на страницу загрузок NVIDIA CUDA .
- Выберите « Linux»> «x86_64»> «Ubuntu» , а затем выберите любую последнюю версию (на момент написания: «Ubuntu 15.04»).
- Выберите опцию .run file .
- Загрузите файл .run (в настоящее время этот ). Удостоверьтесь, чтобы не вставить это
/tmp
.
- Сделать .run исполняемый файл:
chmod a+x cuda_7.5.18_linux.run
.
- Стать корнем.
- Запустите файл .run: сделайте вид, что принимаете их глупую лицензию на сжатие; скажите «да» установке только драйвера ядра NVIDIA и скажите «нет» всему остальному.
Установка должна сообщить вам, что она ожидает установки драйвера ядра NVIDIA, но вам следует перезагрузить компьютер, прежде чем продолжить / повторить установку инструментария. Так...
- По-видимому, удалось, перезагрузите компьютер.
Установка самой CUDA
- Будь корнем.
- Найдите и выполните
cuda_7.5.18_linux.run
- На этот раз скажите «Нет» установке драйвера, а «Да» - установке всего остального и примите пути по умолчанию (или измените их, все, что вам подходит).
Установщик, скорее всего, потерпит неудачу . Это хорошо, если предположить, что мы ожидаем такого рода ошибки: в ней должно быть указано, что версия вашего компилятора не поддерживается - CUDA 7.0 или 7.5 поддерживает до gcc 4.9, и у вас есть версия 5.x по умолчанию. Теперь, если вы получили сообщение об отсутствующих библиотеках , это означает, что мои инструкции относительно предварительных условий как-то не сработали, и вы должны прокомментировать здесь, чтобы я мог их исправить. Предполагая, что вы получили «хороший провал», перейдите к:
- Повторно вызовите файл .run, на этот раз с параметром --override.
- Сделайте тот же выбор, что и на шаге 11.
CUDA теперь должен быть установлен по умолчанию в разделе /usr/local/cuda
(это символическая ссылка). Но мы еще не закончили!
Поручить компилятору NVIDIA nvcc использовать правильную версию g ++
Компилятор NVIDIA CUDA фактически вызывает g ++ как часть процесса компоновки и / или для компиляции реальных файлов C ++, а не .cu. Я думаю. В любом случае, по умолчанию он запускает все, что находится на вашем пути, как g++
; но если вы поместите другойg++
под /usr/local/cuda/bin
, он будет использовать это первым! Так...
- Выполнить
symlink /usr/bin/g++-4.9 /usr/local/cuda/bin/g++
(и для хорошей меры, может быть, также symlink /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc
.
Вот и все.
Попробовать установку
cd /root/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd
make
Сборка должна завершиться успешно, и когда вы это сделаете
./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
.