
介紹
我正在嘗試讓 CUDA 在我的混合圖形筆記型電腦上運行。我正在使用 (l)ubuntu 15.04。
目前我已經按照線上指南中的一些步驟進行操作,我將在下面解釋這些步驟,並且我能夠optirun glxspheres64
毫無問題地運行。但是,當我運行時,optirun ./deviceQuery
出現以下錯誤:
/usr/bin/vglrun: 246: exec: ./deviceQuery: Permission denied
網路上好像沒有這方面的資訊。
細節
我遵循的指南是這裡。我沒有完全遵循所有步驟,因為這現在已經很舊了,而且 Nvidia 已經更改了他們發送文件的格式.run
。
我做了以下事情:(這完全不屬於我的history
命令。)
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
然後登入 tty1,停止 x 伺服器並 init 3。
21 cd Downloads/
22 chmod +x cuda_7.5.18_linux.run
23 sudo ./cuda_7.5.18_linux.run
安裝包含所有預設選項的運行包,同時安裝圖形驅動程式版本 352。
然後設定PATH變數。
25 export PATH=/usr/local/bin:$PATH
26 export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
27 sudo ldconfig
我跳過了接下來的靜態連結步驟。編譯範例程式碼時,我沒有遇到任何連結器錯誤(或至少我認為我沒有遇到),所以我認為這不是必需的。我也沒有在任何其他線上指南中看到此步驟。也許這就是我出錯的地方?
那麼有些東西顯然需要 OpenGL,所以:
28 sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
編譯範例:
30 cd NVIDIA_CUDA-7.5_Samples/
31 make
然後我嘗試執行./deviceQuery
Utilities 目錄中的 。我收到了一個我以前見過的關於bumblebeed
未運行的錯誤。
所以:
34 sudo vim /etc/bumblebee/bumblebee.conf
將 行Driver=
(空白)更改為Driver=nvidia
,並將行更改KernelDriver=nvidia-current
為KernelDriver=nvidia
。
此資訊可用這裡,請參閱問題的(當前)第二個答案。
它仍然無法正常工作,所以我嘗試按照上面鏈接問題的第一個答案中給出的信息並安裝內核頭:
48 sudo apt-get install linux-headers-generic
49 sudo reboot
如果我做:
54 sudo service bumblebeed status
我現在得到:
● 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.
但看起來我在這裡仍然有一些問題......它現在“活動”,而以前不會啟動,但仍然不是一切都正常工作。由於某種原因,我無法選擇-l
在這裡提供更多資訊。
當我運行時,optirun ./deviceQuery
我收到錯誤:
/usr/bin/vglrun: 246: exec: ./deviceQuery: Permission denied
我現在該怎麼做?
更新:
編輯:對於遵循此操作的任何人,最好不要執行此步驟。也許嘗試在 CUDA 之後安裝驅動程式以避免這一步驟?安裝驅動程式版本 352,然後透過執行以下操作恢復到 304 似乎有點不必要:
我注意到在連結的問題上,該命令sudo apt-get install -reinstall nvidia-current
是在安裝核心標頭後附加的。
我運行了這個命令,我想我的驅動程式已經回到版本 304。
sudo service bumblebeed status
給出以下輸出:
● 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.
所以這似乎是固定的。但仍然無法運行./deviceQuery
,同樣的錯誤:
sudo optirun ./deviceQuery
/usr/bin/vglrun: 246: exec: ./deviceQuery: Permission denied
請幫忙。二
順便說一句,glxspheres 仍然有效:
optirun glxspheres64
獲得約 270 FPS?
答案1
我再次重新啟動計算機,萬歲它可以工作了。
optirun ./deviceQuery
回報
./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
順便說一句,我懷疑我嘗試的最後步驟實際上並不是必需的,如果按照上面問題中的信息,請嘗試不是執行最後的步驟:
- 重新安裝驅動程式。我認為這沒有必要。這也很煩人,因為它會將您恢復到舊版本的驅動程式。我很想知道是否有人按照問題中的信息能夠在不執行此步驟的情況下使 CUDA 工作。
我認為問題中的資訊對於嘗試安裝的任何人(和我自己)都非常有用:
- CUDA 7.5(或 CUDA 7)
在 Linux 上,特別是 ubuntu 相關發行版;
- ubuntu、xubuntu、lubuntu、ubuntu 伴侶、kubuntu、
- 也許還有 linux mint 17、linux mint 17.1 和 linux mint 17.2 [但是我之前在嘗試安裝 CUDA 時遇到過 linux mint 17 和 linux mint 17.2 的問題]
- 也許是 debian 發行版之一(我認為我們現在使用的是 debian 8,但也可能是 debian 7 或 debain 6)
我打算用所有這些發行版來測試這個答案,因為網路上許多用於為 Linux 設定 CUDA 的指南要么適用於過時的 Linux 版本,要么適用於過時的 CUDA 版本。
我需要一些時間才能做到這一點,但我會盡快做到。
另外,如果有人願意為此做出貢獻,我可能會將這個答案改為社群維基。
繼續檢查更新。任何評論請透過下面的評論告訴我。