Как использовать 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, а мой GPU - Quadro M1000M.

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

Кроме того, очевидно, что шмель может загрузить модуль. Итак, что именно он делает?

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

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

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

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

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

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

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

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

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

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

задан orodbhen 02.03.2016 в 05:07
источник

5 ответов

2

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

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

2 - Используйте Bumblebee optirun для запуска сеанса bash, из которого вы можете делать все свои материалы CUDA.

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

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

    
ответ дан orodbhen 10.03.2016 в 13:48
источник
5

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

export LD_LIBRARY_PATH=/usr/lib/nvidia-352

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

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

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

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

    
ответ дан David Huggins Daines 02.05.2016 в 17:16
0

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

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

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

    
ответ дан Huazuo Gao 21.10.2016 в 07:35
0

Я использую карту 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" report:

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 21.02.2017 в 11:59
0

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

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

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

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

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

log_file: /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 не может получить доступ / запустить / u-d-c-fglrx-загружен файл Поиск модулей 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 в черный список? нет Является ли Intel загружен? да Радеон загружен? нет Является ли radeon в черный список? нет Загружен ли amdgpu? нет Является ли amdgpu в черный список? нет Нужна ли загрузка? нет В стиле «нувориш»? да Доступен ли модуль ядра fglrx? нет Доступен ли модуль ядра nvidia? да Идентификатор продавца / устройства: 8086: 126 BusID "PCI: 0 @ 0: 2: 0" Является ли boot vga? да Идентификатор продавца / устройства: 10de: 1b82 BusID "PCI: 5 @ 0: 0: 0" Является ли boot vga? нет Пропуск "/ dev / dri / card1", управляемый "i915" Пропуск "/ dev / dri / card0", управляемый "nvidia-drm" Пропуск "/ dev / dri / card1", управляемый "i915" Пропуск "/ dev / dri / card0", управляемый "nvidia-drm" Пропуск "/ dev / dri / card1", управляемый "i915" Пропуск "/ dev / dri / card0", управляемый "nvidia-drm" Найдено "/ dev / dri / card1", управляемый "i915" выход 0:     CARD1-LVDS-1 выход 1:     card1-HDMI-А-2 Количество подключенных выходов для / dev / dri / card1: 2 Требуется ли разгрузка? да последний номер карты = 2 Имеет amd? нет Имеет интеллект? да Имеет nvidia? да Сколько карт? 2 Изменилась ли система? нет main_arch_path x86_64-linux-gnu, other_arch_path i386-linux-gnu Текущая альтернатива: /usr/lib/nvidia-387-prime/ld.so.conf Текущая базовая альтернатива: (null) Текущая альтернатива egl: /usr/lib/nvidia-387-prime/ld.so.conf Включена ли nvidia? нет Включен ли nvidia egl? нет Включен ли fglrx? нет Включена ли меза? нет Включен ли mesa egl? нет Включено ли нажатие на кнопку? нет Включен ли первый штрих? да Включен ли простой egl? да Доступна ли nvidia? да Доступна ли nvidia egl? нет Доступен ли fglrx? нет Доступно ли fglrx-core? нет Доступна ли меза? да Доступен ли mesa egl? да Доступен ли доступный формат? нет Является ли доступным? да Является ли простой эгль доступным? нет Intel IGP обнаружен Интегрированная система Intel Драйвер Nvidia версии 387.34 обнаружен / sys / class / dmi / id / product_version="ThinkPad T420" / SYS / класс / DMI / ID / product_name="4236L23" 1-я попытка: bbswitch без причуд Загрузка bbswitch с параметрами «load_state = -1 unload_state = 1» Ошибка: невозможно открыть / proc / acpi / bbswitch Удаление xorg.conf. Путь: /etc/X11/xorg.conf недоступен /usr/share/gpu-manager.d/hybrid-power-saving Нет необходимости изменять текущий статус bbswitch.

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

    
ответ дан nhorning 30.12.2017 в 21:05