CUDA 10.2 - разные пути установки

CUDA 10.2 - разные пути установки

У меня возникла проблема с установкой CUDA 10.2 и библиотек cublas.

Файлы Cuda находятся в /usr/local, а файлы cublas — в файле /usr/include.

Теперь у меня есть программа, в которой я должен ввести HOME_PATH для установок Cuda, где их найти.

Я попытался создать символическую ссылку на файлы cublas в /usr/local, но программа не может найти необходимые файлы.

Есть ли способ скопировать (он защищен) файлы cublas в /usr/local? Или как-то изменить путь установки файлов cublas?

заранее большое спасибо

Крис

решение1

Ниже предполагается, что вы используете систему Ubuntu с текущими драйверами Nvidia.

CUDA — это всего лишь приложение, но ему нужна определенная (часто старая) версия компилятора и свои собственные (несколько устаревших версий) видеодрайверы.
Релиз CUDA будет иметь свои собственные каталоги для:

  • bin -- для исполняемых файлов
  • lib64 -- для библиотек ссылок
  • включить -- файлы компилятора

Добавление каталога CUDA bin в начало переменной среды PATH позволяет получить доступ к этим программам и переопределить системные программы по умолчанию (как в случае старых версий для g++, gcc, ar, nm и ranlib).

Добавление каталога CUDA lib64 в начало LD_LIBRARY_PATH позволит загружать эти (общие) библиотеки при стандартных загрузках программы.

Каталог CUDA include обычно добавляется как переменная в флагах компилятора makefile, поэтому эти файлы могут быть выбраны компилятором. Нет необходимости рассыпать эти файлы CUDA по системным каталогам bin, lib и include. Приложения обычно этого не делают. Хранение CUDA bin, lib64 и include файлов в каталоге релиза CUDA позволяет поддерживать несколько релизов CUDA одновременно. Просто внесите изменения PATH и LD_LIBRARY_PATH в скрипт, связанный с каждым релизом.

Единственным исключением из разделения программ может быть установка системного старого компилятора -- gcc-8 и инструменты (ar-8, nm-8, ranlib-) требуются CUDA 10.2. Доступ к старому компилятору осуществляется через ссылки (gcc, ar, nm, ranlib), добавленные в каталог CUDA bin. Избегайте изменения системного компилятора по умолчанию на старый (например, через ссылки или update-alternatives).

Другие части системы могут сломаться, если их заставят использовать старый компилятор (например, видеодрайверы). Достаточно старый релиз CUDA может потребовать старый компилятор, не поставляемый стандартными репозиториями (например, gcc-5 для CUDA 8.0). Вам нужно будет предоставить собственные копии такого компилятора и любые общие библиотеки, которые ему нужны, — поместив их в каталоги bin и lib64 релиза CUDA.

Настроить выпуск CUDA таким образом легко, просто распакуйте предоставленный deb-файл в выбранное вами место:

dpkg-deb --extract CUDAarchive YourDirectory

Раньше это было все, что было нужно, но релизы CUDA, такие как 10.2, просто сделали содержимое предоставленного файла deb для релиза дополнительными файлами deb. Обратите внимание на нежелательные файлы deb Nvidia для старых релизов, проигнорируйте или удалите их и распакуйте все отдельные файлы deb. Теперь у вас есть каталог релиза CUDA, поэтому настройте скрипт для изменения PATH и LD_LIBRARY_PATH (или, если вас не волнуют несколько релизов CUDA, просто внесите эти изменения в свой .profile (при условии, что вы используете оболочку типа bash).

При таком подходе все файлы CUDA хранятся вне менеджера пакетов, поэтому обновления выполняться не будут — что может быть как хорошо, так и плохо в зависимости от вашей точки зрения.

К сожалению, возникнут проблемы, если вы просто запустите скрипт «запустить файл» или установите поставляемый deb-релиз CUDA.

  1. Старые драйверы Nvidia заменят ваши текущие видеодрайверы. Надеюсь, вы все равно сможете войти в систему.
  2. Переустановка текущих драйверов Nvidia может привести к удалению старых и всех их зависимостей (то есть всех файлов CUDA). Ну, никогда не мешайте менеджеру пакетов делать свою работу, но вы можете сделать копию всего вашего релиза CUDA, позволить менеджеру пакетов удалить его и восстановить.

Все эти обходные пути с менеджером пакетов в конечном итоге приведут к выпуску CUDA без менеджера пакетов, как описано выше.

Связанный контент