Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
easyblock = 'EB_BLIS'

name = 'AOCL-BLAS'
version = '5.1'

homepage = 'https://github.com/amd/blis'
description = """AOCL-BLAS is AMD's optimized version of
BLAS targeted for AMD EPYC and Ryzen CPUs."""

toolchain = {'name': 'llvm-compilers', 'version': '20.1.8'}
toolchainopts = {'openmp': True}

source_urls = ['https://github.com/amd/blis/archive/']
sources = ['%(version)s.tar.gz']
checksums = ['4ab210cea8753f4be9646a3ad8e6b42c7d19380084a66312497c97278b8c76a4']

builddependencies = [
('Python', '3.13.5'),
('Perl', '5.40.2'),
]

runtest = 'check'

moduleclass = 'numlib'
22 changes: 22 additions & 0 deletions easybuild/easyconfigs/b/BLIS/BLIS-2.0-llvm-compilers-20.1.8.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name = 'BLIS'
version = '2.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}

source_urls = ['https://github.com/flame/blis/archive/']
sources = ['%(version)s.tar.gz']
checksums = ['08bbebd77914a6d1a43874ae5ec2f54fe6a77cba745f2532df28361b0f1ad1b3']

builddependencies = [
('Python', '3.13.5'),
('Perl', '5.40.2'),
]

runtest = 'check'

moduleclass = 'numlib'
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name = 'Boost'
version = '1.88.0'

homepage = 'https://www.boost.org/'
description = """Boost provides free peer-reviewed portable C++ source libraries."""

toolchain = {'name': 'llvm-compilers', 'version': '20.1.8'}
toolchainopts = {'pic': True}

source_urls = ['https://archives.boost.io/release/%(version)s/source/']
sources = ['%%(namelower)s_%s.tar.gz' % '_'.join(version.split('.'))]
checksums = ['3621533e820dcab1e8012afd583c0c73cf0f77694952b81352bf38c1488f9cb4']

dependencies = [
('bzip2', '1.0.8'),
('zlib', '1.3.1'),
('XZ', '5.8.1'),
('zstd', '1.5.7'),
('ICU', '77.1'),
]

configopts = '--without-libraries=python,mpi'

# disable MPI, build Boost libraries with tagged layout
boost_mpi = False
tagged_layout = True

moduleclass = 'devel'
21 changes: 21 additions & 0 deletions easybuild/easyconfigs/f/FFTW/FFTW-3.3.10-llvm-compilers-20.1.8.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
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': 'llvm-compilers', 'version': '20.1.8'}
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'

moduleclass = 'numlib'
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
easyblock = 'Bundle'

name = 'FlexiBLAS'
version = '3.4.5'

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}

builddependencies = [
('CMake', '4.0.3'),
('Python', '3.13.5'), # required for running the tests
('BLIS', '2.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'),
]

# note: first listed backend will be used as default by FlexiBLAS,
# unless otherwise specified via easyconfig parameter flexiblas_default
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'])

default_component_specs = {'start_dir': '%(namelower)s-%(version)s'}
sanity_check_all_components = True

# Also build and install LAPACKE, which FlexiBLAS does not support yet
components = [
(name, version, {
'source_urls':
['https://gitlab.mpi-magdeburg.mpg.de/api/v4/projects/386/packages/generic/flexiblas-source/v%(version)s/'],
'sources': [SOURCELOWER_TAR_GZ],
'checksums': ['e819949c614c4968919b0ea4e873ab916d95cdc6943e9d091a78d209b7d6ed07'],
'backends': local_backends,
}),
('LAPACK', '3.12.1', {
'easyblock': 'CMakeMake',
'source_urls': ['https://github.com/Reference-LAPACK/lapack/archive/'],
'sources': ['v%(version)s.tar.gz'],
'checksums': ['2ca6407a001a474d4d4d35f3a61550156050c48016d949f0da0529c0aa052422'],
'configopts': ('-DBUILD_SHARED_LIBS=ON -DUSE_OPTIMIZED_BLAS=ON -DLAPACKE=ON '
'-DUSE_OPTIMIZED_LAPACK=ON -DBUILD_DEPRECATED=ON -DBUILD_INDEX64_EXT_API=OFF '
'-DCMAKE_INSTALL_INCLUDEDIR=%(installdir)s/include/flexiblas'),
'sanity_check_paths': {
'files': ['lib/liblapacke.%s' % SHLIB_EXT, 'include/flexiblas/lapacke.h'],
'dirs': [],
},
}),
]

moduleclass = 'lib'
20 changes: 20 additions & 0 deletions easybuild/easyconfigs/l/lfbf/lfbf-2025b.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
easyblock = 'Toolchain'

name = 'lfbf'
version = '2025b'

homepage = '(none)'
description = """LLVM based compiler toolchain, including
FlexiBLAS (BLAS and LAPACK support) and (serial) FFTW."""

toolchain = SYSTEM

local_llvmver = '20.1.8'

dependencies = [
('llvm-compilers', local_llvmver),
('FlexiBLAS', '3.4.5', '', ('llvm-compilers', local_llvmver)),
('FFTW', '3.3.10', '', ('llvm-compilers', local_llvmver)),
]

