備忘録とか日常とか

学んだこととかを書きます。

ubuntu14.04 theanoとかgpgpu環境構築メモ

まっさらなlinux環境にtheano, pylearn2のgpgpu環境を導入する手順をメモする
ほぼ自分用みたいなとこある

環境は以下
ubuntu14.04LTS
GeForce GTX 970

インストール

ubuntu14.04にはpython2.7が最初から入っているのでパッケージから入れてく。

sudo apt-get install python-numpy python-scipy python-dev python-matplotlib python-pip python-setuptools  python-nose g++ libopenblas-dev git
sudo pip install Theano
git clone git://github.com/lisa-lab/pylearn2.git
cd pylearn2
python setup.py develop

できたら

import pylearn2

とかして確認。

pylearn2のデータパスを追加しておく。
ホームディレクトリ内の .bashrc の末尾に以下を追加

export PYTHON_DATA_PATH="/home/username/pylearn2data"

別に場所はどこでもいいと思うので適当に。

CUDA入れる

以前Caffeのインストールを試みた時に、CUDAのパッケージからそのままインストールするとうまく行かなかった(今はわからん)。CUDAのパッケージにビデオドライバも含まれているらしく、先にドライバを入れてたのでそのせいかもしれない。
なのでtoolkitとサンプルを別々に入れる。
参考は以下
Caffe(本家サイト版)をインストールして試してみる - 論理 Hearts Club Band

GPUドライバの導入はこの記事の下の方で書いたのでその通りにする。
まずCUDAの最新版を入手する↓
CUDA Toolkit 9.2 Download | NVIDIA Developer
2016/2/11現在で最新は7.5

環境を選択してrunファイルをダウンロード
作業しやすいようにホームディレクトリにおいておく

その後ランレベルを変えるため再起動する。
ぶっちゃけこの辺の仕組みとか理由とかわかってない・・・Linux勉強しなきゃなあ

GRUBのメニュー画面に入る(自動で表示しない場合はUbuntu起動中にEscキーぽちぽちする)
カーソルをUbuntuに合わせた状態で「e」キーを押してオプションを表示

linux の行のところに"quiet splash"って書いてあるので、その直後に"text 3"と追記する。
その後F10で起動
この設定は今回のみ有効となっている。


できたらCUDAインストーラの実行権限を変更して、

sudo chmod 755 cuda_7.5.18_linux.run

インストーラを生成するため-extractオプションをつけて実行する

sudo ./cuda_7.5.18_linux.run -extract=$HOME/nvidia_install

するとディレクトリが生成され、中にドライバ、ツールキット、サンプルのインストーラが入っている。
生成されたディレクトリ内に入り、

sudo ./cuda-linux64-rel-7.5.18-19867135.run

を実行

するとEULAが表示されるのでスペースキーで進んでいく
各項目について聞かれるので、以下のように入力する

  • ソフトウェア使用許諾: "accept"
  • インストールパス:[Enter]
  • デスクトップメニューショートカットの作成:[Enter]
  • シンボリックリンクの作成:[Enter]

Installation Completeと表示されたら完了。


同様の手順でサンプルもインストールする。

sudo ./cuda-samples-linux-7.5.18-19867135.run

各項目について以下で回答。

  • ソフトウェア使用許諾: "accept"
  • インストールパス: [Enter]


ここまでできたら再起動しておく。

theanoでgpu設定

theanoでgpuを使えるようにする。
以下のテキストを.theanorcというファイルとしてホームディレクトリに保存する。

[global]
floatX = float32
device = gpu0

[lib]
cnmem = True

[cuda] 
root = /usr/local/cuda-7.5

cudaの項目はバージョンに合わせて変更する。

その後pythonを起動し、以下のcheck.pyを実行する

# check.py


from theano import function, config, shared, sandbox
import theano.tensor as T
import numpy
import time

vlen = 10 * 30 * 768  # 10 x #cores x # threads per core
iters = 1000

rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], T.exp(x))
print f.maker.fgraph.toposort()
t0 = time.time()
for i in xrange(iters):
    r = f()
t1 = time.time()
print 'Looping %d times took' % iters, t1 - t0, 'seconds'
print 'Result is', r
if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
    print 'Used the cpu'
else:
    print 'Used the gpu'

実行後、最後に"Used the gpu" と表示されればgpuが使えてることになる。

Anaconda入れる

ここは別に入れなくてもいい
まあ使えるとなにかと便利なので

Anacondaを公式からダウンロードしてくる
https://www.continuum.io/downloads
bashする

bash bash Anaconda2-2.5.0-Linux-x86_64.sh

指示に従ってインストール
パスを追加するか聞かれるので、追加する。

するとubuntuに元から入ってた方のpythonパッケージが使えなくなるので、パスを通す。
.bashrcに以下を追加

export PYTHONPATH="/usr/local/lib/python2.7/dist-packages:/home/username/pylearn2:"$PYTHONPATH

できたらpythonを起動して以下を試す。

import pylearn2

GPU使ってますよーみたいなメッセージが出ればおけ。