alexxy/gromacs.git
5 years agoUse std::swap in LINCS
Szilárd Páll [Thu, 13 Dec 2018 15:22:19 +0000 (16:22 +0100)]
Use std::swap in LINCS

Change-Id: I1604183ec39cd4f4ff6fdc7b6aecd90dd5efb02e

5 years agoUse AtomPair for LINCS indexing
Berk Hess [Thu, 13 Dec 2018 11:17:48 +0000 (12:17 +0100)]
Use AtomPair for LINCS indexing

Cleaned up the LINCS atom indexing by adding an AtomPair struct.
Changes name of atom list from bla to atoms.
Also added more variable scope localization.

Change-Id: If665864dc40d4bb039b4806b4a54fe3aeebd98fc

5 years agoThe tests for LINCS and SHAKE constraints.
Artem Zhmurov [Fri, 7 Dec 2018 14:24:30 +0000 (15:24 +0100)]
The tests for LINCS and SHAKE constraints.

The tests for LINCS are first introduced,
SHAKE tests are migrated here from a separate
file.

The tests are performed on simple systems of two
to four bonds as well as on the peptide of three
amino acids. The tests ensure that the final length
of each constrain is equal to the target length.
For the peptide tests with HBonds and AllBonds
constrained, there is an additional check that
the final coordinates of all atoms correspond to the
reference set of values.

Free energy evaluation, virial and velocity constraints
are not yet tested.

Change-Id: Ic3a5c73a7e3223c0b7aafde9a0947e89e611f7b8

5 years agoUse arrayref in LINCS
Berk Hess [Thu, 13 Dec 2018 10:18:15 +0000 (11:18 +0100)]
Use arrayref in LINCS

All pointers have been replaced by gmx::ArrayRef, except for those
uses in SIMD code. Also made all variables scope local and replaced
const pointers by const references.

Change-Id: Ia09c51a1035991034dbaa2cc99a90d1316f3521e

5 years agoUse std::vector for trotter_seq
Kevin Boyd [Tue, 18 Dec 2018 02:37:58 +0000 (21:37 -0500)]
Use std::vector for trotter_seq

Fixes an mdrun leak as well

Change-Id: Ib4c708839cc617353b9b038496f10e1b623e4db7

5 years agoMake all thread-mpi threads release cr structure
Kevin Boyd [Fri, 21 Dec 2018 00:10:46 +0000 (19:10 -0500)]
Make all thread-mpi threads release cr structure

done_commrec had only been called on master thread, leading to
potential leaks

Change-Id: I03215880e9ded9c18dc0642357889f9e469f2a4f

5 years agoRemove unused function declarations in update.h
Kevin Boyd [Sat, 22 Dec 2018 00:22:50 +0000 (19:22 -0500)]
Remove unused function declarations in update.h

These were flagged by Pascal as unused. According to
git blame, the last time these declarations were touched
was in 2013

Change-Id: Ic52e8460d2e3867e6c2ddd2aded034501470feff

5 years agoFix small leaks in do_md cleanup
Kevin Boyd [Mon, 17 Dec 2018 21:43:50 +0000 (16:43 -0500)]
Fix small leaks in do_md cleanup

Change-Id: Ia9a8597e07ab0c45320bfc1d036a99d93d6443d9

5 years agomdspan - basic_mdspan and mdspan declaration
Christian Blau [Tue, 4 Dec 2018 11:53:58 +0000 (12:53 +0100)]
mdspan - basic_mdspan and mdspan declaration

basic_mdspan provides the core functionality for multidimensional array
indexing by combining multidimensional index evaluation, and memory
access.

mdspan is defined as basic_mdspan with wrapped indices, basic_accessor
policy and right-aligned memory layout.

Change-Id: I3eacb734e35a977387c5f023afe636f78ee64eac

5 years agoUse label to select doxygen version
Teemu Murtola [Sun, 23 Dec 2018 19:17:19 +0000 (20:17 +0100)]
Use label to select doxygen version

Change-Id: Ic5276e846867e1dd77250500dcb8693946258e0c

5 years agoRevert "Removed t_topology from gmx msd"
David van der Spoel [Sat, 22 Dec 2018 13:28:55 +0000 (14:28 +0100)]
Revert "Removed t_topology from gmx msd"

