alexxy/gromacs.git
8 years agoHardware reporting now covers all nodes
Berk Hess [Wed, 29 Apr 2015 10:13:00 +0000 (12:13 +0200)]
Hardware reporting now covers all nodes

The CPU and GPU hardware reporting and checking were only printed
for the node(s) of the master rank(s) of each simulation.
Now the most important CPU and GPU information is reduced over
MPI_COMM_WORLD. These results are printed and checks/warnings are
now based on this.
Because this is now system wide, the printing is moved up to directly
after the detection and GPU info is printed together with CPU info.
The Gromacs reference printing is moved to after hardware printing.

Refs #1643.

Change-Id: I974871c9a293a922dd1db9dcf633d485f62996ae

8 years agoFix commandline test data
Mark Abraham [Fri, 12 Jun 2015 13:17:44 +0000 (15:17 +0200)]
Fix commandline test data

There was a recent change to the output routines, with a pending
commit of other code whose new reference data still used the old
output routines. Regenerated that data.

Change-Id: Ic25d10b74b70733b8aeb271a293d5580c745ca5d

8 years agoUpdate help output
Teemu Murtola [Thu, 23 Apr 2015 10:31:22 +0000 (13:31 +0300)]
Update help output

Various changes to console help output (and some to man output) based on
feedback in #1687:
 - People seem to prefer a centered startup header with some ASCII art,
   so made the first output line just like that (except if running with
   -quiet), and center the list of authors.
 - Always start the option description at a new line.
 - Give more space to various parts of the option list so that they are
   more likely to align up.
 - Split the file listing based on input/output type.  This causes,
   e.g., some logically related options (e.g., -cpi and -cpo) to get
   separated in the output, but this seems to be the preferred approach.
 - Add formatting to the synopsis on man pages (similar to how the
   options appeared in the 4.6-era man pages, except that reasonable
   line wrapping is still there).

Clean up the design for formatting the options list; now the actual
formatting code is better encapsulated in HelpWriterContext.

The user-visible scope of this change is limited to changing behavior
that changed between 4.6 and 5.0.  Thus, the changes here should be
sufficient to close #1687.

Change-Id: I349fd9021472f064f5797441090a3f3864868280

8 years agoTNG version 1.7.6
Magnus Lundborg [Fri, 12 Jun 2015 11:12:24 +0000 (13:12 +0200)]
TNG version 1.7.6

Fixed bug with reading and writing TNG compressed blocks
on big endian platforms.
Fixed compiler warning about potentially uninitialized values.

Fixes #1725.

Change-Id: I92062492116fa3044c3d1d0d0f920cfe42d21cbe

8 years agoImprove uncrustify Jenkins builds
Teemu Murtola [Fri, 5 Jun 2015 19:25:13 +0000 (22:25 +0300)]
Improve uncrustify Jenkins builds

Add a script to wrap uncrustify.sh for Jenkins, and make it produce
additional text files that can more easily be used for further
processing in Jenkins.

Change-Id: I3c25760eec4c37a07a7889f471eb5b61f9932a9c

8 years agoInitial docs for Jenkins integration
Teemu Murtola [Fri, 5 Jun 2015 11:20:41 +0000 (14:20 +0300)]
Initial docs for Jenkins integration

Add basic documentation for (some) of the Jenkins builds from the
perspective of how they interact with the build system.  This part
cannot change without changes in the build system and so can be
documented in the same repository as the build system.  And the
developer guide is a place where people would (hopefully) first look for
this kind of information.  Links can be provided to more documentation
on Jenkins usage and other configuration (e.g., on the wiki), once that
stabilizes.

Related to #1731.

Change-Id: I87e180d12a77c692ac4594b6c062fb6ca150aa5d

8 years agoInitial build system documentation in dev guide
Teemu Murtola [Fri, 22 May 2015 05:43:18 +0000 (08:43 +0300)]
Initial build system documentation in dev guide

Add some documentation for the build system from the developer
perspective.  The documentation is far from complete, but should provide
a scaffold into which more documentation can be added, and should
already document parts that may not be familiar for everyone.

Explicit TODO items listed are not intended to be addressed in this
change.

Change-Id: I85094549d28ffeaf7063b472e2873ea6396ea897

8 years agoImprove Jenkins docs build
Teemu Murtola [Fri, 5 Jun 2015 10:47:50 +0000 (13:47 +0300)]
Improve Jenkins docs build

- Use GMX_COMPACT_DOXYGEN=ON for per-patch set builds to save disk space
  and some running time.
- Build also the man and install-guide targets, which were previously
  missing.
- Make the build fail if it actually fails, and unstable if it just
  produces warnings.
- Make the end of the console output contain some useful information on
  what exactly failed.  This gets put into unsuccessful-reason.log,
  which can be used by Jenkins to show as the reason of the build
  failure when it reports back to Gerrit.
- Add options to the script to make it more convenient to test.

Fix some issues found in man page generation and in handling of
GMX_COMPACT_DOXYGEN.

Change-Id: Ice7622d7760c3dbd74f7b5b25700482d0a08e06b

8 years agoExtend source layout description in dev guide
Teemu Murtola [Mon, 11 May 2015 10:52:27 +0000 (13:52 +0300)]
Extend source layout description in dev guide

Move the contents of codelayout.rst into overview.rst (some parts to
naming.rst), and organize and extend it for better readability.
This should now provide quite a comprehensive overview of the layout of
the Gromacs repository.

Change-Id: Ib9045c5572a072dacb5f22a64f0af48385307677

8 years agoHandle timing better in Jenkins
Mark Abraham [Tue, 9 Jun 2015 14:37:43 +0000 (16:37 +0200)]
Handle timing better in Jenkins

Sometimes we get floating-point exceptions in Jenkins when timers get
strange values and e.g. the code divides by zero. Added several checks
for such behaviour, including a new early exit from the timing routine
when a non-positive number of CPU cycles were counted. Removed a
recently added check that is now redundant because of the early exit.

Added several assertions about numbers of threads and ranks, which
might help reducing future mysterious FP exceptions if things are
broken elsewhere.

Fixes #1677

Change-Id: I532e164fc13e91f5f109dd63bb99c1569bdc70cd

8 years agoScript for Jenkins documentation build
Teemu Murtola [Fri, 22 May 2015 13:39:48 +0000 (16:39 +0300)]
Script for Jenkins documentation build

Move the script to do the documentation build from Jenkins to the
repository to reduce coupling.  There is hardly any content in the
script that would need to change if something in Jenkins changes (and
those few details can easily be passed into the script), but a lot that
needs to be changed whenever the build system for the documentation is
refined.

For now, the contents are essentially the same as in the Jenkins job
configuration for Documentation_Gerrit_master or
Documentation_Nightly_master.  Having a script in the same repository as
the build system makes it easier to evolve the script and the build
system in sync without enforcing rebases for every change in Gerrit.

Change-Id: If5eda21c94bc7d4707d4716d4f54b2be3ae898cf

8 years agoClean up vsite interaction clean-up code
Mark Abraham [Mon, 25 May 2015 08:39:09 +0000 (10:39 +0200)]
Clean up vsite interaction clean-up code

Lists of atom indices in interactions were being copied simply so that
they could be compared later. Instead, use a pointer to the original
data. This code has caused issues with multiple compiler versions and
checkers, concerned about initialization state or possible over-run,
and the best fix is to stop copying data unnecessarily.

Some general grompp checks were skipped for F_VSITEN, those are now
activated. The clean-up might have done incorrect memory access when
both normal vsites and F_VSITEN were present in the same molecule,
this is now fixed, but interactions with F_VSITEN are not removed.

Added new assertions to keep compilers happy that the logic of the use
of vsnral and first_atoms is sound.

Removed an old assertion that was added to satisfy an earlier version
of gcc.

Noted several TODOs for future clean up.

Change-Id: Ia7a6b2310640d1c1ca73ff3223269339d595c67d

8 years agoMisc. improvements to docs build system
Teemu Murtola [Wed, 13 May 2015 18:11:03 +0000 (21:11 +0300)]
Misc. improvements to docs build system

- Get rid of GMX_BUILD_WEBPAGE.  It did not disable any user-visible
  detection, but only affected what build rules were generated, and none
  of those affected the default 'all' target.  Now the webpage target is
  always created, and any informative messages that were previously
  given during CMake time with GMX_BUILD_WEBPAGE=ON are now given when
  the user tries to build the target.
- For all the documentation custom targets, create a dummy target that
  gives a message to the user when building if the tools required to
  build that target are not available.
- Reduce the required dependencies for the 'webpage' target.  If some
  non-essential parts cannot be built, just give a message to the user
  and build the remaining parts with some broken links.

These should make the build system easier to document and to understand
from the user's perspective.

Change-Id: Ib65e3348b88b1e0461f1f69ba1218f09d376a6dc

8 years agoAdd description of relocatable binaries
Teemu Murtola [Tue, 5 May 2015 10:55:23 +0000 (13:55 +0300)]
Add description of relocatable binaries

Add some explanation of the current implementation for relocatable
binaries to the developer guide.  This was requested in some Gerrit
comment quite some time ago, so hopefully it will be helpful.

Change-Id: I6216306900ab138d24f34e8c2b472c06430d1003

8 years agoResolve one TODO for command line help tests
Teemu Murtola [Wed, 3 Jun 2015 19:17:20 +0000 (22:17 +0300)]
Resolve one TODO for command line help tests

Make [PROGRAM] replacement respect the binary name passed to
CommandLineModuleManager, giving the tests full control over the help
output.

There are complications making this work nicely in the selection help
(requires some effort in propagating the information), so change the
wording there for now to avoid this tag.  Can be revisited at a later
time if/when the help writing context is more uniform for different
cases that can trigger the selection help ('gmx help ...' vs. 'help ...'
in the selection prompt).

Change-Id: I93e7dd8279d3730d38122c212174e533420859b9

8 years agoImprove user guide text for command line interface
Teemu Murtola [Wed, 3 Jun 2015 10:54:56 +0000 (13:54 +0300)]
Improve user guide text for command line interface

- Restructure the tools.rst to have all the content on a single page.
- Correct inaccuracies in the information about common options and
  general behavior, and extend the text to cover more cases.
- Include the list of common options on the HTML pages (somewhat ugly
  still).
- Restructure the Sphinx input for easier management and
  understandability: all pages generated from the gmx binary is now
  under onlinehelp/, and all rst fragments (whether generated or not)
  are under fragments/ to make it easy to apply the same rules to all of
  them.

Change-Id: I2d55281bfba7dc781afcc2b09a9fef843730de5f

8 years agoFix out-of-range integer literals for threefry
Erik Lindahl [Sat, 6 Jun 2015 11:06:42 +0000 (13:06 +0200)]
Fix out-of-range integer literals for threefry

The 64-bit literals need to have LL suffixes, or
xlc will warn about out-of-range literals and generate
code that fails the unit test. There was also a
single 64-bit literal in the implementation. Other
compilers appear to have handled this correctly,
so it is unlikely to have caused any user bug.

Refs #1725.

Change-Id: I575b6c12ace14973d4fae1edc81836686a2ff9d5

8 years agoOptimize atomic accumulation in CUDA NB kernel
Szilard Pall [Tue, 21 Apr 2015 16:57:25 +0000 (18:57 +0200)]
Optimize atomic accumulation in CUDA NB kernel

As a result of this reorganization of the reduction, the final atomic
accumulation of the three force components can happen on three threads
concurrently. As this can be serviced by the hardware in a single
instruction, the optimization improves overall performance by a few %.
This also results in fewer shuffle operations.

Change-Id: I29519469b1e1848c026ee5b7a32256440031dbce

8 years agoMerge release-5-0 into master
Roland Schulz [Fri, 5 Jun 2015 18:15:33 +0000 (14:15 -0400)]
Merge release-5-0 into master

Conflicts:
src/gromacs/gmxlib/rbin.c
(added also ICC16)
src/gromacs/mdlib/tpi.cpp
(gmx_simd_check_and_reset_overflow was removed already
in master branch, so no changes needed here)
        src/programs/mdrun/runner.cpp
(adjacent additions)

Change-Id: I85d92bce71ebeb6e38ac63bb61c3931d5bb54c16

8 years agoReenable lincs/bonded SIMD for ICC on Windows
Roland Schulz [Sat, 30 May 2015 07:46:07 +0000 (03:46 -0400)]
Reenable lincs/bonded SIMD for ICC on Windows

It was accidentally disabled when disabling MSVC because ICC
also has _MSC_VER defined.

Change-Id: I7733b4af74a12dd0997ed22e86f2cdf459f08aba

8 years agoRemove gmx_simd_check_and_reset_overflow
Mark Abraham [Thu, 4 Jun 2015 11:32:32 +0000 (13:32 +0200)]
Remove gmx_simd_check_and_reset_overflow

We think this can only be implemented on x86, was only used for TPI,
and protected against an issue Berk can't reproduce. Thus best
removed.

Refs #1740

Change-Id: Ia8ca50b67683dab5a0e5e4a8b8485946edfd922a

8 years agoDon't use PME ranks with GPUs and -npme=-1
Berk Hess [Tue, 19 May 2015 09:10:06 +0000 (11:10 +0200)]
Don't use PME ranks with GPUs and -npme=-1

The code disabling the automated PME rank choice with GPUs was
accidentally moved after init_domain_decomposition. This caused
PME ranks to be set up, but later a fatal_error occured for
inconsistent PP rank and GPU counts.
Refs #1374.

Change-Id: I5f6bcc90fecac7f63b332b8f1acca7368b5f71bc

9 years agoFix naming from "Gromacs" to "GROMACS"
Mark Abraham [Mon, 18 May 2015 12:36:37 +0000 (14:36 +0200)]
Fix naming from "Gromacs" to "GROMACS"

A bunch of user-facing names used the wrong name, so improved the
consistency there.

Fixing naming within source-code comments is not targeted here.

There's one or two fixes in the Doxygen comments, but that's not
targeted here. In particular, many references to "Gromacs" are in the
SIMD module, which would be silly to bump right now, since there are
lots of patches in Gerrit possibly affected.

Change-Id: I83f1414bffa322dbe2756dc4e5902342ac5fa2a5

9 years agoMore new quotes
Erik Lindahl [Sun, 22 Feb 2015 12:00:07 +0000 (13:00 +0100)]
More new quotes

Change-Id: I582cc4b025bd4f18f358134d11980d90cd66f363

9 years agoFix potential FPE in selection tests
Teemu Murtola [Sun, 31 May 2015 03:21:40 +0000 (06:21 +0300)]
Fix potential FPE in selection tests

Always initialize dynamic evaluation results to zero during the static
analysis pass.  The old code tried to do that, but missed a few cases
where the same expression was evaluated more than once.  Even during
static analysis, some dynamic arithmetic expressions are actually
evaluated, which could lead to FPE if the memory was uninitialized, even
though the results of the evaluation were never used.

Part of #1677.

Change-Id: I0cf73eb656d58f7ad08f6e12705c6d8a273adf84

9 years agoRefactor rst parsing for console output
Teemu Murtola [Tue, 2 Jun 2015 10:26:30 +0000 (13:26 +0300)]
Refactor rst parsing for console output

Move code from helpwritercontext.cpp into a separate class in
rstparser.*, and structure it more cleanly.  The logic is mostly the
same as earlier, but the new structure also makes it easier to fix
some issues.  In particular, since the code now first identifies what
the next paragraph is, and uses a separate loop to format it, it is much
easier to adapt the formatting to the contents of the paragraph.
Add comments for the complicated paragraph parsing logic.

To support this change, make TextLineWrapper not produce whitespace-only
lines if requested to indent an empty line.

Add tests for fixed/enhanced functionality.

Change-Id: I690dcf1578780d5fb0016d41da1e67dca96bd08c

9 years agoReplace gromacs.7 man page with gmx.1
Teemu Murtola [Sat, 30 May 2015 06:24:31 +0000 (09:24 +0300)]
Replace gromacs.7 man page with gmx.1

The description is the same, and the command list is there, but other
content is omitted.  Useful parts can be added back later, when it is
clearer what we want to include here.  Also, the man page now contains a
synopsis and common options for the gmx binary, as is suitable for
gmx.1.

Part of #1437.

Change-Id: I4dbdf542dd2b8a0a7a2e734eebdf13d68483842e

9 years agoDocument current help formatting
Teemu Murtola [Fri, 29 May 2015 10:10:11 +0000 (13:10 +0300)]
Document current help formatting

Add basic Doxygen documentation for the onlinehelp module.  Most
notably, this describes the markup used for the in-source comments,
including the latest developments that allow bullet lists, enumerated
lists, and some titles.

Change-Id: I25be2bcd4c590356d4af0fa5671bbeddcd1afe1f

9 years agoBasic support for titles within tool help
Teemu Murtola [Wed, 27 May 2015 10:12:35 +0000 (13:12 +0300)]
Basic support for titles within tool help

