Skip to content

Commit 11f8e31

Browse files
authored
Merge pull request #25077 from Thyre/20260116122807_new_pr_AOCL-BLAS52
{numlib}[GCC/15.2.0] FlexiBLAS v3.5.0, OpenBLAS v0.3.31, AOCL-BLAS v5.2, BLIS v2.0, make v4.4.1
2 parents 5d052cf + edfea1b commit 11f8e31

File tree

5 files changed

+185
-0
lines changed

5 files changed

+185
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
easyblock = 'EB_BLIS'
2+
3+
name = 'AOCL-BLAS'
4+
version = '5.2'
5+
6+
homepage = 'https://github.com/amd/blis'
7+
description = """AOCL-BLAS is AMD's optimized version of
8+
BLAS targeted for AMD EPYC and Ryzen CPUs."""
9+
10+
toolchain = {'name': 'GCC', 'version': '15.2.0'}
11+
toolchainopts = {'openmp': True}
12+
13+
source_urls = ['https://github.com/amd/blis/archive/']
14+
sources = ['%(version)s.tar.gz']
15+
checksums = ['c553bd543eedc87920df9b82634ae4c02662145ed737f51fdf4c9bca5e588028']
16+
17+
builddependencies = [
18+
('Python', '3.14.2'),
19+
('Perl', '5.42.0'),
20+
]
21+
22+
runtest = 'check'
23+
24+
moduleclass = 'numlib'
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name = 'BLIS'
2+
version = '2.0'
3+
4+
homepage = 'https://github.com/flame/blis/'
5+
description = """BLIS is a portable software framework for instantiating high-performance
6+
BLAS-like dense linear algebra libraries."""
7+
8+
toolchain = {'name': 'GCC', 'version': '15.2.0'}
9+
toolchainopts = {'openmp': True}
10+
11+
source_urls = ['https://github.com/flame/blis/archive/']
12+
sources = ['%(version)s.tar.gz']
13+
checksums = ['08bbebd77914a6d1a43874ae5ec2f54fe6a77cba745f2532df28361b0f1ad1b3']
14+
15+
builddependencies = [
16+
('Python', '3.14.2'),
17+
('Perl', '5.42.0'),
18+
]
19+
20+
runtest = 'check'
21+
22+
moduleclass = 'numlib'
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
easyblock = 'Bundle'
2+
3+
name = 'FlexiBLAS'
4+
version = '3.5.0'
5+
6+
homepage = 'https://gitlab.mpi-magdeburg.mpg.de/software/flexiblas-release'
7+
description = """FlexiBLAS is a wrapper library that enables the exchange of the BLAS and LAPACK implementation
8+
used by a program without recompiling or relinking it."""
9+
10+
toolchain = {'name': 'GCC', 'version': '15.2.0'}
11+
local_extra_flags = "-fstack-protector-strong -fstack-clash-protection"
12+
toolchainopts = {'pic': True, 'extra_cflags': local_extra_flags, 'extra_fflags': local_extra_flags}
13+
14+
builddependencies = [
15+
('CMake', '4.2.1'),
16+
('Python', '3.14.2'), # required for running the tests
17+
('BLIS', '2.0'),
18+
]
19+
if ARCH == 'x86_64':
20+
builddependencies.append(('AOCL-BLAS', '5.2'))
21+
if ARCH == 'aarch64':
22+
builddependencies.append(('NVPL', '25.11', '', SYSTEM))
23+
24+
dependencies = [
25+
('OpenBLAS', '0.3.31'),
26+
]
27+
28+
# note: first listed backend will be used as default by FlexiBLAS,
29+
# unless otherwise specified via easyconfig parameter flexiblas_default
30+
local_backends = ['OpenBLAS', 'BLIS']
31+
32+
# imkl supplies its backend via the imkl module, not as a dependency
33+
if ARCH == 'x86_64':
34+
local_backends.extend(['AOCL-BLAS', 'imkl'])
35+
if ARCH == 'aarch64':
36+
local_backends.extend(['NVPL'])
37+
38+
default_component_specs = {'start_dir': '%(namelower)s-%(version)s'}
39+
sanity_check_all_components = True
40+
41+
# Also build and install LAPACKE. FlexiBLAS v3.5.0 mentions support for LAPACKE
42+
# and provides a fallback shared library, but does not include pkgconf files for it.
43+
# LAPACK version matches the one built by FlexiBLAS v3.5.0.
44+
components = [
45+
(name, version, {
46+
'source_urls':
47+
['https://gitlab.mpi-magdeburg.mpg.de/api/v4/projects/386/packages/generic/flexiblas-source/v%(version)s/'],
48+
'sources': [SOURCELOWER_TAR_GZ],
49+
'checksums': ['4f135fd3d4d844f221624b13734acd0d221a4347a19fa78604a6cbcaa3f477ea'],
50+
'backends': local_backends,
51+
}),
52+
('LAPACK', '3.12.1', {
53+
'easyblock': 'CMakeMake',
54+
'source_urls': ['https://github.com/Reference-LAPACK/lapack/archive/'],
55+
'sources': ['v%(version)s.tar.gz'],
56+
'checksums': ['2ca6407a001a474d4d4d35f3a61550156050c48016d949f0da0529c0aa052422'],
57+
'configopts': ('-DBUILD_SHARED_LIBS=ON -DUSE_OPTIMIZED_BLAS=ON -DLAPACKE=ON '
58+
'-DUSE_OPTIMIZED_LAPACK=ON -DBUILD_DEPRECATED=ON -DBUILD_INDEX64_EXT_API=OFF '
59+
'-DCMAKE_INSTALL_INCLUDEDIR=%(installdir)s/include/flexiblas'),
60+
'sanity_check_paths': {
61+
'files': ['lib/liblapacke.%s' % SHLIB_EXT, 'include/flexiblas/lapacke.h'],
62+
'dirs': [],
63+
},
64+
}),
65+
]
66+
67+
moduleclass = 'lib'
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
easyblock = 'ConfigureMake'
2+
3+
name = 'make'
4+
version = '4.4.1'
5+
6+
homepage = 'https://www.gnu.org/software/make/make.html'
7+
description = "GNU version of make utility"
8+
9+
toolchain = {'name': 'GCCcore', 'version': '15.2.0'}
10+
11+
source_urls = [GNU_SOURCE]
12+
sources = [SOURCE_TAR_GZ]
13+
checksums = ['dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3']
14+
15+
builddependencies = [('binutils', '2.45')]
16+
17+
postinstallcmds = ["cd %(installdir)s/bin && ln -s make gmake"]
18+
19+
sanity_check_paths = {
20+
'files': ['bin/gmake', 'bin/make'],
21+
'dirs': []
22+
}
23+
24+
sanity_check_commands = [
25+
"gmake --help",
26+
"make --help",
27+
]
28+
29+
moduleclass = 'devel'
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name = 'OpenBLAS'
2+
version = '0.3.31'
3+
4+
homepage = 'https://www.openblas.net/'
5+
description = "OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version."
6+
7+
toolchain = {'name': 'GCC', 'version': '15.2.0'}
8+
9+
source_urls = [
10+
# order matters, trying to download the large.tgz/timing.tgz LAPACK tarballs from GitHub causes trouble
11+
'https://www.netlib.org/lapack/timing/',
12+
'https://github.com/xianyi/OpenBLAS/archive/',
13+
]
14+
sources = ['v%(version)s.tar.gz']
15+
patches = [
16+
('large.tgz', '.'),
17+
('timing.tgz', '.'),
18+
'OpenBLAS-0.3.15_workaround-gcc-miscompilation.patch',
19+
'OpenBLAS-0.3.21_fix-order-vectorization.patch',
20+
]
21+
checksums = [
22+
{'v0.3.31.tar.gz': '6dd2a63ac9d32643b7cc636eab57bf4e57d0ed1fff926dfbc5d3d97f2d2be3a6'},
23+
{'large.tgz': 'f328d88b7fa97722f271d7d0cfea1c220e0f8e5ed5ff01d8ef1eb51d6f4243a1'},
24+
{'timing.tgz': '999c65f8ea8bd4eac7f1c7f3463d4946917afd20a997807300fe35d70122f3af'},
25+
{'OpenBLAS-0.3.15_workaround-gcc-miscompilation.patch':
26+
'e6b326fb8c4a8a6fd07741d9983c37a72c55c9ff9a4f74a80e1352ce5f975971'},
27+
{'OpenBLAS-0.3.21_fix-order-vectorization.patch':
28+
'08af834e5d60441fd35c128758ed9c092ba6887c829e0471ecd489079539047d'},
29+
]
30+
31+
builddependencies = [
32+
('make', '4.4.1'),
33+
# required by LAPACK test suite
34+
('Python', '3.14.2'),
35+
]
36+
37+
run_lapack_tests = True
38+
max_failing_lapack_tests_num_errors = 150
39+
40+
# extensive testing can be enabled by uncommenting the line below
41+
# runtest = 'PATH=.:$PATH lapack-timing'
42+
43+
moduleclass = 'numlib'

0 commit comments

Comments
 (0)