From 7204d860ef507b1150778180de7fbf65589fb1c7 Mon Sep 17 00:00:00 2001 From: Lukas Krupcik Date: Wed, 6 Nov 2024 13:34:23 +0100 Subject: [PATCH] new file: l/libxcrypt/libxcrypt-4.4.36-GCCcore-14.2.0.eb new file: n/NVHPC/NVHPC-24.9-CUDA-12.6.0.eb new file: n/NVHPC/NVHPC-24.9.eb modified: o/OpenMPI/OpenMPI-5.0.5-GCC-14.2.0-acfl-24.10.eb new file: o/OpenMPI/OpenMPI-5.0.5-NVHPC-24.9-rocm.eb new file: u/UCX-ROCM/UCX-ROCM-1.16.0-GCCcore-13.3.0-rocm.eb new file: u/UCX/UCX-1.16.0-GCCcore-13.3.0-rocm.eb --- .../libxcrypt-4.4.36-GCCcore-14.2.0.eb | 32 ++++++++ n/NVHPC/NVHPC-24.9-CUDA-12.6.0.eb | 73 ++++++++++++++++++ n/NVHPC/NVHPC-24.9.eb | 75 +++++++++++++++++++ .../OpenMPI-5.0.5-GCC-14.2.0-acfl-24.10.eb | 2 +- o/OpenMPI/OpenMPI-5.0.5-NVHPC-24.9-rocm.eb | 69 +++++++++++++++++ .../UCX-ROCM-1.16.0-GCCcore-13.3.0-rocm.eb | 50 +++++++++++++ u/UCX/UCX-1.16.0-GCCcore-13.3.0-rocm.eb | 56 ++++++++++++++ 7 files changed, 356 insertions(+), 1 deletion(-) create mode 100644 l/libxcrypt/libxcrypt-4.4.36-GCCcore-14.2.0.eb create mode 100644 n/NVHPC/NVHPC-24.9-CUDA-12.6.0.eb create mode 100644 n/NVHPC/NVHPC-24.9.eb create mode 100644 o/OpenMPI/OpenMPI-5.0.5-NVHPC-24.9-rocm.eb create mode 100644 u/UCX-ROCM/UCX-ROCM-1.16.0-GCCcore-13.3.0-rocm.eb create mode 100644 u/UCX/UCX-1.16.0-GCCcore-13.3.0-rocm.eb diff --git a/l/libxcrypt/libxcrypt-4.4.36-GCCcore-14.2.0.eb b/l/libxcrypt/libxcrypt-4.4.36-GCCcore-14.2.0.eb new file mode 100644 index 00000000..130b25a6 --- /dev/null +++ b/l/libxcrypt/libxcrypt-4.4.36-GCCcore-14.2.0.eb @@ -0,0 +1,32 @@ +# IT4Innovations +# LK 2024 + +easyblock = 'ConfigureMake' + +name = 'libxcrypt' +version = "4.4.36" + +homepage = 'https://github.com/besser82/libxcrypt' +description = "libxcrypt is a modern library for one-way hashing of passwords" + +toolchain = {'name': 'GCC', 'version': '14.2.0'} + +source_urls = ['https://github.com/besser82/libxcrypt/releases/download/v%(version)s/'] +sources = ['%(name)s-%(version)s.tar.xz'] +checksums = ['e5e1f4caee0a01de2aee26e3138807d6d3ca2b8e67287966d1fefd65e1fd8943'] + +builddependencies = [ + ('binutils', '2.42',), +] + +dependencies = [ + ('Python', '3.12.3'), + ('Perl', '5.38.2'), +] + +sanity_check_paths = { + 'files': ['lib/libcrypt.so.1'], + 'dirs': [] +} + +moduleclass = 'lib' diff --git a/n/NVHPC/NVHPC-24.9-CUDA-12.6.0.eb b/n/NVHPC/NVHPC-24.9-CUDA-12.6.0.eb new file mode 100644 index 00000000..d164eabc --- /dev/null +++ b/n/NVHPC/NVHPC-24.9-CUDA-12.6.0.eb @@ -0,0 +1,73 @@ +name = 'NVHPC' +version = '24.9' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://developer.nvidia.com/hpc-sdk/' +description = """C, C++ and Fortran compilers included with the NVIDIA HPC SDK (previously: PGI)""" + +toolchain = SYSTEM + +local_tarball_tmpl = 'nvhpc_2024_%%(version_major)s%%(version_minor)s_Linux_%s_cuda_multi.tar.gz' +# By downloading, you accept the HPC SDK Software License Agreement +# https://docs.nvidia.com/hpc-sdk/eula/index.html +# accept_eula = True +source_urls = ['https://developer.download.nvidia.com/hpc-sdk/%(version)s/'] +sources = [local_tarball_tmpl % '%(arch)s'] +checksums = [ + { + local_tarball_tmpl % 'aarch64': + '8d900f798ef806c64993fd4fedf2c2c812dd1ccdbac2a0d33fabcd0cd36f19cf', + local_tarball_tmpl % 'x86_64': + '30c493350cf67481e84cea60a3a869e01fa0bcb71df8e898266273fbdf0a7f26', + } +] + +local_gccver = '13.3.0' +dependencies = [ + ('GCCcore', local_gccver), + ('binutils', '2.42', '', ('GCCcore', local_gccver)), + # This is necessary to avoid cases where just libnuma.so.1 is present in the system and -lnuma fails + ('numactl', '2.0.18', '', ('GCCcore', local_gccver)), + ('CUDA', '12.6.0', '', SYSTEM), +] + +module_add_cuda = False + +# specify default CUDA version that should be used by NVHPC +# should match one of the CUDA versions that are included with this NVHPC version +# (see install_components/Linux_x86_64/$version/cuda/) where $version is the NVHPC version +# this version can be tweaked from the EasyBuild command line with +# --try-amend=default_cuda_version="11.0" (for example) +default_cuda_version = '%(cudaver)s' + +# NVHPC EasyBlock supports some features, which can be set via CLI or this easyconfig. +# The following list gives examples for the easyconfig +# +# NVHPC needs CUDA to work. Two options are available: 1) Use NVHPC-bundled CUDA, 2) use system CUDA +# 1) Bundled CUDA +# If no easybuild dependency to CUDA is present, the bundled CUDA is taken. A version needs to be specified with +# default_cuda_version = "11.0" +# in this easyconfig file; alternatively, it can be specified through the command line during installation with +# --try-amend=default_cuda_version="10.2" +# 2) CUDA provided via EasyBuild +# Use CUDA as a dependency, for example +# dependencies = [('CUDA', '11.5.0')] +# The parameter default_cuda_version still can be set as above. +# If not set, it will be deduced from the CUDA module (via $EBVERSIONCUDA) +# +# Define a NVHPC-default Compute Capability +# cuda_compute_capabilities = "8.0" +# Can also be specified on the EasyBuild command line via --cuda-compute-capabilities=8.0 +# Only single values supported, not lists of values! +# +# Options to add/remove things to/from environment module (defaults shown) +# module_byo_compilers = False # Remove compilers from PATH (Bring-your-own compilers) +# module_nvhpc_own_mpi = False # Add NVHPC's own pre-compiled OpenMPI +# module_add_math_libs = False # Add NVHPC's math libraries (which should be there from CUDA anyway) +# module_add_profilers = False # Add NVHPC's NVIDIA Profilers +# module_add_nccl = False # Add NVHPC's NCCL library +# module_add_nvshmem = False # Add NVHPC's NVSHMEM library +# module_add_cuda = False # Add NVHPC's bundled CUDA + +# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS) +moduleclass = 'compiler' diff --git a/n/NVHPC/NVHPC-24.9.eb b/n/NVHPC/NVHPC-24.9.eb new file mode 100644 index 00000000..e71f0c77 --- /dev/null +++ b/n/NVHPC/NVHPC-24.9.eb @@ -0,0 +1,75 @@ +# IT4Innovations +# LK 2024 + +name = 'NVHPC' +version = '24.9' + +homepage = 'https://developer.nvidia.com/hpc-sdk/' +description = """C, C++ and Fortran compilers included with the NVIDIA HPC SDK (previously: PGI)""" + +toolchain = SYSTEM + +local_tarball_tmpl = 'nvhpc_2024_%%(version_major)s%%(version_minor)s_Linux_%s_cuda_multi.tar.gz' +# By downloading, you accept the HPC SDK Software License Agreement +# https://docs.nvidia.com/hpc-sdk/eula/index.html +# accept_eula = True +source_urls = ['https://developer.download.nvidia.com/hpc-sdk/%(version)s/'] +sources = [local_tarball_tmpl % '%(arch)s'] +checksums = [ + { + local_tarball_tmpl % 'aarch64': + '8d900f798ef806c64993fd4fedf2c2c812dd1ccdbac2a0d33fabcd0cd36f19cf', + local_tarball_tmpl % 'x86_64': + '30c493350cf67481e84cea60a3a869e01fa0bcb71df8e898266273fbdf0a7f26', + } +] + +local_gccver = '13.3.0' +dependencies = [ + ('GCCcore', local_gccver), + ('binutils', '2.42', '', ('GCCcore', local_gccver)), + # This is necessary to avoid cases where just libnuma.so.1 is present in the system and -lnuma fails + ('numactl', '2.0.18', '', ('GCCcore', local_gccver)), +# ('CUDA', '12.6.0', '', SYSTEM), +] + +module_add_cuda = True + +# specify default CUDA version that should be used by NVHPC +# should match one of the CUDA versions that are included with this NVHPC version +# (see install_components/Linux_x86_64/$version/cuda/) where $version is the NVHPC version +# this version can be tweaked from the EasyBuild command line with +# --try-amend=default_cuda_version="11.0" (for example) +default_cuda_version = '12.6' + +# NVHPC EasyBlock supports some features, which can be set via CLI or this easyconfig. +# The following list gives examples for the easyconfig +# +# NVHPC needs CUDA to work. Two options are available: 1) Use NVHPC-bundled CUDA, 2) use system CUDA +# 1) Bundled CUDA +# If no easybuild dependency to CUDA is present, the bundled CUDA is taken. A version needs to be specified with +# default_cuda_version = "11.0" +# in this easyconfig file; alternatively, it can be specified through the command line during installation with +# --try-amend=default_cuda_version="10.2" +# 2) CUDA provided via EasyBuild +# Use CUDA as a dependency, for example +# dependencies = [('CUDA', '11.5.0')] +# The parameter default_cuda_version still can be set as above. +# If not set, it will be deduced from the CUDA module (via $EBVERSIONCUDA) +# +# Define a NVHPC-default Compute Capability +# cuda_compute_capabilities = "8.0" +# Can also be specified on the EasyBuild command line via --cuda-compute-capabilities=8.0 +# Only single values supported, not lists of values! +# +# Options to add/remove things to/from environment module (defaults shown) +# module_byo_compilers = False # Remove compilers from PATH (Bring-your-own compilers) +# module_nvhpc_own_mpi = False # Add NVHPC's own pre-compiled OpenMPI +# module_add_math_libs = False # Add NVHPC's math libraries (which should be there from CUDA anyway) +# module_add_profilers = False # Add NVHPC's NVIDIA Profilers +# module_add_nccl = False # Add NVHPC's NCCL library +# module_add_nvshmem = False # Add NVHPC's NVSHMEM library +# module_add_cuda = False # Add NVHPC's bundled CUDA + +# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS) +moduleclass = 'compiler' diff --git a/o/OpenMPI/OpenMPI-5.0.5-GCC-14.2.0-acfl-24.10.eb b/o/OpenMPI/OpenMPI-5.0.5-GCC-14.2.0-acfl-24.10.eb index 409b1a42..f4306115 100644 --- a/o/OpenMPI/OpenMPI-5.0.5-GCC-14.2.0-acfl-24.10.eb +++ b/o/OpenMPI/OpenMPI-5.0.5-GCC-14.2.0-acfl-24.10.eb @@ -49,7 +49,7 @@ dependencies = [ # '' #]) -preconfigopts = 'CC=armclang CXX=armclang++ ' +preconfigopts = 'CC=armclang CXX=armclang++ FC=armflang ' configopts = '--enable-shared --enable-mpi-thread-multiple --with-verbs ' configopts += '--enable-mpirun-prefix-by-default ' diff --git a/o/OpenMPI/OpenMPI-5.0.5-NVHPC-24.9-rocm.eb b/o/OpenMPI/OpenMPI-5.0.5-NVHPC-24.9-rocm.eb new file mode 100644 index 00000000..6b94254c --- /dev/null +++ b/o/OpenMPI/OpenMPI-5.0.5-NVHPC-24.9-rocm.eb @@ -0,0 +1,69 @@ +# IT4Innovations +# LK 2024 + +name = 'OpenMPI' +version = '5.0.5' +versionsuffix = '-rocm' + +homepage = 'https://www.open-mpi.org/' +description = """The Open MPI Project is an open source MPI-3 implementation.""" + +toolchain = {'name': 'NVHPC', 'version': '24.9'} + +source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = [ + '6588d57c0a4bd299a24103f4e196051b29e8b55fbda49e11d5b3d32030a32776', +] + +builddependencies = [ + ('pkgconf', '2.2.0'), + ('Perl', '5.38.2'), + ('Autotools', '20231222'), +] + +dependencies = [ + ('zlib', '1.3.1'), + ('hwloc', '2.10.0'), + ('libevent', '2.1.12'), + ('UCX', '1.16.0', '-rocm'), + ('libfabric', '1.21.0'), + ('PMIx', '5.0.2'), + ('UCX-ROCM', '1.16.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/u/UCX-ROCM/UCX-ROCM-1.16.0-GCCcore-13.3.0-rocm.eb b/u/UCX-ROCM/UCX-ROCM-1.16.0-GCCcore-13.3.0-rocm.eb new file mode 100644 index 00000000..fe86cc7d --- /dev/null +++ b/u/UCX-ROCM/UCX-ROCM-1.16.0-GCCcore-13.3.0-rocm.eb @@ -0,0 +1,50 @@ +# IT4Innovations +# LK 2024 + +easyblock = 'ConfigureMake' + +name = 'UCX-ROCM' +version = '1.16.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': '13.3.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 = [ + ('f73770d3b583c91aba5fb07557e655ead0786e057018bfe42f0ebe8716e9d28c', + '4b202087076bc1c98f9249144f0c277a8ea88ad4ca6f404f94baa9cb3aebda6d'), + {'UCX-CUDA-1.11.0_link_against_existing_UCX_libs.patch': + '457187fa020e526609ba91e7750c9941d57bd57d60d6eed317b40ad8824aca93'}, +] + +builddependencies = [ + ('binutils', '2.42'), + ('Autotools', '20231222'), + ('pkgconf', '2.2.0'), +] + +dependencies = [ + ('zlib', '1.3.1'), + ('UCX', '1.16.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.16.0-GCCcore-13.3.0-rocm.eb b/u/UCX/UCX-1.16.0-GCCcore-13.3.0-rocm.eb new file mode 100644 index 00000000..9892866f --- /dev/null +++ b/u/UCX/UCX-1.16.0-GCCcore-13.3.0-rocm.eb @@ -0,0 +1,56 @@ +# IT4Innovations +# LK 2024 + +easyblock = 'ConfigureMake' + +name = 'UCX' +version = '1.16.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': '13.3.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.16.0.tar.gz': 'f73770d3b583c91aba5fb07557e655ead0786e057018bfe42f0ebe8716e9d28c'}, + {'UCX-1.13.1-dynamic_modules.patch': '00874687bd90b795fff61aaa183f6c6bea2210aa1003b28f23d9ebf7066f8782'}, +] + +builddependencies = [ + ('binutils', '2.42'), + ('Autotools', '20231222'), + ('pkgconf', '2.2.0'), +] + +osdependencies = [OS_PKG_IBVERBS_DEV] + +dependencies = [ + ('zlib', '1.3.1'), + ('numactl', '2.0.18'), +] + +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'