alexxy/gromacs.git
4 years agoMerge branch release-2020
Mark Abraham [Thu, 21 Nov 2019 09:45:55 +0000 (10:45 +0100)]
Merge branch release-2020

Change-Id: I72d135ce8e774d1ff70b66d86cac22eed864425e

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

4 years agoRemove stub content from gmxapi docs.
M. Eric Irrgang [Fri, 8 Nov 2019 20:39:16 +0000 (23:39 +0300)]
Remove stub content from gmxapi docs.

This change removes or deactivates incomplete documentation in advance
of the GROMACS 2020 release candidate.

Change-Id: Ibc0e9714b95e225da4dac0632b87b4fe048c7432

4 years agoQuiet uninitialized variable warning with clang 9
Mark Abraham [Wed, 20 Nov 2019 12:21:41 +0000 (13:21 +0100)]
Quiet uninitialized variable warning with clang 9

This warning about thread being uninitialized is a false positive, but
the fix implements a good practice anyway.

Change-Id: I7045bb9a69155b2546c5ed2c3d352f3d1a7b8e53

4 years agoUpdated release notes for CODATA update
Mark Abraham [Sat, 16 Nov 2019 19:08:12 +0000 (20:08 +0100)]
Updated release notes for CODATA update

Was missing in 536052b4c4

Change-Id: I22fbbb3a8e11ab423b0e7e77e61b2098f4e5e6c6

4 years agoFix bonded atom communication performance
Berk Hess [Mon, 18 Nov 2019 15:39:01 +0000 (16:39 +0100)]
Fix bonded atom communication performance

The filtering of atoms to communicate for bonded interactions that
are beyond the non-bonded cut-off was effectively missing, because
the home atom indices were not set. This lead to many more atoms
being communicated.

Change-Id: I4bd5b9b561a3077e055186f312939221dba6cefa

4 years agoFix icc-19 warning in nightly matrix
Artem Zhmurov [Tue, 19 Nov 2019 10:14:05 +0000 (11:14 +0100)]
Fix icc-19 warning in nightly matrix

The nessesity of having the default return statement after the
if-else constructions depended on the #ifdef statement. As the result,
the compiler may or may not require having the default return depending
on the definition of the GMX_LIB_MPI macros. This change moves one of
the conditional return statements outside the #ifdef construction, making
the default return statement irrelevant unconditionally of the macros
definition.

Change-Id: I1da1fe841b799f716db74fc67a8fb633af8f95d0

4 years agoFix intermolecular interactions with DD
Berk Hess [Mon, 18 Nov 2019 15:33:29 +0000 (16:33 +0100)]
Fix intermolecular interactions with DD

The links for atoms with intermolecular interactions would use
incorrect atom indices. This meant that mdrun could exit with
a missing interactions errors when using domain decompostion
with intermolecular interactions at distance larger than the cutoff.

Fixes #3204

Change-Id: I0c78810204f116f028b18c83bc6b51859ed7245a

4 years agoTrigger ocl_nbnxm_kernels target with clang-tidy
Szilárd Páll [Mon, 8 Oct 2018 15:50:05 +0000 (17:50 +0200)]
Trigger ocl_nbnxm_kernels target with clang-tidy

Target only compiles object files for compiler warnings checks.
Also renamed target.

Refs #2661

Change-Id: Iffe5a2fa7d34d6bc4ff2081c3210191141ddcaf7

4 years agoRemove extraneous file.
M. Eric Irrgang [Fri, 8 Nov 2019 20:26:38 +0000 (23:26 +0300)]
Remove extraneous file.

This change removes an irrelevant .gitattributes file that made its way in
to docs/gmxapi.

Change-Id: I444a12f4adaa74c19ec910707f8a04982b1d8f21

4 years agoAdd transitional links for online gmxapi Python package reference.
M. Eric Irrgang [Fri, 8 Nov 2019 20:05:02 +0000 (23:05 +0300)]
Add transitional links for online gmxapi Python package reference.

* Update and clarify pythonreference stub for when Python package was
  not available.
* Note related Redmine reference.
* Remove `python-procedural` label, which had lost meaning and which
  could cause awkward repositioning for the pythonreference stub with
  no section heading to follow the label.

Refs #2985

Change-Id: If81ba6500ce078fe4fc94bf37285324ec5702b1b

4 years agoImprove gmxapi Dockerfiles.
M. Eric Irrgang [Fri, 8 Nov 2019 18:59:18 +0000 (21:59 +0300)]
Improve gmxapi Dockerfiles.

* Update gromacs-dependencies to use ubuntu:bionic and standard cmake package.
* Use more default CMake config in gromacs image.
* Reorganize ci.dockerfile for more effective Docker build caching.
* Reorganize docs.dockerfile for more effective Docker build caching.

Change-Id: Ia2858f234d3a4a104fc1c79ce8fb28106c196bd4

4 years agoFix clang-tidy 8 warnings in OpenCL nbnxm kernels
Szilárd Páll [Wed, 11 Sep 2019 22:41:01 +0000 (00:41 +0200)]
Fix clang-tidy 8 warnings in OpenCL nbnxm kernels

Since the bump from v7 to 8 new warnings need to be dealt with.

Change-Id: I392308a01087797dcbf3522df53c7fbd7f1fa31a

4 years agoRelaxed listed forces test tolerances
Mark Abraham [Sat, 16 Nov 2019 22:42:26 +0000 (23:42 +0100)]
Relaxed listed forces test tolerances

Different compilers on different hardware generate different FP
instructions, which we need to tolerate.

