alexxy/gromacs.git
4 years agoGROMACS 2020 release candidate
Paul Bauer [Tue, 17 Dec 2019 14:21:38 +0000 (15:21 +0100)]
GROMACS 2020 release candidate

Adjusted regresstiontest hash

Change-Id: I37cec8154843b8f8a2a9136051b50bce7eba5888

4 years agoEnable buffer ops when GMX_GPU_DD_COMMS is set
Szilárd Páll [Thu, 19 Dec 2019 19:44:35 +0000 (20:44 +0100)]
Enable buffer ops when GMX_GPU_DD_COMMS is set

Buffer ops is always a hard dependency for DD with GPU direct comm, so
enable it instead of requiring an extra env var to be set on mdrun
invocation.

Change-Id: Iea354f8ce636a115e0ed866228746e91f34df228

4 years agoFix regressiontests failing with ctest
Paul Bauer [Thu, 19 Dec 2019 16:42:15 +0000 (17:42 +0100)]
Fix regressiontests failing with ctest

Setting the -ntomp variable and not -nt at the same time causes errors
when running the regressiontests through ctest.

This was introduced in I78925951dcb59a11af01bc64f0dea373fe172cbb while
updating things for Gitlab CI.

Fixes #3257

Change-Id: I19afd7817b5c637d6653fda8533f23720b45cc41

4 years agoRelease note for GPU direct communications
Alan Gray [Thu, 19 Dec 2019 13:32:53 +0000 (05:32 -0800)]
Release note for GPU direct communications

Change-Id: I4487f2ed6bc789e6cfb3e68d802ccedda0c51962

4 years agoFix PME tuning issue when PME-PP communications are active
Alan Gray [Thu, 19 Dec 2019 09:45:58 +0000 (01:45 -0800)]
Fix PME tuning issue when PME-PP communications are active

If PME-PP direct GPU communication is active, the CPU-GPU
asynchronicity in the codepath causes the timing load balance ratio
used to trigger PME tuning to be unreliable. This change
unconditionally starts PME tuning when the PME-PP communication
feature is active (unless PME tuning has been de-activated with
the -notunepme option).

Partially addresses #3208

Change-Id: Iea173d19062dbd11d57ca9ceb4e52b9f20d4ff15

4 years agoPP-PME load balancing improvements
Szilárd Páll [Fri, 29 Nov 2019 00:10:10 +0000 (01:10 +0100)]
PP-PME load balancing improvements

Add a minimum number of nstlist tuning intervals and minimum time delay
at the beginning of the run before the load balancing starts. This allow
hardware clocks to ramp up and avoids having early measurements
overestimate rendering subsequent ones with different grid setups only
faster due to hardware warmup.
Also use global variables to adjust the number of measurements to be
skipped after switching configs.

Refs  #3208
Fixes #2203

Change-Id: If835d2482e127caa51d50f45f25c19144d35efaa

4 years agoAdd issue tracking for deprecations.
M. Eric Irrgang [Thu, 19 Dec 2019 11:09:18 +0000 (14:09 +0300)]
Add issue tracking for deprecations.

Provide links in release notes to issue tracking for announced
deprecations.

Fixes #3251

Change-Id: I246651f8cb868eb1deecac86c2e7d6f0ec81b3f1

4 years agoFix mdrun appending invalidating energy files
Berk Hess [Wed, 18 Dec 2019 18:23:43 +0000 (19:23 +0100)]
Fix mdrun appending invalidating energy files

When appending at mdrun restarts, energy files would become
unreadable at the appending point.

Fixes #3250

Change-Id: I7683e1a954fb8865acb5e77aae028ae717ae0ab3

4 years agoFix conditional on assertion for combining GPU Update and GPU coordinate send
Alan Gray [Wed, 18 Dec 2019 15:41:45 +0000 (07:41 -0800)]
Fix conditional on assertion for combining GPU Update and GPU coordinate send

Fixes a problem introduced in 9a3c2ce312c1e04634d636655388a8aaad53c8d1
which unintentionally blocks any use of GPU update with PME-PP
Communication because !stepWork.doNeighborSearch is missing from the
condition on the assertion.

Related to #3159 and #3160 which, when implemented, will remove the
restriction on coordinate send originating from the GPU (on non search steps).

Change-Id: Ie9b1102386b2c1bc927c09e4d8ead2bd2321320d

4 years agoAllow x D2H to overlap with GPU force compute
Szilárd Páll [Tue, 10 Dec 2019 11:24:32 +0000 (12:24 +0100)]
Allow x D2H to overlap with GPU force compute

With GPU update coordinates are transferred back to the CPU every step
if there are forces to compute on the CPU. Originally this was
implemented with a back-to-back transfer launch and wait at the
beginning of do_force().
This change moves the CPU wait for the completion of the coordinate
transfer closer to the consumer tasks in order to avoid blocking GPU
force tasks' launch and allowing compute and transfer to overlap.

Fixes #3221

Change-Id: Ia6641147bbec1186b54c1445d36dc31000eae9c4

4 years agoUpdate reference to uncrustify and clang-format.
M. Eric Irrgang [Fri, 13 Dec 2019 16:41:48 +0000 (19:41 +0300)]
Update reference to uncrustify and clang-format.

Correct some copy-paste errors. Consolidate some references to
formatting tools and continue to transition away from uncrustify.

uncrustify references and infrastructure remain, along with Jenkins
documentation. These can be removed after transitioning from Jenkins to
GitLab Runner, pending clarification on how to distinguish between
documentation for all supported versions versus the current version.

There are also various references and workarounds related to uncrustify
in the source code. These can be updated in separate changes against the
post-release-2020 master branch.

