Skip to content
Snippets Groups Projects
Commit 47fff069 authored by Manoel Römmer's avatar Manoel Römmer :rage:
Browse files

Merge branch '2023' into 2023-public

parents 36e699bc 4d7d448c
Branches
Tags
No related merge requests found
Pipeline #179760 passed
Showing
with 1083 additions and 0 deletions
##
# Author: Eviden <bds-powerefficiency@eviden.com>
##
easyblock = 'ConfigureMake'
name = 'bdpo-pmpi-wrapper'
version = '4.3.2'
toolchain = {'name': 'gpsmpi', 'version': '2022a'}
description = """This package provides the Power Efficiency Dynamic Power Optimizer PMPI Wrapper product.
"""
local_lib_name = f"bdpopmpiwrapper-{toolchain['name']}-{toolchain['version']}.so"
local_env_map = [
f"MPICC=$EBROOTPSMPI/bin/mpicc",
'MPICH=1',
f"DPO_PMPI_MPI_FLAVOR={toolchain['name']}",
f"DPO_PMPI_MPI_VERSION={toolchain['version']}",
'INSTALL_OPT_DIR=%(installdir)s',
'INSTALL_LIB_DIR=""',
]
modextravars = {
'BDPO_PMPIWRAPPER': f"%(installdir)s/{local_lib_name}"
}
homepage = 'https://www.eviden.com'
source_urls = ['file:///p/project/deepsea/wp2/sources/bdpo-pmpi-wrapper']
sources = ['bdpo-pmpi-wrapper-%(version)s.tar.gz']
checksums = ['b3eceee09afad75c628c324081a2e443b1ef13dcb57a81b3db5a1099eb02e83b']
prebuildopts = ' '.join(local_env_map)
preinstallopts = ' '.join(local_env_map)
# Hacky way to disable configure step (by returning true and comment all added things)
configure_cmd_prefix = '/bin/true # Disabling whats coming next:'
sanity_check_paths = {
'files': [local_lib_name],
'dirs': [],
}
moduleclass = 'perf'
##
# Author: Eviden <bds-powerefficiency@eviden.com>
##
easyblock = 'ConfigureMake'
name = 'bdpo-pmpi-wrapper'
version = '4.3.2'
toolchain = {'name': 'gpsmpi', 'version': '2022b'}
description = """This package provides the Power Efficiency Dynamic Power Optimizer PMPI Wrapper product.
"""
local_lib_name = f"bdpopmpiwrapper-{toolchain['name']}-{toolchain['version']}.so"
local_env_map = [
f"MPICC=$EBROOTPSMPI/bin/mpicc",
'MPICH=1',
f"DPO_PMPI_MPI_FLAVOR={toolchain['name']}",
f"DPO_PMPI_MPI_VERSION={toolchain['version']}",
'INSTALL_OPT_DIR=%(installdir)s',
'INSTALL_LIB_DIR=""',
]
modextravars = {
'BDPO_PMPIWRAPPER': f"%(installdir)s/{local_lib_name}"
}
homepage = 'https://www.eviden.com'
source_urls = ['file:///p/project/deepsea/wp2/sources/bdpo-pmpi-wrapper']
sources = ['bdpo-pmpi-wrapper-%(version)s.tar.gz']
checksums = ['b3eceee09afad75c628c324081a2e443b1ef13dcb57a81b3db5a1099eb02e83b']
prebuildopts = ' '.join(local_env_map)
preinstallopts = ' '.join(local_env_map)
# Hacky way to disable configure step (by returning true and comment all added things)
configure_cmd_prefix = '/bin/true # Disabling whats coming next:'
sanity_check_paths = {
'files': [local_lib_name],
'dirs': [],
}
moduleclass = 'perf'
##
# Author: Eviden <bds-powerefficiency@eviden.com>
##
easyblock = 'ConfigureMake'
name = 'bdpo-pmpi-wrapper'
version = '4.3.2'
toolchain = {'name': 'npsmpic', 'version': '2022a'}
description = """This package provides the Power Efficiency Dynamic Power Optimizer PMPI Wrapper product.
"""
local_lib_name = f"bdpopmpiwrapper-{toolchain['name']}-{toolchain['version']}.so"
local_env_map = [
f"MPICC=$EBROOTPSMPI/bin/mpicc",
'MPICH=1',
f"DPO_PMPI_MPI_FLAVOR={toolchain['name']}",
f"DPO_PMPI_MPI_VERSION={toolchain['version']}",
'INSTALL_OPT_DIR=%(installdir)s',
'INSTALL_LIB_DIR=""',
]
modextravars = {
'BDPO_PMPIWRAPPER': f"%(installdir)s/{local_lib_name}"
}
homepage = 'https://www.eviden.com'
source_urls = ['file:///p/project/deepsea/wp2/sources/bdpo-pmpi-wrapper']
sources = ['bdpo-pmpi-wrapper-%(version)s.tar.gz']
checksums = ['b3eceee09afad75c628c324081a2e443b1ef13dcb57a81b3db5a1099eb02e83b']
prebuildopts = ' '.join(local_env_map)
preinstallopts = ' '.join(local_env_map)
# Hacky way to disable configure step (by returning true and comment all added things)
configure_cmd_prefix = '/bin/true # Disabling whats coming next:'
sanity_check_paths = {
'files': [local_lib_name],
'dirs': [],
}
moduleclass = 'perf'
#!/usr/bin/env python3
from string import Template
# List of dict (version = version semver, sha256 = sha256 checksum of source file)
all_dpo_versions = [
{'semver': '4.3.2', 'sha256':'b3eceee09afad75c628c324081a2e443b1ef13dcb57a81b3db5a1099eb02e83b'}
]
# List of dict (name = MPI provider name, version = MPI provider version,
# mpicc = path to the MPI compiler binary)
all_mpi_provider = [
{'name': 'gpsmpi', 'version': '2022a', 'mpicc': '$EBROOTPSMPI/bin/mpicc', 'mpich': '1'},
{'name': 'gpsmpi', 'version': '2022b', 'mpicc': '$EBROOTPSMPI/bin/mpicc', 'mpich': '1'},
{'name': 'npsmpic', 'version': '2022a', 'mpicc': '$EBROOTPSMPI/bin/mpicc', 'mpich': '1'},
]
eb_dpo_template = Template('''
##
# Author: Eviden <bds-powerefficiency@eviden.com>
##
easyblock = 'ConfigureMake'
name = 'bdpo-pmpi-wrapper'
version = '$product_version'
toolchain = {'name': '$toolchain_name', 'version': '$toolchain_version'}
description = """This package provides the Power Efficiency Dynamic Power Optimizer PMPI Wrapper product.
"""
local_lib_name = f"bdpopmpiwrapper-{toolchain['name']}-{toolchain['version']}.so"
local_env_map = [
f"MPICC=$eb_mpicc_path",
'MPICH=$is_mpich',
f"DPO_PMPI_MPI_FLAVOR={toolchain['name']}",
f"DPO_PMPI_MPI_VERSION={toolchain['version']}",
'INSTALL_OPT_DIR=%(installdir)s',
'INSTALL_LIB_DIR=""',
]
modextravars = {
'BDPO_PMPIWRAPPER': f"%(installdir)s/{local_lib_name}"
}
homepage = 'https://www.eviden.com'
source_urls = ['file:///p/project/deepsea/wp2/sources/bdpo-pmpi-wrapper']
sources = ['bdpo-pmpi-wrapper-%(version)s.tar.gz']
checksums = ['$source_version_checksum']
prebuildopts = ' '.join(local_env_map)
preinstallopts = ' '.join(local_env_map)
# Hacky way to disable configure step (by returning true and comment all added things)
configure_cmd_prefix = '/bin/true # Disabling whats coming next:'
sanity_check_paths = {
'files': [local_lib_name],
'dirs': [],
}
moduleclass = 'perf'
''')
for version in all_dpo_versions:
for provider in all_mpi_provider:
with open(f"bdpo-pmpi-wrapper-{version['semver']}-{provider['name']}-{provider['version']}.eb", 'wt+') as f:
f.write(
eb_dpo_template.substitute({
'product_version': version['semver'],
'toolchain_name': provider['name'],
'toolchain_version': provider['version'],
'eb_mpicc_path': provider['mpicc'],
'source_version_checksum': version['sha256'],
'is_mpich': provider['mpich'],
})
)
# vim: set syntax=python:
easyblock = 'ConfigureMake'
name = 'dlb'
version = '3.3.1'
description = """
DLB is a dynamic library designed to speed up HPC hybrid applications (i.e.,
two levels of parallelism) by improving the load balance of the outer level of
parallelism (e.g., MPI) by dynamically redistributing the computational
resources at the inner level of parallelism (e.g., OpenMP). at run time.
"""
homepage = 'https://pm.bsc.es/dlb/'
docurls = ['https://pm.bsc.es/ftp/dlb/doc/user-guide/']
toolchain = {'name': 'gompi', 'version': '2022a'}
builddependencies = [('Python', '3.10.4', '-bare')]
sources = [SOURCELOWER_TAR_GZ]
source_urls = ['https://pm.bsc.es/ftp/dlb/releases']
checksums = ['1b245acad80b03eb83e815fd59dcfc598cfddd899de4504cf6a9572fe5359f40']
configopts = '--with-mpi'
sanity_check_paths = {
'files': [
'bin/dlb',
'lib/libdlb.a', 'lib/libdlb.%s' % SHLIB_EXT,
'lib64/libdlb.%s' % SHLIB_EXT
],
'dirs': ['include'],
}
moduleclass = 'lib'
# Copyright 2022 Computer Architecture and VLSI Systems (CARV) Laboratory
# SPDX-License-Identifier: BSD-3-Clause
easyblock = 'PythonPackage'
name = 'forma'
version = '0.1.6'
homepage = 'https://github.com/CARV-ICS-FORTH/foRMA'
description = "Initial test for easybuild foRMA"
toolchain = {'name': 'foss', 'version': '2022a'}
local_forma_archive_filename = f"forma_archive_{version}.tar.gz"
sources = [{
'filename': local_forma_archive_filename,
'git_config': {
'url': 'https://gitlab.jsc.fz-juelich.de/deep-sea/wp3/software',
'repo_name': 'forma',
'recursive': True,
'tag': 'v' + version,
'keep_git_dir': True
},
}]
checksums = [None]
dependencies = [
('Python', '3.10.4'),
]
use_pip_for_deps = True
use_pip = True
options = {'modulename': 'forma'}
moduleclass = 'tools'
easyblock = 'Toolchain'
name = 'gpsmpi'
version = '2022b'
homepage = '(none)'
description = 'GCC and GFortran based compiler toolchain, including Parastation MPICH2 for MPI support.'
toolchain = SYSTEM
local_compiler = ('GCC', '11.3.0')
dependencies = [
local_compiler,
('psmpi', '5.8.1-1', '', local_compiler),
]
moduleclass = 'toolchain'
# EasyConfig for OmpSs-2/git
easyblock = 'CMakeNinja'
name = 'llvm-ompss'
version = '2023.11'
homepage = 'https://pm.bsc.es/ompss-2'
description = 'LLVM Compiler for OmpSs-2 data-flow programming model'
toolchain = {'name': 'GCC', 'version': '11.3.0'}
sources = [{
'filename': 'llvm.tar.gz',
'git_config': {
'url': 'https://github.com/bsc-pm',
'repo_name': 'llvm',
'tag': 'github-release-2023.11',
'clone_into': 'llvm'
}
}]
checksums = [
'8953fcf8b529333b922e3ff137601131f6f927e7a8c57f7668edbf1940b90941'
]
builddependencies = [('CMake', '3.23.1'), ('Ninja', '1.10.2')]
dependencies = [('nodes', '1.1.0'), ('nanos6', '4.0.0'), ('ncurses', '6.3')]
configopts = '-DCMAKE_BUILD_TYPE=Release '
configopts += '-DLLVM_PARALLEL_LINK_JOBS=1 '
configopts += '-DCLANG_DEFAULT_NANOS6_HOME=$EBROOTNANOS6 '
configopts += '-DCLANG_DEFAULT_NODES_HOME=$EBROOTNODES '
configopts += '-DLLVM_ENABLE_PROJECTS=clang '
configopts += '-DCLANG_DEFAULT_PIE_ON_LINUX=OFF '
configopts += '-DLLVM_INSTALL_UTILS=ON '
configopts += '-DLLVM_INCLUDE_BENCHMARKS=OFF'
srcdir = 'llvm'
moduleclass = 'compiler'
easyblock = 'ConfigureMake'
name = 'mcxxcluster'
version = '1.0'
local_filename_version = '1.0'
homepage = 'https://github.com/bsc-pm/ompss-2-cluster-releases.git'
description = "OmpSs-2@Cluster: OmpSs-2 with task offloading"
toolchain = {'name': 'gpsmpi', 'version': '2022a-mt'}
sources = [{
'filename': 'mcxx.tar.gz',
'git_config': {
'url': 'https://github.com/ipiedrahiv',
'repo_name': 'mcxx',
'tag': '1.0-ci'
},
}]
checksums = [None]
builddependencies = [
('Autotools', '20220317'),
('pkgconf', '1.8.0'),
('Bison', '3.8.2'),
('flex', '2.6.4'),
('gperf', '3.1')
]
dependencies = [
('nanoscluster', '1.0'),
('SQLite', '3.38.3')
]
preconfigopts = "autoreconf -vif && "
configopts = "--enable-ompss-2 --with-nanos6=$NANOS6_HOME"
buildopts = 'CC="$CC" CFLAGS="$CFLAGS"'
sanity_check_paths = {
'files': ['bin/mcc', 'bin/mcxx', 'bin/mf95', 'bin/mfc',
'lib/libmcxx.so', 'lib/mcxx/libtlnanos6-lowering.so'],
'dirs': [],
}
sanity_check_commands = [
'mcc 2>&1 | grep "mcc: you must specify an input file"',
]
moduleclass = 'devel'
# EasyConfig for OmpSs-2/git
easyblock = "ConfigureMake"
name = "nanos6"
version = "4.0.0"
homepage = "https://pm.bsc.es/ompss-2"
description = "Nanos6 Runtime for OmpSs-2 data-flow programming model"
toolchain = {"name": "GCC", "version": "11.3.0"}
sources = [
{
"filename": "nanos6.tar.gz",
"git_config": {
"url": "https://github.com/bsc-pm",
"repo_name": "nanos6",
"tag": "version-4.0",
"clone_into": "nanos6",
},
}
]
checksums = [
"54b6fb03c36c6b1da1a73aad1b9cc8228a7fea51aea3ee5d9f1d7b1eead955e5"
]
dependencies = [
("Boost", "1.79.0"),
("hwloc", "2.7.1"),
("CUDA", "11.7.0", "", SYSTEM),
("ovni", "1.4.1"),
]
builddependencies = [("libtool", "2.4.7")]
preconfigopts = "./autogen.sh && "
configopts = "--with-jemalloc=embedded "
configopts += "--with-boost=$EBROOTBOOST "
configopts += "--with-libnuma=$EBROOTNUMACTL "
configopts += "--disable-stats-instrumentation "
configopts += "--disable-verbose-instrumentation "
configopts += "--disable-lint-instrumentation "
configopts += "--disable-graph-instrumentation "
configopts += "--without-papi "
configopts += "--with-cuda=$EBROOTCUDA "
configopts += "--with-ovni=$EBROOTOVNI"
modextravars = {"NANOS6_HOME": "%(installdir)s"}
buildopts = ""
moduleclass = 'devel'
# EasyConfig for OmpSs-2/git
easyblock = 'ConfigureMake'
name = 'nanoscluster'
version = '1.0'
local_filename_version = '1.0'
homepage = 'https://github.com/bsc-pm/nanos6-cluster'
description = 'Nanos6 Runtime for OmpSs2@cluster'
toolchain = {'name': 'gpsmpi', 'version': '2022a-mt'}
sources = [{
'filename': 'nanos6.tar.gz',
'git_config': {
'url': 'https://github.com/ipiedrahiv',
'repo_name': 'nanos6-cluster',
'tag': '1.0-ci',
}
}]
checksums = [None]
dependencies = [('Boost', '1.79.0'),
('hwloc', '2.7.1'),
('numactl', '2.0.15')]
builddependencies = [('Autotools', '20220317'),
('pkgconf', '1.8.0')]
preconfigopts = "autoreconf -vif && "
configopts = "--enable-cluster --disable-ctf-instrumentation --disable-graph-instrumentation "
configopts += "--disable-lint-instrumentation --disable-verbose-instrumentation"
modextravars = {'NANOS6_HOME': '%(installdir)s'}
buildopts = 'CC="$CC" CFLAGS="$CFLAGS"'
sanity_check_paths = {
'files': ['bin/nanos6-info', 'include/nanos6.h',
'lib/libnanos6-optimized-regions.so',
'lib/libnanos6-debug-regions.so'],
'dirs': ['include/nanos6'],
}
sanity_check_commands = [
'nanos6-info | grep "Nanos6 version 2.5.1"',
]
moduleclass = 'devel'
# EasyConfig for OmpSs-2/git
easyblock = 'ConfigureMake'
name = 'nodes'
version = '1.1.0'
homepage = 'https://pm.bsc.es/ompss-2'
description = 'NODES Runtime for OmpSs-2 data-flow programming model'
toolchain = {'name': 'GCC', 'version': '11.3.0'}
sources = [
{
'filename': 'nodes.tar.gz',
'git_config': {
'url': 'https://github.com/bsc-pm',
'repo_name': 'nodes',
'tag': 'version-1.1',
'clone_into': 'nodes',
},
}
]
checksums = [
"4d5bbbe1f09bccc34f1e543e8d9c81fc6a3c13838ffd61fb4ec189983a267ac7"
]
dependencies = [
('Boost', '1.79.0'),
('hwloc', '2.7.1'),
('nos-v', '2.1.1'),
('ovni', '1.4.1'),
]
builddependencies = [('libtool', '2.4.7')]
preconfigopts = "autoreconf -fiv && "
configopts = "--with-boost=$EBROOTBOOST "
configopts += "--with-libnuma=$EBROOTNUMACTL "
configopts += "--with-nosv=$EBROOTNOSMINV "
configopts += "--with-ovni=$EBROOTOVNI"
sanity_check_paths = {'files': ['lib/libnodes.%s' % SHLIB_EXT], 'dirs': ['include']}
modextravars = {'NODES_HOME': '%(installdir)s'}
moduleclass = 'devel'
# EasyConfig for OmpSs-2/git
easyblock = 'ConfigureMake'
name = 'nos-v'
version = '2.1.1'
homepage = 'https://pm.bsc.es/ompss-2'
description = 'nOS-V system-wide tasking library'
toolchain = {'name': 'GCC', 'version': '11.3.0'}
sources = [
{
'filename': 'nos-v.tar.gz',
'git_config': {
'url': 'https://github.com/bsc-pm',
'repo_name': 'nos-v',
'tag': '2.1.1',
'clone_into': 'nos-v',
},
}
]
checksums = [
"8569aba411928a4f49c024c451820a95d72a74baea4d105e1649c27c4a269432"
]
dependencies = [('ovni', '1.4.1'), ('numactl', '2.0.15')]
builddependencies = [('libtool', '2.4.7')]
preconfigopts = "autoreconf -fiv && "
configopts = "--with-ovni=$EBROOTOVNI"
sanity_check_paths = {
'files': ['lib/libnosv.%s' % SHLIB_EXT],
'dirs': ['include', 'share'],
}
moduleclass = 'devel'
# EasyConfig for OmpSs-2
easyblock = 'Bundle'
name = 'OmpSs-2'
version = '2023.11'
homepage = 'https://pm.bsc.es/ompss-2'
description = 'OmpSs-2 Data-flow Programming Model'
toolchain = {'name': 'GCC', 'version': '11.3.0'}
dependencies = [
('llvm-ompss', '2023.11'),
('nos-v', '2.1.1'),
('nanos6', '4.0.0'),
('nodes', '1.1.0'),
('tacuda', '2.0.0'),
('ovni', '1.4.1')
]
moduleclass = 'devel'
# If you get an oversubscription error during testing, set
# PRTE_MCA_rmaps_default_mapping_policy=:OVERSUBSCRIBE.
# (different from OpenMPI v4's OMPI_MCA_rmaps_base_oversubscribe=1)
# TODO: How to set an env var in an easyconfig?
easyblock = 'ConfigureMake'
# ------------------------------
local_xhc_version = '1.2'
local_xhc_sources = '/p/project/deepsea/wp5/xhc/source/xhc-v' + local_xhc_version + '.tar.gz'
local_xhc_checksums = 'e184e86aa90a092f53c878fdcbfe8699a0b125bdca236b434dbdbae6253f02e8'
local_ompi_version = '5.0.0rc7'
# ------------------------------
name = 'OpenMPI-XHC'
version = '%s-%s' % (local_ompi_version, local_xhc_version)
homepage = 'https://www.open-mpi.org/'
description = """The Open MPI Project is an open source MPI-3 implementation."""
toolchain = {'name': 'GCC', 'version': '11.3.0'}
toolchainopts = {'pic': True}
sources = [
# Using git clone instead of the release URL; git submodules will be needed
{
'filename': 'ompi-%s.tar.gz' % local_ompi_version,
'git_config': {
'url': 'https://github.com/open-mpi',
'repo_name': 'ompi',
'tag': 'v%s' % local_ompi_version,
'keep_git_dir': True,
},
},
{
'filename': local_xhc_sources,
'extract_cmd': 'tar -xzvf %s && mv xhc-* ./ompi/ompi/mca/coll/xhc'
}
]
patches = ['OpenMPI-XHC-fixes.patch']
checksums = [
None,
local_xhc_checksums,
'7b3e9454aa7ac28569a00f74e543c79ded0305c68502238efb6f42a83ce53a8e'
]
osdependencies = [
# needed for --with-verbs
('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel'),
]
builddependencies = [
('Autotools', '20220317'),
('pkg-config', '0.29.2'),
('Perl', '5.34.1'),
('Pandoc', '2.19.2', '', SYSTEM),
('flex', '2.6.4'),
]
dependencies = [
('zlib', '1.2.12'),
# ('hwloc', '2.5.0'), # internal
('UCX', 'default'),
('CUDA', '11.7', '', SYSTEM),
# ('libevent', '2.1.12'), # internal
# ('PMIx', '4.1.0'), # internal
]
# Developer checkout is necessary for XHC, and these are necessary for developer checkout
preconfigopts = 'git submodule update --init --recursive && '
preconfigopts += '(cd 3rd-party/openpmix && git am ../../pmix_fix_flex.patch) && '
preconfigopts += './autogen.pl && '
configopts = '--enable-shared '
configopts += '--with-hwloc=internal '
configopts += '--with-ucx=$EBROOTUCX --with-ucx-libdir=$EBROOTUCX/lib '
# OMPI has trouble with ambiguity between lib and lib64 when detecting UCX's libdir
configopts += '--with-libevent=internal '
configopts += '--with-pmix=internal '
configopts += '--with-slurm '
configopts += '--without-psm2 '
configopts += '--disable-oshmem '
configopts += '--with-cuda=$EBROOTCUDA '
configopts += '--with-xpmem=/p/project/deepsea/wp5/xpmem '
# libportals is available on deepv but not on cluster nodes.
configopts += '--without-portals4 '
# -------------------------------
# No IME or GPFS in DEEP
# configopts += '--with-ime=/opt/ddn/ime '
# configopts += '--with-gpfs '
# disable MPI1 compatibility for now, see what breaks...
# configopts = '--enable-mpi1-compatibility '
# to enable SLURM integration (site-specific)
# configopts += '--with-slurm --with-pmi=/usr/include/slurm --with-pmi-libdir=/usr'
# -------------------------------
# Trigger autofs mount of these filesystems, so that Open MPI's imperfect
# opal_path_nfs test won't fail (https://github.com/open-mpi/ompi/issues/10152)
# pretestcmds/postbuildcmds = ['stat /direct/Software /p/{arch,usersoftware,fastdata}']
skipsteps = ['test'] # not sure how to do the above though!
local_libs = ["mpi_mpifh", "mpi", "open-pal"]
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': [],
}
moduleclass = 'mpi'
From 848096fcec8956eaf6982ef4021e0ede72e6186e Mon Sep 17 00:00:00 2001
From: Joseph Schuchart <schuchart@icl.utk.edu>
Date: Wed, 16 Mar 2022 09:33:21 -0400
Subject: [PATCH 1/5] smsc/xpmem: Fix bound alignment
The upper bound of the mapped region must include the last byte of
the range and not reach past the aligned range.
Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
---
opal/mca/smsc/xpmem/smsc_xpmem_module.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/opal/mca/smsc/xpmem/smsc_xpmem_module.c b/opal/mca/smsc/xpmem/smsc_xpmem_module.c
index d2954c1e31..80a0729649 100644
--- a/opal/mca/smsc/xpmem/smsc_xpmem_module.c
+++ b/opal/mca/smsc/xpmem/smsc_xpmem_module.c
@@ -116,7 +116,7 @@ void *mca_smsc_xpmem_map_peer_region(mca_smsc_endpoint_t *endpoint, uint64_t fla
int rc;
base = OPAL_DOWN_ALIGN((uintptr_t) remote_ptr, attach_align, uintptr_t);
- bound = OPAL_ALIGN((uintptr_t) remote_ptr + size - 1, attach_align, uintptr_t) + 1;
+ bound = OPAL_ALIGN((uintptr_t) remote_ptr + size, attach_align, uintptr_t);
if (OPAL_UNLIKELY(bound > xpmem_endpoint->address_max)) {
bound = xpmem_endpoint->address_max;
}
--
2.31.1
From 61e00ee395f66963c069d3e28bea788d57360ade Mon Sep 17 00:00:00 2001
From: Joseph Schuchart <schuchart@icl.utk.edu>
Date: Wed, 16 Mar 2022 09:36:37 -0400
Subject: [PATCH 2/5] smsc/xpmem: retry with page upper bound if aligned range
cannot be mapped
The aligned range computed in mca_smsc_xpmem_map_peer_region may
reach past the end of the stack, which may cause the mapping to fail.
Retrying with an actual page as upper bound has a better chance to succeed.
Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
---
opal/mca/smsc/xpmem/smsc_xpmem_module.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/opal/mca/smsc/xpmem/smsc_xpmem_module.c b/opal/mca/smsc/xpmem/smsc_xpmem_module.c
index 80a0729649..6a3444a35d 100644
--- a/opal/mca/smsc/xpmem/smsc_xpmem_module.c
+++ b/opal/mca/smsc/xpmem/smsc_xpmem_module.c
@@ -23,6 +23,7 @@
#include "opal/mca/smsc/base/base.h"
#include "opal/mca/smsc/xpmem/smsc_xpmem_internal.h"
#include "opal/util/minmax.h"
+#include "opal/util/sys_limits.h"
OBJ_CLASS_INSTANCE(mca_smsc_xpmem_endpoint_t, opal_object_t, NULL, NULL);
@@ -157,8 +158,14 @@ void *mca_smsc_xpmem_map_peer_region(mca_smsc_endpoint_t *endpoint, uint64_t fla
reg->rcache_context = xpmem_attach(xpmem_addr, bound - base, NULL);
if (OPAL_UNLIKELY((void *) -1 == reg->rcache_context)) {
- OBJ_RELEASE(reg);
- return NULL;
+ /* retry with the page as upper bound */
+ bound = OPAL_ALIGN((uintptr_t) remote_ptr + size, opal_getpagesize(), uintptr_t);
+ reg->bound = (unsigned char *) bound;
+ reg->rcache_context = xpmem_attach(xpmem_addr, bound - base, NULL);
+ if (OPAL_UNLIKELY((void *) -1 == reg->rcache_context)) {
+ OBJ_RELEASE(reg);
+ return NULL;
+ }
}
opal_memchecker_base_mem_defined(reg->rcache_context, bound - base);
@@ -307,5 +314,5 @@ mca_smsc_xpmem_module_t mca_smsc_xpmem_module = {
.copy_from = mca_smsc_xpmem_copy_from,
.map_peer_region = mca_smsc_xpmem_map_peer_region,
.unmap_peer_region = mca_smsc_xpmem_unmap_peer_region,
- },
+ },
};
--
2.31.1
From 553bf8adf30d28da53b7d7462468e3ba4e0146e3 Mon Sep 17 00:00:00 2001
From: cc-riscv64 <cc-riscv64>
Date: Thu, 28 Apr 2022 16:42:18 +0000
Subject: [PATCH 3/5] Fix mpi_comm_dup_with_info
---
ompi/communicator/comm.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/ompi/communicator/comm.c b/ompi/communicator/comm.c
index 8f9c95ade1..98ed989f28 100644
--- a/ompi/communicator/comm.c
+++ b/ompi/communicator/comm.c
@@ -963,6 +963,7 @@ int ompi_comm_split_type (ompi_communicator_t *comm, int split_type, int key,
ompi_comm_assert_subscribe (newcomp, OMPI_COMM_ASSERT_LAZY_BARRIER);
ompi_comm_assert_subscribe (newcomp, OMPI_COMM_ASSERT_ACTIVE_POLL);
if (info) {
+ opal_info_dup(info, &newcomp->super.s_info);
opal_infosubscribe_change_info(&newcomp->super, info);
}
@@ -1068,6 +1069,7 @@ int ompi_comm_dup_with_info ( ompi_communicator_t * comm, opal_info_t *info, omp
ompi_comm_assert_subscribe (newcomp, OMPI_COMM_ASSERT_LAZY_BARRIER);
ompi_comm_assert_subscribe (newcomp, OMPI_COMM_ASSERT_ACTIVE_POLL);
if (info) {
+ opal_info_dup(info, &newcomp->super.s_info);
opal_infosubscribe_change_info(&newcomp->super, info);
}
--
2.31.1
From d5ca5c9baf308fc855563edf0b61d07eae8e3420 Mon Sep 17 00:00:00 2001
From: George Katevenis <gkatev@ics.forth.gr>
Date: Thu, 6 Oct 2022 14:35:52 +0300
Subject: [PATCH 4/5] Initialize opal/smsc outside of btl/sm, to enable its use
without it
Signed-off-by: George Katevenis <gkatev@ics.forth.gr>
---
ompi/instance/instance.c | 4 ++++
opal/mca/btl/sm/btl_sm_component.c | 9 ++++-----
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/ompi/instance/instance.c b/ompi/instance/instance.c
index 03dad6faeb..a713a5617d 100644
--- a/ompi/instance/instance.c
+++ b/ompi/instance/instance.c
@@ -480,6 +480,10 @@ static int ompi_mpi_instance_init_common (void)
/* Select which MPI components to use */
+ if (OPAL_SUCCESS != (ret = mca_smsc_base_select())) {
+ return ompi_instance_print_error ("mca_smsc_base_select() failed", ret);
+ }
+
if (OMPI_SUCCESS != (ret = mca_pml_base_select (OPAL_ENABLE_PROGRESS_THREADS, ompi_mpi_thread_multiple))) {
return ompi_instance_print_error ("mca_pml_base_select() failed", ret);
}
diff --git a/opal/mca/btl/sm/btl_sm_component.c b/opal/mca/btl/sm/btl_sm_component.c
index d3b6bfb69d..de865f9fb4 100644
--- a/opal/mca/btl/sm/btl_sm_component.c
+++ b/opal/mca/btl/sm/btl_sm_component.c
@@ -40,7 +40,6 @@
#include "opal/mca/btl/sm/btl_sm_fbox.h"
#include "opal/mca/btl/sm/btl_sm_fifo.h"
#include "opal/mca/btl/sm/btl_sm_frag.h"
-#include "opal/mca/smsc/base/base.h"
#include "opal/mca/smsc/smsc.h"
#ifdef HAVE_SYS_STAT_H
@@ -332,8 +331,8 @@ mca_btl_sm_component_init(int *num_btls, bool enable_progress_threads, bool enab
/* no fast boxes allocated initially */
component->num_fbox_in_endpoints = 0;
- rc = mca_smsc_base_select();
- if (OPAL_SUCCESS == rc) {
+ bool have_smsc = (NULL != mca_smsc);
+ if (have_smsc) {
mca_btl_sm.super.btl_flags |= MCA_BTL_FLAGS_RDMA;
mca_btl_sm.super.btl_get = mca_btl_sm_get;
mca_btl_sm.super.btl_put = mca_btl_sm_put;
@@ -355,11 +354,11 @@ mca_btl_sm_component_init(int *num_btls, bool enable_progress_threads, bool enab
} else {
BTL_ERROR(("single-copy component requires registration but could not provide the "
"registration handle size"));
- rc = (int) handle_size;
+ have_smsc = false;
}
}
}
- if (OPAL_SUCCESS != rc) {
+ if (!have_smsc) {
mca_btl_sm.super.btl_flags &= ~MCA_BTL_FLAGS_RDMA;
mca_btl_sm.super.btl_get = NULL;
mca_btl_sm.super.btl_put = NULL;
--
2.31.1
From 77081cff10f5a3b04052f34e6e5c89fb64384f70 Mon Sep 17 00:00:00 2001
From: George Katevenis <gkatev@ics.forth.gr>
Date: Fri, 19 Jan 2024 13:58:51 +0200
Subject: [PATCH 5/5] Add patch to fix flex in internal openpmix (openpmix/#2606)
---
pmix_fix_flex.patch | 78 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 78 insertions(+)
create mode 100644 pmix_fix_flex.patch
diff --git a/pmix_fix_flex.patch b/pmix_fix_flex.patch
new file mode 100644
index 0000000000..ded91bf4c1
--- /dev/null
+++ b/pmix_fix_flex.patch
@@ -0,0 +1,78 @@
+From 1286709db150ea2540f8a1d20f286a858c7a07df Mon Sep 17 00:00:00 2001
+From: Ralph Castain <rhc@pmix.org>
+Date: Tue, 24 May 2022 19:05:00 -0700
+Subject: [PATCH] Require flex only when keyval_lex.c is not provided
+
+We currently require flex whenever we are in a Git clone, but that
+really isn't the requirement. We need flex whenever the flex output
+files are not present - otherwise, you can build just fine. So open
+things up a bit by tying the flex requirement to the actual one
+(i.e., that the flex output file exist).
+
+Signed-off-by: Ralph Castain <rhc@pmix.org>
+---
+ config/pmix.m4 | 19 -------------------
+ configure.ac | 20 +++++++++++++++++++-
+ 2 files changed, 19 insertions(+), 20 deletions(-)
+
+diff --git a/config/pmix.m4 b/config/pmix.m4
+index 9c5f83df30..c870d90a9c 100644
+--- a/config/pmix.m4
++++ b/config/pmix.m4
+@@ -1026,25 +1026,6 @@ AC_DEFUN([PMIX_DEFINE_ARGS],[
+ AC_DEFINE_UNQUOTED(PMIX_ENABLE_DLOPEN_SUPPORT, $PMIX_ENABLE_DLOPEN_SUPPORT,
+ [Whether we want to enable dlopen support])
+
+-#
+-# Is this a developer copy?
+-#
+-
+-if test -e $PMIX_TOP_SRCDIR/.git; then
+- PMIX_DEVEL=1
+- # check for Flex
+- AC_PROG_LEX(yywrap)
+- if test "x$LEX" != xflex; then
+- AC_MSG_WARN([PMIx requires Flex to build from non-tarball sources,])
+- AC_MSG_WARN([but Flex was not found. Please install Flex into])
+- AC_MSG_WARN([your path and try again])
+- AC_MSG_ERROR([Cannot continue])
+- fi
+-else
+- PMIX_DEVEL=0
+-fi
+-
+-
+ #
+ # Developer picky compiler options
+ #
+diff --git a/configure.ac b/configure.ac
+index e0f207a2d0..7d3fe1de4a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -209,7 +209,25 @@ PMIX_SETUP_WRAPPER_INIT
+ # This did not exist pre AM 1.11.x (where x is somewhere >0 and <3),
+ # but it is necessary in AM 1.12.x.
+ m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+-AC_PROG_LEX(yywrap)
++
++#
++# Is this a developer copy?
++#
++
++if test -e $PMIX_TOP_SRCDIR/.git; then
++ PMIX_DEVEL=1
++else
++ PMIX_DEVEL=0
++fi
++# check for Flex
++AC_PROG_LEX(noyywrap)
++if test "x$LEX" != xflex && test ! -e $PMIX_TOP_SRCDIR/util/keyval/keyval_lex.c; then
++ AC_MSG_WARN([PMIx requires Flex to build from sources that were not])
++ AC_MSG_WARN([fully pre-processed (e.g., an official release tarball),])
++ AC_MSG_WARN([but Flex was not found. Please install Flex into])
++ AC_MSG_WARN([your path and try again])
++ AC_MSG_ERROR([Cannot continue])
++fi
+
+ ############################################################################
+ # Configuration options
--
2.43.0
# EasyConfig for OmpSs-2
easyblock = 'Bundle'
name = 'ompss2cluster'
version = '2023.11'
homepage = 'https://github.com/bsc-pm/nanos6-cluster'
description = 'OmpSs2@Cluster'
toolchain = {'name': 'gpsmpi', 'version': '2022a-mt'}
dependencies = [
('nanoscluster', '1.0'),
('mcxxcluster', '1.0')
]
moduleclass = 'devel'
# EasyConfig for OmpSs-2/git
easyblock = 'CMakeNinja'
name = 'ovni'
version = '1.4.1'
homepage = 'https://ovni.readthedocs.io'
description = 'OVNI: Obtuse but Versatile Nanoscale Instrumentation'
toolchain = {'name': 'GCC', 'version': '11.3.0'}
sources = [
{
'filename': 'ovni.tar.gz',
'git_config': {
'url': 'https://github.com/bsc-pm',
'repo_name': 'ovni',
'tag': '1.4.1',
'clone_into': 'ovni',
},
}
]
checksums = [
"a508c54c2b2b19e4b94ca5a138241c74b8ce3ee864ab95a0aac4e74ad192ecbe"
]
builddependencies = [('CMake', '3.23.1'), ('Ninja', '1.10.2')]
configopts = "-DUSE_MPI=0"
moduleclass = 'devel'
# EasyConfig for OmpSs-2/git
easyblock = 'ConfigureMake'
name = 'tacuda'
version = '2.0.0'
homepage = 'https://pm.bsc.es/ompss-2'
description = 'Task-Aware CUDA'
toolchain = {'name': 'GCC', 'version': '11.3.0'}
sources = [
{
'filename': 'tacuda.tar.gz',
'git_config': {
'url': 'https://github.com/bsc-pm',
'repo_name': 'tacuda',
'tag': '2.0.0',
'clone_into': 'tacuda',
},
}
]
checksums = [
"b34a6601be8834247f4548c36490fd502cb0f84d28f01f73b5f408884d3ecba1"
]
dependencies = [
('CUDA', '11.7.0', '', SYSTEM),
]
builddependencies = [('libtool', '2.4.7'), ('Boost', '1.79.0')]
preconfigopts = "./bootstrap && "
configopts = "--with-cuda=$EBROOTCUDA --with-boost=$EBROOTBOOST"
sanity_check_paths = {'files': ['lib/libtacuda.%s' % SHLIB_EXT], 'dirs': ['include']}
modextravars = {'TACUDA_HOME': '%(installdir)s'}
moduleclass = 'devel'
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment