alexxy/gromacs.git
5 years agoFixed nullptr derefence in LINCS error
Berk Hess [Wed, 12 Dec 2018 09:23:46 +0000 (10:23 +0100)]
Fixed nullptr derefence in LINCS error

Somehow a dereferenced nullptr could be passed as a reference
to gmx_multisim_t to the Constraint factory function.
Changed the reference in the Constraint object to a pointer.

Fixed #2803

Change-Id: I4806069973067d27078a1324d18a406c7b3e227d

5 years agoSet HAVE_LMFIT properly
Magnus Lundborg [Tue, 11 Dec 2018 16:16:09 +0000 (17:16 +0100)]
Set HAVE_LMFIT properly

The HAVE_LMFIT was only set in the local scope.
Fixes #2800

Change-Id: I34bd3dc1896526c09c6808c7020d3a492c4c8f31

5 years agoFix LINCS triangle constraining with OpenMP
Berk Hess [Thu, 13 Dec 2018 10:59:49 +0000 (11:59 +0100)]
Fix LINCS triangle constraining with OpenMP

LINCS would only apply double the iterations to constraints
in triangles when the last OpenMP task contained at least one such
triangle.

Fixes #2808

Change-Id: I37a3d61c868f60387e536d3db3a4079deb6ae504

5 years agoEnable ARMPL in the armclang build
Szilárd Páll [Thu, 8 Nov 2018 02:14:26 +0000 (03:14 +0100)]
Enable ARMPL in the armclang build

Fixes #2685

Change-Id: I1827c1c55e533bd7ff82b452d77143cb6d04cc01

5 years agoAvoid spurious timing in bonded GPU launch subcounter
Szilárd Páll [Thu, 13 Dec 2018 15:54:15 +0000 (16:54 +0100)]
Avoid spurious timing in bonded GPU launch subcounter

Change-Id: I09d9e6bf1b61b9578b0a39b7e0d21ac63f865057

5 years agoDocument the FP exception in cuFFT 7.0
Szilárd Páll [Mon, 10 Dec 2018 23:50:18 +0000 (00:50 +0100)]
Document the FP exception in cuFFT 7.0

To document known issues relevant for developers, a new section is added
to the dev guide.
As a a first entry, this commit documents the FP exception that aborts
debug builds of mdrun that offload FFTs to an NVIDIA GPU with CUDA 7.0.

Fixes #2726

Change-Id: I60c7b92da2c703e0910644012a01a009b3df0a7a

5 years agoTemporary fix for OpenCL PME gather
Berk Hess [Mon, 10 Dec 2018 16:16:52 +0000 (17:16 +0100)]
Temporary fix for OpenCL PME gather

There is a race on the z-component of the PME forces in the OpenCL
force reduction in the gather kernel. This change avoid that race.
But a better solution is a different, more efficient reduction.

Refs #2737

Change-Id: I45068c9187873548dff585044d2c8541444e385c

5 years agoImprove DLB report/note
Szilárd Páll [Mon, 10 Dec 2018 16:19:09 +0000 (17:19 +0100)]
Improve DLB report/note

- Added a newline preceding the DLB report on the stderr (there was
  none)
- Added a common means to reduce load imbalance to the suggestions.
- Slight code modernization.

Change-Id: I86906f9d870bfd8ee8bb03ae5bd1fdf83a3349f0

5 years agoProperly check for MSVC in build script
Paul Bauer [Tue, 11 Dec 2018 08:25:42 +0000 (09:25 +0100)]
Properly check for MSVC in build script

Also added another check for mdrun only and static builds
to make sure the api is turned off in those cases as well.

Change-Id: If7f6fedfba8cd1b1f4c951bc246228c60771a11a

5 years agoTweak the bonded GPU energy copy/wait operations
Szilárd Páll [Mon, 10 Dec 2018 00:09:13 +0000 (01:09 +0100)]
Tweak the bonded GPU energy copy/wait operations

Move the launch of device to host copy earlier and add wait cycle
counter around the operation that may block and lead to time spent
waiting rather than just a launch.

Change-Id: I241001fc0b60a8ae994f173bc3b38f0c4bbd8fff

5 years agoFix update groups with 2D/3D DLB
Berk Hess [Fri, 7 Dec 2018 20:59:06 +0000 (21:59 +0100)]
Fix update groups with 2D/3D DLB

With a staggered DD grid update groups could end up in the wrong DD
cell. This caused a fatal error (no incorrect results).
his change reverts most of d29cb9da which was a failed fix for #2712.

Also added a few const qualifiers and renames pos to cog for clarity.

Refs #2712
Fixes #2790

Change-Id: I1a589cccb6ea7048fb66ae867716549a1a615b7f

5 years agoMake large PME grids work on GPU
Berk Hess [Wed, 5 Dec 2018 15:18:35 +0000 (16:18 +0100)]
Make large PME grids work on GPU

With PME grids with z size larger than 511 too large blocks could
be launched causing a cryptic CUDA or OpenCL error.

Fixes #2779

Change-Id: Ib2376ae0e9d5a338084df8f3a2cf46ca1b711a6a

5 years agoDocument mdrun mdp option modification
Berk Hess [Mon, 10 Dec 2018 12:26:46 +0000 (13:26 +0100)]
Document mdrun mdp option modification

Add documentation to the mdp section of the user guide for
mdrun modifying rcoulomb and fourier options.

Change-Id: Ifd8b374599713e959c9b3aac583961115cf3b638

5 years agoDisable gmxapi by default
Paul Bauer [Mon, 10 Dec 2018 14:59:11 +0000 (15:59 +0100)]
Disable gmxapi by default

Due to outstanding issues with the integration testing and tests failing
with large number of ranks, the gmxapi default has been changed to not
be build. In Jenkins, all supported builds still are still set to build
with GMXAPI enabled.