Refs #3248

Change-Id: I3331f73921812a918d32dd6a045eabc4da4a6a6d

4 years agoChange grompp decoupling SD warning to note
Berk Hess [Fri, 6 Dec 2019 13:39:28 +0000 (14:39 +0100)]
Change grompp decoupling SD warning to note

The warning that grompp issues when decoupling a molecule
without the use of the SD integrator has been changed to a note,
since there are valid use cases for using normal MD when not
running in the completely decoupled state.

Note that checking for actual decoupled VdW states requires a lot of
code and would still not be 100% correct.

Fixes #2767

Change-Id: I55c84afcbcb7b19bdb8a7a8bc586a65c50f8d0c1

4 years agoAdd ability to set OMP and tMPI thread for ctest
Paul Bauer [Tue, 17 Dec 2019 17:22:16 +0000 (18:22 +0100)]
Add ability to set OMP and tMPI thread for ctest

For Gitlab CI we need at some points to be able to set the threads used
for running the regressiontests through ctest.

(cherry picked from commit 4e6b4134e62f17d64520a46e0aad7cbd60f778f3)

Change-Id: I78925951dcb59a11af01bc64f0dea373fe172cbb

4 years agoIgnore build host for CI builds
Paul Bauer [Fri, 13 Dec 2019 15:51:44 +0000 (16:51 +0100)]
Ignore build host for CI builds

When moving the CMake build directory between hosts a warning was
generated. This does not integrate well with containerized CI.

(cherry picked from commit 33079aa495e7e3b7da78bd58de9c6f30edff51d4)

Change-Id: If0a775ab86d25a7d5646e824243892320d4ddbe3

4 years agoAdd note for COM removal with position restraints
Berk Hess [Mon, 16 Dec 2019 09:50:06 +0000 (10:50 +0100)]
Add note for COM removal with position restraints

Center of mass motion removal in combination with position restraints
will often cause artifacts. We should (automatically) disable this,
but this will disrupt workflows, so for now grompp will issue a note.

Refs #3244

Change-Id: If983e918d26f0af2fab96d44d0f2b1fc3cedb901

4 years agoClean-up buffer-ops CUDA kernels
Artem Zhmurov [Mon, 16 Dec 2019 21:17:47 +0000 (22:17 +0100)]
Clean-up buffer-ops CUDA kernels

1. Adjust naming according to conventions.
2. Reduce number of type casting.
3. Use native CUDA types.

Fixes #3237.

Change-Id: I79da0dd1edf6c302661ba0954e4191fde1ebf2e8

4 years agoTest parallel mpi only with openmp
Paul Bauer [Tue, 10 Dec 2019 10:11:26 +0000 (11:11 +0100)]
Test parallel mpi only with openmp

Can time out in other conditions
Found while working on Gitlab CI

Refs #3232

Change-Id: I7cf62ed913d2bc8c88317a674b0594dbe54ba394

4 years agoComment the use of waitCoordinatesCopiedToDevice
Szilárd Páll [Tue, 17 Dec 2019 12:43:00 +0000 (13:43 +0100)]
Comment the use of waitCoordinatesCopiedToDevice

Tthis is to note that we are only using a barrier a mechanism to sync
with GPU tasks rather than to preventing a race between the copy and
other CPU tasks.

Change-Id: I8d432f7ef3e87e56beffa7f58230e50bcd59a666

4 years agoSet correct dependency for doc build on gmxapi
Paul Bauer [Fri, 13 Dec 2019 15:50:21 +0000 (16:50 +0100)]
Set correct dependency for doc build on gmxapi

When building the documentation with the python package, we need to know
about the symbols in the package when building docs for e.g. the pdf
manual.

Change-Id: Ia9a248da5746a5d90736cd3f3aa345fe8ffd0c79
(cherry picked from commit 0aa283c6b578b1b6bf6673169697865142014368)

4 years agoFix compiler warning about extra ;
Paul Bauer [Fri, 13 Dec 2019 15:50:01 +0000 (16:50 +0100)]
Fix compiler warning about extra ;

Change-Id: I9718ab9d9772dfc7251bc1eb175be59544b2c2cb
(cherry picked from commit 6ef70b67bb06f03da97315170a44f76679d92a23)

4 years agoAdd wallcycle counting to StatePropagatorDataGpu
Szilárd Páll [Fri, 6 Dec 2019 18:57:24 +0000 (19:57 +0100)]
Add wallcycle counting to StatePropagatorDataGpu

Launch overheads are counted in the main GPU launch overhead counter and
a separate subcounter is used for the launch and a main counter for the
CPU blocking wait timing.

Note that this chnge introduces mdtypes->timing->mdtypes cyclic dependency,
the warning on which is suppressed.

Fixes #3207

Change-Id: I3b69df9e4888800b43712a42b863958db80f5caa

4 years agoBe more specific with clang-format suggestions.
M. Eric Irrgang [Fri, 13 Dec 2019 16:14:43 +0000 (19:14 +0300)]
Be more specific with clang-format suggestions.

Refs #3238

Change-Id: If71687cbab9a9aa1c10e3501849932a0ea0f3112

4 years agoFix exact continuation modular simulator
Pascal Merz [Tue, 17 Dec 2019 04:24:40 +0000 (21:24 -0700)]
Fix exact continuation modular simulator

With modular simulator, the center of mass motion was mistakenly
removed also when continuing from checkpoint, breaking exact
continuation.

Change-Id: I4db837a1b11f1b44cfae4970230a51a2c05d84aa

4 years agoFix densityfitting stalling and energies
Christian Blau [Mon, 9 Dec 2019 18:42:20 +0000 (19:42 +0100)]
Fix densityfitting stalling and energies

