Mark Abraham [Sun, 9 Oct 2016 21:46:47 +0000 (23:46 +0200)]
Merge branch release-2016
Resolutions straightforward apart from the question about the
correctness of the gmx_wham fix in release-2016 branch.
Change-Id: I908a9a6d8f5767da49c3f00495beeec2a4f95ca7
Szilárd Páll [Mon, 26 Sep 2016 22:10:48 +0000 (00:10 +0200)]
Correct kernel launch bounds for CUDA sm_60
The GP100 architecture has half the SM size (64 ALUs) compared to 5.x
hence 64 threads/block already achieves maximum occupancy and the
incorrectly tweaked launch configuration is not optimal. This change
reverts the incorrectly increased block size in
cc4214a.
Change-Id: I9be10acfb3650c778401d04dfcd52aa200f78ff4
Berk Hess [Tue, 7 Jun 2016 14:03:47 +0000 (16:03 +0200)]
Add readConfAndTopology
readConfAndTopology will replace read_tps_conf, reading to gmx_mtop_t
instead of to the deprecated t_topology struct.
With requireMasses=TRUE, read_tps_conf will generate a fatal error when
an atom is not found in the mass database, as it was originally
intended, since we don't want to calculate with incorrect masses.
The availability of masses is signaled by the haveMass bool in t_atoms.
The trajectory analysis framework now works with optional masses.
This is done by not requiring masses and attempting to look up masses
from the database when they were not present in the structure file.
Refs #1862.
Change-Id: I045649fa458a08415fd319c568d15ad514a30a9f
Mark Abraham [Thu, 15 Sep 2016 15:29:27 +0000 (16:29 +0100)]
Add script for Jenkins regressiontest update job
This job can generate regressiontests reference data. Intended to be
triggered on regressiontests change that lacks some reference data,
either because it's a new test case, or the old data was deleted in
that patch. Jenkins will build the code, run the test harness to
generate new reference data and attempt to add it to the git index.
If files were added, then update the commit and push it back to
gerrit.
The actual implementation is in the releng repository.
When merging to master branch, update the gcc version to 4.8.
Change-Id: I70542022af00773f58646c617fbf818cdf8f577e
David van der Spoel [Mon, 23 Nov 2015 22:32:48 +0000 (23:32 +0100)]
Modularize electric field handling
Move external electric field code to a C++ class where only a single
place in the code is responsible for initializing it, and everything
else operates only on relatively general interaces. Details of the
electric field stuff is encapsulated within the class.
Moved the files into new directory applied-forces.
Added manual section for electric fields.
The interfaces may need more generalization to support more complicated
modules like the pull code, but that is better done when actually moving
those parts to this approach. Various considerations are documented in
mdmodules.h and inputrect.h.
Part of #1972.
Change-Id: I513632c74a8fae28b5f1087a3b5781791a2627bd
Berk Hess [Wed, 5 Oct 2016 19:47:43 +0000 (21:47 +0200)]
Changed fr->f_novirsum to PaddedRVecVector
Commit
74474d6f forgot to also change f_novirsum in t_forcerec
to PaddedRvecVector.
Change-Id: Ib8880d904dbad4049e6e2cee08fa74e2a17911a2
Teemu Murtola [Sat, 1 Oct 2016 04:53:34 +0000 (07:53 +0300)]
Support different key matching in KeyValueTreeTransform
Support case-insensitive and mdp-style dash-insensitive string
matching in KeyValueTreeTransform. Required to use this for mdp
transformations.
Change-Id: I20661f721880e26844f0c38a7582c26f376e6a62
Teemu Murtola [Wed, 5 Oct 2016 18:24:16 +0000 (20:24 +0200)]
Merge "Merge branch release-5-1 into release-2016" into release-2016
Mark Abraham [Mon, 3 Oct 2016 15:09:57 +0000 (17:09 +0200)]
Merge branch release-5-1 into release-2016
Change-Id: I38cba3159387519af07195a5995b0986dac5a2d6
Mark Abraham [Mon, 3 Oct 2016 10:00:52 +0000 (12:00 +0200)]
Replace use of deprecated readdir_r
clang 3.8+ warn about the deprecation of readdir_r. The main issue
here is support for concurrent access to the same directory stream,
which is never something GROMACS is likely to do. Currently the only
use is implementing enumerateFilesWithExtension which is used
single-threaded by pdb2gmx for discovering force fields in the
database. So we can replace the use of readdir_r with readdir, which
is simpler, and offers other advantages listed in man readdir_r.
Documented the new restriction on the interface of
DirectoryEnumerator. There are no current uses of nextFile that
would be affected by the change.
Change-Id: I0b80554493ff80e8857f0431192e22cfe7db5b22
Justin Lemkul [Mon, 3 Oct 2016 11:32:58 +0000 (07:32 -0400)]
Fix incorrect charge in HISE.
Revision
1a60bdbfb5e6b11e52783a6afa26e615f15f1be0 introduced an
incorrect charge on HISE CG, which leads to a fractional charge
on the residue. Any simulation with this charge will be wrong.
Fixes #2013
Change-Id: I9f80daf3dda2cd71715d4e15d6c868c6e47b48cc
Philip Loche [Wed, 28 Sep 2016 11:49:13 +0000 (13:49 +0200)]
EW3DC for non-neutral systems
Add the corrections to force and energy according to
Ballenegger, Arnold, and Cerdà, J. Chem. Phys. 131, 094107 2009
(http://dx.doi.org/10.1063/1.
3216473).
Added a warning in grompp for charged systems with Ewald.
Added a ref to Hub2014a too to help users change their mind.
Change-Id: I96a2ab51fede9b448d4c725d703faf71342e7346
Berk Hess [Fri, 30 Sep 2016 14:41:15 +0000 (16:41 +0200)]
Fix inputrec initialization in 4 tools
Commit
41e0f9cc changed t_inputrec initialization to a factory,
but forgot to convert 4 tools that had t_inputrec on the stack
(and thus all segv).
Change-Id: I0d75d7e62d66f5ff8d02d6970229db18a40a9d65
Berk Hess [Tue, 6 Sep 2016 09:32:58 +0000 (11:32 +0200)]
Use std::vector in t_state
Changed x, v and cg_p pointers in t_state to PaddedRVecVector.
PaddedRVecVector is currently std::vector<RVec> and is always
sized with one element extra for 4-wide SIMD (gather) loads.
But this will be replaced by a proper class.
t_state is now freed by the default destructor with some issues:
* ekinstate_t is fully converted to std::vector in a child change
* state struct of special algorithms still need conversion
Changes to t_state propagate over large parts of the core code.
This change extracts rvec pointers at intermediate levels to
make this single change manageable.
The state in EM also needed to be updated, which led to a lot
of changes in minimize.cpp, especially to do_lbfgs() which was not
yet converted to use em_state_t.
Change-Id: Ib6ead1f13741ead8dbeeddd118ecdd4bf1cc6584
Berk Hess [Wed, 8 Jun 2016 11:40:59 +0000 (13:40 +0200)]
Add flags for optional t_atoms entries
Instead of checking for (non-)NULL pointer, we can now determine
the presence of optional entries in t_atoms using booleans.
Moved the mass generation from confio.cpp to a function in atoms.cpp.
Most changes are caused by checking havePdbInfo iso pdbinfo!=NULL.
Change-Id: I6e2c8ffaa2240056f34da4c93f1713c40a00f391
Jochen Hub [Thu, 21 Jul 2016 10:03:40 +0000 (12:03 +0200)]
Fixed bug in gmx wham for reading pullx files.
Because the order of columns in the pullx files has changed recently, gmx wham
did not pick the reaction coordinate from pullx.xvg if the COM of the pull
groups were written. gmx wham was tested with various pull options and geometries.
Change-Id: If487e0493992c76649dc9a596c8df56d331abf22
David van der Spoel [Mon, 12 Sep 2016 11:15:20 +0000 (13:15 +0200)]
Fixed script xplor2gmx.pl to work with GMXDATA
Change-Id: I25c8857cfdd992679f3be9a6ab59c9a74c0df0c8
David van der Spoel [Tue, 20 Sep 2016 19:03:44 +0000 (21:03 +0200)]
Fixes issue with Release build in correlation functions.
Introduced build-type dependent code in the manyautocorrelation.cpp
but without the corresponding ifdef in the test. Now the test fails
in Release type. Error introduced in commit
Ief04a37de3d3bc9695603f025517ce169bf9e49a
Change-Id: I4ceffbe309c848f730d733421a2c95052ef04794
Teemu Murtola [Sat, 24 Sep 2016 18:57:16 +0000 (21:57 +0300)]
Fix default nice level in mdrun-only build
Now an mdrun-only build should default to zero nice level, the same as
'gmx mdrun' in a normal build.
Change-Id: I50dcf3be93bdba0d03bf6816c15c7c6729db0005
Berk Hess [Mon, 19 Sep 2016 13:52:16 +0000 (15:52 +0200)]
Fix gcc warning in AlignedAllocator
Both gcc4.8 and gcc5 warn about an unused parameter,
despite the gmx_unused qualifier.
Change-Id: I0896a4ea8c9cb94af90a1f72ae4d6a593a082c33
Berk Hess [Mon, 12 Sep 2016 08:49:06 +0000 (10:49 +0200)]
Remove state duplication in serial runs
Without domain decomposition the local and global state should be
identical. This is easier to ensure with a pointer copy and this also
uses less memory than copying all data. It also gets rid of copy code.
Change-Id: Idad2748a83290b8506e03bb699ebede4d5987dcb
David van der Spoel [Tue, 21 Jun 2016 11:34:24 +0000 (13:34 +0200)]
Made correlation function routine use std::vector
In order to clean up the correlation function routine presented
the data as std::vector<std::vector<real> > rather than real **.
manyautocorrelation.cpp does not use snew and friends more.
Routine throws gmx::InconsistentInputError when the input is
inconsistent.
Change-Id: Ief04a37de3d3bc9695603f025517ce169bf9e49a
Roland Schulz [Fri, 16 Sep 2016 00:45:33 +0000 (17:45 -0700)]
Fix math-test false positive
Depending on the accuracy of the floating point division, the
input of the test function could be 1ulp too large or too small.
If it was too large the result of the test function wasn't
within 4ulp and the test failed.
Change-Id: Ia322b136d1db9b25c7c733e4067f927a4c77e372
Roland Schulz [Fri, 16 Sep 2016 01:14:49 +0000 (18:14 -0700)]
Better optimized ICC release flags
Add those flags included in -fast which both helps performance
and are appropriate for GROMACS.
The flags included in -fast for Linux we weren't using were:
-ipo, -no-prec-div, -static, -fimf-domain-exclusion=15
Full static depends on static libraries to be installed and thus
will not always work. IPO increases compile time by a huge factor.
We do require that extreme values (e.g. large negative arguments
to exp and large positive to erfc) are computed correctly.
This leaves -no-prec-div -fimf-domain-exclusion=14 -static-intel
as safe and useful flags for GROMACS.
Change-Id: Ifbee69431841e3051c95f0b4c0ad204aac965c4e
Berk Hess [Fri, 16 Sep 2016 07:38:24 +0000 (09:38 +0200)]
Fixed unused variables in domdec.cpp
Fixed unused variables in domdec.cpp when configured without MPI.
Change-Id: I844ab59e16eb2fbde97ed3893ba6dea5679dca34
Berk Hess [Fri, 16 Sep 2016 11:40:25 +0000 (13:40 +0200)]
Merge branch release-2016
Change-Id: I0c8c02d4fbd56042ad77e7b646323b2570d06c7c
Berk Hess [Wed, 10 Aug 2016 10:23:03 +0000 (12:23 +0200)]
Made distance restraints work with threads and DD
The NMR distance restraints use several buffers for summing distances
that were indexed based on the index of the thread+domain local ilist
force atoms. This gives incorrect results with OpenMP and/or domain
decomposition. Using the type index for the restraint and a domain-
local, but not thread-local index for the pair resolves these issues.
The are now only two limitations left:
* Time-averaged restraint don't work with DD.
* Multiple copies of molecules in the same system without ensemble
averaging does not work with DD.
Fixes #1117.
Fixes #1989.
Fixes #2029.
Change-Id: Ic51230aa19a4640caca29a7d7ff471e30a3d9f09
Aleksei Iupinov [Tue, 13 Sep 2016 12:50:11 +0000 (14:50 +0200)]
Move the PME Ewald coefficients to the PME structure
Ewald coefficients no longer get passed every step to gmx_pme_do().
Instead, they are passed to gmx_pme_(re)init,
as they only change together with the grid size, not every MD step.
Change-Id: Iea75063cf060317e3f0fcfd147431520b6c83a90
Berk Hess [Thu, 8 Sep 2016 14:24:40 +0000 (16:24 +0200)]
Moved expanded ensemble history to pointer in t_state
Data of special modules such as expanded ensemble should be stored
in pointers in t_state. This is also needed for converting t_state
to C++ without converting all special modules at the same time.
Change-Id: I22e5a939638ac318eb8167fee5f1097c1f1981e0
Roland Schulz [Thu, 1 Sep 2016 21:15:42 +0000 (14:15 -0700)]
Tidy: modernize-use-emplace
run-clang-tidy.py -checks=modernize-use-emplace -header-filter=.* -fix -j80
http://llvm.org/releases/3.9.0/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-emplace.html
Change-Id: I57a17487837f7afacc915d1c3cbf13c802c2a83c
Berk Hess [Thu, 8 Sep 2016 13:27:05 +0000 (15:27 +0200)]
Change ED and swapstate to pointers in t_state
Data of special modules such as ED and swapstate should be stored in
pointers in t_state.
This is also needed for converting t_state to C++ without converting
all special modules at the same time.
Change-Id: If8c7cb197f325ccf113aeebd807491ebd5a7b169
Mark Abraham [Wed, 31 Aug 2016 21:42:34 +0000 (23:42 +0200)]
Preliminary clean up of NVML code
Restructured logic so that it's simpler - there's multiple reasons why
we might not be able to change clocks, so now we just return after any
check that fails. No functionality changes here.
nvml_initialized does not need to persist.
Reading driver and runtime version is not needed.
Fixed some spelling.
Noted TODOs for subsequent cleanup.
Change-Id: I5e4cf73a470e60f53f098f7d28742403111f7da0
Berk Hess [Wed, 7 Sep 2016 07:58:57 +0000 (09:58 +0200)]
Add const to thread-MPI functions
Added const qualifiers to send buffer pointers for Several thread-MPI
functions. This is required by the MPI 2 standard and allows us to
use more const qualifiers in the GROMACS communication code.
Note that internally thread-MPI does not distinguish send and receive
buffers, so we need cast away the const.
Change-Id: I0fe03fd92325b9030c8584349c958deb20b30bfd
Vedran Miletić [Wed, 31 Aug 2016 18:52:46 +0000 (20:52 +0200)]
Document wallcycle counters and subcounters
List the available counters and explain how they are used. For subcounters,
explain the difference to counters and mention how to enable them.
Change-Id: Id5ce0e99b37a899f84d10b799840abad27d15c9c
Teemu Murtola [Sun, 11 Sep 2016 06:04:03 +0000 (09:04 +0300)]
Fix various memory leaks
These leaks are reported when building and running the tests with
LeakSanitizer (ignoring regression tests and tests marked as integration
tests).
- Free memory on 'gmx help -export completion' paths, which also fixes
all 'gmx help <module>' paths.
- Free all memory in genconf on exit to make the gmxpreprocess tests not
leak memory.
- Add settle_free() to free memory properly in mdlib tests.
- Add missing sfree in done_state() (fixes leaks in read_tps_conf() for
tpr files).
- Add missing virtual destructor in IOptionValueStore (various leaks
from correct destructors not getting called).
- Free the final symbol in selection parser in case the parsing ends
after the maximum number of selections has already been provided.
- Add missing frees in selection test helper for atom type strings.
Change-Id: I0d796033ce3b30cda0a18743a28f4d3133fd477f
Vedran Miletić [Tue, 30 Aug 2016 18:18:13 +0000 (20:18 +0200)]
Print OpenCL error string instead of error code
Change-Id: I00871b7f295373d8497a13d0bc3cbd0c0ff99668
Berk Hess [Wed, 7 Sep 2016 08:53:29 +0000 (10:53 +0200)]
Remove continuation from convert_tpr
Removed the obsolote option of convert_tpr to write a tpr file for
continuation using a trajectory and energy file. This is superseded
by checkpointing.
Change-Id: I46c49621a8cca247d5a9429961d85e6028fefb14
Aleksei Iupinov [Fri, 15 Apr 2016 14:34:12 +0000 (16:34 +0200)]
Fix PME data destructor not being called
The existing function gmx_pme_destroy is now being called at MD run end.
Erroneous memory freeing has been fixed.
Added freeing of pme_atomcomm_t.
Change-Id: I8761d2dbc168ec9d4e0e042fec788e39fb3e3ae5
Mark Abraham [Thu, 8 Sep 2016 10:40:51 +0000 (12:40 +0200)]
Merge branch release-5-1 into release-2016
Trivial conflicts in minimize.cpp from bug fix in same region that now
has exceptions caught within an OpenMP region.
Change-Id: I8b3c269a2afd7d4967e0f7310c96af6022533ddd
Mark Abraham [Thu, 8 Sep 2016 08:07:13 +0000 (10:07 +0200)]
Bumped patch number to prepare for future 5.1.5 release
Change-Id: I37e3120ec8ab257f0aeb1cf137dff27391e0689f
Mark Abraham [Wed, 7 Sep 2016 12:39:33 +0000 (14:39 +0200)]
Version 5.1.4
Bumped SOVERSION_MINOR and REGRESSIONTEST_HASH
Change-Id: Ib8404367c7ac15e0de567bf103f5ceb5d4dd5091
Mark Abraham [Mon, 5 Sep 2016 15:49:22 +0000 (17:49 +0200)]
Removed HIS1 from oplsaa and charmm definitions
HIS1 is intended for linking with heme, which oplsaa doesn't
define. charmm converts HIS1 to HSD in its .r2b.
This makes the recent fix for oplsaa HISD "consistent" with HIS1.
Fixes #2047
Refs #2049
Change-Id: Ibc0463c779e76689dc7ef65e48aedc716de9e032
Mark Abraham [Mon, 5 Sep 2016 15:32:19 +0000 (17:32 +0200)]
Fix LYN charges in amber03
These charges now match those found in AMBER 14 and 16. The
validation of the AMBER ports was done with AMBER 8.0, and
this fix was made afterwards in
http://ambermd.org/bugfixes/8.0/bugfix.19 (and perhaps LYN wasn't
in the validation set).
Fixes #2046.
Change-Id: Ibcaab337b527a44e42d5a7c68f71ef4fde2acf66
Mark Abraham [Tue, 6 Sep 2016 13:57:00 +0000 (15:57 +0200)]
Fix amber03 HIP charges
These were changed in Nov 2005, and now match AmberTools 16
Fixes #2050
Change-Id: I191b60c6acd2f521b3481578114ff48fca0979e5
Teemu Murtola [Mon, 30 May 2016 19:56:22 +0000 (22:56 +0300)]
Clean up CTest test management
- Add explicit timeouts to CTest tests. These should work better than
the current Jenkins timeout: it should produce better JUnit test
reports, and should catch also tests that end up in an infinite loop
printing stuff. The timeouts are still quite generous, since at least
the coverage run can take a while.
- Use a more easily extensible and better encapsulated mechanism for
producing the messages about missing tests with 'make check'.
- Abort if running a non-MPI test binary with MPI instead of trying to
run it on the master rank, since it might deadlock.
- Clean up the macros used to register CTest tests and use a clearer set
of test labels, and move more logic into src/testutils/CMakeLists.txt.
- Resolve various TODOs.
Change-Id: Ia1370d99eabd5839682832e8c3c60668a667cdde
Erik Lindahl [Fri, 5 Aug 2016 10:05:26 +0000 (12:05 +0200)]
Bump oldest cmake, compiler and CUDA versions required
For release 2017 we now require gcc-4.8.1, clang-3.3 and icc-15, so we
can rely on full C++11 support. We now also require CUDA-6.5 and
CMake-3.4.3. This in turn means we can remove some older cmake tests,
and since many users won't read the install guide there are now
version tests that produce fatal errors during CMake configuration for
compiler versions we know are too old.
Various hacks and workarounds in source and build system can
now be removed.
Fixed error in previous definition of GMX_ALIGNED
Updated C++11 compatibility tests in line with code we are now using.
Fixed that hwloc includes were not treated as system headers.
Treated including thread-MPI and TNG header files as system paths, to
be consistent with how we'd treat them if we were using external
versions of these.
Fixed icc 16 warnings in lapack routines.
Fixes #2012.
Change-Id: I36e02379a985b22c72f0f06481c65cae6e780c02
Mark Abraham [Mon, 27 Jun 2016 17:18:12 +0000 (19:18 +0200)]
Work around glibc 2.23 with CUDA
Note: Cherry-pick of
e2cd2e2e from the 2016 branch.
Fixes #2022
Change-Id: Id9881efb3f26af341b9c89b4bd1f983a2149c9e4
Berk Hess [Tue, 6 Sep 2016 13:14:17 +0000 (15:14 +0200)]
Fix bug with conjugate-gradient and OpenMP
The conjugate-gradient update routine re-used the pointer variable for
x for cg_p. This pointer was shared over threads and no barrier was
present before the pointer modification.
Fixes #1941.
Change-Id: I5f635fc3054147543820c4e5e74f3519637d541d
Berk Hess [Mon, 5 Sep 2016 09:27:43 +0000 (11:27 +0200)]
Consolidate MD algorithm atom setup
The setup of atom data for several MD algorithms that was called in
do_md, init_em and dd_partition_system has been moved to a single
routine called mdAlgorithmsSetupAtomData.
We should also move algorithm initialization cals to a single routine.
Change-Id: I3c87394e793e92d66555dc60388a47cedf6eeac9
David van der Spoel [Mon, 5 Sep 2016 13:49:10 +0000 (15:49 +0200)]
Merge "Merge branch release-2016"
Berk Hess [Mon, 5 Sep 2016 08:58:45 +0000 (10:58 +0200)]
Re-enable flexible constraints with DD
Commit
409edb80 added a fatal error in init_shell_flexcon() with DD.
But flexible constraints without shells work correctly with DD.
Change-Id: Ic3c5028a7aa6d956cf85f779347df16329d817bb
Berk Hess [Sun, 4 Sep 2016 16:29:34 +0000 (18:29 +0200)]
Merge branch release-2016
Change-Id: I11339f3f6ce583827af85fc8187c4f42ae5a8e52
Berk Hess [Fri, 2 Sep 2016 12:59:28 +0000 (14:59 +0200)]
Clean up PME flags variable use
PME flag bits for triggering Coulomb and/or LJ calculations were mixed
between different flags variables. These flag bits are now removed,
because they passed constant values based on inputrec.
Similarly, the free-energy calculation flags were never changed during
a run and have also been removed.
Note that these calculations probably could/can actually be run
selectively, but that should be tested.
Change-Id: Ib8e121fd08f2dd8776d29b0f896b3df2322ecf6d
Berk Hess [Fri, 2 Sep 2016 15:28:25 +0000 (17:28 +0200)]
Merge branch release-5-1 into release-2016
Change-Id: Ia1a7fad67f0ff11175ea24c46f813a445cd49ed6
Berk Hess [Mon, 15 Aug 2016 19:03:13 +0000 (21:03 +0200)]
Fix Parrinello-Rahman with nstpcouple>1
Fixes #2031.
Change-Id: I37cf18c40c6cf5e301d7981c9f10bbf963d8cda8
Teemu Murtola [Tue, 26 Jul 2016 13:05:13 +0000 (16:05 +0300)]
Basic support for transforming KeyValueTrees
Add support for writing transforms from one KeyValueTree to another.
For now, only a small subset of simple transforms is supported, but this
should be mostly sufficient for a proof-of-concept for MDP processing on
the electric field code, and new cases can be relatively easily added.
These transforms can support two use cases: specifying how a legacy MDP
file maps to a more structured format, and for supporting changes from
version to version in the structured format. However, versioning for
the structured format (in particular, if/when it will be necessary to
recognize the version from input) likely still needs some work.
There is not much in terms of consistency checks, error handling, or
documentation, but that is better to add once using code exists.
Change-Id: Ie2570eee8a62c2d64b79e00925bbf1e40b62b261
Berk Hess [Wed, 17 Aug 2016 13:27:49 +0000 (15:27 +0200)]
Make virial reproducible
OpenMP reduction was used to reduce virial contributions over threads,
which does not have a defined order. This leads to different rounding,
which makes runs non-reproducible (but still fully correct).
Now thread local buffers are used.
Also removed OpenMP parallezation for small count (e.g. shift forces).
Change-Id: I8d80def602337cc12ab601916bf40d7f66bf9bbc
Szilárd Páll [Wed, 24 Aug 2016 15:49:14 +0000 (17:49 +0200)]
Make ASAN/TSAN/MSAN build types easier to discover
While these build types are indeed aimed at developers, realistically
not many will be interested in changing the build type from the default
"Release" except in rare cases. Therefore, along Debug or RelWithAssert,
it makes sense to list the other developer-oriented build types
ASAN, TSAN, and MSAN if nothing else for the benefit having docs in the
ccmake gui.
Change-Id: Ie54fc57a06aee3be996c9a8ff62e54a3ac284065
Mark Abraham [Tue, 23 Aug 2016 22:40:04 +0000 (00:40 +0200)]
Stop using gmx_fatal in grompp
Added warning_error_and_exit to issue an error that describes the
location in the input file, and then halt processing (because data
structures would not be safe to use) while also describing where in
the code that occured. Either set of metadata can be useful to users
or developers diagnosing issues.
Refactored implementation of check_warning_error() so that
warning_error_and_exit() can have the gmx_noreturn qualifier, so that
analyzers understand the behaviour of the calling code, and compilers
can understand the implementation of warning_error_and_exit().
This permits more effective diagnostics in various places, and
eliminates some existing hacks.
Bumped all declarations of errbuf to have size STRLEN, since some of
the new uses might be safer that way.
Also made a minor fix to output to avoid redundant output from
done_warning when an error has occured.
Change-Id: I29f8afeb70d0da3598c6443c15090bca9bf5c639
Teemu Murtola [Fri, 29 Jul 2016 04:45:33 +0000 (07:45 +0300)]
Support KeyValueTree objects in refdata
Make it possible to check KeyValueTreeObject-rooted trees through
TestReferenceData. This is the simplest way to actually verify the
contents of such a data structure. For now, the contents can be
inspected through the XML output.
Change-Id: Ic6fc87c4934166acad4e9b5068c6d39c02866a73
Berk Hess [Wed, 24 Aug 2016 09:00:19 +0000 (11:00 +0200)]
Reduce rounding errors in SETTLE
The parameters for SETTLE are now computed in double precision.
This lowers the systematic error in settle.
Change-Id: I537a618830ab149d5f33251d9edca3aa9c43404c
Roland Schulz [Wed, 24 Aug 2016 20:57:28 +0000 (13:57 -0700)]
Fix build with GMX_USE_TNG=off
Change-Id: I305edfafbe87f0ad1e8ff410f419e5d32b23e1a7
Jochen Hub [Wed, 24 Aug 2016 15:50:08 +0000 (17:50 +0200)]
Fixed bug in gmx insert-molecules.
With option -ip, and if all trials were unsuccessful, a molecule was
eventually incorrectly placed at 0/0/0 due to a memory error
when referencing to rpos[XX][mol].
Change-Id: I367727210b893652af39217925906cc2dc703465
Roland Schulz [Fri, 5 Jun 2015 09:23:46 +0000 (05:23 -0400)]
Remove unnecessary ICC warning suppression
Change-Id: Icdb24d0fed40608a11a884fe5181778180bcc5e2
Berk Hess [Wed, 24 Aug 2016 11:00:14 +0000 (13:00 +0200)]
Fix Ewald surface+3DC corrections
Ewald surface and 3DC correction forces were only applied up to,
but not including, the last atom with exclusions. With water at
the end of the system only the last H would not be corrected.
With ions at the end all ions would be missing.
In addition, with the Verlet scheme and domain decomposition
no force correction was applied at all.
Fixes #2040.
Change-Id: I064bf01fab561dca40451763b75283b6f59e0fbd
Mark Abraham [Tue, 16 Aug 2016 09:42:00 +0000 (11:42 +0200)]
Remove hacks for outdated BlueGene support
GMX_BLUEGENE hasn't been a thing for a while now.
XL compiler is no longer supported on BG/Q (no C++11 support will ever
exist), so a bunch of accommodations for it can go away. bgclang
is still supported however.
Some BG/L workarounds can also go away.
Change-Id: I5b76c02b4fc421889d7ca60f41574c491af05f2f
David van der Spoel [Wed, 17 Aug 2016 07:05:15 +0000 (09:05 +0200)]
Added documentation for shell potentials.
Added documentation for simple and anharmonic shell potentials.
Added two references.
Change-Id: Ica2b694b9b57bcf52bfe8434cfb3f8fe4dc7b9a2
Berk Hess [Wed, 24 Aug 2016 11:12:21 +0000 (13:12 +0200)]
Merge branch release-5-1 into release-2016
Also applied the merged fix to nbnxn_cuda_kernel_fermi.cuh.
Change-Id: I79d0cb59214290097d6f356e35dd13c4eadaed75
Berk Hess [Tue, 23 Aug 2016 10:13:35 +0000 (12:13 +0200)]
Remove variable precision gro writing
The gro precision is now fixed to 3, 4 and 5 decimal places for
x, v and box respectively to ensure compatibility with other software.
Variable precision reading is still supported.
Fixes #2037.
Change-Id: I0e593622ee0380c3934a7b7b6826ae29aed00a59
Teemu Murtola [Mon, 1 Aug 2016 05:16:12 +0000 (08:16 +0300)]
Check for unused refdata values
Make a test using refdata fail if it does not produce some reference
values at all. Use this instead of checkPresent() for some cases where
the new functionality is a clearer fit for the purpose. It is possible
to trigger the check explicitly for a subtree, but if not done
otherwise, it is always done for all values at the end of the test.
Change-Id: I722abd978f0c8fa9dc279264ff90cdad02e02b9d
Teemu Murtola [Sat, 23 Jul 2016 18:23:25 +0000 (21:23 +0300)]
Generic structured key-value tree for options
Add classes KeyValueTree* for representing a JSON-like data structure
that allows mapping a hierarchical set of string keys to values with
dynamic types. Make it possible to assign options from such a
structure.
The tree objects only provide read-only accessors that are currently
used. To construct such trees, a separate set of builders is used.
Better error handling will be added once this is actually used somewhere
and the best way to construct the messages can be determined.
Change-Id: I08c2536f4b2eb4678c11a179e31f6a85693fc4ec
Teemu Murtola [Fri, 8 Jul 2016 15:10:12 +0000 (18:10 +0300)]
Support for non-string option value assignment
Make it possible to assign non-string values to options through
OptionsAssigner. For now, the only thing that actually works is
assigning std::string values, and assigning the exact type stored for
the option. Also, the list of supported conversions is initialized
separately for every instance of each option, but in practice that might
not matter that much.
This adds the infrastructure that allows assigning option values from
something like a JSON structure that already does data type conversions
during parsing. The same infrastructure can also support #653.
Change-Id: I8f81d57da1b6eeac06a6ac9a8ab68bfa8ed0c148
Teemu Murtola [Tue, 5 Jul 2016 18:24:27 +0000 (21:24 +0300)]
Basic support for array-of-structs in options
This makes it possible to parse structured data that has
arrays-of-struct type of constructs (as long as the structure for the
array elements is reasonably uniform). Iteration over the sections does
not work reasonably for these types of sections yet, and there are other
things that might not work. For complicated nested data structures,
there is also some unnecessary copying. But the tests show that basic
stuff does work.
Change-Id: Ib485248a5adabecc3ed126dfa3736a5e71577bfd
Teemu Murtola [Mon, 4 Jul 2016 18:52:02 +0000 (21:52 +0300)]
Generalize and simplify option value storage
Move responsibility of managing the final storage of parsed option
values out of OptionStorageTemplate to a separate OptionValueStore
interface. Reduce complexity by removing support for some unused cases
(like storing the values in more than one place), which allows complete
removal of refreshValues().
This turned out to be not strictly necessary for supporting repeating
sections in options, but it is a useful simplification nonetheless.
It also provides some reusable elements that are also used in later
changes.
Change-Id: Ib367ae987cd265a08777c2fe054b43fdd5310762
Teemu Murtola [Sat, 2 Jul 2016 18:14:13 +0000 (21:14 +0300)]
Generalize option section internals
Use a similar mechanism as for options to allow multiple different
section types to be handled through addSection(). Prerequisite for
adding support for repeating sections. Support for iterating over
option sections is not of particular focus at this point; the initial
focus is to get the API for declaring sections and options working.
Also change the approach in IOptionsContainer to remove the need for
using directives in classes implementing it, and make the build system
list the source files explicitly.
Change-Id: I3f70f6937cb6b594c5bff120d5f2f87e42841ac4
Teemu Murtola [Fri, 10 Jun 2016 19:54:56 +0000 (22:54 +0300)]
Reimplement subsections in Options
Now the support for sections in Options provides an API similar to
other option types. The main thing missing (both in the old and the new
implementation) is support for an "array of structs"-kind of options,
where multiple instances of the same section could create multiple
instances of some object in the code. That should also be possible to
add following a similar public API, but the internals need quite a bit
of generalization to make that possible. That will be done in
subsequent changes to keep the changes smaller.
Remove now-unused name and title for an Options object.
Change-Id: Ie76e31aae2de0816b4d294ff6869606d4a2bef49
Berk Hess [Wed, 17 Aug 2016 13:35:05 +0000 (15:35 +0200)]
Fixed opening of wall table files
Fixes #2033.
Change-Id: Ie5092476f021d0578bbcbd84c7e4f895959fd06e
Mark Abraham [Mon, 15 Aug 2016 19:09:04 +0000 (21:09 +0200)]
Merge branch release-2016
Change-Id: I39dd5524c70707d1784f2814876930c3905a52ba
Mark Abraham [Fri, 12 Aug 2016 08:19:34 +0000 (10:19 +0200)]
Fixes for BG/Q platform files and install guide
Renamed the platform file to reflect normal practice
and the install guide.
Change-Id: Icffde855789f561faa0249d095838fea9f97ce1d
Berk Hess [Mon, 8 Aug 2016 13:24:14 +0000 (15:24 +0200)]
Reduce FE pair-list memory usage
Refs #2014.
Change-Id: Ia8bbc55eed7e3590e6944127ab94dd41f475e6a7
Mark Abraham [Fri, 12 Aug 2016 08:11:49 +0000 (10:11 +0200)]
Bump number to prepare for first patch release
Change-Id: I1cdfd715d2681677460945ed6670adb2a35f9839
Berk Hess [Tue, 9 Aug 2016 20:26:04 +0000 (22:26 +0200)]
Fix deadlock with thread-MPI
With thread-MPI mdrun could deadlock while pinning threads.
Fixes #2025.
Change-Id: Ib42e9625134531b1e2f910b11339aa0f78b80624
Berk Hess [Tue, 9 Aug 2016 11:24:49 +0000 (13:24 +0200)]
Fix twin-cutoff for GPU LJ pot-switch
With rcoulomb>rvdw, as used with PME tuning, the GPU kernels performed
the LJ cut-off check before applying the potential-switch to the LJ
forces and energies.
Fixes #2007.
Change-Id: Ie2f6fdfec10bdb8800123e6fa299839a31bc0f93
Erik Lindahl [Sun, 31 Jul 2016 16:34:36 +0000 (18:34 +0200)]
Fix proper relative tolerance checking in testutils
The previous relative tolerances were convereted to ULP
checks, but since the relative difference for 1 ULP
depends on whether the exponent changes there is no strict
1-to-1 correspondence between ULP and relative differences.
Fixed by storing the original magnitude of the numbers
in FloatingPointDifference and using a traditional relative
tolerance check for the case when a relative tolerance is
set from floating point values; other checks still use ULP.
Change-Id: I95331b46da00cd0b4e369f087991c553cd05f18f
Mark Abraham [Wed, 3 Aug 2016 13:13:10 +0000 (15:13 +0200)]
Version 2016
Removed "-rc1" per policy. Bumped regressiontests hash.
Change-Id: If94c03e280fce13143d238fa3e7f2df3b8b659cf
Teemu Murtola [Thu, 4 Aug 2016 04:23:46 +0000 (07:23 +0300)]
Fix/improve doc links in template/README
For installations from a tarball, put a link to an appropriate version
at manual.gromacs.org instead of Jenkins-generated documentation which
might be for a newer version. For builds from the repository, the links
still point to the nightly Jenkins job.
The first link was also pointing to an obsolete Jenkins job.
Change-Id: Ib56c62cd572879c8dadde6881507e54f6d22a784
David van der Spoel [Tue, 2 Aug 2016 21:23:55 +0000 (23:23 +0200)]
Three new quotes.
Change-Id: I9a7ed8343a0133a68bf7790e85bff9d331dd6294
Vedran Miletić [Tue, 12 Jul 2016 17:07:30 +0000 (19:07 +0200)]
Use only legal characters in OpenCL cache filename
The device name from the vendor could contain anything, and we need to
avoid dot and slash when we try to make a filename from it. To help
keep it valid for all possible users, we permit only alphanumeric
characters from the current locale.
Change-Id: Ie55959a9a2161d0cfc7effa6ab57fffc8160f4e2
Teemu Murtola [Fri, 29 Jul 2016 04:15:43 +0000 (07:15 +0300)]
Function to split delimited strings
Add a function to split a string at given non-whitespace delimiters, and
tests for it. Will be used for subsequent work on KeyValueTree.
Change-Id: I28f2658e7c9b32565c02b16600b2e09b444415f4
James Graham [Tue, 26 Jul 2016 11:11:47 +0000 (12:11 +0100)]
Avoid blank line in writing index file
Removes extra newline added in index file when an index group
contains a multiple of 15 atoms. This broke some analysis scripts
that were not expecting blank lines e.g. MARTINI fluxer.py. Also
removed from duplicate index file.
Change-Id: I6058799fbfb71096e47db02c4dc7a5ebd060425a
David van der Spoel [Sun, 31 Jul 2016 07:18:27 +0000 (09:18 +0200)]
Merge "Merge branch release-5-1 into release-2016" into release-2016
Roland Schulz [Mon, 18 Jul 2016 19:17:15 +0000 (12:17 -0700)]
Update GCC version for reference build
4.7 isn't available anymore with recent Linux distributions.
Change-Id: I27b9d1af386b4891f648a033872b876230247b67
Vedran Miletić [Wed, 27 Jul 2016 15:01:25 +0000 (17:01 +0200)]
Document gmx_cgsort_t and gmx_domdec_sort_t structs
Add descriptions to fields of gmx_cgsort_t and gmx_domdec_sort_t
structs used in domain decomposition code.
Change-Id: Ie64664ed46413e51ba22504270ab11350c39b84a
Mark Abraham [Fri, 29 Jul 2016 11:56:19 +0000 (13:56 +0200)]
Improve handling of gmock and gcc6
This patch reverts commit
d6e35c96 that used gcc
-fno-delete-null-pointer-checks to work around implementation errors
in gmock 1.7. There's been no new release of gmock for several years,
but a patch is now available to address this issue.
This commit applies that patch, found at
https://github.com/google/googletest/issues/705#issuecomment-
235067917. Updated
our README describing modifications GROMACS has found it necessary to
make.
Fixes #1911
Change-Id: I0d5abe9bf8172f6749bcad97a13765edaa3d4c80
Mark Abraham [Fri, 29 Jul 2016 12:32:44 +0000 (14:32 +0200)]
Merge branch release-5-1 into release-2016
Change-Id: Id782b78da4b2080fec208d29b9b4afc363f1418c
David van der Spoel [Fri, 22 Jul 2016 07:43:02 +0000 (09:43 +0200)]
Fixes incorrect charges in OPLS/AA-L for HISD and HISE
With the present charges results from Michael Shirts et al.
J. Chem. Phys. 119 (2003) 5740 can be reproduced.
Fixes #2013
Change-Id: Ifb037961499633210d26ff32ec6bf3bebc505461
Mark Abraham [Thu, 28 Jul 2016 17:53:50 +0000 (19:53 +0200)]
Add toolchain flags for SSE2 compilation
This is how the code should be, though my testing didn't need it.
Also fixed function documentation.
Fixes #2008
Change-Id: Ic1e1c16d22e054e9f741d91c667305de7398cd30
Roland Schulz [Sat, 23 Jul 2016 00:06:56 +0000 (17:06 -0700)]
Merge release-2016 into master
Conflicts:
src/programs/mdrun/resource-division.cpp
src/programs/mdrun/resource-division.h
src/programs/mdrun/runner.cpp
Change-Id: I02a0af8295df0fa271e6e236daf035ea442cb73a
Mark Abraham [Thu, 21 Jul 2016 18:40:39 +0000 (20:40 +0200)]
Bumped patch number to prepare for future 5.1.4 release
Change-Id: I813e0d8c976d0afca316f5cfe095c5647b8fd66c
Roland Schulz [Fri, 15 Jul 2016 22:21:29 +0000 (15:21 -0700)]
Fix non-parallel build
Change-Id: Iba9bd4b51172df5157359fc79a5b50f3954784ce