alexxy/gromacs.git
2 years agoRedesign GPU FFT abstraction
Gaurav Garg [Wed, 8 Sep 2021 18:40:06 +0000 (18:40 +0000)]
Redesign GPU FFT abstraction
- Modify interface to allow distributed FFT implementation in future
- Provide support for choosing FFT backend at runtime. E.g. CUFFT backend can be instantiated for single-GPU FFT but HeFFTe can be instantiated in case PME decomposition is used.

This is a pre-requisite for GPU PME-decomposition implementation.

Refs #3884

2 years agoIntroduce plumbing for ObservablesReducer
Mark Abraham [Tue, 7 Sep 2021 17:38:29 +0000 (17:38 +0000)]
Introduce plumbing for ObservablesReducer

2 years agoReplace ResidueTypeMap with std::unordered_map
Mark Abraham [Tue, 7 Sep 2021 05:22:49 +0000 (05:22 +0000)]
Replace ResidueTypeMap with std::unordered_map

2 years agoDescribe procedure and labeling for MR closure.
M. Eric Irrgang [Mon, 6 Sep 2021 11:26:15 +0000 (11:26 +0000)]
Describe procedure and labeling for MR closure.

2 years agoUse latest cmake for ASAN configuration
Mark Abraham [Mon, 6 Sep 2021 09:24:00 +0000 (09:24 +0000)]
Use latest cmake for ASAN configuration

2 years agoAdd support for transformation pull coordinates
Paul Bauer [Fri, 3 Sep 2021 11:16:31 +0000 (11:16 +0000)]
Add support for transformation pull coordinates

2 years agoMinor clean-up and optimization in DD topology
Berk Hess [Thu, 2 Sep 2021 16:09:11 +0000 (16:09 +0000)]
Minor clean-up and optimization in DD topology

2 years agoUse better data structure to implement ResidueType
Mark Abraham [Wed, 1 Sep 2021 07:39:10 +0000 (07:39 +0000)]
Use better data structure to implement ResidueType

Now insertions and lookups occur in constant time, rather than linear
time. This greatly improves the many lookups needed in grompp to
build the ndx file.

Renamed entry field as entries, which works better for naming a
container.

2 years agoRevert "Revert "Add muparser and CMake handling""
Paul Bauer [Tue, 31 Aug 2021 07:34:47 +0000 (07:34 +0000)]
Revert "Revert "Add muparser and CMake handling""

This reverts commit 4bfdcf2ccb21b5d0702da65083e52944ca112588.

We want to add this functionality again.

2 years agoMake orires work with DD particle reordering
Berk Hess [Mon, 30 Aug 2021 07:53:39 +0000 (07:53 +0000)]
Make orires work with DD particle reordering

2 years agoGet rid of sycl::buffer::reinterpret
Andrey Alekseenko [Fri, 27 Aug 2021 12:12:57 +0000 (14:12 +0200)]
Get rid of sycl::buffer::reinterpret

This functionality is not properly supported in hipSYCL yet, and was
only needed in order to use atomic accessors. After fully switching to
atomic_ref, we can directly use buffers of Float3.

Closes #4063.

2 years agoSYCL: Fully switch to atomic_ref
Andrey Alekseenko [Sat, 28 Aug 2021 06:26:10 +0000 (06:26 +0000)]
SYCL: Fully switch to atomic_ref

2 years agoRemoves PME rank dependency on Non-local X H2D copy when buffer ops are on GPU but...
Gaurav Garg [Wed, 25 Aug 2021 08:56:18 +0000 (14:26 +0530)]
Removes PME rank dependency on Non-local X H2D copy when  buffer ops are on GPU but, Halo exchange happens over host-MPI.

This was not a problem until now because because !stepWork.haveGpuPmeOnThisRank will always evaluate to true in case of domain decomposition as PME will always be on a separate rank.
But now with PME decomposition this bug gets exposed.

Refs #4125

2 years agoDisable DLB if GPU direct communication Halo exchange is enabled.
Gaurav Garg [Fri, 27 Aug 2021 07:00:46 +0000 (07:00 +0000)]
Disable DLB if GPU direct communication Halo exchange is enabled.