Refs #3205

Change-Id: I965cecd82593dd7a0dd9e34d69937d06cd60735c

4 years agoStop testing that hwloc cache-size detection works properly
Mark Abraham [Sat, 16 Nov 2019 20:04:30 +0000 (21:04 +0100)]
Stop testing that hwloc cache-size detection works properly

This was never a unit test of whether GROMACS HardwareTopology can
detect cache line size, because it requires both that hwloc works
correctly on the execution hardware, and that GROMACS code uses its
results correctly. So we should stop running such tests.

Refs #3205

Change-Id: I4d13e39620335b235f9969e5e09299fb9b41b1a0

4 years agoReplace blocking with non-blocking receive in GPU PME coordinate receiver
Alan Gray [Fri, 1 Nov 2019 14:45:25 +0000 (07:45 -0700)]
Replace blocking with non-blocking receive in GPU PME coordinate receiver

Replaces MPI_Recv with MPI_Irecv in original coordinate receiver
method, and adds associated method containing MPI_Waitall which is
called to wait on data completion across all PP ranks.

Implements part of #3158

Change-Id: Ifd152973e4d9a4da53c0541e591b41d29be173bb

4 years agoRemoving code duplications in StatePropagatorDataGpu
Artem Zhmurov [Thu, 14 Nov 2019 16:50:29 +0000 (17:50 +0100)]
Removing code duplications in StatePropagatorDataGpu

The assertions on the correct locality and existence of the
CommandStream are moved into the general copy functions, instead
of duplications in each specific case.

Change-Id: I2a239ca8e32538356b544918ed8545229d7935f3

4 years agoFuse two adjacent neighbor search branches in do_force
ejjordan [Thu, 14 Nov 2019 13:03:19 +0000 (14:03 +0100)]
Fuse two adjacent neighbor search branches in do_force

Change-Id: I8f81451fbce86f1bd26388ed2348112363bc3bbf

4 years agoRemove qm dependence on forcerec in do_force_lowlevel
ejjordan [Wed, 13 Nov 2019 17:07:52 +0000 (18:07 +0100)]
Remove qm dependence on forcerec in do_force_lowlevel

Also cleaned up some initialization.

Change-Id: Iccc5e80ace52409d734089714c49302c2f0fb994

4 years agoSimplify t_forcerec destruction
Berk Hess [Thu, 14 Nov 2019 08:07:22 +0000 (09:07 +0100)]
Simplify t_forcerec destruction

Destruction of t_forcerec was, without need, done in two steps with
complicated dependencies using the functions free_gpu_resources()
and done_forcerec().
Now only the destructor is used. To make this work, cginfo_mb and
nbfp in t_forcerec needed to be converted to std::vector.

Change-Id: I836bcdbd52b03834d4f2661475247fc56b907518

4 years agoRemove useGpuNonbonded from launchGpuEndOfStepTasks function signature
ejjordan [Tue, 12 Nov 2019 23:29:11 +0000 (00:29 +0100)]
Remove useGpuNonbonded from launchGpuEndOfStepTasks function signature

Change-Id: Ic2418a6db1640474409a8428f55e3ba035d98b6c

4 years agoFix formatting error
Paul Bauer [Mon, 11 Nov 2019 13:01:38 +0000 (14:01 +0100)]
Fix formatting error

Change-Id: I60d50edfc050eb4b7015d4bf6dab3c8c279473e3

4 years agoAdd build to run clang-format update on Jenkins
Paul Bauer [Tue, 5 Nov 2019 15:03:08 +0000 (16:03 +0100)]
Add build to run clang-format update on Jenkins

Change-Id: Ie0a9cf442b172e9e96d786d01dd381e557e43e73

4 years agoCreate clang-tidy cmake option
ejjordan [Tue, 12 Nov 2019 22:46:59 +0000 (23:46 +0100)]
Create clang-tidy cmake option

This option checks that clang-tidy will work and allows clang-tidy
to be set using the libcurses gui.

Change-Id: I6660a1d72dafa4328974bd3fc557fff8ec7d6b7e

4 years agoUpdated physical constants to CODATA 2018
Erik Lindahl [Tue, 5 Nov 2019 21:18:58 +0000 (22:18 +0100)]
Updated physical constants to CODATA 2018

Only minor changes, but we should stay current.

Updated reference data and reset some test tolerances.

Change-Id: Ia2d1007f6a62d8483c2b9f11938d8f2763584de5

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

4 years agoChange version for master
Paul Bauer [Mon, 11 Nov 2019 12:03:52 +0000 (13:03 +0100)]
Change version for master

Also adds dummy documentation and sets the regressiontest label back to
master from release-2020.

Change-Id: Ib2186f944ecebdcb3910d240a8e6446eec85fb5d

4 years agoFix type in clang-format.sh help text
ejjordan [Tue, 12 Nov 2019 23:36:07 +0000 (00:36 +0100)]
Fix type in clang-format.sh help text

The correct git hook does not contain an underscore, as is noted in the documentation
also listed in the help text.

Change-Id: I8d8d4374fd9be39291ce34324710cadfcf0c3040

4 years agoIndicate which versions are no longer supported
Paul Bauer [Mon, 11 Nov 2019 12:08:52 +0000 (13:08 +0100)]
Indicate which versions are no longer supported

Changed top level page for release notes to show which versions are no
longer maintained.

Change-Id: I607576051323fe1e20a27a52cdc7ad84926a6b1c

4 years agoAchieve gmxapi fr15.
M. Eric Irrgang [Fri, 1 Nov 2019 10:16:30 +0000 (13:16 +0300)]
Achieve gmxapi fr15.

