/experiments

Primary LanguageC++MIT LicenseMIT

Reproducing Results for 112018-00062

This document walks through the necessary steps to reproduce the results reported in paper #112018-00062 submitted for possible publication in Mathematical Programming Computation. Hence, the below bash commands are written for their servers, and should be modified accordingly for other *nix platforms.

We assume that the host machine has the following installed:

  • curl, configure and make for building CMake,
  • a toolchain that supports C++11 for building and using POLO,
  • boost's program_options module for building the test scripts,
  • curl and bunzip2 for downloading and unpacking the rcv1 dataset, and,
  • pdflatex with mathtools and pgfplots packages for generating the figures.

Initial Setup

Before anything else, we should make a local directory under $HOME that contains binaries, libraries and configuration files of local installations of the programs:

mkdir -p $HOME/local/{bin,etc,include,lib,share}
ln -s lib $HOME/local/lib64

Then, we should modify $HOME/.bash_profile so that the environment variables PATH and LD_LIBRARY_PATH point to the correct locations:

# $HOME/.bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$HOME/local/bin:$PATH
export PATH

LD_LIBRARY_PATH=$HOME/local/lib
export LD_LIBRARY_PATH

After saving the file, we need to source $HOME/.bash_profile to make the changes valid for the current session.

NOTE. On some systems, we might need to set DYLD_FALLBACK_LIBRARY_PATH instead of LD_LIBRARY_PATH above.

Now that we have setup the paths, we can proceed with the installation of CMake. POLO requires CMake (at least v3.9.0) to install its headers and C-API while managing its dependencies. Moreover, this repository also contains a superbuild CMake file to automate the dependency management and generation of the figures. To install CMake from source, we issue the following on the terminal:

# Build and install CMake from source
curl --output /tmp/cmake.tar.gz   \
  https://gitlab.kitware.com/cmake/cmake/-/archive/v3.9.0/cmake-v3.9.0.tar.gz
tar xzf /tmp/cmake.tar.gz -C /tmp
cd /tmp/cmake-v3.9.0
./configure --prefix=$HOME/local  \
            --datadir=share/cmake \
            --docdir=doc/cmake    \
            --no-qt-gui
make
make install

NOTE. At this point, we might need to logoff and login back to make environment changes valid so that which cmake points to the local installation with cmake --version reporting 3.9.0.

Experiments

Having successfully installed CMake, we finaly clone this repository and initiate the superbuild:

git clone https://github.com/pologrp/experiments $HOME/experiments
mkdir $HOME/experiments/build
cd $HOME/experiments/build
cmake -D CMAKE_INSTALL_PREFIX=$HOME/local ../
cmake --build .

to

When the superbuild finishes, we should find a figures.pdf file under $HOME/experiments/build/external/BUILD/experiments.