Skip to content

Commit

Permalink
Merge pull request #18710 from SebastianAchilles/20230903170925_new_p…
Browse files Browse the repository at this point in the history
…r_OpenMPI415

{lib}[GCCcore/13.2.0] OpenMPI v4.1.5, UCX v1.15.0-rc4, UCC v1.2.0, ...
  • Loading branch information
branfosj committed Sep 10, 2023
2 parents 699845b + 9fba2e5 commit f56d4ee
Show file tree
Hide file tree
Showing 5 changed files with 224 additions and 0 deletions.
20 changes: 20 additions & 0 deletions easybuild/easyconfigs/g/gompi/gompi-2023b.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
easyblock = 'Toolchain'

name = 'gompi'
version = '2023b'

homepage = '(none)'
description = """GNU Compiler Collection (GCC) based compiler toolchain,
including OpenMPI for MPI support."""

toolchain = SYSTEM

local_gccver = '13.2.0'

# compiler toolchain dependencies
dependencies = [
('GCC', local_gccver), # includes both GCC and binutils
('OpenMPI', '4.1.5', '', ('GCC', local_gccver)),
]

moduleclass = 'toolchain'
62 changes: 62 additions & 0 deletions easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.1.5-GCC-13.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name = 'OpenMPI'
version = '4.1.5'

homepage = 'https://www.open-mpi.org/'
description = """The Open MPI Project is an open source MPI-3 implementation."""

toolchain = {'name': 'GCC', 'version': '13.2.0'}

source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads']
sources = [SOURCELOWER_TAR_BZ2]
patches = [
'OpenMPI-4.1.1_build-with-internal-cuda-header.patch',
'OpenMPI-4.1.1_opal-datatype-cuda-performance.patch',
]
checksums = [
{'openmpi-4.1.5.tar.bz2': 'a640986bc257389dd379886fdae6264c8cfa56bc98b71ce3ae3dfbd8ce61dbe3'},
{'OpenMPI-4.1.1_build-with-internal-cuda-header.patch':
'63eac52736bdf7644c480362440a7f1f0ae7c7cae47b7565f5635c41793f8c83'},
{'OpenMPI-4.1.1_opal-datatype-cuda-performance.patch':
'b767c7166cf0b32906132d58de5439c735193c9fd09ec3c5c11db8d5fa68750e'},
]

builddependencies = [
('pkgconf', '2.0.3'),
('Perl', '5.38.0'),
('Autotools', '20220317'),
]

dependencies = [
('zlib', '1.2.13'),
('hwloc', '2.9.2'),
('libevent', '2.1.12'),
('UCX', '1.15.0-rc4'),
('libfabric', '1.19.0'),
('PMIx', '4.2.5'),
('UCC', '1.2.0'),
]

# Update configure to include changes from the "internal-cuda" patch
# by running a subset of autogen.pl sufficient to achieve this
# without doing the full, long-running regeneration.
preconfigopts = ' && '.join([
'cd config',
'autom4te --language=m4sh opal_get_version.m4sh -o opal_get_version.sh',
'cd ..',
'autoconf',
'autoheader',
'aclocal',
'automake',
''
])

# CUDA related patches and custom configure option can be removed if CUDA support isn't wanted.
configopts = '--with-cuda=internal '

# 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'

moduleclass = 'mpi'
45 changes: 45 additions & 0 deletions easybuild/easyconfigs/p/PMIx/PMIx-4.2.5-GCCcore-13.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
easyblock = 'ConfigureMake'

name = 'PMIx'
version = '4.2.5'

homepage = 'https://pmix.org/'
description = """Process Management for Exascale Environments
PMI Exascale (PMIx) represents an attempt to
provide an extended version of the PMI standard specifically designed
to support clusters up to and including exascale sizes. The overall
objective of the project is not to branch the existing pseudo-standard
definitions - in fact, PMIx fully supports both of the existing PMI-1
and PMI-2 APIs - but rather to (a) augment and extend those APIs to
eliminate some current restrictions that impact scalability, and (b)
provide a reference implementation of the PMI-server that demonstrates
the desired level of scalability.
"""

toolchain = {'name': 'GCCcore', 'version': '13.2.0'}
toolchainopts = {'pic': True}

source_urls = ['https://github.com/openpmix/openpmix/releases/download/v%(version)s']
sources = ['%(namelower)s-%(version)s.tar.bz2']
checksums = ['a89c2c5dc69715a4df1e76fdc4318299386c184623a1d0d5eb1fb062e14b0d2b']

