개요

우분투 16.04에서 텐서플로우 설치를 위해 CUDA 설치가 필요하다. 또한 이를 위해서는 CUDA와 호환성이 맞는 Nvidia 그래픽 드라이버를 설치하여야 하는데 다행히도 CUDA는 설치파일에 NVidia 그래픽 드라이버도 내장하고 있다. 아무래도 가장 좋은 드라이버는 CUDA에 포함된 그래픽 드라이버를 설치하는 것이 호환성에 문제가 없다. 이 방법을 정리 후 공유한다.

유의사항

  • 우분투 리눅스 16.04라고 하더라도 최신 커널의 경우(GUI 관련 커널 업데이트가 있을 경우) 항상 그래픽 드라이버와 충돌 이슈가 있을 수 있다. 따라서, 아래의 2가지 방법으로 시도해보고 안정화 되면 OS 업데이트 옵션을 꺼버려서 최대한 커널 업데이트를 안하는 것이 정신 건강에 좋다.
  • CUDA에 포함된 그래픽 드라이버로 설치를 시도하고 문제 없을 시 이대로 사용한다.
  • CUDA에 포함된 그래픽 드라이버가 16.04와 충돌시(필자는 무한 로그인 현상 발생) NVIDIA 최신 그래픽 드라이버로 설치한다.

CUDA 다운로드

공식사이트에서 리눅스 16.04용 run파일을 다운로드한다.

Nouveau 드라이버 제거

우분투에 기본적으로 깔려있는 Nouveau 드라이버로 인해 cuda 설치 시 필요한 NVidia 그래픽 드라이버 설치가 충돌난다. 이 Nouveau 드라이버를 비활성화 해준다.

$ sudo apt-get remove nvidia* && sudo apt autoremove
$ sudo apt-get install dkms build-essential linux-headers-generic

/etc/modprobe.d/blacklist.conf 파일을 열어 아래의 내용을 추가해준다.

$ sudo vi /etc/modprobe.d/blacklist.conf    

맨밑에 추가해준다.

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

혹시 모르니 아래의 명령어도 실행해준다.

$ echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf

위의 설정을 기반으로 커널을 재빌드 한다.

$ sudo update-initramfs -u

시스템을 재부팅 한다.

$ sudo reboot

Nvidia 그래픽 드라이버 설치

본인에게 맞는 최신 NVidia 리눅스 드라이버를 링크에서 run 파일을 다운로드 한다.
권장사항은 CUDA 설치시 NVIDIA 리눅스 드라이버 설치가 포함되어 있으니 CUDA만 설치하는 것이다.

우분투가 재부팅 되고 나면 ctrl + alt + f1키를 눌러 콘솔창으로 변경후 로그인 한다.

GUI 관련 서비스를 종료시켜준다.

$ sudo service lightdm stop
$ #cuda run파일이 있는 경로로 이동한다.
$ sudo ./NVIDIA-Linux-x86_64-384.59.run # 버전은 달라질 수 있다.

CUDA 설치

현재 기준 링크에서 최신버전 리눅스용 run파일을 다운로드 받는다.

설치 진행시 드라이버 설치는 “N”을 선택한다.

$ sudo ./cuda_8.0.61_375.26_linux.run # 버전은 달라질 수 있다.
$ sudo ./cuda_8.0.61.2_linux.run # 버전은 달라질 수 있다.

~/.bashrc에 아래의 2줄을 추가해준다.

export PATH=$PATH:/usr/local/cuda-8.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64   

검증하기

기본 위치로 설치시 ~/에 NVIDIA_CUDA-8.0_Samples가 설치된다.

lks21c@lks21c-desktop:~/NVIDIA_CUDA-8.0_Samples$ ls
0_Simple     4_Finance        bin       uninstall_cuda_samples_8.0.pl
1_Utilities  5_Simulations    common
2_Graphics   6_Advanced       EULA.txt
3_Imaging    7_CUDALibraries  Makefile

여기서 make로 빌드를 수행한다.

$ make

빌드 이후 간단한 샘플 프로그램을 실행해본다. CUDA가 성공적으로 설치가 되어 있으면 정상 실행이 되는것을 확인 할 수 있다.

$ cd 0_Simple/asyncAPI/
./asyncAPI
[./asyncAPI] - Starting...
GPU Device 0: "GeForce GTX 950" with compute capability 5.2

CUDA device [GeForce GTX 950]
time spent executing by the GPU: 12.52
time spent by CPU in CUDA calls: 0.02
CPU executed 54842 iterations while waiting for GPU to finish

우분투 커널 업데이트 방지

좋은 방법은 아닐수 있지만, System Settings -> Software & updates에서 아래와 같이 보안 패치 말고는 업데이트를 upgrade 목록에서 제외해준다.

이후 업데이트는 sudo apt-get upgrade가 아닌 일부 패키지들만 선별해서 업그레이드 한다.

참고자료