Artem Zhmurov [Mon, 9 Dec 2019 18:20:03 +0000 (19:20 +0100)]
Set GPU update to false in case of a rerun
Rerun does not require the numerical integration of equation of
motion, hence the useGpuUpdate should be false.
Fixes #3231.
Change-Id: I9027641e9dc32fb464ebbb6148c11c530c0eb2cd
M. Eric Irrgang [Fri, 6 Dec 2019 12:29:57 +0000 (15:29 +0300)]
Finalize gmxapi 0.1
Set 0.1 release metadata for Python package and C++ library.
Note that 0.1 is API identical to 0.0.8, but we are
taking the next step to the targeted semantic versioning,
and patch releases should no longer affect the APIs.
However, we are not yet at a point where we can have
clear stability guarantees between minor versions.
Change-Id: I4f4a6ba84353730e2962b730cd1e656bae4e377a
Mark Abraham [Fri, 6 Dec 2019 09:45:21 +0000 (10:45 +0100)]
Avoid 386 O3 codegen bug
Refs #3205
Change-Id: I2aa5018bde089b11497892dd68a7f9715e69e20e
M. Eric Irrgang [Thu, 5 Dec 2019 10:48:18 +0000 (13:48 +0300)]
Add notes on MPI with gmxapi Python package.
Change-Id: I7ecd33fcea482b8f300873fc7fdcea2c3958215e
Artem Zhmurov [Fri, 6 Dec 2019 09:35:17 +0000 (10:35 +0100)]
Pass array ref instead of casting to basic array in PME redistribute
Change-Id: I98b3c211b2669266f8bc6b37580b8f48087e3645
Mark Abraham [Wed, 4 Dec 2019 16:07:59 +0000 (17:07 +0100)]
Provide more feedback when listed forces tests fail
Refs #3205
Change-Id: Ic012aeaf8b35af88b78e109acabb6048d593cab3
M. Eric Irrgang [Thu, 5 Dec 2019 10:46:50 +0000 (13:46 +0300)]
gmxapi Python package usage prose.
* Provide a walk through of basic gmxapi Python usage.
* Update one of the helper functions in test_subgraph.py to
make sure that a documented example is tested.
Change-Id: I2ad3368fe8a39307bcd7e676dc36627e30ab7ac1
M. Eric Irrgang [Thu, 5 Dec 2019 14:47:07 +0000 (17:47 +0300)]
Improve pytest fixtures for directory management.
* Add a pytest command line option to control whether to remove
temporary directories always, never, or conditionally upon test success.
* Encapsulate context managers and test fixtures for tempdir removal,
temporary changes of working directory, and access to the new pytest
command line argument.
* Use a context manager to use the temporary testing directories
for working directory, as well. Works around potential issues
with GROMACS creating temporary files in different directories
(or filesystems) from where they are relevant.
This change makes identical changes to 3 different conftest.py files.
Consolidation into the gmxapi.testsupport module is deferred to a
separate change.
Refs #3227
Change-Id: I703d1e3806f7b4d8f2ae3b80c39ec64acd9cf3b4
Christian Blau [Wed, 4 Dec 2019 15:52:01 +0000 (16:52 +0100)]
Relax cross-correlation test precision
Relase the floating point precision in cross-correlation evaluations on
large data arrays further. i386 fails here with debian experimental build.
Refs #3205
Change-Id: I86c9ad1804da5be98671ac14a5bc37ea5636aad0
Mark Abraham [Mon, 5 Nov 2018 18:07:20 +0000 (19:07 +0100)]
Added OpenCL build to release matrix
Added missing information for one build.
Change-Id: I30da8ce4e19e104182ee082cc18a83e318069b3c
Mark Abraham [Wed, 4 Dec 2019 15:25:35 +0000 (16:25 +0100)]
Removed unnecessary link_directories command for gtest
This warns at link time on MacOS Catalina with macports
clang-9 and cmake 3.15.5
Change-Id: If493f72133c0388e6119ea7a30aa1dc5c5830c7a
Christian Blau [Wed, 4 Dec 2019 12:08:10 +0000 (13:08 +0100)]
Remove cutoff-scheme group from default mdout.mdp output
The .mdp default output file had a reference to the group scheme in it,
which might prove confusing to users that assume that this is still
available.
Change-Id: I434f15e46dfc0a8ebffe8d826855dc8e67168fba
Paul Bauer [Tue, 26 Nov 2019 09:37:15 +0000 (10:37 +0100)]
Third beta release of GROMACS 2020
Updated regressiontest hash
Change-Id: I96be9b7b9f3f94f6eddf1fd4603cc829fd3e1848
Paul Bauer [Tue, 3 Dec 2019 10:21:47 +0000 (11:21 +0100)]
Revert "Enable GPU update with DD when GPU comm features are enabled"
This reverts commit
b88f3eadf90261555508f6a4df64ce184141a66a.
Reason for revert: Mark found the code segfaulting under some conditions with domain decomposition and update enabled, so this is not ready to be used yet.
Refs #3226
Change-Id: I45cf9564a87595d445057da071a8fca5c60f9d9a
Paul Bauer [Tue, 3 Dec 2019 11:25:54 +0000 (12:25 +0100)]
Fix nightly build by correctly defining several
variables as bool instead of int.
Change-Id: Ia22fe3acdc55131ea40c80b104293273cafb1017
Alan Gray [Tue, 5 Nov 2019 12:52:21 +0000 (04:52 -0800)]
Enable GPU update with DD when GPU comm features are enabled
Changes assertions to allow GPU update to run with domain
decomposition, only when GPU PME-PP communication and GPU halo
exchange features are enabled through their respective environment
variables.
Added test coverage to the gpuupdate matrix
Change-Id: Ie05dac64eada8f704c3a33d0eb6e5bc74dfcc61e
Paul Bauer [Fri, 29 Nov 2019 15:00:52 +0000 (16:00 +0100)]
Set update to run on GPU by default if possible
Change-Id: I1a2052968c8d8dd8020744bf15f974bc0d92a6ef
Jonathan Vincent [Wed, 6 Nov 2019 14:55:10 +0000 (06:55 -0800)]
Heuristics for switching between CUDA spread/gather kernels
The various CUDA spread/gather kernels perform better in different circumstances,
so heuristics are used to control which one is selected.
Refs #3189
Change-Id: I32c0726021a48dc8721e337f8f41e9c9d334e05c
Berk Hess [Mon, 2 Dec 2019 13:15:08 +0000 (14:15 +0100)]
Add check for coupled constraints for CUDA update
The CUDA LINCS code has a limit on the number of coupled constraints.
This is now checked during in the GPU update decision function.
Change-Id: I5eee96b82f3f5196b64a5e815eae78d4ed367a80
Berk Hess [Mon, 2 Dec 2019 10:43:16 +0000 (11:43 +0100)]
Extract LINCS CUDA helper functions
Change-Id: I00fb311053aa9c13036b401107399409f9a01599
Christian Blau [Mon, 2 Dec 2019 13:52:27 +0000 (14:52 +0100)]
Relax test tolerance for cross correlation measure for densities
Some compilers do not perform the optimisations that are necessary to
reach default real tolerance when calculating the cross correlation of
larger three dimensional densities (100x100x100 voxels)
This patch loosens the requirement on the precision of cross correlation
evaluations.
refs #3205
Change-Id: Iad1bb1b17bb6935b2ce2537bcbb6c3902172a6bc
Paul Bauer [Fri, 29 Nov 2019 15:10:05 +0000 (16:10 +0100)]
Use DOI for citing in reference manual section
Change-Id: I84ee722345669afbca972697ebcc76d874af1b46
Mark Abraham [Thu, 28 Nov 2019 16:49:26 +0000 (17:49 +0100)]
Further improve taskassignment exception handling
It was still posssible that the exit() from one thread-MPI rank would
cut off another rank while the latter's error output before it
finished being written to the terminal stream.
This solution is still deficient in some aspects, but it will
always work on single-node testing (ie. including Jenkins) and
often work usefully in multi-node testing.
Change-Id: Ib41e012b9f56591c80046b44891dd77af5a2f938
Berk Hess [Fri, 29 Nov 2019 16:22:15 +0000 (17:22 +0100)]
Merge "Merge branch release-2019 into release-2020" into release-2020
Paul Bauer [Fri, 29 Nov 2019 13:21:44 +0000 (14:21 +0100)]
Fix unaligned access with AVX512
Found and debugged by Gilles Gouaillardet
Change-Id: I9203593c94eb745020274b126601d30e49d7aac2
Paul Bauer [Fri, 29 Nov 2019 10:32:17 +0000 (11:32 +0100)]
Fix build error without thread or regular mpi
Some more unused variable warnings that I haven't fixed yet.
Fixes #3218
Change-Id: Id47718bb0af97d3a494afa133af8b54ba71b9d5d
Artem Zhmurov [Thu, 28 Nov 2019 18:59:36 +0000 (19:59 +0100)]
Print OpenCL error info in case of failed assertion in device buffer management
Having error code availible is helpful for debugging.
Change-Id: I71c808c9171eae3f87b72253f3e81f0e2e2c22a2
Mark Abraham [Fri, 29 Nov 2019 12:52:13 +0000 (13:52 +0100)]
Merge branch release-2019 into release-2020
Change-Id: I138d910b0d5cb8555460f87345c4e312e528a3ce
Artem Zhmurov [Thu, 28 Nov 2019 15:09:48 +0000 (16:09 +0100)]
Make Leap-Frog CUDA kernel selection safer
This is a small improvment on a recent bug fix, which adds:
1. An implicit boolean on whether the kernel with temperature
coupling velocity scaling should be selected.
2. Adds an assertion on the correctness of an input.
Original bug fix:
b362a880f75d93e9252affdad12ed5448fbac517
Change-Id: Idd981337f2f53f4d3a803ce50162b2f9c753b860
Artem Zhmurov [Thu, 28 Nov 2019 09:59:31 +0000 (10:59 +0100)]
Rename some variables in GPU Update
The temperature and pressure coupling booleans in GPU version of
update were renamed to better represent their meaning. Minor
refactoring in the UpdateConstraintsCUDA CPU-stub class.
This change is just a refactoring, mostly renaming.
Change-Id: I039722a5ef827a20264b6d4ac6c6436227094e09
Paul Bauer [Wed, 27 Nov 2019 15:35:16 +0000 (16:35 +0100)]
Check for using correct hwloc headers and runtime
Also add assertion in the code to prevent errors from linking
against the wrong library while running.
Fixes #3200
Change-Id: Ib2f2861702e111f67c38b0c9d65ccbe4c81a0ccd
Artem Zhmurov [Thu, 28 Nov 2019 16:41:43 +0000 (17:41 +0100)]
Clear device force buffer if it was reallocated
The force buffer on the device is assumed to be clear at the start of
the step. This was not ensured if the buffer was realocated after e.g.
domain decomposition.
Change-Id: I4677f71edc9479d972a6d9471b8cbe2c377f8827
Berk Hess [Thu, 28 Nov 2019 15:21:53 +0000 (16:21 +0100)]
Update documenation for NPT GPU update
Change-Id: Iaa0ee0555621955c6eb7276d1b9f097420c4e70a
Artem Zhmurov [Tue, 12 Nov 2019 10:54:35 +0000 (11:54 +0100)]
Fix pressure coupling with GPU update
This fixes the pressure coupling Parrinello-Rahman and
Berendsen schemes when Update is offloaded to the GPU.
The coordinate scaling is performed on GPU. The PBC
data is also copied to device when periodic box is
updated by the pressure coupling.
Fixes #3182.
Change-Id: I57226c9f0fa249cb018d38b653a6ecb3ffd9c7c2
Paul Bauer [Thu, 28 Nov 2019 12:28:57 +0000 (13:28 +0100)]
Fix postsubmit
Change-Id: I47496ad6e82f9b67060979f916d5d5510fdba182
Berk Hess [Thu, 28 Nov 2019 10:58:48 +0000 (11:58 +0100)]
Remove assertion failure in AWH without initial stage
When not using the initial stage in AWH, we should not check
for coverage and histogram anomalies at step 0.
Fixes #3217
Change-Id: Iee19c4740c02ce56c0b43ad89efb6e37f4ad1a0d
Berk Hess [Thu, 28 Nov 2019 09:23:45 +0000 (10:23 +0100)]
Fix bug with GPU pressure scaling at non T-scaling steps
Only affected Parrinello-Rahman coupling, which is not enabled yet.
Change-Id: Ie081ffe2a925de92361c43b1f5de8e1fe324a486
Christian Blau [Wed, 27 Nov 2019 11:10:03 +0000 (12:10 +0100)]
Fix check-pointing for density guided simulations
Previously, checkpointing for density-guided simulations did not take
into account that the checkpointing occurs in the middle of the md-loop.
Now, the state is stored before the force-calculations, so that
simulations are restarted correctly.
refs #2282
fixes #3215
Change-Id: Ide4ebf94f2801acbe476a5cd348af66d0a6f28ac
Artem Zhmurov [Wed, 27 Nov 2019 22:23:33 +0000 (23:23 +0100)]
Combine two booleans in md loop
Two booleans that were supposed to have identical meaning have being
created in the md loop. This patch conbines them into one. Note that
the scope of the boolean that is responsible for the D2H coordinates
copy have expanded, which represents correct behavior.
Change-Id: I421b18ee81f4cf9cce19cdd60023cb097d85a5d7
Mark Abraham [Wed, 27 Nov 2019 08:56:37 +0000 (09:56 +0100)]
Disable GPU PME-PP communication with mdrun -pmefft cpu
The MdrunMpiTest with two ranks defaults to using a separate PME rank,
and that attempts to run all flavors of -pmefft. However only -pmefft
gpu is targeted for any of the new GPU development, so the development
feature flags need to account for that.
SimulationWorkload is also improved to be aware of this fact.
Change-Id: I57c8e8ce81fdb7aaf65de89feebb369d3f2f10eb
Artem Zhmurov [Tue, 12 Nov 2019 09:55:02 +0000 (10:55 +0100)]
Add method for coordinates scaling into GPU update-constrain class
The coordinates scaling is needed on the pressure coupling step in
case the box size has changed.
Change-Id: I0bf7c7a2f77c1bd42dd0713f689096eaca409f88
M. Eric Irrgang [Wed, 6 Nov 2019 15:07:56 +0000 (18:07 +0300)]
Add gmxapi_extension tests to 'tests' target.
Improve GMX_PYTHON_PACKAGE convenience targets. When GMX_PYTHON_PACKAGE
is ON, the subprojects in the python_packaging subdirectory are built.
When testing is enabled, the sample_restraint C++ unit tests were
transitively included in the 'check' target, but no mechanism was in
place to ensure they were built before the CTests and google tests
were run. This change adds the test binaries as dependencies of the
'tests' target so that the test binaries are built through normal
machinery when GROMACS is built with testing enabled and
GMX_PYTHON_PACKAGE=ON.
Change-Id: I751655dc6b6d4d58b5bbb9f5f522e26382b4f0a2
Alan Gray [Tue, 22 Oct 2019 14:23:11 +0000 (07:23 -0700)]
Event-based Dependency for GPU Force Halo Exchange
Introduces new event recorded when exchanged forces are ready on GPU,
and passes this into force buffer ops using dependencyList. Removes previous
mechanism of forcing local stream to wait on non-local stream.
Addresses part of #3093
Refs #3194
Change-Id: I768898839e5c6a653894d5eb80354f0e423e06ed
Mark Abraham [Mon, 25 Nov 2019 12:10:50 +0000 (13:10 +0100)]
Improve handling of task-assignment exceptions
Resolves several current TODOs to improve the reporting of error
messages derived from exceptions. This improves the robustness of the
regressiontests logic that depends on parsing the error message to
understand whether and how to retry running mdrun.
Change-Id: I8c9eac95a2ef4861e90350e77fb9beafb08e9d2e
Mark Abraham [Tue, 26 Nov 2019 09:54:14 +0000 (10:54 +0100)]
Relax tolerance for bd tests
The implementation is somehow not very reproducible.
Refs #3205
Change-Id: Ibf9de00d6e67b8e2237cc8726f300b2bf8ad2327
Alan Gray [Tue, 26 Nov 2019 10:12:02 +0000 (02:12 -0800)]
Bug fix for nonlocal D2H coordinate transfer synchronization
Fixes bug introduced in I2e2ba1b6436f087d1f2fef4ff876445814a724e7,
which replaced the NB-module D2H nonlocal coordinate copy launch with
a new State Propagator module equivalent, but did not change the
corresponding event wait call, such that the dependency was not
satisfied. This change replaces the NB event wait with the correct
State Propagator event wait.
Change-Id: I7c812974c145d315fa6516b2bbea39164439728e
Paul Bauer [Tue, 26 Nov 2019 10:29:04 +0000 (11:29 +0100)]
Fix unused variable warning in ewald code
Fixes #3193
Change-Id: Id3f8422ec95e6864553a6e9f03a144fbe4ed8674
Berk Hess [Mon, 25 Nov 2019 14:43:05 +0000 (15:43 +0100)]
Fix issues with AWH with periodic pulling
Removed fatal error with AWH with periodic pull-geometry 'direction'
when the distance was within 2% of half the box size.
Changed an assertion failure when the AWH interval was larger than
the box size to a fatal error.
Clarified the documentation for pull geometry 'direction-periodic'.
Refs #2946
Change-Id: I447a9a490a5883139afc268fd367b8b249591fbc
Alan Gray [Sat, 2 Nov 2019 19:24:43 +0000 (12:24 -0700)]
Fix race condition in GPU X halo exchange with GPU update
When the GPU Update featured is enabled on multi-GPU with the GPU halo
exchange feature, it was possible that the GPU receiving the halo data
would still be working on the previous timestep and writing to the
same coordinate buffer in the GPU update, causing a race
condition. This change replaces the pre-existing synchronization
mechanism of a MPI Send/Recv of a boolean flag with the same but
exchanging the events that are recorded when the coordinates are ready
on the device. The remote event is then enqueued to the stream that
the GPU uses for pushing the data, satisfying the dependency of the
push on the remote update being completed on the GPU.
Change-Id: Ie16a93dcc3064d73da1e560d82b4e76870d03e52
Christian Blau [Mon, 25 Nov 2019 15:18:40 +0000 (16:18 +0100)]
Fix duplicate CONNECT records in pdb files
When adding connect records in pdb files, it was not checked if records
already existed and were thus duplicated in output. This patch fixes
this behavior.
Fix originally provided by Boris Timofeev.
refs #3206
Change-Id: I5850f4b6279b37df07282acc4416f433099d90c8
Artem Zhmurov [Tue, 12 Nov 2019 17:33:37 +0000 (18:33 +0100)]
Use same matrix for Parrinello-Rahman and Berendsen coordinates scaling
Currently, Parrinello-Rahman uses the matrix created in the md.cpp,
whereas it is created when needed internally for the Berendsen.
This commit renames the matrix and make use of it in both barostats.
Change-Id: I66e010a1ed7efbc93c8a2240ccb7b9e174fd7e45
(cherry picked from commit
abab855fdceee437c33010ebbe544afe1f88db87)
Christian Blau [Fri, 22 Nov 2019 16:51:23 +0000 (17:51 +0100)]
Read mrc density map format with all endianesses.
Swaps the endianess of reading mrc density maps if header is not sane.
refs: #2282
Change-Id: I417e402b2ab801c22d9963fabb0e60b186288651
Christian Blau [Thu, 21 Nov 2019 15:48:07 +0000 (16:48 +0100)]
Check mrc header for sanity
Add functionality to check mrc density map headers for sanity.
Required for endianess correction, because the endianess stamp is not
guaranteed to be right for most .mrc maps.
Change-Id: I8956bcbc4b9fd7b3b6346c3b4cdd0022c9e3332a
Artem Zhmurov [Thu, 21 Nov 2019 16:33:57 +0000 (17:33 +0100)]
Fix index mapping issue with LINCS on GPU
In some cases (e.g. when DD is used), coupled constraints blocks
can have constraint indices that are interleaved with other blocks.
This was not taken into account when setting up the LINCS GPU data
structures. This patch fixes that by ensuring that all coupled
constraints are added to the mapping array one after the other.
Add note in decideWhetherToUseGpuForUpdate() that we need to add
a check for this when update auto will choose gpu in some cases.
Also renamed spaceNeeded by numCoupledConstraints to avoid confusion.
Fixes #3211.
Change-Id: Ib402c5cc9fc20116496034cdc11be921586bbd15
Christian Blau [Tue, 29 Oct 2019 14:42:46 +0000 (15:42 +0100)]
InMemorySerializer with endianess swap.
Adds an InMemorySerializer that swaps endianess. Required for reading
data that is not handled with XDR serializers and was written with
different endianess, e.g., mrc files for density guided simulations.
refs #2282
Change-Id: Ice96fe8684bb0b920c22dc7d3c2b2087260eb9ad
Artem Zhmurov [Sat, 23 Nov 2019 17:34:10 +0000 (18:34 +0100)]
New cool quote
Change-Id: I8998f56f73a595df0e1b547d307eef65afe7944d
Mark Abraham [Thu, 21 Nov 2019 15:03:21 +0000 (16:03 +0100)]
New cool quote
Change-Id: I96e52f16aeaf2e41db3a68b889dcd0afae966828
Vedran Miletić [Fri, 26 Jul 2019 14:48:58 +0000 (16:48 +0200)]
Fix building on Solaris with GCC
GROMACS now compiles on Solaris x86, specifically illumos distribution
openindiana. GCC complained about a missing sqrt() variant which was
addressed with static_cast and linker complained about missing
libsocket which was addressed with SunOS-specific entry in
target_link_libraries.
Refs #3050
Change-Id: Ic14a9327fa353270ef0e787b4d2357e86e71da53
Artem Zhmurov [Wed, 30 Oct 2019 10:15:04 +0000 (11:15 +0100)]
Add D2H copies for the checkpointing
If the update is offloaded, the current coordinates and velocities
are stored on the device and have to be copied for the checkpointing.
Change-Id: I391bb83e1c70a17c1679f479234a157ce606a908
Artem Zhmurov [Tue, 29 Oct 2019 20:18:08 +0000 (21:18 +0100)]
Move the copy of the velocities for the output closer to the output
The D2H copy of velocities is split into two calls, one of which is
moved closer to the output, where it is consumed. This is in preparation
to creation a unified method to copy all data for the outuput when
it is needed.
Change-Id: I4b81aa95e2c0763bb3ebb4a7d8b18611765c54de
Berk Hess [Wed, 20 Nov 2019 16:52:18 +0000 (17:52 +0100)]
Quiet pdb2gmx and use gmx_fatal
Removed stderr prints for every atom and residue type read.
Changed warning for incorrect atomtype line to a fatal error.
Change-Id: I657aedda04dc6b5a97447a829a1438941cd124db
Paul Bauer [Wed, 20 Nov 2019 17:34:52 +0000 (18:34 +0100)]
Merge 'origin/release-2019' into release-2020
Resolved Conflicts:
docs/release-notes/2019/2019.5.rst
src/gromacs/domdec/domdec_topology.cpp
src/gromacs/fileio/groio.cpp
Change-Id: Icd9d3bfee7a2ba524057791f4ee0fcf8db13797f
Alan Gray [Tue, 19 Nov 2019 15:19:42 +0000 (07:19 -0800)]
Move pmePpCommGpu reset outside do_md
Some tests (at least the transformAtoB freeenergy test) were not
previously executing this code block to explicitly destroy the PME-PP
GPU object, causing a crash when the smart pointer is automatically
destroyed later after the GPU context is no longer available.
Change-Id: I107832900d2230a926e00744f913c76e998eacf6
M. Eric Irrgang [Fri, 8 Nov 2019 20:39:16 +0000 (23:39 +0300)]
Remove stub content from gmxapi docs.
This change removes or deactivates incomplete documentation in advance
of the GROMACS 2020 release candidate.
Change-Id: Ibc0e9714b95e225da4dac0632b87b4fe048c7432
Mark Abraham [Wed, 20 Nov 2019 12:21:41 +0000 (13:21 +0100)]
Quiet uninitialized variable warning with clang 9
This warning about thread being uninitialized is a false positive, but
the fix implements a good practice anyway.
Change-Id: I7045bb9a69155b2546c5ed2c3d352f3d1a7b8e53
Mark Abraham [Sat, 16 Nov 2019 19:08:12 +0000 (20:08 +0100)]
Updated release notes for CODATA update
Was missing in
536052b4c4
Change-Id: I22fbbb3a8e11ab423b0e7e77e61b2098f4e5e6c6
Berk Hess [Mon, 18 Nov 2019 15:39:01 +0000 (16:39 +0100)]
Fix bonded atom communication performance
The filtering of atoms to communicate for bonded interactions that
are beyond the non-bonded cut-off was effectively missing, because
the home atom indices were not set. This lead to many more atoms
being communicated.
Change-Id: I4bd5b9b561a3077e055186f312939221dba6cefa
Artem Zhmurov [Tue, 19 Nov 2019 10:14:05 +0000 (11:14 +0100)]
Fix icc-19 warning in nightly matrix
The nessesity of having the default return statement after the
if-else constructions depended on the #ifdef statement. As the result,
the compiler may or may not require having the default return depending
on the definition of the GMX_LIB_MPI macros. This change moves one of
the conditional return statements outside the #ifdef construction, making
the default return statement irrelevant unconditionally of the macros
definition.
Change-Id: I1da1fe841b799f716db74fc67a8fb633af8f95d0
Berk Hess [Mon, 18 Nov 2019 15:33:29 +0000 (16:33 +0100)]
Fix intermolecular interactions with DD
The links for atoms with intermolecular interactions would use
incorrect atom indices. This meant that mdrun could exit with
a missing interactions errors when using domain decompostion
with intermolecular interactions at distance larger than the cutoff.
Fixes #3204
Change-Id: I0c78810204f116f028b18c83bc6b51859ed7245a
Szilárd Páll [Mon, 8 Oct 2018 15:50:05 +0000 (17:50 +0200)]
Trigger ocl_nbnxm_kernels target with clang-tidy
Target only compiles object files for compiler warnings checks.
Also renamed target.
Refs #2661
Change-Id: Iffe5a2fa7d34d6bc4ff2081c3210191141ddcaf7
M. Eric Irrgang [Fri, 8 Nov 2019 20:26:38 +0000 (23:26 +0300)]
Remove extraneous file.
This change removes an irrelevant .gitattributes file that made its way in
to docs/gmxapi.
Change-Id: I444a12f4adaa74c19ec910707f8a04982b1d8f21
M. Eric Irrgang [Fri, 8 Nov 2019 20:05:02 +0000 (23:05 +0300)]
Add transitional links for online gmxapi Python package reference.
* Update and clarify pythonreference stub for when Python package was
not available.
* Note related Redmine reference.
* Remove `python-procedural` label, which had lost meaning and which
could cause awkward repositioning for the pythonreference stub with
no section heading to follow the label.
Refs #2985
Change-Id: If81ba6500ce078fe4fc94bf37285324ec5702b1b
M. Eric Irrgang [Fri, 8 Nov 2019 18:59:18 +0000 (21:59 +0300)]
Improve gmxapi Dockerfiles.
* Update gromacs-dependencies to use ubuntu:bionic and standard cmake package.
* Use more default CMake config in gromacs image.
* Reorganize ci.dockerfile for more effective Docker build caching.
* Reorganize docs.dockerfile for more effective Docker build caching.
Change-Id: Ia2858f234d3a4a104fc1c79ce8fb28106c196bd4
Szilárd Páll [Wed, 11 Sep 2019 22:41:01 +0000 (00:41 +0200)]
Fix clang-tidy 8 warnings in OpenCL nbnxm kernels
Since the bump from v7 to 8 new warnings need to be dealt with.
Change-Id: I392308a01087797dcbf3522df53c7fbd7f1fa31a
Mark Abraham [Sat, 16 Nov 2019 22:42:26 +0000 (23:42 +0100)]
Relaxed listed forces test tolerances
Different compilers on different hardware generate different FP
instructions, which we need to tolerate.
Refs #3205
Change-Id: I965cecd82593dd7a0dd9e34d69937d06cd60735c
Mark Abraham [Sat, 16 Nov 2019 20:04:30 +0000 (21:04 +0100)]
Stop testing that hwloc cache-size detection works properly
This was never a unit test of whether GROMACS HardwareTopology can
detect cache line size, because it requires both that hwloc works
correctly on the execution hardware, and that GROMACS code uses its
results correctly. So we should stop running such tests.
Refs #3205
Change-Id: I4d13e39620335b235f9969e5e09299fb9b41b1a0
Alan Gray [Fri, 1 Nov 2019 14:45:25 +0000 (07:45 -0700)]
Replace blocking with non-blocking receive in GPU PME coordinate receiver
Replaces MPI_Recv with MPI_Irecv in original coordinate receiver
method, and adds associated method containing MPI_Waitall which is
called to wait on data completion across all PP ranks.
Implements part of #3158
Change-Id: Ifd152973e4d9a4da53c0541e591b41d29be173bb
Paul Bauer [Mon, 11 Nov 2019 13:01:38 +0000 (14:01 +0100)]
Fix formatting error
Change-Id: I60d50edfc050eb4b7015d4bf6dab3c8c279473e3
Paul Bauer [Tue, 5 Nov 2019 15:03:08 +0000 (16:03 +0100)]
Add build to run clang-format update on Jenkins
Change-Id: Ie0a9cf442b172e9e96d786d01dd381e557e43e73
Erik Lindahl [Tue, 5 Nov 2019 21:18:58 +0000 (22:18 +0100)]
Updated physical constants to CODATA 2018
Only minor changes, but we should stay current.
Updated reference data and reset some test tolerances.
Change-Id: Ia2d1007f6a62d8483c2b9f11938d8f2763584de5
Paul Bauer [Mon, 11 Nov 2019 12:08:52 +0000 (13:08 +0100)]
Indicate which versions are no longer supported
Changed top level page for release notes to show which versions are no
longer maintained.
Change-Id: I607576051323fe1e20a27a52cdc7ad84926a6b1c
M. Eric Irrgang [Fri, 1 Nov 2019 10:16:30 +0000 (13:16 +0300)]
Achieve gmxapi fr15.
gmxapi.mdrun was missing the described 'parameters' output,
but fr15 was essentially met by the addition of modify_input.
Change-Id: I9e698a046a2717e69af3076c80fabc8ccb85ee12
M. Eric Irrgang [Tue, 5 Nov 2019 15:14:45 +0000 (18:14 +0300)]
Updates to gmxapi FR15 acceptance test.
* Let the test be runnable both with and without MPI.
* Improve the logging configuration.
* Update the test fixtures.
* Change the tested parameter edit to one that can be safely modified
by directly editing the inputrec.
Change-Id: I7847bc47e3e244e82f6fd0d5471a097cdeecfbd5
M. Eric Irrgang [Fri, 1 Nov 2019 10:16:30 +0000 (13:16 +0300)]
Update notes and tests regarding gmxapi acceptance tests.
* Add notes on gmxapi functional requirements to gmxapi.version module.
* Update and acknowledge FR7 passing.
* Note a missing dependency in FR8.
* Clarify FR2 is superseded by FR3.
Change-Id: Ia633c02bd09e729aa68bf4a3d28102e991aeb7e9
Alan Gray [Thu, 7 Nov 2019 16:15:40 +0000 (08:15 -0800)]
Modernize naming in GPU buffer ops kernels
Adresses #3022
Change-Id: I367b62e0f3312270c1d543675fab81233b4d1b86
ejjordan [Thu, 7 Nov 2019 15:10:34 +0000 (16:10 +0100)]
Fix mdp parameter handling in mdrun tests
Some mdp options that we intended to be set were in fact not being set.
In the two cases where mdp options were not in fact being set the default
option was desired, so this patch does not change any behavior. A note is
added to the mdp options handling code. A better long term solution might
look like popping options off the parameter map and throw if there are
options left after all defaults have been printed. This however may not
be worth the effort as the mdp options handling could change significantly
in the short term.
Change-Id: Ied6580683c91938e577861be43841e7dc3dcd8cd
ejjordan [Fri, 8 Nov 2019 19:49:25 +0000 (20:49 +0100)]
Fix 2 broken NOLINT's from clang-format change
Also made the clang format help text more useful and corrected an
incorrect documentation suggestion.
Change-Id: Ibd7706b3ea1a6adc2ab459fac818e093b64dac10
M. Eric Irrgang [Fri, 8 Nov 2019 14:55:54 +0000 (17:55 +0300)]
Fix bug introduced by clang-format reformat.
In the post-beta2 application of clang-format, an extra closing brace
was inserted at the end of an assignment of a multi-line lambda. The
extra closing brace prematurely ended an `if` block, causing compiler
errors through the rest of the file. Simply reverting the formatting
of this section of the file does not seem to retrigger the reformatting
error.
Change-Id: I3ae83789337bb60284aeaad15eec36eb99f33708
Paul Bauer [Thu, 17 Oct 2019 12:23:56 +0000 (14:23 +0200)]
Apply clang-format to source tree
Also change default of reformat-all.sh to use clang-format.
Had to also made changes for clang-tidy to pass.
Clang format is set as the default for the pre-commit hook, with
uncrustify disabled.
Small changes to .clang-format that should prevent unpopular formatting
of constructor elements and function arguments.
Also set BreakBeforeBinaryOperators = NonAssignment, so that some code
formatting stays closer to previous uncrustify style.
Change-Id: Ic2fbfa21bfc27392ec4c9ebe701291ee59f96e1d
Berk Hess [Tue, 5 Nov 2019 08:41:02 +0000 (09:41 +0100)]
Fix .gro large box writing
Contrary to the format specification in the manual, the box components
in the .gro file were not separated by whitespace when components
(except for the first one) were >= 1000 or <= -100. Now a space is
always printed. This might not match the original GROMOS format,
but most codes reading .gro file assume space separation.
Note formatting of boxes that did have spacing is not changed.
Fixes #3176
Change-Id: I8cfcde98b46550b16b9f6bc299dc0b67454b2437
Christian Blau [Thu, 7 Nov 2019 12:52:45 +0000 (13:52 +0100)]
Stochastic dynamics - document that nsttcouple is ignored
Mention that nsttcouple plays no role for the stochastic dynamics
integrator.
Change-Id: I4ea40ddd0fa6bb812147758b693c8009f51838c9
Berk Hess [Wed, 6 Nov 2019 15:40:54 +0000 (16:40 +0100)]
Deprecated sc-r-power=48
Change-Id: I2e728228432498ad9641e52397523bd1a1135811
Erik Lindahl [Wed, 6 Nov 2019 13:00:37 +0000 (14:00 +0100)]
Work around broken Apple compilers in Mac OS 10.15
The Xcode compiler in Mac OS Catalina checks and enforces
stack alignment by default, but embarrasingly enough the
C library provided by Apple fails to adhere to the
aligned stack for AVX despite bug reports being filed during
their beta cycle. We work around this sloppiness by removing
the check, since AVX does not require the alignment.
Fixes #3199.
Change-Id: I9c16b156cc5b3a5d9fc542335cbf63a6caf6fb1b
Erik Lindahl [Wed, 6 Nov 2019 13:00:37 +0000 (14:00 +0100)]
Work around broken Apple compilers in Mac OS 10.15
The Xcode compiler in Mac OS Catalina checks and enforces
stack alignment by default, but embarrasingly enough the
C library provided by Apple fails to adhere to the
aligned stack for AVX despite bug reports being filed during
their beta cycle. We work around this sloppiness by removing
the check, since AVX does not require the alignment.
Fixes #3199.
Change-Id: I9c16b156cc5b3a5d9fc542335cbf63a6caf6fb1b
M. Eric Irrgang [Tue, 5 Nov 2019 11:13:41 +0000 (14:13 +0300)]
Update googletest location in COPYING.
The repository COPYING file had an outdated reference to the location
of the bundled googletest sources.
Change-Id: I83344eaccfc5a73bdcc9e4a3db49213787f9bf2e
Paul Bauer [Thu, 17 Oct 2019 07:34:21 +0000 (09:34 +0200)]
Add build for clang-format
Adds build for running clang-format in Jenkins, and sets the correct
filters for uncrustify not to apply changes on files now checked by
clang-format instead.
CHanges default to use clang-format for reformat-all.sh
Refs #2107
Change-Id: I62c1f10be5fcda495fea4dbe5a23fa5f006d52a0
Paul Bauer [Fri, 25 Oct 2019 16:12:46 +0000 (18:12 +0200)]
Split up source code formatting scripts
Split up copyright header checking from uncrustify and updated docs
accordingly.
Refs #3197
Change-Id: I68bade3ff5b7d2fc1cdaeff6a8b4021137af1735
M. Eric Irrgang [Fri, 1 Nov 2019 17:23:45 +0000 (20:23 +0300)]
Update gmxapi Python documentation instructions.
* Remove a reference to the old in-repository documentation location.
* Update the reference to Docker-based instructions.
* Update references to Redmine issues.
Change-Id: I755ee84b2186ac0bc7ac1f8367bbdbd7d222b68b
Teemu Murtola [Sat, 29 Oct 2016 03:54:06 +0000 (06:54 +0300)]
Update clang-format config
Provides minor changes to the clang-format configuration, and adds
ability to use reformat_all.sh to change the source tree formatting
to be clang-format conform.
Some attempt has been made to match changes in uncrustify.cfg to be
closer to clang-config but not much work has been put into this direction
since there are about 450K lines are different between the two formatting
methods.
You can run
admin/reformat_all.sh
to reformat everything with uncrustify, and
admin/reformat_all.sh clang-format
to format the same files with clang-format (the executable can be
specified with CLANG_FORMAT).
Refs #2107
Change-Id: Ia1880f5670714c497f683be10a9e72b505ca6c5a
M. Eric Irrgang [Fri, 1 Nov 2019 17:22:17 +0000 (20:22 +0300)]
Update Sphinx link.
The "up-to-date installation instructions" label uses a link to the
old website that is redirected on arrival. This change just updates it
to go directly to the current install guide in the documentation.
Change-Id: I05f577e76ae8cb4703cbf3b17a101716be4593de