logo

Highlights

Lausanne 2017Version 4 out and rockingYambo-pyFLASH-IT

Main menu

HomeNewsPeopleDownload
Get the source Installation Compilation
Run the codeInput fileTutorialsDocumentationPublicationsEventsContactsRobots Forum

The Wikipedia Page of Yambo Yambo@Wiki

Fortran cafe The Fortran Cafe'

Bethe-Salpeter wine The Bethe-Salpeter-Equation (BSE) wine

A street entitled to Yambo in Rome
A bar entitled to Yambo in Rome
A bar entitled to Yambo in Rome Yambo road, bar & restaurant

Configuring yambo

yambo has been successfully tested on several common architectures and compilers. The first thing to try is:

./configure 
If configure does not find specific libraries, try playing with the options described in

./configure --help

Yambo version 4

This is a minimal documentation about how to use the configure flags of Yambo version 4. (Thanks to Andrea Ferretti!)

Blas & Lapack

Scalapack & Blacs

iotk

etsf-io

FFT

NetCDF

HDF5

If HDF5 is is needed (e.g. because the external netcdf library requires it) the same options can be used. NO INTERNAL HDF5 exist, so the library must be linked externally.

libXC

Yambo version 3

Useful configuration options

Here are some of the most commonly used configuration flags, for users and/or developers:

Preinstalled Yambo

The GPL version of Yambo is already installed on different HPC systems around the world, here we report some of them:

Suggested machine/compiler configuration options

If the simple ./configure command is not successful, you might have to tweak the options yourself a little to set it up. Below are some configure options that have been used in the past. Of course, since compilers and architectures vary a lot, there are no guarantees that they will work on your system.

Be particularly careful when specifying FCFLAGS, as you may override settings which are necessary for compilation, e.g. -nofor_main with ifort.

EURORA @ CINECA

EURORA is a hybrid supercomputer, with Intel Xeon andyBridge processors and GPU NVIDIA Tesla K20 accelerators

module load autoload/0.1 intel/cs-xe-2013--binary intelmpi/4.1.0--binary mkl/11.0.1--binary gnu/4.6.3 cuda/5.0.35 qe/5.0.3 netcdf/4.1.3--intel--cs-xe-2013--binary hdf5/1.8.9_ser--intel-
-cs-xe-2013--binary szip/2.1--gnu--4.6.3 zlib/1.2.7--gnu--4.6.3
./configure --with-p2y=5.0 \
        --with-iotk=/cineca/prod/build/applications/qe/5.0.3/cuda--5.0.35/BA_WORK/espresso-5.0.3/iotk/ \
        --with-netcdf-lib=/cineca/prod/libraries/netcdf/4.1.3/intel--cs-xe-2013--binary/lib/ \
        --with-netcdf-include=/cineca/prod/libraries/netcdf/4.1.3/intel--cs-xe-2013--binary/include \
        --with-netcdf-link="-L/cineca/prod/libraries/hdf5/1.8.9_ser/intel--cs-xe-2013--binary/lib -L/cineca/prod/libraries/szip/2.1/gnu--4.6.3/lib -lhdf5_fortran -lhdf5_hl -lhdf5 -lnetcdff -lnetcdf -lcurl -lsz -lz"

IBM AIX and xlf

Tested on SP6 at CINECA.
Linking with netCDF, PWscf, FFTW.
Production runs
export CPP=cpp
export CC=xlc_r
export F77=xlf_r
export FC=xlf90_r
export FCFLAGS='-O2 -q64 -qstrict -qarch=pwr6 -qtune=pwr6 -qmaxmem=-1 -qsuffix=f=f'
./configure --build=powerpc-ibm --with-fftw=/cineca/prod/libraries/fftw/3.2.2/xl--10.1/lib 
--with-netcdf-lib=/cineca/prod/libraries/netcdf/4.0.1/xl--10.1/lib 
--with-netcdf-include=/cineca/prod/libraries/netcdf/4.0.1/xl--10.1/include 
--with-iotk=/cineca/prod/build/applications/QuantumESPRESSO/4.1/xl--10.1/BA_WORK/QuantumESPRESSO-4.1/iotk 
--with-p2y=4.0
To compile, use GNU make:
./gmake yambo interfaces

GNU/Linux: ifort

