Skip to content
Christos Psarras edited this page Oct 25, 2020 · 39 revisions

Welcome to the LAMP benchmark wiki!

Here I will document the versions of the languages / libraries / frameworks used, as well as their installation instructions.

Requirements

  • GNU GCC: 8.2.0
  • Intel MKL: 19.0
  • CMake: 3.16.4

Pre-configuration

Add the following lines to ${HOME}/.zshrc:

# Environment variables
export CC=gcc-8
export CXX=g++-8
export LOCAL_INSTALL_DIR=${HOME}/.local
export PATH=${LOCAL_INSTALL_DIR}/bin:${PATH}
export LD_LIBRARY_PATH=${LOCAL_INSTALL_DIR}:${LD_LIBRARY_PATH}

# LAMP specific variables
export LAMP_EXPERIMENTS=${HOME}/projects/LAMP_benchmark
export LAMP_REPS=20
export LAMP_m=3000
export LAMP_k=550
export LAMP_n=3000
export LAMP_tr_n=80
export LAMP_rhs_small=100
export LAMP_rhs_large=6000
export LAMP_p_n=1500
export LAMP_OUTPUT_DIR="results/"
export LAMP_L3_CACHE_SIZE="7500000"

# Octave
export octave="${LOCAL_INSTALL_DIR}/bin/octave-cli"

# Julia
export JULIA_DIR=${LOCAL_INSTALL_DIR}/julia
export JULIA=${JULIA_DIR}/julia
alias julia="${JULIA}"

# R
export R_SCRIPT=${LOCAL_INSTALL_DIR}/lib64/R/bin/Rscript
export R_PACK=${LOCAL_INSTALL_DIR}/lib64/R/packages
export R=${LOCAL_INSTALL_DIR}/lib64/R/bin/R
alias R="${LOCAL_INSTALL_DIR}/lib64/R/bin/R"

# Python
export MKL_PYTHON=python3
alias pythoni3="python3"

RWTH Cluster extras:

module switch intel gcc/8
module load LIBRARIES
module load intelmkl/2019
module load cmake/3.16.4

Armadillo

  • Version: 10.1.x
  • Old Version: 9.800.x

Create build directory and run:

git clone  git clone https://gitlab.com/conradsnicta/armadillo-code.git ${LOCAL_INSTALL_DIR}/src/armadillo
cd ${LOCAL_INSTALL_DIR}/src/armadillo && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${LOCAL_INSTALL_DIR}" ..
make install -j 48

Note: This is a template library. Compilation flags added in Makefile of experiments.

Eigen

  • Version: 3.3.8
  • Old Version: 3.3.7

Create build directory and run:

git clone https://gitlab.com/libeigen/eigen.git ${LOCAL_INSTALL_DIR}/src/eigen
cd ${LOCAL_INSTALL_DIR}/src/eigen && mkdir build && cd build
git checkout 3.3.8
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$LOCAL_INSTALL_DIR" ..
make install -j 48

Note: This is a template library. Compilation flags added in Makefile of experiments.

GNU Octave

  • Version: 5.2.0
  • Old Version: 5.1.0
wget http://mirrors.kernel.org/gnu/octave/octave-5.2.0.tar.gz -qO- | tar xzvf - -C ${LOCAL_INSTALL_DIR}/src
cd ${LOCAL_INSTALL_DIR}/src/octave-5.2.0
export CFLAGS="-O3 -fPIC -DMKL_LP64 -DM_PI=3.1415926535897932384"
export FFLAGS="-O3 -fPIC"
export CPPFLAGS="-I$MKLROOT/include -I$MKLROOT/include/fftw"
export LDFLAGS="-L$MKLROOT/lib/intel64 -L$MKLROOT/../compiler/lib/intel64"
export LD_LIBRARY_PATH="$MKLROOT/lib/intel64:$MKLROOT/../compiler/lib/intel64:$LD_LIBRARY_PATH"

export MKL="-fopenmp -m64 -I$MKLROOT/include -L$MKLROOT/lib/intel64 -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -lpthread -lm"
#export MKL="-fopenmp -m64 -I$MKLROOT/include -L$MKLROOT/lib/intel64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm"
./configure --prefix="$LOCAL_INSTALL_DIR" \
            --with-blas="${MKL}" \
            --with-lapack="${MKL}" \
            --with-fftw3="${MKL}" \
            --with-fftw3f="${MKL}" \
            --disable-java
make install -j 24

R

  • Version: 4.0.3
  • Old Version: 3.6.1
wget https://cran.r-project.org/src/base/R-4/R-4.0.3.tar.gz -qO- | tar xzvf - -C ${LOCAL_INSTALL_DIR}/src
cd ${LOCAL_INSTALL_DIR}/src/R-4.0.3

Prerequisites

sudo apt install build-essential\
 zlib1g-dev                     \
 libbz2-dev                     \
 liblzma-dev                    \
 libpcre2-dev                   \
 libreadline-dev                \
 libpcre3-dev                   \
 libcurl4-openssl-dev

Install

export MKL="-fopenmp -m64 -I$MKLROOT/include -L$MKLROOT/lib/intel64 -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -lpthread -lm"
./configure --prefix=${LOCAL_INSTALL_DIR} --with-x=no --enable-R-shlib --enable-threads=posix --with-lapack --with-blas="${MKL}"
make install -j 24

Single Threaded

export MKL="-fopenmp -m64 -I$MKLROOT/include -L$MKLROOT/lib/intel64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm"
./configure --prefix=${LOCAL_INSTALL_DIR} --with-x=no --enable-R-shlib --with-lapack --with-blas="${MKL}"
make install -j 24

ICC (Old and untested)

export CC="icc"
export CXX="icpc"
export F77="ifort"
export FC="ifort"
export AR="xiar"
export LD="xild"

export MKL="-lmkl_rt -liomp5 -lpthread"
echo $MKL
./configure --prefix=${LOCAL_INSTALL_DIR} --with-blas="$MKL" --with-lapack --enable-R-shlib --with-x=no 
make install -j 24

MATLAB

  • Version: 2019a

Julia

  • Version: 1.5.2
  • Old Version: 1.1.0
git clone https://github.com/JuliaLang/julia.git ${LOCAL_INSTALL_DIR}/julia
cd ${LOCAL_INSTALL_DIR}/julia
git checkout v1.5.2
echo "USE_INTEL_MKL = 1" > ${LOCAL_INSTALL_DIR}/julia/Make.user
make -j 48
Clone this wiki locally