alexxy/gromacs.git
5 years agoFinish removing group-scheme all-vs-all support
Mark Abraham [Mon, 7 Jan 2019 01:19:46 +0000 (02:19 +0100)]
Finish removing group-scheme all-vs-all support

These kernels haven't been callable since before GROMACS 4.6

No release notes entry as no functionality is actually changed with
this commit.

Fixes #1095

Change-Id: I3de3b9bbabaafae70fee4e9845880c973e8dc352

5 years agoConvert t_vcm to C++, plugging a memory leak
Kevin Boyd [Sun, 23 Dec 2018 01:13:26 +0000 (20:13 -0500)]
Convert t_vcm to C++, plugging a memory leak

Change init function to constructor

Extract COM log file writing from init to a function

Make do_md owner of t_vcm with unique_ptr

Move initialization of t_vcm out of init_md

Change pointer arrays to vectors where possible. Where not
possible, we now free dynamically allocated resources in destructor.

Change-Id: I711a8d81ec0343969dcb437d9a3b8a474d291e87

5 years agoSplit nbnxn pairlist types for CPU and GPU
Berk Hess [Wed, 31 Oct 2018 22:21:56 +0000 (23:21 +0100)]
Split nbnxn pairlist types for CPU and GPU

Split nbnxn_pairlist_t into NbnxnPairlistCpu and NbnxnPairlistGpu.
Now all members are used in each struct in the respective code paths.
Templated make_nbnxn_pairlist_part on pairlist type.
This change is only refactoring, except for changing an assert
to a release assert.

Note that currently the two list types have some members in common,
but most of those will dissappear in followup changes.

Change-Id: Ic53585066874c4a42539a1b1bc68b756dda3f19e

5 years agoReplace NBNXN_CPU_CLUSTER_I_SIZE by c_nbnxnCpuIClusterSize
Berk Hess [Mon, 17 Dec 2018 14:32:36 +0000 (15:32 +0100)]
Replace NBNXN_CPU_CLUSTER_I_SIZE by c_nbnxnCpuIClusterSize

Change-Id: Id144a1d6bc28f753a2eca055b4f24a1e4239cd2e

5 years agoChange gmx_localtop_t to C++
Paul Bauer [Thu, 13 Sep 2018 12:19:40 +0000 (14:19 +0200)]
Change gmx_localtop_t to C++

Changes the localtop topology structure to C++.

Cases where the object could be allocated on the stack have
been changed in that way. In other places, unique_ptr is now
used for the allocation.

Changed callers that returned a pointer to a new gmx_localtop_t
to instead take a pointer to the datastructure that will be
populated.

gmx_localtop_t is by default managing its own memory, but can be changed
to not do this. This is needed for the domain decomposition as it is not
expected to free memory owned by mtop there.

This is part of the larger aim of modernizing the topology
datastructures to C++.

Changed const pointers to const references where encountered during the
change.

Change-Id: I619533f5dc332332f1652afb24266bc2dae67d4c

5 years agoFix clang 6 warning
Szilárd Páll [Wed, 2 Jan 2019 18:34:28 +0000 (19:34 +0100)]
Fix clang 6 warning

Change-Id: If90d02a5eb93abf2b687f5449f4201138da17ab0

5 years agoFree topology in non-DD simulations
Kevin Boyd [Wed, 2 Jan 2019 01:22:59 +0000 (20:22 -0500)]
Free topology in non-DD simulations

Followup to commit 0926c8a6

Without DD, a number of fields in the localtop are dynamically
allocated and not freed, but functionality existed to free them
that hadn't been called.

Change-Id: I82b8d08234722dfd8d8d3f948512458ee105c5ad

5 years agoMerge branch release-2019
Mark Abraham [Wed, 2 Jan 2019 10:56:32 +0000 (11:56 +0100)]
Merge branch release-2019

Change-Id: I71d9bc751e14f821392f802ee9222b864f1e69b6

5 years agoPrepare for 2019.1
Paul Bauer [Mon, 31 Dec 2018 11:26:26 +0000 (12:26 +0100)]
Prepare for 2019.1

Change-Id: Ibdf643605a1fb6e7054d39a35f1a90b794bd5c3e

5 years agoGROMACS 2019 release
Paul Bauer [Fri, 14 Dec 2018 13:43:01 +0000 (14:43 +0100)]
GROMACS 2019 release

Updated regressiontest hash and added release information in docs.

Change-Id: I69baae6982b58b73161166f9d2c3a397b7efa8b0

5 years agoFix release notes typo
Szilárd Páll [Mon, 31 Dec 2018 15:24:46 +0000 (16:24 +0100)]
Fix release notes typo

Change-Id: Ib8c390f643512e30299db2319b12bb0bdb78815d

5 years agoAdd CUDA CC 7.5 (Turing) support with nvcc
Szilárd Páll [Fri, 21 Dec 2018 19:17:33 +0000 (20:17 +0100)]
Add CUDA CC 7.5 (Turing) support with nvcc

Left commented out code for clang native CUDA build flag generation as
current clang (7.0) does not support sm_75.

Fixes #2814

