Navigation and service

Usage of Elemental on JUWELS

Elemental 0.87.7 is available on JUWELS as a hybrid MPI and pthreads? version. It is available with Intel compiler and ParaStationMPI and IntelMPI. There is no version with GCC available because the patches for GCC do not apply to the released version of Elemental 0.87.7 but to a later "master" version.

Elemental needs MKL for computation. MKL is loaded automatically.
This version is patched so that the usage of range=I in HermitianEig is possible with DivideAndConquer and with QR. With pmrrr it still crashes when calling HermitianEig with a range of eigenvalues smaller than the full eigenspectrum.

Compiling and linking a C++ program name.cpp calling Elemental routines looks as follows:

module load intel-para
module load Elemental/0.87.7
mpicc -std=c++11 -o name name.cpp -I$ELEMENTAL_ROOT/include -I$ELEMENTAL_ROOT/include/El \
-L$ELEMENTAL_ROOT/lib -lEl -L$MKLROOT/lib/intel64 \
-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread \
-ldl -lrt

Examples: Examples can be found in several subdirectories of $ELEMENTAL_ROOT/examples.
For some examples you have to link additional libraries, for HermitianEig.cpp you need -lpmrrr, for other examples you need -lmetis