Teemu Murtola [Tue, 16 Jun 2015 09:53:02 +0000 (12:53 +0300)]
Improve logic for automatic selection names
If a selection is directly provided from an external index group, the
name of the selection is set to be the name of the group, irrespective
of the exact way the group is selected. The code that did this was a
bit too eager, and used the name of the group that appeared around the
beginning of a more complex selection in some other cases, leading to
confusion.
Make the code only use the name of the group if the group is really used
as-is, and otherwise use the selection text. Add explicit tests for
this behavior.
Change-Id: Ic7fe2626a07cfd3cac3773046ed9f83484ba4368
Berk Hess [Mon, 13 Apr 2015 08:55:04 +0000 (10:55 +0200)]
Refactored pull data structures
Moved the pull work variables into a new pull_t struct.
Only the pull input parameters remain in (renamed) pull_params_t.
For the moment struct pull_t pull_work is still present in t_inputrec.
This should later be moved to a more appropriate place.
Change-Id: I78f6f9736d52514f0327c86e43d4fb2ac88d60cd
Mark Abraham [Fri, 22 May 2015 11:42:21 +0000 (13:42 +0200)]
Stop people installing into the build tree
Several users have tried this and run into problems.
Also patch the install guide so people can find useful information
about using CMAKE_INSTALL_PREFIX
Change-Id: I43b3d9959e0a2fc93dc1d80fb8fb0727cf459f11
Erik Lindahl [Fri, 12 Jun 2015 21:16:07 +0000 (23:16 +0200)]
Fix CUDA version info in NVML application clock warning
Report driver and runtime versions, not the compute capability
of the card (since we already detected the card is recent enough).
Fixes #1706.
Change-Id: Ida8b36203f56dcda20dc367c69dc02586edf40e4
Erik Lindahl [Sat, 13 Jun 2015 08:22:28 +0000 (10:22 +0200)]
Add membrane embedding docs
These were killed by mistake in
86601a237df when the
separate g_membed program was merged into mdrun.
Fixes #1724.
Change-Id: If97dbf13c269e0711cda9798fac03225920c0d6f
Berk Hess [Tue, 16 Jun 2015 18:16:56 +0000 (20:16 +0200)]
Added missing DD cycle counting
Cycle counting was missing for DD repartitioning after replica
exchange or coord swap. Removed DD cycle counting for initial DD.
Moved DD cycle counting into dd_partition_system and added
subract_cycles function with assertion to detect cycle wrapping.
Fixes #1677.
Change-Id: I7f1b19397b36456f1d120dbc0080146a384def5a
Erik Lindahl [Fri, 12 Jun 2015 21:32:56 +0000 (23:32 +0200)]
Updated FFTW recommendations in install-guide.
Both SSE2 and AVX should be used, and there is now
info about the upcoming FFTW-3.3.5 with more SIMD support,
as well as a link to an unofficial prerelease on the gmx site.
Fixes #1696.
Change-Id: I6413d5e0e06c78a3c9f62acbf6fa0bfc1bd0a561
Mark Abraham [Tue, 20 Jan 2015 11:05:31 +0000 (12:05 +0100)]
Move code for managing mdrun -cpi and -append
Prepares for refactoring to simplify and fix this handling. Kept logic
peculiar to handling mdrun command-line options near other such code.
Renamed functions to better suit their roles. Renamed bAppend
variables, in particular to separate the role of "the user asked for
appending" from "whether mdrun is actually going to do appending."
Change-Id: I063138a49d210e92cebe19e290dc6a0e7b72b1cf
Berk Hess [Thu, 7 May 2015 20:28:06 +0000 (22:28 +0200)]
Automated the -gpu_id option
With #PPrank <= #gpu in a node, the GPU id's were already assigned
automatically. Now with #PPrank a multiple of #GPU they are assigned
automatically with GPU sharing.
Change-Id: I59079b542b5703553c3e1b841c47abdc65f64459
Erik Lindahl [Fri, 12 Jun 2015 19:49:27 +0000 (21:49 +0200)]
Fix segfault with timer reset and -nb cpu
Fixes #1710.
Change-Id: I701b8bb6111fd43379997b7af0aedae7a5fe567a
Erik Lindahl [Fri, 12 Jun 2015 20:46:24 +0000 (22:46 +0200)]
Avoid warning about affinity on Blue Gene, reduce warnings
- Blue Gene does not migrate threads, so don't warn about
affinity setting not being available.
- To avoid flooding users with warnings, just use warnings
when it is very likely the user did something incorrect
when setting pinning options, but notes when it might be
a property of the platform, or when it is not severe.
Fixes #1703.
Change-Id: Idaa781959e0997f6737593a8fd9243d6a979a493
Mark Abraham [Thu, 28 May 2015 14:15:29 +0000 (16:15 +0200)]
Fix pairs_nb not recognized as part of moleculetype
Old code gives "unknown directive" error from the default of the
switch statement.
Fixes #1749
Change-Id: I54977f76f82cfdbfd4a7070129aa365d4fe5e188
Mark Abraham [Wed, 18 Mar 2015 08:52:15 +0000 (08:52 +0000)]
Add unit tests for ArrayRef
This fixes mdrun signalling on BG/Q. The templated constructor for
ArrayRef does not work with xlc 12 on BG/Q with array fields of
structs unless the base type has size equal to char. Presumably this
is another example of the way that attributes of struct fields just
get thrown away by compilers.
Changed name of local variable to sig, just in case "signal" clashes
with a preprocessor symbol somewhere...
Some changes to the arrayref.h implementation to make it easier to
write the tests as type-parameterized, by making the factory functions
also appear as members of the corresponding classes, with the same
name for both ArrayRef and ConstArrayRef. While there, remove some
documentation duplication.
Fixes #1701
Change-Id: I6894706b224dc5f3db7893503371107f1ff324d2
Roland Schulz [Tue, 16 Jun 2015 06:15:36 +0000 (02:15 -0400)]
Fix warning in uncrustify
Change-Id: I101a3fcfe4d50191a2237ac0743979a841349cce
Roland Schulz [Tue, 16 Jun 2015 06:29:53 +0000 (02:29 -0400)]
Fix consts in bonded and clincs
- binary constants are not valid C++03
- extra unnecessary bits give warnings with ICC 15
Change-Id: I7645e2c489e6371bfabcbbf460fb3acbda447108
Teemu Murtola [Mon, 15 Jun 2015 15:28:33 +0000 (18:28 +0300)]
Fix broken links from the old flow chart
The program help pages got moved from programs/ to onlinehelp/, but
these explicit links were forgotten.
Change-Id: Ia37f4b20d37f40f727835bca71d9b85f3260502c
Erik Lindahl [Mon, 15 Jun 2015 09:16:49 +0000 (11:16 +0200)]
Fix OS X FFTW build failures introduced 86a772
The two avx/sse options needs to be a list, and
since FFTW always picks gcc by default we need
to disable FFTW AVX regardless of the compiler.
Change-Id: Ie82d7cc85de0715d5f2dd7a6198af079575fe891
Erik Lindahl [Tue, 12 May 2015 07:07:58 +0000 (09:07 +0200)]
Fixed SIMD detection and flags common for IBM archs
At some point the entire SIMD detection code in
CMake had been turned off for all platforms except
x86, likely because it caused problems when cross-
compiling for BG/Q. This fixes it to avoid executing
a binary when cross-compiling, but re-enables the
automatic detection on all other non-x86 platforms.
Second, the IBM compilers are buggy _without_ -O3
for SIMD code, so we now add high optimization for
xlc by default. When using CUDA, we avoid propagating
CFLAGS since that causes problems with VSX "vector",
but we add the -O3 optimization level to nvcc.
Finally, at high optimization level xlc produces
incorrect sign for tan(0) when it is converted to
float. We fix this by using tanf() when the compiler
is xlc.
Change-Id: Ia4cb627e5c65b84fee87815fcb5f5c220f34c2f3
Rossen Apostolov [Tue, 3 Mar 2015 13:47:17 +0000 (14:47 +0100)]
Building own fftw now uses version 3.3.4
Uses --enable-avx when GMX_SIMD is also AVX-based (and not on Mac with
GCC, where the build runs into issues with which assembler to use).
Change-Id: I47bc33655970ba8fc4c005de00bad3c5cb06e763
Berk Hess [Wed, 22 Apr 2015 09:42:57 +0000 (11:42 +0200)]
Refactored mdrun resource division
The functions concerned with divided MPI/thread resources have been
moved from runner.cpp to the new file resource-division.cpp.
Set min_atoms_per_mpi_rank to 1 for NM and TPI to avoid compiler
warning and for NM on systems of a few atoms.
Change-Id: I94f770c47b4b5ca03de8f5a29a165631796204ad
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
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
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
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
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
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
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
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
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
Mark Abraham [Thu, 11 Jun 2015 20:46:57 +0000 (22:46 +0200)]
Merge "Merge branch release-4-6 into release-5-0" into release-5-0
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
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
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
Mark Abraham [Thu, 28 May 2015 14:34:47 +0000 (16:34 +0200)]
Document limitations of trjconv -dump
Change-Id: I336791a2eeb84a773de1ea96b8e36a42ac3fc66e
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
Mark Abraham [Tue, 9 Jun 2015 12:41:38 +0000 (14:41 +0200)]
Merge branch release-4-6 into release-5-0
Conflicts:
src/gromacs/gmxlib/copyrite.cpp
New citations in release-5-0 branch adjacent to incoming
ones; kept all citations
src/programs/mdrun/mdrun.cpp
New please_cite calls next to a line removed in release-5-0;
retained the calls.
Change-Id: I463a598e32ffa82ebdd66211feba84635bc962b5
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
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
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
Szilard Pall [Tue, 2 Jun 2015 16:59:43 +0000 (18:59 +0200)]
add last two GROMACS paper citations
The 4.5 paper was only in the README file but not printed to the log
while the last (de-facto 4.6) LNCS paper was not mentioned anywhere.
Change-Id: I95e947564957ded0b7f76cb82c3fe4f69c72f85f
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
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
Roland Schulz [Tue, 26 May 2015 18:21:40 +0000 (11:21 -0700)]
Use stat to check that paths are equivalent
Replaces the previous approach of comparing path as string.
The previous approach didn't work reliable on case insenstive filesystems
or with symlinks.
Change-Id: Iee11c172db89b98a26b3592be2f285110a85a632
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
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
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
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
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
Erik Lindahl [Sun, 22 Feb 2015 12:00:07 +0000 (13:00 +0100)]
More new quotes
Change-Id: I582cc4b025bd4f18f358134d11980d90cd66f363
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
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
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
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
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
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
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
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
Roland Schulz [Thu, 5 Feb 2015 06:28:51 +0000 (01:28 -0500)]
Work-around for ICC 15 on Phi
Change-Id: Id72e6fb124974f0d8572a1715bc1f25e536f7c69
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
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
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
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
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
Mark Abraham [Tue, 26 May 2015 01:20:48 +0000 (03:20 +0200)]
Avoid possible floating-point exception
Refs #1677
Change-Id: I7cc73d50a64ecfd05120ecfd464a47665f1e9df3
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Teemu Murtola [Mon, 18 May 2015 14:42:35 +0000 (16:42 +0200)]
Merge "Merge branch origin/release-5-0"
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
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
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
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
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
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
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
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
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
Szilard Pall [Thu, 14 May 2015 16:34:14 +0000 (18:34 +0200)]
Merge release-4-6 into release-5-0
Change-Id: Ieb8813f1c9def6d9f232c54adebb56f2081020df
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
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
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
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
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