Jak skonfigurować igpu dla Xserver i NVIDIA GPU dla CUDA?

12

Ubuntu 16.04

Wyjście 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

Klasa komputerowa:

  • Procesor: Intel
  • GPU: Nvidia z 361,42

Czego chcę:

  • procesor graficzny Intel uruchomi serwer xserver i mój monitor, który jest podłączony do wbudowanego DP
  • GPU nvidia będzie wykorzystywane wyłącznie do obliczeń specyficznych dla CUDA itp.
  • pełna kontrola nad NVIDIA GPU (w czasie rzeczywistym, statystyki, prędkości wentylatora Temps ...)

Mój problem:

  • ani nvidia-sminie nvidia-settingspracuję i nie mogę kontrolować mojej karty graficznej NVIDIA (błędy są cytowane dalej)

Moja historia:

Po krótkim podsumowaniu mojego problemu chcę zagłębić się w temat; Od czasu wydania Ubuntu 16.04 majstruję i nie osiągam następujących celów:

  • Chcę, aby mój procesor graficzny Intel (i7 6700K) napędzał mój serwer Xserver i wszystko, co było z nim związane.
  • Chcę, aby moja dedykowana karta graficzna nvidia była używana tylko do obliczeń opartych na Cuda i tym podobnych.
  • Dodam więcej niż jeden procesor graficzny NVIDIA do systemu, po rozwiązaniu problemów.

Krótkie podsumowanie mojego stanu początkowego:

Zainstalowałem zastrzeżone sterowniki dla NVIDIA i Intel (intel-microcode i nvidia-361.42) poprzez apt-get i wyłączony bezpieczny rozruch poprzez mokutul - wyłącz-sprawdzanie poprawności.
Potem ustawiłem nvidia-prime na używanie karty wywiadowczej.
Następnie edytowałem mój xorg.conf, aby zawierał tylko jeden ekran z Intel GPU i sterownikiem Intel. (w razie potrzeby zapytaj o szczegóły)
Testując procesor graficzny do renderowania za pomocą Blendera, wszystko wydawało się w porządku, poza tym, że nie mogłem uzyskać żadnych statystyk mojego GPU, a ustawienia NVIDII wyglądały na puste.

Błędy:

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.

Czego do tej pory nauczyłem się przez wszystkie moje próby i badania od czasu wydania (krótka wersja, pytaj o szczegóły w dowolnym momencie):

Moje dwa problemy są powiązane, ale nie takie same:

Nvidia-settings Pusty:

  • dzieje się tak, ponieważ ustawienia te pojawiają się tylko wtedy, gdy Xserver jest podłączony do procesora graficznego nvidia
  • rozwiązaniem tego byłoby dodanie nowego ekranu w xorg.conf, który zmusza i nieużywany serwer do uruchamiania na GPU nvidia
  • ale obecnie nie jest to możliwe (zobacz inny problem) i niepożądane, ponieważ po prostu chcę, aby procesor graficzny NVIDIA skupił się na Cuda

Nvidia-smi nie działa:

  • bbswitch nie jest problemem, ponieważ mój GPU (550ti) go nie obsługuje (błędy w dmesg)
  • nvidia prime zmienia wpis dla x86_64-linux-gnu_gl_conf na /usr/lib/nvidia-361/ld.so.conf(nvidia GPU wybrana) lub /usr/lib/nvidia-361-prime/ld.so.conf(wybrana Intel GPU)
  • w konfiguracji wyboru danych wywiadowczych brakuje istotnych ścieżek do podstawowych modułów NVIDIA, które wszystkie są obecne w conf dla wyboru NVIDII
  • po przejściu na nvidię za pomocą wyboru głównego, nie mam Xservera, ponieważ Display jest podłączony do zintegrowanego procesora graficznego, ale logowanie do wirtualnej konsoli nvidia-smi działa

Moje założenie:

  • Nvidia prime jest zła i nie chce tego, co chcę.
  • Muszę jakoś przezwyciężyć liczbę pierwszą i skonfigurować system (nawet ręcznie pisać nowe konfiguracje?)

