it-swarm.com.de

Wie kann ich nVidia CUDA oder OpenCL auf einem Laptop mit diskreter nVidia-Karte / Intel Integrated Graphics zum Laufen bringen?

Hintergrund: Ich bin ein 3D-Künstler (als Hobby) und habe vor kurzem begonnen, Ubuntu 12.04 LTS als Dual-Boot unter Windows 7 zu verwenden. Es läuft auf meinem neuen 64-Bit-Toshiba-Laptop mit einer nVidia GeForce GT 540M-GPU ( Grafikkarte). Es hat jedoch auch Intel Integrated Graphics (von dem ich vermute, dass Ubuntu es verwendet).

Wenn ich meine 3D-Szenen unter Windows zu Bildern rendere, kann ich zwischen der Verwendung meiner CPU oder meiner nVidia-GPU (schneller) wählen. In der 3D-Anwendung kann ich die GPU so einstellen, dass sie entweder CUDA oder OpenCL verwendet. In Ubuntu gibt es keine GPU-Option.

Nachdem ich (zu viel?) Über die Probleme mit Linux und der nVidia Optimus-Technologie recherchiert habe, bin ich etwas aufgeklärter, aber viel verwirrter.

Die Optimus-Technologie interessiert mich überhaupt nicht, da die Akkulaufzeit für mich kein Problem darstellt.

Hier ist meine Frage: Was kann ich tun, um CUDA-nutzende Programme (wie Blender) auf meiner nVidia-GPU in Ubuntu verwenden zu können? Benötige ich nVidia-Treiber? (Ich habe gehört, dass sie unter Linux nicht gut mit Optimus-Setups funktionieren.) Gibt es mindestens eine Möglichkeit, OpenCL auf meiner GPU in Ubuntu zu verwenden?

28
Peter Cassetta

Hier ist die vollständige Antwort (basierend auf Alex Falappa und Lekensteyns Antworten):

Es ist in der Tat möglich, dass nVidia Optimus-GPUs CUDA unter Ubuntu ausführen.

Hummel ist für CUDA nicht erforderlich. (Weitere Informationen zu Bumblebee : Wird eine NVIDIA GeForce mit Optimus-Technologie von Ubuntu unterstützt? )

Wenn Sie jedoch grafische Beispiele mit OpenGL zeigen möchten, benötigen Sie so etwas wie Bumblebee for Optimus-Systeme , ansonsten sehen Sie entweder nichts auf Ihrem zeige oder erhalte den Fehler:

ERROR: Support for necessary OpenGL extensions missing. 

Wenn Sie ein grafikintensives Programm wie Blender verwenden müssen, ist Bumblebee derzeit ein guter Weg.

Fahren Sie mit Installieren von CUDA fort, wenn Sie Bumblebee nicht installieren möchten (d. H. Wenn Sie OpenGL nicht benötigen).
Ansonsten lesen Sie weiter.

Bumblebee installieren

Befolgen Sie die Anweisungen unter Wie gut funktionieren Laptops mit Nvidia Optimus?

Diese werden derzeit von einem Bumblebee-Entwickler auf dem neuesten Stand gehalten.

Nachdem Sie Bumblebee installiert und neu gestartet haben, können Sie mit dem Programm optirun die Grafikkarte auswählen, die beim Starten von Programmen verwendet werden soll.
Zum Beispiel:

optirun blender

Um schnell zu testen, ob alles richtig funktioniert, verwenden Sie:

optirun glxspheres

Sie sehen ein Programm mit bunten sich drehenden Kugeln, wenn alles richtig funktioniert.

Stellen Sie sicher, dass die Zeichenfolge GL des Anbieters im Terminal das Wort nvidia enthält.
Wenn Sie nur glxspheres ausführen, wird angezeigt, dass die Herstellerzeichenfolge stattdessen die Intel-Karte enthält.

