【参考】
1. NVidia Optimusを搭載したノートPCでUbuntu14.04+CUDA7.0を動かしてみた
2. NVidia Optimus+Ubuntu14.04のノートPC環境でTensorflow 0.7.1を導入してみた
3. Ubuntu, NVIDIAディスプレイドライバで困ったときに使うコマンド
4. BUG: unable to handle kernel NULL pointer dereference
Ubuntu14.04
- パーティション: 1.22000M 基本 etx4 / 2.200M 基本 etx4 /root 3.8000M(メモリ容量以上) 基本 swp 4.残り 基本 etx4 /home
- 日本語フォルダを英語に戻す
bash LANG=C xdg-user-dirs-gtk-update
- 電源ボタン押下時に、確認ダイアログをスキップしてPCをシャットダウン
bash: /etc/acpi/events/powerbtn
- #action=/etc/acpi/powerbtn.sh
+ action=shutdown -P now
- 必要なソフト導入
sudo apt-get install lv vim openssh-server samba
- sambaサーバ設定
sudo mkdir –p /data/img.digits
sudo chmod 777 /data -R
[img.digits]
path = /data/img.digits
writeable = true
force create mode = 0666
force directory mode = 0777
guest ok = yes
guest only = yes
sudo service smbd restart
Optimus, Driver, CUDA, cuDNN
NVidia Optimus対応
【落とし穴:①】
LinuxではNVidia Optimus(CPU 内臓GPU と NVidia GPUを自動切り換えて、消費電力を抑える技術です。)に対応してない為、別途Optimus対応ツールbumblebeeが必要です。
# bumblebeeのリポジトリ追加+最新版へ更新
sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
# bumblebee一式のインストール(公式ページでのubuntu14.04のインストール方法を参考)
sudo apt-get install bumblebee bumblebee-nvidia primus linux-headers-generic
NVidia ドライブ
CUDA7.5を入れる為、352以上が必要そうです。
sudo apt-get install nvidia-352 nvidia-settings
nvidia-352をbumblebeeで利用するように
sudo vim /etc/bumblebee/bumblebee.conf
# 次のように変更します
22行: Driver=nvidia
55行: KernelDriver=nvidia-352
58行: LibraryPath=/usr/lib/nvidia-352:/usr/lib32/nvidia-352
61行: XorgModulePath=/usr/lib/nvidia-352/xorg,/usr/lib/xorg/modules
nvidia-352をブラックリストに登録
nvidia-352をインストールした場合、bumblebeeを起動する前にnvidia-352を有効になってしまいます。そうなると、bumblebeeが起動せず、Ubuntuが正しく起動しません(UbuntuのGUI起動後真っ暗にるそうです)
20161013現在では既にデフォルトに登録されているようですが、もし無ければ、以下の手順で追加
sudo vim /etc/modprobe.d/bumblebee.conf
# 以下を追加
blacklist nvidia-352
blacklist nvidia-352-updates
blacklist nvidia-experimental-352
CUDA
CUDA 7.5をダウンロード
debパッケージでもインストールできますが、細かいオプションが利かないため、runパッケージをダウンロードします!
【落とし穴:②】
何も考えずにインストールすると、OpenGLライブラリもインストールされます。このライブラリがインストールすることによって、Ubuntuがログインできなくなるそうです。しかも、アンインストールしても元に戻らなかったため、ご注意!!!
OpenGL無しでインストール
sudo ./cuda_7.5.18_linux.run --no-opengl-libs
# 当然accept
Do you accept the previously read EULA? (accept/decline/quit): accept
# 必要らしいので, y
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 346.46? ((y)es/(n)o/(q)uit): y
# CUDA本体なので, y
Install the CUDA 7.5 Toolkit? ((y)es/(n)o/(q)uit): y
# CUDAの入れる場所を尋ねられます。ここはデフォルトのままなので、そのままENTER
Enter Toolkit Location [ default is /usr/local/cuda-7.5 ]:
# シンボリックリンクをはるか尋ねられますが、実効に必要なので y
Do you want to install a symbolic link at /usr/local/cuda? ((y)es/(n)o/(q)uit): y
# サンプルを入れるかどうか尋ねられますが、動作確認したいので y
Install the CUDA 7.5 Samples? ((y)es/(n)o/(q)uit): y
# サンプルの入れる場所はデフォルトにしときます
Enter CUDA Samples Location [ default is /home/faithnh ]:
#パス追加
vim ~/.bashrc
# 以下を追加
# for CUDA
export PATH=$PATH:/usr/local/cuda-7.5/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-7.5/lib64
source ~/.bashrc
サンプルで確認
bumblebeeでは、デフォルトGPUは有効になっていないため、GPUは認識しないようです。
GPUを有効にして実行させるためにはoptirunコマンドを挟んで実行しなければなりません。
cd ~/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release
sudo optirun ./mergeSort
./mergeSort Starting...
GPU Device 0: "GeForce 610M" with compute capability 2.1
Allocating and initializing host arrays...
Allocating and initializing CUDA arrays...
Initializing GPU merge sort...
Running GPU merge sort...
Time: 1037.418945 ms
Reading back GPU merge sort results...
Inspecting the results...
...inspecting keys array: OK
...inspecting keys and values array: OK
...stability property: stable!
Shutting down...
cuDNN
cuDNNダウンロード
tar -zxf cudnn-7.0-linux-x64-v4.0-prod.tgz
cd cuda
sudo cp lib64/lib* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/
Caffe
基本的にこちら通りやります。
sudo apt-get install --no-install-recommends build-essential cmake git gfortran libatlas-base-dev libboost-all-dev libgflags-dev libgoogle-glog-dev libhdf5-serial-dev libleveldb-dev liblmdb-dev libopencv-dev libprotobuf-dev libsnappy-dev protobuf-compiler python-all-dev python-dev python-h5py python-matplotlib python-numpy python-opencv python-pil python-pip python-protobuf python-scipy python-skimage python-sklearn
#path 追加
vim ~/.bashrc
# export CAFFE_ROOT=~/caffe
source ~/.bashrc
#build
git clone https://github.com/NVIDIA/caffe.git $CAFFE_ROOT
sudo pip install -r $CAFFE_ROOT/python/requirements.txt
cd $CAFFE_ROOT
mkdir build
cd build
cmake ..
make --jobs=4
DIGITS
基本的にこちら通りやります。
sudo apt-get install --no-install-recommends git graphviz python-dev python-flask python-flaskext.wtf python-gevent python-h5py python-numpy python-pil python-pip python-protobuf python-scipy
#path 追加
vim ~/.bashrc
# export DIGITS_ROOT=~/digits
source ~/.bashrc
#build
git clone https://github.com/NVIDIA/DIGITS.git $DIGITS_ROOT
sudo pip install -r $DIGITS_ROOT/requirements.txt
サーバー起動、NVidia GPUを使う為、optirunを忘れず!!!
# Starts a server at http://localhost:5000/.
cd $DIGITS_ROOT
optirun ./digits-devserver