Как настроить igpu для xserver и nvidia gpu для cuda?

Ubuntu 16.04

Выход из uname -a:

Linux HOST 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Настольный класс:

  • Процессор: Intel
  • GPU: Nvidia с 361,42

Что я хочу:

  • Intel GPU должен запустить xserver и мой монитор, который подключен к встроенному DP
  • GPU NVIDIA должен использоваться только для конкретных вычислений CUDA и т. д.
  • полный контроль над NVIDIA GPU (в режиме реального времени, статистика, скорость вращения вентилятора...)

Моя проблема:

  • ни nvidia-smi ни nvidia-settings работать, и я не могу контролировать свой nvidia GPU (ошибки приводятся ниже)

Моя история:

После краткого изложения моей проблемы я хочу погрузиться в тему; После выхода Ubuntu 16.04 я пытаюсь добиться следующего:

  • Я хочу, чтобы мой Intel GPU (i7 6700K) управлял моим Xserver и всем, что с ним связано.
  • Я хочу, чтобы мой выделенный графический процессор nvidia использовался только для вычислений на основе Cuda и т.п.
  • После того, как я решу свои проблемы, я добавлю в систему более одного графического процессора nvidia.

Краткое резюме моего начального состояния:

Я установил проприетарные драйверы для nvidia и intel (intel-microcode и nvidia-361.42) через apt-get и отключил безопасную загрузку через mokutul --disable-validation.
Затем я установил nvidia-prime для использования карты Intel.
Затем я отредактировал свой xorg.conf, чтобы он содержал только один экран с Intel GPU и драйвером Intel. (попросите подробности, если это необходимо)
При тестировании графического процессора для рендеринга с помощью Blender все выглядело нормально, за исключением того, что я не мог получить статистику моего gpu, а nvidia-settings оказались пустыми.

Ошибки:

sudo nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

То, что я до сих пор узнал во всех моих попытках и исследованиях с момента выпуска (короткая версия, спрашивайте подробности в любое время)

Мои две проблемы связаны, но не совпадают:

Nvidia-настройки Пусто:

  • это связано с тем, что эти настройки отображаются только при подключении Xserver к графическому процессору nvidia
  • Решением для этого было бы добавить новый экран в xorg.conf, который заставляет и неиспользуемый xserver запускаться на GPU nvidia
  • но в настоящее время это невозможно (см. другую проблему) и не желательно, поскольку я просто хочу, чтобы nvidia GPU фокусировался на Cuda

Nvidia-smi не работает

  • bbswitch не проблема, так как мой GPU (550ti) не поддерживает его (ошибки в dmesg)
  • nvidia prime меняет запись для x86_64-linux-gnu_gl_conf на любую /usr/lib/nvidia-361/ld.so.conf (выбран графический процессор NVIDIA) или /usr/lib/nvidia-361-prime/ld.so.conf (выбран графический процессор Intel)
  • в конфигурации для выбора Intel отсутствуют основные пути к основным модулям NVIDIA, которые все присутствуют в Conf для выбора NVIDIA
  • при переключении на nvidia через prime-select у меня нет Xserver, так как дисплей подключен к встроенному графическому процессору, но вход в систему с виртуальной консоли работает nvidia-smi

Мое предположение:

  • Нвидиа прайм плохая и не хочет так, как я хочу.
  • Я должен как-то преодолеть простое и настроить систему (даже вручную писать новые конфиги?)

Мои попытки:

  • Я попытался удалить nvidia-prime, но потом узнал, что это не может работать. Когда файл conf для x86_64-linux-gnu_gl_conf удален, результатом будет чистый беспорядок...
  • Я даже пытался добавить отсутствующие пути к файлам x86_64-linux-gnu_gl_conf вручную, но я действительно не знал, что делал, и не имел успеха.

Мои вопросы:

1) Как я могу решить проблему nvidia-smi? Я на правильном пути? У кого-нибудь есть инструкции, как мне поступить?

