Kevin Boyd [Mon, 31 Dec 2018 19:46:55 +0000 (14:46 -0500)]
Clean up PME load balancing struct
Changed a c array to vector and removed associated size tracker
Deleted struct when done
Change-Id: I50db40f43c41e36c62f47acd91ced70911591a7e
Paul Bauer [Wed, 2 Jan 2019 13:13:55 +0000 (14:13 +0100)]
Reuse Sphinx environment again
Enabled the reuse of the sphinx environment again.
Fixed issue with build order for webpage and manual, and fixed minor
link error in user-guide.
Change-Id: I12c7fa1c2e93c3bcb92db85ba526c8cd65dd6339
Kevin Boyd [Mon, 31 Dec 2018 20:07:32 +0000 (15:07 -0500)]
Clean up ekind struct
Changed to unique_ptr in mdrun, rerun, mimic
Changed pointer arrays to vector where possible
Used ArrayRef to refer to vectors in functions
Freed remaining memory leaks in ekind destructor
Change-Id: Ida1ab594334009a9fe22f4bd8d5bc8d9050811e3
Mark Abraham [Mon, 7 Jan 2019 01:19:46 +0000 (02:19 +0100)]
Finish removing group-scheme all-vs-all support
These kernels haven't been callable since before GROMACS 4.6
No release notes entry as no functionality is actually changed with
this commit.
Fixes #1095
Change-Id: I3de3b9bbabaafae70fee4e9845880c973e8dc352
Kevin Boyd [Sun, 23 Dec 2018 01:13:26 +0000 (20:13 -0500)]
Convert t_vcm to C++, plugging a memory leak
Change init function to constructor
Extract COM log file writing from init to a function
Make do_md owner of t_vcm with unique_ptr
Move initialization of t_vcm out of init_md
Change pointer arrays to vectors where possible. Where not
possible, we now free dynamically allocated resources in destructor.
Change-Id: I711a8d81ec0343969dcb437d9a3b8a474d291e87
Berk Hess [Wed, 31 Oct 2018 22:21:56 +0000 (23:21 +0100)]
Split nbnxn pairlist types for CPU and GPU
Split nbnxn_pairlist_t into NbnxnPairlistCpu and NbnxnPairlistGpu.
Now all members are used in each struct in the respective code paths.
Templated make_nbnxn_pairlist_part on pairlist type.
This change is only refactoring, except for changing an assert
to a release assert.
Note that currently the two list types have some members in common,
but most of those will dissappear in followup changes.
Change-Id: Ic53585066874c4a42539a1b1bc68b756dda3f19e
Berk Hess [Mon, 17 Dec 2018 14:32:36 +0000 (15:32 +0100)]
Replace NBNXN_CPU_CLUSTER_I_SIZE by c_nbnxnCpuIClusterSize
Change-Id: Id144a1d6bc28f753a2eca055b4f24a1e4239cd2e
Paul Bauer [Thu, 13 Sep 2018 12:19:40 +0000 (14:19 +0200)]
Change gmx_localtop_t to C++
Changes the localtop topology structure to C++.
Cases where the object could be allocated on the stack have
been changed in that way. In other places, unique_ptr is now
used for the allocation.
Changed callers that returned a pointer to a new gmx_localtop_t
to instead take a pointer to the datastructure that will be
populated.
gmx_localtop_t is by default managing its own memory, but can be changed
to not do this. This is needed for the domain decomposition as it is not
expected to free memory owned by mtop there.
This is part of the larger aim of modernizing the topology
datastructures to C++.
Changed const pointers to const references where encountered during the
change.
Change-Id: I619533f5dc332332f1652afb24266bc2dae67d4c
Szilárd Páll [Wed, 2 Jan 2019 18:34:28 +0000 (19:34 +0100)]
Fix clang 6 warning
Change-Id: If90d02a5eb93abf2b687f5449f4201138da17ab0
Kevin Boyd [Wed, 2 Jan 2019 01:22:59 +0000 (20:22 -0500)]
Free topology in non-DD simulations
Followup to commit
0926c8a6
Without DD, a number of fields in the localtop are dynamically
allocated and not freed, but functionality existed to free them
that hadn't been called.
Change-Id: I82b8d08234722dfd8d8d3f948512458ee105c5ad
Mark Abraham [Wed, 2 Jan 2019 10:56:32 +0000 (11:56 +0100)]
Merge branch release-2019
Change-Id: I71d9bc751e14f821392f802ee9222b864f1e69b6
Paul Bauer [Mon, 31 Dec 2018 11:26:26 +0000 (12:26 +0100)]
Prepare for 2019.1
Change-Id: Ibdf643605a1fb6e7054d39a35f1a90b794bd5c3e
Paul Bauer [Fri, 14 Dec 2018 13:43:01 +0000 (14:43 +0100)]
GROMACS 2019 release
Updated regressiontest hash and added release information in docs.
Change-Id: I69baae6982b58b73161166f9d2c3a397b7efa8b0
Szilárd Páll [Mon, 31 Dec 2018 15:24:46 +0000 (16:24 +0100)]
Fix release notes typo
Change-Id: Ib8c390f643512e30299db2319b12bb0bdb78815d
Szilárd Páll [Fri, 21 Dec 2018 19:17:33 +0000 (20:17 +0100)]
Add CUDA CC 7.5 (Turing) support with nvcc
Left commented out code for clang native CUDA build flag generation as
current clang (7.0) does not support sm_75.
Fixes #2814
Change-Id: Ie59c8c887e9d81d7a65136e0445291fd718c88dc
Kevin Boyd [Tue, 25 Dec 2018 01:46:48 +0000 (20:46 -0500)]
Only report intra-sim communication with multiple ranks
Fixes #2807
Change-Id: I01bec8cf9983dc37cd5ad8f29031073c31b2a384
Paul Bauer [Mon, 31 Dec 2018 09:53:50 +0000 (10:53 +0100)]
Merge branch release-2018 into release-2019
Final merge before release of 2019.
Change-Id: I19963b7248095b2f9b6f6425e756218eb82afb93
David van der Spoel [Sun, 30 Dec 2018 16:25:50 +0000 (17:25 +0100)]
Moved generic simulationdatabase code to testutils.
Change-Id: Ib10473efd727d9eb7e296a7d75cdb2a28ad31cce
Kevin Boyd [Sun, 30 Dec 2018 00:31:52 +0000 (19:31 -0500)]
Free more memory in constraints cleanup
Plug several end-of-MD memory leaks
Change-Id: I54c73723b0b4618eb3747be36ae848fcaa015551
David van der Spoel [Sun, 30 Dec 2018 13:16:35 +0000 (14:16 +0100)]
Moved input files for tests to simulation database.
Removed three duplicate files.
Change-Id: I750ce3875d11b5ecd098c58288df9d33c926432f
David van der Spoel [Sat, 8 Dec 2018 17:35:39 +0000 (18:35 +0100)]
Implemented native normal mode analysis tests.
Moved the normal mode analysis tests from the regression
test set to core gromacs.
In order to do so the tests were converted to use the
Verlet scheme which leads to minor changes in the eigenvalues
produced by the normal modes analysis.
Part of #2771
Change-Id: Ice2e4423d8f48f1656aaa296e9207fda3bc4d233
Kevin Boyd [Tue, 18 Dec 2018 03:18:16 +0000 (22:18 -0500)]
Change t_extmass pointers to std::vector
Using std::vector in t_extmass fixes a leak in do_md.
Used arrayRefs to view arrays in NHC_trotter
Refs #2693
Change-Id: I6bd84952fb7a470879ddd665183680c865e22fc2
Kevin Boyd [Thu, 20 Dec 2018 14:43:30 +0000 (09:43 -0500)]
Convert gmx_stochd_t to C++
Changed raw arrays to std::vector
Moved init functionality into constructor
Made owning gmx_update_t use a unique_ptr
Changed functions using struct to take constant references
Change-Id: I3664d9cc2b7e89eba57ad36a89e9c44b7895a7ef
Szilárd Páll [Thu, 13 Dec 2018 15:22:19 +0000 (16:22 +0100)]
Use std::swap in LINCS
Change-Id: I1604183ec39cd4f4ff6fdc7b6aecd90dd5efb02e
Paul Bauer [Fri, 21 Dec 2018 15:04:34 +0000 (16:04 +0100)]
Document OpenCL timer issue.
Refs #2689
Change-Id: I03964cc239aa423713793f5bd0e38d8afe19b0da
Berk Hess [Thu, 13 Dec 2018 11:17:48 +0000 (12:17 +0100)]
Use AtomPair for LINCS indexing
Cleaned up the LINCS atom indexing by adding an AtomPair struct.
Changes name of atom list from bla to atoms.
Also added more variable scope localization.
Change-Id: If665864dc40d4bb039b4806b4a54fe3aeebd98fc
Artem Zhmurov [Fri, 7 Dec 2018 14:24:30 +0000 (15:24 +0100)]
The tests for LINCS and SHAKE constraints.
The tests for LINCS are first introduced,
SHAKE tests are migrated here from a separate
file.
The tests are performed on simple systems of two
to four bonds as well as on the peptide of three
amino acids. The tests ensure that the final length
of each constrain is equal to the target length.
For the peptide tests with HBonds and AllBonds
constrained, there is an additional check that
the final coordinates of all atoms correspond to the
reference set of values.
Free energy evaluation, virial and velocity constraints
are not yet tested.
Change-Id: Ic3a5c73a7e3223c0b7aafde9a0947e89e611f7b8
Berk Hess [Thu, 13 Dec 2018 10:18:15 +0000 (11:18 +0100)]
Use arrayref in LINCS
All pointers have been replaced by gmx::ArrayRef, except for those
uses in SIMD code. Also made all variables scope local and replaced
const pointers by const references.
Change-Id: Ia09c51a1035991034dbaa2cc99a90d1316f3521e
Kevin Boyd [Tue, 18 Dec 2018 02:37:58 +0000 (21:37 -0500)]
Use std::vector for trotter_seq
Fixes an mdrun leak as well
Change-Id: Ib4c708839cc617353b9b038496f10e1b623e4db7
Kevin Boyd [Fri, 21 Dec 2018 00:10:46 +0000 (19:10 -0500)]
Make all thread-mpi threads release cr structure
done_commrec had only been called on master thread, leading to
potential leaks
Change-Id: I03215880e9ded9c18dc0642357889f9e469f2a4f
Kevin Boyd [Sat, 22 Dec 2018 00:22:50 +0000 (19:22 -0500)]
Remove unused function declarations in update.h
These were flagged by Pascal as unused. According to
git blame, the last time these declarations were touched
was in 2013
Change-Id: Ic52e8460d2e3867e6c2ddd2aded034501470feff
Kevin Boyd [Mon, 17 Dec 2018 21:43:50 +0000 (16:43 -0500)]
Fix small leaks in do_md cleanup
Change-Id: Ia9a8597e07ab0c45320bfc1d036a99d93d6443d9
Christian Blau [Tue, 4 Dec 2018 11:53:58 +0000 (12:53 +0100)]
mdspan - basic_mdspan and mdspan declaration
basic_mdspan provides the core functionality for multidimensional array
indexing by combining multidimensional index evaluation, and memory
access.
mdspan is defined as basic_mdspan with wrapped indices, basic_accessor
policy and right-aligned memory layout.
Change-Id: I3eacb734e35a977387c5f023afe636f78ee64eac
Teemu Murtola [Sun, 23 Dec 2018 19:17:19 +0000 (20:17 +0100)]
Use label to select doxygen version
Change-Id: Ic5276e846867e1dd77250500dcb8693946258e0c
Paul Bauer [Fri, 21 Dec 2018 13:03:03 +0000 (14:03 +0100)]
Fix mdrun -nb GPU on non-gpu builds
Added function to check if build supports GPU for nonbonded.
Fixes #2812
Change-Id: I7f907d402dcd7c9f8964d42412125c23c0615909
David van der Spoel [Sat, 22 Dec 2018 13:28:55 +0000 (14:28 +0100)]
Revert "Removed t_topology from gmx msd"
This reverts commit
b9e0922af7eccbb4b9110dd0ea99cdac0244a27a.
See #2815
Change-Id: Ie0ae90febf1e170b2c1743ef63b36a567fdabff4
Szilárd Páll [Tue, 13 Mar 2018 21:40:40 +0000 (22:40 +0100)]
Runtime check of device OpenCL support
This change adds a runtime check of the OpenCL device version support
against the minimum requirement along some minor refactoring.
Fixes #2450
Change-Id: I0622d8f93b97d877d40fbaa65194f0db8442ffd5
Mark Abraham [Sat, 22 Dec 2018 05:31:23 +0000 (06:31 +0100)]
Fix unused parameter warning
bs_mac sometimes doesn't find gettimeofday, and in any
case we should never have such a warning.
Change-Id: Ib425495ef05f4c40f920fa8285cb43c2e6292e57
Aleksei Iupinov [Tue, 27 Feb 2018 11:20:14 +0000 (12:20 +0100)]
Add a sanity check for OpenCL devices
Introduced some type traits to support RAII types for OpenCL handles,
so that we can safely free resources when responding to OpenCL API
error codes, and do so with usefully descriptive error messages.
The new infrastructure is used to implement a check that an OpenCL GPU
can execute a dummy kernel.
Fixed some broken docs, and updated some function naming for new
style.
Fixes #2420
Change-Id: Id99786d24f77b4b56669b5cfcd3a39aa0116cfca
Jiannan Liu [Wed, 19 Dec 2018 00:08:19 +0000 (19:08 -0500)]
Missing factor of 2 in cos-acceleration
The bug was introduced in commit
69470fc4e9fd990eb53b22c17dc7a699c583d126
Last working version is 2016.5
Affected 2018 and 2019
Fixes #2572
Change-Id: Ibad31b0d8cec7c5f4b77a73b1fbab0ff114b50b6
Berk Hess [Mon, 17 Dec 2018 13:44:06 +0000 (14:44 +0100)]
Improve nbnxn cjFromCi() function
When the nbnxn j-cluster size is smaller than the i-cluster size,
a j-subcluster index is needed. This is now added to the cjFromCi()
function instead of handling it in multiple places in the code.
Change-Id: Ia527938e5b6b7bb73ee42f907ca979bca417e89c
Kevin Boyd [Wed, 19 Dec 2018 01:23:28 +0000 (20:23 -0500)]
Free global_stat at end of do_md
Freeing function existed but hadn't been called. Fixes
small leak
Change-Id: I1ee94ffc345beb0089e6aaa070bdcb0371728311
Kevin Boyd [Thu, 20 Dec 2018 23:38:56 +0000 (18:38 -0500)]
Call wallcycle counter cleanup function
Cleans leak from unfreed wallcycle at end of mdrunner
Change-Id: I18c9a4eb961c1480230dda98c02f75e3796aa3b4
Kevin Boyd [Fri, 21 Dec 2018 00:37:18 +0000 (19:37 -0500)]
Fix leak in legacymdrunoptions
Free gmx_output_env_t in class destructor
Change-Id: I4eb6520ac56a9469c2949893888bcc2db21b647b
Kevin Boyd [Wed, 19 Dec 2018 02:08:00 +0000 (21:08 -0500)]
Fix small leak in forcerec
Change-Id: I09890bffdd88eaa5d691bd3584735787e2c626ad
Szilárd Páll [Mon, 17 Dec 2018 21:30:07 +0000 (22:30 +0100)]
Make jenkins own-fftw verify use local tarball
We should not bombard the FFTW servers with downloads, plus these can be
relatively slow too, so use our local ftp server instead.
Change-Id: Id6ccebf0ac1ae6410cd4f7f13f2ff76d275af5d2
Christian Blau [Thu, 29 Nov 2018 10:07:03 +0000 (11:07 +0100)]
mdspan - basic accessor policy
Executes the canonical memory access, given a linear index, where memory
index positions from an intial pointer is adressed.
Change-Id: Ia44ccf78e8c9d1604220ebb1636099ebae48cc4a
Christian Blau [Tue, 4 Dec 2018 11:10:21 +0000 (12:10 +0100)]
mdspan - mapping for right layout
Introduces a mapping from multdimensional integer space [0...N0) x .. x
[0..Nm) to one-dimensional integers N. In the mdspan context, this will
be used in a later patch to evaluate the memory offset to address
elements in multdimensional arrays.
The layout_right for mdspan, indexes multidimensional arrays with the
fastest changing dimension last, i.e., C-style, row-major for
two-dimensional arrays.
Change-Id: I0f9950bd4a40543c2cad6fe5b2bd668bb42d6784
Szilárd Páll [Tue, 18 Dec 2018 00:43:10 +0000 (01:43 +0100)]
Fix CUDA compiled target-device compatibility check
The check that should catch cases where the binary does not contain
suitable code for the otherwise supported GPU architecture was
erroneously called from the initialization which is too late to
actually trigger it as the error that is meant to prevent will be
already triggered when the sanity checker tries to launch the dummy
kernel.
This change moves the check in question into the sanity checking and
keeps the fatal error as this is a rare condition that's unexpected
and typically a result of a misconfiguration at GROMACS build time.
Fixes #2811
Change-Id: I3762f51077a7c7c80b533860758bbab385b8a1fe
Szilárd Páll [Mon, 17 Dec 2018 23:57:25 +0000 (00:57 +0100)]
Correct CUDA compatibility check
The CUDA compatibility check became ineffective after the deprecation of
Fermi as it could not detect and flag these GPUs correctly as
"incompatible" but instead was throwing a kernel execution error when
trying to launch the sanity checker kernel.
This change does the minimal necessary corrections for the now
deprecated Fermi arch to be correctly detected. As expected, CPU
fallback can now automatically selected (unless the user request a GPU).
Minor refactoring was also necessary, but was kept at minimum.
Fixes #2810
Change-Id: I81bf12cca43a2a5e16d48d9faf4b9fc9627e4452
Szilárd Páll [Thu, 20 Dec 2018 17:02:33 +0000 (18:02 +0100)]
Merge "Merge branch release-2018 into release-2019" into release-2019
David van der Spoel [Wed, 5 Dec 2018 14:55:13 +0000 (15:55 +0100)]
Removed t_topology from gmx msd
Removed t_topology but needed to introduce some new code from
block.h and topologyinformation.h to make it work.
Part of #1862
Change-Id: If7f7e2ac1cbcf1f87cb1032fb7ebf8624063baef
M. Eric Irrgang [Mon, 19 Nov 2018 10:13:31 +0000 (13:13 +0300)]
Restrict number of OpenMP threads during testing.
The default testing configuration causes errors
when run on many-core systems, requiring additional user input to
guide resource allocation. This change borrows the solution used
in the mdrun tests, setting `OPENMP_THREADS 2` in the CMake macro
`gmx_register_gtest_test()`.
Refs #2765
Change-Id: Ia05ca6130b60b4b6ccdb4e13e3afe1e5c7419fd3
Jiannan Liu [Wed, 19 Dec 2018 00:08:19 +0000 (19:08 -0500)]
Missing factor of 2 in cos-acceleration
The bug was introduced in commit
69470fc4e9fd990eb53b22c17dc7a699c583d126
Last working version is 2016.5
Affected 2018 and 2019
Fixes #2572
Change-Id: Ibad31b0d8cec7c5f4b77a73b1fbab0ff114b50b6
Paul Bauer [Wed, 19 Dec 2018 05:27:01 +0000 (06:27 +0100)]
Merge "Merge release-2019 branch into master"
Szilárd Páll [Tue, 18 Dec 2018 16:30:28 +0000 (17:30 +0100)]
Merge release-2019 branch into master
Change-Id: Ie08781a0f40b2c92321e605db91d047a4451d2b2
Berk Hess [Tue, 11 Dec 2018 16:04:19 +0000 (17:04 +0100)]
Use std::vector in LINCS
All manually managed pointers in the LINCS code have been replaced
by std::vector. To limit the size of this change, some plain pointers
have been retained for access.
Change-Id: Ida6365bd9334b1871bc35e3c2b3066c242d2878a
Szilárd Páll [Mon, 9 Apr 2018 17:23:03 +0000 (19:23 +0200)]
Fix GMX_BUILD_OWN_FFTW_URL CMake cache entry type
The type of the GMX_BUILD_OWN_FFTW_URL cache entry was set to "PATH"
and as a result CMake was expecting its content to be a directory.
This commit changes the type to "STRING" and as a result the '////'
workaround in the default fftw URL and custom URLs can now be passed on
the command line which previously did not work as CMake interpreted most
inputs as relative file system paths and converted them to absolute
ones.
Change-Id: I6ed3920d7816b686a031c1a3aee5acd25d7b4692
Paul Bauer [Sat, 15 Dec 2018 17:12:07 +0000 (18:12 +0100)]
Add matrix entry to test external FFTW build
Added build option and configuration to test building GROMACS with
GMX_BUILD_ONW_FFTW to catch associated issues.
Refs #2809
Change-Id: I6c8a9fc415be5386c8b336c3f4dabdac49680130
Paul Bauer [Sat, 15 Dec 2018 16:19:37 +0000 (17:19 +0100)]
Fix FFTW build
Fixed the build with GMX_BUILD_OWN_FFTW terminating with a linker issue.
Fixes #2809
Change-Id: Ie1323601da220bf28d7cb00d33b520b66d9de05f
Kevin Boyd [Sat, 15 Dec 2018 23:43:43 +0000 (18:43 -0500)]
Fix memory leaks in ns cleanup
Added some missing sfrees to cleanup function
refs #2693
Change-Id: I1e1455794778139d3a3866e00c05f4ed97aea07c
Kevin Boyd [Sun, 16 Dec 2018 00:25:19 +0000 (19:25 -0500)]
Fix memory leak at end of do_md
Without domain decomposition, the atomtypes field of localtop is
dynamically allocated and needs freeing after mdrun
Refs #2693
Change-Id: I45d18c503a87832332868e7fb9b63720548f243c
Paul Bauer [Thu, 16 Nov 2017 08:52:18 +0000 (09:52 +0100)]
Copy parallelisation info from old webpage
Copied the information for parallelisation from old webpage
to the user guide. Removed some redundant information.
Refs #2297, #2146, #2656
Change-Id: Id472ab779a6e2ca982b117a95429898a0277dc23
Paul Bauer [Mon, 17 Dec 2018 08:58:48 +0000 (09:58 +0100)]
Merge branch release-2018 into release-2019
Resolved Conflicts:
src/gromacs/ewald/pme-solve.cu
src/gromacs/mdlib/clincs.cpp
src/programs/mdrun/md.cpp
src/programs/mdrun/tests/CMakeLists.txt
Change-Id: I813b4ed7ecf8056db09ab749c367a3b5e204e701
Berk Hess [Thu, 13 Dec 2018 11:06:54 +0000 (12:06 +0100)]
Fix LINCS triangle constraining with OpenMP
LINCS would only apply double the iterations to constraints
in triangles when the last OpenMP task contained at least one such
triangle.
Fixes #2808
Change-Id: Ia9a402f3ada87dbf73f74eda943b3fa4bfb3559b
Paul Bauer [Thu, 6 Dec 2018 12:34:02 +0000 (13:34 +0100)]
GROMACS 2019 Release candidate
Updated regressiontest hash as usual.
Change-Id: Ia938ee4a936d21eac6beb5244a3f2fab87b35240
Berk Hess [Wed, 12 Dec 2018 09:23:46 +0000 (10:23 +0100)]
Fixed nullptr derefence in LINCS error
Somehow a dereferenced nullptr could be passed as a reference
to gmx_multisim_t to the Constraint factory function.
Changed the reference in the Constraint object to a pointer.
Fixed #2803
Change-Id: I4806069973067d27078a1324d18a406c7b3e227d
Magnus Lundborg [Tue, 11 Dec 2018 16:16:09 +0000 (17:16 +0100)]
Set HAVE_LMFIT properly
The HAVE_LMFIT was only set in the local scope.
Fixes #2800
Change-Id: I34bd3dc1896526c09c6808c7020d3a492c4c8f31
Berk Hess [Thu, 13 Dec 2018 10:59:49 +0000 (11:59 +0100)]
Fix LINCS triangle constraining with OpenMP
LINCS would only apply double the iterations to constraints
in triangles when the last OpenMP task contained at least one such
triangle.
Fixes #2808
Change-Id: I37a3d61c868f60387e536d3db3a4079deb6ae504
Szilárd Páll [Thu, 8 Nov 2018 02:14:26 +0000 (03:14 +0100)]
Enable ARMPL in the armclang build
Fixes #2685
Change-Id: I1827c1c55e533bd7ff82b452d77143cb6d04cc01
Roland Schulz [Thu, 13 Dec 2018 18:04:38 +0000 (10:04 -0800)]
Remove unused MdrunComparisonFixture
For 2018 branch it is unused. For 2019 branch it has been
rewritten (
c74114338714). Global variable causes SegFault
with ICC and GCC new C++ ABI (_GLIBCXX_USE_CXX11_ABI).
Fixes #2801
Change-Id: Ia41178aaa6e963b05cd4c1e52b8ca0d5946a569c
Szilárd Páll [Thu, 13 Dec 2018 15:54:15 +0000 (16:54 +0100)]
Avoid spurious timing in bonded GPU launch subcounter
Change-Id: I09d9e6bf1b61b9578b0a39b7e0d21ac63f865057
Szilárd Páll [Mon, 10 Dec 2018 23:50:18 +0000 (00:50 +0100)]
Document the FP exception in cuFFT 7.0
To document known issues relevant for developers, a new section is added
to the dev guide.
As a a first entry, this commit documents the FP exception that aborts
debug builds of mdrun that offload FFTs to an NVIDIA GPU with CUDA 7.0.
Fixes #2726
Change-Id: I60c7b92da2c703e0910644012a01a009b3df0a7a
Berk Hess [Mon, 10 Dec 2018 16:16:52 +0000 (17:16 +0100)]
Temporary fix for OpenCL PME gather
There is a race on the z-component of the PME forces in the OpenCL
force reduction in the gather kernel. This change avoid that race.
But a better solution is a different, more efficient reduction.
Refs #2737
Change-Id: I45068c9187873548dff585044d2c8541444e385c
Szilárd Páll [Mon, 10 Dec 2018 16:19:09 +0000 (17:19 +0100)]
Improve DLB report/note
- Added a newline preceding the DLB report on the stderr (there was
none)
- Added a common means to reduce load imbalance to the suggestions.
- Slight code modernization.
Change-Id: I86906f9d870bfd8ee8bb03ae5bd1fdf83a3349f0
Paul Bauer [Tue, 11 Dec 2018 08:25:42 +0000 (09:25 +0100)]
Properly check for MSVC in build script
Also added another check for mdrun only and static builds
to make sure the api is turned off in those cases as well.
Change-Id: If7f6fedfba8cd1b1f4c951bc246228c60771a11a
Szilárd Páll [Mon, 10 Dec 2018 00:09:13 +0000 (01:09 +0100)]
Tweak the bonded GPU energy copy/wait operations
Move the launch of device to host copy earlier and add wait cycle
counter around the operation that may block and lead to time spent
waiting rather than just a launch.
Change-Id: I241001fc0b60a8ae994f173bc3b38f0c4bbd8fff
Berk Hess [Fri, 7 Dec 2018 20:59:06 +0000 (21:59 +0100)]
Fix update groups with 2D/3D DLB
With a staggered DD grid update groups could end up in the wrong DD
cell. This caused a fatal error (no incorrect results).
his change reverts most of
d29cb9da which was a failed fix for #2712.
Also added a few const qualifiers and renames pos to cog for clarity.
Refs #2712
Fixes #2790
Change-Id: I1a589cccb6ea7048fb66ae867716549a1a615b7f
Berk Hess [Wed, 5 Dec 2018 15:18:35 +0000 (16:18 +0100)]
Make large PME grids work on GPU
With PME grids with z size larger than 511 too large blocks could
be launched causing a cryptic CUDA or OpenCL error.
Fixes #2779
Change-Id: Ib2376ae0e9d5a338084df8f3a2cf46ca1b711a6a
Berk Hess [Mon, 10 Dec 2018 12:26:46 +0000 (13:26 +0100)]
Document mdrun mdp option modification
Add documentation to the mdp section of the user guide for
mdrun modifying rcoulomb and fourier options.
Change-Id: Ifd8b374599713e959c9b3aac583961115cf3b638
Paul Bauer [Thu, 6 Dec 2018 10:09:56 +0000 (11:09 +0100)]
Use more const references in topology code
Change-Id: I8fd2e443c0c5cf1ca19714efd175b8e7132dbe2c
Paul Bauer [Mon, 10 Dec 2018 14:59:11 +0000 (15:59 +0100)]
Disable gmxapi by default
Due to outstanding issues with the integration testing and tests failing
with large number of ranks, the gmxapi default has been changed to not
be build. In Jenkins, all supported builds still are still set to build
with GMXAPI enabled.
Refs #2765, #2722, #2756
Change-Id: I2cc42c461edc206aaa30be6cac3db0a52ccae991
Mark Abraham [Mon, 10 Dec 2018 02:00:47 +0000 (03:00 +0100)]
Make only mdrun report process ID
Recent change
367d003106 changed where mdrun reported the process ID,
but in so doing changed various tools to also report the process ID.
This made pdb2gmx tests non-reproducible.
Since the process ID is probably only of minor value to the user, and
probably only of value to users of mdrun, this change adds support for
allowing tools to choose to print the process ID while defaulting to
not reporting it.
Fixes #2794
Refs #2775
Change-Id: Icb6e97d4d7502f12e74cbaa2c1f1a969ba99b917
Pascal Merz [Sat, 20 Oct 2018 15:27:58 +0000 (17:27 +0200)]
Failproof signal conversion
When introducing the signal handlers, we decided to use scoped enums to
define the different simulation signals (changes Ia90778, I05ca7a,
I5dec05). In the SimulationSignal objects which actually get reduced,
these are stored as signed char. When the signals get handled, these
signed char are converted back to the scoped enums. Currently, this is
done using a static_cast.
Although in the current code, the signals get handled immediately after
being reduced, and signals are only set by master, there is no formal
guarantee that this is always true. If the signals get reduced multiple
times, or by different ranks, the signed char stored in the
SimulationSignal object could get larger than +1 / -1. In the old code,
this would not lead to problems, as it was just checked that the unsigned
char in the SimulationSignal was != 0 (or <0 / >0, for the stop signal).
In the new code, the signal handling would fail in this case, without
proper error message - the static_cast will not fail, but the following
comparison to the enum values will always fail. This commit introduces
a conversion function for each of the enums and explicity enum values
for the StopSignal to return to the failproof behavior of the old code.
Refs #1793
Change-Id: Iac8ea3946effba1797e16d8c918c7d49ce4dc828
Paul Bauer [Mon, 3 Dec 2018 15:32:41 +0000 (16:32 +0100)]
Make release notes html only
Refs #2783
Change-Id: Ifa2e5486e9f3d4be5369bd82f4f858c1ea54e22e
Paul Bauer [Mon, 3 Dec 2018 15:03:10 +0000 (16:03 +0100)]
Change toctree depth in PDF manual
It doesn't seem to be possible to set different toctree depths for the
HTML and PDF versions of the manual in Sphinx itself. To work around
this, I added the explicit depth to the LaTeX preamble.
Refs #2783
Change-Id: I74e00b339a014060567a9fd6aa875e7047165e66
Mark Abraham [Thu, 11 Oct 2018 15:10:29 +0000 (17:10 +0200)]
Fix POWER8 and POWER9 build
Tested with GCC 6.4.0 and 8.1.0 in debug and release modes,
with and without SIMD.
xlc is still not supported, e.g. because 16.1 cannot handle an
in-class member initializer list for a C-style array in the same
struct as a member initialized in a constructor initializer
list. Tested for this in the C++11 feature support tests, and we now
issue a descriptive error in this case.
Removed -mdirect-move from POWER8 flags because gcc warns about its
use.
Fixes #2748
Change-Id: I0dc68c12701f041b702063692703cc2e15e96d8e
boristim [Fri, 24 Aug 2018 16:59:32 +0000 (19:59 +0300)]
Updates to do_dssp
As posted by Boris Timofeev on redmine, do_dssp has been
broken before when encountering unknown residues.
This fixes the behaviour.
Refs #2599
Change-Id: I16f09ed33cf86c699a2667d101740ce0fc2c0919
Szilárd Páll [Mon, 15 Oct 2018 18:35:17 +0000 (20:35 +0200)]
Add Bonded GPU launch overhead cycle subcounter
ALso fixed missing counters around the transfer/clearing launch.
Change-Id: Ib3f18b8285b979b818ab79713253bc7f7bb89e2a
Szilárd Páll [Fri, 30 Nov 2018 17:18:01 +0000 (18:18 +0100)]
Swap the order of GPU bonded and nonbonded launch
In order to maximize the chance of the bonded kernel tails to overlap
as well as to avoid GPU idling during the scheduling gaps between these
kernels, this commit swaps the launch order of bonded and nonbonded work.
Refs #2677
Change-Id: Ia4e5e7279e7ea4cf575c76b5286cf10387258878
Szilárd Páll [Fri, 30 Nov 2018 17:12:50 +0000 (18:12 +0100)]
Fix conditional in nonlocal nbnxn GPU work skipping
The nbnxn nonlocal work, including coordinate buffer copy could be
skipped when the nonlocal pair list is empty. However this condition now
needs to also take into account that the bonded kernels also take the
same coordinates as input.
This change makes the non-local nbnxn copy depend both on whether there
is non-local nonbonded as well as bonded work on the current domain.
Fixes #2786
Change-Id: I217072c962226749b91f514e4a8070f042e35131
Szilárd Páll [Fri, 30 Nov 2018 16:48:27 +0000 (17:48 +0100)]
Split nbnxn input copy and kernel launch
The nonbonded x+q host-to-device copy and kernel launch is split into
two functions and called separately from do_force().
This will allow improving the bonded scheduling and better expressing a
missing bonded dependency (and fixing the related bug).
This change only moves code.
Refs #2677 #2786
Change-Id: Ie50e6a6b664f8400274b2f409eacb6c36f0908ba
Szilárd Páll [Mon, 3 Dec 2018 17:25:12 +0000 (18:25 +0100)]
Correct thread count in the PME GPU reduction
The host-side force reduction has been moved into the PME module, so the
thread count is now changed to be the PME module's thread count.
Change-Id: Ib313c7afe1384b3cec7a999273afba79c3de8c46
David van der Spoel [Fri, 23 Nov 2018 21:05:22 +0000 (22:05 +0100)]
Added new testing code for normal mode analysis.
Part of #2771
Change-Id: Ifb44841b36be5076fe8d77d5982876f881fdc69b
Berk Hess [Mon, 3 Dec 2018 12:59:53 +0000 (13:59 +0100)]
Add update groups to parallelization docs
Refs #2784
Change-Id: I12dfabbab9cff08d9154ac5258aeb790906c72f0
Berk Hess [Wed, 5 Dec 2018 08:54:07 +0000 (09:54 +0100)]
Make large PME grids work on GPU
With PME grids with z size larger than 511 too large blocks could
be launched causing a cryptic CUDA error.
Fixes #2779
Change-Id: I0833609f64ad2e0ad6b7a799cf2b693f2dec3939
David van der Spoel [Fri, 30 Nov 2018 14:10:57 +0000 (15:10 +0100)]
Small update to mdrun tests.
To be able to run tests with different cut-offs new
variable rcoulomb and rvdw are introduced.
To be able to do high precision tests (normal mode
analysis) g96 files can be read now.
Change-Id: I9265022f516b66815aa7bc516b71918fdc6f417a
Christian Blau [Tue, 4 Dec 2018 10:46:31 +0000 (11:46 +0100)]
mdspan - extents of multidimensional arrays.
Extents describe the number of elements along a certain dimension, a
multidimensional index space of rank R. This is equivalent to the
Cartesian product space of integer intervals [0, N_0) x [0, N_1) x ... x
[0,N_{R-1} )
The extents class distinguishes between extents known at compile time
(static) or at run time (dynamic). Static extents are templated to allow
compile time indexing evaluation (part of later patch).
Confer to P0009r8 of the Library Evolution Working Group and
mdspan.extents
Source code copied and modified from Oakridge National Labs repository.
https://github.com/ORNL/cpp-proposals-pub/tree/master/P0009/reference-implementation/include/experimental/bits
Refers #2281
Change-Id: I5301f172fa1d891bcf929a70e3765a2c52b3d8b8
David van der Spoel [Tue, 4 Dec 2018 10:30:54 +0000 (11:30 +0100)]
Removed gmx morph
Part of #1323
Change-Id: Ife56a50e61e4859fa20a39a1be59e828d511fd09
David van der Spoel [Tue, 4 Dec 2018 10:14:36 +0000 (11:14 +0100)]
Removed gmx dyndom
Part of #1323
Change-Id: I07f5cfed364e13fbd6a8b6e0fc94b4b15ef67589