From d253e699b65679e95e600c5067361ec075f9b503 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 6 Aug 2026 11:53:52 +0200 Subject: [PATCH 1/7] use half of the cores for rocBLAS --- eb_hooks.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eb_hooks.py b/eb_hooks.py index 6a3b5ba0..2a6ba9de 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -2391,6 +2391,9 @@ def set_maximum(parallel, max_value): CPU_TARGET_NEOVERSE_N1: (divide_by_factor, 2), CPU_TARGET_NEOVERSE_V1: (divide_by_factor, 2), }, + 'rocBLAS': { + '*': (divide_by_factor, 2), + }, 'ROCm-LLVM': { '*': (set_maximum, 12), }, From efc4394f2697849ada9ceb55f03f894fcc8d839d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 6 Aug 2026 11:55:36 +0200 Subject: [PATCH 2/7] add easystack --- .../2025.06/accel/amd/eessi-2025.06-eb-5.3.1-2025a.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 easystacks/software.eessi.io/2025.06/accel/amd/eessi-2025.06-eb-5.3.1-2025a.yml diff --git a/easystacks/software.eessi.io/2025.06/accel/amd/eessi-2025.06-eb-5.3.1-2025a.yml b/easystacks/software.eessi.io/2025.06/accel/amd/eessi-2025.06-eb-5.3.1-2025a.yml new file mode 100644 index 00000000..65560472 --- /dev/null +++ b/easystacks/software.eessi.io/2025.06/accel/amd/eessi-2025.06-eb-5.3.1-2025a.yml @@ -0,0 +1,2 @@ +easyconfigs: + - rocBLAS-4.4.0-rocm-compilers-19.0.0-ROCm-6.4.1.eb From 8447f74e000906cd8559bc0f6eb960a6342ed0ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Wed, 12 Aug 2026 10:09:17 +0200 Subject: [PATCH 3/7] use half of the cores for hipBLASLt instead of rocBLAS --- eb_hooks.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eb_hooks.py b/eb_hooks.py index ce3592fb..ec32d10b 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -2380,6 +2380,9 @@ def set_maximum(parallel, max_value): # Deucalion has 32GB HBM for 48 cores per node CPU_TARGET_A64FX: (divide_by_factor, 4), # software-specific limits + 'hipBLASLt': { + '*': (divide_by_factor, 2), + }, 'libxc': { '*': (divide_by_factor, 2), CPU_TARGET_A64FX: (set_maximum, 6), @@ -2407,9 +2410,6 @@ def set_maximum(parallel, max_value): CPU_TARGET_NEOVERSE_N1: (divide_by_factor, 2), CPU_TARGET_NEOVERSE_V1: (divide_by_factor, 2), }, - 'rocBLAS': { - '*': (divide_by_factor, 2), - }, 'ROCm-LLVM': { '*': (set_maximum, 12), }, From 1e9c8916b4c3da8a14a2f91b023c9dfb03f140e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Wed, 12 Aug 2026 11:01:38 +0200 Subject: [PATCH 4/7] use 1/4th of the cores for hipBLASLt --- eb_hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eb_hooks.py b/eb_hooks.py index ec32d10b..ef04266c 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -2381,7 +2381,7 @@ def set_maximum(parallel, max_value): CPU_TARGET_A64FX: (divide_by_factor, 4), # software-specific limits 'hipBLASLt': { - '*': (divide_by_factor, 2), + '*': (divide_by_factor, 4), }, 'libxc': { '*': (divide_by_factor, 2), From 823f3890e7fa4d867570f71d32a30db63a134be5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Wed, 12 Aug 2026 12:23:38 +0200 Subject: [PATCH 5/7] use 2 cores for hipBLASLt --- eb_hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eb_hooks.py b/eb_hooks.py index ef04266c..7ff7b9ec 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -2381,7 +2381,7 @@ def set_maximum(parallel, max_value): CPU_TARGET_A64FX: (divide_by_factor, 4), # software-specific limits 'hipBLASLt': { - '*': (divide_by_factor, 4), + '*': (set_maximum, 2), #(divide_by_factor, 4), }, 'libxc': { '*': (divide_by_factor, 2), From 0ce79fb6fe7fb80564ecc87a0c1deac465052ece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Wed, 12 Aug 2026 13:18:41 +0200 Subject: [PATCH 6/7] use single core for hipBLASLt --- eb_hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eb_hooks.py b/eb_hooks.py index 7ff7b9ec..e67a0524 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -2381,7 +2381,7 @@ def set_maximum(parallel, max_value): CPU_TARGET_A64FX: (divide_by_factor, 4), # software-specific limits 'hipBLASLt': { - '*': (set_maximum, 2), #(divide_by_factor, 4), + '*': (set_maximum, 1), #(divide_by_factor, 4), }, 'libxc': { '*': (divide_by_factor, 2), From c5e929a543f7a66de4d1309857ed37b804769242 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 17 Aug 2026 13:17:31 +0200 Subject: [PATCH 7/7] use hook to set -DTensile_CPU_THREADS=1 for hipBLASLt --- eb_hooks.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/eb_hooks.py b/eb_hooks.py index e67a0524..b641f75c 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -587,6 +587,13 @@ def parse_hook_cgal_toolchainopts_precise(ec, eprefix): raise EasyBuildError("CGAL-specific hook triggered for non-CGAL easyconfig?!") +def parse_hook_hipblaslt_single_core_build(ec, eprefix): + """Inject -DTensile_CPU_THREADS=1 to force Tensile to use a single core.""" + # todo: if this works, only do it for certain gfx targets + if ec.name == 'hipBLASLt': + ec.update('configopts', '-DTensile_CPU_THREADS=1') + + def parse_hook_fontconfig_add_fonts(ec, eprefix): """Inject --with-add-fonts configure option for fontconfig.""" if ec.name == 'fontconfig': @@ -2272,6 +2279,7 @@ def post_easyblock_hook(self, *args, **kwargs): 'fontconfig': parse_hook_fontconfig_add_fonts, 'FreeImage': parse_hook_freeimage_aarch64, 'grpcio': parse_hook_grpcio_zlib, + 'hipBLASLt': parse_hook_hipblaslt_single_core_build, 'maturin': parse_hook_maturin, 'Mesa': parse_hook_mesa_use_llvm_minimal, 'OpenBLAS': parse_hook_openblas_relax_lapack_tests_num_errors,