Wenn Sie ein CUDA-Programm ausführen, müssen Sie das CUDA-Toolkit und einen NVIDIA-Treiber installieren. Wenn Sie Programme kompilieren möchten, benötigen Sie auch das SDK. Die Installationsprogramme finden Sie unter http://developer.nvidia.com/cuda-downloads . Lesen Sie die folgenden Anweisungen, bevor Sie Ihren Optimus-Laptop ausrüsten.

CUDA installieren

Driver

Ich empfehle, den nvidia-Treiber vom Paketmanager von Ubuntu zu installieren. Wenn Sie Bumblebee installieren, müssen Sie sich keine Sorgen um den Treiber machen. Andernfalls deaktivieren Sie nach der Installation die nvidia-Bibliotheken wie unter https://askubuntu.com/a/107746/6969 beschrieben . Wenn Sie dies nicht tun, verlieren Sie die 3D-Beschleunigung und bleiben möglicherweise bei einer niedrigen Auflösung hängen.

Toolkit

Grundsätzlich müssen Sie das Installationsprogramm herunterladen, ausführbar machen und ausführen. - Laden Sie das Installationsprogramm herunter. Ab dem 9. Januar 2013 ist 5.0.35 der neueste Treiber. Da ich ein 64-Bit-Betriebssystem habe, verwende ich das 64-Bit-Ubuntu-Paket 11.10 (obwohl 12.10 ausgeführt wird). Machen Sie es ausführbar und erlauben Sie die Installation unter /usr/local/cuda:

chmod +x cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run
Sudo ./cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run

Wenn die Installationsmeldung angezeigt wird, in der Sie gefragt werden, wo CUDA installiert werden soll, drücken Sie einfach die Eingabetaste, um die Standardeinstellung /usr/local/cuda zu akzeptieren:

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Nach der Installation werden einige Meldungen ausgegeben, in denen vorgeschlagen wird, das cuda-Bibliotheksverzeichnis in Ihren Bibliothekssuchpfad aufzunehmen:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Sie können diesen Schritt überspringen, wenn Sie möchten, aber Sie müssen LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH später festlegen, wenn Sie ein Programm ausführen.

SDK

Wenn Sie CUDA-Anwendungen kompilieren möchten, können Sie das SDK auf ähnliche Weise wie oben beschrieben installieren. Laden Sie es herunter, machen Sie es ausführbar und führen Sie es aus (nicht als root, z. B. ohne Sudo!).

CUDA verwenden

CUDA benötigt keinen NVIDIA-gesteuerten X-Server. In diesem Fall können Sie Ihr Zufallstestprogramm wie folgt ausführen:

LD_LIBRARY_PATH =/usr/lib/nvidia-current:/usr/lib32/nvidia-current: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

Wenn Sie CUDA nicht zu Ihrem Bibliothekspfad hinzugefügt haben, benötigen Sie:

LD_LIBRARY_PATH =/usr/lib/nvidia-current:/usr/lib32/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

(Sie können die 32-Bit-Pfade entfernen, wenn Ihr Programm 64-Bit ist).

Wenn das CUDA-Programm mit OpenGL etwas anzuzeigen hat, müssen Sie optirun verwenden:

 optirun blender

Oder, wenn Sie CUDA nicht zu Ihrem Standardpfad hinzugefügt haben:

LD_LIBRARY_PATH =/usr/local/cuda/lib64:/usr/local/cuda/lib: $ LD_LIBRARY_PATH optirun Blender

Blender Build installieren

(Mit vorkompilierten CUDA-Kerneln)

Wenn Sie optirun blender ausführen, erhalten Sie möglicherweise eine Meldung von Blender, dass die Kompilierung des CUDA-Kernels fehlgeschlagen ist, sowie eine Meldung im Terminal, die der folgenden ähnelt:

Compiling CUDA kernel ...
nvcc warning : Option '--opencc-options (-Xopencc)' is obsolete and ignored, when
targeting compute_20, sm_20, or higher
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
CUDA kernel compilation failed, see console for details.

Wenn Sie die GPU-Rendering-Funktion von Blender verwenden möchten, benötigen Sie möglicherweise einen Blender-Build mit vorkompilierten CUDA-Kerneln. Builds von Blender.org haben alle CUDA-Kernel vorkompiliert; das ppa: cheleb/blender-svn baut ( mehr informationen zu dieser frage ) nicht.

Um ein offizielles Blender-Build zu installieren, befolgen Sie einfach die Anweisungen in diese Antwort .

Wenn Sie Blender auf /usr/lib/blender installiert haben, sollten Sie in der Lage sein, Blender vom Terminal aus auszuführen und GPU-Rendering zu verwenden mit:

 optirun '/usr/lib/blender/blender'
15
Peter Cassetta

Ich habe gerade ein wenig experimentiert und kann Eric Applemans Aussagen bestätigen, dass Bumblebee für CUDA nicht notwendig ist. (Weitere Informationen zu Bumblebee : Wird eine NVIDIA GeForce mit Optimus-Technologie von Ubuntu unterstützt? )

Wenn Sie jedoch grafische Beispiele mit OpenGL zeigen möchten, benötigen Sie so etwas wie Bumblebee for Optimus-Systeme , ansonsten sehen Sie entweder nichts auf Ihrem zeige oder erhalte den Fehler:

ERROR: Support for necessary OpenGL extensions missing.

Wenn Sie ein CUDA-Programm ausführen, müssen Sie das CUDA-Toolkit und einen NVIDIA-Treiber installieren. Wenn Sie Programme kompilieren möchten, benötigen Sie auch das SDK. Die Installationsprogramme finden Sie unter http://developer.nvidia.com/cuda-downloads . Lesen Sie die folgenden Anweisungen, bevor Sie Ihren Optimus-Laptop ausrüsten.

CUDA installieren

Driver

Ich empfehle, den nvidia-Treiber vom Paketmanager von Ubuntu zu installieren. Wenn Sie Bumblebee installieren, müssen Sie sich keine Sorgen um den Treiber machen. Andernfalls deaktivieren Sie nach der Installation die nvidia-Bibliotheken wie unter https://askubuntu.com/a/107746/6969 beschrieben . Wenn Sie dies nicht tun, verlieren Sie die 3D-Beschleunigung und bleiben möglicherweise bei einer niedrigen Auflösung hängen.

Toolkit

Grundsätzlich müssen Sie das Installationsprogramm herunterladen, ausführbar machen und ausführen. - Laden Sie das Installationsprogramm herunter. Zum jetzigen Zeitpunkt ist 4.2.9 der neueste Treiber. Da ich ein 64-Bit-Betriebssystem habe, verwende ich das 64-Bit-Ubuntu-Paket 11.04 (obwohl ich 12.04 ausführe) - Mache es ausführbar und erlaube die Installation auf /usr/local/cuda:

chmod +x cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
Sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run

Wenn die Installationsmeldung angezeigt wird, in der Sie gefragt werden, wo CUDA installiert werden soll, drücken Sie einfach die Eingabetaste, um die Standardeinstellung /usr/local/cuda zu akzeptieren:

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Nach der Installation werden einige Meldungen ausgegeben, in denen vorgeschlagen wird, das cuda-Bibliotheksverzeichnis in Ihren Bibliothekssuchpfad aufzunehmen:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Sie können diesen Schritt überspringen, wenn Sie möchten, aber Sie müssen LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH später festlegen, wenn Sie ein Programm ausführen.

SDK