Refs #2765, #2722, #2756

Change-Id: I2cc42c461edc206aaa30be6cac3db0a52ccae991

5 years agoMake only mdrun report process ID
Mark Abraham [Mon, 10 Dec 2018 02:00:47 +0000 (03:00 +0100)]
Make only mdrun report process ID

Recent change 367d003106 changed where mdrun reported the process ID,
but in so doing changed various tools to also report the process ID.
This made pdb2gmx tests non-reproducible.

Since the process ID is probably only of minor value to the user, and
probably only of value to users of mdrun, this change adds support for
allowing tools to choose to print the process ID while defaulting to
not reporting it.

Fixes #2794
Refs #2775

Change-Id: Icb6e97d4d7502f12e74cbaa2c1f1a969ba99b917

5 years agoFailproof signal conversion
Pascal Merz [Sat, 20 Oct 2018 15:27:58 +0000 (17:27 +0200)]
Failproof signal conversion

When introducing the signal handlers, we decided to use scoped enums to
define the different simulation signals (changes Ia90778, I05ca7a,
I5dec05). In the SimulationSignal objects which actually get reduced,
these are stored as signed char. When the signals get handled, these
signed char are converted back to the scoped enums. Currently, this is
done using a static_cast.

Although in the current code, the signals get handled immediately after
being reduced, and signals are only set by master, there is no formal
guarantee that this is always true. If the signals get reduced multiple
times, or by different ranks, the signed char stored in the
SimulationSignal object could get larger than +1 / -1. In the old code,
this would not lead to problems, as it was just checked that the unsigned
char in the SimulationSignal was != 0 (or <0 / >0, for the stop signal).
In the new code, the signal handling would fail in this case, without
proper error message - the static_cast will not fail, but the following
comparison to the enum values will always fail. This commit introduces
a conversion function for each of the enums and explicity enum values
for the StopSignal to return to the failproof behavior of the old code.

Refs #1793

Change-Id: Iac8ea3946effba1797e16d8c918c7d49ce4dc828

5 years agoMake release notes html only
Paul Bauer [Mon, 3 Dec 2018 15:32:41 +0000 (16:32 +0100)]
Make release notes html only

Refs #2783

Change-Id: Ifa2e5486e9f3d4be5369bd82f4f858c1ea54e22e

5 years agoChange toctree depth in PDF manual
Paul Bauer [Mon, 3 Dec 2018 15:03:10 +0000 (16:03 +0100)]
Change toctree depth in PDF manual

It doesn't seem to be possible to set different toctree depths for the
HTML and PDF versions of the manual in Sphinx itself. To work around
this, I added the explicit depth to the LaTeX preamble.

Refs #2783

Change-Id: I74e00b339a014060567a9fd6aa875e7047165e66

5 years agoFix POWER8 and POWER9 build
Mark Abraham [Thu, 11 Oct 2018 15:10:29 +0000 (17:10 +0200)]
Fix POWER8 and POWER9 build

Tested with GCC 6.4.0 and 8.1.0 in debug and release modes,
with and without SIMD.

xlc is still not supported, e.g. because 16.1 cannot handle an
in-class member initializer list for a C-style array in the same
struct as a member initialized in a constructor initializer
list. Tested for this in the C++11 feature support tests, and we now
issue a descriptive error in this case.

Removed -mdirect-move from POWER8 flags because gcc warns about its
use.

Fixes #2748

Change-Id: I0dc68c12701f041b702063692703cc2e15e96d8e

5 years agoUpdates to do_dssp
boristim [Fri, 24 Aug 2018 16:59:32 +0000 (19:59 +0300)]
Updates to do_dssp

As posted by Boris Timofeev on redmine, do_dssp has been
broken before when encountering unknown residues.
This fixes the behaviour.

Refs #2599

Change-Id: I16f09ed33cf86c699a2667d101740ce0fc2c0919

5 years agoAdd Bonded GPU launch overhead cycle subcounter
Szilárd Páll [Mon, 15 Oct 2018 18:35:17 +0000 (20:35 +0200)]
Add Bonded GPU launch overhead cycle subcounter

ALso fixed missing counters around the transfer/clearing launch.

Change-Id: Ib3f18b8285b979b818ab79713253bc7f7bb89e2a

5 years agoSwap the order of GPU bonded and nonbonded launch
Szilárd Páll [Fri, 30 Nov 2018 17:18:01 +0000 (18:18 +0100)]
Swap the order of GPU bonded and nonbonded launch

In order to maximize the chance of the bonded kernel tails to overlap
as well as to avoid GPU idling during the scheduling gaps between these
kernels, this commit swaps the launch order of bonded and nonbonded work.

Refs #2677

Change-Id: Ia4e5e7279e7ea4cf575c76b5286cf10387258878

5 years agoFix conditional in nonlocal nbnxn GPU work skipping
Szilárd Páll [Fri, 30 Nov 2018 17:12:50 +0000 (18:12 +0100)]
Fix conditional in nonlocal nbnxn GPU work skipping

The nbnxn nonlocal work, including coordinate buffer copy could be
skipped when the nonlocal pair list is empty. However this condition now
needs to also take into account that the bonded kernels also take the
same coordinates as input.
This change makes the non-local nbnxn copy depend both on whether there
is non-local nonbonded as well as bonded work on the current domain.

Fixes #2786

Change-Id: I217072c962226749b91f514e4a8070f042e35131

5 years agoSplit nbnxn input copy and kernel launch
Szilárd Páll [Fri, 30 Nov 2018 16:48:27 +0000 (17:48 +0100)]
Split nbnxn input copy and kernel launch

The nonbonded x+q host-to-device copy and kernel launch is split into
two functions and called separately from do_force().
This will allow improving the bonded scheduling and better expressing a
missing bonded dependency (and fixing the related bug).

This change only moves code.

Refs #2677 #2786

Change-Id: Ie50e6a6b664f8400274b2f409eacb6c36f0908ba

5 years agoCorrect thread count in the PME GPU reduction
Szilárd Páll [Mon, 3 Dec 2018 17:25:12 +0000 (18:25 +0100)]
Correct thread count in the PME GPU reduction

The host-side force reduction has been moved into the PME module, so the
thread count is now changed to be the PME module's thread count.

Change-Id: Ib313c7afe1384b3cec7a999273afba79c3de8c46

5 years agoAdd update groups to parallelization docs
Berk Hess [Mon, 3 Dec 2018 12:59:53 +0000 (13:59 +0100)]
Add update groups to parallelization docs

Refs #2784

Change-Id: I12dfabbab9cff08d9154ac5258aeb790906c72f0

5 years agoMove responsibility for PME reduction to its module
Mark Abraham [Wed, 28 Nov 2018 11:46:15 +0000 (12:46 +0100)]
Move responsibility for PME reduction to its module

We no longer need temporary energy and virial variables that gcc 7 and
8 warn about in release mode. Earlier efforts to avoid these warnings
made pme.h depend on config.h, which is not desirable.

This made possible minor simplifications to testing code.

Noted some TODOs and added some comments. Removed a completed TODO
that had been left behind.

Fixes #2503
Refs #2863

Change-Id: I9a6c5b12ef5c27bd003d3ab9eeeaa75e9574b2dc

5 years agoFix energy history reading
Paul Bauer [Thu, 29 Nov 2018 13:47:45 +0000 (14:47 +0100)]
Fix energy history reading

The energy history could be read as a nullptr from a checkpoint file,
leading to issues when trying to restart a simulation. Fixed the logic
issue and added an assertion to catch it in the future.

Also removed redundant comparisons to nullptr.

Fixes #2781

Change-Id: I99ce1a2b932046cab6918ec24b267fc8ff3850ad

5 years agoRecreate flowchart figure
Paul Bauer [Thu, 29 Nov 2018 16:14:54 +0000 (17:14 +0100)]
Recreate flowchart figure

The flowchart figure gave issues because of old text rendering, making
the generation of the png for the website difficult. Recreated the
figure with new text and a larger size.

Fixes #2782

Change-Id: Ia1787c6fb46f5fad80b4d43b693aed51c6a899dc

5 years agoMore fixes for ImageMagick test script
Paul Bauer [Thu, 29 Nov 2018 14:37:40 +0000 (15:37 +0100)]
More fixes for ImageMagick test script

When rebuilding a tree the lookup for ImageMagick would fail and the
script would thus disable the generation of the reference manual.
Improved the logic to avoid this.

Change-Id: I38185569309a4336ee071875b3d8c74990e295e3

5 years agoAdded reference-manual entry for MiMiC
Viacheslav Bolnykh [Wed, 28 Nov 2018 11:14:19 +0000 (12:14 +0100)]
Added reference-manual entry for MiMiC

Added the documentation entry describing the way to set up
and run the QM/MM simulation with MiMiC, plus cross references
to install guide and mdp options documentation.

Fixes #2691

Change-Id: Id600c621d24bb41f99b02ddb8bacb175a6bac520

5 years agoMake pull with COM from previous step work with MPI
Magnus Lundborg [Fri, 23 Nov 2018 13:11:37 +0000 (14:11 +0100)]
Make pull with COM from previous step work with MPI

There was no communication between the ranks, which caused
crashes with MPI and tMPI. This fixes that.
Minor clean-ups of pull with COM from previous step as well.
Fixes #2769

Change-Id: I3b321872ffd4b295c4e97029d8d54872b3674ac4

5 years agoMake Imagemagick availability more visible
Paul Bauer [Wed, 28 Nov 2018 13:39:53 +0000 (14:39 +0100)]
Make Imagemagick availability more visible

Changes the message type for the gmxTestImagemagick test to be a warning
when GMX_BUILD_MANUAL is ON, to make sure users see that there may be an
issue with building the full documentation.

Also change the test script to see if the new file actually gets
created, instead of checking the return code.

Refs #2778

Change-Id: I52ca5e0143bad396d0e6cfe610dac1bb13621e5f

5 years agoRemoved erronous manual variable handling
Mark Abraham [Thu, 29 Nov 2018 08:18:07 +0000 (09:18 +0100)]
Removed erronous manual variable handling

CMake variables of different type can mask each othe's scope, so got
rid of this useless leftover.

Change-Id: I4e72e1da3952f008d9a37e0d8e35be5efa1ddd14

5 years agoFix reference manual image sizes
Paul Bauer [Tue, 27 Nov 2018 14:00:20 +0000 (15:00 +0100)]
Fix reference manual image sizes

Fixes #2778

Change-Id: Ib48afe91a938cadb7ca6b7a89ea6cb18cf9874eb

5 years agoFix reference manual doc build
Paul Bauer [Tue, 27 Nov 2018 13:35:30 +0000 (14:35 +0100)]
Fix reference manual doc build

The CMake for building the reference manual was not really stable
because the value for having ImageMagick convert was set in different
places. This fixes the issue and makes the reason for not building it
hopefully more clear.

Change-Id: I7c9bb695e1dac37b83cdc82a2c0bdb53700a1156

5 years agoFix gcc-8 warnings
Paul Bauer [Fri, 23 Nov 2018 12:57:13 +0000 (13:57 +0100)]
Fix gcc-8 warnings

Changed copying of temporary file names to use gmx::Path, changed
copying of C character arrays to use std::copy. Annotated code where
safer string copying was needed.

Did not try to fix the warnings in tng.

Fixes #2683

Change-Id: I431b55dfa39a654fb9f20a78470f190da7666993

5 years agoIntroduce GpuBonded
Mark Abraham [Thu, 1 Nov 2018 11:49:03 +0000 (12:49 +0100)]
Introduce GpuBonded

This pimpl-ed class hides the GPU implementation details from
the high-level calling code.

Moved all GPU bonded force-calculation management code into the same
source file, separating them from the kernel definition and launch
file, which may help improve compilation time also.

Bound the kernel launch parameters for device buffers to GpuBonded
directly after neighbour search, for simplicity and efficiency. That
call now comes slightly later in the search-step call sequence.

Separated the launch of the energies transfer and the function
that waits upon, preparing for future reorganization.

Introduced HostStdVector to decrease verbosity of GpuBonded::Impl
declaration.

Now that there is no reason to have the stream member of
GpuBondedLists as a void *, removed the excess indirection that
introduced.

Moved symbols into gmx namespace per style. Used the appropriate
inclusion guards on helper .cuh files.

Noted several TODOs for follow up work.

Refs #2724

Change-Id: I612d8f0f973e6cfcc33a8176ba9f2525297542c4

5 years agoAdd ARMPL support to admin script
Szilárd Páll [Thu, 8 Nov 2018 02:03:21 +0000 (03:03 +0100)]
Add ARMPL support to admin script

Change-Id: I934baaada6ca2f7d26671ee720394c0ffb8add29

5 years agoAdd tweaks to support ARMPL for FFTs
Szilárd Páll [Mon, 29 Oct 2018 13:59:21 +0000 (14:59 +0100)]
Add tweaks to support ARMPL for FFTs

Support added through the FFTW compatibilty layer; the FFTW guru
interface is not implemented in ARMPL, so this is disabled in builds
that use ARMPL. The detection is basic and it is used only for these
purposes, the lirbary and header location needs to be passed manually
(we prefer ARM to implement a Find module).

Fixes #2684

Change-Id: I5afd7c200e2d02ac699bb668d14f0a85bf0a2369

5 years agoFix newline printing in -v output
Paul Bauer [Thu, 22 Nov 2018 10:45:33 +0000 (11:45 +0100)]
Fix newline printing in -v output

Fixes #2741

Change-Id: Iede2003df78f60c4e7189f338bb32d008c05aaa3

5 years agoFix FP exception in pull code
Berk Hess [Mon, 26 Nov 2018 10:55:13 +0000 (11:55 +0100)]
Fix FP exception in pull code

There was a, harmless, floating point exception the pull COM parallel
reduction when a COM was not needed for a certain pull group. Now the
(unused) data is cleared.
Also made naming of the buffer consistent and introduced a constant
for the buffer stride instead on misusing DIM.

Fixes #2776

Change-Id: I4ef532f9a1ce6439eac94fa9b789d5259df38d88

5 years agoClean up initial log output
Mark Abraham [Thu, 22 Nov 2018 11:32:21 +0000 (12:32 +0100)]
Clean up initial log output

The rank count was incorrect when thread-MPI has not yet spawned
threads. It could only be fixed if we would have made that choice
before we open the log file, but we want to be able to report problems
to the log file from hardware detection or tpr reading which occur
before rank choice.

Host name, rank count and rank ID are all reported later, alongside
other such information, so there is no need to duplicate and
complicate our code.

PID is now reported later alongside other similar information. The log
file output looks reasonable, aligned, etc.

Noted TODO for future clean up.

Fixes #2775

Change-Id: Ifda6c44bfe28628934f4614e20eeeef436d80707

5 years agoIntroduce PpForceWorkload
Mark Abraham [Thu, 1 Nov 2018 11:49:03 +0000 (12:49 +0100)]
Introduce PpForceWorkload

Assigns responsibility for knowing what work is required for the force
calculation of an MD step to a single object. Moved actual control of
executing any necessary CUDA bonded work to the new schedule
object. Changed low-level routines to assert when invalid calls are
made, because only one place should control whether work is done.

This prepares for making GpuBondedLists an opaque type, when
bonded_gpu_have_interactions will not be able to be an inline
function.

Refs #2724, #2574

Change-Id: Ie59b790c54170692b0221f5eb3812643ba6f61d6

5 years agoPrepare for 2019 release candidate
Paul Bauer [Thu, 22 Nov 2018 09:11:00 +0000 (10:11 +0100)]
Prepare for 2019 release candidate

Change-Id: I4b7a302e182c4a74c9c825d98dcf014f2b324e24

5 years agoGROMACS 2019 third beta release
Paul Bauer [Mon, 19 Nov 2018 09:01:10 +0000 (10:01 +0100)]
GROMACS 2019 third beta release

Updated regressiontest hash as usual.

Change-Id: I431b0c0cb82ad3943fb6111b37b7ac5f843e1872

5 years agoMerge branch release-2018 into release-2019
Paul Bauer [Wed, 21 Nov 2018 09:46:29 +0000 (10:46 +0100)]
Merge branch release-2018 into release-2019

Several changes addressing known issues have not
been brought forward, either because they are
inappropriate or the bug is already fixed in
release-2019 branch.

Resolved Conflicts:
admin/builds/gromacs.py
admin/builds/post-submit-matrix.txt
cmake/gmxVersionInfo.cmake
docs/CMakeLists.txt
src/gromacs/mdlib/minimize.cpp
src/gromacs/mdlib/shellfc.cpp
src/gromacs/topology/mtop_util.cpp
src/programs/mdrun/md.cpp
src/programs/mdrun/mdrun.cpp
src/programs/mdrun/runner.cpp
src/testutils/testinit.cpp

Change-Id: Ia18b43854925fb2c6e1bf4256b99bd8f42359f68

5 years agoPartial revert of "Fix inefficient shell minimization"
Mark Abraham [Tue, 20 Nov 2018 11:51:43 +0000 (12:51 +0100)]
Partial revert of "Fix inefficient shell minimization"

This reverts the minimize.cpp part of commit
5749eb1c9934c3597f140b793c7b374610a56335. That would likely affect
large systems instead, and those are likely more common targets for
normal mode analysis.

Change-Id: Ia586beb7b47480499907352a96175bd1dda29684

5 years agofix unused variable warning from gmxapi compilation
Joe Jordan [Mon, 19 Nov 2018 08:46:30 +0000 (09:46 +0100)]
fix unused variable warning from gmxapi compilation

Fixes #2768

Change-Id: I8c77dd19f15df6f365122e25680e9d0a553cb36c

5 years agoFix inefficient shell minimization
Mark Abraham [Fri, 9 Nov 2018 07:12:26 +0000 (08:12 +0100)]
Fix inefficient shell minimization

In 5268b73d6cd, a bug was introduced when a shallow copy was used
instead of the former deep copy. However, in the original code some
pointers were used as "short-cuts", which is not neccessary. Those
pointers have been removed, and now the shell-code position vectors
are fully initialized at allocation time.

In order to get reproducible normal modes the delta x used for
computing derivatives was reduced.

Fixes #2705

Change-Id: Iad8a0b0793304e2c10d9abf3a180cfe9bdc85c4c

5 years agoAdded citation for new analysis functionality.
David van der Spoel [Sun, 18 Nov 2018 13:55:16 +0000 (14:55 +0100)]
Added citation for new analysis functionality.

Change-Id: I91e90c5b00db740cfc072cd65ada2c5f9c70941c

5 years agoExpand gmxapi testing to include thread-MPI.
M. Eric Irrgang [Fri, 16 Nov 2018 13:40:31 +0000 (16:40 +0300)]
Expand gmxapi testing to include thread-MPI.

Some tests were disabled when GMX_THREAD_MPI was set because they were
not able to handle the GROMACS testing framework. These exclusions are
no longer necessary because the tests have been ported to use the mdrun
test fixtures.

Change-Id: I2a91d992031605ab4144eed774a2af55367565d8

5 years agoRemove extraneous CMake config.
M. Eric Irrgang [Fri, 16 Nov 2018 13:27:14 +0000 (16:27 +0300)]
Remove extraneous CMake config.

The generated gmxapi-config.cmake package config file had an unused
variable definition due to an extraneous option to
`configure_package_config_file()`

Change-Id: I67a70fa21cea92fa0de6ed7ebb49877aaf11cc89

5 years agogrompp now checks tau-p>=2*tau-t with NH+PR
Berk Hess [Fri, 16 Nov 2018 09:47:37 +0000 (10:47 +0100)]
grompp now checks tau-p>=2*tau-t with NH+PR

Added check to avoid resonances when combining Nose-Hoover and
Parrinello-Rahman coupling algorithms.

Fixes #2749

Change-Id: I061d5021ba5f9c3a68336d623c06843be9addbde

5 years agoRefine FindSphinx
Paul Bauer [Thu, 15 Nov 2018 13:29:44 +0000 (14:29 +0100)]
Refine FindSphinx

The FindSphinx function would not work on older versions of sphinx,
because the output from the program changed between versions. Modified
the detection logic to cover both cases.

Fixes #2751

Change-Id: I84525c5b9237d369fd78ac59b763e063456571e2

5 years agoNote GMX_ENABLE_CCACHE in build system docs.
M. Eric Irrgang [Tue, 13 Nov 2018 12:43:32 +0000 (15:43 +0300)]
Note GMX_ENABLE_CCACHE in build system docs.

Added to the list in "Variables affecting compilation/linking".

Fixes #2743

Change-Id: I1a3184fbda1d879db60fea2333bc4f7db95b0277

5 years agoFix checkpoint restart of tpr with infinite step count
Mark Abraham [Thu, 15 Nov 2018 16:37:21 +0000 (10:37 -0600)]
Fix checkpoint restart of tpr with infinite step count

The recent fix of #2717 did not account for the way a user's .tpr file
can require an infinite number of steps by using the special value
-1. Such special values are difficult to remember when maintaining the
code, so we should tend to avoid introducing them.

Fixes #2757

Change-Id: I6570c4f4e7d63b2375dbb595a514c9e709f18856

5 years agoRework GMXAPI tests
Paul Bauer [Thu, 4 Oct 2018 09:52:48 +0000 (11:52 +0200)]
Rework GMXAPI tests

Changed the tests to use a test fixture and only generate the tpr files
during the actual tests.

Fixes #2664

Change-Id: Ic8a0c1c5eed2189abb9006cb45097d1acd41d175

5 years agoRelax arbitrary tolerance on rerun test
Mark Abraham [Thu, 15 Nov 2018 05:17:30 +0000 (23:17 -0600)]
Relax arbitrary tolerance on rerun test

Fixes #2759

Change-Id: Iaff0893d495d198b55f0d3fb27484005cb2a9b6b

5 years agoFix OpenCL mdrun from installed path
Mark Abraham [Mon, 5 Nov 2018 22:28:44 +0000 (23:28 +0100)]
Fix OpenCL mdrun from installed path

Previously we could dump all the headers and source files in the
share/gromacs/opencl directory, because they all came from the NB
module. Now that we have code in the gpu_utils module used by both
Ewald and NB modules, that is not an option. So we may as well use the
same approach for the pbcutil and high-level NBNXN headers also.

Change-Id: I894e6a8032547077bb5198cc6c40f65916d1b17f

5 years agoAdded Alan and Jon to List of Contributers
Alan Gray [Wed, 14 Nov 2018 15:19:36 +0000 (07:19 -0800)]
Added Alan and Jon to List of Contributers

Change-Id: I7609963e4d124056beab69546f1402bf60e967cd

5 years agoMore warning suppressions for QMMM code
Mark Abraham [Fri, 9 Nov 2018 04:06:12 +0000 (05:06 +0100)]
More warning suppressions for QMMM code

These are typically not configured, and the resulting dead code and
possible noreturn attributes are more trouble than they are worth,
particularly when other compilers then get confused.

Change-Id: I2b374aa66feef55b518517d1c752f2b65b7a9d2b

5 years agoNote GMXAPI CMake variables and build targets.
M. Eric Irrgang [Tue, 13 Nov 2018 13:07:00 +0000 (16:07 +0300)]
Note GMXAPI CMake variables and build targets.

`build-system.rst` is a good place to note CMake variables and targets,
but the `GMXAPI` option, and the `Gromacs::gmxapi`, `gmxapi-cppdocs`,
and `gmxapi-cppdocs-dev` CMake targets, were not mentioned there.

Also, changes the names of the targets to use hyphens instead of
underscores for word separators.

Fixes #2744

Change-Id: I19db4a4124b125a4a0678c90b946d5fe3bc2e21c

5 years agoUpdate to prepare for 2018.5 point release
Paul Bauer [Wed, 7 Nov 2018 09:23:16 +0000 (10:23 +0100)]
Update to prepare for 2018.5 point release

Change-Id: If5d058821024fe3e0110b7501b154e508a12149c

5 years agoAdd coolquotes
Joe Jordan [Mon, 12 Nov 2018 15:48:27 +0000 (16:48 +0100)]
Add coolquotes

Change-Id: Ifcbbb45f531612454bd080f91b247817530f78e0

5 years agoVersion 2018.4
Paul Bauer [Wed, 7 Nov 2018 09:16:41 +0000 (10:16 +0100)]
Version 2018.4

Add release notes for change that was missing them.

Change-Id: I56d76f87d967221d037869ca5b93400b67fcd42d

5 years agoFixing segfault in parallel MiMiC QM/MM runs
Viacheslav Bolnykh [Fri, 9 Nov 2018 16:33:45 +0000 (17:33 +0100)]
Fixing segfault in parallel MiMiC QM/MM runs

Removed unnecessary copy of coordinate array from global state to
the local one that was causing memory corruption.

Fixes #2753

Change-Id: I6d0bc6edfabc1444d7d24eb2d5401b6ff174a57d

5 years agoFix entropy calculation in gmx anaeig
David van der Spoel [Sat, 10 Nov 2018 06:00:24 +0000 (07:00 +0100)]
Fix entropy calculation in gmx anaeig

gmx anaeig reads eigenvectors produced by gmx covar and
can compute entropy according to Schlitter's formula or
based on the quasiharmonic method. If the number of
eigenvectors is not consistent with the number of atoms
the entropy calculation could use uninitialized variables.
Added a warning when this happens.

Fixes #2668

Change-Id: I4f265212ce0a7bf82e25e1aa6f9cbb544c45db3f

5 years agoDisabled FPE checking for non-release builds
Mark Abraham [Thu, 8 Nov 2018 16:13:25 +0000 (17:13 +0100)]
Disabled FPE checking for non-release builds

This means that Jenkins will no longer give any reports, false or
true, from floating-point exceptions. Test binaries can still have FPE
checking enabled manually, however.

The content of this change should not be merged into the release-2019
branch.

Fixes #2750

Change-Id: I12c5e1a08e43e48cb7012edb6d5e8aea08baddc8

5 years agoChange get_atom_index to allow multiple molecules.
David van der Spoel [Wed, 31 Oct 2018 12:06:06 +0000 (13:06 +0100)]
Change get_atom_index to allow multiple molecules.

Make gromacs take into account atoms in all molecules.
This allows Hessian matrix creation to work over all
molecules in a simulation. An update to the regression
tests has been submitted as well.

During fixing of the problem, another problem surfaced in
the normal mode calculations to do with ordering of atoms
which is fixed here as well.

Fixes #2720

Change-Id: I9fc2dd05cb1c67d46b6d4c3d9139e6b3bed72f17

5 years agoGive error when rerun with identical file names
Paul Bauer [Thu, 8 Nov 2018 15:18:25 +0000 (16:18 +0100)]
Give error when rerun with identical file names

Fixes #2634

Change-Id: If3985274b3e74910c9ddefbddcfb52d1b01a3fba

5 years agoIssue fatal error if checkpoint does not suit the .tpr
Paul Bauer [Mon, 29 Oct 2018 11:24:06 +0000 (12:24 +0100)]
Issue fatal error if checkpoint does not suit the .tpr

If the step number in the checkpoint is out of range for that
described in the .tpr, then the user has provided mismatching
inputs. We do not intend then to be able to address this with the
mdrun -nsteps option.

Fixes #2717

Change-Id: I827bdc1b92ee69bf6287e2fd552ace7583b62028

5 years agoActually fix gmx helix segmentation fault
Paul Bauer [Wed, 31 Oct 2018 15:32:00 +0000 (16:32 +0100)]
Actually fix gmx helix segmentation fault

The residue indexing in hxprops was wrong because the residue indices
used for residue name lookup were wrong.

Added some documentation to clarify what this code does.

Fixes #2701

Change-Id: Ie6c002be6ff2139f6af27c7b891a180338ae5b20

5 years agoFix bug with DD for dims without PBC
Berk Hess [Tue, 6 Nov 2018 14:03:32 +0000 (15:03 +0100)]
Fix bug with DD for dims without PBC

When using DD along dimensions without PBC, many pair forces could
be missing. This would not cause silent errors, except when only
running a few steps.

Fixes #2736

Change-Id: Ia256b907e25eef811e1c8f348dc0a78aaddb5610

5 years agoPragma warning suppressins for icc+windows
Mark Abraham [Thu, 8 Nov 2018 09:45:14 +0000 (10:45 +0100)]
Pragma warning suppressins for icc+windows

Recent use of a pragma didn't cover this case relevant to post-submit
testing.

Change-Id: I3740548c22590688a5872474941151df8e536021

5 years agoRe-enable the armclang post-submit build
Szilárd Páll [Mon, 5 Nov 2018 18:28:32 +0000 (19:28 +0100)]
Re-enable the armclang post-submit build

bs_overdrive_1000 has been fixed and upgraded to ARM HPC toolkit 18.4.
The gcc build stays disabled as it still emits a warning.

Change-Id: I384a8ca083b5252988c1a48a63111f27f681c753

5 years agoSuppress clang warnings about QMMM code
Mark Abraham [Wed, 7 Nov 2018 12:37:14 +0000 (13:37 +0100)]
Suppress clang warnings about QMMM code

These are typically not configured, and the resulting dead code and
possible noreturn attributes are more trouble than they are worth,
particularly when other compilers then get confused.

Change-Id: Idf51ee7c0a8c34d71d204db405f18704002acb58

5 years agoMark new cmake variables advanced
Paul Bauer [Tue, 6 Nov 2018 12:28:10 +0000 (13:28 +0100)]
Mark new cmake variables advanced

Fixes #2738

Change-Id: I481a2e8f06055e8b1b69ab60e75bbbeaabad8355

5 years agoEliminate macro that expands to variable in PME GPU
Szilárd Páll [Thu, 1 Nov 2018 15:59:30 +0000 (16:59 +0100)]
Eliminate macro that expands to variable in PME GPU

The PME_SPREADGATHER_THREADS_PER_ATOM expanded to a statement containing
variables that needed to be declared. This has been eliminated and the
order constant is used through a constexpr.
Added consistency checks to make sure that the PME order stored in the
data structures matches the constant in question.

Also converted a few more macros to constexpr.

Change-Id: I73efea25c2da7cbde40df961f8bfae7e364bd74d

5 years agoEnsure minimum exec width of the PME OpenCL kernels
Szilárd Páll [Wed, 31 Oct 2018 20:04:02 +0000 (21:04 +0100)]
Ensure minimum exec width of the PME OpenCL kernels

This change adds checks to make sure that we don't execute incorrect
kernels in the case of the rare event if the Intel OpenCL compiler
decides to generate spread or gather kernels for 8-wide execution.

Refs #2516 #2520

Change-Id: I7ab33accebe908a56eb194e8245dfcfa6f817324

5 years agoAdd global directory for simulation test inputs
Paul Bauer [Tue, 6 Nov 2018 16:06:24 +0000 (17:06 +0100)]
Add global directory for simulation test inputs

Adds the ability to testfilemanager to use input files from a global
defined directory that is set at CMake time and contains the input files
for tpr file generation in the tests.

When a file is not found in the current directory, the code searches
the global archive for it and finally falls back to the current
directory if no file extension was given.

Example case is given for the tool test that needs a pdb and a top file.

Change-Id: Ic94f4a4d0d451024b435bf2900360aa60cd01b11

5 years agoFix wrong branch for regressiontests
Paul Bauer [Tue, 6 Nov 2018 15:49:55 +0000 (16:49 +0100)]
Fix wrong branch for regressiontests

Change-Id: Ibcc447ceafa9e861c4db264d2a49cb2b5a659da0

5 years agoPrepare for beta3
Paul Bauer [Tue, 6 Nov 2018 11:28:26 +0000 (12:28 +0100)]
Prepare for beta3

Change-Id: I8d9b574f2a513154decd294a3c8ffd011ef1ab16

5 years agoGROMACS 2019 second beta release
Paul Bauer [Thu, 1 Nov 2018 08:56:11 +0000 (09:56 +0100)]
GROMACS 2019 second beta release

Updated regressiontest hash to build release tarballs.

Change-Id: I0e2f2aadd0490e4481ffbf07691e4962b93647e1

5 years agoMake PME OpenCL enabled only for AMD devices
Mark Abraham [Mon, 5 Nov 2018 17:53:03 +0000 (18:53 +0100)]
Make PME OpenCL enabled only for AMD devices

Other vendor devices have known issues, but fixes
are not yet complete.

Refs #2702, #2719

Change-Id: I0d443229ffe4cee3bb4029f57502f9c7fba2574d

5 years agoRemove source file with no content
Mark Abraham [Mon, 5 Nov 2018 13:41:32 +0000 (14:41 +0100)]
Remove source file with no content

Visual Studio + icc warns that nothing can link to anything in this
source file.

Also updated the CMake for this module to use our newer idioms.

Fixes #2732

Change-Id: I5cfe81aabc6ee80a6c0044cc219b1a121293aded

5 years agoFix non ascii characters in manual references
Paul Bauer [Mon, 5 Nov 2018 13:18:36 +0000 (14:18 +0100)]
Fix non ascii characters in manual references

Change-Id: I1c50b58df39a1ffca4b4782482da6642ad129556

5 years agoMake QM/MM code always compile
Paul Bauer [Wed, 24 Oct 2018 07:20:15 +0000 (09:20 +0200)]
Make QM/MM code always compile

Brought all the old interfaces back to a state where they can always
compile regardless of the build configuration, and give fatal errors
if used from a configuration that didn't support the method.

When configured, this should work as before, but we have no ability to
test that in Jenkins.

Added some necessary const correctness.

Did QM/MM preparation all in the same place, to simplify runner.cpp