2 years agoDocument Status labels for issues.
M. Eric Irrgang [Thu, 26 Aug 2021 22:13:51 +0000 (22:13 +0000)]
Document Status labels for issues.

2 years agoAdd missing Doxygen for SYCL functions and some others
Andrey Alekseenko [Tue, 24 Aug 2021 15:13:46 +0000 (18:13 +0300)]
Add missing Doxygen for SYCL functions and some others

Sometimes it was enough to convert existing comments to Doxygen.

Now there are no SYCL-related warnings when building webpage.

Also fixed a bit of trivial clang-tidy complaints.

2 years agoAdded toUpperCase and toLowerCase transformations of string
Dmitry Morozov [Thu, 26 Aug 2021 09:31:41 +0000 (12:31 +0300)]
Added toUpperCase and toLowerCase transformations of string

2 years agoMake the output of the constraints tests readable
Artem Zhmurov [Thu, 26 Aug 2021 15:42:19 +0000 (15:42 +0000)]
Make the output of the constraints tests readable

In parametrized tests, the failed runs output parameters. In order
for them to be meaningfull for human, the parameter types should be
provided with function that converts them to strings. This adds
these functions for t_pbc and ConstraintsTestSystem types in
constraints tests.

2 years agoAdd several more listed forces interaction types to nblib
Joe Jordan [Thu, 26 Aug 2021 07:14:30 +0000 (07:14 +0000)]
Add several more listed forces interaction types to nblib

2 years agoFind rocFFT for hipSYCL build when targeting AMD devices
Mark Abraham [Thu, 24 Jun 2021 06:52:54 +0000 (08:52 +0200)]
Find rocFFT for hipSYCL build when targeting AMD devices

We need this so that we can call rocFFT for PME GPU 3D FFT

Refs #3965

2 years agoFixed typos in replica exchange formulas
Carsten Kutzner [Wed, 25 Aug 2021 14:14:06 +0000 (16:14 +0200)]
Fixed typos in replica exchange formulas

2 years agoEnable atom reordering in WholeMoleculeTransform
Berk Hess [Wed, 25 Aug 2021 15:04:48 +0000 (15:04 +0000)]
Enable atom reordering in WholeMoleculeTransform

2 years agoAdd back original index file content that was accidentally overwritten by MR 1761
Carsten Kutzner [Wed, 25 Aug 2021 12:39:18 +0000 (14:39 +0200)]
Add back original index file content that was accidentally overwritten by MR 1761

Makes spc216.ndx functional again.

2 years agoUse better data structures in gmx chi
Mark Abraham [Thu, 29 Jul 2021 05:57:30 +0000 (07:57 +0200)]
Use better data structures in gmx chi

This removes part of the dependency of gmx chi histogramming from
ResidueType handling, which will permit changes to the latter that
will benefit both grompp and pdb2gmx

Replaced vectors that needed a stable numerical index to look up a
residue name with a map that uses the residue name to do the look up.

Removed capabilities of ResidueType that are no longer used.

2 years agoSimplify gmx chi
Mark Abraham [Fri, 20 Aug 2021 17:42:24 +0000 (17:42 +0000)]
Simplify gmx chi

This change is pure refactoring that prepares for performance
improvements to ResidueType handling that will benefit both grompp and
pdb2gmx.

Use vector and ArrayRef to replace C-style memory handling. Some
histogram vectors were being over-allocated by 1, which is no longer
safe to do now that the size of the vector is relevant when looping,
so those are reduced.

Eliminated and reduce scope of iteration variables. Removed an unused
function and some debug code in comments. Used const references rather
than pointers where possible. Used range-based for and algorithms in
some places that are now possible to do so.

2 years agoAdd tests for gmx chi
Mark Abraham [Fri, 20 Aug 2021 09:57:13 +0000 (09:57 +0000)]
Add tests for gmx chi

Fixed many memory leaks, unfortunately needing to add a new function
in order to work around the use of read_first_x().

Formally documented read_first_x() and read_next_x() as deprecated, as
the implementation of close_trx() in trxio.cpp has mentioned for a
long time.

