# Install CCMAKE
$ sudo apt-get install cmake-curses-gui# Build my own installation location
$ mkdir ~/local_install
# ProtoBuffer
$ tar zxvf protobuf-2.5.0.tar.gz$ cd protobuf-2.5.0
$ ./configure --prefix=/home/liudanny/local_install/
$ make -j2
$ make install
#Boost
$ tar xvf boost_1_56_0.tar.bz2$ cd boost_1_56_0
### ./bootstrap.sh --show-libraries ###
$ ./bootstrap.sh --with-libraries=program_options,filesystem,system,exception,thread
$ ./b2
$ cp -r boost/ /home/liudanny/local_install/include
$ cp stage/lib/* /home/liudanny/local_install/lib/
# Gflags
$ unzip gflags-2.1.1.zip$ cd gflags-2.1.1
$ mkdir build
$ cd build
$ cmake ..
$ ccmake ..
$ make -j2
$ make install
# Glog
$ tar zxvf glog-0.3.3.tar.gz$ cd glog-0.3.3
$ ./configure --prefix=/home/liudanny/local_install
$ make -j2
$ make install
#BLAS
$ tar zxvf OpenBLAS-0.2.14.tar.gz$ cd OpenBLAS-0.2.14
$ make TARGET=ATOM -j2
$ make PREFIX=/home/liudanny/local_install install
#HDF5
$ tar jxvf hdf5-1.8.9.tar.bz2$ cd hdf5-1.8.9
$ ./configure --prefix=/home/liudanny/local_install/
$ make -j2 && make install
#OpenCV
$ wget -O opencv-2.4.13.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.13/opencv-2.4.13.zip/download$ uzip opencv-2.4.13.zip
$ unzip opencv-2.4.13.zip
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/liudanny/local_install -D BUILD_NEW_PYTHON_SUPPORT=OFF -D INSTALL_C_EXAMPLES=ON -D BUILD_EXAMPLES=ON -DWITH_IPP=OFF ..
$ make -j2
$ make install
#LMDB/LevelDB
$ tar zxvf lmdb.tgz$ cd libraries/liblmdb
$ make -j2
$ cp lmdb.h ~/local_install/include
$ cp libleveldb.so* ~/local_install/lib/
$ tar zxvf leveldb-1.7.0.tar.gz
$ cd leveldb-1.7.0
$ make -j2
$ cp -r include/leveldb ~/local_install/include/
$ cp liblmdb.so ~/local_install/lib/
# Snappy
$ tar zxvf snappy-1.1.1.tar.gz$ cd snappy-1.1.1
$ ./configure --prefix=/home/liudanny/local_install/
$ make -j2 && make install
# Check ~/local_install
$ cd ~/local_install
$ tree -d -L 2
.
|-- bin$ tree -d -L 2
.
|-- include
| |-- boost
| |-- gflags
| |-- glog
| |-- leveldb
| |-- opencv
| `-- opencv2
|-- lib
| |-- cmake
| `-- pkgconfig
`-- share
|-- doc
|-- hdf5_examples
`-- OpenCV
# Caffe
git clone https://github.com/BVLC/caffe.gitcd caffe
vi Makefile.config
INCLUDE_DIRS := /home/liudanny/local_install/include $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := /home/liudanny/local_install/lib $(PYTHON_LIB) /usr/local/lib /usr/lib
make -j2make test
make runtest
# Test a program
blob_demo.cpp
#include <vector> #include <iostream> #include <caffe/blob.hpp> using namespace caffe; using namespace std; int main(void) { Blob<float> a; cout<<"Size : "<< a.shape_string()<<endl; a.Reshape(1, 2, 3, 4); cout<<"Size : "<< a.shape_string()<<endl; float * p = a.mutable_cpu_data(); for(int i = 0; i < a.count(); i++) { p[i] = i; } for(int u = 0; u < a.num(); u++) { for(int v = 0; v < a.channels(); v++) { for(int w = 0; w < a.height(); w++) { for(int x = 0; x < a.width(); x++) { cout<<"a["<<u<<"]["<<v<<"]["<<w<<"]["<<x<<"] = "<< a.data_at(u, v, w, x)<<endl; } } } } cout<<"ASUM = "<<a.asum_data()<<endl; cout<<"SUMSQ = "<<a.sumsq_data()<<endl; return 0; }
Setup environment variables and compile the example code
$ export CAFFE_ROOT=/home/liudanny/git/caffe
$ export CAFFE_DPKG_INCLUDE=/home/liudanny/local_install/include
$ export CAFFE_DPKG_LIB=/home/liudanny/local_install/lib
$ export LD_LIBRARY_PATH=$CAFFE_ROOT/build/lib/:$LD_LIBRARY_PATH
$ g++ -o app blob_demo.cpp -I $CAFFE_ROOT/include/ -I $CAFFE_DPKG_INCLUDE/ -D CPU_ONLY -I $CAFFE_ROOT/.build_release/src/ -L $CAFFE_ROOT/build/lib/ -L $CAFFE_DPKG_LIB/ -lcaffe -lglog
Run the program app
$ export LD_LIBRARY_PATH=$CAFFE_ROOT/build/lib/:$LD_LIBRARY_PATH
$ ./app
Size : (0)
Size : 1 2 3 4 (24)
a[0][0][0][0] = 0
a[0][0][0][1] = 1
a[0][0][0][2] = 2
a[0][0][0][3] = 3
a[0][0][1][0] = 4
a[0][0][1][1] = 5
a[0][0][1][2] = 6
a[0][0][1][3] = 7
a[0][0][2][0] = 8
a[0][0][2][1] = 9
a[0][0][2][2] = 10
a[0][0][2][3] = 11
a[0][1][0][0] = 12
a[0][1][0][1] = 13
a[0][1][0][2] = 14
a[0][1][0][3] = 15
a[0][1][1][0] = 16
a[0][1][1][1] = 17
a[0][1][1][2] = 18
a[0][1][1][3] = 19
a[0][1][2][0] = 20
a[0][1][2][1] = 21
a[0][1][2][2] = 22
a[0][1][2][3] = 23
ASUM = 276
SUMSQ = 4324
P.S:
I also write a Makefile for all of these tedious work:
I also write a Makefile for all of these tedious work:
CAFFE_ROOT = /home/liudanny/git/caffe
CAFFE_DPKG_INCLUDE = /home/liudanny/local_install/include
CAFFE_DPKG_LIB = /home/liudanny/local_install/lib
CC = g++
CFLAGS = -I $(CAFFE_ROOT)/include/ -I $(CAFFE_DPKG_INCLUDE)/ -D CPU_ONLY -I $(CAFFE_ROOT)/.build_release/src/
LDFLAGS = -L $(CAFFE_ROOT)/build/lib/ -L $(CAFFE_DPKG_LIB)/
LIBS = -lcaffe -lglog
all: app
app: main.o
$(CC) main.o -o app $(LDFLAGS) $(LIBS)
main.o:
$(CC) $(CFLAGS) -c main.cpp
clean:
rm -f main.o app
No comments:
Post a Comment