Skip to content

{numlib,compiler,toolchain,mpi}[lfoss/2023b] Added all ECs required to compile up to the lfoss and lmpflf toolchains#23051

Closed
Crivella wants to merge 16 commits intoeasybuilders:developfrom
Crivella:feature-LLVMtc
Closed

{numlib,compiler,toolchain,mpi}[lfoss/2023b] Added all ECs required to compile up to the lfoss and lmpflf toolchains#23051
Crivella wants to merge 16 commits intoeasybuilders:developfrom
Crivella:feature-LLVMtc

Conversation

@Crivella
Copy link
Contributor

@Crivella Crivella commented Jun 5, 2025

@github-actions
Copy link

github-actions bot commented Jun 5, 2025

Updated software BLIS-1.0-llvm-compilers-20.1.5.eb

Diff against BLIS-2.0-llvm-compilers-20.1.8.eb

easybuild/easyconfigs/b/BLIS/BLIS-2.0-llvm-compilers-20.1.8.eb

diff --git a/easybuild/easyconfigs/b/BLIS/BLIS-2.0-llvm-compilers-20.1.8.eb b/easybuild/easyconfigs/b/BLIS/BLIS-1.0-llvm-compilers-20.1.5.eb
index 5d7445b8e3..8b6643f41d 100644
--- a/easybuild/easyconfigs/b/BLIS/BLIS-2.0-llvm-compilers-20.1.8.eb
+++ b/easybuild/easyconfigs/b/BLIS/BLIS-1.0-llvm-compilers-20.1.5.eb
@@ -1,22 +1,33 @@
+easyblock = 'ConfigureMake'
+
 name = 'BLIS'
-version = '2.0'
+version = '1.0'
 
 homepage = 'https://github.com/flame/blis/'
 description = """BLIS is a portable software framework for instantiating high-performance
 BLAS-like dense linear algebra libraries."""
 
-toolchain = {'name': 'llvm-compilers', 'version': '20.1.8'}
-toolchainopts = {'openmp': True, 'optarch': False}
+toolchain = {'name': 'llvm-compilers', 'version': '20.1.5'}
 
 source_urls = ['https://github.com/flame/blis/archive/']
 sources = ['%(version)s.tar.gz']
-checksums = ['08bbebd77914a6d1a43874ae5ec2f54fe6a77cba745f2532df28361b0f1ad1b3']
+checksums = ['9c12972aa1e50f64ca61684eba6828f2f3dd509384b1e41a1e8a9aedea4b16a6']
 
 builddependencies = [
-    ('Python', '3.13.5'),
-    ('Perl', '5.40.2'),
+    ('Python', '3.11.5'),
+    ('Perl', '5.38.0'),
 ]
 
+configopts = '--enable-cblas --enable-threading=openmp --enable-shared CC="$CC" auto'
+
 runtest = 'check'
 