2 years agoAvoid using cr->duty in setupStepWorkload
Szilárd Páll [Thu, 19 Aug 2021 20:16:20 +0000 (20:16 +0000)]
Avoid using cr->duty in setupStepWorkload

2 years agoRevert "Add workaround for CorrelationsTest with Intel ICPX"
Andrey Alekseenko [Thu, 19 Aug 2021 15:36:14 +0000 (18:36 +0300)]
Revert "Add workaround for CorrelationsTest with Intel ICPX"

This reverts commit 79fa11933f.

The proper fix was introduced in f3adc2fabe (MR !1794), and
then merged into master, making the workaround from 79fa11933f (MR
!1869) obsolete.

Refs #3955.

2 years agoUse workload flags more in do_md()
Szilárd Páll [Wed, 18 Aug 2021 19:09:05 +0000 (21:09 +0200)]
Use workload flags more in do_md()

2 years agoFix stale link in warning message.
Paul Bauer [Tue, 29 Jun 2021 15:03:40 +0000 (17:03 +0200)]
Fix stale link in warning message.

Pointed out by user, needs a matching fix in the regression tests.

2 years agoAdd separate PME rank SimluationWorkload flags
Szilárd Páll [Thu, 19 Aug 2021 13:16:27 +0000 (13:16 +0000)]
Add separate PME rank SimluationWorkload flags

Added the complete set of flags that indicate whether separate PME ranks
are used and what type of PP-PME communication is used.

These flags allow simplifications in the force schedule as well as reducing
the use of the confusingly defined cr->duty for now in do_force().

The additional benefit is a reduced reliance on passing around commrec
for checks related to parallelization.

Refs #3913

2 years agoUpdate Python package version to account for merge from gmxapi 0.2.2
M. Eric Irrgang [Wed, 11 Aug 2021 12:16:36 +0000 (15:16 +0300)]
Update Python package version to account for merge from gmxapi 0.2.2

2 years agoMerge remote-tracking branch 'origin/release-2021' into merge-2021-into-master
Andrey Alekseenko [Thu, 19 Aug 2021 09:51:13 +0000 (12:51 +0300)]
Merge remote-tracking branch 'origin/release-2021' into merge-2021-into-master

Resolved conflicts:
 - cmake/gmxVersionInfo.cmake
 - docs/CMakeLists.txt
 - python_packaging/src/gmxapi/export_system.cpp
 - python_packaging/src/setup.py
 - src/gromacs/domdec/domdec.cpp
 - src/gromacs/gmxana/gmx_chi.cpp

2 years agoRestrict scope of step and step_rel
Mark Abraham [Thu, 19 Aug 2021 05:45:25 +0000 (07:45 +0200)]
Restrict scope of step and step_rel

This prevents use-before-set issues

2 years agoClarify StepWorkload doxygen
Szilárd Páll [Wed, 18 Aug 2021 16:50:23 +0000 (18:50 +0200)]
Clarify StepWorkload doxygen

StepWorkload is rank-specific as it is also used on separate PME ranks.

Refs #3913

2 years agoAdd PP decomposition simluationWorkload flags
Szilárd Páll [Thu, 12 Aug 2021 16:57:42 +0000 (18:57 +0200)]
Add PP decomposition simluationWorkload flags

Add the complete set of flags that indicate whether there is PP
decomposition using CPU/GPU communication.

These flags allow simplifications in the force schedule.

The additional benefit is a reduced reliance on passing around commrec
for checks related to parallelization.

Refs #3913

2 years agoPrepares for the branch GROMACS 2021.4
Sebastian Wingbermuhle [Tue, 17 Aug 2021 13:47:33 +0000 (15:47 +0200)]
Prepares for the branch GROMACS 2021.4

2 years agoIntroduce ObservablesReducer
Mark Abraham [Wed, 18 Aug 2021 14:36:19 +0000 (14:36 +0000)]
Introduce ObservablesReducer

2 years agoFix compiler warnings introduced in 8f6ea9eb6c (!1865)
Andrey Alekseenko [Wed, 18 Aug 2021 09:42:11 +0000 (12:42 +0300)]
Fix compiler warnings introduced in 8f6ea9eb6c (!1865)