ifort 11.0 with netCDF and iotk/p2y 4.0 support, serial
./configure FC=ifort --with-netcdf-lib=/usr/local/libraries/netcdf/4.0.1/ifort--11.1/lib --with-netcdf-include=
/usr/local/libraries/netcdf/4.0.1/ifort--11.1/include --with-iotk=/opt/espresso/4.1.2/iotk/ --with-p2y=4.0 --with-blacs=no
BLAS, LAPACK and FFTW linked using the mkl libraries
The correct linking path can be found here (thanks to Giovanni Pizzi for this!!!). A typical configure command line that can be used to link the mkl BLAS, LAPACK and FFTW is
./configure FC=ifort \
--with-blas="-L/opt/intel/Compiler/11.1/073/mkl/lib/em64t/ -lmkl_core -lmkl_intel_lp64 -lmkl_sequential" \
--with-lapack="-L/opt/intel/Compiler/11.1/073/mkl/lib/em64t/ -lmkl_core -lmkl_intel_lp64 -lmkl_sequential" \
--with-blacs="-L/opt/intel/Compiler/11.1/073/mkl/lib/em64t/ -lmkl_core -lmkl_intel_lp64 -lmkl_sequential" \
--with-scalapack="-L/opt/intel/Compiler/11.1/073/mkl/lib/em64t/ -lmkl_core -lmkl_intel_lp64 -lmkl_sequential" \
--with-fftw="/opt/intel/Compiler/11.1/073/mkl/lib/em64t/" \
--with-fftw-lib="-lmkl_core -lmkl_intel_lp64 -lmkl_sequential" \
Production runs
FCFLAGS='-O3 -xW -tpp7 -assume bscc -nofor_main' 
LDFLAGS='-xW' --with-blacs=no
./configure FC=mpif90
Debugging runs
./configure --enable-debug FC=mpif90 CFLAGS='-O0 -g'
FCFLAGS='-O0 -tpp7 -C -check noarg_temp_created -w90 -w95 
-assume bscc -nofor_main -g' --with-blacs=no

GNU/Linux: g95

Debugging runs
./configure FC=g95 FCFLAGS='-O0 -fbackslash -g' CFLAGS='-O0 -g -Dextcus -Dextfus' CC=gcc --with-blacs=no
Production runs
./configure FC=g95 FCFLAGS="-O3 -fbackslash -fno-second-underscore"

GNU/Linux: gfortran

Debugging runs
./configure --enable-debug --without-mpi FC=gfortran
FCFLAGS='-O0 -g -fbounds-check' CFLAGS='-O0 -g -Dextcus -Dextfus' 
CC=gcc --with-blacs=no

GNU/Linux: PGI Fortran

./configure FC=pgf95

GNU/Linux: SUN Fortran

./configure FC=f95

GNU/Linux: Pathscale Fortran

./configure FC=pathf90 PFC=mpif90 FCFLAGS="-fno-second-underscore" UFFLAGS="-fno-second-underscore"

GNU/Linux: Open64 Fortran

./configure FC=openf95 FCFLAGS="-fno-second-underscore" UFFLAGS="-fno-second-underscore" 

GNU/Linux using xlf

Tested on Mare nostrum (ppc64)
Production runs
./configure CC=xlc F77=xlf PFC=mpif90 --with-blacs=no
with NETCDF support
./configure CC=xlc F77=xlf PFC=mpif90 \
 --with-netcdf-include=/gpfs/apps/NETCDF/netcdf-3.6.0_64/include \
 --with-netcdf-lib=/gpfs/apps/NETCDF/netcdf-3.6.0_64/lib --with-blacs=no

Magerit (CeSViMa)

Production runs with NetCDF support
./configure PF90=xlf90_r FC=xlf90_r F77=xlf_r CC=xlc_r CPP="cpp -P" \ --with-blas=/gpfs/apps/BLAS/1.0.0/64/lib/libblas.a --with-lapack=/gpfs/apps/LAPACK/3.0/64/liblapack.a \ --with-netcdf-include=/gpfs/apps/NETCDF/3.6.0/64/include --with-netcdf-lib=/gpfs/apps/NETCDF/3.6.0/64/lib \ --with-fftw=/gpfs/apps/FFTW/3.2/64/lib
Default
./configure 

ACML libraries

Production runs
./configure --with-blas=$ACMLPATH/libacml.a --with-lapack=$ACMLPATH/libacml.a
FFT in ACML not supported yet

MKL libraries

Production runs
export MKLROOT=/applis/intel/mkl
export MKLPATH=${MKLROOT}/lib/intel64
export MKLINCLUDE=${MKLROOT}/include
export MKLLIBS="-L${MKLPATH} -I${MKLINCLUDE} -I${MKLINCLUDE}/intel64/lp64 -llapack -lmkl_blas95_lp64 -lmkl_lapack95_lp64 -Wl,--start-group 
                ${MKLPATH}/libmkl_intel_lp64.a ${MKLPATH}/libmkl_sequential.a ${MKLPATH}/libmkl_core.a -Wl,--end-group -lpthread"

./configure FC=ifort F77=ifort --with-blas="$MKLLIBS" --with-lapack="$MKLLIBS"
use this page to determine the exact library version for your system: Intel MKL Link Line Advisor
FFT in MKL are supported through the FFTW interface presents in the latest MKL packages.
--with-fftw="${MKLROOT}/interfaces/fftw3xf/" 
--with-fftw-lib="${MKLROOT}/interfaces/fftw3xf/libfftw3xf_intel.a $MKLLIBS"