Density guided simulations would stall when there were no atoms on a
node. Further, the energy contributions were added for every
participating node, resulting in wrong energies.

Both issues are fixed with this patch.

fixes: #3230
refs: #3235

Change-Id: Iab773993fb3f98bd154acaa1d3971e655182a2b2

4 years agoSimplify gmxapi RPATH handling
Mark Abraham [Wed, 31 Oct 2018 13:44:55 +0000 (14:44 +0100)]
Simplify gmxapi RPATH handling

Fixes #2722

Change-Id: Ic697f596285acdb5c7728b7ebc995ea44c82f3ac

4 years agoClean up outdated comments in md.cpp
Artem Zhmurov [Thu, 12 Dec 2019 16:30:27 +0000 (17:30 +0100)]
Clean up outdated comments in md.cpp

Some of the comments were left unattended as the code evolved.

Change-Id: I12c2e313645fcbb1a112f3f0c9f4c72e7943d9d6

4 years agoTest for expected output files
Pascal Merz [Wed, 11 Dec 2019 01:49:24 +0000 (18:49 -0700)]
Test for expected output files

Ie7f03f5b fixes a bug where modular simulator would not write
final coordinates to file. This test checks whether some basic
output files are present (edr, trr, log, gro, cpt).

Change-Id: I02299d342667104ccc19f0af6d557bb8aa916494

4 years agoFix final configuration writing for modular simulator
Pascal Merz [Wed, 4 Dec 2019 06:55:36 +0000 (23:55 -0700)]
Fix final configuration writing for modular simulator

Modular simulator was not writing final configuration (.gro) file.
This commit fixes this, and removes an outdated sentence in the
documentation of ITrajectoryWriterClient.
I02299d34 introduces a test to avoid similar errors in the future.

Note that the complexity required to introduce this feature implies that
trajectory writing in the modular simulator needs some work for
GROMACS 2021.

Change-Id: Ie7f03f5beea2d78411c7a0cdfa85f71deeb622fa

4 years agoAllow overlapping CPU force H2D with compute
Szilárd Páll [Mon, 2 Dec 2019 18:29:28 +0000 (19:29 +0100)]
Allow overlapping CPU force H2D with compute

The reduction orchestration code already uses explicit sync event
in all cases and StateGpu implements the ability to schedule force
H2D in a separate stream for the "All" locality.
Hence, this change switches for non-DD runs the CPU force H2D to be done
in the update stream to allow overlap with force work in the local
stream.

Refs #3170 #3029

Change-Id: Iceb9aac395335c062109d552d3f0289688a9c75f

4 years agoDensityfitting - enforce similarity increase with adaptive force scaling
Christian Blau [Tue, 22 Oct 2019 08:55:59 +0000 (10:55 +0200)]
Densityfitting - enforce similarity increase with adaptive force scaling

Previous to this patch, the force constant for density guided
simulations with adaptive force constant scaling was scaled up the same
amount that it was scaled down, not resulting in the announced enforced
increase in similarity. Now, the force constant is increased more strongly
than decreased, resulting in the desired enforced increase in similarity.

Change-Id: I5b149c79d91ea9e5ceeb5b0e7dce854bd6f34711

4 years agoAllow using GPU update with DD and update groups
Artem Zhmurov [Thu, 5 Dec 2019 13:49:25 +0000 (14:49 +0100)]
Allow using GPU update with DD and update groups

The GPU update is now can be enabled for the supported DD cases
with the GMX_FORCE_UPDATE_DEFAULT_GPU environment variable. Also
added the checks on whether the SHAKE algorithm was requested,
since SHAKE is not supported by the GPU update.

Refs. #3226, #3163.

Change-Id: I57e3ad3b8a571ec244989e888afd5cfcbaf9b75e

4 years agoEnable most of the pulling flavors with GPU update
Artem Zhmurov [Wed, 11 Dec 2019 15:19:15 +0000 (16:19 +0100)]
Enable most of the pulling flavors with GPU update

Only constraints pulling is not supported, since it is not implemented
in GPU version of LINCS. There is no reason to disallow other flavors
of pulling.

Change-Id: Iceca52bba5e040bd241a156f9cf58ab3556acdac

4 years agoDocument DOMAINDECOMP(cr) correctly
Mark Abraham [Wed, 11 Dec 2019 14:46:51 +0000 (15:46 +0100)]
Document DOMAINDECOMP(cr) correctly

It is likely there are numerous cases where this is used mistakenly
when havePPDomainDecomposition expresses the real intent. If so,
runs with 1 PP and 1 PME rank may have buggy behaviour.

Refs #2395

Change-Id: I07be73a6c690887b3043140a2a78ae6fe6bb17f1

4 years agoClarify what setting zero to some output mdp options does
Artem Zhmurov [Wed, 11 Dec 2019 10:53:31 +0000 (11:53 +0100)]
Clarify what setting zero to some output mdp options does

Change-Id: I36dc059e982c3358cbfa55596e71093ce3208446

4 years agogmxapi landing page update.
M. Eric Irrgang [Wed, 11 Dec 2019 13:50:33 +0000 (16:50 +0300)]
gmxapi landing page update.

In response to user feedback, replace some content that was confusing
instead of informative.

Change-Id: Ida8c12ba2caf4ef224b9276570bc719c9000e2bd

4 years agogmxapi documentation readability improvements.
M. Eric Irrgang [Wed, 11 Dec 2019 13:45:36 +0000 (16:45 +0300)]
gmxapi documentation readability improvements.

In response to user feedback, provide a "quick install" overview section.
Rearrange and update some content.

Change-Id: I2a1bbf1a1efbda769e330b85925ed01dbcdae29e

