alexxy/gromacs.git
4 years agoAvoid unnecessary exclusion generation in DD
Berk Hess [Wed, 11 Dec 2019 13:24:00 +0000 (14:24 +0100)]
Avoid unnecessary exclusion generation in DD

With only self exclusions, the DD partitioning would generate a list
of all empty exclusion lists for all i-atoms. Now no lists are
generated. An assertion is added in the pairlist generation code
to ensure we either have 0 or the right number of exclusions lists.

Change-Id: I4b0556cbf3ed3a6fea7bdd0e03e194410bcfb88a

4 years agoFix compiler warnings on windows
Paul Bauer [Thu, 9 Jan 2020 16:41:48 +0000 (17:41 +0100)]
Fix compiler warnings on windows

Came up during other builds, but didn't make any sense.

Change-Id: Ie57f4ce30d35dbb1db927b91902045fbbcffe8f0

4 years agoChange signature of the setPbc(...) method in update-constraints
Artem Zhmurov [Tue, 19 Nov 2019 15:48:35 +0000 (16:48 +0100)]
Change signature of the setPbc(...) method in update-constraints

The PBC description is stored in update-constrain module in the
PBCAiuc format, which only requires type of the PBC and the box
matrix for setup. Hence, constructing the t_pbc structure is
additional unnessesary step in the PBC reinitialization.

Change-Id: I9dff337fa18f22d9164168de37ba8fb8630ba713

4 years agoMake PBC type enumeration into PbcType enum class
Artem Zhmurov [Wed, 20 Nov 2019 15:18:56 +0000 (16:18 +0100)]
Make PBC type enumeration into PbcType enum class

The type of periodic boundary conditions is defined by untyped
enumeration and passed around as an integer, which is not type
safe. This change makes the enum class that defines the type of
the PBC and can be safely passed as a function argument.

Change-Id: Ia1f709a90472a95ad76af92c41df570ba7c28255

4 years agoUse enum for gmxapi.testsupport fixture options.
M. Eric Irrgang [Fri, 13 Dec 2019 17:24:58 +0000 (20:24 +0300)]
Use enum for gmxapi.testsupport fixture options.

Change-Id: If369d2a10c30d1e39ffe1a8f1b69303b8a071b5b

4 years agoClean up ewald module internals
Mark Abraham [Sun, 5 Jan 2020 21:16:52 +0000 (22:16 +0100)]
Clean up ewald module internals

This prepares for future refactoring by starting to break up the
cross dependence on many internal headers.

Note that useDecomposition was set (and then used) with the opposite
logic, which was a benign problem that is now fixed.

Change-Id: Ibb7f0ceb82d644374bfd396b38b9611cb8d7fd62

4 years agoFurther consolidate gmxapi.testsupport.
M. Eric Irrgang [Fri, 6 Dec 2019 11:16:41 +0000 (14:16 +0300)]
Further consolidate gmxapi.testsupport.

Migrate most of the remaining pytest fixtures from conftest.py
files to the gmxapi.testsupport pytest plugin.

Change-Id: If5fae2bafcbe96fefe6b3cd2e86ef3af2ec61786

4 years agoUpdate gmxapi Python package version and versioning support module.
M. Eric Irrgang [Thu, 12 Dec 2019 13:16:36 +0000 (16:16 +0300)]
Update gmxapi Python package version and versioning support module.

Module modernization moves in the direction of consolidated and
normalized metadata handling by reducing the exposure of non-standard
attributes. Future changes can further unify version metadata by
migrating to PEP 517/518 package configuration.

Change-Id: I288e846cc0e77d9053c79a06256afed9bb579d7f

4 years agoFix memory address bug in GPU PME coordinate address send fn
Alan Gray [Wed, 8 Jan 2020 16:37:17 +0000 (08:37 -0800)]
Fix memory address bug in GPU PME coordinate address send fn

Fixes bug introduced in 8f80571986c5ba98e4070ab390d372e81078cc3a,
which changed a pointer from rvec to float type, but didn't change the
corresponding array index used to get the pointer to send: an extra
multiplication by DIM is required.

