Skip to content
8 changes: 6 additions & 2 deletions config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -102,17 +102,21 @@ uenvs:
a100: 2023/a100
gh200: 2023/gh200-mpi
deploy:
# deploy to both the production and test clusters
eiger: [zen2]
"2024":
recipes:
zen2: 2024/mc
gh200: 2024/gh200-mpi
deploy:
# deploy to both the production and test clusters
santis: [gh200]
daint: [gh200]
eiger: [zen2]
"2025":
recipes:
gh200: 2025/gh200-mpi
deploy:
santis: [gh200]
daint: [gh200]
cp2k:
"2024.1":
recipes:
Expand Down
2 changes: 2 additions & 0 deletions recipes/gromacs/2025/gh200-mpi/compilers.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
gcc:
version: "14.2"
11 changes: 11 additions & 0 deletions recipes/gromacs/2025/gh200-mpi/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: gromacs-gh200
store: /user-environment
description: GPU-optimised GROMACS with and without PLUMED, and the toolchain to build your own GROMACS.
spack:
repo: https://github.com/spack/spack.git
commit: releases/v1.0
packages:
repo: https://github.com/spack/spack-packages.git
commit: releases/v2025.07
modules: false
version: 2
31 changes: 31 additions & 0 deletions recipes/gromacs/2025/gh200-mpi/environments.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
gromacs:
compiler: [gcc]
network:
mpi: cray-mpich@8.1.32 +cuda
unify: when_possible
specs:
- cmake
- cuda@12.9
- blas
- lapack
- hwloc
- fftw
- python@3.12
- gromacs@2025.3 +cuda +mpi +hwloc
- gromacs@2023.5 +plumed +cuda +hwloc

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@kanduri is there a good way to merge it into one and have a single version of GROMACS with PLUMED?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Yes there is. Once this one works reliably, I aim to use the post-install script to manually install PLUMED as the spack recipes aren't updated.

But current priority is to deliver a new GROMACS with CUDA 12.9 because some users need the newer CUDA for interfacing with PyTorch

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Given that this is the official GROMACS uenv for all users, I think it would be good to unify the recipe if there is a way to do things cleanly.

Once this one works reliably, I aim to use the post-install script to manually install PLUMED as the spack recipes aren't updated.

Why not just updating the Spack recipe ourselves? (I think I mentioned this before. I can look into it, I'll have to do it anyways for some PLUMED extensions I need to ship as part of PASC.)

But current priority is to deliver a new GROMACS with CUDA 12.9 because some users need the newer CUDA for interfacing with PyTorch

If this is an urgent request, maybe it can be serviced quickly via a uenv build in the service:: namespace, and do the official GROMACS uenv in an unified way?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

If this is an urgent request, maybe it can be serviced quickly via a uenv build in the service:: namespace, and do the official GROMACS uenv in an unified way?

This sounds like a good idea!

variants:
- +mpi
- +cuda
- cuda_arch=90a
views:
develop:
exclude: ['gromacs']
gromacs:
exclude: ['gromacs+plumed']
link: run
plumed:
exclude: ['gromacs@2025.3']
link: run
packages:
- perl

19 changes: 19 additions & 0 deletions recipes/gromacs/2025/gh200-mpi/extra/reframe.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
run:
features:
- gromacs
- cuda
- mpi
cc: gcc
cxx: g++
views:
- gromacs

build:
features:
- gromacs-dev
- cuda
- mpi
cc: gcc
cxx: g++
views:
- develop
23 changes: 23 additions & 0 deletions recipes/gromacs/2025/gh200-mpi/modules.yaml

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The configuration contains modules: false. If that is intended, this file is not necessary.

Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
modules:
# Paths to check when creating modules for all module sets
prefix_inspections:
bin:
- PATH
lib:
- LD_LIBRARY_PATH
lib64:
- LD_LIBRARY_PATH

default:
arch_folder: false
# Where to install modules
roots:
tcl: /user-environment/modules
tcl:
all:
autoload: none
hash_length: 0
exclude_implicits: true
exclude: []
projections:
all: '{name}/{version}'
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
--- a/cmake/gmxDetectCpu.cmake
+++ b/cmake/gmxDetectCpu.cmake
@@ -83,7 +83,7 @@ function(gmx_run_cpu_detection TYPE)
set(GCC_INLINE_ASM_DEFINE "-DGMX_X86_GCC_INLINE_ASM=0")
endif()

- set(_compile_definitions "${GCC_INLINE_ASM_DEFINE} -I${PROJECT_SOURCE_DIR}/src -DGMX_CPUINFO_STANDALONE ${GMX_STDLIB_CXX_FLAGS} -DGMX_TARGET_X86=${GMX_TARGET_X86_VALUE}")
+ set(_compile_definitions ${GCC_INLINE_ASM_DEFINE} -I${PROJECT_SOURCE_DIR}/src -DGMX_CPUINFO_STANDALONE ${GMX_STDLIB_CXX_FLAGS} -DGMX_TARGET_X86=${GMX_TARGET_X86_VALUE})
set(LINK_LIBRARIES "${GMX_STDLIB_LIBRARIES}")
try_compile(CPU_DETECTION_COMPILED
"${PROJECT_BINARY_DIR}"

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- a/cmake/gmxDetectSimd.cmake
+++ b/cmake/gmxDetectSimd.cmake
@@ -77,7 +77,7 @@ function(gmx_suggest_simd _suggested_simd)
else()
set(GMX_TARGET_X86_VALUE 0)
endif()
- set(_compile_definitions "${GCC_INLINE_ASM_DEFINE} -I${CMAKE_SOURCE_DIR}/src -DGMX_CPUINFO_STANDALONE ${GMX_STDLIB_CXX_FLAGS} -DGMX_TARGET_X86=${GMX_TARGET_X86_VALUE}")
+ set(_compile_definitions ${GCC_INLINE_ASM_DEFINE} -I${CMAKE_SOURCE_DIR}/src -DGMX_CPUINFO_STANDALONE ${GMX_STDLIB_CXX_FLAGS} -DGMX_TARGET_X86=${GMX_TARGET_X86_VALUE})

# Prepare a default suggestion
set(OUTPUT_SIMD "None")
Loading