분류 | 게시판 |
베스트 |
|
유머 |
|
이야기 |
|
이슈 |
|
생활 |
|
취미 |
|
학술 |
|
방송연예 |
|
방송프로그램 |
|
디지털 |
|
스포츠 |
|
야구팀 |
|
게임1 |
|
게임2 |
|
기타 |
|
운영 |
|
임시게시판 |
|
안녕하세요,
이번 게시물은 linux환경하에서의 4-way GTX 1080 시스템을 테스트한 결과입니다.
주로 딥러닝용 장비인만큼 CUDA프로그램을 돌리기 위한 OS, 드라이버, 툴 셋팅과 프로그램 실행시 온도, 속도, 안정성을 엉성하게나마 다룰려고 합니다.
본론으로 들어갑니다.
시스템 스펙 & 테스트 환경:
CPU: Xeon E5-1650 3.5Ghz, 6 cores, 12 threads
RAM: 64GB DDR4
GPU: GTX 1080 @ 1733Mhz x 4EU
SSD: Intel pro 2500 480GB x 4EU (RAID 0 x 2)
OS: Ubuntu 14.04 LTS server 64bit
CUDA: 8.0 RC version
Driver: NVIDIA graphics driver for linux 64bit ver. 367.35
OS, DRIVER, TOOL 셋팅
먼저 Ubuntu 14.04 LTS server 64bit를 설치합니다.
설치후 재부팅하는 도중에 “nouveau failed to create 0x000…, -22” “unknown hardware 어쩌구” 하는 문구가 뜹니다.
역시 우분투 만악의 근원 nouveau이 말썽을 일으키는군요. Nouveau는 우분투에서 쓰는 오픈소스 그래픽 드라이버입니다. 서드파티라 업데이트가 느려 최신 하드웨어는 인식 못합니다;;;
강제 재부팅후 grub 화면에서 “e”를 누르면 부팅 옵션을 넣을수 있습니다. 눌러주고 맨 마지막 두번째 줄 맨 마지막에 nomodeset 이라는 문구를 넣어주고 부팅하면 정상적으로 로그인 됩니다.
재부팅하면 아까 grub에서의 설정이 리셋되기 때문에 nouveau를 영구적으로 정지시켜야 합니다.
일단 /etc/default/grub 파일을 열고 GRUB_CMDLINE_LINUX_DEFAULT 옵션에 nomodeset를 추가합니다.
다음 /etc/modprobe.d/blacklist.conf 에 다음과 같은 라인을 추가합니다.
blacklist nouveau
blacklist vga16fb
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
재부팅하면 nouveau를 다시는 볼수 없습니다^^
이제 nvidia 사이트에 가서 최선 그래픽 드라이버하고 cuda 8.0 RC버전을 다운받아 설치하면 됩니다. (주의할 점은 두 개를 제각기 설치하고 cuda에 딸린 드라이버는 건너뛰는게 정신건강에 유리합니다)
단 설치하기전 gcc설치하고 sudo apt-get install libglu1-mesa libxi-dev libxmu-dev libglu1-mesa-dev 명령어로 필요한 의존 라이브러리 설치합니다. 설치해도 libGLU.so 가 없다고 뜨는데 /usr/lib/x86_64-linux-gnu 경로를 환경변수 LD_LIBRARY_PATH에 추가하면 됩니다.
다 끝났으면 cuda sample 폴더에 들어가 make합니다. bin에 들어가 deviceQuery를 실행해보면 아래와 같이 뜨면 일단 cuda는 설치성공입니다.
Peer access는 GPU간 통신으로 CPU를 거치지 않고 PCI-E bus를 통해 직접 통신하는 방식을 말합니다. 일단 스크린샷에서는 잘 되는것으로 나옵니다. (나중에 멀티 GPU관련 작업에 유리합니다)
이대로 진행해도 괜찮지만 저는 호불호가 좀 갈리는 방식으로 GPU를 셋팅해둡니다. /etc/rc.local에 다음과 같은 라인들을 추가하고 재부팅합니다.
sudo nvidia-smi -pm 1
sudo nvidia-smi -i 0 -ac 10010,1733
sudo nvidia-smi -i 1 -ac 10010,1733
sudo nvidia-smi -i 2 -ac 10010,1733
sudo nvidia-smi -i 3 -ac 10010,1733
exit 0
첫 라인의 의미는 persistence mode 를 부팅할때마다 켜는 명령입니다. Persistence mode 는 GPU를 사용하지 않아도 nvidia driver를 항상 미리 로딩해두는 모드로 빠른 프로그램 실행에 유리합니다.
그 아래 라인들의 의미는 GPU를 시종일관 강제로 최고 클럭에서 작동하게 해줍니다. (그래서 호불호죠) 10010은 VRAM 클럭이고 1733는 GPU boost 클럭입니다. 제품별로, 레퍼/비레퍼에 따라 다르기에 본인이 구매한 제품에 맞게 해줘야 합니다. Tesla제품의 경우에는 sudo nvidia-smi -i 0 --ecc-config=0 옵션도 줘서 딥러닝에 쓸데없는 ECC를 꺼야 하지만 1080은 해당사항이 아니므로 안해도 됩니다. 0 1 2 3 은 GPU ID로 시스템에 GPU가 몇 개 있으면 다 설정해줘야 합니다.
이제 theano, torch, tensorflow, cntk, caffe 등 딥러닝 툴 중에서 원하시는거로 설치하시면 됩니다. 일단 theano로 테스트 해봅니다. Openblas를 설치하고 openblas기반으로 numpy를 컴파일한다음 cudnn 5.0을 설치하고 theano를 설치하면 됩니다. 아나콘다라는 통합툴이 있지만 귀찮아서 안 씁니다;;; numpy 설치는 여기를 참고 http://stackoverflow.com/questions/11443302/compiling-numpy-with-openblas-integration
CUDA 프로그램 실행, 안정성, 온도, 속도 테스트
이제 실제 프로그램 테스입니다.
일단 실행전 GPU 정보를 확인합니다.
온도가 준수한 수준이고 GPU점유율이 0%입니다. Persistence mode 는 on으로 되어있고 GPU상태는 idle을 의미하는 P8 모드에 있습니다.
딥러닝 트레이닝 프로그램을 4개 GPU에 따로 돌립니다.
대략 6시간 경과후 … ;;;;
맨 위의 카드의 온도가 92도에 항상 고정되어 있습니다;;; (1080 공홈에서 표기한 최고온도입니다;;;;) nvidia-smi로 확인한 결과 96도에서 속도저하, 99도에서 GPU 셧다운이 일어난다고 합니다.
엄청 높은 온도이지만 6시간동안 이로 인해 다운되거나 속도저하는 일어나지 않았습니다. 서버룸에 에어컨을 추가해달라고 해야겠네요.
참고로 처리속도는 동일 프로그램에서 대략 Tesla K40 (4.4 ~ 5.0 TFLOPS, GTX 980 상당) 의 두배정도 나옵니다. 단점이라면 램이 8GB밖에 안됩니다. Float 타입을 16bit로 하면 램 두배의 효과가 나지만 지원하는 툴이 많지 않습니다.
이상입니다.
감사합니다.
죄송합니다. 댓글 작성은 회원만 가능합니다.