Caffe on OSX10.11 with macports+anaconda
CaffeをAirMacにインストール.GPUはないのでCPUモードのみ.
検索したところ,homebrewの情報は見つかっても
macports+anacondaの組み合わせの情報は見つからなかったので,
参考までにメモ.
注意:結局うまくいかず.anacondaのpythonが参照するライブラリとmacportsのpythonが参照するライブラリが競合してだめ.anacondaを使わずにmacportsだけならうまくいく.
macportsでcaffe for OSX10.11を参照.
install
anaconda
Anaconda-2.3.0-MacOSX-x86_64.pkgを$(HOME)/anaconda
にインストール.
(これはpython27用)
conda install boost cython numpy scipy scikit-image matplotlib ipython h5py networkx nose pandas python-dateutil protobuf python-gflags pyyaml pillow six
condaにleveldbがないのでpipでインストール
pip install leveldb
macports
MacPorts-2.3.4-10.11-ElCapitan.pkgを/opt/local/
にインストール.
port install boost +python27
port install opencv +python27 +eigen
port install boost protobuf-c protobuf-cpp google-glog gflags hdf5 leveldb snappy lmdb
caffe
git clone https://github.com/BVLC/caffe.git
cd caffe
cp Makefile.config.example Makefile.config
ここでMakefile.configを書き換え.
CPU_ONLY := 1 # airmacなので
BLAS := atlas # 簡単にベタなatlas
# home以下にanacondaをいれたので
ANACONDA_HOME := $(HOME)/anaconda
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7 \
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
PYTHON_LIB := $(ANACONDA_HOME)/lib
# macportsのライブラリは/opt/local/にあるのでそれを先に
INCLUDE_DIRS := /opt/local/include $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := /opt/local/lib $(PYTHON_LIB) /usr/local/lib /usr/lib
# opencvのリンクのために
USE_PKG_CONFIG := 1
それからmake.
make all
make test
make runtest
ハマったところ
最初はMakefile.configのLIBRARY_DIRSで/opt/local/lib
を$(PYTHON_LIB)
の後に書いていた.
するといつまでもこのエラーが消えない.
$ make runtest
.build_release/tools/caffe
dyld: Library not loaded: @rpath/./libhdf5.10.dylib
Referenced from: /*********/caffe/.build_release/tools/caffe
Reason: image not found
make: *** [runtest] Trace/BPT trap: 5
似たようなエラーが見つかるが
結局,anacondaのライブラリを先に読みに行っていたので,
macportsのhdf5を見つけられずに失敗していた.
macportsをanacondaよりも先にLIBRARY_DIRSに書けばOK.
その後:失敗
結局,pythonライブラリが競合してダメ.
import pycaffe in local Mac OS 10.9 reports "segmentation fault: 11" #591と同じ問題が生じる.
anacondaを使わずにmacportsだけならうまくいく.
macportsでcaffe for OSX10.11を参照.