Merge branch 'it4i-karolina'

This commit is contained in:
Lukas Krupcik 2024-01-18 10:45:54 +01:00
commit 5c648d8011
20 changed files with 899 additions and 5 deletions

View File

@ -0,0 +1,37 @@
# IT4Innovations
# LK 2024
name = 'ANSYS'
version = '2023R2'
versionsuffix = '-palanti'
homepage = 'http://www.ansys.com'
description = """ANSYS simulation software enables organizations to confidently predict
how their products will operate in the real world. We believe that every product is
a promise of something greater. """
toolchain = {'name': 'intel', 'version': '2022.12'}
sources = [
{'filename': '%(name)s%(version)s_LINX64_DISK1.iso', 'extract_cmd': '7z x -aos %s'},
{'filename': '%(name)s%(version)s_LINX64_DISK2.iso', 'extract_cmd': '7z x -aos %s'},
{'filename': '%(name)s%(version)s_LINX64_DISK3.iso', 'extract_cmd': '7z x -aos %s'},
]
checksums = [
{'ANSYS2023R2_LINX64_DISK1.iso': '4f952592f1f95a6f3715dbaeb6e56b2625f6826a80c5842234406c7741f29e1f'},
{'ANSYS2023R2_LINX64_DISK2.iso': 'd02fd9e4db1a08dc867b771979f5d9ffa4d69fd94740e60444e856911fb89ce0'},
{'ANSYS2023R2_LINX64_DISK3.iso': 'd167f30a3cf632a234111e9a398dae6f824cb0eae5a7cb7afa1453474726de4a'},
]
#dependencies = [
# ('libGLU', '9.0.2'), # mame v systemu, pro jistotu zkusime bez protoze stary CentOS
# ('libnsl', '2.0.0'), # moc nove pro CentOS 7!!!
#]
osdependencies = [('p7zip', 'p7zip-plugins')]
import os
license_server = os.getenv('EB_ANSYS_LICENSE_SERVER', '185.215.147.62')
license_server_port = os.getenv('EB_ANSYS_LICENSE_SERVER_PORT', '2325:1055')
moduleclass = 'tools'

View File

@ -0,0 +1,40 @@
# IT4Innovations
# LK 2024
name = 'CP2K'
version = '2024.1'
homepage = 'https://www.cp2k.org/'
description = """CP2K is a freely available (GPL) program, written in Fortran 95, to perform atomistic and molecular
simulations of solid state, liquid, molecular and biological systems. It provides a general framework for different
methods such as e.g. density functional theory (DFT) using a mixed Gaussian and plane waves approach (GPW), and
classical pair and many-body potentials. """
toolchain = {'name': 'foss', 'version': '2022a'}
toolchainopts = {'pic': True, 'openmp': True}
source_urls = ['https://github.com/cp2k/cp2k/releases/download/v%(version)s/']
sources = [SOURCELOWER_TAR_BZ2]
checksums = ['a7abf149a278dfd5283dc592a2c4ae803b37d040df25d62a5e35af5c4557668f']
# https://github.com/cp2k/cp2k/releases/download/v2022.1/cp2k-2022.1.tar.bz2
dependencies = [
('Libint', '2.7.2', '-lmax-6-cp2k'),
('libxc', '5.2.3'),
('libxsmm', '1.17'),
('FFTW', '3.3.10'),
('PLUMED', '2.8.0'),
]
builddependencies = [
('flex', '2.6.4'),
('Bison', '3.8.2'),
]
type = 'psmp'
# regression test reports handful of failures,
# we're assuming those are OK to ignore...
ignore_regtest_fails = True
moduleclass = 'chem'

View File

@ -0,0 +1,27 @@
# IT4Innovations
# LK 2024
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': 'nvompi', 'version': '2022.07'}
toolchainopts = {'pic': True, 'usempi': 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.4', '-CUDA-11.7.0', ('NVHPC', '22.7')),
('zlib', '1.2.12'),
('Szip', '2.1.1'),
]
moduleclass = 'data'

View File

