From 42114efddb61dec5695cd39434e0d19d9305097a Mon Sep 17 00:00:00 2001 From: Damian Alvarez <swmanage@juwels02.ib.juwels.fzj.de> Date: Fri, 14 Feb 2020 15:59:56 +0100 Subject: [PATCH] General update, including new MNS --- Custom_EasyBlocks/2019a/boost.py | 272 ++++++++++++++++++ Custom_EasyBlocks/2019a/elpa.py | 1 + .../versionindependentpythonpackage.py | 101 +++++++ Custom_EasyBlocks/2019a/pgi.py | 12 +- Custom_EasyBlocks/2019a/psmpi.py | 20 +- Custom_MNS/2019a/custom_hierarchical_mns.py | 1 + .../2019a/flexible_custom_hierarchical_mns.py | 26 ++ ....69.0-gmvapich2c-2019a-GDR-Python-3.6.8.eb | 30 ++ Golden_Repo/2019a/c/CUDA/CUDA-10.1.105.eb | 2 +- .../2019a/e/EasyBuild/EasyBuild-3.9.4.eb | 45 +++ .../2019a/i/icc/icc-2019.5.281-GCC-8.3.0.eb | 38 +++ .../iccifort/iccifort-2019.5.281-GCC-8.3.0.eb | 29 ++ .../i/ifort/ifort-2019.5.281-GCC-8.3.0.eb | 36 +++ .../impi-settings-2019-UCX-UD.eb | 25 ++ .../impi-settings-2019-default.eb | 25 ++ .../impi-settings-2019-large-job-hybrid.eb | 25 ++ .../impi-settings-2019-large-job-mpi.eb | 25 ++ ...018.5.288-iccifort-2019.3.199-GCC-8.3.0.eb | 24 +- ...019.3.199-iccifort-2019.3.199-GCC-8.3.0.eb | 15 +- ...019.6.154-iccifort-2019.5.281-GCC-8.3.0.eb | 48 ++++ .../c/CDO/CDO-1.9.5-ipsmpi-2019a.eb | 34 +++ .../GSL-2.5-iccifort-2019.5.281-GCC-8.3.0.eb | 22 ++ .../jusuf_overlay/i/iimpi/iimpi-2019a.eb | 24 ++ .../i/imkl/imkl-2019.5.281-iimpi-2019a.eb | 32 +++ .../i/imkl/imkl-2019.5.281-ipsmpi-2019a-mt.eb | 32 +++ .../i/imkl/imkl-2019.5.281-ipsmpi-2019a.eb | 32 +++ .../jusuf_overlay/i/imkl/imkl-2019.5.281.eb | 36 +++ .../i/intel-para/intel-para-2019a-mt.eb | 27 ++ .../i/intel-para/intel-para-2019a.eb | 27 ++ .../jusuf_overlay/i/ipsmpi/ipsmpi-2019a-mt.eb | 24 ++ .../jusuf_overlay/i/ipsmpi/ipsmpi-2019a.eb | 23 ++ .../2019a/jusuf_overlay/j/JUBE/JUBE-2.3.0.eb | 32 +++ ...bxc-3.0.1-iccifort-2019.5.281-GCC-8.3.0.eb | 35 +++ .../jusuf_overlay/n/nvidia/nvidia-driver.eb | 32 +++ .../p/pscom/pscom-Default-GCCcore-8.3.0.eb | 41 +++ .../p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb | 35 +++ ....2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb | 36 +++ ...i-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb | 35 +++ ....2.2-1-iccifort-2019.5.281-GCC-8.3.0-mt.eb | 36 +++ ...i-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0.eb | 35 +++ ...TS-2.2.26-iccifort-2019.5.281-GCC-8.3.0.eb | 41 +++ .../MVAPICH2/MVAPICH2-2.3.3-GCC-8.3.0-GDR.eb | 106 +++++++ .../MVAPICH2-2.3.3-PGI-19.3-GCC-8.3.0-GDR.eb | 121 ++++++++ .../impi-settings-2019-default.eb | 25 ++ ...019.3.199-iccifort-2019.3.199-GCC-8.3.0.eb | 15 +- .../psmpi-settings-5.2-default.eb | 23 ++ .../psmpi-settings-5.2-mt-default.eb | 23 ++ .../p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb | 12 +- ....2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb | 12 +- ...i-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb | 12 +- ...xsmm-1.14-iccifort-2019.3.199-GCC-8.3.0.eb | 34 +++ .../MVAPICH2-2.3-GDR-default.eb | 26 ++ .../MVAPICH2/MVAPICH2-2.3.2-GCC-8.3.0-GDR.eb | 12 +- .../MVAPICH2-2.3.2-PGI-19.3-GCC-8.3.0-GDR.eb | 12 +- .../MVAPICH2/MVAPICH2-2.3.3-GCC-8.3.0-GDR.eb | 103 +++++++ .../MVAPICH2-2.3.3-PGI-19.3-GCC-8.3.0-GDR.eb | 118 ++++++++ Golden_Repo/2019a/n/nvidia/nvidia-driver.eb | 32 +++ .../2019a/p/PGI/PGI-19.10-GCC-8.3.0.eb | 39 +++ .../p/PLUMED/PLUMED-2.5.3-intel-2019a.eb | 50 ++++ .../p/PLUMED/PLUMED-2.5.3-intel-para-2019a.eb | 50 ++++ .../2019a/p/pscom/pscom-5.2-default.eb | 36 +++ .../psmpi-settings-5.2-UCX-RC.eb | 23 ++ .../psmpi-settings-5.2-UCX-UD.eb | 23 ++ .../psmpi-settings-5.2-default.eb | 18 ++ .../psmpi-settings-5.2-large-job-hybrid.eb | 23 ++ .../psmpi-settings-5.2-large-job-mpi.eb | 24 ++ .../psmpi-settings-5.2-mt-UCX-RC.eb | 23 ++ .../psmpi-settings-5.2-mt-UCX-UD.eb | 23 ++ .../psmpi-settings-5.2-mt-default.eb | 18 ++ .../psmpi-settings-5.2-mt-large-job-hybrid.eb | 23 ++ .../psmpi-settings-5.2-mt-large-job-mpi.eb | 24 ++ .../2019a/p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb | 11 +- ....2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb | 11 +- ...i-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb | 11 +- ...i-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0.eb | 44 +++ .../2019a/u/UCX/UCX-1.5.1-GCCcore-8.3.0.eb | 10 +- .../2019a/u/UCX/UCX-1.6.1-GCCcore-8.3.0.eb | 70 +++++ .../2019a/u/UCX/UCX-1.7.0-GCCcore-8.3.0.eb | 70 +++++ .../u/UCX/UCX-1.7.0-rc1-GCCcore-8.3.0.eb | 70 +++++ Golden_Repo/2019a/u/UCX/UCX-libibcm.patch | 20 ++ 80 files changed, 2785 insertions(+), 86 deletions(-) create mode 100644 Custom_EasyBlocks/2019a/boost.py create mode 100644 Custom_EasyBlocks/2019a/generic/versionindependentpythonpackage.py create mode 100644 Golden_Repo/2019a/b/Boost/Boost-1.69.0-gmvapich2c-2019a-GDR-Python-3.6.8.eb create mode 100644 Golden_Repo/2019a/e/EasyBuild/EasyBuild-3.9.4.eb create mode 100644 Golden_Repo/2019a/i/icc/icc-2019.5.281-GCC-8.3.0.eb create mode 100644 Golden_Repo/2019a/i/iccifort/iccifort-2019.5.281-GCC-8.3.0.eb create mode 100644 Golden_Repo/2019a/i/ifort/ifort-2019.5.281-GCC-8.3.0.eb create mode 100644 Golden_Repo/2019a/i/impi-settings/impi-settings-2019-UCX-UD.eb create mode 100644 Golden_Repo/2019a/i/impi-settings/impi-settings-2019-default.eb create mode 100644 Golden_Repo/2019a/i/impi-settings/impi-settings-2019-large-job-hybrid.eb create mode 100644 Golden_Repo/2019a/i/impi-settings/impi-settings-2019-large-job-mpi.eb create mode 100644 Golden_Repo/2019a/i/impi/impi-2019.6.154-iccifort-2019.5.281-GCC-8.3.0.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/c/CDO/CDO-1.9.5-ipsmpi-2019a.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/g/GSL/GSL-2.5-iccifort-2019.5.281-GCC-8.3.0.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/i/iimpi/iimpi-2019a.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281-iimpi-2019a.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281-ipsmpi-2019a-mt.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281-ipsmpi-2019a.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/i/intel-para/intel-para-2019a-mt.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/i/intel-para/intel-para-2019a.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/i/ipsmpi/ipsmpi-2019a-mt.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/i/ipsmpi/ipsmpi-2019a.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/j/JUBE/JUBE-2.3.0.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/l/libxc/libxc-3.0.1-iccifort-2019.5.281-GCC-8.3.0.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/n/nvidia/nvidia-driver.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/p/pscom/pscom-Default-GCCcore-8.3.0.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0-mt.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0.eb create mode 100644 Golden_Repo/2019a/jusuf_overlay/u/UDUNITS/UDUNITS-2.2.26-iccifort-2019.5.281-GCC-8.3.0.eb create mode 100644 Golden_Repo/2019a/juwels_overlay/m/MVAPICH2/MVAPICH2-2.3.3-GCC-8.3.0-GDR.eb create mode 100644 Golden_Repo/2019a/juwels_overlay/m/MVAPICH2/MVAPICH2-2.3.3-PGI-19.3-GCC-8.3.0-GDR.eb create mode 100644 Golden_Repo/2019a/knl_overlay/i/impi-settings/impi-settings-2019-default.eb create mode 100644 Golden_Repo/2019a/knl_overlay/p/psmpi-settings/psmpi-settings-5.2-default.eb create mode 100644 Golden_Repo/2019a/knl_overlay/p/psmpi-settings/psmpi-settings-5.2-mt-default.eb create mode 100644 Golden_Repo/2019a/l/libxsmm/libxsmm-1.14-iccifort-2019.3.199-GCC-8.3.0.eb create mode 100644 Golden_Repo/2019a/m/MVAPICH2-settings/MVAPICH2-2.3-GDR-default.eb create mode 100644 Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.3-GCC-8.3.0-GDR.eb create mode 100644 Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.3-PGI-19.3-GCC-8.3.0-GDR.eb create mode 100644 Golden_Repo/2019a/n/nvidia/nvidia-driver.eb create mode 100644 Golden_Repo/2019a/p/PGI/PGI-19.10-GCC-8.3.0.eb create mode 100644 Golden_Repo/2019a/p/PLUMED/PLUMED-2.5.3-intel-2019a.eb create mode 100644 Golden_Repo/2019a/p/PLUMED/PLUMED-2.5.3-intel-para-2019a.eb create mode 100644 Golden_Repo/2019a/p/pscom/pscom-5.2-default.eb create mode 100644 Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-UCX-RC.eb create mode 100644 Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-UCX-UD.eb create mode 100644 Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-default.eb create mode 100644 Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-large-job-hybrid.eb create mode 100644 Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-large-job-mpi.eb create mode 100644 Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-UCX-RC.eb create mode 100644 Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-UCX-UD.eb create mode 100644 Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-default.eb create mode 100644 Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-large-job-hybrid.eb create mode 100644 Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-large-job-mpi.eb create mode 100644 Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0.eb create mode 100644 Golden_Repo/2019a/u/UCX/UCX-1.6.1-GCCcore-8.3.0.eb create mode 100644 Golden_Repo/2019a/u/UCX/UCX-1.7.0-GCCcore-8.3.0.eb create mode 100644 Golden_Repo/2019a/u/UCX/UCX-1.7.0-rc1-GCCcore-8.3.0.eb create mode 100644 Golden_Repo/2019a/u/UCX/UCX-libibcm.patch diff --git a/Custom_EasyBlocks/2019a/boost.py b/Custom_EasyBlocks/2019a/boost.py new file mode 100644 index 000000000..e4a99fe6d --- /dev/null +++ b/Custom_EasyBlocks/2019a/boost.py @@ -0,0 +1,272 @@ +## +# Copyright 2009-2019 Ghent University +# +# This file is part of EasyBuild, +# originally created by the HPC team of Ghent University (http://ugent.be/hpc/en), +# with support of Ghent University (http://ugent.be/hpc), +# the Flemish Supercomputer Centre (VSC) (https://www.vscentrum.be), +# Flemish Research Foundation (FWO) (http://www.fwo.be/en) +# and the Department of Economy, Science and Innovation (EWI) (http://www.ewi-vlaanderen.be/en). +# +# https://github.com/easybuilders/easybuild +# +# EasyBuild is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation v2. +# +# EasyBuild is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with EasyBuild. If not, see <http://www.gnu.org/licenses/>. +## +""" +EasyBuild support for Boost, implemented as an easyblock + +@author: Stijn De Weirdt (Ghent University) +@author: Dries Verdegem (Ghent University) +@author: Kenneth Hoste (Ghent University) +@author: Pieter De Baets (Ghent University) +@author: Jens Timmerman (Ghent University) +@author: Ward Poelmans (Ghent University) +@author: Petar Forai (IMP/IMBA) +@author: Luca Marsella (CSCS) +@author: Guilherme Peretti-Pezzi (CSCS) +@author: Joachim Hein (Lund University) +@author: Michele Dolfi (ETH Zurich) +""" +from distutils.version import LooseVersion +import fileinput +import glob +import os +import re +import shutil +import sys + +import easybuild.tools.toolchain as toolchain +from easybuild.framework.easyblock import EasyBlock +from easybuild.framework.easyconfig import CUSTOM +from easybuild.tools.build_log import EasyBuildError +from easybuild.tools.filetools import copy, mkdir, write_file +from easybuild.tools.modules import get_software_root, get_software_version +from easybuild.tools.run import run_cmd +from easybuild.tools.systemtools import UNKNOWN, get_glibc_version, get_shared_lib_ext + + +class EB_Boost(EasyBlock): + """Support for building Boost.""" + + def __init__(self, *args, **kwargs): + """Initialize Boost-specific variables.""" + super(EB_Boost, self).__init__(*args, **kwargs) + + self.objdir = None + + @staticmethod + def extra_options(): + """Add extra easyconfig parameters for Boost.""" + extra_vars = { + 'boost_mpi': [False, "Build mpi boost module", CUSTOM], + 'boost_multi_thread': [False, "Build boost with multi-thread option", CUSTOM], + 'toolset': [None, "Toolset to use for Boost configuration ('--with-toolset for bootstrap.sh')", CUSTOM], + 'mpi_launcher': [None, "Launcher to use when running MPI regression tests", CUSTOM], + 'only_python_bindings': [False, "Only install Boost.Python library providing Python bindings", CUSTOM], + 'use_glibcxx11_abi': [None, "Use the GLIBCXX11 ABI", CUSTOM], + } + return EasyBlock.extra_options(extra_vars) + + def patch_step(self): + """Patch Boost source code before building.""" + super(EB_Boost, self).patch_step() + + # TIME_UTC is also defined in recent glibc versions, so we need to rename it for old Boost versions (<= 1.49) + glibc_version = get_glibc_version() + old_glibc = glibc_version is not UNKNOWN and LooseVersion(glibc_version) > LooseVersion("2.15") + if old_glibc and LooseVersion(self.version) <= LooseVersion("1.49.0"): + self.log.info("Patching because the glibc version is too new") + files_to_patch = ["boost/thread/xtime.hpp"] + glob.glob("libs/interprocess/test/*.hpp") + files_to_patch += glob.glob("libs/spirit/classic/test/*.cpp") + glob.glob("libs/spirit/classic/test/*.inl") + for patchfile in files_to_patch: + try: + for line in fileinput.input("%s" % patchfile, inplace=1, backup='.orig'): + line = re.sub(r"TIME_UTC", r"TIME_UTC_", line) + sys.stdout.write(line) + except IOError, err: + raise EasyBuildError("Failed to patch %s: %s", patchfile, err) + + def configure_step(self): + """Configure Boost build using custom tools""" + + # mpi sanity check + if self.cfg['boost_mpi'] and not self.toolchain.options.get('usempi', None): + raise EasyBuildError("When enabling building boost_mpi, also enable the 'usempi' toolchain option.") + + # create build directory (Boost doesn't like being built in source dir) + self.objdir = os.path.join(self.builddir, 'obj') + mkdir(self.objdir) + + # generate config depending on compiler used + toolset = self.cfg['toolset'] + if toolset is None: + if self.toolchain.comp_family() == toolchain.INTELCOMP: + toolset = 'intel-linux' + elif self.toolchain.comp_family() == toolchain.GCC: + toolset = 'gcc' + elif self.toolchain.comp_family() == toolchain.PGI: + toolset = 'pgi' + else: + raise EasyBuildError("Unknown compiler used, don't know what to specify to --with-toolset, aborting.") + + cmd = "%s ./bootstrap.sh --with-toolset=%s --prefix=%s %s" + tup = (self.cfg['preconfigopts'], toolset, self.objdir, self.cfg['configopts']) + run_cmd(cmd % tup, log_all=True, simple=True) + + if self.cfg['boost_mpi']: + + self.toolchain.options['usempi'] = True + # configure the boost mpi module + # http://www.boost.org/doc/libs/1_47_0/doc/html/mpi/getting_started.html + # let Boost.Build know to look here for the config file + + txt = '' + # Check if using a Cray toolchain and configure MPI accordingly + if self.toolchain.toolchain_family() == toolchain.CRAYPE: + if self.toolchain.PRGENV_MODULE_NAME_SUFFIX == 'gnu': + craympichdir = os.getenv('CRAY_MPICH2_DIR') + craygccversion = os.getenv('GCC_VERSION') + txt = '\n'.join([ + 'local CRAY_MPICH2_DIR = %s ;' % craympichdir, + 'using gcc ', + ': %s' % craygccversion, + ': CC ', + ': <compileflags>-I$(CRAY_MPICH2_DIR)/include ', + ' <linkflags>-L$(CRAY_MPICH2_DIR)/lib \ ', + '; ', + 'using mpi ', + ': CC ', + ': <find-shared-library>mpich ', + ': %s' % self.cfg['mpi_launcher'], + ';', + '', + ]) + else: + raise EasyBuildError("Bailing out: only PrgEnv-gnu supported for now") + else: + txt = "using mpi : %s ;" % os.getenv("MPICXX") + + write_file('user-config.jam', txt, append=True) + + def build_boost_variant(self, bjamoptions, paracmd): + """Build Boost library with specified options for bjam.""" + # build with specified options + cmd = "%s ./bjam %s %s %s" % (self.cfg['prebuildopts'], bjamoptions, paracmd, self.cfg['buildopts']) + run_cmd(cmd, log_all=True, simple=True) + # install built Boost library + cmd = "%s ./bjam %s install %s %s" % (self.cfg['preinstallopts'], bjamoptions, paracmd, self.cfg['installopts']) + run_cmd(cmd, log_all=True, simple=True) + # clean up before proceeding with next build + run_cmd("./bjam --clean-all", log_all=True, simple=True) + + def build_step(self): + """Build Boost with bjam tool.""" + + bjamoptions = " --prefix=%s" % self.objdir + + cxxflags = os.getenv('CXXFLAGS') + # only disable -D_GLIBCXX_USE_CXX11_ABI if use_glibcxx11_abi was explicitly set to False + # None value is the default, which corresponds to default setting (=1 since GCC 5.x) + if self.cfg['use_glibcxx11_abi'] is not None: + cxxflags += ' -D_GLIBCXX_USE_CXX11_ABI=' + if self.cfg['use_glibcxx11_abi']: + cxxflags += '1' + else: + cxxflags += '0' + if cxxflags is not None: + bjamoptions += " cxxflags='%s'" % cxxflags + ldflags = os.getenv('LDFLAGS') + if ldflags is not None: + bjamoptions += " linkflags='%s'" % ldflags + + # specify path for bzip2/zlib if module is loaded + for lib in ["bzip2", "zlib"]: + libroot = get_software_root(lib) + if libroot: + bjamoptions += " -s%s_INCLUDE=%s/include" % (lib.upper(), libroot) + bjamoptions += " -s%s_LIBPATH=%s/lib" % (lib.upper(), libroot) + + paracmd = '' + if self.cfg['parallel']: + paracmd = "-j %s" % self.cfg['parallel'] + + if self.cfg['only_python_bindings']: + # magic incantation to only install Boost Python bindings is... --with-python + # see http://boostorg.github.io/python/doc/html/building/installing_boost_python_on_your_.html + bjamoptions += " --with-python" + + if self.cfg['boost_mpi']: + self.log.info("Building boost_mpi library") + self.build_boost_variant(bjamoptions + " --user-config=user-config.jam --with-mpi", paracmd) + + if self.cfg['boost_multi_thread']: + self.log.info("Building boost with multi threading") + self.build_boost_variant(bjamoptions + " threading=multi --layout=tagged", paracmd) + + # if both boost_mpi and boost_multi_thread are enabled, build boost mpi with multi-thread support + if self.cfg['boost_multi_thread'] and self.cfg['boost_mpi']: + self.log.info("Building boost_mpi with multi threading") + extra_bjamoptions = " --user-config=user-config.jam --with-mpi threading=multi --layout=tagged" + self.build_boost_variant(bjamoptions + extra_bjamoptions, paracmd) + + # install remainder of boost libraries + self.log.info("Installing boost libraries") + + cmd = "%s ./bjam %s install %s %s" % (self.cfg['preinstallopts'], bjamoptions, paracmd, self.cfg['installopts']) + run_cmd(cmd, log_all=True, simple=True) + + def install_step(self): + """Install Boost by copying file to install dir.""" + + self.log.info("Copying %s to installation dir %s" % (self.objdir, self.installdir)) + copy(glob.glob(os.path.join(self.objdir, '*')), self.installdir) + + def sanity_check_step(self): + """Custom sanity check for Boost.""" + shlib_ext = get_shared_lib_ext() + + custom_paths = { + 'files': [], + 'dirs': ['include/boost'] + } + if not self.cfg['only_python_bindings']: + custom_paths['files'].append(os.path.join('lib', 'libboost_system.%s' % shlib_ext)) + + if self.cfg['boost_mpi']: + custom_paths['files'].append(os.path.join('lib', 'libboost_mpi.%s' % shlib_ext)) + + if get_software_root('Python'): + pymajorver = get_software_version('Python').split('.')[0] + pyminorver = get_software_version('Python').split('.')[1] + if LooseVersion(self.version) >= LooseVersion("1.67.0"): + suffix = '%s%s' % (pymajorver, pyminorver) + elif int(pymajorver) >= 3: + suffix = pymajorver + else: + suffix = '' + custom_paths['files'].append(os.path.join('lib', 'libboost_python%s.%s' % (suffix, shlib_ext))) + + if self.cfg['boost_multi_thread']: + custom_paths['files'].append(os.path.join('lib', 'libboost_thread-mt.%s' % shlib_ext)) + + if self.cfg['boost_mpi'] and self.cfg['boost_multi_thread']: + custom_paths['files'].append(os.path.join('lib', 'libboost_mpi-mt.%s' % shlib_ext)) + + super(EB_Boost, self).sanity_check_step(custom_paths=custom_paths) + + def make_module_extra(self): + """Set up a BOOST_ROOT environment variable to e.g. ease Boost handling by cmake""" + txt = super(EB_Boost, self).make_module_extra() + if not self.cfg['only_python_bindings']: + txt += self.module_generator.set_environment('BOOST_ROOT', self.installdir) + return txt diff --git a/Custom_EasyBlocks/2019a/elpa.py b/Custom_EasyBlocks/2019a/elpa.py index f66278734..c78656e91 100644 --- a/Custom_EasyBlocks/2019a/elpa.py +++ b/Custom_EasyBlocks/2019a/elpa.py @@ -28,6 +28,7 @@ EasyBuild support for building and installing ELPA, implemented as an easyblock @author: Micael Oliveira (MPSD-Hamburg) """ +#from easybuild.tools.utilities import nub from vsc.utils.missing import nub from easybuild.easyblocks.generic.configuremake import ConfigureMake diff --git a/Custom_EasyBlocks/2019a/generic/versionindependentpythonpackage.py b/Custom_EasyBlocks/2019a/generic/versionindependentpythonpackage.py new file mode 100644 index 000000000..6c4157113 --- /dev/null +++ b/Custom_EasyBlocks/2019a/generic/versionindependentpythonpackage.py @@ -0,0 +1,101 @@ +## +# Copyright 2013-2019 Ghent University +# +# This file is part of EasyBuild, +# originally created by the HPC team of Ghent University (http://ugent.be/hpc/en), +# with support of Ghent University (http://ugent.be/hpc), +# the Flemish Supercomputer Centre (VSC) (https://www.vscentrum.be), +# Flemish Research Foundation (FWO) (http://www.fwo.be/en) +# and the Department of Economy, Science and Innovation (EWI) (http://www.ewi-vlaanderen.be/en). +# +# https://github.com/easybuilders/easybuild +# +# EasyBuild is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation v2. +# +# EasyBuild is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with EasyBuild. If not, see <http://www.gnu.org/licenses/>. +## +""" +EasyBuild support for building and installing a Pythonpackage independend of a python version as an easyblock. + +Python installs libraries by defailt in site-packages/python-xxx/ +But packages that are not dependend on the python version can be installed in a different prefix, e.g. lib +as long as we add this folder to the pythonpath. + +@author: Kenneth Hoste, Jens Timmerman (Ghent University) +""" +import os +import re + +import easybuild.tools.environment as env +from easybuild.easyblocks.generic.pythonpackage import PythonPackage +from easybuild.tools.build_log import EasyBuildError +from easybuild.tools.run import run_cmd + + +class VersionIndependentPythonPackage(PythonPackage): + """Support for building/installing python packages without requiring a specific python package.""" + + def build_step(self): + """No build procedure.""" + pass + + def set_pylibdirs(self): + """Set pylibdir.""" + super(VersionIndependentPythonPackage, self).set_pylibdirs() + self.pylibdir = 'lib' + self.all_pylibdirs = ['lib'] + + def install_step(self): + """Custom install procedure to skip selection of python package versions.""" + full_pylibdir = os.path.join(self.installdir, self.pylibdir) + + env.setvar('PYTHONPATH', '%s:%s' % (full_pylibdir, os.getenv('PYTHONPATH'))) + + try: + os.mkdir(full_pylibdir) + except OSError as err: + # this will raise an error and not return + raise EasyBuildError("Failed to install: %s", err) + + if self.use_setup_py: + extra_installopts = [ + '--install-lib=%s' % full_pylibdir, + '--single-version-externally-managed', + '--record %s' % os.path.join(self.builddir, 'record'), + '--no-compile', + ] + self.cfg.update('installopts', ' '.join(extra_installopts)) + else: + # using easy_install or pip always results in installation that is specific to Python version + eb_name = self.__class__.__name__ + raise EasyBuildError("%s easyblock is not compatible with using easy_install or pip", eb_name) + + cmd = self.compose_install_command(self.installdir) + run_cmd(cmd, log_all=True, simple=True, log_output=True) + + # setuptools stubbornly replaces the shebang line in scripts with + # the full path to the Python interpreter used to install; + # we change it (back) to '#!/usr/bin/env python' here + shebang_re = re.compile("^#!/.*python") + bindir = os.path.join(self.installdir, 'bin') + if os.path.exists(bindir): + for script in os.listdir(bindir): + script = os.path.join(bindir, script) + if os.path.isfile(script): + try: + txt = open(script, 'r').read() + if shebang_re.search(txt): + new_shebang = "#!/usr/bin/env python" + self.log.debug("Patching shebang header line in %s to '%s'" % (script, new_shebang)) + txt = shebang_re.sub(new_shebang, txt) + open(script, 'w').write(txt) + except IOError as err: + raise EasyBuildError("Failed to patch shebang header line in %s: %s", script, err) diff --git a/Custom_EasyBlocks/2019a/pgi.py b/Custom_EasyBlocks/2019a/pgi.py index 063a6ee88..e817c74dc 100644 --- a/Custom_EasyBlocks/2019a/pgi.py +++ b/Custom_EasyBlocks/2019a/pgi.py @@ -162,12 +162,12 @@ class EB_PGI(PackedBinary): siterc_path = os.path.join(self.installdir, subdir, 'bin', 'siterc') # adding LIBRARY_PATH has the side effect of adding llvm to nollvm siterc files and viceversa # this is done dynamically, so we can't account for it in all cases. Simply do it for the default - isdefault = False - if ((LooseVersion(self.version) > LooseVersion('18') and LooseVersion(self.version) < LooseVersion('19') and - subdir == 'linux86-64-nollvm') or - (LooseVersion(self.version) > LooseVersion('19') and subdir == 'linux86-64-llvm')): - isdefault = True - if isdefault: + #isdefault = False + #if ((LooseVersion(self.version) > LooseVersion('18') and LooseVersion(self.version) < LooseVersion('19') and + # subdir == 'linux86-64-nollvm') or + # (LooseVersion(self.version) > LooseVersion('19') and subdir == 'linux86-64-llvm')): + # isdefault = True + if subdir == os.path.join('linux86-64', self.version): write_file(siterc_path, SITERC_LIBRARY_PATH, append=True) self.log.info("Appended instructions to pick up $LIBRARY_PATH to siterc file at %s: %s", siterc_path, SITERC_LIBRARY_PATH) diff --git a/Custom_EasyBlocks/2019a/psmpi.py b/Custom_EasyBlocks/2019a/psmpi.py index 2f228166d..4ba9b7834 100644 --- a/Custom_EasyBlocks/2019a/psmpi.py +++ b/Custom_EasyBlocks/2019a/psmpi.py @@ -213,8 +213,7 @@ class EB_psmpi(EB_MPICH): comp_opts = { toolchain.GCC: 'gcc', toolchain.INTELCOMP: 'intel', - # TODO: Include PGI as soon as it is available as toolchain - #toolchain.PGI: 'pgi', + toolchain.PGI: 'pgi', } # ParaStationMPI defines its environment through confsets. So these should be unset @@ -222,17 +221,18 @@ class EB_psmpi(EB_MPICH): env.unset_env_vars(env_vars) self.log.info("Unsetting the following variables: " + ' '.join(env_vars)) - # Set confset + # Enable CUDA if self.cfg['cuda']: self.log.info("Enabling CUDA-Awareness...") - self.cfg.update('configopts', ' --with-confset=cuda') + self.cfg.update('configopts', ' --with-cuda') + + # Set confset + comp_fam = self.toolchain.comp_family() + if comp_fam in comp_opts: + self.cfg.update('configopts', ' --with-confset=%s' % comp_opts[comp_fam]) else: - comp_fam = self.toolchain.comp_family() - if comp_fam in comp_opts: - self.cfg.update('configopts', ' --with-confset=%s' % comp_opts[comp_fam]) - else: - raise EasyBuildError("Compiler %s not supported. Valid options are: %s", - comp_fam, ', '.join(comp_opts.keys())) + raise EasyBuildError("Compiler %s not supported. Valid options are: %s", + comp_fam, ', '.join(comp_opts.keys())) # Enable threading, if necessary if self.cfg['threaded']: diff --git a/Custom_MNS/2019a/custom_hierarchical_mns.py b/Custom_MNS/2019a/custom_hierarchical_mns.py index 37cf6e68e..935f72ff1 100755 --- a/Custom_MNS/2019a/custom_hierarchical_mns.py +++ b/Custom_MNS/2019a/custom_hierarchical_mns.py @@ -32,6 +32,7 @@ Implementation of an example hierarchical module naming scheme. import os import re from vsc.utils import fancylogger +#from easybuild.base import fancylogger from easybuild.tools.build_log import EasyBuildError from easybuild.tools.module_naming_scheme.hierarchical_mns import HierarchicalMNS diff --git a/Custom_MNS/2019a/flexible_custom_hierarchical_mns.py b/Custom_MNS/2019a/flexible_custom_hierarchical_mns.py index d42a23ecf..39b86e38a 100755 --- a/Custom_MNS/2019a/flexible_custom_hierarchical_mns.py +++ b/Custom_MNS/2019a/flexible_custom_hierarchical_mns.py @@ -10,6 +10,7 @@ Implementation of a hierarchical module naming scheme, with added flexibility import os import re from vsc.utils import fancylogger +#from easybuild.base import fancylogger from easybuild.tools.build_log import EasyBuildError from easybuild.tools.module_naming_scheme.hierarchical_mns import HierarchicalMNS @@ -18,6 +19,7 @@ from easybuild.tools.module_naming_scheme.toolchain import det_toolchain_compile CORE = 'Core' COMPILER = 'Compiler' MPI = 'MPI' +MPI_SETTINGS = 'MPI_settings' MODULECLASS_COMPILER = 'compiler' MODULECLASS_MPI = 'mpi' @@ -50,6 +52,9 @@ mpi_relevant_versions = { 'OpenMPI': 2, } +# MPIs with settings modules +mpi_with_settings = ['psmpi', 'impi', 'MVAPICH2'] + class FlexibleCustomHierarchicalMNS(HierarchicalMNS): """Class implementing an example hierarchical module naming scheme.""" def is_short_modname_for(self, short_modname, name): @@ -65,6 +70,8 @@ class FlexibleCustomHierarchicalMNS(HierarchicalMNS): modname_regex = re.compile('^%s/\S+$' % re.escape('ParaStationMPI')) elif name == 'impi': modname_regex = re.compile('^%s/\S+$' % re.escape('IntelMPI')) + elif name in ['-'.join([x, 'settings']) for x in mpi_with_settings]: + modname_regex = re.compile('^%s/\S+$' % re.escape('mpi-settings')) else: modname_regex = re.compile('^%s/\S+$' % re.escape(name)) res = bool(modname_regex.match(short_modname)) @@ -123,6 +130,10 @@ class FlexibleCustomHierarchicalMNS(HierarchicalMNS): if tc_comp_info is None: # no compiler in toolchain, dummy toolchain => Core module subdir = CORE + # except if the module is a MPI settings module + stripped_name = re.sub('-settings$', '', ec['name']) + if stripped_name in mpi_with_settings: + subdir = os.path.join(MPI_SETTINGS, stripped_name, ec['version']) else: tc_comp_name, tc_comp_ver = self._find_relevant_compiler_info(tc_comp_info) tc_mpi = det_toolchain_mpi(ec) @@ -140,6 +151,18 @@ class FlexibleCustomHierarchicalMNS(HierarchicalMNS): return subdir + def det_short_module_name(self, ec): + """ + Determine short module name, i.e. the name under which modules will be exposed to users. + Examples: GCC/4.8.3, OpenMPI/1.6.5, OpenBLAS/0.2.9, HPL/2.1, Python/2.7.5 + UCX-UD (for MPI settings) + """ + stripped_name = re.sub('-settings$', '', ec['name']) + if stripped_name in mpi_with_settings and '-settings' in ec['name']: + return os.path.join('mpi-settings', ec['versionsuffix']) + else: + return super(FlexibleCustomHierarchicalMNS, self).det_short_module_name(ec) + def det_modpath_extensions(self, ec): """ Determine module path extensions, if any. @@ -199,4 +222,7 @@ class FlexibleCustomHierarchicalMNS(HierarchicalMNS): mpi_name, mpi_ver = self._find_relevant_mpi_info(ec) paths.append(os.path.join(MPI, tc_comp_name, tc_comp_ver, mpi_name, mpi_ver)) + if ec['name'] in mpi_with_settings: + paths.append(os.path.join(MPI_SETTINGS, mpi_name, mpi_ver)) + return paths diff --git a/Golden_Repo/2019a/b/Boost/Boost-1.69.0-gmvapich2c-2019a-GDR-Python-3.6.8.eb b/Golden_Repo/2019a/b/Boost/Boost-1.69.0-gmvapich2c-2019a-GDR-Python-3.6.8.eb new file mode 100644 index 000000000..62bbe596e --- /dev/null +++ b/Golden_Repo/2019a/b/Boost/Boost-1.69.0-gmvapich2c-2019a-GDR-Python-3.6.8.eb @@ -0,0 +1,30 @@ +name = 'Boost' +version = '1.69.0' +versionsuffix = '-Python-%(pyver)s' + +homepage = 'http://www.boost.org/' +description = """Boost provides free peer-reviewed portable C++ source libraries.""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'gmvapich2c', 'version': '2019a-GDR'} +toolchainopts = {'pic': True, 'usempi': True} + +source_urls = [SOURCEFORGE_SOURCE] +sources = ['%%(namelower)s_%s.tar.gz' % '_'.join(version.split('.'))] + +patches = [ + 'Boost-1.65.1_fix-Python3.patch' +] + +dependencies = [ + ('bzip2', '1.0.6'), + ('zlib', '1.2.11'), + ('Python', '3.6.8'), + ('ICU', '64.1'), +] + +# also build boost_mpi +boost_mpi = True + +moduleclass = 'devel' diff --git a/Golden_Repo/2019a/c/CUDA/CUDA-10.1.105.eb b/Golden_Repo/2019a/c/CUDA/CUDA-10.1.105.eb index 5df0e6c30..e3fdd0523 100644 --- a/Golden_Repo/2019a/c/CUDA/CUDA-10.1.105.eb +++ b/Golden_Repo/2019a/c/CUDA/CUDA-10.1.105.eb @@ -26,7 +26,7 @@ sources = [ host_compilers = [ 'g++', 'pgc++' ] dependencies = [ - ('nvidia', '418.87.00', '', True), + ('nvidia', 'driver', '', True), ] installopts = '--samplespath=%(installdir)s --samples' diff --git a/Golden_Repo/2019a/e/EasyBuild/EasyBuild-3.9.4.eb b/Golden_Repo/2019a/e/EasyBuild/EasyBuild-3.9.4.eb new file mode 100644 index 000000000..a5005270c --- /dev/null +++ b/Golden_Repo/2019a/e/EasyBuild/EasyBuild-3.9.4.eb @@ -0,0 +1,45 @@ +easyblock = 'EB_EasyBuildMeta' + +name = 'EasyBuild' +version = '3.9.4' + +homepage = 'https://easybuilders.github.io/easybuild' +description = """EasyBuild is a software build and installation framework + written in Python that allows you to install software in a structured, + repeatable and robust way.""" + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [ + # vsc-install + 'https://files.pythonhosted.org/packages/18/59/3274a58af6af84a87f7655735b452c06c769586ee73954f5ee15d303aa29/', + # vsc-base + 'https://files.pythonhosted.org/packages/48/aa/f05d350c358338d0e843835660e3993cc5eb28401f32c0c5b8bc9a9458d5/', + # easybuild-framework + 'https://files.pythonhosted.org/packages/65/cd/90ba2c8619ccad8385a3bddf503a7fb8115e418accf1109e44b5db89bd63/', + # easybuild-easyblocks + 'https://files.pythonhosted.org/packages/2b/db/2393a9555c69fcee3e206ce7fceeaf41a0e90695005b8e7c2146e77d409c/', + # easybuild-easyconfigs + 'https://files.pythonhosted.org/packages/a3/62/1d26bd864009900d142ece57cb4b46ea3676b86adec72479c7d2da41db8a/' +] +sources = [ + 'vsc-install-0.11.3.tar.gz', + 'vsc-base-2.8.4.tar.gz', + 'easybuild-framework-%(version)s.tar.gz', + 'easybuild-easyblocks-%(version)s.tar.gz', + 'easybuild-easyconfigs-%(version)s.tar.gz', +] +checksums = [ + '8b102ba585863769d974ad117764039ac3cea21372a3baa5cdb6b93166673ad6', # vsc-install-0.11.3.tar.gz + 'a6d3ab52c9dec938d98e53860dce4aba79ca8ea4e81f6e07bf2c3787e764bc3e', # vsc-base-2.8.4.tar.gz + '3a924da6cc3c50087f8c24e5d5810236750bdd4812e59866827965f19b01c8de', # easybuild-framework-3.9.4.tar.gz + '853d7c063c361027661bed63d1a2918323ee5975a3b0b3f6c626d351b06c84e6', # easybuild-easyblocks-3.9.4.tar.gz + '24a6952810e3354ff9aadb898120b3a942e2915365bf0f684dfe9a85314ba271', # easybuild-easyconfigs-3.9.4.tar.gz +] + +# order matters a lot, to avoid having dependencies auto-resolved (--no-deps easy_install option doesn't work?) +# EasyBuild is a (set of) Python packages, so it depends on Python +# usually, we want to use the system Python, so no actual Python dependency is listed +allow_system_deps = [('Python', SYS_PYTHON_VERSION)] + +moduleclass = 'tools' diff --git a/Golden_Repo/2019a/i/icc/icc-2019.5.281-GCC-8.3.0.eb b/Golden_Repo/2019a/i/icc/icc-2019.5.281-GCC-8.3.0.eb new file mode 100644 index 000000000..fe24d0867 --- /dev/null +++ b/Golden_Repo/2019a/i/icc/icc-2019.5.281-GCC-8.3.0.eb @@ -0,0 +1,38 @@ +# This is an easyconfig file for EasyBuild, see http://hpcugent.github.io/easybuild + +name = 'icc' +version = '2019.5.281' + +homepage = 'http://software.intel.com/en-us/intel-compilers/' +description = """C and C++ compiler from Intel +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +sources = ['parallel_studio_xe_%(version_major)s_update%(version_minor)s_composer_edition_for_cpp.tgz'] +#sources = ['parallel_studio_xe_%(version_major)s_composer_edition_for_cpp.tgz'] + +gccver = '8.3.0' +binutilsver = '2.32' +versionsuffix = '-GCC-%s' % gccver + +dependencies = [ + ('GCCcore', gccver), + ('binutils', binutilsver, '', ('GCCcore', gccver)), +] + +# list of regex for components to install +# full list of components can be obtained from pset/mediaconfig.xml in unpacked sources +# cfr. https://software.intel.com/en-us/articles/intel-composer-xe-2015-silent-installation-guide +components = ['intel-comp', 'intel-ccomp', 'intel-icc', 'intel-openmp', 'intel-ipsc?_'] + +dontcreateinstalldir = 'True' + +# disable data collection +modextravars = { + 'INTEL_DISABLE_ISIP': '1' +} + +moduleclass = 'compiler' diff --git a/Golden_Repo/2019a/i/iccifort/iccifort-2019.5.281-GCC-8.3.0.eb b/Golden_Repo/2019a/i/iccifort/iccifort-2019.5.281-GCC-8.3.0.eb new file mode 100644 index 000000000..12f5371d6 --- /dev/null +++ b/Golden_Repo/2019a/i/iccifort/iccifort-2019.5.281-GCC-8.3.0.eb @@ -0,0 +1,29 @@ +easyblock = "Bundle" + +name = 'iccifort' +version = '2019.5.281' +versionsuffix = '-GCC-8.3.0' + +homepage = 'http://software.intel.com/en-us/intel-cluster-toolkit-compiler/' +description = """Intel Cluster Toolkit Compiler Edition provides Intel C,C++ and fortran compilers, Intel MPI and Intel MKL +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +dependencies = [ + ('icc', version, versionsuffix), + ('ifort', version, versionsuffix), +] + +# We have a custom naming scheme that allows us to use a more descriptive module name +modaltsoftname = 'Intel' + +# We use a HMNS, so let's enforce a unique compiler +modluafooter = 'family("compiler")' + +# Always do a recursive unload on compilers +recursive_module_unload = True + +moduleclass = 'compiler' diff --git a/Golden_Repo/2019a/i/ifort/ifort-2019.5.281-GCC-8.3.0.eb b/Golden_Repo/2019a/i/ifort/ifort-2019.5.281-GCC-8.3.0.eb new file mode 100644 index 000000000..943172a93 --- /dev/null +++ b/Golden_Repo/2019a/i/ifort/ifort-2019.5.281-GCC-8.3.0.eb @@ -0,0 +1,36 @@ +name = 'ifort' +version = '2019.5.281' + +homepage = 'http://software.intel.com/en-us/intel-compilers/' +description = """Fortran compiler from Intel +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +#sources = ['parallel_studio_xe_%(version_major)s_composer_edition_for_fortran.tgz'] +sources = ['parallel_studio_xe_%(version_major)s_update%(version_minor)s_composer_edition_for_fortran.tgz'] + +gccver = '8.3.0' +binutilsver = '2.32' +versionsuffix = '-GCC-%s' % gccver + +dependencies = [ + ('GCCcore', gccver), + ('binutils', binutilsver, '', ('GCCcore', gccver)), +] + +# list of regex for components to install +# full list of components can be obtained from pset/mediaconfig.xml in unpacked sources +# cfr. https://software.intel.com/en-us/articles/intel-composer-xe-2015-silent-installation-guide +components = ['intel-comp', 'intel-fcomp', 'intel-ifort', 'intel-openmp', 'intel-ipsf?_'] + +dontcreateinstalldir = 'True' + +# disable data collection +modextravars = { + 'INTEL_DISABLE_ISIP': '1' +} + +moduleclass = 'compiler' diff --git a/Golden_Repo/2019a/i/impi-settings/impi-settings-2019-UCX-UD.eb b/Golden_Repo/2019a/i/impi-settings/impi-settings-2019-UCX-UD.eb new file mode 100644 index 000000000..ebdd41c02 --- /dev/null +++ b/Golden_Repo/2019a/i/impi-settings/impi-settings-2019-UCX-UD.eb @@ -0,0 +1,25 @@ +easyblock = 'SystemBundle' + +name = 'impi-settings' +version = '2019' +versionsuffix = 'UCX-UD' + +homepage = '' +description = """This is a module to load the IntelMPI configuration with UCX and UD as TL""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'UCX_TLS': 'ud_x,sm,self', + 'I_MPI_PMI_VALUE_LENGTH_MAX': '900', + # Needed for PSM and harmless for InfiniBand. For ParaStation it is set on the pscom module + 'HFI_NO_CPUAFFINITY': 'YES', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/i/impi-settings/impi-settings-2019-default.eb b/Golden_Repo/2019a/i/impi-settings/impi-settings-2019-default.eb new file mode 100644 index 000000000..62fe65bd8 --- /dev/null +++ b/Golden_Repo/2019a/i/impi-settings/impi-settings-2019-default.eb @@ -0,0 +1,25 @@ +easyblock = 'SystemBundle' + +name = 'impi-settings' +version = '2019' +versionsuffix = 'default' + +homepage = '' +description = """This is a module to load the default IntelMPI configuration""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'UCX_TLS': 'dc_x,sm,self', + 'I_MPI_PMI_VALUE_LENGTH_MAX': '900', + # Needed for PSM and harmless for InfiniBand. For ParaStation it is set on the pscom module + 'HFI_NO_CPUAFFINITY': 'YES', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/i/impi-settings/impi-settings-2019-large-job-hybrid.eb b/Golden_Repo/2019a/i/impi-settings/impi-settings-2019-large-job-hybrid.eb new file mode 100644 index 000000000..d1ec28953 --- /dev/null +++ b/Golden_Repo/2019a/i/impi-settings/impi-settings-2019-large-job-hybrid.eb @@ -0,0 +1,25 @@ +easyblock = 'SystemBundle' + +name = 'impi-settings' +version = '2019' +versionsuffix = 'large-job-hybrid' + +homepage = '' +description = """This is a module to load the IntelMPI configuration for large scale hybrid jobs""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'UCX_TLS': 'dc_x,sm,self', + 'I_MPI_PMI_VALUE_LENGTH_MAX': '900', + # Needed for PSM and harmless for InfiniBand. For ParaStation it is set on the pscom module + 'HFI_NO_CPUAFFINITY': 'YES', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/i/impi-settings/impi-settings-2019-large-job-mpi.eb b/Golden_Repo/2019a/i/impi-settings/impi-settings-2019-large-job-mpi.eb new file mode 100644 index 000000000..03fb0c375 --- /dev/null +++ b/Golden_Repo/2019a/i/impi-settings/impi-settings-2019-large-job-mpi.eb @@ -0,0 +1,25 @@ +easyblock = 'SystemBundle' + +name = 'impi-settings' +version = '2019' +versionsuffix = 'large-job-mpi' + +homepage = '' +description = """This is a module to load the IntelMPI configuration for large scale MPI jobs""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'UCX_TLS': 'dc_x,sm,self', + 'I_MPI_PMI_VALUE_LENGTH_MAX': '900', + # Needed for PSM and harmless for InfiniBand. For ParaStation it is set on the pscom module + 'HFI_NO_CPUAFFINITY': 'YES', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/i/impi/impi-2018.5.288-iccifort-2019.3.199-GCC-8.3.0.eb b/Golden_Repo/2019a/i/impi/impi-2018.5.288-iccifort-2019.3.199-GCC-8.3.0.eb index 78c5ab20d..d55626cbf 100644 --- a/Golden_Repo/2019a/i/impi/impi-2018.5.288-iccifort-2019.3.199-GCC-8.3.0.eb +++ b/Golden_Repo/2019a/i/impi/impi-2018.5.288-iccifort-2019.3.199-GCC-8.3.0.eb @@ -47,17 +47,17 @@ modextravars = { 'I_MPI_FABRICS': 'shm:ofa', } -modloadmsg = 'WARNING: Intel MPI version 2018 (all minor releases) and 2019 have unresolved, known issues\n' -modloadmsg += 'affecting collective operations. Since not all applications are impaired, JSC has\n' -modloadmsg += 'decided not to fully retract the MPI version 2018 (other than version 2019).\n' -modloadmsg += 'However, we warn users about potential problems with hanging applications due to stalls\n' -modloadmsg += 'or very slow progress in collectives.\n' -modloadmsg += 'In particular affected are:\n' -modloadmsg += ' * MPI_Scatter/MPI_Scatterv\n' -modloadmsg += ' * Collectives executed with 3000+ tasks\n' -modloadmsg += 'Larger jobs are more likely affected than smaller ones.\n' -modloadmsg += 'Please consider ParaStation MPI as an alternative option, when experiencing problems\n' -modloadmsg += 'with this Intel MPI version. Irrespectively, please contact sc@fz-juelich.de and report\n' -modloadmsg += 'your problem.' +#modloadmsg = 'WARNING: Intel MPI version 2018 (all minor releases) and 2019 have unresolved, known issues\n' +#modloadmsg += 'affecting collective operations. Since not all applications are impaired, JSC has\n' +#modloadmsg += 'decided not to fully retract the MPI version 2018 (other than version 2019).\n' +#modloadmsg += 'However, we warn users about potential problems with hanging applications due to stalls\n' +#modloadmsg += 'or very slow progress in collectives.\n' +#modloadmsg += 'In particular affected are:\n' +#modloadmsg += ' * MPI_Scatter/MPI_Scatterv\n' +#modloadmsg += ' * Collectives executed with 3000+ tasks\n' +#modloadmsg += 'Larger jobs are more likely affected than smaller ones.\n' +#modloadmsg += 'Please consider ParaStation MPI as an alternative option, when experiencing problems\n' +#modloadmsg += 'with this Intel MPI version. Irrespectively, please contact sc@fz-juelich.de and report\n' +#modloadmsg += 'your problem.' moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/i/impi/impi-2019.3.199-iccifort-2019.3.199-GCC-8.3.0.eb b/Golden_Repo/2019a/i/impi/impi-2019.3.199-iccifort-2019.3.199-GCC-8.3.0.eb index 73f48cf57..5289a6d25 100644 --- a/Golden_Repo/2019a/i/impi/impi-2019.3.199-iccifort-2019.3.199-GCC-8.3.0.eb +++ b/Golden_Repo/2019a/i/impi/impi-2019.3.199-iccifort-2019.3.199-GCC-8.3.0.eb @@ -31,23 +31,22 @@ postinstallcmds = [ # use a more explicit module name to help our naming scheme modaltsoftname = 'IntelMPI' -# Add a family for our naming scheme -modluafooter = 'family("mpi")' dontcreateinstalldir = 'True' # set up all the mpi commands to work as expected set_mpi_wrappers_all = 'True' modextravars = { -# 'I_MPI_OFA_TRANSLATION_CACHE': '0', -# 'I_MPI_DAPL_TRANSLATION_CACHE': '0', - # Needed for PSM and harmless for InfiniBand. For ParaStation it is set on the pscom module - 'HFI_NO_CPUAFFINITY': 'YES', # The default algorithms hang for large core counts 'I_MPI_ADJUST_GATHER': '1', 'I_MPI_ADJUST_GATHERV': '3', } -#modloadmsg = 'This version of Intel MPI have serious issues. Particularly with certain collective functions at large\n' -#modloadmsg += 'core counts. Please load version 2018.4 instead' +# Add a family for our naming scheme +modluafooter = ''' +family("mpi") +if not ( isloaded("mpi-settings/default") ) then + load("mpi-settings/default") +end +''' moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/i/impi/impi-2019.6.154-iccifort-2019.5.281-GCC-8.3.0.eb b/Golden_Repo/2019a/i/impi/impi-2019.6.154-iccifort-2019.5.281-GCC-8.3.0.eb new file mode 100644 index 000000000..5f42a27a4 --- /dev/null +++ b/Golden_Repo/2019a/i/impi/impi-2019.6.154-iccifort-2019.5.281-GCC-8.3.0.eb @@ -0,0 +1,48 @@ +name = 'impi' +version = '2019.6.154' + +homepage = 'http://software.intel.com/en-us/intel-mpi-library/' +description = """The Intel(R) MPI Library for Linux* OS is a multi-fabric message + passing library based on ANL MPICH2 and OSU MVAPICH2. The Intel MPI Library for + Linux OS implements the Message Passing Interface, version 2 (MPI-2) specification. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'version': '2019.5.281-GCC-8.3.0', 'name': 'iccifort'} + +sources = ['l_mpi_%(version)s.tgz'] + +dependencies = [ + ('UCX', '1.6.1') +] + +# use a more explicit module name to help our naming scheme +modaltsoftname = 'IntelMPI' +# Add a family for our naming scheme +modluafooter = 'family("mpi")' +dontcreateinstalldir = 'True' +# set up all the mpi commands to work as expected +set_mpi_wrappers_all = 'True' + +postinstallcmds = [ + "ln -s %(installdir)s/intel64/lib/release/libmpi.so %(installdir)s/intel64/lib/", + "ln -s %(installdir)s/intel64/lib %(installdir)s", + "ln -s %(installdir)s/intel64/include %(installdir)s", + "rm -Rf %(installdir)s/bin", + "ln -s %(installdir)s/intel64/bin %(installdir)s", +] + +modextrapaths = { + 'CLASSPATH': 'intel64/lib/mpi.jar', +} + +# Add a family for our naming scheme +modluafooter = ''' +family("mpi") +if not ( isloaded("mpi-settings/default") ) then + load("mpi-settings/default") +end +''' + +moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/jusuf_overlay/c/CDO/CDO-1.9.5-ipsmpi-2019a.eb b/Golden_Repo/2019a/jusuf_overlay/c/CDO/CDO-1.9.5-ipsmpi-2019a.eb new file mode 100644 index 000000000..efc2e86ab --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/c/CDO/CDO-1.9.5-ipsmpi-2019a.eb @@ -0,0 +1,34 @@ +easyblock = 'ConfigureMake' + +name = 'CDO' +version = '1.9.5' + +homepage = 'https://code.zmaw.de/projects/cdo' +description = """CDO is a collection of command line Operators to manipulate and analyse Climate and NWP model Data.""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'ipsmpi', 'version': '2019a'} +toolchainopts = {'opt': True, 'pic': True, 'usempi': True} + +source_urls = ['https://code.mpimet.mpg.de/attachments/19299/'] +sources = [SOURCELOWER_TAR_GZ] + +dependencies = [ + ('Szip', '2.1.1'), + ('HDF5', '1.10.5'), + ('netCDF', '4.6.3'), + ('YAXT', '0.6.0'), + ('ecCodes', '2.12.0') +] + +preconfigopts = 'export CFLAGS="$CFLAGS -lhdf5" && ' + +configopts = "--with-hdf5=$EBROOTHDF5 --with-netcdf=$EBROOTNETCDF --with-eccodes=yes --with-szlib=yes" + +sanity_check_paths = { + 'files': ["bin/cdo"], + 'dirs': [], +} + +moduleclass = 'data' diff --git a/Golden_Repo/2019a/jusuf_overlay/g/GSL/GSL-2.5-iccifort-2019.5.281-GCC-8.3.0.eb b/Golden_Repo/2019a/jusuf_overlay/g/GSL/GSL-2.5-iccifort-2019.5.281-GCC-8.3.0.eb new file mode 100644 index 000000000..243967a19 --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/g/GSL/GSL-2.5-iccifort-2019.5.281-GCC-8.3.0.eb @@ -0,0 +1,22 @@ +easyblock = 'ConfigureMake' + +name = 'GSL' +version = '2.5' + +homepage = 'http://www.gnu.org/software/gsl/' +description = """The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. + The library provides a wide range of mathematical routines such as random number generators, special functions + and least-squares fitting. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'iccifort', 'version': '2019.5.281-GCC-8.3.0'} +toolchainopts = {'opt': True, 'optarch': True, 'unroll': True, 'pic': True} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_GZ] + +configopts = "--with-pic" + +moduleclass = 'numlib' diff --git a/Golden_Repo/2019a/jusuf_overlay/i/iimpi/iimpi-2019a.eb b/Golden_Repo/2019a/jusuf_overlay/i/iimpi/iimpi-2019a.eb new file mode 100644 index 000000000..2a738cfb2 --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/i/iimpi/iimpi-2019a.eb @@ -0,0 +1,24 @@ +easyblock = "Toolchain" + +name = 'iimpi' +version = '2019a' + +homepage = 'http://software.intel.com/en-us/intel-cluster-toolkit-compiler/' +description = """Intel C/C++ and Fortran compilers, alongside Intel MPI. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +compver = '2019.5.281' +mpiver = '2019.6.154' +gccsuffix = '-GCC-8.3.0' +dependencies = [ + ('iccifort', '%s%s' % (compver, gccsuffix)), + ('icc', compver, gccsuffix), + ('ifort', compver, gccsuffix), + ('impi', '%s' % mpiver, '', ('iccifort', '%s%s' % (compver, gccsuffix))), +] + +moduleclass = 'toolchain' diff --git a/Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281-iimpi-2019a.eb b/Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281-iimpi-2019a.eb new file mode 100644 index 000000000..5e2643518 --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281-iimpi-2019a.eb @@ -0,0 +1,32 @@ +name = 'imkl' +version = '2019.5.281' + +homepage = 'http://software.intel.com/en-us/intel-mkl/' +description = """Intel Math Kernel Library is a library of highly optimized, + extensively threaded math routines for science, engineering, and financial + applications that require maximum performance. Core math functions include + BLAS, LAPACK, ScaLAPACK, Sparse Solvers, Fast Fourier Transforms, Vector Math, and more. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'version': '2019a', 'name': 'iimpi'} + +sources = ['l_mkl_%(version)s.tgz'] + +dontcreateinstalldir = 'True' + +postinstallcmds = [ + # extract the examples + 'tar xvzf %(installdir)s/mkl/examples/examples_cluster_c.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_cluster_f.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_core_c.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_core_f.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_f95.tgz -C %(installdir)s/mkl/examples/', +] + +modextravars = { + 'MKL_EXAMPLES': '%(installdir)s/mkl/examples/', +} + +moduleclass = 'numlib' diff --git a/Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281-ipsmpi-2019a-mt.eb b/Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281-ipsmpi-2019a-mt.eb new file mode 100644 index 000000000..935bf9905 --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281-ipsmpi-2019a-mt.eb @@ -0,0 +1,32 @@ +name = 'imkl' +version = '2019.5.281' + +homepage = 'http://software.intel.com/en-us/intel-mkl/' +description = """Intel Math Kernel Library is a library of highly optimized, + extensively threaded math routines for science, engineering, and financial + applications that require maximum performance. Core math functions include + BLAS, LAPACK, ScaLAPACK, Sparse Solvers, Fast Fourier Transforms, Vector Math, and more. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'version': '2019a-mt', 'name': 'ipsmpi'} + +sources = ['l_mkl_%(version)s.tgz'] + +dontcreateinstalldir = 'True' + +postinstallcmds = [ + # extract the examples + 'tar xvzf %(installdir)s/mkl/examples/examples_cluster_c.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_cluster_f.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_core_c.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_core_f.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_f95.tgz -C %(installdir)s/mkl/examples/', +] + +modextravars = { + 'MKL_EXAMPLES': '%(installdir)s/mkl/examples/', +} + +moduleclass = 'numlib' diff --git a/Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281-ipsmpi-2019a.eb b/Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281-ipsmpi-2019a.eb new file mode 100644 index 000000000..4a8b0fa80 --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281-ipsmpi-2019a.eb @@ -0,0 +1,32 @@ +name = 'imkl' +version = '2019.5.281' + +homepage = 'http://software.intel.com/en-us/intel-mkl/' +description = """Intel Math Kernel Library is a library of highly optimized, + extensively threaded math routines for science, engineering, and financial + applications that require maximum performance. Core math functions include + BLAS, LAPACK, ScaLAPACK, Sparse Solvers, Fast Fourier Transforms, Vector Math, and more. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'version': '2019a', 'name': 'ipsmpi'} + +sources = ['l_mkl_%(version)s.tgz'] + +dontcreateinstalldir = 'True' + +postinstallcmds = [ + # extract the examples + 'tar xvzf %(installdir)s/mkl/examples/examples_cluster_c.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_cluster_f.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_core_c.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_core_f.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_f95.tgz -C %(installdir)s/mkl/examples/', +] + +modextravars = { + 'MKL_EXAMPLES': '%(installdir)s/mkl/examples/', +} + +moduleclass = 'numlib' diff --git a/Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281.eb b/Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281.eb new file mode 100644 index 000000000..f8a9289af --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/i/imkl/imkl-2019.5.281.eb @@ -0,0 +1,36 @@ +name = 'imkl' +version = '2019.5.281' + +homepage = 'http://software.intel.com/en-us/intel-mkl/' +description = """Intel Math Kernel Library is a library of highly optimized, + extensively threaded math routines for science, engineering, and financial + applications that require maximum performance. Core math functions include + BLAS, LAPACK, ScaLAPACK, Sparse Solvers, Fast Fourier Transforms, Vector Math, and more. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'version': 'dummy', 'name': 'dummy'} + +sources = ['l_mkl_%(version)s.tgz'] + +dontcreateinstalldir = 'True' + +interfaces = False + +hidden = True + +postinstallcmds = [ + # extract the examples + 'tar xvzf %(installdir)s/mkl/examples/examples_cluster_c.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_cluster_f.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_core_c.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_core_f.tgz -C %(installdir)s/mkl/examples/', + 'tar xvzf %(installdir)s/mkl/examples/examples_f95.tgz -C %(installdir)s/mkl/examples/', +] + +modextravars = { + 'MKL_EXAMPLES': '%(installdir)s/mkl/examples/', +} + +moduleclass = 'numlib' diff --git a/Golden_Repo/2019a/jusuf_overlay/i/intel-para/intel-para-2019a-mt.eb b/Golden_Repo/2019a/jusuf_overlay/i/intel-para/intel-para-2019a-mt.eb new file mode 100644 index 000000000..932ac1ae3 --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/i/intel-para/intel-para-2019a-mt.eb @@ -0,0 +1,27 @@ +easyblock = 'Toolchain' + +name = 'intel-para' +version = '2019a' +versionsuffix = '-mt' + +intelversion = '2019.5.281' +intelsuffix = '-GCC-8.3.0' + +homepage = '' +description = """intel-para provides Intel C/C++ and Fortran compilers, ParaStationMPI & Intel MKL. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'version': '', 'name': 'dummy'} + +dependencies = [ + ('iccifort', intelversion, intelsuffix), + ('icc', intelversion, intelsuffix), + ('ifort', intelversion, intelsuffix), + ('psmpi', '5.2.2-1', versionsuffix, ('iccifort', intelversion+intelsuffix)), + ('imkl', intelversion, '', ('ipsmpi', version+versionsuffix)), +] + + +moduleclass = 'toolchain' diff --git a/Golden_Repo/2019a/jusuf_overlay/i/intel-para/intel-para-2019a.eb b/Golden_Repo/2019a/jusuf_overlay/i/intel-para/intel-para-2019a.eb new file mode 100644 index 000000000..e7acc57d3 --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/i/intel-para/intel-para-2019a.eb @@ -0,0 +1,27 @@ +easyblock = 'Toolchain' + +name = 'intel-para' +version = '2019a' +versionsuffix = '' + +intelversion = '2019.5.281' +intelsuffix = '-GCC-8.3.0' + +homepage = '' +description = """intel-para provides Intel C/C++ and Fortran compilers, ParaStationMPI & Intel MKL. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'version': '', 'name': 'dummy'} + +dependencies = [ + ('iccifort', intelversion, intelsuffix), + ('icc', intelversion, intelsuffix), + ('ifort', intelversion, intelsuffix), + ('psmpi', '5.2.2-1', versionsuffix, ('iccifort', intelversion+intelsuffix)), + ('imkl', intelversion, versionsuffix, ('ipsmpi', version)), +] + + +moduleclass = 'toolchain' diff --git a/Golden_Repo/2019a/jusuf_overlay/i/ipsmpi/ipsmpi-2019a-mt.eb b/Golden_Repo/2019a/jusuf_overlay/i/ipsmpi/ipsmpi-2019a-mt.eb new file mode 100644 index 000000000..9ffceee5e --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/i/ipsmpi/ipsmpi-2019a-mt.eb @@ -0,0 +1,24 @@ +easyblock = "Toolchain" + +name = 'ipsmpi' +version = '2019a' +versionsuffix = '-mt' + +homepage = 'http://software.intel.com/en-us/intel-cluster-toolkit-compiler/' +description = """Intel C/C++ and Fortran compilers, alongside ParaStationMPI. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +compver = '2019.5.281' +gccsuffix = '-GCC-8.3.0' +dependencies = [ + ('iccifort', '%s%s' % (compver, gccsuffix)), + ('icc', compver, gccsuffix), + ('ifort', compver, gccsuffix), + ('psmpi', '5.2.2-1', versionsuffix, ('iccifort', '%s%s' % (compver, gccsuffix))), +] + +moduleclass = 'toolchain' diff --git a/Golden_Repo/2019a/jusuf_overlay/i/ipsmpi/ipsmpi-2019a.eb b/Golden_Repo/2019a/jusuf_overlay/i/ipsmpi/ipsmpi-2019a.eb new file mode 100644 index 000000000..8b1007801 --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/i/ipsmpi/ipsmpi-2019a.eb @@ -0,0 +1,23 @@ +easyblock = "Toolchain" + +name = 'ipsmpi' +version = '2019a' + +homepage = 'http://software.intel.com/en-us/intel-cluster-toolkit-compiler/' +description = """Intel C/C++ and Fortran compilers, alongside ParaStationMPI. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +compver = '2019.5.281' +gccsuffix = '-GCC-8.3.0' +dependencies = [ + ('iccifort', '%s%s' % (compver, gccsuffix)), + ('icc', compver, gccsuffix), + ('ifort', compver, gccsuffix), + ('psmpi', '5.2.2-1', '', ('iccifort', '%s%s' % (compver, gccsuffix))), +] + +moduleclass = 'toolchain' diff --git a/Golden_Repo/2019a/jusuf_overlay/j/JUBE/JUBE-2.3.0.eb b/Golden_Repo/2019a/jusuf_overlay/j/JUBE/JUBE-2.3.0.eb new file mode 100644 index 000000000..dc757b4d9 --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/j/JUBE/JUBE-2.3.0.eb @@ -0,0 +1,32 @@ +easyblock = "VersionIndependentPythonPackage" + +name = "JUBE" +version = "2.3.0" + +homepage = "http://www.fz-juelich.de/jsc/jube" +description = """The JUBE benchmarking environment provides a script based framework to easily create benchmark sets, +run those sets on different computer systems and evaluate the results. +""" + +site_contacts = 's.luehrs@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = ['http://apps.fz-juelich.de/jsc/jube/jube2/download.php?file='] +sources = [SOURCE_TAR_GZ] + +options = {'modulename': 'jube2'} + +sanity_check_paths = { + 'files': ['bin/jube'], + 'dirs': [] +} + +modextrapaths = { + 'JUBE_INCLUDE_PATH': 'platform/slurm' +} + +modluafooter = 'execute {cmd=\'eval "$(jube complete)"\',modeA={"load"}}' + +moduleclass = 'tools' + diff --git a/Golden_Repo/2019a/jusuf_overlay/l/libxc/libxc-3.0.1-iccifort-2019.5.281-GCC-8.3.0.eb b/Golden_Repo/2019a/jusuf_overlay/l/libxc/libxc-3.0.1-iccifort-2019.5.281-GCC-8.3.0.eb new file mode 100644 index 000000000..a8d78279a --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/l/libxc/libxc-3.0.1-iccifort-2019.5.281-GCC-8.3.0.eb @@ -0,0 +1,35 @@ +easyblock = 'ConfigureMake' + +name = 'libxc' +version = '3.0.1' + +homepage = 'http://www.tddft.org/programs/octopus/wiki/index.php/Libxc' +description = """Libxc is a library of exchange-correlation functionals for density-functional theory. + The aim is to provide a portable, well tested and reliable set of exchange and correlation functionals. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'iccifort', 'version': '2019.5.281-GCC-8.3.0'} +toolchainopts = {'opt': True} + +sources = [SOURCELOWER_TAR_GZ] +source_urls = ['http://www.tddft.org/programs/octopus/down.php?file=libxc/%(version)s/'] + +configopts = 'FC="$F77" FCFLAGS="$FFLAGS" --enable-shared --enable-fortran' + +# From the libxc mailing list +# To summarize: expect less tests to fail in libxc 2.0.2, but don't expect +# a fully working testsuite soon (unless someone wants to volunteer to do +# it, of course ) In the meantime, unless the majority of the tests +# fail, your build should be fine. +#runtest = 'check' + +sanity_check_paths = { + 'files': ['lib/libxc.a', 'lib/libxc.%s' % SHLIB_EXT, 'lib/libxcf90.a', 'lib/libxcf90.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +parallel = 1 + +moduleclass = 'chem' diff --git a/Golden_Repo/2019a/jusuf_overlay/n/nvidia/nvidia-driver.eb b/Golden_Repo/2019a/jusuf_overlay/n/nvidia/nvidia-driver.eb new file mode 100644 index 000000000..8da09561c --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/n/nvidia/nvidia-driver.eb @@ -0,0 +1,32 @@ +name = 'nvidia' +version = 'driver' +realversion = '440.33.01' + +homepage = 'https://developer.nvidia.com/cuda-toolkit' +description = """This is a set of libraries normally installed by the NVIDIA driver installer.""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [ + 'http://us.download.nvidia.com/tesla/%s/' % realversion, + 'http://developer.download.nvidia.com/compute/cuda/%s/Prod/local_installers/' % '.'.join(realversion.split('.')[:2]), + 'https://developer.nvidia.com/compute/cuda/%s/prod/local_installers/' % '.'.join(realversion.split('.')[:2]), + 'https://developer.nvidia.com/compute/cuda/%s/Prod2/local_installers/' % '.'.join(realversion.split('.')[:2]), +] + +sources = [ + 'NVIDIA-Linux-x86_64-%s.run' % realversion +] + +# Causes issues pointing to wrong directories +postinstallcmds = [ + 'rm %(installdir)s/lib64/libGL.la' +] + +modluafooter = ''' +add_property("arch","gpu") +''' + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/jusuf_overlay/p/pscom/pscom-Default-GCCcore-8.3.0.eb b/Golden_Repo/2019a/jusuf_overlay/p/pscom/pscom-Default-GCCcore-8.3.0.eb new file mode 100644 index 000000000..63f8e579a --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/p/pscom/pscom-Default-GCCcore-8.3.0.eb @@ -0,0 +1,41 @@ +easyblock = 'ConfigureMake' + +name = 'pscom' +# Create drop-in replacement version that ensures over-riding behaviour +version = "Default" +realversion = "5.3.0-1_115_g12720ef_gateway" +homepage = 'http://www.par-tec.com' +description = """ParaStation is a robust and efficient cluster middleware, consisting of a high-performance +communication layer (MPI) and a sophisticated management layer. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '8.3.0'} + +sources = ['%%(name)s-%s.tar.gz' % realversion] + +builddependencies = [ + ('popt', '1.16', '', True), + ('binutils', '2.32'), +] + +dependencies = [ + ('UCX', '1.6.1'), +] + +sanity_check_paths = { + 'files': ['include/%(name)s.h', + ('lib/libpscom.so', 'lib64/libpscom.so'), + ('lib/libpscom4ucp.so', 'lib64/libpscom4ucp.so'), + ('lib/libpscom4openib.so', 'lib64/libpscom4openib.so'), + ('lib/libpscom4gateway.so', 'lib64/libpscom4gateway.so'), + ], + 'dirs': [], +} + +modextravars = { + 'PSCOMVERSION': '%s' % realversion, +} + +moduleclass = 'tools' diff --git a/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb b/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb new file mode 100644 index 000000000..1fd9bb65c --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb @@ -0,0 +1,35 @@ +name = 'psmpi' +version = '5.2.2-1' + +homepage = 'https://github.com/ParaStation/psmpi2' +description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation, +based on MPICH v3. It provides extra low level communication libraries and integration with +various batch systems for tighter process control. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'GCC', 'version': '8.3.0'} + +sources = ['%(version)s.tar.gz'] +source_urls = ['https://github.com/ParaStation/psmpi/archive/'] + +dependencies = [ + ('pscom', 'Default'), +] + +patches = [ + 'psmpi_shebang.patch' +] + +mpich_opts = '--enable-static' + +threaded = False + +# use a more explicit module name to help our naming scheme +modaltsoftname = 'ParaStationMPI' + +# Add a family for our naming scheme +modluafooter = 'family("mpi")' + +moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb b/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb new file mode 100644 index 000000000..02a078de3 --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb @@ -0,0 +1,36 @@ +name = 'psmpi' +version = '5.2.2-1' +versionsuffix = '-mt' + +homepage = 'https://github.com/ParaStation/psmpi2' +description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation, +based on MPICH v3. It provides extra low level communication libraries and integration with +various batch systems for tighter process control. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'iccifort', 'version': '2019.3.199-GCC-8.3.0'} + +sources = ['%(version)s.tar.gz'] +source_urls = ['https://github.com/ParaStation/psmpi/archive/'] + +dependencies = [ + ('pscom', 'Default'), +] + +patches = [ + 'psmpi_shebang.patch' +] + +mpich_opts = '--enable-static' + +threaded = True + +# use a more explicit module name to help our naming scheme +modaltsoftname = 'ParaStationMPI' + +# Add a family for our naming scheme +modluafooter = 'family("mpi")' + +moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb b/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb new file mode 100644 index 000000000..817c03b11 --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb @@ -0,0 +1,35 @@ +name = 'psmpi' +version = '5.2.2-1' + +homepage = 'https://github.com/ParaStation/psmpi2' +description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation, +based on MPICH v3. It provides extra low level communication libraries and integration with +various batch systems for tighter process control. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'iccifort', 'version': '2019.3.199-GCC-8.3.0'} + +sources = ['%(version)s.tar.gz'] +source_urls = ['https://github.com/ParaStation/psmpi/archive/'] + +dependencies = [ + ('pscom', 'Default'), +] + +patches = [ + 'psmpi_shebang.patch' +] + +mpich_opts = '--enable-static' + +threaded = False + +# use a more explicit module name to help our naming scheme +modaltsoftname = 'ParaStationMPI' + +# Add a family for our naming scheme +modluafooter = 'family("mpi")' + +moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0-mt.eb b/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0-mt.eb new file mode 100644 index 000000000..ee540ce4b --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0-mt.eb @@ -0,0 +1,36 @@ +name = 'psmpi' +version = '5.2.2-1' +versionsuffix = '-mt' + +homepage = 'https://github.com/ParaStation/psmpi2' +description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation, +based on MPICH v3. It provides extra low level communication libraries and integration with +various batch systems for tighter process control. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'iccifort', 'version': '2019.5.281-GCC-8.3.0'} + +sources = ['%(version)s.tar.gz'] +source_urls = ['https://github.com/ParaStation/psmpi/archive/'] + +dependencies = [ + ('pscom', 'Default'), +] + +patches = [ + 'psmpi_shebang.patch' +] + +mpich_opts = '--enable-static' + +threaded = True + +# use a more explicit module name to help our naming scheme +modaltsoftname = 'ParaStationMPI' + +# Add a family for our naming scheme +modluafooter = 'family("mpi")' + +moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0.eb b/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0.eb new file mode 100644 index 000000000..626b52892 --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0.eb @@ -0,0 +1,35 @@ +name = 'psmpi' +version = '5.2.2-1' + +homepage = 'https://github.com/ParaStation/psmpi2' +description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation, +based on MPICH v3. It provides extra low level communication libraries and integration with +various batch systems for tighter process control. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'iccifort', 'version': '2019.5.281-GCC-8.3.0'} + +sources = ['%(version)s.tar.gz'] +source_urls = ['https://github.com/ParaStation/psmpi/archive/'] + +dependencies = [ + ('pscom', 'Default'), +] + +patches = [ + 'psmpi_shebang.patch' +] + +mpich_opts = '--enable-static' + +threaded = False + +# use a more explicit module name to help our naming scheme +modaltsoftname = 'ParaStationMPI' + +# Add a family for our naming scheme +modluafooter = 'family("mpi")' + +moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/jusuf_overlay/u/UDUNITS/UDUNITS-2.2.26-iccifort-2019.5.281-GCC-8.3.0.eb b/Golden_Repo/2019a/jusuf_overlay/u/UDUNITS/UDUNITS-2.2.26-iccifort-2019.5.281-GCC-8.3.0.eb new file mode 100644 index 000000000..0afc2c43a --- /dev/null +++ b/Golden_Repo/2019a/jusuf_overlay/u/UDUNITS/UDUNITS-2.2.26-iccifort-2019.5.281-GCC-8.3.0.eb @@ -0,0 +1,41 @@ +## +# This file is an EasyBuild reciPY as per https://github.com/hpcugent/easybuild +# +# Copyright:: Copyright 2012-2013 University of Luxembourg, Ghent University +# Authors:: Fotis Georgatos <fotis@cern.ch>, Kenneth Hoste (Ghent University) +# License:: MIT/GPL +# $Id$ +# +# This work implements a part of the HPCBIOS project and is a component of the policy: +# http://hpcbios.readthedocs.org/en/latest/HPCBIOS_2012-97.html +## + +easyblock = 'ConfigureMake' + +name = 'UDUNITS' +version = '2.2.26' + +homepage = 'http://www.unidata.ucar.edu/software/udunits/' +description = """UDUNITS supports conversion of unit specifications between formatted and binary forms, + arithmetic manipulation of units, and conversion of values between compatible scales of measurement. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'iccifort', 'version': '2019.5.281-GCC-8.3.0'} +toolchainopts = {'opt': True, 'pic': True} + +sources = [SOURCELOWER_TAR_GZ] +source_urls = ['ftp://ftp.unidata.ucar.edu/pub/udunits'] + +dependencies = [('expat', '2.2.6')] + +sanity_check_paths = { + 'files': ['bin/udunits2', 'include/converter.h', 'include/udunits2.h', 'include/udunits.h', + 'lib/libudunits2.a', 'lib/libudunits2.%s' % SHLIB_EXT], + 'dirs': ['share'], +} + +parallel = 1 + +moduleclass = 'phys' diff --git a/Golden_Repo/2019a/juwels_overlay/m/MVAPICH2/MVAPICH2-2.3.3-GCC-8.3.0-GDR.eb b/Golden_Repo/2019a/juwels_overlay/m/MVAPICH2/MVAPICH2-2.3.3-GCC-8.3.0-GDR.eb new file mode 100644 index 000000000..da3e2d13d --- /dev/null +++ b/Golden_Repo/2019a/juwels_overlay/m/MVAPICH2/MVAPICH2-2.3.3-GCC-8.3.0-GDR.eb @@ -0,0 +1,106 @@ +easyblock = 'Rpm' + +name = 'MVAPICH2' +version = '2.3.3' +versionsuffix = '-GDR' + +homepage = 'http://mvapich.cse.ohio-state.edu/overview/mvapich2/' +description = """This is an MPI 3.0 implementation. It is based on MPICH2 and MVICH. This module loads the following +environment: MVAPICH2 %(version)s MPI tools and libraries for parallel computing. MVAPICH2 uses the launcher of +Parastation MPI. Compiled with threading support (--enable-threads=runtime). + +To avoid conflicting thread/process pinning of the Parastation launcher and MVAPICH the affinity setting of MVAPICH2 has +been deactivated by setting MV2_ENABLE_AFFINITY=0 CUDA support has been enabled by setting MV2_USE_CUDA=1 +""" + +site_contacts = 'sc@fz-juelich.de' + +cudaversion = '10.1.105' +compilerversion = '8.3.0' +cuda_major_minor_ver = '.'.join(cudaversion.split('.')[:2]) + +toolchain = {'name': 'GCC', 'version': compilerversion} + +sources = ['%s%s-mcast.cuda%s.mofed4.6.gnu%s-%s-2.el7.x86_64.rpm' % (name.lower(), versionsuffix.lower(), cuda_major_minor_ver, compilerversion, version)] + +dependencies = [ + ('CUDA', cudaversion, '', True) +] + +builddependencies = [ + ('rpmrebuild','2.14', '', True) +] + +# SLURM exports env vars by default so this is sufficient on JURECA +modextravars = { + 'MV2_PATH':'%(installdir)s', + 'MV2_ENABLE_AFFINITY':'0', + 'MV2_USE_CUDA':'1', + 'MV2_USE_GPUDIRECT_GDRCOPY':'1', + 'MV2_GPUDIRECT_LIMIT': '4194304', + 'LD_PRELOAD': '%(installdir)s/lib64/libmpi.so', + 'MV2_USE_RDMA_CM': '0', +} + +# Ugly hack +installdir = '%(installdir)s' + +path_to_fix = "/opt/mvapich2/gdr/%s/mcast/no-openacc/cuda%s/mofed4.6/mpirun/gnu%s" % (version, cuda_major_minor_ver, compilerversion) + +postinstallcmds = [ + # Move to bin/ lib64/ include/ libexec/ and share/ to the correct directory + "mv %s%s/* %s" % (installdir, path_to_fix, installdir), + # Clean the unneded opt/ + "rm -Rf %s/opt " % installdir, + # Fix paths inside the wrappers + "sed -i s#%s#%s#g %s/bin/mpicc" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpicxx" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpic++" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpif77" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpif90" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpifort" % (path_to_fix, installdir, installdir), + # Replace the stubs to make them point to the nvidia libraries provided by the module + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + # Add -lnvidia-ml inside the wrappers to avoid undefined references in libmpi.so + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpicc", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpicxx", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpic++", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpif77", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpif90", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpifort", + # Add -lmpi before -lcuda. Otherwise the CUDA symbols that libmpi redefines are not picked up from the correct path + # and GDR breaks + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpicc", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpicxx", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpic++", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpif77", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpif90", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpifort", + # Remove launchers + "rm %(installdir)s/bin/mpiexec* %(installdir)s/bin/mpirun*", +] + +# Add a family for our naming scheme +modluafooter = """ +family("mpi") +add_property("arch","gpu") +""" + +moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/juwels_overlay/m/MVAPICH2/MVAPICH2-2.3.3-PGI-19.3-GCC-8.3.0-GDR.eb b/Golden_Repo/2019a/juwels_overlay/m/MVAPICH2/MVAPICH2-2.3.3-PGI-19.3-GCC-8.3.0-GDR.eb new file mode 100644 index 000000000..c4d461974 --- /dev/null +++ b/Golden_Repo/2019a/juwels_overlay/m/MVAPICH2/MVAPICH2-2.3.3-PGI-19.3-GCC-8.3.0-GDR.eb @@ -0,0 +1,121 @@ +easyblock = 'Rpm' + +name = 'MVAPICH2' +version = '2.3.3' +versionsuffix = '-GDR' + +homepage = 'http://mvapich.cse.ohio-state.edu/overview/mvapich2/' +description = """This is an MPI 3.0 implementation. It is based on MPICH2 and MVICH. This module loads the following +environment: MVAPICH2 %(version)s MPI tools and libraries for parallel computing. MVAPICH2 uses the launcher of +Parastation MPI. Compiled with threading support (--enable-threads=runtime). + +To avoid conflicting thread/process pinning of the Parastation launcher and MVAPICH the affinity setting of MVAPICH2 has +been deactivated by setting MV2_ENABLE_AFFINITY=0 CUDA support has been enabled by setting MV2_USE_CUDA=1 +""" + +site_contacts = 'sc@fz-juelich.de' + +cudaversion = '10.1.105' +cuda_major_minor_ver = '.'.join(cudaversion.split('.')[:2]) +# There is a minor version mismatch in this case. This variable refers to the compiler used to compile MVAPICH, not the compiler on the toolchain +compilerversion = '19.1' + +toolchain = {'name': 'PGI', 'version': '19.3-GCC-8.3.0'} + +sources = ['%s%s-mcast.cuda%s.mofed4.6.pgi%s-%s-2.el7.x86_64.rpm' % (name.lower(), versionsuffix.lower(), cuda_major_minor_ver, compilerversion, version)] + +dependencies = [ + ('CUDA', cudaversion, '', True) +] + +builddependencies = [ + ('rpmrebuild', '2.14', '', True) +] + +# SLURM exports env vars by default so this is sufficient on JURECA +modextravars = { + 'MV2_PATH':'%(installdir)s', + 'MV2_ENABLE_AFFINITY':'0', + 'MV2_USE_CUDA':'1', + 'MV2_USE_GPUDIRECT_GDRCOPY':'1', + 'MV2_GPUDIRECT_LIMIT': '4194304', + 'LD_PRELOAD': '%(installdir)s/lib64/libmpi.so', + 'MV2_USE_RDMA_CM': '0', +} + +# Ugly hack +installdir = '%(installdir)s' + +path_to_fix = "/opt/mvapich2/gdr/%s/mcast/no-openacc/cuda%s/mofed4.6/mpirun/pgi%s" % (version, cuda_major_minor_ver, compilerversion) + +postinstallcmds = [ + # Move to bin/ lib64/ include/ libexec/ and share/ to the correct directory + "mv %s%s/* %s" % (installdir, path_to_fix, installdir), + # Clean the unneded opt/ + "rm -Rf %s/opt " % installdir, + # Fix paths inside the wrappers + "sed -i s#%s#%s#g %s/bin/mpicc" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpicxx" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpic++" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpif77" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpif90" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpifort" % (path_to_fix, installdir, installdir), + # Replace the stubs to make them point to the nvidia libraries provided by the module + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + # Add -lnvidia-ml inside the wrappers to avoid undefined references in libmpi.so + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpicc", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpicxx", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpic++", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpif77", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpif90", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpifort", + # Add -lmpi before -lcuda. Otherwise the CUDA symbols that libmpi redefines are not picked up from the correct path + # and GDR breaks + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpicc", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpicxx", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpic++", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpif77", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpif90", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpifort", + # Remove -g + "sed -i s#' -g '#' '#g %(installdir)s/bin/mpicc", + "sed -i s#' -g '#' '#g %(installdir)s/bin/mpicxx", + "sed -i s#' -g '#' '#g %(installdir)s/bin/mpic++", + "sed -i s#' -g '#' '#g %(installdir)s/bin/mpif77", + "sed -i s#' -g '#' '#g %(installdir)s/bin/mpif90", + "sed -i s#' -g '#' '#g %(installdir)s/bin/mpifort", + # Remove -tp=px + "sed -i s#'-tp=px'#''#g %(installdir)s/bin/mpicc", + "sed -i s#'-tp=px'#''#g %(installdir)s/bin/mpicxx", + "sed -i s#'-tp=px'#''#g %(installdir)s/bin/mpic++", + "sed -i s#'-tp=px'#''#g %(installdir)s/bin/mpif77", + "sed -i s#'-tp=px'#''#g %(installdir)s/bin/mpif90", + "sed -i s#'-tp=px'#''#g %(installdir)s/bin/mpifort", + # Remove launchers + "rm %(installdir)s/bin/mpiexec* %(installdir)s/bin/mpirun*", +] + +# Add a family for our naming scheme +modluafooter = """ +family("mpi") +add_property("arch","gpu") +""" + +moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/knl_overlay/i/impi-settings/impi-settings-2019-default.eb b/Golden_Repo/2019a/knl_overlay/i/impi-settings/impi-settings-2019-default.eb new file mode 100644 index 000000000..57c502e70 --- /dev/null +++ b/Golden_Repo/2019a/knl_overlay/i/impi-settings/impi-settings-2019-default.eb @@ -0,0 +1,25 @@ +easyblock = 'SystemBundle' + +name = 'impi-settings' +version = '2019' +versionsuffix = 'default' + +homepage = '' +description = """This is a module to load the default IntelMPI configuration""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { +# 'UCX_TLS': 'dc_x,sm,self' + 'I_MPI_PMI_VALUE_LENGTH_MAX': '900', + # Needed for PSM and harmless for InfiniBand. For ParaStation it is set on the pscom module + 'HFI_NO_CPUAFFINITY': 'YES', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/knl_overlay/i/impi/impi-2019.3.199-iccifort-2019.3.199-GCC-8.3.0.eb b/Golden_Repo/2019a/knl_overlay/i/impi/impi-2019.3.199-iccifort-2019.3.199-GCC-8.3.0.eb index 31dea19cf..75946eb01 100644 --- a/Golden_Repo/2019a/knl_overlay/i/impi/impi-2019.3.199-iccifort-2019.3.199-GCC-8.3.0.eb +++ b/Golden_Repo/2019a/knl_overlay/i/impi/impi-2019.3.199-iccifort-2019.3.199-GCC-8.3.0.eb @@ -26,23 +26,22 @@ postinstallcmds = [ # use a more explicit module name to help our naming scheme modaltsoftname = 'IntelMPI' -# Add a family for our naming scheme -modluafooter = 'family("mpi")' dontcreateinstalldir = 'True' # set up all the mpi commands to work as expected set_mpi_wrappers_all = 'True' modextravars = { -# 'I_MPI_OFA_TRANSLATION_CACHE': '0', -# 'I_MPI_DAPL_TRANSLATION_CACHE': '0', - # Needed for PSM and harmless for InfiniBand. For ParaStation it is set on the pscom module - 'HFI_NO_CPUAFFINITY': 'YES', # The default algorithms hang for large core counts 'I_MPI_ADJUST_GATHER': '1', 'I_MPI_ADJUST_GATHERV': '3', } -#modloadmsg = 'This version of Intel MPI have serious issues. Particularly with certain collective functions at large\n' -#modloadmsg += 'core counts. Please load version 2018.4 instead' +# Add a family for our naming scheme +modluafooter = ''' +family("mpi") +if not ( isloaded("mpi-settings/default") ) then + load("mpi-settings/default") +end +''' moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/knl_overlay/p/psmpi-settings/psmpi-settings-5.2-default.eb b/Golden_Repo/2019a/knl_overlay/p/psmpi-settings/psmpi-settings-5.2-default.eb new file mode 100644 index 000000000..dc2ecb9f2 --- /dev/null +++ b/Golden_Repo/2019a/knl_overlay/p/psmpi-settings/psmpi-settings-5.2-default.eb @@ -0,0 +1,23 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.2' +versionsuffix = 'default' + +homepage = '' +description = """This is a module to load the default ParaStationMPI configuration""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'PSP_READAHEAD': '4096', + 'HFI_NO_CPUAFFINITY': '1', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/knl_overlay/p/psmpi-settings/psmpi-settings-5.2-mt-default.eb b/Golden_Repo/2019a/knl_overlay/p/psmpi-settings/psmpi-settings-5.2-mt-default.eb new file mode 100644 index 000000000..da0250abc --- /dev/null +++ b/Golden_Repo/2019a/knl_overlay/p/psmpi-settings/psmpi-settings-5.2-mt-default.eb @@ -0,0 +1,23 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.2-mt' +versionsuffix = 'default' + +homepage = '' +description = """This is a module to load the default ParaStationMPI configuration""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'PSP_READAHEAD': '4096', + 'HFI_NO_CPUAFFINITY': '1', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/knl_overlay/p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb b/Golden_Repo/2019a/knl_overlay/p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb index 8183ebedb..f846c7f09 100644 --- a/Golden_Repo/2019a/knl_overlay/p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb +++ b/Golden_Repo/2019a/knl_overlay/p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb @@ -44,15 +44,15 @@ threaded = False configopts = ' --with-pscom-builtin=psm2 ' -modextravars = { - 'PSP_READAHEAD': '4096', - 'HFI_NO_CPUAFFINITY': '1' -} - # use a more explicit module name to help our naming scheme modaltsoftname = 'ParaStationMPI' # Add a family for our naming scheme -modluafooter = 'family("mpi")' +modluafooter = ''' +family("mpi") +if not ( isloaded("mpi-settings/default") ) then + load("mpi-settings/default") +end +''' moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/knl_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb b/Golden_Repo/2019a/knl_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb index 1efbd7dfd..9a854fa52 100644 --- a/Golden_Repo/2019a/knl_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb +++ b/Golden_Repo/2019a/knl_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb @@ -45,15 +45,15 @@ threaded = True configopts = ' --with-pscom-builtin=psm2 ' -modextravars = { - 'PSP_READAHEAD': '4096', - 'HFI_NO_CPUAFFINITY': '1' -} - # use a more explicit module name to help our naming scheme modaltsoftname = 'ParaStationMPI' # Add a family for our naming scheme -modluafooter = 'family("mpi")' +modluafooter = ''' +family("mpi") +if not ( isloaded("mpi-settings/default") ) then + load("mpi-settings/default") +end +''' moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/knl_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb b/Golden_Repo/2019a/knl_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb index 4a1d38ed9..c8b31af4c 100644 --- a/Golden_Repo/2019a/knl_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb +++ b/Golden_Repo/2019a/knl_overlay/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb @@ -44,15 +44,15 @@ threaded = False configopts = ' --with-pscom-builtin=psm2 ' -modextravars = { - 'PSP_READAHEAD': '4096', - 'HFI_NO_CPUAFFINITY': '1' -} - # use a more explicit module name to help our naming scheme modaltsoftname = 'ParaStationMPI' # Add a family for our naming scheme -modluafooter = 'family("mpi")' +modluafooter = ''' +family("mpi") +if not ( isloaded("mpi-settings/default") ) then + load("mpi-settings/default") +end +''' moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/l/libxsmm/libxsmm-1.14-iccifort-2019.3.199-GCC-8.3.0.eb b/Golden_Repo/2019a/l/libxsmm/libxsmm-1.14-iccifort-2019.3.199-GCC-8.3.0.eb new file mode 100644 index 000000000..dcf79068c --- /dev/null +++ b/Golden_Repo/2019a/l/libxsmm/libxsmm-1.14-iccifort-2019.3.199-GCC-8.3.0.eb @@ -0,0 +1,34 @@ +easyblock = 'ConfigureMake' + +name = 'libxsmm' +version = '1.14' + +homepage = 'https://github.com/hfp/libxsmm' +description = """LIBXSMM is a library for small dense and small sparse matrix-matrix multiplications +targeting Intel Architecture (x86).""" + +site_contacts = "sc@fz-juelich.de" + +toolchain = {'name': 'iccifort', 'version': '2019.3.199-GCC-8.3.0'} + +sources = ['%(version)s.tar.gz'] +source_urls = ['https://github.com/hfp/libxsmm/archive/'] + +dependencies = [ + ('imkl', '2019.3.199', '', True), +] + +# install both static and dynamic version +installopts = ['PREFIX=%(installdir)s', 'PREFIX=%(installdir)s STATIC=0'] + +skipsteps = ['configure'] +maxparallel = 1 + +runtest = "STATIC=0 test" + +sanity_check_paths = { + 'files': ['bin/libxsmm_gemm_generator', 'include/libxsmm.h', 'lib/libxsmm.a', 'lib/libxsmm.%s' % SHLIB_EXT], + 'dirs': ['share'] +} + +moduleclass = 'math' diff --git a/Golden_Repo/2019a/m/MVAPICH2-settings/MVAPICH2-2.3-GDR-default.eb b/Golden_Repo/2019a/m/MVAPICH2-settings/MVAPICH2-2.3-GDR-default.eb new file mode 100644 index 000000000..82a0207ac --- /dev/null +++ b/Golden_Repo/2019a/m/MVAPICH2-settings/MVAPICH2-2.3-GDR-default.eb @@ -0,0 +1,26 @@ +easyblock = 'SystemBundle' + +name = 'MVAPICH2-settings' +version = '2.3-GDR' +versionsuffix = 'default' + +homepage = '' +description = """This is a module to load the default MVAPICH2 GDR configuration""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'MV2_ENABLE_AFFINITY':'0', + 'MV2_USE_CUDA':'1', + 'MV2_USE_GPUDIRECT_GDRCOPY':'1', + 'MV2_USE_RDMA_CM':'0', + 'MV2_GPUDIRECT_LIMIT': '4194304', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.2-GCC-8.3.0-GDR.eb b/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.2-GCC-8.3.0-GDR.eb index 48a5b5d31..ce84284c1 100644 --- a/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.2-GCC-8.3.0-GDR.eb +++ b/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.2-GCC-8.3.0-GDR.eb @@ -57,12 +57,12 @@ postinstallcmds = [ "sed -i s#%s#%s#g %s/bin/mpif90" % (path_to_fix, installdir, installdir), "sed -i s#%s#%s#g %s/bin/mpifort" % (path_to_fix, installdir, installdir), # Replace the stubs to make them point to the nvidia libraries provided by the module - "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), - "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), - "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), - "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), - "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), - "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#\$EBROOTNVIDIA/lib64#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#\$EBROOTNVIDIA/lib64#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#\$EBROOTNVIDIA/lib64#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#\$EBROOTNVIDIA/lib64#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#\$EBROOTNVIDIA/lib64#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#\$EBROOTNVIDIA/lib64#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), diff --git a/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.2-PGI-19.3-GCC-8.3.0-GDR.eb b/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.2-PGI-19.3-GCC-8.3.0-GDR.eb index 029db42e1..7b8f1e1eb 100644 --- a/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.2-PGI-19.3-GCC-8.3.0-GDR.eb +++ b/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.2-PGI-19.3-GCC-8.3.0-GDR.eb @@ -58,12 +58,12 @@ postinstallcmds = [ "sed -i s#%s#%s#g %s/bin/mpif90" % (path_to_fix, installdir, installdir), "sed -i s#%s#%s#g %s/bin/mpifort" % (path_to_fix, installdir, installdir), # Replace the stubs to make them point to the nvidia libraries provided by the module - "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), - "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), - "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), - "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), - "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), - "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#\$EBROOTNVIDIA/lib64#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#\$EBROOTNVIDIA/lib64#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#\$EBROOTNVIDIA/lib64#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#\$EBROOTNVIDIA/lib64#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#\$EBROOTNVIDIA/lib64#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#\$EBROOTNVIDIA/lib64#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), diff --git a/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.3-GCC-8.3.0-GDR.eb b/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.3-GCC-8.3.0-GDR.eb new file mode 100644 index 000000000..1a43b3684 --- /dev/null +++ b/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.3-GCC-8.3.0-GDR.eb @@ -0,0 +1,103 @@ +easyblock = 'Rpm' + +name = 'MVAPICH2' +version = '2.3.3' +versionsuffix = '-GDR' + +homepage = 'http://mvapich.cse.ohio-state.edu/overview/mvapich2/' +description = """This is an MPI 3.0 implementation. It is based on MPICH2 and MVICH. This module loads the following +environment: MVAPICH2 %(version)s MPI tools and libraries for parallel computing. MVAPICH2 uses the launcher of +Parastation MPI. Compiled with threading support (--enable-threads=runtime). + +To avoid conflicting thread/process pinning of the Parastation launcher and MVAPICH the affinity setting of MVAPICH2 has +been deactivated by setting MV2_ENABLE_AFFINITY=0 CUDA support has been enabled by setting MV2_USE_CUDA=1 +""" + +site_contacts = 'sc@fz-juelich.de' + +cudaversion = '10.1.105' +compilerversion = '8.3.0' +cuda_major_minor_ver = '.'.join(cudaversion.split('.')[:2]) + +toolchain = {'name': 'GCC', 'version': compilerversion} + +sources = ['%s%s-mcast.cuda%s.mofed4.6.gnu%s-%s-2.el7.x86_64.rpm' % (name.lower(), versionsuffix.lower(), cuda_major_minor_ver, compilerversion, version)] + +dependencies = [ + ('CUDA', cudaversion, '', True) +] + +builddependencies = [ + ('rpmrebuild','2.14', '', True) +] + +modextravars = { + 'MV2_PATH':'%(installdir)s', + 'LD_PRELOAD': '%(installdir)s/lib64/libmpi.so', +} + +# Ugly hack +installdir = '%(installdir)s' + +path_to_fix = "/opt/mvapich2/gdr/%s/mcast/no-openacc/cuda%s/mofed4.6/mpirun/gnu%s" % (version, cuda_major_minor_ver, compilerversion) + +postinstallcmds = [ + # Move to bin/ lib64/ include/ libexec/ and share/ to the correct directory + "mv %s%s/* %s" % (installdir, path_to_fix, installdir), + # Clean the unneded opt/ + "rm -Rf %s/opt " % installdir, + # Fix paths inside the wrappers + "sed -i s#%s#%s#g %s/bin/mpicc" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpicxx" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpic++" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpif77" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpif90" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpifort" % (path_to_fix, installdir, installdir), + # Replace the stubs to make them point to the nvidia libraries provided by the module + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + # Add -lnvidia-ml inside the wrappers to avoid undefined references in libmpi.so + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpicc", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpicxx", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpic++", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpif77", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpif90", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpifort", + # Add -lmpi before -lcuda. Otherwise the CUDA symbols that libmpi redefines are not picked up from the correct path + # and GDR breaks + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpicc", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpicxx", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpic++", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpif77", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpif90", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpifort", + # Remove launchers + "rm %(installdir)s/bin/mpiexec* %(installdir)s/bin/mpirun*", +] + +# Add a family for our naming scheme +modluafooter = """ +family("mpi") +add_property("arch","gpu") +if not ( isloaded("mpi-settings/default") ) then + load("mpi-settings/default") +end +""" + +moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.3-PGI-19.3-GCC-8.3.0-GDR.eb b/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.3-PGI-19.3-GCC-8.3.0-GDR.eb new file mode 100644 index 000000000..b1fe9d0f4 --- /dev/null +++ b/Golden_Repo/2019a/m/MVAPICH2/MVAPICH2-2.3.3-PGI-19.3-GCC-8.3.0-GDR.eb @@ -0,0 +1,118 @@ +easyblock = 'Rpm' + +name = 'MVAPICH2' +version = '2.3.3' +versionsuffix = '-GDR' + +homepage = 'http://mvapich.cse.ohio-state.edu/overview/mvapich2/' +description = """This is an MPI 3.0 implementation. It is based on MPICH2 and MVICH. This module loads the following +environment: MVAPICH2 %(version)s MPI tools and libraries for parallel computing. MVAPICH2 uses the launcher of +Parastation MPI. Compiled with threading support (--enable-threads=runtime). + +To avoid conflicting thread/process pinning of the Parastation launcher and MVAPICH the affinity setting of MVAPICH2 has +been deactivated by setting MV2_ENABLE_AFFINITY=0 CUDA support has been enabled by setting MV2_USE_CUDA=1 +""" + +site_contacts = 'sc@fz-juelich.de' + +cudaversion = '10.1.105' +cuda_major_minor_ver = '.'.join(cudaversion.split('.')[:2]) +# There is a minor version mismatch in this case. This variable refers to the compiler used to compile MVAPICH, not the compiler on the toolchain +compilerversion = '19.1' + +toolchain = {'name': 'PGI', 'version': '19.3-GCC-8.3.0'} + +sources = ['%s%s-mcast.cuda%s.mofed4.6.pgi%s-%s-2.el7.x86_64.rpm' % (name.lower(), versionsuffix.lower(), cuda_major_minor_ver, compilerversion, version)] + +dependencies = [ + ('CUDA', cudaversion, '', True) +] + +builddependencies = [ + ('rpmrebuild', '2.14', '', True) +] + +modextravars = { + 'MV2_PATH':'%(installdir)s', + 'LD_PRELOAD': '%(installdir)s/lib64/libmpi.so', +} + +# Ugly hack +installdir = '%(installdir)s' + +path_to_fix = "/opt/mvapich2/gdr/%s/mcast/no-openacc/cuda%s/mofed4.6/mpirun/pgi%s" % (version, cuda_major_minor_ver, compilerversion) + +postinstallcmds = [ + # Move to bin/ lib64/ include/ libexec/ and share/ to the correct directory + "mv %s%s/* %s" % (installdir, path_to_fix, installdir), + # Clean the unneded opt/ + "rm -Rf %s/opt " % installdir, + # Fix paths inside the wrappers + "sed -i s#%s#%s#g %s/bin/mpicc" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpicxx" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpic++" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpif77" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpif90" % (path_to_fix, installdir, installdir), + "sed -i s#%s#%s#g %s/bin/mpifort" % (path_to_fix, installdir, installdir), + # Replace the stubs to make them point to the nvidia libraries provided by the module + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s/lib64/stubs#$EBROOTNVIDIA/lib64#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + "sed -i s#/usr/local/cuda-%s#$EBROOTCUDA#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpicc" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpicxx" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpic++" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpif77" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpif90" % (cuda_major_minor_ver, installdir), + #"sed -i s#/opt/cuda/%s#$EBROOTCUDA#g %s/bin/mpifort" % (cuda_major_minor_ver, installdir), + # Add -lnvidia-ml inside the wrappers to avoid undefined references in libmpi.so + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpicc", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpicxx", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpic++", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpif77", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpif90", + "sed -i s#'-lmpi '#'-lmpi -lnvidia-ml '#g %(installdir)s/bin/mpifort", + # Add -lmpi before -lcuda. Otherwise the CUDA symbols that libmpi redefines are not picked up from the correct path + # and GDR breaks + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpicc", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpicxx", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpic++", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpif77", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpif90", + "sed -i s#'final_ldflags=\" '#'final_ldflags=\" -lmpi '#g %(installdir)s/bin/mpifort", + # Remove -g + "sed -i s#' -g '#' '#g %(installdir)s/bin/mpicc", + "sed -i s#' -g '#' '#g %(installdir)s/bin/mpicxx", + "sed -i s#' -g '#' '#g %(installdir)s/bin/mpic++", + "sed -i s#' -g '#' '#g %(installdir)s/bin/mpif77", + "sed -i s#' -g '#' '#g %(installdir)s/bin/mpif90", + "sed -i s#' -g '#' '#g %(installdir)s/bin/mpifort", + # Remove -tp=px + "sed -i s#'-tp=px'#''#g %(installdir)s/bin/mpicc", + "sed -i s#'-tp=px'#''#g %(installdir)s/bin/mpicxx", + "sed -i s#'-tp=px'#''#g %(installdir)s/bin/mpic++", + "sed -i s#'-tp=px'#''#g %(installdir)s/bin/mpif77", + "sed -i s#'-tp=px'#''#g %(installdir)s/bin/mpif90", + "sed -i s#'-tp=px'#''#g %(installdir)s/bin/mpifort", + # Remove launchers + "rm %(installdir)s/bin/mpiexec* %(installdir)s/bin/mpirun*", +] + +# Add a family for our naming scheme +modluafooter = """ +family("mpi") +add_property("arch","gpu") +if not ( isloaded("mpi-settings/default") ) then + load("mpi-settings/default") +end +""" + +moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/n/nvidia/nvidia-driver.eb b/Golden_Repo/2019a/n/nvidia/nvidia-driver.eb new file mode 100644 index 000000000..113c5fda8 --- /dev/null +++ b/Golden_Repo/2019a/n/nvidia/nvidia-driver.eb @@ -0,0 +1,32 @@ +name = 'nvidia' +version = 'driver' +realversion = '418.87.00' + +homepage = 'https://developer.nvidia.com/cuda-toolkit' +description = """This is a set of libraries normally installed by the NVIDIA driver installer.""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [ + 'http://us.download.nvidia.com/tesla/%s/' % realversion, + 'http://developer.download.nvidia.com/compute/cuda/%s/Prod/local_installers/' % '.'.join(realversion.split('.')[:2]), + 'https://developer.nvidia.com/compute/cuda/%s/prod/local_installers/' % '.'.join(realversion.split('.')[:2]), + 'https://developer.nvidia.com/compute/cuda/%s/Prod2/local_installers/' % '.'.join(realversion.split('.')[:2]), +] + +sources = [ + 'NVIDIA-Linux-x86_64-%s.run' % realversion +] + +# Causes issues pointing to wrong directories +postinstallcmds = [ + 'rm %(installdir)s/lib64/libGL.la' +] + +modluafooter = ''' +add_property("arch","gpu") +''' + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/p/PGI/PGI-19.10-GCC-8.3.0.eb b/Golden_Repo/2019a/p/PGI/PGI-19.10-GCC-8.3.0.eb new file mode 100644 index 000000000..dbda3e86d --- /dev/null +++ b/Golden_Repo/2019a/p/PGI/PGI-19.10-GCC-8.3.0.eb @@ -0,0 +1,39 @@ +name = 'PGI' +version = '19.10' +binutilsver = '2.32' +gccver = '8.3.0' +versionsuffix = '-GCC-%s' % gccver + +homepage = 'http://www.pgroup.com/' +description = """C, C++ and Fortran compilers from The Portland Group - PGI""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': ''} + +sources = ['pgilinux-20%(version_major)s-%(version_major)s%(version_minor)s-x86-64.tar.gz'] + +dependencies = [ + ('GCCcore', gccver), + ('binutils', binutilsver, '', ('GCCcore', gccver)), + # This is necessary to avoid cases where just libnuma.so.1 is present in the system and -lnuma fails + ('numactl', '2.0.12', '', ('GCCcore', gccver)), +] + +install_amd = False +install_managed = True +install_nvidia = True +install_java = True + +# We use a HMNS, so let's enforce a unique compiler +modluafooter = 'family("compiler")' + +# Always do a recursive unload on compilers +recursive_module_unload = True + +#postinstallcmds = [ +# 'echo "switch -pthread is replace(-lpthread) positional(linker);" >> %(installdir)s/linux86-64/%(version)s/bin/siterc', +#] + +# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS) +moduleclass = 'compiler' diff --git a/Golden_Repo/2019a/p/PLUMED/PLUMED-2.5.3-intel-2019a.eb b/Golden_Repo/2019a/p/PLUMED/PLUMED-2.5.3-intel-2019a.eb new file mode 100644 index 000000000..5ad309757 --- /dev/null +++ b/Golden_Repo/2019a/p/PLUMED/PLUMED-2.5.3-intel-2019a.eb @@ -0,0 +1,50 @@ +# by Ward Poelmans <wpoely86@gmail.com> +# +easyblock = 'ConfigureMake' + +name = 'PLUMED' +version = '2.5.3' + +homepage = 'http://www.plumed.org' +description = """PLUMED is an open source library for free energy calculations in molecular systems which + works together with some of the most popular molecular dynamics engines. Free energy calculations can be + performed as a function of many order parameters with a particular focus on biological problems, using + state of the art methods such as metadynamics, umbrella sampling and Jarzynski-equation based steered MD. + The software, written in C++, can be easily interfaced with both fortran and C/C++ codes. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'intel', 'version': '2019a'} +toolchainopts = {'usempi': 'True'} + +source_urls = ['https://github.com/plumed/plumed2/archive/'] +sources = ['v%(version)s.tar.gz'] + +patches = [ + #'plumed_2.3.3_gromacs_2016.4.patch', + # Plumed 2.5.1 caused an assertion error in BFD with ld -r -o (binutils 2.31.1). ld.gold seems to link fine. + 'plumed_ld.gold.patch', +] + +dependencies = [ + ('zlib', '1.2.11'), + ('GSL', '2.5'), + ('libmatheval', '1.1.11'), +] + +preconfigopts = 'env FC=$MPIF90 LIBS="$LIBLAPACK $LIBS" ' +configopts = ' --exec-prefix=%(installdir)s --enable-gsl --enable-modules=all' +prebuildopts = 'source sourceme.sh && ' + +sanity_check_paths = { + 'files': ['bin/plumed', 'lib/libplumedKernel.%s' % SHLIB_EXT, 'lib/libplumed.%s' % SHLIB_EXT], + 'dirs': ['lib/plumed'] +} + +modextrapaths = { + 'PLUMED_KERNEL': 'lib/libplumedKernel.%s' % SHLIB_EXT, + 'PLUMED_ROOT': 'lib/plumed', +} + +moduleclass = 'chem' diff --git a/Golden_Repo/2019a/p/PLUMED/PLUMED-2.5.3-intel-para-2019a.eb b/Golden_Repo/2019a/p/PLUMED/PLUMED-2.5.3-intel-para-2019a.eb new file mode 100644 index 000000000..bb7f157e3 --- /dev/null +++ b/Golden_Repo/2019a/p/PLUMED/PLUMED-2.5.3-intel-para-2019a.eb @@ -0,0 +1,50 @@ +# by Ward Poelmans <wpoely86@gmail.com> +# +easyblock = 'ConfigureMake' + +name = 'PLUMED' +version = '2.5.3' + +homepage = 'http://www.plumed.org' +description = """PLUMED is an open source library for free energy calculations in molecular systems which + works together with some of the most popular molecular dynamics engines. Free energy calculations can be + performed as a function of many order parameters with a particular focus on biological problems, using + state of the art methods such as metadynamics, umbrella sampling and Jarzynski-equation based steered MD. + The software, written in C++, can be easily interfaced with both fortran and C/C++ codes. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'intel-para', 'version': '2019a'} +toolchainopts = {'usempi': 'True'} + +source_urls = ['https://github.com/plumed/plumed2/archive/'] +sources = ['v%(version)s.tar.gz'] + +patches = [ + #'plumed_2.3.3_gromacs_2016.4.patch', + # Plumed 2.5.1 caused an assertion error in BFD with ld -r -o (binutils 2.31.1). ld.gold seems to link fine. + 'plumed_ld.gold.patch', +] + +dependencies = [ + ('zlib', '1.2.11'), + ('GSL', '2.5'), + ('libmatheval', '1.1.11'), +] + +preconfigopts = 'env FC=$MPIF90 LIBS="$LIBLAPACK $LIBS" ' +configopts = ' --exec-prefix=%(installdir)s --enable-gsl --enable-modules=all' +prebuildopts = 'source sourceme.sh && ' + +sanity_check_paths = { + 'files': ['bin/plumed', 'lib/libplumedKernel.%s' % SHLIB_EXT, 'lib/libplumed.%s' % SHLIB_EXT], + 'dirs': ['lib/plumed'] +} + +modextrapaths = { + 'PLUMED_KERNEL': 'lib/libplumedKernel.%s' % SHLIB_EXT, + 'PLUMED_ROOT': 'lib/plumed', +} + +moduleclass = 'chem' diff --git a/Golden_Repo/2019a/p/pscom/pscom-5.2-default.eb b/Golden_Repo/2019a/p/pscom/pscom-5.2-default.eb new file mode 100644 index 000000000..17608f59a --- /dev/null +++ b/Golden_Repo/2019a/p/pscom/pscom-5.2-default.eb @@ -0,0 +1,36 @@ +easyblock = 'ConfigureMake' + +name = 'pscom' +# Create drop-in replacement version that ensures over-riding behaviour +version = "5.2-default" +realversion = "5.3.0-1_115_g12720ef_gateway" +homepage = 'http://www.par-tec.com' +description = """ParaStation is a robust and efficient cluster middleware, consisting of a high-performance +communication layer (MPI) and a sophisticated management layer. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': ''} + +sources = ['%%(name)s-%s.tar.gz' % realversion] + +builddependencies = [ + ('popt', '1.16'), +] + +sanity_check_paths = { + 'files': ['include/%(name)s.h', + ('lib/libpscom.so', 'lib64/libpscom.so'), + ('lib/libpscom4ucp.so', 'lib64/libpscom4ucp.so'), + ('lib/libpscom4openib.so', 'lib64/libpscom4openib.so'), + ('lib/libpscom4gateway.so', 'lib64/libpscom4gateway.so'), + ], + 'dirs': [], +} + +modextravars = { + 'PSCOMVERSION': '%s' % realversion, +} + +moduleclass = 'tools' diff --git a/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-UCX-RC.eb b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-UCX-RC.eb new file mode 100644 index 000000000..8eff75b00 --- /dev/null +++ b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-UCX-RC.eb @@ -0,0 +1,23 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.2' +versionsuffix = 'UCX-RC' + +homepage = '' +description = """This is a module to load the ParaStationMPI settings to be used with UCX and RC as TL""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'PSP_UCP': '1', + 'UCX_TLS': 'rc_x,self,sm', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-UCX-UD.eb b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-UCX-UD.eb new file mode 100644 index 000000000..2681244b0 --- /dev/null +++ b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-UCX-UD.eb @@ -0,0 +1,23 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.2' +versionsuffix = 'UCX-UD' + +homepage = '' +description = """This is a module to load the ParaStationMPI settings to be used with UCX and UD as TL""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'PSP_UCP': '1', + 'UCX_TLS': 'ud_x,self,sm', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-default.eb b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-default.eb new file mode 100644 index 000000000..34e850105 --- /dev/null +++ b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-default.eb @@ -0,0 +1,18 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.2' +versionsuffix = 'default' + +homepage = '' +description = """This is a module to load the default ParaStationMPI configuration""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-large-job-hybrid.eb b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-large-job-hybrid.eb new file mode 100644 index 000000000..b8470f8f1 --- /dev/null +++ b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-large-job-hybrid.eb @@ -0,0 +1,23 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.2' +versionsuffix = 'large-job-hybrid' + +homepage = '' +description = """This is a module to load the ParaStationMPI settings to be used for large scale hybrid jobs""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'PSP_UCP': '1', + 'UCX_TLS': 'ud_x,self,sm', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-large-job-mpi.eb b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-large-job-mpi.eb new file mode 100644 index 000000000..a9a03ace9 --- /dev/null +++ b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-large-job-mpi.eb @@ -0,0 +1,24 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.2' +versionsuffix = 'large-job-mpi' + +homepage = '' +description = """This is a module to load the ParaStationMPI settings to be used for large scale MPI jobs""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'PSP_UCP': '1', + 'UCX_TLS': 'ud_x,self,sm', + 'PSP_SHM': '0', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-UCX-RC.eb b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-UCX-RC.eb new file mode 100644 index 000000000..a5ef4cee9 --- /dev/null +++ b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-UCX-RC.eb @@ -0,0 +1,23 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.2-mt' +versionsuffix = 'UCX-RC' + +homepage = '' +description = """This is a module to load the ParaStationMPI settings to be used with UCX and RC as TL""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'PSP_UCP': '1', + 'UCX_TLS': 'rc_x,self,sm', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-UCX-UD.eb b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-UCX-UD.eb new file mode 100644 index 000000000..6831ae9ba --- /dev/null +++ b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-UCX-UD.eb @@ -0,0 +1,23 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.2-mt' +versionsuffix = 'UCX-UD' + +homepage = '' +description = """This is a module to load the ParaStationMPI settings to be used with UCX and UD as TL""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'PSP_UCP': '1', + 'UCX_TLS': 'ud_x,self,sm', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-default.eb b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-default.eb new file mode 100644 index 000000000..252f93b24 --- /dev/null +++ b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-default.eb @@ -0,0 +1,18 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.2-mt' +versionsuffix = 'default' + +homepage = '' +description = """This is a module to load the default ParaStationMPI configuration""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-large-job-hybrid.eb b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-large-job-hybrid.eb new file mode 100644 index 000000000..4679b0af1 --- /dev/null +++ b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-large-job-hybrid.eb @@ -0,0 +1,23 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.2-mt' +versionsuffix = 'large-job-hybrid' + +homepage = '' +description = """This is a module to load the ParaStationMPI settings to be used for large scale hybrid jobs""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'PSP_UCP': '1', + 'UCX_TLS': 'ud_x,self,sm', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-large-job-mpi.eb b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-large-job-mpi.eb new file mode 100644 index 000000000..0be2e5422 --- /dev/null +++ b/Golden_Repo/2019a/p/psmpi-settings/psmpi-settings-5.2-mt-large-job-mpi.eb @@ -0,0 +1,24 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.2-mt' +versionsuffix = 'large-job-mpi' + +homepage = '' +description = """This is a module to load the ParaStationMPI settings to be used for large scale MPI jobs""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'dummy', 'version': 'dummy'} + +source_urls = [] + +sources = [] + +modextravars = { + 'PSP_UCP': '1', + 'UCX_TLS': 'ud_x,self,sm', + 'PSP_SHM': '0', +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb b/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb index 532ee89df..4b59481a5 100644 --- a/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb +++ b/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-GCC-8.3.0.eb @@ -15,11 +15,11 @@ sources = ['%(version)s.tar.gz'] source_urls = ['https://github.com/ParaStation/psmpi/archive/'] dependencies = [ - ('pscom', 'Default', '', True), + ('pscom', '5.2-default', '', True), # This should be a temporary fix. UCX should be a dependency of pscom. But at the moment, pscom is in "dummy" and # UCX is in GCCcore, so pscom can't load UCX. As an alternative to pull pscom high in the hierarchy during production # we load UCX here to override the system one - ('UCX', '1.5.1'), + ('UCX', '1.6.1'), ] patches = [ @@ -34,6 +34,11 @@ threaded = False modaltsoftname = 'ParaStationMPI' # Add a family for our naming scheme -modluafooter = 'family("mpi")' +modluafooter = ''' +family("mpi") +if not ( isloaded("mpi-settings/default") ) then + load("mpi-settings/default") +end +''' moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb b/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb index def613909..bc908379b 100644 --- a/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb +++ b/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0-mt.eb @@ -16,11 +16,11 @@ sources = ['%(version)s.tar.gz'] source_urls = ['https://github.com/ParaStation/psmpi/archive/'] dependencies = [ - ('pscom', 'Default', '', True), + ('pscom', '5.2-default', '', True), # This should be a temporary fix. UCX should be a dependency of pscom. But at the moment, pscom is in "dummy" and # UCX is in GCCcore, so pscom can't load UCX. As an alternative to pull pscom high in the hierarchy during production # we load UCX here to override the system one - ('UCX', '1.5.1'), + ('UCX', '1.6.1'), ] patches = [ @@ -35,6 +35,11 @@ threaded = True modaltsoftname = 'ParaStationMPI' # Add a family for our naming scheme -modluafooter = 'family("mpi")' +modluafooter = ''' +family("mpi") +if not ( isloaded("mpi-settings/default") ) then + load("mpi-settings/default") +end +''' moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb b/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb index 7ea027cad..d8c098dc9 100644 --- a/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb +++ b/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-iccifort-2019.3.199-GCC-8.3.0.eb @@ -15,11 +15,11 @@ sources = ['%(version)s.tar.gz'] source_urls = ['https://github.com/ParaStation/psmpi/archive/'] dependencies = [ - ('pscom', 'Default', '', True), + ('pscom', '5.2-default', '', True), # This should be a temporary fix. UCX should be a dependency of pscom. But at the moment, pscom is in "dummy" and # UCX is in GCCcore, so pscom can't load UCX. As an alternative to pull pscom high in the hierarchy during production # we load UCX here to override the system one - ('UCX', '1.5.1'), + ('UCX', '1.6.1'), ] patches = [ @@ -34,6 +34,11 @@ threaded = False modaltsoftname = 'ParaStationMPI' # Add a family for our naming scheme -modluafooter = 'family("mpi")' +modluafooter = ''' +family("mpi") +if not ( isloaded("mpi-settings/default") ) then + load("mpi-settings/default") +end +''' moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0.eb b/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0.eb new file mode 100644 index 000000000..3b7d8c9a1 --- /dev/null +++ b/Golden_Repo/2019a/p/psmpi/psmpi-5.2.2-1-iccifort-2019.5.281-GCC-8.3.0.eb @@ -0,0 +1,44 @@ +name = 'psmpi' +version = '5.2.2-1' + +homepage = 'https://github.com/ParaStation/psmpi2' +description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation, +based on MPICH v3. It provides extra low level communication libraries and integration with +various batch systems for tighter process control. +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'iccifort', 'version': '2019.5.281-GCC-8.3.0'} + +sources = ['%(version)s.tar.gz'] +source_urls = ['https://github.com/ParaStation/psmpi/archive/'] + +dependencies = [ + ('pscom', '5.2-default', '', True), + # This should be a temporary fix. UCX should be a dependency of pscom. But at the moment, pscom is in "dummy" and + # UCX is in GCCcore, so pscom can't load UCX. As an alternative to pull pscom high in the hierarchy during production + # we load UCX here to override the system one + ('UCX', '1.6.1'), +] + +patches = [ + 'psmpi_shebang.patch' +] + +mpich_opts = '--enable-static' + +threaded = False + +# use a more explicit module name to help our naming scheme +modaltsoftname = 'ParaStationMPI' + +# Add a family for our naming scheme +modluafooter = ''' +family("mpi") +if not ( isloaded("mpi-settings/default") ) then + load("mpi-settings/default") +end +''' + +moduleclass = 'mpi' diff --git a/Golden_Repo/2019a/u/UCX/UCX-1.5.1-GCCcore-8.3.0.eb b/Golden_Repo/2019a/u/UCX/UCX-1.5.1-GCCcore-8.3.0.eb index 851f97d81..ded8a0c60 100644 --- a/Golden_Repo/2019a/u/UCX/UCX-1.5.1-GCCcore-8.3.0.eb +++ b/Golden_Repo/2019a/u/UCX/UCX-1.5.1-GCCcore-8.3.0.eb @@ -23,14 +23,20 @@ builddependencies = [ ('pkg-config', '0.29.2'), ] -# needed for --with-verbs -osdependencies = [('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel')] +osdependencies = [ + # needed for --with-verbs + ('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel'), + # needed for mlx5 acceleration + ('libmlx5-devel') +] dependencies = [ ('numactl', '2.0.12'), ('CUDA', '10.1.105', '', True), ] +preconfigopts = 'PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib64/pkgconfig ' + configopts = '--with-verbs ' # Build OpenFabrics support, adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries configopts += '--without-java ' configopts += '--disable-doxygen-doc ' diff --git a/Golden_Repo/2019a/u/UCX/UCX-1.6.1-GCCcore-8.3.0.eb b/Golden_Repo/2019a/u/UCX/UCX-1.6.1-GCCcore-8.3.0.eb new file mode 100644 index 000000000..e4d760163 --- /dev/null +++ b/Golden_Repo/2019a/u/UCX/UCX-1.6.1-GCCcore-8.3.0.eb @@ -0,0 +1,70 @@ +easyblock = 'ConfigureMake' + +name = 'UCX' +version = '1.6.1' +versionsuffix = '' + +homepage = 'http://www.openucx.org' + +description = """Unified Communication X +An open-source production grade communication framework for data centric +and high-performance applications +""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '8.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openucx/ucx/releases/download/v%(version)s%(versionsuffix)s'] +sources = ['%(namelower)s-%(version)s.tar.gz'] + +builddependencies = [ + ('binutils', '2.32'), + ('pkg-config', '0.29.2'), +] + +osdependencies = [ + # needed for --with-verbs + ('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel'), + # needed for mlx5 acceleration + ('libmlx5-devel') +] + +dependencies = [ + ('numactl', '2.0.12'), +# ('CUDA', '10.1.105', '', True), +] + +preconfigopts = 'PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib64/pkgconfig ' + +configopts = '--with-verbs ' # Build OpenFabrics support, adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries +configopts += '--without-java ' +configopts += '--disable-doxygen-doc ' + +configopts += '--enable-optimizations ' # Enable machine-specific optimizations, default: NO +#configopts += '--enable-tuning ' # Enable parameter tuning in run-time, default: NO +#configopts += '--enable-mt ' # Enable thread support in UCP and UCT, default: NO +configopts += '--disable-debug ' +configopts += '--disable-logging ' +configopts += '--disable-assertions ' +configopts += '--disable-params-check ' +configopts += '--disable-dependency-tracking ' +#configopts += '--with-cuda=$EBROOTCUDA ' + +configopts += '--enable-cma ' # Enable Cross Memory Attach - allow MPI programs doing intra-node communication to do a single copy of the message rather than double. https://lwn.net/Articles/405284/ + +configopts += '--with-rc ' # Compile with IB Reliable Connection support +configopts += '--with-ud ' # Compile with IB Unreliable Datagram support +configopts += '--with-dc ' # Compile with IB Dynamic Connection support +configopts += '--with-cm ' # Compile with IB Connection Manager support +configopts += '--with-mlx5-dv ' # Compile with mlx5 Direct Verbs support. Direct Verbs(DV) support provides additional acceleration capabilities that are not available in a regular mode. +configopts += '--with-ib-hw-tm ' # Compile with IB Tag Matching support +configopts += '--with-dm ' # Compile with Device Memory support + +sanity_check_paths = { + 'files': ['bin/ucx_info', 'bin/ucx_perftest', 'bin/ucx_read_profile'], + 'dirs': ['include', 'lib', 'share'] +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/u/UCX/UCX-1.7.0-GCCcore-8.3.0.eb b/Golden_Repo/2019a/u/UCX/UCX-1.7.0-GCCcore-8.3.0.eb new file mode 100644 index 000000000..8b97689f5 --- /dev/null +++ b/Golden_Repo/2019a/u/UCX/UCX-1.7.0-GCCcore-8.3.0.eb @@ -0,0 +1,70 @@ +easyblock = 'ConfigureMake' + +name = 'UCX' +version = '1.7.0' +versionsuffix = '' + +homepage = 'http://www.openucx.org' + +description = """Unified Communication X +An open-source production grade communication framework for data centric +and high-performance applications +""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '8.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openucx/ucx/releases/download/v%(version)s%(versionsuffix)s'] +sources = ['%(namelower)s-%(version)s.tar.gz'] + +builddependencies = [ + ('binutils', '2.32'), + ('pkg-config', '0.29.2'), +] + +osdependencies = [ + # needed for --with-verbs + ('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel'), + # needed for mlx5 acceleration + ('libmlx5-devel') +] + +dependencies = [ + ('numactl', '2.0.12'), + ('CUDA', '10.1.105', '', True), +] + +preconfigopts = 'PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib64/pkgconfig ' + +configopts = '--with-verbs ' # Build OpenFabrics support, adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries +configopts += '--without-java ' +configopts += '--disable-doxygen-doc ' + +configopts += '--enable-optimizations ' # Enable machine-specific optimizations, default: NO +#configopts += '--enable-tuning ' # Enable parameter tuning in run-time, default: NO +#configopts += '--enable-mt ' # Enable thread support in UCP and UCT, default: NO +configopts += '--disable-debug ' +configopts += '--disable-logging ' +configopts += '--disable-assertions ' +configopts += '--disable-params-check ' +configopts += '--disable-dependency-tracking ' +configopts += '--with-cuda=$EBROOTCUDA ' + +configopts += '--enable-cma ' # Enable Cross Memory Attach - allow MPI programs doing intra-node communication to do a single copy of the message rather than double. https://lwn.net/Articles/405284/ + +configopts += '--with-rc ' # Compile with IB Reliable Connection support +configopts += '--with-ud ' # Compile with IB Unreliable Datagram support +configopts += '--with-dc ' # Compile with IB Dynamic Connection support +configopts += '--with-cm ' # Compile with IB Connection Manager support +configopts += '--with-mlx5-dv ' # Compile with mlx5 Direct Verbs support. Direct Verbs(DV) support provides additional acceleration capabilities that are not available in a regular mode. +configopts += '--with-ib-hw-tm ' # Compile with IB Tag Matching support +configopts += '--with-dm ' # Compile with Device Memory support + +sanity_check_paths = { + 'files': ['bin/ucx_info', 'bin/ucx_perftest', 'bin/ucx_read_profile'], + 'dirs': ['include', 'lib', 'share'] +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/u/UCX/UCX-1.7.0-rc1-GCCcore-8.3.0.eb b/Golden_Repo/2019a/u/UCX/UCX-1.7.0-rc1-GCCcore-8.3.0.eb new file mode 100644 index 000000000..868b242b7 --- /dev/null +++ b/Golden_Repo/2019a/u/UCX/UCX-1.7.0-rc1-GCCcore-8.3.0.eb @@ -0,0 +1,70 @@ +easyblock = 'ConfigureMake' + +name = 'UCX' +version = '1.7.0' +versionsuffix = '-rc1' + +homepage = 'http://www.openucx.org' + +description = """Unified Communication X +An open-source production grade communication framework for data centric +and high-performance applications +""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '8.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openucx/ucx/releases/download/v%(version)s%(versionsuffix)s'] +sources = ['%(namelower)s-%(version)s.tar.gz'] + +builddependencies = [ + ('binutils', '2.32'), + ('pkg-config', '0.29.2'), +] + +osdependencies = [ + # needed for --with-verbs + ('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel'), + # needed for mlx5 acceleration + ('libmlx5-devel') +] + +dependencies = [ + ('numactl', '2.0.12'), + ('CUDA', '10.1.105', '', True), +] + +preconfigopts = 'PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib64/pkgconfig ' + +configopts = '--with-verbs ' # Build OpenFabrics support, adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries +configopts += '--without-java ' +configopts += '--disable-doxygen-doc ' + +configopts += '--enable-optimizations ' # Enable machine-specific optimizations, default: NO +#configopts += '--enable-tuning ' # Enable parameter tuning in run-time, default: NO +#configopts += '--enable-mt ' # Enable thread support in UCP and UCT, default: NO +configopts += '--disable-debug ' +configopts += '--disable-logging ' +configopts += '--disable-assertions ' +configopts += '--disable-params-check ' +configopts += '--disable-dependency-tracking ' +configopts += '--with-cuda=$EBROOTCUDA ' + +configopts += '--enable-cma ' # Enable Cross Memory Attach - allow MPI programs doing intra-node communication to do a single copy of the message rather than double. https://lwn.net/Articles/405284/ + +configopts += '--with-rc ' # Compile with IB Reliable Connection support +configopts += '--with-ud ' # Compile with IB Unreliable Datagram support +configopts += '--with-dc ' # Compile with IB Dynamic Connection support +configopts += '--with-cm ' # Compile with IB Connection Manager support +configopts += '--with-mlx5-dv ' # Compile with mlx5 Direct Verbs support. Direct Verbs(DV) support provides additional acceleration capabilities that are not available in a regular mode. +configopts += '--with-ib-hw-tm ' # Compile with IB Tag Matching support +configopts += '--with-dm ' # Compile with Device Memory support + +sanity_check_paths = { + 'files': ['bin/ucx_info', 'bin/ucx_perftest', 'bin/ucx_read_profile'], + 'dirs': ['include', 'lib', 'share'] +} + +moduleclass = 'system' diff --git a/Golden_Repo/2019a/u/UCX/UCX-libibcm.patch b/Golden_Repo/2019a/u/UCX/UCX-libibcm.patch new file mode 100644 index 000000000..5eeab392f --- /dev/null +++ b/Golden_Repo/2019a/u/UCX/UCX-libibcm.patch @@ -0,0 +1,20 @@ +--- configure.orig 2020-01-29 14:26:36.746557632 +0100 ++++ configure 2020-01-29 14:27:03.380042272 +0100 +@@ -27343,7 +27343,7 @@ + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-libcm $LIBS" ++LIBS="-l:libibcm.so.1 $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + +@@ -27374,7 +27374,7 @@ + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ibcm_ib_cm_send_req" >&5 + $as_echo "$ac_cv_lib_ibcm_ib_cm_send_req" >&6; } + if test "x$ac_cv_lib_ibcm_ib_cm_send_req" = xyes; then : +- IBCM_LIBS=-libcm ++ IBCM_LIBS=-l:libibcm.so.1 + + uct_ib_modules="${uct_ib_modules}:cm" + cm_happy="yes" -- GitLab