Change-Id: Ia16e9988cb154895807a3c9f9588b1ffe59b3dcc

4 years agoSplit lines with many copyright years
Mark Abraham [Thu, 9 Jan 2020 08:17:07 +0000 (09:17 +0100)]
Split lines with many copyright years

The new split_copyright_years.sh script can be run every few years to
keep the line length short enough for readability, and to avoid
clang-format wanting to change the lines such that the copyright
checker no longer recognizes a valid copyright statement.

Numerous files have now been bumped for 2020 because the copyright
line has been changed. That's technically valid.

In recent merge commits, several files were changed to use year ranges
like 2012-2020. Those have been reverted to the old style, which is
thought to be more valid.

Fixes #3282

Change-Id: I9c4e4677bf22a8d48ab1b3245de257c4bbaccf9f

4 years agoRemove stray "to do".
M. Eric Irrgang [Mon, 6 Jan 2020 10:47:11 +0000 (13:47 +0300)]
Remove stray "to do".

The context of the comment has changed over several commits. If it is
still relevant, its meaning is unclear. If there is a question that still
needs to be resolved, it can be re-posed in the issue tracking system
when someone has a chance to clarify and frame the discussion.

Change-Id: Ifb65ae4942a1225aa23189c95aaa4c73c3b7c88c

4 years agoMerge branch origin/release-2020 into master
Paul Bauer [Tue, 7 Jan 2020 13:09:57 +0000 (14:09 +0100)]
Merge branch origin/release-2020 into master

Final merge needed for release-2020 into master

Change-Id: I93a44684f002997dfa8590c865103b436f3e3e93

4 years agoWrite TPR body as opaque XDR data in big-endian format
Erik Lindahl [Sun, 29 Dec 2019 13:43:35 +0000 (14:43 +0100)]
Write TPR body as opaque XDR data in big-endian format

This implements support for opaque data in our serializers,
as well as a few missing XDR support opaque routines,
including support for data objects larger than 2GB.

By using this for the new serialization of the TPR body
we avoid the unintended 4x growth of the file size, and
avoid introducing extra endian swapping or padding.

We also adjust the endian so the InMemorySerializer
swaps to big endian (i.e., swap if host is little endian)
such that the body of the TPR file is compatible with
the header that is already written as big-endian by
the XDR routines.

Fixes #3276.

Change-Id: I99011dffe190155e671bd656127c2a33459923e2

4 years agoMerge commit d30f2cb6 from release-2020 into master
Paul Bauer [Tue, 7 Jan 2020 10:01:22 +0000 (11:01 +0100)]
Merge commit d30f2cb6 from release-2020 into master

Merging the release-2020 branch in stages to allow update to TPR format
to be cherry-picked in.

Change-Id: I36c0861d0cb6f17a3f4ff739fa868867844f2944

4 years agoRemove transitional links for online gmxapi Python package reference.
M. Eric Irrgang [Fri, 8 Nov 2019 20:07:49 +0000 (23:07 +0300)]
Remove transitional links for online gmxapi Python package reference.

Provide link to current GROMACS gmxapi documentation,
built by GitLab Runner.

Fixes #2985

Change-Id: I1e56828aba4cc2568bbc9e6617863ca10197058d

4 years agoAdd Flake8 linting to gmxapi tests.
M. Eric Irrgang [Thu, 4 Apr 2019 14:38:38 +0000 (17:38 +0300)]
Add Flake8 linting to gmxapi tests.

Add the flake8 package to requirements-test.txt and a run_flake8
docker entry point. This change does not require Python source
checking, but facilitates it.

Refs #1786

Change-Id: I6a6c2d6012e4424d13d8ceed0ea3696077042f6f

4 years agoUse `todo` Sphinx directive more.
M. Eric Irrgang [Thu, 26 Dec 2019 15:45:59 +0000 (18:45 +0300)]
Use `todo` Sphinx directive more.

Start making "to do"s more actionable. Use the Sphinx `todo` directive
to allow special processing. For comment blocks that imply planned
activity, convert comment to `todo` directive for more easily discovered
and tracked doctree elements.