@ -1,5 +1,5 @@
# IT4Innovations # IT4Innovations
# LK 2023 # LK 2024
name = 'HDF5' name = 'HDF5'
version = '1.14.0' version = '1.14.0'
@ -9,8 +9,8 @@ description = """HDF5 is a data model, library, and file format for storing and
It supports an unlimited variety of datatypes, and is designed for flexible It supports an unlimited variety of datatypes, and is designed for flexible
and efficient I/O and for high volume and complex data.""" and efficient I/O and for high volume and complex data."""
toolchain = {'name': 'NVHPC', 'version': '23.5'} toolchain = {'name': 'nvompi', 'version': '2023.03'}
toolchainopts = {'pic': True} toolchainopts = {'pic': True, 'usempi': True}
source_urls = ['https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-%(version_major_minor)s/hdf5-%(version)s/src'] source_urls = ['https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-%(version_major_minor)s/hdf5-%(version)s/src']
sources = [SOURCELOWER_TAR_GZ] sources = [SOURCELOWER_TAR_GZ]
@ -19,7 +19,7 @@ checksums = ['a571cc83efda62e1a51a0a912dd916d01895801c5025af91669484a1575a6ef4']
configopts = '--enable-fortran --enable-fortran 2003 --enable-cxx --enable-parallel --enable-unsupported --enable-shared' configopts = '--enable-fortran --enable-fortran 2003 --enable-cxx --enable-parallel --enable-unsupported --enable-shared'
dependencies = [ dependencies = [
('OpenMPI', '4.1.5', '-CUDA-12.2.0'), ('OpenMPI', '4.1.6', '-CUDA-12.2.0'),
('zlib', '1.2.12'), ('zlib', '1.2.12'),
('Szip', '2.1.1'), ('Szip', '2.1.1'),
] ]

View File

@ -0,0 +1,27 @@
# IT4Innovations
# LK 2024
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': 'nvompi', 'version': '2023.05'}
toolchainopts = {'pic': True, 'usempi': 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.6', '-CUDA-12.2.0'),
('zlib', '1.2.12'),
('Szip', '2.1.1'),
]
moduleclass = 'data'

View File

@ -0,0 +1,27 @@
# IT4Innovations
# LK 2024
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': 'nvompi', 'version': '2023.11'}
toolchainopts = {'pic': True, 'usempi': 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.6', '-CUDA-12.2.0'),
('zlib', '1.2.12'),
('Szip', '2.1.1'),
]
moduleclass = 'data'

View File

@ -0,0 +1,29 @@
# IT4Innovations
# LK 2024
name = 'NCCL'
version = '2.19.4'
versionsuffix = '-CUDA-%(cudaver)s'
homepage = 'https://developer.nvidia.com/nccl'
description = """The NVIDIA Collective Communications Library (NCCL) implements multi-GPU and multi-node collective
communication primitives that are performance optimized for NVIDIA GPUs."""
toolchain = {'name': 'GCCcore', 'version': '13.2.0'}
github_account = 'NVIDIA'
source_urls = [GITHUB_SOURCE]
sources = ['v%(version)s-1.tar.gz']
checksums = ['a3948ade5d83a036dde7ca6d0fee3a960a4de5c7915a9be903a28a747b5babc4']
builddependencies = [('binutils', '2.40')]
dependencies = [
('CUDA', '12.2.0', '', SYSTEM),
('UCX-CUDA', '1.15.0', versionsuffix),
]
# default CUDA compute capabilities to use (override via --cuda-compute-capabilities)
cuda_compute_capabilities = ['8.0']
moduleclass = 'lib'

34
n/NVHPC/NVHPC-23.11.eb Normal file
View File

@ -0,0 +1,34 @@
# IT4Innovations
# LK 2024
name = 'NVHPC'
version = '23.11'
homepage = 'https://developer.nvidia.com/hpc-sdk/'
description = """C, C++ and Fortran compilers included with the NVIDIA HPC SDK (previously: PGI)"""
toolchain = SYSTEM
# 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/']
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']
local_gccver = '12.2.0'
dependencies = [
('GCCcore', local_gccver),
('binutils', '2.39', '', ('GCCcore', local_gccver)),
('numactl', '2.0.16', '', ('GCCcore', local_gccver))
]
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"
moduleclass = 'compiler'

View File

@ -16,7 +16,11 @@ local_tarball_tmpl = 'nvhpc_2023_%%(version_major)s%%(version_minor)s_Linux_%s_c
sources = [local_tarball_tmpl % '%(arch)s'] sources = [local_tarball_tmpl % '%(arch)s']
checksums = ['fea91d95ff18bca1ce7afde50371caa02001ade8bed6ddfc5ff70862ccbebece'] checksums = ['fea91d95ff18bca1ce7afde50371caa02001ade8bed6ddfc5ff70862ccbebece']
local_gccver = '13.2.0'
dependencies = [ dependencies = [
('GCCcore', local_gccver),
('binutils', '2.40', '', ('GCCcore', local_gccver)),
('numactl', '2.0.16') ('numactl', '2.0.16')
] ]

View File

@ -0,0 +1,22 @@
# IT4Innovations
# LK 2024
easyblock = 'Toolchain'
name = 'nvompi'
version = '2023.03'
homepage = '(none)'
description = 'NVHPC based compiler toolchain, including OpenMPI for MPI support.'
toolchain = SYSTEM
local_compiler = ('NVHPC', '23.3')
dependencies = [
local_compiler,
('OpenMPI', '4.1.6', '-CUDA-12.2.0', local_compiler),
('CUDA', '12.2.0', '', SYSTEM),
]
moduleclass = 'toolchain'

View File

@ -0,0 +1,22 @@
# IT4Innovations
# LK 2024
easyblock = 'Toolchain'
name = 'nvompi'
version = '2023.05'
homepage = '(none)'
description = 'NVHPC based compiler toolchain, including OpenMPI for MPI support.'
toolchain = SYSTEM
local_compiler = ('NVHPC', '23.5')
dependencies = [
local_compiler,
('OpenMPI', '4.1.6', '-CUDA-12.2.0', local_compiler),
('CUDA', '12.2.0', '', SYSTEM),
]
moduleclass = 'toolchain'

View File

@ -0,0 +1,22 @@
# IT4Innovations
# LK 2024
easyblock = 'Toolchain'
name = 'nvompi'
version = '2023.11'
homepage = '(none)'
description = 'NVHPC based compiler toolchain, including OpenMPI for MPI support.'
toolchain = SYSTEM
local_compiler = ('NVHPC', '23.11')
dependencies = [
local_compiler,
('OpenMPI', '4.1.6', '-CUDA-12.2.0', local_compiler),
('CUDA', '12.2.0', '', SYSTEM),
]
moduleclass = 'toolchain'

View File

@ -90,7 +90,7 @@ sanity_check_paths = {
x for x in [ x for x in [
"mpi-ext", "mpif-config", "mpif", "mpi", "mpi_portable_platform"]], 'dirs': [], } "mpi-ext", "mpif-config", "mpif", "mpi", "mpi_portable_platform"]], 'dirs': [], }
mport os import os
if os.environ.get("CLUSTERNAME") in ["BARBORA"]: if os.environ.get("CLUSTERNAME") in ["BARBORA"]:
modextravars = {'OMPI_MCA_btl_openib_if_include': 'mlx5_0', modextravars = {'OMPI_MCA_btl_openib_if_include': 'mlx5_0',
'OMPI_MCA_btl_tcp_if_include': '10.33.4.0/24', 'OMPI_MCA_btl_tcp_if_include': '10.33.4.0/24',

View File

@ -0,0 +1,115 @@
# 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.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 = [
'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-tm=/opt/pbs ' # Enable PBS
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.90mlnx1'
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': [], }
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'

View File

@ -0,0 +1,115 @@
# IT4Innovations
# LK 2023
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-tm=/opt/pbs ' # Enable PBS
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.90mlnx1'
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': [], }
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'

View File

@ -0,0 +1,115 @@
# 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.3'}
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-tm=/opt/pbs ' # Enable PBS
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.90mlnx1'
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': [], }
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'

View File

@ -0,0 +1,115 @@
# IT4Innovations
# LK 2023
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.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 = [
'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-tm=/opt/pbs ' # Enable PBS
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.90mlnx1'
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': [], }
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'

View File

@ -0,0 +1,32 @@
# IT4Innovations
# LK 2024
easyblock = 'ConfigureMake'
name = 'pkgconf'
version = '2.0.3'
homepage = 'https://github.com/pkgconf/pkgconf'
description = """pkgconf is a program which helps to configure compiler and linker flags for development libraries.
It is similar to pkg-config from freedesktop.org."""
toolchain = {'name': 'NVHPC', 'version': '23.11'}
source_urls = ['https://distfiles.ariadne.space/pkgconf/']
sources = [SOURCELOWER_TAR_GZ]
checksums = ['a8f25f4b0c1ad48edc9b07ed46101aab4bcb305ba6ae811be49b7499b00eed49']
postinstallcmds = ["cd %(installdir)s/bin && ln -s pkgconf pkg-config"]
sanity_check_paths = {
'files': ['bin/pkg-config', 'bin/pkgconf'],
'dirs': [],
}
sanity_check_commands = [
"pkg-config --help",
"pkgconf --help",
]
moduleclass = 'devel'

View File

@ -0,0 +1,60 @@
# IT4Innovations
# LK 2024
easyblock = 'ConfigureMake'
name = 'UCC-CUDA'
version = '1.2.0'
versionsuffix = '-CUDA-%(cudaver)s'
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.
This module adds the UCC CUDA support.
"""
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 = [
'%(name)s-1.0.0_link_against_existing_UCC_libs.patch',
'%(name)s-%(version)s_cuda_12_mem_ops.patch',
]
checksums = [
{'v1.1.0.tar.gz': '74c8ba75037b5bd88cb703e8c8ae55639af3fecfd4428912a433c010c97b4df7'},
{'UCC-CUDA-1.0.0_link_against_existing_UCC_libs.patch':
'9fa11cf6779174f4e9048df5812096e4261e1769d465cc7f34a6354398876856'},
{'UCC-CUDA-1.1.0_cuda_12_mem_ops.patch': 'fc3ea1487d29dc626db2363ef5a79e7f0906f6a7507a363fa6167a812b143eb6'},
]
builddependencies = [
('binutils', '2.40'),
('Autotools', '20220317'),
]
dependencies = [
('UCC', '1.2.0'),
('CUDA', '12.2.0', '', SYSTEM),
('UCX-CUDA', '1.15.0', '-CUDA-%(cudaver)s'),
('NCCL', '2.18.3', '-CUDA-%(cudaver)s', SYSTEM),
]
preconfigopts = "./autogen.sh && "
buildopts = '-C src/components/mc/cuda V=1 && make -C src/components/tl/nccl V=1'
installopts = '-C src/components/mc/cuda && make -C src/components/tl/nccl install'
sanity_check_paths = {
'files': ['lib/ucc/libucc_mc_cuda.%s' % SHLIB_EXT, 'lib/ucc/libucc_tl_nccl.%s' % SHLIB_EXT],
'dirs': ['lib']
}
sanity_check_commands = ["ucc_info -c"]
modextrapaths = {'EB_UCC_EXTRA_COMPONENT_PATH': 'lib/ucc'}
moduleclass = 'lib'

View File

@ -0,0 +1,51 @@
# IT4Innovations
# LK 2024
easyblock = 'EB_UCX_Plugins'
name = 'UCX-CUDA'
version = '1.15.0'
versionsuffix = '-CUDA-%(cudaver)s'
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.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-1.15.0.tar.gz
{'UCX-CUDA-1.11.0_link_against_existing_UCX_libs.patch':
'457187fa020e526609ba91e7750c9941d57bd57d60d6eed317b40ad8824aca93'},
]
builddependencies = [
('binutils', '2.40'),
('Autotools', '20220317'),
('pkgconf', '2.0.3'),
]
dependencies = [
('zlib', '1.2.13'),
('UCX', '1.15.0'),
('CUDA', '12.2.0', '', SYSTEM),
('GDRCopy', '2.4'),
]
configopts = '--enable-optimizations --enable-cma --enable-mt --with-verbs '
configopts += '--without-java --without-go --disable-doxygen-doc '
import os
if os.environ.get("CLUSTERNAME") in ["KAROLINA", "BARBORA"]:
configopts += '--with-xpmem --with-knem=/opt/knem-1.1.4.90mlnx1'
moduleclass = 'lib'