So konfigurieren Sie iGPU für xserver und nvidia GPU für CUDA

11

Ich habe eine integrierte Intel-GPU und eine NVIDIA-GPU. Ich verwende Ubuntu 18.04.

Wie konfiguriere ich ein Dual-GPU-Setup so, dass Intel Onboard iGPU den Monitor steuert und die NVIDIA-GPU ausschließlich für die CUDA-Arbeit mit maschinellem Lernen belässt?

Stason
quelle
Sie sollten dies in eine Frage und eine Antwort aufteilen und Ihre eigene Antwort als akzeptiert markieren.
mook765
Vielen Dank, @ mook765. Ich habe dies getan und auch die Informationen für cuda-10.0 aktualisiert.
Stason

Antworten:

12

Ich habe zuerst NVIDIA-Treiber und CUDA-Pakete gemäß diesem Handbuch installiert . Außer, dass ich nach einem Neustart /usr/lib/xorg/Xorgin der Ausgabe von auftauchte nvidia-smi. Dies war nicht gut, da ich den gesamten NVIDIA GPU-RAM für meine Arbeit zur Verfügung haben musste.

Nach einigen Recherchen fand ich eine Lösung, die mein Problem löste:

Ich habe /etc/X11/xorg.confmit folgendem Inhalt erstellt:

Section "Device"
    Identifier      "intel"
    Driver          "intel"
    BusId           "PCI:0:2:0"
EndSection

Section "Screen"
    Identifier      "intel"
    Device          "intel"
EndSection

(Wenn Sie versuchen, dasselbe zu tun, überprüfen Sie, wo sich Ihre GPU befindet. Meine war auf 00:02.0welcher übersetzt PCI:0:2:0)

% lspci  | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Device 3e92
01:00.0 VGA compatible controller: NVIDIA Corporation GP104 (rev a1)

Nach dem Neustart wurden xorg und andere Programme nicht mehr in der Ausgabe von angezeigt nvidia-smi. Und ich konnte Pytorch mit CUDA-10.0 verwenden.

Beachten Sie, dass ich immer noch alle NVIDIA-Treiber installiert habe, diese jedoch nicht stören.

Stason
quelle
2
Bestätigt: es funktioniert unter Ubuntu 19.04 nvidia-driver-418 und NVIDIA Quadro GV100
RedEyed
3
Bro, du hast mir den Tag gerettet ... Ich habe ungefähr zehn Stunden damit verbracht, es unter Ubuntu 19.04 herauszufinden ... Ich habe NVIDIA-Treiber deinstalliert und kann sie nie richtig zurückbekommen! und ich habe Ubuntu 19.04 neu installiert und Ihre Methode verwendet. Arbeite wie ein Zauber!
Richard_wth
Dies funktioniert gut auf meinem XNG NEO 15 unter Linux Mint 19.3, danke. Wenn Sie diese Methode verwenden, werden externe Monitore jedoch nicht erkannt. Haben Sie zusätzliche Informationen dazu?
Christoph Henkelmann
@ChristophHenkelmann, ich habe alle Bits geteilt, die ich verwendet habe. Ich weiß, dass andere Lösungen verfügbar sind. Weitere Ideen finden Sie in diesem Thread .
Stason
1

Ich möchte eine weitere Möglichkeit hinzufügen, mit der ich derzeit verhindere, dass die Nvidia-Karte mein Display handhabt. Ich starte einfach zu Gnome, indem ich Wayland anstelle von Xorg auswähle. Da Nvidia Wayland nach der Anmeldung nicht unterstützt, zeigt nvidia-smi keinen laufenden Prozess an.

Ich kann Nvidia jedoch weiterhin für Dinge wie Tensorflow verwenden.

user890178
quelle
Standardmäßig funktionierte es auch bei mir, aber seit dem letzten Update greift Gnome Display Manager auf Xorg zurück und so begann der NVIDIA-Treiber, iGPU als primäre GPU zu verwenden (Arch Linux auf Razer Blade 15).
Maksym Ganenko
1

Lassen Sie mich mein Rezept teilen, das mir auf dem Razer Blade 15-Laptop mit der Arch Linux- und Gnome-Desktop-Umgebung geholfen hat.

