Skip to content

Compiling on Jureca

Bartosz Kostrzewa edited this page May 19, 2017 · 7 revisions

As of May 15th 2017, compilation on Jureca works well as follows.

Modules

There were issues with Intel MPI in the past, so Parastation MPI is recommended right now. The required set of modules may be loaded via:

$ module load intel-para flex

which should result in the following list of modules being loaded:

  1) GCCcore/.5.4.0 (H)   4) icc/.2017.2.174-GCC-5.4.0   (H)   7) pscom/.Default         (H)  10) intel-para/2017a
  2) binutils/.2.28 (H)   5) ifort/.2017.2.174-GCC-5.4.0 (H)   8) ParaStationMPI/5.1.9-1      11) Bison/.3.0.4     (H)
  3) StdEnv         (H)   6) Intel/2017.2.174-GCC-5.4.0        9) imkl/2017.2.174             12) flex/2.6.3

Configuring and compiling tmLQCD

Having compiled and installed lime and lemon with the above module set, one can proceed to configure and compile tmLQCD.

Without multi-threading

tmLQCD is generally fastest on (Intel Xeon & [fat,pruned]-tree network) without multi-threading, although threads can be used to significantly extend the strong-scaling region, if necessary.

$ cd ${path_to_tmlqcd_sources}
$ autoconf
$ mkdir build
$ cd build
$ ../configure --with-limedir=${lime_install_dir} --with-lemondir=${lemon_install_dir} \
--with-mpidimension=4 --disable-omp --enable-mpi --disable-sse2 --disable-sse3 \
--with-lapack="-Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_sequential.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm -ldl" \
--enable-halfspinor --enable-gaugecopy \
CC=mpicc CFLAGS="-O3 -xCORE-AVX2 -fma -std=c99"
$ make -j8

With multi-threading

$ cd ${path_to_tmlqcd_sources}
$ autoconf
$ mkdir build
$ cd build
$ ../configure --with-limedir=${lime_install_dir} --with-lemondir=${lemon_install_dir} \
--with-mpidimension=4 --enable-omp --enable-mpi --disable-sse2 --disable-sse3 \
--with-lapack="-Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -liomp5 -lpthread -lm -ldl" \
--enable-halfspinor --enable-gaugecopy \
CC=mpicc CFLAGS="-O3 -xCORE-AVX2 -fma -std=c99"
$ make -j8