Karta NVIDIA dla CUDA i karta AMD do wyświetlania na Ubuntu 16.04

12

Korzystam z systemu Ubuntu 16.04, ponieważ uważam, że wygodniejszy jest system operacyjny z konwolucyjnymi sieciami neuronowymi (CNN). Proces instalacji Ubuntu był w porządku, dopóki nie chciałem zainstalować dwóch kart graficznych w tym samym systemie:

  • NVIDIA 970 GTX
  • AMD R9 380

Chciałem użyć mojej karty NVIDIA tylko do CUDA, aby móc korzystać z całej jej pamięci graficznej i AMD do graficznego interfejsu użytkownika. W tym celu wszystkie monitory zostaną podłączone do tej karty.

Problemy:

  • Kiedy instaluję sterowniki nvidia i cuda 8.0 wszystko wydaje się OK, ale kiedy instaluję sterownik AMD, nie mogę zalogować się do lightdm.
  • Jeśli podłączę monitory do kart AMD, napisane jest, że lightdm działa w niskim trybie graficznym i nic nie działa.
  • Zmodyfikuj plik xorg.conf nie robi żadnej różnicy, ponieważ jest on nadpisywany przez gpu-manager

Nie mogłem znaleźć żadnego samouczka wyjaśniającego, jak to zrobić.

Marcus
źródło
Wytnij i wklej część odpowiedzi w poście w osobnej odpowiedzi poniżej.
edwinksl,
OK, zrobiłem to ...
Marcus

Odpowiedzi:

11

Przed rozpoczęciem zalecamy zainstalowanie ssh, aby móc zdalnie zamknąć system, jeśli coś pójdzie nie tak. Aby to zrobić, użyj tego polecenia:

sudo apt-get install ssh

i aby zamknąć system, musisz ssh z innym komputerem lub urządzeniem mobilnym i użyć tego polecenia:

sudo shutdown -r now

Krok 1

Przede wszystkim musisz fizycznie usunąć kartę AMD, zachować kartę NVIDIA i zainstalować CUDA oraz sterownik NVIDIA. Możesz pobrać cuda stąd: https://developer.nvidia.com/cuda-downloads

Upewnij się, że wszystko działa za pomocą tego polecenia:

nvidia-smi

Krok 2

W tym momencie musimy zmodyfikować grub, aby uruchomić w trybie konsoli, ponieważ mamy do czynienia z kartami graficznymi.

Za pomocą swojego ulubionego edytora (w moim przypadku Joe) edytuj domyślny plik konfiguracyjny grub:

sudo joe /etc/default/grub

I zmień te linie:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
#GRUB_TERMINAL=console

do tych:

GRUB_CMDLINE_LINUX_DEFAULT="text"
GRUB_CMDLINE_LINUX="text"
GRUB_TERMINAL=console

Na koniec zaktualizuj grub za pomocą tego polecenia:

sudo update-grub

Krok 3

Wyłącz system, wyjmij kartę NVIDIA i podłącz kartę AMD. Włącz komputer i zainstaluj najnowsze sterowniki graficzne AMD. W moim przypadku zainstalowałem sterowniki za pomocą tych poleceń:

wget https://www2.ati.com/drivers/linux/ubuntu/amdgpu-pro-16.40-348864.tar.xz
tar -Jxvf amdgpu-pro-16.40-348864.tar.xz
cd amdgpu-pro-16.40-348864/
./amdgpu-pro-install
sudo usermod -a -G video $USER

Zrestartuj swój komputer. Teraz możesz uruchomić lightdm (interfejs użytkownika) za pomocą tego polecenia:

sudo service lightdm start

Wszystko powinno działać zgodnie z oczekiwaniami, a teraz możesz skonfigurować wyświetlacze za pomocą ustawień systemowych.

Krok 4

Zamknij system, a teraz dodaj swoją kartę NVIDIA i nie usuwaj AMD (w tym momencie będziesz mieć dwie karty graficzne w systemie). Włącz komputer i zaloguj się przy użyciu swojej nazwy użytkownika, ale NIE ROZPOCZNIJ LIGHTDM !!

W tym momencie gpu-manager automatycznie skonfigurował obie karty graficzne dla trybu konsoli i tylko AMD dla lightdm (odkąd lightdm zaczęliśmy w poprzednim kroku). Jeśli uruchomimy lightdm, gpu-manager zrobi bałagan. Więc teraz musimy całkowicie wyłączyć menedżera GPU. W tym celu musimy ponownie zmodyfikować grub:

sudo joe /etc/default/grub

i zamień te linie:

GRUB_CMDLINE_LINUX_DEFAULT="text"
GRUB_CMDLINE_LINUX="text"
GRUB_TERMINAL=console

przez te:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nogpumanager"
GRUB_CMDLINE_LINUX=""
#GRUB_TERMINAL=console

Na koniec zaktualizuj grub za pomocą tego polecenia:

sudo update-grub

Krok 5

Uruchom ponownie system, a jeśli lightdm nie uruchomi się poprawnie (pojawia się czarny ekran), musisz nacisnąć Ctrl + F1, zalogować się w trybie konsoli i dodać to polecenie do pliku rc.local:

sudo joe /etc/rc.local

dodaj ten wiersz przed „wyjściem 0”:

service lightdm start

zrestartuj system i wszystko powinno teraz działać dobrze ...

W konsoli możesz sprawdzić, czy obie karty graficzne są w użyciu za pomocą tego polecenia:

lspci -nnk | grep -i vga -A3 | grep 'in use'

Kernel driver in use: amdgpu
Kernel driver in use: nvidia

i nvidia-smi powinna działać dobrze. pokazując, że używasz 0 megabajtów pamięci:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.26                 Driver Version: 375.26                    |
|-------------------------------+----------------------+----------------------+
| 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 970     Off  | 0000:02:00.0     Off |                  N/A |
| 30%   42C    P0    36W / 163W |      0MiB /  4036MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
Marcus
źródło
Próbowałem zmusić to do działania od kilku dni. Z którego jądra korzystałeś w systemie Ubuntu 16.04?
Aaron Skomra
Czy ci się udało
Szymon Roziewski
1
@ d84_n1nj4 Nie próbowałem na Ubuntu 18.04, może działa bezpośrednio bez konieczności wykonywania tych wszystkich kroków ... byłoby miło, gdybyś mógł podzielić się swoimi doświadczeniami.
Marcus
1
@Marcus Zrobię to. Powinien to rozpocząć / zrobić do poniedziałku. Cóż, jak tylko Amazon
wyśle ​​mój nieuporządkowany
2
@Marcus to faktycznie działało bezpośrednio po połączeniu - nie musiałem przechodzić żadnych kroków ^^
d84_n1nj4