alexxy/gromacs.git
6 years agoMerge branch release-2016 into release-2018
Mark Abraham [Tue, 9 Jan 2018 07:42:07 +0000 (08:42 +0100)]
Merge branch release-2016 into release-2018

Change-Id: I22d5b28794a4bbb3b122af339a282695aa64f266

6 years agoDo not turn on DLB at replica exchange
Berk Hess [Mon, 8 Jan 2018 21:45:46 +0000 (22:45 +0100)]
Do not turn on DLB at replica exchange

Turning on DLB right after exchanging replicas caused an assertion
failure and is also useless.

Fixes #2298

Change-Id: I20c3cb6ef3d74907d53d447fa9b0c9168f03c769

6 years agoFix triclinic domain decomposition bug
Berk Hess [Mon, 8 Jan 2018 18:37:34 +0000 (19:37 +0100)]
Fix triclinic domain decomposition bug

With triclinic unit-cells with vectors a,b,c, the domain decomposition
would communicate an incorrect halo along dimension x when b[x]!=0
and vector c not parallel to the z-axis. The halo cut-off bound plane
was tilted incorrect along x/z with an error approximately
proportional to b[x]*(c[x] - b[x]*c[y]/b[y]).
When c[x] > b[x]*c[y]/b[y], the communicated halo was too small, which
could cause instabilities or silent errors.
When c[x] < b[x]*c[y]/b[y], the communicated halo was too large, which
could cause some communication overhead.

Fixes #2125

Change-Id: I2109542292beca5be26eddc262e0974c4ae825ea

6 years agoFix a few typos in SIMD documentation
Carsten Kutzner [Mon, 8 Jan 2018 10:46:47 +0000 (11:46 +0100)]
Fix a few typos in SIMD documentation

Change-Id: Ia64f936098172eb4e13d3bacf1caa824c43779fc

6 years agoTest that nvcc/host compiler combo works
Erik Lindahl [Fri, 15 Dec 2017 15:16:02 +0000 (16:16 +0100)]
Test that nvcc/host compiler combo works

Compile a trivial CUDA program during CMake time
to catch both unsupported nvcc/host compiler
version combinations and other unknown errors.

Fixes #1616.

Change-Id: I3cc55e4d0db9d6eb01e8a7cd8916cc7a7a1e21fd

6 years agoMake TNG writing work with multiple identical steps
Erik Lindahl [Fri, 29 Dec 2017 09:52:28 +0000 (10:52 +0100)]
Make TNG writing work with multiple identical steps

Introduce a wrapper structure around TNG so we detect
and correct for cases when writing multiple frames with
the same step, or non-zero initial steps to TNG files.
This will avoid frames overwriting each other, and make
sure the time per frame is correct.

Fixes #2189.

Change-Id: I3f44a2681138351d89183e3e196269f2b2f258fc

6 years agoAdd AVX_512 and KNC symbols to FFTW SIMD test
Erik Lindahl [Fri, 5 Jan 2018 10:49:45 +0000 (11:49 +0100)]
Add AVX_512 and KNC symbols to FFTW SIMD test

Otherwise the CMake code might complain loudly about
FFTW not being accelerated on KNC or KNL hosts.

Change-Id: I888936e9cec18436d775cb3c6eedc21335ab0e95

6 years agoRemove FindCUDA from source tarball
Mark Abraham [Tue, 19 Dec 2017 07:25:06 +0000 (18:25 +1100)]
Remove FindCUDA from source tarball

When we decided to bundle FindCUDA.cmake and supporting files to keep
our developer and Jenkins builds free of warnings, we did not take
care to ensure that the user gets the behaviour from their cmake,
since the combination of their cmake and its FindCUDA.cmake is much
more likely to work correctly than their cmake and FindCUDA.cmake from
cmake 3.4.3.

The testing of the release tarball as part of the release workflow
will ensure that we don't silently ship a broken CUDA build.

Refs #2276

Change-Id: I9ed6fa97921eb5c3ce3b4a6ecc401b4dd26e1251

6 years agoImprove frame time/step handling in trjconv
Erik Lindahl [Thu, 28 Dec 2017 13:51:35 +0000 (14:51 +0100)]
Improve frame time/step handling in trjconv

Store the exact step in PDB/GRO file headers,
and be more careful about not claiming to have
time or step information when it was not available.
This change will avoid some of the problems
described in #2189, but it does not yet properly
fix the issue in the TNG library.

Refs #2189.

Change-Id: I44bb59fbca83da53f6e8d4e494ae6476a82eb7cd

6 years agoImplement changes for CMake policy 0068
Erik Lindahl [Wed, 27 Dec 2017 11:50:51 +0000 (12:50 +0100)]
Implement changes for CMake policy 0068

CMake-3.9 introduced a changed behavior for RPATH
vs. install_name options on OS X. This avoids relying
on functionality that will be removed in future
CMake versions.

Change-Id: Ic3697615bc372d09d45dfd007ba5a088624de051

6 years agoAdd test config of GPU build on slave without GPU
Mark Abraham [Mon, 4 Dec 2017 02:57:49 +0000 (13:57 +1100)]
Add test config of GPU build on slave without GPU

This will test that e.g. GPU detection and cleanup code does not give
unexpected fatal errors.

Change-Id: Ic3314777b6f530fe02aa55e05ca3d352eb786d7d

6 years agoFix gmx msd when using COM removal and molecules
Paul Bauer [Wed, 3 Jan 2018 12:31:24 +0000 (13:31 +0100)]
Fix gmx msd when using COM removal and molecules

Changed order of code to actually assign correct coordinates before
copying the data, and modified data structure size when using COM
removal and individual molecules.

Fixes #2043

Change-Id: Ic16f05a589609a43f14fd75753ca8589cf3d8c42

6 years agoFix trjconv for tdump<frame timestep
Erik Lindahl [Wed, 3 Jan 2018 10:48:34 +0000 (11:48 +0100)]
Fix trjconv for tdump<frame timestep

Set frame timestep before starting the loop by
reading first two frames and rewinding, and make
sure we always write something to the dump output
based on best-guess (if there is at least one
input frame present).

Fixes #1832.

Change-Id: Ic1db912c966448e68b307cfc1fd492f4677e7ab4

6 years agoFix index error in gmx chi
Erik Lindahl [Wed, 3 Jan 2018 14:44:01 +0000 (15:44 +0100)]
Fix index error in gmx chi

An error in the index construction could lead
to segfaults. However, the actual indices were
correct, so it should not have produced any
incorrect results.

Fixes #1814.

Change-Id: I191de7248615994d5c0dfb39eccafd53ebbedb67

6 years agoCorrect dihedral restraint section in Manual
Paul Bauer [Wed, 3 Jan 2018 10:39:00 +0000 (11:39 +0100)]
Correct dihedral restraint section in Manual

Fixes #2038

Change-Id: I37bfaa3083efe5721b2d30f4b1038062fc4dbe2b

6 years agoFix complexity for large exclusion orders
Erik Lindahl [Wed, 3 Jan 2018 09:25:09 +0000 (10:25 +0100)]
Fix complexity for large exclusion orders

To avoid exploding computational complexity
for highly connected molecules with large
values for excluded neighbors, avoid
adding a neighbor to the temporary nnb
structure if it is already present as a
lower-order neighbor.

Fixes #2260.

Change-Id: I30c27a281ddcbbac175f79ab9d5bba49f2f988ae

6 years agoFix duplicate warning
Mark Abraham [Wed, 3 Jan 2018 09:17:00 +0000 (10:17 +0100)]
Fix duplicate warning

Thread-MPI, GPUs and energy groups was issuing this warning
twice. Note that no-MPI and real-MPI are still handled correctly -
they warn on the second call, which is the only one made in those
cases.

Fixes #2372

Change-Id: I68eb0505056b8edd5233a6abf1f2e30b09bbacee

6 years agoDon't allow multiple energy groups for GPU runs
Erik Lindahl [Sun, 31 Dec 2017 16:24:23 +0000 (17:24 +0100)]
Don't allow multiple energy groups for GPU runs

Exit with a fatal error instead of only warning, since the
latter leads to writing data for energy groups that
is incorrect to the energy file.

Fixes #1822.

Change-Id: I34ccb10bba6d6e1350283e34ebc908c6f830baab

6 years agoRemove duplications in GMXLIB search paths
Erik Lindahl [Sun, 31 Dec 2017 11:11:10 +0000 (12:11 +0100)]
Remove duplications in GMXLIB search paths

Remove entries that are duplicated, or identical
to the default search path, to avoid e.g.
listing identical force fields multiple times.

Fixes #1928.

Change-Id: Ib3caa116b4a6e1ce50424408832a96da52eba774

6 years agoAvoid FTZ triggering simd test failures
Erik Lindahl [Mon, 25 Dec 2017 21:34:14 +0000 (22:34 +0100)]
Avoid FTZ triggering simd test failures

For very small arguments on platforms without
FMA support, the Intel compiler's default
usage of flush-to-zero for denormal values can
lead to slight deviations. Since this is a
range we really don't care about, and non-FMA
platforms are anyway a thing of the past, just
avoid testing a very small range around that
threshold for non-FMA SIMD platforms.

Fixes #2335.

Change-Id: I7cfb14284e79534f114891ba4dcd1f1c7223faf3

6 years agoDocument required position restraint files
Erik Lindahl [Tue, 2 Jan 2018 23:41:17 +0000 (00:41 +0100)]
Document required position restraint files

Explain properly to users why the files are
suddenly required when it has worked fine without
them for a decade.

Fixes #2237.

Change-Id: I7990994d2da1f1af95b07bb0110b9bfdd89f3e25

6 years agoAllow empty lines in hdb files
Erik Lindahl [Sun, 31 Dec 2017 13:20:10 +0000 (14:20 +0100)]
Allow empty lines in hdb files

Skip lines that consist only of whitespace. Not a universal
solution for fixing hdb files, but better than the user
getting very strange error messages that don't say anything
about whitespace.

Fixes #2028.

Change-Id: I0962c89d0251f83da7fe0440efd31fb7ca468690

6 years agoFix OpenCL compiles on Mac OS
Erik Lindahl [Fri, 29 Dec 2017 22:18:38 +0000 (23:18 +0100)]
Fix OpenCL compiles on Mac OS

Confirmed to work on Mac OS 10.13.2 running
on a Macbook Pro with Radeon Pro 560.

Fixes #2369.

Change-Id: I0b0056075ecbaf7c11e0022ed13e43cfe2e7484c

6 years agoFix membed by calling the proper mtop finalization routine
Mark Abraham [Tue, 2 Jan 2018 07:55:09 +0000 (07:55 +0000)]
Fix membed by calling the proper mtop finalization routine

Fixes #2364
Refs #2371

Change-Id: I27166acec903e4c0cf3b9a54aaf4b9db7d6974b0

6 years agoImprove manual from comments by Gang Liu
Erik Lindahl [Sat, 30 Dec 2017 21:28:47 +0000 (22:28 +0100)]
Improve manual from comments by Gang Liu

Fixes #2078.

Change-Id: If1267822be4963a59bac4dc07f9731c9489cc3e3

6 years agoMake it explicit that time units apply to begin/end times
Erik Lindahl [Sat, 30 Dec 2017 16:55:36 +0000 (17:55 +0100)]
Make it explicit that time units apply to begin/end times

