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"
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 [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
Mark Abraham [Mon, 7 Jul 2014 07:43:13 +0000 (09:43 +0200)]
Unify documentation for webpage build
The new webpage build can be run either from a code repo (for
development), or from the unpacked source tarball (for actual
deployment). The latter is useful to ensure the documentation reflects
the tarball, and because the tarballs and their md5sum values must be
available for building the webpage. A Jenkins flow job can build the
tarballs and then construct the webpage for automated delivery. The
machinery is active only if GMX_BUILD_WEBPAGE is set (and other pieces
in place), so will be transparent to normal users.
Created configurable top-level index.md inside the new docs top-level
directory. Various components have moved into this directory, but each
can still be built independently.
Imported some basic (but pandoc-specific) CSS from
https://gist.github.com/ryangray/
1882525
Made a new top-level index.md, and made it build HTML with Pandoc and
use the CSS. Later, we can consider making the whole static site build
work with some generator, e.g. to make links automatically.
Established CMake variables for configuring the webpage build with
the names of tarballs and their md5sum values. Builds from the repo
don't include this part of the webpage.
Moved the install guide into the new docs directory. Minor fixes to
header levels. Generated PDF install guide also. Used
PANDOC_EXECUTABLE instead of hard-coded "pandoc." Made it use the
CSS.
Moved reference manual build into the new docs directory, and linked
its default setting to GMX_BUILD_WEBPAGE.
Moved old html guide content into the new docs directory. This still
installs in the old way. Fixed broken links for xpm2ps and grompp.
Added rudimentary hdb.html to fix missing link target. Removed text
that linked to ancient material that no longer semes to exist.
Moved doxygen generation into the new docs directory. The useful
output now goes directly to build/docs/html, and logs to
build/docs/doxygen.
Bumped copyright years to keep uncrustify script happy.
Bumped top-level CMakeLists.txt and CPackInit.cmake to check for the
new correct paths when building tarballs.
Added config file for linkchecker to help automate checking
the links all work.
Refs #1242
Change-Id: I8e5cf98b2997b76f56b24f45262c9c9eebf9900e
Mark Abraham [Mon, 4 Aug 2014 22:42:26 +0000 (22:42 +0000)]
Fix zlib usage with TNG
Using zlib for TNG requires also that the the #include file can be
found, and this can be in a non-standard path. One part of this commit
should be rolled back into the TNG repo.
Change-Id: Iaa70ddd4f5471e405404148e6e83067d5ea52a27
Teemu Murtola [Fri, 22 Aug 2014 04:02:55 +0000 (07:02 +0300)]
Move -nice handling to CommandLineModuleManager
Now also the tools written using the C++ framework support the -nice
command-line option. The system also behaves more consistently, as now
all programs except mdrun and gmx-view default to -nice 19. Previously,
there was no really consistent logic for where PCA_BE_NICE was set and
where not.
Remove PCA_BE_NICE as it is no longer used. parse_common_args() no
longer has any options that it unconditionally adds, which completes one
step in full migration to the wrapper binary.
Change-Id: I35a464d3263bc20e98ad1d381e93fdc2749931a2
Magnus Lundborg [Tue, 19 Aug 2014 15:26:00 +0000 (17:26 +0200)]
Fixed TNG memory alignment problem and reset pointers.
This is a temporary fix to the memory alignment problems on some
platforms. In the main TNG repository the whole I/O system is
rewritten to address this problem. This fix is to avoid the
problems without making too large changes.
There are also some pointers that were not reset after memory
was freed. This is also fixed in here.
This commit does not correspond to any commit in the TNG
repository.
Fixes #1542, #1546, #1547 and #1559.
Change-Id: I90a6406cccbc43fd57d4423c2b661019cf7763e8
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
Teemu Murtola [Wed, 20 Aug 2014 19:13:17 +0000 (22:13 +0300)]
Misc. gmxpre.h-related changes
Related to selection parser generated files:
- Add gmxpre.h to the generated selection parser files. parser.cpp and
parser.h are now generated with a newer bison version, since that is
what I happened to have available.
- Minor improvements to the regeneration script.
Related to the doc-check target:
- Make the doc-check target happy again by removing a check that is not
valid in the current state. Minor clean-up in the script.
- Add a checker for the presence of gmxpre.h in all files where it is
expected to appear.
- Move one suppression from config.h to gmxpre.h, since that is where
the code now is.
- Use consistent #include "config.h" in vec.h and remove blanket
suppression for that issue in doc-check.
Change-Id: I1e803ef000c5b2c685532c9e47df534ef5b263bc
Teemu Murtola [Wed, 20 Aug 2014 18:03:25 +0000 (21:03 +0300)]
Merge release-5-0 into master
Conflicts:
src/gromacs/legacyheaders/types/simple.h
- applied gmx_unused change to basedefinitions.h
src/gromacs/mdlib/sim_util.c
- took adjacent changes from both branches
Change-Id: I42071be546015ede33b03a34ef0d95a5d5a3b09e
Erik Lindahl [Fri, 8 Aug 2014 20:36:48 +0000 (22:36 +0200)]
Add _GNU_SOURCE=1 to find clone() with PGI
The PGI C++ compiler would not find clone()
in sched.h unless _GNU_SOURCE is set, and
it shouldn't hurt any other platforms if
we add it by default for gmock.
Change-Id: Id9446622bb49e17efd80ea1508e0ee40b48acdbe
Roland Schulz [Wed, 16 Jul 2014 01:45:49 +0000 (21:45 -0400)]
Change error to warning for missing OMP_NUM_THREADS
Setting the default number of OpenMP threads using -ntomp works too. Using ntomp
allows to use the regressiontests. A proper fix should be done in master because
it requires larger code changes.
Change-Id: Ic47cebc9da6cf1b0624a1383d7ce23f93bd26dbe
Erik Lindahl [Tue, 12 Aug 2014 18:11:40 +0000 (20:11 +0200)]
Fix matrix pointer dereference bug in update.c
The PGI compiler found a bug where an if-statement
checked against a dereferenced pointer rather than
the pointer itself being non-NULL.
Change-Id: If08977b818f28e1c78c35222d0f4efe6ae6aad65
Erik Lindahl [Mon, 28 Jul 2014 18:33:42 +0000 (20:33 +0200)]
Enable SIMD register calling convention with gmx_simdcall
Cmake now checks if the compiler supports __vectorcall or
__regcall calling convention modifiers, and sets gmx_simdcall
to one of these if supported, otherwise a blank string.
This should enable 32-bit MSVC to accept our SIMD routines
(starting from MSVC 2013), and with ICC it can at least in
theory improve performance slightly by using more registers
for argument passing in 64-bit mode too. Presently this is
only useful on x86, but the infrastructure will work if we
find similar calling conventions on other architectures.
Fixes #1541.
Change-Id: I7026fb4e1fb6b88c8aa18b060a631cbb80231cd4
Erik Lindahl [Tue, 19 Aug 2014 12:29:57 +0000 (14:29 +0200)]
Add cycle counters for 64-bit ARM
The gcc code has been tested on actual ARM64
hardware, but the MSVC one is only implemented
from the MSVC manual.
Change-Id: I13aac4d65345c684b6ddc5812ca9c3fcbe27b81a
Erik Lindahl [Tue, 12 Aug 2014 13:04:59 +0000 (15:04 +0200)]
Shorten plugin configuration message
This is just a minor note, so make sure it fits in a
single line rather than drawing attention to itself.
Change-Id: I086f3a90fdcdb92aa5920c27cc9176bae8c9bce4
Teemu Murtola [Tue, 19 Aug 2014 03:05:01 +0000 (06:05 +0300)]
Remove unused config.h defines
These were orphaned in pre-4.6 times, with an argument that an
architecture may appear where these may be necessary. Since that has
not happened in two years, and the whole group kernels are scheduled for
removal, it is unlikely they ever get used again, either.
Change-Id: Ie8e9c12110a889d9b1ed80125feb1ab7de4483cc
Teemu Murtola [Mon, 18 Aug 2014 18:50:38 +0000 (21:50 +0300)]
Introduce gmxpre.h for truly global definitions
Bulk of the changes is done by applying an awk script using
admin/reformat_all.sh --filter=copyright \
--pattern=src/\*.{cpp,cu,c} list-files | xargs add_gmxpre.h
where add_gmxpre.h contains
#!/bin/bash
for f in "$@" ; do
awk 'BEGIN {add=1}
/gmxpre\.h/ {add=0}
/#include/ {if (add) print "#include \"gmxpre.h\"\n"; add=0}
{print}' $f >$f.tmp
mv $f.tmp $f
done
In other words, by adding a gmxpre.h include before the first #include
statement.
Manual changes on top of that:
- Adapt reformat_all.sh to support the --pattern option used above.
- Manually edit the files directly under src/ to move some necessary
defines from config.h to gmxpre.h, and to adapt the build system to
generate the latter.
- Move the inserted include outside the HAVE_CONFIG_H #ifdef in
gmx_cpuid.c.
- Adapt nbnxn kernel generator files to insert the #include at the
proper place and regenerate the kernels.
- Adapt group kernel generators to insert the #include at the proper
place, and remove unnecessary include guards from generated _source_
files.
Adaptation for scanner.l and parser.y in the selection code will come
later, together with a checker that checks that gmxpre.h is actually
included everywhere.
Motivation for the change is documented in the file comment for
gmxpre.h. This file could potentially be used also for precompiled
headers to speed up the build, but that would require a lot more effort
than this...
Change-Id: I02f08c6765dd7179ce9db135b2d502172700f180
Roland Schulz [Mon, 18 Aug 2014 06:47:09 +0000 (02:47 -0400)]
Fix nbnxn templates
Change
6400ed5de8 changed the generated files without changing
the template.
Change-Id: If42909a59d25a4e866de6af8874157b23c781128
Roland Schulz [Mon, 18 Aug 2014 00:36:05 +0000 (20:36 -0400)]
Add Intel command line warning
Fixes that build was printing a warning for scanner.cpp.
Related to #1483
Change-Id: I8a30fce82ab7ef0bfe735630b1ce4d9bb636b36d
Roland Schulz [Sat, 16 Aug 2014 21:21:21 +0000 (17:21 -0400)]
Remove check that auto-generated files exist
The check is redundant because we check in cpack that all files
are available.
Change-Id: I8ccd37ac1b4b4225b389711c7fb7f2bb0e473f78
Erik Lindahl [Mon, 11 Aug 2014 13:27:53 +0000 (15:27 +0200)]
Fix Portland compiler warnings
The PGI compiler finds several unreachable code
parts, mainly due to multiple return statements
being used. For most places this is just a
cosmetic fix to get rid of warnings, but functions
that are performance-sensitive should only have
a single return statement since the return
instruction causes a pipeline stall on many
architectures. This patch also fixes a warning
about an unused variable.
Change-Id: Ibf1c9e9dd1cdf29fc59c84afa4348e02bed270e6
Berk Hess [Mon, 11 Aug 2014 16:11:17 +0000 (18:11 +0200)]
Halved the cost of the pull communication
With DD the PBC reference coordinates are now only communicated
after DD repartitioning. This reduces the number of MPI_alltoall
calls from 2 to 1 per step, which can significantly improve
performance at high parallelization.
Added a cycle counter for pull potential.
Added checks for zero pull vectors to avoid div by 0.
Change-Id: Ib89ba9e14eaa887f59a5087135580bc29a20d7d0
Roland Schulz [Thu, 7 Aug 2014 23:04:12 +0000 (19:04 -0400)]
Don't build tests until they are run
There is no advantage to normal users, to build the tests until the
user decides to run them. Also avoids that the user thinks that
Gromacs doesn't compile on his platform if there is only a problem
with the testing framework.
Added a GMX_DEVELOPER_BUILD option which restores the old behavior.
Change-Id: Ifda2184eb45bf58b8798f21a29aea19bef57c690
Roland Schulz [Fri, 25 Jul 2014 05:08:01 +0000 (01:08 -0400)]
Use full path for legacyheaders
Advantages:
simpler to setup tooling / IDE (just one path)
show immediately all usage of legacyheaders
No risk of accidentally working includes (together with using relative paths)
Used:
find src/gromacs/ src/programs/ src/testutils/ -name '*.c' -o -name '*.cpp' \
-o -name '*.h' -o -name '*.cu' -o -name '*.cuh' -o -name '*.pre'|
xargs -n1 python makeabspath.py
Manual changes to cmake and doxygen files to remove legacyheader include path.
makeabspath.py:
https://gist.github.com/rolandschulz/
ee636f517d75e48bc68c
Related to #1557.
Change-Id: I6c1b51a573acfe7b0123485405f2494e97715f53
Mark Abraham [Sat, 31 May 2014 17:43:09 +0000 (19:43 +0200)]
Remove mdrun -seppot
This output of rank-local energies is not needed for any routine use,
and isn't much use in mdrun -debug either. Removing it simplifies a
few code paths, including removing some dependencies on writing sane
things to the log file. Eliminated some now-unused parameters.
Refs #1292
Change-Id: I7628b78862144ae2478b6f42a6818915e3a22fe3
Mark Abraham [Tue, 8 Jul 2014 20:39:52 +0000 (22:39 +0200)]
Fix gmx tune_pme with LJ-PME
Extend the range of vdwtype for which tune_pme will scale rvdw. This
makes tune_pme worth using with LJ-PME.
Change-Id: Iec702ae984cd062d47970380c0ca41f82e4c31d2
Mark Abraham [Wed, 9 Jul 2014 20:36:31 +0000 (22:36 +0200)]
Fix wallcycle counting with md-vv, sd and sd2
Previously the coordinate update for the first half of velocity Verlet
and (where applicable) the second half of the SD integrators was left
out of the walltime accounting, and showed up in the "Rest"
section. With this fix, the number of "update" steps reported depends
on exactly which flavour of which integrator is in use, because
there's also some number of calls to do constraining and/or energy
communication. Those numbers vary with either the flavour of
integrator, or the number of iterations MTTK actually needs.
Change-Id: Ib294455b7277caf89018c413d6c1c0ebf93c6ddb
Teemu Murtola [Fri, 8 Aug 2014 04:07:19 +0000 (07:07 +0300)]
Disable analysisdata generic tests if not compilable
If Google Test claims that typed tests are not supported, exclude the
analysisdata generic tests that use this functionality from compilation
(since they wouldn't compile). Instead, add a dummy test that at least
shows a developer who runs the unit test executable directly that
something is missing (the ctest run still passes without any messages).
Change-Id: Iba9bcc4b993e5213fe48e24d52b09474e5801fa8
Roland Schulz [Sat, 16 Aug 2014 04:30:10 +0000 (00:30 -0400)]
Merge release-5-0 into master
Conflicts (trivial):
src/gromacs/commandline/pargs.cpp
src/gromacs/gmxlib/gmx_thread_affinity.c
src/gromacs/options/filenameoption.cpp
Manual changes required for ConstArrayRef:
src/gromacs/commandline/pargs.cpp
src/gromacs/options/filenameoption.cpp
src/gromacs/selection/selection.cpp
src/gromacs/selection/tests/nbsearch.cpp
Manual moved REGRESSIONTEST_MD5SUM from
CMakeLists.txt to cmake/gmxVersionInfo.cmake
Change-Id: I1a2038f72c1e1cfed830de5c540ab278dbb39cfe
Carsten Kutzner [Fri, 15 Aug 2014 14:44:44 +0000 (16:44 +0200)]
Fixed output of eigenvalues in g_covar. Fixes #1575
Commit
972032bfb8cd38 introduced a bug that would lead to eigenvalues
only written to .xvg file if "-last" is explicitly stated on the
command line. Otherwise no eigenvalues would appear in the .xvg file.
The eigenvalues are written in a loop from '0' to 'end', but since
'end' is initialized with '-1', the loop would never be executed.
This patch moves the code that computes 'end' one block upwards
before the output to file.
Change-Id: I738c9dd77ff9e6e2daae89b6d2063755dfba88af
Berk Hess [Mon, 11 Aug 2014 12:26:22 +0000 (14:26 +0200)]
Corrected SIMD math overflow documentation
Added more details to the SIMD pmecorr and exp documentation.
Corrected the source of the PME-LJ kernel overflow.
Change-Id: If3f5a27a3bb49ebb67fc24d43ed849e75175cf3c
Teemu Murtola [Thu, 14 Aug 2014 03:05:55 +0000 (06:05 +0300)]
Fix CMake package config after recent version changes
Combined merge of I49c5037 and I23ec2dc broke the build without any
conflicts, since usage for a variable that was renamed in the first was
added in the second.
The version management logic in the package config still needs some
extra thought, but that's better done separately to get the build fixed.
Change-Id: I93db8c0c5b515bc73f8e4e10eae86d9fd049975d
Teemu Murtola [Sun, 6 Jul 2014 03:51:04 +0000 (06:51 +0300)]
Use native CMake mechanism for find_package(GROMACS)
Instead of various detection stuff that only worked well in the presence
of pkg-config, use native CMake mechanisms: package configuration files
and automatic export of library import definitions. Include
directories and preprocessor macros influencing the installed headers
are still propagated separately. The new mechanism also works for
arbitrary suffixes, and is relocatable (as long as external libraries
that GROMACS links against are not moved). A simple FindGROMACS.cmake
is still there to hide some of the complexity to support multiple
suffixes, but it is not strictly necessary if the using code wants to do
those slightly more complex find_package() invocations directly.
Generalize the machinery that populated libgromacs.pc to use it also for
this purpose.
TODO for later (requires changes that are better done outside this
patch):
- Improve the versioning logic
The machinery and its current limitations are documented in the Doxygen
page on using GROMACS as a library. Some of these could possibly be
improved with additional effort, but the current approach is hopefully a
reasonable compromise between usability, robustness, and complexity.
Closes #1430, #1554
Change-Id: I49c50375a5abebfe8614704c175e6ed22c9daa56
Teemu Murtola [Mon, 28 Jul 2014 04:08:19 +0000 (07:08 +0300)]
Reorganize CMake version information management
Main benefits:
- Less clutter in the beginning of the main CMakeLists.txt.
- CPack and regression test version numbers no longer need to be
updated separately.
- Easier to reuse the individual GMX_VERSION_* variables instead of
trying to parse PROJECT_VERSION.
- -dev suffix in the version string is now automatically managed, with
no need to patch the source code before packaging a source
distribution.
- All stuff related to git version info generation is now in one place,
and easy to reuse if one wants to add new files that would like to
embed the full version string. At least the new documentation build
targets could probably use this.
- Additional targets of such type do not cause the git commands to
generate the info run more than once per build (at least in most
cases).
- Remove some unused functionality and unnecessary checking from
gmxGenerateVersionInfo.cmake to streamline it. All the checks are
already done at a higher level.
Some cleanup on the way:
- Remove enable_language(C/CXX), as CMake by default enables C and C++.
- Clean up some indentation in affected parts.
- Rename variables to have consistent names throughout.
PROJECT_VERSION is now called GMX_VERSION_STRING, as the old name was
probably there mainly because autoconf named a similar variable in
config.h that way.
- Remove CUSTOM_VERSION_STRING, as it does not have a well-defined use.
If someone can come up with a use case, we can reintroduce a more
targeted mechanism for such customization.
Change-Id: I23ec2dc6a3ec7b33ba18272e766057f67ffb4bd4
Roland Schulz [Tue, 20 May 2014 04:56:53 +0000 (00:56 -0400)]
Move some verlet headers to mdlib
This change does removes all dependencies on those (explicit) types
from files outside of mdlib (the only one were in programs/mdrun).
Change-Id: Ia2b90303249e3e7454ac869afb5cbe0cf290a400
Mark Abraham [Wed, 6 Aug 2014 18:57:09 +0000 (20:57 +0200)]
Add depressing quote
Change-Id: I5a66e0f90119544b4b876c273b4a678404bd4dbe
Stefan Fleischmann [Fri, 8 Aug 2014 15:14:17 +0000 (17:14 +0200)]
Avoid stack overflow on Windows with CMake > 2.8.10.2
CMake used to add "/STACK:
10000000" to the default linker flags. That
was removed in version 2.8.11-rc1. The default value used by MSVC is
apparently too small because mdrun crashes with a stack overflow when
built on Windows with MSVC or ICC and CMake newer than 2.8.10.2.
The issue is already fixed in GROMACS 5.0 and master by I1e9858ae3. This
is a backport for release-4-6 of that commit.
Change-Id: Ib9238e513da8e86049d9e56c82262055d3c8b349
Erik Lindahl [Sun, 10 Aug 2014 23:24:26 +0000 (01:24 +0200)]
Make internal BLAS/LAPACK messages less noisy
BLAS and LAPACK are close to insignificant to Gromacs, so
avoid multi-line noisy warnings about "fallback" solutions;
those will just worry users and make them spend time investigating
under what conditions it might play a role, when we really don't
care much for BLAS/LAPACK performance. Message has been
changed to short inconspicuous status lines when we are using
built-in versions.
Change-Id: I9f1b0c769907521d5cb6325c8d67cd61ca8a803a
Erik Lindahl [Wed, 30 Jul 2014 12:34:32 +0000 (14:34 +0200)]
Improve Gromacs portability
This patch addresses a few general portability issues
that we have experienced at least on Fujitsu compilers
(K computer) and (partly) for Pathscale x86 compilers.
- I have added a generic compiler definition fallback
for boost, so it will work on unidentified compilers.
- There is now a define for gmock-1.7.0 to handle
the case where wcscasecmp() is not available. We use
this by default since it is not important for us.
- If we do not find atomics for sparc64 we now warn and
fall back on mutexes rather than the compile dying.
- The compiler flag checks have been updated from
cmake-3.0, and more warning checks added.
- Since some non-GCC compilers set _GNUC_ for
compatibilty, we do not assume all such compilers
support tr1, but use the internal tr1/tuple definition
in Gmock by default.
- Before using the sched.h affinity functions, we now
check that all the functions we need are supported,
rather than just one of them.
Change-Id: I31b7f0f46a9d03a627c73a0789b4a9b24fa860ee
Erik Lindahl [Fri, 8 Aug 2014 21:37:49 +0000 (23:37 +0200)]
Replace __LP64__ with check for pointer size
The __LP64__ define is not set e.g. on PGI compilers,
so instead we use a portable way of checking for
pointer size based on defines from stdint.h.
Change-Id: Ib2dd6e45c2b168add07f5478d59aec487a91ab9e
Berk Hess [Wed, 30 Jul 2014 12:59:17 +0000 (14:59 +0200)]
Added checks for TPI + Verlet scheme
Change-Id: I040f4cc9dbb8ff25ed97d18cca0b4a2c1e7014b0
Roland Schulz [Tue, 5 Aug 2014 02:05:04 +0000 (22:05 -0400)]
Check MD5sum for regressiontest
Because we decided it is important for FFTW we should do it for
the tests too. Is only done for non -dev versions.
Change-Id: Id7d1ee027bd302ad7cb10f46d93b0f435872c67e
Teemu Murtola [Sun, 10 Aug 2014 04:24:06 +0000 (07:24 +0300)]
Improve initAfterFirstFrame() usability
The initAnalysis() function was changed a long time ago to take the
analysis settings as a parameter, to make it easy to use those values in
initialization without storing them in local variables.
Do the same for initAfterFirstFrame(), now that there is a tool in
pipeline (gmx rdf) that would actually use this function and sees the
same issue there.
Change-Id: Ib10abb3790ac5472070edc76155cfa50cce96541
Teemu Murtola [Sun, 10 Aug 2014 04:17:20 +0000 (07:17 +0300)]
Make vec.h const-correct with both C and C++
C and C++ have different semantics for const if a function parameter has
multiple indirections (e.g., a double pointer or a 2D array). If such a
parameter is not modified by the function, it is tricky to write
const-correct code using such functions:
- If the parameter is declared const, then C will give a warning if a
non-const value is passed.
- If the parameter is not declared const, then C++ will give an error
if a const value is passed.
Added a macro that allows using a single declaration in vec.h for
functions that take matrix values as input parameters, and still making
it possible to pass both non-const and const values to such parameters
in both C and C++.
Change-Id: Ifca3ff6842489c3a1040a8261ba429d96409fc21
Teemu Murtola [Sat, 9 Aug 2014 04:21:44 +0000 (07:21 +0300)]
Basic exclusion support for analysis nbsearch
Add support for setting exclusions for AnalysisNeighborhood-based
searches. Required for some functionality in gmx rdf, and the interface
is focused on satisfying that need. Efficiency could potentially be
improved, as well as sanity checks on the input. Now that the basic
machinery is there, it can be extended and the implementation improved
without hopefully affecting calling code significantly.
Change-Id: Ia667ee61ed1bb3d1171c22d7752f22517b3ccda8
Roland Schulz [Sun, 10 Aug 2014 01:59:35 +0000 (21:59 -0400)]
Merge release-4-6 into release-5-0
Conflicts:
CMakeLists.txt (version bump ignored)
Change-Id: I4ba0209b5f69b6470470530662a0b27390a02771
Teemu Murtola [Sat, 9 Aug 2014 04:19:56 +0000 (07:19 +0300)]
Add Selection::hasOnlyAtoms()
Add a convenience function for checking whether a selection consists of
atom positions only. This will be useful for analysis tools that may
only support atom positions with some combination of options, leads
to clearer code than checking type() == INDEX_ATOM, and exposes less
internal implementation details.
Change-Id: Iaa2d0bfa2f567c060f6b006d423c2910ffd46a69
Erik Lindahl [Wed, 30 Jul 2014 12:46:57 +0000 (14:46 +0200)]
Fix portability issue with ArrayRef initializer overloading
Some compilers (in particular the Fujitsu compilers that are
derived from an earlier version of Clang) will not allow
overloading functions where one version uses a pointer to a
type, and the other a vector iterator to the same type - likely
because they have implemented iterators with pointers.
Regardless of what the C++ standard says, we need this working
on K computer, so this patch replaces the overloaded
initializers with non-member functions that create an ArrayRef
or ConstArrayRef either from pointers, an array,
or iterators.
Change-Id: I4c4e327c869920cc08e3f955e88cb3a5b28c7e87
Erik Lindahl [Tue, 5 Aug 2014 10:15:39 +0000 (12:15 +0200)]
Changed names of test files to avoid Fujitsu compiler bug
The Fujitsu compilers use an older version of the Clang
parser where certain static class initializers (e.g. strings)
are put in a static initializer function stub named after
the file and class. When the first such class has identical
names in two different files where the last part of the
name is identical, this will result in clashing symbols
at link time. Working around this would require an extra
(unused) class definition in each file that would pollute the
code, so for now we merely rename the files where it occurs
and hope that the compilers will be fixed (a bug report has
been submitted).
Change-Id: If552a06950facb0cdbb6e34e0b324aafa6083ae8
Teemu Murtola [Sun, 3 Aug 2014 04:27:36 +0000 (07:27 +0300)]
Basic support for 2D neighborhood search for analysis
Add support for doing a neighborhood search based on distances in the
X-Y plane into the analysis neighborhood search routines. The basic
logic is lifted from 'gmx rdf -xy' and made a bit more general.
Currently, only basic searching is implemented, but grid-based should
not be too difficult either. Later implementation of a grid-based
search should be transparent to callers.
Change-Id: I635d7f7a5eb0136d7a3a4c968ddaa34b03ae3bc7
Berk Hess [Mon, 4 Aug 2014 12:18:36 +0000 (14:18 +0200)]
Fix hang with LJ-PME and empty domains
With LJ-PME and DD domains with 0 atoms and LJ-PME mdrun could hang.
Fixes #1571.
Change-Id: Ie205954c4f5e1a52df846a69972f735867eea15d
Roland Schulz [Tue, 29 Jul 2014 23:37:19 +0000 (19:37 -0400)]
Workaround for ICC 14
Problem was only present with BUILD_SHARED_LIBS=no
Change-Id: Ieb4377d819aa5eff3d139cdbe55775989118a738
Teemu Murtola [Sun, 3 Aug 2014 14:32:31 +0000 (17:32 +0300)]
Verify MD5 sum for FFTW download
Since ExternalProject provides confusing error messages with MD5
checking enabled, add a custom download step that works as expected.
When passed a local file as the URL, ExternalProject does the MD5
verification just fine, so the code now downloads the tarball in a
custom step and then passes that local file to ExternalProject.
This allows removing the lengthy security warning that appeared there if
one was just following the quick-and-dirty installation instructions,
and likely only confused novice users. While this change may not
improve overall security significantly, it hopefully allows everyone to
agree to remove that warning and thus improve the end-user experience.
Change-Id: I9ac5a30ae5858b7a6557ccb2d981cc909457d020
Teemu Murtola [Sun, 3 Aug 2014 04:16:54 +0000 (07:16 +0300)]
Check frame atom count before evaluating selections
Several tools work even if passed a trajectory that only contains a
subset of the atoms specified in the topology. The selections work as
well, provided that the selections don't need to access other atoms.
It may be a bit unclear what the selections need for evaluation, though.
Now the selections report an error if the trajectory does not contain
the necessary atoms; previously, it would most likely just crash.
I'm not 100% sure that the check catches all possible cases, but at
least for the majority of the cases it will provide significantly better
feedback.
Currently, it is only possible to pass the first N atoms, as supporting
anything else would require significant changes elsewhere as well, but
the check itself would be straightforward to adapt if the implementation
gets otherwise done (just replace the std::max operations with unions).
Change-Id: I5d9bf68567ba8634bb81b82a6833c0d398a40bdb
Berk Hess [Sat, 2 Aug 2014 08:53:31 +0000 (10:53 +0200)]
Fixed PME bug with high OpenMP thread count
PME energies and forces could be incorrect with combined MPI+OpenMP
parallelization. This would, only, happen when
pmegrids->nthread_comm[YY] >= 2, which can only occur with high OpenMP
thread count with multiple large prime factors.
It's unlikely that this issue affected production runs.
Fixes #1572.
Change-Id: I03b38c279c8f8ab2e111dad0976edad88b3ea93b
Erik Lindahl [Thu, 31 Jul 2014 14:32:30 +0000 (16:32 +0200)]
Added tests for denormal and underflow for simd exp()
The SIMD math functions are not expected to handle
the denormal range correctly, but it should at least
be clamped to zero rather than producing garbage
values. No changes required to the math function,
so it appears to pass these tests as-is.
Change-Id: I841c2948c81f6b62f42e60ff30ffd5e4f77926fa
Teemu Murtola [Thu, 31 Jul 2014 17:57:12 +0000 (19:57 +0200)]
Merge "Merge release-5-0 into master"
Roland Schulz [Mon, 7 Jul 2014 21:44:28 +0000 (17:44 -0400)]
Replace most strdup with gmx_strdup
gmx_strdup existed but code was using a mixture of it and strdup.
Advantages of using gmx_strudup everywhere:
- consistency
- error handling for out of memory
- strdup might not be available (e.g. Cygwin)
Left strdup in testutils which had already error handling. And fatalerror.cpp
which cannot use gmx_strdup because it could lead to an infinite loop.
If all strdup are removed gnu++0x in gmxTestCXX11.cmake is not required
anymore.
Change-Id: I6ed3e17e34b833b01222d4b45c680db7aadada34