This reverts commit b9e0922af7eccbb4b9110dd0ea99cdac0244a27a.

See #2815

Change-Id: Ie0ae90febf1e170b2c1743ef63b36a567fdabff4

5 years agoImprove nbnxn cjFromCi() function
Berk Hess [Mon, 17 Dec 2018 13:44:06 +0000 (14:44 +0100)]
Improve nbnxn cjFromCi() function

When the nbnxn j-cluster size is smaller than the i-cluster size,
a j-subcluster index is needed. This is now added to the cjFromCi()
function instead of handling it in multiple places in the code.

Change-Id: Ia527938e5b6b7bb73ee42f907ca979bca417e89c

5 years agoFree global_stat at end of do_md
Kevin Boyd [Wed, 19 Dec 2018 01:23:28 +0000 (20:23 -0500)]
Free global_stat at end of do_md

Freeing function existed but hadn't been called. Fixes
small leak

Change-Id: I1ee94ffc345beb0089e6aaa070bdcb0371728311

5 years agoCall wallcycle counter cleanup function
Kevin Boyd [Thu, 20 Dec 2018 23:38:56 +0000 (18:38 -0500)]
Call wallcycle counter cleanup function

Cleans leak from unfreed wallcycle at end of mdrunner

Change-Id: I18c9a4eb961c1480230dda98c02f75e3796aa3b4

5 years agoFix leak in legacymdrunoptions
Kevin Boyd [Fri, 21 Dec 2018 00:37:18 +0000 (19:37 -0500)]
Fix leak in legacymdrunoptions

Free gmx_output_env_t in class destructor

Change-Id: I4eb6520ac56a9469c2949893888bcc2db21b647b

5 years agoFix small leak in forcerec
Kevin Boyd [Wed, 19 Dec 2018 02:08:00 +0000 (21:08 -0500)]
Fix small leak in forcerec

Change-Id: I09890bffdd88eaa5d691bd3584735787e2c626ad

5 years agomdspan - basic accessor policy
Christian Blau [Thu, 29 Nov 2018 10:07:03 +0000 (11:07 +0100)]
mdspan - basic accessor policy

Executes the canonical memory access, given a linear index, where memory
index positions from an intial pointer is adressed.

Change-Id: Ia44ccf78e8c9d1604220ebb1636099ebae48cc4a

5 years agomdspan - mapping for right layout
Christian Blau [Tue, 4 Dec 2018 11:10:21 +0000 (12:10 +0100)]
mdspan - mapping for right layout

Introduces a mapping from multdimensional integer space [0...N0) x .. x
[0..Nm) to one-dimensional integers N. In the mdspan context, this will
be used in a later patch to evaluate the memory offset to address
elements in multdimensional arrays.

The layout_right for mdspan, indexes multidimensional arrays with the
fastest changing dimension last, i.e., C-style, row-major for
two-dimensional arrays.

Change-Id: I0f9950bd4a40543c2cad6fe5b2bd668bb42d6784

5 years agoRemoved t_topology from gmx msd
David van der Spoel [Wed, 5 Dec 2018 14:55:13 +0000 (15:55 +0100)]
Removed t_topology from gmx msd

Removed t_topology but needed to introduce some new code from
block.h and topologyinformation.h to make it work.

Part of #1862

Change-Id: If7f7e2ac1cbcf1f87cb1032fb7ebf8624063baef

5 years agoMerge "Merge release-2019 branch into master"
Paul Bauer [Wed, 19 Dec 2018 05:27:01 +0000 (06:27 +0100)]
Merge "Merge release-2019 branch into master"

5 years agoMerge release-2019 branch into master
Szilárd Páll [Tue, 18 Dec 2018 16:30:28 +0000 (17:30 +0100)]
Merge release-2019 branch into master

Change-Id: Ie08781a0f40b2c92321e605db91d047a4451d2b2

5 years agoUse std::vector in LINCS
Berk Hess [Tue, 11 Dec 2018 16:04:19 +0000 (17:04 +0100)]
Use std::vector in LINCS

All manually managed pointers in the LINCS code have been replaced
by std::vector. To limit the size of this change, some plain pointers
have been retained for access.

Change-Id: Ida6365bd9334b1871bc35e3c2b3066c242d2878a

