OGIMOノート

7歳の娘と、5歳の息子(脳性麻痺)を持った父親エンジニアの備忘録。自作の電子工作おもちゃ/リハビリ器具/ロボット関係の製作記録、勉強記録を残していきます

【環境構築】Ubuntu16.04+GTX1080+Cuda9.2+cudnn7.1+ROS Kineticのワークマシン導入

はじめに

本格的にDeep Learningを学んでみようということで、自宅ワークマシンとして UbuntuGPU環境を構築してみた。ロボットの認識や行動計画に応用できればよいなぁ〜
(息子のリハビリ計画や行動把握に応用できれば尚良しだが、そこは使い方をしっかり考えないと…)

[環境]
・CPU : Intel Core i7-7700
・メモリ : 16GB
GPU : GTX1080
・OS : Ubuntu16.04 LTS

以下は導入手順を、備忘録も兼ねて記載していく

Ubuntu16.04導入

ここの手順は省略。
 ・ USBメモリにBootファイルを書き込む
 ・ USBメモリを挿入してUbuntu起動。画面手順にしたがってUbuntu
  (日本語版を選択)
 ・apt-get update → apt-get upgrade で最新に更新

あとは、日本語版Ubuntuディレクトリ名が初期状態では日本語になっているのが個人的には気持ち悪いので、これを英語に変更しておく

$ LANG=C xdg-user-dirs-gtk-update
$ LANG=ja_jp.UTF8

ROS kineticのインストール

ROS Wiki
http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Kinetic%20on%20the%20Raspberry%20Pi
にしたがってインストール

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install ros-kinetic-desktop-full
$ sudo rosdep init
$ rosdep update
$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc 
$ source ~/.bashrc

完了したらroscoreを起動する事を確認できればOK!

GTX1080ドライバのインストール

リポジトリを登録してドライバをインストールします。GTX1080に限らず NVidia GPUは共通ドライバになっている様だ。現状の最新は 396 (2018-6-4)のため、これをインストールする。

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-396
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev

ここで 再起動した後、nvidia-smiコマンドを叩いて、GPU情報が表示されればOK

$ nvidia-smi 
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 396.26                 Driver Version: 396.26                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1080    Off  | 00000000:01:00.0  On |                  N/A |
| N/A   40C    P8    11W /  N/A |    261MiB /  8111MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1295      G   /usr/lib/xorg/Xorg                           181MiB |
|    0      1874      G   compiz                                        77MiB |
+-----------------------------------------------------------------------------+


Cuda9.2のインストール

現在の最新版は Cuda9.2なので、これを入れてみる

sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
echo "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 /" | sudo tee /etc/apt/sources.list.d/cuda.list
sudo apt-get update
sudo apt-get -o Dpkg::Options::="--force-overwrite" install cuda-9-2 cuda-drivers
echo 'export PATH=/usr/local/cuda-9.2/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-9.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc

cudnn7.1のインストール

現在の最新版はcudnn7.1なので、これを入れてみる。

https://developer.nvidia.com/rdp/cudnn-download からcuDNN 7.1 for CUDA 9.2のdebパッケージをダウンロードする。
以下の3つを使用する
・cuDNN v7.1.* Runtime Library for Ubuntu16.04 (Deb)
・cuDNN v7.1.* Developer Library for Ubuntu16.04 (Deb)
・cuDNN v7.1.* Code Samples and User Guide for Ubuntu16.04 (Deb)
ダウンロードしたフォルダで以下のコマンドを実行して、cuDNNをインストールする

sudo dpkg -i libcudnn7_7.1*+cuda9.2_amd64.deb
sudo dpkg -i libcudnn7-dev_7.1*+cuda9.2_amd64.deb
sudo dpkg -i libcudnn7-doc_7.1*+cuda9.2_amd64.deb 

GPU動作確認

ここらで一度動作確認してみたいと思う。
/usr/local/cuda/samples/
に移動すると、Cuda動作確認のためのサンプルコードがあるので、これを動かしてみる。

良く見かけるケムリのシミュレーション表示をさせるコードを動かしてみる

cd 5_Simulations/smokeParticles
make
./smokeParticles

この様にケムリがフワフワ動く動画が確認できる

f:id:motokiinfinity8:20180705092433p:plain

ここで先ほどの nvidia-smi コマンドを動かしてGPU使用率が動いていることを確認する

nvidia-smi -l 1

(1秒ごとに表示)
|   0  GeForce GTX 1080    Off  | 00000000:01:00.0  On |                  N/A |
| N/A   49C    P2    44W /  N/A |    440MiB /  8111MiB |     23%      Default |

ちなみに、ノートPC(GEFORCE MX150搭載)にも同様の環境を構築して、ケムリシミュレーション時のGPU負荷を見たところ、常に100%状態だった。如何に GTX1080の処理性能が高いかを実感した。(まだまだ序の口だとは思いますが)

CPU/GPUの負荷&温度確認

これから先の検討の中で、どの程度の負荷状態かを把握しておきたいと思ったところ、簡易なGUI表示ツールである psensor を見つけた。

sudo apt-get install psensor

でインストールして、psensorで起動。
CPU/GPUの負荷%や温度がグラフ化されるので便利!

まとめ

とりあえず、ワークマシンにUbuntu16.04+GTX1080+Cuda9.2+cudnn7.1+ROS Kineticを構築した。OSインストールの機会はまたありそうなので、その時への備忘録として残しておく。

次はワークマシンに対して、DeepLearning環境を構築していきたいと思う。