4 years agogmxapi documentation formatting improvements.
M. Eric Irrgang [Wed, 11 Dec 2019 13:39:56 +0000 (16:39 +0300)]
gmxapi documentation formatting improvements.

Improve some formatting mark-up. Use normative Sphinx roles for
commands, Python modules, environment variables, and file paths.

Change-Id: Iff1d4b09da13c421da809f882e73c8404eb70f38

4 years agoSet GPU update to false in case of a rerun
Artem Zhmurov [Mon, 9 Dec 2019 18:20:03 +0000 (19:20 +0100)]
Set GPU update to false in case of a rerun

Rerun does not require the numerical integration of equation of
motion, hence the useGpuUpdate should be false.

Fixes #3231.

Change-Id: I9027641e9dc32fb464ebbb6148c11c530c0eb2cd

4 years agoFinalize gmxapi 0.1
M. Eric Irrgang [Fri, 6 Dec 2019 12:29:57 +0000 (15:29 +0300)]
Finalize gmxapi 0.1

Set 0.1 release metadata for Python package and C++ library.

Note that 0.1 is API identical to 0.0.8, but we are
taking the next step to the targeted semantic versioning,
and patch releases should no longer affect the APIs.
However, we are not yet at a point where we can have
clear stability guarantees between minor versions.

Change-Id: I4f4a6ba84353730e2962b730cd1e656bae4e377a

4 years agoAvoid 386 O3 codegen bug
Mark Abraham [Fri, 6 Dec 2019 09:45:21 +0000 (10:45 +0100)]
Avoid 386 O3 codegen bug

Refs #3205

Change-Id: I2aa5018bde089b11497892dd68a7f9715e69e20e

4 years agoAdd notes on MPI with gmxapi Python package.
M. Eric Irrgang [Thu, 5 Dec 2019 10:48:18 +0000 (13:48 +0300)]
Add notes on MPI with gmxapi Python package.

Change-Id: I7ecd33fcea482b8f300873fc7fdcea2c3958215e

4 years agoPass array ref instead of casting to basic array in PME redistribute
Artem Zhmurov [Fri, 6 Dec 2019 09:35:17 +0000 (10:35 +0100)]
Pass array ref instead of casting to basic array in PME redistribute

Change-Id: I98b3c211b2669266f8bc6b37580b8f48087e3645

4 years agoProvide more feedback when listed forces tests fail
Mark Abraham [Wed, 4 Dec 2019 16:07:59 +0000 (17:07 +0100)]
Provide more feedback when listed forces tests fail

Refs #3205

Change-Id: Ic012aeaf8b35af88b78e109acabb6048d593cab3

4 years agogmxapi Python package usage prose.
M. Eric Irrgang [Thu, 5 Dec 2019 10:46:50 +0000 (13:46 +0300)]
gmxapi Python package usage prose.

* Provide a walk through of basic gmxapi Python usage.
* Update one of the helper functions in test_subgraph.py to
  make sure that a documented example is tested.

Change-Id: I2ad3368fe8a39307bcd7e676dc36627e30ab7ac1

4 years agoImprove pytest fixtures for directory management.
M. Eric Irrgang [Thu, 5 Dec 2019 14:47:07 +0000 (17:47 +0300)]
Improve pytest fixtures for directory management.

* Add a pytest command line option to control whether to remove
  temporary directories always, never, or conditionally upon test success.
* Encapsulate context managers and test fixtures for tempdir removal,
  temporary changes of working directory, and access to the new pytest
  command line argument.
* Use a context manager to use the temporary testing directories
  for working directory, as well. Works around potential issues
  with GROMACS creating temporary files in different directories
  (or filesystems) from where they are relevant.

This change makes identical changes to 3 different conftest.py files.
Consolidation into the gmxapi.testsupport module is deferred to a
separate change.

Refs #3227

Change-Id: I703d1e3806f7b4d8f2ae3b80c39ec64acd9cf3b4

4 years agoRelax cross-correlation test precision
Christian Blau [Wed, 4 Dec 2019 15:52:01 +0000 (16:52 +0100)]
Relax cross-correlation test precision

Relase the floating point precision in cross-correlation evaluations on
large data arrays further. i386 fails here with debian experimental build.

Refs #3205

Change-Id: I86c9ad1804da5be98671ac14a5bc37ea5636aad0

4 years agoAdded OpenCL build to release matrix
Mark Abraham [Mon, 5 Nov 2018 18:07:20 +0000 (19:07 +0100)]
Added OpenCL build to release matrix

Added missing information for one build.

Change-Id: I30da8ce4e19e104182ee082cc18a83e318069b3c

4 years agoRemoved unnecessary link_directories command for gtest
Mark Abraham [Wed, 4 Dec 2019 15:25:35 +0000 (16:25 +0100)]
Removed unnecessary link_directories command for gtest

This warns at link time on MacOS Catalina with macports
clang-9 and cmake 3.15.5

Change-Id: If493f72133c0388e6119ea7a30aa1dc5c5830c7a

4 years agoRemove cutoff-scheme group from default mdout.mdp output
Christian Blau [Wed, 4 Dec 2019 12:08:10 +0000 (13:08 +0100)]
Remove cutoff-scheme group from default mdout.mdp output

The .mdp default output file had a reference to the group scheme in it,
which might prove confusing to users that assume that this is still
available.

Change-Id: I434f15e46dfc0a8ebffe8d826855dc8e67168fba

4 years agoThird beta release of GROMACS 2020
Paul Bauer [Tue, 26 Nov 2019 09:37:15 +0000 (10:37 +0100)]
Third beta release of GROMACS 2020