gmxapi.mdrun was missing the described 'parameters' output,
but fr15 was essentially met by the addition of modify_input.

Change-Id: I9e698a046a2717e69af3076c80fabc8ccb85ee12

4 years agoUpdates to gmxapi FR15 acceptance test.
M. Eric Irrgang [Tue, 5 Nov 2019 15:14:45 +0000 (18:14 +0300)]
Updates to gmxapi FR15 acceptance test.

* Let the test be runnable both with and without MPI.
* Improve the logging configuration.
* Update the test fixtures.
* Change the tested parameter edit to one that can be safely modified
  by directly editing the inputrec.

Change-Id: I7847bc47e3e244e82f6fd0d5471a097cdeecfbd5

4 years agoUpdate notes and tests regarding gmxapi acceptance tests.
M. Eric Irrgang [Fri, 1 Nov 2019 10:16:30 +0000 (13:16 +0300)]
Update notes and tests regarding gmxapi acceptance tests.

* Add notes on gmxapi functional requirements to gmxapi.version module.
* Update and acknowledge FR7 passing.
* Note a missing dependency in FR8.
* Clarify FR2 is superseded by FR3.

Change-Id: Ia633c02bd09e729aa68bf4a3d28102e991aeb7e9

4 years agoAchieve gmxapi fr15.
M. Eric Irrgang [Fri, 1 Nov 2019 10:16:30 +0000 (13:16 +0300)]
Achieve gmxapi fr15.

gmxapi.mdrun was missing the described 'parameters' output,
but fr15 was essentially met by the addition of modify_input.

Change-Id: I9e698a046a2717e69af3076c80fabc8ccb85ee12

4 years agoUpdates to gmxapi FR15 acceptance test.
M. Eric Irrgang [Tue, 5 Nov 2019 15:14:45 +0000 (18:14 +0300)]
Updates to gmxapi FR15 acceptance test.

* Let the test be runnable both with and without MPI.
* Improve the logging configuration.
* Update the test fixtures.
* Change the tested parameter edit to one that can be safely modified
  by directly editing the inputrec.

Change-Id: I7847bc47e3e244e82f6fd0d5471a097cdeecfbd5

4 years agoUpdate notes and tests regarding gmxapi acceptance tests.
M. Eric Irrgang [Fri, 1 Nov 2019 10:16:30 +0000 (13:16 +0300)]
Update notes and tests regarding gmxapi acceptance tests.

* Add notes on gmxapi functional requirements to gmxapi.version module.
* Update and acknowledge FR7 passing.
* Note a missing dependency in FR8.
* Clarify FR2 is superseded by FR3.

Change-Id: Ia633c02bd09e729aa68bf4a3d28102e991aeb7e9

4 years agoModernize naming in GPU buffer ops kernels
Alan Gray [Thu, 7 Nov 2019 16:15:40 +0000 (08:15 -0800)]
Modernize naming in GPU buffer ops kernels

Adresses #3022

Change-Id: I367b62e0f3312270c1d543675fab81233b4d1b86

4 years agoFix mdp parameter handling in mdrun tests
ejjordan [Thu, 7 Nov 2019 15:10:34 +0000 (16:10 +0100)]
Fix mdp parameter handling in mdrun tests

Some mdp options that we intended to be set were in fact not being set.
In the two cases where mdp options were not in fact being set the default
option was desired, so this patch does not change any behavior. A note is
added to the mdp options handling code. A better long term solution might
look like popping options off the parameter map and throw if there are
options left after all defaults have been printed. This however may not
be worth the effort as the mdp options handling could change significantly
in the short term.

Change-Id: Ied6580683c91938e577861be43841e7dc3dcd8cd

4 years agoFix mdp parameter handling in mdrun tests
ejjordan [Thu, 7 Nov 2019 15:10:34 +0000 (16:10 +0100)]
Fix mdp parameter handling in mdrun tests

Some mdp options that we intended to be set were in fact not being set.
In the two cases where mdp options were not in fact being set the default
option was desired, so this patch does not change any behavior. A note is
added to the mdp options handling code. A better long term solution might
look like popping options off the parameter map and throw if there are
options left after all defaults have been printed. This however may not
be worth the effort as the mdp options handling could change significantly
in the short term.

Change-Id: Ied6580683c91938e577861be43841e7dc3dcd8cd

4 years agoFix 2 broken NOLINT's from clang-format change
ejjordan [Fri, 8 Nov 2019 19:49:25 +0000 (20:49 +0100)]
Fix 2 broken NOLINT's from clang-format change

Also made the clang format help text more useful and corrected an
incorrect documentation suggestion.

Change-Id: Ibd7706b3ea1a6adc2ab459fac818e093b64dac10

4 years agoFix 2 broken NOLINT's from clang-format change
ejjordan [Fri, 8 Nov 2019 19:49:25 +0000 (20:49 +0100)]
Fix 2 broken NOLINT's from clang-format change

Also made the clang format help text more useful and corrected an
incorrect documentation suggestion.

Change-Id: Ibd7706b3ea1a6adc2ab459fac818e093b64dac10

4 years agoFix bug introduced by clang-format reformat.
M. Eric Irrgang [Fri, 8 Nov 2019 14:55:54 +0000 (17:55 +0300)]
Fix bug introduced by clang-format reformat.

In the post-beta2 application of clang-format, an extra closing brace
was inserted at the end of an assignment of a multi-line lambda. The
extra closing brace prematurely ended an `if` block, causing compiler
errors through the rest of the file. Simply reverting the formatting
of this section of the file does not seem to retrigger the reformatting
error.

Change-Id: I3ae83789337bb60284aeaad15eec36eb99f33708

4 years agoFix bug introduced by clang-format reformat.
M. Eric Irrgang [Fri, 8 Nov 2019 14:55:54 +0000 (17:55 +0300)]
Fix bug introduced by clang-format reformat.

In the post-beta2 application of clang-format, an extra closing brace
was inserted at the end of an assignment of a multi-line lambda. The
extra closing brace prematurely ended an `if` block, causing compiler
errors through the rest of the file. Simply reverting the formatting
of this section of the file does not seem to retrigger the reformatting
error.

Change-Id: I3ae83789337bb60284aeaad15eec36eb99f33708

4 years agoApply clang-format to source tree
Paul Bauer [Thu, 17 Oct 2019 12:23:56 +0000 (14:23 +0200)]
Apply clang-format to source tree

Also change default of reformat-all.sh to use clang-format.

Had to also made changes for clang-tidy to pass.

Clang format is set as the default for the pre-commit hook, with
uncrustify disabled.

Small changes to .clang-format that should prevent unpopular formatting
of constructor elements and function arguments.

Also set BreakBeforeBinaryOperators = NonAssignment, so that some code
formatting stays closer to previous uncrustify style.

Change-Id: Ic2fbfa21bfc27392ec4c9ebe701291ee59f96e1d

4 years agoFix .gro large box writing
Berk Hess [Tue, 5 Nov 2019 08:41:02 +0000 (09:41 +0100)]
Fix .gro large box writing

Contrary to the format specification in the manual, the box components
in the .gro file were not separated by whitespace when components
(except for the first one) were >= 1000 or <= -100. Now a space is
always printed. This might not match the original GROMOS format,
but most codes reading .gro file assume space separation.
Note formatting of boxes that did have spacing is not changed.

Fixes #3176

Change-Id: I8cfcde98b46550b16b9f6bc299dc0b67454b2437

4 years agoStochastic dynamics - document that nsttcouple is ignored
Christian Blau [Thu, 7 Nov 2019 12:52:45 +0000 (13:52 +0100)]
Stochastic dynamics - document that nsttcouple is ignored

Mention that nsttcouple plays no role for the stochastic dynamics
integrator.

Change-Id: I4ea40ddd0fa6bb812147758b693c8009f51838c9

4 years agoDeprecated sc-r-power=48
Berk Hess [Wed, 6 Nov 2019 15:40:54 +0000 (16:40 +0100)]
Deprecated sc-r-power=48

Change-Id: I2e728228432498ad9641e52397523bd1a1135811

4 years agoWork around broken Apple compilers in Mac OS 10.15
Erik Lindahl [Wed, 6 Nov 2019 13:00:37 +0000 (14:00 +0100)]
Work around broken Apple compilers in Mac OS 10.15

The Xcode compiler in Mac OS Catalina checks and enforces
stack alignment by default, but embarrasingly enough the
C library provided by Apple fails to adhere to the
aligned stack for AVX despite bug reports being filed during
their beta cycle. We work around this sloppiness by removing
the check, since AVX does not require the alignment.

Fixes #3199.

Change-Id: I9c16b156cc5b3a5d9fc542335cbf63a6caf6fb1b

4 years agoWork around broken Apple compilers in Mac OS 10.15
Erik Lindahl [Wed, 6 Nov 2019 13:00:37 +0000 (14:00 +0100)]
Work around broken Apple compilers in Mac OS 10.15

The Xcode compiler in Mac OS Catalina checks and enforces
stack alignment by default, but embarrasingly enough the
C library provided by Apple fails to adhere to the
aligned stack for AVX despite bug reports being filed during
their beta cycle. We work around this sloppiness by removing
the check, since AVX does not require the alignment.

Fixes #3199.

Change-Id: I9c16b156cc5b3a5d9fc542335cbf63a6caf6fb1b

4 years agoUpdate googletest location in COPYING.
M. Eric Irrgang [Tue, 5 Nov 2019 11:13:41 +0000 (14:13 +0300)]
Update googletest location in COPYING.

The repository COPYING file had an outdated reference to the location
of the bundled googletest sources.

Change-Id: I83344eaccfc5a73bdcc9e4a3db49213787f9bf2e

4 years agoAdd build for clang-format
Paul Bauer [Thu, 17 Oct 2019 07:34:21 +0000 (09:34 +0200)]
Add build for clang-format

Adds build for running clang-format in Jenkins, and sets the correct
filters for uncrustify not to apply changes on files now checked by
clang-format instead.

CHanges default to use clang-format for reformat-all.sh

Refs #2107

Change-Id: I62c1f10be5fcda495fea4dbe5a23fa5f006d52a0

4 years agoSplit up source code formatting scripts
Paul Bauer [Fri, 25 Oct 2019 16:12:46 +0000 (18:12 +0200)]
Split up source code formatting scripts

Split up copyright header checking from uncrustify and updated docs
accordingly.

Refs #3197

Change-Id: I68bade3ff5b7d2fc1cdaeff6a8b4021137af1735

4 years agoUpdate gmxapi Python documentation instructions.
M. Eric Irrgang [Fri, 1 Nov 2019 17:23:45 +0000 (20:23 +0300)]
Update gmxapi Python documentation instructions.

* Remove a reference to the old in-repository documentation location.
* Update the reference to Docker-based instructions.
* Update references to Redmine issues.

Change-Id: I755ee84b2186ac0bc7ac1f8367bbdbd7d222b68b

4 years agoUpdate clang-format config
Teemu Murtola [Sat, 29 Oct 2016 03:54:06 +0000 (06:54 +0300)]
Update clang-format config

Provides minor changes to the clang-format configuration, and adds
ability to use reformat_all.sh to change the source tree formatting
to be clang-format conform.

Some attempt has been made to match changes in uncrustify.cfg to be
closer to clang-config but not much work has been put into this direction
since there are about 450K lines are different between the two formatting
methods.

You can run
  admin/reformat_all.sh
to reformat everything with uncrustify, and
  admin/reformat_all.sh clang-format
to format the same files with clang-format (the executable can be
specified with CLANG_FORMAT).

Refs #2107

Change-Id: Ia1880f5670714c497f683be10a9e72b505ca6c5a

4 years agoUpdate Sphinx link.
M. Eric Irrgang [Fri, 1 Nov 2019 17:22:17 +0000 (20:22 +0300)]
Update Sphinx link.

The "up-to-date installation instructions" label uses a link to the
old website that is redirected on arrival. This change just updates it
to go directly to the current install guide in the documentation.

Change-Id: I05f577e76ae8cb4703cbf3b17a101716be4593de

4 years agoFix typos.
M. Eric Irrgang [Sat, 2 Nov 2019 11:28:55 +0000 (14:28 +0300)]
Fix typos.

A search for "the the" revealed a lot of easy-to-fix typos.

Change-Id: I42ed8f6bd7a5cf2f3d15117c8045cf3af4313b18

4 years agoImprove SimulationWorkload doxygen
Szilárd Páll [Fri, 1 Nov 2019 15:35:13 +0000 (16:35 +0100)]
Improve SimulationWorkload doxygen

Change-Id: I0e4f6433d497b177b4dcc383b708ce8e91bb32e1

4 years agoFix documentation typo.
M. Eric Irrgang [Fri, 1 Nov 2019 17:38:42 +0000 (20:38 +0300)]
Fix documentation typo.

'python -n' should be 'python -m' to specify a Python module whose
`__main__` function should be run.

Change-Id: Id62b60604c44db566934a8e90a96060c95c03544

4 years agoSecond beta release of GROMACS 2020
Paul Bauer [Wed, 16 Oct 2019 09:05:49 +0000 (11:05 +0200)]
Second beta release of GROMACS 2020

Updated regressiontest hash.

Change-Id: If7818c6e084f76ddd84678a9fe6ecbc05e255eef

4 years agoFix cross-correlation calculation instability
Christian Blau [Thu, 31 Oct 2019 10:06:16 +0000 (11:06 +0100)]
Fix cross-correlation calculation instability

Fixes a fail in calculating the cross-correlation for density guided
simulations in cases where the covariance between densities values had
been negative.

refs #2282

Change-Id: Ibd2a88768eba25c4836b8f692fd9d61e8960e073

4 years agoRename reference checksum generating target
Szilárd Páll [Fri, 1 Nov 2019 10:27:33 +0000 (11:27 +0100)]
Rename reference checksum generating target

Target name change to better match the intent, also improved status
message to make it clear which checksum it is generating.

Change-Id: Ie713e7d3ecd5af480d13689e50871d7689611592

4 years agoUse "-" in checksum-related version suffix
Szilárd Páll [Fri, 1 Nov 2019 10:29:22 +0000 (11:29 +0100)]
Use "-" in checksum-related version suffix

All other suffixes use a dash so prefer uniformity.

Change-Id: I07b98f7180b9e7b0351cc8a2faa4785ecaa924bd

4 years agoImprove workload data structures' docs
Szilárd Páll [Thu, 31 Oct 2019 21:00:06 +0000 (22:00 +0100)]
Improve workload data structures' docs

Simplified and clarified doxygen documentation.

Change-Id: I17bf3ec25a3ffb329f225f54cc4217956cbb3ec2

4 years agoRemove energy step dependence on GPU force buffer ops
Alan Gray [Fri, 11 Oct 2019 12:30:52 +0000 (05:30 -0700)]
Remove energy step dependence on GPU force buffer ops

Energy steps have no reason to fall back to CPU buffer ops. This
change removes the energy step flag from the calculation of the GPU
force buffer op flag.

Addresses #3128

Change-Id: Ie65a919f3bae4aec7374627bbb7e510d5a09b6c5

4 years agoAdd haveEwaldSurfaceContribution to SimulationWorkload
Berk Hess [Thu, 31 Oct 2019 19:20:01 +0000 (20:20 +0100)]
Add haveEwaldSurfaceContribution to SimulationWorkload

When update is offloaded, the coordinates are needed on host if
an Ewald surface contribution is to be computed. This flag is set
to reflect that and used when the decision of whether the
coordinates are to be copied on this step is made.

Change-Id: Iba40387f065e6fae2551540136e925f7c764d6aa

4 years agoNormalize sample_restraint target names.
M. Eric Irrgang [Wed, 16 Oct 2019 15:03:03 +0000 (18:03 +0300)]
Normalize sample_restraint target names.

In the python_packaging/sample_restraint directory, add a uniform prefix
to help identify CMake targets related to the sample_restraint subproject
(configured with a GROMACS build when GMX_PYTHON_PACKAGING=ON). The
primary shared object library target is now named "gmxapi_extension".
Support and testing targets are now prefixed by "gmxapi_extension_".

Change-Id: Ie07caeb8c83e9ed754b96c6ce97099b8114d7fd4

4 years agoPrepare for 2020 beta 2
Paul Bauer [Wed, 25 Sep 2019 13:21:04 +0000 (15:21 +0200)]
Prepare for 2020 beta 2

TODO use NEXT again after branching of release-2020

Change-Id: I82414c80ac70d214eefb2fbb3cb45b291d1350b9

4 years agoAdd validation of tarball builds
Paul Bauer [Wed, 9 Oct 2019 13:16:58 +0000 (15:16 +0200)]
Add validation of tarball builds

Allows validation of GROMACS builds against a file stored in the
release tarball to give users an indication if the source they are using
is actually unmodified from the release version.

This only applies to builds from tarballs, as the git version checking
already does all of this for us.

Hash can be generated by the new cmake target checksum-files, and applies
for files in src/ and python_packaging/, if they are included in
a whitelist defined in the script.

Refs #2128

Change-Id: Ia3bc41c0d0566993166f567409510cf9c9ec2020

4 years agoAllow validation of the generated CMake toolchain file.
M. Eric Irrgang [Thu, 12 Sep 2019 09:47:22 +0000 (12:47 +0300)]
Allow validation of the generated CMake toolchain file.

Refs #3085

Change-Id: Ie909256f4656bfd119273a21791f708ba68c5e8a

4 years agoUse type of explicit size in inmemoryserializer
Paul Bauer [Thu, 31 Oct 2019 15:11:33 +0000 (16:11 +0100)]
Use type of explicit size in inmemoryserializer

Prevents issues where memory buffers generated on one architecture are
read in on a different one. Changes the type from size_t to unit64_t.

Fixes #3191

Change-Id: Id1ab0e15f8a2045d0cab45bc61893c28de0a181c

4 years agoImprove uniformity of OS X CMake configuration.
M. Eric Irrgang [Sun, 6 Oct 2019 14:44:43 +0000 (17:44 +0300)]
Improve uniformity of OS X CMake configuration.

* Update the toolchains file to work with OS X.
* Use uniform OS X deployment target and architecture.
* Use CMake toolchain for OS X Python package installations.

Fixes #3085

Change-Id: Ic919740c873fd6021c3291b6da014e7325655418

4 years agoRestore CMake convenience targets for sample_restraint.
M. Eric Irrgang [Wed, 23 Oct 2019 16:00:51 +0000 (19:00 +0300)]
Restore CMake convenience targets for sample_restraint.

When building GROMACS with GMX_PYTHON_PACKAGE=ON, the Python and C++
tests in python_packaging/sample_restraint are configured for use in
the GROMACS build tree. Let the tests in
python_packaging/sample_restraint use input data from
src/testutils/simulationdatabase.

Refs #2961

Change-Id: Ida104dc224e7a6af3874bd0604439033fe4f72a1

4 years agoRemove dead code for nbnxm H2D coordinate copy event
Alan Gray [Tue, 29 Oct 2019 18:29:56 +0000 (11:29 -0700)]
Remove dead code for nbnxm H2D coordinate copy event

Change-Id: I83187ed470591f1fbc1c2573e59c14f8a6213ce7

4 years agoBug fix for event passed to GPU comm features
Alan Gray [Mon, 28 Oct 2019 09:07:46 +0000 (02:07 -0700)]
Bug fix for event passed to GPU comm features

The GPU coordinate halo exchange and coordinate PME-PP transfer were
waiting on an event signalling that the coordinates are available on
the GPU that lives in the NB class, but the new state propagator
feature instead records a different event for this purpose, breaking
the dependency. This change fixes the bug by instead pass the state
propagator event as a dependency to these methods. It needs to be done
every step rather than stored in the class since it can change
depending on the type of step.

Change-Id: I7ea048c6f303192c1310d6b5593227c0ad9a81d0

4 years agoCheck for contradicting environment variables (modular simulator)
Pascal Merz [Thu, 31 Oct 2019 04:51:56 +0000 (22:51 -0600)]
Check for contradicting environment variables (modular simulator)

Having both environment variables GMX_USE_MODULAR_SIMULATOR=ON and
GMX_DISABLE_MODULAR_SIMULATOR=ON set has no defined behavior and
should therefore yield an error. This change adds a release assert
to ensure this.

Change-Id: I1df0d94da7312d6c31e7e520db6c0186707b3cac

4 years agoTests for valid periodic actions
Mark Abraham [Tue, 3 Sep 2019 13:24:27 +0000 (15:24 +0200)]
Tests for valid periodic actions

We expect that mdrun propagation is unaffected by changing mdp options
that determine whether output is written. However, orchestrating mdrun
to collect and compute such data without affecting the propagation is
complex and currently very fragile. New propagation approaches must be
able to be tested.

Many mdrun combinations of periodic outputs and periodic action of
simulation modules that affect propagation are compared for
correctness against a simulation that did every action at every step.

These tests are fairly slow, so are in their own test binary and
annotated appropriately. They run by default only in release-type
builds. As they target testing the kind of coordination issues that
tend to appear in multi-rank runs, those runs are specifically
targeted.

The energy tolerance for the mdrun test were far too tight. It seems
that tests passed anyhow because they compared runs under exactly
the same run conditions using (nearly) the same summation order.
This change slightly increases the tolerance for energies and
massively the tolerance for pressure comparison.

Change-Id: I88ea643873ebec0e5e2b12181f4b51ad90c7b0f7

4 years agoDeduplicate gmxapi documentation.
M. Eric Irrgang [Wed, 30 Oct 2019 10:41:52 +0000 (13:41 +0300)]
Deduplicate gmxapi documentation.