Preserve reStructuredText title formatting within tool help texts when
printing to console.  For now, manual care is needed to properly nest
the sections in the rst help export (which means that the first
subsection needs to use an underline of ^'s).  This allows removal of
all remaining [BR] tags, improving the HTML help.

Remove extra indentation from gmx wham bullet lists; they result in
unnecessary indentation in the HTML output that looks bad.

Fix formatting of the known issues bullet list by just using the
existing formatting engine, now that bullet lists are properly
supported.

Change-Id: I38a4f442f590515dde724c0cf60f0a862dc9cde7

9 years agoSupport rst tables in tool help texts
Teemu Murtola [Wed, 27 May 2015 09:41:13 +0000 (12:41 +0300)]
Support rst tables in tool help texts

Make it possible to use reStructuredTables in the help texts for tools,
and replace some [BR] tags in gmx energy help with a proper table.  The
formatting in the HTML help is greatly improved.

Change-Id: Ib25f7366d3196ba10fbc6cbcd09a0edd8dd3daf5

9 years agoUse stack buffer for LINCS&bonded gather/scatter
Roland Schulz [Fri, 29 May 2015 20:06:43 +0000 (16:06 -0400)]
Use stack buffer for LINCS&bonded gather/scatter

Fixes #1726

Change-Id: Idd57adc02c8fc05529a50e75f3017475b476a90f

9 years agoConverted random module to C++.
Rossen Apostolov [Tue, 9 Sep 2014 12:38:33 +0000 (14:38 +0200)]
Converted random module to C++.

Removed ununsed variables. Changed gmx_rng_cycle_* functions
to use uint64 instead of int64. Fixed uninitialized return variable.

Change-Id: I41ba38f21a0560da1080c8f51bcb36c311783c89

9 years agoWork-around for ICC 15 on Phi
Roland Schulz [Thu, 5 Feb 2015 06:28:51 +0000 (01:28 -0500)]
Work-around for ICC 15 on Phi

Change-Id: Id72e6fb124974f0d8572a1715bc1f25e536f7c69

9 years agoImprove lists in user guide for selections
Teemu Murtola [Sun, 24 May 2015 03:33:08 +0000 (06:33 +0300)]
Improve lists in user guide for selections

- Support enumerated list formatting in console output to make it
  possible to use reStructuredText enumerated lists in help texts.
- Make the keyword list use a bullet list for the keyword groups,
  providing some visual structure for the HTML output.  The extra stars
  do not hurt in the console output, either, but changed the extra help
  indicator to be a + instead of * to reduce confusion with these other
  stars.

Change-Id: I4d5063d4f117a31ea31d8d78cd799dfbd0f1eac8

9 years agoAdditional selection examples
Teemu Murtola [Sat, 23 May 2015 03:57:09 +0000 (06:57 +0300)]
Additional selection examples

Add some examples with explicit tool references, in particular for how
to use selections with tools that require pairs of atoms (gmx distance
and vector options of gmx gangle).

Add examples to explain the difference between the various
center-of-mass keywords.

Fix old note about default index groups with selection tools
(defselections.dat is not currently used).

Change-Id: Ic9e723e6dd2f46f8f0f5a7e1c4127994577acc3e

9 years agoRefactoring of PME load balancing
Berk Hess [Fri, 6 Mar 2015 11:32:24 +0000 (12:32 +0100)]
Refactoring of PME load balancing

Moved all the higher level PME load balancing management code from
md.cpp to pme-load-balancing.c.

Change-Id: Ic9f4be7373ccaa40b3867af6facce66b873efab3

9 years agoFix warnings from GCC 5
Mark Abraham [Mon, 25 May 2015 15:43:45 +0000 (17:43 +0200)]
Fix warnings from GCC 5

Removed unnecessary ddata array from PME-spread spline
calculation. That might even be a useful optimization, for really bad
compilers. Moved declarations into the appropriate loops, so that
analyzers can work better here.

Added several other assertions to keep the code analyzers happy.

Reorganized implementation of get_vsite_masses to get cam declared and
used in a way that keeps analyzers happier. Removed a now useless
assert on j >= 1.

Change-Id: I9c5113f7e4013c629fca87614af4b74e249ee27a

9 years agoConverted pulling code to C++.
Rossen Apostolov [Wed, 3 Sep 2014 13:54:35 +0000 (15:54 +0200)]
Converted pulling code to C++.

Removed unused variables and changed some pointers to const char.
Added some static_cast to make explicit the old casting behaviour.

Added a missing default clause in pull code

Change-Id: I14708cf15799c564b77e466d73a9e8bc4488d192

9 years agoAvoid possible floating-point exception
Mark Abraham [Tue, 26 May 2015 01:20:48 +0000 (03:20 +0200)]
Avoid possible floating-point exception

Refs #1677

Change-Id: I7cc73d50a64ecfd05120ecfd464a47665f1e9df3

9 years agoDon't set CFLAGS for Phi in toolchain
Roland Schulz [Wed, 22 Oct 2014 01:23:29 +0000 (21:23 -0400)]
Don't set CFLAGS for Phi in toolchain

The recommended way to set those flags is with CMAKE_*_FLAGS_INIT but
that is only passible in a platform file because those set in a toolchain
file get overwritten.

This fixes that extra CFLAGS passed on the command line don't get ignored.
Also move setting of fftw out of platform file because those should
be project independent.

Change-Id: I5f4d70efd8369bdef5f5060959e3568026d6820c

9 years agoConvert ewald module to C++
Mark Abraham [Sun, 12 Oct 2014 18:21:18 +0000 (20:21 +0200)]
Convert ewald module to C++

Used std::min/max/pow, some static casts, eliminated unused variables,
defined module, added some Doxygen, initialized some tensors directly
with zero. Removed all C++ ifdef guards, since this module and all its
callers all now compile as C++!

Reworked the implementations of gmx_pme_pp_init(),
gmx_pme_send_force_vir_ener() and gmx_pme_recv_coeffs_coords() to
handle unused-variable warnings better. Such functions can only ever
be used when MPI is configured, but in that case, the old
implementations had variables whose values had to propagate across
ifdef-ed regions. Now, more of the function bodies are behind an ifdef
and the unused values are marked as such only on the code path where
they are unused.

Simplified logic in long-range-correction.cpp so that humans and the
clang static-analyzer can understand what is going on. Fortunately,
the death of the group scheme will eliminate much of the horror of the
ewald_LRcorrection() function, because calc_excl_corr will be always
false.

Replaced use of undocumented conjmul(a,b) with cmul(a, conjugate(b))
since the latter two are static functions in gmxcomplex.h.

Renamed tabulate_eir() as tabulateStructureFactors().

Removed mpi_type in favour of existing GMX_MPI_REAL

Replaced some macros with constants.

Converted comments into basic Doxygen, plus a suppression in
pme-internal.h because Doxygen seems to think struct fields are public
documentation no matter what you tell it.

Change-Id: Ic9f219cc73dbb586c58a78cdfcd17e2bc1fd7a19

9 years agoFix use of hard-coded temporary filename
Mark Abraham [Tue, 26 May 2015 00:53:42 +0000 (02:53 +0200)]
Fix use of hard-coded temporary filename

Using temp.top can run into a user file of the same name, which is
unfriendly. Instead, use the function we have for doing the job of
making a temporary filename.

Fixes #1747

Change-Id: Ia6266e5605dd14032743e11f5dc68a520c47ce06

9 years agoOverview docs for analysis nbsearch
Teemu Murtola [Mon, 25 May 2015 05:49:16 +0000 (08:49 +0300)]
Overview docs for analysis nbsearch

Add doxygen documentation that provides an overview of the analysis
neighborhood search, both from a usage perspective and from an
implementation perspective.  While the latter may not be that important
for using the API, it is probably of interest for people with general
background in MD.  And it shows the complexity of the implementation,
providing additional justification for having this as a shared
implementation for all the tools.

Change-Id: If52060b93601cbf051db6062ef644900dcb1f780

9 years agoInclude selection keyword details in user guide
Teemu Murtola [Wed, 20 May 2015 10:34:47 +0000 (13:34 +0300)]
Include selection keyword details in user guide

- Make 'gmx help -export rst' write out the detailed selection keyword
  help as subsections of the keywords topic.
- Separate the titles from the help texts to make it possible to format
  the title separately.
- Make synopsis formatting the same for each keyword details help topic.
- Make HelpWriterContext not write leading empty lines to console output
  when the help text starts with a literal block.
- Remove unnecessary stars from the keyword lists in the
  reStructuredText output.

Some minor cleanup of the formatting could be done, but otherwise this
closes #679.

Change-Id: Id91ce3c01e9dd5f1c068498217dbc536a712c231

9 years agoFix misuse of gmx_simd_check_and_reset_overflow
Mark Abraham [Tue, 19 May 2015 19:20:09 +0000 (21:20 +0200)]
Fix misuse of gmx_simd_check_and_reset_overflow

Only x86 has useful definitions of this function. The check will
be entirely removed in master branch.

Fixes #1740

Change-Id: Ida1bc43201f44dffbd64d94bc485d4d6d882167b

9 years agoRemoved static from variables in gmx_lapack
Berk Hess [Sat, 23 May 2015 15:11:21 +0000 (17:11 +0200)]
Removed static from variables in gmx_lapack

One function in gmx_lapack declared variables as static (without
reason), which was not thread safe.

Change-Id: Ib8177fc33755a63148882e003b6ea6c61e5e42c8

9 years agoAllow any order for sections in 'gmx help -export'
Teemu Murtola [Tue, 19 May 2015 15:06:07 +0000 (18:06 +0300)]
Allow any order for sections in 'gmx help -export'

Make the selection help appear in a more logical order in the user guide
by writing out the subtopics in the order in which they were added, and
ordering the topics like they were in 4.5 and 4.6.

Part of #679.

Change-Id: I0adf875fc36d32d79e1e066c0ee8025a6277c0df

9 years agoBase to get all 'gmx help' contents to user guide
Teemu Murtola [Tue, 19 May 2015 09:20:40 +0000 (12:20 +0300)]
Base to get all 'gmx help' contents to user guide

Implement initial functionality to get all 'gmx help' contents to the
reStructuredText user guide.  Make 'gmx help -export rst' export also
the help topics, and make minimal changes to the user guide and the
selection help to get it go through Sphinx cleanly.  Subsequent changes
will clean up the documentation further.

Part of #679.

Change-Id: I66219110fac4f4acd9ff9c36a19ca10f9561ca29

9 years agoMerge release-5-0 into master
Teemu Murtola [Fri, 22 May 2015 10:45:31 +0000 (13:45 +0300)]
Merge release-5-0 into master

Conflicts:
    src/gromacs/selection/tests/selectioncollection.cpp

Took both tests added in the different branches at the same location.

Change-Id: I305dd8e37373c3f913b3e86d0ddb286926c3d0db

9 years agoAvoid crash with empty reference for 'same as' selection
Teemu Murtola [Wed, 20 May 2015 19:22:09 +0000 (22:22 +0300)]
Avoid crash with empty reference for 'same as' selection

Make 'same ... as none' selections not segfault.  If there were no atoms
in the reference group, the code that sorted the values and removed
duplicates incorrectly set the number of values as one, resulting in
incorrect memory access later.

Fixes #1742 (segfault part).

Change-Id: I9d14c30404121356ee3abf1a5575fb0baa82fb7b

9 years agoAdd subsection depth to HelpWriterContext
Teemu Murtola [Sun, 17 May 2015 18:27:17 +0000 (21:27 +0300)]
Add subsection depth to HelpWriterContext

Necessary for exporting, e.g., the selection help as rst (#679), and
cleans up the code by making more output go through HelpWriterContext
instead of directly writing to the output file.

Also, reorganize the way help topic titles are written: HelpManager is
now responsible for writing out the title for a topic.  This makes
things behave the same as with HelpWriterContext::createSubSection().

Change-Id: If7e0ee6d4c9dd313e1523fa457f64cf3c4f891f9

9 years agoAdd note about atom order in selections
Teemu Murtola [Thu, 21 May 2015 03:52:15 +0000 (06:52 +0300)]
Add note about atom order in selections

Clarify the behavior of selections in that they always select atoms in
increasing order.  In the same context, mention the mechanisms in place
to work around this.  Use an example that shows the equivalence of
'a to b' and 'b to a' in the selection syntax.

Also clean up the formatting of the selection limitations help topic,
now that bullet lists are properly supported.

Related to #1742

Change-Id: I3daa17521767b3eaadcbc1d8c0c6fc986fa0aee3

9 years agoRestructure CommandLineModuleManager tests
Teemu Murtola [Sun, 17 May 2015 04:07:41 +0000 (07:07 +0300)]
Restructure CommandLineModuleManager tests

Split tests from cmdlinemodulemanager.cpp to two files, one testing the
module manager itself, and the other the actual help output.
Extend the help tests slightly for better coverage (in particular for help
topic handling in the help output).

Move common functionality to cmdlinemodulemanagertest.*.

Change-Id: Ic709632deae21aa3ece2074a80de1e37d815d6e1

9 years agoAdd integration test for empty domain
Mark Abraham [Fri, 15 May 2015 14:40:17 +0000 (16:40 +0200)]
Add integration test for empty domain

This box is large enough that the default 2D DD will contain an
empty domain (at least initially).

Current Jenkins will run this with two domains when run with real MPI.
Extended the CMakery to make this also work with thread-MPI.

Refs #1734

Change-Id: I7b7269cdd1faaa562afeb7a5dd3f75fc19ceff85

9 years agoFix handling of real-valued 'to' selection ranges
Teemu Murtola [Wed, 20 May 2015 18:22:25 +0000 (21:22 +0300)]
Fix handling of real-valued 'to' selection ranges

Two adjacent ranges were incorrectly merged to a single range if the
difference between their nearest endpoints was less than one (the extra
+1 in the code is incorrectly copy-pasted from the integer case).

Add tests for handling overlapping and near-overlapping ranges.

Fixes #1743.

Change-Id: I3ac79c55dc3817e6325e43e27e0ccb4fe360e609

9 years agoFix dependencies for regression test custom target
Teemu Murtola [Wed, 13 May 2015 11:41:04 +0000 (14:41 +0300)]
Fix dependencies for regression test custom target

The gmx binary is a prerequisite for running the regression tests
through ctest; this happens in the internal 'run-ctest' target, not in
the top-level 'check' target.  Fix the dependency.

Fixes #1736.

Change-Id: Ie18aeeb9d8b3619e1d1890848c02e6a523266653

9 years agoSome tests for 'gmx help -export rst'
Teemu Murtola [Sat, 16 May 2015 04:16:04 +0000 (07:16 +0300)]
Some tests for 'gmx help -export rst'

Add basic test that checks 'gmx help -export rst' for regression.
The mechanism also makes it easier to test additional work in this area.

Minor changes in the command-line module to support testing:
 - Make all output from 'gmx help -export' capturable with a new
   FileOutputRedirectorInterface interface.
 - Make it easier to mock a CommandLineOptionsModuleInterface

Change-Id: I58982b3de7e946c373ffb737ef994b4e527418bc

9 years agoAdd checks for correct use of SIMD headers.
Mark Abraham [Sun, 18 Jan 2015 20:18:52 +0000 (21:18 +0100)]
Add checks for correct use of SIMD headers.

Generalized the checking in check-source.py to consider "master"-type
include files other than config.h. Any source file using a symbol that
is correctly defined (or not) only by including such a header now must
include it. Conversely, if no such symbol is used, then that header
may not be included.

Fixed issues where simd.h, simd_math.h and pme-simd.h files were being
acquired transitively. We should not rely on transitive #includes,
because they're too easy to break under maintenance. Unfortunately,
the use of preprocessor kernel generation prevents these checks
working, but we should fix the generation, and not the checker.

Any actual problems from failure to use appropriate SIMD support have
been resolved in other commits.

Noted the existence of the new checker in the developer SIMD and
check-source docs.

Refs #1673

Change-Id: Id1858ba97f6fe12177c0290e2f65dbbabcc41e2f

9 years agoRefactor FFTW setup
Mark Abraham [Thu, 14 May 2015 09:56:46 +0000 (11:56 +0200)]
Refactor FFTW setup

It proved bug-prone to have both own-FFTW and find-FFTW mechanisms try
to fulfil the same contract, and it was not needed in the first
place. We do not need to fake the results of SIMD tests just to avoid
our own warnings (and that was all that they were used for; mdrun does
further SIMD-support detection at run time after possible dynamic
linking of FFTW.

Now we check when there is something to check, and not when there is
not. Removed TODOs and comments no longer appropriate for the
refactored code.

Refs #1735

Change-Id: Ib470fc29cb0b9ccad998698e9b9bda4af9f99dbf

9 years agoMerge "Merge branch origin/release-5-0"
Teemu Murtola [Mon, 18 May 2015 14:42:35 +0000 (16:42 +0200)]
Merge "Merge branch origin/release-5-0"

9 years agoAdded hacks for SIMD rvec/load store in lincs & bondeds
Erik Lindahl [Sat, 16 May 2015 10:45:22 +0000 (12:45 +0200)]
Added hacks for SIMD rvec/load store in lincs & bondeds

We have added proper gather/scatter operations to work on
rvecs for all SIMD architectures, but that will not make it into
Gromacs-5.1. Since Berk already wrote a few routines to use
maskloads at least for AVX & AVX2, this is a bit of a hack to
get the performance benefits of that code already in Gromacs-5.1
(for AVX/AVX2), without altering the SIMD module. This is definitely
a hack, and the code will be replaced once the extended SIMD
module is in place.

Change-Id: I385acb5f989b2ecf463948be84947fe1f6dfd19b

9 years agoMove a few defines to buildinfo.h
Teemu Murtola [Sat, 16 May 2015 06:20:27 +0000 (09:20 +0300)]
Move a few defines to buildinfo.h

Move CMAKE_INSTALL_PREFIX, CMAKE_SOURCE_DIR, and related defines to
buildinfo.h to reduce exposure of these defines.  In particular, this
removes the need for a ~full rebuild when changing the installation
prefix.

Remove GMX_BINARY_SUFFIX from config.h, as it is no longer used in any
source code.

Change-Id: I830e8df15806a22f40726947c92d2612245d8d25

9 years agoMerge branch origin/release-5-0
Mark Abraham [Sat, 16 May 2015 17:06:44 +0000 (19:06 +0200)]
Merge branch origin/release-5-0

Conflicts:
CMakeLists.txt
Bumps to version information not needed in master branch,
so not added.

docs/install-guide/install-guide.md
Incorporated new docs for static binaries

docs/old-html/online/mdp_opt.html
Incorporated new docs for soft-core

src/external/boost/README
Incorporated new hint about compiler warnings to
suppress if ever bundling an updated version of Boost
smart pointers.

src/external/gmock-1.7.0/CMakeLists.txt
Incorporated new machinery for suppressing
no-unused-variable GCC 5 warnings in GMock source.

src/gromacs/gmxpreprocess/grompp.c
Recent bug fix in t_state touched same lines as
changes in master branch to remove file type TPX
and the need to pass a parameter to a pull-start
function, so made both changes together.

tests/CMakeLists.txt
Changes to the developer-download of regressiontests
and the way that is implemented touched adjacent lines,
so made both changes together.

Change-Id: I8fb94c3a55893f6bc76d7cf6f33378f94cacf618

9 years agoLINCS thread tasks can now be independent
Berk Hess [Thu, 19 Feb 2015 14:27:09 +0000 (15:27 +0100)]
LINCS thread tasks can now be independent

With very locally coupled constraints, such as H-bonds only
constraints, the LINCS OpenMP tasks are now independent. This means
that no OpenMP barriers are required, which can significantly speed
up LINCS.
Additionally triangle constraints (which are present in e.g. OH groups
when using pdb2gmx -vsite) are now divided over thread tasks instead
of done by the master thread only. This slightly improves load
balancing and removes two thread barriers.

Change-Id: Ibbafd9c10f51d35a87e9784a0650d849c0d1c1e5

9 years agoSuppress GCC5 warnings with internal Boost
Mark Abraham [Sun, 10 May 2015 20:29:06 +0000 (22:29 +0200)]
Suppress GCC5 warnings with internal Boost

GCC 5 warns that auto_ptr is deprecated, which we know and don't care
to hear about.

Change-Id: I5e4721f4a06ce18e113be7b205d108a0df7586b7

9 years agoTNG version 1.7.5
Magnus Lundborg [Wed, 29 Apr 2015 18:29:27 +0000 (20:29 +0200)]
TNG version 1.7.5

Corresponds to 7482fac2a840e5f99664fbe812a3ce05e0eef335 in the
TNG repository.

Fixed bug when writing multiple chains in one molecule. Pointers
to the residues in the chain were not properly updated.

Fixed minor issues.

sizeof should not be printed as %lu but %<PRIuPTR>.

Change-Id: Ice90c72dd37df77d3d15c4d05d40df5994fed943

9 years agoMake bond-atomtypes case sensitive
Alexey Shvetsov [Wed, 6 May 2015 22:10:58 +0000 (01:10 +0300)]
Make bond-atomtypes case sensitive

This change is needed for e.g. the glycam force field to work.
This change makes the bond-atomtype handling consistent with the
normal atom type handling, which was already made case sensitive.
Note that this only requires case matching internally within the
force field files, this does not affect handling of user input.

Changed the (inconsistent) bond-atomtypes to uppercase for two
dihedrals parameter lines in charmm27.

Change-Id: I27a37543393e503ab836377c992e5e0c6c57e852

9 years agoAssert the size of non-bonded GPU work units
Szilard Pall [Wed, 13 May 2015 18:25:22 +0000 (20:25 +0200)]
Assert the size of non-bonded GPU work units

<=0 sized grid blocks lead to kernel launch failure which have
caused issues before.

Refs #1734

Change-Id: I4e914bcf3168f7268dab64b69d25bf34fb6c85c9

9 years agoFix own-FFTW build
Mark Abraham [Thu, 14 May 2015 09:29:27 +0000 (11:29 +0200)]
Fix own-FFTW build

Recent changes broke the expectation that the own-FFTW build attempts
to pretend to have run SIMD-support tests on the build that it has not
yet performed. This is all more complicated than it needs to be,
and will be refactored in master branch.

Fixes #1735

Change-Id: I9e5f296b199b6b5af685fa2ba87cc962a41a251f

9 years agoMerge release-4-6 into release-5-0
Szilard Pall [Thu, 14 May 2015 16:34:14 +0000 (18:34 +0200)]
Merge release-4-6 into release-5-0

Change-Id: Ieb8813f1c9def6d9f232c54adebb56f2081020df

9 years agoFixed CUDA error with empty domains
Berk Hess [Wed, 13 May 2015 19:54:38 +0000 (21:54 +0200)]
Fixed CUDA error with empty domains

Recent commit fc8a5624 introduced empty CUDA kernel calls when there
are empty domains. This seems not be allowed by CUDA (we get errors).
Fixed #1734. Refs #1721.

Change-Id: Ifd32a55c8d6756c93a0fcaba29983ae326abc569

9 years agoVersion bumps after new release
Mark Abraham [Wed, 13 May 2015 14:26:41 +0000 (16:26 +0200)]
Version bumps after new release

Numbers bumped, -dev tag replaced.

Change-Id: Ida285019b80e4de6d397f1a34528553404951ede

9 years agoRemove remaining old-html content
Teemu Murtola [Tue, 12 May 2015 11:37:54 +0000 (14:37 +0300)]
Remove remaining old-html content

Replace the HTML table hack + static images that created the flow chart
with a graphviz graph.  The presentation could potentially be improved,
but the essential content from the old chart is there (in case it is
useful).

Remove all build system references to old-html, simplifying the system
and removing the need to document any of this.

Change-Id: Ic011c770676d4d6d1b560fcb521bfc523c142ad0

9 years agoVersion 5.0.5
Mark Abraham [Wed, 6 May 2015 21:05:18 +0000 (23:05 +0200)]
Version 5.0.5

Removed -dev tags from versions. Bumped regressiontest hash.

Change-Id: Ib298b27f48f378dc9c589c3b8bb0c2a77c219960

9 years agoFix segv in g_covar
Berk Hess [Wed, 13 May 2015 10:11:34 +0000 (12:11 +0200)]
Fix segv in g_covar

With fewer trajectory frames than #DOF in the analysis group, g_covar
would print a warning to a NULL pointer instead of stderr.
Fixes #1733.

Change-Id: I546f867d7d95f418212bb5b65005f62de71bdfb8

9 years agoFix auto-downloaded regression test execution
Szilard Pall [Sun, 10 May 2015 23:03:02 +0000 (01:03 +0200)]
Fix auto-downloaded regression test execution

The regressiontests directory within the tarball has been renamed
to contain a version suffix: regressiontests-BRANCH-COMMITID.tgz
However, the CMake code that sets up the tests and needs the path to the
location of the the regressiontests was not updated and tried to use an
incorrect, hardcoded directory name.

This change implements extracting the directory name from the tarball.

Change-Id: Ic597b69b7a375966e9747e55afcb9ef5921b2b22

9 years agoFacilitate linking of static binaries
Roland Schulz [Tue, 17 Mar 2015 04:03:40 +0000 (21:03 -0700)]
Facilitate linking of static binaries

Minimal solution. The user has to manually set both
-DBUILD_SHARED_EXE=no and CFLAGS=CXXFLAGS=-static, perhaps manage
their own toolchain, and certainly make static libraries available for
all dependencies. Also does not auto-detect if compiler defaults to
static (Cray). Works better than LINK_SEARCH_END_STATIC because
otherwise dynamic flags can be added to the middle if some libraries
in default search path exist as both dyanmic and shared.

Fixes #911
Related to #1641

Change-Id: If7b8192b44c33c861f126e3422df04388d2f2be5

9 years agoFix uninitialized fields in grompp t_state
Mark Abraham [Mon, 11 May 2015 19:48:00 +0000 (21:48 +0200)]
Fix uninitialized fields in grompp t_state

Allocating t_state on the stack and using an incomplete
pseudo-constructor means it is possible to write an uninitialized
value in fep_state field to the .tpr file, which we've been
doing. Found with Memory Sanitizer. Perhaps this behaviour lies behind
some of the strange behaviour that is periodically seen on Jenkins.

Fixed by allocating t_state on the heap, which might resolve other
issues, since snew() zeroes the memory as a side effect. Also
initialized fep_state field in init_state().

Refs #1729, #1730

Change-Id: Ibcee7bff1e090fb1991969c4562f44f056868a03

9 years agoOpenMP parallelization of g_wham
Jochen Hub [Fri, 6 Sep 2013 08:39:59 +0000 (10:39 +0200)]
OpenMP parallelization of g_wham

The inner loops of g_wham now allow OpenMP parallelization.
The computed PMFs are identical up to 5 digits at different number
of threads and compared to a previous version of g_wham. Compiles
also without OpenMP support. Number of threads set with option -nt.

Change-Id: I77fe01053386fa12f22e4303e8777ccd1ceaecd0

9 years agoAdded a note about sc-coul being auto turned on.
Rossen Apostolov [Thu, 12 Jun 2014 15:03:10 +0000 (17:03 +0200)]
Added a note about sc-coul being auto turned on.

The documentation didn't mention that the soft-core potential
is automatically switched on in the case of a single component
lambda.

Fixes #1421.

Change-Id: Ic478b8b1a68c9ef08764946337f72008808bb2b3

9 years agoWork around gcc 5 warnings with Google Test
Mark Abraham [Thu, 7 May 2015 13:57:10 +0000 (15:57 +0200)]
Work around gcc 5 warnings with Google Test

There are new unused-variable warnings issued by gcc 5 from constructs
used in Google Test code, and we don't want to see them.

Change-Id: Ia3ff6b8f3ca699f0ef72c003e7359703367e5c5c

9 years agoChanged FFTW warning from AVX to no SSE
Berk Hess [Thu, 7 May 2015 08:45:27 +0000 (10:45 +0200)]
Changed FFTW warning from AVX to no SSE

Changed the cmake FFTW SIMD check warning from complaining about
AVX to complaining about missing SSE or SSE2.
With FFTW 3.3.4 the performance of FFTW with both SSE and AVX enabled
is often a bit better and never much worse than SSE along. Newer
Intel processors probably also perform better with AVX with FFTW 3.3.3
so we should not complain about the combination of SSE(2) and AVX,
but only when SSE is missing.

Change-Id: I3665a35ec98616f015d05e314c8fbb80a8862092

9 years agoUse single variable for expected Doxygen version
Teemu Murtola [Wed, 6 May 2015 18:52:43 +0000 (21:52 +0300)]
Use single variable for expected Doxygen version

Put the expected Doxygen version into a single CMake variable, and use
that throughout the build system and the Sphinx documentation to make it
easier to maintain.

Change-Id: I40b6bb8a897864850ad1c7b5010ae5129e3347a1

9 years agoMerge "Merge branch release-5-0"
Mark Abraham [Sun, 10 May 2015 15:11:18 +0000 (17:11 +0200)]
Merge "Merge branch release-5-0"

9 years agoMove some testutils and overview docs to dev guide
Teemu Murtola [Mon, 4 May 2015 08:39:02 +0000 (11:39 +0300)]
Move some testutils and overview docs to dev guide

The unittesting.md page for Doxygen got stranded after the parent commit
that converted the dev-manual folder to Sphinx.  Make this page part of
the developer guide.  Move those parts that had extensive references to
C++ classes to the testutils module documentation page in Doxygen and
extend them a bit.

Also, move the codelayout.md to the developer guide, as it fits better
there and there are several crosslinks between it and the developer
guide, while there are very few from the Doxygen documentation.

Add a mechanism to easily create crosslinks from Doxygen to the
developer guide.

Add some overview text for the developer guide to explain the structure
of the developer documentation.

Some further reorganization is necessary (in child commits) to get
better organization for the text; for now, just converted the
formatting, without changing the contents or organization significantly
within the pages.

Change-Id: I68706ffc961e1c23f5de0d62118095e90e05f4dd

9 years agoPrint correct order for include order/style issues
Teemu Murtola [Wed, 6 May 2015 09:33:31 +0000 (12:33 +0300)]
Print correct order for include order/style issues

Make the 'check-source' target print the correct/conforming include
order together with the "include order/style is not consistent" message,
and add a reference to related documentation.  This hopefully makes
these messages easier to understand.

Change-Id: I63c4defaefab273cce399cc77522ed69c428de12

9 years agoImprove build system for Sphinx
Teemu Murtola [Thu, 7 May 2015 03:59:26 +0000 (06:59 +0300)]
Improve build system for Sphinx

If one switches between various commits that add .rst files to the
documentation, the old ones get left in the sphinx-input/ directory in
the build tree and generate spurious warnings when building the
documentation after switching to a commit where the file no longer
exists.

Make CMake remove the obsolete files.  There are still issues if someone
removes or renames a 'gmx' subcommand, but those cases should be rarer
than reorganizing or adding to the manually maintained .rst files.

Use a more reasonable logic for REGRESSIONTEST_MD5SUM.

Change-Id: If3fcef162af1936217ee36238aa1876a110473be

9 years agoConvert developer manual to rst
Teemu Murtola [Tue, 28 Apr 2015 18:39:59 +0000 (21:39 +0300)]
Convert developer manual to rst

Convert all of docs/dev-manual/ to reStructuredText and generate the
documentation with Sphinx.  Also convert docs/doxygen/lib/doxygen.md and
example files related to that.

The actual text or content has mostly not changed, but some
reindentation and other formatting changes are quite extensive.
The only textual changes are in the top-level pages where the text and
presentation has been altered slightly to make them appear better with
Sphinx.  More work is still necessary to get the best possible
organization under Sphinx, but this should be a reasonable first step.

Change-Id: I9c322aca1f39dd3f54f1a6035b06ec298fc95e43

9 years agoMerge branch release-5-0
Mark Abraham [Sat, 9 May 2015 20:42:50 +0000 (22:42 +0200)]
Merge branch release-5-0

Conflicts:
src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda.cu

Trivial conflict; resolved preserving both the name change from cu_nb
to nb in master, and bug fix incoming from release-4-6 via
release-5-0.

Bumped copyright headers on BG/Q Platform files

Change-Id: Ie9dc6e674e8ab9b27716cf6d1b7bc5e779ea1bea

9 years agoRemoved non-ff atomtypes from oplsaa and charmm27
Berk Hess [Thu, 7 May 2015 08:01:26 +0000 (10:01 +0200)]
Removed non-ff atomtypes from oplsaa and charmm27

Removed atom types Cu2+, Fe2+ and SI from oplsaa and charmm27,
since they are not part of the official force fields.
Refs #957.

Change-Id: Ic8ebdbee62b4441184a54a580b83849ba21ca978

9 years agoFixed recently-introduced couple-lambda warning message
Mark Abraham [Mon, 4 May 2015 18:36:29 +0000 (20:36 +0200)]
Fixed recently-introduced couple-lambda warning message

The grompp warning was not issued correctly. Any simulation that ran
was unaffected.

Refs #1421
Fixes #1722

Change-Id: Ib582d3749c283dbb03504c5ec09f854c518e11a5

9 years agoMerge "Merge release-4-6 into release-5-0" into release-5-0
Szilárd Páll [Wed, 6 May 2015 11:13:12 +0000 (13:13 +0200)]
Merge "Merge release-4-6 into release-5-0" into release-5-0

9 years agoFix SIMD unit tests on BG/Q
Mark Abraham [Mon, 23 Mar 2015 15:49:53 +0000 (15:49 +0000)]
Fix SIMD unit tests on BG/Q

These got broken in https://gerrit.gromacs.org/#/c/3956/2 when I
inadvertently removed -O3 -NDEBUG from the compiler flags after
version 1. With XL compilers, the CMake default for release mode
is -O -DNDEBUG, and that gives an internal compiler error for
the SIMD unit tests.

Also removed commentary about debug versions of XL compilers, since they
are not appropriate when we're no longer hard-coding compilers.

Change-Id: I5cb06695c061336bea7678353efa153d1f6be955

9 years agoMerge release-4-6 into release-5-0
Mark Abraham [Tue, 5 May 2015 22:07:51 +0000 (00:07 +0200)]
Merge release-4-6 into release-5-0

Conflicts:
src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda.cu

Only conflict was from changes to a comment (end-of-line space removed
already in release-5-0, fix on next line in release-4-6). Resolved in
favour of recent fix on release-4-6, and uncrustify re-removed the
space.

Change-Id: Iffed0bc8b9a8c52a96ffe8a9a5baf8f5696f8cf7

9 years agoAvoid rounding errors affecting results in one test
Teemu Murtola [Thu, 30 Apr 2015 09:53:15 +0000 (12:53 +0300)]
Avoid rounding errors affecting results in one test

Change the input for one of 'gmx gangle' tests such that it does not
produce angles that are exactly at an edge of the three-bin histogram
used in the test.  Rounding could affect the bin into which the angle
was assigned to, causing the test to fail erroneously.

Fixes #1716

Change-Id: I9979a8dfee0b870b3904fa28e274540f892f542d

9 years agoFix for trjconv preserving box dimensions.
Justin Lemkul [Wed, 3 Sep 2014 12:23:43 +0000 (08:23 -0400)]
Fix for trjconv preserving box dimensions.

When using -1 in the -box specification, box vectors were
instead set to zero rather than being preserved due to
clear_mat(fr.box). Now, fr.box is conditionally cleared to
prevent this.  A fatal error is triggered if the user is
trying to preserve a non-existent box to avoid repeating the
undesired behavior.

Change-Id: I7484c33a7db445e0ad7cf21b2694150eee9ef768

9 years agoFixed GPU non-local F copy local conditional
Berk Hess [Thu, 30 Apr 2015 19:32:44 +0000 (21:32 +0200)]
Fixed GPU non-local F copy local conditional

With domain decomposition and GPUs the copy of the non-local part of
the host memory force buffer to the force array was conditional on
the local instead of the non-local list size. This meant that with
an empty non-local list and non-empty local list outdated non-local
forces would be copied. Conversely, with an empty local list all
non-local forces would not be added. Both things can only happen
in systems with partially empty boxes and then only rarely.
Having the local kernel, D2H copyback and F reduction called
conditionally is not useful in practice, so they are now unconditional
to avoid complicating the code.
Fixes #1721.

Change-Id: I06731b0055a4fb5a16168e7180964e0b87443b0f

9 years agoFix error handling in gmx_tmpnam
Olivier Fisette [Sun, 26 Apr 2015 13:54:27 +0000 (15:54 +0200)]
Fix error handling in gmx_tmpnam

The return code of mkstemp was being mis-used for error handling.
This could explain some long-standing issues with (e.g.) DSSP
mysteriously not working even when the user had done everything right.

Fixes #1717

Change-Id: I72b385a751b99c3f49d99a14bfc6964ad776c22d

9 years agoFix for rarely occuring replica exchange error.
Michael Shirts [Tue, 3 Mar 2015 17:55:32 +0000 (12:55 -0500)]
Fix for rarely occuring replica exchange error.

It could write to unallocated memory when permutations of all replicas
formed a single cycle (which is rare except for very low numbers of
replicas)

Fixes #1697

Change-Id: I23e8f7213572d3e8b9461cfdd7cb1eb790b45fe3

9 years agoMove GPU implementation to new interface
Mark Abraham [Fri, 12 Dec 2014 15:56:27 +0000 (16:56 +0100)]
Move GPU implementation to new interface

This prepares for OpenCL implementation by updating the existing
preprocessor-based interface for GPU functions (that has real
implementations with a GPU build and null implementations without).
Some related changes to identifier names, comments and docs.

Renamed
s/ncuda_dev/n_dev/g
s/cuda_dev/dev/g
s/nb_cuda/nb_gpu/g
s/cu_nb/nb/g
s/cu_nbv/gpu_nbv/g
s/cuda_dev_info/gmx_device_info/g
so they were more generic, for when an OpenCL implementation wants to
share the same identifiers. Related, some _gpu_ had to become
_cuda_gpu_ because it will only have a CUDA implementation, other
_cuda_gpu_ had to become just _gpu_, some _cuda_ had to become _gpu_
or _cuda_gpu_. Some CUDA became GPU.

Several CUDA header files are moved from mdlib/nbnxn_cuda to files of
more generic names in mdlib. This is not great either, but
reorganizing the whole nbnxn code into a proper module, perhaps with
submodules is not within the scope of this change.

Updated naming of some data types to be struct gmx_name_t, per
style in Redmine #1490. Used some explicit forward declarations
instead of including files to get them. Removed typedefs for
opaque pointers.

Moved gpu_timing struct from
legacyheaders/types/nbnxn_cuda_types_ext.h to timing/gpu_timing.h, and
the remaining content to mdlib/nbnxn_gpu_types.h. So we no longer
install this internal-use-only header.

The last part of init_interaction_const() in forcrec.cpp is split off,
so that the construction phase can be moved to occur before
init_nb_verlet(), so that the "constants" are known before any JIT
compilation of GPU kernels takes place. Future work will address the
question of handling JIT compilation more flexibly, or in more than
one place (e.g. when things become compile-time constants after PME
tuning).

Converted some Doxygen style to new guidelines, added basic file-level
documentation, updated include guards.

Introduced gpu_set_host_malloc_and_free so the implementation-specific
details can be handled in the implementations.

Change-Id: I888722c92daeccc7f32987d9b6cb15544351b68d