Mark Abraham [Fri, 17 Jan 2020 14:43:38 +0000 (15:43 +0100)]
Update some nbnxm kernel constants to constexpr
Then OpenCL kernels now use preprocessor constants of the same names
and values, which are set up on the JIT compilation line. This
eliminates a header file used for compatibility.
Added support also for the ocl_nbnxm_kernels testing target.
Change-Id: Ibf8f7864dd08b14aeecad095cdbe25b1fbacc765
Mark Abraham [Mon, 27 Jan 2020 06:54:05 +0000 (07:54 +0100)]
Remove element-size member fields
These are compile-time constants, and there is no need to store them
in variables.
Change-Id: Ib94fbc479b031c4d4034355123a8ff0cf333c74f
Mark Abraham [Sun, 26 Jan 2020 15:33:45 +0000 (16:33 +0100)]
Make NbnxnGpu class with constructor
This is needed for future reform of the NB GPU code. Also converted
the "staging" struct to have initializers (used to make the default
constructor) because it is held by value and would otherwise have
default constructor that leaves fields uninitialized.
Also replaced cl_bool with normal bool, as there was no advantage for
the former.
Change-Id: I1b63f0a8145dbd911062d1039f129074b0abdc3e
Paul Bauer [Fri, 24 Jan 2020 12:36:22 +0000 (13:36 +0100)]
Add cool quotes
Change-Id: I6debedecbefcf4828fc070874460394188a3012a
Szilárd Páll [Thu, 22 Aug 2019 00:11:41 +0000 (02:11 +0200)]
Add target for offline PME OpenCL compilation
Also fix clang-tidy warnings in the PME OpenCL kernels; tested with
clang-tidy 8.0 and 9.0.
Target will be triggered in all clang-tidy + OpenCL builds.
Moved the invocation of the targets in jenkins before the
tests where it makes more sense.
Change-Id: I31d7dd4883e20d0564ab2f18a6de7e0d17e8024a
Magnus Lundborg [Thu, 7 Nov 2019 13:47:38 +0000 (14:47 +0100)]
Removed SC RPower 48 from FEP kernel
With RPower 48 deprecated the FEP kernel has been simplified
quite a lot.
Fixes #3253.
Change-Id: Ic18d9f938679b2a7499fbcc31bfc9d28e89fdb98
Magnus Lundborg [Thu, 23 Jan 2020 15:47:28 +0000 (16:47 +0100)]
Minor cosmetic improvements in AWH
Remove duplicated inputrec outputs.
Clarify that user input data should be in kT.
Change-Id: I51b733f0a1969b8e5232766beb10a6f1a7c6a57a
Berk Hess [Wed, 22 Jan 2020 20:56:23 +0000 (21:56 +0100)]
Minor cleanup in constraint and shellfc code
Replaced include by forward declarations and simplified empty
ArrayRefs as function arguments.
Change-Id: I759f3f72bc0b4453caf059ae4723ef734a7c2ead
Artem Zhmurov [Thu, 9 Jan 2020 16:51:19 +0000 (17:51 +0100)]
Rename SettleCuda to SettleGpu
This is to folow general naming conventions across the code.
Refs #2886, #2888.
Change-Id: I273cf8c1cabcf59d1cb7fd7f0028c3c1cd8619c8
Berk Hess [Fri, 17 Jan 2020 09:59:18 +0000 (10:59 +0100)]
Use ArrayRef(WithPadding) in constraint code
This change is only refactoring, except for adding padding to two
buffers used for flexible constraints. This avoid potential illegal
memory access one element beyond the buffer with certain SIMD
implementations. Note the this memory was not used nor modified.
Change-Id: I385b3007a27888d15741e737ccfcf3e3a4369d1e
Artem Zhmurov [Thu, 9 Jan 2020 16:42:47 +0000 (17:42 +0100)]
Rename LincsCuda into LincsGpu
This is to folow general naming conventions across the code.
Refs #2885, #2888.
Change-Id: Ifa7e3febeff1d958155ed02daa97d26e828e8381
Artem Zhmurov [Thu, 9 Jan 2020 16:26:49 +0000 (17:26 +0100)]
Rename LeapFrogCuda to LeapFrogGpu
This is to folow general naming conventions across the code.
Refs #2887, #2888.
Change-Id: Ia090c0479f1960fe34d1144e3bd173015d157e62
Berk Hess [Wed, 15 Jan 2020 16:35:15 +0000 (17:35 +0100)]
Use std::vector in shellfc
Replaced all C memory management in shellfc by std::vector and
one now. Also used more ArrayRef.
All allocated memory is now freed by done_shellfc().
Change-Id: Ic533d7b20ba7486f76148476b35986a3caec4b36
Szilárd Páll [Tue, 17 Dec 2019 02:06:55 +0000 (03:06 +0100)]
Template X buffer ops on setFillerCoords
Also fix a typo and remove an outdated TODO.
Change-Id: I4d35a889fa71b0096e825b95a02860ab6420c4ad
Mark Abraham [Wed, 15 Jan 2020 17:30:23 +0000 (18:30 +0100)]
Regularize nbnxm module doxygen
This module will be easier to work with if all the files are
documented and all the comments precede the things that they comment.
Had to add several \internal flags to various files to ensure
things that should be internal are that way.
Change-Id: Ia08a936c23276cbea97c2e8ff47db403d3fd9185
Mark Abraham [Tue, 14 Jan 2020 15:53:26 +0000 (16:53 +0100)]
Make nbnxm headers more self-contained
Resolves existing TODO, removing a dependency of the CPU kernels
on config.h
Eliminates an unnecessary function, and the inlining of a function
that is only called every NS step.
Renamed gmx_nbnxn_*_t to gmx_nbnxm_gpu_t because there was no
advantage to the previous scheme. Each GPU build configuration only
ever uses one type, so there is no problem having different
declarations in different build configurations. The compiler would
complain if there was. The renaming of the former collection of types
in gpu_types.h created a dependency on config.h which should be
avoided.
Something about the renaming of gmx_nbnxm_cuda_t broke the way Doxygen
understood nbnxm_cuda_types.h. I thought that declaring a Doxygen
header for atomdata.h had fixed it, somehow, but it didn't, so there
is a suppression for the suspected false positive. Also fixed the
Doxygen in atomdata.h
Change-Id: I18c573ad87cbab9ae4f38aa49541f0821dc1c145
Paul Bauer [Sat, 11 Jan 2020 16:57:18 +0000 (17:57 +0100)]
Update nonstd::optional
Updated to commit
096ce6d7e45ef184de2c8ddcae45da4a9d539da5 to avoid a
bug (see https://github.com/martinmoene/optional-lite/issues/51)
Change-Id: I0df46b21fabcb7841600e5a6b32b2329742d12d5
Paul Bauer [Fri, 10 May 2019 12:03:42 +0000 (14:03 +0200)]
Allow access to optional outside libgromacs
When using gmx::compat::option in files also included
outside of the libgromacs tree (e.g. anything topology related),
compilation would abort because the include path could not be resolved
for nonstd::optional.hpp in e.g. legacymodules.cpp or view.cpp.
Adds the information needed to the CMakefiles to always find the correct
include path.
Also modifies CUDA nvcc compilation to have the header available for
those CUDA compiled files that need it.
Should be revisited when resolving #3290
Change-Id: If335ecdfa1bd2ba56cae7ee26c07d9a7faa5a651
Christoph Junghans [Tue, 14 Jan 2020 00:06:03 +0000 (17:06 -0700)]
cmake: install pbc.h for GMX_INSTALL_LEGACY_API
This was introduced in
97c751f1945702316b6342f4054da20dd5239872.
Change-Id: I1ecb0c10d0df9285bed7bef112d4cd439b262ce6
Paul Bauer [Tue, 14 Jan 2020 07:01:30 +0000 (08:01 +0100)]
Use utf-8 for python file reading
Avoids crashing on non-ascii characters
Change-Id: Ie489110bbe37619d36f8feb739e04ef60cccff16
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
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
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
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
M. Eric Irrgang [Fri, 13 Dec 2019 17:24:58 +0000 (20:24 +0300)]
Use enum for gmxapi.testsupport fixture options.
Change-Id: If369d2a10c30d1e39ffe1a8f1b69303b8a071b5b
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
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
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
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
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
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
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
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
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
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
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
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
Paul Bauer [Fri, 27 Dec 2019 13:48:34 +0000 (14:48 +0100)]
Prepare for 2020.1
Reset DOI strings
Change-Id: I5898dfdacde0c851c1a870a983094a2e56c3ab2b
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Paul Bauer [Sat, 28 Dec 2019 11:10:25 +0000 (12:10 +0100)]
Extend information for GPU update
Refs #3167
Change-Id: I0df45487839c46ac98e99865c0d61637230ddc1a
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
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
Mark Abraham [Sat, 28 Dec 2019 12:26:27 +0000 (13:26 +0100)]
Merge "Merge origin/release-2019 into release-2020" into release-2020
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
Paul Bauer [Fri, 27 Dec 2019 15:37:12 +0000 (16:37 +0100)]
Deprecate support for Armv7
Fixes #2990
Change-Id: Ia9dbfc9ea6cf23782e812ef2929e4851b264bc82
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
Mark Abraham [Sat, 28 Dec 2019 06:31:49 +0000 (07:31 +0100)]
Stop testing ARMv7
Refs #2990
Change-Id: I837daf20df266a44ca53f7368a05a0cae36bc47d
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
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
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
Artem Zhmurov [Fri, 27 Dec 2019 10:19:52 +0000 (11:19 +0100)]
Clean bad auto-format in decidegpuusage doxygen comments
Change-Id: Ia2ca1dcc138c920d54ce928889cfcad63fc3784b
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
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
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
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
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
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
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
Paul Bauer [Fri, 20 Dec 2019 14:00:02 +0000 (15:00 +0100)]
Add files for Gitlab CI
Change-Id: I2508b6ba4a551a0768b1d5dfd742d97ebec37c7c
Paul Bauer [Mon, 16 Dec 2019 11:39:33 +0000 (12:39 +0100)]
Prepare for GROMACS 2019.6
Reset doi strings
Change-Id: I38fa39c52cde5d967525770ec2a6381b7fcee33a
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
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
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
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
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
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
Paul Bauer [Fri, 20 Dec 2019 13:28:10 +0000 (14:28 +0100)]
Fix wrong header in release notes
Fixes #3261
Change-Id: Icc31b7a273670e99c21c9bb60343e1ce5d532653
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
Paul Bauer [Tue, 17 Dec 2019 14:21:38 +0000 (15:21 +0100)]
GROMACS 2020 release candidate
Adjusted regresstiontest hash
Change-Id: I37cec8154843b8f8a2a9136051b50bce7eba5888
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
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
Alan Gray [Thu, 19 Dec 2019 13:32:53 +0000 (05:32 -0800)]
Release note for GPU direct communications
Change-Id: I4487f2ed6bc789e6cfb3e68d802ccedda0c51962
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
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
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
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
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
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
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
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
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
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
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