diff --git a/easybuild/easyconfigs/l/llvm-compilers/llvm-compilers-20.1.8.eb b/easybuild/easyconfigs/l/llvm-compilers/llvm-compilers-20.1.8.eb new file mode 100644 index 00000000000..794ccbcb3be --- /dev/null +++ b/easybuild/easyconfigs/l/llvm-compilers/llvm-compilers-20.1.8.eb @@ -0,0 +1,23 @@ +easyblock = 'Bundle' + +name = 'llvm-compilers' +version = '20.1.8' + +homepage = 'https://llvm.org/' +description = """The LLVM Project is a collection of modular and reusable compiler +and toolchain technologies.""" + +toolchain = SYSTEM + +local_gcc_version = '14.3.0' +dependencies = [ + ('GCCcore', local_gcc_version), + ('binutils', '2.44', '', ('GCCcore', local_gcc_version)), + ('LLVM', version, '', ('GCCcore', local_gcc_version)), +] + +altroot = 'LLVM' +altversion = 'LLVM' + +# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS) +moduleclass = 'compiler' diff --git a/easybuild/easyconfigs/l/lmpich/lmpich-2025b.eb b/easybuild/easyconfigs/l/lmpich/lmpich-2025b.eb new file mode 100644 index 00000000000..df7836bc762 --- /dev/null +++ b/easybuild/easyconfigs/l/lmpich/lmpich-2025b.eb @@ -0,0 +1,18 @@ +easyblock = 'Toolchain' + +name = 'lmpich' +version = '2025b' + +homepage = '(none)' +description = """LLVM based compiler toolchain, including MPICH for MPI support.""" + +toolchain = SYSTEM + +local_llvmver = '20.1.8' + +dependencies = [ + ('llvm-compilers', local_llvmver), + ('MPICH', '4.3.2', '', ('llvm-compilers', local_llvmver)), +] + +moduleclass = 'toolchain' diff --git a/easybuild/easyconfigs/l/lompi/lompi-2025b.eb b/easybuild/easyconfigs/l/lompi/lompi-2025b.eb new file mode 100644 index 00000000000..4058aa853d8 --- /dev/null +++ b/easybuild/easyconfigs/l/lompi/lompi-2025b.eb @@ -0,0 +1,19 @@ +easyblock = 'Toolchain' + +name = 'lompi' +version = '2025b' + +homepage = '(none)' +description = """LLVM based compiler toolchain, including OpenMPI for MPI support.""" + +toolchain = SYSTEM + +local_llvmver = '20.1.8' + +# compiler toolchain dependencies +dependencies = [ + ('llvm-compilers', local_llvmver), # includes both LLVM and binutils + ('OpenMPI', '5.0.8', '', ('llvm-compilers', local_llvmver)), +] + +moduleclass = 'toolchain' diff --git a/easybuild/easyconfigs/m/MPICH/MPICH-4.3.2-llvm-compilers-20.1.8.eb b/easybuild/easyconfigs/m/MPICH/MPICH-4.3.2-llvm-compilers-20.1.8.eb new file mode 100644 index 00000000000..8322f9ec37c --- /dev/null +++ b/easybuild/easyconfigs/m/MPICH/MPICH-4.3.2-llvm-compilers-20.1.8.eb @@ -0,0 +1,22 @@ +name = 'MPICH' +version = '4.3.2' + +homepage = 'https://www.mpich.org/' +description = """MPICH is a high-performance and widely portable implementation +of the Message Passing Interface (MPI) standard (MPI-1, MPI-2 and MPI-3).""" + +toolchain = {'name': 'llvm-compilers', 'version': '20.1.8'} + +source_urls = ['https://www.mpich.org/static/downloads/%(version)s'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['47d774587a7156a53752218c811c852e70ac44db9c502dc3f399b4cb817e3818'] + +dependencies = [ + ('hwloc', '2.12.1'), + ('UCX', '1.19.0'), +] + +# Also build (separate) MPI ABI +mpi_abi = True + +moduleclass = 'mpi' diff --git a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-5.0.8-llvm-compilers-20.1.8.eb b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-5.0.8-llvm-compilers-20.1.8.eb new file mode 100644 index 00000000000..c7d514c9cf0 --- /dev/null +++ b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-5.0.8-llvm-compilers-20.1.8.eb @@ -0,0 +1,54 @@ +name = 'OpenMPI' +version = '5.0.8' + +homepage = 'https://www.open-mpi.org/' +description = """The Open MPI Project is an open source MPI-3 implementation.""" + +toolchain = {'name': 'llvm-compilers', 'version': '20.1.8'} + +source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] +sources = [SOURCELOWER_TAR_BZ2] +patches = [ + ('OpenMPI-5.0.7_build-with-internal-cuda-header.patch', 1), + 'OpenMPI-5.0.7_fix_gpfs_compatibility.patch', + 'OpenMPI-5.0.3_disable_opal_path_nfs_test.patch', +] +checksums = [ + {'openmpi-5.0.8.tar.bz2': '53131e1a57e7270f645707f8b0b65ba56048f5b5ac3f68faabed3eb0d710e449'}, + {'OpenMPI-5.0.7_build-with-internal-cuda-header.patch': + '14ffaf02a9c675ac66a2a9af727295179d4ce097174c88db59669d460d8c4da1'}, + {'OpenMPI-5.0.7_fix_gpfs_compatibility.patch': '9739134ce273a691c9deac6e410510653a88c1542b60dbf8789e4a423447d4f6'}, + {'OpenMPI-5.0.3_disable_opal_path_nfs_test.patch': + '75d4417e35252ea3a19b2792f1b06e9aeb408c253aa4921d77226d57b71dee45'}, +] + +builddependencies = [ + ('pkgconf', '2.4.3'), + ('Perl', '5.40.2'), + ('Autotools', '20250527'), +] + +dependencies = [ + ('zlib', '1.3.1'), + ('hwloc', '2.12.1'), + ('libevent', '2.1.12'), + ('UCX', '1.19.0'), + ('libfabric', '2.1.0'), + ('PMIx', '5.0.8'), + ('PRRTE', '3.0.11'), + ('UCC', '1.4.4'), +] + +# CUDA related patches and custom configure option can be removed if CUDA support isn't wanted. +preconfigopts = 'clang -Iopal/mca/cuda/include -shared opal/mca/cuda/lib/cuda.c -o opal/mca/cuda/lib/libcuda.so && ' +# Update configure to include changes from the "disable_opal_path_nfs_test" patch +preconfigopts += './autogen.pl --force && ' +# Disable building Level Zero components of romio if system dependencies are picked up. Sources are not based on +# recent Level Zero interface anyway, so there's a high chance that builds fail. +# See https://github.com/open-mpi/ompi/issues/10235 +preconfigopts += 'sed -i "s/have_ze=yes/have_ze=no/" %(start_dir)s/3rd-party/romio341/mpl/configure && ' +configopts = '--with-cuda=%(start_dir)s/opal/mca/cuda --with-show-load-errors=no' +# Do not pick up the system library automatically +configopts += ' --without-xpmem' + +moduleclass = 'mpi' diff --git a/test/easyconfigs/easyconfigs.py b/test/easyconfigs/easyconfigs.py index 51c086b1195..49c08f78cd6 100644 --- a/test/easyconfigs/easyconfigs.py +++ b/test/easyconfigs/easyconfigs.py @@ -1432,7 +1432,7 @@ def test_pr_sanity_check_paths(self): # + jupyterlmod + jupyter-resource-usage # Python-bundle: Python + SciPy-bundle + matplotlib + JupyterLab bundles_whitelist = ['Autotools', 'CESM-deps', 'CUDA', 'ESL-Bundle', 'FEniCS', 'GCC', 'Jupyter-bundle', - 'Python-bundle', 'ROCm'] + 'Python-bundle', 'ROCm', 'llvm-compilers'] failing_checks = []