Teemu Murtola [Thu, 17 Dec 2015 10:44:07 +0000 (12:44 +0200)]
Update versioning for new scheme
Make versioning use the new YYYY[.P] scheme that was decided quite a
while back.
Also, remove the literal "VERSION" prefix from the return value of
gmx_version() to give caller better control for deciding on the usage of
the version string.
Change-Id: I1ed171502a4a900c87988faabf48fafeef735c4f
Berk Hess [Wed, 25 Nov 2015 09:31:53 +0000 (10:31 +0100)]
Removed topology pointers from DD struct
The reverse topology struct in the domain decomposition data used
pointers to the global and local topologies for printing errors.
Since the call now the error function can now pass those pointers,
these pointers no longer need to be copied.
Also added const qualifiers to some data structures.
Change-Id: I5d2236982748214591aa5d19f77f0ab8d27553ab
Mark Abraham [Mon, 3 Aug 2015 22:13:23 +0000 (00:13 +0200)]
Simplified energy-summation code
We need to check that the DD has the correct number of bonded
interactions being handled across all domains. The old check would
happen at every call for computing energies, which was unnecessary
because the number of domain-local bonds can change only at DD
steps. It also required log file, global state and global topology to
be passed into every call to global_stat to handle the rare error case.
This patch moves the check for correct DD of bonded interactions up to
do_md, where it can be scheduled to happen only once per DD lifetime.
global stat now does not need to be passed parameters that only needed
for reporting in the case of a failed check.
The dispersion correction code now gets the global number of atoms
from a field in forcerec. This should really be set up when a
dispersion-correction object was created, but this approach will do
for now (particularly because dispersion correction code is probably
being called too often, so there's bigger problems to fix).
Together, mdrun energy-summation code no longer needs to be passed the
global topology, reducing code complexity.
Fixed documentation of global_stat.
Refs #1793
Change-Id: I595b4eff8f4cbb0bbaf295c386041a0966e4a094
Teemu Murtola [Wed, 16 Dec 2015 11:27:25 +0000 (13:27 +0200)]
Move calcgrid.* to fft/
One more file out of gmxlib/. These are related to selecting an FFT grid
size, and contain some numbers coming from performance measurements, so
fft/ should be a natural place.
Change-Id: I386965665a92bc47d4c0c3ca0201a6a4b13b5886
Berk Hess [Fri, 11 Dec 2015 13:37:09 +0000 (14:37 +0100)]
Add one element to state rvec arrays
Because the next generation SIMD interface can use (unaligned) 4-wide
SIMD loads to load rvecs from the state, we need one extra element
allocated at the end of the arrays.
Note: This is a temporary, fragile code that should be replaced.
One can easily forgot to allocate an extra element in state and
someone could pass an rvec pointer not from state to one of the
routines that uses SIMD loads.
Change-Id: Ib359355909c3e380ebd36a3ec2a3015a3cb6c9b8
Erik Lindahl [Sun, 1 Nov 2015 21:01:15 +0000 (22:01 +0100)]
Next-generation SIMD module, reference implementation
This moves the SIMD implementation to C++, and extends it
to put all architecture-specific code in the SIMD module
and make the nonbonded kernels fully generic. A number
of other features has also been added, with the hope that
we should be able to largely freeze the features after
this expansion.
- SIMD variables are now always unique types, and all
names have been changed to C++ standard in the gmx
namespace.
- All SIMD functions are now functions and not defines.
- Function names have been modified to correspond as much
as possible to the C++ standard library for normal
floating-point types.
- The alignment routines have been removed and replaced
with the AlignedAllocator and GMX_ALIGNED() attribute
for stack variables. The latter is now defined on all archs,
either to MSVC- or GNU-specific versions or the C++11
standard alignas/alignof, with a new basedefinition test
that will catch at least some bad alignment routines.
- About 10 higher-level routines have been added to
perform the operations necessary for full-SIMD-width
nonbonded kernels.
- There are new defines to indicate that wide SIMD
implementations support half-SIMD-width operations, and
a handful of utility functions that are required to
use this in the nonbonded kernels.
- Masked operations for multiply, reciprocals and
inverse square roots have been added. In the future
this will make it possible to improve the kernel
efficiency, in particular on platforms with native
support for masked operations.
- We no longer use defines to check availability
of the basic integer SIMD type, but implementations
that do not support this at all should implement it
through the floating-point types, i.e. it will always
be present from the user perspective.
- A transpose operation has been added for SIMD4.
- Gather/scatter operations have been added for
triplets. This will make it easier to use SIMD
even for routines with non-SIMD-friendly data layout.
- Memory alignment asserts are used when compiling with
asserts enabled.
- The nbnxn kernels no longer use any architecture-
specific files, but rely entirely on the simd module.
This also fixes a float-to-double conversion bug
for Xeon Phi that was detected with a new unit test
for the conversions. Those routines have never been
used in GROMACS, so it is harmless.
Change-Id: Ic882df80b21e8a70a9585c2dc4dd1e87fae1a9d8
Erik Lindahl [Thu, 29 Oct 2015 17:13:59 +0000 (18:13 +0100)]
C++ math function cleanup
math/functions.h now implements a number of old and new math
functions with either float, double, or integer arguments.
Manual SIMD versions of 1/sqrt have been tested with gcc and icc
on x86, Power8, Arm32 and Arm64, but with correct 'f' suffixes
on constants there is only 10-15% performance difference, so for
now we always use the system versions to avoid having this file
depend on config.h. Functions for third and sixth roots have
been introduced to replace many of our pow() calls, and the code
has been cleaned up to use the new functions.
Refs #1111.
Change-Id: I74340987fff68bc70d268f07dbddf63eb706db32
Teemu Murtola [Mon, 14 Dec 2015 19:02:10 +0000 (21:02 +0200)]
Move main.*, splitter.*, gmx_omp_nthreads.* to mdlib
Remove unused #includes for these headers, and remove some incorrect
uses, which showed that they are not actually used outside mdrun.
listed-forces -> mdlib dependency becomes slightly stronger with this,
but internal structure of mdrun code anyways needs a lot of work to
remove the dependency cycles.
Change-Id: If326c8da5a732ee725aa16ffad0ec72f9fefb371
Teemu Murtola [Mon, 14 Dec 2015 18:43:26 +0000 (20:43 +0200)]
Move readinp.* and warninp.* to fileio/
These are related to reading certain file formats, so they naturally fit
there.
Change-Id: Ie39f853be580d2d0cf7f2ffd989aaaf2b7c82eb0
Teemu Murtola [Mon, 14 Dec 2015 18:25:41 +0000 (20:25 +0200)]
Move hardware detection to hardware/
This may not be the best place for all of the code, since there are
also, e.g., functions that return information about implementation
limitations of mdrun, and for checking mdrun input parameter
consistency. But it would make sense for as much of the actual
detection code as possible to be in a single location, and this would be
the most natural place.
There are several cyclic dependencies suppressed for now to get forward
with breaking up gmxlib/.
Change-Id: Ie73d0a18530082d3a2b9f26a655706b33bf58a8a
Teemu Murtola [Sun, 13 Dec 2015 10:20:21 +0000 (12:20 +0200)]
Move some mdrun code out of gmxlib/
- Move sighandler.* to mdlib, since it is specific to mdrun.
- Move thread_affinity.* to mdrunutility, since it is only used from
runner.cpp. Convert existing comments to rudimentary Doxygen
documentation to avoid check-source and Doxygen warnings.
Change-Id: I83d431497480bcfa2b2edf8f347708a0c1832005
Teemu Murtola [Sun, 13 Dec 2015 08:07:20 +0000 (10:07 +0200)]
Move gpu_utils etc. out of gmxlib
Make gpu_utils/ a top-level directory in an effort to break up gmxlib,
and merge cuda_tools/ and ocl_tools/ there to avoid multiple very small
modules. Remove complicated globbing from the build system in favor of
listing the source files explicitly.
Change-Id: Id48a3ac89e1fa8fd8b8cf6eb8b9512a7d4519f97
Teemu Murtola [Mon, 14 Dec 2015 19:20:54 +0000 (21:20 +0200)]
Install baseversion.h
At least gmx_version() could be useful for external code.
Change-Id: I62c8e3af728f3ff844a5e1e611ed96927d44d676
Szilard Pall [Sat, 5 Dec 2015 02:06:29 +0000 (03:06 +0100)]
OpenCL code cleanup
Removed leftover comments and dead code, added some notes on what needs
to be reviewed later and fixed formatting in a few really bad cases.
Only in one cases did minor refactoring by moving some code into a
function (nbnxn_ocl_init_const) to eliminate some leftover TODOs and
make the code more in sync with the CUDA code structure.
Change-Id: I69d4a5a85bcadfa6f97282c02016fea31e52729a
Teemu Murtola [Fri, 11 Dec 2015 10:38:13 +0000 (12:38 +0200)]
Create separate module for trajectory data
Move trx.h from fileio/ to a new trajectory/ module, and rename it to be
more descriptive. This directory can then evolve to have the basic data
structures and operations on trajectory information, similarly to the
topology module for structure information. This removes a
pbcutil <-> fileio cyclic dependency, and also makes the selection code
independent of fileio.
Moved energy.h from mdtypes/ to the same place, since it is used for
representing energy information during the trajectory. This makes
mdtypes at least slightly more mdrun-specific.
Part of #1854.
Change-Id: I4c266d78daefc3be9adefb56cd7cce8d9548634b
Berk Hess [Thu, 10 Dec 2015 19:55:40 +0000 (20:55 +0100)]
Removed unused mdrun option -dn
Change-Id: I1814258c9f7e60e3ef4fef0f6def918d2bf50e4a
Teemu Murtola [Fri, 11 Dec 2015 07:21:49 +0000 (09:21 +0200)]
Move disre.* and orires.* to listed-forces/
This removes topology -> gmxlib dependency, and moves code out of gmxlib
to a more appropriate location.
Convert existing comments to very rudimentary Doxygen documentation to
avoid Doxygen warnings.
Part of #1854.
Change-Id: I1aa56dd8f14eff90e035f1c69d59bb19a8dcb7ed
Teemu Murtola [Fri, 11 Dec 2015 06:58:10 +0000 (08:58 +0200)]
Move ifunc.* to topology/
This does not solve the main cyclic dependency that comes from
interaction_function definition depending on all the functions that
evaluate the interactions, but it does centralize this dependency to
topology: pbcutil -> gmxlib dependency is now removed.
Part of #1854.
Change-Id: Iaed05348cf663db7faeb7154a2838ea84d8bde1b
Teemu Murtola [Fri, 11 Dec 2015 07:01:30 +0000 (09:01 +0200)]
Move put_atoms_in_box_omp() to sim_util.*
This contributed to pbcutil -> gmxlib cyclic dependency, and it could
anyways be better to have mdrun-specific code outside the generic
modules.
Change-Id: Ibc453a290dc124b1f83adf0c3385e9907581e377
Teemu Murtola [Thu, 10 Dec 2015 19:29:43 +0000 (21:29 +0200)]
Remove topology -> fileio dependency
There is no particular reason why .ndx reading/writing would need to use
gmxfio.h for I/O, instead of the simpler routines from futil.h. For
now, removing the use of gmxfio.h makes the dependencies much cleaner.
Part of #1854.
Change-Id: I86ed5dea88a230fbd337acb3a47048c9ab6e7fbe
Mark Abraham [Wed, 11 Nov 2015 21:23:35 +0000 (22:23 +0100)]
Broke up copyright.*
Split unrelated content into binaryinformation.* and pleasecite.*, and
move them to utility/. This removes functionality from fileio that does
not really belong there, and helps in removing cyclic dependencies.
One new cyclic dependency suppressed for now; it will disappear with
simplification of gmx_invsqrt().
Part of #1415.
Change-Id: I65f07768d46852783d30cf1a28dd22d614dde125
Teemu Murtola [Fri, 11 Dec 2015 06:27:45 +0000 (07:27 +0100)]
Merge "Merge branch 'origin/release-5-1'"
Mark Abraham [Thu, 10 Dec 2015 01:36:16 +0000 (12:36 +1100)]
Merge branch 'origin/release-5-1'
Change-Id: Ib28050b54b93ee5eabb12414a92424987b769693
Teemu Murtola [Thu, 3 Dec 2015 20:06:47 +0000 (22:06 +0200)]
Split txtdump.*, part 2
Move basic txtdump.* to utility. To avoid introducing more cyclic
dependencies, move some contents closer to declaration of the types
being dumped:
- Move pr_inputrec() to mdtypes/inputrec.*.
- Move pr_*() functions operating on vectypes.h types to math/vecdump.*.
One additional cycle suppressed for now; on the other side, this removes
nearly all pbcutil -> fileio and topology -> fileio dependencies,
getting us closer to removing those cycles.
Add basic comments for remaining txtdump.h functions to avoid Doxygen
warnings.
Change-Id: I8ec5b34f6d5af8e63f9716e782943e75cb06b5b5
Teemu Murtola [Thu, 3 Dec 2015 19:22:37 +0000 (21:22 +0200)]
Split txtdump.*, part 1
- Move routines to print various data structures to the file that
declares the data structure, mostly to topology/.
- Rename pr_header() to pr_tpxheader() to clarify its use.
- Remove unused pr_commrec() and some commented-out code.
- Remove unnecessary uses of txtdump.h.
This helps avoiding dependency cycles coming from this (because in its
old form, any code that wanted to use these routines for, e.g., debug
output, would need to be above all the data structures for which this
printing was supported). Also, it makes it easier to find the code that
needs changing because of a data structure change easier when it is
close to the declaration of the data structure.
Follow-up commit will move txtdump.* out of fileio to resolve existing
cyclic dependencies, but split that into a separate commit to keep the
size manageable.
Change-Id: I2665f6d25cd095f4c7d11d32bcaec38601ff8d8b
Robert McGibbon [Wed, 14 Oct 2015 08:36:46 +0000 (01:36 -0700)]
Implement parse_digits_from_csv_string
Allow -gpu_id and GMX_GPU_ID to use a comma separated list of digits,
to support specification of >10 GPUs per node.
Change-Id: I62e6b54476efadd24aef00ed63d29c98e4d15c38
Mark Abraham [Fri, 20 Nov 2015 16:10:02 +0000 (17:10 +0100)]
Update use of preprocessor in managing GPU support
Once CMake has done detection of GPU library support, within CMake we
now use GMX_USE_CUDA and GMX_USE_OPENCL to handle details such as
which source code files should be compiled. This makes code in
CMakeLists.txt files slightly more clear.
To configure the GROMACS build via config.h, CMake sets GMX_GPU_TYPE
to match the name of one of three hard-coded defines in
config.h.cmake.in, and configures GMX_GPU with the value represented
by that name. This ensures GMX_GPU always has a value in source code,
so various kinds of mis-use will found by the compiler. It also means
we can use GMX_GPU and the values of those defines to simplify the
parts of high-level code that are different according to which GPU
configuration is in use - mostly in reporting to the user what is
going on. This reduces the number of complex preprocessor conditionals
that might want documenting or indenting, and makes it harder to write
a syntax error that can only be found with a particular build
configuration.
Minor change to the start-of-run reporting. Rather than show that GPU
is disabled/enabled, and OpenCL likewise, show disabled or which of
CUDA or OpenCL is enabled for GPU acceleration. The OpenCL library
name will make clear whether AMD or NVIDIA libraries is providing the
OpenCL runtime.
No changes to user interface of CMake. Removed redundant declaration
of option(GMX_GPU) from main CMakeLists.txt, since gmxManageGpu()
already did that.
No changes required to current or future compute code, since CMake
still handles whether such code is compiled at all.
Refs #1855
Change-Id: I3448fe284ac526eb2b185e915b95fcc84f3d469a
Roland Schulz [Sun, 29 Nov 2015 15:47:55 +0000 (10:47 -0500)]
Remove old MSVC references
Change-Id: I32100e53a0a6dc76febaedeb47dd7e9efa25ba4d
Mark Abraham [Tue, 8 Dec 2015 07:45:22 +0000 (18:45 +1100)]
Merge branch 'release-5-0' into release-5-1
Conflicts:
src/gromacs/mdlib/coupling.cpp
Trivial conflict from removing unused variables in release-5-1, but
adding one in release-5-0, resolved by combining both logical changes.
Change-Id: Ib3e762bec8699465d47cbc364fecb424b23aec11
Mark Abraham [Tue, 1 Dec 2015 03:11:04 +0000 (04:11 +0100)]
Fix Trotter integration
Re-using the iteration variable in an inner scope could have produced
any manner of nonsense. Luckily it was only broken for md-vv with NPT
and more than one temperature-coupling group.
Fixes #1872
Change-Id: If22849e40a0253ba1fa4bbc1dba78b80d17cf4d1
Berk Hess [Thu, 26 Nov 2015 20:55:41 +0000 (21:55 +0100)]
Moved pull params to mdtypes/pull-params.h
Change-Id: Ib49f78d4e2b8e25cdbca727c36abca74a3c11611
Magnus Lundborg [Thu, 26 Nov 2015 10:50:59 +0000 (11:50 +0100)]
Write forces and velocities to compressed TNG.
If there is no uncompressed coordinate output write forces
and velocities to the TNG file with compressed coordinate
output. If there is uncompressed coordinate output to a
TNG file forces and velocities will be written to it.
Use a greatest common divisor to set the frequency of some TNG
data output to ensure lambdas and box shape are written at least
as often as anything else.
This commit closes #1863.
Change-Id: I61bb5513f5080847f9098ff4fd7f01c8d1415a8f
Mark Abraham [Thu, 26 Nov 2015 18:31:22 +0000 (19:31 +0100)]
Remove mdrun -compact
This defaulted to true, and was otherwise always hard-coded to true in
print_ebin() when in eprNORMAL mode, and always hard-coded to false in
eprAVER mode. The data printed looks like it should always be in the
energy file, which is how we should approach analysis tasks that might
make use of the non-compact data if it was written in eprNORMAL mode.
Change-Id: I1b7912cc6e87712cf71854bcd18b00e9ad25a9be
Teemu Murtola [Wed, 2 Dec 2015 04:35:40 +0000 (06:35 +0200)]
Move strdb.* to utility/
These are more similar to the low-level I/O routines already present in
utility (most uses would be easy to replace with TextReader alone, after
some minor extensions), rather than to the other fileio/ stuff.
This, in part, helps breaking the fileio <-> topology cyclic dependency.
Remove unused or duplicate functions or make them private to the source
file.
Convert existing comments to rudimentary Doxygen to avoid warnings.
Change-Id: I3f5262112fabe2bffa16c14c20d987e2e63dcb4f
Teemu Murtola [Tue, 1 Dec 2015 20:16:49 +0000 (22:16 +0200)]
Move filenm.* to commandline
These are really related to command-line parsing instead of file I/O, so
they belong here. Move opt2fn_master() to network.* to avoid an
commandline -> mdtypes dependency.
Convert existing comments to rudimentary Doxygen documentation to avoid
warnings.
Change-Id: Idd1a088a70f4687f1929075f14b5ac63564a1f9b
Teemu Murtola [Tue, 1 Dec 2015 20:08:36 +0000 (22:08 +0200)]
Split filenm.*
- Split the declaration of recognized file types into a separate file
(filetypes.*) from filenm.*. The latter now only contains the
t_filenm structure and functions related to it. This can later move
to the command-line module.
- Do not include filenm.h from other headers, except for pargs.h, where
all users will anyways require it.
- Include filenm.h from source files that need it.
- Replace uses of filenm.h with filetypes.h where only the latter is
needed.
Change-Id: Ic125e4fe209fba9dbb238daa4ae8ee72451a64c9
Berk Hess [Wed, 2 Dec 2015 11:50:29 +0000 (12:50 +0100)]
Increase pdb chain ids to 62 in output
We used to only use uppercase chain identifiers for chain ids in
output to pdb. Now we can use all 62 alphanumeric characters.
Change-Id: Ic56ef95354d247cb0129606d24c5df8644722573
Berk Hess [Tue, 1 Dec 2015 10:45:12 +0000 (11:45 +0100)]
Refactored set_pbc_dd
Made set_pbc_dd more understandable and updates its documentation.
Made all input pointers to the pbc code const, this also required
all pointer arguments in txtdump to be const.
Change-Id: I40db5532502e647e821c0bf083614fbc586df44e
Berk Hess [Fri, 20 Nov 2015 09:16:45 +0000 (10:16 +0100)]
Made t_inputrec const in PME load balancing
Now that the twin-range scheme is gone, inputrec is no longer
modified during PME load balancing. Added a const qualifier to make
this clear and enforce this during future changes.
Also added const for all const arguments in domdec_box.cpp.
Change-Id: Ie063fe3d5846e1f9565634c4561c09f3cc9b5bae
Mark Abraham [Mon, 16 Nov 2015 23:53:35 +0000 (00:53 +0100)]
Remove twin-range scheme
Only the group scheme supports this, and the Verlet scheme will not
support it in the foreseeable future.
Removed many uses of rlistlong, but replaced some appropriate uses
with rlist. We now have the explicit requirement that rlist >=
max(rcoulomb,rvdw).
Didn't rename variables that contain "shortrange" or "SR" since
they'll mostly disappear with the group scheme
Retained energy components that need to be retained for .edr
compatibility.
gmx compare and dump ignore the old fields
Change-Id: I6ab2ea93bfcea8510969b43e7f06f55d5f350840
Berk Hess [Fri, 17 Apr 2015 18:10:08 +0000 (20:10 +0200)]
Pull group count for coords stored in tpr
Added a parameter ngroup to the pull coord parameters. This is now
also stored in the tpr file. This simplifies code in several places,
since we now only need to determine ngroup is one place. This change
also makes the pull geometry forward compatible, which is useful
since it avoid bumping tpx_version with every new geometry and
we expect that users want to experiment with new geometries.
Change-Id: I7fc0032e439a5ac329f3260d5a6c775295a61bfc
Erik Lindahl [Tue, 1 Dec 2015 00:27:08 +0000 (01:27 +0100)]
Fixed null-dereferencing bug in vsites
set_pbc_dd() would be called with the argument
cr->dd->nc even when cr->dd was NULL. Fixed to
use a NULL pointer argument instead.
Change-Id: I19c3cb5be2a48d063323c7daf9f1b203d988279b
Teemu Murtola [Mon, 30 Nov 2015 15:19:52 +0000 (17:19 +0200)]
Remove topology -> mdtypes dependency
This only existed because of a single use of t_inputrec in mtop_util.
Replaced the access to t_inputrec.efep with an equivalent check in the
callers. Not ideal, but can possibly be improved futher by moving code
around once the desired structure is clearer.
Change-Id: Ieb777f6fd11b15c4fecaf391b22293439097f2fa
Teemu Murtola [Mon, 30 Nov 2015 10:57:59 +0000 (12:57 +0200)]
Remove obsolete references to legacyheaders/
Change-Id: I076f0809314d894b9322d369c675e37ad321d02a
Teemu Murtola [Mon, 30 Nov 2015 10:52:22 +0000 (12:52 +0200)]
Merge remaining legacyheaders/types/ to mdtypes/
One cyclic dependency suppressed for now.
legacyheaders/ is no more.
Closes #1415 (but this just moves us to the next phase of the clean-up)
Change-Id: Ie80d24d347acb61216002a309cb4118f8dc99b6b
Teemu Murtola [Mon, 30 Nov 2015 10:39:49 +0000 (12:39 +0200)]
Move ifunc.h to gmxlib
This is where the source file currently resides. There are some cyclic
dependencies introduced by this, but these already existed. Should be
sorted out separately.
Change-Id: I4353da8820b37a10508147ffdf1cbe731b8e3361
Teemu Murtola [Mon, 30 Nov 2015 10:31:43 +0000 (12:31 +0200)]
Move force_flags.h to mdlib/
One more header out of legacyheaders, only a few remaining.
Change-Id: I02397a5e5664179174e73646ffb11f4b186bdf41
Teemu Murtola [Mon, 30 Nov 2015 10:23:03 +0000 (12:23 +0200)]
libgromacs CMake source file management cleanup
- Remove obsolete globbing for *.c files.
- Do not install anything remaining in legacyheaders/, which makes it
possible to remove the whole CMakeLists.txt files from there.
- Add gmx_add_libgromacs_sources() as an alternative to globbing, and
use it in places where we were only using the globbing to get full
paths (so that they work where we want).
Change-Id: I654b84b6f48b7991faa3d7a349d5118be932493d
Teemu Murtola [Mon, 30 Nov 2015 10:04:23 +0000 (12:04 +0200)]
Move hardware info structs to hardware/
Move hw_info.h and gpu_hw_info.h to hardware/, removing more code from
legacyheaders/types/.
Change-Id: Id324f8b517beb9cfd4e9d517f9e704efc55a4096
Mark Abraham [Sun, 25 Oct 2015 16:24:03 +0000 (17:24 +0100)]
Refactor hardware information management
Made gmx_hw_info_t and gmx_gpu_info_t opaque so that forcerec.h does
not have to depend on hw_info.h.
Split gpu_hw_info.h off from hw_info.h, so that GPU code is not yet
exposed to C++11 constructs used for host code information management.
Change-Id: I283b3257ac9e2d341d673c0c4be7eb5c2c5ae40d
Magnus Lundborg [Thu, 26 Nov 2015 15:29:06 +0000 (16:29 +0100)]
Fixed typos in output.
Change-Id: I706c489f186c0d0367fca2cf4581186a0a97a291
Erik Lindahl [Thu, 8 Oct 2015 16:28:49 +0000 (18:28 +0200)]
C++ classes for cpuid and hardware topology
Refactored old cpuid into classes for cpuid and hardware
topology detection, and moved SIMD architecture selection
routines to the SIMD module. This will make it possible
to introduce hwloc transparently to get more advanced
topology information from the hardware topology class.
Since forcerec.h is still included by a few C files, the
previous cpuid datatype has been turned into pointers
to forward-declared non-existing structs, which causes
snew/sfree to choke on them. Internally they are instead
properly new:d/delete:d in the C++ code.
Change-Id: I378ec5dc6c32883c5d89f1cfeecea93a3b8b0e6b
Teemu Murtola [Fri, 27 Nov 2015 10:19:13 +0000 (12:19 +0200)]
Clean up some selection code
- Make most input parameters to centerofmass.* routines const.
- Remove unused return values for the routines, and replace the checks
for incorrect calls with asserts.
- Use ConstArrayRef in test code to get rid of other templates in test
code.
Change-Id: I343f3165df73a5a7d4468ca233f08d09b9a5b259
Elton Carvalho [Wed, 25 Nov 2015 21:35:47 +0000 (18:35 -0300)]
Rotate Figure 8.2 in manual.
Fixes #1865
Change-Id: I4bd006fa691481179d4eec4299d9cc5d18db6e3f
Magnus Lundborg [Wed, 25 Nov 2015 22:36:15 +0000 (23:36 +0100)]
Use local variables instead of those in *ir.
We set vout and fout to that values of ir->nstvout and ir->nstfout
Use the local variables.
Change-Id: I17dbc1f9c2fda7099cfa2f38da6600e2d175bd5a
Mark Abraham [Tue, 24 Nov 2015 18:55:30 +0000 (19:55 +0100)]
Fix logic of dd_print_missing_interactions exit
Old code would write a fatal error from master rank, and then exit
without coordinating with the other ranks. Instead, all ranks should
participate in the fatal error, using the existing code that takes
care of printing output only from master rank.
Change-Id: Iec91ddd09ba076cd977d2c1ef388cf99adae92f6
Mark Abraham [Tue, 24 Nov 2015 16:08:03 +0000 (17:08 +0100)]
Fix error in multi-sim communication
I lost the [0] in converting the old code, and there was not enough
testing coverage to find it.
Fixes #1848
Change-Id: Ifb9ffaf5a525537231b1f4e848bba3ef0873a077
David van der Spoel [Tue, 24 Nov 2015 13:49:38 +0000 (14:49 +0100)]
Fixes newly introduced bug in make_ndx.
After cleanup removing "NOTSET" from general include files a bug
was introduced in make_ndx not being able to generate groups
based on atom name, residue name or atom type.
Fixes #1859
Change-Id: I5ccca69ca31ae9d53f7473bcd9e6864db9a66fc8
Mark Abraham [Tue, 27 Oct 2015 16:18:24 +0000 (17:18 +0100)]
Update and expand pre-submit commit matrix
Upstream, dynamic host assignment is now done from the requirements
expressed in the configuration line.
Updated old and new configs to support latest versions for icc, gcc,
MSVC, clang, and CUDA.
Change-Id: Icce62d1ba80a5b40ff00d78cdd24e15c8c45f2e7
Teemu Murtola [Sat, 21 Nov 2015 20:43:56 +0000 (22:43 +0200)]
Move precision detection symbols to baseversion.*
Part of splitting copyrite.* to its components.
Add extern "C" declaration to the symbols to make it simpler to check
their presence.
Change-Id: Ie6d776719766435ad75915b40ec1c01b06f23f7e
David van der Spoel [Sat, 21 Nov 2015 14:27:16 +0000 (15:27 +0100)]
Moved domdec structures out of commrec.h.
In order to clean up the legacyheaders directory here the
structures relating to domain decomposition are taken out of
commrec.h and moved to a new file domdec/domdec_struct.h
To not introduce new cyclic dependencies modified the
interface of write_checkpoint and gmx_fatal_collective.
Part of #1415
Change-Id: I485a03eddbb87dcc236b7e2e7d85d03383d86f61
David van der Spoel [Sat, 21 Nov 2015 21:33:13 +0000 (22:33 +0100)]
Cleanups in legacyheader/types/commrec.h
Removed superfluous typedefs from above file.
Part of #1415.
Change-Id: If3d99dc24864d21dbbfa2eaf57fd5264f7d3d9ec
Mark Abraham [Sun, 22 Nov 2015 12:08:46 +0000 (13:08 +0100)]
Fix generic group-scheme kernel table dereferencing
Changes to regressiontests see the generic kernels triggered more
often, and these need to not dereference table data that hasn't been
initialized. This change follows the example of nb_free_energy.cpp.
Change-Id: Ifca4ed318dfc04e760e65d1419df13388cb88248
Teemu Murtola [Sun, 22 Nov 2015 05:22:45 +0000 (07:22 +0200)]
Remove correlationfunctions -> mdtypes dependency
This only existed because of bool_names, which was much more general
that most other MD-specific enums in md_enums.h. Instead, add a
boolToString() utility function and use it. This is also more robust,
as passing an integer with a value other than 0/1 no longer causes an
out-of-bounds array access.
Remove some cycle suppressions that were not suppressing any cycles not
covered by other suppressions.
Change-Id: Id0a4e2aa1d73fb1dd07ef182a4f9e4370cb4115c
Teemu Murtola [Sat, 21 Nov 2015 12:00:57 +0000 (14:00 +0200)]
Use v.data() instead of &v[0] for C interop
When passing std::vector arrays to C code, use C++11 .data() instead of
&v[0], since this works also for empty arrays, even with various debug
versions of STL.
arrayref.h still has an &v[0] protected by an emptiness check, since
that is a potentially widely used header.
Change-Id: I3a342a0086c7d0f101c9a91227625c062bedfd5e
David van der Spoel [Fri, 20 Nov 2015 18:50:37 +0000 (19:50 +0100)]
Merged legacyheaders/types/qmmmrec.h into mdlib/qmmm.h
Change-Id: I711270f864d9266b554c44a1185723449973e0b3
David van der Spoel [Fri, 20 Nov 2015 18:19:36 +0000 (19:19 +0100)]
Merged genborn.h from legacyheaders/types into mdlib/genborn.h
Part of #1415.
Change-Id: I2c9dcb827219649791183d016bf07d056a9ca049
David van der Spoel [Fri, 20 Nov 2015 19:15:57 +0000 (20:15 +0100)]
Moved legacyheaders/types/group.h to mdtypes.
Part of #1415.
Change-Id: I959941cf586b90e97359e8ec026dc923ff7f8aa5
David van der Spoel [Fri, 20 Nov 2015 15:10:10 +0000 (16:10 +0100)]
Merged legacyheaders/types/ns.h and nblist.h to mdtypes/nblist.h
Also parts moved out of forcerec.h.
In order to make this work some parts of the forcerec structure
had to be made pointers, and the same for nblist structures.
Part of #1415.
Change-Id: Iaaadd76ccca001a11371b9a0ad1b75a727732f00
David van der Spoel [Wed, 11 Nov 2015 21:13:22 +0000 (22:13 +0100)]
Combine enums.h and names*.
Combined enums.h and names* to mdtypes/md_enums.cpp/h.
Added doxygen comments to md_enums.h
Removed macros in inputrec.h to reduce cyclic dependencies.
Clean up of legacyheaders. By removing some unnecessary includes
from the files names.h and enums.h (now md_enums.h)
a lot of 'freeriders' showed up, therefore had to include
topology.h in many files.
Part of #1415
Change-Id: I12b8ef4f82b7aec806aea2eee7d77604e86dc576
Mark Abraham [Wed, 18 Nov 2015 19:05:46 +0000 (20:05 +0100)]
Split wallcycle interface
Separated header for components that relate to accumulating counts
from end-of-run reporting. The former benefits from exposing a minimal
interface, e.g. so CUDA code isn't potentially exposed to C++11
headers.
Refs #1745
Change-Id: I70517ac104f002b7b4e61a3aaa26acff5193361c
Mark Abraham [Sat, 24 Oct 2015 15:49:59 +0000 (17:49 +0200)]
Remove ewcWAIT_GPU_NB_L_EST
This responsibility doesn't fit with the rest of gmx_wallcycle (and
the new implementation has slightly lower overhead, too).
Change-Id: I99984e8ae19f8201d1e49aa9fe0f01062ac8ee47
David van der Spoel [Thu, 19 Nov 2015 15:19:21 +0000 (16:19 +0100)]
Merged legacyheaders/nrnb.h and types/nrnb.h to gmxlib.
Part of #1415
Change-Id: I33922419a6a5a7976bda12fd81e2d752eb0c5c6d
David van der Spoel [Thu, 19 Nov 2015 12:08:40 +0000 (13:08 +0100)]
Moved mdatom.h from legacyheader/types to mdtypes.
Add doxygen comments to the elements of the structure.
Part of #1415.
Change-Id: I811ad4782dd482ac7fe198c85c85b91af6e20b67
David van der Spoel [Thu, 19 Nov 2015 11:05:50 +0000 (12:05 +0100)]
Moved legacyheaders/types/energy.h to mdtypes.
Part of #1415
Change-Id: I65a00cc49110a09edfafc7520a7a480f73b5165c
Mark Abraham [Wed, 14 Oct 2015 10:51:46 +0000 (12:51 +0200)]
Simplified init and mdrun code
Replaced bVV with EI_VV(ir->eI), so that someone reading the code
doesn't have to remember that they mean the same.
There's already restart-handling code that runs very early in mdrun to
determine whether a valid checkpoint restart will happen, so stopped
doing redundant checks and communication. Eliminated
gmx_fexist_master.
Consolidated logic related to setting up and using bInitStep. Renamed
boolean variable to startingFromCheckpoint according to new style. The
old bStartingFromCpt was only used together with a check for
velocity-Verlet, so we mays as well use the unqualified form and have
one fewer control variable.
Change-Id: Ic8baef9c7364a436bc2bb887e204b2f0f7988734
Berk Hess [Thu, 19 Nov 2015 13:02:44 +0000 (14:02 +0100)]
Removed mdrun fatal_error with P3M-AD
Change-Id: I43f988622aa77f504e9d5ca0693f5758b0e59c5c
Berk Hess [Wed, 18 Nov 2015 08:34:59 +0000 (09:34 +0100)]
Removed Reaction-Field-nec
The RF no exclusion correction option was only introduced for
backward compatibility and a performance advantage for systems
with only rigid molecules (e.g. water). For all other systems
the forces are incorrect. The Verlet scheme did not support this
option and if it would, it wouldn't even improve performance.
Change-Id: Ic22ccf76d50b5bb7951fcac2293621b5eef285c5
Carsten Kutzner [Tue, 17 Nov 2015 11:32:22 +0000 (12:32 +0100)]
Fixed -npstring command line argument in gmx tune_pme
The old format "-npstring -n" would be interpreted as two command
line options by the parser. Therefore, now the syntax is adapted
to "-npstring n" and the minus sign is added later when the mdrun
command line is constructed.
Change-Id: I97b96a2985c3376f60297d336c7914bb48e21e41
Mark Abraham [Mon, 16 Nov 2015 15:56:28 +0000 (16:56 +0100)]
Fix use of #if vs #ifdef
Change-Id: Ic2b52f88cde3793d1f0b96fe36acbe7db1126174
Mark Abraham [Mon, 16 Nov 2015 19:59:37 +0000 (20:59 +0100)]
Remove t_adress
This was intended for removal with AdResS, but the migration of
typedefs/inputrec.h meant it got lost.
Change-Id: Ia0ee6ee20258cfab47345459ce07261d1452cd8b
Mark Abraham [Thu, 29 Oct 2015 15:12:59 +0000 (16:12 +0100)]
Fix AlignedAllocator with MSVC2015 debug mode
The rebind feature of the allocator is apparently used by error
checking in MSVC2015 C++ standard library, and that requires a
templated "copy constructor," and templated constructors can't be
auto-generated. Once we supply that constructor, we must also supply
any other ones we want, such as the no-argument constructors.
Change-Id: Id8446ac5691c9bd7d6f60768b47775211e43fb08
Erik Lindahl [Fri, 31 Jul 2015 22:13:25 +0000 (00:13 +0200)]
Remove unused code detected by PGI compiler
Minor cleanup to fix warnings issued by the PGI compiler.
- Unused routines have been removed, including ones that
were never referenced unless specific defines were set
directly in source files.
- Unreachable breaks have been removed.
- Add a flag to suppress warning that PGI does not
understand a GCC pragma in the generated parser.cpp
There are still issues with PGI not catching exceptions
in the unit tests, SIMD, and OpenMP.
Change-Id: Ic7900b80e31745aafa031c806f0664734014bbe5
Mark Abraham [Mon, 3 Aug 2015 10:20:49 +0000 (12:20 +0200)]
Removed state_global from mdrun energy-summation
state_global was used only when MD_READ_EKIN was set, ie. when
restoring KE data when restarting from checkpoints. So there is
no use passing it to every call to compute_globals.
Accordingly, moved use of restore_ekinstate_from_state().
Also added some docs and const correctness.
Refs #1793
Change-Id: I937f397602c761c92cd8e48121b56b1805a05470
Mark Abraham [Mon, 3 Aug 2015 20:08:31 +0000 (22:08 +0200)]
Remove "support" for twin-range with VV integrators
Group-scheme twin-range non-bonded interactions never worked with
VV+constraints, and removing it was a to-do item. There are no plans
to make it work with VV, and there are plans to remove the twin-range
scheme entirely, as well as rework leap-frog more closerly into the
Trotter scheme.
Refs #1137, #1793
Change-Id: Ibd70b5397568bfcd328cd6dd1c5c99384d7aaca8
Mark Abraham [Mon, 16 Nov 2015 10:47:43 +0000 (11:47 +0100)]
Merge branch release-5-1
Conflicts only from version numbers
Change-Id: I78235cce0c4fd7bcf4235dd888e1aef739d46001
Mark Abraham [Tue, 10 Nov 2015 16:33:17 +0000 (17:33 +0100)]
Remove AdResS
This feature will disappear with the group scheme, so we might as well
get it out of the way first. Doing this removal on its own might help
re-implement some time, if someone was keen.
Removed bVir, bPress, bSurft fields of t_mdebin, because all MD
algorithms now support such calculations.
gmx grompp now issues a fatal error if the main adress .mdp option is
on, and otherwise ignores the obsolete fields (like we do with other
.mdp options we've removed).
mdrun can read old .tpr files, but issues a fatal error if AdResS was
active in them.
gmx dump and gmx compare ignore all AdResS related fields.
Other tools can still read such .tpr files for their other content.
Removed Sebastian Fritsch from GROMACS 2016 contributor list, since he
only worked on AdResS features. Christoph Junghans made other
contributions that are still useful, and so remains.
Removed obsolete literature references
Also fixed some incorrect doxygen of init_forcerec().
Part of #1852
Change-Id: I22fa0fe480148aeda0ace194646a5ec2f3d20a8c
Teemu Murtola [Fri, 21 Aug 2015 10:10:31 +0000 (13:10 +0300)]
Add EnumOption with support for proper enum types
Generalize EnumIntOption such that it can now store the output into a
proper enum type, making it easier to write code where the compiler can
check for correct usage of the enums (i.e., give an error for
unintentional mixing of enum types, or for implicit int-to-enum casts).
Change-Id: Idcdd671f555327a3e3dad521b92d50930cb6e281
David van der Spoel [Thu, 12 Nov 2015 19:30:27 +0000 (20:30 +0100)]
Merged legacyheaders/types/inputrec.h into mdtypes/inputrec.h
Part of #1415.
Change-Id: I39885a01474173170bc6a7a7c2e54e7f21d64370
Mark Abraham [Thu, 12 Nov 2015 23:09:10 +0000 (00:09 +0100)]
Move responsibility for FFT description string
Configuring which FFT library will do the job is managed wholly by
CMake variables, so it seems reasonable to pass them through config.h
and use them to set the FFT description string at the only place that
needs it. This means the configuration-printing code doesn't have to
depend on the fft module.
Removed C++ header guard on fft.h while I was there.
Change-Id: Id20add978095d3ef998851bf68509afe2dbd3287
David van der Spoel [Sat, 14 Nov 2015 11:57:54 +0000 (12:57 +0100)]
Merged legacyheaders/types/state.h into mdtypes/state.h
Also merged swap/enum.h into legacyheaders/types/enums.h
to be moved later out of legacyheaders.
Part of #1415, #1854.
Change-Id: Ie53f190d6798b81c531896de80ef25c060836479
Teemu Murtola [Sat, 14 Nov 2015 20:08:53 +0000 (22:08 +0200)]
Fix reporting of unused cycle suppressions
Now also dependencies that do not exist at all are reported as unused
suppressions. There was already one unnecessary suppression.
Change-Id: I75b16743789121c4b7ab6c92850e1a6a39f88059
Mark Abraham [Thu, 12 Nov 2015 12:51:28 +0000 (13:51 +0100)]
Moved all cool stuff to its own file
Stopped reading data files from share/top, because this implementation
does string handling much more transparently. It also removes
dependency on fileio. Users can no longer change the databases
locally, which is less fun, but they can still change the source.
Removed cool quote dependency on gmx_rng. std::random is quite
appropriate in this case.
Stopped pdb2gmx writing a cool quote if a .gro title was missing
Now that gurgle.dat isn't a file, the management of how binaries
find the installed share/top is based on residuetypes.dat.
Change-Id: I625da0c8a4179934ff2f6cb47b5c2cb971d378d9
Mark Abraham [Thu, 12 Nov 2015 07:10:37 +0000 (07:10 +0000)]
Fix walltime measurement with bgclang
BlueGeneQ + xlc was fine
BlueGeneQ + bgclang clock_gettime doesn't work properly, leading to
checkpoints every nstlist steps.
Change-Id: I8c58da39be7dd19a8aea2715b418586c42feba46
Teemu Murtola [Sat, 14 Nov 2015 04:53:09 +0000 (06:53 +0200)]
Move network.h to gmxlib/
- Suppress cyclic dependency caused by too high-level code that is
currently present in checkpoint.cpp.
- Remove unused network.h use from forcetable.cpp to avoid another
cyclic dependency.
- Remove all includes for network.h from other headers, and introduce
them where required.
- Remove broken debug_gmx().
- Some cleanup.
Change-Id: Ib80787c4c2f16b12cc0f152f1017ea44dd69ecf4
Berk Hess [Wed, 21 Oct 2015 10:04:50 +0000 (12:04 +0200)]
Optimized the bonded thread force reduction
The bonded thread force reduction now uses fixed size blocks of 32
atoms. Instead of dividing reduction of the whole range of blocks
uniformly over the threads, now only used blocks are divided
(uniformly) over the threads.
This speeds up the reduction by a factor #threads (!) for typical
protein+water systems when not using domain decomposition.
With domain decomposition the speed up is up to a factor of 3.
Change-Id: I255b4336d315ef62ac9bc446c22313bf47baa097
Teemu Murtola [Fri, 13 Nov 2015 08:01:11 +0000 (10:01 +0200)]
Move gmx_ga2la.h to domdec/
Doxygen documentation for the moved functions is missing, which makes
Jenkins complain.
Change-Id: I2b5748b2b96c599531c04109e4f657d2e4c6281e
Carsten Kutzner [Mon, 22 Dec 2014 17:19:39 +0000 (18:19 +0100)]
Ion/water position swapping for multiple ion types and polyatomic ions
- Support for a user-defined number of ionic species
- Support for (small) polyatomic ions
- New protocol is able to process old CompEL .tpr files
- Cleaned up the code in a few places
- Updated swap-related .mdp options in the online user guide
and in the PDF manual
- Updated complex.swap* regression tests in a separate commit
to go along with this one
- Updated mdrun test fixture using the position swapping functionality
Change-Id: I89c8ad05726755d85e7f92223673624b7f8363be
David van der Spoel [Fri, 13 Nov 2015 09:15:23 +0000 (10:15 +0100)]
Replaced atom_id by int.
Change-Id: Id5d3937e3293bf9e4cb8b4d35b981a289e6001b1
Teemu Murtola [Fri, 13 Nov 2015 09:06:07 +0000 (11:06 +0200)]
Remove t_commrec dependency from cmdlineinit.cpp
This removes remaining legacyheaders dependencies from commandline/.
Change-Id: Iff17ee731823fc4979231944a1f53595e8a9f7fc