Как использовать CUDA с NVIDIA Prime

10

Я нашел полдюжины постов на эту тему по всему Интернету, но ни один из них действительно не отвечает на вопрос.

Я хочу настроить мой графический процессор nvidia только для вычислений, а не для управления дисплеем. Но когда я переключаюсь на использование графического процессора Intel в конфигурации nvidia-prime, я больше не могу загрузить модуль nvidia.

modprobe: ERROR: could not insert 'nvidia_352': No such device

Без модуля CUDA не работает, очевидно.

Так что же делает nvidia-prime, что делает невозможным загрузку модуля? Это не в черном списке. Там нет файла xorg.conf, так как система узнает, что использует Intel GPU вместо дискретного?

Я использую Dell 5510 Precision с установленной на заводе Ubuntu 14.04, а мой графический процессор - Quadro M1000M.

Некоторые предлагают использовать шмеля, но это не должно быть необходимым для чисто вычислительных нагрузок.

Также, видимо, шмель способен загрузить модуль. Так что именно он делает?

Обновление: так почему мне всегда кажется, что я нахожу ответ, когда наконец пишу вопрос, после нескольких часов попыток его выяснить. Это актуально только частичный ответ, но я к чему-то.

До сих пор я определил, что премьер делает по крайней мере две вещи:

  • Выключите графический процессор с помощью bbswitch.
  • Изменяет альтернативы для /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf.

Используя bbswitch для повторного включения графического процессора, я теперь могу загрузить модуль NVIDIA.

Но остается вопрос: как лучше настроить систему на использование карты NVIDIA только для вычислений?

Должен ли я установить nvidia-prime для использования графического процессора Intel и попытаться вручную выяснить, что это сделало, чтобы заставить работать CUDA?

Как убедиться, что система все еще использует графический процессор Intel для дисплея?

Как мне просто отключить NVIDIA prime и настроить все вручную?

Или я должен сдаться и использовать Шмель и optirun? Каковы недостатки этого, если таковые имеются?

Любые рекомендации?

orodbhen
источник
Можно ли отключить отображение на графическом процессоре в приложении NVIDIA X Server Settings?
Роджер Даль
Утилита NVIDIA позволяет выбирать только между Intel и NVIDIA GPU. Он не обеспечивает детализированные настройки, например, какую карту использовать для дисплея.
orodbhen

Ответы:

5

В моем случае я обнаружил, что карта NVidia фактически не была выключена, и единственное, что мне действительно нужно было сделать для запуска кода CUDA, было:

export LD_LIBRARY_PATH=/usr/lib/nvidia-352

в оболочке, где я хочу его запустить (я предполагаю, что глобальное изменение настроек альтернатив нарушит compiz, etc, etc ...)

Чтобы достичь этого (на Dell Optiplex 7010, с Ubuntu 14.04, CUDA 7.5 и GTX 980) я считаю, что следующие шаги:

  1. Используйте вкладку PRIME Profiles, чтобы выбрать Intel
  2. Перезагрузитесь и выберите Intel по умолчанию в BIOS
  3. Выключить компьютер
  4. Подключите мониторы к бортовому видео :)

Пока все работает нормально (nvidia-smi видит карту, запускаются образцы cuda, theano использует карту и т. Д.)

Дэвид Хаггинс Дэйнс
источник
1
Да, к сожалению, кажется, что нет единого решения, поэтому я действительно хотел понять, что происходит под капотом.
orodbhen
2

Я полагаю, что нашел по крайней мере поверхностное решение, как описано в обновлении к моему первоначальному посту. На самом деле есть два решения, которые я нашел, хотя я уверен, что есть и другие.

1 - При использовании Prime в режиме Intel повторно включите карту NVIDIA через bbswitch , затем запустите modprobe nvidiaдля загрузки модуля и создания узлов устройства.

2 - Используйте Bumblebee optirun, чтобы запустить сессию Bash, где вы можете делать все свои вещи CUDA.

Оба эти решения позволяют вам использовать встроенную графику для вашего дисплея, в то же время используя карту NVIDIA для вычислительных нагрузок. Решение optirun кажется более универсальным, но я предпочитаю первое за его минимализм.

Я надеюсь, что кто-то с большим пониманием улучшит этот ответ.

orodbhen
источник
Вы можете объяснить первый вариант более четко? Как вы включаете и выключаете карту с помощью bbswitch?
Abonec
Я действительно выяснил, как заставить шмеля работать хорошо, и я обновлю свой ответ, когда у меня будет время. Я в основном следовал за этим . Это расстраивает, что этот материал так плохо документирован, потому что это действительно довольно просто.
Ордбен
2

Я использую карту NVIDIA только для исполнения CUDA и выясняю такой подход:

Я все время пользуюсь картой Intel, и это подтверждается командой lspci | grep -E "VGA|3D":

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)

В соответствующем ряду для карты NVIDIA вы должны увидеть, (rev ff)что она выключена.

Чтобы включить карту и использовать ее для вычислений CUDA, я использую две следующие команды:

sudo prime-select nvidia
sudo prime-switch

После этого командного lspci | grep -E "VGA|3D"отчета:

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)

Обратите внимание (rev a2), не (rev ff)в соответствующем ряду. Теперь карта готова к вычислению.

После вычислений я использую обратные действия:

sudo prime-select intel
sudo prime-switch