5 years agoFix GMX_BUILD_OWN_FFTW_URL CMake cache entry type
Szilárd Páll [Mon, 9 Apr 2018 17:23:03 +0000 (19:23 +0200)]
Fix GMX_BUILD_OWN_FFTW_URL CMake cache entry type

The type of the GMX_BUILD_OWN_FFTW_URL cache entry was set to "PATH"
and as a result CMake was expecting its content to be a directory.
This commit changes the type to "STRING" and as a result the '////'
workaround in the default fftw URL and custom URLs can now be passed on
the command line which previously did not work as CMake interpreted most
inputs as relative file system paths and converted them to absolute
ones.

Change-Id: I6ed3920d7816b686a031c1a3aee5acd25d7b4692

5 years agoAdd matrix entry to test external FFTW build
Paul Bauer [Sat, 15 Dec 2018 17:12:07 +0000 (18:12 +0100)]
Add matrix entry to test external FFTW build

Added build option and configuration to test building GROMACS with
GMX_BUILD_ONW_FFTW to catch associated issues.

Refs #2809

Change-Id: I6c8a9fc415be5386c8b336c3f4dabdac49680130

5 years agoFix FFTW build
Paul Bauer [Sat, 15 Dec 2018 16:19:37 +0000 (17:19 +0100)]
Fix FFTW build

Fixed the build with GMX_BUILD_OWN_FFTW terminating with a linker issue.

Fixes #2809

Change-Id: Ie1323601da220bf28d7cb00d33b520b66d9de05f

5 years agoFix memory leaks in ns cleanup
Kevin Boyd [Sat, 15 Dec 2018 23:43:43 +0000 (18:43 -0500)]
Fix memory leaks in ns cleanup

Added some missing sfrees to cleanup function

refs #2693

Change-Id: I1e1455794778139d3a3866e00c05f4ed97aea07c

5 years agoFix memory leak at end of do_md
Kevin Boyd [Sun, 16 Dec 2018 00:25:19 +0000 (19:25 -0500)]
Fix memory leak at end of do_md

Without domain decomposition, the atomtypes field of localtop is
dynamically allocated and needs freeing after mdrun

Refs #2693

Change-Id: I45d18c503a87832332868e7fb9b63720548f243c

5 years agoCopy parallelisation info from old webpage
Paul Bauer [Thu, 16 Nov 2017 08:52:18 +0000 (09:52 +0100)]
Copy parallelisation info from old webpage

Copied the information for parallelisation from old webpage
to the user guide. Removed some redundant information.

Refs #2297, #2146, #2656

Change-Id: Id472ab779a6e2ca982b117a95429898a0277dc23

5 years agoGROMACS 2019 Release candidate
Paul Bauer [Thu, 6 Dec 2018 12:34:02 +0000 (13:34 +0100)]
GROMACS 2019 Release candidate

Updated regressiontest hash as usual.

Change-Id: Ia938ee4a936d21eac6beb5244a3f2fab87b35240

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 agoUse more const references in topology code
Paul Bauer [Thu, 6 Dec 2018 10:09:56 +0000 (11:09 +0100)]
Use more const references in topology code

Change-Id: I8fd2e443c0c5cf1ca19714efd175b8e7132dbe2c

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 agoAdded new testing code for normal mode analysis.
David van der Spoel [Fri, 23 Nov 2018 21:05:22 +0000 (22:05 +0100)]
Added new testing code for normal mode analysis.

Part of #2771

Change-Id: Ifb44841b36be5076fe8d77d5982876f881fdc69b

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 agoSmall update to mdrun tests.
David van der Spoel [Fri, 30 Nov 2018 14:10:57 +0000 (15:10 +0100)]
Small update to mdrun tests.

To be able to run tests with different cut-offs new
variable rcoulomb and rvdw are introduced.

To be able to do high precision tests (normal mode
analysis) g96 files can be read now.
Change-Id: I9265022f516b66815aa7bc516b71918fdc6f417a

5 years agomdspan - extents of multidimensional arrays.
Christian Blau [Tue, 4 Dec 2018 10:46:31 +0000 (11:46 +0100)]
mdspan - extents of multidimensional arrays.

Extents describe the number of elements along a certain dimension, a
multidimensional index space of rank R. This is equivalent to the
Cartesian product space of integer intervals [0, N_0) x [0, N_1) x ... x
[0,N_{R-1} )

The extents class distinguishes between extents known at compile time
(static) or at run time (dynamic). Static extents are templated to allow
compile time indexing evaluation (part of later patch).

Confer to P0009r8 of the Library Evolution Working Group and
mdspan.extents

Source code copied and modified from Oakridge National Labs repository.

https://github.com/ORNL/cpp-proposals-pub/tree/master/P0009/reference-implementation/include/experimental/bits

Refers #2281

Change-Id: I5301f172fa1d891bcf929a70e3765a2c52b3d8b8

5 years agoRemoved gmx morph
David van der Spoel [Tue, 4 Dec 2018 10:30:54 +0000 (11:30 +0100)]
Removed gmx morph

Part of #1323

Change-Id: Ife56a50e61e4859fa20a39a1be59e828d511fd09

5 years agoRemoved gmx dyndom
David van der Spoel [Tue, 4 Dec 2018 10:14:36 +0000 (11:14 +0100)]
Removed gmx dyndom

Part of #1323

Change-Id: I07f5cfed364e13fbd6a8b6e0fc94b4b15ef67589

5 years agoRemoved gmx anadock
David van der Spoel [Tue, 4 Dec 2018 10:09:48 +0000 (11:09 +0100)]
Removed gmx anadock

Part of #1323

Change-Id: I77c04e08a8245db38530e9aa4113447cc02672a8

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 agoMerge "Merge branch 'release-2019'"
Mark Abraham [Thu, 22 Nov 2018 15:55:10 +0000 (16:55 +0100)]
Merge "Merge branch 'release-2019'"

5 years agomdspan - basic infrastructure
Christian Blau [Thu, 22 Nov 2018 10:19:05 +0000 (11:19 +0100)]
mdspan - basic infrastructure

Setting up directory to contain a stripped-down and modified-for-GROMACS
version of a reference implementation of the LEWG P0009 proposal,
revision 8:
"mdspan: A Non-Owning Multidimensional Array Reference"

Original code is available at
https://github.com/ORNL/cpp-proposals-pub/tree/master/P0009/reference-implementation/include/experimental

Refers to #2281

Change-Id: I4b8dee54e923d269d38e1f71c4e89526768ef42e

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-2019'
David van der Spoel [Wed, 21 Nov 2018 18:39:51 +0000 (19:39 +0100)]
Merge branch 'release-2019'

Change-Id: Ia4dafd57f56f97eae4c7660f27fe761086be25c5

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 agoBump gmxapi version number for 2020 development cycle.
M. Eric Irrgang [Fri, 16 Nov 2018 12:42:59 +0000 (15:42 +0300)]
Bump gmxapi version number for 2020 development cycle.

Refs #2764

Change-Id: Ib0b1e4408250748dd41356894eb482917e669f0c

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 agoMerge "Merge release-2019 into master"
Mark Abraham [Tue, 20 Nov 2018 04:56:28 +0000 (05:56 +0100)]
Merge "Merge release-2019 into master"

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 agoMerge release-2019 into master
Roland Schulz [Thu, 15 Nov 2018 04:43:48 +0000 (20:43 -0800)]
Merge release-2019 into master

Trivial conflicts in:
cmake/gmxVersionInfo.cmake
src/gromacs/listed-forces/manage-threading.cpp
src/gromacs/utility/coolstuff.cpp

Change-Id: Ic23b55432a22a4a79da09e72b609615d2b421128

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 agoConvert unhelpful assertion to better documentation.
M. Eric Irrgang [Fri, 16 Nov 2018 14:16:17 +0000 (17:16 +0300)]
Convert unhelpful assertion to better documentation.

The gmxapi::Context does not yet have a rigorous way to manage
initialization of simulations that may or may not have already
partially run. Its currently handling of checkpoint files relies on
assumptions of behavior that is observed, but not guaranteed. A static
assertion reminded developers to double-check assumptions as GROMACS
evolves, but not in a particularly good or helpful way.

Remove unhelpful logic. Improve comments. Make a "to do" and provide
reference to potential further discussion.

Change-Id: I9a2e0bd8768ae8a4036c43694f97e0261fb3709a

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