Added deprecation status to release notes.

Refs #2706, #2569

Change-Id: I4a6566c60bfbf27a7b1916be1874b36987fb7da5

5 years agoDisable -Wno-missing-prototypes
Alexey Shvetsov [Mon, 22 Oct 2018 19:22:30 +0000 (22:22 +0300)]
Disable -Wno-missing-prototypes

The warning is valid for C++

The -Wno-missing-prototypes flag is valid for C++ files with clang,
but not with other compilers.

Change-Id: I85aecc92129b6db482ccff3ef5f6af5a8551ace7
Signed-off-by: Alexey Shvetsov <alexxy@omrb.pnpi.spb.ru>
5 years agoGive more info when trying to build manual
Paul Bauer [Tue, 23 Oct 2018 15:12:37 +0000 (17:12 +0200)]
Give more info when trying to build manual

The manual build would fail with cryptic reasons when Sphinx was not
available because the include was not properly set.

Also set up Sphinx detection to be verbose so that users will have it
easier to see whether they can build the docs or not.

Building the docs will not work now when using Python3.

Add test script to check if ImageMagick convert actually works or not.

Refs #2709

Change-Id: I1c49d683d971a5bf0b0ce217f7e9ecd60603e6e6

5 years agoFix formatting issue
Paul Bauer [Mon, 5 Nov 2018 12:25:04 +0000 (13:25 +0100)]
Fix formatting issue

Clang static analyser complained about extra semi-colons that are fixed
here.

Change-Id: I1e39a0db64aaba88293cb26c87d8d55293797694

5 years agoQuiet unused variable warnings
Mark Abraham [Thu, 1 Nov 2018 14:06:53 +0000 (15:06 +0100)]
Quiet unused variable warnings

gcc 4.8 in debug mode warns about unused manager variables

Change-Id: I84b9729036c929a14550357d82321f7122462e04

5 years agoFix broken update groups
Berk Hess [Sat, 27 Oct 2018 21:19:17 +0000 (23:19 +0200)]
Fix broken update groups

With 2D/3D domain decomposition, atoms in an update group could end
up in different DD cells due to different rounding.
Also added an assertion on atoms in constraint being in the same
cell when atoms are in the reverse top, as that was violated with
this bug.

Fixes #2712

Change-Id: Ic9ea10d6a20c46b89d1fa9e0aacfcc5037903428

5 years agoStop using hwloc on old ARM slave
Mark Abraham [Wed, 31 Oct 2018 17:17:14 +0000 (18:17 +0100)]
Stop using hwloc on old ARM slave

We're not sure what the problem is, but it will never be
a priority to fix it.

Fixes #2284

Change-Id: I20d7662004baeba36c4b89294457da4c36128c50

5 years agoFully define symbols in restraintpotential.h
M. Eric Irrgang [Thu, 1 Nov 2018 10:40:41 +0000 (13:40 +0300)]
Fully define symbols in restraintpotential.h

External client code (i.e. an MD plugin) is expected to link against
libgmxapi, but not against libgromacs directly. This change allows
client code to implement gmx::IRestraintPotential using only GROMACS
installed headers, without relying on libgromacs to define methods in
gmx::PotentialPointData or gmx::IRestraintPotential.

Fixes #2725

Change-Id: I530c8b74d490645de25c722036be5387a4fc0a61

5 years agoAdd missing blame for restraint module files.
M. Eric Irrgang [Thu, 1 Nov 2018 10:14:18 +0000 (13:14 +0300)]
Add missing blame for restraint module files.

Several files in gromacs/restraint were missing the suggested doxygen
`\author` tag.

Change-Id: I4ad1d86a5a31082fde3346bcb89cd0bbc5bc2e4f

5 years agoDisable ccache by default
Mark Abraham [Sat, 27 Oct 2018 13:10:01 +0000 (15:10 +0200)]
Disable ccache by default

There are too many use cases where build trees might be used on
different nodes where ccache might not be available, or with compilers
that it cannot support to continue to enable it by default. If the
user opts in, then the build system searches for ccache and gives a
fatal error if it is not found, or if the compiler is not supported.

The wrappers used by clang-tidy and clang-analyzer do not work
with ccache, so those configurations issue a fatal error if
ccache is enabled.

Made various minor aspects conform to style for naming cache
variables, use of endif(), etc.

Refs #2688

Change-Id: I55c8d4a8a07ada704c49d4f99c1557a7ab97f353

5 years agoProperly define Bromine in amber forcefields
Paul Bauer [Wed, 31 Oct 2018 08:54:43 +0000 (09:54 +0100)]
Properly define Bromine in amber forcefields

Added the proper values for Bromine to the amber forcefield definitions
in share/top/amber*/ffnonbonded.itp from the corresponding parm99.dat
file in amber itself.

Also removed the Iron parameters as they were not fully defined
and also not available in amber itself.

Fixes #2711

Change-Id: I8adb5dc1124ba39ab4a30568bd679a204dc83fc8

5 years agoLimit auto assignment of bondeds to GPUs
Berk Hess [Fri, 19 Oct 2018 19:20:40 +0000 (21:20 +0200)]
Limit auto assignment of bondeds to GPUs

When the CPU has no forces to calculatie, we should not assign
bondeds to the GPU. Here we only assign bondeds to the GPU when
the CPU does PME for electrostatics and/or LJ.

Change-Id: I82f3047311bde45c026c78e44adc4985eb07b0e7

5 years agoPin important buffers in CUDA bondeds
Berk Hess [Tue, 16 Oct 2018 08:50:20 +0000 (10:50 +0200)]
Pin important buffers in CUDA bondeds

This allows for asynchronous transfers.

Change-Id: I0f251c17bdd44856bf773641633e8fa78e6be894