GAMBIT is hosted by Hepforge, IPPP Durham
GAMBIT logo

GAMBIT

Configuration examples

Instructions for configuring and compiling GAMBIT can be found in the original paper describing the code arXiv:1705.07908. This page contains specific cmake tweaks and environment variable hacks that have been useful for configuring and building GAMBIT in more restricted environments, such as large clusters.

lxplus6 (CERN) with LCG compilers

The native SL6 compiler (GCC 4.4) and Boost library (1.41) are very old and not sufficient to build Gambit. Rather than manually install a full build chain, which is full of extra pitfalls, it's easiest to use the LCG package bundles like the LHC experiments do.

Dependencies:

wget http://bitbucket.org/eigen/eigen/get/3.3.3.tar.gz -O- | tar xz
ln -s eigen-eigen-* eigen-3.3.3
wget http://pyyaml.org/download/pyyaml/PyYAML-3.11.tar.gz -O- | tar xz

Environment setup (for compile and runtime):

source /cvmfs/sft.cern.ch/lcg/releases/LCG_88/gcc/6.2.0/x86_64-slc6/setup.sh
export PYTHONPATH="$PWD/PyYAML-3.11/lib:$PYTHONPATH"

Check out gambit and then do CMake config:

cd gambit/
mkdir build && cd build/
cmake .. -DCMAKE_BUILD_TYPE=Release -Ditch=delphes -DEIGEN3_INCLUDE_DIR=$PWD/../../eigen-3.3.3 -DBOOST_INCLUDEDIR=/cvmfs/sft.cern.ch/lcg/releases/LCG_88/Boost/1.62.0/x86_64-slc6-gcc62-opt/include/boost-1_62/  -DBOOST_LIBRARYDIR=/cvmfs/sft.cern.ch/lcg/releases/LCG_88/Boost/1.62.0/x86_64-slc6-gcc62-opt/lib/  -DCMAKE_CXX_COMPILER=$(which g++) -DCMAKE_C_COMPILER=$(which gcc) -DCMAKE_Fortran_COMPILER=$(which gfortran)

lxplus7 (CERN) with LCG compilers

The native CentOS 7 compiler is sufficient, but the Boost library version (1.41) is not, hence an LCG environment is again needed.

Get dependencies:

wget http://bitbucket.org/eigen/eigen/get/3.3.3.tar.gz -O- | tar xz
ln -s eigen-eigen-* eigen-3.3.3
wget http://pyyaml.org/download/pyyaml/PyYAML-3.11.tar.gz -O- | tar xz

Environment setup (for compile and runtime):

source /cvmfs/sft.cern.ch/lcg/releases/LCG_88/gcc/6.2.0/x86_64-centos7/setup.sh
export PYTHONPATH="$PWD/PyYAML-3.11/lib:$PYTHONPATH"

Check out gambit and then do CMake config:

cd gambit/
mkdir build && cd build/
cmake .. -DCMAKE_BUILD_TYPE=Release -Ditch=delphes -DEIGEN3_INCLUDE_DIR=$PWD/../../eigen-3.3.3 -DBOOST_INCLUDEDIR=/cvmfs/sft.cern.ch/lcg/releases/LCG_88/Boost/1.62.0/x86_64-centos7-gcc62-opt/include/boost-1_62/  -DBOOST_LIBRARYDIR=/cvmfs/sft.cern.ch/lcg/releases/LCG_88/Boost/1.62.0/x86_64-centos7-gcc62-opt/lib/  -DCMAKE_CXX_COMPILER=$(which g++) -DCMAKE_C_COMPILER=$(which gcc) -DCMAKE_Fortran_COMPILER=$(which gfortran)

cx-2/helen (Imperial)

module load git gcc/4.9.1 gsl cmake/2.8.12.2 boost anaconda intel-suite/2016 mpi/mpt-2.12 hdf5/1.8.14-serial
cmake -DCMAKE_BUILD_TYPE=Release ..

Cartesius (Amsterdam)

With GNU compilers:
module load python root gsl blas lapack gcc cmake/3.2.2 boost
export PATH=$PATH:$SURFSARA_BIN_PATH
CMAKE_PREFIX_PATH=$SURFSARA_GSL_ROOT CMAKE_LIBRARY_PATH=$SURFSARA_LIBRARY_PATH cmake -D CMAKE_CXX_COMPILER=g++ -D CMAKE_C_COMPILER=gcc -D CMAKE_Fortran_COMPILER=gfortran ../

Phoenix (Adelaide)

cmake -Ditch="Delphes" -DCMAKE_Fortran_COMPILER=mpiifort -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DCMAKE_BUILD_TYPE=Release ..

Zeus (Poland)

GNU:
module load el6/tools/python libs/hdf5
cmake -D CMAKE_CXX_COMPILER=g++ -D CMAKE_C_COMPILER=gcc -D CMAKE_Fortran_COMPILER=gfortran ../
cmake ../
Intel:
module load intel/16.0.1 impi libs/hdf5 el6/tools/python
# Get rid of the other MPI lib (loaded as a dependency of el6/tools/python)
module unload tools/openmpi/1.6.5-gnu-4.8.2-ib
cmake -D CMAKE_CXX_COMPILER=icpc -D CMAKE_C_COMPILER=icc -D CMAKE_Fortran_COMPILER=ifort ..

Prometheus (Poland) with Intel 2016 compilers

Get Eigen and put it in your home directory:
wget http://bitbucket.org/eigen/eigen/get/3.3.3.tar.gz
tar xvzf 3.3.3.tar.gz
Build:
module load plgrid/tools/python/2.7.9 plgrid/tools/cmake/3.3.2 plgrid/libs/boost/1.58.0 plgrid/libs/gsl/1.16 plgrid/libs/hdf5/1.8.16 plgrid/tools/intel/16.0.1 plgrid/libs/mkl/11.3.3
cmake -D EIGEN3_INCLUDE_DIR=~/eigen-eigen-67e894c6cd8f -D CMAKE_CXX_COMPILER=icpc -D CMAKE_C_COMPILER=icc -D CMAKE_Fortran_COMPILER=ifort -D CMAKE_BUILD_TYPE=Release .. 
make -j scanners
cmake ..
make -j
make -j backends
make -j backends-nonfree

Abel (Oslo) with Intel compilers

Abel runs 64 bit CentOS 6. To start compiling, first load a consistent set of libraries:
module purge
module load cmake/3.1.0 python2/2.7.10 gsl/1.16 boost/1.60.0-intel gcc/4.9.0
Loading the gcc is needed because the intel compilers rely on the std library. Version 4.9 is the most recent version compatible with the (implicitly) loaded intel 2015.3. Then do the usual compile as per the manual, but Abel needs to be told specifically to use intel for C and Fortran:
cmake -DCMAKE_C_COMPILER=icc -DCMAKE_Fortran_COMPILER=ifort ..
All of this is best done as an interactive job so as not to time out. From an Abel command prompt, run:
qlogin --account=UiO --ntasks=10 --time=02:00:00 --mem-per-cpu=10000
Wait for resources before running the set-up command:
source /cluster/bin/jobsetup
You are then ready to compile as per the above.