Paul Bauer [Thu, 27 Jun 2019 10:17:46 +0000 (12:17 +0200)]
Use more MDLogger in preprocessing
Refs #2999, #3005
Change-Id: I2ec9f5d9d98d7b1add0cc3e9339e7a93b6e1c9a6
Pascal Merz [Fri, 24 Jan 2020 20:16:35 +0000 (20:16 +0000)]
Minor improvements to vcm.cpp
This cleans up some minor details in vcm.cpp:
* Removed unnecessary include
* Specified OMP data sharing attributes explicitly
* Replaced entire functions being enclosed in if clauses by
returning immediately if the condition is not fulfilled to
improve readability. Blocks were kept to avoid touching lines
unnecessarily.
Change-Id: I29ac6e11a16d7b081c9b00bd85559d5381ae9119
Pascal Merz [Tue, 21 Jan 2020 15:01:53 +0000 (16:01 +0100)]
Merge VV implementations of ComputeGlobalsElement
Until now, ComputeGlobalsElement had effectively two separate
(templated) implementations for velocity verlet, to be called
at full timestep and after the position update.
As we gradually move towards a design in which the
ComputeGlobalsElement is agnostic to the data it reduces, this
separation does not make sense anymore. As a first step, the
two implementations are therefore merged.
Change-Id: If0b549a3d87fea50e895b70c55632e1f58582067
Artem Zhmurov [Thu, 19 Dec 2019 15:50:05 +0000 (16:50 +0100)]
Enable GPU update for supported cases of FEP
Only mass and constraints perturbation is not supported by the
GPU constraints, hence FEP can be enabled for the rest of the cases.
Change-Id: I0ec487823ec4aeda5b09ba66a504c5358e778c8e
Artem Zhmurov [Sat, 1 Feb 2020 16:55:25 +0000 (17:55 +0100)]
Couple cool quotes
Change-Id: I222b494d3205ba82101b9e19eafa6380a5f60a11
Artem Zhmurov [Sat, 1 Feb 2020 01:16:58 +0000 (02:16 +0100)]
Merge "Merge branch origin/release-2020 into master"
Paul Bauer [Wed, 26 Jun 2019 15:17:01 +0000 (17:17 +0200)]
Use MDLogger in grompp
Start using MDLogger in main grompp routine.
Refs #2999, #3005
Change-Id: Ic88e9a2ec271a4bf9502da5a268f532d422a1f1b
Szilárd Páll [Thu, 23 Jan 2020 17:04:24 +0000 (18:04 +0100)]
Eliminate the legacyFlags manipulation in do_force()
The override is redundant as it is implemented in the stepWorkload
initialization.
Change-Id: Idde50848c867cb558d4308522bc3e341d9054e82
Pascal Merz [Tue, 28 Jan 2020 21:00:43 +0000 (14:00 -0700)]
Modular simulator: Allow for nullptr in element list helper
This moves the responsibility for avoiding nullptr in the element
call and ownership lists from the algorithm building to the storage
helper convenience functions. This will simplify the builders by
reducing the number of conditions that need to be checked.
Change-Id: Ic8428837291f4208c9380bc15092fd6b5a5fda6d
Paul Bauer [Thu, 21 Feb 2019 09:50:32 +0000 (10:50 +0100)]
Start using MDLogger in gmxpreprocess
Changed logging of one set of routines to use the logger interface
instead of calling fprintf to stderr.
Refs #2005, #2999
Change-Id: Ibbecab0af6a0fa1c62c754f8826b8ff84fa4886e
Christian Blau [Thu, 30 Jan 2020 09:39:44 +0000 (10:39 +0100)]
Documentation fix for local atom set data
Documentation for the collective index was wrong and is fixed now.
Change-Id: I3d780fe25eab3356892f1ceab4c110c6f40ca7c9
Pascal Merz [Thu, 30 Jan 2020 22:49:10 +0000 (15:49 -0700)]
StatePropagatorData: Make const box getters const functions
This allows to have a const pointer to StatePropagatorData if only
const views are needed, and should have been that way from the
start.
Change-Id: I240a711c3193f9e94844a99fa500a0cd63e6bd8d
Szilárd Páll [Thu, 23 Jan 2020 17:30:00 +0000 (18:30 +0100)]
Remove BufferOpsUseGpu enum
Its limited role has been fully replaced by the equivalent workload
flags and the verbosity its used requires is not warranted for the
current use-cases.
Change-Id: I67ad1e9eca16e095ea9da8173e07d8f7683a862c
Pascal Merz [Wed, 22 Jan 2020 16:14:25 +0000 (17:14 +0100)]
Make t_inputrec const in ComputeGlobalsElement
Change-Id: Iff3d217fb735185e5a4e7e62239daccc62207144
Artem Zhmurov [Thu, 30 Jan 2020 12:56:17 +0000 (13:56 +0100)]
Cleaning booleans in NBNXM in OpenCL build
Patch
93f2f30017595e419d25c5dd6fa6a8b320a1858f changed some of the
booleans types from cl_bool to bool, but not changed how these
variables were used in some places. This caused the compiler to be
confused with the data types, trying to convert bool to int or
to cl_bool.
Change-Id: Ib8017bbdac804f3946e65698df5882c669250044
Artem Zhmurov [Thu, 12 Dec 2019 14:29:44 +0000 (15:29 +0100)]
Reorganize GPU stuff initialization in PME-only ranks
The state propagator data GPU, PME coordinate receiver and PME
force sender initialization in PME-only rank was not unified,
which lead to extra conditionals and extra calls to getter
functions. This patch unifies the GPU initialization of PME
only rank, thus simplifying the logic around it.
Change-Id: I8e6e39f0948fb1293c72d6b7ae958ab061f732df
Magnus Lundborg [Thu, 7 Nov 2019 15:47:06 +0000 (16:47 +0100)]
More SIMD preparations in the FE calculations
Prepare the launch of the FE kernel using SIMD. So far the kernel
is not modified to actually use SIMD.
Change-Id: Iaad24fc37549b5deaa892655be1d2a7317f65955
Paul Bauer [Thu, 21 Mar 2019 13:27:39 +0000 (14:27 +0100)]
Add replacement for symbol table
Refs #2833, #2916
Change-Id: Ibd771444933ef4b01f5a3eca9db3efbbbff2926f
Szilárd Páll [Wed, 15 Jan 2020 14:04:51 +0000 (15:04 +0100)]
Small improvement in OpenCL error handling
- replace plain asserts with GMX_ASSERT
- improve error message prints by decorating with OpenCL error strings
Refs #3300
Change-Id: Ibac66ee0de35c572c0051d8c394a488051b23a7e
Artem Zhmurov [Tue, 28 Jan 2020 17:50:15 +0000 (18:50 +0100)]
Split and move the checkDeviceBuffer(...) function from PME
Resolving a TODO.
Also fixed the formatting in neighboring comment.
Refs. #3311.
Change-Id: I1687981cc80e2388714cbbb3113f37e34582e31c
Artem Zhmurov [Tue, 28 Jan 2020 16:56:44 +0000 (17:56 +0100)]
Remove the rest of the device coordinates management from PME
Although it may be convinient to keep an local copy of the
address device coordinates buffer, the management of this buffer
is not the responsibility of the PME module. This patch remove
some of the remains of this management.
Change-Id: I160adfb0319c0bf6e532061aca05ef9cc9aa8a4f
Artem Zhmurov [Wed, 22 Jan 2020 16:50:59 +0000 (17:50 +0100)]
Rename UpdateConstraintsCuda to UpdateConstraintsGpu
This is to folow general naming conventions across the code.
Refs #3114.
Change-Id: Iec3678e1d4152d6442818fcd81020e021927757c
Paul Bauer [Tue, 28 Jan 2020 10:11:22 +0000 (11:11 +0100)]
Merge branch origin/release-2020 into master
Resolved Conflicts:
admin/copyright.py
cmake/gmxCPackUtilities.cmake
cmake/gmxManageFFTLibraries.cmake
cmake/gmxManageMPI.cmake
cmake/gmxTestMPI_IN_PLACE.cmake
docs/dev-manual/jenkins.rst
src/gromacs/domdec/domdec.cpp
src/gromacs/ewald/pme_load_balancing.cpp
src/gromacs/gmxlib/network.cpp
src/gromacs/gmxlib/network.h
src/gromacs/gmxpreprocess/readir.cpp
src/gromacs/pulling/pullutil.cpp
src/gromacs/taskassignment/decidegpuusage.cpp
src/gromacs/topology/mtop_util.cpp
src/gromacs/topology/mtop_util.h
Change-Id: Ie41c4a18cc79368eba613a093cda9c8782eead2c
Mark Abraham [Fri, 17 Jan 2020 14:43:38 +0000 (15:43 +0100)]
Update some nbnxm kernel constants to constexpr
Then OpenCL kernels now use preprocessor constants of the same names
and values, which are set up on the JIT compilation line. This
eliminates a header file used for compatibility.
Added support also for the ocl_nbnxm_kernels testing target.
Change-Id: Ibf8f7864dd08b14aeecad095cdbe25b1fbacc765
Mark Abraham [Mon, 27 Jan 2020 06:54:05 +0000 (07:54 +0100)]
Remove element-size member fields
These are compile-time constants, and there is no need to store them
in variables.
Change-Id: Ib94fbc479b031c4d4034355123a8ff0cf333c74f
Mark Abraham [Sun, 26 Jan 2020 15:33:45 +0000 (16:33 +0100)]
Make NbnxnGpu class with constructor
This is needed for future reform of the NB GPU code. Also converted
the "staging" struct to have initializers (used to make the default
constructor) because it is held by value and would otherwise have
default constructor that leaves fields uninitialized.
Also replaced cl_bool with normal bool, as there was no advantage for
the former.
Change-Id: I1b63f0a8145dbd911062d1039f129074b0abdc3e
Paul Bauer [Fri, 24 Jan 2020 12:36:22 +0000 (13:36 +0100)]
Add cool quotes
Change-Id: I6debedecbefcf4828fc070874460394188a3012a
Szilárd Páll [Thu, 22 Aug 2019 00:11:41 +0000 (02:11 +0200)]
Add target for offline PME OpenCL compilation
Also fix clang-tidy warnings in the PME OpenCL kernels; tested with
clang-tidy 8.0 and 9.0.
Target will be triggered in all clang-tidy + OpenCL builds.
Moved the invocation of the targets in jenkins before the
tests where it makes more sense.
Change-Id: I31d7dd4883e20d0564ab2f18a6de7e0d17e8024a
Magnus Lundborg [Thu, 7 Nov 2019 13:47:38 +0000 (14:47 +0100)]
Removed SC RPower 48 from FEP kernel
With RPower 48 deprecated the FEP kernel has been simplified
quite a lot.
Fixes #3253.
Change-Id: Ic18d9f938679b2a7499fbcc31bfc9d28e89fdb98
Szilárd Páll [Wed, 22 Jan 2020 16:07:01 +0000 (17:07 +0100)]
Fix deadlock in PP-PME balancing startup delay
The condition whether load balancing should start included a per-rank
computed fixed time-delay. Therefore different ranks could evaluate this
condition differently resulting in a deadlock.
This change fixes the deadlock by broadcasting the result of the time
delay check.
Fixes #3335
Change-Id: I39ebc7e99483a6837bdbd79e312148384c1966b3
Paul Bauer [Tue, 14 Jan 2020 07:01:30 +0000 (08:01 +0100)]
Use utf-8 for python file reading
Avoids crashing on non-ascii characters
Also needed in release-2020 due to https://gitlab.com/gromacs/gromacs/pipelines/
111716110
Change-Id: Ie489110bbe37619d36f8feb739e04ef60cccff16
Magnus Lundborg [Thu, 23 Jan 2020 15:47:28 +0000 (16:47 +0100)]
Minor cosmetic improvements in AWH
Remove duplicated inputrec outputs.
Clarify that user input data should be in kT.
Change-Id: I51b733f0a1969b8e5232766beb10a6f1a7c6a57a
Berk Hess [Wed, 22 Jan 2020 21:26:51 +0000 (22:26 +0100)]
Fix DD rank count prime check
The domain decomposition would refuse to run with large prime factors
in the MPI rank count even when the grid was specified by the user.
Fixes #3336
Change-Id: I92f20ce18f314db68890650e76741b0ee70c05df
Artem Zhmurov [Thu, 23 Jan 2020 09:58:53 +0000 (10:58 +0100)]
Fix a couple of commas in cool quotes
A couple of commas between the quotes and their authors went missing.
Due to a random nature of cool quotes, I am not sure if this have
any consequences.
Change-Id: Ifb79557efc3fd3d8d75dd0a6566cccc7e5a43ea4
Gaurav Garg [Fri, 10 Jan 2020 17:29:17 +0000 (22:59 +0530)]
Fix PME checks in GPU update assignment decision
The decideWhetherToUseGpuForUpdate() function performed a check on
whether PME is on GPU, but neglected to check if PME is actually
active. Therefore, cases without PME (e.g. reaction field) were
unintentionally being prevented from running update on GPU. This change
adds a check whether pmeRunMode != PmeRunMode::None
Change-Id: Ic49f99b2e2afddabd7e2c8e68ab3d6d9325dc07a
Berk Hess [Wed, 22 Jan 2020 20:56:23 +0000 (21:56 +0100)]
Minor cleanup in constraint and shellfc code
Replaced include by forward declarations and simplified empty
ArrayRefs as function arguments.
Change-Id: I759f3f72bc0b4453caf059ae4723ef734a7c2ead
Berk Hess [Wed, 22 Jan 2020 10:53:24 +0000 (11:53 +0100)]
Fix illegal memory access in PME communication
Depending on the compiler, mdrun could exit with an illegal
memory access error when a PME rank communicates 0 atoms with
another PME rank.
Change-Id: Ic1a08903f53c3d0b655ed5475ad99024979b461e
Berk Hess [Tue, 21 Jan 2020 21:05:31 +0000 (22:05 +0100)]
Clarify COMM/posres grompp note
In the common case of equilibrating a macro-molecule using position
restraints, grompp will issue a note about COMM removal when using
default mdp settings. Added a sentence that says that it is likely
not an issue in this common case.
Change-Id: Ide8b75664c4da3789c6661d8d69f855f9abea4e0
Paul Bauer [Mon, 20 Jan 2020 14:48:19 +0000 (15:48 +0100)]
Fix documentation error with doxygen >1.8.16
Fixes #3280
Change-Id: Ia41e080ea5ee4bc393d1e0240fc56958d81f6c68
Artem Zhmurov [Thu, 9 Jan 2020 16:51:19 +0000 (17:51 +0100)]
Rename SettleCuda to SettleGpu
This is to folow general naming conventions across the code.
Refs #2886, #2888.
Change-Id: I273cf8c1cabcf59d1cb7fd7f0028c3c1cd8619c8
Berk Hess [Fri, 17 Jan 2020 09:59:18 +0000 (10:59 +0100)]
Use ArrayRef(WithPadding) in constraint code
This change is only refactoring, except for adding padding to two
buffers used for flexible constraints. This avoid potential illegal
memory access one element beyond the buffer with certain SIMD
implementations. Note the this memory was not used nor modified.
Change-Id: I385b3007a27888d15741e737ccfcf3e3a4369d1e
Artem Zhmurov [Thu, 9 Jan 2020 16:42:47 +0000 (17:42 +0100)]
Rename LincsCuda into LincsGpu
This is to folow general naming conventions across the code.
Refs #2885, #2888.
Change-Id: Ifa7e3febeff1d958155ed02daa97d26e828e8381
Artem Zhmurov [Thu, 9 Jan 2020 16:26:49 +0000 (17:26 +0100)]
Rename LeapFrogCuda to LeapFrogGpu
This is to folow general naming conventions across the code.
Refs #2887, #2888.
Change-Id: Ia090c0479f1960fe34d1144e3bd173015d157e62
Berk Hess [Wed, 15 Jan 2020 16:35:15 +0000 (17:35 +0100)]
Use std::vector in shellfc
Replaced all C memory management in shellfc by std::vector and
one now. Also used more ArrayRef.
All allocated memory is now freed by done_shellfc().
Change-Id: Ic533d7b20ba7486f76148476b35986a3caec4b36
Szilárd Páll [Tue, 17 Dec 2019 02:06:55 +0000 (03:06 +0100)]
Template X buffer ops on setFillerCoords
Also fix a typo and remove an outdated TODO.
Change-Id: I4d35a889fa71b0096e825b95a02860ab6420c4ad
Paul Bauer [Fri, 17 Jan 2020 11:54:26 +0000 (12:54 +0100)]
Actually fix Gitlab doc build
Was still failing after
658765317fd94df5d534c039462be03ab3839067 got
merged.
Actually fixes #3278
Change-Id: I747fe5c677864d1f50ab97d0eda38c68a6085b45
Mark Abraham [Wed, 15 Jan 2020 17:30:23 +0000 (18:30 +0100)]
Regularize nbnxm module doxygen
This module will be easier to work with if all the files are
documented and all the comments precede the things that they comment.
Had to add several \internal flags to various files to ensure
things that should be internal are that way.
Change-Id: Ia08a936c23276cbea97c2e8ff47db403d3fd9185
Paul Bauer [Thu, 16 Jan 2020 17:50:25 +0000 (18:50 +0100)]
Fix bad link in developer docs
Also made sure that error gets caught by the Gitlab CI runner.
Fixes #3278
Change-Id: I36b73a4322c69242eef3dcefa6684ef973b1bd01
Berk Hess [Thu, 16 Jan 2020 14:13:41 +0000 (15:13 +0100)]
Add check for shells and GPU update
Fixes #3303
Change-Id: I84a9d005fdff142e332e449bd7b2cce314617adb
Berk Hess [Thu, 16 Jan 2020 14:23:35 +0000 (15:23 +0100)]
Correct fixed redmine issue id from 3297 to 3296
Recent commit
36a65816 said it fixed issue 3297, but this should
have been issue 3296.
Refs #3296
Change-Id: I85a95e818d3cda816211dc2aa8ddb32e9e0c69d4
Mark Abraham [Tue, 14 Jan 2020 15:53:26 +0000 (16:53 +0100)]
Make nbnxm headers more self-contained
Resolves existing TODO, removing a dependency of the CPU kernels
on config.h
Eliminates an unnecessary function, and the inlining of a function
that is only called every NS step.
Renamed gmx_nbnxn_*_t to gmx_nbnxm_gpu_t because there was no
advantage to the previous scheme. Each GPU build configuration only
ever uses one type, so there is no problem having different
declarations in different build configurations. The compiler would
complain if there was. The renaming of the former collection of types
in gpu_types.h created a dependency on config.h which should be
avoided.
Something about the renaming of gmx_nbnxm_cuda_t broke the way Doxygen
understood nbnxm_cuda_types.h. I thought that declaring a Doxygen
header for atomdata.h had fixed it, somehow, but it didn't, so there
is a suppression for the suspected false positive. Also fixed the
Doxygen in atomdata.h
Change-Id: I18c573ad87cbab9ae4f38aa49541f0821dc1c145
Szilárd Páll [Fri, 10 Jan 2020 15:37:32 +0000 (16:37 +0100)]
Fix PME run mode without PME
pmeRunMode was incorrectly set to CPU when the PME task is not
assigned to a GPU in a non-PME run.
This change make sure that non-PME runs pmeRunMode is correctly set to
None. It also moves this setup code to a function in the taskassignment
module.
Change-Id: I2c2c609e56d3cb6eef5cfccf2f0489545cedf6ef
Paul Bauer [Thu, 16 Jan 2020 08:17:14 +0000 (09:17 +0100)]
Fix nightly build failure on Gitlab
Found an unused variable warning when building without thread or real
MPI.
Change-Id: I6badc5c32e9eeb07cfafacd3ff9219dd612be847
Paul Bauer [Sat, 11 Jan 2020 16:57:18 +0000 (17:57 +0100)]
Update nonstd::optional
Updated to commit
096ce6d7e45ef184de2c8ddcae45da4a9d539da5 to avoid a
bug (see https://github.com/martinmoene/optional-lite/issues/51)
Change-Id: I0df46b21fabcb7841600e5a6b32b2329742d12d5
Paul Bauer [Fri, 10 May 2019 12:03:42 +0000 (14:03 +0200)]
Allow access to optional outside libgromacs
When using gmx::compat::option in files also included
outside of the libgromacs tree (e.g. anything topology related),
compilation would abort because the include path could not be resolved
for nonstd::optional.hpp in e.g. legacymodules.cpp or view.cpp.
Adds the information needed to the CMakefiles to always find the correct
include path.
Also modifies CUDA nvcc compilation to have the header available for
those CUDA compiled files that need it.
Should be revisited when resolving #3290
Change-Id: If335ecdfa1bd2ba56cae7ee26c07d9a7faa5a651
Christoph Junghans [Tue, 14 Jan 2020 00:06:03 +0000 (17:06 -0700)]
cmake: install pbc.h for GMX_INSTALL_LEGACY_API
This was introduced in
97c751f1945702316b6342f4054da20dd5239872.
Change-Id: I1ecb0c10d0df9285bed7bef112d4cd439b262ce6
Berk Hess [Tue, 14 Jan 2020 13:51:38 +0000 (14:51 +0100)]
Fix multisim with parallel simulation
mdrun -multisim with more than one rank per simulation would stop
with a fatal error due to using a partially initialized
gmx_multisim_t in GpuTaskAssignmentsBuilder::build().
Fixes #3297
Change-Id: Idfe24110908dc8cad29cd9a0eac7233fca4102f9
Paul Bauer [Tue, 14 Jan 2020 07:01:30 +0000 (08:01 +0100)]
Use utf-8 for python file reading
Avoids crashing on non-ascii characters
Change-Id: Ie489110bbe37619d36f8feb739e04ef60cccff16
Berk Hess [Wed, 11 Dec 2019 13:24:00 +0000 (14:24 +0100)]
Avoid unnecessary exclusion generation in DD
With only self exclusions, the DD partitioning would generate a list
of all empty exclusion lists for all i-atoms. Now no lists are
generated. An assertion is added in the pairlist generation code
to ensure we either have 0 or the right number of exclusions lists.
Change-Id: I4b0556cbf3ed3a6fea7bdd0e03e194410bcfb88a
Artem Zhmurov [Fri, 10 Jan 2020 16:37:34 +0000 (17:37 +0100)]
Report if update is running on the GPU or on the CPU
This adds a line which states where update is offloaded next
to the rest of the GPU usage information.
Fixes #3292.
Change-Id: Ie6b076c4309c7695ab9b46037ced92e95dea1558
Paul Bauer [Fri, 10 Jan 2020 16:52:53 +0000 (17:52 +0100)]
Revert "Exclude build-system files from CPack"
This reverts commit
617d7fb728eee44331d8f8f98fa644bc5921fcb3.
Caused #3291
This commit fixes #3291
Change-Id: Ib75dd9274c1822192d5ffd0ce458ab35a3406f11
Christoph Junghans [Fri, 10 Jan 2020 00:37:09 +0000 (17:37 -0700)]
gmxManageMPI.cmake: convert MPI FLAGS to lists
Convert MPI FLAGS to lists as otherwise space will get quoted in
CFLAGS in gmxCFlags.cmake.
Change-Id: Ieee4b68d254261f079d954443322faf040e8b6e9
Szilárd Páll [Fri, 10 Jan 2020 13:22:07 +0000 (14:22 +0100)]
Improve mdrun performance user guide
- Extended GPU update related section;
- Tweaked the bonded GPU offload related section to reflect the current
state of the code.
Change-Id: I89ed39750d449df8b273f36ee6530df29ff31b7e
Paul Bauer [Thu, 9 Jan 2020 16:41:48 +0000 (17:41 +0100)]
Fix compiler warnings on windows
Came up during other builds, but didn't make any sense.
Change-Id: Ie57f4ce30d35dbb1db927b91902045fbbcffe8f0
Artem Zhmurov [Tue, 19 Nov 2019 15:48:35 +0000 (16:48 +0100)]
Change signature of the setPbc(...) method in update-constraints
The PBC description is stored in update-constrain module in the
PBCAiuc format, which only requires type of the PBC and the box
matrix for setup. Hence, constructing the t_pbc structure is
additional unnessesary step in the PBC reinitialization.
Change-Id: I9dff337fa18f22d9164168de37ba8fb8630ba713
Artem Zhmurov [Wed, 20 Nov 2019 15:18:56 +0000 (16:18 +0100)]
Make PBC type enumeration into PbcType enum class
The type of periodic boundary conditions is defined by untyped
enumeration and passed around as an integer, which is not type
safe. This change makes the enum class that defines the type of
the PBC and can be safely passed as a function argument.
Change-Id: Ia1f709a90472a95ad76af92c41df570ba7c28255
M. Eric Irrgang [Fri, 13 Dec 2019 17:24:58 +0000 (20:24 +0300)]
Use enum for gmxapi.testsupport fixture options.
Change-Id: If369d2a10c30d1e39ffe1a8f1b69303b8a071b5b
Mark Abraham [Sun, 5 Jan 2020 21:16:52 +0000 (22:16 +0100)]
Clean up ewald module internals
This prepares for future refactoring by starting to break up the
cross dependence on many internal headers.
Note that useDecomposition was set (and then used) with the opposite
logic, which was a benign problem that is now fixed.
Change-Id: Ibb7f0ceb82d644374bfd396b38b9611cb8d7fd62
M. Eric Irrgang [Fri, 6 Dec 2019 11:16:41 +0000 (14:16 +0300)]
Further consolidate gmxapi.testsupport.
Migrate most of the remaining pytest fixtures from conftest.py
files to the gmxapi.testsupport pytest plugin.
Change-Id: If5fae2bafcbe96fefe6b3cd2e86ef3af2ec61786
M. Eric Irrgang [Thu, 12 Dec 2019 13:16:36 +0000 (16:16 +0300)]
Update gmxapi Python package version and versioning support module.
Module modernization moves in the direction of consolidated and
normalized metadata handling by reducing the exposure of non-standard
attributes. Future changes can further unify version metadata by
migrating to PEP 517/518 package configuration.
Change-Id: I288e846cc0e77d9053c79a06256afed9bb579d7f
Alan Gray [Wed, 8 Jan 2020 16:37:17 +0000 (08:37 -0800)]
Fix memory address bug in GPU PME coordinate address send fn
Fixes bug introduced in
8f80571986c5ba98e4070ab390d372e81078cc3a,
which changed a pointer from rvec to float type, but didn't change the
corresponding array index used to get the pointer to send: an extra
multiplication by DIM is required.
Change-Id: Ia16e9988cb154895807a3c9f9588b1ffe59b3dcc
Mark Abraham [Thu, 9 Jan 2020 08:17:07 +0000 (09:17 +0100)]
Split lines with many copyright years
The new split_copyright_years.sh script can be run every few years to
keep the line length short enough for readability, and to avoid
clang-format wanting to change the lines such that the copyright
checker no longer recognizes a valid copyright statement.
Numerous files have now been bumped for 2020 because the copyright
line has been changed. That's technically valid.
In recent merge commits, several files were changed to use year ranges
like 2012-2020. Those have been reverted to the old style, which is
thought to be more valid.
Fixes #3282
Change-Id: I9c4e4677bf22a8d48ab1b3245de257c4bbaccf9f
Roland Schulz [Tue, 7 Jan 2020 21:43:32 +0000 (13:43 -0800)]
Merge release-2019 into release-2020
Change-Id: I34a795ad1fdc805d056401932f8c543ed77cfae7
Roland Schulz [Tue, 7 Jan 2020 01:51:48 +0000 (17:51 -0800)]
Workaround for ICC 19u5 and 20initial
Change-Id: I34f4215f2112579b1a92c87aca28b270b4aca09e
Roland Schulz [Tue, 7 Jan 2020 04:55:49 +0000 (20:55 -0800)]
Add support for ICC NextGen with MKL
Change-Id: I2ac3d994736f2261955db65c7c039b7c33cdbaa7
M. Eric Irrgang [Mon, 6 Jan 2020 10:47:11 +0000 (13:47 +0300)]
Remove stray "to do".
The context of the comment has changed over several commits. If it is
still relevant, its meaning is unclear. If there is a question that still
needs to be resolved, it can be re-posed in the issue tracking system
when someone has a chance to clarify and frame the discussion.
Change-Id: Ifb65ae4942a1225aa23189c95aaa4c73c3b7c88c
Paul Bauer [Tue, 7 Jan 2020 13:09:57 +0000 (14:09 +0100)]
Merge branch origin/release-2020 into master
Final merge needed for release-2020 into master
Change-Id: I93a44684f002997dfa8590c865103b436f3e3e93
Erik Lindahl [Sun, 29 Dec 2019 13:43:35 +0000 (14:43 +0100)]
Write TPR body as opaque XDR data in big-endian format
This implements support for opaque data in our serializers,
as well as a few missing XDR support opaque routines,
including support for data objects larger than 2GB.
By using this for the new serialization of the TPR body
we avoid the unintended 4x growth of the file size, and
avoid introducing extra endian swapping or padding.
We also adjust the endian so the InMemorySerializer
swaps to big endian (i.e., swap if host is little endian)
such that the body of the TPR file is compatible with
the header that is already written as big-endian by
the XDR routines.
Fixes #3276.
Change-Id: I99011dffe190155e671bd656127c2a33459923e2
Paul Bauer [Tue, 7 Jan 2020 10:01:22 +0000 (11:01 +0100)]
Merge commit
d30f2cb6 from release-2020 into master
Merging the release-2020 branch in stages to allow update to TPR format
to be cherry-picked in.
Change-Id: I36c0861d0cb6f17a3f4ff739fa868867844f2944
M. Eric Irrgang [Fri, 8 Nov 2019 20:07:49 +0000 (23:07 +0300)]
Remove transitional links for online gmxapi Python package reference.
Provide link to current GROMACS gmxapi documentation,
built by GitLab Runner.
Fixes #2985
Change-Id: I1e56828aba4cc2568bbc9e6617863ca10197058d
M. Eric Irrgang [Thu, 4 Apr 2019 14:38:38 +0000 (17:38 +0300)]
Add Flake8 linting to gmxapi tests.
Add the flake8 package to requirements-test.txt and a run_flake8
docker entry point. This change does not require Python source
checking, but facilitates it.
Refs #1786
Change-Id: I6a6c2d6012e4424d13d8ceed0ea3696077042f6f
M. Eric Irrgang [Thu, 26 Dec 2019 15:45:59 +0000 (18:45 +0300)]
Use `todo` Sphinx directive more.
Start making "to do"s more actionable. Use the Sphinx `todo` directive
to allow special processing. For comment blocks that imply planned
activity, convert comment to `todo` directive for more easily discovered
and tracked doctree elements.
"To do" items should have a clear call to action and some follow through,
such as being prohibited in release branches or at least referring to
tracked issues, but that is beyond the scope of this change.
This change only seeks to make the mass of "to do"s more discoverable.
Change-Id: I8cbc06a5a1d78791bc6e9b0a2530632ad09a9380
Paul Bauer [Fri, 27 Dec 2019 13:48:34 +0000 (14:48 +0100)]
Prepare for 2020.1
Reset DOI strings
Change-Id: I5898dfdacde0c851c1a870a983094a2e56c3ab2b
Paul Bauer [Fri, 27 Dec 2019 13:01:33 +0000 (14:01 +0100)]
GROMACS 2020 release
Updated regressiontest hash
Set doi strings
Set correct release date
Change-Id: I5d34e1176e5a0ecc6b38a15d830d228127a69d9d
Paul Bauer [Wed, 1 Jan 2020 15:39:30 +0000 (16:39 +0100)]
Revert "GROMACS 2020 release"
This reverts commit
78c3280ad9c1802db4f6a7e02978207921add05f.
Reason for revert: wrong release date
Change-Id: Ia0d4112349ea4bdca9edda2a30e8933cacc2ad19
Paul Bauer [Fri, 27 Dec 2019 13:01:33 +0000 (14:01 +0100)]
GROMACS 2020 release
Updated regressiontest hash
Set doi strings
Change-Id: Id053624d5e276aea62a5d07ebf995cf01b54f1ab
Erik Lindahl [Tue, 31 Dec 2019 11:00:43 +0000 (12:00 +0100)]
Add link to paper explaining GROMOS twin-range issues.
Change-Id: I81e89817ce9441bb3d25bc43b00b4cc995590c3a
Mark Abraham [Tue, 31 Dec 2019 13:56:42 +0000 (13:56 +0000)]
Avoid 386 O3 codegen bug even more
Refs #3205
Change-Id: I78f3cc03da36e129a842507f9cdd3d170beb8c08
Artem Zhmurov [Mon, 30 Dec 2019 14:34:18 +0000 (15:34 +0100)]
Inform user why forcing GPU update is not possible
Currently, if the GMX_FORCE_UPDATE_DEFAULT_GPU is set in not supported
case, the update silently switches to the CPU code path. This adds the
message that informs user that this has happened and why.
Change-Id: I7317d83271158c9973f4c102d8ca830b437626b5
Artem Zhmurov [Mon, 30 Dec 2019 22:20:46 +0000 (23:20 +0100)]
Add description of GMX_FORCE_UPDATE_DEFAULT_GPU dev flag to the UG
Refs. #3021
Change-Id: Idff63154c5ebb0b5bd209ce6025934db3aedf8fd
Artem Zhmurov [Mon, 30 Dec 2019 11:17:20 +0000 (12:17 +0100)]
Fix gpuupdate matrix
1. Set GPU direct communications environment variables in update
matrix to allow for multi-rank testing.
2. Fall back to the CPU update if PME is not fully offloaded
in DD case and with PME-only rank (requred for GPU direct
communications).
Change-Id: I66283a446b0cc58fd0165226b01bf58ce9ec90f1
Mark Abraham [Mon, 30 Dec 2019 12:44:17 +0000 (12:44 +0000)]
Tests that verify serializer behaviours
xdr_vector serializing char uses four bytes per char, which is
wasteful when that char buffer is just a binary dump such as with the
tpr file body. This test ensures that our assumption when writing tpr
files is that we can reinterpret as a wider data type and avoid excess
padding.
It also tests that xdr_opaque does not introduce such padding.
Refs #3269
Refs #3276
Change-Id: I9c40b8ab7b9dabe461cb4dd146bb132d8f5a9681
Mark Abraham [Sun, 29 Dec 2019 23:08:15 +0000 (00:08 +0100)]
Remove use of tuple in LINCS code for GPU implementation
GCC 6.4 for POWER9 couldn't compile any form of increasing the size of
a vector of tuples that I could think of, so got rid of the tuple.
Used some range-based for, rather than explicit indexing plus the (slow)
at() function. There's no need to check indices are in range if there
are no indices!
Change-Id: Ie36a7a6fafe8f6613ec449778cfe2fbf97e02007
M. Eric Irrgang [Thu, 26 Dec 2019 15:48:38 +0000 (18:48 +0300)]
Add tracking for a documented action item.
Refs #3268
Change-Id: I84a490fd6a8c36964a68b8e1ce8679931ef4d5eb
M. Eric Irrgang [Thu, 26 Dec 2019 14:37:36 +0000 (17:37 +0300)]
Link some "to do"s in the dev manual.
Replace some RST comment blocks with `todo` directives and include
links to tracked issues.
Change-Id: I87631676033f241c2ea0cf79cf876ed08281e654
M. Eric Irrgang [Fri, 6 Dec 2019 11:03:01 +0000 (14:03 +0300)]
Make gmxapi.testsupport usable as a pytest plugin.
Continue to consolidate pytest support infrastructure.
Update gmxapi.testsupport usage to function with pytest plugin API.
Convert `withmpi_only` to a custom marker registered with pytest.
Change-Id: I52f4ad1b0b88fbbd1216814a55e243642741dddb
Paul Bauer [Mon, 23 Dec 2019 12:11:02 +0000 (13:11 +0100)]
Fix build error with wrong name from cached cmake file
The CMakeCache files could go out of sync when the name of the source
directory changes, leading to an unrecoverable build error.
To avoid this, CMakeCache files are no longer preserved between build.
Change-Id: Ifa1d808c05bd2f40132b9a721348b1bddb86fc02
Erik Lindahl [Sun, 29 Dec 2019 13:43:35 +0000 (14:43 +0100)]
Write TPR body as opaque XDR data in big-endian format
This implements support for opaque data in our serializers,
as well as a few missing XDR support opaque routines,
including support for data objects larger than 2GB.
By using this for the new serialization of the TPR body
we avoid the unintended 4x growth of the file size, and
avoid introducing extra endian swapping or padding.
We also adjust the endian so the InMemorySerializer
swaps to big endian (i.e., swap if host is little endian)
such that the body of the TPR file is compatible with
the header that is already written as big-endian by
the XDR routines.
Fixes #3276.
Change-Id: I99011dffe190155e671bd656127c2a33459923e2
Artem Zhmurov [Fri, 27 Dec 2019 11:15:23 +0000 (12:15 +0100)]
Change the behavior of the GPU update UI
1. By default, update will now run on the CPU
2. The "-update cpu" will override the GMX_FORCE_UPDATE_DEFAULT_GPU
environment variable.
Change-Id: I08efb6a594fb062fe145baa7cc00ba5c8ec63374
M. Eric Irrgang [Fri, 27 Dec 2019 13:54:44 +0000 (16:54 +0300)]
Resolve CMake ambiguities for gmxapi Python package build.
* Fix inconsistency in documented package dependencies.
* Update version of the required `cmake` Python package.
* Simplify setup.py since we can assume CMake >= 3.12 at build time. Avoids
having the CMake dependency too early in the Python package build.
Fixes #3270
Change-Id: I6d4a4b838f05985741f4560a05a3d9f257b2ec3d