+sanity_check_paths = {
+    'files': ['include/blis/cblas.h', 'include/blis/blis.h',
+              'lib/libblis.a', 'lib/libblis.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+modextrapaths = {MODULE_LOAD_ENV_HEADERS: 'include/blis'}
+
 moduleclass = 'numlib'

Updated software FFTW.MPI-3.3.10-lmpich-2023b.eb

Diff against FFTW.MPI-3.3.10-lompi-2025b.eb

easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-lompi-2025b.eb

diff --git a/easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-lompi-2025b.eb b/easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-lmpich-2023b.eb
index 26a2b8a664..cd5ab20ab0 100644
--- a/easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-lompi-2025b.eb
+++ b/easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-lmpich-2023b.eb
@@ -5,7 +5,7 @@ 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': 'lompi', 'version': '2025b'}
+toolchain = {'name': 'lmpich', 'version': '2023b'}
 toolchainopts = {'pic': True}
 
 source_urls = [homepage]

Updated software FFTW.MPI-3.3.10-lompi-2023b.eb

Diff against FFTW.MPI-3.3.10-lompi-2025b.eb

easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-lompi-2025b.eb

diff --git a/easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-lompi-2025b.eb b/easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-lompi-2023b.eb
index 26a2b8a664..f623f69d49 100644
--- a/easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-lompi-2025b.eb
+++ b/easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-lompi-2023b.eb
@@ -5,7 +5,7 @@ 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': 'lompi', 'version': '2025b'}
+toolchain = {'name': 'lompi', 'version': '2023b'}
 toolchainopts = {'pic': True}
 
 source_urls = [homepage]

Updated software FFTW-3.3.10-llvm-compilers-20.1.5.eb

Diff against FFTW-3.3.10-llvm-compilers-20.1.8.eb

easybuild/easyconfigs/f/FFTW/FFTW-3.3.10-llvm-compilers-20.1.8.eb

diff --git a/easybuild/easyconfigs/f/FFTW/FFTW-3.3.10-llvm-compilers-20.1.8.eb b/easybuild/easyconfigs/f/FFTW/FFTW-3.3.10-llvm-compilers-20.1.5.eb
index 8b672b9500..0495989571 100644
--- a/easybuild/easyconfigs/f/FFTW/FFTW-3.3.10-llvm-compilers-20.1.8.eb
+++ b/easybuild/easyconfigs/f/FFTW/FFTW-3.3.10-llvm-compilers-20.1.5.eb
@@ -5,17 +5,17 @@ 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': 'llvm-compilers', 'version': '20.1.8'}
+toolchain = {'name': 'llvm-compilers', 'version': '20.1.5'}
 toolchainopts = {'pic': True}
 
 source_urls = [homepage]
 sources = [SOURCELOWER_TAR_GZ]
 checksums = ['56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467']
 
-# not supported for LLVM compilers
-# build fails with: configure: error: gcc 4.6 or later required for quad precision support
-with_quad_prec = False
-
 runtest = 'check'
 
+# Right now FFTW checks for GCC>4.6, (specifically GCC) when quad precision is enabled
+# Should check can be safely disabled in order to compile with LLVM
+with_quad_prec = False
+
 moduleclass = 'numlib'

Updated software FlexiBLAS-3.4.4-llvm-compilers-20.1.5.eb

Diff against FlexiBLAS-3.4.5-llvm-compilers-20.1.8.eb

easybuild/easyconfigs/f/FlexiBLAS/FlexiBLAS-3.4.5-llvm-compilers-20.1.8.eb

diff --git a/easybuild/easyconfigs/f/FlexiBLAS/FlexiBLAS-3.4.5-llvm-compilers-20.1.8.eb b/easybuild/easyconfigs/f/FlexiBLAS/FlexiBLAS-3.4.4-llvm-compilers-20.1.5.eb
index 172d643785..bc3bc24828 100644
--- a/easybuild/easyconfigs/f/FlexiBLAS/FlexiBLAS-3.4.5-llvm-compilers-20.1.8.eb
+++ b/easybuild/easyconfigs/f/FlexiBLAS/FlexiBLAS-3.4.4-llvm-compilers-20.1.5.eb
@@ -1,28 +1,26 @@
 easyblock = 'Bundle'
 
 name = 'FlexiBLAS'
-version = '3.4.5'
+version = '3.4.4'
 
 homepage = 'https://gitlab.mpi-magdeburg.mpg.de/software/flexiblas-release'
 description = """FlexiBLAS is a wrapper library that enables the exchange of the BLAS and LAPACK implementation
 used by a program without recompiling or relinking it."""
 
-toolchain = {'name': 'llvm-compilers', 'version': '20.1.8'}
-local_extra_flags = "-fstack-protector-strong -fstack-clash-protection"
-toolchainopts = {'pic': True, 'extra_cflags': local_extra_flags}
+toolchain = {'name': 'llvm-compilers', 'version': '20.1.5'}
+local_extra_c_flags = "-fstack-protector-strong -fstack-clash-protection"
+# local_extra_f_flags = "-Xflang -fstack-protector-strong -Xflang -fstack-clash-protection"
+local_extra_f_flags = ""
+toolchainopts = {'pic': True, 'extra_cflags': local_extra_c_flags, 'extra_fflags': local_extra_f_flags}
 
 builddependencies = [
-    ('CMake', '4.0.3'),
-    ('Python', '3.13.5'),  # required for running the tests
-    ('BLIS', '2.0'),
+    ('CMake', '3.27.6'),
+    ('Python', '3.11.5'),  # required for running the tests
+    ('BLIS', '1.0'),
 ]
-if ARCH == 'x86_64':
-    builddependencies.append(('AOCL-BLAS', '5.1'))
-if ARCH == 'aarch64':
-    builddependencies.append(('NVPL', '25.5', '', SYSTEM))
 
 dependencies = [
-    ('OpenBLAS', '0.3.30'),
+    ('OpenBLAS', '0.3.29'),
 ]
 
 # note: first listed backend will be used as default by FlexiBLAS,
@@ -31,9 +29,7 @@ local_backends = ['OpenBLAS', 'BLIS']
 
 # imkl supplies its backend via the imkl module, not as a dependency
 if ARCH == 'x86_64':
-    local_backends.extend(['AOCL-BLAS', 'imkl'])
-if ARCH == 'aarch64':
-    local_backends.extend(['NVPL'])
+    local_backends.append('imkl')
 
 default_component_specs = {'start_dir': '%(namelower)s-%(version)s'}
 sanity_check_all_components = True
@@ -42,18 +38,18 @@ sanity_check_all_components = True
 components = [
     (name, version, {
         'source_urls':
-        ['https://gitlab.mpi-magdeburg.mpg.de/api/v4/projects/386/packages/generic/flexiblas-source/v%(version)s/'],
+        ['https://gitlab.mpi-magdeburg.mpg.de/api/v4/projects/386/packages/generic/flexiblas-source/v3.4.4/'],
         'sources': [SOURCELOWER_TAR_GZ],
-        'checksums': ['e819949c614c4968919b0ea4e873ab916d95cdc6943e9d091a78d209b7d6ed07'],
+        'checksums': ['05040ae092142dd0bf38d1bb9ce33f6b475d9f9bb455e33be997932ae855c22b'],
         'backends': local_backends,
     }),
-    ('LAPACK', '3.12.1', {
+    ('LAPACK', '3.12.0', {
         'easyblock': 'CMakeMake',
         'source_urls': ['https://github.com/Reference-LAPACK/lapack/archive/'],
         'sources': ['v%(version)s.tar.gz'],
-        'checksums': ['2ca6407a001a474d4d4d35f3a61550156050c48016d949f0da0529c0aa052422'],
+        'checksums': ['eac9570f8e0ad6f30ce4b963f4f033f0f643e7c3912fc9ee6cd99120675ad48b'],
         'configopts': ('-DBUILD_SHARED_LIBS=ON -DUSE_OPTIMIZED_BLAS=ON -DLAPACKE=ON '
-                       '-DUSE_OPTIMIZED_LAPACK=ON -DBUILD_DEPRECATED=ON -DBUILD_INDEX64_EXT_API=OFF '
+                       '-DUSE_OPTIMIZED_LAPACK=ON -DBUILD_DEPRECATED=ON '
                        '-DCMAKE_INSTALL_INCLUDEDIR=%(installdir)s/include/flexiblas'),
         'sanity_check_paths': {
             'files': ['lib/liblapacke.%s' % SHLIB_EXT, 'include/flexiblas/lapacke.h'],

Updated software lfbf-2023b.eb

Diff against lfbf-2025b.eb

easybuild/easyconfigs/l/lfbf/lfbf-2025b.eb

diff --git a/easybuild/easyconfigs/l/lfbf/lfbf-2025b.eb b/easybuild/easyconfigs/l/lfbf/lfbf-2023b.eb
index 351bf76552..87cbc4c879 100644
--- a/easybuild/easyconfigs/l/lfbf/lfbf-2025b.eb
+++ b/easybuild/easyconfigs/l/lfbf/lfbf-2023b.eb
@@ -1,20 +1,22 @@
 easyblock = 'Toolchain'
 
 name = 'lfbf'
-version = '2025b'
+version = '2023b'
 
 homepage = '(none)'
-description = """LLVM based compiler toolchain, including
+description = """GNU Compiler Collection (GCC) based compiler toolchain, including
  FlexiBLAS (BLAS and LAPACK support) and (serial) FFTW."""
 
 toolchain = SYSTEM
 
-local_llvmver = '20.1.8'
+local_llvmver = '20.1.5'
+
+local_llvm_tc = ('llvm-compilers', local_llvmver)
 
 dependencies = [
-    ('llvm-compilers', local_llvmver),
-    ('FlexiBLAS', '3.4.5', '', ('llvm-compilers', local_llvmver)),
-    ('FFTW', '3.3.10', '', ('llvm-compilers', local_llvmver)),
+    local_llvm_tc,
+    ('FlexiBLAS', '3.4.4', '', local_llvm_tc),
+    ('FFTW', '3.3.10', '', local_llvm_tc),
 ]
 
 moduleclass = 'toolchain'

Updated software lfoss-2023b.eb

Diff against lfoss-2025b.eb

easybuild/easyconfigs/l/lfoss/lfoss-2025b.eb

diff --git a/easybuild/easyconfigs/l/lfoss/lfoss-2025b.eb b/easybuild/easyconfigs/l/lfoss/lfoss-2023b.eb
index d9f09eafda..9fad0e12a6 100644
--- a/easybuild/easyconfigs/l/lfoss/lfoss-2025b.eb
+++ b/easybuild/easyconfigs/l/lfoss/lfoss-2023b.eb
@@ -1,7 +1,7 @@
 easyblock = 'Toolchain'
 
 name = 'lfoss'
-version = '2025b'
+version = '2023b'
 
 homepage = 'https://easybuild.readthedocs.io/en/master/Common-toolchains.html#foss-toolchain'
 description = """GNU Compiler Collection (GCC) based compiler toolchain, including
@@ -9,7 +9,7 @@ description = """GNU Compiler Collection (GCC) based compiler toolchain, includi
 
 toolchain = SYSTEM
 
-local_llvmver = '20.1.8'
+local_llvmver = '20.1.5'
 
 # toolchain used to build foss dependencies
 local_comp_mpi_tc = ('lompi', version)
@@ -18,11 +18,11 @@ local_comp_mpi_tc = ('lompi', version)
 # because of toolchain preparation functions
 dependencies = [
     ('llvm-compilers', local_llvmver),
-    ('OpenMPI', '5.0.8', '', ('llvm-compilers', local_llvmver)),
-    ('FlexiBLAS', '3.4.5', '', ('llvm-compilers', local_llvmver)),
+    ('OpenMPI', '5.0.7', '', ('llvm-compilers', local_llvmver)),
+    ('FlexiBLAS', '3.4.4', '', ('llvm-compilers', local_llvmver)),
     ('FFTW', '3.3.10', '', ('llvm-compilers', local_llvmver)),
     ('FFTW.MPI', '3.3.10', '', local_comp_mpi_tc),
-    ('ScaLAPACK', '2.2.2', '-fb', local_comp_mpi_tc),
+    ('ScaLAPACK', '2.2.0', '-fb', local_comp_mpi_tc),
 ]
 
 moduleclass = 'toolchain'

Updated software llvm-compilers-20.1.5.eb

Diff against llvm-compilers-20.1.8.eb

easybuild/easyconfigs/l/llvm-compilers/llvm-compilers-20.1.8.eb

diff --git a/easybuild/easyconfigs/l/llvm-compilers/llvm-compilers-20.1.8.eb b/easybuild/easyconfigs/l/llvm-compilers/llvm-compilers-20.1.5.eb
index 794ccbcb3b..8d5e062272 100644
--- a/easybuild/easyconfigs/l/llvm-compilers/llvm-compilers-20.1.8.eb
+++ b/easybuild/easyconfigs/l/llvm-compilers/llvm-compilers-20.1.5.eb
@@ -1,7 +1,7 @@
 easyblock = 'Bundle'
 
 name = 'llvm-compilers'
-version = '20.1.8'
+version = '20.1.5'
 
 homepage = 'https://llvm.org/'
 description = """The LLVM Project is a collection of modular and reusable compiler
@@ -9,10 +9,11 @@ and toolchain technologies."""
 
 toolchain = SYSTEM
 
-local_gcc_version = '14.3.0'
+local_gcc_version = '13.2.0'
+
 dependencies = [
     ('GCCcore', local_gcc_version),
-    ('binutils', '2.44', '', ('GCCcore', local_gcc_version)),
+    ('binutils', '2.40', '', ('GCCcore', local_gcc_version)),
     ('LLVM', version, '', ('GCCcore', local_gcc_version)),
 ]
 

Updated software lmpich-2023b.eb

Diff against lmpich-2025b.eb

easybuild/easyconfigs/l/lmpich/lmpich-2025b.eb

diff --git a/easybuild/easyconfigs/l/lmpich/lmpich-2025b.eb b/easybuild/easyconfigs/l/lmpich/lmpich-2023b.eb
index df7836bc76..9fe9f2f696 100644
--- a/easybuild/easyconfigs/l/lmpich/lmpich-2025b.eb
+++ b/easybuild/easyconfigs/l/lmpich/lmpich-2023b.eb
@@ -1,14 +1,14 @@
 easyblock = 'Toolchain'
 
 name = 'lmpich'
-version = '2025b'
+version = '2023b'
 
 homepage = '(none)'
 description = """LLVM based compiler toolchain, including MPICH for MPI support."""
 
 toolchain = SYSTEM
 
-local_llvmver = '20.1.8'
+local_llvmver = '20.1.5'
 
 dependencies = [
     ('llvm-compilers', local_llvmver),

Updated software lompi-2023b.eb

Diff against lompi-2025b.eb

easybuild/easyconfigs/l/lompi/lompi-2025b.eb

diff --git a/easybuild/easyconfigs/l/lompi/lompi-2025b.eb b/easybuild/easyconfigs/l/lompi/lompi-2023b.eb
index 4058aa853d..6b9725e1ba 100644
--- a/easybuild/easyconfigs/l/lompi/lompi-2025b.eb
+++ b/easybuild/easyconfigs/l/lompi/lompi-2023b.eb
@@ -1,19 +1,20 @@
 easyblock = 'Toolchain'
 
 name = 'lompi'
-version = '2025b'
+version = '2023b'
 
 homepage = '(none)'
-description = """LLVM based compiler toolchain, including OpenMPI for MPI support."""
+description = """GNU Compiler Collection (GCC) based compiler toolchain,
+ including OpenMPI for MPI support."""
 
 toolchain = SYSTEM
 
-local_llvmver = '20.1.8'
+local_llvmver = '20.1.5'
 
 # compiler toolchain dependencies
 dependencies = [
-    ('llvm-compilers', local_llvmver),  # includes both LLVM and binutils
-    ('OpenMPI', '5.0.8', '', ('llvm-compilers', local_llvmver)),
+    ('llvm-compilers', local_llvmver),  # includes both GCC and binutils
+    ('OpenMPI', '5.0.7', '', ('llvm-compilers', local_llvmver)),
 ]
 
 moduleclass = 'toolchain'

Updated software MPICH-4.3.2-llvm-compilers-20.1.5.eb

Diff against MPICH-4.3.2-GCC-14.3.0.eb

easybuild/easyconfigs/m/MPICH/MPICH-4.3.2-GCC-14.3.0.eb

diff --git a/easybuild/easyconfigs/m/MPICH/MPICH-4.3.2-GCC-14.3.0.eb b/easybuild/easyconfigs/m/MPICH/MPICH-4.3.2-llvm-compilers-20.1.5.eb
index d7389b334e..c46c5bc1eb 100644
--- a/easybuild/easyconfigs/m/MPICH/MPICH-4.3.2-GCC-14.3.0.eb
+++ b/easybuild/easyconfigs/m/MPICH/MPICH-4.3.2-llvm-compilers-20.1.5.eb
@@ -5,7 +5,7 @@ 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': 'GCC', 'version': '14.3.0'}
+toolchain = {'name': 'llvm-compilers', 'version': '20.1.5'}
 toolchainopts = {
     'extra_fflags': '-w -fallow-argument-mismatch -O2'
 }
@@ -15,11 +15,10 @@ sources = [SOURCELOWER_TAR_GZ]
 checksums = ['47d774587a7156a53752218c811c852e70ac44db9c502dc3f399b4cb817e3818']
 
 dependencies = [
-    ('hwloc', '2.12.1'),
-    ('UCX', '1.19.0'),
+    ('hwloc', '2.9.2'),
+    ('UCX', '1.15.0'),
 ]
 
-# Also build (separate) MPI ABI
 mpi_abi = True
 
 moduleclass = 'mpi'

Updated software OpenBLAS-0.3.29-llvm-compilers-20.1.5.eb

Diff against OpenBLAS-0.3.30-llvm-compilers-20.1.8.eb

easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.30-llvm-compilers-20.1.8.eb

diff --git a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.30-llvm-compilers-20.1.8.eb b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.29-llvm-compilers-20.1.5.eb
index 13d1b139fc..2332e0cf07 100644
--- a/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.30-llvm-compilers-20.1.8.eb
+++ b/easybuild/easyconfigs/o/OpenBLAS/OpenBLAS-0.3.29-llvm-compilers-20.1.5.eb
@@ -1,10 +1,10 @@
 name = 'OpenBLAS'
-version = '0.3.30'
+version = '0.3.29'
 
 homepage = 'https://www.openblas.net/'
 description = "OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version."
 
-toolchain = {'name': 'llvm-compilers', 'version': '20.1.8'}
+toolchain = {'name': 'llvm-compilers', 'version': '20.1.5'}
 
 source_urls = [
     # order matters, trying to download the large.tgz/timing.tgz LAPACK tarballs from GitHub causes trouble
@@ -17,30 +17,23 @@ patches = [
     ('timing.tgz', '.'),
     'OpenBLAS-0.3.15_workaround-gcc-miscompilation.patch',
     'OpenBLAS-0.3.21_fix-order-vectorization.patch',
-    'OpenBLAS-0.3.30_revert-fix-out-of-bounds-access.patch',
-    'OpenBLAS-0.3.30_fix-dot-kernel-sve-aarch64.patch',
-    'OpenBLAS-0.3.30_better-support-llvm-flang.patch',
+    'OpenBLAS-0.3.29-llvm_make.patch',
 ]
 checksums = [
-    {'v0.3.30.tar.gz': '27342cff518646afb4c2b976d809102e368957974c250a25ccc965e53063c95d'},
+    {'v0.3.29.tar.gz': '38240eee1b29e2bde47ebb5d61160207dc68668a54cac62c076bb5032013b1eb'},
     {'large.tgz': 'f328d88b7fa97722f271d7d0cfea1c220e0f8e5ed5ff01d8ef1eb51d6f4243a1'},
     {'timing.tgz': '999c65f8ea8bd4eac7f1c7f3463d4946917afd20a997807300fe35d70122f3af'},
     {'OpenBLAS-0.3.15_workaround-gcc-miscompilation.patch':
      'e6b326fb8c4a8a6fd07741d9983c37a72c55c9ff9a4f74a80e1352ce5f975971'},
     {'OpenBLAS-0.3.21_fix-order-vectorization.patch':
      '08af834e5d60441fd35c128758ed9c092ba6887c829e0471ecd489079539047d'},
-    {'OpenBLAS-0.3.30_revert-fix-out-of-bounds-access.patch':
-     'c161fc0e2754c8ef073375138392a76ba9c4cb23f85d5d554051db4bc73ba6ae'},
-    {'OpenBLAS-0.3.30_fix-dot-kernel-sve-aarch64.patch':
-     'dfc675529f2ae8c6b3b35f8e6cf47095b0c54b89aa15ee2059fcfbe3f420c52e'},
-    {'OpenBLAS-0.3.30_better-support-llvm-flang.patch':
-     '2e4b314ad94402978d7d6c2137592f9489ee8779507efc510d6d460fcecb1d88'},
+    {'OpenBLAS-0.3.29-llvm_make.patch': 'bb121c5e2457ebda3ef18ef6286ea89a72498adac64bd11949db137b0e57c96a'},
 ]
 
 builddependencies = [
     ('make', '4.4.1'),
     # required by LAPACK test suite
-    ('Python', '3.13.5'),
+    ('Python', '3.11.5'),
 ]
 
 run_lapack_tests = True

Updated software OpenMPI-5.0.7-llvm-compilers-20.1.5.eb

Diff against OpenMPI-5.0.8-llvm-compilers-20.1.8.eb

easybuild/easyconfigs/o/OpenMPI/OpenMPI-5.0.8-llvm-compilers-20.1.8.eb

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.7-llvm-compilers-20.1.5.eb
index c7d514c9cf..1172d21772 100644
--- a/easybuild/easyconfigs/o/OpenMPI/OpenMPI-5.0.8-llvm-compilers-20.1.8.eb
+++ b/easybuild/easyconfigs/o/OpenMPI/OpenMPI-5.0.7-llvm-compilers-20.1.5.eb
@@ -1,54 +1,41 @@
 name = 'OpenMPI'
-version = '5.0.8'
+version = '5.0.7'
 
 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'}
+toolchain = {'name': 'llvm-compilers', 'version': '20.1.5'}
 
 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.2_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.tar.bz2': '119f2009936a403334d0df3c0d74d5595a32d99497f9b1d41e90019fee2fc2dd'},
     {'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'),
+    ('pkgconf', '2.0.3'),
+    ('Autotools', '20220317'),
 ]
 
 dependencies = [
-    ('zlib', '1.3.1'),
-    ('hwloc', '2.12.1'),
+    ('zlib', '1.2.13'),
+    ('hwloc', '2.9.2'),
     ('libevent', '2.1.12'),
-    ('UCX', '1.19.0'),
-    ('libfabric', '2.1.0'),
-    ('PMIx', '5.0.8'),
-    ('PRRTE', '3.0.11'),
-    ('UCC', '1.4.4'),
+    ('UCX', '1.15.0'),
+    ('libfabric', '1.19.0'),
+    ('PMIx', '4.2.6'),
+    ('PRRTE', '3.0.8'),
+    ('UCC', '1.2.0'),
 ]
 
 # 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'
+# preconfigopts = 'clang -Iopal/mca/cuda/include -shared opal/mca/cuda/lib/cuda.c -o opal/mca/cuda/lib/libcuda.so && '
+# configopts = '--with-cuda=%(start_dir)s/opal/mca/cuda --with-show-load-errors=no '
+configopts = '--with-show-load-errors=no '
 
 moduleclass = 'mpi'

Updated software PRRTE-3.0.8-GCCcore-13.2.0.eb

Diff against PRRTE-3.0.11-GCCcore-14.3.0.eb

easybuild/easyconfigs/p/PRRTE/PRRTE-3.0.11-GCCcore-14.3.0.eb

diff --git a/easybuild/easyconfigs/p/PRRTE/PRRTE-3.0.11-GCCcore-14.3.0.eb b/easybuild/easyconfigs/p/PRRTE/PRRTE-3.0.8-GCCcore-13.2.0.eb
index 0eb711cd4e..e603fc4a6c 100644
--- a/easybuild/easyconfigs/p/PRRTE/PRRTE-3.0.11-GCCcore-14.3.0.eb
+++ b/easybuild/easyconfigs/p/PRRTE/PRRTE-3.0.8-GCCcore-13.2.0.eb
@@ -1,27 +1,24 @@
 easyblock = 'ConfigureMake'
 
 name = 'PRRTE'
-version = '3.0.11'
+version = '3.0.8'
 
 homepage = 'https://docs.prrte.org/'
 description = """PRRTE is the PMIx Reference RunTime Environment"""
 
-toolchain = {'name': 'GCCcore', 'version': '14.3.0'}
+toolchain = {'name': 'GCCcore', 'version': '13.2.0'}
 toolchainopts = {'pic': True}
 
 source_urls = ['https://github.com/openpmix/prrte/releases/download/v%(version)s']
 sources = ['%(namelower)s-%(version)s.tar.bz2']
-checksums = ['37af5a82d333a54c0bac358f06c194427b7dbfa7b8b85f2ddd1145acf71cfdd4']
+checksums = ['e798192fa0ab38172818a109a6c89bcc37e4b1123ca150d8c115dee5231750de']
 
-builddependencies = [
-    ('binutils', '2.44'),
-    ('pkgconf', '2.4.3'),
-]
+builddependencies = [('binutils', '2.40')]
 
 dependencies = [
     ('libevent', '2.1.12'),
-    ('hwloc', '2.12.1'),
-    ('PMIx', '5.0.8'),
+    ('hwloc', '2.9.2'),
+    ('PMIx', '4.2.6'),
 ]
 
 configopts = ' --with-libevent=$EBROOTLIBEVENT'

Updated software ScaLAPACK-2.2.0-lmpich-2023b-fb.eb

Diff against ScaLAPACK-2.2.2-lompi-2025b-fb.eb

easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.2-lompi-2025b-fb.eb

diff --git a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.2-lompi-2025b-fb.eb b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-lmpich-2023b-fb.eb
index 0e6e5ec809..ed4f5998e8 100644
--- a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.2-lompi-2025b-fb.eb
+++ b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-lmpich-2023b-fb.eb
@@ -1,32 +1,33 @@
 name = 'ScaLAPACK'
-version = '2.2.2'
+version = '2.2.0'
 versionsuffix = '-fb'
 
 homepage = 'https://www.netlib.org/scalapack/'
 description = """The ScaLAPACK (or Scalable LAPACK) library includes a subset of LAPACK routines
  redesigned for distributed memory MIMD parallel computers."""
 
-toolchain = {'name': 'lompi', 'version': '2025b'}
+toolchain = {'name': 'lmpich', 'version': '2023b'}
 toolchainopts = {
     'extra_cflags': '-std=c89',  # See https://github.com/Reference-ScaLAPACK/scalapack/issues/31
     'extra_fflags': '-lpthread', 'openmp': True, 'pic': True, 'usempi': True
 }
 
-source_urls = ['https://github.com/Reference-ScaLAPACK/scalapack/archive/refs/tags/']
-sources = ['v%(version)s.tar.gz']
-checksums = ['a2f0c9180a210bf7ffe126c9cb81099cf337da1a7120ddb4cbe4894eb7b7d022']
+source_urls = [homepage]
+sources = [SOURCELOWER_TGZ]
+patches = ['ScaLAPACK-%(version)s_fix-GCC-10.patch']
+checksums = [
+    '40b9406c20735a9a3009d863318cb8d3e496fb073d201c5463df810e01ab2a57',  # scalapack-2.2.0.tgz
+    'f6bc3c6dee012ba4a696548a2e12b6aae932ce4fd5a142153b338839f52b5906',  # ScaLAPACK-2.2.0_fix-GCC-10.patch
+]
 
 builddependencies = [
-    ('CMake', '4.0.3'),
+    ('CMake', '3.27.6'),
 ]
 
 dependencies = [
-    ('FlexiBLAS', '3.4.5'),
+    ('FlexiBLAS', '3.4.4'),
 ]
 
-# Other CMakeLists.txt in ScaLAPACK 2.2.2 are CMake 3.5+
-preconfigopts = 'sed -i "s/VERSION 2.8/VERSION 3.5/" %(start_dir)s/BLACS/INSTALL/CMakeLists.txt && '
-
 # Config Opts based on AOCL User Guide:
 # https://developer.amd.com/wp-content/resources/AOCL_User%20Guide_2.2.pdf
 

Updated software ScaLAPACK-2.2.0-lompi-2023b-fb.eb

Diff against ScaLAPACK-2.2.2-lompi-2025b-fb.eb

easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.2-lompi-2025b-fb.eb

diff --git a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.2-lompi-2025b-fb.eb b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-lompi-2023b-fb.eb
index 0e6e5ec809..727fb43739 100644
--- a/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.2-lompi-2025b-fb.eb
+++ b/easybuild/easyconfigs/s/ScaLAPACK/ScaLAPACK-2.2.0-lompi-2023b-fb.eb
@@ -1,32 +1,33 @@
 name = 'ScaLAPACK'
-version = '2.2.2'
+version = '2.2.0'
 versionsuffix = '-fb'
 
 homepage = 'https://www.netlib.org/scalapack/'
 description = """The ScaLAPACK (or Scalable LAPACK) library includes a subset of LAPACK routines
  redesigned for distributed memory MIMD parallel computers."""
 
-toolchain = {'name': 'lompi', 'version': '2025b'}
+toolchain = {'name': 'lompi', 'version': '2023b'}
 toolchainopts = {
     'extra_cflags': '-std=c89',  # See https://github.com/Reference-ScaLAPACK/scalapack/issues/31
     'extra_fflags': '-lpthread', 'openmp': True, 'pic': True, 'usempi': True
 }
 
-source_urls = ['https://github.com/Reference-ScaLAPACK/scalapack/archive/refs/tags/']
-sources = ['v%(version)s.tar.gz']
-checksums = ['a2f0c9180a210bf7ffe126c9cb81099cf337da1a7120ddb4cbe4894eb7b7d022']
+source_urls = [homepage]
+sources = [SOURCELOWER_TGZ]
+patches = ['ScaLAPACK-%(version)s_fix-GCC-10.patch']
+checksums = [
+    '40b9406c20735a9a3009d863318cb8d3e496fb073d201c5463df810e01ab2a57',  # scalapack-2.2.0.tgz
+    'f6bc3c6dee012ba4a696548a2e12b6aae932ce4fd5a142153b338839f52b5906',  # ScaLAPACK-2.2.0_fix-GCC-10.patch
+]
 
 builddependencies = [
-    ('CMake', '4.0.3'),
+    ('CMake', '3.27.6'),
 ]
 
 dependencies = [
-    ('FlexiBLAS', '3.4.5'),
+    ('FlexiBLAS', '3.4.4'),
 ]
 
-# Other CMakeLists.txt in ScaLAPACK 2.2.2 are CMake 3.5+
-preconfigopts = 'sed -i "s/VERSION 2.8/VERSION 3.5/" %(start_dir)s/BLACS/INSTALL/CMakeLists.txt && '
-
 # Config Opts based on AOCL User Guide:
 # https://developer.amd.com/wp-content/resources/AOCL_User%20Guide_2.2.pdf
 

@Crivella
Copy link
Contributor Author

Crivella commented Jun 5, 2025

Test report by @Crivella
Using easyblocks from PR(s) easybuilders/easybuild-easyblocks#3759
SUCCESS
Build succeeded for 12 out of 12 (12 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.13
See https://gist.github.com/Crivella/c91763fddca3e753776ba94d15ce8c2c for a full test report.

Notes

Test performed with the branch from easybuilders/easybuild-framework#4914 checked out

@Crivella
Copy link
Contributor Author

Crivella commented Jun 6, 2025

Manual report

Build using EESSI + EESSI-Extend (with LLVM-20.1.5 coming from one of the builds performed in easybuilders/easybuild-easyblocks#3741)

Uploading only one .md (to show the environment) as i forgot --dump-test-report will do another run to get all reports in one file

The file /home/crivella/test/easyconfigs/toolchainfiles/unified.py is a merged version of all the changes in easybuilders/easybuild-framework#4914

https://gist.github.com/Crivella/4226f6bbc4199f6b96ced3d3ff840be3

Final results


== Build succeeded for 12 out of 12
== Summary:
   * [SUCCESS] LLVMtc/20.1.5
   * [SUCCESS] OpenBLAS/0.3.29-LLVMtc-20.1.5
   * [SUCCESS] PRRTE/3.0.8-GCCcore-13.2.0
   * [SUCCESS] BLIS/1.0-LLVMtc-20.1.5
   * [SUCCESS] FFTW/3.3.10-LLVMtc-20.1.5
   * [SUCCESS] FlexiBLAS/3.4.4-LLVMtc-20.1.5
   * [SUCCESS] lfbf/2023b
   * [SUCCESS] OpenMPI/5.0.7-LLVMtc-20.1.5
   * [SUCCESS] lompi/2023b
   * [SUCCESS] ScaLAPACK/2.2.0-lompi-2023b-fb
   * [SUCCESS] FFTW.MPI/3.3.10-lompi-2023b
   * [SUCCESS] lfoss/2023b
== Temporary log file(s) /tmp/eb-_0t2dotp/easybuild-3f_ij1ad.log* have been removed.
== Temporary directory /tmp/eb-_0t2dotp has been removed.

@Crivella
Copy link
Contributor Author

Crivella commented Jun 6, 2025

@Crivella Crivella changed the title {numlib,compiler,toolchain,mpi}[lfoss/2023b] Added all ECs required to compile up to the lfoss toolchain WIP {numlib,compiler,toolchain,mpi}[lfoss/2023b] Added all ECs required to compile up to the lfoss toolchain Jun 18, 2025
@Crivella Crivella marked this pull request as ready for review June 18, 2025 08:50
@Crivella
Copy link
Contributor Author

Test report by @Crivella
Using easyblocks from PR(s) easybuilders/easybuild-easyblocks#3807
FAILED
Build succeeded for 12 out of 13 (13 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.13
See https://gist.github.com/Crivella/35bcc83733b1cf04d23f093bc42bb382 for a full test report.

@migueldiascosta
Copy link
Member

migueldiascosta commented Jul 9, 2025

fyi, currently testing eb --from-pr 23051 --include-easyblocks-from-pr 3759 -r on top of the Crivella/exp-LLVMtoolchain framework branch on Deucalion's a64fx partiion, will update soon, hopefully submit test reports

UPDATE: actually, that fails installing psutils with Undefined build option: 'ignore_pip_unversioned_pkgs, I guess from a mismatch between the crivella/exp-LLVMtoolchain framework branch and the develop easyblocks branch, switching to crivella/feature-LLVMtc easyblocks and easyconfig branches to try to keep the three of them in sync

@Crivella
Copy link
Contributor Author

Crivella commented Jul 9, 2025

UPDATE: actually, that fails installing psutils with Undefined build option: 'ignore_pip_unversioned_pkgs, I guess from a mismatch between the crivella/exp-LLVMtoolchain framework branch and the develop easyblocks branch, switching to crivella/feature-LLVMtc easyblocks and easyconfig branches to try to keep the three of them in sync

Yeah i've to sync that branch with develop will do it ASAP

@Crivella
Copy link
Contributor Author

I've rebased all the LLVM-toolchain PRs on develop

@migueldiascosta
Copy link
Member

has anyone tested this on Arm? On a64fx, the OpenBLAS tests are failing with

OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./sblat1
make[1]: *** [Makefile:51: level1] Segmentation fault (core dumped)
make[1]: Leaving directory '/tmp/mcosta/eb/build/OpenBLAS/0.3.29/LLVMtc-20.1.5/OpenBLAS-0.3.29/test'
make: *** [Makefile:171: tests] Error 2

If it's specific to a64fx we'll deal with it locally ad Deucalion, but I'd say it's important to test on more generic Arm

@ocaisa
Copy link
Member

ocaisa commented Jul 11, 2025

There seems to have been a good bit of work recently related to A64FX, can we bump the OpenBLAS version to 0.3.30? We probably also want this patch: OpenMathLib/OpenBLAS#5240

@migueldiascosta
Copy link
Member

also, and this seems to apply to any Arm with SVE, when building BLIS with LLVM I got

kernels/armsve/1m/bli_dpackm_armsve512_asm_10xk.c:71:15: fatal error: incompatible integer to pointer conversion assigning to 'void *' from 'uint64_t' (aka 'unsigned long') [-Wint-conversion]

had to add -Wno-error=int-conversion to $CFLAGS

(and then also the a64fx specific -DCACHE_SECTOR_SIZE_READONLY to avoid an illegal instruction in the tests (EESSI already adds that for a64fx with a hook; there's an easyblock for BLIS now, I suppose all of this could be handled there))

@Crivella
Copy link
Contributor Author

I think I've had a similar problem (-Wint-conversion) when building the d3q plugin for QE

I was considering to put it as a default option in the TC, but might be too agressive...

@Thyre
Copy link
Collaborator

Thyre commented Jul 11, 2025

I think I've had a similar problem (-Wint-conversion) when building the d3q plugin for QE

I was considering to put it as a default option in the TC, but might be too agressive...

Could we make this a toolchain option, similar to pic and rpath?
Then, we could enable it on a per-EasyConfig basis, whenever needed.

@Crivella
Copy link
Contributor Author

Crivella commented Jul 11, 2025

Could we make this a toolchain option, similar to pic and rpath?

Yeah most likely, especially as I am doing the same for lld_undefined_version and no_unused_args

https://github.com/easybuilders/easybuild-framework/blob/bb62f27df2d3873480b1afe1eba81d7c00db101a/easybuild/toolchains/compiler/llvm.py#L74-L77

@migueldiascosta
Copy link
Member

There seems to have been a good bit of work recently related to A64FX, can we bump the OpenBLAS version to 0.3.30? We probably also want this patch: OpenMathLib/OpenBLAS#5240

indeed, with 0.3.30 there's no segmentation fault

later there's one (out of 126) failed test but it doesn't seem to be as serious

TEST 124/126 potrf:smoketest_trivial [FAIL]
  ERR: test_potrs.c:537  U s(1,1) difference: 0.0449998
TEST 125/126 kernel_regress:skx_avx [OK]
TEST 126/126 fork:safety_after_fork_in_parent [OK]
RESULTS: 126 tests (125 ok, 1 failed, 0 skipped) ran in 27 ms

@migueldiascosta
Copy link
Member

update: at Deucalion we built GROMACS for a64fx using this toolchain, and it's ~20x (yes, 20 times!) slower than any other build. But then I changed only the LLVM version to 19, and it's 1.2x faster than with GCC (which we had already observed and motived our interest in this toolchain)

Can anyone think of what could bring such a severe (absurd, actually) performance regression on LLVM 20? I don't see any differences when profiling with perf

I'll be running more tests to see if it also happens on non-a64fx arm chips and on x86

@Crivella
Copy link
Contributor Author

update: at Deucalion we built GROMACS for a64fx using this toolchain, and it's ~20x (yes, 20 times!) slower than any other build. But then I changed only the LLVM version to 19, and it's 1.2x faster than with GCC (which we had already observed and motived our interest in this toolchain)

So basically rewriting everything to work on top of LLVM-19.1.7-GCCcore-13.3.0 and using flang-new?

@Thyre
Copy link
Collaborator

Thyre commented Jul 15, 2025

update: at Deucalion we built GROMACS for a64fx using this toolchain, and it's ~20x (yes, 20 times!) slower than any other build. But then I changed only the LLVM version to 19, and it's 1.2x faster than with GCC (which we had already observed and motived our interest in this toolchain)

Can anyone think of what could bring such a severe (absurd, actually) performance regression on LLVM 20? I don't see any differences when profiling with perf

Quickly glancing through the LLVM issues, there were a few reports about performance regressions, which seem to be fixed in 20.1.6 or later.
Maybe it's worth testing 20.1.7 / 20.1.8?
But no report mentioned such a huge performance regression. This certainly looks a bit weird...

@migueldiascosta
Copy link
Member

But then I changed only the LLVM version to 19, and it's 1.2x faster than with GCC (which we had already observed and motived our interest in this toolchain)

So basically rewriting everything to work on top of LLVM-19.1.7-GCCcore-13.3.0 and using flang-new?

I created an LLVM-19.1.7-GCCcore-13.2.0.eb easyconfig to keep the GCC toolchain version, and added a postinstallcmd creating a flang link to flank-new, yes

@migueldiascosta
Copy link
Member

Quickly glancing through the LLVM issues, there were a few reports about performance regressions, which seem to be fixed in 20.1.6 or later. Maybe it's worth testing 20.1.7 / 20.1.8?

Thanks, will also try that

But no report mentioned such a huge performance regression. This certainly looks a bit weird...

Indeed. At this point I'm assuming it's a64fx specific, but even then it's weird. Will try to gather more information

@Crivella Crivella changed the title {numlib,compiler,toolchain,mpi}[lfoss/2023b] Added all ECs required to compile up to the lfoss toolchain {numlib,compiler,toolchain,mpi}[lfoss/2023b] Added all ECs required to compile up to the lfoss and lmpflf toolchains Nov 7, 2025
@Crivella
Copy link
Contributor Author

Crivella commented Nov 7, 2025

Test report by @Crivella
Using easyblocks from PR(s) easybuilders/easybuild-easyblocks#3759
SUCCESS
Build succeeded for 1 out of 1 (total: 8 mins 4 secs) (1 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.13
See https://gist.github.com/Crivella/17747a19100db6dbd2c09fa8dc7d8e5a for a full test report.

@Crivella
Copy link
Contributor Author

Crivella commented Nov 7, 2025

Test report by @Crivella
Using easyblocks from PR(s) easybuilders/easybuild-easyblocks#3759
SUCCESS
Build succeeded for 3 out of 3 (total: 9 mins 56 secs) (1 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.13
See https://gist.github.com/Crivella/3536b4ee16510f4922cd0d23bd42b303 for a full test report.

@Crivella
Copy link
Contributor Author

Crivella commented Nov 10, 2025

Test report by @Crivella
Using easyblocks from PR(s) easybuilders/easybuild-easyblocks#3759
SUCCESS
Build succeeded for 17 out of 17 (total: 1 hour 23 mins 13 secs) (17 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.13
See https://gist.github.com/Crivella/c7e8ca26886aff5f7361d747051860b3 for a full test report.

NOTES

this was tested with easybuilders/easybuild-framework@31a27c6 to ensure we are also using rpath-wrappers for the LLVM linkers.

As far as i can tell, lld is always invoked by clang/flang with its absolute path, so the wrappers for the linkers did not seem to be used (the respective log file was never populated).
So I would say, already having clang/flang wrapped was enough but it does not hurt to allow using lld directly if a user needs it

@Crivella
Copy link
Contributor Author

Test report by @Crivella
SUCCESS
Build succeeded for 1 out of 1 (total: 10 mins 11 secs) (1 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.14
See https://gist.github.com/Crivella/873d12c61c9f44e08984ac067e8ab8ed for a full test report.

@Crivella
Copy link
Contributor Author

Crivella commented Nov 26, 2025

NOTE: forgot the EB

Test report by @Crivella
FAILED
Build succeeded for 12 out of 17 (total: 1 hour 14 mins 46 secs) (17 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.14
See https://gist.github.com/Crivella/74d5c9beaf1f15f6c307c9582a6d11e2 for a full test report.

@Crivella
Copy link
Contributor Author

Crivella commented Nov 26, 2025

Tested with FW PR at easybuilders/easybuild-framework@232ef0b

Test report by @Crivella
Using easyblocks from PR(s) easybuilders/easybuild-easyblocks#3759
SUCCESS
Build succeeded for 17 out of 17 (total: 1 hour 20 mins 47 secs) (17 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.14
See https://gist.github.com/Crivella/4134b166956d096242ca58f2b790dc60 for a full test report.

@boegel
Copy link
Member

boegel commented Nov 29, 2025

Test report by @boegel
Using easyblocks from PR(s) easybuilders/easybuild-easyblocks#3759
SUCCESS
Build succeeded for 17 out of 17 (total: 4 hours 46 mins 15 secs) (17 easyconfigs in total)
node4202.shinx.os - Linux RHEL 9.6, x86_64, AMD EPYC 9654 96-Core Processor (zen4), Python 3.9.21
See https://gist.github.com/boegel/bdf843c8e2482cd14cbfe8ceb850582f for a full test report.

@Crivella
Copy link
Contributor Author

Crivella commented Dec 6, 2025

@boegelbot please test @ jsc-zen3

@boegelbot
Copy link
Collaborator

@Crivella: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=23051 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_23051 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 9031

Test results coming soon (I hope)...

Details

- notification for comment with ID 3621284310 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

Signed-off-by: Jan Andre Reuter <jan@zyten.de>
@boegelbot
Copy link
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 17 out of 17 (total: 2 hours 34 mins 46 secs) (17 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.6, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.21
See https://gist.github.com/boegelbot/9c57f96266b9d0219892c70da61513a4 for a full test report.

gcc_ver = tc_gen.split('-', 1)[1].rstrip('.')
# Either map subtoolchain to known toolchain name, or label as unknown_map
# This will preserve the old behavior by grouping all unknown toolchains together
tc_family = tc_maps.get(tc_name, 'unknown_map')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about GCCcore? Or just tc_maps.get(tc_name, tc_name) to use that directly as the family?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to use a common string for everything not in the tc_map dict so we revert to the old behavior when the toolchain type is not identified

Copy link
Contributor

@Flamefire Flamefire Dec 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then I'd rather use either None: tc_maps.get(tc_name) and filter that out in the message, or give it a better generic name. Otherwise the error message would be confusing:

Found 3 variants of Foo in easyconfigs using 'unknown_map' toolchain '2024a' generation

User might read the "unknown" as "error happened leading to 'unknown'" while this is not unknown but expected, e.g. for GCCcore.

What would we even have in here? Maybe require all to be present and use tc_maps[tc_name] and we decide where we put it if and when it fails?

Comment on lines +1080 to +1081
for tc_name in sorted(all_deps.keys()):
ptr1 = all_deps[tc_name]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ptr isn't a great name. And you could do for tc_name, tc_gen_map in sorted(all_deps.items()):

@boegel
Copy link
Member

boegel commented Dec 8, 2025

Test report by @boegel
SUCCESS
Build succeeded for 17 out of 17 (total: 3 hours 43 mins 48 secs) (17 easyconfigs in total)
node4216.shinx.os - Linux RHEL 9.6, x86_64, AMD EPYC 9654 96-Core Processor (zen4), Python 3.9.21
See https://gist.github.com/boegel/287a63e606afcec09f656ebe123ede1b for a full test report.

@Crivella
Copy link
Contributor Author

Crivella commented Jan 7, 2026

Closing this in favor of moving all efforts for the LLVM toolchain in the 2025b and newer

@Crivella Crivella closed this Jan 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants