M. Eric Irrgang [Fri, 2 Oct 2020 16:41:01 +0000 (19:41 +0300)]
Don't override user provided CMAKE_OSX_DEPLOYMENT_TARGET.
Remove `FORCE` from the CMake `set()` in case users want to specify
another target, such as 10.15.
Allows users to resolve potential linker warnings by setting
CMAKE_OSX_DEPLOYMENT_TARGET on the CMake command line.
Pascal Merz [Mon, 5 Oct 2020 06:08:10 +0000 (06:08 +0000)]
Fix ForceBuffers compiler warning
When compiling in release mode (using clang-8), warning
src/gromacs/mdtypes/forcebuffers.h:128:10: warning: private field 'useForceMtsCombined_' is not used [-Wunused-private-field]
bool useForceMtsCombined_;
would be thrown because `useForceMtsCombined_` is only used within
`GMX_ASSERT` commands. Added a [[maybe_unused]] to keep compiler happy.
Mark Abraham [Fri, 2 Oct 2020 15:44:59 +0000 (15:44 +0000)]
Cleaned up CUDA compilation
Some .cpp source files used CUDA run-time headers that need
special handling when e.g. clang issues warnings from antiquated
constructs in older NVIDIA runtime headers. This is now handled
centrally in a similar manner to that required for SYCL compilation.
Dependency of the higher-level taskassignment module on GPU
API-specific compilation was removed, instead deploying some new
helper functions.
M. Eric Irrgang [Wed, 30 Sep 2020 20:32:20 +0000 (23:32 +0300)]
Handle gmxapi tmpi parameters better.
Use gmxconfig.json to support some additional testing support.
Configure thread allocation for gmxapi CI jobs more carefully.
Fixes #3710
M. Eric Irrgang [Wed, 30 Sep 2020 20:29:24 +0000 (23:29 +0300)]
Let gmxapi installation record the GROMACS library MPI configuration.
Add a `MPI` property to the Gromacs::gmxapi CMake target.
Add "gmx_mpi_type" to gmxconfig.json
Refs #2961
Paul Bauer [Fri, 2 Oct 2020 07:03:02 +0000 (09:03 +0200)]
Remove anonymous namespace in ARM SVE header
Caused complaints from clang-tidy.
Change-Id: I8c855fa26849a283a456b1315614cdc60041bbf0
Joe Jordan [Fri, 2 Oct 2020 10:23:04 +0000 (10:23 +0000)]
Add tests for setStringEntry
Mark Abraham [Fri, 2 Oct 2020 09:28:19 +0000 (09:28 +0000)]
Update GoogleTest to v1.8.1
Now known to work with recent versions of MSVC
Also, require proper language support when using GoogleTest on all
platforms. Populating the INTERFACE_COMPILE_DEFINITIONS with
GTEST_LANG_CXX11 will force GoogleTest to require the compiler to
provide std components like tuple even when compiling GROMACS
source files that include GoogleTest headers.
Fixes #3682
Alan Gray [Fri, 2 Oct 2020 07:02:31 +0000 (07:02 +0000)]
Use workload data structures for GPU halo exchange triggers
Move GPU halo exchange trigger booleans and related conditionals into
workload data structures, and remove unnecessary assertion on GPU
buffer ops being active (since it is now automatically activated when
GPU halo exchange is active).
Partly addresses #3370
Gilles Gouaillardet [Fri, 2 Oct 2020 01:48:17 +0000 (10:48 +0900)]
arm_sve: fix decr3Hsimd()
Fix a gross typo introduced in gromacs/gromacs@
aabf8460e42c1702f38163d4163b6e59f6712737
Szilárd Páll [Thu, 1 Oct 2020 12:02:25 +0000 (12:02 +0000)]
Update mdrun-performance.rst
Gilles Gouaillardet [Wed, 16 Sep 2020 09:23:28 +0000 (18:23 +0900)]
docs: add ARM+SVE support to the release notes and SIMD support documentation
Gilles Gouaillardet [Wed, 16 Sep 2020 05:32:23 +0000 (14:32 +0900)]
hardware: detect ARM SVE architecture at runtime
- issue a warning if the application was built with NEON simd support
- check the vector length at runtime is the same than at cmake time,
and aborts otherwise
Gilles Gouaillardet [Wed, 16 Sep 2020 05:31:55 +0000 (14:31 +0900)]
cmake: use simd support for ARM+SVE
- detect when cmake is invoked on an ARM+SVE platform
- ARM_SVE simd can be forced with -DGMX_SIMD=ARM_SVE
- the SVE vector length can be forced with -DGMX_SIMD_ARM_SVE_LENGTH=<bits>
(default is 512)
Gilles Gouaillardet [Wed, 16 Sep 2020 05:24:47 +0000 (14:24 +0900)]
simd: add support for aarch64+sve (ARM_SVE)
support SVE vectors whose length is fixed at cmake time
e.g. no Vector Length Agnostic (VLA) support.
This is currently a fit for GCC 10 compilers
(via the -msve-vector-bits=<len> option), and will be supported
by LLVM 12 (based) compilers.
ARM_SVE support for GROMACS is contributed by the Research Organization
for Science Information and Technology (RIST).
Gilles Gouaillardet [Thu, 1 Oct 2020 21:11:39 +0000 (21:11 +0000)]
simd: revamp the (templated) decr3Hsimd() subroutine
decr3Hsimd<stride>(m, a0, a1, a2) replaces three decrHsimd():
- decrHsimd(m, a0);
- decrHsimd(m + stride, a1);
- decrHsimd(m + 2*stride, a2);
providing a given architecture the opportunity to perform additional optimizations.
A simple wrapper is added to each architecture where
GMX_SIMD_HAVE_HSIMD_UTIL_{FLOAT,DOUBLE} is 1.
Refs !567
Andrey Alekseenko [Thu, 1 Oct 2020 20:10:36 +0000 (20:10 +0000)]
Remove ensureReferenceCount from OpenCL's GpuEventSynchronizer
M. Eric Irrgang [Thu, 1 Oct 2020 15:43:15 +0000 (15:43 +0000)]
Use updated images for Python CI jobs.
Also switches tool chains to account for rearrangement in the
CI testing matrix.
Fixes #3714
Artem Zhmurov [Thu, 1 Oct 2020 13:55:00 +0000 (15:55 +0200)]
Add missing include into the tests comparison helper
CLang may complain about not knowing what std::numeric_limits are
if <limits> is not included.
Change-Id: I74118c3f0082e22f634ae11bce542a0de709260b
Paul Bauer [Thu, 1 Oct 2020 11:50:30 +0000 (13:50 +0200)]
Break up MPI tests
Split PME from other mpi tests.
Due to time outs in CI :(
Change-Id: If9c9219ab6667ae98a9475ee03012d9aa81b28d4
Berk Hess [Thu, 1 Oct 2020 12:02:27 +0000 (12:02 +0000)]
Move computeSlowForces into stepWork
Also moved a flag into forcerec and fixed documentation.
Andrey Alekseenko [Thu, 1 Oct 2020 10:04:11 +0000 (10:04 +0000)]
Device management: Add SYCL DeviceBuffer
Pascal Merz [Thu, 1 Oct 2020 07:32:15 +0000 (07:32 +0000)]
Update modular simulator docs
Joe Jordan [Wed, 30 Sep 2020 20:22:59 +0000 (20:22 +0000)]
Add nblib sample script
The sample script argon-forces-integration.cpp gives an example of nblib client code.
Pascal Merz [Wed, 30 Sep 2020 18:26:04 +0000 (18:26 +0000)]
Regression-test-style Google tests for FEP
This set of tests check FEP simulations versus previous results
within the Google tests framework.
The systems are hand-picked to cover as many code paths as possible.
The reference results were carefully checked for correctness.
M. Eric Irrgang [Wed, 30 Sep 2020 12:39:37 +0000 (15:39 +0300)]
Restrict gmxapi pytest tests to `-nt 2`
Fixes #3704
The current change is a quick fix to alleviate pressure on the project's
automation resources. Hard-coded resource constraints should be removed
in a follow-up change.
Also, the new facility to the mdrun ResourceManager needs to be
considered in future work.
Andrey Alekseenko [Wed, 30 Sep 2020 15:49:11 +0000 (17:49 +0200)]
Squash SYCL DeviceContext and DeviceStream
Berk Hess [Wed, 30 Sep 2020 15:13:58 +0000 (15:13 +0000)]
Move computeSlowForces into stepWork
Also moved a flag into forcerec and fixed documentation.
M. Eric Irrgang [Tue, 29 Sep 2020 14:27:03 +0000 (17:27 +0300)]
Specify OMP_NUM_THREADS for Pyhon CI scripts.
* Explicitly propagate OMP_NUM_THREADS through mpiexec.
* Apply self-consistent CI memory parameters.
* Only use 1 OMP thread for gmxapi Python tests. We want to use two tMPI
ranks, and no extra threads. tMPI threads are set separately.
Refs #3704
Mark Abraham [Wed, 30 Sep 2020 10:29:20 +0000 (12:29 +0200)]
Fix warnings issued by clang with nvcc
Host-side code sometimes uses antiquated code that clang warns
about. Previous attempts to suppress some of these were broken by the
changes to GMX_GPU (and also used the wrong cache variable). New
warnings have also emerged.
Also fixed a related list of warning suppressions to be a proper
CMake list, rather than a hacky list.
Andrey Alekseenko [Wed, 30 Sep 2020 09:41:15 +0000 (11:41 +0200)]
Fix Doxygen formula generation
Paul Bauer [Wed, 30 Sep 2020 09:41:54 +0000 (11:41 +0200)]
Revert "Add new GROMACS logo and use it in the manual."
This reverts commit
4120bf7734d9a235c7db720a2c882bb6c11470b6.
Legal reasons
Pascal Merz [Tue, 29 Sep 2020 21:39:04 +0000 (15:39 -0600)]
Fix #3655
This fixes #3655 by addressing some readability issues in
velocityscalingtemperaturecoupling.cpp, and adding some trivial
const qualifiers in the simulator tests.
Closes #3655
Pascal Merz [Wed, 30 Sep 2020 03:26:19 +0000 (21:26 -0600)]
Fix #3694
This fixes #3694 by moving the initialization of the `isInputCompatible`
boolean to its first use in modularsimulator.cpp.
Closes #3694
Paul Bauer [Tue, 29 Sep 2020 11:40:31 +0000 (13:40 +0200)]
Add new GROMACS logo and use it in the manual.
Also added as a highlight in the release notes.
Change-Id: Icac8e5c0134302d4c251cc9e6f5428bca766717d
Artem Zhmurov [Wed, 30 Sep 2020 05:55:14 +0000 (05:55 +0000)]
Restore destructor for GpuTest and gmx_hw_info_t
Needed to able to forward-declare DeviceInformation in headers
Pascal Merz [Tue, 29 Sep 2020 19:47:35 +0000 (19:47 +0000)]
Fix bug resetting mdatoms masses to lambda=0 state
Following the reorganization in !384, the TopologyHolder reset the masses
in mdatoms after they were set by the FreeEnergyPerturbationElement. This
lead to having the masses equal to state A independently of the actual
lambda state.
This change fixes this bug by moving the mass setting into the setup
phase ensuring that it is set by the FEP element independently of the
build order of the elements.
When DD is used, the mdatoms masses were reset to their lambda=0 state
after every DD step. This is fixed by making the DomDecHelper aware of
the FEP element.
Note that the use of MDAtoms should likely be revisited to allow for a
more elegant solution, but this would likely require changes which are
less local than the proposed solution here. Further development is
therefore deferred to #3700.
Paul Bauer [Tue, 29 Sep 2020 17:06:22 +0000 (17:06 +0000)]
Fix doxygen warnings
Add doxygen comments into the recent code
ejjordan [Tue, 29 Sep 2020 09:36:43 +0000 (11:36 +0200)]
Fail gracefully when nblib cannot be built
Artem Zhmurov [Tue, 29 Sep 2020 14:08:18 +0000 (14:08 +0000)]
Remove two-stage initialization in DeviceStream
A default constructor was needed for DeviceStream as an intermediate
measure to make the refactoring easier. It now can be eliminated.
Joe Jordan [Tue, 29 Sep 2020 13:48:33 +0000 (13:48 +0000)]
Add nblib backend: Part 2 of 2
Paul Bauer [Tue, 29 Sep 2020 13:00:15 +0000 (13:00 +0000)]
Add post submit rules to CI
Use those for resource intensive CUDA tests
Change-Id: I9c23139656fd91a833c67dd20d76a1429e91c254
Alan Gray [Tue, 29 Sep 2020 11:27:18 +0000 (11:27 +0000)]
Redevelopment of GPU Force Reduction/Buffer Ops
Introduces a new purpose-build class for GPU force reduction, which
replaces the previous force buffer ops mechanism.
Refs #3370
M. Eric Irrgang [Mon, 28 Sep 2020 18:11:28 +0000 (21:11 +0300)]
Clarifications for ResourceAssignment interface.
Add and update some documentation. Improve error messages. Improve
file naming.
Refs #3644
M. Eric Irrgang [Sat, 26 Sep 2020 15:05:25 +0000 (18:05 +0300)]
Support ResourceAssignment interface for tMPI library builds.
Fixes #3644
M. Eric Irrgang [Mon, 28 Sep 2020 12:55:50 +0000 (15:55 +0300)]
Allow MPI-enabled clients to provide the library communicator.
Provide library helpers and template headers to allow clients to
createContext() with explitly assigned resources.
Relates to #3644
M. Eric Irrgang [Mon, 28 Sep 2020 12:35:43 +0000 (15:35 +0300)]
Use MpiContextManager to provide MPI communicator.
* Give MpiContextManager a MPI_Comm and make it movable so that it can
be provided while creating the ContextImpl.
* In gmxapi::ContextImpl::launch(), use an MpiContextManager instance as
the source for the SimulationContext communicator.
Refs #3644
M. Eric Irrgang [Mon, 28 Sep 2020 12:24:03 +0000 (15:24 +0300)]
Relocate MpiContextManager.
* Change the scope of the MpiContextManager instance from the Session
to the ContextImpl.
* Tighten up some details to help maintain clarity over subsequent
changes.
Refs #3644
M. Eric Irrgang [Sat, 26 Sep 2020 09:54:32 +0000 (12:54 +0300)]
Interface updates allowing client to provide MPI communicator.
gmxapi::MpiContextManager is acquired earlier in API initialization
and has a larger role in setting up the SimulationContext as a member
of gmxapi::ContextImpl. The MpiContextManager can be acquired with
appropriate default values for the various MPI-related GROMACS build
variants, or it can be initialized with user-provided resources.
gmxapi::Context creation method has been updated to accept optional
non-default resources from the client.
A template header helps MPI-enabled client code to provide resources
to createContext(). The client requires minimal awareness of whether
GROMACS was built for thread-MPI or an installed MPI library.
Thread-MPI details are isolated from any translation unit that might
include the client MPI tool chain.
Refs #3644
Alan Gray [Mon, 28 Sep 2020 20:53:07 +0000 (20:53 +0000)]
Remove single-dimension limitation from GPU halo exchange
Allows GPU halo exchange to be active when the number of dimensions is
greater than 1, thus simplifying the codepath logic.
Partly addresses #3370
Joe Jordan [Mon, 28 Sep 2020 17:21:12 +0000 (17:21 +0000)]
Add nblib backend: Part 1 of 2
Andrey Alekseenko [Mon, 28 Sep 2020 15:35:39 +0000 (15:35 +0000)]
Fix error in ensureReferenceCount
We were overwriting input value and comparing it to itself.
Joe Jordan [Mon, 28 Sep 2020 10:35:59 +0000 (10:35 +0000)]
Add initial nblib public API
Giovanni Bussi [Mon, 28 Sep 2020 07:46:02 +0000 (07:46 +0000)]
Fixed incorrect enum
Harmless, since both have value 1, but confusing
Artem Zhmurov [Mon, 28 Sep 2020 06:00:40 +0000 (06:00 +0000)]
add detection of CPX 5300 w/ 2FMAs
Signed-off-by: Hammond, Jeff R <jeff.r.hammond@intel.com>
Pascal Merz [Sun, 27 Sep 2020 11:23:20 +0000 (11:23 +0000)]
Compare trajectories to reference data
This introduces functionality to compare trajectories (x/v/f/box)
to reference data. It also allows to define the maximum number of
frames which should be checked. The latter allows to have a single
reference data, but decide based on the simulation setup (e.g.
parallelization scheme) how many frames are expected to match
before numerical divergence gets too large. To allow this, the
reference data functionality needs to give the option to ignore
unused reference frames.
Pascal Merz [Sun, 27 Sep 2020 06:55:11 +0000 (00:55 -0600)]
Roll back "Ensure the modular simulator runs only when it should"
The fact that GMX_USE_MODULAR_SIMULATOR does not lead to an error
when the run is not supported is a feature, not a bug. It allows
to run the entire test set using modular simulator wherever is is
implemented by using "export GMX_USE_MODULAR_SIMULATOR=ON; make check",
even if modular simulator is disabled by default. It is the only way
to make sure that modular simulator is a valid replacement for the
legacy code path.
Similarly, using "export GMX_DISABLE_MODULAR_SIMULATOR=OFF; make check"
allows to check the legacy code path, even if modular simulator is used
by default.
Andrey Alekseenko [Fri, 25 Sep 2020 20:41:08 +0000 (20:41 +0000)]
Fix #3668
Following the implementation in Google's cpu_features tool made by an
Intel engineer used for original implementation, we only check for the
presence of the second AVX-512 FMA unit if the CPU supports AVX-512F
(foundation), which should be present for all AVX-512 implementations.
That's distinct from the way cpu_features tool does AVX detection, but
should be no less reliable.
Pascal Merz [Fri, 25 Sep 2020 16:37:48 +0000 (16:37 +0000)]
Replace FramesToCompare enum by MaxNumFrames
This allows to explicitly chose a maximum number of frames to be
tested, rather than only chosing to compare the first frame or
all frames. It also implements to chose the number of frames for
tests comparing to reference data rather than only when comparing
simulation results.
Mark Abraham [Fri, 25 Sep 2020 15:21:43 +0000 (17:21 +0200)]
Ensure the modular simulator runs only when it should
Previous checks were ineffective if an unsupported inputrec
was accompanied by GMX_USE_MODULAR_SIMULATOR.
Change-Id: I74e4c177b6b4d7dc25bb3ca32a7dff5a6027276e
Paul Bauer [Fri, 25 Sep 2020 13:15:44 +0000 (15:15 +0200)]
Fix bad logic in regressiontest branch selection
Change-Id: I1eed8a5228362d34af9426a73c2a9d06eae7a714
Paul Bauer [Thu, 24 Sep 2020 14:46:18 +0000 (14:46 +0000)]
Allow deployment of nightly webpage to server
Still needs to have variables defined on Gitlab.
Change-Id: Id7378942555b69df19cbe377d7c90851d6cf56ba
Szilárd Páll [Thu, 24 Sep 2020 12:44:09 +0000 (12:44 +0000)]
Improve OpenCL log/error reporting
Improve reporting by making messages more specific; also added logging of binary caching also for the case where a cache files is found in addition to the case where no cache file is present
Andrey Alekseenko [Wed, 23 Sep 2020 16:34:29 +0000 (18:34 +0200)]
Fix false-positives in checkDeviceBuffer for OpenCL
The function takes required number of elements as its argument, but then
compares it with the buffer size measured in bytes.
Mark Abraham [Wed, 23 Sep 2020 15:26:35 +0000 (17:26 +0200)]
Report name of missing OpenCL kernels
Refs #3686
Pascal Merz [Wed, 23 Sep 2020 16:59:06 +0000 (16:59 +0000)]
Access write checkpoint functionality directly
Pascal Merz [Tue, 8 Sep 2020 03:03:50 +0000 (21:03 -0600)]
Implement Berendsen thermostat for modular simulator
Refs #3423
Mark Abraham [Wed, 23 Sep 2020 14:56:57 +0000 (14:56 +0000)]
Permit comparison of only first frames
Integration tests of mdrun sometimes want to compare only the
quantities from the first frame of a trajectory. This is now
permitted.
Alan Gray [Wed, 23 Sep 2020 07:02:47 +0000 (07:02 +0000)]
Add regression tests for gpucomm paths
Adds regression test runs with GPU communication codepaths enabled for
both thread-MPI and MPI builds.
Mark Abraham [Tue, 22 Sep 2020 13:18:17 +0000 (13:18 +0000)]
Split mdrun-test
The PME tests are the most time-consuming part, so have been split off.
Andrey Alekseenko [Tue, 22 Sep 2020 12:50:41 +0000 (12:50 +0000)]
Draft: Fix compilation
Also, make ctor etc always defined for DeviceInformation. Otherwise it's
just ugly.
Paul Bauer [Tue, 22 Sep 2020 10:04:35 +0000 (10:04 +0000)]
Make Oneapi use CCache again
The custom before_script meant that builds are not using the cache.
Change-Id: Iaf0546e2dd48cf2a6438c2aa0d6461977ee6b2dd
Christian Blau [Tue, 22 Sep 2020 07:30:09 +0000 (07:30 +0000)]
Nelder-Mead downhill simplex optimisation
Nelder-Mead simplex optimiser, according to Saša Singer and
John Nelder (2009), Scholarpedia, 4(7):2928. doi:10.4249/scholarpedia.2928
Implementation for functions returning real values from
vectors of reals.
Pascal Merz [Mon, 21 Sep 2020 16:34:37 +0000 (16:34 +0000)]
Checkpointdata DD followup
Mark Abraham [Mon, 21 Sep 2020 14:21:14 +0000 (16:21 +0200)]
Wrong logic was used
Log files in gitlab gave the warning message for twin-cutoff, but we
are not setting these env variables.
Gilles Gouaillardet [Mon, 21 Sep 2020 15:01:19 +0000 (15:01 +0000)]
simd/impl_none: add missing macros
add macros for GMX_SIMD_HAVE_HSIMD_UTIL_{FLOAT,DOUBLE}
Paul Bauer [Mon, 21 Sep 2020 13:33:09 +0000 (13:33 +0000)]
Fix script building all CI containers and add gcovr
Additions in
48f9056c196fda338b83e74212d4f9bc5ab3474e broke the script
by changing the default values, while
e9cb08d17b06bc5649d316ee06159b633db9b3d8 inadvertently made all images
use the oneapi images as base.
Also add gcovr tool to documentation images, preparing for coverage
builds.
Change-Id: I0eb9a3bf1e8b45dd4b4a3a41fd214678c4c1c4c2
Paul Bauer [Mon, 21 Sep 2020 08:44:58 +0000 (10:44 +0200)]
Add OpenSSH to docs build images
Change-Id: I9b1994a78ef869f3147aa45b5893645ce74f5e04
Magnus Lundborg [Mon, 21 Sep 2020 09:07:13 +0000 (09:07 +0000)]
AWH avoid constructors only differing in parameter types
Also clarified a function name in the tests.
Tests had to be updated since the force constant (now removed)
should not have been used before at all.
Artem Zhmurov [Mon, 21 Sep 2020 08:26:52 +0000 (08:26 +0000)]
Do not run PinnedMemoryCheckerTest when there are no CUDA-capable devices
If there are no CUDA devices in the system, cudaPointerGetAttributes(...)
CUDA API call returns an error. This causes the GPU Utils tests to fail
with fatal error.
Fixes #3679
Artem Zhmurov [Mon, 21 Sep 2020 07:59:07 +0000 (07:59 +0000)]
Move the message to the deprEcation-policy file
Also update the message according to the move
Andrey Alekseenko [Sun, 20 Sep 2020 09:39:41 +0000 (09:39 +0000)]
Add NVIDIA GPU compatibility check, following issue #3125
The incompatibility is documented, but better to verify.
Artem Zhmurov [Sun, 20 Sep 2020 09:18:16 +0000 (09:18 +0000)]
Set active device when the device stream manager is initialized
Replace the direct CUDA API call in PME by the wrapper called
when the device context and streams are created.
Artem Zhmurov [Sun, 20 Sep 2020 08:56:29 +0000 (08:56 +0000)]
Allow using old environment variables, but print deprecation message
The following environment variables were unified in
2c644d3b5ebb64f6c89a5db36160c9dc30329888:
GMX_CUDA_NB_ANA_EWALD and GMX_OCL_NB_ANA_EWALD into GMX_GPU_NB_ANA_EWALD
GMX_CUDA_NB_TAB_EWALD and GMX_OCL_NB_TAB_EWALD into GMX_GPU_NB_TAB_EWALD
GMX_CUDA_NB_EWALD_TWINCUT and GMX_OCL_NB_EWALD_TWINCUT into GMX_GPU_NB_EWALD_TWINCUT
This allows user to use old environment variables, but prints deprecation message.
Pascal Merz [Tue, 8 Sep 2020 02:40:22 +0000 (20:40 -0600)]
Refactor v-rescale thermostat to allow for other algorithms
This is pure refactoring, splitting the element class (interfaces with
the simulator and other objects) from the actual implementation of the
thermostat. This will allow to implement other thermostat algorithms
using the same infrastructure.
Refs #3423
M. Eric Irrgang [Tue, 15 Sep 2020 19:18:22 +0000 (22:18 +0300)]
Improve naming and docs.
Follow up from https://gitlab.com/gromacs/gromacs/-/merge_requests/541
Fixes #3673
Berk Hess [Fri, 18 Sep 2020 09:01:21 +0000 (09:01 +0000)]
Remove cutoff_scheme from t_forcerec and interaction_const_t
M. Eric Irrgang [Mon, 14 Sep 2020 16:15:04 +0000 (19:15 +0300)]
Document a Mdrunner::BuilderImplementation member.
Fixes #3665.
Berk Hess [Thu, 17 Sep 2020 12:13:57 +0000 (14:13 +0200)]
Move bNonbonded flag from t_forcerec to SimulationWorkload
The flag to store whether nonbonded calculations are requested to be
skipped (set by env.var.) is move from t_forcerec to
SimulationWorkload. A minor side-effect of this change is that the
nbnxn module logs kernels choices when this option is set.
Pascal Merz [Thu, 3 Sep 2020 03:56:11 +0000 (21:56 -0600)]
Rename VRescaleThermostat to VelocityScalingTemperatureCoupling
Also moves vrescalethermostat.h/cpp to
velocityscalingtemperaturecoupling.h/cpp.
This reflects upcoming changes making the thermostat more general.
As these changes touch a lot of lines in the implementation file,
renaming the file at the same time throws git diff off. Doing the
renaming in a separate commit should therefore make for easier reviewing.
Refs #3423
Artem Zhmurov [Thu, 17 Sep 2020 12:49:10 +0000 (12:49 +0000)]
Remove the CPU hardware context from the general list of test hardware contexts
Having CPU code path in the general hardware context list leads to having
many if (CPU) clauses. This complicates things in places, where there are
several CPU runners. Since in most cases (i.e. everywhere apart from Ewald
tests) the runners know the hardware they should use, the selection of CPU
or GPU is now done when the runners are created. TestHardwareContext is
to become TestDeviceContext and will only hold GPU devices.
Berk Hess [Wed, 16 Sep 2020 13:33:12 +0000 (15:33 +0200)]
Remove unnecessary condition in DD force buffer resizing
Removed a condition that was no longer necessary, as exactly
the same condition is checked inside the resize() method of
ForceHelperBuffers.
Mark Abraham [Wed, 16 Sep 2020 15:41:05 +0000 (15:41 +0000)]
Activate AMD OpenCL build in release matrix
This had never been turned on.
Fixed missing file for OpenCL installation.
Also reordered the install list in alphabetical order, per style.
Refs #3272
Sebastian Keller [Tue, 15 Sep 2020 09:09:45 +0000 (11:09 +0200)]
Reduce transitive dependencies in arrayref.h
Reduce transitive dependencies on other GROMACS headers.
* Replace `GMX_ASSERT` with `assert`
* Replace `index` with `difference_type`
Refs #3674
Christian Blau [Tue, 15 Sep 2020 14:55:31 +0000 (16:55 +0200)]
Extend user docs on affine transformations for densities
Add more extensive information to the reference manual and .mdp option description
in the user-guide.
Fix one documentation typo.
Pascal Merz [Wed, 16 Sep 2020 07:34:44 +0000 (07:34 +0000)]
Implement modular checkpointing
Using the CheckpointData format introduced in a parent commit, this
rewrites checkpointing for the modular simulator to completely use
the new format.
The CheckpointHelper is now passing a CheckpointData object to its
clients (instead of a legacy t_state object). Clients are now stored
in a map, as they are identified by their unique key to be able to
assign the correct CheckpointData sub-objects at reading and writing.
If checkpoint reading occured, the newly introduced
CheckpointHelperBuilder receives the CheckpointData object read at the
runner level from the ModularSimulator. It then initializes its clients
with their respective, read-only CheckpointData subobjects.
The ICheckpointHelperClient interface is adapted to reflect above
changes.
The ModularSimulatorAlgorithmBuilder is slightly simplified thanks to
to the introduction of a proper builder for the CheckpointHelper.
The ComputeGlobalsElement is simplified, as it is not required to know
about the needs of communication of the EnergyData object which
depends on checkpoint reading.
Finally, all elements which are checkpoint clients are updated to
implement the new design. Note that they all introduce their own
checkpoint versioning, as the data being checkpointed is opaque to the
checkpointing infrastructure.
Closes #3517
Closes #3422
In partial fulfillment of #3419
Artem Zhmurov [Tue, 15 Sep 2020 16:43:43 +0000 (16:43 +0000)]
Use common device context header for OpenCL
This moves the OpenCL specific definition into under macro in the main header.
Makes device stream and context definitions more consistent.
Paul Bauer [Tue, 15 Sep 2020 14:17:42 +0000 (14:17 +0000)]
Break off some tests from mdrun tests
Done to not hit the time limit in CI with OpenCL.
Change-Id: Ic2e2686530aef51475ab7f49c1bfd29442c3fc0a
M. Eric Irrgang [Fri, 11 Sep 2020 13:52:31 +0000 (16:52 +0300)]
Remove outdated workaround.
Remove a workaround left over from before issue #2689 was closed.
Refs #2689
Berk Hess [Tue, 15 Sep 2020 09:40:23 +0000 (11:40 +0200)]
Only extend Ewald table when necessary
The Ewald correction table for non-bonded interactions was always
extended by change
24595dbb. No this is limited to free-energy
runs only.