cudnn v5 이상을 사용해야지 GeForce GTX 1080 Pascal 아키텍쳐을 돌릴 수 있다고 한다.
Ubuntu 16.04.x에 GTX1080 graphic driver, CUDA 8.0, cudnn5.1, nccll, opencv3.1, caffe을 설치해보자.
0. 가장 도움이 된 싸이트는 아래와 같다 Caffe 공식 설치 Wiki다.
아래 싸이트를 따라하면 잘 설치가 된다. 아래 글에서는 아래 설치과정과 다른점 및 부족한 점을 포스팅한다.
https://github.com/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide
1.우분투 설치
- 부팅 usb 만들기
http://sergeswin.com/1178
-그래픽드라이버문제로 설치로 안넘어갈때 nouveau 라는 기본드라이버가 현 GPU를 지원못해서 orgx..
설치페이지로 못넘어간다.
installing 선택에서 e누르고 nomodeset 설정 아래 링크에 젂혀있음
http://blog.neonkid.xyz/66
grub을 이용해서 recovery mode로 부팅, shift + esc를 한번누르면 grub으로 진입 recovery mode를 선택 할 수 있고
nouveau 를 무시하는 파일을 작성.
- internet 설정
/etc/networking/interfaces 문서에 랜카드 아이디를 젂어줌
2. 그래픽드라이버 설치
몇몇 지인으로 부터 아래방법으로 드라이버가 잘 안깔린다는 소리를 들었다.
이유는 이미 드라이버가 자동으로 깔린 경우가 있다고 한다.
--- 자동으로 깔려있는 경우 설정 방법
https://www.youtube.com/watch?v=-mWl1zJu_hw
--- 직접설치하는 방법
아래 링크에서 설치된 GPU에 맞는 드라이버를 다운 받는다.
http://www.nvidia.com/Download/index.aspx?lang=kr
GEFORCE GTX 1080의 경우는
GeForce, GeForce 10 Series, GeForce GTX 1080, Linux 64-bit, English(US) 로 검색
375.20 번전이였고 다운 받은 파일은 NVIDIA-Linux-x86_64-375.39.run 이였다.
기존 NVIDIA 드라이버 제거
$ sudo apt-get purge nvidia*
CTRL+ALT+F1~F6 로 커멘드창모드로 진입, 그래픽모드로 돌아올때는 CTRL+ALT+F7
커멘트 창 모드에서 로그인한다.
끊현재동작되고 있는 그래픽 인터페이스를 끊다.
$ sudo service lightdm stop
$ sudo service gdm stop
드라이버 다운 받은 폴더로 이동
$ sudo chmod 755 NVIDIA-Linux-x86_64-375.20.run
$ sudo ./NVIDIA-Linux-x86_64-375.20.run
$ reboot
만약 설치된 드라이버를 지우고 싶다면
$ sudo ./NVIDIA-Linux-x86_64-375.20.run --uninstall
3. CUDA8.0 설치
https://developer.nvidia.com/cuda-downloads 접속
Linux > x86_64 > Ubuntu > 16.04 > deb(local) > Download
cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb 을 다운 받았다.
$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda
cuda 제거
https://askubuntu.com/questions/530043/removing-nvidia-cuda-toolkit-and-installing-new-one
4. CUDNN 설치
https://developer.nvidia.com/cudnn 접속
Download > Log in > Survey > cuDNN v5.1 for Linux
cudnn-8.0-linux-x64-v5.1.tgz 을 다운 받았다.
$ tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
$ sudo cp ./cuda/include/* /usr/local/cuda-8.0/include/
$ sudo cp ./cuda/lib64/* /usr/local/cuda-8.0/lib64/
version check
$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
5. NCCL 설치 - 여러 GPU을 동시에 같이 쓸수 있게 해준단다.
https://github.com/NVIDIA/nccl에서 cuda 8.0 버전을 다운로드 압축 풀고
$ cd nccl
$ make /usr/local/cuda-8.0 test
$ sudo make /usr/local/nccl/lib install
$ sudo cp ./build/include/* /usr/local/cuda-8.0/include/
$ sudo cp ./build/lib/* /usr/local/cuda-8.0/lib64/
cuda 디렉토리에 추가해주었어다.
PATH 설정을 해주고 nccl/build/test/singles에서
$ ./all_reduce_test 10000000
을 실행해서 경로가 잘 설정 되었는지 확인 하자.
6. OpenCV 3.1 설치
우분투에 기본으로 설치되있던 opencv를 안지우는게 좋다 . 지우다 그래픽드라이버를 날릴 수 있다.
컴파일 중 오류가 많이 나서 여러 블로그에 나온 내용을 합쳐서 성공한 방법이다.
$ sudo apt-get update
$ sudo apt-get install --assume-yes build-essential cmake git
$ sudo apt-get install --assume-yes build-essential pkg-config unzip ffmpeg qtbase5-dev python-dev python3-dev python-numpy python3-numpy
$ sudo apt-get install --assume-yes libopencv-dev libgtk-3-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev
$ sudo apt-get install --assume-yes libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
$ sudo apt-get install --assume-yes libv4l-dev libtbb-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev
$ sudo apt-get install --assume-yes libvorbis-dev libxvidcore-dev v4l-utils
$ sudo apt-get install gtk2.0
$ sudo apt-get install libopencv-dev build-essential checkinstall cmake pkg-config yasm libtiff5-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg
$ mkdir OpenCV
$ cd OpenCV
$ sudo git clone https://github.com/Itseez/opencv.git
$ cd opencv
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=OFF -D WITH_OPENGL=ON ..
Qt가 에러나서 OFF했다.
--- cmake 현재 활성화된 파이썬에 opencv 설치 방법 추가 및 cuda 빌드를 끄니까 빌드 빨라진다
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D UILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D WITH_CUDA=OFF -D CMAKE_INSTALL_PREFIX=$(python -c "import sys; print(sys.prefix)") -D PYTHON_EXECUTABLE=$(which python) -D PYTHON_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -D PYTHON_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..
$ make -j8
$ sudo make install
$ sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
$ sudo ldconfig
$ sudo apt-get update
버전 확인
$pkg-config --modversion opencv
7. 환경변수 설정
10번 cmake를 이용한 방법이 더 간단하다.!!!
폴더 익스플로어에서 CTRL+h 을 누르면 숨길 파일이 보인다. .profile 을 연다. 맨 아래 줄에 추가
# cuda & cudnn
export CUDA_HOME=/usr/local/cuda
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib64
# caffe
export CAFFE_HOME=~/caffe
export PYTHONPATH=$CAFFE_HOME/python:$PYTHONPATH
# digits
export DIGITS_HOME=~/digits
8. CAFFE 빌드
https://github.com/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide#the-gpu-support-prerequisites
위 홈페이지 내용을 따라하면 된다.
Make 파일과 Make.config 파일을 수정해줘야한다. Make.config 만 블로깅 한다. #는 주석 처리 된것은 뺏으며 수정 된 것은 아래와 같다.
USE_CUDNN := 1
USE_NCCL := 1
USE_OPENCV := 1
USE_LEVELDB := 1
USE_LMDB := 1
OPENCV_VERSION := 3
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_50,code=compute_50 \
-gencode arch=compute_61,code=compute_61
BLAS := atlas
PYTHON_LIB := /usr/lib
WITH_PYTHON_LAYER := 1
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial /usr/local/share/OpenCV/3rdparty/lib/
위에 홈페이지 내용 잘 읽어보고 Make파일 변경 및 3rdparty 잘 설치! 이제 카페 빌드 하면 끝!!
$ make all -j8
$ make test
$ make runtest
$ make pycaffe -should be finished already, so you can omit this one
$ make distribute
$ python
>> import caffe
9. ETC
ubuntu 16.04 에서는 컴파일러가 이전 것과 많이 달라져서 이전에 만들어진 패키지와 잘 안 물릴수 있다고 한다.
나는 modprobe 에러가 한번 났었는데 nccl 경로문제였다.
https://github.com/BVLC/caffe/wiki/GeForce-GTX-1080,---CUDA-8.0,---Ubuntu-16.04,---Caffe
10. cmake build
mkdir build
cd build
cmake ..
make all
make install
make runtest
- options
https://github.com/BVLC/caffe/pull/1667
11네트웍 추가하는법
| I've solved the problem adding # The secondary network interface
auto enp0s8
iface enp0s8 inet dhcp
to /etc/network/interfaces and restarting the network using sudo service networking restart . Now, here is the result of $ ifconfig enp0s3 Link encap:Ethernet HWaddr 08:00:27:47:52:7b
inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe47:527b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6334 errors:0 dropped:0 overruns:0 frame:0
TX packets:7656 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2741526 (2.7 MB) TX bytes:10824219 (10.8 MB)
enp0s8 Link encap:Ethernet HWaddr 08:00:27:3e:1e:bf
inet addr:10.0.3.15 Bcast:10.0.3.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe3e:1ebf/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1730 (1.7 KB) TX bytes:1882 (1.8 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:2143 errors:0 dropped:0 overruns:0 frame:0
TX packets:2143 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:443165 (443.1 KB) TX bytes:443165 (443.1 KB)
|