alexxy/gromacs.git
4 years agoImprove GPU update tasks assignment consistency
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

4 years agoAvoid integer overflow in dispersion correction
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

4 years agoDocument density-fit cross-correlation in .mdp options
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

4 years agoRevert "Expose vsite counting"
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

4 years agoFix clang-6 image template
Paul Bauer [Sat, 22 Feb 2020 12:31:41 +0000 (13:31 +0100)]
Fix clang-6 image template

Overlooked this when merging 1093dfa9ba24329162179a3fcbcbb8c491ab9543.

Change-Id: I85d5b852ab5d565289d64dd21ade09dabd4115c4

4 years agoUse legacy code path for NMR restraints (modular simulator)
Pascal Merz [Fri, 21 Feb 2020 00:34:04 +0000 (17:34 -0700)]
Use legacy code path for NMR restraints (modular simulator)

Fixes #3388

Change-Id: I03db8af35d71c7405716e73516c4235fc089334c

4 years agoCorrect for skewed box in non-DD modular simulator
Pascal Merz [Thu, 20 Feb 2020 21:15:56 +0000 (14:15 -0700)]
Correct for skewed box in non-DD modular simulator

In modular simulator, the correction for skewed boxes was only performed
when DD was active. This change makes sure it happens in all cases.
Also left a TODO to think about unifying the approach for the two cases
moving forward.

Fixes #3383
Refs #3392

Change-Id: I897dbc9e490bb1a1e465e711c66b47a29e214fd1

4 years agoAdd fatal error when multisim runs sharing state have different init_step
Berk Hess [Fri, 21 Feb 2020 10:36:04 +0000 (11:36 +0100)]
Add fatal error when multisim runs sharing state have different init_step

Refs #2440
Fixes #3990

Change-Id: I052cd53dc9517a3df53663e52720ee5a80ea65c0

4 years agoSimplify GitLab CI Dockerfiles.
M. Eric Irrgang [Wed, 25 Dec 2019 15:55:34 +0000 (18:55 +0300)]
Simplify GitLab CI Dockerfiles.

Consolidate some docker build instructions into distinct images for
the base dependencies, the various toolchains, and the docs build
environment. Combine Dockerfiles that only differ in toolchain version.

Total image size is prioritized over total build time by making all
apt-get layers include update, install, and cleaning in single RUN
commands, where intermediate layers are part of the tagged images.

Made images both for clang and gcc builds of the documentation.

Refs #3263

Change-Id: I55d6a128067f78214193223756db94a1964c491d

4 years agoFixed bug in orires code that was checking too strict.
David van der Spoel [Wed, 12 Feb 2020 13:53:33 +0000 (14:53 +0100)]
Fixed bug in orires code that was checking too strict.

Added one test to see that input is accepted.

Fixes #3375

Change-Id: I0f64b386477b9a72f18c95fd977ac8cf5dbeeccd

4 years agoFixed typo in GMXRC.csh.cmakein
David van der Spoel [Mon, 17 Feb 2020 15:22:52 +0000 (16:22 +0100)]
Fixed typo in GMXRC.csh.cmakein

A bashism crept into a csh file.

Refs #3381.

Change-Id: I2f11e027db2804ee850f93a2d18de8ad427abc8e

4 years agoFix gpuudpate and gpucomm matrix docs
Szilárd Páll [Fri, 14 Feb 2020 18:12:27 +0000 (19:12 +0100)]
Fix gpuudpate and gpucomm matrix docs

Improves the outdated documentation/description of the matrices
clarifying the use/role of these.

Also removed gpubufferops matrix which is not needed in the release
branch (the feature is automatically triggered when required by some
other features).

Change-Id: I097e1d6b150767a95b9d638b3c6031a24ece995f

4 years agoExpand test coverage of exact continuation tests
Pascal Merz [Thu, 13 Feb 2020 02:37:57 +0000 (19:37 -0700)]
Expand test coverage of exact continuation tests

The exact continuation tests were not covering the new
Parrinello-Rahman functionality of modular simulator, nor the
berendsen-berendsen NPT case using md-vv. This change fixes this.

Fixes #3377 (fixes point 4, last task on the list)

Change-Id: I3bcd072969259383dd1812d425dd7b3baee5bd85

4 years agoFix reading of checkpoints with Parrinello-Rahman (modular simulator)
Pascal Merz [Thu, 13 Feb 2020 02:32:36 +0000 (19:32 -0700)]
Fix reading of checkpoints with Parrinello-Rahman (modular simulator)

Using modular simulator, simulations using Parrinello-Rahman barostat
could not be read from checkpoint, throwing an error in the checkpoint
loading routine. While the legacy implementation of the P-R barostat
required the pressure at the previous step to be checkpointed, the
modular implementation does not require this. load_checkpoint is,
however, expecting this field to be present and throws an error.

This change fixes this by setting the globalState flags in dependence
of whether the modular simulator will be used, avoiding read_checkpoint
to expect this entry.

Note that tests ensuring this bug not to reappear are introduced in the
child change I3bcd0729.

Refs #3377 (fixes point 3)

Change-Id: If8afd294b8c79ceef66e71293d9d93cf2f7d0df8

4 years agoFix Parrinello-Rahman scaling on initial step (modular simulator)
Pascal Merz [Thu, 13 Feb 2020 02:09:13 +0000 (19:09 -0700)]
Fix Parrinello-Rahman scaling on initial step (modular simulator)

