Dmitry Morozov [Tue, 29 Jun 2021 06:43:08 +0000 (06:43 +0000)]
Fix leak in copy_t_atoms
Joe Jordan [Mon, 28 Jun 2021 09:18:17 +0000 (09:18 +0000)]
Add nblib virials function with test
Mark Abraham [Sat, 26 Jun 2021 16:48:46 +0000 (16:48 +0000)]
Decouple PME GPU 3DFFT from PME GPU module
Paul Bauer [Fri, 25 Jun 2021 16:09:56 +0000 (16:09 +0000)]
Fix wallcycle counting
M. Eric Irrgang [Thu, 24 Jun 2021 14:50:08 +0000 (14:50 +0000)]
apply reviewer suggestions
M. Eric Irrgang [Thu, 24 Jun 2021 13:43:51 +0000 (16:43 +0300)]
Don't run full CI when stages fail.
See https://docs.gitlab.com/ee/ci/yaml/#when
Fixes #3482
Mark Abraham [Thu, 24 Jun 2021 14:49:45 +0000 (14:49 +0000)]
Update hipSYCL CI container
M. Eric Irrgang [Thu, 24 Jun 2021 14:15:29 +0000 (14:15 +0000)]
Let gmxapi.commandline access GROMACS installation details.
M. Eric Irrgang [Thu, 24 Jun 2021 11:32:18 +0000 (11:32 +0000)]
Require Python 3.7 for gmxapi in GROMACS 2022
ejjordan [Mon, 21 Jun 2021 14:34:29 +0000 (16:34 +0200)]
Introduce AngleInteractionType
This adds a template from which subsequent angle types can be generated.
Andrey Alekseenko [Thu, 24 Jun 2021 08:43:43 +0000 (08:43 +0000)]
SYCL NBNXM: Use hand-crafted energy reduction
Andrey Alekseenko [Wed, 23 Jun 2021 19:46:05 +0000 (22:46 +0300)]
Enable back floating-point exceptions for SYCL build
Originally, they were disabled in
48fb95de1e456569deed5096924e617d511cf109 because Intel IGC compiler was
triggering them while doing JIT compilation of NBNXM kernels from the
intermediate bytecode.
Now:
- The problem was fixed in IGC 1.0.7683 (compute-runtime 21.24.20098).
- Either NBNXM kernels or the DPC++ compiler changed, and the generated
SPIR-V code does not trigger FPEs even for earlier IGC versions.
Mark Abraham [Tue, 22 Jun 2021 06:02:59 +0000 (06:02 +0000)]
Activate the existing 20.04 CI containers
Mark Abraham [Mon, 21 Jun 2021 07:57:13 +0000 (07:57 +0000)]
Continue fixing warnings with clang as host compiler
Berk Hess [Fri, 18 Jun 2021 13:12:44 +0000 (13:12 +0000)]
Speed up grompp LJ parameter generation
Mark Abraham [Fri, 18 Jun 2021 04:56:39 +0000 (06:56 +0200)]
Suppressed -Wold-style-cast for clang as nvcc host compiler
Also updated some cache variable names to fit the style used for other
warning suppressions, in case we get to re-use the configure-time
result in future.
Andrey Alekseenko [Fri, 18 Jun 2021 09:16:12 +0000 (09:16 +0000)]
Update device detection code for hipSYCL
Pascal Merz [Fri, 18 Jun 2021 08:33:18 +0000 (08:33 +0000)]
Introduce ReferenceTemperatureManager
Mark Abraham [Thu, 17 Jun 2021 20:51:23 +0000 (20:51 +0000)]
Fixed docs build
Mark Abraham [Thu, 17 Jun 2021 20:19:13 +0000 (20:19 +0000)]
Fix warnings when clang is the CUDA host compiler
Andrey Alekseenko [Thu, 17 Jun 2021 12:19:23 +0000 (15:19 +0300)]
Fix clang-format in src/gromacs/fft/fft_mkl.cpp
Andrey Alekseenko [Thu, 17 Jun 2021 13:34:35 +0000 (13:34 +0000)]
SYCL: Reduce the number of atomic ops in NBNXM fShift calculation
Andrey Alekseenko [Thu, 3 Jun 2021 13:08:47 +0000 (16:08 +0300)]
Improve hipSYCL GpuEventSynchronizer implementation
Previously, an inefficient stub was added. Here, we do proper event
tracking using the HIPSYCL_EXT_QUEUE_WAIT_LIST extension.
Since now we can have to wait on multiple events, replaced the
std::optional with std::vector.
Closes #4064
Mark Abraham [Thu, 17 Jun 2021 07:34:08 +0000 (07:34 +0000)]
Rework -Weverything
Mark Abraham [Fri, 11 Jun 2021 12:25:41 +0000 (14:25 +0200)]
Make doxygen assertion more helpful
Knowing the name of the clashing symbol helps understand where the
problem lies.
Mark Abraham [Wed, 16 Jun 2021 09:00:19 +0000 (11:00 +0200)]
Use doxygen properly
Paul Bauer [Fri, 11 Jun 2021 09:37:38 +0000 (11:37 +0200)]
Remove workaround for old clang
No longer needed as we require a more recent clang than version 6.
Mark Abraham [Tue, 15 Jun 2021 14:46:41 +0000 (16:46 +0200)]
Use 20.04 for docs build
Updated image with new tex font package needed for 20.04
M. Eric Irrgang [Fri, 11 Jun 2021 12:30:01 +0000 (15:30 +0300)]
Improve robustness of StopSignalClient test.
A previous commit inadvertently rendered this test ineffective.
This change clarifies the test and restores its utility.
Rearranged commentary and additional assertions should help to prevent
another regression in the future.
Additionally, the two simulations run in the test have been
further decoupled.
Fixes #4076
Pascal Merz [Wed, 16 Jun 2021 10:14:11 +0000 (10:14 +0000)]
Prepare free energy element for external FEP state setting
Joe Jordan [Wed, 16 Jun 2021 09:42:22 +0000 (09:42 +0000)]
Use unique_ptr<ListedForcesGpu> in forcerec
Mark Abraham [Tue, 15 Jun 2021 13:10:48 +0000 (15:10 +0200)]
Update interface of gmx_stats_t
The only error code returned was one that checked that there was data
points to work with. Given our style, that makes sense to implement
with an internal assertion at the point where it is necessary, and to
throw when the user input is observed to be inconsistent (ie.
requesting statistical work without providing a valid dataset).
At least one routines always returned the error code for success,
creating complexity which is now eliminated.
Used a template to permit one routine to be implemented in two
slightly different ways.
This change helps with warning-free compilation with gcc 12 by
eliminating the assertion that was only used in debug mode. It is now
always a throw, since it makes no sense to continue to report garbage
statistics in the case being checked. Now the enum class is also no
longer useful and is eliminated.
Uncovered bug #4080 which is fixed here, and backported to
release-2021 separately.
Mark Abraham [Tue, 15 Jun 2021 12:30:38 +0000 (12:30 +0000)]
Support testing CUDA-aware MPI in CI
Mark Abraham [Tue, 15 Jun 2021 04:32:20 +0000 (06:32 +0200)]
Remove some NOLINT now that clang-tidy-11 is required
Not all NOLINT can be removed yet, as not all bugs are fixed.
Andrey Alekseenko [Fri, 11 Jun 2021 22:10:54 +0000 (01:10 +0300)]
SYCL: Shorten mangled kernel name types
Because they are used, for example, in the profiler output, and long
names make it hard to read.
Before:
- _ZTSZZL18isDeviceFunctionalRKN2cl4sycl6deviceEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENK3
- _ZTSN3gmx18LeapFrogKernelNameILNS_18NumTempScaleValuesE0ELNS_19VelocityScalingTypeE0EEE
- _ZTSN5Nbnxm15NbnxmKernelNameILb0ELb1ELNS_8ElecTypeE0ELNS_7VdwTypeE1EEE
- _ZTSN5Nbnxm24NbnxmKernelPruneOnlyNameILb1EEE
After:
- _ZTS11DummyKernel
- _ZTS14LeapFrogKernelILN3gmx18NumTempScaleValuesE2ELNS0_19VelocityScalingTypeE1EE
- _ZTS11NbnxmKernelILb0ELb1ELN5Nbnxm8ElecTypeE0ELNS0_7VdwTypeE1EE
- _ZTS20NbnxmKernelPruneOnlyILb1EE
Can be shortened further by casting enums to integers in template
arguments, but not sure it will improve readability much.
Joe Jordan [Fri, 11 Jun 2021 15:01:24 +0000 (15:01 +0000)]
Add createNbnxmCPU, usage, and test
Paul Bauer [Thu, 10 Jun 2021 15:36:02 +0000 (15:36 +0000)]
Update parts of the CPU CMAP kernel
Pascal Merz [Mon, 23 Nov 2020 03:30:00 +0000 (20:30 -0700)]
Refactor temperature annealing
This refactors temperature annealing by dividing it into two subfunctions,
one which returns a new temperature, keeping the inputrec constant and
being independent of the Update object, and one which updates the inputrec
and the Update object.
This separation allows most of the code to be reused by modular simulator,
and it is also a first step towards a design which does not need to modify
the input record (#3854)
Refs #3417, #3854
Pascal Merz [Thu, 3 Dec 2020 07:05:54 +0000 (00:05 -0700)]
Allow elements to schedule pre-step and post-step functions
Pre-step and post-step functions allow elements to perform operations
which need to happen before any of the integration step functions run,
or after all integration step functions have run. Unlike the main
integration step scheduling, whose order is defined by the order of the
elements in the integration algorithm, the functions are not guaranteed
to run in a specific order, only before / after the integration step.
One example this is useful for is the pull code, which needs to print
some output once all external pull providers (currently only AWH) have
run. Having a post-step function allows for an easy way for the pull
element to run during the integration run, but defer printout until
after the step.
Refs #3417, #3435, #3436
Andrey Alekseenko [Wed, 9 Jun 2021 19:40:38 +0000 (22:40 +0300)]
Remove some unused-but-set variables
Detected by the -Wunused-but-set-variable option in the
open-source IntelLLVM (and, in theory, upstream Clang trunk).
There are also false-positive warnings there, so the
compilation log is noisy.
I'm not doing any silencing here, since it will, hopefully, change by
the time of Clang 13 release.
But the variables removed here appear to be genuinely unused.
Andrey Alekseenko [Wed, 9 Jun 2021 16:05:57 +0000 (16:05 +0000)]
Bump hipSYCL version in the CI container
Artem Zhmurov [Wed, 9 Jun 2021 13:26:45 +0000 (16:26 +0300)]
Use [..] instead of at(..) in LINCS GPU data management code
The .at(..) was used to make sure that the indices are within bonds
while the code is not thoroughly tested. Now it can be replaced with
direct access [..] for performance reasons.
Joe Jordan [Wed, 9 Jun 2021 14:04:20 +0000 (14:04 +0000)]
Move nbnxm setup responsibility to its own files and add tests
Artem Zhmurov [Tue, 8 Jun 2021 11:48:22 +0000 (14:48 +0300)]
Compute reference indices in GPU LINCS upon data preparation
The reference indices are used to map into shared memory location.
The start of the block is then subtracted from the index in map
to get the location in shared memory that should be used. This can
be done when the structure is populated to reduce the amount of
computations in the GPU kernel.
Refs #3350
Joe Jordan [Wed, 9 Jun 2021 11:19:25 +0000 (11:19 +0000)]
Expose and test getVdwKernelType
Paul Bauer [Wed, 9 Jun 2021 08:22:49 +0000 (08:22 +0000)]
Add .clang-tidy file for nbnxn tests
Joe Jordan [Wed, 9 Jun 2021 07:56:18 +0000 (07:56 +0000)]
Extend nblib listed pbc holder and template kernels
Pascal Merz [Tue, 8 Jun 2021 16:59:02 +0000 (10:59 -0600)]
Prepare simulated annealing refactoring
Prepare simulated annealing refactoring by moving variable declarations
to where they are first used, rename a non-descriptive integer `i`, use
a const reference to the inputrec where possible, replace a gmx_fatal
by an assert, and replace a switch / case construct by an if / else.
This is pure refactoring, no change in functionality, but will make
follow-up changes significantly easier to review.
Joe Jordan [Tue, 8 Jun 2021 17:36:18 +0000 (17:36 +0000)]
CoulombKernelType enum, lookup function, and tests
Pascal Merz [Tue, 8 Jun 2021 15:31:59 +0000 (15:31 +0000)]
Unify FEP period setting
Szilárd Páll [Tue, 8 Jun 2021 14:40:14 +0000 (14:40 +0000)]
Work around hipSYCL buffer reinterpret error
M. Eric Irrgang [Tue, 8 Jun 2021 11:29:02 +0000 (14:29 +0300)]
Remove gmxapi roadmap.rst and acceptance tests.
This document and the supporting tests are out-of-date and unused for
project planning, as far as I can tell.
Resolves #3706
Andrey Alekseenko [Tue, 8 Jun 2021 12:19:05 +0000 (15:19 +0300)]
Fix clang-tidy complaints
Introduced in
6cd214d6 (MR !1591)
Paul Bauer [Tue, 8 Jun 2021 09:38:34 +0000 (09:38 +0000)]
Allow selection of rocm version to install
Mark Abraham [Mon, 7 Jun 2021 13:35:19 +0000 (15:35 +0200)]
Unite the post-DD-partition update of the local topology
Also simplify and clarify the implementation of doSorting
Removed ilsortFE_UNSORTED now that it is unused
Refs #4004
Mark Abraham [Mon, 7 Jun 2021 23:37:24 +0000 (23:37 +0000)]
Add hasPerturbedChargeIn14Interaction to atomInfo bits
Pascal Merz [Mon, 7 Jun 2021 21:07:27 +0000 (21:07 +0000)]
Introduce Trotter decomposition / MTTK for modular simulator
Paul Bauer [Mon, 7 Jun 2021 19:06:42 +0000 (19:06 +0000)]
Use enum class for checkpoint version
Mark Abraham [Tue, 1 Jun 2021 09:51:58 +0000 (11:51 +0200)]
Make LocalTopologyChecker class and hide implementation details
This allows capturing useful state that is only used when writing the
error output, without leaking dependencies for implementation details
to high-level code.
Some minor improvements to const correctness of the error output. Also
moved it into gmx namespace.
Minor improvement to include order
Removed unused forward declaration in domdec.h
Refs #3887
ejjordan [Mon, 7 Jun 2021 10:39:41 +0000 (12:39 +0200)]
Rename some paramters in nblib listed forces
This is pure refactoring.
HarmonicAngleType -> HarmonicAngle
EquilDistance -> EquilConstant
Mark Abraham [Mon, 7 Jun 2021 12:43:00 +0000 (12:43 +0000)]
Add unit tests for topology sorting
Artem Zhmurov [Mon, 7 Jun 2021 10:53:30 +0000 (13:53 +0300)]
Remove duplicating pointers to device buffers in GPU listed forces
XYZQ, forces and shift forces are saved in both ListedForces class and
in BondedCudaKernelParameters class. This removes the later and
make it so the buffers are passed directly to the kernel.
Alan Gray [Mon, 7 Jun 2021 11:54:56 +0000 (11:54 +0000)]
Push GPU PME-PP force from PME task instead of pull from PP task
Andrey Alekseenko [Mon, 7 Jun 2021 11:22:11 +0000 (11:22 +0000)]
Add SYCL-related information to the mdrun version header
Dmitry Morozov [Mon, 7 Jun 2021 11:00:13 +0000 (11:00 +0000)]
Added EnergyOutputRequestChecker notification for MDModules
Joe Jordan [Mon, 7 Jun 2021 09:16:35 +0000 (09:16 +0000)]
Miscellaneous updates from nblib
Mark Abraham [Mon, 7 Jun 2021 08:57:19 +0000 (08:57 +0000)]
Update to Ubuntu 20.04 in CI
Artem Zhmurov [Mon, 7 Jun 2021 06:51:12 +0000 (09:51 +0300)]
Joe Jordan [Sun, 6 Jun 2021 20:50:28 +0000 (20:50 +0000)]
Updates to nblib test infra and tests
Pascal Merz [Fri, 4 Jun 2021 16:57:54 +0000 (16:57 +0000)]
AWH data structures modular checkpointing
Pascal Merz [Fri, 4 Jun 2021 15:47:20 +0000 (15:47 +0000)]
Pull and AWH exact continuation tests
Mark Abraham [Thu, 3 Jun 2021 08:26:22 +0000 (10:26 +0200)]
Convert atomInfo to int64_t
This ensures we can use bits from a 64-bit range if we ever need
that. Or easily switch to 32-bit range if that's advantageous.
Refs #4004
Szilárd Páll [Fri, 4 Jun 2021 10:15:32 +0000 (10:15 +0000)]
Require CUDA 11.0
Also remove some cmake code that aided support for version <11.0.
Refs #3708
Szilárd Páll [Fri, 4 Jun 2021 06:46:49 +0000 (06:46 +0000)]
Move useMts flag from forcerec to simulationWorkload
Artem Zhmurov [Thu, 3 Jun 2021 20:23:35 +0000 (20:23 +0000)]
Make constraints and SETTLE tests backend-agnostic
Mark Abraham [Thu, 3 Jun 2021 17:35:14 +0000 (17:35 +0000)]
Remove useless charge-group work during repartitioning
Mark Abraham [Thu, 3 Jun 2021 16:03:23 +0000 (16:03 +0000)]
Update tested CUDA versions
Mark Abraham [Thu, 3 Jun 2021 14:58:26 +0000 (14:58 +0000)]
Remove preprocessor usage for atomInfo
Dmitry Morozov [Thu, 3 Jun 2021 14:33:14 +0000 (14:33 +0000)]
Added QM input file name as command-line parameter for grompp
Part of #3172
Szilárd Páll [Thu, 3 Jun 2021 13:26:20 +0000 (15:26 +0200)]
Fix getLocalAtomCount()
Pass dd as pointer to avoid nullptr dereferencing introduced in
ba71b7526c22715aceb36586e76f2ae58c4a2461.
Refs #3915
Berk Hess [Thu, 3 Jun 2021 09:54:55 +0000 (11:54 +0200)]
Minor pull code cleanup
Replaced some pointer by references, removed some unnecessary struct,
converted a loop to range and converted some documentation to doxygen.
Szilárd Páll [Thu, 3 Jun 2021 07:36:24 +0000 (09:36 +0200)]
Add domainWorkload flags for CPU local force contributions
Part of #3913
Pascal Merz [Tue, 17 Nov 2020 01:14:32 +0000 (18:14 -0700)]
Free energy history modular checkpointing
This introduces a function that allows df_history_t objects to save to
and reset from modular simulator checkpoints. This allows elements
owning such an object to easily checkpoint it.
This also introduces a helper function to create CheckpointDataOperation
dependent ArrayRefs from C arrays.
Szilárd Páll [Thu, 3 Jun 2021 08:18:40 +0000 (10:18 +0200)]
Add a getter function for the local atom count
Refs #3915
Pascal Merz [Thu, 3 Jun 2021 01:32:19 +0000 (19:32 -0600)]
Remove unneeded template keyword which trips up MSVC
Solves part 1 of #4065
Andrey Alekseenko [Wed, 2 Jun 2021 09:06:18 +0000 (12:06 +0300)]
SYCL: Update env. vars to select GPUs
SYCL_DEVICE_FILTER is supported in OneAPI releases, so we can safely
recommend it. Also added the ROCm string when compiled with hipSYCL.
Dmitry Morozov [Wed, 2 Jun 2021 09:41:44 +0000 (09:41 +0000)]
Add notifications for MDModules that will be used in QMMM
Mark Abraham [Wed, 2 Jun 2021 06:44:51 +0000 (08:44 +0200)]
Removed GMX_CLANG_CUDA build using old versions
Clarified that a release job was targetting clang as host-only
compiler, ie. not GMX_CLANG_CUDA.
Refs #3708
Andrey Alekseenko [Tue, 1 Jun 2021 14:13:32 +0000 (17:13 +0300)]
Mark a variable as unused in non-MPI build
Eliane Briand [Mon, 31 May 2021 14:46:31 +0000 (16:46 +0200)]
Fix gmx nmr -viol option
Ref #4060
Mark Abraham [Mon, 31 May 2021 15:32:14 +0000 (15:32 +0000)]
Finish breaking up domdec_topology.cpp
ejjordan [Mon, 31 May 2021 09:36:09 +0000 (11:36 +0200)]
Increase const correctness in gmx_pme_send_parameters
Also switched to ArrayRef<const RVec> from pointer in one function
and removed an unused header.
Mark Abraham [Mon, 31 May 2021 10:14:22 +0000 (10:14 +0000)]
Move total bonded count to LocalTopologyChecker
Mark Abraham [Mon, 31 May 2021 09:05:50 +0000 (11:05 +0200)]
Split localtopology from domdec_topology
This is a separable responsibility and can go in its own
translation unit.
Refs #3887
Mark Abraham [Mon, 31 May 2021 08:14:35 +0000 (08:14 +0000)]
Partial renaming of cginfo to atom info
Andrey Alekseenko [Sun, 30 May 2021 15:54:10 +0000 (18:54 +0300)]
Fix one more missing template declaration
Continuation of the work started in
bf9b81c4 (MR !1652)
Pascal Merz [Mon, 31 May 2021 00:10:49 +0000 (18:10 -0600)]
Introduce Andersen temperature coupling for modular simulator
This introduces the `andersen` and `andersen-massive` temperature coupling
for modular simulator. Since reshuffeling the velocities does require a
constraining step, the Andersen temperature coupling uses the composite
element to combine the Andersen element with a constraining element.
Refs #3423, refs #3417
Andrey Alekseenko [Mon, 31 May 2021 06:26:32 +0000 (06:26 +0000)]
Add nightly CI test on OneAPI + Intel GPU
Andrey Alekseenko [Fri, 28 May 2021 22:51:33 +0000 (01:51 +0300)]
Disable false-positive warnings for ICPX 2021.2.0
Not happening in open-source intel/llvm compiler.
While originally it was enough to disable them at include stage, in
2021.2 the warning is issued in the kernel itself, so we had to expand
its usage beyond gmxsycl.h.
Paul Bauer [Fri, 28 May 2021 08:55:23 +0000 (08:55 +0000)]
Fix missing template declaration