Change-Id: Ie59c8c887e9d81d7a65136e0445291fd718c88dc

5 years agoOnly report intra-sim communication with multiple ranks
Kevin Boyd [Tue, 25 Dec 2018 01:46:48 +0000 (20:46 -0500)]
Only report intra-sim communication with multiple ranks

Fixes #2807

Change-Id: I01bec8cf9983dc37cd5ad8f29031073c31b2a384

5 years agoMerge branch release-2018 into release-2019
Paul Bauer [Mon, 31 Dec 2018 09:53:50 +0000 (10:53 +0100)]
Merge branch release-2018 into release-2019

Final merge before release of 2019.

Change-Id: I19963b7248095b2f9b6f6425e756218eb82afb93

5 years agoMoved generic simulationdatabase code to testutils.
David van der Spoel [Sun, 30 Dec 2018 16:25:50 +0000 (17:25 +0100)]
Moved generic simulationdatabase code to testutils.

Change-Id: Ib10473efd727d9eb7e296a7d75cdb2a28ad31cce

5 years agoFree more memory in constraints cleanup
Kevin Boyd [Sun, 30 Dec 2018 00:31:52 +0000 (19:31 -0500)]
Free more memory in constraints cleanup

Plug several end-of-MD memory leaks

Change-Id: I54c73723b0b4618eb3747be36ae848fcaa015551

5 years agoMoved input files for tests to simulation database.
David van der Spoel [Sun, 30 Dec 2018 13:16:35 +0000 (14:16 +0100)]
Moved input files for tests to simulation database.

Removed three duplicate files.

Change-Id: I750ce3875d11b5ecd098c58288df9d33c926432f

5 years agoImplemented native normal mode analysis tests.
David van der Spoel [Sat, 8 Dec 2018 17:35:39 +0000 (18:35 +0100)]
Implemented native normal mode analysis tests.

Moved the normal mode analysis tests from the regression
test set to core gromacs.

In order to do so the tests were converted to use the
Verlet scheme which leads to minor changes in the eigenvalues
produced by the normal modes analysis.

Part of #2771

Change-Id: Ice2e4423d8f48f1656aaa296e9207fda3bc4d233

5 years agoChange t_extmass pointers to std::vector
Kevin Boyd [Tue, 18 Dec 2018 03:18:16 +0000 (22:18 -0500)]
Change t_extmass pointers to std::vector

Using std::vector in t_extmass fixes a leak in do_md.

Used arrayRefs to view arrays in NHC_trotter

Refs #2693

Change-Id: I6bd84952fb7a470879ddd665183680c865e22fc2

5 years agoConvert gmx_stochd_t to C++
Kevin Boyd [Thu, 20 Dec 2018 14:43:30 +0000 (09:43 -0500)]
Convert gmx_stochd_t to C++

Changed raw arrays to std::vector

Moved init functionality into constructor

Made owning gmx_update_t use a unique_ptr

Changed functions using struct to take constant references

Change-Id: I3664d9cc2b7e89eba57ad36a89e9c44b7895a7ef

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 agoDocument OpenCL timer issue.
Paul Bauer [Fri, 21 Dec 2018 15:04:34 +0000 (16:04 +0100)]
Document OpenCL timer issue.

Refs #2689

Change-Id: I03964cc239aa423713793f5bd0e38d8afe19b0da

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 agoFix mdrun -nb GPU on non-gpu builds
Paul Bauer [Fri, 21 Dec 2018 13:03:03 +0000 (14:03 +0100)]
Fix mdrun -nb GPU on non-gpu builds

Added function to check if build supports GPU for nonbonded.

Fixes #2812

Change-Id: I7f907d402dcd7c9f8964d42412125c23c0615909

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 agoRuntime check of device OpenCL support
Szilárd Páll [Tue, 13 Mar 2018 21:40:40 +0000 (22:40 +0100)]
Runtime check of device OpenCL support

This change adds a runtime check of the OpenCL device version support
against the minimum requirement along some minor refactoring.

Fixes #2450

Change-Id: I0622d8f93b97d877d40fbaa65194f0db8442ffd5

5 years agoFix unused parameter warning
Mark Abraham [Sat, 22 Dec 2018 05:31:23 +0000 (06:31 +0100)]
Fix unused parameter warning

bs_mac sometimes doesn't find gettimeofday, and in any
case we should never have such a warning.

Change-Id: Ib425495ef05f4c40f920fa8285cb43c2e6292e57

5 years agoAdd a sanity check for OpenCL devices
Aleksei Iupinov [Tue, 27 Feb 2018 11:20:14 +0000 (12:20 +0100)]
Add a sanity check for OpenCL devices

Introduced some type traits to support RAII types for OpenCL handles,
so that we can safely free resources when responding to OpenCL API
error codes, and do so with usefully descriptive error messages.

The new infrastructure is used to implement a check that an OpenCL GPU
can execute a dummy kernel.

Fixed some broken docs, and updated some function naming for new
style.

Fixes #2420

Change-Id: Id99786d24f77b4b56669b5cfcd3a39aa0116cfca