Updated regressiontest hash

Change-Id: I96be9b7b9f3f94f6eddf1fd4603cc829fd3e1848

4 years agoRevert "Enable GPU update with DD when GPU comm features are enabled"
Paul Bauer [Tue, 3 Dec 2019 10:21:47 +0000 (11:21 +0100)]
Revert "Enable GPU update with DD when GPU comm features are enabled"

This reverts commit b88f3eadf90261555508f6a4df64ce184141a66a.

Reason for revert: Mark found the code segfaulting under some conditions with domain decomposition and update enabled, so this is not ready to be used yet.

Refs #3226

Change-Id: I45cf9564a87595d445057da071a8fca5c60f9d9a

4 years agoFix nightly build by correctly defining several
Paul Bauer [Tue, 3 Dec 2019 11:25:54 +0000 (12:25 +0100)]
Fix nightly build by correctly defining several
variables as bool instead of int.

Change-Id: Ia22fe3acdc55131ea40c80b104293273cafb1017

4 years agoEnable GPU update with DD when GPU comm features are enabled
Alan Gray [Tue, 5 Nov 2019 12:52:21 +0000 (04:52 -0800)]
Enable GPU update with DD when GPU comm features are enabled

Changes assertions to allow GPU update to run with domain
decomposition, only when GPU PME-PP communication and GPU halo
exchange features are enabled through their respective environment
variables.

Added test coverage to the gpuupdate matrix

Change-Id: Ie05dac64eada8f704c3a33d0eb6e5bc74dfcc61e

4 years agoSet update to run on GPU by default if possible
Paul Bauer [Fri, 29 Nov 2019 15:00:52 +0000 (16:00 +0100)]
Set update to run on GPU by default if possible

Change-Id: I1a2052968c8d8dd8020744bf15f974bc0d92a6ef

4 years agoHeuristics for switching between CUDA spread/gather kernels
Jonathan Vincent [Wed, 6 Nov 2019 14:55:10 +0000 (06:55 -0800)]
Heuristics for switching between CUDA spread/gather kernels

The various CUDA spread/gather kernels perform better in different circumstances,
so heuristics are used to control which one is selected.

Refs #3189

Change-Id: I32c0726021a48dc8721e337f8f41e9c9d334e05c

4 years agoAdd check for coupled constraints for CUDA update
Berk Hess [Mon, 2 Dec 2019 13:15:08 +0000 (14:15 +0100)]
Add check for coupled constraints for CUDA update

The CUDA LINCS code has a limit on the number of coupled constraints.
This is now checked during in the GPU update decision function.

Change-Id: I5eee96b82f3f5196b64a5e815eae78d4ed367a80

4 years agoExtract LINCS CUDA helper functions
Berk Hess [Mon, 2 Dec 2019 10:43:16 +0000 (11:43 +0100)]
Extract LINCS CUDA helper functions

Change-Id: I00fb311053aa9c13036b401107399409f9a01599

4 years agoRelax test tolerance for cross correlation measure for densities
Christian Blau [Mon, 2 Dec 2019 13:52:27 +0000 (14:52 +0100)]
Relax test tolerance for cross correlation measure for densities

Some compilers do not perform the optimisations that are necessary to
reach default real tolerance when calculating the cross correlation of
larger three dimensional densities (100x100x100 voxels)

This patch loosens the requirement on the precision of cross correlation
evaluations.

refs #3205

Change-Id: Iad1bb1b17bb6935b2ce2537bcbb6c3902172a6bc

4 years agoUse DOI for citing in reference manual section
Paul Bauer [Fri, 29 Nov 2019 15:10:05 +0000 (16:10 +0100)]
Use DOI for citing in reference manual section

Change-Id: I84ee722345669afbca972697ebcc76d874af1b46

4 years agoFurther improve taskassignment exception handling
Mark Abraham [Thu, 28 Nov 2019 16:49:26 +0000 (17:49 +0100)]
Further improve taskassignment exception handling

It was still posssible that the exit() from one thread-MPI rank would
cut off another rank while the latter's error output before it
finished being written to the terminal stream.

This solution is still deficient in some aspects, but it will
always work on single-node testing (ie. including Jenkins) and
often work usefully in multi-node testing.

Change-Id: Ib41e012b9f56591c80046b44891dd77af5a2f938

4 years agoMerge "Merge branch release-2019 into release-2020" into release-2020
Berk Hess [Fri, 29 Nov 2019 16:22:15 +0000 (17:22 +0100)]
Merge "Merge branch release-2019 into release-2020" into release-2020

4 years agoFix unaligned access with AVX512
Paul Bauer [Fri, 29 Nov 2019 13:21:44 +0000 (14:21 +0100)]
Fix unaligned access with AVX512

Found and debugged by Gilles Gouaillardet

Change-Id: I9203593c94eb745020274b126601d30e49d7aac2

4 years agoFix build error without thread or regular mpi
Paul Bauer [Fri, 29 Nov 2019 10:32:17 +0000 (11:32 +0100)]
Fix build error without thread or regular mpi

Some more unused variable warnings that I haven't fixed yet.

Fixes #3218

Change-Id: Id47718bb0af97d3a494afa133af8b54ba71b9d5d

4 years agoPrint OpenCL error info in case of failed assertion in device buffer management
Artem Zhmurov [Thu, 28 Nov 2019 18:59:36 +0000 (19:59 +0100)]
Print OpenCL error info in case of failed assertion in device buffer management

Having error code availible is helpful for debugging.

Change-Id: I71c808c9171eae3f87b72253f3e81f0e2e2c22a2

