Skip to content
22 changes: 22 additions & 0 deletions easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-nvompi-2023a.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name = 'FFTW.MPI'
version = '3.3.10'

homepage = 'https://www.fftw.org'
description = """FFTW is a C subroutine library for computing the discrete Fourier transform (DFT)
in one or more dimensions, of arbitrary input size, and of both real and complex data."""

toolchain = {'name': 'nvompi', 'version': '2023a'}
toolchainopts = {'pic': True}

source_urls = [homepage]
sources = ['fftw-%(version)s.tar.gz']
checksums = ['56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467']

local_cuda = '12.1.1'
local_compiler = ('NVHPC', '23.7-CUDA-%s' % local_cuda)

dependencies = [('FFTW', '3.3.10', '', local_compiler)]

runtest = 'check'

moduleclass = 'numlib'
20 changes: 20 additions & 0 deletions easybuild/easyconfigs/f/FFTW/FFTW-3.3.10-NVHPC-23.7-CUDA-12.1.1.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name = 'FFTW'
version = '3.3.10'

homepage = 'https://www.fftw.org'
description = """FFTW is a C subroutine library for computing the discrete Fourier transform (DFT)
in one or more dimensions, of arbitrary input size, and of both real and complex data."""

toolchain = {'name': 'NVHPC', 'version': '23.7-CUDA-12.1.1'}
toolchainopts = {'pic': True}

source_urls = [homepage]
sources = [SOURCELOWER_TAR_GZ]
checksums = ['56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467']

# Does not work with nvc
with_quad_prec = False

runtest = 'check'

moduleclass = 'numlib'
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name = 'HDF5'
# Note: Odd minor releases are only RCs and should not be used.
version = '1.14.0'
versionsuffix = '-CUDA-%(cudaver)s'

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': '2023a'}
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']

local_gcc_compiler = ('GCCcore', '12.3.0')
# local_compiler = ('NVHPC', '23.7-CUDA-12.1.1')

dependencies = [
('CUDA', '12.1.1', '', SYSTEM),
('zlib', '1.2.13', '', local_gcc_compiler),
('Szip', '2.1.1', '', local_gcc_compiler),
]

moduleclass = 'data'
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
easyblock = 'CMakeMake'

name = 'libxc'
version = '6.2.2'

homepage = 'https://libxc.gitlab.io'
description = """Libxc is a library of exchange-correlation functionals for density-functional theory.
The aim is to provide a portable, well tested and reliable set of exchange and correlation functionals."""

toolchain = {'name': 'NVHPC', 'version': '23.7-CUDA-12.1.1'}

source_urls = ['https://gitlab.com/libxc/libxc/-/archive/%(version)s/']
sources = [SOURCE_TAR_GZ]
checksums = [('a0f6f1bba7ba5c0c85b2bfe65aca1591025f509a7f11471b4cd651a79491b045',
'3b0523924579cf494cafc6fea92945257f35692b004217d3dfd3ea7ca780e8dc'),
]

builddependencies = [
('CMake', '3.26.3'),
('Perl', '5.36.1'),
]

local_common_configopts = "-DENABLE_FORTRAN=ON -DENABLE_XHOST=OFF "

# don't disable building of third and fourth derivates, since it's required by some software that depends on libxc
# (like ABINIT, which requires "3rd derivatives of energy")
# see also https://github.com/pyscf/pyscf/issues/1103
local_common_configopts += "-DDISABLE_KXC=OFF -DDISABLE_LXC=OFF"

# perform iterative build to get both static and shared libraries
configopts = [
local_common_configopts + ' -DBUILD_SHARED_LIBS=OFF',
local_common_configopts + ' -DBUILD_SHARED_LIBS=ON',
]

# make sure that built libraries (libxc*.so*) in build directory are picked when running tests
# this is required when RPATH linking is used
pretestopts = "export LD_LIBRARY_PATH=%(builddir)s/easybuild_obj:$LD_LIBRARY_PATH && "

runtest = 'test'

sanity_check_paths = {
'files': ['bin/xc-info'] +
['lib/libxc%s.%s' % (x, y) for x in ['', 'f03', 'f90'] for y in ['a', SHLIB_EXT]],
'dirs': ['include', 'lib/pkgconfig', 'lib/cmake/Libxc'],
}

sanity_check_commands = ['xc-info 1']

moduleclass = 'chem'
20 changes: 20 additions & 0 deletions easybuild/easyconfigs/n/nvompi/nvompi-2023a.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
easyblock = 'Toolchain'

name = 'nvompi'
version = '2023a'

homepage = '(none)'
description = 'NVHPC based compiler toolchain, including OpenMPI for MPI support.'

toolchain = SYSTEM

local_cuda = '12.1.1'
local_compiler = ('NVHPC', '23.7-CUDA-%s' % local_cuda)

dependencies = [
local_compiler,
('CUDA', local_cuda, '', SYSTEM),
('OpenMPI', '4.1.5', '', local_compiler),
]

moduleclass = 'toolchain'
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Linking of C object files with the nvfortran compiler in lapack-test
failes with a "multiple definition of `main'" error.
See issue https://github.com/OpenMathLib/OpenBLAS/issues/4625
Tested with NVHPC-23.7-CUDA-12.1.1
--- lapack-netlib/INSTALL/Makefile.orig 2023-04-01 22:18:01.000000000 +0200
+++ lapack-netlib/INSTALL/Makefile 2024-04-11 11:55:15.489833571 +0200
@@ -6,7 +6,7 @@

ifneq ($(C_LAPACK), 1)
testlsame: lsame.o lsametst.o
- $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $^
+ $(FC) $(FFLAGS) $(LDFLAGS) -Mnomain -o $@ $^