5 years agoMissing factor of 2 in cos-acceleration
Jiannan Liu [Wed, 19 Dec 2018 00:08:19 +0000 (19:08 -0500)]
Missing factor of 2 in cos-acceleration

The bug was introduced in commit 69470fc4e9fd990eb53b22c17dc7a699c583d126

Last working version is 2016.5

Affected 2018 and 2019

Fixes #2572

Change-Id: Ibad31b0d8cec7c5f4b77a73b1fbab0ff114b50b6

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 agoMake jenkins own-fftw verify use local tarball
Szilárd Páll [Mon, 17 Dec 2018 21:30:07 +0000 (22:30 +0100)]
Make jenkins own-fftw verify use local tarball

We should not bombard the FFTW servers with downloads, plus these can be
relatively slow too, so use our local ftp server instead.

Change-Id: Id6ccebf0ac1ae6410cd4f7f13f2ff76d275af5d2

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 agoFix CUDA compiled target-device compatibility check
Szilárd Páll [Tue, 18 Dec 2018 00:43:10 +0000 (01:43 +0100)]
Fix CUDA compiled target-device compatibility check

The check that should catch cases where the binary does not contain
suitable code for the otherwise supported GPU architecture was
erroneously called from the initialization which is too late to
actually trigger it as the error that is meant to prevent will be
already triggered when the sanity checker tries to launch the dummy
kernel.
This change moves the check in question into the sanity checking and
keeps the fatal error as this is a rare condition that's unexpected
and typically a result of a misconfiguration at GROMACS build time.

Fixes #2811

Change-Id: I3762f51077a7c7c80b533860758bbab385b8a1fe

5 years agoCorrect CUDA compatibility check
Szilárd Páll [Mon, 17 Dec 2018 23:57:25 +0000 (00:57 +0100)]
Correct CUDA compatibility check

The CUDA compatibility check became ineffective after the deprecation of
Fermi as it could not detect and flag these GPUs correctly as
"incompatible" but instead was throwing a kernel execution error when
trying to launch the sanity checker kernel.

This change does the minimal necessary corrections for the now
deprecated Fermi arch to be correctly detected. As expected, CPU
fallback can now automatically selected (unless the user request a GPU).

Minor refactoring was also necessary, but was kept at minimum.

Fixes #2810

Change-Id: I81bf12cca43a2a5e16d48d9faf4b9fc9627e4452

5 years agoMerge "Merge branch release-2018 into release-2019" into release-2019
Szilárd Páll [Thu, 20 Dec 2018 17:02:33 +0000 (18:02 +0100)]
Merge "Merge branch release-2018 into release-2019" into release-2019

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 agoRestrict number of OpenMP threads during testing.
M. Eric Irrgang [Mon, 19 Nov 2018 10:13:31 +0000 (13:13 +0300)]
Restrict number of OpenMP threads during testing.

The default testing configuration causes errors
when run on many-core systems, requiring additional user input to
guide resource allocation. This change borrows the solution used
in the mdrun tests, setting `OPENMP_THREADS 2` in the CMake macro
`gmx_register_gtest_test()`.

Refs #2765

Change-Id: Ia05ca6130b60b4b6ccdb4e13e3afe1e5c7419fd3

5 years agoMissing factor of 2 in cos-acceleration
Jiannan Liu [Wed, 19 Dec 2018 00:08:19 +0000 (19:08 -0500)]
Missing factor of 2 in cos-acceleration

The bug was introduced in commit 69470fc4e9fd990eb53b22c17dc7a699c583d126

Last working version is 2016.5

Affected 2018 and 2019

Fixes #2572

Change-Id: Ibad31b0d8cec7c5f4b77a73b1fbab0ff114b50b6

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 agoMerge branch release-2018 into release-2019
Paul Bauer [Mon, 17 Dec 2018 08:58:48 +0000 (09:58 +0100)]
Merge branch release-2018 into release-2019

Resolved Conflicts:
src/gromacs/ewald/pme-solve.cu
src/gromacs/mdlib/clincs.cpp
src/programs/mdrun/md.cpp
src/programs/mdrun/tests/CMakeLists.txt

Change-Id: I813b4ed7ecf8056db09ab749c367a3b5e204e701

5 years agoFix LINCS triangle constraining with OpenMP
Berk Hess [Thu, 13 Dec 2018 11:06:54 +0000 (12:06 +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: Ia9a402f3ada87dbf73f74eda943b3fa4bfb3559b

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 agoRemove unused MdrunComparisonFixture
Roland Schulz [Thu, 13 Dec 2018 18:04:38 +0000 (10:04 -0800)]
Remove unused MdrunComparisonFixture

For 2018 branch it is unused. For 2019 branch it has been
rewritten (c74114338714). Global variable causes SegFault
with ICC and GCC new C++ ABI (_GLIBCXX_USE_CXX11_ABI).

Fixes #2801

Change-Id: Ia41178aaa6e963b05cd4c1e52b8ca0d5946a569c

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 agoMake large PME grids work on GPU
Berk Hess [Wed, 5 Dec 2018 08:54:07 +0000 (09:54 +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 error.

Fixes #2779

Change-Id: I0833609f64ad2e0ad6b7a799cf2b693f2dec3939

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