From: Paul Bauer Date: Wed, 4 Mar 2020 07:05:31 +0000 (+0100) Subject: Merge branch release-2020 into master X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=commitdiff_plain;h=7bb193a5119321e7969229f612b2973497b185a6;p=alexxy%2Fgromacs.git Merge branch release-2020 into master Resolved Conflicts: .gitlab-ci.yml admin/builds/gromacs.py cmake/gmxVersionInfo.cmake src/gromacs/ewald/pme.cpp src/gromacs/gmxana/gmx_disre.cpp src/gromacs/gpu_utils/cudautils.cu src/gromacs/gpu_utils/gpu_utils.cu src/gromacs/hardware/gpu_hw_info.h src/gromacs/listed_forces/orires.cpp src/gromacs/mdlib/forcerec.cpp src/gromacs/mdlib/forcerec.h src/gromacs/mdlib/md_support.cpp src/gromacs/mdlib/md_support.h src/gromacs/mdlib/mdoutf.cpp src/gromacs/mdlib/mdoutf.h src/gromacs/mdlib/sim_util.cpp src/gromacs/mdlib/vsite.cpp src/gromacs/mdlib/vsite.h src/gromacs/mdrun/minimize.cpp src/gromacs/modularsimulator/forceelement.cpp src/gromacs/modularsimulator/shellfcelement.cpp src/gromacs/nbnxm/kernels_reference/kernel_ref.h src/programs/mdrun/tests/CMakeLists.txt Change-Id: Ic95c6b35c8a7b7bd0b9c3fa0833136d32bb74242 --- 7bb193a5119321e7969229f612b2973497b185a6 diff --cc .gitlab-ci.yml index 91b693e153,fd58a9b844..ae0f97fc46 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@@ -76,94 -76,104 +76,104 @@@ stages # Templates for configuration stage .configure-gcc: - extends: - - .configure-extends-template - - .gcc-before-script-template - - .build-gcc-template + extends: + - .configure-extends-template + - .gcc-before-script-template + - .build-gcc-template .configure-gcc-release: - extends: - - .configure-release-extends-template - - .gcc-before-script-template - - .build-gcc-template + extends: + - .configure-release-extends-template + - .gcc-before-script-template + - .build-gcc-template + .configure-gcc-cuda: + extends: + - .configure-gcc + - .cuda-template + .configure-clang: - extends: - - .configure-extends-template - - .clang-before-script-template - - .build-clang-template + extends: + - .configure-extends-template + - .clang-before-script-template + - .build-clang-template .configure-clang-release: - extends: - - .configure-release-extends-template - - .clang-before-script-template - - .build-clang-template + extends: + - .configure-release-extends-template + - .clang-before-script-template + - .build-clang-template .configure-docs: - extends: - - .configure-extends-template - - .configure-docs-template - - .documentation-before-script-template + extends: + - .configure-extends-template + - .configure-docs-template + - .documentation-before-script-template .configure-docs-release: - extends: - - .configure-extends-template - - .configure-docs-release-template - - .documentation-before-script-template + extends: + - .configure-extends-template + - .configure-docs-release-template + - .documentation-before-script-template # Templates for build stage .build-archive: - extends: - - .build-extends-template - - .documentation-before-script-template - - .build-docs-binary-template - - .archive-build-template + extends: + - .build-extends-template + - .documentation-before-script-template + - .build-docs-binary-template + - .archive-build-template .build-gcc: - extends: - - .build-extends-template - - .gcc-before-script-template - - .build-gcc-template + extends: + - .build-extends-template + - .gcc-before-script-template + - .build-gcc-template .build-clang: - extends: - - .build-extends-template - - .clang-before-script-template - - .build-clang-template + extends: + - .build-extends-template + - .clang-before-script-template + - .build-clang-template .build-docs-binary: - extends: - - .build-extends-template - - .build-cache-template - - .build-docs-binary-template - - .documentation-before-script-template + extends: + - .build-extends-template + - .build-cache-template + - .build-docs-binary-template + - .documentation-before-script-template .build-docs-webpage: - extends: - - .binary-build-template - - .variables-template - - .tags-template - - .no-cache-template - - .build-docs-webpage-template - - .documentation-before-script-template + extends: + - .binary-build-template + - .variables-template + - .tags-template + - .no-cache-template + - .build-docs-webpage-template + - .documentation-before-script-template - .build-cuda-gcc: - extends: - - .build-gcc - - .build-cuda-template + .build-gcc-cuda: + extends: + - .build-gcc + - .cuda-template # Templates for test stage .test-gcc: - extends: - - .test-extends-template - - .gcc-before-script-template - - .test-gcc-template + extends: + - .test-extends-template + - .gcc-before-script-template + - .test-gcc-template + .test-gcc-cuda: + extends: + - .test-gcc + - .cuda-template + .test-clang: - extends: - - .test-extends-template - - .clang-before-script-template - - .test-clang-template + extends: + - .test-extends-template + - .clang-before-script-template + - .test-clang-template # Special job to package regressiontest files and have them available for testing # Runs during pre-build @@@ -196,112 -206,123 +206,123 @@@ simple-build # Jobs running in first pre-build stage configure-gcc-7: - extends: - - .configure-gcc - - .gcc7-template - needs: - - job: simple-build - artifacts: false + extends: + - .configure-gcc + - .gcc7-template + needs: + - job: simple-build + artifacts: false + variables: + COMPILER_MAJOR_VERSION: 7 + except: variables: - COMPILER_MAJOR_VERSION: 7 - except: - variables: - - $GROMACS_RELEASE + - $GROMACS_RELEASE configure-gcc-7-gmxapi: - extends: - - .configure-gcc - - .configure-gmxapi-template - - .gcc7-template - needs: - - job: simple-build - artifacts: false + extends: + - .configure-gcc + - .configure-gmxapi-template + - .gcc7-template + needs: + - job: simple-build + artifacts: false + variables: + COMPILER_MAJOR_VERSION: 7 + except: variables: - COMPILER_MAJOR_VERSION: 7 - except: - variables: - - $GROMACS_RELEASE + - $GROMACS_RELEASE configure-gcc-7-double: - extends: - - .configure-gcc - - .gcc7-template - needs: - - job: simple-build - artifacts: false + extends: + - .configure-gcc + - .gcc7-template + needs: + - job: simple-build + artifacts: false + variables: + COMPILER_MAJOR_VERSION: 7 + CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON + except: variables: - COMPILER_MAJOR_VERSION: 7 - CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON - except: - variables: - - $GROMACS_RELEASE + - $GROMACS_RELEASE configure-gcc-8: - extends: - - .configure-gcc - - .gcc8-template - needs: - - job: simple-build - artifacts: false + extends: + - .configure-gcc + - .gcc8-template + needs: + - job: simple-build + artifacts: false + variables: + COMPILER_MAJOR_VERSION: 8 + except: variables: - COMPILER_MAJOR_VERSION: 8 - except: - variables: - - $GROMACS_RELEASE + - $GROMACS_RELEASE + configure-gcc-8-cuda-10.2: + extends: + - .configure-gcc-cuda + - .gcc-8-cuda-10.2-template + needs: + - job: simple-build + artifacts: false + except: + variables: + - $GROMACS_RELEASE + configure-gcc-7-simd-sse41: - extends: - - .configure-gcc - - .gcc7-template - needs: - - job: simple-build - artifacts: false + extends: + - .configure-gcc + - .gcc7-template + needs: + - job: simple-build + artifacts: false + variables: + COMPILER_MAJOR_VERSION: 7 + CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1" + except: variables: - COMPILER_MAJOR_VERSION: 7 - CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1" - except: - variables: - - $GROMACS_RELEASE + - $GROMACS_RELEASE configure-clang-7: - extends: - - .configure-clang - - .clang7-template - needs: - - job: simple-build - artifacts: false + extends: + - .configure-clang + - .clang7-template + needs: + - job: simple-build + artifacts: false + variables: + COMPILER_MAJOR_VERSION: 7 + except: variables: - COMPILER_MAJOR_VERSION: 7 - except: - variables: - - $GROMACS_RELEASE + - $GROMACS_RELEASE configure-clang-7-gmxapi: - extends: - - .configure-clang - - .configure-gmxapi-template - - .clang7-template - needs: - - job: simple-build - artifacts: false + extends: + - .configure-clang + - .configure-gmxapi-template + - .clang7-template + needs: + - job: simple-build + artifacts: false + variables: + COMPILER_MAJOR_VERSION: 7 + except: variables: - COMPILER_MAJOR_VERSION: 7 - except: - variables: - - $GROMACS_RELEASE + - $GROMACS_RELEASE configure-clang-8: - extends: - - .configure-clang - - .clang8-template - needs: - - job: simple-build - artifacts: false + extends: + - .configure-clang + - .clang8-template + needs: + - job: simple-build + artifacts: false + variables: + COMPILER_MAJOR_VERSION: 8 + except: variables: - COMPILER_MAJOR_VERSION: 8 - except: - variables: - - $GROMACS_RELEASE + - $GROMACS_RELEASE # For version of clang before 7, we need to always provide the full version # Use something like this instead in the download script: @@@ -416,41 -437,265 +437,260 @@@ build-gcc-7 build-gcc-7-gmxapi: - extends: - - .build-gcc - - .gmxapi-extra-installs - - .gcc7-template - needs: - - job: simple-build - artifacts: false - - job: configure-gcc-7-gmxapi - artifacts: true - except: - variables: - - $GROMACS_RELEASE + extends: + - .build-gcc + - .gmxapi-extra-installs + - .gcc7-template + needs: + - job: simple-build + artifacts: false + - job: configure-gcc-7-gmxapi + artifacts: true + except: + variables: + - $GROMACS_RELEASE build-gcc-7-double: - extends: - - .build-gcc - - .gcc7-template - needs: - - job: simple-build - artifacts: false - - job: configure-gcc-7-double - artifacts: true - except: - variables: - - $GROMACS_RELEASE + extends: + - .build-gcc + - .gcc7-template + needs: + - job: simple-build + artifacts: false + - job: configure-gcc-7-double + artifacts: true + except: + variables: + - $GROMACS_RELEASE build-gcc-8: + extends: + - .build-gcc + - .gcc8-template + needs: + - job: simple-build + artifacts: false + - job: configure-gcc-8 + artifacts: true + except: + variables: + - $GROMACS_RELEASE + + build-gcc-8-cuda-10.2: + extends: + - .build-gcc-cuda + - .gcc-8-cuda-10.2-template + needs: + - job: simple-build + artifacts: false + - job: configure-gcc-8-cuda-10.2 + artifacts: true + except: + variables: + - $GROMACS_RELEASE + + build-gcc-7-simd-sse41: + extends: + - .build-gcc + - .gcc7-template + needs: + - job: simple-build + artifacts: false + - job: configure-gcc-7-simd-sse41 + artifacts: true + except: + variables: + - $GROMACS_RELEASE + + build-clang-7: + extends: + - .build-clang + - .clang7-template + needs: + - job: simple-build + artifacts: false + - job: configure-clang-7 + artifacts: true + except: + variables: + - $GROMACS_RELEASE + + build-clang-7-gmxapi: + extends: + - .build-clang + - .gmxapi-extra-installs + - .clang7-template + needs: + - job: simple-build + artifacts: false + - job: configure-clang-7-gmxapi + artifacts: true + except: + variables: + - $GROMACS_RELEASE + + build-clang-8: + extends: + - .build-clang + - .clang8-template + needs: + - job: simple-build + artifacts: false + - job: configure-clang-8 + artifacts: true + except: + variables: + - $GROMACS_RELEASE + + build-clang-6: + extends: + - .build-clang + - .clang6-template + needs: + - job: simple-build + artifacts: false + - job: configure-clang-6 + artifacts: true + except: + variables: + - $GROMACS_RELEASE + + # Jobs running during test stage + test-gcc-7: + extends: + - .test-gcc + - .gcc7-template + needs: + - job: simple-build + artifacts: false + - job: build-gcc-7 + except: + variables: + - $GROMACS_RELEASE + + test-gcc-7-gmxapi: + extends: + - .test-gcc + - .gmxapi-extra-installs + - .gcc7-template + needs: + - job: simple-build + artifacts: false + - job: build-gcc-7-gmxapi + except: + variables: + - $GROMACS_RELEASE + + test-gcc-7-double: + extends: + - .test-gcc + - .gcc7-template + needs: + - job: simple-build + artifacts: false + - job: build-gcc-7-double + except: + variables: + - $GROMACS_RELEASE + + test-gcc-8: + extends: + - .test-gcc + - .gcc8-template + needs: + - job: simple-build + artifacts: false + - job: build-gcc-8 + except: + variables: + - $GROMACS_RELEASE + + test-gcc-8-cuda-10.2: + variables: + KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" + KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 + extends: + - .test-gcc-cuda + - .gcc-8-cuda-10.2-template + needs: + - job: simple-build + artifacts: false + - job: build-gcc-8-cuda-10.2 + except: + variables: + - $GROMACS_RELEASE + + test-gcc-7-simd-sse41: + extends: + - .test-gcc + - .gcc7-template + needs: + - job: simple-build + artifacts: false + - job: build-gcc-7-simd-sse41 + except: + variables: + - $GROMACS_RELEASE + + test-clang-7: + extends: + - .test-clang + - .clang7-template + needs: + - job: simple-build + artifacts: false + - job: build-clang-7 + except: + variables: + - $GROMACS_RELEASE + + test-clang-7-gmxapi: + extends: + - .test-clang + - .gmxapi-extra-installs + - .clang7-template + needs: + - job: simple-build + artifacts: false + - job: build-clang-7-gmxapi + except: + variables: + - $GROMACS_RELEASE + + test-clang-8: + extends: + - .test-clang + - .clang8-template + needs: + - job: simple-build + artifacts: false + - job: build-clang-8 + except: + variables: + - $GROMACS_RELEASE + + test-clang-6: + extends: + - .test-clang + - .clang6-template + needs: + - job: simple-build + artifacts: false + - job: build-clang-6 + except: + variables: + - $GROMACS_RELEASE + + # Jobs running in source checking stage + build-clang-tidy: extends: - - .build-clang - - .clang7-template - stage: source-check + - .build-gcc + - .gcc8-template needs: - job: simple-build - artifacts: false - - job: configure-clang-tidy + artifacts: false + - job: configure-gcc-8 artifacts: true - variables: - BUILD_DIR: build-clang-tidy - COMPILER_MAJOR_VERSION: 7 - EXTRA_INSTALLS: clang-tidy-$COMPILER_MAJOR_VERSION except: variables: - $GROMACS_RELEASE diff --cc admin/builds/gromacs.py index d78c29c13e,cb9d78e3ba..7dce328844 --- a/admin/builds/gromacs.py +++ b/admin/builds/gromacs.py @@@ -1,8 -1,7 +1,8 @@@ # # This file is part of the GROMACS molecular simulation package. # - # Copyright (c) 2015,2016,2017,2018,2019,2020, by the GROMACS development team. -# Copyright (c) 2015,2016,2017,2018,2019,2020, by the GROMACS development team, led by ++# Copyright (c) 2015,2016,2017,2018,2019,2020, The GROMACS development team. +# Copyright (c) 2020, by the GROMACS development team, led by # Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, # and including many others, as listed in the AUTHORS file in the # top-level source directory and at http://www.gromacs.org. diff --cc docs/CMakeLists.txt index d900ca80b4,a671ea5dcd..932ba838fb --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@@ -364,16 -361,8 +364,17 @@@ if (SPHINX_FOUND how-to/visualize.rst install-guide/index.rst release-notes/index.rst + release-notes/2021/major/highlights.rst + release-notes/2021/major/features.rst + release-notes/2021/major/performance.rst + release-notes/2021/major/tools.rst + release-notes/2021/major/bugs-fixed.rst + release-notes/2021/major/removed-functionality.rst + release-notes/2021/major/deprecated-functionality.rst + release-notes/2021/major/portability.rst + release-notes/2021/major/miscellaneous.rst release-notes/2020/2020.1.rst + release-notes/2020/2020.2.rst release-notes/2020/major/highlights.rst release-notes/2020/major/features.rst release-notes/2020/major/performance.rst diff --cc src/gromacs/ewald/pme_gpu_internal.cpp index 78bf617dbe,e2c3059774..255f273fde --- a/src/gromacs/ewald/pme_gpu_internal.cpp +++ b/src/gromacs/ewald/pme_gpu_internal.cpp @@@ -1013,27 -1034,9 +1012,28 @@@ void pme_gpu_reinit_atoms(PmeGpu* pmeGp pme_gpu_realloc_spline_data(pmeGpu); pme_gpu_realloc_grid_indices(pmeGpu); } + pme_gpu_select_best_performing_pme_spreadgather_kernels(pmeGpu); } +/*! \internal \brief + * Returns raw timing event from the corresponding GpuRegionTimer (if timings are enabled). + * In CUDA result can be nullptr stub, per GpuRegionTimer implementation. + * + * \param[in] pmeGpu The PME GPU data structure. + * \param[in] PMEStageId The PME GPU stage gtPME_ index from the enum in src/gromacs/timing/gpu_timing.h + */ +static CommandEvent* pme_gpu_fetch_timing_event(const PmeGpu* pmeGpu, size_t PMEStageId) +{ + CommandEvent* timingEvent = nullptr; + if (pme_gpu_timings_enabled(pmeGpu)) + { + GMX_ASSERT(PMEStageId < pmeGpu->archSpecific->timingEvents.size(), + "Wrong PME GPU timing event index"); + timingEvent = pmeGpu->archSpecific->timingEvents[PMEStageId].fetchNextEvent(); + } + return timingEvent; +} + void pme_gpu_3dfft(const PmeGpu* pmeGpu, gmx_fft_direction dir, int grid_index) { int timerId = (dir == GMX_FFT_REAL_TO_COMPLEX) ? gtPME_FFT_R2C : gtPME_FFT_C2R; diff --cc src/gromacs/gmxana/gmx_disre.cpp index 70fa6e5480,608677f69f..046573194a --- a/src/gromacs/gmxana/gmx_disre.cpp +++ b/src/gromacs/gmxana/gmx_disre.cpp @@@ -3,8 -3,7 +3,8 @@@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017,2018,2019,2020, by the GROMACS development team, led by ++ * Copyright (c) 2013,2014,2015,2016,2017 The GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. diff --cc src/gromacs/gpu_utils/cudautils.cu index 8574d7ef8d,209b00a95a..1442bf47c2 --- a/src/gromacs/gpu_utils/cudautils.cu +++ b/src/gromacs/gpu_utils/cudautils.cu @@@ -1,8 -1,7 +1,8 @@@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2014,2015,2016,2017 by the GROMACS development team. - * Copyright (c) 2012,2014,2015,2016,2017,2018,2019,2020, by the GROMACS development team, led by ++ * Copyright (c) 2012,2014,2015,2016,2017 The GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. diff --cc src/gromacs/hardware/gpu_hw_info.h index 98f87760cd,a8b3144ee5..8952ca4f87 --- a/src/gromacs/hardware/gpu_hw_info.h +++ b/src/gromacs/hardware/gpu_hw_info.h @@@ -1,8 -1,7 +1,8 @@@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013,2014,2015,2017 by the GROMACS development team. - * Copyright (c) 2012,2013,2014,2015,2017,2018,2019,2020, by the GROMACS development team, led by ++ * Copyright (c) 2012,2013,2014,2015,2017 The GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. diff --cc src/gromacs/listed_forces/orires.cpp index 63f09ba0cf,2867c07a15..d9c58c9574 --- a/src/gromacs/listed_forces/orires.cpp +++ b/src/gromacs/listed_forces/orires.cpp @@@ -3,8 -3,7 +3,8 @@@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017,2018,2020, by the GROMACS development team, led by ++ * Copyright (c) 2013,2014,2015,2016,2017 The GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. diff --cc src/gromacs/mdlib/forcerec.h index cba9875e48,39e5093af9..c7f38cb5f5 --- a/src/gromacs/mdlib/forcerec.h +++ b/src/gromacs/mdlib/forcerec.h @@@ -3,8 -3,7 +3,8 @@@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team. - * Copyright (c) 2013-2020, by the GROMACS development team, led by ++ * Copyright (c) 2013,2014,2015,2016,2017 The GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@@ -114,8 -120,24 +114,19 @@@ void init_forcerec(FILE const char* tabfn, const char* tabpfn, gmx::ArrayRef tabbfnm, - const gmx_hw_info_t& hardwareInfo, - const gmx_device_info_t* deviceInfo, - bool useGpuForBonded, - bool pmeOnlyRankUsesGpu, - real print_force, - gmx_wallcycle* wcycle); + real print_force); + /*! \brief Check whether molecules are ever distributed over PBC boundaries + * + * Note: This covers only the non-DD case. For DD runs, domdec.h offers an + * equivalent dd_bonded_molpbc(...) function. + * + * \param[in] ir Inputrec structure + * \param[in] mtop Molecular topology + * \param[in] mdlog File for printing + */ + bool areMoleculesDistributedOverPbc(const t_inputrec& ir, const gmx_mtop_t& mtop, const gmx::MDLogger& mdlog); + /*! \brief Divide exclusions over threads * * Set the exclusion load for the local exclusions and possibly threads diff --cc src/gromacs/mdlib/md_support.cpp index 9eb763a25d,8f06530c9d..33056bc855 --- a/src/gromacs/mdlib/md_support.cpp +++ b/src/gromacs/mdlib/md_support.cpp @@@ -3,8 -3,7 +3,8 @@@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017,2018,2019,2020, by the GROMACS development team, led by ++ * Copyright (c) 2013,2014,2015,2016,2017 The GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. diff --cc src/gromacs/mdlib/md_support.h index e13fa1f483,2918ed87f7..333cde82ec --- a/src/gromacs/mdlib/md_support.h +++ b/src/gromacs/mdlib/md_support.h @@@ -3,8 -3,7 +3,8 @@@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017,2018,2019,2020, by the GROMACS development team, led by ++ * Copyright (c) 2013,2014,2015,2016,2017 The GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. diff --cc src/gromacs/mdlib/mdoutf.cpp index 3f3a426fb8,950587952d..dac8b7754d --- a/src/gromacs/mdlib/mdoutf.cpp +++ b/src/gromacs/mdlib/mdoutf.cpp @@@ -1,8 -1,7 +1,8 @@@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017,2018,2019,2020, by the GROMACS development team, led by ++ * Copyright (c) 2013,2014,2015,2016,2017 The GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@@ -296,12 -308,18 +309,18 @@@ void mdoutf_write_to_trajectory_files(F { fflush_tng(of->tng); fflush_tng(of->tng_low_prec); + /* Write the checkpoint file. + * When simulations share the state, an MPI barrier is applied before + * renaming old and new checkpoint files to minimize the risk of + * checkpoint files getting out of sync. + */ ivec one_ivec = { 1, 1, 1 }; write_checkpoint(of->fn_cpt, of->bKeepAndNumCPT, fplog, cr, - DOMAINDECOMP(cr) ? cr->dd->nc : one_ivec, + DOMAINDECOMP(cr) ? cr->dd->numCells : one_ivec, DOMAINDECOMP(cr) ? cr->dd->nnodes : cr->nnodes, of->eIntegrator, of->simulation_part, of->bExpanded, of->elamstats, step, t, - state_global, observablesHistory, *(of->mdModulesNotifier)); + state_global, observablesHistory, *(of->mdModulesNotifier), + of->simulationsShareState, of->mpiCommMasters); } if (mdof_flags & (MDOF_X | MDOF_V | MDOF_F)) diff --cc src/gromacs/mdlib/mdoutf.h index 4add522f79,1eca3f9a35..a6f9371ce6 --- a/src/gromacs/mdlib/mdoutf.h +++ b/src/gromacs/mdlib/mdoutf.h @@@ -1,8 -1,7 +1,8 @@@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017,2018,2019,2020, by the GROMACS development team, led by ++ * Copyright (c) 2013,2014,2015,2016,2017 The GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. diff --cc src/gromacs/mdlib/vsite.cpp index 5d8d19ef21,59427c2944..74c82f6459 --- a/src/gromacs/mdlib/vsite.cpp +++ b/src/gromacs/mdlib/vsite.cpp @@@ -3,8 -3,7 +3,8 @@@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017,2018,2019,2020, by the GROMACS development team, led by ++ * Copyright (c) 2013,2014,2015,2016,2017 The GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. diff --cc src/gromacs/mdlib/vsite.h index 8069b6250c,a3ea432bf1..65287fcb14 --- a/src/gromacs/mdlib/vsite.h +++ b/src/gromacs/mdlib/vsite.h @@@ -3,8 -3,7 +3,8 @@@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017,2018,2019,2020, by the GROMACS development team, led by ++ * Copyright (c) 2013,2014,2015,2016,2017 The GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. diff --cc src/gromacs/mdrun/minimize.cpp index 6b36ce823b,d90af4f9d7..3fc65f392f --- a/src/gromacs/mdrun/minimize.cpp +++ b/src/gromacs/mdrun/minimize.cpp @@@ -3,8 -3,7 +3,8 @@@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team. - * Copyright (c) 2013,2014,2015,2016,2017,2018,2019,2020, by the GROMACS development team, led by ++ * Copyright (c) 2013,2014,2015,2016,2017 The GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. diff --cc src/gromacs/modularsimulator/constraintelement.cpp index 4a0b7fe545,8e96e6068b..fcd03cd8d0 --- a/src/gromacs/modularsimulator/constraintelement.cpp +++ b/src/gromacs/modularsimulator/constraintelement.cpp @@@ -125,14 -126,12 +126,15 @@@ void ConstraintsElement::appl { tensor vir_con; - rvec *x, *xprime, *min_proj, *v; + ArrayRefWithPadding x; + ArrayRefWithPadding xprime; + ArrayRef min_proj; + ArrayRefWithPadding v; - // disabled functionality - real lambda = 0; - real* dvdlambda = nullptr; + const real lambdaBonded = freeEnergyPerturbationElement_ + ? freeEnergyPerturbationElement_->constLambdaView()[efptBONDED] + : 0; + real dvdlambda = 0; switch (variable) { diff --cc src/gromacs/modularsimulator/forceelement.cpp index c3bf1bb552,0b28b49ed0..36f304b3dc --- a/src/gromacs/modularsimulator/forceelement.cpp +++ b/src/gromacs/modularsimulator/forceelement.cpp @@@ -47,7 -47,8 +47,9 @@@ #include "gromacs/mdlib/force.h" #include "gromacs/mdlib/force_flags.h" #include "gromacs/mdlib/mdatoms.h" + #include "gromacs/mdtypes/inputrec.h" +#include "gromacs/mdtypes/mdatom.h" + #include "gromacs/pbcutil/pbc.h" #include "energyelement.h" #include "freeenergyperturbationelement.h" diff --cc src/gromacs/modularsimulator/shellfcelement.cpp index 380a1c287d,8ccc6ab35f..8eca620e4c --- a/src/gromacs/modularsimulator/shellfcelement.cpp +++ b/src/gromacs/modularsimulator/shellfcelement.cpp @@@ -51,7 -51,7 +51,8 @@@ #include "gromacs/mdlib/mdatoms.h" #include "gromacs/mdrun/shellfc.h" #include "gromacs/mdtypes/inputrec.h" +#include "gromacs/mdtypes/mdatom.h" + #include "gromacs/pbcutil/pbc.h" #include "gromacs/topology/atoms.h" #include "gromacs/topology/mtop_util.h" diff --cc src/gromacs/nbnxm/kernels_reference/kernel_ref.h index e98d2deba6,85080ab626..242536c99f --- a/src/gromacs/nbnxm/kernels_reference/kernel_ref.h +++ b/src/gromacs/nbnxm/kernels_reference/kernel_ref.h @@@ -1,8 -1,7 +1,8 @@@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013,2014,2015,2017 by the GROMACS development team. - * Copyright (c) 2012,2013,2014,2015,2017,2018,2019,2020, by the GROMACS development team, led by ++ * Copyright (c) 2012,2013,2014,2015,2017 The GROMACS development team. + * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. diff --cc src/gromacs/nbnxm/nbnxm_geometry.h index debc49b17e,2b72432371..3362a410db --- a/src/gromacs/nbnxm/nbnxm_geometry.h +++ b/src/gromacs/nbnxm/nbnxm_geometry.h @@@ -90,10 -82,10 +90,10 @@@ static constexpr gmx::EnumerationArray< #else 0, 0, #endif - c_nbnxnGpuClusterSize, c_nbnxnGpuClusterSize } + c_nbnxnGpuClusterSize, c_nbnxnGpuClusterSize / 2 } }; -/* Returns whether the pair-list corresponding to nb_kernel_type is simple */ +/*! \brief Returns whether the pair-list corresponding to nb_kernel_type is simple */ static inline bool kernelTypeUsesSimplePairlist(const KernelType kernelType) { return (kernelType == KernelType::Cpu4x4_PlainC || kernelType == KernelType::Cpu4xN_Simd_4xN diff --cc src/programs/mdrun/tests/CMakeLists.txt index 315b30e242,f2e7e2d8bb..24af506d98 --- a/src/programs/mdrun/tests/CMakeLists.txt +++ b/src/programs/mdrun/tests/CMakeLists.txt @@@ -1,8 -1,7 +1,8 @@@ # # This file is part of the GROMACS molecular simulation package. # - # Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team. -# Copyright (c) 2013,2014,2015,2016,2017,2018,2019,2020, by the GROMACS development team, led by ++# Copyright (c) 2013,2014,2015,2016,2017 The GROMACS development team. +# Copyright (c) 2018,2019,2020, by the GROMACS development team, led by # Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, # and including many others, as listed in the AUTHORS file in the # top-level source directory and at http://www.gromacs.org.