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

12

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 (ошибки приводятся ниже)

Моя история:

После краткого изложения моей проблемы я хочу погрузиться в тему; После выхода 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 запускаться на графическом процессоре 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)?

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

БЛАГОДАРНОСТЬ

Изображения Изображение

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

Виннету
источник
Я также создал вопрос панели запуска: answers.launchpad.net/ubuntu/+question/294621
winnetou
возможно я не правильно описал процесс установки: после установки nvidia-drivers через apt-get также проверяются дополнительные драйверы, как вы сказали, и правильные драйверы уже выбраны. я включил скриншот. драйверы присутствуют, и если я переключаю nvidia-prime на Nvidia-Gpu, все работает. изменение этого параметра не может установить целый драйвер, фактически его часть драйвера, и даже не будет работать без его присутствия
winnetou
это была чистая установка Ubuntu 16.04. При каждой загрузке я обновляю и обновляю apt-get, так что, я думаю, у меня установлены последние официальные обновления
winnetou
Я знаю, что драйверы используются системой, так как я могу использовать CUDA на GPU nvidia. Но не все nvidia-модули загружаются при загрузке, так что nvidia-smi, например, не хватает libs .... ЕСЛИ я правильно понимаю мою проблему
winnetou

Ответы:

4

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

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

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

1) Установите последнюю версию драйвера Nvidia через runfile от 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Флаг гарантирует , что модуль ядра компилируется при обновлении ядра.

leezu
источник
Это сработало для меня. Это самый простой ответ и должен быть принятым ответом.
Марко Авлияш,
Это решение не сработало для меня. Вместо этого я просто установил драйвер и добавил путь nvidia к LD_LIBRARY_PATH, как указано ниже.
Реверс
3

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

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

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

Это предотвращает не только перезаписывание существующих файлов mesa файлами nvidia opengl, но и установку драйвера без 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
Виннету
источник
1
Здравствуй. Ответ от leezu проще, и, возможно, вы должны принять это?
Марко Авлияш,
Я пока не могу подтвердить ответ leezu, хотя он выглядит очень многообещающе для моих глаз. Если есть еще люди, сообщающие, что это работает, или я, наконец, смог проверить его ответ и смог подтвердить, я изменю принятый ответ. Он исправляет проблему с тем, что nvidia-modprobe не работает без x-сервера, работающего на этой карте.
winnetou
Это не сработает, если вы удалите все существующие драйверы nvidia и начнете все сначала. Говорит об этом NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
AfzalivE
1

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

  • 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 для Intel GPU необходимо, если вы хотите использовать NVIDIA GPU только для вычислений CUDA (это особенно необходимо, если вы хотите использовать отладчик 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 |
+-----------------------------------------------------------------------------+

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

Michele
источник
хороший ответ! НО я устал от Шмеля с Ubuntu 15.10 и таким же оборудованием, и это испортилось. Настолько, что я сделал новую установку 16.04 после того, как она стала доступной. Это было действительно хуже. Даже Recovery Mode не загружался правильно .... Так что я поклялся себе больше не использовать шмеля. Другая проблема с шмелем была (я не знаю, как вы это обошли) заключалась в том, что мой выделенный gpu не поддерживает bbswitch, поэтому я получил ошибки, что gpu не может быть правильно отключен
winnetou
Но это теоретически возможный ответ! Но не тот, который я ищу :(.
winnetou
Еще одно НО: (я не знаю больше, если это сработало при моей попытке) Показывает ли nvidia-settings графический процессор (sudo optirun nvidia-settings, конечно)? Вы можете контролировать скорость вентилятора, напряжение и т. Д.? Если я правильно помню, эти настройки возможны только в nvidia-settings, после того, как вы включили coolbits в файле xorg.conf. nvidia-smi только дает вам монитор ..... поправьте пожалуйста если я не прав
winnetou
И еще один огромный вопросительный знак: Шмель работает нормально, если у меня есть более одного выделенного графического процессора? Этот вариант использования (igpu + gpu) уже не рекомендуется для шмеля на немобильном gpus, но наличие более одного d-gpu - это новая история для шмеля.
winnetou
@winnetou, вы абсолютно правы насчет нескольких графических процессоров - это хороший вопрос. Другая проблема заключается в том, что nvidia-docker не работает, как ожидается, скорее всего.
вскубриев
1

Я переустановил драйверы 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.

отворот
источник
Что произойдет, если вы обновите драйвер nvidia? Вы должны вручную изменить путь к библиотеке?
Лян
Я думаю, это не должно быть проблемой, если драйвер все еще находится в той же папке. Если папка меняется, вам, вероятно, следует изменить путь к библиотеке.
Реверс
0

в основном как напоминание для меня: в 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.

user840583
источник