`docs/gmxapi` seems to have settled down and does not have substantial
layout changes from the documentation in python_packaging/documentation.
Compartmentalized doc builds, e.g. with docs.dockerfile, still warrant
a separate simple conf.py, so that much is retained. Otherwise, it looks
like documentation for the standalone gmxapi package or development can
be maintained in a unified way with the GROMACS project documentation,
so this change removes the transitionally duplicated content.

* Remove most of python_packaging/documentation
* Update python_packaging/docker/docs.dockerfile

Refs #2698
Refs #2985

Change-Id: I0c23f6526894ec1eec4e910463c8c9d08a7315f6

4 years agoRemove excessive H2D and D2H copies of forces when update is offloaded
Artem Zhmurov [Thu, 17 Oct 2019 13:36:09 +0000 (15:36 +0200)]
Remove excessive H2D and D2H copies of forces when update is offloaded

Forces are copied H2D only on steps when force buffer ops is not
offloaded to the GPU (e.g. steps when virials are computed).

The D2H copy is issued:
- after force buffer ops if the update is not offloaded or if the
  forces are needed on CPU by seprate PME rank force reduction or
  for vsites force spreading.
- for the force output if update is offloaded and forces were not copied
  yet.

Also added note regarding the need for the latter copy to ensure forces
are ready using the same mechanism as used for synchronizing update on
the availability of forces.

Change-Id: Ied74638d35e74a8970427df712501cd63e0aa0ab

4 years agoUpdate GPU update restrictions
Berk Hess [Wed, 30 Oct 2019 15:49:21 +0000 (16:49 +0100)]
Update GPU update restrictions

Ewald surface correction does not work and distance restraints do.
The graph can not be used, which is now asserted on.
Updated the user guide for these changes and missing restrictions.

Change-Id: Ica477462d55c047c8ae07284bbe20fba6f332f6b

4 years agoFix doxygen for modular simulator
Pascal Merz [Tue, 29 Oct 2019 22:55:48 +0000 (16:55 -0600)]
Fix doxygen for modular simulator

This fixes a few issues with the doxygen documentation for the
modular simulator:

* Add \file tag for all files
* Switching a few \internal to \libinternal in header files to keep
  uniformity across modular simulator
* Making source file documentation \internal to avoid it appearing
  outside full documentation
* Replace
    //! \addtogroup module_modularsimulator
    //! \{
    ...
    //! \}
  syntax with
    \ingroup module_modularsimulator
  except in files having one-line doxygen commands to avoid
  bloating these
* Finally, solve an instance of doxygen complaining about a typedef
  not being documented.

Change-Id: Ib74c57b580f70cf76091377fb8c49e1cc2bdfc2f

4 years agoUpdate PME CUDA spread/gather
Jonathan Vincent [Wed, 2 Jan 2019 16:59:18 +0000 (08:59 -0800)]
Update PME CUDA spread/gather

Adds addtional templated kernels to the CUDA spread and
gather kernels. Allowing the use of 4 threads per atom instead of
16 and allowing the spline data to be recalculated in the spread
instead of saved to global memory and reloaded.

The combinations mean we have 4 different kernels that can be called
depending on which is most appropriate for the problem size and
hardware (to be decided heuritically). By default existing method is
used (16 threads per atom, saving and reloading of spline data).

Added an additional option to disable the preloading of charges and
coordinates into shared memory, and instead each thread would
deal with a single atom.

Removed the (currently disabled) PME_GPU_PARALLEL_SPLINE=1 code
path.

Refs #2792 #3185 #3186 #3187 #3188

Change-Id: Ia48d8eb63e38d0d23eefd755dcc228ff9b66d3e6

4 years agoFix modular simulator documentation
Pascal Merz [Fri, 25 Oct 2019 01:44:10 +0000 (19:44 -0600)]
Fix modular simulator documentation

This fixes a few issues with the modular simulator documentation:

* VRescaleThermostat was not properly documented
* ParrinelloRahmanBarostat was not properly documented
* FreeEnergyPerturbationElement was missing in modularsimulator.md
* Some details in modularsimulator.md were not up-to-date

Change-Id: I2236d4c77c8a3ad700ea914600f9f8ceac885292

4 years agoFix walls with GPU update
Berk Hess [Tue, 29 Oct 2019 14:15:26 +0000 (15:15 +0100)]
Fix walls with GPU update

Change-Id: I2e8568c9eab319065355c7a2596110bf1c625b31

4 years agoFix compatibility check of modular simulator
Pascal Merz [Thu, 24 Oct 2019 00:17:41 +0000 (18:17 -0600)]
Fix compatibility check of modular simulator

Testing for additional functionality not implemented by modular
simulator during compatibility check:

* Pulling
* Acceleration
* Freeze
* Deform

Change-Id: Ib0523500e8c681631494053126a2ff80ce4f2697

4 years agoDisable its tests when sample_restraint is not the master project.
M. Eric Irrgang [Wed, 16 Oct 2019 14:38:29 +0000 (17:38 +0300)]
Disable its tests when sample_restraint is not the master project.

Avoids some distracting CMake output for GROMACS builds, and avoids
trying to download a test input file.

Fixes #3111

Change-Id: I53f4d88184a5112a430a051c086ffa864b0eeb41

4 years agoDecrease the maximum allowed Python version for gmxapi.
M. Eric Irrgang [Thu, 24 Oct 2019 15:25:05 +0000 (18:25 +0300)]
Decrease the maximum allowed Python version for gmxapi.

