diff --git a/b/BLIS/BLIS-0.9.0-GCC-12.2.0.eb b/b/BLIS/BLIS-0.9.0-GCC-12.2.0.eb new file mode 100644 index 00000000..cdc0cbc4 --- /dev/null +++ b/b/BLIS/BLIS-0.9.0-GCC-12.2.0.eb @@ -0,0 +1,45 @@ +# IT4Innovations +# LK 2023 + +easyblock = 'ConfigureMake' + +name = 'BLIS' +version = '0.9.0' + +homepage = 'https://github.com/flame/blis/' +description = """BLIS is a portable software framework for instantiating high-performance +BLAS-like dense linear algebra libraries.""" + +toolchain = {'name': 'GCC', 'version': '12.2.0'} + +source_urls = ['https://github.com/flame/blis/archive/'] +sources = ['%(version)s.tar.gz'] +patches = [ +# '%(name)s-%(version)s_disable_power9_kernels.patch', + '%(name)s-%(version)s_enable_ppc_autodetect.patch', +] +checksums = [ + '1135f664be7355427b91025075562805cdc6cc730d3173f83533b2c5dcc2f308', # 0.9.0.tar.gz + # BLIS-0.9.0_disable_power9_kernels.patch +# 'ed7a326bc5c5c21c42faefbec2fd7be609d1c7236981b466475edace39307279', + # BLIS-0.9.0_enable_ppc_autodetect.patch + 'f373fb252c0d14036fb631f048091976cceb02abb3e570a97fbaeac2fbb12328', +] +builddependencies = [ + ('Python', '3.10.8', '-bare'), + ('Perl', '5.36.0'), +] + +configopts = '--enable-cblas --enable-threading=openmp --enable-shared CC="$CC" auto' + +runtest = 'check' + +sanity_check_paths = { + 'files': ['include/blis/cblas.h', 'include/blis/blis.h', + 'lib/libblis.a', 'lib/libblis.%s' % SHLIB_EXT], + 'dirs': [], +} + +modextrapaths = {'CPATH': 'include/blis'} + +moduleclass = 'numlib' diff --git a/f/FlexiBLAS/FlexiBLAS-3.2.1-GCC-12.2.0.eb b/f/FlexiBLAS/FlexiBLAS-3.2.1-GCC-12.2.0.eb new file mode 100644 index 00000000..343306b0 --- /dev/null +++ b/f/FlexiBLAS/FlexiBLAS-3.2.1-GCC-12.2.0.eb @@ -0,0 +1,61 @@ +# IT4Innovations +# LK 2023 + +easyblock = 'Bundle' + +name = 'FlexiBLAS' +version = '3.2.1' + +homepage = 'https://gitlab.mpi-magdeburg.mpg.de/software/flexiblas-release' +description = """FlexiBLAS is a wrapper library that enables the exchange of the BLAS and LAPACK implementation +used by a program without recompiling or relinking it.""" + +toolchain = {'name': 'GCC', 'version': '12.2.0'} +local_extra_flags = "-fstack-protector-strong -fstack-clash-protection" +toolchainopts = {'pic': True, 'extra_cflags': local_extra_flags, 'extra_fflags': local_extra_flags} + +builddependencies = [ + ('CMake', '3.24.3'), + ('Python', '3.10.8', '-bare'), # required for running the tests + ('BLIS', '0.9.0'), +] + +dependencies = [ + ('OpenBLAS', '0.3.21'), +] + +# note: first listed backend will be used as default by FlexiBLAS, +# unless otherwise specified via easyconfig parameter flexiblas_default +local_backends = ['OpenBLAS', 'BLIS'] + +# imkl supplies its backend via the imkl module, not as a dependency +if ARCH == 'x86_64': + local_backends.append('imkl') + +default_component_specs = {'start_dir': '%(namelower)s-%(version)s'} +sanity_check_all_components = True + +# Also build and install LAPACKE, which FlexiBLAS does not support yet +components = [ + (name, version, { + 'source_urls': ['https://github.com/mpimd-csc/flexiblas/releases/download/v%(version)s/'], + 'sources': [SOURCELOWER_TAR_GZ], + 'checksums': ['5be7e508e2dbb751b3bf372639d8e82a11f79e9ef6cbf243b64981c24a5703cf'], + 'backends': local_backends, + }), + ('LAPACK', '3.10.1', { + 'easyblock': 'CMakeMake', + 'source_urls': ['https://github.com/Reference-LAPACK/lapack/archive/'], + 'sources': ['v%(version)s.tar.gz'], + 'checksums': ['cd005cd021f144d7d5f7f33c943942db9f03a28d110d6a3b80d718a295f7f714'], + 'configopts': ('-DBUILD_SHARED_LIBS=ON -DUSE_OPTIMIZED_BLAS=ON -DLAPACKE=ON ' + '-DUSE_OPTIMIZED_LAPACK=ON -DBUILD_DEPRECATED=ON ' + '-DCMAKE_INSTALL_INCLUDEDIR=%(installdir)s/include/flexiblas'), + 'sanity_check_paths': { + 'files': ['lib/liblapacke.%s' % SHLIB_EXT, 'include/flexiblas/lapacke.h'], + 'dirs': [], + }, + }), +] + +moduleclass = 'lib' diff --git a/g/gettext/gettext-0.21.1.eb b/g/gettext/gettext-0.21.1.eb new file mode 100644 index 00000000..8fd0870d --- /dev/null +++ b/g/gettext/gettext-0.21.1.eb @@ -0,0 +1,41 @@ +# IT4Innovations +# LK 2024 + +easyblock = 'ConfigureMake' + +name = 'gettext' +version = '0.21.1' + +homepage = 'https://www.gnu.org/software/gettext/' +description = """GNU 'gettext' is an important step for the GNU Translation Project, as it is an asset on which we may +build many other steps. This package offers to programmers, translators, and even users, a well integrated set of tools +and documentation""" + +# This is a basic stripped down version of gettext without any +# dependencies on other packages used as initial builddep for XZ +# It is the first step in the cyclic dependency chain of +# XZ -> libxml2 -> gettext -> XZ + +toolchain = SYSTEM + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['e8c3650e1d8cee875c4f355642382c1df83058bd5a11ee8555c0cf276d646d45'] + +dependencies = [ + ('ncurses', '6.3'), +] + +configopts = '--without-emacs --with-included-libxml --without-xz --without-bzip2' + +sanity_check_paths = { + 'files': ['bin/gettext', 'lib/libgettextpo.a', 'lib/libgettextpo.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +sanity_check_commands = [ + "gettext --help", + "msginit --help", +] + +moduleclass = 'tools' diff --git a/h/HDF5/HDF5-1.14.0-NVHPC-23.5.eb b/h/HDF5/HDF5-1.14.0-NVHPC-23.5.eb new file mode 100644 index 00000000..22b38ad2 --- /dev/null +++ b/h/HDF5/HDF5-1.14.0-NVHPC-23.5.eb @@ -0,0 +1,27 @@ +# IT4Innovations +# LK 2023 + +name = 'HDF5' +version = '1.14.0' + +homepage = 'https://portal.hdfgroup.org/display/support' +description = """HDF5 is a data model, library, and file format for storing and managing data. + It supports an unlimited variety of datatypes, and is designed for flexible + and efficient I/O and for high volume and complex data.""" + +toolchain = {'name': 'NVHPC', 'version': '23.5'} +toolchainopts = {'pic': True} + +source_urls = ['https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-%(version_major_minor)s/hdf5-%(version)s/src'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['a571cc83efda62e1a51a0a912dd916d01895801c5025af91669484a1575a6ef4'] + +configopts = '--enable-fortran --enable-fortran 2003 --enable-cxx --enable-parallel --enable-unsupported --enable-shared' + +dependencies = [ + ('OpenMPI', '4.1.5', '-CUDA-12.2.0'), + ('zlib', '1.2.12'), + ('Szip', '2.1.1'), +] + +moduleclass = 'data' diff --git a/m/memkind/memkind-1.14.0-GCCcore-11.3.0.eb b/m/memkind/memkind-1.14.0-GCCcore-11.3.0.eb new file mode 100644 index 00000000..2a638b67 --- /dev/null +++ b/m/memkind/memkind-1.14.0-GCCcore-11.3.0.eb @@ -0,0 +1,37 @@ +easyblock = 'ConfigureMake' + +name = 'memkind' +version = '1.14.0' + +homepage = 'http://memkind.github.io' +description = """User Extensible Heap Manager built on top of jemalloc which enables control of memory characteristics +and a partitioning of the heap between kinds of memory. +""" + +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/memkind/memkind/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['ab366b20b5a87ea655483631fc762ba6eb59eb6c3a08652e643f1ee3f06a6a12'] + +builddependencies = [ + ('binutils', '2.38'), + # ('Coreutils', '8.27'), # needed to ensure that ./build_jemalloc.sh works properly + ('Autotools', '20220317'), # needed to ensure that ./build_jemalloc.sh works properly +] + +dependencies = [ + # ('tbb', '2017_U5'), # optional, to enable the tbb heap manager + ('numactl', '2.0.14') +] + +# preconfigopts = './build_jemalloc.sh && ./autogen.sh && ' +preconfigopts = './autogen.sh && ' + +sanity_check_paths = { + 'files': ["include/memkind.h", "lib/libmemkind.%s" % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'lib' diff --git a/n/NCCL/NCCL-2.18.3-CUDA-12.2.0.eb b/n/NCCL/NCCL-2.18.3-CUDA-12.2.0.eb index d93f250c..264c9550 100644 --- a/n/NCCL/NCCL-2.18.3-CUDA-12.2.0.eb +++ b/n/NCCL/NCCL-2.18.3-CUDA-12.2.0.eb @@ -21,10 +21,6 @@ dependencies = [ # ('UCX-CUDA', '1.14.1', versionsuffix, ('GCCcore', '12.2.0')), ] -import os -if os.environ.get("CLUSTERNAME") in ["KAROLINA"]: - cuda_compute_capabilities = ['8.0'] # A100 -else: - cuda_compute_capabilities = ['7.0'] # V100 +cuda_compute_capabilities = ['8.0'] # A100 moduleclass = 'lib' diff --git a/n/NVHPC/NVHPC-23.11.eb b/n/NVHPC/NVHPC-23.11.eb index c16c6998..61cda9a6 100644 --- a/n/NVHPC/NVHPC-23.11.eb +++ b/n/NVHPC/NVHPC-23.11.eb @@ -14,7 +14,10 @@ accept_eula = True source_urls = ['https://developer.download.nvidia.com/hpc-sdk/%(version)s/'] local_tarball_tmpl = 'nvhpc_2023_%%(version_major)s%%(version_minor)s_Linux_%s_cuda_multi.tar.gz' sources = [local_tarball_tmpl % '%(arch)s'] -checksums = ['33483a069a911f9309cd53859ab90d2778fb176df906e9e8d2bd55f45eeec400'] +checksums = [ +# 'cf744498d1d74ba0af4294388706644ad3669eb0cacea3b69e23739afa2806a0', + '33483a069a911f9309cd53859ab90d2778fb176df906e9e8d2bd55f45eeec400' +] local_gccver = '12.2.0' dependencies = [ @@ -24,11 +27,6 @@ dependencies = [ ] default_cuda_version = '12.2' - -import os -if os.environ.get("CLUSTERNAME") in ["KAROLINA"]: - cuda_compute_capabilities = "8.0" -else: - cuda_compute_capabilities = "7.0" +cuda_compute_capabilities = "8.0" moduleclass = 'compiler' diff --git a/n/ncurses/ncurses-6.3.eb b/n/ncurses/ncurses-6.3.eb new file mode 100644 index 00000000..38d5a6ce --- /dev/null +++ b/n/ncurses/ncurses-6.3.eb @@ -0,0 +1,50 @@ +# IT4Innovations +# LK 2024 + +easyblock = 'ConfigureMake' + +name = 'ncurses' +version = '6.3' + +homepage = 'https://www.gnu.org/software/ncurses/' +description = """ + The Ncurses (new curses) library is a free software emulation of curses in + System V Release 4.0, and more. It uses Terminfo format, supports pads and + color and multiple highlights and forms characters and function-key mapping, + and has all the other SYSV-curses enhancements over BSD Curses. +""" + +toolchain = SYSTEM + +source_urls = [GNU_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['97fc51ac2b085d4cde31ef4d2c3122c21abc217e9090a43a30fc5ec21684e059'] + +local_common_configopts = "--with-shared --enable-overwrite --without-ada --enable-symlinks --with-versioned-syms " +configopts = [ + # build ncurses: serial build in default paths with shared libraries + local_common_configopts, + # build ncursesw: serial with UTF-8 + local_common_configopts + "--enable-ext-colors --enable-widec --includedir=%(installdir)s/include/ncursesw/", +] + +# need to take care of $CFLAGS ourselves with dummy toolchain +# we need to add -fPIC, but should also include -O* option to avoid compiling with -O0 (default for GCC) +buildopts = 'CFLAGS="-O2 -fPIC"' + +# Symlink libtinfo to libncurses +# libncurses with this configopts has all the symbols from libtinfo, but some packages look for libtinfo specifically +postinstallcmds = ['cd %(installdir)s/lib && for l in libncurses{.,_,w}*; do ln -s "${l}" "${l/ncurses/tinfo}"; done'] + +_target_suffix = ['', 'w'] # '': ncurses, 'w': ncursesw +_lib_suffix = ['%s%s' % (x, y) for x in _target_suffix for y in ['.a', '_g.a', '.' + SHLIB_EXT]] +_lib_names = ['form', 'menu', 'ncurses', 'panel', 'tinfo'] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ["captoinfo", "clear", "infocmp", "infotocap", "ncurses%(version_major)s-config", + "reset", "tabs", "tic", "toe", "tput", "tset"]] + + ['lib/lib%s%s' % (x, y) for x in _lib_names for y in _lib_suffix], + 'dirs': ['include', 'include/ncursesw'], +} + +moduleclass = 'devel' diff --git a/o/OpenMPI/OpenMPI-4.1.5-NVHPC-23.5-CUDA-12.2.0-cs.eb b/o/OpenMPI/OpenMPI-4.1.5-NVHPC-23.5-CUDA-12.2.0-cs.eb new file mode 100644 index 00000000..f6b59cb2 --- /dev/null +++ b/o/OpenMPI/OpenMPI-4.1.5-NVHPC-23.5-CUDA-12.2.0-cs.eb @@ -0,0 +1,95 @@ +# IT4Innovations +# LK 2023 + +name = 'OpenMPI' +version = '4.1.5' +versionsuffix = '-CUDA-12.2.0' + +homepage = 'https://www.open-mpi.org/' +description = """The Open MPI Project is an open source MPI-3 implementation.""" + +toolchain = {'name': 'NVHPC', 'version': '23.5'} + +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 = [ + 'a640986bc257389dd379886fdae6264c8cfa56bc98b71ce3ae3dfbd8ce61dbe3', # openmpi-4.1.5.tar.bz2 + # OpenMPI-4.1.1_build-with-internal-cuda-header.patch + '63eac52736bdf7644c480362440a7f1f0ae7c7cae47b7565f5635c41793f8c83', + # OpenMPI-4.1.1_opal-datatype-cuda-performance.patch + 'b767c7166cf0b32906132d58de5439c735193c9fd09ec3c5c11db8d5fa68750e', +] + +builddependencies = [ + ('pkgconf', '1.9.3'), + ('Perl', '5.36.0'), + ('Autotools', '20220317'), +] + +dependencies = [ + ('zlib', '1.2.12'), + ('CUDA', '12.2.0', '', True), + ('hwloc', '2.8.0'), + ('libevent', '2.1.12'), + ('UCX', '1.14.1'), + ('UCX-CUDA', '1.14.1', '-CUDA-%(cudaver)s'), + ('libfabric', '1.16.1'), + ('PMIx', '4.2.2'), + ('UCC', '1.1.0'), + ('UCC-CUDA', '1.1.0', '-CUDA-%(cudaver)s'), +] + +# 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' +configopts += ' CC=pgcc CXX=pgc++ FC=pgfortran' +configopts += ' CXXFLAGS="-fPIC"' + +# IT4I-specific settings + +#configopts += '--enable-shared ' +configopts += ' --enable-mpi-thread-multiple' +configopts += ' --with-verbs' +configopts += ' --enable-mpirun-prefix-by-default' +configopts += ' --with-hwloc=$EBROOTHWLOC' # hwloc support +configopts += ' --with-slurm ' # Enable slurm +configopts += ' --enable-mpi-cxx' # Enable building the C++ MPI bindings +configopts += ' --with-ucx=$EBROOTUCX' + +osdependencies = [('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel')] + +postinstallcmds = [ + 'echo "# By default, for Open MPI 4.0 and later, infiniband ports on a device are not used by default." >> %(installdir)s/etc/openmpi-mca-params.conf', + 'echo "btl_openib_allow_ib = true" >> %(installdir)s/etc/openmpi-mca-params.conf', +] + +local_libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"] +sanity_check_paths = { + 'files': [ + "bin/%s" % + binfile for binfile in [ + "ompi_info", "opal_wrapper", "orterun"]] + [ + "lib/lib%s.%s" % + (libfile, SHLIB_EXT) for libfile in local_libs] + [ + "include/%s.h" % + x for x in [ + "mpi-ext", "mpif-config", "mpif", "mpi", "mpi_portable_platform"]], 'dirs': [], } + +moduleclass = 'mpi' diff --git a/o/OpenMPI/OpenMPI-4.1.6-NVHPC-23.11-CUDA-12.2.0-p06.eb b/o/OpenMPI/OpenMPI-4.1.6-NVHPC-23.11-CUDA-12.2.0-p06.eb new file mode 100644 index 00000000..6c0255a4 --- /dev/null +++ b/o/OpenMPI/OpenMPI-4.1.6-NVHPC-23.11-CUDA-12.2.0-p06.eb @@ -0,0 +1,96 @@ +# IT4Innovations +# LK 2024 + +name = 'OpenMPI' +version = '4.1.6' +versionsuffix = '-CUDA-12.2.0' + +homepage = 'https://www.open-mpi.org/' +description = """The Open MPI Project is an open source MPI-3 implementation.""" + +toolchain = {'name': 'NVHPC', 'version': '23.11'} + +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 = [ + 'f740994485516deb63b5311af122c265179f5328a0d857a567b85db00b11e415', # openmpi-4.1.6.tar.bz2 + # OpenMPI-4.1.1_build-with-internal-cuda-header.patch + '63eac52736bdf7644c480362440a7f1f0ae7c7cae47b7565f5635c41793f8c83', + # OpenMPI-4.1.1_opal-datatype-cuda-performance.patch + 'b767c7166cf0b32906132d58de5439c735193c9fd09ec3c5c11db8d5fa68750e', +] + +builddependencies = [ + ('pkgconf', '1.9.3'), + ('Perl', '5.36.0'), + ('Autotools', '20220317'), +] + +dependencies = [ + ('zlib', '1.2.12'), + ('CUDA', '12.2.0', '', True), + ('hwloc', '2.8.0'), + ('libevent', '2.1.12'), + ('UCX', '1.14.1'), + ('UCX-CUDA', '1.14.1', '-CUDA-%(cudaver)s'), + ('libfabric', '1.16.1'), + ('PMIx', '4.2.2'), + ('UCC', '1.1.0'), + ('UCC-CUDA', '1.1.0', '-CUDA-%(cudaver)s'), +] + +# 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' +configopts += ' CC=pgcc CXX=pgc++ FC=pgfortran' +configopts += ' CXXFLAGS="-fPIC"' + +# IT4I-specific settings + +#configopts += '--enable-shared ' +configopts += ' --enable-mpi-thread-multiple' +configopts += ' --with-verbs' +configopts += ' --enable-mpirun-prefix-by-default' +configopts += ' --with-hwloc=$EBROOTHWLOC' # hwloc support +configopts += ' --with-slurm' # Enable slurm +configopts += ' --enable-mpi-cxx' # Enable building the C++ MPI bindings +configopts += ' --with-ucx=$EBROOTUCX' +configopts += ' --with-knem=/opt/knem-1.1.4.90mlnx3' + +osdependencies = [('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel')] + +postinstallcmds = [ + 'echo "# By default, for Open MPI 4.0 and later, infiniband ports on a device are not used by default." >> %(installdir)s/etc/openmpi-mca-params.conf', + 'echo "btl_openib_allow_ib = true" >> %(installdir)s/etc/openmpi-mca-params.conf', +] + +local_libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"] +sanity_check_paths = { + 'files': [ + "bin/%s" % + binfile for binfile in [ + "ompi_info", "opal_wrapper", "orterun"]] + [ + "lib/lib%s.%s" % + (libfile, SHLIB_EXT) for libfile in local_libs] + [ + "include/%s.h" % + x for x in [ + "mpi-ext", "mpif-config", "mpif", "mpi", "mpi_portable_platform"]], 'dirs': [], } + +moduleclass = 'mpi' diff --git a/o/OpenMPI/OpenMPI-4.1.6-NVHPC-23.11-rocm.eb b/o/OpenMPI/OpenMPI-4.1.6-NVHPC-23.11-rocm.eb new file mode 100644 index 00000000..106a4d1c --- /dev/null +++ b/o/OpenMPI/OpenMPI-4.1.6-NVHPC-23.11-rocm.eb @@ -0,0 +1,84 @@ +# IT4Innovations +# LK 2024 + +name = 'OpenMPI' +version = '4.1.6' +versionsuffix = '-rocm' + +homepage = 'https://www.open-mpi.org/' +description = """The Open MPI Project is an open source MPI-3 implementation.""" + +toolchain = {'name': 'NVHPC', 'version': '23.11'} + +source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = [ + 'f740994485516deb63b5311af122c265179f5328a0d857a567b85db00b11e415', # openmpi-4.1.6.tar.bz2 +] + +builddependencies = [ + ('pkgconf', '1.9.3'), + ('Perl', '5.36.0'), + ('Autotools', '20220317'), +] + +dependencies = [ + ('zlib', '1.2.12'), + ('hwloc', '2.8.0'), + ('libevent', '2.1.12'), + ('UCX', '1.15.0', '-rocm'), + ('libfabric', '1.16.1'), + ('PMIx', '4.2.2'), + ('UCX-ROCM', '1.15.0', '-rocm'), +] + +# 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', + '' +]) + +configopts = ' -with-rocm=/opt/rocm ' +configopts += ' CC=pgcc CXX=pgc++ FC=pgfortran' +configopts += ' CXXFLAGS="-fPIC"' + +# IT4I-specific settings + +#configopts += '--enable-shared ' +configopts += ' --enable-mpi-thread-multiple' +configopts += ' --with-verbs' +configopts += ' --enable-mpirun-prefix-by-default' +configopts += ' --with-hwloc=$EBROOTHWLOC' # hwloc support +configopts += ' --with-slurm' # Enable slurm +configopts += ' --enable-mpi-cxx' # Enable building the C++ MPI bindings +configopts += ' --with-ucx=$EBROOTUCX' +configopts += ' --with-knem=/opt/knem-1.1.4.90mlnx3' + +osdependencies = [('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel')] + +postinstallcmds = [ + 'echo "# By default, for Open MPI 4.0 and later, infiniband ports on a device are not used by default." >> %(installdir)s/etc/openmpi-mca-params.conf', + 'echo "btl_openib_allow_ib = true" >> %(installdir)s/etc/openmpi-mca-params.conf', +] + +local_libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"] +sanity_check_paths = { + 'files': [ + "bin/%s" % + binfile for binfile in [ + "ompi_info", "opal_wrapper", "orterun"]] + [ + "lib/lib%s.%s" % + (libfile, SHLIB_EXT) for libfile in local_libs] + [ + "include/%s.h" % + x for x in [ + "mpi-ext", "mpif-config", "mpif", "mpi", "mpi_portable_platform"]], 'dirs': [], } + +moduleclass = 'mpi' diff --git a/o/OpenMPI/OpenMPI-5.0.2-GCC-12.2.0-rocm.eb b/o/OpenMPI/OpenMPI-5.0.2-GCC-12.2.0-rocm.eb new file mode 100644 index 00000000..671106dd --- /dev/null +++ b/o/OpenMPI/OpenMPI-5.0.2-GCC-12.2.0-rocm.eb @@ -0,0 +1,68 @@ +# IT4Innovations +# LK 2024 + +name = 'OpenMPI' +version = '5.0.2' +versionsuffix = '-rocm' + +homepage = 'https://www.open-mpi.org/' +description = """The Open MPI Project is an open source MPI-3 implementation.""" + +toolchain = {'name': 'GCC', 'version': '12.2.0'} + +source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = [ + 'ee46ad8eeee2c3ff70772160bff877cbf38c330a0bc3b3ddc811648b3396698f', +] + +builddependencies = [ + ('pkgconf', '1.9.3'), + ('Perl', '5.36.0'), + ('Autotools', '20220317'), +] + +dependencies = [ + ('zlib', '1.2.12'), + ('hwloc', '2.8.0'), + ('libevent', '2.1.12'), + ('UCX', '1.15.0', '-rocm'), + ('libfabric', '1.16.1'), + ('PMIx', '4.2.6'), + ('UCX-ROCM', '1.15.0', '-rocm'), +] + +configopts = ' -with-rocm=/opt/rocm ' +configopts += ' CXXFLAGS="-fPIC"' + +# IT4I-specific settings + +configopts += '--enable-shared ' +configopts += ' --enable-mpi-thread-multiple' +configopts += ' --with-verbs' +configopts += ' --enable-mpirun-prefix-by-default' +configopts += ' --with-hwloc=$EBROOTHWLOC' # hwloc support +configopts += ' --with-slurm' # Enable slurm +configopts += ' --with-ucx=$EBROOTUCX' +configopts += ' --with-knem=/opt/knem-1.1.4.90mlnx3' + +osdependencies = [('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel')] + +postinstallcmds = [ + 'echo "# By default, for Open MPI 4.0 and later, infiniband ports on a device are not used by default." >> %(installdir)s/etc/openmpi-mca-params.conf', + 'echo "btl_openib_allow_ib = true" >> %(installdir)s/etc/openmpi-mca-params.conf', +] + +local_libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"] +sanity_check_paths = { + 'files': [ + "bin/%s" % + binfile for binfile in [ + "ompi_info", "opal_wrapper", "orterun"]] + [ + "lib/lib%s.%s" % + (libfile, SHLIB_EXT) for libfile in local_libs] + [ + "include/%s.h" % + x for x in [ + "mpi-ext", "mpif-config", "mpif", "mpi", "mpi_portable_platform"]], 'dirs': [], } + +moduleclass = 'mpi' diff --git a/o/OpenMPI/OpenMPI-5.0.2-GCC-12.2.0.eb b/o/OpenMPI/OpenMPI-5.0.2-GCC-12.2.0.eb new file mode 100644 index 00000000..05e0b07b --- /dev/null +++ b/o/OpenMPI/OpenMPI-5.0.2-GCC-12.2.0.eb @@ -0,0 +1,74 @@ +# IT4Innovations +# LK 2024 + +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': '12.2.0'} + +source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = [ + {'openmpi-5.0.2.tar.bz2': 'ee46ad8eeee2c3ff70772160bff877cbf38c330a0bc3b3ddc811648b3396698f'}, +] + +builddependencies = [ + ('pkgconf', '1.9.3'), + ('Perl', '5.36.0'), + ('Autotools', '20220317'), +] + +dependencies = [ + ('zlib', '1.2.12'), + ('hwloc', '2.8.0'), + ('libevent', '2.1.12'), + ('UCX', '1.14.1'), + ('libfabric', '1.16.1'), + ('PMIx', '4.2.6'), + ('UCC', '1.1.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', + '' +]) + +configopts = '--enable-shared --enable-mpi-thread-multiple --with-verbs ' +configopts += '--enable-mpirun-prefix-by-default ' +configopts += '--with-hwloc=$EBROOTHWLOC ' # hwloc support +configopts += '--with-slurm ' # Enable slurm +configopts += '--enable-mpi-cxx ' # Enable building the C++ MPI bindings +configopts += '--with-ucx=$EBROOTUCX ' + +import os +if os.environ.get("CLUSTERNAME") in ["BARBORA"]: + modextravars = {'OMPI_MCA_btl_openib_if_include': 'mlx5_0', + 'OMPI_MCA_btl_tcp_if_include': '10.33.4.0/24', + 'OMPI_MCA_orte_base_help_aggregate': '0', + 'SLURM_MPI_TYPE': 'pmix_v4', + } +elif os.environ.get("CLUSTERNAME") in ["KAROLINA"]: + modextravars = {'OMPI_MCA_btl_openib_if_include': 'mlx5_0', + 'OMPI_MCA_orte_base_help_aggregate': '0', + 'SLURM_MPI_TYPE': 'pmix_v4', + } +else: + modextravars = {'OMPI_MCA_btl_openib_if_include': 'mlx4_0', + 'OMPI_MCA_oob_tcp_if_include': '10.0.0.0/8', + 'SLURM_MPI_TYPE': 'pmix_v4', + } + + +moduleclass = 'mpi' diff --git a/o/OpenMPI/OpenMPI-5.0.2-NVHPC-23.11-rocm.eb b/o/OpenMPI/OpenMPI-5.0.2-NVHPC-23.11-rocm.eb new file mode 100644 index 00000000..928a8062 --- /dev/null +++ b/o/OpenMPI/OpenMPI-5.0.2-NVHPC-23.11-rocm.eb @@ -0,0 +1,69 @@ +# IT4Innovations +# LK 2024 + +name = 'OpenMPI' +version = '5.0.2' +versionsuffix = '-rocm' + +homepage = 'https://www.open-mpi.org/' +description = """The Open MPI Project is an open source MPI-3 implementation.""" + +toolchain = {'name': 'NVHPC', 'version': '23.11'} + +source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = [ + 'ee46ad8eeee2c3ff70772160bff877cbf38c330a0bc3b3ddc811648b3396698f', +] + +builddependencies = [ + ('pkgconf', '1.9.3'), + ('Perl', '5.36.0'), + ('Autotools', '20220317'), +] + +dependencies = [ + ('zlib', '1.2.12'), + ('hwloc', '2.8.0'), + ('libevent', '2.1.12'), + ('UCX', '1.15.0', '-rocm'), + ('libfabric', '1.16.1'), + ('PMIx', '4.2.6'), + ('UCX-ROCM', '1.15.0', '-rocm'), +] + +configopts = ' -with-rocm=/opt/rocm ' +configopts += ' CC=pgcc CXX=pgc++ FC=pgfortran' +configopts += ' CXXFLAGS="-fPIC"' + +# IT4I-specific settings + +#configopts += '--enable-shared ' +configopts += ' --enable-mpi-thread-multiple' +configopts += ' --with-verbs' +configopts += ' --enable-mpirun-prefix-by-default' +configopts += ' --with-hwloc=$EBROOTHWLOC' # hwloc support +configopts += ' --with-slurm' # Enable slurm +configopts += ' --with-ucx=$EBROOTUCX' +configopts += ' --with-knem=/opt/knem-1.1.4.90mlnx3' + +osdependencies = [('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel')] + +postinstallcmds = [ + 'echo "# By default, for Open MPI 4.0 and later, infiniband ports on a device are not used by default." >> %(installdir)s/etc/openmpi-mca-params.conf', + 'echo "btl_openib_allow_ib = true" >> %(installdir)s/etc/openmpi-mca-params.conf', +] + +local_libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"] +sanity_check_paths = { + 'files': [ + "bin/%s" % + binfile for binfile in [ + "ompi_info", "opal_wrapper", "orterun"]] + [ + "lib/lib%s.%s" % + (libfile, SHLIB_EXT) for libfile in local_libs] + [ + "include/%s.h" % + x for x in [ + "mpi-ext", "mpif-config", "mpif", "mpi", "mpi_portable_platform"]], 'dirs': [], } + +moduleclass = 'mpi' diff --git a/p/PMIx/PMIx-4.2.6-GCC-12.2.0.eb b/p/PMIx/PMIx-4.2.6-GCCcore-12.2.0.eb similarity index 96% rename from p/PMIx/PMIx-4.2.6-GCC-12.2.0.eb rename to p/PMIx/PMIx-4.2.6-GCCcore-12.2.0.eb index 60194281..af1f16fe 100644 --- a/p/PMIx/PMIx-4.2.6-GCC-12.2.0.eb +++ b/p/PMIx/PMIx-4.2.6-GCCcore-12.2.0.eb @@ -19,7 +19,7 @@ provide a reference implementation of the PMI-server that demonstrates the desired level of scalability. """ -toolchain = {'name': 'GCC', 'version': '12.2.0'} +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} toolchainopts = {'pic': True} source_urls = ['https://github.com/openpmix/openpmix/releases/download/v%(version)s'] diff --git a/u/UCX-ROCM/UCX-ROCM-1.15.0-GCCcore-12.2.0-rocm.eb b/u/UCX-ROCM/UCX-ROCM-1.15.0-GCCcore-12.2.0-rocm.eb new file mode 100644 index 00000000..e0739249 --- /dev/null +++ b/u/UCX-ROCM/UCX-ROCM-1.15.0-GCCcore-12.2.0-rocm.eb @@ -0,0 +1,50 @@ +# IT4Innovations +# LK 2024 + +easyblock = 'ConfigureMake' + +name = 'UCX-ROCM' +version = '1.15.0' +versionsuffix = '-rocm' + +homepage = 'http://www.openucx.org/' +description = """Unified Communication X +An open-source production grade communication framework for data centric +and high-performance applications + +This module adds the UCX CUDA support. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openucx/ucx/releases/download/v%(version)s'] +sources = [{'filename': 'ucx-%(version)s.tar.gz', 'alt_location': 'UCX'}] +#patches = ['%(name)s-1.11.0_link_against_existing_UCX_libs.patch'] +checksums = [ + ('457187fa020e526609ba91e7750c9941d57bd57d60d6eed317b40ad8824aca93', + '4b202087076bc1c98f9249144f0c277a8ea88ad4ca6f404f94baa9cb3aebda6d'), + {'UCX-CUDA-1.11.0_link_against_existing_UCX_libs.patch': + '457187fa020e526609ba91e7750c9941d57bd57d60d6eed317b40ad8824aca93'}, +] + +builddependencies = [ + ('binutils', '2.39'), + ('Autotools', '20220317'), + ('pkgconf', '1.9.3'), +] + +dependencies = [ + ('zlib', '1.2.12'), + ('UCX', '1.15.0', '-rocm'), +] + +configopts = '--with-rocm=/opt/rocm --without-knem --enable-optimizations --enable-cma --enable-mt --with-verbs ' +configopts += '--without-java --without-go --disable-doxygen-doc ' + +sanity_check_paths = { + 'files': [], + 'dirs': ['bin', 'include'], +} + +moduleclass = 'lib' diff --git a/u/UCX/UCX-1.14.1-GCCcore-12.2.0.eb b/u/UCX/UCX-1.14.1-GCCcore-12.2.0.eb index 6c7f97f4..c48369bb 100644 --- a/u/UCX/UCX-1.14.1-GCCcore-12.2.0.eb +++ b/u/UCX/UCX-1.14.1-GCCcore-12.2.0.eb @@ -49,7 +49,6 @@ if os.environ.get("CLUSTERNAME") in ["BARBORA"]: if os.environ.get("CLUSTERNAME") in ["KAROLINA"]: configopts += '--with-xpmem --with-knem=/opt/knem-1.1.4.90mlnx3' - buildopts = 'V=1' sanity_check_paths = { diff --git a/u/UCX/UCX-1.15.0-GCCcore-12.2.0-rocm.eb b/u/UCX/UCX-1.15.0-GCCcore-12.2.0-rocm.eb new file mode 100644 index 00000000..24017ee1 --- /dev/null +++ b/u/UCX/UCX-1.15.0-GCCcore-12.2.0-rocm.eb @@ -0,0 +1,56 @@ +# IT4Innovations +# LK 2024 + +easyblock = 'ConfigureMake' + +name = 'UCX' +version = '1.15.0' +versionsuffix = '-rocm' + +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': '12.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openucx/ucx/releases/download/v%(version)s'] +sources = ['%(namelower)s-%(version)s.tar.gz'] +patches = [ + 'UCX-1.13.1-dynamic_modules.patch', +] +checksums = [ + {'ucx-1.15.0.tar.gz': '4b202087076bc1c98f9249144f0c277a8ea88ad4ca6f404f94baa9cb3aebda6d'}, + {'UCX-1.13.1-dynamic_modules.patch': '00874687bd90b795fff61aaa183f6c6bea2210aa1003b28f23d9ebf7066f8782'}, +] + +builddependencies = [ + ('binutils', '2.39'), + ('Autotools', '20220317'), + ('pkgconf', '1.9.3'), +] + +osdependencies = [OS_PKG_IBVERBS_DEV] + +dependencies = [ + ('zlib', '1.2.12'), + ('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'