diff --git a/easyconfigs/GROMACS-2023.1_fix_tests_for_gmx_thread_mpi.patch b/easyconfigs/GROMACS-2023.1_fix_tests_for_gmx_thread_mpi.patch new file mode 100644 index 0000000..8860ace --- /dev/null +++ b/easyconfigs/GROMACS-2023.1_fix_tests_for_gmx_thread_mpi.patch @@ -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() diff --git a/easyconfigs/GROMACS-2023.1_set_omp_num_threads_env_for_ntomp_tests.patch b/easyconfigs/GROMACS-2023.1_set_omp_num_threads_env_for_ntomp_tests.patch new file mode 100644 index 0000000..ae22b6c --- /dev/null +++ b/easyconfigs/GROMACS-2023.1_set_omp_num_threads_env_for_ntomp_tests.patch @@ -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} $) + 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() diff --git a/easyconfigs/GROMACS-2024.3-foss-2023b-software-commit.eb b/easyconfigs/GROMACS-2024.3-foss-2023b-software-commit.eb new file mode 100644 index 0000000..bc9215d --- /dev/null +++ b/easyconfigs/GROMACS-2024.3-foss-2023b-software-commit.eb @@ -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 +# * Fotis Georgatos +# * George Tsouloupas +# * Kenneth Hoste +# * Adam Huffman +# * Ake Sandgren +# * J. Sassmannshausen +# * Dugan Witherick +# * Christoph Siegert +# 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' diff --git a/easystacks/gromacs-eb-4.9.4-dev.yml b/easystacks/gromacs-eb-4.9.4-dev.yml new file mode 100644 index 0000000..2dc2305 --- /dev/null +++ b/easystacks/gromacs-eb-4.9.4-dev.yml @@ -0,0 +1,4 @@ +easyconfigs: + - GROMACS-2024.3-foss-2023b-software-commit.eb: + options: + software-commit: d0f934abfd1394621c40858a2c2dd9123451df4e # release 2024.3