Skip to content
Merged
68 changes: 68 additions & 0 deletions easyconfigs/GROMACS-2023.1_fix_tests_for_gmx_thread_mpi.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
Make testing of GMX_THREAD_MPI work.
Don't drop relevant PYTHONPATH and LD_LIBRARY_PATH settings.
Make sure OMP_NUM_THREADS is not set so it doesn't fail when -ntomp is set.
Don't use mpiexec for GMX_THREAD_MPI runs.

Åke Sandgren, 2023-06-27
diff -ru gromacs-2023.1.orig/python_packaging/gmxapi/test/CMakeLists.txt gromacs-2023.1/python_packaging/gmxapi/test/CMakeLists.txt
--- gromacs-2023.1.orig/python_packaging/gmxapi/test/CMakeLists.txt 2023-04-21 15:12:07.000000000 +0200
+++ gromacs-2023.1/python_packaging/gmxapi/test/CMakeLists.txt 2023-06-27 08:08:49.967184214 +0200
@@ -61,7 +61,7 @@
endif()

add_custom_target(gmxapi_pytest
- COMMAND ${PYTHON_EXECUTABLE} -m pytest
+ COMMAND ${CMAKE_COMMAND} -E env --unset=OMP_NUM_THREADS ${PYTHON_EXECUTABLE} -m pytest
-rA -l --log-cli-level ERROR ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS _gmxapi
WORKING_DIRECTORY ${GMXAPI_PYTHON_STAGING_DIR})
@@ -70,6 +70,7 @@

add_dependencies(check gmxapi_pytest)

+if (GMX_MPI)
if(MPIEXEC_EXECUTABLE)
if(NOT GMXAPI_MPI4PY_FOUND)
if (MPI_C_COMPILER)
@@ -107,3 +108,4 @@

add_dependencies(check gmxapi_pytest_mpi)
endif()
+endif()
diff -ru gromacs-2023.1.orig/python_packaging/sample_restraint/tests/CMakeGROMACS.txt gromacs-2023.1/python_packaging/sample_restraint/tests/CMakeGROMACS.txt
--- gromacs-2023.1.orig/python_packaging/sample_restraint/tests/CMakeGROMACS.txt 2023-04-21 15:12:07.000000000 +0200
+++ gromacs-2023.1/python_packaging/sample_restraint/tests/CMakeGROMACS.txt 2023-06-27 09:10:31.134866196 +0200
@@ -21,15 +21,18 @@
get_target_property(PLUGINPATH gmxapi_extension LIBRARY_OUTPUT_DIRECTORY)
add_custom_target(gmxapi_extension_pytest
COMMAND ${CMAKE_COMMAND}
- -E env PYTHONPATH=${GMXAPI_PYTHON_STAGING_DIR}:${PLUGINPATH}
+ -E env --unset=OMP_NUM_THREADS LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH} PYTHONPATH=$ENV{PYTHONPATH}:${GMXAPI_PYTHON_STAGING_DIR}:${PLUGINPATH}
${PYTHON_EXECUTABLE} -m pytest --log-cli-level ERROR
${CMAKE_CURRENT_SOURCE_DIR}
- DEPENDS gmxapi_extension _gmxapi)
+ DEPENDS gmxapi_extension _gmxapi
+ WORKING_DIRECTORY ${GMXAPI_PYTHON_STAGING_DIR})
+
# The current test fixtures require the `gmx` tool-wrapper executable.
add_dependencies(gmxapi_extension_pytest gmx)

add_dependencies(check gmxapi_extension_pytest)

+if (GMX_MPI)
if(MPIEXEC_EXECUTABLE)
if(NOT GMXAPI_MPI4PY_FOUND)
if (MPI_C_COMPILER)
@@ -58,10 +61,11 @@
# (https://www.open-mpi.org/doc/v3.0/man1/mpiexec.1.php)
add_custom_target(
gmxapi_extension_pytest_mpi
- COMMAND ${MPIEXEC_EXECUTABLE} -n 4 -x PYTHONPATH=${GMXAPI_PYTHON_STAGING_DIR}:${PLUGINPATH}
+ COMMAND ${MPIEXEC_EXECUTABLE} -n 4 -x PYTHONPATH=$ENV{PYTHONPATH}:${GMXAPI_PYTHON_STAGING_DIR}:${PLUGINPATH}
${PYTHON_EXECUTABLE} -m mpi4py -m pytest -x --log-cli-level ERROR ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS gmxapi_extension _gmxapi gmx
)

