Совместная установка AMD и NVidia видеокарт на Ubuntu
Чтобы использовать одновременно и AMD видеокарту, и NVidia видеокарту под Ubuntu нужно аккуратно поставить драйверы и настроить X-сервер.
В моем случае хотелось использовать AMD для вывода информации на дисплей, для OpenGL и OpenCL, а NVidia видеокарту использовать для CUDA и OpenCL.
Существует инструкция, но для меня это не сработало, зато сработал более явный путь:
- 1) Убедиться что для каждой видеокарты по отдельности драйвер устанавливается и все работает
- 2) Удалить все драйвера и физически вытащить все видеокарты
- 3) Поставить AMD видеокарту
- 4) Запустить Ubuntu и установить драйвер для AMD (я использовал amdgpu-pro 18.20 на Ubuntu 16.04.5 c 4.15.0-32 кернелом)
- 5) Перезапустить, убедиться что все работает
- 6) Не вставляя NVidia карту установить NVidia драйвер (например
sudo apt install nvidia-384
) - 7) Выключить компьютер
- 8) Вставить NVidia карту и запустить компьютер. Вероятно X-сервер не сможет корректно запуститься, поэтому перейдя в консольный режим (
Ctrl+Alt+F1
) продолжаем - 9) Выполнить
sudo nvidia-xconfig
и открыть только что созданный/etc/X11/xorg.conf
- 10) Закомментировать или удалить все строки кроме секций Monitor, Device и Screen, получив что-то подобное:
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 28.0 - 33.0
VertRefresh 43.0 - 72.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
- 11) Выполнить
lspci | egrep -h "VGA|3D controller"
:
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Hawaii XT [Radeon R9 290X] (rev 80)
02:00.0 VGA compatible controller: NVIDIA Corporation GK110 [GeForce GTX TITAN] (rev a1)
- 12) Запомнив из этого вывода первые идентификаторы опять редактируем
/etc/X11/xorg.conf
так чтобы получилось:
Section "Monitor"
... ничего не меняем, оставляем то что и было ...
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusId "PCI:2@0:0:0" # Добавляем эту строку (число 2 взято из вывода lspci на прошлом шаге)
EndSection
# Добавляем аналогичную секцию для AMD:
Section "Device"
Identifier "Device1"
Driver "amdgpu"
BusId "PCI:1@0:0:0" # Число 1 аналогично взято из вывода lspci
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device1" # Здесь должен быть идентификатор той видеокарты, к которой подключен дисплей (в моем случае это AMD)
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
- 13) Перезапускаем, все работает.
Если не работает - могу попробовать помочь - напишите комментарий с выводом lspci | egrep -h "VGA|3D controller"
, что получилось в /etc/X11/xorg.conf
и /var/log/Xorg.0.log
.