
Einleitung
Ich versuche, CUDA auf meinem Laptop mit Hybridgrafik zum Laufen zu bringen. Ich verwende (l)ubuntu 15.04.
Ich habe derzeit einige Schritte in einer Online-Anleitung befolgt, die ich im Folgenden erläutern werde, und kann es optirun glxspheres64
ohne Probleme ausführen. Beim Ausführen optirun ./deviceQuery
erhalte ich jedoch die folgende Fehlermeldung:
/usr/bin/vglrun: 246: exec: ./deviceQuery: Permission denied
Im Internet scheint es hierzu keine Informationen zu geben.
Detail
Die Anleitung, der ich gefolgt bin, istHier. Ich habe nicht alle Schritte genau befolgt, da dies mittlerweile ziemlich alt ist und Nvidia das Format geändert hat, in dem sie ihre .run
Dateien liefern.
Ich habe Folgendes getan: (Dies entspricht direkt meinem history
Befehl.)
15 sudo apt-add-repository ppa:bumblebee/stable
16 sudo apt-add-repository ppa:ubuntu-x-swat/x-updates
17 sudo apt-get update
18 sudo apt-get install bumblebee
19 sudo apt-get install bumblebee bumblebee-nvidia
20 sudo reboot
Melden Sie sich dann bei tty1 an, stoppen Sie den X-Server und init 3.
21 cd Downloads/
22 chmod +x cuda_7.5.18_linux.run
23 sudo ./cuda_7.5.18_linux.run
Installieren Sie das Run-Paket mit allen Standardoptionen und installieren Sie auch den Grafiktreiber Version 352.
Richten Sie dann die PATH-Variable ein.
25 export PATH=/usr/local/bin:$PATH
26 export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
27 sudo ldconfig
Ich habe die nächsten Schritte zum statischen Verknüpfen übersprungen. Beim Kompilieren der Beispielcodes sind mir keine Linker-Fehler aufgetreten (oder ich glaube zumindest, dass das nicht der Fall war), daher gehe ich davon aus, dass dies nicht erforderlich war. Ich habe diesen Schritt auch in keiner anderen Anleitung im Internet gesehen. Vielleicht habe ich hier einen Fehler gemacht?
Dann erfordern einige Sachen offensichtlich OpenGL, also:
28 sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
Kompilieren Sie die Beispiele:
30 cd NVIDIA_CUDA-7.5_Samples/
31 make
Dann habe ich versucht, auszuführen ./deviceQuery
, das sich im Verzeichnis „Utilities“ befindet. Ich habe die Fehlermeldung erhalten, dass es bumblebeed
nicht ausgeführt wird, wie ich sie schon einmal gesehen habe.
Also:
34 sudo vim /etc/bumblebee/bumblebee.conf
Ändern Sie die Zeile mit Driver=
(die leer war) in Driver=nvidia
und auch die Zeile KernelDriver=nvidia-current
in KernelDriver=nvidia
.
Diese Informationen sind verfügbarHier, siehe die (derzeit) zweite Antwort auf die Frage.
Es funktionierte immer noch nicht, also versuchte ich, den Informationen aus der ersten Antwort auf die oben verlinkte Frage zu folgen und installierte die Kernel-Header:
48 sudo apt-get install linux-headers-generic
49 sudo reboot
Wenn ich mache:
54 sudo service bumblebeed status
Ich bekomme jetzt:
● bumblebeed.service - Bumblebee C Daemon
Loaded: loaded (/lib/systemd/system/bumblebeed.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2015-10-11 13:15:07 BST; 20min ago
Main PID: 1502 (bumblebeed)
CGroup: /system.slice/bumblebeed.service
└─1502 /usr/sbin/bumblebeed
Oct 11 13:16:20 P151EMx bumblebeed[1502]: [ 163.019954] [WARN][XORG]....
Oct 11 13:16:20 P151EMx bumblebeed[1502]: [ 163.019987] [WARN][XORG]....
Oct 11 13:16:20 P151EMx bumblebeed[1502]: [ 163.020055] [WARN][XORG]....
Oct 11 13:17:11 P151EMx bumblebeed[1502]: rmmod: ERROR: Module nvidia...d
Oct 11 13:17:11 P151EMx bumblebeed[1502]: modprobe: FATAL: Error runn...a
Oct 11 13:17:22 P151EMx bumblebeed[1502]: [ 225.439546] [WARN][XORG]....
Oct 11 13:17:22 P151EMx bumblebeed[1502]: [ 225.439578] [WARN][XORG]....
Oct 11 13:17:22 P151EMx bumblebeed[1502]: [ 225.439606] [WARN][XORG]....
Oct 11 13:17:23 P151EMx bumblebeed[1502]: rmmod: ERROR: Module nvidia...d
Oct 11 13:17:23 P151EMx bumblebeed[1502]: modprobe: FATAL: Error runn...a
Hint: Some lines were ellipsized, use -l to show in full.
Aber es sieht so aus, als hätte ich hier immer noch ein paar Probleme ... Es ist jetzt „aktiv“, obwohl es vorher nicht gestartet werden konnte, aber trotzdem funktioniert nicht alles richtig. Aus irgendeinem Grund kann ich die -l
Option nicht zum Laufen bringen, um hier weitere Informationen anzugeben.
Beim Ausführen optirun ./deviceQuery
erhalte ich die folgende Fehlermeldung:
/usr/bin/vglrun: 246: exec: ./deviceQuery: Permission denied
Was sollte ich jetzt tun?
Aktualisierung:
Bearbeiten: Für alle, die dies verfolgen, wäre es vielleicht eine gute Idee, diesen Schritt nicht durchzuführen. Vielleicht versuchen Sie, den Treiber nach CUDA zu installieren, um diesen Schritt zu vermeiden? Es scheint ein wenig unnötig, Treiberversion 352 zu installieren und dann wie folgt zu 304 zurückzukehren:
Mir ist aufgefallen, dass bei der verlinkten Frage der Befehl sudo apt-get install -reinstall nvidia-current
nach der Installation der Kernel-Header angehängt wurde.
Ich habe diesen Befehl ausgeführt. Ich glaube, mein Treiber ist auf Version 304 zurückgegangen. Jetzt neu gestartet
sudo service bumblebeed status
gibt folgende Ausgabe aus:
● bumblebeed.service - Bumblebee C Daemon
Loaded: loaded (/lib/systemd/system/bumblebeed.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2015-10-11 13:46:53 BST; 38s ago
Main PID: 659 (bumblebeed)
CGroup: /system.slice/bumblebeed.service
└─659 /usr/sbin/bumblebeed
Oct 11 13:46:53 edward-P151EMx systemd[1]: Started Bumblebee C Daemon.
Oct 11 13:46:53 edward-P151EMx systemd[1]: Starting Bumblebee C Daemon...
Oct 11 13:46:53 edward-P151EMx bumblebeed[659]: [ 17.073332] [INFO]/usr/sb...d
Hint: Some lines were ellipsized, use -l to show in full.
Das scheint also behoben zu sein. Läuft aber immer noch nicht ./deviceQuery
, derselbe Fehler:
sudo optirun ./deviceQuery
/usr/bin/vglrun: 246: exec: ./deviceQuery: Permission denied
Bitte helfen Sie. L@l
glxspheres funktioniert übrigens immer noch:
optirun glxspheres64
Erhalten Sie ~270 FPS?
Antwort1
Ich habe meinen Computer neu gestartet und hurra, er funktioniert.
optirun ./deviceQuery
kehrt zurück
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GTX 670MX"
CUDA Driver Version / Runtime Version 7.5 / 7.5
CUDA Capability Major/Minor version number: 3.0
Total amount of global memory: 3072 MBytes (3221028864 bytes)
( 5) Multiprocessors, (192) CUDA Cores/MP: 960 CUDA Cores
GPU Max Clock rate: 601 MHz (0.60 GHz)
Memory Clock rate: 1400 Mhz
Memory Bus Width: 192-bit
L2 Cache Size: 393216 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 = GeForce GTX 670MX
Result = PASS
Übrigens vermute ich, dass die letzten Schritte, die ich versucht habe, eigentlich nicht erforderlich sind. Wenn Sie den Informationen in der obigen Frage folgen, versuchen Sienichtdie letzten Schritte ausführen:
- Neuinstallation des Treibers. Ich denke nicht, dass das notwendig sein sollte. Es ist auch ärgerlich, weil man dadurch auf eine viel ältere Version des Treibers zurückgesetzt wird. Mich würde interessieren, ob jemand, der den Informationen in der Frage gefolgt ist, CUDA zum Laufen bringen konnte, ohne diesen Schritt durchzuführen.
Ich denke, die Informationen in der Frage könnten für jeden (und mich selbst) sehr nützlich sein, der Folgendes zu installieren versucht:
- CUDA 7.5 (oder CUDA 7)
auf einem Linux, insbesondere einer Ubuntu-bezogenen Distribution;
- Ubuntu, Xubuntu, Lubuntu, Ubuntu Mate, Kubuntu,
- und vielleicht auch Linux Mint 17, Linux Mint 17.1 und Linux Mint 17.2 [allerdings hatte ich zuvor Probleme mit Linux Mint 17 und Linux Mint 17.2 beim Versuch, CUDA zu installieren]
- vielleicht eine der Debian-Distributionen (ich glaube, wir sind gerade bei Debian 8, aber möglicherweise auch bei Debian 7 oder Debian 6)
Ich beabsichtige, diese Antwort mit allen diesen Distributionen zu testen, da viele der im Internet verfügbaren Anleitungen zum Einrichten von CUDA für Linux entweder für veraltete Versionen von Linux oder für veraltete Versionen von CUDA sind.
Ich werde dafür einige Zeit brauchen, aber ich werde versuchen, es bald zu erledigen.
Außerdem könnte ich diese Antwort in ein Community-Wiki ändern, wenn jemand dazu beitragen möchte.
Schauen Sie regelmäßig nach Updates. Wenn Sie Kommentare haben, lassen Sie es mich unten wissen.