Moje próby:

  • Próbowałem odinstalować nvidia-prime, ale później zrozumiałem, że to nie działa. Po usunięciu pliku conf dla x86_64-linux-gnu_gl_conf, wynikiem jest czysty bałagan ...
  • Próbowałem nawet ręcznie dodać brakujące ścieżki do plików x86_64-linux-gnu_gl_conf, ale tak naprawdę nie wiedziałem, co robię i nie miałem sukcesu.

Moje pytania:

1) Jak mogę rozwiązać problem NVIDIA-SMI? Czy jestem na dobrej drodze? Czy ktoś ma instrukcje, jak mogę postępować?

2) Czy można włączyć kontrolę wentylatora i dalsze sterowanie dla nvidii gpu (coolbits w xorg.conf) bez Xservera na gpu (bez ekranu dla gpu w xorg.conf)?

Ogromne dzięki z góry za wszelkie odpowiedzi. Dosłownie przeczesałem sieć, grzebień jest moim problemem.
Jeśli coś przeoczyłem, powiedz mi i nie wahaj się poprosić o pliki dziennika itp.

DZIĘKI

Obrazy

Mój obraz dodatkowej zakładki sterownika: wprowadź opis zdjęcia tutaj

winnetou
źródło
Ja też stworzył pytanie startera: answers.launchpad.net/ubuntu/+question/294621
Winnetou
może nie opisałem poprawnie mojego procesu instalacji: po zainstalowaniu sterowników nvidia przez apt-get sprawdzane są również sterowniki dodatkowe, jak już powiedziałeś, a właściwe sterowniki zostały już wybrane. włączyłem zrzut ekranu. sterowniki są obecne i jeśli zmienię nvidia-prime na Nvidia-Gpu, wszystko będzie działać. zmiana tego ustawienia nie może zainstalować całego sterownika, a właściwie jego części i nawet nie będzie działać bez jego obecności
winnetou 15.06.2016
to była czysta instalacja Ubuntu 16.04 Przy każdym rozruchu aktualizuję i aktualizuję apt-get, więc chyba mam zainstalowane najnowsze oficjalne aktualizacje
winnetou
Wiem, że sterowniki są używane przez system, ponieważ mogę używać CUDA na GPU nvidia. Ale nie wszystkie moduły nvidia są ładowane podczas rozruchu, więc na przykład nvidia-smi nie ma libs .... JEŚLI poprawnie rozumiem mój problem
winnetou

Odpowiedzi:

4

Zaakceptowana odpowiedź wykorzystuje serwer X do włączenia urządzeń Nvidia. Nie jest to konieczne i oznacza, że ​​serwer X zużyje trochę pamięci karty.

Zamiast tego nvidia-modprobenależy zainstalować zgodnie z opisem w często zadawanych pytaniach dotyczących sterowników (można je znaleźć pod linkiem poniżej).

Więc moim zalecanym rozwiązaniem jest:

1) Zainstaluj najnowszy sterownik Nvidia za pomocą pliku run z ftp://download.nvidia.com/XFree86/Linux-x86_64/ z flagą --no-opengl-filesi --dkms.
2) Instalacja odpowiadający nvidia-modprobewersji przez make alli sudo make installod ftp://download.nvidia.com/XFree86/nvidia-modprobe/

--dkmsFlagi zapewnia, że moduł jądra zrekompilowane po aktualizacji jądra.

leezu
źródło
To zadziałało dla mnie. To jest najprostsza odpowiedź i powinna być odpowiedzią zaakceptowaną.
Marko Avlijaš
To rozwiązanie nie działało dla mnie. Zamiast tego po prostu zainstalowałem sterownik normalnie i dodałem ścieżkę nvidia do LD_LIBRARY_PATH, jak wspomniano poniżej.
wycofuje
3

Ja (twórca tego postu) sam znalazłem rozwiązanie, którego potrzebuję!

Wyjaśnię teraz rozwiązanie każdemu, kto znajduje się w podobnej sytuacji i potrzebuje tej pomocy!

ROZWIĄZANIE:
ZAINSTALUJ STEROWNIK NVIDIA PRZEZ RUNFILE DOSTARCZONY NA http://www.nvidia.com/object/unix.html Z FLAGĄ „--no-opengl-files” !!

Zapobiega to nie tylko zastąpieniu istniejących plików mesa przez pliki nvidia opengl, ale także instaluje sterownik bez nvidia prime !!

