나는 함께 일하고 있다테아노, 새로 설치된 Ubuntu Mate 16.04 시스템의 딥 러닝 벤치마크입니다. Theano는 계산 속도를 높이기 위해 GPU 가속을 사용할 수 있습니다. nvidia-smi
명령에 표시된 대로 CUDA를 지원하고 올바르게 설치된 NVIDIA K2200M 비디오 카드가 있습니다 .
+------------------------------------------------------+
| NVIDIA-SMI 361.42 Driver Version: 361.42 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Quadro K2200M Off | 0000:01:00.0 Off | N/A |
| N/A 31C P8 N/A / N/A | 212MiB / 2047MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1090 G /usr/lib/xorg/Xorg 200MiB |
| 0 7931 G /usr/lib/firefox/firefox 1MiB |
+-----------------------------------------------------------------------------+
약간의 배경 지식: Theano는 와 같은 몇 가지 환경 변수를 정의해야 하도록 설정해야 하며 $CUDA_ROOT
이는 참조 /usr/local/cuda
하지만 공식 Ubuntu Mate 저장소에서 설치해도 nvidia-cuda-*
해당 폴더가 생성되지 않습니다. 그럼에도 불구하고 Theano는 계산이 CPU 또는 GPU로 수행되는지 확인하는 데 도움이 되는 Python 코드를 제공하며 놀랍게도 Theano는 CUDA 설치를 찾습니다.
여기에 문제가 있습니다. CUDA는 시스템에서 인식되지만 CUDA가 내 GPU를 찾지 못하는 것 같아서 오류가 발생합니다 WARNING (theano.sandbox.cuda): CUDA is installed, but device gpu is not available (error: cuda unavailable)
.
나는 이 문제를 발견하고 다음 NVIDIA에서 제공하는 공식 패키지에서 CUDA를 askubuntu.com
제거하고 설치했기 때문에 Theano 개발자에게가 아니라 이 편지를 쓰고 있습니다.nvidia-cuda-*
이것가이드를 참조하여 앞서 언급한 내용이 /usr/local/cuda
생성되었고 다시 Theano 코드가 CUDA 설치를 인식했지만 여전히 내 GPU를 찾을 수 없었습니다. 이것이 바로 Theano 측의 잘못된 구현이 아니라 Ubuntu 문제일 수 있다고 생각하는 이유입니다.
답변1
나는 OP에서 언급한 소스에서 CUDA를 다시 설치하고 NVIDIA에서 제공한 CUDA 패키지의 샘플 데이터를 올바르게 실행하면서 이것이 Ubuntu 문제가 아니라 Theano 문제라는 것을 알아냈습니다. 내 경험이 없는 의견) NVIDIA-cuda-toolkit과 NVIDIA 드라이버 간의 통합 문제입니다.
(미래에) 나와 같은 문제가 있는 사람들의 경우 168-175행에서 컴파일을 시도할 theano.sandbox.cuda
때 (파일을 약간 수정했기 때문에) 문제가 모듈에 있는 것 같습니다. function 은 Theano의 개발팀이 만든 파일이라고 생각됩니다. NVCC는 올바르게 실행되지만 컴파일하는 데 문제가 있습니다 .__init__.py
cuda_ndarray.cu
compiler.compile_str(...)
cuda_ndarray
그래서 askubuntu가 허용하는 즉시 이 질문에 답변을 표시하겠습니다.
답변2
CUDA 7.5를 사용하는 경우 공식 지침을 따르십시오.
CUDA 7.5는 기본 g++ 버전을 지원하지 않습니다. 지원되는 버전을 설치하고 기본값으로 설정하세요.
sudo apt-get install g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
theano GPU 테스트 코드에 오류가 있는 경우:
오류(theano.sandbox.cuda): cuda_ndarray.cu 컴파일 실패: libcublas.so.7.5: 공유 객체 파일을 열 수 없습니다. 해당 파일 또는 디렉터리가 없습니다. 경고(theano.sandbox.cuda): CUDA가 설치되었지만 장치 GPU가 사용할 수 없습니다(오류: cuda를 사용할 수 없음)
ldconfig
CUDA 7.5의 공유 객체를 연결하는 명령을 사용하면 됩니다 .
sudo ldconfig /usr/local/cuda-7.5/lib64