"To do" items should have a clear call to action and some follow through,
such as being prohibited in release branches or at least referring to
tracked issues, but that is beyond the scope of this change.
This change only seeks to make the mass of "to do"s more discoverable.

Change-Id: I8cbc06a5a1d78791bc6e9b0a2530632ad09a9380

4 years agoPrepare for 2020.1
Paul Bauer [Fri, 27 Dec 2019 13:48:34 +0000 (14:48 +0100)]
Prepare for 2020.1

Reset DOI strings

Change-Id: I5898dfdacde0c851c1a870a983094a2e56c3ab2b

4 years agoGROMACS 2020 release
Paul Bauer [Fri, 27 Dec 2019 13:01:33 +0000 (14:01 +0100)]
GROMACS 2020 release

Updated regressiontest hash
Set doi strings
Set correct release date

Change-Id: I5d34e1176e5a0ecc6b38a15d830d228127a69d9d

4 years agoRevert "GROMACS 2020 release"
Paul Bauer [Wed, 1 Jan 2020 15:39:30 +0000 (16:39 +0100)]
Revert "GROMACS 2020 release"

This reverts commit 78c3280ad9c1802db4f6a7e02978207921add05f.

Reason for revert: wrong release date

Change-Id: Ia0d4112349ea4bdca9edda2a30e8933cacc2ad19

4 years agoGROMACS 2020 release
Paul Bauer [Fri, 27 Dec 2019 13:01:33 +0000 (14:01 +0100)]
GROMACS 2020 release

Updated regressiontest hash
Set doi strings

Change-Id: Id053624d5e276aea62a5d07ebf995cf01b54f1ab

4 years agoAdd link to paper explaining GROMOS twin-range issues.
Erik Lindahl [Tue, 31 Dec 2019 11:00:43 +0000 (12:00 +0100)]
Add link to paper explaining GROMOS twin-range issues.

Change-Id: I81e89817ce9441bb3d25bc43b00b4cc995590c3a

4 years agoAvoid 386 O3 codegen bug even more
Mark Abraham [Tue, 31 Dec 2019 13:56:42 +0000 (13:56 +0000)]
Avoid 386 O3 codegen bug even more

Refs #3205

Change-Id: I78f3cc03da36e129a842507f9cdd3d170beb8c08

4 years agoInform user why forcing GPU update is not possible
Artem Zhmurov [Mon, 30 Dec 2019 14:34:18 +0000 (15:34 +0100)]
Inform user why forcing GPU update is not possible

Currently, if the GMX_FORCE_UPDATE_DEFAULT_GPU is set in not supported
case, the update silently switches to the CPU code path. This adds the
message that informs user that this has happened and why.

Change-Id: I7317d83271158c9973f4c102d8ca830b437626b5

4 years agoAdd description of GMX_FORCE_UPDATE_DEFAULT_GPU dev flag to the UG
Artem Zhmurov [Mon, 30 Dec 2019 22:20:46 +0000 (23:20 +0100)]
Add description of GMX_FORCE_UPDATE_DEFAULT_GPU dev flag to the UG

Refs. #3021

Change-Id: Idff63154c5ebb0b5bd209ce6025934db3aedf8fd

4 years agoFix gpuupdate matrix
Artem Zhmurov [Mon, 30 Dec 2019 11:17:20 +0000 (12:17 +0100)]
Fix gpuupdate matrix

1. Set GPU direct communications environment variables in update
   matrix to allow for multi-rank testing.
2. Fall back to the CPU update if PME is not fully offloaded
   in DD case and with PME-only rank (requred for GPU direct
   communications).

Change-Id: I66283a446b0cc58fd0165226b01bf58ce9ec90f1

4 years agoTests that verify serializer behaviours
Mark Abraham [Mon, 30 Dec 2019 12:44:17 +0000 (12:44 +0000)]
Tests that verify serializer behaviours

xdr_vector serializing char uses four bytes per char, which is
wasteful when that char buffer is just a binary dump such as with the
tpr file body. This test ensures that our assumption when writing tpr
files is that we can reinterpret as a wider data type and avoid excess
padding.

It also tests that xdr_opaque does not introduce such padding.

Refs #3269
Refs #3276

Change-Id: I9c40b8ab7b9dabe461cb4dd146bb132d8f5a9681

4 years agoRemove use of tuple in LINCS code for GPU implementation
Mark Abraham [Sun, 29 Dec 2019 23:08:15 +0000 (00:08 +0100)]
Remove use of tuple in LINCS code for GPU implementation

GCC 6.4 for POWER9 couldn't compile any form of increasing the size of
a vector of tuples that I could think of, so got rid of the tuple.

Used some range-based for, rather than explicit indexing plus the (slow)
at() function. There's no need to check indices are in range if there
are no indices!

Change-Id: Ie36a7a6fafe8f6613ec449778cfe2fbf97e02007

4 years agoAdd tracking for a documented action item.
M. Eric Irrgang [Thu, 26 Dec 2019 15:48:38 +0000 (18:48 +0300)]
Add tracking for a documented action item.

Refs #3268

Change-Id: I84a490fd6a8c36964a68b8e1ce8679931ef4d5eb

4 years agoLink some "to do"s in the dev manual.
M. Eric Irrgang [Thu, 26 Dec 2019 14:37:36 +0000 (17:37 +0300)]
Link some "to do"s in the dev manual.

Replace some RST comment blocks with `todo` directives and include
links to tracked issues.

Change-Id: I87631676033f241c2ea0cf79cf876ed08281e654

4 years agoMake gmxapi.testsupport usable as a pytest plugin.
M. Eric Irrgang [Fri, 6 Dec 2019 11:03:01 +0000 (14:03 +0300)]
Make gmxapi.testsupport usable as a pytest plugin.

Continue to consolidate pytest support infrastructure.
Update gmxapi.testsupport usage to function with pytest plugin API.
Convert `withmpi_only` to a custom marker registered with pytest.

Change-Id: I52f4ad1b0b88fbbd1216814a55e243642741dddb

4 years agoFix build error with wrong name from cached cmake file
Paul Bauer [Mon, 23 Dec 2019 12:11:02 +0000 (13:11 +0100)]
Fix build error with wrong name from cached cmake file

The CMakeCache files could go out of sync when the name of the source
directory changes, leading to an unrecoverable build error.
To avoid this, CMakeCache files are no longer preserved between build.

Change-Id: Ifa1d808c05bd2f40132b9a721348b1bddb86fc02

4 years agoWrite TPR body as opaque XDR data in big-endian format
Erik Lindahl [Sun, 29 Dec 2019 13:43:35 +0000 (14:43 +0100)]
Write TPR body as opaque XDR data in big-endian format

This implements support for opaque data in our serializers,
as well as a few missing XDR support opaque routines,
including support for data objects larger than 2GB.

By using this for the new serialization of the TPR body
we avoid the unintended 4x growth of the file size, and
avoid introducing extra endian swapping or padding.

We also adjust the endian so the InMemorySerializer
swaps to big endian (i.e., swap if host is little endian)
such that the body of the TPR file is compatible with
the header that is already written as big-endian by
the XDR routines.

Fixes #3276.

Change-Id: I99011dffe190155e671bd656127c2a33459923e2

4 years agoChange the behavior of the GPU update UI
Artem Zhmurov [Fri, 27 Dec 2019 11:15:23 +0000 (12:15 +0100)]
Change the behavior of the GPU update UI

1. By default, update will now run on the CPU
2. The "-update cpu" will override the GMX_FORCE_UPDATE_DEFAULT_GPU
   environment variable.

Change-Id: I08efb6a594fb062fe145baa7cc00ba5c8ec63374

4 years agoResolve CMake ambiguities for gmxapi Python package build.
M. Eric Irrgang [Fri, 27 Dec 2019 13:54:44 +0000 (16:54 +0300)]
Resolve CMake ambiguities for gmxapi Python package build.

* Fix inconsistency in documented package dependencies.
* Update version of the required `cmake` Python package.
* Simplify setup.py since we can assume CMake >= 3.12 at build time. Avoids
  having the CMake dependency too early in the Python package build.

Fixes #3270

Change-Id: I6d4a4b838f05985741f4560a05a3d9f257b2ec3d

4 years agoChange releng to give information about Gitlab
Paul Bauer [Sat, 28 Dec 2019 11:20:23 +0000 (12:20 +0100)]
Change releng to give information about Gitlab

Started with converting the information for releng into information for
Gitlab when build can not find the releng repository.

Refs #3272

Change-Id: I027dd8eb3d01435cb06fba093fb2c64f381d47f3

4 years agoExtend information for GPU update
Paul Bauer [Sat, 28 Dec 2019 11:10:25 +0000 (12:10 +0100)]
Extend information for GPU update

Refs #3167

Change-Id: I0df45487839c46ac98e99865c0d61637230ddc1a

4 years agoRemove GMX_CYCLECOUNTERS
Mark Abraham [Sat, 28 Dec 2019 06:44:43 +0000 (07:44 +0100)]
Remove GMX_CYCLECOUNTERS

With ARMv7 support removed, cycle counters are available on all
known platforms, so the CMake option to disable them can be removed.
This change will be easy to revert if the need arises in future.

Includes partial revert of 0d4ea6033cba8cbfe6, which was added
when supporting quirks of ARMv7.

Refs #2990

Change-Id: Iac107d977fcd8ea67d8306149b9fb6c17985afa4

4 years agoExclude build-system files from CPack
Paul Bauer [Mon, 23 Dec 2019 09:07:06 +0000 (10:07 +0100)]
Exclude build-system files from CPack

Found that during Gitlab CI builds both ccache and build directory
where included in the final archive. Added exclusions to make sure
they do not propagate there.

Change-Id: I79717914c1d91a548ff295ff479b84ae19640e5d

4 years agoMerge "Merge origin/release-2019 into release-2020" into release-2020
Mark Abraham [Sat, 28 Dec 2019 12:26:27 +0000 (13:26 +0100)]
Merge "Merge origin/release-2019 into release-2020" into release-2020

4 years agoRemove membed from features
Paul Bauer [Sat, 28 Dec 2019 10:59:13 +0000 (11:59 +0100)]
Remove membed from features

gmx membed currently does not work because the group scheme has been
removed.

Change-Id: I775ee8d2268e44610fa04ca15a1f3ff92b18f574

4 years agoDeprecate support for Armv7
Paul Bauer [Fri, 27 Dec 2019 15:37:12 +0000 (16:37 +0100)]
Deprecate support for Armv7

Fixes #2990

Change-Id: Ia9dbfc9ea6cf23782e812ef2929e4851b264bc82

4 years agoRemove support for ARMv7
Mark Abraham [Sat, 28 Dec 2019 06:42:02 +0000 (07:42 +0100)]
Remove support for ARMv7

Includes partial revert of 0d4ea6033cba8cbfe6

Refs #2990

Change-Id: I7f154a15f382a53af89b9f8b5370bffbe47bfe66

4 years agoStop testing ARMv7
Mark Abraham [Sat, 28 Dec 2019 06:31:49 +0000 (07:31 +0100)]
Stop testing ARMv7

Refs #2990

Change-Id: I837daf20df266a44ca53f7368a05a0cae36bc47d

4 years agoAdd a note to the log file when -update gpu was set with DD
Artem Zhmurov [Fri, 20 Dec 2019 13:08:36 +0000 (14:08 +0100)]
Add a note to the log file when -update gpu was set with DD

GPU update with DD is not enabled with DD even if '-update gpu'
is requested. The only way to enable it is to set
GMX_FORCE_UPDATE_DEFAULT_GPU environment variable. This patch
adds a note to the output, expaining that. Also, extra warning
note is added when the environment variable is set.

Fixes #3259.

Change-Id: I480dd8e734ff60156e117cc80b1cd9af6a161791

4 years agoAdd copyright check and improve cache usage
Paul Bauer [Mon, 23 Dec 2019 09:19:16 +0000 (10:19 +0100)]
Add copyright check and improve cache usage

Changed the way jobs are using the runner cache, so that each subsequent
build can benefit from the cache.

Also removed caching from jobs that don't benefit from it.

Change-Id: Ic4505cc034ddf83dc2a7e8dc07ed1dfa9558633d

4 years agoMerge origin/release-2019 into release-2020
Paul Bauer [Fri, 27 Dec 2019 12:58:41 +0000 (13:58 +0100)]
Merge origin/release-2019 into release-2020

Resolved Conflicts:
cmake/FindHwloc.cmake
cmake/gmxVersionInfo.cmake
docs/CMakeLists.txt
src/gromacs/gmxana/anadih.cpp
src/gromacs/gmxana/gmx_angle.cpp
src/gromacs/mdlib/forcerec.cpp

Change-Id: Ie4408c932a712d4f9d1f42117a512e0474535df5

4 years agoClean bad auto-format in decidegpuusage doxygen comments
Artem Zhmurov [Fri, 27 Dec 2019 10:19:52 +0000 (11:19 +0100)]
Clean bad auto-format in decidegpuusage doxygen comments

Change-Id: Ia2ca1dcc138c920d54ce928889cfcad63fc3784b

4 years agoUpdate intersphinx configuration.
M. Eric Irrgang [Thu, 12 Dec 2019 13:08:28 +0000 (16:08 +0300)]
Update intersphinx configuration.

Disable intersphinx cache expiration and set a finite timeout to play
more nicely in non-networked environments.

Change-Id: I5802f7dbba43897e27a77366013e254f868357e7

4 years agoLet GMX_DEVELOPER_BUILD trigger a "to do" list in the release notes.
M. Eric Irrgang [Thu, 26 Dec 2019 14:40:46 +0000 (17:40 +0300)]
Let GMX_DEVELOPER_BUILD trigger a "to do" list in the release notes.

Report the "to do"s from Sphinx directives in a single place for
road-mapping convenience.

Change-Id: I637e03738136a0ac3f38e03bb30a0e35afe78b51

4 years agoSet Sphinx default role.
M. Eric Irrgang [Thu, 12 Dec 2019 13:06:41 +0000 (16:06 +0300)]
Set Sphinx default role.

Set default_role config value to 'any' for better automatic handling of
interpreted text in the default role. Allows improved readability for
documentation that may not always be processed by Sphinx, such as
Python docstrings.

Change-Id: I5bf37111d6870117810ac308cfaa8c5f1ae9bb5c

4 years agoFix external web link.
M. Eric Irrgang [Thu, 26 Dec 2019 16:18:55 +0000 (19:18 +0300)]
Fix external web link.

Ineffective syntax was used to try to make a link from the text "Conda"
to the Conda website. Instead, make a properly defined link target and
use "Conda_" for hyperlinked text throughout the document.

Change-Id: Iee77f8b28c9ee2e621da1fb9c8e46832a95e5e5e

4 years agoEnable Sphinx todo directive for GMX_DEVELOPER_BUILD.
M. Eric Irrgang [Thu, 26 Dec 2019 14:35:50 +0000 (17:35 +0300)]
Enable Sphinx todo directive for GMX_DEVELOPER_BUILD.

Activates the `todo` and `todolist` directives from the Sphinx "todo"
extension when the GMX_DEVELOPER_BUILD CMake option is set.

Change-Id: Ibde6f750e3b657f0fd826d3ad4c8a1865acc499d

4 years agoClean up Sphinx interpreted text in the default role.
M. Eric Irrgang [Thu, 12 Dec 2019 12:58:40 +0000 (15:58 +0300)]
Clean up Sphinx interpreted text in the default role.

* Fix typos or syntax for several text literals that Sphinx tries to
  process as interpreted text (in the default role).
* Use Google docstring conventions to guide adjustment of gmxapi
  docstrings.

Change-Id: If6eeede8dcc782c04fc4363005c38c746a8664ea

4 years agocmake: fix missing header for legacy api
Christoph Junghans [Tue, 24 Dec 2019 01:27:59 +0000 (18:27 -0700)]
cmake: fix missing header for legacy api

Legacy api got broken in 7030361aab7e9d7927d98a5c68211c05531b256d.

Change-Id: Ie563716f1a58548b54d8010ea34f3b8faa1114d4

4 years agoAdd files for Gitlab CI
Paul Bauer [Fri, 20 Dec 2019 14:00:02 +0000 (15:00 +0100)]
Add files for Gitlab CI

Change-Id: I2508b6ba4a551a0768b1d5dfd742d97ebec37c7c

4 years agoPrepare for GROMACS 2019.6
Paul Bauer [Mon, 16 Dec 2019 11:39:33 +0000 (12:39 +0100)]
Prepare for GROMACS 2019.6

Reset doi strings

Change-Id: I38fa39c52cde5d967525770ec2a6381b7fcee33a

4 years agoGROMACS version 2019.5
Paul Bauer [Mon, 16 Dec 2019 11:36:38 +0000 (12:36 +0100)]
GROMACS version 2019.5

Added doi strings
Updated regressiontest hash.

Change-Id: If6c34638caf40f562fd8a744af767be4941ff73b

4 years agoRevert "Fix that tests intended for multiple ranks run that way"
Paul Bauer [Sun, 22 Dec 2019 16:04:37 +0000 (17:04 +0100)]
Revert "Fix that tests intended for multiple ranks run that way"

This reverts commit 1ebc7b0bff4a32ce957fd79a1d1bd20b535ea518.

Reason for revert: The parallel running of tests doesn't work the way we want here and the effort for fixing things in a soon to be critical fixes only branch is not worth it in my opinion

Change-Id: I59fb6f9daf7019592de7e8db202ccd050c133610

4 years agoUse ListOfLists for atom to constraint mapping
Berk Hess [Tue, 10 Dec 2019 09:56:19 +0000 (10:56 +0100)]
Use ListOfLists for atom to constraint mapping

Replace t_blocka by ListOfList<int> for all atom to constraint map
handling.

Change-Id: If33e7068949c28453a186c4a83842bab3dc6fb2a

4 years agoMove nr_nonperturbed out of t_ilist
Berk Hess [Wed, 4 Dec 2019 12:50:42 +0000 (13:50 +0100)]
Move nr_nonperturbed out of t_ilist

The member nr_nonperturbed of t_ilist is only used in a few places
and fits better in t_idef. This is also needed for refactoring
of idef and t_ilist that will follow.

Change-Id: I921e06497d341a98530d7950f2393c19d0a350cb

4 years agoAdd user guide doc for GPU buffer ops and comms env variables
Alan Gray [Thu, 12 Dec 2019 11:06:36 +0000 (03:06 -0800)]
Add user guide doc for GPU buffer ops and comms env variables

Change-Id: Ib6701adbf6f4909a804394606a362fa209716497

4 years agoFurther updates to Gitlab CI
Paul Bauer [Wed, 11 Dec 2019 16:07:30 +0000 (17:07 +0100)]
Further updates to Gitlab CI

Reorganized builds and added configurations for gmxapi.
Also added release pipeline with proper documentation build,
as well as initial build stage to catch errors early.

Change-Id: Ic456d2046f9eb2b86ed8e84741c7f42aee79e717

4 years agoFix wrong header in release notes
Paul Bauer [Fri, 20 Dec 2019 13:28:10 +0000 (14:28 +0100)]
Fix wrong header in release notes

Fixes #3261

Change-Id: Icc31b7a273670e99c21c9bb60343e1ce5d532653

4 years agoRemove problematic output of gmx angle
Christian Blau [Mon, 25 Nov 2019 15:42:25 +0000 (16:42 +0100)]
Remove problematic output of gmx angle

It could happen that the calculation of the standard deviation
for angles caused a divide by zero error for empty populations.
Because this standard deviation of per frame averages over all
frames was anyhow meaningless, it has been removed.

Refs #3206

Change-Id: Icf541a8b3bef502da9a22b55a8e8154b2d4fc8f8

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 agoChange some domdec data members to RVec or IVec
ejjordan [Thu, 12 Dec 2019 17:59:56 +0000 (18:59 +0100)]
Change some domdec data members to RVec or IVec

Where a trivial change from rvec/ivec to RVec/IVec is possible,
that change has been made. The data member gmx_domdec_t.nc is
renamed to numCells to facilitate completing the todo about
changing this member to IVec. Some dead code is also removed
from the domdec module.

