ころころ変わるようなので、あくまで2014/10/21時点での方法である、悪しからず。
GPUを使用するため、はじめにCUDAをインストールする。
NVIDIA Cuda Driver
OSのバージョンに合わせて選択する。
NVIDIA Cuda
DriverのアップデートとCuda、サンプルが含まれる。
cuDNNを使うと速いよ、って書いてあるが残念ながら6.5ではまだMacOSに対応していない。
BLAS
Basic Linear Algebra Subprograms
数学的な計算を行うライブラリを入れる。
Caffeは3種類のライブラリに対応していて、どれを使っても良い。
MacOSの開発者ライブラリにもともと含まれる、ATLASを使用するので、作業無し。
Anaconda
機会学習に用いるpythonの科学計算ライブラリの構築に用いる。
pyenvを事前インストールしてから、Anacondaをインストール
> brew install pyenv
> pyenv install anaconda-2.0.1
> pyenv rehash
> sudo pyenv local anaconda-2.0.1
> sudo pyenv global anaconda-2.0.1
OpenCV
ご存知、画像処理ライブラリ。
> brew install opencv
> brew edit opencv
-DPYTHON_LIBRARY=#{py_prefix}/lib/libpython2.7.dylib
-DPYTHON_INCLUDE_DIR=#{py_prefix}/include/python2.7
The prerequisite home-brew formulae
homebredのformulaeの変更が必要なものがある。
以下のライブラリ
boost snappy leveldb protobuf gflags glog szip lmdb homebrew/science/opencv
それぞれ brew edit ... としても良いが、以下のコマンドでまとめてできる。
for x in snappy leveldb protobuf gflags glog szip boost boost-python lmdb homebrew/science/opencv; do brew edit $x; done
すべて、def install以下に修正を加える。
def install
# ADD THE FOLLOWING:
ENV.append "CXXFLAGS", "-stdlib=libstdc++"
ENV.append "CFLAGS", "-stdlib=libstdc++"
ENV.append "LDFLAGS", "-stdlib=libstdc++ -lstdc++"
# The following is necessary because libtool likes to strip LDFLAGS:
ENV["CXX"] = "/usr/bin/clang++ -stdlib=libstdc++"
ここで、本当はboostのバージョンを1.55にするべきだけど、手戻り的にやったのでここでの方法は試していない、ちなみに以下のように修正した。
boostのバージョンが1.55で無いとうまく動かないよ、という記述に気づいていなかった。
対処としては、以下のURLを参考に、caffe用の/usr/local/のbranch上でboostのformulaを書き換えて、再度brewでインストールした。
https://github.com/BVLC/caffe/issues/1193#issuecomment-57491906
上記のファイルのinstall部分を、再度libstdc++を使ってコンパイルするように書きなおしてから、アンインストール、インストールを実行。
> brew uninstall boost
> brew uninstall boost-python
brew install --build-from-source --fresh -vd boost boost-python
formulaを書き換えたらあとはインストール。
for x in snappy leveldb gflags glog szip lmdv homebrew/science/opencv; do brew uninstall $x; brew install --build-from-source --fresh -vd $x; done
brew uninstall protobuf; brew install --build-from-source --with-python --fresh -vd protobuf
brew install --build-from-source --fresh -vd boost boost-python
Caffeブランチ
以下で、Caffe用のライブラリをブランチ管理し、他のパッケージに影響しないようにする。
cd /usr/local
git checkout -b caffe
git add .
git commit -m "Update Caffe dependencies to use libstdc++"
git checkout master
brew update
git rebase master caffe
# Resolve any merge conflicts here
git checkout caffe
Caffeのクローン
> git clone https://github.com/BVLC/caffe.git
> cd caffe
> cp Makefile.config.example Makefile.config
Makefile.configを編集する。
cuda6以上を入れている場合は以下のようにコメントアウト
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_50,code=compute_50
pythonインターフェースのパスPYTHON_INCLUDE, PYTHON_LIB を変更する。
# Anaconda Python distribution is quite popular. Include path:
PYTHON_INCLUDE := $(HOME)/.pyenv/versions/anaconda-2.0.1/include \
$(HOME)/.pyenv/versions/anaconda-2.0.1/include/python2.7 \
$(HOME)/.pyenv/versions/anaconda-2.0.1/lib/python2.7/site-packages/numpy/core/include
PYTHON_LIB := $(HOME)/.pyenv/versions/anaconda-2.0.1/lib
コンパイル&テスト
> make all
> make test
> make runtest
標準出力には大量の出力があるが、それぞれのパラメータの意味はよくわからない。
runtestの前に、ライブラリにパスが通っているか確認すること。
DYLD_FALLBACK_LIBRARY_PATHに対して、以下の値を設定する。
/usr/local/cuda/lib:$HOME/anaconda/lib:/usr/local/lib:/usr/lib
runtestは、以下のようにPASSしたことがわかる。
[==========] 838 tests from 169 test cases ran. (142854 ms total)
[ PASSED ] 838 tests.
インストール完了!
0 件のコメント:
コメントを投稿