Skip to content
Snippets Groups Projects
Commit 5e84bbd7 authored by Sandipan Mohanty's avatar Sandipan Mohanty
Browse files

Merge branch '2020' of...

parents dfb9b75a e18c7be1
Branches
No related tags found
No related merge requests found
Showing with 416 additions and 0 deletions
# Ignore any pyc files
*.pyc
*.pyo
.DS_Store
._.DS_Store
......@@ -83,6 +83,17 @@ def parse_hook(ec, *args, **kwargs):
REQUIRE_MODALTSOFTNAME[ec.name],
)
# Check if the module should be installed as hidden
hidden_pkgs = os.getenv("EASYBUILD_HIDE_DEPS").split(',')
if ec.name in hidden_pkgs:
key = "hidden"
if not key in ec_dict or ec_dict[key] is False:
ec[key] = True
ec.log.info(
"[parse hook] Hiding software found in $EASYBUILD_HIDE_DEPS: %s",
ec.name,
)
# Check if CUDA is in the dependencies, if so add the GPU Lmod tag
if (
"CUDA" in [dep[0] for dep in iter(ec_dict["dependencies"])]
......
easyblock = 'Bundle'
name = 'GCC'
version = '9.3.0'
homepage = 'http://gcc.gnu.org/'
description = """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada,
as well as libraries for these languages (libstdc++, libgcj,...).
"""
site_contacts = 'Damian Alvarez <d.alvarez@fz-juelich.de>'
toolchain = SYSTEM
dependencies = [
('GCCcore', version),
# binutils built on top of GCCcore, which was built on top of (dummy-built) binutils
('binutils', '2.34', '', ('GCCcore', version)),
]
altroot = 'GCCcore'
altversion = 'GCCcore'
# 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
# this bundle serves as a compiler toolchain, so it should be marked as compiler (important for HMNS)
moduleclass = 'compiler'
easyblock = 'EB_GCC'
name = 'GCCcore'
version = '9.3.0'
local_newlib_version = '3.3.0'
homepage = 'https://gcc.gnu.org/'
description = """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada,
as well as libraries for these languages (libstdc++, libgcj,...).
"""
site_contacts = 'Damian Alvarez <d.alvarez@fz-juelich.de>'
toolchain = SYSTEM
source_urls = [
'https://ftpmirror.gnu.org/gnu/gcc/gcc-%(version)s', # GCC auto-resolving HTTP mirror
'https://ftpmirror.gnu.org/gnu/gmp', # idem for GMP
'https://ftpmirror.gnu.org/gnu/mpfr', # idem for MPFR
'https://ftpmirror.gnu.org/gnu/mpc', # idem for MPC
'ftp://gcc.gnu.org/pub/gcc/infrastructure/', # GCC dependencies
'http://gcc.cybermirror.org/infrastructure/', # HTTP mirror for GCC dependencies
'http://isl.gforge.inria.fr/', # original HTTP source for ISL
'https://sourceware.org/pub/newlib/', # for newlib
'https://github.com/MentorEmbedded/nvptx-tools/archive', # for nvptx-tools
]
sources = [
'gcc-%(version)s.tar.gz',
'gmp-6.2.0.tar.bz2',
'mpfr-4.0.2.tar.bz2',
'mpc-1.1.0.tar.gz',
'isl-0.22.1.tar.bz2',
'newlib-3.3.0.tar.gz',
]
patches = [
'GCCcore-6.2.0-fix-find-isl.patch',
'GCCcore-8.3.0_fix-xsmin-ppc.patch',
'GCCcore-%(version)s_gmp-c99.patch',
'GCCcore-%(version)s_vect_broadcasts_masmintel.patch',
]
checksums = [
'5258a9b6afe9463c2e56b9e8355b1a4bee125ca828b8078f910303bc2ef91fa6', # gcc-9.3.0.tar.gz
'f51c99cb114deb21a60075ffb494c1a210eb9d7cb729ed042ddb7de9534451ea', # gmp-6.2.0.tar.bz2
'c05e3f02d09e0e9019384cdd58e0f19c64e6db1fd6f5ecf77b4b1c61ca253acc', # mpfr-4.0.2.tar.bz2
'6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e', # mpc-1.1.0.tar.gz
'1a668ef92eb181a7c021e8531a3ca89fd71aa1b3744db56f68365ab0a224c5cd', # isl-0.22.1.tar.bz2
'58dd9e3eaedf519360d92d84205c3deef0b3fc286685d1c562e245914ef72c66', # newlib-3.3.0.tar.gz
'5ad909606d17d851c6ad629b4fddb6c1621844218b8d139fed18c502a7696c68', # GCCcore-6.2.0-fix-find-isl.patch
'bea1bce8f50ea6d51b038309eb61dec00a8681fb653d211c539be80f184609a3', # GCCcore-8.3.0_fix-xsmin-ppc.patch
'0e135e1cc7cec701beea9d7d17a61bab34cfd496b4b555930016b98db99f922e', # GCCcore-9.3.0_gmp-c99.patch
'a32ac9c7d999a8b91bf93dba6a9d81b6ff58b3c89c425ff76090cbc90076685c', # GCCcore-9.3.0_vect_broadcasts_masmintel.patch
]
builddependencies = [
('M4', '1.4.18'),
('binutils', '2.34'),
]
languages = ['c', 'c++', 'fortran']
withisl = True
withnvptx = False
# Make sure we replace the system cc with gcc with an alias
modaliases = {'cc': 'gcc'}
moduleclass = 'compiler'
easyblock = 'ConfigureMake'
name = 'hwloc'
version = '2.2.0'
homepage = 'http://www.open-mpi.org/projects/hwloc/'
description = """
The Portable Hardware Locality (hwloc) software package provides a portable
abstraction (across OS, versions, architectures, ...) of the hierarchical
topology of modern architectures, including NUMA memory nodes, sockets, shared
caches, cores and simultaneous multithreading. It also gathers various system
attributes such as cache and memory information as well as the locality of I/O
devices such as network interfaces, InfiniBand HCAs or GPUs. It primarily
aims at helping applications with gathering information about modern computing
hardware so as to exploit it accordingly and efficiently.
"""
site_contacts = 'sc@fz-juelich.de'
toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
source_urls = ['https://www.open-mpi.org/software/hwloc/v%(version_major_minor)s/downloads/']
sources = [SOURCE_TAR_GZ]
builddependencies = [
('binutils', '2.34'),
]
dependencies = [
('numactl', '2.0.13', '', SYSTEM),
('libxml2', '2.9.10'),
('libpciaccess', '0.16'),
]
configopts = "--enable-libnuma=$EBROOTNUMACTL --enable-opencl"
configopts += "--disable-cairo --disable-gl --disable-libudev "
sanity_check_paths = {
'files': ['bin/lstopo', 'include/hwloc/linux.h',
'lib/libhwloc.%s' % SHLIB_EXT],
'dirs': ['share/man/man3'],
}
sanity_check_commands = ['lstopo']
modluafooter = '''
add_property("arch","gpu")
'''
moduleclass = 'system'
easyblock = 'ConfigureMake'
name = 'libfabric'
version = '1.12.1'
homepage = 'https://ofiwg.github.io/libfabric/'
description = """
Libfabric is a core component of OFI. It is the library that defines and exports
the user-space API of OFI, and is typically the only software that applications
deal with directly. It works in conjunction with provider libraries, which are
often integrated directly into libfabric.
"""
site_contacts = 'd.alvarez@fz-juelich.de'
toolchain = {'name': 'GCCcore', 'version': '9.3.0'}
toolchainopts = {'pic': True}
github_account = 'ofiwg'
source_urls = ['https://github.com/ofiwg/%(name)s/releases/download/v%(version)s']
sources = [SOURCE_TAR_BZ2]
builddependencies = [
('binutils', '2.34'),
('pkg-config', '0.29.2'),
]
osdependencies = [OS_PKG_IBVERBS_DEV]
# Disable deprecated "sockets" provider
configopts = "--disable-sockets"
sanity_check_paths = {
'files': ['bin/fi_info', 'bin/fi_pingpong', 'bin/fi_strerror'] +
['lib/libfabric.%s' % x for x in ['a', SHLIB_EXT]],
'dirs': ['include/rdma', 'lib/pkgconfig', 'share']
}
sanity_check_commands = ['fi_info']
moduleclass = 'lib'
easyblock = 'SystemBundle'
name = 'OpenMPI-settings'
version = '4.1'
versionsuffix = 'PSM'
homepage = ''
description = """This is a module to load the default OpenMPI configuration"""
site_contacts = 'd.alvarez@fz-juelich.de'
toolchain = SYSTEM
source_urls = []
sources = []
modextravars = {
'SLURM_MPI_TYPE': 'pspmix',
'OMPI_MCA_mca_base_component_show_load_errors': '1',
'OMPI_MCA_mpi_param_check': '1',
'OMPI_MCA_mpi_show_handle_leaks': '1',
'OMPI_MCA_mpi_warn_on_fork': '1',
# Disable uct for the time being due to:
# https://github.com/openucx/ucx/wiki/OpenMPI-and-OpenSHMEM-installation-with-UCX#running-open-mpi-with-ucx
# Also openib, since it is deprecated and should be substituted by the UCX support in the pml
'OMPI_MCA_btl': 'ofi',
'OMPI_MCA_mtl': 'ofi',
# 'OMPI_MCA_btl_openib_allow_ib': '1',
# 'OMPI_MCA_bml_r2_show_unreach_errors': '0',
# 'OMPI_MCA_coll': '^ml',
# 'OMPI_MCA_coll_hcoll_enable': '1',
# 'OMPI_MCA_coll_hcoll_np': '0',
# 'OMPI_MCA_pml': 'ucx',
# 'OMPI_MCA_osc': '^rdma',
# 'OMPI_MCA_opal_abort_print_stack': '1',
# 'OMPI_MCA_opal_set_max_sys_limits': '1',
# 'OMPI_MCA_opal_event_include': 'epoll',
# 'OMPI_MCA_btl_openib_warn_default_gid_prefix': '0',
# OMPIO does not seem to work reliably on our system
'OMPI_MCA_io': 'romio321',
}
moduleclass = 'system'
easyblock = 'ConfigureMake'
name = 'OpenMPI'
version = '4.1.0rc1'
homepage = 'http://www.open-mpi.org/'
description = """The Open MPI Project is an open source MPI-3 implementation."""
site_contacts = 'sc@fz-juelich.de'
toolchain = {'name': 'GCC', 'version': '9.3.0'}
source_urls = ['http://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads']
sources = [SOURCELOWER_TAR_GZ]
patches = ['psm2_pmix.patch']
osdependencies = [
# needed for --with-pmix
('pmix-devel'),
]
builddependencies = [
('Autotools', '20200321'),
]
dependencies = [
('zlib', '1.2.11'),
('hwloc', '2.2.0'),
('libevent', '2.1.12'),
('libfabric', '1.12.1'),
]
configopts = '--enable-shared '
configopts += '--with-hwloc=$EBROOTHWLOC ' # hwloc support
configopts += '--with-psm2 '
configopts += '--with-ofi=$EBROOTLIBFABRIC '
configopts += '--with-libevent=$EBROOTLIBEVENT '
configopts += '--without-orte '
configopts += '--disable-oshmem '
configopts += '--with-gpfs '
# to enable SLURM integration (site-specific)
configopts += '--with-slurm --with-pmix=external --with-libevent=external --with-ompi-pmix-rte'
local_libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"]
sanity_check_paths = {
'files': ["bin/%s" % local_binfile for local_binfile in ["ompi_info", "opal_wrapper"]] +
["lib/lib%s.%s" % (local_libfile, SHLIB_EXT) for local_libfile in local_libs] +
["include/%s.h" % x for x in ["mpi-ext", "mpif-config", "mpif", "mpi", "mpi_portable_platform"]],
'dirs': [],
}
# Add a family for our naming scheme
modluafooter = '''
family("mpi")
add_property("arch","gpu")
if not ( isloaded("mpi-settings") ) then
load("mpi-settings")
end
'''
moduleclass = 'mpi'
easyblock = 'ConfigureMake'
name = 'OpenMPI'
version = '4.1.0rc1'
homepage = 'http://www.open-mpi.org/'
description = """The Open MPI Project is an open source MPI-3 implementation."""
site_contacts = 'sc@fz-juelich.de'
toolchain = {'name': 'iccifort', 'version': '2020.2.254-GCC-9.3.0'}
source_urls = ['http://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads']
sources = [SOURCELOWER_TAR_GZ]
patches = ['psm2_pmix.patch']
osdependencies = [
# needed for --with-pmix
('pmix-devel'),
]
builddependencies = [
('Autotools', '20200321'),
]
dependencies = [
('zlib', '1.2.11'),
('hwloc', '2.2.0'),
('libevent', '2.1.12'),
('libfabric', '1.12.1'),
]
configopts = '--enable-shared '
configopts += '--with-hwloc=$EBROOTHWLOC ' # hwloc support
configopts += '--with-psm2 '
configopts += '--with-ofi=$EBROOTLIBFABRIC '
configopts += '--with-libevent=$EBROOTLIBEVENT '
configopts += '--without-orte '
configopts += '--disable-oshmem '
configopts += '--with-gpfs '
# to enable SLURM integration (site-specific)
configopts += '--with-slurm --with-pmix=external --with-libevent=external --with-ompi-pmix-rte'
local_libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"]
sanity_check_paths = {
'files': ["bin/%s" % local_binfile for local_binfile in ["ompi_info", "opal_wrapper"]] +
["lib/lib%s.%s" % (local_libfile, SHLIB_EXT) for local_libfile in local_libs] +
["include/%s.h" % x for x in ["mpi-ext", "mpif-config", "mpif", "mpi", "mpi_portable_platform"]],
'dirs': [],
}
# Add a family for our naming scheme
modluafooter = '''
family("mpi")
add_property("arch","gpu")
if not ( isloaded("mpi-settings") ) then
load("mpi-settings")
end
'''
moduleclass = 'mpi'
diff -ruN openmpi-4.1.0rc1.orig/ompi/mca/mtl/psm2/mtl_psm2.c openmpi-4.1.0rc1.patched/ompi/mca/mtl/psm2/mtl_psm2.c
--- openmpi-4.1.0rc1.orig/ompi/mca/mtl/psm2/mtl_psm2.c 2020-07-06 23:56:33.000000000 +0200
+++ openmpi-4.1.0rc1.patched/ompi/mca/mtl/psm2/mtl_psm2.c 2021-05-11 12:05:35.399831599 +0200
@@ -26,6 +26,7 @@
#include "ompi_config.h"
#include "opal/mca/pmix/pmix.h"
+#include "opal/mca/pmix/pmix3x/pmix/include/pmix_common.h"
#include "ompi/mca/mtl/mtl.h"
#include "ompi/mca/mtl/base/mtl_base_datatype.h"
#include "opal/util/show_help.h"
@@ -102,6 +103,21 @@
int rc;
generated_key = getenv(OPAL_MCA_PREFIX"orte_precondition_transports");
+ opal_process_name_t pname;
+
+ generated_key = NULL;
+ pname.jobid = atoi(getenv("SLURM_JOBID"));
+ pname.vpid = OPAL_VPID_WILDCARD;
+ OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, PMIX_CREDENTIAL, &pname,
+ (char**)&generated_key, PMIX_STRING);
+
+ char *tmp_key;
+ if (PMIX_SUCCESS != rc || NULL == generated_key) {
+ if (NULL != (tmp_key = getenv("OMPI_MCA_orte_precondition_transports"))) {
+ generated_key = strdup(tmp_key);
+ }
+ }
+
memset(uu, 0, sizeof(psm2_uuid_t));
if (!generated_key || (strlen(generated_key) != 33) ||
@@ -111,10 +127,13 @@
"no uuid present", true,
generated_key ? "could not be parsed from" :
"not present in", ompi_process_info.nodename);
+ free(generated_key);
return OMPI_ERROR;
}
+ free(generated_key);
+
/* Handle our own errors for opening endpoints */
psm2_error_register_handler(ompi_mtl_psm2.ep, ompi_mtl_psm2_errhandler);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment