LoginSignup
3
4

More than 5 years have passed since last update.

Nvidia Opimusを搭載したノートPCにDigits構築

Last updated at Posted at 2016-10-13

【参考】
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
  1. sambaサーバ設定
sudo mkdir –p /data/img.digits 
sudo chmod 777  /data -R
/etc/samba/smb.conf
[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
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4