Wie konfiguriere ich igpu für xserver und nvidia gpu für cuda?

12

Ubuntu 16.04

Ausgabe von 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

Desktop-Qualität:

  • CPU: Intel
  • GPU: Nvidia mit 361,42

Was ich möchte:

  • Auf der Intel-GPU sollen der xserver und mein Monitor ausgeführt werden, der mit dem integrierten DP verbunden ist
  • Die NVIDIA-GPU darf nur für CUDA-spezifische Berechnungen usw. verwendet werden.
  • Volle Kontrolle über die NVIDIA GPU (Echtzeit, Statistiken, Temp Lüftergeschwindigkeiten ...)

Mein Problem:

  • Weder nvidia-sminoch nvidia-settingsArbeit und ich kann meine NVIDIA-GPU nicht steuern (die Fehler werden weiter unten angegeben).

Meine Geschichte:

Nach der kurzen Zusammenfassung meines Problems möchte ich mich mit dem Thema befassen. Seit der Veröffentlichung von Ubuntu 16.04 bastele ich und schaffe Folgendes nicht:

  • Ich möchte, dass meine Intel-GPU (i7 6700K) meinen Xserver und alles, was dazu gehört, antreibt.
  • Ich möchte, dass meine dedizierte NVIDIA-GPU nur für Cuda-basierte Berechnungen und dergleichen verwendet wird.
  • Ich werde dem System mehr als eine NVIDIA-GPU hinzufügen, nachdem ich meine Probleme gelöst habe.

Eine kurze Zusammenfassung meines Ausgangszustands:

Ich habe die proprietären Treiber für nvidia und Intel (Intel-Microcode und NVIDIA-361.42) über apt-get installiert und den sicheren Start über mokutul --disable-valid deaktiviert.
Dann habe ich nvidia-prime eingestellt, um die Intel-Karte zu verwenden.
Dann habe ich meine xorg.conf so bearbeitet, dass sie nur einen Bildschirm mit Intel GPU und Intel Treiber enthält. (Fragen Sie bei Bedarf nach Details.) Beim
Testen der GPU für das Rendern mit Blender schien alles in Ordnung zu sein, außer dass ich keine Statistiken meiner GPU- und NVIDIA-Einstellungen erhalten konnte.

Fehler:

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.

Was ich bisher durch all meine Versuche und Forschungen seit der Veröffentlichung gelernt habe (Kurzversion, jederzeit nach Details fragen):

Meine beiden Probleme hängen zusammen, sind aber nicht gleich:

Nvidia-Einstellungen leer:

  • Dies liegt daran, dass diese Einstellungen nur angezeigt werden, wenn ein Xserver an die NVIDIA-GPU angeschlossen ist
  • Die Lösung hierfür wäre, einen neuen Bildschirm in xorg.conf hinzuzufügen, der einen nicht verwendeten xserver zwingt, auf der nvidia-GPU ausgeführt zu werden
  • Dies ist jedoch derzeit nicht möglich (siehe anderes Problem) und nicht erwünscht, da ich lediglich möchte, dass sich die NVIDIA-GPU auf Cuda konzentriert

Nvidia-smi funktioniert nicht:

  • bbswitch ist kein Problem, da meine GPU (550ti) es nicht unterstützt (Fehler in dmesg)
  • nvidia prime ändert den Eintrag für x86_64-linux-gnu_gl_conf in entweder /usr/lib/nvidia-361/ld.so.conf(nvidia GPU ausgewählt) oder /usr/lib/nvidia-361-prime/ld.so.conf(Intel GPU ausgewählt)
  • In der Konfiguration für die Intel-Auswahl fehlen wesentliche Pfade zu den wesentlichen NVIDIA-Modulen, die alle in der Conf für die NVIDIA-Auswahl vorhanden sind
  • Wenn ich über Prime-Select zu nvidia wechsle, habe ich keinen Xserver, da das Display mit der integrierten GPU verbunden ist, aber die Anmeldung an einer virtuellen Konsole nvidia-smi funktioniert

Meine Annahme:

  • Nvidia prime ist schlecht und will nicht so, wie ich will.
  • Ich muss Prime irgendwie überwinden und das System konfigurieren (sogar manuell neue Konfigurationen schreiben?)

