This “tutorial” was written on 2016-11-30.
I am using:
If you want to run caffe matlab bindings, copy the matlab folder and symlink opencv libraries. My copy is here:
/scratch/aquarius/vsydorov/matlab_ubuntu/matlab-2016a/
Matlab bundles a lot of libraries with it. It also bundles opencv which is somehow different from the system version. This causes a lot of weird problems, like the infamous “undefined symbol _ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayERSt6vectorIhSaIhEERKSB_IiSaIiEE”
error. Here are some discussions about this error:
Don't make the same mistake I (and also the guy in the first link) did and assume this will go away if you just put the libraries in the LD_PRELOAD. It will not. The only solution is to copy matlab folder and symlink the aforementioned opencv libraries in the bin/glnxa64. I also symlinked libtiff.
libtiff.so.5 -> /usr/lib/x86_64-linux-gnu/libtiff.so.5 libopencv_core.so.2.4.9 -> /usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4.9 libopencv_highgui.so.2.4.9 -> /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.9 libopencv_imgproc.so.2.4.9 -> /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4.9
Copying matlab folder can take quite a while, so feel free to use my copy
/scratch/aquarius/vsydorov/matlab_ubuntu/matlab-2016a/
I launch my copy like this:
LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libstdc++.so.6" /scratch/aquarius/vsydorov/matlab-2016a/matlab-2016a/bin/matlab -nosplash
Follow official installation guides:
If it does not work, copypaste the following into your terminal:
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install -y libatlas-base-dev sudo apt-get install -y --no-install-recommends libboost-all-dev sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev sudo apt-get install -y libopencv-dev
https://github.com/eldar/deepcut
I compiled caffe for deepercut in the folder
/scratch/gpuhost9/vsydorov/libraries/caffe/caffe-deepercut
using the following Makefile.config
:
# I am compiled with cuda8.0 on ubuntu! # If you are wondering - you are supposed to disable CUDNN, yes, otherwise it does not compile. USE_CUDNN := 0 CUDA_DIR := /scratch/gpuhost9/vsydorov/libraries/cuda8.0 CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ -gencode arch=compute_20,code=sm_21 \ -gencode arch=compute_30,code=sm_30 \ -gencode arch=compute_35,code=sm_35 \ -gencode arch=compute_50,code=sm_50 \ -gencode arch=compute_50,code=compute_50 BLAS := mkl BLAS_INCLUDE := /scratch2/clear/mairal/intel/compilers_and_libraries/linux/mkl/include BLAS_LIB := /scratch2/clear/mairal/intel/compilers_and_libraries/linux/mkl/lib MATLAB_DIR := /scratch/aquarius/vsydorov/matlab_ubuntu/matlab-2016a PYTHON_INCLUDE := /scratch/gpuhost9/vsydorov/VENVS/ubunion/include/python2.7 PYTHON_LIB := /usr/lib /scratch/gpuhost9/vsydorov/VENVS/ubunion/lib WITH_PYTHON_LAYER := 1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial /scratch/gpuhost9/vsydorov/libraries/cudnn-cuda8.0-ver5.1/cuda/include LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial /scratch2/clear/mairal/intel/compilers_and_libraries/linux/mkl/lib/intel64 BUILD_DIR := build DISTRIBUTE_DIR := distribute DEBUG := 0 TEST_GPUID := 0 # enable pretty build (comment to see full commands) Q ?= @ CUSTOM_CXX := g++ -std=c++11
Compilation had been performed by running:
make all -j8 make pycaffe make matcaffe
Once compilation was done, I tested matlab bindings with the following elegant command:
cd matlab LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libstdc++.so.6" /scratch/aquarius/vsydorov/matlab_ubuntu/matlab-2016a/bin/matlab -nodisplay -r 'caffe.run_tests(), exit()'