The help documentation could be interpreted as if the
begin/end frame selection was always specified in ps, no
matter what the time unit was set to. This makes it
explicit that the time unit selection applies, and that ps
is just the default unit.

Fixes #2235.

Change-Id: If010a8d6f8e3e1949039ff4f32a5cc00058466e0

6 years agoDon't require matching names between rtp and tdb files
Erik Lindahl [Sun, 31 Dec 2017 14:03:05 +0000 (15:03 +0100)]
Don't require matching names between rtp and tdb files

This was only documented in the source. It's a remnant
from the days when all force fields were in the same
directory, and no longer necessary. With this change we
will properly match all termini to all amino acids.

Fixes #2026, #2027.

Change-Id: Ie7bf8e65892281cc2744146a5525be0c4afdcecf

6 years agoDon't write reference pull group 0 to log
Erik Lindahl [Mon, 1 Jan 2018 23:28:28 +0000 (00:28 +0100)]
Don't write reference pull group 0 to log

This is an internal group used for absolute
references, which cannot be set by users, so
printing it just leads to confusion.

Fixes #2143.

Change-Id: I89ee3a0e3a65855735b745f4ed7615ca47bfd36a

6 years agoFix gmx density for non-mass calculations
Erik Lindahl [Mon, 1 Jan 2018 16:53:00 +0000 (17:53 +0100)]
Fix gmx density for non-mass calculations

Implemented fix proposed by Klark Chen and Reid
Van Lehn so that we always use mass and never
charge/electron density to center systems.

Fixes #2230.

Change-Id: Id49741bd44349d43a27b5f20f4e498d2fd4ba1f9

6 years agoClarify XTC error message
Erik Lindahl [Mon, 1 Jan 2018 20:14:35 +0000 (21:14 +0100)]
Clarify XTC error message

Explain that the fatal error can also be
triggered by coordinates that are NaN, or
if the scaled values cannot be represented
with integers.

Fixes #2152.

Change-Id: I6eec60df48fe3994258bf8dce00ff33328c93f13

6 years agoFirst release candidate for version 2018
Mark Abraham [Tue, 26 Dec 2017 07:59:24 +0000 (18:59 +1100)]
First release candidate for version 2018

Change-Id: I893e4a9c0f2684955554ad537e6d9609e5f83102

6 years agoSeparate canDetectGpus and findGpus futher, and fix tests
Mark Abraham [Thu, 21 Dec 2017 10:56:59 +0000 (21:56 +1100)]
Separate canDetectGpus and findGpus futher, and fix tests

Renamed detect_gpus to findGpus so that no code can silently call
detect_gpus while forgetting to call the required canDetectGpus first.
Some test code is updated accordingly, which should have happened
earlier. The function with the new name now needs no return value, so
the formerly confusing return value of zero for success is no longer
present.

Shifted some more responsibilities from findGpus to canDetectGpus, so
that the latter now has responsibility for ensuring that when it
returns true, the former will always succeed.

Fixed tests that compile with CUDA, but cannot run unless there
are visible comatible devices and a valid context.

Refs #2347, #2322, #2321

Change-Id: I34acf8be4c0f0dcc29e931d83c970ba945865ca7

6 years agoReplace GMX_ALIGNED with alignas and SIMD alignment define
Roland Schulz [Wed, 27 Dec 2017 18:59:04 +0000 (10:59 -0800)]
Replace GMX_ALIGNED with alignas and SIMD alignment define

This allows each platform to define its required or
preferred SIMD alignment, and we avoid using alignments
larger than what might be supported on each architecture.
Also fix overalignment in pairs.

Fixes #2365

Change-Id: I4793adf31d186eade8a1fd8c920ab75c685ad53f

6 years agoSilence POWER8 compiler warnings
Mark Abraham [Tue, 26 Dec 2017 13:01:43 +0000 (14:01 +0100)]
Silence POWER8 compiler warnings

Change-Id: Id116b048d775d36ce8ac942380cfd64deed3bb7e

6 years agoFix quote
Roland Schulz [Tue, 26 Dec 2017 18:51:23 +0000 (10:51 -0800)]
Fix quote

Change-Id: Ic763145c231951cd8e61cf36f3486de7a3d30e30

6 years agoFix builds on ARM & clarify (ARM) GPU support
Erik Lindahl [Tue, 12 Dec 2017 19:29:41 +0000 (20:29 +0100)]
Fix builds on ARM & clarify (ARM) GPU support

Fixed a typo in architecture.h that prevented
the Neon Asimd instructions from being selected,
and updated the CPU brand detection to also look
for a new label with Tegra X1 on Ubuntu 16.04

Clarified in error messages and documentation that
Gromacs in fact does not build all supported GPU
architectures by default, explain the common cases
when things might fail, exactly what the user
should do to enable the support, and how the
support strings should be formatted.

Fixes #2287.

Change-Id: I87a2eb81ee11b78f072e3ef359a00c75eb7ec24b

6 years agoMerge branch release-2016 into release-2018
Mark Abraham [Fri, 22 Dec 2017 14:11:52 +0000 (01:11 +1100)]
Merge branch release-2016 into release-2018

Change-Id: I909443584916c574f94b38d0aab2701163faecad

6 years agoMerge branch release-5-1 into release-2016
Mark Abraham [Thu, 21 Dec 2017 14:00:56 +0000 (01:00 +1100)]
Merge branch release-5-1 into release-2016

Change-Id: Ic4aa87c01dfe281c9c8aa31fbc0f7f9fcbe9752d

6 years agoBump minor version for theoretical new release
Mark Abraham [Thu, 21 Dec 2017 13:56:25 +0000 (00:56 +1100)]
Bump minor version for theoretical new release