4 years agoMerge branch release-2019 into release-2020
Mark Abraham [Fri, 29 Nov 2019 12:52:13 +0000 (13:52 +0100)]
Merge branch release-2019 into release-2020

Change-Id: I138d910b0d5cb8555460f87345c4e312e528a3ce

4 years agoMake Leap-Frog CUDA kernel selection safer
Artem Zhmurov [Thu, 28 Nov 2019 15:09:48 +0000 (16:09 +0100)]
Make Leap-Frog CUDA kernel selection safer

This is a small improvment on a recent bug fix, which adds:
1. An implicit boolean on whether the kernel with temperature
   coupling velocity scaling should be selected.
2. Adds an assertion on the correctness of an input.

Original bug fix: b362a880f75d93e9252affdad12ed5448fbac517

Change-Id: Idd981337f2f53f4d3a803ce50162b2f9c753b860

4 years agoRename some variables in GPU Update
Artem Zhmurov [Thu, 28 Nov 2019 09:59:31 +0000 (10:59 +0100)]
Rename some variables in GPU Update

The temperature and pressure coupling booleans in GPU version of
update were renamed to better represent their meaning. Minor
refactoring in the UpdateConstraintsCUDA CPU-stub class.

This change is just a refactoring, mostly renaming.

Change-Id: I039722a5ef827a20264b6d4ac6c6436227094e09

4 years agoCheck for using correct hwloc headers and runtime
Paul Bauer [Wed, 27 Nov 2019 15:35:16 +0000 (16:35 +0100)]
Check for using correct hwloc headers and runtime

Also add assertion in the code to prevent errors from linking
against the wrong library while running.

Fixes #3200

Change-Id: Ib2f2861702e111f67c38b0c9d65ccbe4c81a0ccd

4 years agoClear device force buffer if it was reallocated
Artem Zhmurov [Thu, 28 Nov 2019 16:41:43 +0000 (17:41 +0100)]
Clear device force buffer if it was reallocated

The force buffer on the device is assumed to be clear at the start of
the step. This was not ensured if the buffer was realocated after e.g.
domain decomposition.

Change-Id: I4677f71edc9479d972a6d9471b8cbe2c377f8827

4 years agoUpdate documenation for NPT GPU update
Berk Hess [Thu, 28 Nov 2019 15:21:53 +0000 (16:21 +0100)]
Update documenation for NPT GPU update

Change-Id: Iaa0ee0555621955c6eb7276d1b9f097420c4e70a

4 years agoFix pressure coupling with GPU update
Artem Zhmurov [Tue, 12 Nov 2019 10:54:35 +0000 (11:54 +0100)]
Fix pressure coupling with GPU update

This fixes the pressure coupling Parrinello-Rahman and
Berendsen schemes when Update is offloaded to the GPU.
The coordinate scaling is performed on GPU. The PBC
data is also copied to device when periodic box is
updated by the pressure coupling.

Fixes #3182.

Change-Id: I57226c9f0fa249cb018d38b653a6ecb3ffd9c7c2

4 years agoFix postsubmit
Paul Bauer [Thu, 28 Nov 2019 12:28:57 +0000 (13:28 +0100)]
Fix postsubmit

Change-Id: I47496ad6e82f9b67060979f916d5d5510fdba182

4 years agoRemove assertion failure in AWH without initial stage
Berk Hess [Thu, 28 Nov 2019 10:58:48 +0000 (11:58 +0100)]
Remove assertion failure in AWH without initial stage

When not using the initial stage in AWH, we should not check
for coverage and histogram anomalies at step 0.

Fixes #3217

Change-Id: Iee19c4740c02ce56c0b43ad89efb6e37f4ad1a0d

4 years agoFix bug with GPU pressure scaling at non T-scaling steps
Berk Hess [Thu, 28 Nov 2019 09:23:45 +0000 (10:23 +0100)]
Fix bug with GPU pressure scaling at non T-scaling steps

Only affected Parrinello-Rahman coupling, which is not enabled yet.

Change-Id: Ie081ffe2a925de92361c43b1f5de8e1fe324a486

4 years agoFix check-pointing for density guided simulations
Christian Blau [Wed, 27 Nov 2019 11:10:03 +0000 (12:10 +0100)]
Fix check-pointing for density guided simulations

Previously, checkpointing for density-guided simulations did not take
into account that the checkpointing occurs in the middle of the md-loop.

Now, the state is stored before the force-calculations, so that
simulations are restarted correctly.

refs #2282
fixes #3215

Change-Id: Ide4ebf94f2801acbe476a5cd348af66d0a6f28ac

4 years agoCombine two booleans in md loop
Artem Zhmurov [Wed, 27 Nov 2019 22:23:33 +0000 (23:23 +0100)]
Combine two booleans in md loop

Two booleans that were supposed to have identical meaning have being
created in the md loop. This patch conbines them into one. Note that
the scope of the boolean that is responsible for the D2H coordinates
copy have expanded, which represents correct behavior.

Change-Id: I421b18ee81f4cf9cce19cdd60023cb097d85a5d7

4 years agoDisable GPU PME-PP communication with mdrun -pmefft cpu
Mark Abraham [Wed, 27 Nov 2019 08:56:37 +0000 (09:56 +0100)]
Disable GPU PME-PP communication with mdrun -pmefft cpu

The MdrunMpiTest with two ranks defaults to using a separate PME rank,
and that attempts to run all flavors of -pmefft.  However only -pmefft
gpu is targeted for any of the new GPU development, so the development
feature flags need to account for that.

SimulationWorkload is also improved to be aware of this fact.

Change-Id: I57c8e8ce81fdb7aaf65de89feebb369d3f2f10eb

