Ubuntu16.04のインストールからGTX1080/CUDA8.0RCでcaffeをビルド
最近は研究がDeepLearningよりになっています。ツールとしての使い方しかまだできていませんが。
Ubuntu16.04をクリーンインストール
isoイメージをCDに焼いたものをセットし、UEFIでROMの優先順位を一番上に置いて起動。最初はパーティション作成を手動でやってて、優先順位の作業を忘れてEFIブートパーティションが項目になくてマウントできず、ローダーの設定がうまくいかなかったため奔走した。結局手動はやめてフルインストールでやった。
必要最低限のもの
$ sudo apt-get install git $ sudo add-apt-repository ppa:graphics-drivers/ppa $ sudo apt-get install update $ sudo apt-get install nvidia-367 $ sudo apt-get install mesa-common-dev $ sudo apt-get install freeglut3-dev
CUDAインストール
runfileのダウンロード
https://developer.nvidia.com/cuda-toolkit からCUDA8のDownloadリンクへ進み、 Linux/x86_64/Ubuntu/16.04/runfile[local] の順に選択しDownload[1.4GB]。この後これをhome直下に移動させておく。
pathの記述
$ gedit .bashrc
で最後の行に以下を追記。
export PATH=$PATH:/usr/local/cuda/bin export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH export CUDA_ROOT=/usr/local/cuda
runfileの実行
1.Ctrl+Alt+F1で仮想コンソールに入る。 (最初はここで真っ黒になり何も表示されなかったためrunfileで入れるのを諦めて一旦debファイルからインストールしたが、CUDAサンプルの時点でエラーが出たのでその後runfileでインストールし直そうとしたら仮想コンソールに文字が表示されたのでそのまま以下を行った)
2.usernameとpasswordでloginする
3.以下のコマンドを打つ。なお、コンソールでは_"Shift + -"で入力できる。shコマンド後は0%からEnterでページ送りをする必要があるので注意。driverは古いけどyesを選び、シンボリックリンク作成にもyesを選ぶ。基本デフォルト設定を選べば大丈夫。
$ sudo init 3 $ chmod +x cuda_8.0.27_linux.run $ sudo sh cuda_8.0.27_linux.run $ sudo reboot
4.再起動後、login画面で Ctrl+Alt+F1で再度コンソールに入り、loginしたのち
$ sudo apt-get install nvidia-367 --reinstall $ sudo reboot
5.動作確認
$ nvidia-smi
NVIDIA-SMI 367.27 Driver Version 367.27やGeForce GTX 1080が確認できる。
6.サンプル動作確認
$ cd NVIDIA_CUDA-8.0_Samples/5_Simulations/nbody $ make $ ./nbody -benchmark -numbodies=256000 -device=0
エラーが出ずに
"= 2900.647 single-precision GFLOP/s at 20 flops per interaction"まで出れば成功。
最初deb fileでインストールした時は
"error only devices available, 1 requested. existing"
といったエラーが出てきて、caffeのruntestでもコアダンプのエラー
"error == cudaSuccess(38 vs. 0) no CUDA-capable device is detected"
でもうダメだーと思っていたが、
sudo apt-get remove --purge nvidia-* sudo rm -rf /usr/local/cuda sudo rm -rf /usr/local/cuda-8.0
で一旦cudaをuninstallしてrunfileでやり直したらうまくいった。CUDAサンプルが動くか確認するのが大事。
Caffeのビルド
関連ライブラリのインストール
$ sudo apt-get install build-essential cmake git pkg-config $ sudo apt-get install libatlas-base-dev $ sudo apt-get install python-opencv $ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev $ sudo apt-get install --no-install-recommends libboost-all-dev $ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler $ sudo apt-get install python-pip python-dev python-numpy python-scipy $ sudo apt-get install libopencv-dev
caffeのビルドまで
cudnnを使う場合は以下。v2とかだとファイルの中身がフォルダに分かれていないので注意。(v2はSegNetとかでしか使わないけど)
$ cd ~/Downloads $ mv cudnn-8.0-linux-x64-v5.0-ga.tgz cuda.tgz $ tar zxvf cuda.tgz $ sudo cp cuda/include/cudnn.h /usr/local/cuda/include $ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 $ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
find以降は名前解決のために必要。
$ git clone https://github.com/BVLC/caffe.git $ cd caffe $ cp Makefile.config.example Makefile.config $ find . -type f -exec sed -i -e 's^"hdf5.h"^"hdf5/serial/hdf5.h"^g' -e 's^"hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g' '{}' \; $ cd /usr/lib/x86_64-linux-gnu $ sudo ln -s libhdf5_serial.so libhdf5.so $ sudo ln -s libhdf5_serial_hl.so libhdf5_hl.so $ cd ~/caffe $ make all -j8 $ make test -j8 $ make runtest -j8
ちなみにSegNetのビルドはcudnnライブラリがv2でないとダメ。
よってv2も/usr/local/cudaのincludeとlib64に入れておく。(2つのバージョンのライブラリどちらも入れとくのは怖いが)
make runtestで2/4ができなかったが、SegNet自体は動いている。大丈夫なのかこれ。
コンパイル作業で丸1~2日はかけてしまった。もう環境構築はやりたくない。
参考
GTX-1080 など GeForce を Ubuntu 16.04 LTS で CUDA-8.0RC と共に使う - Qiita