testslamch: slamch.o lsame.o slamchtst.o
$(FC) $(FFLAGS) $(LDFLAGS) -o $@ $^
@@ -16,7 +16,7 @@

testsecond: second_$(TIMER).o secondtst.o
@echo "[INFO] : TIMER value: $(TIMER) (given by make.inc)"
- $(FC) $(FFLAGS) $(LDFLAGS) -o $@ $^
+ $(FC) $(FFLAGS) $(LDFLAGS) -Mnomain -o $@ $^

testdsecnd: dsecnd_$(TIMER).o dsecndtst.o
@echo "[INFO] : TIMER value: $(TIMER) (given by make.inc)"
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name = 'OpenBLAS'
version = '0.3.24'

homepage = 'http://www.openblas.net/'
description = "OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version."

toolchain = {'name': 'NVHPC', 'version': '23.7-CUDA-12.1.1'}
toolchainopts = {
# https://github.com/OpenMathLib/OpenBLAS/issues/4625
'precise': True,
'optarch': 'GENERIC',
}

source_urls = [
# order matters, trying to download the large.tgz/timing.tgz LAPACK tarballs from GitHub causes trouble
'https://www.netlib.org/lapack/timing/',
'https://github.com/xianyi/OpenBLAS/archive/',
]
sources = ['v%(version)s.tar.gz']
patches = [
('large.tgz', '.'),
('timing.tgz', '.'),
'OpenBLAS-0.3.15_workaround-gcc-miscompilation.patch',
'OpenBLAS-0.3.20_use-xASUM-microkernels-on-new-intel-cpus.patch',
'OpenBLAS-0.3.21_fix-order-vectorization.patch',
'OpenBLAS-0.3.23_disable-xDRGES-LAPACK-test.patch',
'OpenBLAS-0.3.23_lapack_test_nomain.patch' # https://github.com/OpenMathLib/OpenBLAS/issues/4625
]
checksums = [
{'v0.3.24.tar.gz': 'ceadc5065da97bd92404cac7254da66cc6eb192679cf1002098688978d4d5132'},
{'large.tgz': 'f328d88b7fa97722f271d7d0cfea1c220e0f8e5ed5ff01d8ef1eb51d6f4243a1'},
{'timing.tgz': '999c65f8ea8bd4eac7f1c7f3463d4946917afd20a997807300fe35d70122f3af'},
{'OpenBLAS-0.3.15_workaround-gcc-miscompilation.patch':
'e6b326fb8c4a8a6fd07741d9983c37a72c55c9ff9a4f74a80e1352ce5f975971'},
{'OpenBLAS-0.3.20_use-xASUM-microkernels-on-new-intel-cpus.patch':
'1dbd0f9473963dbdd9131611b455d8a801f1e995eae82896186d3d3ffe6d5f03'},
{'OpenBLAS-0.3.21_fix-order-vectorization.patch':
'08af834e5d60441fd35c128758ed9c092ba6887c829e0471ecd489079539047d'},
{'OpenBLAS-0.3.23_disable-xDRGES-LAPACK-test.patch':
'ab7e0af05f9b2a2ced32f3875e1e3767d9c3531a455421a38f7324350178a0ff'},
{'OpenBLAS-0.3.23_lapack_test_nomain.patch': '63e14e2cb67dd81ecc13fa0e07685f853abe0669d4cadd520247b88789346948'},
]

builddependencies = [
('make', '4.4.1'),
# required by LAPACK test suite
('Python', '3.11.3'),
]

run_lapack_tests = True
max_failing_lapack_tests_num_errors = 150

# extensive testing can be enabled by uncommenting the line below
# runtest = 'PATH=.:$PATH lapack-timing'

moduleclass = 'numlib'
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
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': 'NVHPC', 'version': '23.7-CUDA-12.1.1'}
toolchainopts = {
'extra_fcflags': '-Mstandard', # https://forums.developer.nvidia.com/t/howto-build-openmpi-with-nvhpc-24-1/283219
}

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',
'OpenMPI-4.1.5_fix-pmix3x.patch',
'OpenMPI-4.1.x_add_atomic_wmb.patch',
]
checksums = [
{'openmpi-4.1.5.tar.bz2': 'a640986bc257389dd379886fdae6264c8cfa56bc98b71ce3ae3dfbd8ce61dbe3'},
{'OpenMPI-4.1.1_build-with-internal-cuda-header.patch':
'63eac52736bdf7644c480362440a7f1f0ae7c7cae47b7565f5635c41793f8c83'},
{'OpenMPI-4.1.1_opal-datatype-cuda-performance.patch':
'b767c7166cf0b32906132d58de5439c735193c9fd09ec3c5c11db8d5fa68750e'},
{'OpenMPI-4.1.5_fix-pmix3x.patch': '46edac3dbf32f2a611d45e8a3c8edd3ae2f430eec16a1373b510315272115c40'},
{'OpenMPI-4.1.x_add_atomic_wmb.patch': '9494bbc546d661ba5189e44b4c84a7f8df30a87cdb9d96ce2e73a7c8fecba172'},
]

builddependencies = [
('pkgconf', '1.9.5'),
('Perl', '5.36.1'),
('Autotools', '20220317'),
]

dependencies = [
('zlib', '1.2.13'),
('hwloc', '2.9.1'),
('libevent', '2.1.12'),
('UCX', '1.14.1'),
('UCX-CUDA', '1.14.1', '-CUDA-%(cudaver)s'),
('libfabric', '1.18.0'),
('PMIx', '4.2.4'),
('UCC', '1.2.0'),
('UCC-CUDA', '1.2.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'

# 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'
Loading
Loading