moduleclass = 'toolchain'
23 changes: 23 additions & 0 deletions easybuild/easyconfigs/l/llvm-compilers/llvm-compilers-20.1.8.eb
Original file line number Diff line number Diff line change
@@ -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'
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name = 'OpenBLAS'
version = '0.3.30'

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

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.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',
]
checksums = [
{'v0.3.30.tar.gz': '27342cff518646afb4c2b976d809102e368957974c250a25ccc965e53063c95d'},
{'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'},
]

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

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,64 @@
Combination of the following to PRs to better support
LLVM flang in OpenBLAS. The first patch prevents an
error in `f_check` due to LLVM flang falsely being
classified as GCC, whereas the second fixes a miscompilation
due to `-fdefault-integer-8` not being used when
building the `INTERFACE64` variant of OpenBLAS, hence
crashing every single test.

For more information, see:
- https://github.com/OpenMathLib/OpenBLAS/pull/5540
- https://github.com/OpenMathLib/OpenBLAS/pull/5534

Author:
- Jan Reuter (JSC)
- Bart Oldeman (ComputeCanada)


diff --git a/f_check b/f_check
index 4b9f95b06e..156f0e5621 100755
--- a/f_check
+++ b/f_check
@@ -92,7 +92,7 @@ else
vendor=FLANG
openmp='-fopenmp'
;;
- *GNU*|*GCC*)
+ *GCC*)

v="${data#*GCC: *\) }"
v="${v%%\"*}"
diff --git a/Makefile.system b/Makefile.system
index 6241006a8..9cfc98d48 100644
--- a/Makefile.system
+++ b/Makefile.system
@@ -887,7 +887,7 @@ NO_BINARY_MODE = 1
BINARY_DEFINED = 1
ifdef INTERFACE64
ifneq ($(INTERFACE64), 0)
-ifeq ($(F_COMPILER), GFORTRAN)
+ifeq ($(F_COMPILER), $(filter $(F_COMPILER),GFORTRAN FLANGNEW))
FCOMMON_OPT += -fdefault-integer-8
endif
ifeq ($(F_COMPILER), FLANG)
@@ -902,7 +902,7 @@ NO_BINARY_MODE = 1
BINARY_DEFINED = 1
ifdef INTERFACE64
ifneq ($(INTERFACE64), 0)
-ifeq ($(F_COMPILER), GFORTRAN)
+ifeq ($(F_COMPILER), $(filter $(F_COMPILER),GFORTRAN FLANGNEW))
FCOMMON_OPT += -fdefault-integer-8
endif
ifeq ($(F_COMPILER), FLANG)
@@ -917,7 +917,7 @@ NO_BINARY_MODE = 1
BINARY_DEFINED = 1
ifdef INTERFACE64
ifneq ($(INTERFACE64), 0)
-ifeq ($(F_COMPILER), GFORTRAN)
+ifeq ($(F_COMPILER), $(filter $(F_COMPILER),GFORTRAN FLANGNEW))
FCOMMON_OPT += -fdefault-integer-8
endif
ifeq ($(F_COMPILER), FLANG)
--
2.51.2

Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
From 39d5e44723bec02262caabbc33182df62029af7e Mon Sep 17 00:00:00 2001
From: mayeut <[email protected]>
Date: Sun, 16 Nov 2025 00:41:43 +0100
Subject: [PATCH] fix: dot_kernel_sve "n" usage & clobber list

diff --git a/kernel/arm64/dot_kernel_sve.c b/kernel/arm64/dot_kernel_sve.c
index bc9975214b..96485184c1 100644
--- a/kernel/arm64/dot_kernel_sve.c
+++ b/kernel/arm64/dot_kernel_sve.c
@@ -48,7 +48,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
" add x12, %[X_], x9, lsl #"SHIFT" \n" \
" add x13, %[Y_], x9, lsl #"SHIFT" \n"
#define TAIL_WHILE \
-" whilelo p1."DTYPE", x8, x0 \n"
+" whilelo p1."DTYPE", x8, %[N_] \n"
#define UPDATE(pg, x,y,out) \
" ld1"WIDTH" { z2."DTYPE" }, "pg"/z, ["x", x8, lsl #"SHIFT"] \n" \
" ld1"WIDTH" { z3."DTYPE" }, "pg"/z, ["y", x8, lsl #"SHIFT"] \n" \
@@ -66,7 +66,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
" movi d1, #0x0 \n" \
SETUP_TRUE \
" neg x10, x9, lsl #1 \n" \
-" ands x11, x10, x0 \n" \
+" ands x11, x10, %[N_] \n" \
" b.eq 2f // skip_2x \n" \
OFFSET_INPUTS \
"1: // vector_2x \n" \
@@ -78,7 +78,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
SUM_VECTOR("1") \
"2: // skip_2x \n" \
" neg x10, x9 \n" \
-" and x10, x10, x0 \n" \
+" and x10, x10, %[N_] \n" \
" cmp x8, x10 \n" \
" b.hs 4f // tail \n" \
"3: // vector_1x \n" \
@@ -87,7 +87,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
" cmp x8, x10 \n" \
" b.lo 3b // vector_1x \n" \
"4: // tail \n" \
-" cmp x10, x0 \n" \
+" cmp x10, %[N_] \n" \
" b.eq 5f // end \n" \
TAIL_WHILE \
UPDATE("p1", "%[X_]", "%[Y_]", "z0") \
@@ -110,9 +110,9 @@ dot_kernel_sve(BLASLONG n, FLOAT* x, FLOAT* y)
[Y_] "r" (y)
: "cc",
"memory",
- "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7",
- "x8", "x9", "x10", "x11", "x12", "x13", "d1",
- "z0", "z1"
+ "x8", "x9", "x10", "x11", "x12", "x13",
+ "v0", "v1",
+ "z0", "z1", "z2", "z3"
);

return ret;
Loading