Change-Id: I54152717d87ad84e7fa5549887b587aa10fe43e4

6 years agoDocumentation and fixes for physical validation
Pascal Merz [Thu, 14 Dec 2017 22:55:34 +0000 (15:55 -0700)]
Documentation and fixes for physical validation

Addresses #2349

Adds documentation for the physical validation suite in
docs/dev-manual/physical_validation.rst

As this was misunderstandable, changed the default behavior of
`make check-phys` and `make check-all` to actually run the simulations.
This might take very long, but since the physical validation tests need to
be turned on explicitly via cmake option, the chances of somebody using the
tests by mistake are low. The `check` targets are:

* `make check`: Run unit and regression tests (unchanged)
* `make check-phys`: Run simulations needed for physical validation, then
  run physical validation tests
* `make check-phys-analyze`: Only run physical validation tests, assuming
  that simulations were run previously and are available.
* `make check-all`: Combination of `make check` and `make check-phys`

Additionally, `make check-phys-prepare` can be used to prepare GROMACS
input files and a script to run the simulations needed for the physical
validation tests.

Bugfixed dependecy issue that attempted to run validation test before
target `gmx`.

Fix in physical_validation package to avoid including matplotlib by default
(and hence requiring X and Gtk).

Improved output of physical validation script (update while running
simulation, info about script after preparing input files, etc).

Additional minor changes not mentioned in #2349:

* Allowing name of test to be different of directory of input files, which
  allows to define several tests on the same input files.
* Adapted some tests - more thorough checking of ensembles (check
  temperature- and pressure-dependence separately *and* collectively), and
  updated tolerance levels.
* Bumped physical_validation package to newest version to include bugfixes
  and stability improvements.

Change-Id: I7219f5392ed068ba1b2e13b30efe5aa4e36ff586

6 years agoUpdate double-precision test configurations
Mark Abraham [Thu, 7 Dec 2017 04:36:49 +0000 (15:36 +1100)]
Update double-precision test configurations

These changes improve coverage of double precision, using more release
mode, particularly with latest gcc and icc, and using 128-bit SIMD,
which have been cases that were buggy recently. The other aspects of
the configurations that have been modified have been
non-critical. Where appropriate, brief rationales are recorded. This
resolves an old TODO item in the post-submit matrix.

Fixed a sign mismatch in initializing an OpenCL variable that didn't
need to be initialized.

Noted relevant new TODOs.

Refs #2300, #2325, #2326, #2334, #2335, #2336, #2337, #2338

Change-Id: I131fa1a6776d1e7809799c3f931a1fc8100fcdc9

6 years agoVersion 5.1.5
Mark Abraham [Thu, 21 Dec 2017 08:47:01 +0000 (19:47 +1100)]
Version 5.1.5

Bumped SOVERSION_MINOR and REGRESSIONTEST_HASH

Change-Id: Ie62ecacbe53f4f39e4592a7593ed53ffe47fd642

6 years agoUpdate checks for BuildOwnFFT
Roland Schulz [Wed, 20 Dec 2017 19:42:17 +0000 (11:42 -0800)]
Update checks for BuildOwnFFT

- Allow on Windows (e.g. WSL, Mingw)
- Disallow with Ninja (broken)

Fixes #2356

Change-Id: I8ac5dd520f92b882dcaeb009792fae2d6e9f0062

6 years agoSet GMX_GPU_AUTO to FALSE with GMX_GPU defined
Aleksei Iupinov [Wed, 20 Dec 2017 13:16:38 +0000 (14:16 +0100)]
Set GMX_GPU_AUTO to FALSE with GMX_GPU defined

Refs #1985, #2357

Change-Id: I5cada97015ee94717ea6eb988b3a84a351f11293

6 years agoUse new defaultRealTolerance() to stabilise some tests
Mark Abraham [Wed, 20 Dec 2017 11:13:00 +0000 (22:13 +1100)]
Use new defaultRealTolerance() to stabilise some tests

The single-precision values in these tests sometimes failed to compare
equal with string-ified versions when the test was run from a
double-precision build on Windows. That difference may have originated
in how a rounding mode was implemented in different libraries, but
ultimately doesn't matter because the value should not be compared as
if it was computed in double precision.

Change-Id: I9b7c2b9409145cc579229f0866935754e3a9dcac

6 years agoMerge "Merge branch release-2016 into release-2018" into release-2018
Mark Abraham [Wed, 20 Dec 2017 12:33:56 +0000 (13:33 +0100)]
Merge "Merge branch release-2016 into release-2018" into release-2018

6 years agoMerge branch release-2016 into release-2018
Mark Abraham [Tue, 19 Dec 2017 13:23:59 +0000 (00:23 +1100)]
Merge branch release-2016 into release-2018

Change-Id: I2c3aa754de1b8ff971854740da9815fff8a41f0d

6 years agoRemove potentially wrong "per user request" note from npme reporting
Aleksei Iupinov [Tue, 19 Dec 2017 15:40:23 +0000 (16:40 +0100)]
Remove potentially wrong "per user request" note from npme reporting

Refs #2204

Change-Id: Idd2127737b7b1af9cec9f7b547478b8b82cdb59a

6 years agoMake acceleration correction VCM mode work
Berk Hess [Tue, 19 Dec 2017 10:55:25 +0000 (11:55 +0100)]
Make acceleration correction VCM mode work

The new acceleration correction VCM mode did not actually correct
the coordinate for the acceleration, since a null pointer was passed.
Introduced an extra CGLO flag to allow for correction of the
coordinates, but leave the initial coordinates unaffected.

Change-Id: I673793902df7241085fff20c63cf3ce88ef60313

6 years agoThird beta release of 2018
Mark Abraham [Tue, 19 Dec 2017 01:03:45 +0000 (02:03 +0100)]
Third beta release of 2018

Change-Id: I95296a74713ec41a18dd5c866e36b6c0ab66046b

6 years agoFix table tests and improve table construction
Mark Abraham [Mon, 11 Dec 2017 05:36:43 +0000 (16:36 +1100)]
Fix table tests and improve table construction

Since compilers are allowed to use different FMA constructs, we
now allow the consistency check to deviate a few ulps.

For sinc and other extreme functions that oscillate, the
scan over the definition range to locate the minimum quotient
between the 1st and 4th derivative to set the table spacing
exposes some delicate errors. Basically, it is not possible
to have arbitrarily low relative errors for the derivative
for a function that has large magnitude in the same place.
For now we reduce the test interval for sinc(); this should
anyway not be relevant for normal well-behaved MD functional
forms.

Fixes #2336.

Change-Id: I5f999ae871ae21ddc5b59cf78ad8bd27fe2df622

6 years agoMake oversubscription warning consistent
Berk Hess [Fri, 15 Dec 2017 15:12:15 +0000 (16:12 +0100)]
Make oversubscription warning consistent

The hardware thread oversubscription warning was only issued
with OpenMP and without separate PME ranks. Now it actually reduces
the thread count over the physical node.
Also moved the thread affinity up to the earliest possible point.

Refs #2345

Change-Id: Ifdf62c723fd87b0ddaab0df1e2f1bf36b461ea33

6 years agoFix electric field .mdp documentation
Carsten Kutzner [Mon, 18 Dec 2017 16:13:11 +0000 (17:13 +0100)]
Fix electric field .mdp documentation

Typo accidentally introduced in ca9e2450877d00e49

Change-Id: Idc1bf111b65c4e365aad61b2fb83a447d7c58bfd

6 years agoUse reduced default tolerances for tpx comparison
Erik Lindahl [Sun, 17 Dec 2017 10:03:17 +0000 (11:03 +0100)]
Use reduced default tolerances for tpx comparison

The tolerances for gmx check are mainly intended
for handling slight statistical deviations, but they
can hide differences between tpr files, when the
user likely wants exact checks. This changes
changes the default relative tolerance to 0.000001
and the absolute tolerance to zero, so that we only
allow for minor differences due to compiler optimization.

Fixes #2024.

Change-Id: I55b882a194d931bf5c36541e25339b6e1eb0a1e4

6 years agoFix cmake error with emacs lock files in place
Roland Schulz [Fri, 15 Dec 2017 02:19:11 +0000 (18:19 -0800)]
Fix cmake error with emacs lock files in place

Change-Id: If95d6a77303373c7a0bac5299e6f9dacd1fac81c

6 years agoFix typo introduced in b1b1163a245
Roland Schulz [Sun, 17 Dec 2017 20:01:29 +0000 (12:01 -0800)]
Fix typo introduced in b1b1163a245

Change-Id: I288caff40c6252fd059bc2601b4f5afd438aba08

6 years agoChange avx_128_fma build to double
Roland Schulz [Thu, 14 Dec 2017 17:51:48 +0000 (09:51 -0800)]
Change avx_128_fma build to double

Important for:
- Simd4N=Simd4
- sizeof(SimdInt32)!=4*GMX_SIMD_REAL_WIDTH

Change-Id: I79efca09547d84d05533c963d53ed6bf7daf3e7b

6 years agoSupport Simd4N for SimdRealWidth<4
Roland Schulz [Mon, 11 Dec 2017 11:07:51 +0000 (03:07 -0800)]
Support Simd4N for SimdRealWidth<4

If the SIMD with is smaller 4 but Simd4N is supported
then use Simd4 for Simd4N.

Also move Traits into internal namespace to signify that they
are not intended for usage outside of the simd module.

Fixes #2327

Change-Id: I3d49c57cebc5d565df442d01e322c89312771699

6 years agoRemove incorrect/misleading OpenMP message
Roland Schulz [Fri, 15 Dec 2017 01:19:48 +0000 (17:19 -0800)]
Remove incorrect/misleading OpenMP message

Change-Id: I69e8b84a593aeb3dff868a169ac88f17c101ec59

6 years agoRevert "Use table Ewald for Skylake"
Roland Schulz [Fri, 15 Dec 2017 00:49:56 +0000 (16:49 -0800)]
Revert "Use table Ewald for Skylake"

This reverts commit 80c3f0d8ec228c6266ab721cadcb3dca48aad1d1.

After the bugfix of table (12e9ea41a9cee) this isn't the right
choice anymore.

Change-Id: I4c916c1d038c0e7501b1bd9f91ebc89f5afbd2cd

6 years agoMake OpenCL implementation of gpu_utils tests conform
Mark Abraham [Thu, 14 Dec 2017 11:12:34 +0000 (22:12 +1100)]
Make OpenCL implementation of gpu_utils tests conform

These fell out of sync with the CUDA implemention, and can only be
noticed if you run tests from an OpenCL build with no devices
available.

Change-Id: Ib196cf498c2537f814c9153b0279af8fdf01234d

6 years agoAvoid confusing message at end of non-dynamical runs
Mark Abraham [Tue, 12 Dec 2017 09:35:38 +0000 (20:35 +1100)]
Avoid confusing message at end of non-dynamical runs

EM, TPI, NM, etc. are not targets for performance optimization
so we will not write performance reports. This commit fixes
and oversight whereby we would warn a user when the lack of
performance report is normal and expected.

Fixes #2172

Change-Id: I1097304d79701be748612510572382729f7f26be

6 years agoFix return values of frame-reading functions
Mark Abraham [Thu, 14 Dec 2017 03:04:13 +0000 (14:04 +1100)]
Fix return values of frame-reading functions

This function was based on read_first_x that returned the number of
atoms, and was documented to do the same, but has always returned a
logical boolean about whether a frame has been read. This led to
aspects of gmx spatial and gmx trjcat -demux being broken.

Fixed by returning a proper bool, and fixing the remaining logic that
used the return value in a non-boolean sense.

Refs #2157

Change-Id: Ic871b56f68c7dbc654ab11b34ff82932353e6ceb

6 years agoRequire -ntmpi with setting -ntomp with GPUs
Berk Hess [Tue, 12 Dec 2017 15:10:08 +0000 (16:10 +0100)]
Require -ntmpi with setting -ntomp with GPUs

With GPUs and thread-MPI, setting only -ntomp could lead to
oversubscription of the hardware threads.
Now with GPUs and thread-MPI the user is required to set -ntmpi when
using -ntomp. Here we chose that to also require -ntmpi when the user
specified both -nt and -ntomp; here we could infer the number of
ranks, but it's safer to ask the user to explicity set -ntmpi.
Note that specifying both -ntmpi and -nt has always worked correctly.

Fixes #2348

Change-Id: Iad380721807f5c53b8c70808cea75c5f29341a8f

6 years agoMake AVX-512 CMake detction work
Mark Abraham [Tue, 12 Dec 2017 19:41:16 +0000 (20:41 +0100)]
Make AVX-512 CMake detction work

Both inline assembly and the support flag have to be set for the
timing code to be compiled.

Also fixed tabs and made the warning about the number of FMA units
only a status message - it's not any more important than anything else
we make assumptions about.

Change-Id: I1a430d12bc52cbea2495d2d3837c851761f552d8

6 years agoRemove PBC before generating TPR with group scheme
Paul Bauer [Mon, 11 Dec 2017 11:53:12 +0000 (12:53 +0100)]
Remove PBC before generating TPR with group scheme

Ensure that all molecules have been made whole before generating the
run input file when using the group scheme, to avoid error
messages for large charge groups when molecules are broken
over PBC boundaries.

Fixes #2339

Change-Id: Iecba013826cbe46e7f70bd674935f9946806ee2e

6 years agoSimplify CMAP loop
Roland Schulz [Wed, 13 Dec 2017 21:00:12 +0000 (13:00 -0800)]
Simplify CMAP loop

Fixes #2350

Change-Id: Id87a2105012d541f77d1c278029fe36b874328a9

6 years agoWork around AVX-512 issues in gcc-5.4 and 7.1
Erik Lindahl [Tue, 12 Dec 2017 14:54:56 +0000 (15:54 +0100)]
Work around AVX-512 issues in gcc-5.4 and 7.1

Fixes compilation issues with mixed and double precision builds using
AVX-512 SIMD with gcc-5.4 or gcc-7.1. Also tested with gcc-6.3, and
Debug as well as Release builds for all three versions, all of which
now pass the simd unit tests.

Fixes #2325.

Change-Id: I59c3ae0467b51412d1ebbb5b57a248534288a5db

6 years agoFix PBC error in gmx_spatial
Erik Lindahl [Tue, 12 Dec 2017 21:51:18 +0000 (22:51 +0100)]
Fix PBC error in gmx_spatial

Fix provided by Alexey Anikeenko.

Fixes #2157.

Change-Id: I2ac8a4ffac5acb0f3e432036ded3b380d720a719

6 years agoMerge "Merge branch release-2016 into release-2018" into release-2018
Mark Abraham [Thu, 14 Dec 2017 08:26:49 +0000 (09:26 +0100)]
Merge "Merge branch release-2016 into release-2018" into release-2018

6 years agoDocumented power spectrum to gmx velacc
Erik Lindahl [Tue, 12 Dec 2017 22:00:49 +0000 (23:00 +0100)]
Documented power spectrum to gmx velacc

This option was saved by the bell and my nostalgia for
power spectra. The usual recourse is that we get rid of
functionality that nobody takes the time to document.

Fixes #2019.

Change-Id: I09fc5367a59300e2fca780125893fad5c1d72b81

6 years agoAdd work-around for ICC 18.0/.1
Roland Schulz [Tue, 12 Dec 2017 19:17:16 +0000 (11:17 -0800)]
Add work-around for ICC 18.0/.1

Also remove old work-around for unsupported version.

Change-Id: I927749b55f76b30b7d9140f84fa6216c725b5852

6 years agoRequire TPR file for gmx cluster
Erik Lindahl [Tue, 12 Dec 2017 14:31:07 +0000 (15:31 +0100)]
Require TPR file for gmx cluster

The program crashes without it, so it wasn't
optional.

Fixes #2170.

Change-Id: I63af728eea047dd4c3b11d890d507473109a7279

6 years agoDisallow ascii formats for gmx trjcat
Erik Lindahl [Tue, 12 Dec 2017 00:15:00 +0000 (01:15 +0100)]
Disallow ascii formats for gmx trjcat

Since trjcat (deliberately) does not use any TPR file,
the tool can't handle trajectory formats such as GRO
or PDB where atom/residue names are needed.

Fixes #2225.

Change-Id: I55cbfd5f8a3909c1f76e63fa402f0c3243a6f7c7

6 years agoImprove grompp missing-parameters error message
Mark Abraham [Tue, 12 Dec 2017 11:24:15 +0000 (22:24 +1100)]
Improve grompp missing-parameters error message

If an interaction entry had parameters but not the function type, then
the error message has been confusing. Note that even when only one
function type is implemented, the field is still required, which makes
for ready extensibility.

Refs #2144

Change-Id: I356e14541d4aaffad054d5ecfb8a9e3cb04cd25f

6 years agoCheck for large energy at first step
Berk Hess [Mon, 11 Dec 2017 13:17:59 +0000 (14:17 +0100)]
Check for large energy at first step