2) Можно ли включить управление вентилятором и дополнительные элементы управления для nvidia gpu (coolbits в xorg.conf) без Xserver на gpu (без экрана для gpu в xorg.conf)?

Огромное спасибо заранее за любые ответы. Я буквально расчесал паутину, а гребень был моей проблемой.
Если я пропустил что-то важное, пожалуйста, сообщите мне и не стесняйтесь запрашивать файлы журнала и т. Д.

СПАСИБО

Изображений

Моя дополнительная вкладка с изображением драйвера:

5 ответов

Я (создатель этого поста) нашел нужное мне решение самостоятельно!

Сейчас я объясню решение для всех, кто находится в подобной ситуации и нуждается в этой помощи!

РЕШЕНИЕ:
УСТАНАВЛИВАЙТЕ ДРАЙВЕР NVIDIA В СООТВЕТСТВИИ С RUNFILE, ПРЕДОСТАВЛЯЕМЫМ НА http://www.nvidia.com/object/unix.html С ФЛАГОМ "--no-opengl-files"!!

Это предотвращает не только файлы nvidia opengl от перезаписи существующих файлов mesa, но также устанавливает драйвер без nvidia prime!!

Так что все мои проблемы решены, просто установив драйвер вручную, а не устанавливая его из репозиториев. Пакет из репозиториев "Optimus-Friendly" и поэтому включает в себя все бесполезные нарушители спокойствия в комплекте с ним.

ВТОРОЙ

xorg.conf должен быть расширен еще одним экраном для выделенных графических процессоров, чтобы он / они имели / имели записи в настройках nvidia.

моя выглядит так

Section "ServerLayout"
    Identifier     "Layout0"
    Screen 0       "intel" 0 0
    Screen 1       "nvidia550ti" 3000 0
EndSection

Section "Device"
    Identifier     "intel"
    Driver         "intel"
    BusID          "PCI:0@0:2:0"
EndSection

Section "Device"
    Identifier     "nvidia550ti"
    Driver         "nvidia"
    BoardName      "GeForce GTX 550ti"
    BusID          "PCI:2@0:0:0"
EndSection

Section "Screen"
    Identifier     "intel"
    Device         "intel"
EndSection

Section "Screen"
    Identifier     "nvidia550ti"
    Device         "nvidia550ti"
    Option         "AllowEmptyInitialConfiguration" "on"
    Option         "Coolbits" "4"
    Option         "ConstrainCursor" "on"
EndSection

Я переустанавливал драйверы nvidia без opengl, как указано в вышеупомянутых решениях, но у меня это не сработало. Более того, эти решения весьма неудовлетворительны, поскольку подразумевают удаление некоторых возможностей драйверов (opengl).

Я нашел гораздо более простое решение, для которого вам не нужно переустанавливать драйвер:

  • Я установил драйверы nvidia нормально
  • В графическом интерфейсе nvidia, в профилях PRIME, я выбираю графическую карту Intel в качестве основного графического процессора.
  • После перезагрузки nvidia-smi не работает, но я исправил, добавив /usr/lib/nvidia-387 в путь к библиотекам:
    export LD_LIBRARY_PATH=/usr/lib/nvidia-387:$LD_LIBRARY_PATH

Обратите внимание, что в зависимости от установленного драйвера вам может понадобиться добавить еще одну папку в путь к вашей библиотеке, например / usr / lib / nvidia-384.
Вы можете добавить эту команду в файл ~/.bashrc для автоматического экспорта пути при загрузке нового bash.

Принятый ответ использует X-сервер для включения устройств Nvidia. Это не обязательно и означает, что X-сервер будет использовать некоторую память карты.

Вместо nvidia-modprobe должен быть установлен, как описано в FAQ по драйверу (можно найти по ссылке ниже).

Поэтому мое рекомендуемое решение:

1) Установите последнюю версию драйвера Nvidia через файл запуска с ftp://download.nvidia.com/XFree86/Linux-x86_64/ с помощью --no-opengl-files а также --dkms флаг.
2) Установите соответствующий nvidia-modprobe версия через make all а также sudo make install с ftp://download.nvidia.com/XFree86/nvidia-modprobe/