Anfangs habe ich Gnome mit einer Wayland-Sitzung gestartet, die zu diesem Zeitpunkt nicht mit dem NVIDIA-Treiber kompatibel war. Daher hatte ich natürlich einen integrierten Grafikadapter für die Anzeige und eine NVIDIA-GPU für tiefes Lernen. Nach dem letzten Update wurde die GDM-Sitzung jedoch mit der NVIDIA-GPU als primärer GPU auf Xorg zurückgesetzt. Das Problem war:

  • Der verfügbare GPU-RAM wurde reduziert
  • Während eines neuronalen Netzwerktrainings blieb das gesamte System hängen
  • es erhöht den Stromverbrauch (= weniger Akkulaufzeit)

Ich bin nvidia-sminach dem Start gelaufen . Ich hatte erwartet No running processes found, aber ich sah eine Liste von XorgProzessen, die meine NVIDIA-GPU verwendeten. Das bedeutet, dass Gnome Display Manager die Xorg-Sitzung mit der NVIDIA-GPU als primäre GPU verwendet hat.

Ich untersuchte /var/log/Xorg.0.log:

(II) xfree86: Adding drm device (/dev/dri/card1)
(II) systemd-logind: got fd for /dev/dri/card1 226:1 fd 11 paused 0
(II) xfree86: Adding drm device (/dev/dri/card0)
(II) systemd-logind: got fd for /dev/dri/card0 226:0 fd 12 paused 0
(**) OutputClass "nvidia" ModulePath extended to "/usr/lib/nvidia/xorg,/usr/lib/xorg/modules,/usr/lib/xorg/modules"
(**) OutputClass "nvidia" setting /dev/dri/card1 as PrimaryGPU

(**)bedeutet, dass die Einstellung aus der Konfigurationsdatei gelesen wurde! Ich fand heraus, dass die Konfigurationsdatei war /usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf. Ich habe die Konfigurationsdatei geändert, um den integrierten Intel-Grafikadapter als primäre GPU festzulegen:

Section "OutputClass"
    Identifier "intel"
    MatchDriver "i915"
    Driver "modesetting"
    Option "PrimaryGPU" "yes"                   # <<<<<< add this string
EndSection

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
#   Option "PrimaryGPU" "yes"                   # <<<<<< comment this string
    ModulePath "/usr/lib/nvidia/xorg"
    ModulePath "/usr/lib/xorg/modules"
EndSection
Maksym Ganenko
quelle
Das war sehr hilfreich für mich. Ich habe im Grunde die gleichen Dinge getan (Antergos Arch, nicht Vanille). Ich habe jetzt keine Prozesse mit nviddia-smi.
Bastiaan Quast
Ich bekomme jedoch immer noch echo $XDG_SESSION_TYPERetouren x11anstelle von Wayland. Ideen?
Bastiaan Quast
0

Da ich nicht den Ruf habe, Kommentare abzugeben, teile ich hier Ergebnisse im Zusammenhang mit der Antwort von Maksym Ganenko: Ich habe die Lösung auf meinem Ubuntu 18.04 ausprobiert, auf dem ich gdm3 mit kde-plasma oder ubuntu ausführe. Die von Ihnen erwähnte Datei /usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.confbefindet sich auf meinem System mit dem Namen /usr/share/X11/xorg.conf.d/11-nvidia-prime.conf, wahrscheinlich weil ich nvidia-prime für einige Zeit installiert hatte. Das Problem beim Bearbeiten dieser Datei ist die Tatsache, dass in meiner Installation / usr / bin / gpu-manager diese Datei beim Starten einer neuen xsession generiert und somit alle Änderungen verloren gehen. Wie hier beschrieben, vermeiden Sie die Verwendung der NVIDIA-Karte für Xorg mit Plasma gemäß den hier gegebenen Hinweisen. GPU-Manager überschreibt xorg.conf. Die Lösung besteht darin, die generierte Datei vor Änderungen durch zu schützen

chattr +i /usr/share/X11/xorg.conf.d/11-nvidia-prime.conf

Könnte sein, dass ein chmod 444 dasselbe tun würde, aber ich habe einfach die in gpu-manager vorgeschlagene Lösung verwendet, die xorg.conf überschreibt .

Ein Roebel
quelle