From bc91169c1cbd86d05e341fba0acc84b18ac28baf Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 23 Sep 2020 11:36:23 +0200 Subject: [PATCH] {lib}[GCCcore/10.2.0] OpenMPI v4.0.5, libevent v2.1.12, libfabric v1.11.0, PMIx 3.1.5 --- .../libevent-2.1.12-GCCcore-10.2.0.eb | 37 +++++++++++++++ .../libfabric-1.11.0-GCCcore-10.2.0.eb | 40 ++++++++++++++++ .../o/OpenMPI/OpenMPI-4.0.5-GCC-10.2.0.eb | 32 +++++++++++++ .../p/PMIx/PMIx-3.1.5-GCCcore-10.2.0.eb | 47 +++++++++++++++++++ 4 files changed, 156 insertions(+) create mode 100644 easybuild/easyconfigs/l/libevent/libevent-2.1.12-GCCcore-10.2.0.eb create mode 100644 easybuild/easyconfigs/l/libfabric/libfabric-1.11.0-GCCcore-10.2.0.eb create mode 100644 easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.0.5-GCC-10.2.0.eb create mode 100644 easybuild/easyconfigs/p/PMIx/PMIx-3.1.5-GCCcore-10.2.0.eb diff --git a/easybuild/easyconfigs/l/libevent/libevent-2.1.12-GCCcore-10.2.0.eb b/easybuild/easyconfigs/l/libevent/libevent-2.1.12-GCCcore-10.2.0.eb new file mode 100644 index 00000000000..22b850f842b --- /dev/null +++ b/easybuild/easyconfigs/l/libevent/libevent-2.1.12-GCCcore-10.2.0.eb @@ -0,0 +1,37 @@ +easyblock = 'ConfigureMake' + +name = 'libevent' +version = '2.1.12' + +homepage = 'https://libevent.org/' + +description = """ + The libevent API provides a mechanism to execute a callback function when + a specific event occurs on a file descriptor or after a timeout has been + reached. Furthermore, libevent also support callbacks due to signals or + regular timeouts. +""" + +toolchain = {'name': 'GCCcore', 'version': '10.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/%(name)s/%(name)s/releases/download/release-%(version)s-stable/'] +sources = ['%(name)s-%(version)s-stable.tar.gz'] +checksums = ['92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb'] + +builddependencies = [ + ('binutils', '2.35'), + ('pkg-config', '0.29.2'), +] + +dependencies = [ + ('zlib', '1.2.11'), +] + +sanity_check_paths = { + 'files': ['bin/event_rpcgen.py', 'include/event.h', 'include/event2/event.h', + 'lib/libevent_core.%s' % SHLIB_EXT, 'lib/pkgconfig/libevent.pc'], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/libfabric/libfabric-1.11.0-GCCcore-10.2.0.eb b/easybuild/easyconfigs/l/libfabric/libfabric-1.11.0-GCCcore-10.2.0.eb new file mode 100644 index 00000000000..35180743502 --- /dev/null +++ b/easybuild/easyconfigs/l/libfabric/libfabric-1.11.0-GCCcore-10.2.0.eb @@ -0,0 +1,40 @@ +easyblock = 'ConfigureMake' + +name = 'libfabric' +version = '1.11.0' + +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. +""" + +toolchain = {'name': 'GCCcore', 'version': '10.2.0'} +toolchainopts = {'pic': True} + +github_account = 'ofiwg' +source_urls = ['https://github.com/ofiwg/%(name)s/releases/download/v%(version)s'] +sources = [SOURCE_TAR_BZ2] +checksums = ['9938abf628e7ea8dcf60a94a4b62d499fbc0dbc6733478b6db2e6a373c80d58f'] + +builddependencies = [ + ('binutils', '2.35'), + ('pkg-config', '0.29.2'), +] + +osdependencies = [OS_PKG_OPENSSL_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' diff --git a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.0.5-GCC-10.2.0.eb b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.0.5-GCC-10.2.0.eb new file mode 100644 index 00000000000..15b78eb63ec --- /dev/null +++ b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-4.0.5-GCC-10.2.0.eb @@ -0,0 +1,32 @@ +name = 'OpenMPI' +version = '4.0.5' + +homepage = 'https://www.open-mpi.org/' +description = """The Open MPI Project is an open source MPI-3 implementation.""" + +toolchain = {'name': 'GCC', 'version': '10.2.0'} + +source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['572e777441fd47d7f06f1b8a166e7f44b8ea01b8b2e79d1e299d509725d1bd05'] + +builddependencies = [ + ('pkg-config', '0.29.2'), +] + +dependencies = [ + ('zlib', '1.2.11'), + ('hwloc', '2.2.0'), + ('libevent', '2.1.12'), + ('UCX', '1.9.0'), + ('libfabric', '1.11.0'), + ('PMIx', '3.1.5'), +] + +# 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' diff --git a/easybuild/easyconfigs/p/PMIx/PMIx-3.1.5-GCCcore-10.2.0.eb b/easybuild/easyconfigs/p/PMIx/PMIx-3.1.5-GCCcore-10.2.0.eb new file mode 100644 index 00000000000..efe2a2d3ed8 --- /dev/null +++ b/easybuild/easyconfigs/p/PMIx/PMIx-3.1.5-GCCcore-10.2.0.eb @@ -0,0 +1,47 @@ +# Note: +# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild +easyblock = 'ConfigureMake' + +name = 'PMIx' +version = '3.1.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': '10.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 = ['88934195174455df478b996313095df25b51d0caf5a5cce01b22f0ccdc6c5cf7'] + +builddependencies = [('binutils', '2.35')] + +dependencies = [ + ('libevent', '2.1.12'), + ('zlib', '1.2.11'), + ('hwloc', '2.2.0'), +] + +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'