Theano와 CUDA 통합

Theano와 CUDA 통합

나는 함께 일하고 있다테아노, 새로 설치된 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__.pycuda_ndarray.cucompiler.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를 사용할 수 없음)

ldconfigCUDA 7.5의 공유 객체를 연결하는 명령을 사용하면 됩니다 .

sudo ldconfig /usr/local/cuda-7.5/lib64

관련 정보