Więc wszystkie moje problemy zostały rozwiązane, po prostu instalując sterownik ręcznie, zamiast instalować go z repozytoriów. Pakiet z repozytoriów jest „przyjazny dla Optimusa”, a zatem zawiera wszystkie niepotrzebne kłopoty.

PO DRUGIE

xorg.conf musi zostać rozszerzony o kolejny ekran dla dedykowanych procesorów graficznych, tak aby zawierał / miał wpisy w ustawieniach nvidia.

moje wygląda tak

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
winnetou
źródło
1
Cześć. Odpowiedź od leezu jest prostsza i być może powinieneś to zaakceptować?
Marko Avlijaš
Nie mogę jeszcze potwierdzić odpowiedzi leezu, choć dla moich oczu wygląda to bardzo obiecująco. Jeśli więcej osób zgłasza, że ​​to działa, lub w końcu mogę przetestować jego odpowiedź i mogę potwierdzić, zmienię przyjętą odpowiedź. Rozwiązuje problem polegający na tym, że nvidia-modprobe nie działa bez serwera X działającego na tej karcie.
winnetou
To nie działa, jeśli usuniesz wszystkie istniejące sterowniki NVIDIA i zaczniesz od nowa. Mówi to 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

Otrzymałem żądaną konfigurację (ja też tego chciałem;)):

  • procesor graficzny Intel uruchomi serwer xserver i mój monitor, który jest podłączony do wbudowanego DP
  • GPU nvidia będzie wykorzystywane wyłącznie do obliczeń specyficznych dla CUDA itp.
  • pełna kontrola nad NVIDIA GPU (w czasie rzeczywistym, statystyki, prędkości wentylatora Temps ...)

za pomocą bumblebee.

Ale zanim przejdę do kilku szczegółów, powinienem cię ostrzec, że zmieniając konfigurację ustawień nvidia lub xorg.conf lub nvidia prime, musisz ponownie uruchomić system (być może już wiesz). Brak ponownego uruchomienia może spowodować niespójność systemu.


W mojej konfiguracji nie dotknąłem xorg.conf. Robiąc to dla mnie zawsze było źródłem bólu. Pozostaw to w oryginalnym stanie. Jeśli nie chcesz wykonywać nowej instalacji, możesz znaleźć kopie zapasowe w /etc/X11/( ls /etc/X11/xorg.conf*).

Pierwszym krokiem jest próba wykonania nvidia-settingspracy. Jeśli ci się to uda, możesz użyć NVIDIA PRIME, aby przełączyć się na procesor graficzny Intel, jak już wspomniałeś. Posiadanie nvidia prime point do procesora graficznego Intel jest potrzebne, jeśli chcesz używać procesora graficznego NVIDIA tylko do obliczeń CUDA (jest to szczególnie potrzebne, jeśli chcesz korzystać z debuggera cuda cuda-gdb).

Następnie możesz spróbować zainstalować trzmiel :

sudo apt install bumblebee

Restart. Możesz monitorować stan trzmiela za pomocą

sudo service bumblebeed status

lub

bumblebeed -vv

Trzmiel aktywuje procesor graficzny NVIDIA i próbuje wstawić sterownik nvidia do jądra tylko wtedy, gdy jest to wymagane. Możesz użyć trzmiela, oczekując optirunna polecenie, które chcesz uruchomić.

Aby trzmiel działał, musiałem ręcznie edytować, /etc/bumblebee/bumblebee.confaby poprawnie ustawić nazwę i ścieżkę sterownika nvidia.

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

Potem, po pewnym czasie sudo service bumblebeed restart, udało mi się aktywować system trzmiela.

W rzeczywistości nvidia-smipowraca

$ 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.

ale 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 |
+-----------------------------------------------------------------------------+

Mam nadzieję że to pomoże.

