Mark Abraham [Mon, 31 May 2021 10:14:22 +0000 (10:14 +0000)]
Move total bonded count to LocalTopologyChecker
Mark Abraham [Mon, 31 May 2021 09:05:50 +0000 (11:05 +0200)]
Split localtopology from domdec_topology
This is a separable responsibility and can go in its own
translation unit.
Refs #3887
Mark Abraham [Mon, 31 May 2021 08:14:35 +0000 (08:14 +0000)]
Partial renaming of cginfo to atom info
Andrey Alekseenko [Sun, 30 May 2021 15:54:10 +0000 (18:54 +0300)]
Fix one more missing template declaration
Continuation of the work started in
bf9b81c4 (MR !1652)
Pascal Merz [Mon, 31 May 2021 00:10:49 +0000 (18:10 -0600)]
Introduce Andersen temperature coupling for modular simulator
This introduces the `andersen` and `andersen-massive` temperature coupling
for modular simulator. Since reshuffeling the velocities does require a
constraining step, the Andersen temperature coupling uses the composite
element to combine the Andersen element with a constraining element.
Refs #3423, refs #3417
Andrey Alekseenko [Mon, 31 May 2021 06:26:32 +0000 (06:26 +0000)]
Add nightly CI test on OneAPI + Intel GPU
Andrey Alekseenko [Fri, 28 May 2021 22:51:33 +0000 (01:51 +0300)]
Disable false-positive warnings for ICPX 2021.2.0
Not happening in open-source intel/llvm compiler.
While originally it was enough to disable them at include stage, in
2021.2 the warning is issued in the kernel itself, so we had to expand
its usage beyond gmxsycl.h.
Paul Bauer [Fri, 28 May 2021 08:55:23 +0000 (08:55 +0000)]
Fix missing template declaration
Mark Abraham [Fri, 28 May 2021 07:32:08 +0000 (07:32 +0000)]
Compute global bonded interaction count from system topology
Eliane Briand [Fri, 28 May 2021 07:11:10 +0000 (07:11 +0000)]
Reworked convert-tpr runtime extension
Mark Abraham [Thu, 27 May 2021 12:41:24 +0000 (14:41 +0200)]
Remove orphaned code
This should have been removed in
c17939744a88e but somehow it
survived long enough to move location. This should have failed
testing because optional std header is not included here, but
it somehow passed.
Now it is removed
Refs #3887
Mark Abraham [Thu, 27 May 2021 09:48:39 +0000 (09:48 +0000)]
Move reverse topology code to its own translation unit
Artem Zhmurov [Wed, 26 May 2021 11:48:01 +0000 (14:48 +0300)]
Add release notes about REMD with GPU update
REMD is now possible with GPU update, which should be noted in
release notes.
Feature enabled in
29c336cd0a518507c86094b08a447ec388afaad2
Refs #3997
Pascal Merz [Thu, 27 May 2021 08:55:14 +0000 (08:55 +0000)]
Clean up simulator algorithm
Artem Zhmurov [Wed, 26 May 2021 09:05:03 +0000 (12:05 +0300)]
Rename GpuBonded into ListedForcesGpu
The listed forces name describes better what the class is
doing and also follows the naming for other modules.
Paul Bauer [Thu, 27 May 2021 07:41:49 +0000 (09:41 +0200)]
Disable CUDA clang-tidy test
This is failing for some reason and needs proper fixing later.
Mark Abraham [Wed, 5 May 2021 06:53:36 +0000 (08:53 +0200)]
Move the code of what will later implement LocalTopologyChecker
Some common implementation functionality used in making
the reverse topology also needs to be exposed. Otherwise,
this is pure code movement with no functionality changes.
Refs #3887
Dmitry Morozov [Wed, 26 May 2021 15:01:42 +0000 (15:01 +0000)]
Moved PME-only ranks check to domain decomposition setup
Szilárd Páll [Wed, 26 May 2021 14:06:24 +0000 (14:06 +0000)]
Eliminate redundant GPU force reduction event dependency
CPU force transfers happen on the same strem as GPU reduction, so no explicit dependency is needed.
Additionally, due to a StatePropagatorDataGpu bug, whenever the force readiness event queried is not AtomLocality::All, an incorrect event is returned leading to circular dependency on force reduction, as described in #4032.
This change however does not fix the StatePropagatorDataGpu bug, but it should help avoiding workarounds for the new SYCL backend (#3932).
Refs #4032 #3988
Mark Abraham [Wed, 26 May 2021 08:39:19 +0000 (10:39 +0200)]
Fix clang-format
ejjordan [Mon, 24 May 2021 15:38:49 +0000 (17:38 +0200)]
Remove foreign energy groups from gmx_enerdata_t
These members are only used for local storage and can be eliminated.
Added function to zero the energy group pair terms.
This will aid in further refactoring of the nonboded FEP kernels.
Joe Jordan [Wed, 26 May 2021 09:14:47 +0000 (09:14 +0000)]
Move t_forcetable and table enums to forcetable header
Szilárd Páll [Tue, 30 Mar 2021 13:24:08 +0000 (15:24 +0200)]
Implement generic j-reduction in the nbnxm SYCL kernels
This commit implements the generic j-reduction identical to the OpenCL
version of the same.
Also added a subGroupBarrier() helper which is needed for
correctness on the CUDA backend when targetting NVIDIA
architectures.
Refs #3934
Paul Bauer [Wed, 26 May 2021 07:39:06 +0000 (07:39 +0000)]
Fix clang tidy version for CUDA
Pascal Merz [Wed, 26 May 2021 07:05:54 +0000 (07:05 +0000)]
Introduce domain decomposition notifications
Pascal Merz [Fri, 21 May 2021 21:33:37 +0000 (15:33 -0600)]
Split expanded ensemble function
The expanded ensemble function was split into a part chosing a new
lambda state, and a second part updating the reference temperature
in the case of simulated tempering. To leave legacy paths unchanged,
the original function name has been maintained, which calls the two
parts. The function chosing a new lambda state is declared in the
header to allow modular simulator to call it separately.
This is pure refactoring (with the exception of moving a few variable
declarations to their initialization sites). Expanded ensemble is
covered by the new FEP tests.
This prepares introducing the expanded ensemble in modular simulator,
and is a first step towards #3848.
Refs #3417
Joe Jordan [Tue, 25 May 2021 09:41:58 +0000 (09:41 +0000)]
Only Pass needed data to nonbonded param setup in forcerec
Paul Bauer [Fri, 21 May 2021 09:07:07 +0000 (11:07 +0200)]
Add CUDA clang tidy build to CI
Runs test script for pre-submit and full build nightly.
Paul Bauer [Mon, 24 May 2021 12:58:44 +0000 (12:58 +0000)]
Apply clang-tidy-11 fixes to CUDA files
Joe Jordan [Mon, 24 May 2021 12:34:55 +0000 (12:34 +0000)]
Remove dead members from gmx_pme_t
Joe Jordan [Mon, 24 May 2021 11:53:02 +0000 (11:53 +0000)]
Remove forcerec from dispatchFreeEnergyKernel signature
M. Eric Irrgang [Fri, 21 May 2021 15:02:15 +0000 (10:02 -0500)]
Let installed library options default to BUILD_SHARED_LIBS.
Fixes #4053
Mark Abraham [Mon, 24 May 2021 03:58:19 +0000 (05:58 +0200)]
Remove GMX_CONSTRVIR
Simplifies handling of energy output by removing a feature that was
likely useful only during debugging yet incurred function-call
overhead every MD step even when not used.
Resolves previous TODO
Updates tests to no longer check such output while not changing
the numerical output previously written.
Pascal Merz [Tue, 17 Nov 2020 01:19:08 +0000 (18:19 -0700)]
Add a const getter for the enerd struct to EnergyData
This is not currently used, but will allow for more const-correctness
in upcoming changes.
Pascal Merz [Mon, 24 May 2021 04:27:50 +0000 (04:27 +0000)]
Implement Berendsen and c-rescale pressure coupling for modular simulator
Pascal Merz [Tue, 17 Nov 2020 01:13:37 +0000 (18:13 -0700)]
Expose DD distribution of free energy history
To implement expanded ensemble, modular simulator needs to be able
to distribute the free energy history without initiating a full
t_state object. This exposes the required function to make it
available to the expanded ensemble modular simulator element.
Refs #3417, #3419
Pascal Merz [Mon, 7 Sep 2020 16:28:37 +0000 (10:28 -0600)]
Introduce frequency for CompositeSimulatorElement
This adds functionality to run a composite simulator element at a
prescribed frequency. This prepares the introduction of Andersen
thermostatting.
Szilárd Páll [Fri, 21 May 2021 10:16:51 +0000 (10:16 +0000)]
Workaround for a hipSYCL assertion error
Joe Jordan [Thu, 20 May 2021 23:29:01 +0000 (23:29 +0000)]
Localize variables in gmx_pme_do
Alan Gray [Tue, 18 May 2021 14:33:42 +0000 (07:33 -0700)]
Remove GPU update restriction for replica exchange
Ensures that the end-of-step D2H coordinate copy is active for replica
exchange steps, to allow the GPU update restriction to be relaxed.
Artem Zhmurov [Thu, 20 May 2021 14:01:15 +0000 (14:01 +0000)]
Use MessageStringCollector class to construct error messages
Paul Bauer [Thu, 20 May 2021 07:57:58 +0000 (09:57 +0200)]
Disable ArrayRefDeathTests when building without assertions
Would otherwise lead to spurious failures.
ejjordan [Wed, 19 May 2021 16:28:07 +0000 (18:28 +0200)]
Remove inputrec from do_ewald
Also rename some parameters more verbosely and remove a dead code
block.
Joe Jordan [Thu, 20 May 2021 06:25:18 +0000 (06:25 +0000)]
Localize variables in ewald_LRcorrection
Artem Zhmurov [Wed, 19 May 2021 15:46:59 +0000 (18:46 +0300)]
Andrey Alekseenko [Wed, 19 May 2021 16:15:08 +0000 (16:15 +0000)]
Support GPU update without constraints
ejjordan [Mon, 17 May 2021 13:54:03 +0000 (15:54 +0200)]
Make TrotterSequence enum class
A subesquent MR can make an extended Trotter enum class, removing
dependence of coupling and update_vv headers on md_enums header.
Joe Jordan [Wed, 19 May 2021 15:09:16 +0000 (15:09 +0000)]
Clean up some headers in mdlib
ejjordan [Tue, 18 May 2021 18:19:54 +0000 (20:19 +0200)]
Remove forcerec and inputrec from ewald_LRcorrection
Only pass needed parameters to ewald_LRcorrection, instead of
entire forcerec and inputrec. This required also refactoring
EwaldBoxZScaler to only take needed parameters instead of a
whole inputrec.
Also made some names more verbose.
Paul Bauer [Wed, 19 May 2021 11:33:56 +0000 (11:33 +0000)]
Add nullptr check in ArrayRef from array construction
Artem Zhmurov [Wed, 19 May 2021 10:53:55 +0000 (10:53 +0000)]
Make common Leap-Frog device code backend-agnostic
ejjordan [Tue, 18 May 2021 18:35:53 +0000 (20:35 +0200)]
Remove forcerec from ewald_charge_correction
Also renamed commrec to be more verbose.
Andrey Alekseenko [Tue, 18 May 2021 19:54:23 +0000 (22:54 +0300)]
Fix CMake 3.20 warnings when compiling with IntelLLVM
Most work was done in
5d2d4769 (MR !1558), but we were still getting
warnings from the compiler compatibility checks. Nothing major, just
noise.
Andrey Alekseenko [Tue, 18 May 2021 11:41:49 +0000 (14:41 +0300)]
Remove unused StatisticsStatus values
The `enumValueToString(StatisticsStatus)` had the wrong order of
strings. But in fact most of these statuses were not used anyway, so we
can just remove the corresponding enum values altogether.
Joe Jordan [Tue, 18 May 2021 10:50:09 +0000 (10:50 +0000)]
Fix several doxygen errors
Artem Zhmurov [Mon, 17 May 2021 10:01:57 +0000 (10:01 +0000)]
Move the stub for X buffer ops into OpenCL
Mark Abraham [Fri, 14 May 2021 07:13:52 +0000 (09:13 +0200)]
Refactor gmx_reverse_top_t
Made the impl properly private, but to do so had to separate
the responsibility for checking the local topology, which
should never have been here.
This introduces two new headers in preparation for splitting up
domdec_topology.cpp into several parts that can then have their own
headers. But first gmx_reverse_top_t has to be properly encapsulated.
Refs #3887
Artem Zhmurov [Mon, 17 May 2021 07:58:53 +0000 (07:58 +0000)]
Make NBNXM force getter available in all backends
Paul Bauer [Fri, 14 May 2021 13:05:27 +0000 (15:05 +0200)]
Use InheritParentConfig: true in clang-tidy files
Removes duplication between files in test directories where it can be
avoided.
Artem Zhmurov [Thu, 13 May 2021 08:41:17 +0000 (11:41 +0300)]
Use appendIf(..) method of MessageStringCollector where it is relevant
Refs #3886
Artem Zhmurov [Wed, 12 May 2021 08:16:47 +0000 (11:16 +0300)]
Remove extra device force getter from NBNXM
Having two getters for the same device buffer is confusing and
polutes the name space. This removes the extra getter and
change to the calls to the other one where it was used.
Refs #2608
Artem Zhmurov [Thu, 13 May 2021 08:06:19 +0000 (11:06 +0300)]
Add appendIf(..) method and tests for MessageStringCollector
The messages are usually added conditionally, which makes
it more natural to use msc.appendIf(conditional, message) as
compared to if(conditional) { msc.append(message); }.
Also adds tests for basic functionality of the class and
renames the files according to conventions.
Refs #3886
Mark Abraham [Thu, 13 May 2021 07:36:56 +0000 (07:36 +0000)]
Decouple update group handling from domain decomposition module
Andrey Alekseenko [Tue, 27 Apr 2021 21:19:15 +0000 (00:19 +0300)]
Add SYCL implementation of X/V scale kernel
Refs #3929
Artem Zhmurov [Tue, 11 May 2021 11:25:26 +0000 (11:25 +0000)]
Make common Update-Constraints code backend-agnostic
Artem Zhmurov [Tue, 11 May 2021 06:05:58 +0000 (09:05 +0300)]
Name the MDRun FEP test binary consistently
Szilárd Páll [Tue, 11 May 2021 10:19:42 +0000 (10:19 +0000)]
Remove GMX_FORCE_DO_NOT_NEED_NORMAL_FORCE legacy flag in do_force()
Paul Bauer [Tue, 11 May 2021 09:51:13 +0000 (09:51 +0000)]
Add test for single residue chain
Artem Zhmurov [Tue, 11 May 2021 07:46:17 +0000 (10:46 +0300)]
Artem Zhmurov [Tue, 11 May 2021 05:57:07 +0000 (08:57 +0300)]
Fix conditional in assertion
The B-charges should be defined to use FEP in PME. The condition
was changed to the opposite in
fdac5efa5ed51dd9b8486ca35227708b62fb08ef
Mark Abraham [Tue, 11 May 2021 08:31:47 +0000 (08:31 +0000)]
Apply more clang-tidy-11
Artem Zhmurov [Tue, 11 May 2021 05:34:06 +0000 (08:34 +0300)]
Fix compiler warning and use static_assert
1. The compiler assumes that GMX_GPU_CUDA and GMX_GPU_SYCL
may be bit-fields and thus issue a warning if the logical
or is used (constant-logical-operand). Casting them to
booleans supresses the warning.
2. Change to use static_assert instead of the GMX_RELEASE_ASSERT
because this code on a hot path.
Szilárd Páll [Wed, 21 Apr 2021 17:48:04 +0000 (19:48 +0200)]
Eliminate duplicate CPU->GPU copy of x
x is copied to the GPU for buffer ops or PME as well as prior to GPU
update on search steps which leads to a duplicate copying which is
addressed in this change.
Fixes #4033
Refs #3988
Andrey Alekseenko [Tue, 11 May 2021 07:16:38 +0000 (07:16 +0000)]
Add SYCL implementation of GPU F buffer operations
Mark Abraham [Mon, 10 May 2021 13:36:44 +0000 (15:36 +0200)]
Apply clang-format-11
This is better than slowly dribbling changes all over the
code base
Mark Abraham [Tue, 11 May 2021 05:02:52 +0000 (05:02 +0000)]
Rename pdb2gmx tests
Joe Jordan [Mon, 10 May 2021 20:31:19 +0000 (20:31 +0000)]
Fix harmless bug in nonbonded FEP tests
Andrey Alekseenko [Mon, 10 May 2021 20:09:53 +0000 (20:09 +0000)]
Add SYCL implementation of GPU X buffer operations
Andrey Alekseenko [Mon, 10 May 2021 13:22:53 +0000 (13:22 +0000)]
Make GPU X buffer ops platform-agnostic
Andrey Alekseenko [Sat, 8 May 2021 11:23:23 +0000 (14:23 +0300)]
Fix shift_left/right function on hipSYCL
Having separate __host__ and __device__ definitions confused the
compiler when called from a non-annotated function. As a result,
a __host__ version, containing `assert(false)`, was always called,
leading to UB.
Refs #3965
Paul Bauer [Fri, 7 May 2021 15:03:42 +0000 (17:03 +0200)]
Make clang-tidy check more aggressive
Now makes sure that it checks on all warnings, not just files that could
be fixed automatically.
Andrey Alekseenko [Sun, 9 May 2021 12:48:12 +0000 (15:48 +0300)]
SYCL: Allow copying an uninitialized DeviceBuffer object
Needed for sharing more code between CUDA and SYCL.
Refs #4045, related to #3020
Szilárd Páll [Mon, 10 May 2021 08:51:17 +0000 (08:51 +0000)]
Move PME-GPU do_force() local bool into stepWorkload
Pascal Merz [Mon, 10 May 2021 07:26:35 +0000 (07:26 +0000)]
Clarify builder-time data, introduce simulation-time data
Berk Hess [Fri, 7 May 2021 12:31:39 +0000 (12:31 +0000)]
Make debug printing work with empty domains
Paul Bauer [Thu, 6 May 2021 14:22:09 +0000 (16:22 +0200)]
Merge branch release-2021 into merge-2021-into-master
Resolved Conflicts:
cmake/gmxCFlags.cmake
cmake/gmxManageFFTLibraries.cmake
cmake/gmxVersionInfo.cmake
docs/CMakeLists.txt
src/gromacs/applied_forces/awh/bias.cpp
src/gromacs/applied_forces/awh/biasstate.cpp
src/gromacs/applied_forces/awh/biasstate.h
src/gromacs/applied_forces/awh/read_params.cpp
src/gromacs/applied_forces/awh/tests/bias_fep_lambda_state.cpp
src/gromacs/fileio/vmdio.cpp
src/gromacs/gmxpreprocess/readir.cpp
src/gromacs/mdlib/constr.cpp
src/gromacs/mdlib/enerdata_utils.cpp
src/gromacs/mdlib/mdatoms.cpp
src/gromacs/mdrun/mimic.cpp
src/gromacs/mdrun/runner.cpp
src/gromacs/modularsimulator/modularsimulator.cpp
src/gromacs/utility/mdmodulesnotifiers.h
Paul Bauer [Thu, 6 May 2021 09:35:44 +0000 (09:35 +0000)]
Use more modern clang for linters and sanitizers
Paul Bauer [Wed, 5 May 2021 15:16:05 +0000 (17:16 +0200)]
Remove UB in ArrayRef from array
Several issues with ArrayRefs from nullptr have been found by UBSAN.
Pascal Merz [Thu, 6 May 2021 04:43:26 +0000 (04:43 +0000)]
Unify temperature and pressure coupling connection
Berk Hess [Wed, 5 May 2021 15:45:28 +0000 (15:45 +0000)]
Convert t_oriresdata to C++
Paul Bauer [Wed, 5 May 2021 14:34:44 +0000 (16:34 +0200)]
Prepare branch for 2021.2 point release
Reset DOI strings.
Set new version.
Add release note stub.
Paul Bauer [Wed, 5 May 2021 13:55:17 +0000 (13:55 +0000)]
GROMACS 2021.2 release
Pascal Merz [Sat, 28 Nov 2020 19:37:47 +0000 (12:37 -0700)]
Allow elements to request local kinetic energy update
Trotter decomposed algorithms need to be able to request kinetic
energy update at a specific point in the algorithm.
Refs #3423
Andrey Alekseenko [Wed, 5 May 2021 13:05:50 +0000 (13:05 +0000)]
Make common GPU Force Reduction code backend-agnostic
Paul Bauer [Wed, 5 May 2021 11:45:15 +0000 (13:45 +0200)]
Fix include order
Was missed during previous commit.
Pascal Merz [Wed, 5 May 2021 11:47:27 +0000 (11:47 +0000)]
Zero modular simulator total energy
Paul Bauer [Fri, 23 Apr 2021 06:57:19 +0000 (08:57 +0200)]
Apply misc clang-tidy-11 fixes
Needed to build with newer version.
I also had to add a number of new exclusions in the base configuration
files. Those are mainly for recursive functions and use of global
variables. Tests needed their own configuration files to exclude check
for non const global variables.
Refs #3897
Mark Abraham [Wed, 5 May 2021 08:57:19 +0000 (10:57 +0200)]
Restore pull output to rerun
This was omitted from
c52e6838 and is now restored.
Refs #1868
Fixes #4043
Mark Abraham [Wed, 5 May 2021 08:55:48 +0000 (08:55 +0000)]
Break up dd_init_bondeds
Joe Jordan [Wed, 5 May 2021 08:30:45 +0000 (08:30 +0000)]
Apply clang-tidy11 to tools