Meine Versuche:

  • Ich habe versucht, nvidia-prime zu deinstallieren, aber erst danach festgestellt, dass dies nicht funktionieren kann. Wenn die conf-Datei für x86_64-linux-gnu_gl_conf gelöscht wird, ist das Ergebnis ein reines Durcheinander ...
  • Ich habe sogar versucht, die fehlenden Pfade manuell zu den x86_64-linux-gnu_gl_conf-Dateien hinzuzufügen, aber ich wusste nicht wirklich, was ich tat und hatte keinen Erfolg.

Meine Fragen:

1) Wie kann ich das NVIDIA-SMI-Problem lösen? Bin ich auf dem richtigen Weg? Hat jemand Anweisungen, wie ich vorgehen könnte?

2) Ist es möglich, die Lüftersteuerung und weitere Steuerungen für die nvidia-GPU (Coolbits in xorg.conf) ohne einen Xserver auf der GPU (ohne Bildschirm für die GPU in xorg.conf) zu aktivieren?

Vielen Dank im Voraus für alle Antworten. Ich habe buchstäblich das Netz gekämmt, wobei der Kamm mein Problem war.
Wenn ich etwas Wichtiges verpasst habe, sagen Sie es mir bitte und zögern Sie nicht, Protokolldateien usw. anzufordern.

VIELEN DANK

Bilder

Mein zusätzliches Bild auf der Registerkarte "Treiber": Geben Sie hier die Bildbeschreibung ein

winnetou
quelle
Ich habe auch eine Launchpad-Frage erstellt: answers.launchpad.net/ubuntu/+question/294621
winnetou
Vielleicht habe ich meinen Installationsprozess nicht richtig beschrieben: Nach der Installation von nvidia-Treibern über apt-get werden auch zusätzliche Treiber überprüft, wie Sie sagten und die richtigen Treiber wurden bereits ausgewählt. Ich habe einen Screenshot beigefügt. Die Treiber sind vorhanden und wenn ich nvidia-prime auf Nvidia-Gpu umstelle, funktioniert alles. Das Ändern dieser Einstellung kann nicht einen ganzen Treiber installieren, sondern nur einen Teil des Treibers und funktioniert nicht einmal, wenn er nicht vorhanden ist
am
Es war eine saubere Ubuntu 16.04-Installation. Bei jedem Boot, den ich aktualisiere und aktualisiere, habe ich die neuesten offiziellen Updates installiert
Winnetou
Ich weiß, dass die Treiber vom System verwendet werden, da ich CUDA auf der NVIDIA-GPU verwenden kann. Aber nicht alle nvidia-Module werden beim Booten geladen, so dass nvidia-smi zum Beispiel libs vermisst .... WENN ich mein Problem richtig verstehe
winnetou

Antworten:

4

Die akzeptierte Antwort verwendet den X-Server, um die Nvidia-Geräte zu aktivieren. Dies ist nicht erforderlich und bedeutet, dass der X-Server einen Speicher der Karte verwendet.

Sollte stattdessen nvidia-modprobewie in den Treiber-FAQ beschrieben installiert werden (finden Sie unter dem folgenden Link).

Meine empfohlene Lösung lautet also:

1) Installieren Sie den neuesten Nvidia-Treiber über die Run-Datei von ftp://download.nvidia.com/XFree86/Linux-x86_64/ mit dem Flag --no-opengl-filesund --dkms.
2) Installieren Sie die entsprechende nvidia-modprobeVersion über make allund sudo make installvon ftp://download.nvidia.com/XFree86/nvidia-modprobe/

Das --dkmsFlag stellt sicher, dass das Kernelmodul beim Upgrade Ihres Kernels neu kompiliert wird.

leezu
quelle
Das hat bei mir funktioniert. Dies ist die einfachste Antwort und sollte die akzeptierte Antwort sein.
Marko Avlijaš
Diese Lösung hat bei mir nicht funktioniert. Stattdessen habe ich den Treiber einfach normal installiert und den nvidia-Pfad zu LD_LIBRARY_PATH hinzugefügt, wie unten erwähnt.
Rückwärts
3

Ich (Schöpfer dieses Beitrags) habe die Lösung, die ich brauche, selbst gefunden!

Ich werde jetzt die Lösung für alle anderen erklären, die sich in einer ähnlichen Situation befinden und diese Hilfe benötigen!

LÖSUNG:
INSTALLIEREN SIE DEN NVIDIA-TREIBER ÜBER DIE AUF http://www.nvidia.com/object/unix.html MIT DER FLAGGE "--no-opengl-files" bereitgestellte RUNFILE !!

Dies verhindert nicht nur, dass die nvidia opengl-Dateien die vorhandenen mesa-Dateien überschreiben, sondern installiert auch den Treiber ohne nvidia prime !!

