Ich habe ein halbes Dutzend Beiträge dazu im ganzen Web gefunden, aber keiner von ihnen beantwortet die Frage wirklich.
Ich möchte meine NVIDIA-GPU so einrichten, dass nur Berechnungen durchgeführt werden und nicht die Anzeige gesteuert wird. Wenn ich jedoch zur Verwendung der Intel-GPU in der nvidia-prime-Konfiguration wechsle, kann ich das nvidia-Modul nicht mehr laden.
modprobe: ERROR: could not insert 'nvidia_352': No such device
Ohne das Modul funktioniert CUDA offensichtlich nicht.
Was genau macht nvidia-prime, das das Laden des Moduls unmöglich macht? Es ist nicht auf der schwarzen Liste. Es gibt keine xorg.conf-Datei. Woher weiß das System, dass die Intel-GPU anstelle der diskreten verwendet wird?
Ich bin auf einem Dell 5510 Precision mit werkseitig installiertem Ubuntu 14.04 und meine GPU ist Quadro M1000M.
Einige schlagen die Verwendung von Hummeln vor, aber das sollte für reine Rechenlasten nicht erforderlich sein.
Außerdem kann Hummel anscheinend das Modul laden. Was genau macht es also?
Update: Warum scheint es immer so, als ob ich die Antwort finde, wenn ich endlich eine Frage poste, nachdem ich stundenlang versucht habe, sie herauszufinden. Dies ist eigentlich nur eine teilweise Antwort, aber ich bin auf etwas.
Bisher habe ich festgestellt, dass prime mindestens zwei Dinge tut:
- Schalten Sie die GPU mit bbswitch aus.
- Ändert die Alternativen für /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf.
Durch die Verwendung von bbswitch zum Wiedereinschalten der GPU kann ich jetzt das NVIDIA-Modul laden.
Die Frage bleibt jedoch weiterhin: Wie kann das System am besten so konfiguriert werden, dass die NVIDIA-Karte nur für Berechnungen verwendet wird?
Sollte ich nvidia-prime für die Verwendung der Intel-GPU einstellen und versuchen, manuell zu entschlüsseln, was dazu beigetragen hat, dass CUDA funktioniert?
Wie stelle ich sicher, dass das System weiterhin die Intel-GPU für das Display verwendet?
Wie würde ich NVIDIA prime einfach deaktivieren und alles manuell konfigurieren?
Oder sollte ich einfach nachgeben und Bumblebee und Optirun verwenden? Was sind die Nachteile davon, wenn überhaupt?
Irgendwelche Empfehlungen?
quelle
Antworten:
In meinem Fall stellte ich fest, dass die NVidia-Karte nicht ausgeschaltet war, und das einzige, was ich tatsächlich tun musste, um CUDA-Code auszuführen, war:
in der Shell, in der ich es ausführen möchte (ich gehe davon aus, dass eine globale Änderung der Alternativeneinstellung compiz usw. usw. beschädigen würde)
Um an diesen Punkt zu gelangen (auf einem Dell Optiplex 7010 mit Ubuntu 14.04, CUDA 7.5 und einer GTX 980), glaube ich, waren die Schritte:
Bisher scheint alles gut zu funktionieren (nvidia-smi sieht die Karte, Cuda-Samples laufen, theano benutzt die Karte usw.)
quelle
Ich glaube, ich habe zumindest eine flüchtige Lösung dafür gefunden, wie im Update meines ursprünglichen Beitrags beschrieben. Ich habe wirklich zwei Lösungen gefunden, obwohl ich mir sicher bin, dass es noch andere gibt.
1 - Aktivieren Sie bei Prime im Intel-Modus die NVIDIA-Karte über bbswitch erneut und führen Sie sie aus
modprobe nvidia
, um das Modul zu laden und die Geräteknoten zu erstellen.2 - Verwenden Sie Bumblebee optirun, um eine Bash-Sitzung zu starten, in der Sie alle Ihre CUDA-Aufgaben erledigen können.
Mit beiden Lösungen können Sie die integrierten Grafiken für Ihr Display verwenden, während Sie die NVIDIA-Karte zum Berechnen von Lasten verwenden. Die Optirun-Lösung scheint vielseitiger zu sein, aber ich bevorzuge die erste wegen ihres Minimalismus.
Ich hoffe, dass jemand mit mehr Verständnis diese Antwort verbessern wird.
quelle
Ich verwende die NVIDIA-Karte nur für CUDA-Ausführungen und finde diesen Ansatz heraus:
Die ganze Zeit benutze ich Intel Card und es wird durch Befehl bestätigt
lspci | grep -E "VGA|3D"
:In der entsprechenden Zeile für die NVIDIA-Karte sollte angezeigt werden,
(rev ff)
dass sie ausgeschaltet ist.Um die Karte einzuschalten und für CUDA-Berechnungen zu verwenden, verwende ich zwei folgende Befehle:
Nach diesem Befehlsbericht
lspci | grep -E "VGA|3D"
:Beachten Sie
(rev a2)
, nicht(rev ff)
in der entsprechenden Zeile. Jetzt Karte bereit zur Berechnung.Nach Berechnungen verwende ich Rückwärtsaktionen:
Und
lspci | grep -E "VGA|3D"
berichtet:quelle
Falls nach dem Befolgen der Schritte in der akzeptierten Antwort immer noch Probleme auftreten, versuchen Sie Folgendes:
Dadurch wird bbswitch vollständig deaktiviert. Der Nachteil ist, dass Sie die NVIDIA-Karte nicht zum Energiesparen ausschalten können (Xorg verwendet weiterhin integrierte Grafiken, solange
prime-select intel
).quelle
Ich verwende einen 1070 ti mit einem Thinkpad T420 in einer Egpu, die für meine Kryptowährung eingerichtet ist, während ich arbeite. Die GPU macht sich theoretisch nach ein paar Monaten auf diese Weise bezahlt.
Ich fand heraus, dass mit nvidia 387 export LD_LIBRARY_PATH = / usr / lib / nvidia-387 mit ethminer unter Verwendung von cuda funktioniert.
Die einzige Möglichkeit, das System nach einer "Prime-Select-Information" zum Laufen zu bringen, bestand darin, dass ich bei der Auswahl einen zweiten Monitor an die Karte angeschlossen und abgemeldet hatte. Andernfalls würde der Fehler "Das System läuft im Low-Graphics-Modus" oder ein durchgehend leerer Bildschirm angezeigt. Wenn ich mich mit Intel-Grafiken anmelde, zeigt der an die GPU angeschlossene Monitor natürlich nichts an. Daher muss ich ihn von der GPU trennen und wieder an das System anschließen (DVI-Dock-Ausgang), um mein Duell-Monitor-Setup auszuführen .
Ich glaube, das liegt daran, dass gpu-manager erkennt, dass bbswitch nicht funktioniert, und dann die xorg-Konfiguration löscht.
Ich poste dies, um eine Problemumgehung für die wenigen zu zeigen, die sich möglicherweise in einer ähnlichen Situation befinden, aber auch um zu sehen, ob jemand eine Idee hat, dies zu verhindern, da es ein bisschen schwierig ist, das Kabel bei jedem Neustart zu verschieben Unbequemlichkeit.
log_file: /var/log/gpu-manager.log
last_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot new_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot kann nicht auf / run / udc-fglrx-was-load-Datei zugreifen. Suche nach fglrx-Modulen in / lib /modules/4.4.0-104-generic/updates/dkms Suchen Sie nach nvidia-Modulen in /lib/modules/4.4.0-104-generic/updates/dkms. Gefundenes nvidia-Modul: nvidia_387_drm.ko Ist nvidia geladen? ja Wurde nvidia entladen? nein Ist nvidia auf der schwarzen Liste? ja Ist fglrx geladen? nein Wurde fglrx entladen? nein Ist fglrx auf der schwarzen Liste? nein Ist Intel geladen? ja Ist Radeon geladen? Nein Ist Radeon auf der schwarzen Liste? nein Ist amdgpu geladen? nein Ist amdgpu auf der schwarzen Liste? nein Ist der Jugendstil geladen? nein Ist der Jugendstil auf der schwarzen Liste? ja Ist das fglrx-Kernelmodul verfügbar? nein Ist das NVIDIA-Kernelmodul verfügbar? ja Hersteller- / Geräte-ID: 8086: 126 BusID "PCI: 0 @ 0: 2: 0" Ist boot vga? ja Hersteller- / Geräte-ID: 10de: 1b82 BusID "PCI: conf Aktuelle Kernalternative: (null) Aktuelle egl-Alternative: /usr/lib/nvidia-387-prime/ld.so.conf Ist nvidia aktiviert? nein Ist nvidia egl aktiviert? nein Ist fglrx aktiviert? nein Ist Mesa aktiviert? nein Ist mesa egl aktiviert? nein Ist pxpress aktiviert? nein Ist Prime aktiviert? ja Ist prime egl aktiviert? ja Ist nvidia verfügbar? ja Ist nvidia egl verfügbar? nein Ist fglrx verfügbar? nein Ist fglrx-core verfügbar? nein Ist Mesa verfügbar? ja Ist mesa egl verfügbar? ja Ist pxpress verfügbar? nein Ist prime verfügbar? ja Ist prime egl verfügbar? Kein Intel IGP erkannt Intel Hybridsystem Nvidia Treiber Version 387.34 erkannt / sys / class / dmi / id / product_version = "ThinkPad T420" / sys / class / dmi / id / product_name = "4236L23" 1. Versuch: bbswitch ohne Macken Laden von bbswitch mit Parameter "load_state = -1 unload_state = 1" Fehler: can ' t open / proc / acpi / bbswitch Entfernen von xorg.conf. Pfad: /etc/X11/xorg.conf kann nicht auf /usr/share/gpu-manager.d/hybrid-power-saving zugreifen. Der aktuelle bbswitch-Status muss nicht geändert werden
Wenn ich danach nano xorg.conf nano ist es leer. Ich poste dies, nachdem ich den Monitorwechsel-Trick ausgeführt habe, wobei das Mining im Hintergrund stattfindet und meine xorg.conf noch leer ist. Ich vermute also, dass es aus irgendeinem Grund keine Rolle spielt, dass meine xorg.conf gelöscht wird, wenn ich den Monitor beim Neustart von lightdm an die GPU angeschlossen halte. Irgendwelche Ideen?
quelle