Change-Id: I1ef78c5ec198c60a1dd40a57ee5f87feb48bf490

4 years agoExpand ListOfLists pushBack() functionality
Berk Hess [Sun, 15 Dec 2019 21:45:48 +0000 (22:45 +0100)]
Expand ListOfLists pushBack() functionality

Added member pushBackListOfSize(int) to ListOfLists to add a list of a
given size to the list so its elements can be set. Used this in
applicable cases and added back() to ListOfLists to facilitate access
to that newly added list. Added front() for symmetry. Added tests.

Limited ListOfLists to arithmetic types, as there is no compelling
use case for other types and it simplifies the class.

Also fixed two minor issues that came up during review.

Change-Id: Ia05c270f9c337902c78f97e9613e45e82a21df63

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 agoRemove exclusions from t_topology
Berk Hess [Tue, 10 Dec 2019 14:57:08 +0000 (15:57 +0100)]
Remove exclusions from t_topology

Exclusions in t_topology were not used anywhere.
To achieve this, changed convert-tpr to use gmx_localtop_t as an
intermediate instead to t_topology.

Change-Id: I87338ff8d0fac8ccdae0377018b88bc25738f5be

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 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.

Change-Id: I78925951dcb59a11af01bc64f0dea373fe172cbb

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 formatting error
Paul Bauer [Mon, 16 Dec 2019 12:51:02 +0000 (13:51 +0100)]
Fix formatting error

Fix originally proposed by Boris Timofeev.

Refs #3225

Change-Id: Ie742f2c751473d17fc8f69e9ed79faacdd6fc56c

4 years agoFix that tests intended for multiple ranks run that way
Mark Abraham [Sat, 28 Sep 2019 08:25:41 +0000 (10:25 +0200)]
Fix that tests intended for multiple ranks run that way

Added the flag that triggers ctest to use the flags that will produce
multiple ranks in both thread-MPI and real MPI cases.

Change-Id: I4ef3af4fd1750ab7cc231a29191fc4042385c309

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 the GPU bonded stream with 1 PP + 1 PME rank
Szilárd Páll [Sat, 14 Dec 2019 22:15:44 +0000 (23:15 +0100)]
Fix the GPU bonded stream with 1 PP + 1 PME rank

WIth 1 PP + 1 PME rank the GpuBonded constructor gets passed the
non-local nonbonded stream which is nullptr and as a result the bonded
kernel launch happens in the default stream blocking concurrent
kernel execution.
This change makes sure that only when there is PP domain decomposition
is the GpuBonded constructor passed the nonlocal stream.

Fixes #3241

Change-Id: I858401b78c620adc3bea176e40e6fa179e583483

4 years agoUse ListOfLists in gmx_mtop_t and gmx_localtop_t
Berk Hess [Fri, 6 Dec 2019 09:11:55 +0000 (10:11 +0100)]
Use ListOfLists in gmx_mtop_t and gmx_localtop_t

This change uses ListOfLists for exclusions in gmx_mtop_t and
gmx_localtop_t. Exclusions in t_topolgy as well as other atom
and index lists still use t_blocka.

Change-Id: Idfd532ad2a4b19d68e60b05dbd0a3082650ec20a

4 years agoFix issues in ListOfLists
Berk Hess [Fri, 13 Dec 2019 07:19:35 +0000 (08:19 +0100)]
Fix issues in ListOfLists

Fix enable_if function compilation issue for non-arithmetic types.
Extend tests of ListOfLists with non-POD type.
Fix ARM gcc-5 narrowing conversion warnings for arm post-submit.

Change-Id: I0c0129fd881c84d366c1745ee3d9e3a8caf8633e

4 years agoFix torsion angle calculation
Paul Bauer [Fri, 6 Dec 2019 11:18:23 +0000 (12:18 +0100)]
Fix torsion angle calculation

Fix originally contributed by Boris Timofeev.

Fixes #3225

Change-Id: I4862679e4aeae514736df53f0eff44bf3b85f928

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 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.

Change-Id: If0a775ab86d25a7d5646e824243892320d4ddbe3