И lspci | grep -E "VGA|3D"сообщает:

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)
Abonec
источник
Так что, по сути, вам нужно войти в систему только после переключения с Prime, если вы хотите переключиться, какой графический процессор работает на дисплее? Я не думал об этом, но это имеет смысл. Конечно, вам необходимо убедиться, что вы переключаетесь обратно перед выходом из системы или перезапуском.
Ордбен
Я использую этот подход. Я вхожу в систему с активным профилем Intel, поэтому Xorg и Firefox не используют графический процессор. Затем я переключаюсь на профиль nvidia, и вся моя работа с CUDA переходит на графический процессор, и ему не приходится конкурировать с Firefox и Xorg за память :)!
Джон
0

Если кто-то все еще находит проблемы после выполнения шагов в принятом ответе, попробуйте это:

echo "install bbswitch /bin/true" > /etc/modprobe.d/blacklist-bbswitch.conf
update-initramfs -u

Это отключит bbswitch в целом. Недостатком является то, что вы не сможете отключить карту NVIDIA для экономии энергии (Xorg по-прежнему будет использовать встроенную графику, пока prime-select intel).

Хуазуо Гао
источник
0

Я использую 1070 ti с ThinkPad T420 в egpu, настроенном для моей криптовалюты во время работы. Таким образом, GPU теоретически окупится через пару месяцев.

Я обнаружил, что с nvidia 387 export LD_LIBRARY_PATH = / usr / lib / nvidia-387 работает с ethminer, использующим cuda.

Тем не менее, единственный способ заставить систему продолжать работать после «первоочередной информации» - это если бы к монитору был подключен второй монитор, когда я делал выбор и выходил из системы. В противном случае я получаю сообщение об ошибке «Система работает в режиме низкой графики» или постоянно пустой экран. Конечно, когда я вхожу в систему с графикой Intel, монитор, подключенный к графическому процессору, ничего не отображает, поэтому мне нужно отсоединить его от графического процессора и снова подключить к системе (вывод док-станции DVI), чтобы запустить настройку монитора дуэли. ,

Я считаю, что это потому, что gpu-manager обнаруживает, что bbswitch не работает, а затем удаляет конфигурацию xorg.

Я публикую это, чтобы показать обходной путь для тех немногих, кто может оказаться в подобной ситуации, а также посмотреть, есть ли у кого-нибудь идея, чтобы не допустить этого, так как необходимость перемещать этот кабель для каждой перезагрузки - это немного неудобство.

файл_файла: /var/log/gpu-manager.log

Файл last_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot new_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot не может получить доступ к файлу / run / udc-fglrx-was -loaded Поиск модулей fglrx в / lib /modules/4.4.0-104-generic/updates/dkms Поиск модулей nvidia в /lib/modules/4.4.0-104-generic/updates/dkms Найдено модуль nvidia: nvidia_387_drm.ko Загружен ли nvidia? да nvidia был выгружен? нет nvidia в черном списке? да загружен ли fglrx? нет Был ли fglrx выгружен? нет Является ли fglrx в черном списке? нет Информация загружена? да загружен ли radeon? Нет ли Radeon в черном списке? нет загружен ли amdgpu? Нет ли amdgpu в черном списке? нет загружен ли модерн? Нет ли Nouveau в черном списке? да Доступен ли модуль ядра fglrx? нет Доступен ли модуль ядра nvidia? да Идентификатор производителя / устройства: 8086: 126 BusID "PCI: 0 @ 0: 2: 0" Является ли boot vga? да Производитель / Идентификатор устройства: 10de: 1b82 BusID "PCI: conf Текущая альтернатива ядра: (null) Текущая альтернатива egl: /usr/lib/nvidia-387-prime/ld.so.conf Включена ли nvidia? нет Включен ли nvidia egl? нет Включен ли fglrx? нет Включена ли меза? нет Включен ли mesa egl? нет Включен ли pxpress? нет Прайм включен? да Включен ли простой egl? да nvidia доступна? да Доступен ли nvidia egl? нет Доступен ли fglrx? нет Доступен ли fglrx-core? нет Доступна ли меза? да Доступен ли mesa egl? да Доступен ли pxpress? нет Премьер доступен? да Доступен ли простой egl? Intel IGP не обнаружен. Гибридная система Intel. Обнаружена версия драйвера Nvidia 387.34. / sys / class / dmi / id / product_version = "ThinkPad T420" / sys / class / dmi / id / product_name = "4236L23" 1-я попытка: bbswitch без излишеств. Загрузка bbswitch с помощью Параметры «load_state = -1 unload_state = 1» Ошибка: может ' t открыть / proc / acpi / bbswitch Удаление xorg.conf. Путь: /etc/X11/xorg.conf не может получить доступ к /usr/share/gpu-manager.d/hybrid-power-saving Нет необходимости изменять текущий статус bbswitch

Если я nano xorg.conf после этого он пуст. Я пишу об этом после выполнения трюка с переключением монитора, когда майнинг идет в фоновом режиме, а мой xorg.conf все еще пуст. Поэтому я предполагаю, что по какой-то причине, когда я продолжаю подключать монитор к графическому процессору при перезапуске lightdm, не имеет значения, что мой xorg.conf удален. Есть идеи?

nhorning
источник
Также ... У меня есть черный список bbswitch, как предложено выше, потому что я получаю постоянную ошибку при загрузке. Мне удалось загрузиться в режиме Intel с помощью nvidia-384 один или два раза, но у меня были проблемы с майнингом с этим, и я подумал, что это может быть из-за того, что поддержка nvidia-387 была добавлена ​​в 1070 раз.
Норнинг