Wenn Sie CUDA-Anwendungen kompilieren möchten, können Sie das SDK auf ähnliche Weise wie oben beschrieben installieren. Laden Sie es herunter, machen Sie es ausführbar und führen Sie es aus (nicht als root, z. B. ohne Sudo!). Beim Kompilieren von Teilen musste ich allerdings einige Änderungen an NVIDIA_GPU_Computing_SDK/C/common/common.mk vornehmen:

  • fügen Sie nach ungefähr Zeile 189, OPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmu Folgendes hinzu:

    OPENGLLIB += -L/usr/lib/nvidia-current -L/usr/lib32/nvidia-current
    
  • vertausche ${RENDERCHECKGLLIB} nach ungefähr Zeile 271 mit ${OPENGLLIB}, so dass es so aussieht:

    LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB} -ldl -rdynamic
    
  • einige (5) Zeilen weiter machen Sie dasselbe, aber entfernen Sie auch -lcuda.
  • machen Sie ein paar (7) Zeilen weiter dasselbe wie in Zeile 271.

CUDA verwenden

CUDA benötigt keinen NVIDIA-gesteuerten X-Server. In diesem Fall können Sie Ihr Zufallstestprogramm wie folgt ausführen:

LD_LIBRARY_PATH =/usr/lib/nvidia-current:/usr/lib32/nvidia-current: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

Wenn Sie CUDA nicht zu Ihrem Bibliothekspfad hinzugefügt haben, benötigen Sie:

LD_LIBRARY_PATH =/usr/lib/nvidia-current:/usr/lib32/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

(Sie können die 32-Bit-Pfade entfernen, wenn Ihr Programm 64-Bit ist).

Wenn das CUDA-Programm mit OpenGL etwas anzuzeigen hat, müssen Sie optirun verwenden:

 optirun blender

Oder, wenn Sie CUDA nicht zu Ihrem Standardpfad hinzugefügt haben:

LD_LIBRARY_PATH =/usr/local/cuda/lib64:/usr/local/cuda/lib: $ LD_LIBRARY_PATH optirun Blender

27
Lekensteyn

Die Unterstützung von Hybridgrafiken (normalerweise integrierte Intel-Grafik und diskrete Nvidia-Grafik) unter Linux ist derzeit etwas problematisch. Im X-Server-Bereich bewegt sich langsam etwas, aber halten Sie nicht den Atem an.

Wie Sie bereits vermutet haben, ist Bumblebee derzeit ein guter Weg.

Ich habe kürzlich ein Asus N55-Notebook mit Intel/Nvidia-Grafik gekauft. Ich konnte den Blender Cycles-Renderer für die Verwendung von CUDA nutzen.

Bei der Installation von Ubuntu 12.04 wurden standardmäßig die integrierten Grafiken über den Intel-Grafiktreiber verwendet. Der Noveau-Grafiktreiber sollte nicht installiert werden.

Dann öffnete ich ein Terminal und tat:

Sudo add-apt-repository ppa:bumblebee/stable
Sudo apt-get update
Sudo apt-get install bumblebee bumblebee-nvidia

Danach tat ich (wie in der Installationsanleitung empfohlen):

Sudo usermod -a -G bumblebee $USER

Dann habe ich neu gestartet.

Um den Treiber auszuwählen, der beim Starten von Programmen verwendet werden soll, verwenden Sie das optirun-Programm, zum Beispiel:

optirun blender

Um zu testen, ob alles richtig funktioniert, verwenden Sie:

optirun glxspheres

Vergewissern Sie sich, dass die Zeichenfolge GL des Anbieters das Wort Nvidia enthält. Wenn Sie stattdessen ausführen:

glxspheres

Die Herstellerzeichenfolge sollte Intel Word enthalten

2
Alex Falappa

Ich finde, um alle CUDA-Beispiele mit Bumblebee ausführen zu können, müssen Sie die Treiber 295.40 von hier installieren und während der Installation auswählen, dass sie nicht überschrieben werden sollen der config x11.

Dann müssen Sie denselben Treiber verwenden, um die Beispiele zu kompilieren und das Programm auszuführen.

1
olmer