If Parrinello-Rahman scaling was requested on the first step, it was
not properly initialized. The setup routine would have correctly
(although non-obviously so) calculated the scaling matrix, but have
requested the propagator to use the scaling one step too late.

For new simulations, this never happens (since scaling happens on the
second step, not the first). It could, however, lead to slight
errors if restarting from a checkpoint occured exactly on a scaling
step. As restarting from Parrinello-Rahman simulations using modular
simulator was broken anyway, we can be sure that this has never
happened in practice.

This change fixes the bug, adds explanations of what happens on the
initial step, and makes the function calls more explicit (at the cost
of a very small amount of code duplication).

Refs #3377 (fixes point 2)

Change-Id: Ic3ba7ba078260a9d039d506fc0a87353f80d23dd

4 years agoMove modular simulator decision before checkpoint loading
Pascal Merz [Wed, 12 Feb 2020 23:58:57 +0000 (16:58 -0700)]
Move modular simulator decision before checkpoint loading

Currently, the decision on whether to use modular simulator is done
relatively late during the runner stage. This makes it impossible to
allow for different behavior at checkpoint loading time. The current
change therefore moves this decision before checkpoint loading time.
To achieve this, some adaptations were needed:

* Use gmx_mtop_interaction_count to determine whether virtual sites
  will be used before the respective object is created.
* The membrane embedding check via pointer is replaced by a boolean
  set earlier during the runner phase.
* The essential dynamics check was split to catch command line inputs
  during the runner phase, and mismatching checkpointing data during
  the simulator phase (mirroring legacy behavior in do_md()).
* Replace the ensemble restraint check by a low-level alternative
  for the early runner call (mimicking the distance restraint
  initialization), while keeping the current check for the
  simulator-level call. Note that as multi sims are disabled, this
  low-level test will effectively never fail, but the additional
  clarity is helpful in further development. The later test ensures
  that changes to the init_disres() don't make this check invalid -
  if they would ever get out of sync, the simulations would exit with
  a fatal error.

Refs #3377 (fixes point 1)

Change-Id: I635e033db51d6ecc8bf121c72730a121e04586dd

4 years agoFix checkNumberOfBondedInteractions bug
Pascal Merz [Tue, 11 Feb 2020 01:08:17 +0000 (18:08 -0700)]
Fix checkNumberOfBondedInteractions bug

When checkNumberOfBondedInteractions finds a missing interaction, the
program is not exiting because a function enclosed in a logging statement
starts a global reduction, but is only ever reached by master.

Fixes #3373

Change-Id: I9a0faa790595a7ea59db561a20246a76857435a1

4 years agoExpose vsite counting
Pascal Merz [Wed, 12 Feb 2020 22:33:39 +0000 (15:33 -0700)]
Expose vsite counting

This allows to check whether vsites are present before the
respective object is created.

Refs #3377 (prepares point 1)

Change-Id: I8273daf38d46e2f052573f48323b5b6137965e9f

4 years agoFix incorrect GPU update task assignment fallback
Szilárd Páll [Mon, 10 Feb 2020 18:30:22 +0000 (19:30 +0100)]
Fix incorrect GPU update task assignment fallback

This change fixes the incorrect fallback condition in the GPU update
task assignment. This also eliminates the assertion trigerred in do_md()
where the correct form of the check is asserted on.
Since the fallback path only triggers when the GPU update would be used by
default this only affected runs with GMX_FORCE_UPDATE_DEFAULT_GPU.

Change-Id: I8b2b506fa998b6ed5e6d6d8ae4b78e27006df199

4 years agoAvoid dev flags in triggering gpuupdate nightly matrix
Szilárd Páll [Fri, 24 Jan 2020 13:14:53 +0000 (14:14 +0100)]
Avoid dev flags in triggering gpuupdate nightly matrix

The GPU update release feature should be tested independenly from the
experimental features which were all enabled for the "gpuupdate" nightly
job. This change removes the GMX_GPU_DD_COMMS and GMX_GPU_PME_PP_COMMS
as well as the unnecessary buffer ops env var.

Refs #3354

Change-Id: I777f6996ca5b1ae1b3e7f787c18d82f605035e47

4 years agoAvoid (re)initializing GPU update without DD
Szilárd Páll [Tue, 28 Jan 2020 18:24:13 +0000 (19:24 +0100)]
Avoid (re)initializing GPU update without DD

Unless repartitioning happens the GPU update-constraints module's
expensive initialization only neeeds to be called once.

Fixes #3358

Change-Id: Ic2a147985da5907961a3e3277110bbae52e6cadc

4 years agoBug fix to avoid passing null object into cudaDestroyTextureObject
Alan Gray [Wed, 5 Feb 2020 17:18:34 +0000 (09:18 -0800)]
Bug fix to avoid passing null object into cudaDestroyTextureObject

In the initial dummy context creation sanity-check part of the
simulation, a null object is passed into this function. This can cause
runtime failures with certain versions of CUDA. This change only calls
the function when the object is non-null.

Change-Id: I8118f6086fa2227c8dc697e4634878a12fe3676f

4 years agoActually fix PME forces with FE without perturbed q/LJ
Berk Hess [Mon, 3 Feb 2020 10:26:50 +0000 (11:26 +0100)]
Actually fix PME forces with FE without perturbed q/LJ

PME would incorrectly ignore the mesh forces on perturbed atoms when
no charges or LJ atom types were actually perturbed.
This is because the "fix" in commit 12f01f79 incorrectly changed the
lambda value used for the PME forces from the actual lambda value
to 1 instead of to 0 as it should have been.

Fixes #2640
Fixes #3359