Alle meine Probleme werden gelöst, indem der Treiber einfach manuell installiert wird, anstatt ihn aus den Repositorys zu installieren. Das Paket aus den Repositories ist "Optimus-freundlich" und enthält daher alle nutzlosen Unruhestifter.

ZWEITENS

Die xorg.conf muss um einen anderen Bildschirm für die dedizierten GPUs erweitert werden, damit sie Einträge in den nvidia-Einstellungen hat.

meins sieht so aus

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
quelle
1
Hallo. Die Antwort von leezu ist einfacher und vielleicht solltest du diese akzeptieren?
Marko Avlijaš
Ich kann die Antwort von Leezu noch nicht bestätigen, obwohl sie für meine Augen sehr vielversprechend aussieht. Wenn mehr Leute berichten, dass es funktioniert, oder ich endlich seine Antwort testen kann und bestätigen kann, werde ich die akzeptierte Antwort ändern. Er behebt das Problem, dass nvidia-modprobe nicht funktioniert, ohne dass ein x-Server auf dieser Karte läuft.
Winnetou
Dies funktioniert nicht, wenn Sie alle vorhandenen NVIDIA-Treiber entfernen und von vorne beginnen. Sagt dies 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

Ich habe die gewünschte Konfiguration erhalten (ich wollte sie auch;)):

  • Auf der Intel-GPU sollen der xserver und mein Monitor ausgeführt werden, der mit dem integrierten DP verbunden ist
  • Die NVIDIA-GPU darf nur für CUDA-spezifische Berechnungen usw. verwendet werden.
  • Volle Kontrolle über die NVIDIA GPU (Echtzeit, Statistiken, Temp Lüftergeschwindigkeiten ...)

mit bumblebee.

Bevor ich jedoch auf einige Details eingehe, sollte ich Sie warnen, dass Sie Ihr System neu starten müssen, wenn Sie die Konfiguration von nvidia-settings oder xorg.conf oder nvidia prime ändern (vielleicht wissen Sie es bereits). Wenn das System nicht neu gestartet wird, befindet sich das System möglicherweise in einem nicht konsistenten Zustand.


In meiner Konfiguration habe ich nicht berührt xorg.conf . Für mich war es immer eine Schmerzquelle. Bitte überlassen Sie es dem Originalzustand. Wenn Sie keine Neuinstallation durchführen möchten, finden Sie einige Sicherungen in /etc/X11/( ls /etc/X11/xorg.conf*).

Der erste Schritt ist zu versuchen nvidia-settings Arbeit . Wenn dies gelingt, können Sie mit nvidia PRIME zur Intel-GPU wechseln, wie Sie bereits erwähnt haben. Wenn Sie die NVIDIA-GPU nur für CUDA-Berechnungen verwenden möchten, benötigen Sie nvidia prime point für die Intel-GPU (dies ist insbesondere erforderlich, wenn Sie den cuda-Debugger verwenden möchten cuda-gdb).

Danach können Sie versuchen, Hummel zu installieren :

sudo apt install bumblebee

Starten Sie neu. Sie können den Zustand der Hummel mit überwachen

sudo service bumblebeed status

oder

bumblebeed -vv

Hummel aktiviert die NVIDIA-GPU und versucht, den NVIDIA-Treiber nur bei Bedarf in den Kernel einzufügen. Sie können Hummel verwenden, indem Sie vorher ausstehenoptirun Sie den Befehl, den Sie ausführen möchten, .

Damit Hummel funktioniert, musste ich manuell bearbeiten /etc/bumblebee/bumblebee.conf, um den Namen und den Pfad des NVIDIA-Treibers korrekt festzulegen.

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

Dann, nach einem sudo service bumblebeed restart gelang es mir, das Hummelsystem zu aktivieren.

In der Tat nvidia-smikehrt zurück

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

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

Hoffe das hilft.

