
소개
내 하이브리드 그래픽 노트북에서 CUDA를 작동시키려고 합니다. 나는 (l) 우분투 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 서버를 중지한 다음 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
~270FPS를 얻으시나요?
답변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, 특히 우분투 관련 배포판에서;
- 우분투, 주분투, 루분투, 우분투 메이트, 쿠분투,
- 그리고 아마도 linux mint 17, linux mint 17.1 및 linux mint 17.2 [하지만 이전에 CUDA를 설치하려고 linux mint 17 및 linux mint 17.2에 문제가 있었던 적이 있습니다]
- 아마도 데비안 배포판 중 하나일 것입니다. (지금은 데비안 8을 사용하고 있지만 아마도 데비안 7이나 debain 6도 사용할 수 있을 것입니다.)
Linux용 CUDA를 설정하기 위해 웹에 있는 많은 가이드가 오래된 버전의 Linux 또는 오래된 버전의 CUDA에 대한 것이므로 이러한 모든 배포판에서 이 답변을 테스트하려는 의도입니다.
이 작업을 수행하는 데 시간이 좀 걸리겠지만 곧 해보도록 하겠습니다.
또한 누군가가 기여하고 싶다면 이 답변을 커뮤니티 위키로 변경할 수도 있습니다.
업데이트를 계속 확인하세요. 모든 의견은 아래 댓글로 알려주세요.