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
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
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
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
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
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
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
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
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
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
Berk Hess [Wed, 6 Nov 2019 15:40:54 +0000 (16:40 +0100)]
Deprecated sc-r-power=48
Change-Id: I2e728228432498ad9641e52397523bd1a1135811
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
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
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
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
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
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
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
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
Szilárd Páll [Fri, 1 Nov 2019 15:35:13 +0000 (16:35 +0100)]
Improve SimulationWorkload doxygen
Change-Id: I0e4f6433d497b177b4dcc383b708ce8e91bb32e1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Berk Hess [Tue, 29 Oct 2019 14:15:26 +0000 (15:15 +0100)]
Fix walls with GPU update
Change-Id: I2e8568c9eab319065355c7a2596110bf1c625b31
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
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
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
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
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
Berk Hess [Tue, 29 Oct 2019 12:33:21 +0000 (13:33 +0100)]
Fix Ewald dipole correction with GPU update
Change-Id: I6b643abec3c1bc74b3e1017420cc03daecb0d4ef
Berk Hess [Mon, 28 Oct 2019 19:24:19 +0000 (20:24 +0100)]
Disable pressure coupling with GPU update
Refs #3182
Change-Id: I7752298a89f7069ae65e198af0c02dad153b4bf0
Paul Bauer [Tue, 29 Oct 2019 13:40:41 +0000 (14:40 +0100)]
Merge "Merge 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
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
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
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
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
Szilárd Páll [Wed, 23 Oct 2019 17:17:46 +0000 (19:17 +0200)]
Extend SimulationWorkload with CPU flags
Added flags for PME and Nonbondeds to indicate whether there is CPU
workload; this is useful as the lack of GPU work does not imply the
existence of CPU work.
Also made createSimulationWorkload() take the PME runmode class enum
instead of a bunch of bools.
Made some naming consistency improvements.
Refs #3181
Change-Id: I66233f1c790fc5092fb1babaed2ec3ebf16416de
Artem Zhmurov [Fri, 18 Oct 2019 13:26:36 +0000 (15:26 +0200)]
Allow using update flag
When update flag was re-enabled, the assertion was not removed.
Change-Id: Idd1b3e0d9ff60209918281aea23588f90806b898
M. Eric Irrgang [Thu, 24 Oct 2019 15:12:56 +0000 (18:12 +0300)]
Update bundled pybind.
Update the pybind11 headers from the 2.4.3 tag. Addresses Python C API
updates from the Python 3.8.0 release.
Refs #3175
Change-Id: Ib1380b272aa061f475cd18fa78da5cef131a2998
M. Eric Irrgang [Sat, 26 Oct 2019 08:53:22 +0000 (11:53 +0300)]
Fix CMake message typo.
Verb need 's'.
Change-Id: Iec27a9fe8540c3a8db68f85769f9965937bb0924
Pascal Merz [Thu, 24 Oct 2019 20:04:23 +0000 (14:04 -0600)]
Enable forced rotation for modular simulator
Forced rotation was currently disabled (without being checked for)
with the modular simulator. There is no reason to do so, as the
enforced rotation does not require any new element or communication
between elements.
Change-Id: I057935cbaeaedfde751ca26ba11fb7c990b23efe
M. Eric Irrgang [Thu, 24 Oct 2019 13:57:22 +0000 (16:57 +0300)]
Improve gmxapi mdrun test.
* Tweak the pytest logging output to be more useful.
* Do not test for trajectory file output for MPI workers that had
no ensemble simulation members.
Resolves a false error from test_run_from_read_tpr_op when running
pytest under mpiexec.
Change-Id: Iea601570a51da325cbb5be1615f2fc738af4554c
Berk Hess [Thu, 24 Oct 2019 17:36:45 +0000 (19:36 +0200)]
Add bool useDomainDecomposition in mdrunner
Change-Id: I0a320a33aef2a118a188358f7df6ab0f00aa2e13
Berk Hess [Thu, 24 Oct 2019 17:21:31 +0000 (19:21 +0200)]
Add gmx_mtop_interaction_count()
Change-Id: Ia40990517cc5fa902100ba4d185b3d3211d312cd
Berk Hess [Thu, 24 Oct 2019 17:05:48 +0000 (19:05 +0200)]
Fix initializers in locality.h
Change-Id: I6b0e3066401e5e23a4923e4de87c2e4326d37297
Berk Hess [Wed, 9 Oct 2019 11:57:07 +0000 (13:57 +0200)]
Move locality.h from nbnxm to mdtypes
Removed duplicate definition of AtomLocality from
StatePropagatorDataGpu.
Change-Id: I79aa415dd6fc91791d0cc54dc07d7c56e9b7c874
Berk Hess [Wed, 23 Oct 2019 09:00:24 +0000 (11:00 +0200)]
Use gmx::Range in Nbnxm gridding functions
Change-Id: Ice818946dc78375065797056762acd340921ea70
M. Eric Irrgang [Wed, 16 Oct 2019 15:22:04 +0000 (18:22 +0300)]
Suppress some output when sample_restraint is built with GROMACS.
The install target for the sample_restraint plugin package is
disabled when built for testing as part of a GROMACS build, which made
a CMake status message confusing.
Change-Id: I235f879b50cf04092a8fc40a6c5e4722ffa108bf
ejjordan [Mon, 21 Oct 2019 09:11:47 +0000 (11:11 +0200)]
Make t_nextnb an implementation detail
This change moves the t_nextnb struct completely inside
of gen_excl and gen_pad. This makes changing the underlying
data structure easier.
Change-Id: I643025ff9e572849e7e1aaedab1484a1609fe7db
Artem Zhmurov [Tue, 22 Oct 2019 11:54:55 +0000 (13:54 +0200)]
Slight improvements to decideWhetherToUseGpuForUpdate(...)
1. The boolean is passed for vsites instead of entire mdatoms structure.
2. Arguments are taken as const.
3. Whether or not the position/orientation restraints are enabled is now
taken from topology.
Change-Id: I9d299b5e46c39af07a17af1a639907d1dd11a9bc
Berk Hess [Wed, 23 Oct 2019 09:50:02 +0000 (11:50 +0200)]
Fix illegal memory access in FE calculations
With free-energy calculations not using lambda states, an output
buffer would be accessed one element beyond it's allocated size.
Note that this code should be completely refactored, but not
in a release branch.
Fixes #3173
Change-Id: I677e602ba96c9f64fbf79a626e43c9e590c18bea
Berk Hess [Wed, 23 Oct 2019 08:27:54 +0000 (10:27 +0200)]
Expand documentation for nbnxn_put_on_grid()
Change-Id: Id6349848d9d03215632cf23e59a556f4e40327fb
Pascal Merz [Tue, 22 Oct 2019 22:05:07 +0000 (16:05 -0600)]
Correct for skewed box before domain decomposition (modular simulator)
The correction for skewed boxes before domain decomposition is done
in the legacy code, but was missing in the modular simulator.
Change-Id: I202629c1b546247c64b09e491cfb09db402ca1b1
Alan Gray [Wed, 4 Sep 2019 12:41:21 +0000 (05:41 -0700)]
Enable GPU Peer Access in GPU Utilities
When using the new GPU communication features, enabling peer access
between pairs of GPUs (where supported) will allow peer-to-peer
communications. In this patch the CUDA code to enable peer access is
introduced into central GPU utilities and called from do_md.
Implements #3087
Change-Id: If668366b76d49f7b624eedb501f8af19135c4386
Pascal Merz [Wed, 23 Oct 2019 00:32:47 +0000 (18:32 -0600)]
Fix log writing (modular simulator)
The current implementation would not write energies to log if
- log was not in sync with energy writing, or
- log writing is more frequent than neighborsearching.
This commit fixes these bugs, restoring the legacy behavior. Moving
forward, it could be discussed whether writing to log file and writing
to energy trajectory could be coupled (i.e., should log writing frequency
be a multiple of energy writing?).
Fixes #3151
Change-Id: Icb12ecd7c9aedb29138a9a17fb6d130c4f23a06a
Pascal Merz [Tue, 22 Oct 2019 23:09:21 +0000 (17:09 -0600)]
Adapt enum to style convention (modular simulator)
This capitalizes the values of two enums within the modular simulator
framework (EnergySignallerEvent and TrajectoryEvent) in accordance
with the style conventions.
Change-Id: Iecd8e4ece43eee37ee7b3315ec65d86bb04f1feb
Pascal Merz [Tue, 22 Oct 2019 22:59:36 +0000 (16:59 -0600)]
Small improvement to EnergyElement (modular simulator)
This avoids registering energy and trajectory callbacks on
non-master ranks, as the result is never used. This also renames
isMaster_ to isMasterRank_ for consistency with other uses.
Change-Id: I364bbe73bf7d8ff3c6789d15e54603d3bd7f221b
Artem Zhmurov [Sun, 20 Oct 2019 13:30:30 +0000 (15:30 +0200)]
Remove unnecessary CUDA stream synchronization calls
These calls were needed before the synchronization was re-introduced.
With the event-based synchronization in place, they are no longer
necessary.
Change-Id: I9507432b40962cd49e4fc7374f15530c7fbf2ae7
Pascal Merz [Tue, 22 Oct 2019 17:40:26 +0000 (11:40 -0600)]
Fix stop condition handling (modular simulator)
Fixes a bug that would signal the stop condition repeatedly when
the second SIGINT was received, effectively keeping the simulation
from stopping by repeatedly delaying the last step to the following
step.
Change-Id: Ie0de7b893ff53ccb09e285cb1b84e01594f581d5
Pascal Merz [Tue, 22 Oct 2019 17:35:51 +0000 (11:35 -0600)]
Fix signal propagation (modular simulator)
In the modular simulator, signals between ranks were not reduced by
compute globals. This disabled the processing of SIGINT and might
have influenced checkpointing.
Change-Id: Idebe3c80f796c41cfdb12922c26c4920ca8d9d20
ejjordan [Tue, 22 Oct 2019 14:12:40 +0000 (16:12 +0200)]
Remove unused functions from gmxpreprocess
Change-Id: I1f635dcc2f534d5be0de30eaace32b561da3c13c
Artem Zhmurov [Tue, 22 Oct 2019 13:47:59 +0000 (15:47 +0200)]
Rename havePositionRestraints(...) to haveRestraints(...)
This function checks if there are position, distance or orientation
restraints in the system, so the havePositionRestraints(...) name
is misleading.
Change-Id: I9ffaa1ff68172c2227780492577ab1d8626a23f6
Berk Hess [Tue, 22 Oct 2019 09:33:20 +0000 (11:33 +0200)]
Require -ei for essential dynamics
Essential dynamics sampling was switching on by either the -ei
option or by ED information being present in the checkpoint file.
As this complicates initialization and we should not choose
algorithms based on a checkpoint, it is now only switched on
by the -ei option (but an mdp option is we actually want).
Change-Id: I6e0873a38ee42779d09f66ed7e55c6d1b8bf25da
Christian Blau [Tue, 22 Oct 2019 13:44:15 +0000 (15:44 +0200)]
Fix nst in density-fitting module
An error in the nst variable led to forces from density-guided
simulations to be applied every step, because its internal step
counter would stay at 0.
Change-Id: Ib8b33b407bfe9c56bab497f7e2d505843675afca
refs: #2282
Pascal Merz [Mon, 21 Oct 2019 20:13:46 +0000 (14:13 -0600)]
Fix DomDec step (modular simulator)
Domain decomposition was mistakenly using the initial step for
the entire run with modular simulator.
Change-Id: I1a6a56c91e3e381bf3aa0e1de1d41b16f19a6634
Pascal Merz [Mon, 21 Oct 2019 21:25:58 +0000 (15:25 -0600)]
Fix PmeLoadBalanceHelper initialization (modular simulator)
PmeLoadBalanceHelper could be initialized before the state had a
valid box. Fixed the initialization order and added comments and
assert to avoid this error to creep back in.
Change-Id: I7b59011d6e1d532543a1d1463eceacfcdc148557
ejjordan [Mon, 21 Oct 2019 16:08:07 +0000 (18:08 +0200)]
Remove unused function generate_excls and make clean_excls static
Change-Id: I9bd742da2032f0f7d9ce19bd71df6a87c881e6e1
Szilárd Páll [Mon, 21 Oct 2019 16:26:01 +0000 (18:26 +0200)]
Remove unsupported configs from the gpuupdate matrix
GPU update is not supported with domain decomposition and due to the
fallback paths being triggered these cases would anyway test GPU buffer
ops only which can already be tested with the gpubufferops matrix.
These configs can be re-enabled when the respective use-cases get
enabled in the future.
Change-Id: Ic65e118b05fa21683069fbffa19ad7285c27cdf4
Szilárd Páll [Tue, 15 Oct 2019 17:19:34 +0000 (19:19 +0200)]
Override GMX_GPU_DD_COMMS if nonbondeds are off
It is not useful to have environment variables force dev features
on when a hard dependency, here the nonbonded offload, is not enabled
in a run. This override should make it easier to pass tests.
Change-Id: I58898fc4ea55454d74bc0e7fb1121eab2c66d84c
Artem Zhmurov [Mon, 21 Oct 2019 09:42:14 +0000 (11:42 +0200)]
Update the copyright message
1. Add Artem Zhmurov to the list of contributors.
2. Update the copyright year.
Change-Id: Ic7d19acd58d123e8a5f1a91c3191fbdaa26db787
Artem Zhmurov [Fri, 18 Oct 2019 15:17:06 +0000 (17:17 +0200)]
Add environment variable that changes the meaning of '-update auto'
This change creates 'GMX_FORCE_UPDATE_DEFAULT_GPU', that changes the
default behavior of '-update' option to 'gpu'. Also changed the
gpuupdate Jenkins trigger to set this environment variable.
Refs. #3163.
Change-Id: I4463de3266d97c5f91bac65d3d997cf564e6e880
Alan Gray [Fri, 6 Sep 2019 07:00:12 +0000 (00:00 -0700)]
GPU Coordinate PME/PP Communications
Extends PmePpCommGpu class to provide PP-side support for coordinate
transfers from either GPU or CPU to PME task, and adds new
PmeCoordinateReceiverGpu class to recieve coordinate data directly to
the GPU on the PME task.
Implements part of #2817
Refs TODOs #3157 #3158 #3159
Change-Id: Iefa2bdfd9813282ad8b07feeb7691f16880e61a2
M. Eric Irrgang [Wed, 2 Oct 2019 13:53:52 +0000 (16:53 +0300)]
Add trajectory output to mdrun operation.
Fixes #3144
Change-Id: Ic9e1eb988bc9c934eb8e9cd6009008e6e60d8342
Alan Gray [Sat, 31 Aug 2019 18:20:52 +0000 (11:20 -0700)]
GPU Receive for PME/PP GPU Force Communications
This change extends the PME/PP GPU force communication functionality
to allow the force buffer to be recieved direct to GPU memory on the
PP task.
Implements part of #2817
Refs #3158 #3159
Change-Id: I5b1cff1846c7c3bd966b6bf9c0af72769600ef18
Szilárd Páll [Tue, 15 Oct 2019 10:57:39 +0000 (12:57 +0200)]
Add strict assertions on x synchronizer in PME
To be able to add strict assertions on when a valid event synchronizer
needs to be passed to PME, a new booean is stored in the PME GPU data
structures indicating whether execution is happening on a separate PME
rank.
Also clarified some function argument doxygen.
Change-Id: Ic141c70dded2b57f39b7f2e2bfa1a17d80604204
Christian Blau [Thu, 17 Oct 2019 11:36:13 +0000 (13:36 +0200)]
Manual entry and .mdp option for adaptive force scaling
Adds a manual entry and extends the mdp option section to describe the
adpative force scaling parameters.
refs #2282
Change-Id: Ifb2e4af256282340f1111262f91e5d73d93c3208
Szilárd Páll [Fri, 18 Oct 2019 18:41:21 +0000 (20:41 +0200)]
Fix genion clang-8 warning
Commit
00c05bb switching to clang-tidy 8 was not based on the latest
master and went in without flagging a recently introduced warning.
This fixes the warning also fixing master presubmit.
Change-Id: If193a376f6f0c79bb004ef5775d404d71c5b6f10