Also added step number to fatal error message.

Fixes #2333

Change-Id: I6e8aa1fac3a3c9a358b4046de5c8a3547ae14b15

6 years agoMerge branch release-2016 into release-2018
Mark Abraham [Tue, 12 Dec 2017 08:56:40 +0000 (19:56 +1100)]
Merge branch release-2016 into release-2018

Change-Id: Icd7a26c399258adccf93b6d49b43567810072802

6 years agoAvoid yelling about thread pinning twice
Berk Hess [Mon, 11 Dec 2017 21:03:53 +0000 (22:03 +0100)]
Avoid yelling about thread pinning twice

Do not print the second, generic note about not pinning threads
when we printed a first, more detailed warnings.
Updated the threadaffinity tests for this.

Fixes #2342

Change-Id: I1fa8374d70891c3bc1caf2827210875e1c1a020f

6 years agoFix shift usage for KNC
Roland Schulz [Tue, 12 Dec 2017 05:46:37 +0000 (21:46 -0800)]
Fix shift usage for KNC

9437181eacb removed the shift operator without
replacing the usage for KNC.

Change-Id: Ia5600c02d423cbb6cbaf730f7531f13bfe171132

6 years agoSecond beta release of 2018
Mark Abraham [Tue, 5 Dec 2017 11:52:10 +0000 (22:52 +1100)]
Second beta release of 2018

Updated release matrix because bs_nix-amd is unreliable

Change-Id: I34262535e7a9cffc21e83fff60570605fbe7955f

6 years agoRemove duplicated lines from OPLS ffbonded.itp
Erik Lindahl [Mon, 11 Dec 2017 16:47:22 +0000 (17:47 +0100)]
Remove duplicated lines from OPLS ffbonded.itp

Only identical lines have been removed, as identified
with sort ffbonded.itp | uniq -c | sort.

Fixes #1678.

Change-Id: Id6f2b335f385ed31ddec1662d2f446b139067d1a

6 years agoFewer messages when -cpi file is not present
Paul Bauer [Mon, 11 Dec 2017 16:02:39 +0000 (17:02 +0100)]
Fewer messages when -cpi file is not present

Removed duplicated message when -cpi restart is not found.

Fixes #2173

Change-Id: I6543c077dfc9660177e61dd2ba0018bf6804ed58

6 years agoReplace intrinsic with inline asm for AVX512 unit test
Roland Schulz [Wed, 29 Nov 2017 02:04:31 +0000 (18:04 -0800)]
Replace intrinsic with inline asm for AVX512 unit test

Without high optimization, some compilers (icc) produce
assembly that lead to lots of store-to-load forwarding
during initialization, which screws up timing results.
The modified code uses inline asm without loading from
memory, which is fine since the inline (volatile) asm
will not be optimized. Tested to work and detect 2 FMA
units on Core i9-7920X and 1 FMA on Xeon Silver 4116,
with with gcc-5.4, gcc-7.1, icc 2017 and clang-5 with
optimization levels from -O0 to -O3. We also avoid
warning if we override the architecture with the
AVX-512 flags for the source file containing the asm.

Fixes #2340.

Change-Id: I3aea95b162c55c7773182a69f639dff1a01d0603

6 years agoDon't warn about NVML clocks that are at max
Erik Lindahl [Sun, 10 Dec 2017 17:21:32 +0000 (18:21 +0100)]
Don't warn about NVML clocks that are at max

If the clocks are already maxed out there is no
point in echoing warnings about not being able
to set them.

Fixes #2313.

Change-Id: I77bc7111489166b580c2d7742a7729c003f25e9e

6 years agoLeave NVML use off by default
Mark Abraham [Mon, 11 Dec 2017 06:49:42 +0000 (17:49 +1100)]
Leave NVML use off by default

Even if NVML is found, leave the default off because the
linking is unreliable for reasons that are currently unclear,
and only in some cases is linking with NVML advantageous.

Fixes #2311

Change-Id: I03e833964995f88350bf6cb70c06f1e3f67bb865

6 years agoCheck for GPU detection support before detecting
Mark Abraham [Sun, 10 Dec 2017 07:35:52 +0000 (18:35 +1100)]
Check for GPU detection support before detecting

When a CUDA-enabled binary was run on a node with no CUDA driver
available, a note was issued that the version of the CUDA driver is
insufficient, which was wrong.

Fixed this by separating detection of a valid CUDA driver (or OpenCL
platform) from enumerating the compatible devices. This permits a
GPU-enabled build configuration to gracefully degrade to the same
behaviour as a CPU-only build configuration.

Also suppressed more warnings about use of OpenCL API elements that
have been deprecated but which we intend to contiune to use
regardless.

Also fixed confusing name of rank_local, and replaced it with a
boolean that cleanly describes the required functionality.

Also fixed and simplified logic of printing the GPU report. The
implementation only prints details about the node of the master rank,
so there is no value in checking a variable that reflects the number
of GPUs detected across all nodes.

Fixes #2322

Change-Id: I831d3c0017dafc00f7bb82e3f71be5b122657d1e

6 years agoDisallow combination of PME-user and verlet cutoff
Paul Bauer [Wed, 6 Dec 2017 13:02:08 +0000 (14:02 +0100)]
Disallow combination of PME-user and verlet cutoff

Fixes #2332

Change-Id: I127a5680a0a83b7e5f8163b99619a6cc3729a992

6 years agoConsume any error produced during GPU detection
Mark Abraham [Sun, 10 Dec 2017 12:07:18 +0000 (23:07 +1100)]
Consume any error produced during GPU detection

Having reported it, we should clear the CUDA error status so that
future calls do not continue to return it.

Fixes #2321