add_dependencies(check gmxapi_extension_pytest_mpi)
endif()
+endif()
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Make sure env OMP_NUM_THREADS matches -ntomp argument during testing.

Åke Sandgren, 2023-06-22
diff -ru gromacs-2023.1.orig/src/testutils/TestMacros.cmake gromacs-2023.1/src/testutils/TestMacros.cmake
--- gromacs-2023.1.orig/src/testutils/TestMacros.cmake 2023-04-21 15:12:08.000000000 +0200
+++ gromacs-2023.1/src/testutils/TestMacros.cmake 2023-06-22 16:29:28.338270785 +0200
@@ -288,6 +288,7 @@
endif ()
set(_cmd ${_prefix_cmd} $<TARGET_FILE:${EXENAME}>)
if (ARG_OPENMP_THREADS)
+ set(_cmd "env" "OMP_NUM_THREADS=${ARG_OPENMP_THREADS}" ${_cmd})
if (GMX_OPENMP)
list(APPEND _cmd -ntomp ${ARG_OPENMP_THREADS})
endif()
79 changes: 79 additions & 0 deletions easyconfigs/GROMACS-2024.3-foss-2023b-software-commit.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
#
# Copyright:: Copyright 2012-2016 University of Luxembourg / LCSB, Cyprus Institute / CaSToRC,
# Ghent University / The Francis Crick Institute
# Authors::
# * Wiktor Jurkowski <wiktor.jurkowski@gmail.com>
# * Fotis Georgatos <fotis@cern.ch>
# * George Tsouloupas <g.tsouloupas@cyi.ac.cy>
# * Kenneth Hoste <kenneth.hoste@ugent.be>
# * Adam Huffman <adam.huffman@crick.ac.uk>
# * Ake Sandgren <ake.sandgren@hpc2n.umu.se>
# * J. Sassmannshausen <Crick HPC team>
# * Dugan Witherick <dugan.witherick@warwick.ac.uk>
# * Christoph Siegert <christoph.siegert@uni-leipzig.de>
# License:: MIT/GPL

name = 'GROMACS'
version = '2024.3'
versionsuffix = '-%(software_commit)s'

homepage = 'https://www.gromacs.org'
description = """
GROMACS is a versatile package to perform molecular dynamics, i.e. simulate the
Newtonian equations of motion for systems with hundreds to millions of
particles.

This is a CPU only build, containing both MPI and threadMPI binaries
for both single and double precision.

It also contains the gmxapi extension for the single precision MPI build.
"""

toolchain = {'name': 'foss', 'version': '2023b'}
toolchainopts = {'openmp': True, 'usempi': True}

github_account = 'gromacs'
source_urls = ['https://github.com/%(github_account)s/%(name)s/archive/']


sources = ['%(software_commit)s.tar.gz']

patches = [
'GROMACS-2023.1_set_omp_num_threads_env_for_ntomp_tests.patch',
'GROMACS-2023.1_fix_tests_for_gmx_thread_mpi.patch',
]

builddependencies = [
('CMake', '3.27.6'),
('scikit-build-core', '0.9.3'),
]

dependencies = [
('Python', '3.11.5'),
('SciPy-bundle', '2023.11'),
('networkx', '3.2.1'),
('mpi4py', '3.1.5'),
]

exts_defaultclass = 'PythonPackage'

exts_default_options = {
'source_urls': [PYPI_SOURCE],
'use_pip': True,
'download_dep_fail': True,
'sanity_pip_check': True,
}

exts_list = [
('gmxapi', '0.4.2', {
'preinstallopts': 'export CMAKE_ARGS="-Dgmxapi_ROOT=%(installdir)s ' +
'-C %(installdir)s/share/cmake/gromacs_mpi/gromacs-hints_mpi.cmake" && ',
}),
]

modextrapaths = {
'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages',
}

moduleclass = 'bio'
4 changes: 4 additions & 0 deletions easystacks/gromacs-eb-4.9.4-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
easyconfigs:
- GROMACS-2024.3-foss-2023b-software-commit.eb:
options:
software-commit: d0f934abfd1394621c40858a2c2dd9123451df4e # release 2024.3