Artem Zhmurov [Wed, 11 Mar 2020 13:21:24 +0000 (14:21 +0100)]
Store DeviceInformation inside the DeviceContext class
The device information with which the context was created is
now stored inside the DeviceContext object. This allows to pass
less arguments when information from DeviceInformation is needed
(e.g. for OpenCL optimization). The empty constructor for the
DeviceContext was also removed to make having invalid context less
probable.
Change-Id: Ie9600a89c21327246251c891807c37084f626f76
Berk Hess [Tue, 17 Mar 2020 09:53:13 +0000 (10:53 +0100)]
Simplify finish_update()
Now that coordinates are no longer shifted using the graph
in do_force() and not shifted back in finish_update(),
the handling of frozen atoms can be simplified.
Change-Id: I81b817d25f26eeb5480e729dd858c084431a5117
Berk Hess [Mon, 16 Mar 2020 09:09:14 +0000 (10:09 +0100)]
Remove at_start from t_graph
The start atom for shifting was always 0, so no longer needed.
Also improved the naming of several variables.
Change-Id: If9df778f50383e5b2faacb559ee768062faddf2a
Paul Bauer [Fri, 13 Mar 2020 11:21:47 +0000 (12:21 +0100)]
Add script to generate CI Docker files
Refs #3395
Change-Id: Id001c87b52f4d1f7afcb7fbb38cd4b5efdbfd90e
Artem Zhmurov [Wed, 11 Mar 2020 11:09:46 +0000 (12:09 +0100)]
Pass DeviceContext instead of GPU runtime data when possible
Change-Id: I06d66dc24994b15b2ed49ced927b4a5cf59c7c3c
Berk Hess [Fri, 13 Mar 2020 21:49:32 +0000 (22:49 +0100)]
Remove use of graph in do_force()
Removed all unused code paths using t_graph.
TODO: Remove the double coordinate copy in the update code.
Change-Id: I9fcba521e85972e7a0d18e348e0330f845c45182
Berk Hess [Thu, 5 Mar 2020 11:47:59 +0000 (12:47 +0100)]
Use WholeMoleculeTransform for orires and epsilon-surface
Remove direct use of the graph from the orientation restraint
and Ewald epsilon-surface term code by passing in whole molecules
created by the WholeMolecules class.
Since this was the only remaining use of graph in do_force(),
it can now be removed.
Also enabled the epsilon-surface mdrun-test.
Fixes #3441
Change-Id: Idfec6508c6dfd9e1a656cf23613ede3793794901
Berk Hess [Wed, 11 Mar 2020 08:18:54 +0000 (09:18 +0100)]
Add WholeMoleculeTransform class
This class manages a coordinate buffer with molecules not split
over periodic boundary conditions for use in force calculations
which require whole molecules.
Change-Id: Iaa07b8a037d115c9b923978204aaa859ae4256c9
M. Eric Irrgang [Tue, 17 Mar 2020 14:33:38 +0000 (17:33 +0300)]
Document CI variable and remove unused template.
Change-Id: I03a3790fa962b508afc797728a94ebaccfb2509b
Mark Abraham [Tue, 17 Mar 2020 19:36:37 +0000 (20:36 +0100)]
Fix unused variable in PME OpenCL kernel
This is only found when clang is the device compiler.
Also fixed some Doxygen there
Change-Id: I5b46ef0f5c2b11f9b4e891757a25892e3c1d7739
Mark Abraham [Sun, 8 Mar 2020 07:46:08 +0000 (08:46 +0100)]
Simplify PME GPU constants
The values dependent on threadsPerAtom are now computed directly
from a class enum value, rather than indirectly from a bool.
Turned clang-format off for sections of the code where we declare
template functions. That stuff is easier to read and maintain if we
treat it like tabular data rather than free-form code.
Removed some const on template values. Those are useless, because
template values are always const, and confused a compiler when a const
ThreadsPerAtom was compared with a ThreadsPerAtom.
Change-Id: I295d4c2ea52b7912b8bd9a09ee178d104e9bfcb0
M. Eric Irrgang [Wed, 18 Mar 2020 11:38:01 +0000 (14:38 +0300)]
Disable sphinx.ext.viewcode
Generates a broken link that causes linkchecker to fail.
This is a useful extension that will help especially for navigating
from the infrastructure documentation to source files (where navigable
content is more important than user-facing polish) but we aren't ready
for it right now.
Change-Id: I1a8c18428fac532c6064ea583c3b6952bd2e821e
M. Eric Irrgang [Mon, 16 Mar 2020 15:50:23 +0000 (18:50 +0300)]
Add stub Variables documentation to GitLab CI doc.
Change-Id: I1950c2615919cb08b1af331060b9937f1cfb535e
Artem Zhmurov [Tue, 17 Mar 2020 21:04:00 +0000 (22:04 +0100)]
Make some doxygen errors more clear
Prints more clear error messages when doxygen fails to run on assertion.
Change-Id: I476a97b494484d7b020a60d833d8e59405c970a2
M. Eric Irrgang [Mon, 16 Mar 2020 15:30:11 +0000 (18:30 +0300)]
Remove duplicated YAML key.
Change-Id: I611be87f451bd7e82e814c14d16f1086bb69e1fa
Berk Hess [Mon, 9 Mar 2020 17:05:33 +0000 (18:05 +0100)]
Convert t_graph to C++
Convert memory management and initialization of t_graph to C++.
Added a simple class to build the graph. This makes graph generation
a factor 4 slower, but we plan to use gmx_mtop_t for generating
the graph, which will lead to a large speed-up.
Todo: Convert t_graph to a proper class.
Change-Id: Ib5a3059e9c0d0cf6888448fe471280ecf6b9467a
Christian Blau [Sat, 14 Mar 2020 19:34:07 +0000 (20:34 +0100)]
Remove dysfunctional QMMM interface pt4
Clean-up leftover QMMM definitions
Change-Id: I751389f02a111f9a7ccd907fe63c0422df65cc92
Christian Blau [Sat, 14 Mar 2020 13:47:30 +0000 (14:47 +0100)]
Remove dysfunctional QMMM interface pt3
Removing QMMM from inputrec
Change-Id: I3873c2bfa97234ebdf25e49f8ed68be221f9f957
Christian Blau [Fri, 13 Mar 2020 17:45:52 +0000 (18:45 +0100)]
Remove dysfunctional QMMM interface pt2
Uncoupling from forcerec, deleting unused files.
Change-Id: Id72281a26b8b39b6d2a37f5f8a43330f399ce5aa
Christian Blau [Fri, 13 Mar 2020 17:02:56 +0000 (18:02 +0100)]
Remove dysfunctional QMMM interface pt1
Removing some of the by now obsolete QMMM functionality to ease
refactoring work on grompp and mtop
Change-Id: I4a973e905f63d06028ec5d0e73afbcbafa7f0cf5
M. Eric Irrgang [Sun, 15 Mar 2020 15:16:19 +0000 (18:16 +0300)]
Add document for containerization infrastructure.
Refs #3375
Change-Id: Ia734e6c448959a8d73c274847538e81a8c9191ce
M. Eric Irrgang [Sat, 14 Mar 2020 15:27:41 +0000 (18:27 +0300)]
Alphabetize list for readability.
Sort the exported variables passed with EXTRA_VARS in a call to
gmx_configure_version_file().
Change-Id: Iddd878c5b6fefa03a2f0c579147f98e3d51eba08
M. Eric Irrgang [Sat, 14 Mar 2020 15:23:26 +0000 (18:23 +0300)]
Reformat arguments for readability.
Put each of the values for the EXTRA_VARS argument on a separate line
with extra indentation to help distinguish values from key words in a
call to gmx_configure_version_file().
Change-Id: I586bb29c9fdd3e9a01fbea76163085d73ec18d47
M. Eric Irrgang [Sun, 15 Mar 2020 14:59:57 +0000 (17:59 +0300)]
Define an argparse parent parser for container image tools.
Refs #3395
Change-Id: I8bcb314b21732cb870743f44de6aadc4d6bf534d
M. Eric Irrgang [Mon, 17 Feb 2020 16:10:30 +0000 (19:10 +0300)]
Build MPI in Dockerfile.
We should make sure that the MPI compiler wrapper we
set up corresponds to the toolchain we expect to use
in a Docker image.
Refs #3395
Change-Id: I89e2af539199918153560483552b5245c6947acf
M. Eric Irrgang [Sat, 14 Mar 2020 14:24:30 +0000 (17:24 +0300)]
Merge conf.py and conf-vars.py.
Combine conf.py and conf-vars.py.cmakein into conf.cmakein.py.
Process conf.cmakein.py into conf.py the same way conf-vars.py.cmakein
was formerly processed.
Reduces repository complexity and improves the readability of conf.py.
Also allows both conf.cmakein.py and conf.py to be valid Python so that
editors and linters can correctly check the source. conf.py was not
usable from its source directory, so no functionality is lost, and it is
clearer now that documentation should be built through CMake instead of
directly from the command line.
Change-Id: Ia569b3c2f55d20fc21107149a672d1b587ab1571
Mark Abraham [Wed, 4 Mar 2020 17:44:34 +0000 (18:44 +0100)]
Move testing code to test directory
This should not add bulk to libgromacs
Also decoupled some headers from unnecessarily depending on other
headers, some of which inhibited the proper separation of code and
tests. In particular, there's now a proper getter for warp size.
This needed the default implementation of pmeInitEmpty to move into a
source file, because it was requiring the definition of CodePath to be
available.
Change-Id: I3040c77404ade4d8cf0a41faf4aa4da4db42e3d3
Artem Zhmurov [Thu, 13 Feb 2020 15:05:51 +0000 (16:05 +0100)]
Combine initialization routines for GPUs assigned to PME and Nonbonded
The subroutines that do the initialization share a lot of logic. Also,
the current setup does not allow to have more than one GPU assigned to
a single rank. This make it natural to keep one handle to the GPU
device, if there is a GPU assigned to the rank.
Change-Id: I9177e1a6c00cf6efa7b58370b8fa6220c8fd4496
Artem Zhmurov [Thu, 20 Feb 2020 16:13:23 +0000 (17:13 +0100)]
Remove stream from GPU kernel launch config
The stream is not a configuration parameter, hence
it should not be a part of a kernel config struct.
This also remove dependency of kernel config on
DeviceStream.
Change-Id: Idb0426f21bc9db1490053b82f1d11bee55ae9133
Mark Abraham [Fri, 6 Mar 2020 19:43:01 +0000 (20:43 +0100)]
Require padded atom data for PME GPU
The unpadded case doesn't work and is hard-coded not to run, so we
should remove it.
The constant c_usePadding has been true ever since
379b2954fd3efbd1b2c724964932c2ef03078939 introduced it in 2016. This
piece of unecessary complexity probably comes from prior introduction
of the optimization of padding the atom data arrays so that
device-side loads don't have to check boundaries. That's unlikely to
ever change again, and is unused, untested, and poorly
understood. (It's also currently broken - if c_usePadding == false
would be attempted, it would lead to the alignment getter returning
zero that would be used as a divisor, ie. is broken.)
In some places the words alignment and padding were used
interchangeably, which is confusing and fixed. Now code refers to
block size and that it set the minimum divisor for the memory
allocation. Padding size is a misnomer, because the size of the
padding can be interpreted as the number of the extra array elements.
The resulting code is a bit simpler and easier to understand
Change-Id: I51a28c1c722e3ee5a9f3e1787892d81cb9df00fb
Artem Zhmurov [Thu, 20 Feb 2020 14:27:19 +0000 (15:27 +0100)]
Use DeviceStream init(...) function to create streams
Change the stream creation procedures from direct calls to CUDA
and OpenCL API to using pre-defined init(...) method of the
DeviceStream class.
Refs #3314
Refs #3311
Change-Id: I96a0ca41f251b9925ef9bed77c4f355939b65c6d
Artem Zhmurov [Tue, 18 Feb 2020 00:36:38 +0000 (01:36 +0100)]
Make DeviceStream into a class
Refs #3314
Refs #3311
Change-Id: Ic270864f0e82af63f91a91c9951bf678795680fa
Berk Hess [Wed, 11 Mar 2020 16:25:59 +0000 (17:25 +0100)]
Add tests for Ewald surface terms
Note that the surface-epsilon test with flexible bonds is currently
disabled as this functionality assumes whole molecules which is
currently not possible.
Change-Id: Icfe4d41abf12c5832c0d7757eb9dbe5631338f46
Gilles Gouaillardet [Wed, 11 Mar 2020 01:05:19 +0000 (10:05 +0900)]
grompp: fix the -ref <file> option
Mark <file> optional (e.g. ffALLOW_MISSING).
A typical usage is
gmx grompp -ref rotref[.trr]
in which grompp will use rotref.0.trr, rotref.1.trr and so on,
but not rotref.trr. The easiest fix is hence to mark the file as optional.
Change-Id: Ide2947f57580b680d4f5f04ada22fd67d5fb0f93
Szilárd Páll [Tue, 28 Jan 2020 20:35:30 +0000 (21:35 +0100)]
Reorganize dipole calculation in do_force
Encapsulated dipole used in do_force in a struct and eliminated
fr->mu_tot and moved code into a separate reduction function.
Note that this change now also computes the dipole when
flags.stateChanged=false, as the old value is no longer stored in fr.
Change-Id: Ibcfda31c450e50d37c2697f6d04a549e8f996823
Artem Zhmurov [Wed, 11 Mar 2020 18:38:23 +0000 (19:38 +0100)]
Fix the post-submit failures
Fix warnings, introduced by
6975fbfd22030a08bbe076151a3de69894a4de2f
1. Change the order in the initialization list
2. Make use of the deviceContext_ field in PP-PME comms
3. Small fix to the comment
Change-Id: I847dbfc187a469eb89405c52b26ee1965f39c44f
Artem Zhmurov [Sat, 1 Feb 2020 15:40:13 +0000 (16:40 +0100)]
Take over management of OpenCL context from PME and NBNXM
This patch set creates the DeviceContext in runner and passes it to the
consumers (PME and NBNXM). This removes unnessesary management code
duplication, makes the device buffers in two modules compatible.
Fixes #2522
Fixes #3315
Refs #3311
Change-Id: I10358cfaced5b5c7dbdddf95679c9a9703f3a2c0
Christian Blau [Tue, 10 Mar 2020 18:45:15 +0000 (19:45 +0100)]
Amend optional documentation
gmx::compat::optional, or the respective std::optional in C++17
are compelling to over-use in some cases. Added developer
documentation on when optional<T> is not the best choice.
Change-Id: I9cbfd42968ab8797109e35eba7e01afe6a1507ae
Berk Hess [Wed, 11 Mar 2020 08:16:59 +0000 (09:16 +0100)]
Add tests for graph
Change-Id: I580eb129b36c7d4185e214f8e1fd03119138b5ef
Berk Hess [Wed, 8 Jan 2020 09:31:51 +0000 (10:31 +0100)]
Fix type in range and add tests
Change-Id: Ie2ffc54ff0382b7753e86c12334c38993979717d
Artem Zhmurov [Sat, 1 Feb 2020 12:27:20 +0000 (13:27 +0100)]
Use init(..) function to build DeviceContext
This patch unifies the logic of OpenCL context creation in PME and
NBNXM by using the same init(..) function for the DeviceContext
object.
Also, the DeviceInfo is now de-referenced directly after the check
on the pointer validity and passed along as a const reference, which
improves the clarity of the code.
Refs. #3315, #3311.
Change-Id: I5ba0f530918f3340fa1a5ad3e8d60fe4e0967dab
Mark Abraham [Fri, 6 Mar 2020 16:30:26 +0000 (17:30 +0100)]
Consolidate PME GPU spline infrastructure
This functionality isn't utility
Change-Id: If2ddfc47fda0c6dfc3f26df2f9002564b5d0db99
Paul Bauer [Mon, 9 Mar 2020 16:41:51 +0000 (17:41 +0100)]
Fix wrong Docker images in doc builds
Change-Id: Ia1324355c1be2eb10507a085ae6b04014b97596d
Artem Zhmurov [Wed, 29 Jan 2020 15:59:33 +0000 (16:59 +0100)]
Make DeviceContext into a proper class
Having DeviceContext as a platform-agnostic class allows one
to easily create context, which is usefull for setting up the
GPU stream/context manager, tests for GPU functionality.
Refs. #3315.
Change-Id: I496d225b58c96d7642830c8e9552139750891849
M. Eric Irrgang [Fri, 6 Mar 2020 11:16:04 +0000 (14:16 +0300)]
Free up Docker image tag namespace.
Allow tags to distinguish Docker images for different release
requirements. Free up the image tag namespace for granularly describing
image revisions (and create smaller image repositories) by using the
matrix slug as the image name. Tag images to indicate the supported
GROMACS branch.
Refs #3395
Change-Id: Idff95d031cd56a28545562862e78cd99902db620
M. Eric Irrgang [Mon, 9 Mar 2020 12:43:49 +0000 (15:43 +0300)]
Remove duplicated GitLab-CI jobs.
Remove extra job definitions from merge conflict resolution error.
Fixes #3414
Change-Id: I39b36cef108db6c0274d163707303daea2391079
M. Eric Irrgang [Mon, 9 Mar 2020 12:42:30 +0000 (15:42 +0300)]
Reformat .gitlab-ci.yml
Resolve inconsistent white space.
Change-Id: Ieadb6f29815d26a2bae7c756c6f5ef17c91164e2
M. Eric Irrgang [Mon, 6 Jan 2020 13:14:23 +0000 (16:14 +0300)]
Consolidate logic for whether to use ModularSimulator.
There appeared to be inconsistent logic in runner.cpp about whether
the ModularSimulator would be used, but the apparent inconsistency was
actually just the result of equivalent logic being performed in
multiple places, and unclear ownership of an environment variable. This
change should clarify some logic in runner.cpp and simplify the behavior
of the SimulatorBuilder.
* Reference GMX_DISABLE_MODULAR_SIMULATOR environment variable in a
single location.
* Use a single utility function to determine whether to use
ModularSimulator, and call in Mdrunner::mdrunner().
* Refactor SimulatorBuilder to perform an action based solely on its
arguments, rather than to override the client-provided arguments based
on an environment variable.
Change-Id: I775ef82461f30b79b4412a473e5a1aa66270e2d5
M. Eric Irrgang [Fri, 6 Mar 2020 11:03:29 +0000 (14:03 +0300)]
Manage the list of image tags in Docker build script.
Supports flexibility in future handling of built images.
Refs #3395
Change-Id: I207911f190a57cbc4671777b5b92827aa6d3904a
Berk Hess [Thu, 5 Mar 2020 17:03:01 +0000 (18:03 +0100)]
Make shake work without graph
Shake can now internally compute distances using pbc, so it is
no longer needed to pass whole molecules to shake.
This is required for removing the graph from the force calculation.
Also converted shakedata to C++ and increased use of ArrayRef.
Change-Id: I67e2c85e7b4b26c930af89f413a89c2d72178e87
Mark Abraham [Wed, 4 Mar 2020 17:44:34 +0000 (18:44 +0100)]
Simplify compiling GPU code for tests
Documented and extended gmx_add_gtest_executable to let us annotate
which source files may need special treatment for GPU
compilation. Those details are all now hidden in the function rather
than complicating the CMakeLists.txt files in multiple places. There's
a lot of incidental lines changed to make sure people can use the
rearrangement well, but the benefit is illustrated in the following
files:
gpu_utils/test/CMakeLists.txt
mdlib/test/CMakeLists.txt
Accordingly, various test code no longer compiles into
libgromacs. Removed some completely unnecessary compilation of CUDA
code for tests.
Compiling test .cu files that also need MPI libraries is not currently
supported. Thus, removed am unnecessary header dependency in
mdlib/tests on MPI libraries that was not needed (and awkward for nvcc
compilation).
Found and fixed a bug where
src/gromacs/gpu_utils/tests/typecasts_runner.cpp wasn't compiled when
it was intended to be.
Change-Id: I9ba624094092a9951fa63f3264c9d99d7ba0cbd1
Paul Bauer [Thu, 5 Mar 2020 15:14:53 +0000 (16:14 +0100)]
Fix Gitlab build issues
Change-Id: I7fd9be313ddfe18947ed7a858ea9dc236dba050f
Christian Blau [Tue, 21 Jan 2020 10:05:03 +0000 (11:05 +0100)]
Add function calls to MdModules to sign up for notifications
Allow MdModules to sign up to notifications after they know their own
options. This makes it possible that modules only get called back when
they need to and not by default and skips the if(active) logic in
functions that are called back in favour of not subscribing to the
notifications to begin with.
refs #3076
Change-Id: Ib95c1f734f919805c661ac6f6451af5da8187eec
Christian Blau [Wed, 4 Mar 2020 11:22:34 +0000 (12:22 +0100)]
Split off implementation details of MdModuleNotification
For better readability and testing, moved the MdModuleNotification and
MdModulesNotifier into separate files, hiding away the implementation
details of the complex general callback-infrastructure and exposing more
clearly the callbacks that MdModules can sign up to.
Moved tests into correct directory.
Moved life-line explaining the notification machinery in MDModules from
MdModulesNotification to MdModuleNotifier, where it is better suited.
Change-Id: I0a73f99e450873903a888bcc04228737d0b814f3
Artem Zhmurov [Thu, 5 Mar 2020 08:29:12 +0000 (09:29 +0100)]
Finalize renaming of bEnerVir to computeEnergyAndVirial
This finishes the renaming started in parent. Also fixes the
function comment, messed up by clang-format.
Change-Id: I74ce276227182364d05b62d1f89166cc2748f6fc
Mark Abraham [Sun, 23 Feb 2020 14:13:01 +0000 (15:13 +0100)]
Simplify PME step workload management
Used StepWorkload further down into the PME code, rather than the
custom GMX_PME_* flags.
GMX_PME_CALC_POT was unused, so removed.
Spread, solve, and backFFT were always performed, so removed GMX_PME_*
flags and related booleans for them. Re-indented code that was behind
these branches that were always taken. Note that we don't always
calculate forces in PME (currently TPI, but perhaps soon also MC).
Change-Id: Ia7019a0042bde9ac04c3beacbf05f7af41c7ed3c
Berk Hess [Mon, 2 Dec 2019 20:11:02 +0000 (21:11 +0100)]
Add InteractionDefinitions
This replaces t_idef in gmx_localtop_t.
Note that t_idef is still used in t_topology.
Extends InteractList with functionality to add entries
in a simple and clean way.
Change-Id: Ib59012332b6ba09df1de5dc696438c9aba4e2f2d
Mark Abraham [Fri, 21 Feb 2020 16:30:38 +0000 (17:30 +0100)]
Improve TPI handling
These errors are best given in TPI-specific code, not general code.
That TPI-specific code already sets GMX_FORCE_ENERGY, which sets
GMX_PME_CALC_POT, so this should not be managed in two places.
Change-Id: I6415634b5ba63d2dc71f6db1e52daac3d15cd8f0
Magnus Lundborg [Tue, 3 Mar 2020 10:06:27 +0000 (11:06 +0100)]
Separate AWH parameter reading and checking
To avoid dependency on order of parameter reading (pulling
before AWH) AWH now reads parameters before checking them.
Change-Id: I11ac76f1def61eac577ef8083698d76f6aac3dd4
Artem Zhmurov [Wed, 4 Mar 2020 10:26:12 +0000 (11:26 +0100)]
Do not count PME only rank when initializing NBNXM
Non-local particles should only exist when there is are more than one PP rank.
Change-Id: Ife99786652dc634039c59f530d2489bf3976c476
Paul Bauer [Wed, 4 Mar 2020 11:01:37 +0000 (12:01 +0100)]
Merge "Merge branch release-2020 into master"
Christian Blau [Tue, 18 Feb 2020 12:47:41 +0000 (13:47 +0100)]
Save excluded non-bonded interactions in .tpr file
The intermolecularExclusionGroup of the molecular topology (mtop) has
not been saved in the tpr file before, which lead to the unexpected
behviour that an mtop as set up in grompp was not available in the same
state when the simulation was started.
Excluding non-bonded interactions of a group with the rest of the system
is currently needed for the QM/MM implementation. This change will allow
to complete system setup for simulations that need to exclude non-bonded
interactions at grompp time instead when starting the simulation.
refs #3172
Change-Id: Ia0e3f0571fa467337664bedec2e91a5a008507ca
Christian Blau [Wed, 4 Mar 2020 08:04:29 +0000 (09:04 +0100)]
Add classhelper macro to forbid copy, move and any assigment
The current macro only deletes the copying and copy-assignemnt, but for
most cases also the move equivalent of these operations should be
deleted. This patch introduces a new macro to forbid copying and moving.
Change-Id: I6f2f8591b289322cf7e79003a50507cdc9d6b5b9
Paul Bauer [Wed, 4 Mar 2020 07:05:31 +0000 (08:05 +0100)]
Merge branch release-2020 into master
Resolved Conflicts:
.gitlab-ci.yml
admin/builds/gromacs.py
cmake/gmxVersionInfo.cmake
src/gromacs/ewald/pme.cpp
src/gromacs/gmxana/gmx_disre.cpp
src/gromacs/gpu_utils/cudautils.cu
src/gromacs/gpu_utils/gpu_utils.cu
src/gromacs/hardware/gpu_hw_info.h
src/gromacs/listed_forces/orires.cpp
src/gromacs/mdlib/forcerec.cpp
src/gromacs/mdlib/forcerec.h
src/gromacs/mdlib/md_support.cpp
src/gromacs/mdlib/md_support.h
src/gromacs/mdlib/mdoutf.cpp
src/gromacs/mdlib/mdoutf.h
src/gromacs/mdlib/sim_util.cpp
src/gromacs/mdlib/vsite.cpp
src/gromacs/mdlib/vsite.h
src/gromacs/mdrun/minimize.cpp
src/gromacs/modularsimulator/forceelement.cpp
src/gromacs/modularsimulator/shellfcelement.cpp
src/gromacs/nbnxm/kernels_reference/kernel_ref.h
src/programs/mdrun/tests/CMakeLists.txt
Change-Id: Ic95c6b35c8a7b7bd0b9c3fa0833136d32bb74242
Artem Zhmurov [Fri, 21 Feb 2020 16:53:26 +0000 (17:53 +0100)]
Move the PmePPCommGpu initialization from forcerec to runner
Change-Id: I955c7c53bcee571c560b1efd8a4eed7bde4d42fc
Paul Bauer [Mon, 24 Feb 2020 14:49:29 +0000 (15:49 +0100)]
Prepare for 2020.2
Reset DOI strings
Change-Id: I8a269a8537595d1070c50cfc31c610f2133618b2
Paul Bauer [Mon, 24 Feb 2020 14:46:14 +0000 (15:46 +0100)]
Version 2020.1
Set DOI strings.
Updated regressiontest hash.
Change-Id: I2fa83321688bf052516bab3301336d8b3145e458
Paul Bauer [Thu, 16 Jan 2020 13:25:37 +0000 (14:25 +0100)]
Always hash files when building from release tarball
The CMake logic to check if the source files in a release tarball have
not been modified has not been robust enough in cases where people first
run cmake to generate the build directory and then later change files in
the source tree.
The build has now been changed to be more in line with the development
builds, where checking for modifications is happening in all cases.
Fixes #3302
Change-Id: Id54c529bfbe51191ed5262d8da05897b2f53c057
Alan Gray [Sun, 5 Jan 2020 20:14:39 +0000 (12:14 -0800)]
Allow PME coordinate send before H2D coordinate transfer
The introduction of the GPU PME-PP communication functionality had the
side effect of delaying the PME coordinate send until after the H2D
coordinate transfer, even on the default code path. This patch allows
the PME transfer to occur in its original location when the send is
not originating from GPU memory. This is a lightweight solution,
without any new functionality, suitable for the release branch. (There
will be a more comprehensive change in the master branch which also
extends the GPU PME-PP communication functionality.)
Implements #3159
Change-Id: Ic30c154e04bb4c2846bbad3de603f879a71b9133
Magnus Lundborg [Sun, 23 Feb 2020 16:57:56 +0000 (17:57 +0100)]
Store dHdL for all neighbor lambdas
This is required for calculating forces along a lambda dimension
in AWH.
Change-Id: Ic5247a53998b1e733858419d20338b5419dd7ae4
Paul Bauer [Mon, 3 Feb 2020 16:05:42 +0000 (17:05 +0100)]
Add Cuda build to gitlab CI
Change-Id: I7e5917fd26c0e22107fb6d9ade4ca69959737df4
Berk Hess [Mon, 2 Mar 2020 14:14:21 +0000 (15:14 +0100)]
Fix center of mass motion removal with frozen atoms
When frozen atoms were part of center of mass motion removal groups,
they would still contribute to the mass of those groups. This meant
that the COM velocity correction was (slightly) too small. Now
completely frozen atoms are removed from COM removal groups by grompp.
When atoms are only frozen along one or two dimensions and part of
a COM removal group, grompp now issues a warning.
Also fixed an nullptr or incorrect string buffer passed to warning()
with invalid freeze group dimension user input.
Fixes #2553
Change-Id: I20a03fea511e75a131cb27880acc1f4ee4a2bfb8
Artem Zhmurov [Mon, 2 Mar 2020 15:14:32 +0000 (16:14 +0100)]
Update the message on whether update and constraints are offloaded
Update and constraints are done in PP task, which is now indicated
in the printed message.
Refs #3292
Change-Id: Id3ad64c424cca6ab5e678a90db767a1c3d43b014
Berk Hess [Mon, 2 Mar 2020 16:42:03 +0000 (17:42 +0100)]
Fix grompp unbound atom check
The check in grompp for unbound atoms would check for any
potential (and constraints) instead of only potentials involving
two atoms. This enabled false negatives.
Change-Id: I677b86a4e4bbe8cd0c6a8a0bf43983be622edfa6
Berk Hess [Mon, 2 Mar 2020 10:15:51 +0000 (11:15 +0100)]
Fix nrdf with partial COMM removal
In the uncommon case where the center of mass motion is removed for
part of the system but not the whole system, the number of degrees
of freedom for the part without COMM removal would be incorrectly
lowered by 3.
Fixes #3406
Change-Id: I371bcfbbd6cf7ddddccb9234752128239bad356f
Berk Hess [Mon, 2 Mar 2020 15:20:26 +0000 (16:20 +0100)]
Fix too small pairlist buffer on Intel GPUs
The pairlist buffer generated for Intel GPUs was slightly too small,
because it assumed a 4x4 atom-cluster pair kernel instead of 4x2.
This also fixes incorrect kernel setup messages in the log file.
Fixes #3407
Change-Id: I744f98a934b5d9f60e0708cb064571aa6e389c44
Paul Bauer [Mon, 2 Mar 2020 08:37:08 +0000 (09:37 +0100)]
Revert "Remove frozen atoms from VCM groups"
This reverts commit
3a93c3a8ed49d20b47aed181d98f64921b864a3d.
Reason for revert: Change is incorrect
Change-Id: I808655e109e1da7ce37a59c1d55dabd059a32bb7
Paul Bauer [Thu, 27 Feb 2020 10:47:26 +0000 (11:47 +0100)]
Remove frozen atoms from VCM groups
Atoms are removed during preprocessing.
Also add release note missing for previous patch.
Fixes #2553
Change-Id: I4fd52d50a9ef3af4ed11f9b507902d4ac59ed487
Gilles Gouaillardet [Mon, 2 Mar 2020 04:33:52 +0000 (13:33 +0900)]
Remove unused variable from nbnxm headers.
Since the (SimdFloat) mone_S variable is set but never used,
this commit simply removes it.
Change-Id: Id374da57d1fb33a269c1c39eb80c064fc40de8e8
Paul Bauer [Fri, 28 Feb 2020 09:56:27 +0000 (10:56 +0100)]
Merge branch release-2019 into release-2020
Resolved Conflicts:
cmake/gmxVersionInfo.cmake
src/gromacs/ewald/pme.cpp
src/gromacs/gmxana/gmx_disre.cpp
src/gromacs/gpu_utils/gpu_utils.cu
src/gromacs/hardware/gpu_hw_info.cpp
src/gromacs/hardware/gpu_hw_info.h
src/gromacs/mdrun/rerun.cpp
Change-Id: I2a89270a1321a51e0bc25e2b6890245f562945a2
Paul Bauer [Thu, 27 Feb 2020 14:00:12 +0000 (15:00 +0100)]
Define all CPU NB kernels
Access to kernels that where not defined could otherwise lead to
undefined behaviour.
Fixes #2728
Change-Id: Ib014cfd0dbc46961eb4e6a81acb3e06d57c3df73
Jonathan Vincent [Mon, 24 Feb 2020 14:26:20 +0000 (06:26 -0800)]
Moves call to choose best performaing kernels to pme_gpu_reinit_atoms
atoms.nAtoms is zero when pme_gpu_reinit is called, resulting in
the useOrderThreadsPerAtom and recalculateSplines always being set to false.
Refs #3189
Change-Id: I36d4be71565cfe8cd8e50fbe6cfe1035f3e15c8e
Paul Bauer [Mon, 24 Feb 2020 14:54:18 +0000 (15:54 +0100)]
Version 2019.6
Set DOI strings.
Updated regressiontest hash.
Change-Id: If7c04fbd26756275daea1c252ef977a367669b42
Pascal Merz [Tue, 25 Feb 2020 07:15:45 +0000 (00:15 -0700)]
Loosen gmxapi stopsignaler test
Gmxapi stopsignaler test was checking whether simulations were stopped
on the step after a stop signal was set. This is true for the legacy
implementation, but only due to the exact order of instructions. The
StopSignalHandler does not guarantee to stop simulations at the next
NS step after a signal has been set, it promises to stop a simulation
at the next NS step after a signal has been communicated. This change
loosens the criterion to reflect this.
Further, this change
* Changes the numberOfTimesCalled() function to timeElapsedSinceStart(),
also including a different treatment of the call before the restraint
is ever called, to avoid misunderstandings.
* Adds a comment to explain the expectations validated by this test.
Fixes #3397
Change-Id: I2a3805a14c03d0ee12ebd21b5863c5243b1c3671
M. Eric Irrgang [Thu, 27 Feb 2020 12:05:58 +0000 (15:05 +0300)]
Resolve a Python linting error.
Remove an unnecessary compatibility check that otherwise causes lint
errors.
Change-Id: If6b79c9cc4b7b4adf37a0bad291ce421a23564c9
M. Eric Irrgang [Thu, 27 Feb 2020 12:04:38 +0000 (15:04 +0300)]
Fix broken Python error check.
A check in the physical validation utilities referenced a constant in a
module that does not exist, but the intended module was clear.
Additionally, the constant is not guaranteed to be defined, so we check
for it to avoid producing unrelated exceptions.
Change-Id: Ied614c4d94616420b9321cd28d8f8958cce31627
Pascal Merz [Fri, 21 Feb 2020 01:11:13 +0000 (18:11 -0700)]
Use legacy code path for t_graph (modular simulator)
This change redirects simulations which will require a t_graph object
to the legacy code path. It also adds an assert to catch cases in which
the redirection would fail in a more graceful way.
Fixes #3389
Change-Id: I17a70e504c206b2798cd2439c0c0ff5d5cd112e3
Pascal Merz [Wed, 26 Feb 2020 23:19:29 +0000 (16:19 -0700)]
Extract and expose function to determine whether molecules are broken over PBC
This prevents code duplication in the child change I17a70e50. This
is pure refactoring with two exceptions:
* Checking for orientation restraints is changed from
fcd->orires.nr
to
gmx_mtop_ftype_count(mtop, F_ORIRES)
This allows to use this function before the force constant struct
is built. An assert is added to make sure this never get out of
sync (which would hint to something going very wrong somewhere else...)
* A `if(fplog){}` around a single GMX_LOG(mdlog.warning) was removed.
Change-Id: I6303c6b1cab86c57971a1486c892a1b122a446c6
Pascal Merz [Thu, 16 Jan 2020 08:13:05 +0000 (09:13 +0100)]
Fix constraint contribution to dhdl (modular simulator)
The contribution to dhdl from the constraints was not added under
modular simulator.
Refs #1255
Change-Id: I804f52eeb97a17ae0d233700203da1db33a54d54
Szilárd Páll [Fri, 25 Oct 2019 23:24:23 +0000 (01:24 +0200)]
Avoid mdrun terminate due to GPU sanity check errors
When a GPU is a exclusive or prohibited mode, early detection calls can
fail and as a result an mdrun run abort with an error, even if all GPU
offload is explicitly disabled by the user.
This change adds a status code to handle the case of devices being
unavailable.
Additionally, other errors may be encountered during the dummy kernel
sanity check (e.g. out of memory), but since the change that switches
to using launchGpuKernel() wrapper did not handle the exception in the
sanity checking, this can also abort a run even if the GPU in question
is not selected to be used.
This change adds code to catch the exception this and report the error
and avoid abort the run.
Fixes #3178 #3399
Change-Id: I0cdedbc02769084c172e4a42fe5c1af192007cec
Szilárd Páll [Wed, 26 Feb 2020 15:07:25 +0000 (16:07 +0100)]
Document NVIDIA OpenCL broken on Volta and Turing
Refs #3125
Change-Id: Id200c1092b279d45a97b98c6fe1d03c2ffb14fb0
Szilárd Páll [Thu, 20 Feb 2020 18:20:26 +0000 (19:20 +0100)]
Remove outdated PME-GPU limitation in user guide
PME GPU is supported on all compatible GPU platforms and vendors.
Change-Id: I8b054825d4c6a2d030b87fe4b6a9be759911c9f6
Pascal Merz [Tue, 25 Feb 2020 23:58:02 +0000 (16:58 -0700)]
Fix calculation of reciprocal terms in rerun
This at least temporarily fixes #3400.
Change-Id: I04d67d9bb3edbd66049573de71940e4bb7fa1ad4
Magnus Lundborg [Wed, 19 Feb 2020 12:17:14 +0000 (13:17 +0100)]
Fix out of sync checkpoint files in simulations sharing state
When multidir simulations share the state, the checkpoint files
of the different simulations should all be from the same step.
To ensure this, MPI barriers have been added before renaming
the checkpoint files from their temporary to their final names.
So now the contents can never be out of sync. In the worst, and
rather unlikely, case that something going wrong during renaming,
some checkpoint files could have temporary and some final names.
Refs #2440.
Change-Id: I88088abb726a36dbf9a9db2fa2eb4a46c3bf2cd7
Artem Zhmurov [Mon, 24 Feb 2020 17:56:44 +0000 (18:56 +0100)]
Fix the RVec to float3 conversion test
The test was not running when there were no GPUs availible,
but the code was compiled with CUDA.
Refs. #3372.
Change-Id: I8dd51eafe9a17d880ce8f8b126c7de692e061e81
Szilárd Páll [Fri, 24 Jan 2020 13:12:28 +0000 (14:12 +0100)]
Improve GPU update tasks assignment consistency
GPU update task assignment was not consistent with the assumptions and
supported features of the 2020 release and did not implement the correct
checks and fallback in cases where GPU update was decided to not be
supported. Specifically, this change makes sure that when separate PME
ranks are used, without direct GPU communication for PP-PME, GPU update
falls back to the CPU.
Fixes #3354
Change-Id: I7c9dd67cd8cf61f0201b626b8b7674917e3365a5
M. Eric Irrgang [Thu, 12 Dec 2019 17:22:07 +0000 (20:22 +0300)]
Remove cruft and resolve deprecation warnings.
Feature checks for gmxapi 0.1 are no longer necessary in the acceptance
tests, and cause deprecation warnings since the gmxapi version has been
incremented.
Change-Id: I98d4df5789c6156304efe27394a2bde20b390234
Paul Bauer [Fri, 21 Feb 2020 14:49:21 +0000 (15:49 +0100)]
Avoid integer overflow in dispersion correction
Index could become out of range and turn negative.
Fixes #3391
Change-Id: I91a8ea0ab01370fb972c02994e2b996284e1d06a
Christian Blau [Tue, 25 Feb 2020 09:25:02 +0000 (10:25 +0100)]
Document density-fit cross-correlation in .mdp options
Add missing documentation about cross-correlation as
similarity measure for density-guided simulations.
Though documented in the reference manual, it was until now
not mentioned in the .mdp options.
Change-Id: I2a5a13ca6fb0a15e8c2ff1cba6a6edbe0182053d
Paul Bauer [Mon, 24 Feb 2020 12:29:21 +0000 (13:29 +0100)]
Revert "Expose vsite counting"
This reverts commit
2078fd0619459bd533a94550d5754477dbbaabaa.
Not needed in fact.
Change-Id: I238d33e23e3b508ec0c77a5c43f67e5838950f34