4 years agoAdd method for coordinates scaling into GPU update-constrain class
Artem Zhmurov [Tue, 12 Nov 2019 09:55:02 +0000 (10:55 +0100)]
Add method for coordinates scaling into GPU update-constrain class

The coordinates scaling is needed on the pressure coupling step in
case the box size has changed.

Change-Id: I0bf7c7a2f77c1bd42dd0713f689096eaca409f88

4 years agoAdd gmxapi_extension tests to 'tests' target.
M. Eric Irrgang [Wed, 6 Nov 2019 15:07:56 +0000 (18:07 +0300)]
Add gmxapi_extension tests to 'tests' target.

Improve GMX_PYTHON_PACKAGE convenience targets. When GMX_PYTHON_PACKAGE
is ON, the subprojects in the python_packaging subdirectory are built.
When testing is enabled, the sample_restraint C++ unit tests were
transitively included in the 'check' target, but no mechanism was in
place to ensure they were built before the CTests and google tests
were run. This change adds the test binaries as dependencies of the
'tests' target so that the test binaries are built through normal
machinery when GROMACS is built with testing enabled and
GMX_PYTHON_PACKAGE=ON.

Change-Id: I751655dc6b6d4d58b5bbb9f5f522e26382b4f0a2

4 years agoEvent-based Dependency for GPU Force Halo Exchange
Alan Gray [Tue, 22 Oct 2019 14:23:11 +0000 (07:23 -0700)]
Event-based Dependency for GPU Force Halo Exchange

Introduces new event recorded when exchanged forces are ready on GPU,
and passes this into force buffer ops using dependencyList. Removes previous
mechanism of forcing local stream to wait on non-local stream.

Addresses part of #3093
Refs  #3194

Change-Id: I768898839e5c6a653894d5eb80354f0e423e06ed

4 years agoImprove handling of task-assignment exceptions
Mark Abraham [Mon, 25 Nov 2019 12:10:50 +0000 (13:10 +0100)]
Improve handling of task-assignment exceptions

Resolves several current TODOs to improve the reporting of error
messages derived from exceptions. This improves the robustness of the
regressiontests logic that depends on parsing the error message to
understand whether and how to retry running mdrun.

Change-Id: I8c9eac95a2ef4861e90350e77fb9beafb08e9d2e

4 years agoRelax tolerance for bd tests
Mark Abraham [Tue, 26 Nov 2019 09:54:14 +0000 (10:54 +0100)]
Relax tolerance for bd tests

The implementation is somehow not very reproducible.

Refs #3205

Change-Id: Ibf9de00d6e67b8e2237cc8726f300b2bf8ad2327

4 years agoBug fix for nonlocal D2H coordinate transfer synchronization
Alan Gray [Tue, 26 Nov 2019 10:12:02 +0000 (02:12 -0800)]
Bug fix for nonlocal D2H coordinate transfer synchronization

Fixes bug introduced in I2e2ba1b6436f087d1f2fef4ff876445814a724e7,
which replaced the NB-module D2H nonlocal coordinate copy launch with
a new State Propagator module equivalent, but did not change the
corresponding event wait call, such that the dependency was not
satisfied. This change replaces the NB event wait with the correct
State Propagator event wait.

Change-Id: I7c812974c145d315fa6516b2bbea39164439728e

4 years agoFix unused variable warning in ewald code
Paul Bauer [Tue, 26 Nov 2019 10:29:04 +0000 (11:29 +0100)]
Fix unused variable warning in ewald code

Fixes #3193

Change-Id: Id3f8422ec95e6864553a6e9f03a144fbe4ed8674

4 years agoFix issues with AWH with periodic pulling
Berk Hess [Mon, 25 Nov 2019 14:43:05 +0000 (15:43 +0100)]
Fix issues with AWH with periodic pulling

Removed fatal error with AWH with periodic pull-geometry 'direction'
when the distance was within 2% of half the box size.
Changed an assertion failure when the AWH interval was larger than
the box size to a fatal error.
Clarified the documentation for pull geometry 'direction-periodic'.

Refs #2946

Change-Id: I447a9a490a5883139afc268fd367b8b249591fbc

4 years agoFix race condition in GPU X halo exchange with GPU update
Alan Gray [Sat, 2 Nov 2019 19:24:43 +0000 (12:24 -0700)]
Fix race condition in GPU X halo exchange with GPU update

When the GPU Update featured is enabled on multi-GPU with the GPU halo
exchange feature, it was possible that the GPU receiving the halo data
would still be working on the previous timestep and writing to the
same coordinate buffer in the GPU update, causing a race
condition. This change replaces the pre-existing synchronization
mechanism of a MPI Send/Recv of a boolean flag with the same but
exchanging the events that are recorded when the coordinates are ready
on the device. The remote event is then enqueued to the stream that
the GPU uses for pushing the data, satisfying the dependency of the
push on the remote update being completed on the GPU.

Change-Id: Ie16a93dcc3064d73da1e560d82b4e76870d03e52

4 years agoFix duplicate CONNECT records in pdb files
Christian Blau [Mon, 25 Nov 2019 15:18:40 +0000 (16:18 +0100)]
Fix duplicate CONNECT records in pdb files

When adding connect records in pdb files, it was not checked if records
already existed and were thus duplicated in output. This patch fixes
this behavior.

Fix originally provided by Boris Timofeev.

refs #3206

Change-Id: I5850f4b6279b37df07282acc4416f433099d90c8

4 years agoUse same matrix for Parrinello-Rahman and Berendsen coordinates scaling
Artem Zhmurov [Tue, 12 Nov 2019 17:33:37 +0000 (18:33 +0100)]
Use same matrix for Parrinello-Rahman and Berendsen coordinates scaling