builddependencies = [('binutils', '2.40')]

dependencies = [
('libevent', '2.1.12'),
('zlib', '1.2.13'),
('hwloc', '2.9.2'),
]

configopts = ' --with-libevent=$EBROOTLIBEVENT --with-zlib=$EBROOTZLIB'
configopts += ' --with-hwloc=$EBROOTHWLOC'
configopts += ' --enable-pmix-binaries'

buildopts = 'V=1'

sanity_check_paths = {
'files': ['bin/pevent', 'bin/plookup', 'bin/pmix_info', 'bin/pps'],
'dirs': ['etc', 'include', 'lib', 'share']
}

moduleclass = 'lib'
41 changes: 41 additions & 0 deletions easybuild/easyconfigs/u/UCC/UCC-1.2.0-GCCcore-13.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
easyblock = 'ConfigureMake'

name = 'UCC'
version = '1.2.0'

homepage = 'https://www.openucx.org/'
description = """UCC (Unified Collective Communication) is a collective
communication operations API and library that is flexible, complete, and
feature-rich for current and emerging programming models and runtimes.
"""

toolchain = {'name': 'GCCcore', 'version': '13.2.0'}
toolchainopts = {'pic': True}

source_urls = ['https://github.com/openucx/ucc/archive/refs/tags']
sources = ['v%(version)s.tar.gz']
patches = ['UCC-1.1.0-multiple_component_paths.patch']
checksums = [
{'v1.2.0.tar.gz': 'c1552797600835c0cf401b82dc89c4d27d5717f4fb805d41daca8e19f65e509d'},
{'UCC-1.1.0-multiple_component_paths.patch': '3081d0f694331daa4a88a0fa3fb54b9a918015248ae5eb7b3157b924abd31bee'},
]

builddependencies = [
('binutils', '2.40'),
('Autotools', '20220317'),
]

dependencies = [
('UCX', '1.15.0-rc4'),
]

preconfigopts = "./autogen.sh && "

sanity_check_paths = {
'files': ['bin/ucc_info'],
'dirs': ['include', 'lib']
}

sanity_check_commands = ["ucc_info -c"]

moduleclass = 'lib'
56 changes: 56 additions & 0 deletions easybuild/easyconfigs/u/UCX/UCX-1.15.0-rc4-GCCcore-13.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
easyblock = 'ConfigureMake'

name = 'UCX'
version = '1.15.0-rc4'

homepage = 'https://www.openucx.org/'
description = """Unified Communication X
An open-source production grade communication framework for data centric
and high-performance applications
"""

toolchain = {'name': 'GCCcore', 'version': '13.2.0'}
toolchainopts = {'pic': True}

source_urls = ['https://github.com/openucx/ucx/releases/download/v%(version)s']
# TODO: Uncomment when updating to final release
# sources = ['%(namelower)s-%(version)s.tar.gz']
sources = ['%(namelower)s-1.15.0.tar.gz']
patches = [
'UCX-1.13.1-dynamic_modules.patch',
]
checksums = [
{'ucx-1.15.0.tar.gz': 'aa1e71de64dbc3061454dbe7510a38b930f7c184ec889c09f5611c2d4acaf07a'},
{'UCX-1.13.1-dynamic_modules.patch': '00874687bd90b795fff61aaa183f6c6bea2210aa1003b28f23d9ebf7066f8782'},
]

# Uncomment when updating to final release
# sources = ['%(namelower)s-%(version)s.tar.gz']
builddependencies = [
('binutils', '2.40'),
('Autotools', '20220317'),
('pkgconf', '2.0.3'),
]

osdependencies = [OS_PKG_IBVERBS_DEV]

dependencies = [
('zlib', '1.2.13'),
('numactl', '2.0.16'),
]

configure_cmd = "contrib/configure-release"

configopts = '--enable-optimizations --enable-cma --enable-mt --with-verbs '
configopts += '--without-java --without-go --disable-doxygen-doc '

buildopts = 'V=1'

sanity_check_paths = {
'files': ['bin/ucx_info', 'bin/ucx_perftest', 'bin/ucx_read_profile'],
'dirs': ['include', 'lib', 'share']
}

sanity_check_commands = ["ucx_info -d"]

moduleclass = 'lib'

0 comments on commit f56d4ee

Please sign in to comment.