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
This commit is contained in:
Lukas Krupcik 2024-11-06 13:34:23 +01:00
parent ae71f3f9c9
commit 7204d860ef
7 changed files with 356 additions and 1 deletions

View File

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

View File

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

75
n/NVHPC/NVHPC-24.9.eb Normal file
View File

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

View File

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

View File

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

View File

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

View File

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