Michele
źródło
dobra odpowiedź! ALE zmęczyłem Bumblebee z Ubuntu 15.10 i tym samym sprzętem. Tak bardzo, że zrobiłem nową instalację 16.04 po jej udostępnieniu. Było naprawdę gorzej. Nawet tryb odzyskiwania nie uruchomił się poprawnie ... Więc przysiągłem sobie, że nie będę już używał trzmiela. Innym problemem było trzmiel (nie wiem jak to obejść) było to, że mój dedykowany GPU nie obsługuje bbswitch, więc mam błędy, że GPU couln 't być wyłączony prawidłowo
Winnetou
Ale teoretycznie jest to możliwa odpowiedź! Ale nie tego, którego szukam :(.
winnetou,
Kolejne ALE: (Nie wiem, czy to zadziałało przy mojej próbie) Czy ustawienia nvidia pokazują GPU (oczywiście ustawienia sudo optirun nvidia)? Czy jesteś w stanie kontrolować prędkość wentylatora, napięcie itp.? Jeśli dobrze pamiętam, te ustawienia są możliwe tylko w ustawieniach NVIDIA, po włączeniu coolbits w pliku xorg.conf. nvidia-smi daje ci tylko monitor ... popraw, jeśli się mylę
winnetou,
Kolejny wielki znak zapytania brzmi: czy Bumblebee działa dobrze, jeśli mam więcej niż jeden dedykowany procesor? Ten przypadek użycia (igpu + gpu) nie jest już zalecany dla trzmiela na niemobilnym gpus, ale posiadanie więcej niż jednego d-gpu to zupełnie nowa historia dla trzmiela.
winnetou,
@winnetou masz całkowitą rację co do więcej niż jednego GPU - to dobre pytanie. Innym problemem jest to, że nvidia-docker nie działa zgodnie z oczekiwaniami.
vskubriev
1

Ponownie zainstalowałem sterowniki NVIDIA bez OpenGL, jak wspomniano w powyższych rozwiązaniach, ale to nie działało dla mnie. Ponadto rozwiązania te są dość niezadowalające, ponieważ implikują usunięcie niektórych możliwości sterowników (opengl).

Znalazłem znacznie prostsze rozwiązanie, dla którego nie trzeba ponownie instalować sterownika:

  • Normalnie zainstalowałem sterowniki NVIDIA
  • W GUI ustawień NVIDIA, przed profilami PRIME, wybrałem kartę graficzną Intel jako główny procesor graficzny
  • Po ponownym uruchomieniu nvidia-smi nie działa, ale naprawiłem to, dodając / usr / lib / nvidia-387 do ścieżki bibliotek:
    export LD_LIBRARY_PATH=/usr/lib/nvidia-387:$LD_LIBRARY_PATH

Uwaga: w zależności od zainstalowanego sterownika może być konieczne dodanie innego folderu do ścieżki biblioteki, na przykład / usr / lib / nvidia-384 .
Możesz dodać to polecenie do pliku ~ / .bashrc, aby automatycznie eksportować ścieżkę podczas ładowania nowego basha.

revers
źródło
Co się stanie, jeśli zaktualizujesz sterownik NVIDIA? Czy musisz ręcznie zmienić ścieżkę biblioteki?
liang
Myślę, że nie powinno to stanowić problemu, jeśli sterownik nadal znajduje się w tym samym folderze. Jeśli folder się zmieni, prawdopodobnie powinieneś zmienić ścieżkę biblioteki.
wycofuje
0

przede wszystkim dla mnie: w Ubuntu 18.04 używam igpu do renderowania i nvidia gpu dla cuda, instaluję domyślne sterowniki nvidia, otwieram ustawienia nvidia i ustawiasz korzystanie z intel gpu. Następnie umieść na czarnej liście nowe sterowniki i część sterowników NVIDIA:

otwórz /etc/modprobe.d/blacklist-nvidia.conf i skomentuj linie w ten sposób:

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

po tym otwórz /etc/modprobe.d/blacklist-nvidia-nouveau.conf i dodaj te linie:

blacklist nouveau
options nouveau modeset=0

aby być pewnym, że nowe są wyłączone, możesz umieścić je na czarnej liście w /etc/modprobe.d/blacklist.conf: na końcu dodaj:

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

następnie uruchom ponownie.

wpisz, nvidia-smiaby sprawdzić, czy nvidia jest załadowana, a wpisz, lspci -nnk | grep -iA2 3Daby sprawdzić, czy używany sterownik to nvidia, a nie nouveau.

użytkownik840583
źródło