Change-Id: Ib19565bf017ddbd2fddc66c52be0ff9efc7e707c

4 years agoWorkaround for Gitlab archive size
Paul Bauer [Thu, 23 Jan 2020 10:11:09 +0000 (11:11 +0100)]
Workaround for Gitlab archive size

Refs #3361

Change-Id: Ie1911501ce45a67d412b60aede7335b0acd3a786

4 years agoFix deadlock in PP-PME balancing startup delay
Szilárd Páll [Wed, 22 Jan 2020 16:07:01 +0000 (17:07 +0100)]
Fix deadlock in PP-PME balancing startup delay

The condition whether load balancing should start included a per-rank
computed fixed time-delay. Therefore different ranks could evaluate this
condition differently resulting in a deadlock.
This change fixes the deadlock by broadcasting the result of the time
delay check.

Fixes #3335

Change-Id: I39ebc7e99483a6837bdbd79e312148384c1966b3

4 years agoUse utf-8 for python file reading
Paul Bauer [Tue, 14 Jan 2020 07:01:30 +0000 (08:01 +0100)]
Use utf-8 for python file reading

Avoids crashing on non-ascii characters

Also needed in release-2020 due to https://gitlab.com/gromacs/gromacs/pipelines/111716110

Change-Id: Ie489110bbe37619d36f8feb739e04ef60cccff16

4 years agoFix DD rank count prime check
Berk Hess [Wed, 22 Jan 2020 21:26:51 +0000 (22:26 +0100)]
Fix DD rank count prime check

The domain decomposition would refuse to run with large prime factors
in the MPI rank count even when the grid was specified by the user.

Fixes #3336

Change-Id: I92f20ce18f314db68890650e76741b0ee70c05df

4 years agoFix a couple of commas in cool quotes
Artem Zhmurov [Thu, 23 Jan 2020 09:58:53 +0000 (10:58 +0100)]
Fix a couple of commas in cool quotes

A couple of commas between the quotes and their authors went missing.
Due to a random nature of cool quotes, I am not sure if this have
any consequences.

Change-Id: Ifb79557efc3fd3d8d75dd0a6566cccc7e5a43ea4

4 years agoFix PME checks in GPU update assignment decision
Gaurav Garg [Fri, 10 Jan 2020 17:29:17 +0000 (22:59 +0530)]
Fix PME checks in GPU update assignment decision

The decideWhetherToUseGpuForUpdate() function performed a check on
whether PME is on GPU, but neglected to check if PME is actually
active. Therefore, cases without PME (e.g. reaction field) were
unintentionally being prevented from running update on GPU. This change
adds a check whether pmeRunMode != PmeRunMode::None

Change-Id: Ic49f99b2e2afddabd7e2c8e68ab3d6d9325dc07a

4 years agoFix illegal memory access in PME communication
Berk Hess [Wed, 22 Jan 2020 10:53:24 +0000 (11:53 +0100)]
Fix illegal memory access in PME communication

Depending on the compiler, mdrun could exit with an illegal
memory access error when a PME rank communicates 0 atoms with
another PME rank.

Change-Id: Ic1a08903f53c3d0b655ed5475ad99024979b461e

4 years agoClarify COMM/posres grompp note
Berk Hess [Tue, 21 Jan 2020 21:05:31 +0000 (22:05 +0100)]
Clarify COMM/posres grompp note

In the common case of equilibrating a macro-molecule using position
restraints, grompp will issue a note about COMM removal when using
default mdp settings. Added a sentence that says that it is likely
not an issue in this common case.

Change-Id: Ide8b75664c4da3789c6661d8d69f855f9abea4e0

4 years agoFix documentation error with doxygen >1.8.16
Paul Bauer [Mon, 20 Jan 2020 14:48:19 +0000 (15:48 +0100)]
Fix documentation error with doxygen >1.8.16

Fixes #3280

Change-Id: Ia41e080ea5ee4bc393d1e0240fc56958d81f6c68

4 years agoActually fix Gitlab doc build
Paul Bauer [Fri, 17 Jan 2020 11:54:26 +0000 (12:54 +0100)]
Actually fix Gitlab doc build

Was still failing after 658765317fd94df5d534c039462be03ab3839067 got
merged.

Actually fixes #3278

Change-Id: I747fe5c677864d1f50ab97d0eda38c68a6085b45

4 years agoFix bad link in developer docs
Paul Bauer [Thu, 16 Jan 2020 17:50:25 +0000 (18:50 +0100)]
Fix bad link in developer docs

Also made sure that error gets caught by the Gitlab CI runner.

Fixes #3278

Change-Id: I36b73a4322c69242eef3dcefa6684ef973b1bd01

4 years agoAdd check for shells and GPU update
Berk Hess [Thu, 16 Jan 2020 14:13:41 +0000 (15:13 +0100)]
Add check for shells and GPU update

Fixes #3303

Change-Id: I84a9d005fdff142e332e449bd7b2cce314617adb

4 years agoCorrect fixed redmine issue id from 3297 to 3296
Berk Hess [Thu, 16 Jan 2020 14:23:35 +0000 (15:23 +0100)]
Correct fixed redmine issue id from 3297 to 3296

Recent commit 36a65816 said it fixed issue 3297, but this should
have been issue 3296.

Refs #3296

Change-Id: I85a95e818d3cda816211dc2aa8ddb32e9e0c69d4

4 years agoFix PME run mode without PME
Szilárd Páll [Fri, 10 Jan 2020 15:37:32 +0000 (16:37 +0100)]
Fix PME run mode without PME

pmeRunMode was incorrectly set to CPU when the PME task is not
assigned to a GPU in a non-PME run.
This change make sure that non-PME runs pmeRunMode is correctly set to
None. It also moves this setup code to a function in the taskassignment
module.

Change-Id: I2c2c609e56d3cb6eef5cfccf2f0489545cedf6ef

4 years agoFix nightly build failure on Gitlab
Paul Bauer [Thu, 16 Jan 2020 08:17:14 +0000 (09:17 +0100)]
Fix nightly build failure on Gitlab

Found an unused variable warning when building without thread or real
MPI.

Change-Id: I6badc5c32e9eeb07cfafacd3ff9219dd612be847

4 years agoFix multisim with parallel simulation
Berk Hess [Tue, 14 Jan 2020 13:51:38 +0000 (14:51 +0100)]
Fix multisim with parallel simulation

mdrun -multisim with more than one rank per simulation would stop
with a fatal error due to using a partially initialized
gmx_multisim_t in GpuTaskAssignmentsBuilder::build().

Fixes #3297

Change-Id: Idfe24110908dc8cad29cd9a0eac7233fca4102f9

4 years agoReport if update is running on the GPU or on the CPU
Artem Zhmurov [Fri, 10 Jan 2020 16:37:34 +0000 (17:37 +0100)]
Report if update is running on the GPU or on the CPU

This adds a line which states where update is offloaded next
to the rest of the GPU usage information.

Fixes #3292.

Change-Id: Ie6b076c4309c7695ab9b46037ced92e95dea1558

4 years agoRevert "Exclude build-system files from CPack"
Paul Bauer [Fri, 10 Jan 2020 16:52:53 +0000 (17:52 +0100)]
Revert "Exclude build-system files from CPack"

This reverts commit 617d7fb728eee44331d8f8f98fa644bc5921fcb3.

Caused #3291

This commit fixes #3291

Change-Id: Ib75dd9274c1822192d5ffd0ce458ab35a3406f11

4 years agogmxManageMPI.cmake: convert MPI FLAGS to lists
Christoph Junghans [Fri, 10 Jan 2020 00:37:09 +0000 (17:37 -0700)]
gmxManageMPI.cmake: convert MPI FLAGS to lists

Convert MPI FLAGS to lists as otherwise space will get quoted in
CFLAGS in gmxCFlags.cmake.

Change-Id: Ieee4b68d254261f079d954443322faf040e8b6e9

4 years agoImprove mdrun performance user guide
Szilárd Páll [Fri, 10 Jan 2020 13:22:07 +0000 (14:22 +0100)]
Improve mdrun performance user guide

- Extended GPU update related section;
- Tweaked the bonded GPU offload related section to reflect the current
  state of the code.

Change-Id: I89ed39750d449df8b273f36ee6530df29ff31b7e

4 years agoMerge release-2019 into release-2020
Roland Schulz [Tue, 7 Jan 2020 21:43:32 +0000 (13:43 -0800)]
Merge release-2019 into release-2020

Change-Id: I34a795ad1fdc805d056401932f8c543ed77cfae7

4 years agoWorkaround for ICC 19u5 and 20initial
Roland Schulz [Tue, 7 Jan 2020 01:51:48 +0000 (17:51 -0800)]
Workaround for ICC 19u5 and 20initial

Change-Id: I34f4215f2112579b1a92c87aca28b270b4aca09e

4 years agoAdd support for ICC NextGen with MKL
Roland Schulz [Tue, 7 Jan 2020 04:55:49 +0000 (20:55 -0800)]
Add support for ICC NextGen with MKL

Change-Id: I2ac3d994736f2261955db65c7c039b7c33cdbaa7

4 years agoRemove transitional links for online gmxapi Python package reference.
M. Eric Irrgang [Fri, 8 Nov 2019 20:07:49 +0000 (23:07 +0300)]
Remove transitional links for online gmxapi Python package reference.

Provide link to current GROMACS gmxapi documentation,
built by GitLab Runner.

Fixes #2985

Change-Id: I1e56828aba4cc2568bbc9e6617863ca10197058d

4 years agoPrepare for 2020.1
Paul Bauer [Fri, 27 Dec 2019 13:48:34 +0000 (14:48 +0100)]
Prepare for 2020.1

Reset DOI strings

Change-Id: I5898dfdacde0c851c1a870a983094a2e56c3ab2b

4 years agoGROMACS 2020 release
Paul Bauer [Fri, 27 Dec 2019 13:01:33 +0000 (14:01 +0100)]
GROMACS 2020 release

Updated regressiontest hash
Set doi strings
Set correct release date

Change-Id: I5d34e1176e5a0ecc6b38a15d830d228127a69d9d

4 years agoRevert "GROMACS 2020 release"
Paul Bauer [Wed, 1 Jan 2020 15:39:30 +0000 (16:39 +0100)]
Revert "GROMACS 2020 release"

This reverts commit 78c3280ad9c1802db4f6a7e02978207921add05f.

Reason for revert: wrong release date

Change-Id: Ia0d4112349ea4bdca9edda2a30e8933cacc2ad19

4 years agoGROMACS 2020 release
Paul Bauer [Fri, 27 Dec 2019 13:01:33 +0000 (14:01 +0100)]
GROMACS 2020 release

Updated regressiontest hash
Set doi strings

Change-Id: Id053624d5e276aea62a5d07ebf995cf01b54f1ab

4 years agoAdd link to paper explaining GROMOS twin-range issues.
Erik Lindahl [Tue, 31 Dec 2019 11:00:43 +0000 (12:00 +0100)]
Add link to paper explaining GROMOS twin-range issues.

Change-Id: I81e89817ce9441bb3d25bc43b00b4cc995590c3a

4 years agoAvoid 386 O3 codegen bug even more
Mark Abraham [Tue, 31 Dec 2019 13:56:42 +0000 (13:56 +0000)]
Avoid 386 O3 codegen bug even more

Refs #3205

Change-Id: I78f3cc03da36e129a842507f9cdd3d170beb8c08

4 years agoInform user why forcing GPU update is not possible
Artem Zhmurov [Mon, 30 Dec 2019 14:34:18 +0000 (15:34 +0100)]
Inform user why forcing GPU update is not possible

Currently, if the GMX_FORCE_UPDATE_DEFAULT_GPU is set in not supported
case, the update silently switches to the CPU code path. This adds the
message that informs user that this has happened and why.

Change-Id: I7317d83271158c9973f4c102d8ca830b437626b5

4 years agoAdd description of GMX_FORCE_UPDATE_DEFAULT_GPU dev flag to the UG
Artem Zhmurov [Mon, 30 Dec 2019 22:20:46 +0000 (23:20 +0100)]
Add description of GMX_FORCE_UPDATE_DEFAULT_GPU dev flag to the UG

Refs. #3021

Change-Id: Idff63154c5ebb0b5bd209ce6025934db3aedf8fd

4 years agoFix gpuupdate matrix
Artem Zhmurov [Mon, 30 Dec 2019 11:17:20 +0000 (12:17 +0100)]
Fix gpuupdate matrix

1. Set GPU direct communications environment variables in update
   matrix to allow for multi-rank testing.
2. Fall back to the CPU update if PME is not fully offloaded
   in DD case and with PME-only rank (requred for GPU direct
   communications).

Change-Id: I66283a446b0cc58fd0165226b01bf58ce9ec90f1

4 years agoTests that verify serializer behaviours
Mark Abraham [Mon, 30 Dec 2019 12:44:17 +0000 (12:44 +0000)]
Tests that verify serializer behaviours

xdr_vector serializing char uses four bytes per char, which is
wasteful when that char buffer is just a binary dump such as with the
tpr file body. This test ensures that our assumption when writing tpr
files is that we can reinterpret as a wider data type and avoid excess
padding.

It also tests that xdr_opaque does not introduce such padding.

Refs #3269
Refs #3276

Change-Id: I9c40b8ab7b9dabe461cb4dd146bb132d8f5a9681

4 years agoRemove use of tuple in LINCS code for GPU implementation
Mark Abraham [Sun, 29 Dec 2019 23:08:15 +0000 (00:08 +0100)]
Remove use of tuple in LINCS code for GPU implementation

GCC 6.4 for POWER9 couldn't compile any form of increasing the size of
a vector of tuples that I could think of, so got rid of the tuple.

Used some range-based for, rather than explicit indexing plus the (slow)
at() function. There's no need to check indices are in range if there
are no indices!

Change-Id: Ie36a7a6fafe8f6613ec449778cfe2fbf97e02007

4 years agoFix build error with wrong name from cached cmake file
Paul Bauer [Mon, 23 Dec 2019 12:11:02 +0000 (13:11 +0100)]
Fix build error with wrong name from cached cmake file

The CMakeCache files could go out of sync when the name of the source
directory changes, leading to an unrecoverable build error.
To avoid this, CMakeCache files are no longer preserved between build.

Change-Id: Ifa1d808c05bd2f40132b9a721348b1bddb86fc02

4 years agoWrite TPR body as opaque XDR data in big-endian format
Erik Lindahl [Sun, 29 Dec 2019 13:43:35 +0000 (14:43 +0100)]
Write TPR body as opaque XDR data in big-endian format

This implements support for opaque data in our serializers,
as well as a few missing XDR support opaque routines,
including support for data objects larger than 2GB.

By using this for the new serialization of the TPR body
we avoid the unintended 4x growth of the file size, and
avoid introducing extra endian swapping or padding.

We also adjust the endian so the InMemorySerializer
swaps to big endian (i.e., swap if host is little endian)
such that the body of the TPR file is compatible with
the header that is already written as big-endian by
the XDR routines.

Fixes #3276.

Change-Id: I99011dffe190155e671bd656127c2a33459923e2

4 years agoChange the behavior of the GPU update UI
Artem Zhmurov [Fri, 27 Dec 2019 11:15:23 +0000 (12:15 +0100)]
Change the behavior of the GPU update UI

1. By default, update will now run on the CPU
2. The "-update cpu" will override the GMX_FORCE_UPDATE_DEFAULT_GPU
   environment variable.

Change-Id: I08efb6a594fb062fe145baa7cc00ba5c8ec63374

4 years agoResolve CMake ambiguities for gmxapi Python package build.
M. Eric Irrgang [Fri, 27 Dec 2019 13:54:44 +0000 (16:54 +0300)]
Resolve CMake ambiguities for gmxapi Python package build.

* Fix inconsistency in documented package dependencies.
* Update version of the required `cmake` Python package.
* Simplify setup.py since we can assume CMake >= 3.12 at build time. Avoids
  having the CMake dependency too early in the Python package build.

Fixes #3270

Change-Id: I6d4a4b838f05985741f4560a05a3d9f257b2ec3d

4 years agoChange releng to give information about Gitlab
Paul Bauer [Sat, 28 Dec 2019 11:20:23 +0000 (12:20 +0100)]
Change releng to give information about Gitlab

Started with converting the information for releng into information for
Gitlab when build can not find the releng repository.

Refs #3272

Change-Id: I027dd8eb3d01435cb06fba093fb2c64f381d47f3

4 years agoExtend information for GPU update
Paul Bauer [Sat, 28 Dec 2019 11:10:25 +0000 (12:10 +0100)]
Extend information for GPU update

Refs #3167

Change-Id: I0df45487839c46ac98e99865c0d61637230ddc1a

4 years agoExclude build-system files from CPack
Paul Bauer [Mon, 23 Dec 2019 09:07:06 +0000 (10:07 +0100)]
Exclude build-system files from CPack

Found that during Gitlab CI builds both ccache and build directory
where included in the final archive. Added exclusions to make sure
they do not propagate there.

Change-Id: I79717914c1d91a548ff295ff479b84ae19640e5d

4 years agoMerge "Merge origin/release-2019 into release-2020" into release-2020
Mark Abraham [Sat, 28 Dec 2019 12:26:27 +0000 (13:26 +0100)]
Merge "Merge origin/release-2019 into release-2020" into release-2020

4 years agoRemove membed from features
Paul Bauer [Sat, 28 Dec 2019 10:59:13 +0000 (11:59 +0100)]
Remove membed from features

gmx membed currently does not work because the group scheme has been
removed.

Change-Id: I775ee8d2268e44610fa04ca15a1f3ff92b18f574

4 years agoDeprecate support for Armv7
Paul Bauer [Fri, 27 Dec 2019 15:37:12 +0000 (16:37 +0100)]
Deprecate support for Armv7

Fixes #2990

Change-Id: Ia9dbfc9ea6cf23782e812ef2929e4851b264bc82

4 years agoAdd a note to the log file when -update gpu was set with DD
Artem Zhmurov [Fri, 20 Dec 2019 13:08:36 +0000 (14:08 +0100)]
Add a note to the log file when -update gpu was set with DD

GPU update with DD is not enabled with DD even if '-update gpu'
is requested. The only way to enable it is to set
GMX_FORCE_UPDATE_DEFAULT_GPU environment variable. This patch
adds a note to the output, expaining that. Also, extra warning
note is added when the environment variable is set.

Fixes #3259.

Change-Id: I480dd8e734ff60156e117cc80b1cd9af6a161791

4 years agoAdd copyright check and improve cache usage
Paul Bauer [Mon, 23 Dec 2019 09:19:16 +0000 (10:19 +0100)]
Add copyright check and improve cache usage

Changed the way jobs are using the runner cache, so that each subsequent
build can benefit from the cache.

Also removed caching from jobs that don't benefit from it.

Change-Id: Ic4505cc034ddf83dc2a7e8dc07ed1dfa9558633d

4 years agoMerge origin/release-2019 into release-2020
Paul Bauer [Fri, 27 Dec 2019 12:58:41 +0000 (13:58 +0100)]
Merge origin/release-2019 into release-2020

Resolved Conflicts:
cmake/FindHwloc.cmake
cmake/gmxVersionInfo.cmake
docs/CMakeLists.txt
src/gromacs/gmxana/anadih.cpp
src/gromacs/gmxana/gmx_angle.cpp
src/gromacs/mdlib/forcerec.cpp

Change-Id: Ie4408c932a712d4f9d1f42117a512e0474535df5

4 years agoClean bad auto-format in decidegpuusage doxygen comments
Artem Zhmurov [Fri, 27 Dec 2019 10:19:52 +0000 (11:19 +0100)]
Clean bad auto-format in decidegpuusage doxygen comments

Change-Id: Ia2ca1dcc138c920d54ce928889cfcad63fc3784b

4 years agoUpdate intersphinx configuration.
M. Eric Irrgang [Thu, 12 Dec 2019 13:08:28 +0000 (16:08 +0300)]
Update intersphinx configuration.

Disable intersphinx cache expiration and set a finite timeout to play
more nicely in non-networked environments.

Change-Id: I5802f7dbba43897e27a77366013e254f868357e7

4 years agoSet Sphinx default role.
M. Eric Irrgang [Thu, 12 Dec 2019 13:06:41 +0000 (16:06 +0300)]
Set Sphinx default role.

Set default_role config value to 'any' for better automatic handling of
interpreted text in the default role. Allows improved readability for
documentation that may not always be processed by Sphinx, such as
Python docstrings.

Change-Id: I5bf37111d6870117810ac308cfaa8c5f1ae9bb5c

4 years agoFix external web link.
M. Eric Irrgang [Thu, 26 Dec 2019 16:18:55 +0000 (19:18 +0300)]
Fix external web link.

Ineffective syntax was used to try to make a link from the text "Conda"
to the Conda website. Instead, make a properly defined link target and
use "Conda_" for hyperlinked text throughout the document.

Change-Id: Iee77f8b28c9ee2e621da1fb9c8e46832a95e5e5e

4 years agoClean up Sphinx interpreted text in the default role.
M. Eric Irrgang [Thu, 12 Dec 2019 12:58:40 +0000 (15:58 +0300)]
Clean up Sphinx interpreted text in the default role.

* Fix typos or syntax for several text literals that Sphinx tries to
  process as interpreted text (in the default role).
* Use Google docstring conventions to guide adjustment of gmxapi
  docstrings.

Change-Id: If6eeede8dcc782c04fc4363005c38c746a8664ea

4 years agoAdd files for Gitlab CI
Paul Bauer [Fri, 20 Dec 2019 14:00:02 +0000 (15:00 +0100)]
Add files for Gitlab CI

Change-Id: I2508b6ba4a551a0768b1d5dfd742d97ebec37c7c

4 years agoPrepare for GROMACS 2019.6
Paul Bauer [Mon, 16 Dec 2019 11:39:33 +0000 (12:39 +0100)]
Prepare for GROMACS 2019.6

Reset doi strings

Change-Id: I38fa39c52cde5d967525770ec2a6381b7fcee33a

4 years agoGROMACS version 2019.5
Paul Bauer [Mon, 16 Dec 2019 11:36:38 +0000 (12:36 +0100)]
GROMACS version 2019.5

Added doi strings
Updated regressiontest hash.

Change-Id: If6c34638caf40f562fd8a744af767be4941ff73b

4 years agoRevert "Fix that tests intended for multiple ranks run that way"
Paul Bauer [Sun, 22 Dec 2019 16:04:37 +0000 (17:04 +0100)]
Revert "Fix that tests intended for multiple ranks run that way"

This reverts commit 1ebc7b0bff4a32ce957fd79a1d1bd20b535ea518.

Reason for revert: The parallel running of tests doesn't work the way we want here and the effort for fixing things in a soon to be critical fixes only branch is not worth it in my opinion

Change-Id: I59fb6f9daf7019592de7e8db202ccd050c133610

4 years agoAdd user guide doc for GPU buffer ops and comms env variables
Alan Gray [Thu, 12 Dec 2019 11:06:36 +0000 (03:06 -0800)]
Add user guide doc for GPU buffer ops and comms env variables

Change-Id: Ib6701adbf6f4909a804394606a362fa209716497

4 years agoFix wrong header in release notes
Paul Bauer [Fri, 20 Dec 2019 13:28:10 +0000 (14:28 +0100)]
Fix wrong header in release notes

Fixes #3261

Change-Id: Icc31b7a273670e99c21c9bb60343e1ce5d532653

4 years agoRemove problematic output of gmx angle
Christian Blau [Mon, 25 Nov 2019 15:42:25 +0000 (16:42 +0100)]
Remove problematic output of gmx angle

It could happen that the calculation of the standard deviation
for angles caused a divide by zero error for empty populations.
Because this standard deviation of per frame averages over all
frames was anyhow meaningless, it has been removed.

Refs #3206

Change-Id: Icf541a8b3bef502da9a22b55a8e8154b2d4fc8f8

4 years agoGROMACS 2020 release candidate
Paul Bauer [Tue, 17 Dec 2019 14:21:38 +0000 (15:21 +0100)]
GROMACS 2020 release candidate

Adjusted regresstiontest hash

Change-Id: I37cec8154843b8f8a2a9136051b50bce7eba5888

4 years agoEnable buffer ops when GMX_GPU_DD_COMMS is set
Szilárd Páll [Thu, 19 Dec 2019 19:44:35 +0000 (20:44 +0100)]
Enable buffer ops when GMX_GPU_DD_COMMS is set

Buffer ops is always a hard dependency for DD with GPU direct comm, so
enable it instead of requiring an extra env var to be set on mdrun
invocation.

Change-Id: Iea354f8ce636a115e0ed866228746e91f34df228

4 years agoFix regressiontests failing with ctest
Paul Bauer [Thu, 19 Dec 2019 16:42:15 +0000 (17:42 +0100)]
Fix regressiontests failing with ctest

Setting the -ntomp variable and not -nt at the same time causes errors
when running the regressiontests through ctest.

This was introduced in I78925951dcb59a11af01bc64f0dea373fe172cbb while
updating things for Gitlab CI.

Fixes #3257

Change-Id: I19afd7817b5c637d6653fda8533f23720b45cc41

4 years agoRelease note for GPU direct communications
Alan Gray [Thu, 19 Dec 2019 13:32:53 +0000 (05:32 -0800)]
Release note for GPU direct communications

Change-Id: I4487f2ed6bc789e6cfb3e68d802ccedda0c51962

4 years agoFix PME tuning issue when PME-PP communications are active
Alan Gray [Thu, 19 Dec 2019 09:45:58 +0000 (01:45 -0800)]
Fix PME tuning issue when PME-PP communications are active

If PME-PP direct GPU communication is active, the CPU-GPU
asynchronicity in the codepath causes the timing load balance ratio
used to trigger PME tuning to be unreliable. This change
unconditionally starts PME tuning when the PME-PP communication
feature is active (unless PME tuning has been de-activated with
the -notunepme option).

Partially addresses #3208

Change-Id: Iea173d19062dbd11d57ca9ceb4e52b9f20d4ff15

4 years agoPP-PME load balancing improvements
Szilárd Páll [Fri, 29 Nov 2019 00:10:10 +0000 (01:10 +0100)]
PP-PME load balancing improvements

Add a minimum number of nstlist tuning intervals and minimum time delay
at the beginning of the run before the load balancing starts. This allow
hardware clocks to ramp up and avoids having early measurements
overestimate rendering subsequent ones with different grid setups only
faster due to hardware warmup.
Also use global variables to adjust the number of measurements to be
skipped after switching configs.

Refs  #3208
Fixes #2203

Change-Id: If835d2482e127caa51d50f45f25c19144d35efaa

4 years agoAdd issue tracking for deprecations.
M. Eric Irrgang [Thu, 19 Dec 2019 11:09:18 +0000 (14:09 +0300)]
Add issue tracking for deprecations.

Provide links in release notes to issue tracking for announced
deprecations.

Fixes #3251

Change-Id: I246651f8cb868eb1deecac86c2e7d6f0ec81b3f1

4 years agoFix mdrun appending invalidating energy files
Berk Hess [Wed, 18 Dec 2019 18:23:43 +0000 (19:23 +0100)]
Fix mdrun appending invalidating energy files

When appending at mdrun restarts, energy files would become
unreadable at the appending point.

Fixes #3250

Change-Id: I7683e1a954fb8865acb5e77aae028ae717ae0ab3

4 years agoFix conditional on assertion for combining GPU Update and GPU coordinate send
Alan Gray [Wed, 18 Dec 2019 15:41:45 +0000 (07:41 -0800)]
Fix conditional on assertion for combining GPU Update and GPU coordinate send

Fixes a problem introduced in 9a3c2ce312c1e04634d636655388a8aaad53c8d1
which unintentionally blocks any use of GPU update with PME-PP
Communication because !stepWork.doNeighborSearch is missing from the
condition on the assertion.

Related to #3159 and #3160 which, when implemented, will remove the
restriction on coordinate send originating from the GPU (on non search steps).

Change-Id: Ie9b1102386b2c1bc927c09e4d8ead2bd2321320d

4 years agoAllow x D2H to overlap with GPU force compute
Szilárd Páll [Tue, 10 Dec 2019 11:24:32 +0000 (12:24 +0100)]
Allow x D2H to overlap with GPU force compute

With GPU update coordinates are transferred back to the CPU every step
if there are forces to compute on the CPU. Originally this was
implemented with a back-to-back transfer launch and wait at the
beginning of do_force().
This change moves the CPU wait for the completion of the coordinate
transfer closer to the consumer tasks in order to avoid blocking GPU
force tasks' launch and allowing compute and transfer to overlap.

Fixes #3221

Change-Id: Ia6641147bbec1186b54c1445d36dc31000eae9c4

4 years agoUpdate reference to uncrustify and clang-format.
M. Eric Irrgang [Fri, 13 Dec 2019 16:41:48 +0000 (19:41 +0300)]
Update reference to uncrustify and clang-format.

Correct some copy-paste errors. Consolidate some references to
formatting tools and continue to transition away from uncrustify.

uncrustify references and infrastructure remain, along with Jenkins
documentation. These can be removed after transitioning from Jenkins to
GitLab Runner, pending clarification on how to distinguish between
documentation for all supported versions versus the current version.

There are also various references and workarounds related to uncrustify
in the source code. These can be updated in separate changes against the
post-release-2020 master branch.

Refs #3248

Change-Id: I3331f73921812a918d32dd6a045eabc4da4a6a6d

4 years agoChange grompp decoupling SD warning to note
Berk Hess [Fri, 6 Dec 2019 13:39:28 +0000 (14:39 +0100)]
Change grompp decoupling SD warning to note

The warning that grompp issues when decoupling a molecule
without the use of the SD integrator has been changed to a note,
since there are valid use cases for using normal MD when not
running in the completely decoupled state.

Note that checking for actual decoupled VdW states requires a lot of
code and would still not be 100% correct.

Fixes #2767

Change-Id: I55c84afcbcb7b19bdb8a7a8bc586a65c50f8d0c1

4 years agoAdd ability to set OMP and tMPI thread for ctest
Paul Bauer [Tue, 17 Dec 2019 17:22:16 +0000 (18:22 +0100)]
Add ability to set OMP and tMPI thread for ctest

For Gitlab CI we need at some points to be able to set the threads used
for running the regressiontests through ctest.

(cherry picked from commit 4e6b4134e62f17d64520a46e0aad7cbd60f778f3)

Change-Id: I78925951dcb59a11af01bc64f0dea373fe172cbb

4 years agoIgnore build host for CI builds
Paul Bauer [Fri, 13 Dec 2019 15:51:44 +0000 (16:51 +0100)]
Ignore build host for CI builds

When moving the CMake build directory between hosts a warning was
generated. This does not integrate well with containerized CI.

(cherry picked from commit 33079aa495e7e3b7da78bd58de9c6f30edff51d4)

Change-Id: If0a775ab86d25a7d5646e824243892320d4ddbe3

4 years agoAdd note for COM removal with position restraints
Berk Hess [Mon, 16 Dec 2019 09:50:06 +0000 (10:50 +0100)]
Add note for COM removal with position restraints

Center of mass motion removal in combination with position restraints
will often cause artifacts. We should (automatically) disable this,
but this will disrupt workflows, so for now grompp will issue a note.

Refs #3244

Change-Id: If983e918d26f0af2fab96d44d0f2b1fc3cedb901

4 years agoClean-up buffer-ops CUDA kernels
Artem Zhmurov [Mon, 16 Dec 2019 21:17:47 +0000 (22:17 +0100)]
Clean-up buffer-ops CUDA kernels

1. Adjust naming according to conventions.
2. Reduce number of type casting.
3. Use native CUDA types.

Fixes #3237.

Change-Id: I79da0dd1edf6c302661ba0954e4191fde1ebf2e8

4 years agoTest parallel mpi only with openmp
Paul Bauer [Tue, 10 Dec 2019 10:11:26 +0000 (11:11 +0100)]
Test parallel mpi only with openmp

Can time out in other conditions
Found while working on Gitlab CI

Refs #3232

Change-Id: I7cf62ed913d2bc8c88317a674b0594dbe54ba394