diff --git a/MPI/elpa/build b/MPI/elpa/build new file mode 100755 index 0000000..6643161 --- /dev/null +++ b/MPI/elpa/build @@ -0,0 +1,72 @@ +#!/usr/bin/env modbuild + +pbuild::set_download_url "http://elpa.mpcdf.mpg.de/html/Releases/${V_PKG}/$P-${V_PKG}.tar.gz" +pbuild::add_to_group 'MPI' +pbuild::use_autotools +pbuild::install_docfiles 'COPYING/COPYING' +pbuild::install_docfiles 'COPYING/gpl.txt' +pbuild::install_docfiles 'COPYING/lgpl.txt' + +pbuild::supported_os Linux +pbuild::supported_compilers Intel + +pbuild::pre_configure() { + local -r MKL_LIBRARY_DIR=${MKLROOT}/lib/intel64 + local -r MKL_INCLUDE_DIR=${MKLROOT}/include + + local -a flags=() + if pbuild::use_flag "omp"; then + flags+=('-qopenmp') + pbuild::add_configure_args "--enable-openmp" + else + flags+=('-qno-openmp') + fi + flags+=('-O2' '-fPIC' '-g') + flags+=('-fp-model precise' '-funroll-loops') + flags+=('-traceback' '-xHost') + + local -a cflags=() + cflags+=("${flags[@]}") + cflags+=('-I${MKL_INCLUDE_DIR}') + + local -a fcflags=() + fcflags+=("${flags[@]}") + fcflags+=( '-fpp' '-free') + fcflags+=("-I${MKL_INCLUDE_DIR}/intel64/lp64") + + local -a ldflags=() + ldflags+=("-L${MKL_LIBRARY_DIR}") + ldflags+=('-lmkl_scalapack_lp64' '-lmkl_intel_lp64' '-lmkl_sequential') + ldflags+=('-lmkl_core' '-lmkl_blacs_intelmpi_lp64' '-lpthread') + + local -a scalapack_fcflags=() + scalapack_fcflags+=( "${ldflags[@]}" ) + scalapack_fcflags+=("-I${MKL_INCLUDE_DIR}/intel64/lp64") + + local -a scalapack_ldflags=() + scalapack_ldflags+=( "${ldflags[@]}" ) + scalapack_ldflags+=("-Wl,-rpath,${MKL_LIBRARY_DIR}") + + pbuild::add_configure_args "CC=${MPICC}" + pbuild::add_configure_args "CXX=${MPICXX}" + pbuild::add_configure_args "FC=${MPIFC}" + pbuild::add_configure_args "CFLAGS=${cflags[*]}" + pbuild::add_configure_args "CXXFLAGS=${cflags[*]}" + pbuild::add_configure_args "FCFLAGS=${fcflags[*]}" + pbuild::add_configure_args "LDFLAGS=${ldflags[*]}" + pbuild::add_configure_args "SCALAPACK_FCFLAGS=${scalapack_fcflags[*]}" + pbuild::add_configure_args "SCALAPACK_LDLAGS=${scalapack_ldflags[*]}" + pbuild::add_configure_args "--disable-shared" + pbuild::add_configure_args "--enable-static" + pbuild::add_configure_args "--enable-avx512" +} + +pbuild::post_install() { + if pbuild::use_flag "omp"; then + ln -fs "elpa_openmp-${V_PKG}/elpa" "${PREFIX}/include/elpa" + ln -fs "elpa_openmp-${V_PKG}/modules" "${PREFIX}/include/modules" + else + ln -fs "elpa-${V_PKG}/elpa" "${PREFIX}/include/elpa" + ln -fs "elpa-${V_PKG}/modules" "${PREFIX}/include/modules" + fi +} diff --git a/MPI/elpa/files/variants.rhel6 b/MPI/elpa/files/variants.rhel6 new file mode 100644 index 0000000..f25fd61 --- /dev/null +++ b/MPI/elpa/files/variants.rhel6 @@ -0,0 +1,2 @@ +elpa/2019.05.001 unstable intel/19.4 impi/19.4 +elpa/2019.05.001_omp unstable intel/19.4 impi/19.4 diff --git a/MPI/elpa/modulefile b/MPI/elpa/modulefile new file mode 100644 index 0000000..539972a --- /dev/null +++ b/MPI/elpa/modulefile @@ -0,0 +1,36 @@ +#%Module1.0 + +module-whatis "Eigenvalue SoLvers for Petaflop-Applications" +module-url "https://elpa.mpcdf.mpg.de" +module-license "GNU LGPL, version 3" +module-maintainer "Achim Gsell " +module-help " +The computation of selected or all eigenvalues and eigenvectors of a +symmetric (Hermitian) matrix has high relevance for various scientific +disciplines. + +For the calculation of a significant part of the eigensystem typically +direct eigensolvers are used. For large problems, the eigensystem +calculations with existing solvers can become the computational +bottleneck. + +As a consequence, the ELPA project was initiated with the aim to +develop and implement an efficient eigenvalue solver for petaflop +applications, supported by the German Federal Government, through +BMBF Grant 01IH08007, from Dec 2008 to Nov 2011. + +The challenging task has been addressed through a multi-disciplinary +consortium of partners with complementary skills in different areas. + +As project outcome, the highly scalable and efficient direct eigen- +solvers LPA have been developed. The ELPA library was publicly +released in May 2011. + +Since the end of BMBF Grant 01IH08007 in Nov 2011, the ELPA library +has been maintained by RZG - renamed to MPCDF in 2015. + +Through the BMBF Grant 01IH15001 (Project ELPA-AEO from Feb 2016 to +Jan 2019) the ELPA library could be further optimized, enhanced and +ported to new architectures. +" +