alexxy/gromacs.git
3 years agoChange default Ewald kernel to tabulated on NVIDIA CC 7.0
Szilárd Páll [Tue, 26 Jan 2021 16:33:16 +0000 (16:33 +0000)]
Change default Ewald kernel to tabulated on NVIDIA CC 7.0

Partially addressed #3845

3 years agoFix default for xpm2gmx tick-mark spacings
Mark Abraham [Tue, 26 Jan 2021 08:52:07 +0000 (09:52 +0100)]
Fix default for xpm2gmx tick-mark spacings

Inadvertently broken ages ago in 027ae34187f8

Fixes #3881

3 years agoEnable grompp to read virtual_site1
Pascal Merz [Tue, 26 Jan 2021 15:53:54 +0000 (15:53 +0000)]
Enable grompp to read virtual_site1

In !306, a virtual site with one constructing atom was introduced.
grompp was, however, not updated to understand the new topology entry.
This updates the topology format in grompp and the manual. It also adds
a missing example for virtual site type 2fd to the manual.

Found while investigating #3866, but not directly connected.

3 years agoAdd necessary dependence of sample test on check-nblib
ejjordan [Tue, 26 Jan 2021 13:28:45 +0000 (14:28 +0100)]
Add necessary dependence of sample test on check-nblib

This change adds the argon-forces-integration sample script
as a dependency for check-nblib. Without this, the sample script
is not correctly tested.

3 years agoStop installing NB-LIB argon-forces-integration binary
Mark Abraham [Mon, 25 Jan 2021 16:56:57 +0000 (17:56 +0100)]
Stop installing NB-LIB argon-forces-integration binary

This binary should not be installed alongside gmx. For example, the
GROMACS analysis-tool template in share folder is not installed by
default.

There's value to testing that the sample code compiles, but not
everybody needs to install it.

3 years agoUse ctest better to run NB-LIB sample code as a test
Mark Abraham [Mon, 25 Jan 2021 16:41:26 +0000 (17:41 +0100)]
Use ctest better to run NB-LIB sample code as a test

The return code of the sample binary does what a test needs to do.
There's no need to create issues by shoehorning it into a GoogleTest.

Refs #3821

3 years agoUpdate self-documentation in admin/git-pre-commit
Andrey Alekseenko [Mon, 25 Jan 2021 15:43:40 +0000 (15:43 +0000)]
Update self-documentation in admin/git-pre-commit

3 years agoLog progress from gmx msd better
Mark Abraham [Mon, 25 Jan 2021 10:39:56 +0000 (11:39 +0100)]
Log progress from gmx msd better

Refs #3284

3 years agoCheck availability of compile flags at cmake time
Joe Jordan [Mon, 25 Jan 2021 12:48:56 +0000 (12:48 +0000)]
Check availability of compile flags at cmake time

Fixes #3821

Ensures that compile flag can be used before using it. Gives a
message if flag cannot be used.

3 years agoRename DefaultAngle to HarmonicAngleType in nblib listed forces
ejjordan [Mon, 25 Jan 2021 09:53:33 +0000 (10:53 +0100)]
Rename DefaultAngle to HarmonicAngleType in nblib listed forces

This change renames the type corresponding to harmonic angles
in nblib from DefaultAngle to HarmonicAngleType. This is both
more descriptive, and more similar to other listed forces
types in nblib.

Additionaly, one failing test is disabled. This disabling
is needed so that all tests can pass to allow this MR to
be merged. A subsequent MR fixes the test issues.

3 years agoMTS release note
Berk Hess [Mon, 25 Jan 2021 08:29:03 +0000 (08:29 +0000)]
MTS release note

3 years agoUpdate Dockerfiles for Python subpackages.
M. Eric Irrgang [Sun, 24 Jan 2021 17:01:21 +0000 (20:01 +0300)]
Update Dockerfiles for Python subpackages.

Some appropriate adjustments were discovered while
investigating computing environments for an upcoming workshop.

* Bump the base Linux distribution.
* Refine the inline documentation.
* Adjust the package list and build options.

3 years agoFinalize gmxapi Python package version 0.2.
M. Eric Irrgang [Sun, 24 Jan 2021 16:57:36 +0000 (19:57 +0300)]
Finalize gmxapi Python package version 0.2.

3 years agoDisable CUDA textures also on NVIDIA Ampere A100
Szilárd Páll [Fri, 22 Jan 2021 15:11:30 +0000 (16:11 +0100)]
Disable CUDA textures also on NVIDIA Ampere A100

The same benefits have been shown as those observed with V100.

Partially addresses #3845

3 years agoEnsure residue name used by pdb2gmx matches rtp name
Mark Abraham [Thu, 21 Jan 2021 12:11:36 +0000 (12:11 +0000)]
Ensure residue name used by pdb2gmx matches rtp name

The default for GLU/GLUH and ASP/ASPH is the unprotonated form. The
help text pdb2gmx specifically states this, and there is no attempt to
use the residue name to infer the protonation.