Currently, Parrinello-Rahman uses the matrix created in the md.cpp,
whereas it is created when needed internally for the Berendsen.
This commit renames the matrix and make use of it in both barostats.

Change-Id: I66e010a1ed7efbc93c8a2240ccb7b9e174fd7e45
(cherry picked from commit abab855fdceee437c33010ebbe544afe1f88db87)

4 years agoRead mrc density map format with all endianesses.
Christian Blau [Fri, 22 Nov 2019 16:51:23 +0000 (17:51 +0100)]
Read mrc density map format with all endianesses.

Swaps the endianess of reading mrc density maps if header is not sane.

refs: #2282

Change-Id: I417e402b2ab801c22d9963fabb0e60b186288651

4 years agoCheck mrc header for sanity
Christian Blau [Thu, 21 Nov 2019 15:48:07 +0000 (16:48 +0100)]
Check mrc header for sanity

Add functionality to check mrc density map headers for sanity.

Required for endianess correction, because the endianess stamp is not
guaranteed to be right for most .mrc maps.

Change-Id: I8956bcbc4b9fd7b3b6346c3b4cdd0022c9e3332a

4 years agoFix index mapping issue with LINCS on GPU
Artem Zhmurov [Thu, 21 Nov 2019 16:33:57 +0000 (17:33 +0100)]
Fix index mapping issue with LINCS on GPU

In some cases (e.g. when DD is used), coupled constraints blocks
can have constraint indices that are interleaved with other blocks.
This was not taken into account when setting up the LINCS GPU data
structures. This patch fixes that by ensuring that all coupled
constraints are added to the mapping array one after the other.
Add note in decideWhetherToUseGpuForUpdate() that we need to add
a check for this when update auto will choose gpu in some cases.

Also renamed spaceNeeded by numCoupledConstraints to avoid confusion.

Fixes #3211.

Change-Id: Ib402c5cc9fc20116496034cdc11be921586bbd15

4 years agoInMemorySerializer with endianess swap.
Christian Blau [Tue, 29 Oct 2019 14:42:46 +0000 (15:42 +0100)]
InMemorySerializer with endianess swap.

Adds an InMemorySerializer that swaps endianess. Required for reading
data that is not handled with XDR serializers and was written with
different endianess, e.g., mrc files for density guided simulations.

refs #2282

Change-Id: Ice96fe8684bb0b920c22dc7d3c2b2087260eb9ad

4 years agoNew cool quote
Artem Zhmurov [Sat, 23 Nov 2019 17:34:10 +0000 (18:34 +0100)]
New cool quote

Change-Id: I8998f56f73a595df0e1b547d307eef65afe7944d

4 years agoNew cool quote
Mark Abraham [Thu, 21 Nov 2019 15:03:21 +0000 (16:03 +0100)]
New cool quote

Change-Id: I96e52f16aeaf2e41db3a68b889dcd0afae966828

4 years agoFix building on Solaris with GCC
Vedran Miletić [Fri, 26 Jul 2019 14:48:58 +0000 (16:48 +0200)]
Fix building on Solaris with GCC

GROMACS now compiles on Solaris x86, specifically illumos distribution
openindiana. GCC complained about a missing sqrt() variant which was
addressed with static_cast and linker complained about missing
libsocket which was addressed with SunOS-specific entry in
target_link_libraries.

Refs #3050

Change-Id: Ic14a9327fa353270ef0e787b4d2357e86e71da53

4 years agoAdd D2H copies for the checkpointing
Artem Zhmurov [Wed, 30 Oct 2019 10:15:04 +0000 (11:15 +0100)]
Add D2H copies for the checkpointing

If the update is offloaded, the current coordinates and velocities
are stored on the device and have to be copied for the checkpointing.

Change-Id: I391bb83e1c70a17c1679f479234a157ce606a908

4 years agoMove the copy of the velocities for the output closer to the output
Artem Zhmurov [Tue, 29 Oct 2019 20:18:08 +0000 (21:18 +0100)]
Move the copy of the velocities for the output closer to the output

The D2H copy of velocities is split into two calls, one of which is
moved closer to the output, where it is consumed. This is in preparation
to creation a unified method to copy all data for the outuput when
it is needed.

Change-Id: I4b81aa95e2c0763bb3ebb4a7d8b18611765c54de

4 years agoQuiet pdb2gmx and use gmx_fatal
Berk Hess [Wed, 20 Nov 2019 16:52:18 +0000 (17:52 +0100)]
Quiet pdb2gmx and use gmx_fatal

Removed stderr prints for every atom and residue type read.
Changed warning for incorrect atomtype line to a fatal error.

Change-Id: I657aedda04dc6b5a97447a829a1438941cd124db

4 years agoMerge 'origin/release-2019' into release-2020
Paul Bauer [Wed, 20 Nov 2019 17:34:52 +0000 (18:34 +0100)]
Merge 'origin/release-2019' into release-2020

Resolved Conflicts:
docs/release-notes/2019/2019.5.rst
src/gromacs/domdec/domdec_topology.cpp
src/gromacs/fileio/groio.cpp

Change-Id: Icd9d3bfee7a2ba524057791f4ee0fcf8db13797f

4 years agoMove pmePpCommGpu reset outside do_md
Alan Gray [Tue, 19 Nov 2019 15:19:42 +0000 (07:19 -0800)]
Move pmePpCommGpu reset outside do_md

Some tests (at least the transformAtoB freeenergy test) were not
previously executing this code block to explicitly destroy the PME-PP
GPU object, causing a crash when the smart pointer is automatically
destroyed later after the GPU context is no longer available.

Change-Id: I107832900d2230a926e00744f913c76e998eacf6