Andrey Alekseenko [Tue, 12 Oct 2021 12:55:37 +0000 (14:55 +0200)]
Stop timers in GpuForceReduction with no atoms
The early return, as implemented earlier, was happening after starting
the timers. Now we properly stop them.
The large "if" was used here instead of just moving the "return" up in
order to accomodate future manual event handling (see Issue #3988 and MR
!2015).
Thanks to Artem Zhmurov for noticing the problem.
M. Eric Irrgang [Mon, 11 Oct 2021 11:44:03 +0000 (14:44 +0300)]
Fix typo in code comment.
M. Eric Irrgang [Mon, 11 Oct 2021 10:18:22 +0000 (13:18 +0300)]
Remove broken CMake option from python_packaging Dockerfile.
Mitigate #4208 by removing `-DGMX_REQUIRE_VALID_TOOLCHAIN=TRUE`.
Refs #4208
Alan Gray [Mon, 11 Oct 2021 12:42:49 +0000 (12:42 +0000)]
Bug fix for irregular replex steps with GPU update
Berk Hess [Thu, 7 Oct 2021 20:46:29 +0000 (22:46 +0200)]
Fix issues in AWH BiasSharing test
Recent commit
bbcd5f1 introduced two issues in the new test
for the BiasSharing class which sometimes led to failures,
in particular with the TSAN build.
Andrey Alekseenko [Sat, 9 Oct 2021 19:07:24 +0000 (21:07 +0200)]
Reduce noise in CI logs from the "for" loop
Bash "-x" option reports every iteration of the loop. While we can unset
it temporarily, we can get rid of the loop altogether and user find's
built-in capabilities. It will also be more robust w.r.t. "bad"
filenames.
Follow-up of MR !2008.
M. Eric Irrgang [Mon, 11 Oct 2021 09:31:02 +0000 (09:31 +0000)]
Normalize API tests.
Make the gmxapi tests look more like the other tests.
* Consistently use the test fixture based on the MDRun test fixture.
* Move gmxapi tests to the `api/` directory now that the infrastructure allows for the move. Establishes consistency with the nblib file locations.
M. Eric Irrgang [Mon, 11 Oct 2021 09:01:10 +0000 (09:01 +0000)]
More robust preparation for MPI tests.
M. Eric Irrgang [Sun, 10 Oct 2021 00:01:49 +0000 (00:01 +0000)]
Satisfy nblib dependencies with updated library targets.
Fixes #2027
Andrey Alekseenko [Thu, 7 Oct 2021 14:02:38 +0000 (16:02 +0200)]
SYCL: Reduce local memory usage of LINCS kernel
Similar to the CUDA code, we can reuse the local memory buffer.
Closes #4202.
M. Eric Irrgang [Fri, 8 Oct 2021 11:38:37 +0000 (14:38 +0300)]
Normalize testutils use in `api/` directory.
Move the testutils boiler plate up one level from
`api/nblib/CMakeLists.txt` to `api/CMakeLists.txt` so that the whole
directory tree can use the same configuration without duplication.
Sebastian Kehl [Fri, 8 Oct 2021 15:26:07 +0000 (15:26 +0000)]
Adapt testcases for gapsys softcore
Joe Jordan [Fri, 8 Oct 2021 14:22:08 +0000 (14:22 +0000)]
Add nblib tpr reading
Mark Abraham [Fri, 8 Oct 2021 12:26:34 +0000 (12:26 +0000)]
First 2022 beta release
M. Eric Irrgang [Fri, 8 Oct 2021 10:05:22 +0000 (13:05 +0300)]
Add missing `#include`.
Joe Jordan [Thu, 7 Oct 2021 07:35:17 +0000 (07:35 +0000)]
Introduce nblib nonbonded force calculator impl class
Pascal Merz [Wed, 6 Oct 2021 21:37:46 +0000 (21:37 +0000)]
Implement pull for modular simulator
Andrey Alekseenko [Wed, 6 Oct 2021 10:20:23 +0000 (12:20 +0200)]
Fix misc-misplaced-const and unused-parameter warnings
The problems were introduced in
bbcd5f1 (MR !536).
As MPI_Comm is typedef'd as a pointer to a structure, declaring it const
would be of little use: the pointer itself would be const, not the data
it is pointing to.
Artem Zhmurov [Wed, 6 Oct 2021 16:54:32 +0000 (16:54 +0000)]
Add constraints test with multiple molecules
In the GPU code, there is a complex logic of splitting constraints
over the thread blocks so that no coupled constraints land in
different thread blocks. To test this logic, we need the system with
more atoms than the size of the thread block. This adds such a system
to the unit test. Three atom molecule is taken as a base system since
the number of threads in a block is usually a power of 2, hence not
a multiple of 3.
M. Eric Irrgang [Wed, 6 Oct 2021 16:03:56 +0000 (16:03 +0000)]
Begin moving `script` boiler plate from YAML to shell scripts.
Closes #4194
Andrey Alekseenko [Wed, 6 Oct 2021 14:06:15 +0000 (16:06 +0200)]
Fix SYCL LINCS kernel
Andrey Alekseenko [Wed, 6 Oct 2021 13:28:45 +0000 (13:28 +0000)]
SYCL: Add missing barrier to NBNXM energy reduction
Mark Abraham [Wed, 6 Oct 2021 11:13:18 +0000 (11:13 +0000)]
Don't require g++ for clang to compile
Artem Zhmurov [Tue, 5 Oct 2021 15:24:29 +0000 (18:24 +0300)]
Add missing synchronization calls in CUDA version of LINCS
In CUDA, the same shared memory buffer is used to store different
intermediate values. To avoid overwriting these values prematurely,
extra blocking synchronizations are needed in the GPU kernel.
This bug was not exposed neither by regression tests nor by unit tests
because it was affecting values rarely and the deviation were within
tolerances.
Alan Gray [Wed, 6 Oct 2021 09:26:43 +0000 (09:26 +0000)]
Rework GPU halo and state propagator streams and dependencies to get better overlap
Berk Hess [Tue, 5 Oct 2021 15:34:58 +0000 (15:34 +0000)]
Make AWH bias sharing more flexible
Sebastian Kehl [Fri, 1 Oct 2021 17:45:44 +0000 (19:45 +0200)]
Clang-format.
Sebastian Kehl [Fri, 1 Oct 2021 17:41:55 +0000 (19:41 +0200)]
More sc-gapsys templates plus fix unused warnigs.
Sebastian Kehl [Fri, 1 Oct 2021 13:48:39 +0000 (15:48 +0200)]
Fix typo introduced during rebase.
Sebastian Kehl [Fri, 1 Oct 2021 12:22:21 +0000 (14:22 +0200)]
Template sc-gapsys functions on computeForces.
Sebastian Kehl [Wed, 29 Sep 2021 12:24:53 +0000 (14:24 +0200)]
Uncapitalize sc-gapsys parameters in input.
Sebastian Kehl [Wed, 29 Sep 2021 11:44:33 +0000 (13:44 +0200)]
Update documentation with changed sc-gapsys parameter names.
Sebastian Kehl [Wed, 29 Sep 2021 09:21:25 +0000 (11:21 +0200)]
Rename sc-sigma-LJ-gapsys to sc-gapsys-sigma-LJ.
Sebastian Kehl [Wed, 29 Sep 2021 08:49:41 +0000 (10:49 +0200)]
Rename sc-scale-X-gapsys to sc-gapsys-scale-X.
Sebastian Kehl [Wed, 29 Sep 2021 06:43:00 +0000 (08:43 +0200)]
Guard for epsfac equals zero in sc-gapsys.
Sebastian Kehl [Mon, 27 Sep 2021 14:54:37 +0000 (16:54 +0200)]
Fix webpage.
Sebastian Kehl [Mon, 27 Sep 2021 14:20:06 +0000 (16:20 +0200)]
Add release notes.
Sebastian Kehl [Mon, 27 Sep 2021 13:28:45 +0000 (15:28 +0200)]
Fix random fpe errors by proper initialization.
Sebastian Kehl [Mon, 27 Sep 2021 06:44:10 +0000 (08:44 +0200)]
Clang-format.
Sebastian Kehl [Mon, 27 Sep 2021 06:28:44 +0000 (08:28 +0200)]
Fix some more double literals.
Sebastian Kehl [Fri, 24 Sep 2021 20:54:20 +0000 (22:54 +0200)]
Update user-guide and reference manual.
Sebastian Kehl [Fri, 24 Sep 2021 16:14:14 +0000 (18:14 +0200)]
Fix port of gapsys-LJ to simd.
Sebastian Kehl [Fri, 24 Sep 2021 12:59:32 +0000 (14:59 +0200)]
Fix range checks for new parameters.
Sebastian Kehl [Fri, 24 Sep 2021 09:49:24 +0000 (11:49 +0200)]
Fix sign in 14-interactions with sc-gapsys.
Sebastian Kehl [Thu, 23 Sep 2021 13:31:11 +0000 (15:31 +0200)]
Introduce explicit parameters for gapsys-sc.
Sebastian Kehl [Wed, 22 Sep 2021 13:54:48 +0000 (15:54 +0200)]
Remove SoftcoreType::None.
Sebastian Kehl [Tue, 21 Sep 2021 11:29:36 +0000 (13:29 +0200)]
Swap position of sc-function in readir.
Sebastian Kehl [Mon, 20 Sep 2021 15:00:57 +0000 (17:00 +0200)]
Reverse order of conditions.
Sebastian Kehl [Mon, 20 Sep 2021 14:57:41 +0000 (16:57 +0200)]
Fix use of literals.
Sebastian Kehl [Mon, 20 Sep 2021 11:28:47 +0000 (13:28 +0200)]
Remove changes to the test cases.
Sebastian Kehl [Mon, 16 Nov 2020 09:27:47 +0000 (10:27 +0100)]
Add gapsys softcore function.
Change nonbonded fep-kernel to allow to use both, standard
beutler function as well as new gapsys function. Add new
input name to choose one of these.
Gaurav Garg [Tue, 5 Oct 2021 10:40:53 +0000 (10:40 +0000)]
Fix force reduction dependencies with process-MPI and PP-PME on same rank
Force reduction dependency on PME force computation was not being set in case of process-MPI when PP and PME are on same rank.
Refs: #4189
Dmitry Morozov [Tue, 5 Oct 2021 08:23:00 +0000 (08:23 +0000)]
QMMM description and release notes update
Berk Hess [Mon, 4 Oct 2021 20:29:01 +0000 (20:29 +0000)]
Add transformation pull coord mdp examples
Berk Hess [Mon, 4 Oct 2021 09:58:33 +0000 (11:58 +0200)]
Improve transformation coordinate expression checks
Change exceptions for transformation expression evaluation from
"internal bug" to "user input inconsistency", as these with throw
with incorrect or inconsistent user input.
Added explicit check for quotes, as that might confuse users.
Berk Hess [Fri, 1 Oct 2021 21:01:24 +0000 (21:01 +0000)]
Avoid overflows in free-energy kernel
Roland Schulz [Fri, 1 Oct 2021 20:28:24 +0000 (20:28 +0000)]
SYCL: remove (un)flatten
Andrey Alekseenko [Thu, 30 Sep 2021 18:27:37 +0000 (20:27 +0200)]
SYCL: 3D FFT using oneMKL
Requires Intel oneAPI binary installation (the open-source version of
oneMKL does not support FFT yet).
Only in-place transforms are supported, du to a bug in MKL up to, at
least, 2021.4.0.
Also removes errorneous buffer clearing on "in-place" codepath in FFT tests.
Refs #3927.
Andrey Alekseenko [Thu, 30 Sep 2021 16:42:47 +0000 (18:42 +0200)]
Fix clang format and suppres clang lint warning
Berk Hess [Thu, 30 Sep 2021 13:40:53 +0000 (13:40 +0000)]
Pad RVec force buffer in ThreadForceBuffer
Mark Abraham [Thu, 30 Sep 2021 12:42:30 +0000 (12:42 +0000)]
Add hipSYCL support to GPU 3DFFT
Made the testing of the complex-to-real transform less likely to pass
when there's a problem.
Refs #3965
Roland Schulz [Wed, 29 Sep 2021 22:10:12 +0000 (15:10 -0700)]
Add missing includes
Eliane Briand [Wed, 29 Sep 2021 18:20:22 +0000 (18:20 +0000)]
Relax requirement for bonded atom type names
Dmitry Morozov [Wed, 29 Sep 2021 17:49:01 +0000 (17:49 +0000)]
Activate QMMM MDModule
Alan Gray [Wed, 29 Sep 2021 14:10:58 +0000 (14:10 +0000)]
Avoid MPI sync for PME force sender GPU scheduling code and thread API calls
Replaces synchronous PME-PP MPI comms of event at every step with
exchange of event address and associated flag only on search
steps. The PP rank now ensures that event has been recorded before
enqueueing by spinning on flag written by PME rank in shared CPU
memory. This allows not only async progress by PME rank, but also
OpenMP parallelization of cudaMemcpy launches to the multiple PP
ranks, such that the CUDA API overheads will overlap.
Partly addresses #4047
Artem Zhmurov [Wed, 29 Sep 2021 13:05:58 +0000 (13:05 +0000)]
Use reference data in constraints tests
Artem Zhmurov [Tue, 28 Sep 2021 11:47:02 +0000 (14:47 +0300)]
Update links to googletests and remove some refs to Jenkins and Gerrit from the docs
- Update links to googletests framework
- Remove some more mentioning of Jenkins and Gerrit
- Remove migrating from Gerrit section
Sebastian Kehl [Wed, 29 Sep 2021 10:26:07 +0000 (12:26 +0200)]
Clang-format of nb-fep-kernel
Magnus Lundborg [Wed, 29 Sep 2021 09:16:19 +0000 (09:16 +0000)]
SIMD support for nonbonded free-energy kernels
Szilárd Páll [Wed, 29 Sep 2021 07:41:05 +0000 (07:41 +0000)]
Allow disabling cj prefetch in the CUDA nbnxm kernels
Mark Abraham [Tue, 28 Sep 2021 15:19:07 +0000 (15:19 +0000)]
Build internal muparser more simply
Gaurav Garg [Tue, 28 Sep 2021 10:26:36 +0000 (10:26 +0000)]
Add HeFFTe based FFT backend
Dmitry Morozov [Tue, 28 Sep 2021 08:11:51 +0000 (08:11 +0000)]
Implementation of QMMM, QMMMSimulationParameterSetup and QMMMOutputProvider classes
Berk Hess [Tue, 28 Sep 2021 06:24:06 +0000 (06:24 +0000)]
Fix bug with vsites, DD, OpenMP and large systems
Szilárd Páll [Mon, 27 Sep 2021 16:23:05 +0000 (18:23 +0200)]
Fix stepWork.useGpuXHalo on search steps
The value of stepWork.useGpuXHalo was not correct on search steps when
mdrun always falls back to comunicating over the CPU.
Magnus Lundborg [Fri, 17 Sep 2021 07:20:43 +0000 (09:20 +0200)]
[RFC] Change nonbonded-fep-test reference data to analytical Ewald
The nonbonded-fep-test reference data for Ewald type interactions
was generated using tabulated interactions. There have a max error
of 0.1*ewald_trol=1e-6. In preparation for the switch to analytical
corrections, the reference data is now generated with analytical
corrections. The required a tolerance in double precision of 1e-6.
Mark Abraham [Mon, 27 Sep 2021 09:21:47 +0000 (09:21 +0000)]
Use ObservablesReducer for LINCS RMSD computation
Berk Hess [Mon, 27 Sep 2021 08:39:02 +0000 (08:39 +0000)]
Use term "collective variable" in manual
Berk Hess [Sat, 25 Sep 2021 13:13:11 +0000 (13:13 +0000)]
Replace DOMAINDECOMP macro by a renamed function
Andrey Alekseenko [Sat, 25 Sep 2021 09:55:00 +0000 (09:55 +0000)]
SYCL PME Gather kernel
Mark Abraham [Sat, 25 Sep 2021 07:01:42 +0000 (07:01 +0000)]
Improve ObservablesReducer and its handling
Gaurav Garg [Fri, 24 Sep 2021 19:45:17 +0000 (19:45 +0000)]
Fix compilation issues with master branch when OpenMPI is built with --enable-cxx-exceptions option
Berk Hess [Fri, 24 Sep 2021 19:24:23 +0000 (19:24 +0000)]
Also use DD partitioning in serial
Berk Hess [Fri, 24 Sep 2021 14:52:47 +0000 (14:52 +0000)]
Add manual subsection for transformation pull coord
Dmitry Morozov [Fri, 24 Sep 2021 13:09:39 +0000 (13:09 +0000)]
Added QMMMOptions class for managing mdp and KVT I/O
Mark Abraham [Fri, 24 Sep 2021 11:56:23 +0000 (13:56 +0200)]
Remove unused declaration of function
This was left over from an early stage of development. MSVC complains
that it can't find a definition when instantiating the template class.
Artem Zhmurov [Fri, 24 Sep 2021 09:22:09 +0000 (12:22 +0300)]
Fix clang-tidy warnings in pme and sim_utils
1. The global non-const variable was temporary introduced to able to
test the PME SYCL spread kernel independently of the rest of the PME
(
f190fa59b4a72390b2aea2e74b4960941098ce4d). NOLINT should be
temporary fix as this variable will go away once the rest of PME
is implemented in SYCL.
2. The conditionals in sim_utils wrap the same copy operation after
4d38a0d65839f951bf275e465f8fb65a35b60b8d. So these conditional can
now be combined.
Szilárd Páll [Sat, 28 Aug 2021 21:32:26 +0000 (23:32 +0200)]
Fix incorrect event dependency of GPU update
With separate PME ranks, staged communication and GPU update, the final
forces are produced on the CPU and re-uploaded to the GPU prior to
update. This upload was done on a "All" locality leading to an incorrect
dependency on an event corresponding to the GPU reduction.
This leads ot a logic error and incorrect synchronization, but not
incorrect results as the "All" locality copy is done on the update
stream, hence implicit dependency applies.
This change moves this special case copy to the same locality used in
other force host to device copies to eliminate the bug.
Fixes #4130
Mark Abraham [Thu, 23 Sep 2021 13:56:48 +0000 (13:56 +0000)]
Initialize t_inputrec properly
Refs #4169
Mark Abraham [Thu, 23 Sep 2021 09:57:16 +0000 (09:57 +0000)]
Use ObservablesReducer for check of DD bonded interaction count.
The lifetime of the local and global state has been shifted, so that
the LocalTopologyChecker can now be initialized with the handles it
might need to use to report an error, even though one of those handles
will not contain valid data until after the first DD partition.
This simplifies ComputeGlobalsElement from the modular simulator.
The changes to StatePropagatorData motivated by this change reduce the
number of copies of x and v vectors that were being done every
partitioning step. Those are needed only when the state backup is
taken so that trajectory output can be handled correctly.
The check is now implemented for minimizers, where previously it
was not.
Refs #3887 #3421
ejjordan [Tue, 14 Sep 2021 14:25:21 +0000 (16:25 +0200)]
Make CpuPpLongRangeNonbondeds class
The CpuPpLongRangeNonbondeds class replaces the calculateLongRangeNonbondeds
function. Now simulation constant data is passed to a constructor,
domain constant data is passed to an updateAfterPartition function,
and per step data is passed to a calculate function.
Dmitry Morozov [Thu, 23 Sep 2021 08:03:08 +0000 (08:03 +0000)]
Added QMMMForceProvider class for QMMM MdModule
ejjordan [Wed, 22 Sep 2021 16:52:37 +0000 (18:52 +0200)]
Remove useless top level nblib force calculator
The top level nblib force calculator was a place holder in
anticipation of a unification of CPU and GPU force calculator
backends, which did not occur. As such it is removed since it only
adds maintenance burden and not utility.
Also removed is a useless class holding the non-bonded force
calculator setup director, which is now a free function.
M. Eric Irrgang [Tue, 21 Sep 2021 13:01:22 +0000 (16:01 +0300)]
Update MPI dependence for `gmxapi` target.
Use the `MPI::MPI_CXX` target instead of deprecated FindMPI output variables.
Ref #3672.
Roland Schulz [Wed, 22 Sep 2021 07:13:16 +0000 (00:13 -0700)]
Fix compilation with GMX_USE_MUPARSER=None
Without muparser enabled, it is in invalid to catch its exception.
Related #4165
Roland Schulz [Wed, 22 Sep 2021 04:49:39 +0000 (21:49 -0700)]
Fix out of bound vector access in vsites
operator[] is invalid for one past the last element. Using
the pointer to it as end-pointer is fine.
Found by Microsoft STL debug iterator.
ejjordan [Tue, 21 Sep 2021 13:49:30 +0000 (15:49 +0200)]
Various minor nblib updates
A small selection of miscellaneous changes that don't fit in as part
of any larger MR.
Gaurav Garg [Mon, 20 Sep 2021 14:03:36 +0000 (19:33 +0530)]
Add heffte package in gcc-7-cuda-11.0 container
Mark Abraham [Tue, 7 Sep 2021 05:21:36 +0000 (07:21 +0200)]
Remove ResidueTypeMap dependency from gmx chi
This dependency had the sole effect of making the tool harder to use
when residue names unknown to GROMACS were used. The dihedrals are
found from the atom names, and the residue name is used only for
reporting results, so there is no reason to require the user to add
the name to an arbitrary list.
Pascal Merz [Wed, 22 Sep 2021 07:53:11 +0000 (07:53 +0000)]
Introduce expanded ensemble in modular simulator