--dkms Флаг гарантирует, что модуль ядра перекомпилируется при обновлении ядра.

В основном как напоминание для меня: в Ubuntu 18.04 использовать igpu для рендеринга и nvidia gpu для cuda, установить драйверы nvidia по умолчанию, открыть nvidia-settings и установить для использования intel gpu. После этого, черный список драйверов nouveau и часть драйверов nvidia:

Откройте /etc/modprobe.d/blacklist-nvidia.conf и прокомментируйте строки следующим образом:

#blacklist nvidia
blacklist nvidia-drm
#blacklist nvidia-modeset
#alias nvidia off
alias nvidia-drm off
#alias nvidia-modeset off

после этого откройте /etc/modprobe.d/blacklist-nvidia-nouveau.conf и добавьте следующие строки:

blacklist nouveau
options nouveau modeset=0

чтобы быть уверенным, что nouveau отключены, вы можете занести их в черный список также в /etc/modprobe.d/blacklist.conf: в конце добавьте:

#Blacklist nouveau drivers
blacklist nouveau
blacklist lbm-nouveau
alias nouveau off
alias lbm-nouveau off

затем перезагрузите компьютер.

тип nvidia-smi проверить nvidia загружается, и набрать lspci -nnk | grep -iA2 3D Для проверки драйвера используется nvidia, а не nouveau.

Я получил конфигурацию, которую вы хотите (я тоже этого хотел;)):

  • Intel GPU должен запустить xserver и мой монитор, который подключен к встроенному DP
  • GPU NVIDIA должен использоваться только для конкретных вычислений CUDA и т. д.
  • полный контроль над NVIDIA GPU (в режиме реального времени, статистика, скорость вращения вентилятора...)

используя bumblebee,

Но прежде чем углубляться в некоторые детали, я должен предупредить вас, что при изменении конфигурации nvidia-settings или xorg.conf или nvidia prime вам необходимо перезагрузить систему (возможно, вы уже знаете). Невозможность перезагрузки может привести систему в несогласованное состояние.


В своей конфигурации я не трогал xorg.conf, Для меня это всегда было источником боли. Пожалуйста, оставьте это в исходное состояние. Если вы не хотите выполнять новую установку, вы можете найти некоторые резервные копии в /etc/X11/ (ls /etc/X11/xorg.conf*).

Первый шаг пытается сделать nvidia-settings Работа. Если вам это удастся, вы можете использовать nvidia PRIME для переключения на Intel GPU, как вы уже упоминали. Если вы хотите использовать NVIDIA GPU только для вычислений CUDA, вам нужно иметь основную точку nvidia для Intel GPU (особенно это нужно, если вы хотите использовать отладчик cuda). cuda-gdb).

После этого вы можете попробовать установить шмель:

sudo apt install bumblebee

Перезагружать. Вы можете следить за состоянием шмеля, используя

sudo service bumblebeed status

или же

bumblebeed -vv

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

Чтобы шмель работал, мне пришлось вручную редактировать /etc/bumblebee/bumblebee.conf правильно установить имя и путь драйвера nvidia.

[...]
Driver=nvidia
[...]
KernelDriver=nvidia_361
[...]
LibraryPath=/usr/lib/nvidia-361:/usr/lib32/nvidia-361

Затем, после sudo service bumblebeed restart Мне удалось активировать систему шмелей.

по факту nvidia-smi возвращается

$ nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

но optirun nvidia-smi:

$ optirun nvidia-smi
Fri Jun 17 11:47:48 2016       
+------------------------------------------------------+                       
| NVIDIA-SMI 361.42     Driver Version: 361.42         |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 970M    Off  | 0000:01:00.0     Off |                  N/A |
| N/A   53C    P1    18W /  N/A |     18MiB /  3071MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0     20678    G   /usr/lib/xorg/Xorg                               4MiB |
+-----------------------------------------------------------------------------+

Надеюсь это поможет.

Другие вопросы по тегам