Alexey Shvetsov [Wed, 3 Jun 2015 20:45:55 +0000 (23:45 +0300)]
Merge branch 'master' into pygromacs
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
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
Alexey Shvetsov [Wed, 27 May 2015 18:03:26 +0000 (21:03 +0300)]
Merge branch 'master' into pygromacs
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
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
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
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
Alexey Shvetsov [Fri, 15 May 2015 07:46:20 +0000 (10:46 +0300)]
Merge branch 'master' into pygromacs
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
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
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
Alexey Shvetsov [Tue, 12 May 2015 19:24:32 +0000 (22:24 +0300)]
Merge branch 'master' into pygromacs
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
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
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
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
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
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
Mark Abraham [Sun, 10 May 2015 15:11:18 +0000 (17:11 +0200)]
Merge "Merge branch release-5-0"
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Alexey Shvetsov [Tue, 28 Apr 2015 18:27:01 +0000 (21:27 +0300)]
Merge branch 'master' into pygromacs
Alexey Shvetsov [Tue, 28 Apr 2015 18:26:50 +0000 (21:26 +0300)]
Merge branch 'pygromacs' of git+ssh://biod.pnpi.spb.ru/alexxy/gromacs into pygromacs
Maxim Koltsov [Tue, 28 Apr 2015 16:47:35 +0000 (19:47 +0300)]
Initial implementation of multimodule batches
Add support for calling several modules from one. Python bindings are
extended to support this.
Berk Hess [Tue, 28 Apr 2015 10:12:40 +0000 (12:12 +0200)]
Re-enabled FMA for AVX-128-FMA
All FMA instructions for AVX-128-FMA were not renamed during a SIMD
macro name change, which effectively removed FMA support for AMD.
Fixes #1719.
Change-Id: I855a379d29742d37c586794a191606a360a89c5f
Mark Abraham [Fri, 24 Apr 2015 12:50:35 +0000 (14:50 +0200)]
Add application-clock NVML-based support for Quadro GPUs
Also minor refactoring to eliminate a small amount of duplication that
would have become larger and harder to understand.
Change-Id: I14fe411eff549216e71c684d4743a36ff3bd576a
Mark Abraham [Sun, 19 Apr 2015 12:15:06 +0000 (14:15 +0200)]
Clean up remnants in mdrun
nstlist < 0 is now impossible after the removal of group-scheme
heuristic neighbour-list updates, so remove some output that can no
longer be triggered.
Iterated constraints are no longer implemented, but some things got
left behind in the removal. Removed ekind_save variable from do_md,
and some comments. Removed some brace pairs that made reviewing the
removal of iterative integrators easy, because uncrustify would not
re-indent that patch. It now does that re-indent, but there's no
potential for bugs here.
deviceOptions was used for OpenMM support, but is now unused, so
removed.
GMX_WRITELASTSTEP has never had a way to be defined, so removed the
check for that.
Change-Id: If547b86a5ec05dce3bb591b8d4c6dd052c07c04e
Mark Abraham [Fri, 13 Feb 2015 14:16:02 +0000 (15:16 +0100)]
Add developer docs for new documentation infrastructure
Fix some existing docs to match current implementation.
Change-Id: I5aef6f3127558169a85b4f577f4d4b54ef92c9f0
Teemu Murtola [Thu, 18 Sep 2014 04:57:34 +0000 (07:57 +0300)]
Add section on naming conventions to dev manual
Move content from the wiki, and expand it a bit. There have been no
comments to the contents of the wiki page in the time it has existed, so
just convert all discussion items to direct guidelines, describing the
current state of the code. Add some additional guidelines based on
discussion during review.
Change-Id: I548f907214bb5ca659207aea42b137dd4480cd3d
Mark Abraham [Wed, 18 Mar 2015 16:02:41 +0000 (17:02 +0100)]
First beta release of 5.1
Extended automatic versioning machinery so that a tarball can be built
from the repo without having "-dev" appended to the version string.
Introduced new advanced cache variable to make that work.
Fixed webpage build so that it refers to the real locations of
tarballs for users to download. With that done, simplified the rest of
the webpage build, which was too complex for no real advantage - the
webpage build + download page can be tested without needing sample
tarballs and their md5sums available. Changed md5sum variables to be
advanced/internal cache variables with doc strings. Consolidated the
use of md5sum of regressiontest tarball with that of
tests/CMakeLists.txt, which was set up in cmake/gmxVersionInfo.cmake.
Bumped LIBRARY_SOVERSION and updated policy for related issues.
Fixed other minor documentation issues, including referring readers to
the website for alternative source-code downloads. Not sure why the
checks did not report problems before this patch!
Removed references to tools documentation pages from
install-guide/index.rst because they are not very useful and generate
warning messages from sphinx-build about missing references, and ugly
"*gmx mdrun*" output for the INSTALL file for the tarball.
Fixed setting of GMX_API_VERSION (broken in
643944e7 after the 5.0
fork).
Change-Id: I03ea4abbbfe71afe3bf5d5e489af28cb03bd1f53
Alexey Shvetsov [Thu, 23 Apr 2015 10:39:19 +0000 (13:39 +0300)]
Merge branch 'master' into pygromacs
Berk Hess [Wed, 22 Apr 2015 08:57:49 +0000 (10:57 +0200)]
Merge branch 'release-5-0'
Trivial conflict resolved in runner.cpp.
Change-Id: I5bf8d6672246938f498fff609a7b0943505d2afb
Szilárd Páll [Sun, 9 Nov 2014 02:33:38 +0000 (03:33 +0100)]
Allow manually setting target GPU architectures
The cmake variables GMX_CUDA_TARGET_SM and GMX_CUDA_TARGET_COMPUTE
allow setting the GPU architectures and virtual architectures,
respectively. If any of these is specified, instead of generating code
for all supported architectures, the compiler will emit binary/PTX code
only for the requested architectures.
This change also reorganizes the gmxManageNvccConfig cmake module
allowing it to handle changes of GMX_CUDA_TARGET's as well as host
compiler changes by regenerating the nvcc flags.
The new variables have been documented in the install guide.
Note that the host compiler consistency checks have not been extended
for >v2.8.10 cmake (which sets it itself), but this could be considered
later.
Change-Id: Iae663f0bffe4342ed17bbdbcd77f4429e6c0a9bd
Magnus Lundborg [Tue, 9 Dec 2014 12:43:16 +0000 (13:43 +0100)]
TNG version 1.7.3
Corresponds to commit
e862ebe8 in the TNG repository.
Large parts of the TNG code have been rewritten to avoid code duplication. Some functions have been combined.
Summary of additional changes (see git log for full details):
Bug fixes:
Fixed bug reading last frame and time of last frame.
Fix MingW build
Fixed bug reading non-particle data.
Check that ZLib is available before using it.
Fixed bug when appending to trajectory.
New functions:
tng_util_num_frames_with_data_of_block_id_get()
Fixed compiler warnings
Improved testing suite
Change-Id: I97334b1d93f21646fe1625e65e5fcdf38a0450d9
Mark Abraham [Tue, 21 Apr 2015 06:48:57 +0000 (08:48 +0200)]
Merge "Merge branch release-5-0"
Berk Hess [Tue, 2 Dec 2014 11:16:59 +0000 (12:16 +0100)]
Add value_ref and value to pull_coord_t
This is only code refactoring.
Change-Id: I64b4cb05f69325a1dd1e17f269894cb538663817
Szilárd Páll [Fri, 23 Jan 2015 14:59:04 +0000 (15:59 +0100)]
define CUDA version and texobj support in config.h
CUDA_VERSION from cuda.h has been used to check CUDA runtime API feature
compatibility which is technically incorrect as this macro represents
the driver API version - although this is identical to the runtime API
version (CUDART_VERSION in cuda_runtime_api.h) in all existing toolkit
releases.
To fix this inconsistency and remove the explicit dependency on a CUDA
header, this change replaces all occurrences of CUDA_VERSION with the
GMX_CUDA_VERSION macro. This is generated from the FindCUDA-detected
major+minor version numbers (nvcc version). This should be equal to the
CUDART_VERSION macro's content. This we now ensure through a consistency
check at cmake-time. Implicitly, this check also ensures that FindCUDA
detected a consistent set of CUDA components (compiler and headers).
Additionally, also moved the declaration of the (former)
TEXOBJ_SUPPORTED macro to config.h
The advantage of moving these macros to config.h is that it eliminates
the risk of missing include or wrong include order.
Also removed some deprecated code used with CUDA <v4.0.
Change-Id: I933bccd48540ba618db2b959764e5ac566e7e12e
Mark Abraham [Thu, 9 Apr 2015 08:55:20 +0000 (10:55 +0200)]
Add comment about Andersen themostat and constraints
Per Michael's request at https://gerrit.gromacs.org/#/c/4479/
Refs #1695
Change-Id: Ibdd0de0e05b6d6be3fba8ba1d29f904b75c4d3c4
Berk Hess [Thu, 16 Apr 2015 16:07:49 +0000 (18:07 +0200)]
Correct -ntmpi auto for intel nehalem and older
With thread MPI mdrun would automatically choose 1 MPI rank with up to
16 OpenMP threads on all Intel family 6 CPUs, whereas this was only
intended for Sandy Bridge and later.
Change-Id: I29882375c8569497b3e309de7cc66a2af4d6fa40
David van der Spoel [Thu, 8 Jan 2015 10:16:27 +0000 (11:16 +0100)]
Updated exponential fitting to make it robust.
The exponential fitting code was not robust under different
data. This is improved by ensuring that e.g. time constants
are always positive. For multi-exponential fits the time constants
are guaranteed to be in increasing order. Rewrote test code.
Added test for error estimation that reproduces 5.0 behavior.
Added new manual section "Curve fitting in GROMACS" (8.6).
General cleanups of the code were done.
Change-Id: Ib72fccf7f85742afeeb3fc0fd6fbd44c1c47795a
Mark Abraham [Thu, 9 Apr 2015 08:41:01 +0000 (10:41 +0200)]
Merge branch release-5-0
Change-Id: Ice890f6d9b0235bc2f07e5c73ee2264a32f18a86
David van der Spoel [Thu, 9 Apr 2015 06:48:59 +0000 (08:48 +0200)]
Clarified comments for time-dependent electric fields.
Change-Id: Id5644a14d6a41ca3d9c634dc0eaefe4069c0b618
David van der Spoel [Wed, 8 Apr 2015 14:13:37 +0000 (16:13 +0200)]
Fixed incorrect output of gb_algorith as sa_algorithm.
Change-Id: I96e51e7c9ac931b7635573a38cd700c61bc596e4
Berk Hess [Wed, 18 Feb 2015 13:37:18 +0000 (14:37 +0100)]
Added pull geometry direction-relative
The new pull geometry direction-relative enables to pull along
a vector defines by two (additional) pull groups.
Change-Id: I210f6bfbd29dcb69664298bab6472919ca88091d
Mark Abraham [Tue, 20 Jan 2015 18:26:20 +0000 (19:26 +0100)]
Update mdrun Doxygen
Define module_mdrun. Added suppression for the observation by make
check-source that this is not consistent with other module naming - we
haven't made a final decision yet.
Move integration test Doxygen to module_mdrun_integration_tests.
Change-Id: I817488a67d37d5edeaf34b7c29067c6b36436aa8
Mark Abraham [Wed, 25 Feb 2015 00:24:09 +0000 (01:24 +0100)]
Made pme_work_t opaque
Introduced pme_init/free_all_work to act on the newly opaque data,
and moved the helper functions that they call to pme-solve.c.
Renamed data type to pme_solve_work_t and field in gmx_pme_t to
solve_work, to help differentiate between the different "work"
structs.
Moved declaration of PME_SIMD_SOLVE to pme-solve.c, since it
is used nowhere else.
The PME work arrays are now allocated by their respective thread.
Change-Id: I02467ac2a4c2e8e6a9c45731ccec248b766609ff
Maxim Koltsov [Thu, 2 Apr 2015 16:57:24 +0000 (19:57 +0300)]
Memory related fixes, mostly found via ASAN
- Return None for topology names and similar when there is no name
- Fix default options: now PyOptionsHolder's methods accept default
values, storing them in option storage.
defaultValut()/defaultValueIfSet() methods do not work.
- Fix memory leak in runAsMain()
Mark Abraham [Fri, 13 Mar 2015 17:35:42 +0000 (18:35 +0100)]
Initialize n_tricvec field of t_pbc always
Otherwise dump_pbc can segfault when code makes a struct t_pbc on the
stack that coincidentally has n_tricvec > 0.
Change-Id: I3c87b1d006d8ebdab991f20b36690b4b216107f5
Berk Hess [Mon, 29 Sep 2014 14:17:40 +0000 (16:17 +0200)]
Corrected force-switch manual section
There was a factor alpha missing in the formulas for parameter A and B
for the force switch function (the code was correct).
Also removed the introduction and formulas for switching the Coulomb
function, since that's a bad thing to do.
Change-Id: I9739112fc991710199035facde01a1dd2b745703
Erik Lindahl [Wed, 18 Mar 2015 21:38:31 +0000 (14:38 -0700)]
Quote from Szilard's talk at GTC2015
Change-Id: Ib9fe88eb6806204176be057880bbbed122a87296
Mark Abraham [Wed, 18 Mar 2015 16:03:10 +0000 (17:03 +0100)]
Improved man-page machinery
Simplified management of MAN_PAGE_DIR, and reordered code in
docs/CMakeLists.txt to keep similar content together.
Added some comments.
Defaulted to not building help when cross compiling.
Fixes #1700
Change-Id: Ia4c648cbdd38db2881c834c6dd39a500754dec89