Teemu Murtola [Sat, 20 Sep 2014 04:14:02 +0000 (07:14 +0300)]
Remove duplication in version info target creation
Now the custom target created for the git version info generation uses
gmx_add_custom_output_target(), removing comments etc. that were
duplicated in both places and clarifying the code. The custom target
created with gmx_configure_version_file() now also integrates with the
dependency resolution mechanism used by gmx_add_custom_output_target().
Change-Id: I868264498c014041f551df8819fb2b568d85bc30
Erik Lindahl [Thu, 28 Aug 2014 06:31:35 +0000 (12:01 +0530)]
Added a bunch of new and old quotes.
Change-Id: Ife6d142451ca150a24dc4140a1b65740d4051dae
Teemu Murtola [Sat, 20 Sep 2014 05:40:01 +0000 (08:40 +0300)]
Fix patterns for .gitattributes
In different contexts, git treats a trailing wildcard pattern
differently, and in .gitattributes it does not apply recursively.
A double star would, but at least the last time I tried, it did not work
with the version of git that runs on Jenkins.
Change-Id: Iac53b755a2931e8cd3ccdb6169346b0631715986
Roland Schulz [Thu, 21 Aug 2014 16:16:09 +0000 (12:16 -0400)]
Minor performance improments
Mostly useful as lesson learned.
1) The double precision constant forces the compiler to convert
the single precision variable to double, then do the multiplication
in double and then convert back. Using the single precsion
constant in double reduces the accuracy (the calculation is still done
double but the constant has only single precision).
2) Using a temporary array instead of a temporary scalar causes ICC14 to
generate an extra store.
Change-Id: Ib320ac2ae4ff80ce48277544abff468c483cc83a
Teemu Murtola [Sun, 14 Sep 2014 04:34:46 +0000 (07:34 +0300)]
Proper dependencies for Doxygen build rules
Now Doxygen build rules only get triggered if a relevant source file has
been changed. This reduces the need for the -fast targets, and makes it
easier to consume these targets, e.g., in Jenkins without triggering
multiple builds of the XML documentation.
Add CMake helper functions to make using custom commands easier. These
could be used elsewhere in the build system as well to isolate the
complexity into these functions, but that will be done in separate
changes.
Change-Id: I3411853da1948cd85e80df12b0c51df7d748f8d7
Teemu Murtola [Fri, 15 Aug 2014 11:41:05 +0000 (14:41 +0300)]
Fix histogram resampling output bin positions
The reported bin positions were off by half of the original bin size
from what they actually contained. This was apparent when the RDF code
started actually using the code.
Change-Id: I651c1f1359430047acc83ca15e9c31087b22d845
Teemu Murtola [Sat, 13 Sep 2014 18:11:13 +0000 (21:11 +0300)]
Embed module dependency graph in Doxygen docs
The module dependency graph generated by the dep-graphs target is now
embedded into the Doxygen documentation as a separate page (in the lib
and full variants). Building these flavors of documentation now
requires the depgraphs to be built first, which in turn depends on the
doxygen XML output. Added various -fast targets that skip these
dependencies, with the cost of potentially producing some warnings about
missing stuff.
Change-Id: Id3314c598d79588c429fe57108349edf42de3b6b
Teemu Murtola [Thu, 14 Aug 2014 18:49:19 +0000 (21:49 +0300)]
Add support for cumulative histograms
Now the final, averaged histograms computed by the analysisdata
histogram modules can also be made cumulative. This is needed to
preserve some functionality of 'gmx rdf' when moving to the C++
framework. For now, only the unit test is using the function.
Change-Id: Iaf7175dd904f9a615b8bd887d677aa8dc1e10f0d
Teemu Murtola [Thu, 14 Aug 2014 02:59:28 +0000 (05:59 +0300)]
More precise analysisdata histogram accumulation
Accumulate histograms within a frame as 64-bit integers (if possible) or
as double-precision values to support cases like RDFs where there can be
a very large number of points contributing to the histogram.
Add a supporting class that could be used in other analysis modules as
well to make them capable of parallel processing (at least the
AnalysisDataFrameAverager could be adapted to use this approach).
Also, make the definition of "parallelization factor" the same here
and in datastorage.*, adapting a simpler definition.
Change-Id: I63deed99d3c0d3c168d11ab0d85981f1ed6fee8d
Teemu Murtola [Sat, 13 Sep 2014 03:59:28 +0000 (06:59 +0300)]
Misc. Doxygen build system improvements
- Only generate the installed header list once after CMake is run.
It cannot change unless CMake is run again. This wasn't particularly
slow earlier either, but now it can be added as a dependency also in
the -fast targets without any impact on the behavior.
- Do not update the Doxyfile-common each time CMake is run if
GMX_COMPACT_DOXYGEN=ON.
- Partition the Markdown pages into subdirectories based on the
documentation level where they should appear. Exclude things from
the documentation based on the directory, not individually.
- Use a CMake function to create the various Doxygen targets to remove
some duplication.
- Some cleanup in the directories.cpp and misc.cpp documentation files.
- Some cleanup to use consistent casing throughout CMakeLists.txt.
Change-Id: I30de6f36841f25260700ec92284762e989f66507
Erik Lindahl [Fri, 4 Jul 2014 11:36:13 +0000 (13:36 +0200)]
Add Power/PowerPC VMX SIMD support
This adds the low-level SIMD implementation
for IBM VMX, which is present on Power 6 and
later (and PowerPC after PPC970). This will
not generate nbnxn kernels yet, so it is not
enabled by default. Unit tests pass on Power8,
where I also had to work around some vec_lvsl()
issues due to the new little-endian PowerPC
architecture. IBM has some quirks in their
implementation of fnmadd, which occasionally
returns negative zero when IEEE754 would expect
positive zero. This should not cause any problems
in normal Gromacs use, and to avoid problems in
SIMD-math I have changed some operations there to
use fmadd, with swapped signs of constants instead.
This might even save a cycle on some platforms.
Change-Id: I71a70b8807d5bfdba18da887adbcfc97ce3c8cc3
Roland Schulz [Wed, 17 Sep 2014 22:04:10 +0000 (18:04 -0400)]
Merge release-5-0 into master
Change-Id: I44d8158c68dd1804b8456c096b86f52a979c0261
Roland Schulz [Wed, 17 Sep 2014 17:39:29 +0000 (13:39 -0400)]
Remove no-inline-max-size and suppress remark
To avoid the remark that inlining isn't possible I added the flag
in
d28edf2a07dcf11. This causes slow compile and should be avoided.
Instead suppress the remark.
TODO (for later): Check whether the additional inlining can improve
permance and consider enable it for release build.
Change-Id: I5866fcc5865fb44ca3dca0cf217e0cab2afbea0c
David van der Spoel [Wed, 17 Sep 2014 14:43:01 +0000 (16:43 +0200)]
Merge release-5-0 into master
Change-Id: I862e73932dea368b5bac883eb1bf5725314efd2d
Roland Schulz [Wed, 17 Sep 2014 00:50:24 +0000 (20:50 -0400)]
Valgrind suppression for OS X 10.9
Change-Id: Ib8d0e6c151ed68a0e80d9d724e167e2838556b2c
Roland Schulz [Wed, 10 Sep 2014 17:06:49 +0000 (13:06 -0400)]
Fix warnings for ICC 15
Also add comment decribing all suppressed warnings
Change-Id: Ib347a2ec1e4b890b8f115c56b1a982f9123a0adf
Roland Schulz [Sun, 14 Sep 2014 06:16:11 +0000 (02:16 -0400)]
Remove unnecessary cppcheck include-path
Change-Id: I974b3b58818df3815f75a2ba41d8682ad2c77d84
Mark Abraham [Wed, 10 Sep 2014 06:55:49 +0000 (08:55 +0200)]
Teach git that some files are binary
This stops things like git grep on short strings finding and showing
diffs from binary files.
Change-Id: I877211accfab3e8132d4cec1f671df790d0500f8
Teemu Murtola [Sun, 31 Aug 2014 03:54:50 +0000 (06:54 +0300)]
Extend support for float/double tolerances in testing
Comparisons based only on ULP are awkward when comparing quantities
computed in single and double precision when the accuracy of the
algorithm / implementation does not vary significantly with the
precision. For example, the total energy when using an Ewald method
will vary with precision, but an acceptable result has nothing to do
with the precision in which it is computed.
Add relativeToleranceAsFloatingPoint to permit expressing the tolerance
as a floating-point number to mean a relative tolerance, but the
implementation is still expressed in ULP. Make the tolerance class
support different tolerances for single and double precision numbers to
allow this, as well as for other flexibility.
Add tests for the various tolerance construction functions.
Chang variables containing ULP values to be gmx_uint64_t.
Change-Id: I25f7ddf8f4f9a5f1317b1cafd0159d8dd7d62b8c
Teemu Murtola [Fri, 12 Sep 2014 18:56:32 +0000 (21:56 +0300)]
Declare __STDC_*_MACROS in gmxpre.h
These free up code that needs, e.g., GMX_INT64_MAX from hard-to-satisfy
constraints on the include order. More details in the comments in
gmxpre.h.
Also clarify our requirements for C99 support in the install guide.
Change-Id: I371c3a79244340764b320ae36183dd8926fe0f94
Mark Abraham [Thu, 10 Jul 2014 13:07:49 +0000 (15:07 +0200)]
Minor changes to mdrun -h descriptions
Hopefully these are easier to understand. The suggested application
for -pinoffset is covered in the new mdrun performance section
of the user guide, on release-5-0 branch.
Change-Id: I7bc6172a70c39c02f6ca6db17e26b08d2ca3b444
Teemu Murtola [Fri, 12 Sep 2014 04:28:48 +0000 (07:28 +0300)]
Run include order check in doc-check
Now the doc-check target also checks that all files conform to the
include ordering produced by the include sorter.
Add support into the include sorter for only checking the ordering
without changing anything, and partially improve things such that the
full contents of the file are no longer required for some parts of the
checking. There seems to be no performance impact for now from storing
all the file contents in memory, so did not go through this, but the
partial changes also improve readability of the code.
Add support to gmxtree for loading the git attributes, to know which
files not to check for include ordering.
Change-Id: I919850dab2dfa742f9fb5b216cc163bc118082cc
Roland Schulz [Thu, 11 Sep 2014 15:02:46 +0000 (11:02 -0400)]
Fix sorting and doxygen
Change-Id: I3f0124dee1b569275fe2889dedb9778bb3cc6b9d
Teemu Murtola [Thu, 11 Sep 2014 17:44:38 +0000 (20:44 +0300)]
Improve uncrustify.sh return code handling
Apparently, the exit code for the script does not work on Jenkins.
I can only guess whether this is caused by different bash (with some
differences in the support for set -o pipefail) or git versions (with
different behavior of the --exit-code flag in combination with the other
flags), or something else, but these changes seem to make it work.
Apply uncrustify with reformat_all.sh to fix any issues that have been
slipped through so far.
Change-Id: I005eed88f839014f38992826ad7b984b8ad3597e
Teemu Murtola [Fri, 25 Jul 2014 04:02:44 +0000 (07:02 +0300)]
Include directive sorter
To facilitate discussion on how we want to sort the includes, the tool
supports a few different styles (with a --style option) that at least
roughly correspond to what has been proposed in #1557 or related
discussions. Can be removed later when the final style is agreed on.
Having an automatic sorter also allows relatively easily using other
tools that may sort the includes as part of their operation (the
automatic sorter can just be run afterwards).
Made gmxtree.py aware of the location of the list of installer headers,
removing the need to pass the file on the command line. This simplifies
manual invocation (in particular for the include sorter).
It only sorts a list of consecutive #include lines, possibly separated
by empty lines. Comments between the lines or #ifdefs are left alone,
and only includes on both sides sorted independently. This is by
design, as it keeps the script relatively simple, and also allows using
comments or similar to override the sorting for special cases. Some
manual formatting may be required to make files with heavy use of
conditinal includes to look nice (to move headers to the appropriate
side of the #ifdefs), but after that, the tool should work quite well.
Add a git attribute to allow easily applying the script in combination
with a file list produced by admin/reformat_all.sh, and extend
reformat_all.sh such that it can be be run as
admin/reformat_all.sh includesort -B=<builddir>
to sort all files with the attribute.
Related to #1557.
Change-Id: I362d7c5131a2e6952bbededfd51da4c4e1fc4a7e
Teemu Murtola [Thu, 11 Sep 2014 02:59:11 +0000 (05:59 +0300)]
Add gmx_getpid()
This allows getting rid of all conditional includes and some conditional
compilation in two different source files.
Change-Id: I3095843a2155b087730362a4f3ef409ccf24018c
Mark Abraham [Thu, 11 Sep 2014 12:30:27 +0000 (14:30 +0200)]
Remove documentation references to optimize-fft
The functionality was removed before 5.0 was released
Change-Id: I97d55338f7026b0410c4bdec52a42ac8c24016de
Mark Abraham [Thu, 4 Sep 2014 20:21:35 +0000 (22:21 +0200)]
Convert domdec code to C++
Used std:: versions of at least some calls to min, max, sqrt and pow,
eliminated unused variables, used a named floating-point constant,
used a static_cast to make clear that we intend to truncate to integer
in one place, made some iteration variables local to their block,
protected some uses of fplog and fshift.
Eliminated some redundant #ifdef GMX_MPI, changed the range of others
to declare variables only where used.
Converted some neighbour-search constants to be static const real,
rather than macros, with the side effect of not having to deal
with overloaded std::sqrt for constants.
Introduced one work-around (duplicating the code of add_ifunc) for
dealing with the way that nral is a complicated function of
ftype. Static analysis was not being consistent in the way it was
choosing code paths with possible values of nral in different
functions. Co-locating two loops over nral resolves the issue.
Added assertions that help static analysis understand that settles are
kinds of constraints and that sane things happen elsewhere, so that
code paths that look like they might be called when only
inter-charge-group settles exist are actually well formed.
Added yet more assertions to reassure the analyzer that we handle
memory allocation with charge-group linking correctly.
Clarified a PBC-related variable name.
Change-Id: I5d1cf06c866098d183d7fe5aa023a292ca3d109b
Teemu Murtola [Tue, 9 Sep 2014 18:27:36 +0000 (21:27 +0300)]
Move _GNU_SOURCE to gmxpre.h
This makes life simpler in files that require it, and removes clutter
from there. The only (minor) disadvantage is that it is now defined
everywhere, so people who develop on a system where it has effect may
accidentally introduce additional function calls that depend on the
define. But Jenkins should catch those easily.
Change-Id: Ia4ed8b5d189138694076705ded695d818bbc73e3
Teemu Murtola [Sun, 7 Sep 2014 17:48:36 +0000 (20:48 +0300)]
Sort includes outside src/gromacs
Change-Id: I7efefc3835d1a5974886ef680a9fb0ddce11ee3e
Teemu Murtola [Sat, 6 Sep 2014 16:43:24 +0000 (19:43 +0300)]
Sort all includes in src/gromacs
Used:
admin/reformat_all.sh --pattern=src/gromacs includesort -B=../build
after building the doc-check target (whose dependencies are needed for
the sorter).
Change-Id: Icde0fb5cb5bc082fb4381d4cba1211329bad3fa5
Teemu Murtola [Mon, 8 Sep 2014 14:09:39 +0000 (17:09 +0300)]
Use absolute include paths in nbnxn kernels
Currently, the WIP automatic include sorter expects these files to be
included as paths relative to src/, and so does doc-check after changes
done for the include sorter. Change the generator source files to
account for this, and regenerate the kernels. Can be improved in the
future.
Make the kernel generator work even if the current working directory is
not the same as the script directory.
Change-Id: Ibc603dd0c85291f0c8fede394d9fa35b39c3a0a4
Teemu Murtola [Sat, 6 Sep 2014 04:03:02 +0000 (07:03 +0300)]
Manually sort some includes in src/gromacs
Sort manually includes in files where there are #ifdefs within the
include statements and the automatic sorter does not do a good job
because of this.
This commit does this for files found in src/gromacs/. Files from other
locations will be done in a separate change if there are any.
Fix nbnxn_cuda.h to work without requiring code to include
nbnxn_pairlist.h first.
Change-Id: I26fa1a28ea9094a62c826d8ee65ddabac345da68
Erik Lindahl [Sun, 7 Sep 2014 18:29:44 +0000 (11:29 -0700)]
Enable static anon namespace workaround on pathscale
The pathscale compilers suffer from the same static
anon namespace bug as the intel ones. Since the bug
is no longer Intel-specific, the INTEL_ prefix in
the macro has been removed.
Change-Id: Id87c9386cb831ba43ae05b2006dcfd0f1bf06be8
Erik Lindahl [Wed, 9 Jul 2014 19:14:29 +0000 (21:14 +0200)]
Improve performance of MIC exponential
The limited precision is due to argument scaling
rather than the exponential function lookup, so
instead of iterating we can improve the accuracy
with a simple correction step, similar to what
was done for the recent AVX-512ER implementation.
Change-Id: If55e7c4cefac5022e7211dfa56686cb9ee03a54a
David van der Spoel [Tue, 9 Sep 2014 05:55:17 +0000 (07:55 +0200)]
Remove .tpa, .tpb, .tpx, .trj files. Part of #1500.
Change-Id: Ia055cbf5311bf8780ca826c767207e5172d1b7e2
Justin Lemkul [Thu, 14 Aug 2014 23:04:34 +0000 (19:04 -0400)]
Added flat-bottom cylindrical restraints in x and y.
The code previously only allowed the long axis of the cylinder
to be aligned along z. This patch allows the cylinder to be
aligned along any axis.
Old topologies and .tpr files will still work for all geometries with
g values from 2 to 5, as 2 is now just a synonym for a z-directional
cylinder. The new values are g=6 for x, g=7 for y, and g=8 for z.
The manual has been updated to reflect these changes.
Introduced a new static function that computes forces and energy for the
flat-bottom restraint.
Refs #1577
Change-Id: I40e0bd35225170e13a18ee54f6798470e697f29d
Roland Schulz [Wed, 10 Sep 2014 04:16:09 +0000 (00:16 -0400)]
Merge release-5-0 into master
Conflicts:
CMakeLists.txt
only version changes not needed in master
src/gromacs/utility/gmxassert.h
better fix already in master
Change-Id: I8af70d807972758149e9f69b420d528269e9bebd
Berk Hess [Tue, 9 Sep 2014 12:35:52 +0000 (14:35 +0200)]
Fixed DD state collection issue
Collecting the cg distribution state to the master (for output
of replica exchange) could go wrong when the DD was out of sync.
This code path was probably never executed.
Change-Id: I14b41c15ddc827a46f7c6448fb7bd90414f8e210
Rossen Apostolov [Mon, 8 Sep 2014 14:07:37 +0000 (16:07 +0200)]
Converted groupcoord to C++.
Change-Id: I8b840ccd3261fabaeb702302821d36279473e1dd
Rossen Apostolov [Wed, 3 Sep 2014 09:54:39 +0000 (11:54 +0200)]
Converted fft files to C++.
Change-Id: I33609cb7019b216f1f675110ecc37bdd882dcfa5
Erik Lindahl [Wed, 2 Jul 2014 12:15:32 +0000 (14:15 +0200)]
Add 64-bit AArch64 asimd SIMD support
This adds the low-level SIMD implementation
for the 64-bit ARM AArch64 architecture in
single and double precision. We use the
asimd (advanced SIMD) nomenclature that is
also present in the CPU flags, but this is
the same as AArch64-neon, and present on all
AArch64 hardware. Just as for the 32-bit ARM
Neon support in the parent patch this will not
generate kernels yet, and for this reason we do
not yet enable AARCH64_ASIMD by default. Unit
and regression tests pass on AArch64 hardware
with gcc-4.9.
Change-Id: I67b2615d30e2038af480270f934a6d2788c3ed7b
Erik Lindahl [Tue, 1 Jul 2014 08:59:57 +0000 (10:59 +0200)]
Add 32-bit ARM Neon SIMD support
This adds the low-level SIMD implementation
for 32-bit ARM Neon instructions. We will still
not generate nbnxn kernels for it; that is coming
in a future update. For this reason we will also
not enable ARM_NEON automatically in GMX_SIMD yet.
The port passes our unit tests on
tcbl04.theophys.kth.se (ARMv7).
Change-Id: I61f771970777e82fcef757ab6915e07061912957
Berk Hess [Mon, 8 Sep 2014 07:36:04 +0000 (09:36 +0200)]
Check for implicit solvent + Verlet scheme
Fixed #1570
Change-Id: I8734c2dc99d3bc3e0a79ae043d86854446f3b495
Teemu Murtola [Sun, 27 Jul 2014 04:42:53 +0000 (07:42 +0300)]
Support custom default extension for FileNameOption
Add FileNameOption.defaultType() to allow changing the default extension
used for file types that accept multiple extensions. About 1% of the
existing t_filenm declarations seem to use such a feature.
Make parse_common_args() deduce the value for this from the value of
t_filenm.fn, if it contains an extension.
Extend unit tests to cover these cases.
Change-Id: Idf8d1c6b70b88d58bbf12398bd16f57412eab065
Teemu Murtola [Sun, 27 Jul 2014 04:31:56 +0000 (07:31 +0300)]
Remove unnecessary extensions in t_filenm defaults
Several tools had an extension specified for the default file name in
t_filenm, but that extension matched either the only accepted extension
for the file type, or to the default extension for that type.
To keep the code more uniform, remove those unnecessary declarations.
This leaves <10 instances where t_filenm specifies a non-default
extension for the default file name (which doesn't currently work).
Probably some of those could also be removed, but at least a few are
justified, so a subsequent commit will add support for that.
Change-Id: I28053b6b407783b515144aad5351f27bbc2b6ba7
Teemu Murtola [Tue, 26 Aug 2014 16:28:43 +0000 (19:28 +0300)]
More consistent default handling for StringOption
For enumerated StringOptions, the enum indexes were not always
consistently handled. Added a few tests for the behavior, and fixed it.
Now the storeEnumIndex() option works consistently in that if the caller
specifies an initial value for the variable, and there is no other
default, the caller-provided value is preserved. Also, the stored enum
index is properly updated if a default value is provided through a value
in the output variable.
Fixes #1586
Change-Id: Ib9d24e977dbfde6b23ba90271574cdd43c70c1bd
Teemu Murtola [Wed, 3 Sep 2014 04:08:10 +0000 (07:08 +0300)]
Update template/README
Add a link to Doxygen documentation about the template, and replace
outdated information about the build system with a link to a more
up-to-date description in the Doxygen documentation.
The links are to the nightly Doxygen build for now and for simplicity,
but in principle could be replaced by links to deployed documentation
for a release once that happens.
Change-Id: I0e9085aa77ab9e473405a8d3619d92fbb4ae255c
Roland Schulz [Sun, 24 Aug 2014 06:56:12 +0000 (02:56 -0400)]
Remove some include order dependencies
Add explicit #include statements to headers that need definitions from
other headers, instead of relying on the including code to include those
headers earlier. This allows reordering and refactoring #include
statements without breaking the compilation in unrelated pieces of code.
This set of changes is sufficient to make things compile after applying
the WIP automatic include sorter with the default order; other ordering
may expose more such dependencies.
Change-Id: I52536bca8930f1c489b084327071f090eec8a445
Roland Schulz [Fri, 5 Sep 2014 20:23:19 +0000 (16:23 -0400)]
Fix build for external boost 1.56.0
exception/detail/attribute_noreturn.hpp has been removed in 1.56. We
shouldn't have used a detail header in the first place. Use Gromacs
own noreturn attribute.
Also:
- rename GMX_ATTRIBUTE_NORETURN to gmx_noreturn to match unused,
restrict, and inline
- moved gmx_noreturn to basedefinitions.h
- defined gmx_noreturn for MSVC.
- always use attribute at the beginning not the end, to make it work
with MSVC (also is more consistent)
Change-Id: Ieaeec03182be9a9d248bb460dae389270e806045
Roland Schulz [Sun, 6 Jul 2014 21:47:19 +0000 (17:47 -0400)]
Simplify AVX integer load/store
Also has the potential to improve performance on some architectures
(if there is a domain crossing penalty - not sure whether any AVX capable
generation has a penalty).
Change-Id: Icc7b136571fc9ad1dbabeabe446c93e8816ec678
Roland Schulz [Fri, 5 Sep 2014 18:46:47 +0000 (14:46 -0400)]
Fix build for external boost 1.56.0
exception/detail/attribute_noreturn.hpp has been removed in 1.56. We
shouldn't have used a detail header in the first place. In master
we can use GMX_ATTRIBUTE_NORETURN but 5.0.x it is defined only
for code analysis not for compilers.
Change-Id: I6f26d6ddc62c73f583d324f7c794a499c274b394
Teemu Murtola [Tue, 19 Aug 2014 03:38:10 +0000 (06:38 +0300)]
Remove unnecessary config.h includes
Now that all the blanket definitions that need to appear everywhere are
in gmxpre.h, remove unnecessary uses of config.h. Kernel files left
alone for now.
Change-Id: I1e0e7b1f842c5182334687ad86afaee176e31bf2
Teemu Murtola [Fri, 5 Sep 2014 18:55:55 +0000 (21:55 +0300)]
Move some defines to gmxpre.h for thread-MPI
Thread-MPI requires TMPI_WAIT_FOR_NO_ONE to be defined consistently in
all code that may use structs that use TMPI_YIELD_WAIT_DATA, and there
are several of those structs. Moved the definition for this macro to
gmxpre.h, so that it should be defined everywhere and not cause
surprises. Rationale for not moving any other defines (some are used by
thread_mpi/include/*) is given in comments, and if/when thread-MPI is
going to disappear sooner or later, there hopefully will not be much
more code introduced that would depend on it and would require a more
robust mechanism, or warrant changing thread-MPI itself.
Change-Id: Ic9f1c2c63fee183e65506f06fdc84d10cc5f97b9
Teemu Murtola [Thu, 4 Sep 2014 18:45:56 +0000 (21:45 +0300)]
Another batch of added config.h
Include config.h explicitly in most places where it is used instead of
relying on getting the definitions from "somewhere".
Change-Id: I3c6702cea59fca10226a13714c8ffddc482c224a
Teemu Murtola [Fri, 5 Sep 2014 17:44:03 +0000 (20:44 +0300)]
Make doc-check fail the build on warnings
This makes it easier to run it in Jenkins, even if it makes it work
inconsistently compared to the Doxygen targets.
Change-Id: Ifc469fb598f1f3287bc1a5dded231b304023a810
Teemu Murtola [Fri, 5 Sep 2014 17:51:17 +0000 (19:51 +0200)]
Merge "Merge release-5-0 into master"
Mark Abraham [Fri, 5 Sep 2014 12:21:56 +0000 (14:21 +0200)]
Version bumps after new release
Numbers bumped, -dev tag replaced.
Change-Id: Ie5d579a360e935743e99577e0d01779569156893
Mark Abraham [Fri, 5 Sep 2014 12:20:27 +0000 (14:20 +0200)]
Version 5.0.1
Bumped version numbers to remove -dev tags, bumped regressiontest
md5sum.
Change-Id: I1ec0a9b850a796d44e89025b742521ff48d8f482
Roland Schulz [Thu, 4 Sep 2014 16:48:52 +0000 (12:48 -0400)]
Merge release-5-0 into master
Conflicts:
CMakeLists.txt
trivial
share/template/cmake/FindGROMACS.cmakein
deleted in master
src/gromacs/utility/gmx_header_config_gen.h.cmakein
applied to src/gromacs/utility/gmx_header_config.h
src/gromacs/commandline/pargs.cpp
applied to src/gromacs/commandline/cmdlinemodulemanager.cpp
src/gromacs/gmxlib/gmx_thread_affinity.c
trivial
src/gromacs/gmxlib/main.cpp
applied to src/gromacs/utility/basenetwork.cpp
src/gromacs/gmxlib/nonbonded/nb_kernel_sparc64_hpc_ace_double/*.c
Merged the template and rerun the generator
src/gromacs/gmxlib/nonbonded/nb_kernel_sparc64_hpc_ace_double/nb_kernel_template_sparc64_hpc_ace_double.pre
trivial
src/gromacs/utility/futil.cpp
change unnecessary (function deleted)
Other changes:
src/gromacs/fileio/vmdio.c
removed duplicate config.h
Change-Id: Ib4237944773e41d7b52e8c0ee181da717d2b26f3
Roland Schulz [Wed, 3 Sep 2014 21:48:23 +0000 (17:48 -0400)]
Add Mingw warnings
Change-Id: I8825ee1948fe03be751f09bc87db050f89fa49bd
Roland Schulz [Mon, 25 Aug 2014 16:37:25 +0000 (12:37 -0400)]
Slight simplifcation of 2xnn
Change-Id: Ibca1e9bb2d3a3657fa684050d0080280ac7269d8
Teemu Murtola [Tue, 19 Aug 2014 03:42:16 +0000 (06:42 +0300)]
Include config.h directly if used
Include config.h directly in files that use definitions from there.
Only gmx_blas/gmx_lapack are exceptions, where the header does the
inclusion for simplicity. There is also one of the kernel inner loop
files in nbnxn kernels that relies on the source file including
config.h.
Change-Id: Ibea7d3fafb0e7de5ee3d40e52c68fef5646edf37
Teemu Murtola [Thu, 4 Sep 2014 03:26:38 +0000 (06:26 +0300)]
Make doc-check silent for in-source build
Change Doxygen comment for one file to make the 'doc-check' target
warning-free for an in-source build (used by Jenkins).
Change-Id: I0bf8f68ea33ee2c6204948ab0bc495ad2044e65e
Teemu Murtola [Thu, 4 Sep 2014 14:48:14 +0000 (16:48 +0200)]
Merge "Merge release-5-0 into master"
Mark Abraham [Tue, 20 May 2014 20:32:20 +0000 (22:32 +0200)]
Created bonded module
Converted files to C++, eliminated unused variables, reduced #include
dependencies, used static_cast, made more use of position vectors in x
const-correct, removed some gmx_unused arguments that were really
unused. Doxygen will follow once there's been some more cleanup and
there's a little more internal structure to the module.
Left bonded-threading.* files behind, because they don't belong
with the bonded-interaction computation machinery. They will move
into the bonded module shortly.
Noted TODOs for future cleanup.
Change-Id: I0fae6f27adcf316cfe673ecf48688cb24dfb3469
Erik Lindahl [Wed, 30 Jul 2014 13:06:50 +0000 (15:06 +0200)]
K-computer specific modifications
This commit implements most of the K-computer-
specific changes for Gromacs-5.0. The HPC-ACE
SIMD module has been added since we need the
exponentials for LJPME, and there are also some
fixes to the LJPME nonbonded accelerated group
kernels that prevented them from compiling.
The SIMD unit tests have been modified to avoid
making assumptions about the internal storage
being single or double, since HPC-ACE only
supports double. The toolchain files have
been updated and moved to the platform subdir,
and we now have a separate module to handle
Gromacs-specific flags and settings for K.
Change-Id: I5b832809b5dd52ef4b72f6cd41b1b3da1c036a57
Christoph Junghans [Wed, 3 Sep 2014 23:15:12 +0000 (17:15 -0600)]
cmake: missing quote
Found on my old MacBook, where CMAKE_BUILD_TYPE is empty by default.
Change-Id: Icf63666f4b4c3f18214ba091819b0238d7f4a225
Roland Schulz [Wed, 3 Sep 2014 17:47:25 +0000 (13:47 -0400)]
Merge release-5-0 into master
Conflicts:
cmake/gmxDetectSimd.cmake
cmake/gmxSetBuildInformation.cmake
share/template/cmake/FindGROMACS.cmakein
change superseded in master
src/gromacs/fileio/mdoutf.h
src/gromacs/gmxlib/network.c
src/gromacs/gmxlib/oenv.cpp
src/gromacs/legacyheaders/types/simple.h
change applied to
src/gromacs/utility/real.h
Change-Id: Ib076dc9894f0d590a243a7504c3db7daf2f72beb
Roland Schulz [Mon, 1 Sep 2014 02:25:26 +0000 (22:25 -0400)]
Fix MingW build
Change-Id: Id6025838e274305266f0f90eda2ddbb48355d792
Erik Lindahl [Tue, 2 Sep 2014 09:01:20 +0000 (11:01 +0200)]
Fixed sc_power==48 crash in single precision
A few summation variables in the free energy kernel
need to be double to avoid overflows for 48th power
softcore interactions.
Fixes #1580.
Change-Id: I3263e9eb83515ebaf9f6c04fd0e57ae179933d4e
Mark Abraham [Wed, 20 Aug 2014 08:20:21 +0000 (10:20 +0200)]
Fix mis-use of fabs in LAPACK
clang-3.5 warns that fabs is not the right approach.
Change-Id: Ib7125fcad2f4fda99abf7b67f296f24d84cb34be
(cherry picked from commit
d9c0e416e180cdd7e0a158d8d9b9e1fe59ef89b7)
Mark Abraham [Tue, 2 Sep 2014 15:40:56 +0000 (17:40 +0200)]
More hacking to get the template to detect and build
Change-Id: Ifa945dedfcd70a571171fb156d5eaad37e1d761c
Roland Schulz [Thu, 28 Aug 2014 19:38:24 +0000 (15:38 -0400)]
Fix that TNG tests were not run
Missing config.h meant there were not run.
Also fix rerun test without zlib. The input is zlib compressed and thus should
only be tested if zlib support is available.
Change-Id: Ia80abcb7584f698512578652621cb16c16e4188a
Erik Lindahl [Tue, 2 Sep 2014 16:58:12 +0000 (18:58 +0200)]
Fixed preprocessor error for AVX_128_FMA simd
Some endifs appear to have been left when we
removed the MSVC-specific macros.
Change-Id: If5dcb9269348f2a34f2c37efb0856925bb473940
Erik Lindahl [Mon, 28 Jul 2014 18:49:22 +0000 (20:49 +0200)]
Fix formatting of fatal errors in g_bar
The lambda value has changed from a floating
point number into a complicated vector, so we
now have a small routine that formats the contents
of this vector for the fatal error routines.
Fixes #1531.
Change-Id: I41f7d27c16a76879d6f1f7dc669655d755c1ce3d
Roland Schulz [Tue, 26 Aug 2014 19:10:10 +0000 (15:10 -0400)]
Fix PRINT_ALLOC_KB output
Only an issue when compiled with -DPRINT_ALLOC_KB
Change-Id: I0fed328ba8e8f943ece3b38f63ce5b6cf84f0f5e
Magnus Lundborg [Tue, 26 Aug 2014 12:02:06 +0000 (14:02 +0200)]
TNG Fix for GMX_DOUBLE builds and where ZLIB is not available.
Also includes a check that the user name can be retrieved
before trying to set it.
Change-Id: I51d4ab2e590752980953d1926d4bea56fe1beffa
Magnus Lundborg [Fri, 29 Aug 2014 09:37:44 +0000 (11:37 +0200)]
Fix data block length when uncompressing TNG data.
Also, if there are no bonds in a molecule do not reserve
memory for them (to avoid a returned NULL pointer).
Change-Id: I06f9ad71711174017a229faec53d6dca08ee99d0
Erik Lindahl [Tue, 2 Sep 2014 06:36:34 +0000 (08:36 +0200)]
Fixed string var expansion in CMake due to CMP0053
CMake policy 0053 means they are deprecating the usage of
@VAR@ in CMakefiles, so CMake-3.0.2 has started to
issue big warnings about this. Replace them with ${VAR}.
Change-Id: I4e63a4eb038edbc27019bfb89c7106e97aa194c2
Magnus Lundborg [Wed, 20 Aug 2014 06:56:12 +0000 (08:56 +0200)]
TNG: Handle large files on 32 bit systems.
Force 64 bit file positions and sizes to make sure that files
>2 GB work.
Change-Id: I70ea7fb96891dfa2d18d6188677e946b3a0a0ac6
Justin Lemkul [Sun, 31 Aug 2014 15:10:33 +0000 (11:10 -0400)]
Updated x-axis label for g_wham.
It was confusing to label it "z" as this is not conventional notation
and several users have interpreted the output as applying only to the
z-axis. This commit updates the x-axis label to be the more conventional
Greek "xi" used for reaction coordinates.
Change-Id: Ib60af7b03155a792792d3496184d298c834389e9
Magnus Lundborg [Tue, 15 Jul 2014 13:54:49 +0000 (15:54 +0200)]
When writing TNG include file closing in wallcycle.
If there is an unwritten frame set when closing a TNG file
it will be written to disk. This includes compressing the
data (when writing compressed output), which can take a
significant amount of time if the system is large.
This should be included in the wallcycle count to make it
more fair.
Change-Id: Ida43fe73b8bc1b0c1326e286a4bff647410da45f
Mark Abraham [Fri, 4 Jul 2014 14:05:27 +0000 (16:05 +0200)]
Fix and document issues with template.cpp
Boost is a requirement for the template, so the FindGROMACS.cmake
needs machinery to deal with that. It will now find the Boost internal
to GROMACS.
pkg-config generally helps (if available and GMXRC is sourced), and
that use is now documented in the README.
Finding the GROMACS libraries and headers is also a requirement. This
now works whether or not the user has sourced GMXRC or has pkg-config
installed. The user can over-ride this with CMAKE_PREFIX_PATH if they
want to.
The template needs to use the same compiler and compiler flags for
post-C++98 support, and this is now documented in the README. In
master branch, some of these issues are side-stepped, so take due care
when merging.
Fixes #1554
Change-Id: Id30cf5149ead4a3f719499e37776a00f08309afc
Mark Abraham [Mon, 1 Sep 2014 18:56:21 +0000 (20:56 +0200)]
Merge "Merge branch release-4-6 into release-5-0" into release-5-0
Mark Abraham [Sun, 17 Aug 2014 22:10:32 +0000 (22:10 +0000)]
Fixes and updates to BlueGene/Q support
Stopped hard-coding compilers, since these vary between sites. Moved
compiler suppressions to gmxCFlags to follow standard practice better.
Permitted use of software invsqrt, even though you don't want to use
it.
Suppressed several kinds of false-alarm warnings with whole-of-source
compiler suppressions. I would preferred to keep the suppressions as
file-level compiler flags, but the way we compile our list of source
files for libgromacs makes this inconvenient, and the compiler would
not accept the PBC-related suppression as a pragma, either. Build is
now finally free of warnings (so long as you don't use the built-in
LAPACK with bgclang-3.5). Restructured some helper functions that
return strings whose getters might throw, so that there is a return
value that will keep compilers happy in all cases.
Change-Id: I7158e165575934be2b76beee7c10f860ccf58b76
Mark Abraham [Mon, 1 Sep 2014 16:22:23 +0000 (18:22 +0200)]
Merge branch release-4-6 into release-5-0
Conflicts:
CMakeLists.txt
Left version stuff in release-5-0 alone, because they should be
unaffected by release-4-6 version bumps.
Change-Id: I000cba25affa818b9e4283e85ae8cdf61f7c53a1
Mark Abraham [Mon, 1 Sep 2014 16:20:15 +0000 (18:20 +0200)]
Merge "Merge branch release-4-6 into release-5-0" into release-5-0
Erik Lindahl [Thu, 21 Aug 2014 06:35:41 +0000 (08:35 +0200)]
Added negative zero preprocessor constants
We had some discussions already when we started using negative
zero that it could be fragile on some compilers, and apparently
PGI is one of them. Maybe not the most important target, but it
makes sense to have a common constant in one place, and it can
also save some cycles in tight loops to clearly separate float
from double versions so we avoid extra precision conversions.
Change-Id: Id30a536b4f99f0310bfb2ec5185275c466cf5e07
David van der Spoel [Sat, 30 Aug 2014 14:17:38 +0000 (16:17 +0200)]
Fixes issue with vsiten and verlet buffers.
A loop counter for a loop over vsiten did not take into
account that multiple entries make up one vsiten
particle. Part of #1579.
Change-Id: Ic9a79e89ea9ef8f9f529c9d4a6c5cf05f65e9c7d
Mark Abraham [Fri, 29 Aug 2014 13:47:10 +0000 (15:47 +0200)]
Version bump after 4.6.7
Change-Id: I1f2e73c2b94f31b67e65bf7cf188fb542391ab4d
Mark Abraham [Thu, 28 Aug 2014 14:22:11 +0000 (16:22 +0200)]
Merge branch release-4-6 into release-5-0
Conflicts:
src/gromacs/fileio/gmxfio.c
Used new release-4-6 code calling renamed md5 functions
src/gromacs/gmxana/gmx_covar.c
Used gmx_ffclose, not ffclose, for file opened with xvgropen.
Change-Id: If6f9cb61bf7eab06dfdc61a03ad89ed38d599382
Berk Hess [Fri, 15 Aug 2014 09:20:28 +0000 (11:20 +0200)]
Fixed two PME issues with MPI+OpenMP
Change
272736bc partially fixed #1388, but broke the more general
case of multiple MPI communication pulses in PME. Change
272736bc
incorrectly changed tx1 and ty1. This change has been reverted.
Change
27189bba fixed the incorrect PME grid reduction with multiple
thread grid overlap in y. But it broke the, much more common, case
where the y-size of the PME grid is not divisible by the domains in y.
This change, incorrectly, changed buf_my.
Now buf_my is set to the correct value, which solves both issues.
Fixes #1578.
Refs #1388 and #1572.
Change-Id: Id2d7d013a3b8cdc04eda1fb026567088a38ec81f
Berk Hess [Tue, 19 Aug 2014 08:10:48 +0000 (10:10 +0200)]
Fixed bugs in vsiteN with OpenMP
Fixes #1579.
Change-Id: I42d234f4ad6a94e8f7b6b8236ea119860dd9f7ab
Roland Schulz [Sun, 24 Aug 2014 17:36:51 +0000 (13:36 -0400)]
Merge release-5-0 into master
Conflicts:
install-guide/configure-install-guide.cmake.in
applied to docs/configure-markdown.cmake.in
Moved doxygen/cycle-suppressions.txt -> docs/doxygen/cycle-suppressions.txt
docs/CMakeLists.txt: replaced PROJECT_VERSION with GMX_VERSION_STRING
Change-Id: I61724a10a5331fdf747edd411dfa2f2256cd3f6b
Berk Hess [Fri, 22 Aug 2014 10:37:49 +0000 (12:37 +0200)]
Initialize unused velocity constraint components
With domain decomposition, velocity components for communicated
atoms could be uninitialized. These components were never used, but
this could lead to valgrind warnings and floating point exceptions.
Fixes #1576.
Change-Id: Ic673680699578ddf62c2d240342138cbc16490c8
Teemu Murtola [Sat, 23 Aug 2014 03:48:55 +0000 (06:48 +0300)]
Precalculate pbc shift for analysis nbsearch
Instead of using pbc_dx_aiuc(), precalculate the PBC shift between grid
cells outside the inner loop when doing grid searching for analysis
neighborhood searching. In addition to improving the performance, this
encapsulates another piece of code that needs to be changed to implement
more generic grids.
Change-Id: Ifbbe54596f820b01572fe7bb97a5354556a4981d
Teemu Murtola [Sat, 23 Aug 2014 03:27:24 +0000 (06:27 +0300)]
Improve analysis nbsearch grid mapping
Now the analysis neighborhood search implements its own version of
put_atoms_in_triclinic_unitcell(). While computing the index of the
correct grid cell, it is relatively easy to produce also the coordinates
that lay within that cell instead of using a separate call. This
provides two benefits:
- It avoids rare rounding problems if put_atoms_in_triclinic_unitcell()
would put the atom right at the edge of the box, but the mapping code
would consider it outside the box, causing out-of-range grid cell
index to be generated.
- It allows to customize the grid mapping more freely (e.g., to create
grids that are not periodic).
Change-Id: Ib7602fa49a1b8f7882a63843322786b3e51e8e32
Teemu Murtola [Sun, 8 Jun 2014 04:22:47 +0000 (07:22 +0300)]
Backport of 'Remove unused figures from share/html/'
from master branch. Some of the flowchart images are also unused, but
left them there for completeness.
Change-Id: Ia47f9ac62f865f60c6f1998f407d62c9ba6c66f2
Mark Abraham [Thu, 10 Jul 2014 12:52:15 +0000 (14:52 +0200)]
Generalize markdown configuration machinery
This implementation scales a bit better as we increase the number of
markdown files. It may even be easier to understand! Preserves
existing top-level targets, and general behaviour. The full ARGN
functionality is not yet used, but it will be shortly.
Introduced stub user guide, with HTML and PDF build.
Change-Id: I198f273a08f81035694c3efefd35a5b2f2af7f0d