The old code set the rtp name to the unprotonated form without
changing the residue name read from the configuration file. The
original residue name was then used in the output configuration and
topology file. That name indicated the wrong protonation if the user
input tried to specify the protonated form via the residue name. Now
it changes the residue name to match the rtp name.

This has been surprising, so whenever pdb2gmx implements its default by
changing the residue name, it now reports that.

The same problem occurs when using pdb2gmx -asp if the input
configuration had the name of the protonated form and the interactive
choice was for the unprotonated form. However, in that case there is
no need to inform the user that the input residue naming is being
overridden. Tested manually.

Updated the tests to handle this case.

Added some release notes, Doxygen, added some comments, and updated some code style
so the review is easier.

Fixes #2480

3 years agoKeep the number of tMPI ranks consistent with the number of GPUs
Andrey Alekseenko [Thu, 21 Jan 2021 09:39:13 +0000 (09:39 +0000)]
Keep the number of tMPI ranks consistent with the number of GPUs

When the number of atoms in a system is small, and the automatic resource
assignment is used (i.e., a user just runs gmx mdrun), the number of ranks
chosen by get_nthreads_mpi might be incompatible with the expectations of
GpuTaskAssignmentsBuilder, namely that the number of ranks must be
divisible by the number of threads.

If the user did not supply the -ntmpi value, and we have to limit the
number of ranks due to small system size, we round it down down to the
nearest value divisible by the number of GPUs to use (or 1, whichever is
greater).

Fixes #3874

3 years agoSuggest a workaround for pulling with -deffnm
Mark Abraham [Wed, 20 Jan 2021 10:56:38 +0000 (11:56 +0100)]
Suggest a workaround for pulling with -deffnm

Also fixed use of settings, use settings to do the line wrapping,
and wrote some newlines to make the output more readable.

Refs #3875
Fixes #3442

3 years agoUse correct python interpreter cmake check
Paul Bauer [Wed, 20 Jan 2021 10:39:02 +0000 (10:39 +0000)]
Use correct python interpreter cmake check

Still needed to complete address checksumming issue.

Fixes #3862

3 years agoDescribe the configured precision correctly for mdrun
Mark Abraham [Tue, 19 Jan 2021 10:46:01 +0000 (11:46 +0100)]
Describe the configured precision correctly for mdrun

We adopted the build configuration naming scheme for GMX_DOUBLE
"mixed" vs "double" some years ago so that people knew we don't reduce
forces in mdrun solely in single. This change improves consistency in
this regard in the cases that are important to users, ie. log files
and messages about checkpoint restarts.

Various file-reading tools still refer to "single" in contexts where
they are reading floats, which is fine.

3 years agoNBLIB: Remove preprocessor macros
Paul Bauer [Wed, 13 Jan 2021 11:23:02 +0000 (12:23 +0100)]
NBLIB: Remove preprocessor macros

Macros used to implement part of the listed forces calculation have been
removed and replaced with a pure C++ template implementation.

Also addresses review comments not fully resolved from previous merge
requests.

3 years agoFix TPR handling for older versions.
Paul Bauer [Wed, 20 Jan 2021 06:10:40 +0000 (06:10 +0000)]
Fix TPR handling for older versions.

Reading in a newer TPR file in a pre-2021 version would fail hard with
symtab errors due to us forgetting to increment the tpr generation when
adding the VSite1 type to ftupd.

This fixes the omission an makes the tpr generation an enum similar to
the tpr version.

Fixes #3867

3 years agoFix checksumming code
Paul Bauer [Tue, 19 Jan 2021 09:17:49 +0000 (10:17 +0100)]
Fix checksumming code

Recent additions to the code to avoid errors with certain IDEs
caused issues by never trying to validate the checksums.

Fixed by properly passing the necessary variables to the script.

Fixes #3862

3 years agoFix PaddedVector move constructor
Mark Abraham [Wed, 20 Jan 2021 04:57:46 +0000 (04:57 +0000)]
Fix PaddedVector move constructor

This could leave the moved-from vector in a state unfit to destruct.

Expanded test coverage, including improving the tests and their
infrastructure, so I could understand my own code.

Fixes #2832

3 years agoReport hwloc 1.x deprecation only when found
Mark Abraham [Tue, 19 Jan 2021 11:06:38 +0000 (12:06 +0100)]
Report hwloc 1.x deprecation only when found

Refs #3818

3 years agoChange default MTS force group selection
Berk Hess [Tue, 19 Jan 2021 16:38:19 +0000 (16:38 +0000)]
Change default MTS force group selection

Because of instabilities of aliphatic protons with the Amber
force fields, the default force group selection for multiple
time stepping has been changed to include longrange-nonbonded only.

Refs #3804

3 years agoDisable CUDA textures on NVIDIA Volta
Szilárd Páll [Tue, 19 Jan 2021 12:09:15 +0000 (12:09 +0000)]
Disable CUDA textures on NVIDIA Volta

This has significant performance benefit for the nbnxm kernels with
tabulated Ewald correction and it has negligible impact on the PME kernels.

Partially addresses #3845

3 years agoDeprecate mdrun -deffnm
Mark Abraham [Wed, 13 Jan 2021 14:49:39 +0000 (15:49 +0100)]
Deprecate mdrun -deffnm

