From 5e25d1bd323bd7d677b9ca441dac4fa321709a54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 8 May 2026 12:22:56 +0200 Subject: [PATCH 1/3] add hook for building GROMACS on NVIDIA Grace CPUs with hwloc support --- eb_hooks.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/eb_hooks.py b/eb_hooks.py index 0514bb18..8ef10832 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -981,6 +981,18 @@ def pre_prepare_hook_cudnn(self, *args, **kwargs): update_build_option('cuda_compute_capabilities', updated_cuda_cc) +def pre_prepare_hook_gromacs(self, *args, **kwargs): + """ + Solve GROMACS build issue on NVIDIA Grace CPUs when hwloc support is enabled. + """ + cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR') + if self.name == 'GROMACS': + if self.version < '2026.3' and cpu_target == CPU_TARGET_NVIDIA_GRACE: + os.environ['HWLOC_KEEP_NVIDIA_GPU_NUMA_NODES'] = '0' + else: + raise EasyBuildError("GROMACS-specific hook triggered for non-GROMACS easyconfig?!") + + def pre_prepare_hook_highway_handle_test_compilation_issues(self, *args, **kwargs): """ Solve issues with compiling or running the tests on both @@ -2041,6 +2053,7 @@ def post_easyblock_hook(self, *args, **kwargs): PRE_PREPARE_HOOKS = { 'cuDNN': pre_prepare_hook_cudnn, + 'GROMACS': pre_prepare_hook_gromacs, 'Highway': pre_prepare_hook_highway_handle_test_compilation_issues, 'LLVM': pre_prepare_hook_llvm_a64fx, 'PyTorch': pre_prepare_hook_pytorch, From ce6b77db19cfb615e4129f88d2b85d57979190b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 8 May 2026 12:24:32 +0200 Subject: [PATCH 2/3] add easystack --- .../software.eessi.io/2025.06/eessi-2025.06-eb-5.3.0.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 easystacks/software.eessi.io/2025.06/eessi-2025.06-eb-5.3.0.yml diff --git a/easystacks/software.eessi.io/2025.06/eessi-2025.06-eb-5.3.0.yml b/easystacks/software.eessi.io/2025.06/eessi-2025.06-eb-5.3.0.yml new file mode 100644 index 00000000..2eeddcc8 --- /dev/null +++ b/easystacks/software.eessi.io/2025.06/eessi-2025.06-eb-5.3.0.yml @@ -0,0 +1,8 @@ +easyconfigs: + - GROMACS-2026.2-foss-2025b.eb: + options: + # see https://github.com/easybuilders/easybuild-easyconfigs/pull/25879 + from-commit: 9320dfe8ae6f45d37edd0ef52be37e7d3668d298 + # see https://github.com/easybuilders/easybuild-easyblocks/pull/3531 + include-easyblocks-from-commit: cfb6f93bfae8bef5d8996ae6696defcafbf0d4ad + From e7484c8d135591d0573178f9c27fdc8191296ee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 8 May 2026 20:21:56 +0200 Subject: [PATCH 3/3] use pre-test hook instead of pre-prepare hook for GROMACS --- eb_hooks.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/eb_hooks.py b/eb_hooks.py index 8ef10832..fdcaa112 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -981,18 +981,6 @@ def pre_prepare_hook_cudnn(self, *args, **kwargs): update_build_option('cuda_compute_capabilities', updated_cuda_cc) -def pre_prepare_hook_gromacs(self, *args, **kwargs): - """ - Solve GROMACS build issue on NVIDIA Grace CPUs when hwloc support is enabled. - """ - cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR') - if self.name == 'GROMACS': - if self.version < '2026.3' and cpu_target == CPU_TARGET_NVIDIA_GRACE: - os.environ['HWLOC_KEEP_NVIDIA_GPU_NUMA_NODES'] = '0' - else: - raise EasyBuildError("GROMACS-specific hook triggered for non-GROMACS easyconfig?!") - - def pre_prepare_hook_highway_handle_test_compilation_issues(self, *args, **kwargs): """ Solve issues with compiling or running the tests on both @@ -1515,6 +1503,19 @@ def pre_test_hook_exclude_failing_test_Highway(self, *args, **kwargs): self.cfg['runtest'] += ' ARGS="-E TestAllSumOfLanes"' +def pre_test_hook_gromacs(self, *args, **kwargs): + """ + Solve GROMACS build issue on NVIDIA Grace CPUs when hwloc support is enabled. + """ + cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR') + if self.name == 'GROMACS': + if self.version < '2026.3' and cpu_target == CPU_TARGET_NVIDIA_GRACE: + self.cfg['pretestopts'] = 'export HWLOC_KEEP_NVIDIA_GPU_NUMA_NODES=0 && ' +# os.environ['HWLOC_KEEP_NVIDIA_GPU_NUMA_NODES'] = '0' + else: + raise EasyBuildError("GROMACS-specific hook triggered for non-GROMACS easyconfig?!") + + def pre_test_hook_ignore_failing_tests_ESPResSo(self, *args, **kwargs): """ Pre-test hook for ESPResSo: skip failing tests, tests frequently timeout due to known bugs in ESPResSo v4.2.1 @@ -2053,7 +2054,6 @@ def post_easyblock_hook(self, *args, **kwargs): PRE_PREPARE_HOOKS = { 'cuDNN': pre_prepare_hook_cudnn, - 'GROMACS': pre_prepare_hook_gromacs, 'Highway': pre_prepare_hook_highway_handle_test_compilation_issues, 'LLVM': pre_prepare_hook_llvm_a64fx, 'PyTorch': pre_prepare_hook_pytorch, @@ -2092,6 +2092,7 @@ def post_easyblock_hook(self, *args, **kwargs): PRE_TEST_HOOKS = { 'ESPResSo': pre_test_hook_ignore_failing_tests_ESPResSo, 'FFTW.MPI': pre_test_hook_ignore_failing_tests_FFTWMPI, + 'GROMACS': pre_test_hook_gromacs, 'Highway': pre_test_hook_exclude_failing_test_Highway, 'LAMMPS': pre_test_hook_lammps_ignore_failure_arm_generic, 'SciPy-bundle': pre_test_hook_ignore_failing_tests_SciPybundle,