Change-Id: Id5c6445074b6b835296fcb544b7fc94168edc974

6 years agoAvoid signed-overflow warning with gcc 7
Mark Abraham [Mon, 11 Dec 2017 00:15:22 +0000 (01:15 +0100)]
Avoid signed-overflow warning with gcc 7

The code assumes no overflow will occur. Both the old and new code are
vulnerable to over/underflow for different extreme values of *n, which
are both undefined behaviour (for signed integers). So it is not
clear to me why this formulation keeps the compiler happy.

Otherwise, we get "cc1plus: warning: assuming signed overflow does not
occur when assuming that (X - c) <= X is always true
[-Wstrict-overflow]"

Change-Id: I354c547f5ae03e2bcf4485874aac454a8397d7b0

6 years agoRemove SIMD shift operators
Mark Abraham [Mon, 11 Dec 2017 02:23:57 +0000 (03:23 +0100)]
Remove SIMD shift operators

These were almost unused, and caused problems in debug or clang builds
when the intrinsics required immediate operands that were not always
understood by the compiler to be available, because the function
argument was a variable. This could be fixed (see #2323), but there is
almost no known use for this functionality. For AVX-512, the fastMultiply
function is now implemented with explict intrinsics.

Fixes #2323

Change-Id: Ide45bde08deb425c18f35cd2adb263e566d643a1

6 years agoAdd grompp note for PR pcouple + position restraints
Berk Hess [Sat, 9 Dec 2017 08:54:29 +0000 (09:54 +0100)]
Add grompp note for PR pcouple + position restraints

Refs #2330

Change-Id: I299e39247d69214d9b54c47874d522ac7b00a30e

6 years agoRevert "Disable default-on NVML support in CMake"
Erik Lindahl [Sun, 10 Dec 2017 16:52:38 +0000 (17:52 +0100)]
Revert "Disable default-on NVML support in CMake"

This reverts commit 969fb1d08b7fd33c809ce967b9e3bc38d5ac83cd.

Sorry, my bad for not testing it before submitting. It won't work to
just define the option inside a conditional for whether the option is
set - then it will never be available in the CMake GUI.

Change-Id: Ia8310332932d6ce81c9249560744fdaa2648bee4

6 years agoRemove SIMD warning for AMD Zen
Berk Hess [Tue, 5 Dec 2017 10:58:03 +0000 (11:58 +0100)]
Remove SIMD warning for AMD Zen

After choosing nbnxn 2xNN kernels and changing the to tabulated Ewald
nonbonded kernels, AVX2_256 is only a few percent slower than AVX2_128
on AMD Zen and is faster with nonbondeds and PME on a GPU. So we
should not warn the user when AVX2_256 is used.

Refs #2328

Change-Id: I67b66b0025c7e3c31943f3f02b80e97fb9764066

6 years agoTone down note about not pinning threads
Berk Hess [Tue, 5 Dec 2017 14:58:59 +0000 (15:58 +0100)]
Tone down note about not pinning threads

The note mdrun prints to stderr and log file when not pinning
threads is now a short note instead of the old failure message,
since not pinning is often a choice, not a failure. With more than
one thread, a failure or longer explanatory note will anyhow have
been issued before.
Also removed a warning about OpenMP set affinity when the total
number of threads was chosen by mdrun.
Updated the thread affinity tests for the new message. Added tests
that are now possible with the recently introduced auto thread count
variable.

Fixes #2088 and #2319

Change-Id: I1411a1ce6e222d22da8d70bf7bab2c9bb7564507

6 years agoDisable default-on NVML support in CMake
Szilárd Páll [Fri, 8 Dec 2017 19:04:06 +0000 (20:04 +0100)]
Disable default-on NVML support in CMake

Due to the problems related to NVML builds failing in link stage when
linking against stub libs, we disable NVML by default to protect users
from a hard to disagnose bug.

Refs #2311

Change-Id: Id083254bc4344fbb3a91e7dd645a5f814163d043

6 years agoRefine ulp tolerances for some more ewald tests
Mark Abraham [Fri, 8 Dec 2017 02:02:19 +0000 (13:02 +1100)]
Refine ulp tolerances for some more ewald tests

Fixes #2337

Change-Id: I86bb615fa147988c8e54f0bbd7e17c2f61b312d0

6 years agoCorrect Shake test tolerances
Berk Hess [Fri, 8 Dec 2017 14:33:06 +0000 (15:33 +0100)]
Correct Shake test tolerances

The shake test used a tolerance on the square of the distance instead
of the distance itself as the documentation says.
Added tolerance for rounding errors due to the absolute size of the
coordinate values involved.

Fixes #2338

Change-Id: I1a771c0682fd694b2672986b46c58d4888d5a4a2

6 years agoAdd Viveca Lindahl as contributor
Berk Hess [Fri, 8 Dec 2017 12:56:29 +0000 (13:56 +0100)]
Add Viveca Lindahl as contributor

Also fixed a type in a name of a contributor in the manual.

Change-Id: I62761a3aeb8aabc115592f23f844d9ae72afb108

6 years agoAdd information regarding xlc compiler
Paul Bauer [Fri, 8 Dec 2017 10:57:24 +0000 (11:57 +0100)]
Add information regarding xlc compiler

Added information concerning that the xlc compiler
is neither supported nor tested.

Refs #2102

Change-Id: I1963a2fdaa6e27f4d9521c28088fc1c1f7eabe97

6 years agoAdded cool quote from Viveca's defense
Erik Lindahl [Thu, 7 Dec 2017 13:28:17 +0000 (14:28 +0100)]
Added cool quote from Viveca's defense

... from her discussions with Bert de Groot.

Change-Id: Ifaa50cfc236d568b2c659b6cffc94b40ad577762