Michele
quelle
gute Antwort! ABER ich habe Bumblebee mit Ubuntu 15.10 und der gleichen Hardware müde gemacht und es wurde durcheinander gebracht. So viel, dass ich eine Neuinstallation von 16.04 durchgeführt habe, nachdem sie verfügbar wurde. Es war wirklich schlimmer. Selbst der Wiederherstellungsmodus hat nicht richtig gestartet ... Also habe ich mir geschworen, keine Hummel mehr zu verwenden. Ein weiteres Problem mit Hummeln war (ich weiß nicht, wie Sie dies umgangen haben), dass meine dedizierte GPU bbswitch nicht unterstützt, so dass ich Fehler bekam, dass die GPU nicht richtig ausgeschaltet werden konnte
winnetou
Dies ist jedoch theoretisch eine mögliche Antwort! Aber nicht die, die ich suche :(.
Winnetou
Noch ein ABER: (Ich weiß nicht mehr, ob dies bei meinem Versuch funktioniert hat) Zeigen Ihnen die nvidia-Einstellungen die GPU (sudo optirun nvidia-Einstellungen natürlich)? Können Sie die Lüfterdrehzahl, Spannung usw. steuern? Wenn ich mich richtig erinnere, sind diese Einstellungen nur in nvidia-settings möglich, nachdem Sie die coolbits in der Datei xorg.conf aktiviert haben. nvidia-smi gibt Ihnen nur einen Monitor ..... bitte korrigieren, wenn ich falsch
liege
Ein weiteres großes Fragezeichen lautet: Funktioniert Bumblebee einwandfrei, wenn ich mehr als eine dedizierte GPU habe? Dieser Anwendungsfall (igpu + gpu) wird für Hummeln auf nicht mobilen GPus bereits nicht empfohlen, aber mehr als eine D-GPU zu haben, ist eine neue Geschichte für Hummeln.
Winnetou
@winnetou Sie haben absolut Recht mit mehr als einer GPU - es ist eine gute Frage. Ein weiteres Problem ist, dass nvidia-docker höchstwahrscheinlich nicht wie erwartet funktioniert.
Vskubriev
1

Ich habe die nvidia-Treiber ohne opengl neu installiert, wie in den obigen Lösungen erwähnt, aber es hat bei mir nicht funktioniert. Darüber hinaus sind diese Lösungen ziemlich unbefriedigend, da sie bedeuten, dass einige Fähigkeiten der Treiber (opengl) entfernt werden.

Ich habe eine viel einfachere Lösung gefunden, für die Sie den Treiber nicht neu installieren müssen:

  • Ich habe die NVIDIA-Treiber normal installiert
  • In der Benutzeroberfläche von nvidia-settings, unter PRIME-Profilen, wähle ich die Intel-Grafikkarte als Haupt-GPU
  • Nach dem Neustart funktioniert nvidia-smi nicht, aber ich habe das Problem behoben, indem ich / usr / lib / nvidia-387 zum Bibliothekspfad hinzugefügt habe :
    export LD_LIBRARY_PATH=/usr/lib/nvidia-387:$LD_LIBRARY_PATH

Beachten Sie, dass Sie je nach installiertem Treiber möglicherweise einen weiteren Ordner in Ihrem Bibliothekspfad hinzufügen müssen, z. B. / usr / lib / nvidia-384 .
Sie können diesen Befehl zur Datei ~ / .bashrc hinzufügen , um den Pfad beim Laden einer neuen Bash automatisch zu exportieren.

Revers
quelle
Was passiert, wenn Sie den NVIDIA-Treiber aktualisieren? Müssen Sie den Bibliothekspfad manuell ändern?
Liang
Ich denke, dies sollte kein Problem sein, wenn sich der Treiber noch im selben Ordner befindet. Wenn sich der Ordner ändert, sollten Sie wahrscheinlich den Bibliothekspfad ändern.
Rückwärts
0

hauptsächlich als erinnerung für mich: in ubuntu 18.04 igpu zum rendern und nvidia gpu für cuda verwenden, standard nvidia treiber installieren, nvidia-einstellungen öffnen und intel gpu verwenden. Danach Blacklist-Nouveau-Treiber und Teil der NVIDIA-Treiber:

Öffnen Sie /etc/modprobe.d/blacklist-nvidia.conf und kommentieren Sie die Zeilen folgendermaßen:

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

Öffnen Sie danach /etc/modprobe.d/blacklist-nvidia-nouveau.conf und fügen Sie die folgenden Zeilen hinzu:

blacklist nouveau
options nouveau modeset=0

Um wirklich sicher zu sein, dass Jugendstil deaktiviert ist, können Sie sie auch in /etc/modprobe.d/blacklist.conf auf die schwarze Liste setzen: am Ende hinzufügen:

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

dann neu starten.

Geben Sie ein nvidia-smi, um zu überprüfen, ob nvidia geladen ist, und geben Sie ein lspci -nnk | grep -iA2 3D, um zu überprüfen, ob der verwendete Treiber nvidia und nicht nouveau ist.

user840583
quelle