UbuntuOboe
This page descibes step-by-step the compilation of OBOE on a linux distribution. Even if the compilation has been done on UBUNTU, it is a good starting point for any other linux distributions.
Install the necessary to compile (gcc and so on)
sudo apt-get install build-essential
If you want to activate the serialization feature:
sudo apt-get install libboost-dev
sudo apt-get install liblapack-dev libblas-dev libatlas-base-dev
wget http://kent.dl.sourceforge.net/sourceforge/lapackpp/lapackpp-2.5.1.tar.gz
tar zxvf lapackpp-2.5.1.tar.gz
cd lapackpp-2.5.1
./configure
make
sudo make install
sudo ln -s /usr/local/include/lapackpp /usr/local/include/lapackpp/include
For gcc > 4.3 (ubuntu 8.10+), if you have the following error:
vtmpl.h:75: error: 'memcpy' was not declared in this scope
You must add the following line in the include section of matrix/src/vtmpl.h
#include <cstring>
svn co https://projects.coin-or.org/svn/OBOE/trunk OBOE
cd OBOE
For gcc > 4.3 (ubuntu 8.10+), You must add the following lines in the include section of include/AccpmDefs.h and src/Utilities/AccpmDefs.h
#include <cstring>
#include <cstdlib>
OBOE needs to know where are located the BLAS, LAPACK and LAPACK++ libraries, so define some variables.
export BLAS=/usr/lib/libblas.a
export LAPACK=/usr/lib/liblapack.a
export LAPACKCPP_DIR=/usr/local/include/lapackpp
export LAPACKCPP_LIB=/usr/local/lib/liblapackpp.la
./configure
make
make install
If you want to enable the serialization feature, you must add the following line in the config.h file
#define SERIALIZATION 1
then modify the ./configure statement
./configure --enable-serialization=yes
and ignore any warnings.
The libraries are located in the lib directory. You can create the library liboboe.a that contains all the libraries with
./create_oboe_lib.sh
Compile the examples:
make check
The examples are located in src/Benchmark directory. The README file details the problems solved by the examples. You may need to add the library path of LAPACK++ in the search path:
export LD_LIBRARY_PATH=/usr/local/lib
Some major improvements in computation efficiency may be done by compiling yourself the BLAS, LAPACK and LAPACK++ libraries to match the characteristics of your processor such as SSE2 instructions, multi-core... Once you have compiled these libraries, you shall adapt the ./configure directives for OBOE compilation.