Update setup.py to require Python version <3.9. We should allow ourselves
a chance to review and respond to changes with the Python 3.9 release
before asserting support.

Changes with Python feature releases aren't likely to affect scientific
results, but could cost valuable computing resources. Historically,
gmxapi updates for feature releases have included Python base class
adjustments (responding to changes in the `typing` module with Python
3.7) and pybind11 header updates (responding to Python C API changes).

Resolves #3175

Change-Id: I7805964669ac74111eecf24402e651343f7908c0

4 years agoDisable GPU update when coordinates swapping is enabled
Artem Zhmurov [Mon, 28 Oct 2019 15:29:13 +0000 (16:29 +0100)]
Disable GPU update when coordinates swapping is enabled

The coordinates swap is done on the CPU, which would require
additional D2H and H2D copies if the update is offloaded.

Change-Id: I27574fd6b9a3e653b44053dc8bf3f9a8a9501ed2

4 years agoAdd mdrun GPU update documentation
Berk Hess [Mon, 28 Oct 2019 14:46:20 +0000 (15:46 +0100)]
Add mdrun GPU update documentation

Add update for mdrun -update flag and a release note.
Also corrected some use of node to rank in the user guide.

Change-Id: I6233e4c0fa8c687a9d3cd4c38b372effb70d3e0c

4 years agoFix Ewald dipole correction with GPU update
Berk Hess [Tue, 29 Oct 2019 12:33:21 +0000 (13:33 +0100)]
Fix Ewald dipole correction with GPU update

Change-Id: I6b643abec3c1bc74b3e1017420cc03daecb0d4ef

4 years agoDisable pressure coupling with GPU update
Berk Hess [Mon, 28 Oct 2019 19:24:19 +0000 (20:24 +0100)]
Disable pressure coupling with GPU update

Refs #3182

Change-Id: I7752298a89f7069ae65e198af0c02dad153b4bf0

4 years agoMerge "Merge branch 'release-2019' into master"
Paul Bauer [Tue, 29 Oct 2019 13:40:41 +0000 (14:40 +0100)]
Merge "Merge branch 'release-2019' into master"

4 years agoMerge branch 'release-2019' into master
Paul Bauer [Mon, 28 Oct 2019 15:37:37 +0000 (16:37 +0100)]
Merge branch 'release-2019' into master

Updated reference data that needed updating.

Resolved Conflicts:
cmake/gmxVersionInfo.cmake
docs/CMakeLists.txt
src/gromacs/ewald/pme-gpu-types-host.h
src/gromacs/ewald/pme-only.cpp
src/gromacs/gmxana/gmx_make_ndx.cpp
src/gromacs/mdlib/nbnxn_gpu_common.h
src/gromacs/mdrun/md.cpp
src/programs/mdrun/tests/minimize.cpp

Change-Id: Ic5aeae6bf932d190b95366373b64ee3449f4a630

4 years agoExplicitly destroy PME-PP GPU communication object
Alan Gray [Tue, 29 Oct 2019 09:03:05 +0000 (02:03 -0700)]
Explicitly destroy PME-PP GPU communication object

Add code to destroy object when it is no longer required. Even
although object is managed by a unique pointer, this needs to be done
while the GPU context still exists, otherwise a seg fault can occur
when it is automatically destroyed later.

Addresses #3077

Change-Id: I9d6f798d79a73e2ce366c9fb85a0ff9339fc9f88

4 years agoSwitch the GPU buffer ops on when update is on GPU
Artem Zhmurov [Thu, 24 Oct 2019 17:15:40 +0000 (19:15 +0200)]
Switch the GPU buffer ops on when update is on GPU

The update is supported on the GPU only when buffer ops are also
offloaded. This changes the behavior from requiring the
GMX_USE_GPU_BUFFER_OPS to be enabled to it being overriden.

Change-Id: Icdc154daa053f135b0df503697273016a830fb18

4 years agoFix missing coordinate D2H copy with GPU update and CPU forces
Artem Zhmurov [Tue, 22 Oct 2019 06:17:01 +0000 (08:17 +0200)]
Fix missing coordinate D2H copy with GPU update and CPU forces

When update is offloaded to the GPU, but not all forces are offloaded,
the coordinates needed to be copied D2H on the beginning of every step.
This was not done for some cases, e.g. for CPU PME, which lead to
wrong coordinates used for force evaluaion.

The D2H copy call is now split and corresponding calls are moved closer
to the consumers for clarity. The conditional on D2H copy for center of
mass motion removal is made more strict.

Bug was introduced in a73c3ec2dd9dd64f0c728b7b1d90ac5bcfb246cc

Change-Id: Iebb184dc2e0b5fb68b4a627314d2373391c6ebf9

4 years agoAdd haveCpuLocalForces flag to DomainLifetimeWorkload
Artem Zhmurov [Tue, 22 Oct 2019 18:30:22 +0000 (20:30 +0200)]
Add haveCpuLocalForces flag to DomainLifetimeWorkload

The flag haveCpuLocalForces is moved to DomainLifetimeWorkload.
The name and meaning is also slightly changed, haveCpuLocalForceWork
now now indicates whether any forces in the local domain are computed
on the CPU.
Consequently, the currently redundant PME f reduction conditional has
been removed from the haveCpuLocalForceWork initialization. The
relationship between local force work and existence of local forces on
the CPU however needs to be clarified in relationship to #3160 and how
the PP-PME direct communication is improved/simplified.

Change-Id: Idaed4da41bf5b72435c47bab8aeb7130b36b03c7