This functionality is more trouble to implement and test well than
we expected. Even though it is convenient in some cases, on balance
we should remove it and encourage users to use standard approaches
for grouping their files.

Refs #3442, #942, #2205, #2154.
Fixes #3818

3 years agoFix modular simulator log writing in fresh simulation starts with nstlog == 0
Pascal Merz [Tue, 19 Jan 2021 09:39:34 +0000 (09:39 +0000)]
Fix modular simulator log writing in fresh simulation starts with nstlog == 0

With nstlog = 0, legacy simulator writes log on the initial step, while
modular simulator wasn't. This adapts modular simulator to the legacy
approach.

3 years agoAdd G. Gouaillardet to the list of contributors
Szilárd Páll [Tue, 19 Jan 2021 09:02:55 +0000 (09:02 +0000)]
Add G. Gouaillardet to the list of contributors

3 years agoAvoid NMR restraints calls for MTS levels > 0
Berk Hess [Tue, 12 Jan 2021 07:38:38 +0000 (07:38 +0000)]
Avoid NMR restraints calls for MTS levels > 0

Distance and orientation restraint code was called for MTS levels > 0
whereas this should not happen.

Fixes #3863

3 years agodensityfit: Fix typo in use of iterators
Andrey Alekseenko [Sat, 9 Jan 2021 19:57:42 +0000 (22:57 +0300)]
densityfit: Fix typo in use of iterators

... and some typos in comments.

While both referenceDensity_ and referenceDensity are views into the same data,
it's clearer to use the same variable for both begin() and end().