- Add ifdef around clang-specific pragmas.
- Add newline at the end of file.

2 years agoSimplify nblib listed forces type tests
Joe Jordan [Wed, 18 Aug 2021 09:31:18 +0000 (09:31 +0000)]
Simplify nblib listed forces type tests

2 years agoGpuEventSynchronizer: extract backend-specific functionality
Andrey Alekseenko [Wed, 18 Aug 2021 08:52:57 +0000 (08:52 +0000)]
GpuEventSynchronizer: extract backend-specific functionality

No new functionality or added checks.

Preparatory work for adding advanced event accounting logic to GpuEventSynchronizer.

DeviceEvent class contains only backend-specific functions and minimal sanity checks.
The more advanced logic (the one we're trying to fix in #3988) is kept in
GpuEventSynchronizer, and currently left unchanged (1:1 for OpenCL and SYCL,
very relaxed rules for CUDA).

Refs #2527, #3988.

2 years agoPrepares for the GROMACS 2021.3 release
Sebastian Wingbermuhle [Tue, 17 Aug 2021 13:26:33 +0000 (15:26 +0200)]
Prepares for the GROMACS 2021.3 release

2 years agoEnsure restart with update groups always works
Mark Abraham [Wed, 18 Aug 2021 08:04:59 +0000 (08:04 +0000)]
Ensure restart with update groups always works

2 years agoFix mdrun -ddorder pp_pme
Berk Hess [Wed, 18 Aug 2021 06:44:03 +0000 (06:44 +0000)]
Fix mdrun -ddorder pp_pme

2 years agoUpdate GPU CI configuration
Mark Abraham [Tue, 17 Aug 2021 17:01:37 +0000 (17:01 +0000)]
Update GPU CI configuration

CUDA 11.4.1 updates the most recent supported versions of gcc and
clang so we should update those also.

ROCM 4.3 is out, and is more likely than any older version to be the
one we will support in 2022, so we should update them.

Several recent bug fixes in hipSYCL are worth having to avoid needing
to work around them in other changes.

Previously we re-used the hipsycl container for clang-tidy with CUDA,
but as we wish that to remain at clang version 11, we need an alternative
solution. Simplest would be to add CUDA to the linting image, but that
also builds LLVM with TSAN. As that TSAN build didn't work out of the box
on a CUDA base image, I split the TSAN image off from the image that does
linting, and added CUDA to the latter.

2 years agoAdd workaround for CorrelationsTest with Intel ICPX
Andrey Alekseenko [Tue, 17 Aug 2021 16:39:44 +0000 (16:39 +0000)]
Add workaround for CorrelationsTest with Intel ICPX

2 years agoAdd basic tests for GpuEventSynchronizer
Andrey Alekseenko [Tue, 17 Aug 2021 15:29:14 +0000 (15:29 +0000)]
Add basic tests for GpuEventSynchronizer

2 years agoMove the ownership of the xUpdatedOnDevice event to update constraints
Artem Zhmurov [Tue, 17 Aug 2021 15:13:06 +0000 (15:13 +0000)]
Move the ownership of the xUpdatedOnDevice event to update constraints

2 years agoMake ExpfitTest.EffnERREST well defined
Andrey Alekseenko [Thu, 1 Jul 2021 10:39:50 +0000 (13:39 +0300)]
Make ExpfitTest.EffnERREST well defined

The original test was poorly constructed, and the τ₂ fitting parameter
was not defined for the test data: with α = 1, it could take any value
and the function would fit just the same.

Here, we replace the test data with the one where 0<α<1, and thus both
τ₁ and τ₂ are well-defined.

Also updated the documentation to reflect the actual function used in
the code: it was missing a prefactor of 2.

Closes #3955

2 years agoAdd Urey-Bradley listed interaction to nblib
Joe Jordan [Tue, 17 Aug 2021 09:03:09 +0000 (09:03 +0000)]
Add Urey-Bradley listed interaction to nblib

2 years agoRandom cosmetic fixes
Andrey Alekseenko [Tue, 17 Aug 2021 05:26:56 +0000 (05:26 +0000)]
Random cosmetic fixes

2 years agoAdd common header to GpuEventSynchronizer
Artem Zhmurov [Mon, 16 Aug 2021 16:04:30 +0000 (19:04 +0300)]
Add common header to GpuEventSynchronizer

Move the pre-processor conditional to a common header, that can be
included unconditionally. Will simplify code unification further on.

2 years agoUpdates for updated Python version requirement.
M. Eric Irrgang [Mon, 16 Aug 2021 16:01:38 +0000 (19:01 +0300)]
Updates for updated Python version requirement.

* Update documented required Python version.
* Remove some references to Python 3.6 and 3.7.
* Cite issues where appropriate.

Refs #3716

2 years agoAdd `breathe` package to CI Python venvs.
M. Eric Irrgang [Mon, 16 Aug 2021 10:08:01 +0000 (13:08 +0300)]
Add `breathe` package to CI Python venvs.

It seems likely that at least one of the projects documented in the
GROMACS manual will want to incorporate documentation from C++ headers
(Doxygen) into the Sphinx pages. We can update the container build
script in advance so that the package will be available for
experimentation and testing after the next container rebuild.

See also #2698

2 years agoRemove support for Python 3.6
Mark Abraham [Mon, 16 Aug 2021 12:05:49 +0000 (14:05 +0200)]
Remove support for Python 3.6

This version goes end-of-life before we will release GROAMCS 2022, so
we should stop testing it. We decided this a long time ago, but didn't
actually do it.

Refs #3708

2 years agogrompp no longer modifies nstcomm
Berk Hess [Tue, 29 Jun 2021 09:43:07 +0000 (11:43 +0200)]
grompp no longer modifies nstcomm

2 years agoUpdates to nblib listed forces kernels
Joe Jordan [Mon, 16 Aug 2021 14:18:22 +0000 (14:18 +0000)]
Updates to nblib listed forces kernels

2 years agoRework nblib kernel checks and setup code
Joe Jordan [Mon, 16 Aug 2021 13:49:41 +0000 (13:49 +0000)]
Rework nblib kernel checks and setup code

2 years agoUpdate regular CI images to OneAPI 2021.3.0
Andrey Alekseenko [Fri, 13 Aug 2021 17:59:44 +0000 (20:59 +0300)]
Update regular CI images to OneAPI 2021.3.0

2 years agoDo not allow AtomLocality::All for coordinates and velocities transfer.
Artem Zhmurov [Sun, 15 Aug 2021 13:40:55 +0000 (13:40 +0000)]
Do not allow AtomLocality::All for coordinates and velocities transfer.

1. Use AtomLocality:Local instead of AtomLocality::All in PME-only ranks
   and in PME tests.
2. Assert on using AtomLocality::All for positions and velocities transfers,
   print verbose message on assert.

This reduces the number of possible streams used in StatePropagatoerData, hence
reduces its complexity. In preparation for buffer state tracking.

Refs. #3323

Refs. #3020

2 years agoFix MSVC error in toppush.cpp
Dmitry Morozov [Fri, 13 Aug 2021 15:47:49 +0000 (15:47 +0000)]
Fix MSVC error in toppush.cpp

2 years agoProvide better defaults for GMX_GPU_NB_CLUSTER_SIZE with SYCL
Mark Abraham [Fri, 13 Aug 2021 08:06:18 +0000 (08:06 +0000)]
Provide better defaults for GMX_GPU_NB_CLUSTER_SIZE with SYCL

Now that we know whether a SYCL configuration targets hipSYCL and if
so for which hardware, we can provide a default non-bonded cluster
size that works well in all SYCL cases.

Refs #3965

2 years agoRemove duplicate waiting for coordinates
Andrey Alekseenko [Fri, 13 Aug 2021 07:39:35 +0000 (07:39 +0000)]
Remove duplicate waiting for coordinates

2 years agoFix bugs in gmx chi and gmx angle
Mark Abraham [Thu, 12 Aug 2021 09:51:42 +0000 (09:51 +0000)]
Fix bugs in gmx chi and gmx angle

Some of these bugs have been present for several years. They were
introduced during refactorings in commits aa286ff673b83321, and
89b03397.

2 years agoAdded class for generating standard CP2K input
Dmitry Morozov [Thu, 12 Aug 2021 09:40:38 +0000 (09:40 +0000)]
Added class for generating standard CP2K input

2 years agoNblib doc fixes
ejjordan [Tue, 10 Aug 2021 14:08:38 +0000 (16:08 +0200)]
Nblib doc fixes

Update some doc strings to make future merges more concise.

2 years agoFix few issues with open-source Intel LLVM (Clang 13)
Andrey Alekseenko [Wed, 11 Aug 2021 16:22:05 +0000 (19:22 +0300)]
Fix few issues with open-source Intel LLVM (Clang 13)

- Add -Wno-reserved-identifier to avoid false-positive with _real
  user-defined literal (https://bugs.llvm.org/show_bug.cgi?id=50644).
- Change the alignment-checking code to avoid "warning: performing
  pointer subtraction with a null pointer may have undefined behavior".
- Update some comments about SYCL version quirks.

There are some deprecation warnings related to SYCL naming being brought
into agreement with the final SYCL2020 standard, but those will be fixed
once they appear in any official release.

2 years agoAllow gmxapi Python package to build with all 2021 releases.
M. Eric Irrgang [Wed, 11 Aug 2021 12:16:36 +0000 (12:16 +0000)]
Allow gmxapi Python package to build with all 2021 releases.

2 years agoAdd hipSYCL sanity check
Andrey Alekseenko [Wed, 11 Aug 2021 10:12:21 +0000 (10:12 +0000)]
Add hipSYCL sanity check

2 years agoImprove testutils infrastructure
Mark Abraham [Tue, 10 Aug 2021 19:52:49 +0000 (19:52 +0000)]
Improve testutils infrastructure

2 years agoAdd SYCL SETTLE kernel
Artem Zhmurov [Mon, 9 Aug 2021 14:52:34 +0000 (14:52 +0000)]
Add SYCL SETTLE kernel

Refs #3931

2 years agoFix GMX_PYTHON_PACKAGE option.
M. Eric Irrgang [Mon, 9 Aug 2021 12:56:48 +0000 (12:56 +0000)]
Fix GMX_PYTHON_PACKAGE option.

2 years agoOnly enable GPU FFT test for build supporting it
Andrey Alekseenko [Mon, 9 Aug 2021 10:47:36 +0000 (10:47 +0000)]
Only enable GPU FFT test for build supporting it

2 years agoMinor clean-up to sample_restraint tests.
M. Eric Irrgang [Mon, 9 Aug 2021 09:20:01 +0000 (09:20 +0000)]
Minor clean-up to sample_restraint tests.

2 years agoAvoid expensive atom-type lookups in grompp
Mark Abraham [Sat, 7 Aug 2021 14:38:20 +0000 (14:38 +0000)]
Avoid expensive atom-type lookups in grompp

For each dihedral interaction for which parameters needed to be looked
up, many non-inline function calls were made to see if dihedral types
matched. Instead they are now compared as two ranges with std::equal.

2 years agoAdd a helpful dev docs link.
M. Eric Irrgang [Fri, 6 Aug 2021 08:22:48 +0000 (11:22 +0300)]
Add a helpful dev docs link.

Try to connect the contribution guidelines better
to the requirements on acceptable commits.

2 years agoAdd a LICENSE file for gmxapi.
M. Eric Irrgang [Thu, 5 Aug 2021 16:27:05 +0000 (19:27 +0300)]
Add a LICENSE file for gmxapi.

Add a LICENSE file to python_packaging/src/ so that
packages generated from this directory conform to
[packaging guidelines](https://packaging.python.org/tutorials/packaging-projects/#creating-a-license).

Refs #4102

2 years agoAdd `long_description` to gmxapi package.
M. Eric Irrgang [Fri, 23 Jul 2021 13:46:19 +0000 (16:46 +0300)]
Add `long_description` to gmxapi package.

Ref #4102

2 years agoLift atom type lookup out of inner loops
Mark Abraham [Mon, 26 Jul 2021 08:31:26 +0000 (10:31 +0200)]
Lift atom type lookup out of inner loops

Grompp loops over molecule types, looking up force parameters for each
interaction from the associated bond types for the system (e.g. from
the force field). The atom types for that interaction have to be
looked up from the atoms for the molecule type that contains it, but
this should be done only once, before considering each bond type as a
possible match. The lookups for both A- and B-state parameters are now
lifted out of the loops over bond types, simplifying the logic and
significantly improving performance.

Once that is done, one custom function could be replaced by
std::equal.

Improved some variable naming

Apply 1 suggestion(s) to 1 file(s)

2 years agoRemove leftover licenses for optional and string_view
Andrey Alekseenko [Wed, 4 Aug 2021 09:53:39 +0000 (12:53 +0300)]
Remove leftover licenses for optional and string_view

After 175d3bb6 (MR !98), we don't bundle std::optional and
std::string_view, so no need to mention licenses of their reference
implementations.

2 years agoAdd GPU 3D FFT tests
Mark Abraham [Tue, 3 Aug 2021 13:42:42 +0000 (13:42 +0000)]
Add GPU 3D FFT tests

2 years agoUpdate bundled GoogleTest to current HEAD
Mark Abraham [Tue, 3 Aug 2021 09:30:45 +0000 (09:30 +0000)]
Update bundled GoogleTest to current HEAD

2 years agoReorganize COPYING file for auto-detection of licenses
Erik Lindahl [Mon, 2 Aug 2021 14:27:57 +0000 (16:27 +0200)]
Reorganize COPYING file for auto-detection of licenses

It seems our previous complex COPYING file that did not start with
the LGPL license causes GitLab to detect our license as "other", rather
than an OSI-approved one. By clearly putting the LGPL license first
in the file and then add the more permissible exceptions we allow
at the end we avoid this.

2 years agoRemove StatePropagatorDataGpu::getVelocitiesReadyOnDeviceEvent
Andrey Alekseenko [Tue, 3 Aug 2021 07:01:34 +0000 (07:01 +0000)]
Remove StatePropagatorDataGpu::getVelocitiesReadyOnDeviceEvent

It was unused, since we were using the copied data only in the stream in
which we did the copy. So, the synchronization was performed implicitly,
with no need to wait for the event.

Also added a comment about a rare redundant copy.

Refs #3988

2 years agoUpdate to support CUDA 11.4
Mark Abraham [Wed, 28 Jul 2021 06:33:06 +0000 (08:33 +0200)]
Update to support CUDA 11.4

Update to test the newest supported CUDA now that it can support GROMACS

Refs #3912

2 years agoAdd LICENSE file to make GitLab detect LGPL v2.1
Erik Lindahl [Mon, 2 Aug 2021 12:22:25 +0000 (14:22 +0200)]
Add LICENSE file to make GitLab detect LGPL v2.1

2 years agoFix style violations
Mark Abraham [Mon, 2 Aug 2021 08:59:07 +0000 (08:59 +0000)]
Fix style violations

2 years agoRemove MPI comm from GPU PME-PP force transfer initiation
Alan Gray [Sun, 1 Aug 2021 08:24:19 +0000 (08:24 +0000)]
Remove MPI comm from GPU PME-PP force transfer initiation

2 years agoOnly define GMX_SYCL_DPCPP macro in SYLC builds
Szilárd Páll [Fri, 30 Jul 2021 15:38:56 +0000 (17:38 +0200)]
Only define GMX_SYCL_DPCPP macro in SYLC builds

Previously the macro could get defined not only when the build was not a
hipSYCL build, but also when the build was not a SYCL build at all.

2 years agoSimplify short-circuit logic in grompp
Mark Abraham [Mon, 26 Jul 2021 08:47:19 +0000 (10:47 +0200)]
Simplify short-circuit logic in grompp

This is simpler to understand, and also prepares for a future
change that removes bB while improving performance.

2 years agoCheck nvcc accepts flags before using them
Mark Abraham [Thu, 29 Jul 2021 05:57:14 +0000 (05:57 +0000)]
Check nvcc accepts flags before using them

2 years agoOptimize grompp VDW parameter-generation allocations
Mark Abraham [Mon, 26 Jul 2021 02:50:13 +0000 (04:50 +0200)]
Optimize grompp VDW parameter-generation allocations

2 years agoRemove duplicate waiting for coordinates
Andrey Alekseenko [Mon, 26 Jul 2021 11:14:30 +0000 (11:14 +0000)]
Remove duplicate waiting for coordinates

2 years agoFix Doxygen issues introduced in 997d9e02 (MR !1783)
Andrey Alekseenko [Fri, 9 Jul 2021 21:30:19 +0000 (00:30 +0300)]
Fix Doxygen issues introduced in 997d9e02 (MR !1783)

2 years agoFix modular simulator MTTK
Pascal Merz [Mon, 28 Jun 2021 18:00:58 +0000 (14:00 -0400)]
Fix modular simulator MTTK

The modular simulator MTTK pressure coupling was slightly off due to
different reasons:
* The PV term was taken at the time of the update of the extended
  degree of freedom rather than at the time of reporting. This leads to
  slight differences when using nsttcoupling and nstpcoupling > 1.
* The NH chain coupled to the thermostat would alter the extended
  variable and hence the integral before it is reported. This NHC update
  already belongs to the next step, so shouldn't change the reported
  integral.
* The NH chain couple to the thermostat would not update the propagator
  scaling. Again, this leads to very slight differences when using
  nsttcoupling > 1.

These slight inaccuracies went undetected because they are minimal in
normal usage. To emphasize them in testing, the compressibility in the
simulator equivalence tests was strongly increased. This shows the
differences and would make the tests fail without the fixes in the
current change.

To implement these changes, the responsibility to calculate the
integral and set the scaling factor was moved from the elements to the
MTTK data structure which is accessed by all elements changing the
external degree of freedom and the box.

2 years agoRevert "GROMACS 2021.3 release"
Berk Hess [Fri, 2 Jul 2021 07:33:45 +0000 (09:33 +0200)]
Revert "GROMACS 2021.3 release"

This reverts commit c83234f62deaab566d0c4ccbef908adebfbe0bc4.

2 years agoAvoid passing a temporary object to emplace_back
Andrey Alekseenko [Fri, 2 Jul 2021 06:45:08 +0000 (06:45 +0000)]
Avoid passing a temporary object to emplace_back

2 years agoGROMACS 2021.3 release
Berk Hess [Thu, 1 Jul 2021 13:42:52 +0000 (15:42 +0200)]
GROMACS 2021.3 release

2 years agoUse MDP database for simulator equivalence tests
Pascal Merz [Tue, 29 Jun 2021 22:00:20 +0000 (18:00 -0400)]
Use MDP database for simulator equivalence tests

Changes the simulator equivalence tests to use the additional MDP
database introduced recently. This will allow to test algorithms
requiring additional MDP parameters more cleanly.

This also changes the MDP database behavior to overwrite default
parameters. This does not change any current behavior, as in the
current usage, no parameters are defined in both the default and
the additional parameter sets. Moving forward, it's more likely
that we will want to explicitly overwrite default parameters with
the additional database rather than have parameter redefinitions
silently fail.

2 years agoTest with newer compilers in CI
Mark Abraham [Wed, 30 Jun 2021 11:14:21 +0000 (11:14 +0000)]
Test with newer compilers in CI

Now compiles with clang 12 and gcc 11 without warnings in various
configurations. Did not update santizer configurations as they're
already on clang 11.

Adjusted various CI job intents to be either accurate or placed on
more suitable configurations.

Eliminated one build container, since we target only gcc versions that
are most recent supported, oldest supported, and if needed also those
required for e.g. support of most recent and oldest supported CUDA
versions.

Code changes mostly related to false positives.

Suppresses a false-positive warning in GoogleTest

Avoids warnings about loop variables referring to temporaries. Our
usage was safe, but the warning is potentially valuable elsewhere, so
we should respect it.

Rewrote a test with idiomatic value-parametrization to avoid a warning
about a reference to a temporary

Refs #3912