This is a remake of MR !740. That MR was reverted (in !748) due to
failed tests. The test failures, however, were caused by an unrelated bug
(issue #3791, fix !827). So, this change is brought back.

3 years agoARM_SVE: misc fixes
Gilles Gouaillardet [Fri, 8 Jan 2021 07:47:46 +0000 (16:47 +0900)]
ARM_SVE: misc fixes

 - fix a typo
 - remove debug assert()

3 years agoAdd new GROMACS logo
Paul Bauer [Wed, 6 Jan 2021 07:55:14 +0000 (08:55 +0100)]
Add new GROMACS logo

Replaces previous logo with new vector graphics one.
Logo (C) by Cathrine Bergh.

3 years agoarm_sve: fix GMX_SIMD_HAVE_4NSIMD_UTIL_{FLOAT,DOUBLE} macro definitions
Gilles Gouaillardet [Thu, 7 Jan 2021 15:24:13 +0000 (15:24 +0000)]
arm_sve: fix GMX_SIMD_HAVE_4NSIMD_UTIL_{FLOAT,DOUBLE} macro definitions

only define these macros in impl_arm_sve_definitions.h when the number of
elements per vector greater than 4

3 years agoMerge branch release-2020 into merge-2020-into-2021
Paul Bauer [Thu, 7 Jan 2021 14:11:04 +0000 (15:11 +0100)]
Merge branch release-2020 into merge-2020-into-2021

Resolved Conflicts:
cmake/gmxVersionInfo.cmake
docs/CMakeLists.txt
docs/conf.cmakein.py
src/gromacs/gmxpreprocess/readir.cpp
src/gromacs/mdlib/expanded.cpp
src/gromacs/mdlib/tests/CMakeLists.txt

3 years agoWrite copyright output files as utf8
Paul Bauer [Thu, 7 Jan 2021 13:08:41 +0000 (13:08 +0000)]
Write copyright output files as utf8

The script could fail otherwise when encodings didn't match.

3 years agoPrepare for GROMACS 2020.6
Christian Blau [Thu, 7 Jan 2021 07:51:56 +0000 (07:51 +0000)]
Prepare for GROMACS 2020.6

Reset DOI strings.
Prepare release note stubs.
Set patch number in build infrastructure.

3 years agoGROMACS version 2020.5
Christian Blau [Wed, 6 Jan 2021 12:45:31 +0000 (12:45 +0000)]
GROMACS version 2020.5

Set DOI strings.

3 years agoUpdate src/regressiontests URLs to https
Szilárd Páll [Tue, 5 Jan 2021 20:58:23 +0000 (20:58 +0000)]
Update src/regressiontests URLs to https

With the recent server migration we support https downloads and we
should offer those over http.
Also updated the regressiontests URL to point to the ftp server.

3 years agoFix broken random seed generation.
Kevin Boyd [Wed, 30 Dec 2020 17:51:25 +0000 (09:51 -0800)]
Fix broken random seed generation.

On Ryzen 3k CPUs with the RDRAND microcode bug, the
std::mt19937_64 alternate path yields the same seed
on multiple calls that fall within the same second. Changed
the "seed" of the random seed to rescramble each time the
makeRandomSeed() function is called.

Fixes #3859

3 years agoFix broken random seed generation.
Kevin Boyd [Tue, 5 Jan 2021 13:28:26 +0000 (13:28 +0000)]
Fix broken random seed generation.

On Ryzen 3k CPUs with the RDRAND microcode bug, the
std::mt19937_64 alternate path yields the same seed
on multiple calls that fall within the same second. Changed
the "seed" of the random seed to rescramble each time the
makeRandomSeed() function is called.

Fixes #3859

3 years agoFix copyright year
Christian Blau [Tue, 5 Jan 2021 12:29:37 +0000 (13:29 +0100)]
Fix copyright year

Merging !423 on January 1st 2021 causes the pipeline to fail
due to a missed copyright year update.

The copyright year is updated with this patch.

3 years agoExpanded ensemble changes.
Michael Shirts [Fri, 1 Jan 2021 10:30:38 +0000 (10:30 +0000)]
Expanded ensemble changes.

Fix the numerical stability issues encountered with simulated tempering (also, would have occurred with any alchemical problem with large energy differences between states). In most cases, we simply flip the form around and compute an alternate form that always gives a 0 instead of infinity when the energy difference between states is too far in any direction. Also added a citation. Fixes https://gitlab.com/gromacs/gromacs/-/issues/3304

Note that there is no way to get good estimates for free energy differences between states with the very large differences between examples. One of the numerical stability fixes is not expected to be great, but it's not really relevant since nothing would work in this case; using Wang-Landau (i.e. visitation based approaches) rather than metropolis style methods (energy difference analysis methods) is the only thing that works.

3 years agoBump version post-release to rc2
Szilárd Páll [Wed, 30 Dec 2020 12:27:34 +0000 (13:27 +0100)]
Bump version post-release to rc2

3 years agoGROMACS 2021-rc1 release candidate
Szilárd Páll [Wed, 30 Dec 2020 16:28:34 +0000 (16:28 +0000)]
GROMACS 2021-rc1 release candidate

First release candidate.

3 years agoDeprecate .pdo file reading
Mark Abraham [Wed, 23 Dec 2020 13:44:37 +0000 (13:44 +0000)]
Deprecate .pdo file reading

Analysing such files is likely not relevant a decade later, and such
needs can be met by using an older version of GROMACS that did still
support reading these formats.

Fixes #3818

3 years agoStage bonded kernel atomics through shared memory
Alan Gray [Fri, 18 Dec 2020 07:45:10 +0000 (23:45 -0800)]
Stage bonded kernel atomics through shared memory

Fixes performance bug introduced in 01b2f20bd5 by staging energy step
atomics through shared memory rather than have all threads write
atomically directly to global memory.

Fixes #3443

3 years agoUpdate CI image to OneAPI 2021.1.1, add ICC tests.
Mark Abraham [Thu, 17 Dec 2020 11:10:35 +0000 (11:10 +0000)]
Update CI image to OneAPI 2021.1.1, add ICC tests.

Also, backport a change from MR !796 that silences the false-positive ICC
compiler warning.

3 years agoUpdate deprecation statuses
Mark Abraham [Tue, 15 Dec 2020 17:01:19 +0000 (17:01 +0000)]
Update deprecation statuses

Various functionality has been agreed as deprecated at #3818 and
elsewhere. Those are now noted in the release notes, documentation,
and CMake status messages. The changes are all minor so there is
little need to make mdrun report when such configurations are used.

The deprecation content for release  2020 (and 2021) series is updated
to include  the relevant  content from  release 2019  series. Comments
have been added to help us to this better in future.

Fixes #3818

3 years agoFix pull group index handling
Paul Bauer [Mon, 14 Dec 2020 12:44:02 +0000 (12:44 +0000)]
Fix pull group index handling

The pull code never validated its own index groups, leading to the
possibility of an invalid group either hanging the process or triggering
an assertion, depending on the build type.

Fixed by introducing the check for other index groups also to pull
groups.

Fixes #3810

3 years agoFix incorrect AWH free-energy output with multiple walkers
Magnus Lundborg [Mon, 14 Dec 2020 11:22:48 +0000 (11:22 +0000)]
Fix incorrect AWH free-energy output with multiple walkers

The free-energy was averaged exponentially over walkers using the wrong
sign for the exponent. The meant that the free-energy output was off
for large update sizes. This error was quadratic in the update interval
and the number of walkers. This likely has no measurable effects with
the default AWH free-energy update interval. But the effect is noticeable
with the not uncommon update interval of 1000 steps.

Fixes: #3828

3 years agoCorrect signs of lj and coulomb forces
Simon Christ [Mon, 30 Nov 2020 10:37:00 +0000 (10:37 +0000)]
Correct signs of lj and coulomb forces

3 years agoRestrict force frame comparison for FEP tests
Pascal Merz [Fri, 11 Dec 2020 13:07:23 +0000 (13:07 +0000)]
Restrict force frame comparison for FEP tests

Closes #3741.

3 years agoFix trx frame reading from modular simulator checkpoint files
Pascal Merz [Fri, 11 Dec 2020 12:22:44 +0000 (12:22 +0000)]
Fix trx frame reading from modular simulator checkpoint files

trx frames from checkpoints written by modular simulator could be
slightly off depending on the algorithms used (always up-to-date with
domain decomposition only). The global state is still written to
modular checkpoints (as there is a significant amount of setup work at
runner time that needs to be refactored before modular simulator can
get spawned completely without a global state). It is, however, not
guaranteed to be absolutely up to date, as it's not used in the
simulation continuation.

The trx frame reading is now handled by modular simulator if the
checkpoint was written by modular simulator. A test was added to
ensure that the final frame of the simulation is equivalent to the
checkpointed configuration.

Note that this was not affecting simulation restart (exact
continuation is tested also for modular simulator). It would, however,
affect other tools accessing the configuration from the checkpoint
file. The error was only present in master and 2021 beta, so it was
never in a released version.

trx frame reading by modular simulator required some refactoring of
the StatePropagatorData and FreeEnergyPerturbationData
checkpointing. The main read and write function was moved to the data
object itself rather than being owned by its element. This is likely a
better design decision anyway: The element orchestrates the
checkpointing during the simulations, but the data object is handling
the actual data reading / writing. This allows to create a dummy data
object, restore it from checkpoint, and read out the quantities
relevant for the trx frame.

Closes #3838

3 years agoA check for perturbed listed pairs beyond rlist
Berk Hess [Thu, 10 Dec 2020 13:34:59 +0000 (13:34 +0000)]
A check for perturbed listed pairs beyond rlist

Excluded atoms pairs should be within the pairlist cut-off, as
otherwise long-range corrections are not applied. This is problematic
for free-energy calculations where intra-molecular interactions are
not coupled and replaced by pair interactions. Now a fatal error
is generated when perturbed pair interactions are beyond rlist.

Also added PME grid correction for LJ excluded pairs beyond rvdw,
which was missing from #3403.

Added missing release note for the fix of #3403.

Fixes #3403
Fixes #3809

3 years agoFix indexing bug in electric field module
Paul Bauer [Wed, 9 Dec 2020 14:45:51 +0000 (14:45 +0000)]
Fix indexing bug in electric field module

Improper refactoring in c8eca5d1f27cc34903718ade7d44527c22ec3d93 lead to
the module using the wrong maximum atom index for applying the electric
field forces to atoms.

Fixes #3800

3 years agoFix defining of EXCLUSION_FORCES in CUDA/OpenCL kernels
Andrey Alekseenko [Wed, 9 Dec 2020 11:24:13 +0000 (11:24 +0000)]
Fix defining of EXCLUSION_FORCES in CUDA/OpenCL kernels

For the case of cut-off electrostatics + Ewald LJ + no energy calculation,
the EXCLUSION_FORCES macro should be active.
However, LJ_EWALD macro is (conditionally) set only later, and so is
always undefined when it is being checked for EXCLUSION_FORCES.

3 years agoFix compilation and tests with icc 19.1.2
Mark Abraham [Wed, 9 Dec 2020 10:14:01 +0000 (10:14 +0000)]
Fix compilation and tests with icc 19.1.2

Closes #3822

3 years agoFix and activate tests for kv-tree checkpoint functions
Pascal Merz [Wed, 9 Dec 2020 09:51:32 +0000 (09:51 +0000)]
Fix and activate tests for kv-tree checkpoint functions

The tests in src/gromacs/fileio/tests/checkpoint.cpp were introduced
in 64bee06aa, but the file was never added to the CMakeLists.txt,
meaning they were never executed (or even compiled).

Added the file to the CMake target and fixed a few compilation
errors and warning to activate the tests.

3 years agoFix dump of checkpoint files
Pascal Merz [Wed, 9 Dec 2020 09:23:13 +0000 (09:23 +0000)]
Fix dump of checkpoint files

With the addition of the MdModules and the modular checkpointing,
`gmx dump -cp` would end with an error when either of the two was
written to checkpoint. Reason was that the function dumping
checkpoint files was not aware of the additional blocks present.
As the new functionality checkpoints at the end of the files, the
remainder of the information was printed anyway, but the call ended
with an error.

This adds the two new checkpointing blocks to the function used
by gmx dump, and prints the kv-tree they are based on. To achieve
this, the kv-tree printing functionality had to be expanded to
allow for arrays of objects.

Finally, this change also fixes a wrong comment in the modular
simulator checkpoint helper - checkpointing happens on top of the
integration step, so _before_ the last step.

3 years agoFix Nose-Hoover conserved energy
Pascal Merz [Mon, 7 Dec 2020 08:42:44 +0000 (08:42 +0000)]
Fix Nose-Hoover conserved energy

Closes #3831

3 years agoClarify checkpoint mismatch error, and enable in release
Pascal Merz [Sat, 5 Dec 2020 01:07:13 +0000 (18:07 -0700)]
Clarify checkpoint mismatch error, and enable in release

As of GROMACS 2021, checkpoint files written with the modular and the
legacy codepath need to be continued with the same code path. The
respective check was not executed in release mode, which would lead
to less descriptive errors.

Also reworded the error to guide users how they can solve the problem.

3 years agoRelax simulator comparison tests
Pascal Merz [Fri, 4 Dec 2020 05:29:12 +0000 (22:29 -0700)]
Relax simulator comparison tests

The simulator comparison tests have proven to be too strict when running
them on more diverse hardware / compiler / parallelization combinations.

This doubles the tolerances for the energies of tests containing
constraints. Note that at 160 double precision ULPs, these are still
very tight for end-to-end tests, so the danger of relaxing them a bit
is low.

Closes #3836

3 years agoPrint energy conservation in modular simulator
Pascal Merz [Wed, 2 Dec 2020 21:38:48 +0000 (14:38 -0700)]
Print energy conservation in modular simulator

3 years agoThird GROMACS 2021 beta release
Paul Bauer [Wed, 2 Dec 2020 14:39:57 +0000 (14:39 +0000)]
Third GROMACS 2021 beta release

All features should now be stable before the release.

3 years agoFixes post submit broken by 05f02ab82
Pascal Merz [Wed, 2 Dec 2020 08:52:40 +0000 (01:52 -0700)]
Fixes post submit broken by 05f02ab82

3 years agoSeparate simulator comparison tests
Pascal Merz [Wed, 2 Dec 2020 00:30:34 +0000 (17:30 -0700)]
Separate simulator comparison tests

The simulator comparison tests ensure that legacy and modular
simulator code paths don't diverge while both exist. They are
currently part of the mdrun tests. Separating them has two
advantages:

* As the feature set of modular simulator grew, the run time
  of these tests became the largest contributor to the run time of
  mdrun-test. Keeping it separate makes it easy to keep the
  run time in check and to disable the tests if necessary.
* It is useful to run the simulator comparison tests on
  multiple ranks (at least locally). Not all other tests
  in mdrun-test support more than one rank. Having a separate
  binary simplifies running it with different parallelization schemes.

3 years agoFix error when using simulator test with pre-defined environment variable
Pascal Merz [Wed, 11 Nov 2020 23:38:46 +0000 (16:38 -0700)]
Fix error when using simulator test with pre-defined environment variable

The simulator test compares the results of functionality implemented in
both the legacy and the modular simulator by running two simulations using
the environment variables GMX_DISABLE_MODULAR_SIMULATOR and
GMX_USE_MODULAR_SIMULATOR to cover both code paths. If one of these
variables was already present in the test sytem, the tests would fail with
an error.

This change backs up the current state of both variables, disables them,
runs the tests, and resets them to their previous state (if any).

3 years agoFix kinetic energy and temperatures reporting
Pascal Merz [Wed, 2 Dec 2020 07:37:43 +0000 (00:37 -0700)]
Fix kinetic energy and temperatures reporting

Fixes the reporting of kinetic energy and temperatures, which is
(very slightly) off in md-vv with Trotter NPT (Nose-Hoover & MTTK)
in the legacy code path.

Closes #3832

3 years agoModular simulator: Disable invalid code paths
Pascal Merz [Wed, 11 Nov 2020 22:52:22 +0000 (15:52 -0700)]
Modular simulator: Disable invalid code paths

This explicitly disables two invalid code paths for modular simulator:
* The new MTS is not implemented for modular simulator. It is only
  implemented for integrator = md, which by default uses the legacy
  code path. This default can however be overwritten by setting
  the environment variable GMX_USE_MODULAR_SIMULATOR=ON, which would
  result in errors due to the MTS data structures not being properly
  initialized.
* The non-MTTK Parrinello-Rahman barostat is available in modular
  simulator, but not in the legacy simulator. The case that this
  barostat is chosen in combination with other options not compatible
  with modular simulator needs to be caught explicitly.

3 years agoAdd tests for newer GCC versions
Paul Bauer [Mon, 30 Nov 2020 16:07:42 +0000 (16:07 +0000)]
Add tests for newer GCC versions

Added gcc-9 + OpenCL (in release builds) and gcc-10 + OpenCL
during merge pipelines to replace previous gcc-7 + OpenCL builds.
Shuffled around previous gcc-8 + CUDA builds to now have
gcc-7 + CUDA 10.2 and gcc-8 + CUDA 11.0 instead.

Test OpenCL with internal clFFT during release builds.

3 years agoExplicitly use xunit2 schema for pytest output.
M. Eric Irrgang [Fri, 27 Nov 2020 14:12:07 +0000 (17:12 +0300)]
Explicitly use xunit2 schema for pytest output.

Resolves #3717

3 years agoImprove accessibility of pytest documentation.
M. Eric Irrgang [Sun, 29 Nov 2020 19:54:39 +0000 (19:54 +0000)]
Improve accessibility of pytest documentation.

* Update gmxapi install.rst.
* Consolidate (and prune) some README.md content in
  python_packaging subdirectory.

Also ref #3706

Fixes #3702

3 years agoFix build on CentOS 7
Paul Bauer [Fri, 27 Nov 2020 14:37:28 +0000 (15:37 +0100)]
Fix build on CentOS 7

The compiler toolset coming with devtoolset-7 on CentOS still suffers
from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58265. The workaround
for this has been removed before because other gcc-7 compilers are not
affected by this, but it is obviously still needed for CentOS.

Fixes #3826

3 years agoImport setuptools early to suppress distutils warning.
M. Eric Irrgang [Fri, 27 Nov 2020 14:24:01 +0000 (17:24 +0300)]
Import setuptools early to suppress distutils warning.

Also apply PEP-8 formatting corrections.

Fixes #3715

3 years agoFix pull fatal error message
Berk Hess [Thu, 26 Nov 2020 08:33:36 +0000 (09:33 +0100)]
Fix pull fatal error message

Fix pull group indices in fatal error message for geometries with
more than two groups.

Refs #3613

3 years agoFix cyclecounters on x32
Paul Bauer [Wed, 25 Nov 2020 10:30:08 +0000 (11:30 +0100)]
Fix cyclecounters on x32

A missing check meant that the code wouldn't compile due to an asm block
that is not compatible with 32 bit datatype ABI and x86_64 registers.

Fix provided by Nicholas Breen.

Fixes #3816

3 years agoFix error with links in docs
Paul Bauer [Wed, 25 Nov 2020 08:30:08 +0000 (09:30 +0100)]
Fix error with links in docs

Linkchecker complained about issues that I didn't fix correctly during
the latest merge.

3 years agoFix frexp() for ARM SVE SIMD
Gilles Gouaillardet [Wed, 25 Nov 2020 07:06:46 +0000 (16:06 +0900)]
Fix frexp() for ARM SVE SIMD

3 years agoStop GoogleTest requiring ancient CMake minimum versions
Mark Abraham [Tue, 24 Nov 2020 15:26:49 +0000 (16:26 +0100)]
Stop GoogleTest requiring ancient CMake minimum versions

In practice the version is always new enough, and avoiding the
redundant minimum specifications means GROMACS developers will not be
spammed with useless warnings.

3 years agoFix frexp() for ARM neon SIMD.
Erik Lindahl [Tue, 24 Nov 2020 11:48:54 +0000 (12:48 +0100)]
Fix frexp() for ARM neon SIMD.

Implements the same fix for arguments +-0 as previously done
for x86 and power implementations. After this, the only
remaining architecture is ARM SVE.

Refs #3773.

3 years agoMerge branch 'origin/release-2020' into merge-2020-into-2021
Paul Bauer [Tue, 24 Nov 2020 13:38:39 +0000 (14:38 +0100)]
Merge branch 'origin/release-2020' into merge-2020-into-2021

Resolved Conflicts:
admin/containers/scripted_gmx_docker_builds.py
docs/conf.cmakein.py
docs/dev-manual/change-management.rst
docs/dev-manual/contribute.rst
docs/dev-manual/releng/index.rst
docs/dev-manual/tools.rst
docs/install-guide/index.rst
docs/reference-manual/preface.rst
docs/release-notes/index.rst
scripts/GMXRC.bash.cmakein
src/gromacs/gmxana/gmx_covar.cpp
src/gromacs/gmxana/gmx_do_dssp.cpp
src/gromacs/gmxana/gmx_h2order.cpp
src/gromacs/gmxana/nsfactor.cpp
src/gromacs/hardware/detecthardware.cpp
src/gromacs/mdlib/coupling.cpp
src/gromacs/mdrun/md.cpp
src/gromacs/mdtypes/state.h
src/gromacs/trajectoryanalysis/modules/pairdist.cpp
src/gromacs/utility/basedefinitions.h

3 years agoFix gmx h2order -d option
Paul Bauer [Tue, 24 Nov 2020 10:22:47 +0000 (11:22 +0100)]
Fix gmx h2order -d option

The code to implement this was never added.

Fixes #3820

3 years agoMake sure frexp() returns correct for argument 0.0
Erik Lindahl [Tue, 24 Nov 2020 08:23:37 +0000 (08:23 +0000)]
Make sure frexp() returns correct for argument 0.0

Previous functions in gromacs have never called frexp
with argument 0.0, but cbrt() needs this. This will not
have caused any bugs, but since it results in FP
exceptions in debug builds we want to have it fixed
so our unit tests work.

This change adds the correct behavior for all x86
SIMD instruction sets, and it has also been tested
on all of them in both single and double, with the
exception for MIC (which should be correct, but we
cannot test it).

The ARM SIMD flavors have not yet been fixed yet
since the ARM build fails due to an apparent nblib
error. Once that is fixed, I will add it in a separate
change and close the issue.

Refs #3773.

3 years agoImprove handling of CUDA API errors
Artem Zhmurov [Tue, 24 Nov 2020 08:02:48 +0000 (08:02 +0000)]
Improve handling of CUDA API errors

Consolidate the construction of the printed error message in one
place and make sure that the CUDA API information on error is
printed when the error is detected.

3 years agoFixes for Intel and container build fixes
Paul Bauer [Mon, 23 Nov 2020 20:51:28 +0000 (20:51 +0000)]
Fixes for Intel and container build fixes

Generalizes the TSAN build stage to a compiler build stage, and uses
it for containing the installation process for the free Intel tools

Fixed or worked around several bugs

Updated install guide section on tested platforms to describe
what we actually do

Refs #3459, #3620

Change-Id: I28e4b816923395edead9d425cec5d85581e22b5e

3 years agoProperly check if there are perturbed constraints or masses
Magnus Lundborg [Mon, 23 Nov 2020 06:55:13 +0000 (07:55 +0100)]
Properly check if there are perturbed constraints or masses

Instead of just checking, when running updates on GPU, if
there are lambda states that involve constraints or masses
(e.g. if using fep-lambdas) check if any constraints or masses
are actually perturbed.

3 years agoMake corresponding device active before each TestDevice is created
Artem Zhmurov [Tue, 17 Nov 2020 14:22:41 +0000 (17:22 +0300)]
Make corresponding device active before each TestDevice is created

When populating the list of GPU devices for tests, the DeviceContext and
DeviceStream objects are created for each TestDevice. In CUDA, the
active device has to be explicitly set by the API since the DeviceStream
is created for the active device. Otherwise, all the streams are created
for the first device. When these streams are later used for the devices
other than first, CUDA API returns an invalid argument error. The bug only
affects unit tests in CUDA builds for systems with more than one GPU.
Does not affect OpenCL/SYCL builds, because they use DeviceContext to
attach the device to the stream (queue).

Fixes #3781, #3782 and #3805.

3 years agoLook for the various possible names of the gromacs package.
M. Eric Irrgang [Thu, 29 Oct 2020 21:07:19 +0000 (22:07 +0100)]
Look for the various possible names of the gromacs package.

Refs #3777

3 years agoRemove coolquote that sounds offensive without context
Artem Zhmurov [Mon, 23 Nov 2020 13:52:57 +0000 (16:52 +0300)]
Remove coolquote that sounds offensive without context

3 years agoRemove some extraneous compiler flags from nblib
Joe Jordan [Tue, 17 Nov 2020 13:53:46 +0000 (13:53 +0000)]
Remove some extraneous compiler flags from nblib

Closes #3798

3 years agoDetect ARM SVE Vector length if possible
Gilles Gouaillardet [Fri, 13 Nov 2020 09:14:37 +0000 (09:14 +0000)]
Detect ARM SVE Vector length if possible

arm_sve: unless the SVE vector length is explicitly set via the
GMX_SIMD_ARM_SVE_LENGTH macro, detect the default vector length
and aborts if it cannot be found.

Thanks Olly Perks for the pointer.

3 years agoFix thread mpi linking for mdrun only build
Paul Bauer [Thu, 12 Nov 2020 10:45:27 +0000 (11:45 +0100)]
Fix thread mpi linking for mdrun only build

The linking would fail because the library include directory was not
added properly.

Fixes #3807

3 years agoRestore correct dynamics linking behaviour
Paul Bauer [Thu, 12 Nov 2020 08:56:08 +0000 (09:56 +0100)]
Restore correct dynamics linking behaviour

Recent changes to the way shared libraries are managed introduced a bug
in setting up static linking by default when building mdrun only.

Fixes #3806

3 years agoFix gmx do_dssp CHARMM support
Paul Bauer [Wed, 11 Nov 2020 14:36:20 +0000 (15:36 +0100)]
Fix gmx do_dssp CHARMM support

The tool would not work correctly due to issues with detecting some
oxygen molecules.

Fixes #3568

3 years agoFix gcc 9 "warning: ‘unused’ attribute ignored"
Szilárd Páll [Wed, 11 Nov 2020 14:28:14 +0000 (14:28 +0000)]
Fix gcc 9 "warning: ‘unused’ attribute ignored"

gcc 9 seems to not like the unused because it would never warn anyway
about members, but clang does require it.

3 years agoFix segmentation fault in gmx pairdist
Paul Bauer [Wed, 11 Nov 2020 13:56:29 +0000 (13:56 +0000)]
Fix segmentation fault in gmx pairdist

When using the pairdist tool with a coordinate in space as selection,
the tool would overwrite the selection group of the selection by default
to implement reference grouping. This would change the selection type of
the coordinate from INDEX_UNKNOWN to INDEX_ALL by default (or to any
other user supplied reference grouping). The change of the selection
type would then later cause a segmentation fault, as the underlying
machinery would try to access the non-existing atoms belonging to the
selection.

This changes the mechanism to no longer overwrite the selection group
type if the current one is INDEX_UNKNOWN.

Introduces test case with command line selection that would crash
without the fix.

Fixes #3762

3 years agoSecond GROMACS 2021 beta release
Paul Bauer [Wed, 11 Nov 2020 10:30:50 +0000 (10:30 +0000)]
Second GROMACS 2021 beta release

Feature freeze for 2021 branch.

3 years agoUpdate gmx msd documentation
Berk Hess [Wed, 11 Nov 2020 07:42:53 +0000 (08:42 +0100)]
Update gmx msd documentation

Removed comment on weighted fitting for determining the diffusion
coefficients. This weighting had been removed at some point, but
the documentation had not been updated.

3 years agoFix "GMX_CUDA|OCL_NB_EWALD_TWINCUT is disabling twin cut-off"
Andrey Alekseenko [Tue, 10 Nov 2020 15:21:45 +0000 (16:21 +0100)]
Fix "GMX_CUDA|OCL_NB_EWALD_TWINCUT is disabling twin cut-off"