kanduri [Tue, 30 Mar 2021 11:53:51 +0000 (11:53 +0000)]
Turn t_forcerec.shift_vec into an std::vector of gmx::RVec
Change function signatures so that call sites have minimal changes
Berk Hess [Tue, 30 Mar 2021 10:15:43 +0000 (10:15 +0000)]
Add coordIndex to t_pull_coord
The pull coordinate index is an integral part of a pull coordinate
and can not be changed. Thus it can be part of t_pull_coord which
allows avoiding index passing in several functions.
Mark Abraham [Tue, 30 Mar 2021 09:44:29 +0000 (09:44 +0000)]
Move responsibility for checking bondeds in reverse topology
The reverse topology is a data structure distributed across all
domains that should refer exactly once to all bonded interactions
present in the global topology. We check that this is true at run
time, but need a complex implementation to avoid doing extra
collective communication that supports running what is effectively an
assertion that the reverse topology construction is correct.
Past attempts to improve this (e.g.
8b6c99a1) left the code in an
intermediate state where the responsibility for this check was mostly
implemented in do_md rather than compute_globals. That gave the
impression of compute_globals() returning an integer
parameter. However as above it's really an implementation detail of a
check of the reverse topology, and so the logic and memory for that
check should be in the domain decomposition module and object.
This change move the details of that check to the rest of the code
that handles the reverse topology. It renames several variables and
adds documentation for them.
This simplifies parts of the implementation of the modular simulator,
and prepares for implementing the proposal for #3887 by making all
outputs from global reduction local to the module that consumes them.
Refs #3421
Refs #3887
Joe Jordan [Mon, 29 Mar 2021 13:03:56 +0000 (13:03 +0000)]
Add tests for calcvir
Andrey Alekseenko [Mon, 29 Mar 2021 10:43:47 +0000 (13:43 +0300)]
Fix webpage build
MR !1235 (
dff1d7e309eb751b6b7585853501c544919db59f) had a missing empty
line, which upset Sphinx.
Alan Gray [Mon, 29 Mar 2021 11:12:25 +0000 (11:12 +0000)]
Avoid unnecessary CPU force buffer clearing
Only clear CPU force buffers on steps that actually use the buffers.
Partly addresses #3970
Joe Jordan [Mon, 29 Mar 2021 08:35:17 +0000 (08:35 +0000)]
Move nsgrid header/source from mdlib to domdec
The function get_nsgrid_boundaries is only called in domdec module
so it should live there. Removed an unused constant and moved another
to the source which is the only consumer. Also removed a todo which
no longer makes sense.
Kevin Boyd [Mon, 29 Mar 2021 07:47:18 +0000 (07:47 +0000)]
Remove unused LSAN suppressions
Some unknown refactoring has left these unneeded
Mark Abraham [Sat, 27 Mar 2021 20:36:35 +0000 (20:36 +0000)]
Update developer guide on error handling
Deferred to C++ core guidelines on most content, plus
some GROMACS-specific clarification.
Andrey Alekseenko [Sat, 27 Mar 2021 19:24:34 +0000 (19:24 +0000)]
Avoid enqueueing the same event multiple times in nbnxn_atomdata_x_to_nbat_x_gpu
With several non-local grids, we were calling
nbnxnInsertNonlocalGpuDependency(nb, NonLocal) in nbnxn_gpu_x_to_nbat_x
after enqueueing the transformation kernel for each one.
Now, we only call it once after submitting all kernels for
given locality (marking the event for Local, enqueueing the wait for it
for NonLocal).
Refs #3988.
Paul Bauer [Wed, 24 Mar 2021 10:17:11 +0000 (11:17 +0100)]
Change logic for checksumming availability
Changed order of checks to see if we can calculate the checksum or not.
Joe Jordan [Fri, 26 Mar 2021 12:08:14 +0000 (12:08 +0000)]
Use ArrayRefs instead of mdatoms in gmx_nb_free_energy_kernel signature
In addition to helping facilitate the coming mdatoms refactoring,
this is needed to facilitate calling gmx_nb_free_energy_kernel from
nblib without constructing mdatoms.
Szilárd Páll [Fri, 26 Mar 2021 08:14:16 +0000 (08:14 +0000)]
Allow setting nbnxm cluster size for SYCL
Rename GMX_OPENCL_NB_CLUSTER_SIZE to GMX_GPU_NB_CLUSTER_SIZE and use its
value in SYCL builds too. The former is still taken into account at
cmake-time, but users are advised to use the latter.
Refs #3847 #3933 #3935
Berk Hess [Thu, 25 Mar 2021 19:24:23 +0000 (19:24 +0000)]
Localize variables in do_lbfgs()
Also replaced pointers by std::vector.
Joe Jordan [Thu, 25 Mar 2021 19:04:20 +0000 (19:04 +0000)]
Use more vectors for EnergyOutput private members
Artem Zhmurov [Thu, 25 Mar 2021 18:28:42 +0000 (18:28 +0000)]
Unify gpu_upload_shiftvec(...) function in NBNXM
Refs. #2608
Joe Jordan [Thu, 25 Mar 2021 16:53:45 +0000 (16:53 +0000)]
Constructor for t_tabledata
Added default and specialized constructors for t_tabledata. With
one additional minor change this means that smalloc header is no
longer needed in forcetable.cpp.
ejjordan [Wed, 24 Mar 2021 22:33:40 +0000 (23:33 +0100)]
ArrayRef and const ref in gmx_nb_free_energy_kernel
Use const ref where possible in nonbonded free energy kernels. Also
use ArrayRef for passing coordinates.
Joe Jordan [Thu, 25 Mar 2021 10:48:38 +0000 (10:48 +0000)]
Use ArrayRef in special forces
Pass ArrayRef<RVec> instead of rvec* in edsam, pull_rotation, and
imd. Also removed unneeded header basedefinitions.
A followup change can refactor communicate_group_positions to take
ArrayRefs.
ejjordan [Wed, 24 Mar 2021 23:02:22 +0000 (00:02 +0100)]
Fix some doxygen errors
Mark Abraham [Thu, 25 Mar 2021 06:32:24 +0000 (07:32 +0100)]
Fixed unused variable warning
Joe Jordan [Thu, 25 Mar 2021 06:11:17 +0000 (06:11 +0000)]
Use ArrayRef in signatures of constraints and some pulling
In order to use ArrayRef in constr, settle, shake, and lincs, some
pull code also needed to be refactored. Part of preparation for
refactoring of t_mdatoms.
Paul Bauer [Wed, 24 Mar 2021 12:49:52 +0000 (12:49 +0000)]
Inline wallcycle counting functions
Inlines start and stop functions for wallcycle counting.
Andrey Alekseenko [Wed, 24 Mar 2021 11:54:55 +0000 (11:54 +0000)]
Unify nbnxn_gpu_init_x_to_nbat_x
Previously, we had this function only for CUDA, but we will need it for
SYCL (#3932). OpenCL implementation is unlikely to be needed, but should
not hurt either.
Refs. #2608
Andrey Alekseenko [Wed, 24 Mar 2021 10:52:51 +0000 (13:52 +0300)]
Add missing GMX_ASSERT(haveCopiedXFromGpu)
We make this assertion every time we call
stateGpu->waitCoordinatesReadyOnHost(AtomLocality::Local) in the
do_force function.
This does not fix any bugs, just makes the code a bit more consistent in
how it checks self-consistency.
Refs #3988.
ejjordan [Wed, 24 Mar 2021 08:14:07 +0000 (09:14 +0100)]
Remove nb_kernel_data_t
All data was copied from gmx_enerdata_t. Now use ArrayRefs to pass
the parameters to the kernels.
ejjordan [Tue, 23 Mar 2021 15:56:26 +0000 (16:56 +0100)]
Remove unneeded members from nb_kernel_data_t
Several unused members are removed from nb_kernel_data_t. Additionally,
some members that can be passed directly from the gmx_enerdata_t
struct are removed, and instead added to the call signature of
gmx_nb_free_energy_kernel. This expansion of the call signature
is the only way to get rid of the real* members of nb_kernel_data_t.
Also, function with no implementation is removed.
Paul Bauer [Tue, 23 Mar 2021 15:07:16 +0000 (16:07 +0100)]
Use TextWriter in msd tests
Removes raw file pointer for mdp input file writing.
Fixes #3986
Berk Hess [Tue, 23 Mar 2021 14:47:26 +0000 (14:47 +0000)]
Add comparison operator to BasicVector
The default comparison seemed to compare the memory addresses
and not the elements.
Szilárd Páll [Tue, 23 Mar 2021 13:44:45 +0000 (13:44 +0000)]
Fix deviceIdsAssigned() to return a unique list of IDs
The method originally returned the rank's task-to-device mapping
rather than the unique list of devices that have been assigned tasks.
When #ranks > #devices this list contains duplicate device IDs.
Due to the changes made in
e2a2fe80 the vector returned by
deviceIdsAssigned() was passed to setupGpuDevicePeerAccess()
which results in redundant attempts to repeatedly enable peer access for
the same device pairs.
Refs #3980
ejjordan [Tue, 23 Mar 2021 10:29:00 +0000 (11:29 +0100)]
Forward declare ArrayRef more and inlcude basedefinitions where needed
Remove many includes of ArrayRef that can be forward declared. Also
remove includes of basedefinitions in many headers. In some cases
removing basedefinitinos meant also changing gmx_bool to bool.
Note that no change to source files is needed, apart from possibly
adding the basedefintions include, because gmx_bool uses true and
false under the hood.
Joe Jordan [Tue, 23 Mar 2021 10:15:33 +0000 (10:15 +0000)]
Modernize t_nrnb
* Use array instead of pointer.
* Remove unused functions.
* Add doxygen to inc_nrnb.
* Use inline function instead of macro in all places where possible.
* Remove unused headers.
Joe Jordan [Tue, 23 Mar 2021 09:40:41 +0000 (09:40 +0000)]
Use ArrayRef in calc_mu
ejjordan [Mon, 22 Mar 2021 09:30:50 +0000 (10:30 +0100)]
More const ref in shellfc
Pass a const ref to t_mdatoms in shellfc functions. Part of work
to make refactoring t_mdatoms easier.
Gaurav Garg [Wed, 17 Mar 2021 08:27:35 +0000 (08:27 +0000)]
Detect CUDA-aware support in underlying MPI implementation
Checks CUDA-aware MPI support at cmake configuration time and at runtime. Print CUDA-aware MPI support status with gmx -version.
ejjordan [Mon, 22 Mar 2021 11:49:54 +0000 (12:49 +0100)]
Use ArrayRef in do_ewald
Also removed a function with no implementation.
Mark Abraham [Mon, 22 Mar 2021 09:49:30 +0000 (09:49 +0000)]
Use StringToEnumValueConverter and enumValueToString more
Follow up from MR 1213
Andrey Alekseenko [Mon, 22 Mar 2021 09:09:33 +0000 (09:09 +0000)]
Fix compiler and linter warnings
- Unused variables in pme_pp.cpp
- Insufficient NOLINTing in update.cpp
Andrey Alekseenko [Fri, 19 Mar 2021 21:55:19 +0000 (00:55 +0300)]
Remove incorrect assertion for GPU timing in SYCL
- The expression was backwards: it was failing when timing was disabled
instead of failing when it is enabled.
- The expression was run on a freshly-initialized data structure, and
the value of bDoTime was always overridden later, so it was not
actually checking anything.
Since we anyway never set bDoTime to true in SYCL build, we might as
well remove this assertion here altogether.
Introduced in !1296 (
c4a672b93b655ff674b671fd10ebe728b2d19ec8).
Kevin Boyd [Sat, 20 Mar 2021 21:43:58 +0000 (14:43 -0700)]
Clean up leaks in t_inputrec
Refs #3984
Szilárd Páll [Fri, 19 Mar 2021 19:04:42 +0000 (20:04 +0100)]
Remove a misplaced update cycle closing
This was removed in
b80b7a327b1 but got added back later presumably
during a merge.
Refs #3764
Szilárd Páll [Wed, 10 Mar 2021 10:50:47 +0000 (11:50 +0100)]
Rename sendFToPpCudaDirect
sendFSynchronizerToPpCudaDirect expresses what the method actually does.
Artem Zhmurov [Thu, 18 Mar 2021 06:49:18 +0000 (09:49 +0300)]
Move the atomToInteractionLocality(...) into locality.h
The atomToInteractionLocality(...) does not depend on NBNXM
and can naturally reside alongside the definitions of localitiy
enumerations. This allows to combine haveGpuShortRangeWork(...)
functions in NBNXM, avoding confuciton of having two very similar
functions with different signatures.
Andrey Alekseenko [Wed, 10 Mar 2021 11:53:49 +0000 (14:53 +0300)]
Store buffer without offset in GpuForceReduction::Impl::baseForce_
- Store the pointer to the beginning of the array and apply offset to
it when invoking the kernel. Offsets to other arrays are applied at
the invocation time, so it makes sense to do the same with baseForce_.
- This also avoid storing pointers to the middle of the device buffer,
which is not a good fit for OpenCL and SYCL.
This change is preparation for adding a SYCL implementation of GPU
update (Issue #3932).
Artem Zhmurov [Fri, 19 Mar 2021 16:48:38 +0000 (16:48 +0000)]
Unify init_gpu function in NBNXM
Refs. #2608
Andrey Alekseenko [Tue, 16 Mar 2021 10:03:24 +0000 (11:03 +0100)]
Use DeviceBuffer<RVec> in GPU force reduction and PME code
... instead of raw device pointers.
Preparation for #3932. PME change is incidental, the main focus is
GpuForceReduction.
Andrey Alekseenko [Tue, 16 Mar 2021 11:21:51 +0000 (12:21 +0100)]
Enable compiling LeapFrog with hipSYCL
No testing yet. Trivial change after !1268.
Closes #3941.
Paul Bauer [Fri, 19 Mar 2021 11:45:06 +0000 (12:45 +0100)]
Bulk change to const ref for mtop
Change function signatures in mtop_lookup.h and mtop_util.h to be const
ref only for mtop. Also change signatures in other files as I went
along.
This change is only refactoring.
Paul Bauer [Fri, 19 Mar 2021 07:59:47 +0000 (08:59 +0100)]
Make wallcycle comments proper doxygen
Should reduce noise in other refactoring commits.
Berk Hess [Fri, 19 Mar 2021 12:42:49 +0000 (12:42 +0000)]
Remove const cast in update code
Joe Jordan [Fri, 19 Mar 2021 11:45:23 +0000 (11:45 +0000)]
Use more arrayref in listed forces sigatures
Pass members of t_mdatoms directly in many places in listed_forces.
Part of work on making refactor of t_mdatoms easier.
Paul Bauer [Fri, 19 Mar 2021 11:11:49 +0000 (11:11 +0000)]
Remove mdatoms from forceprovider call signature
This makes it possible to test the forceprovider without having to build
a partial mdatoms datastructure first. Needed for future refactoring of
mdatoms.
Joe Jordan [Fri, 19 Mar 2021 10:50:48 +0000 (10:50 +0000)]
Use ArrayRef in ewald_LRcorrection
This will make refactoring t_mdatoms easier. Also changed
signatures of calculateLongRangeNonbondeds to use more
ArrayRef.
Joe Jordan [Fri, 19 Mar 2021 09:54:58 +0000 (09:54 +0000)]
Make non bonded energy terms enum class
Also renamed some of the enum values.
Andrey Alekseenko [Fri, 19 Mar 2021 08:13:39 +0000 (11:13 +0300)]
Fix a warning from CUDA 10.1
Discovered during nightly build:
warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
ejjordan [Thu, 18 Mar 2021 15:42:02 +0000 (16:42 +0100)]
Use ArrayRef in gmx_pme_send_parameters
This will make refactoring t_mdatoms easier.
ejjordan [Thu, 18 Mar 2021 16:05:02 +0000 (17:05 +0100)]
Use const refs in atoms2md signature
Const refs are now used for mtop and inputrec in atoms2md. Doxygen
is also added and inputrec renamed from ir.
Paul Bauer [Thu, 18 Mar 2021 17:12:34 +0000 (17:12 +0000)]
Add wallcycle counting tests
Basic tests for running main and sub counters, and to check overhead.
Andrey Alekseenko [Thu, 11 Mar 2021 10:48:06 +0000 (13:48 +0300)]
Use DeviceBuffer in GPU update and NBNXM code
... instead of raw device pointers and DeviceBuffer<float3>.
We try to use DeviceBuffer<Float3>, but in some places we have to use
DeviceVector<gmx::RVec>, until we can define FloatN types without
including any backend-specific headers. Currently, Float3 is defined as
gmx::RVec, so this should not cause any issues.
Also added some helper functions to convert RVec ̌<-> Float3 <-> float3.
Preparation for #3932 and #3941.
ejjordan [Wed, 17 Mar 2021 09:31:48 +0000 (10:31 +0100)]
Use ArrayRef<const real> in gmx_pme_do
Also changed some static functions to use ArrayRef. Some local
variables need to be vectors because they use operator[]. This
is part of preliminary work to make refactoring t_mdatoms
easier.
Paul Bauer [Wed, 17 Mar 2021 05:59:56 +0000 (05:59 +0000)]
Fix errors overlooked in gmx msd changes
Made some NOLINT sections more broad.
Fixed documentation.
Joe Jordan [Tue, 16 Mar 2021 18:03:19 +0000 (18:03 +0000)]
Use RVec and std::array in gmx_domdec_comm_t
Where possible, rvecs have been changed to RVecs and pointers
changed to std::arrays.
Kevin Boyd [Tue, 16 Mar 2021 17:28:24 +0000 (17:28 +0000)]
Migrate gmx msd to the trajectoryanalysis framework
Features to still be added
-tensor, for the MSD tensor
-pdb, for per molecule B-factors
-rmcomm, for system COM removal
-mw, for tuning mass-weighting options
-maxtau, for limiting resource usage and unneccessary computation (refs #3870)
-improvements to documentation and maybe some flag behavior changes (refs #3869)
Refs #2368
Artem Zhmurov [Tue, 16 Mar 2021 12:53:21 +0000 (15:53 +0300)]
Unify gpu_init_atomdata(...) function
Refs #2608
Artem Zhmurov [Tue, 16 Mar 2021 13:26:37 +0000 (16:26 +0300)]
Unify gpu_launch_cpyback(...) function in NBNXM
Refs #2608
Joe Jordan [Tue, 16 Mar 2021 11:21:10 +0000 (11:21 +0000)]
Remove conditional assignemnt of cell sizes from domdec partition
The variable cellsizesWithDlb is always initiallized since it is a
std::vector, so there is no reason to set it to nullptr in
domdec/partition.
Artem Zhmurov [Sat, 13 Mar 2021 13:13:14 +0000 (16:13 +0300)]
Unify gpu_init_atomdata(...) function
Refs #2608
Artem Zhmurov [Mon, 15 Mar 2021 16:57:02 +0000 (19:57 +0300)]
Move pmalloc(..)/pfree(...) to separate source files in CUDA/OpenCL/SYCL
Having pmalloc(..) and pfree(..) functions in unrelated files in CUDA,
OpenCL and SYCL makes it hard to use these functions in platform-agnostic
code. This creates common header and moves these functions to separate
source files.
Paul Bauer [Mon, 15 Mar 2021 13:56:18 +0000 (14:56 +0100)]
Add subcycle counting to MPI build
This code path has not been tested in CI and should be added.
Paul Bauer [Mon, 15 Mar 2021 14:59:03 +0000 (14:59 +0000)]
Move M_PI definition to math/units.h
This makes more sense to have the definition there with the other
constants.
Resolves build issues with MSVC not finding M_PI definition.
Needed some minor header fixes.
Paul Bauer [Mon, 15 Mar 2021 10:06:16 +0000 (11:06 +0100)]
Add another cool quote.
Recently seen on Twitter ...
Artem Zhmurov [Mon, 15 Mar 2021 09:12:04 +0000 (12:12 +0300)]
Do not overallocate shiftVec and fshifts buffers in OpenCL
When changing buffers from flat float format to Float3,
the sizes of the shiftVec and fshift buffers were not updated
in OpenCL NBNXM data management, which lead to the buffers being
overallocated. This fixes the issue.
Introduced in
c66827166fc9099ecd1a4a2f7080558df70bf529
Artem Zhmurov [Mon, 15 Mar 2021 10:16:45 +0000 (10:16 +0000)]
Add a cool quote from Elvis Presley's song
Artem Zhmurov [Mon, 15 Mar 2021 09:09:49 +0000 (12:09 +0300)]
Fix clang-format in topio.cpp
Introduced in
0dab36f99294056b33f4ee58383587a82447b9e6
Kevin Boyd [Sun, 14 Mar 2021 19:53:15 +0000 (12:53 -0700)]
Fix leak in cpp_opts
Refs #3984
Szilárd Páll [Fri, 5 Mar 2021 19:29:38 +0000 (20:29 +0100)]
Use existing PME f ready event in PmeForceSenderGpu
Instead of recording internally into the PME stream and sending that
event to the PP rank to sycn on from the separate PME rank, use the
already existing event recorded in PME.
This also eliminates the unnecessary use of multiple events, one for
each PP rank.
Refs #2891 #2915
Szilárd Páll [Sat, 13 Mar 2021 11:05:43 +0000 (11:05 +0000)]
Rename launchReceiveCoordinatesFromPpCudaDirect
The receiveCoordinatesSynchronizerFromPpCudaDirect() method name better
reflects what the code it actually does.
Refs #2891
Paul Bauer [Sat, 13 Mar 2021 08:31:24 +0000 (08:31 +0000)]
Remove cyclic dependency check from check-source
This hasn't been properly checked for a while now and we are planning to
move this to a CMake check anyway.
Andrey Alekseenko [Fri, 12 Mar 2021 15:46:48 +0000 (15:46 +0000)]
Add DeviceAccessor<T,read> ctor from const DeviceBuffer<T>
A bit hacky, but better preserves the intent behind declaring
DeviceBuffer const.
Part of preparatory work for #3932.
Paul Bauer [Fri, 12 Mar 2021 11:44:11 +0000 (11:44 +0000)]
Modernize PME GPU timing enums
Part of general modernization of enums to enum classes.
Used enumerationarray in places where it made sense.
Alan Gray [Fri, 12 Mar 2021 06:52:02 +0000 (06:52 +0000)]
Move responsibility for GPU force clearing to state propagator
Force was previously cleared within GPU force halo exchange which was
quite opaque. Now moved into do_force() and done by state propagator,
to make schedule clearer.
Fixes #3971 and partly addresses #3970
Artem Zhmurov [Thu, 11 Mar 2021 20:04:05 +0000 (20:04 +0000)]
Unify insertNonLocalDependency(...) function in NBNXM
Refs #2608
Szilárd Páll [Thu, 11 Mar 2021 10:54:19 +0000 (10:54 +0000)]
Simplify gmx_pme_send_force_vir_ener()
sendFToPP() provided no benfit, so code is merged back into the caller.
Also removed unused send bufer pointers.
Alan Gray [Thu, 11 Mar 2021 09:26:58 +0000 (09:26 +0000)]
Fix unit test error due to GPU peer access already enabled
Fixes #3980
Artem Zhmurov [Thu, 11 Mar 2021 04:40:32 +0000 (07:40 +0300)]
Fix clang-tidy failures in AWH tests
Commit
d4610e91e7815756f728e68785b58b884aead153 introduced a
clang-tidy warning in AWH tests with integer used in place of
bool argument (modernize-use-bool-literals,-warnings-as-errors).
This removes these warnings.
Andrey Alekseenko [Thu, 11 Mar 2021 05:33:39 +0000 (05:33 +0000)]
Properly check for frozen atoms when disabling GPU update
Follow-up of !1241 (
9550c3e8564068c86a0f34baee0f578e8ce6d5a9)
Initially, the check was overly relaxed, and was triggered even when
there were no frozen atoms.
Thanks to @alangray3 for noticing!
Paul Bauer [Wed, 10 Mar 2021 20:06:31 +0000 (20:06 +0000)]
Make AWH parameters proper C++
All structs have been converted to classes with RAII constructors.
Parameter objects can only be constructed from input data or
serializers.
Tests are adapted to use the new constructors, this means some code got
a bit ugly there.
This change is only refactoring, plus adding tests for the
serialization.
Artem Zhmurov [Wed, 10 Mar 2021 18:34:49 +0000 (18:34 +0000)]
Rename some variables in GPU task assignment and fix their usage
Some variables are oddly named which causes a confusion. This changes
the naming so that it reflects the meaning of the variables. Also,
fixes a miss0use of one of such variables cause by the bad naming.
Fixes #3980
Fixes #3981
Artem Zhmurov [Wed, 10 Mar 2021 09:43:52 +0000 (12:43 +0300)]
Rework atom locality validity checks
The function that checks the validity of atom locality partly
duplicates its callers logic. The chacks are done naturally in
the callers and the function is used to construct and print
an error message.
Andrey Alekseenko [Wed, 10 Mar 2021 10:37:52 +0000 (13:37 +0300)]
Convert PmeGpu->kernelParams->atoms.d_forces to RVec
In most other places, forces are in RVec format, while it was float
here. While it is used as float in gather kernels, it is more consistent
to keep the buffer type as RVec.
This change is preparation for adding a SYCL implementation of GPU
update (Issue #3932).
Joe Jordan [Wed, 10 Mar 2021 12:37:49 +0000 (12:37 +0000)]
Remove param fillLocal, which was always false, from nbnxm call stack
Several functions in nbnxm took a bool to determine whether to fill
local atoms with zeros, but the parameter was always set to false.
This is now removed from the function signatures, and some code is
slightly simplified.
Paul Bauer [Wed, 10 Mar 2021 09:39:18 +0000 (10:39 +0100)]
Change vector references to Arrayref in AWH
Preparation for further refactoring.
Andrey Alekseenko [Wed, 10 Mar 2021 09:06:41 +0000 (09:06 +0000)]
Revert "Wrap more device pointers in DeviceBuffer" (!1244)
This reverts commit
850429f3ebe34d27dabed6d8c31c08968befd1f5,
which broke some MPI functionality, as revealed in post-merge tests.
Pascal Merz [Wed, 10 Mar 2021 05:58:07 +0000 (22:58 -0700)]
Don't test for pressure in replica exchange regression
Pressure is not reproducible enough to have reliable regression tests.
The failures described in #3976 happen on step 0, so are independent
of replica exchange.
This change replaces testing for the pressure by testing for the
volume, where possible.
Fixes #3976
Andrey Alekseenko [Wed, 10 Mar 2021 05:55:30 +0000 (05:55 +0000)]
Disable GPU update in the presence of frozen atoms
There is a known bug (Issue #3920) affecting GPU update when frozen
atoms are present. While the bug is being resolved, we mark such
configuration as not allowed.
Refs #3920
Andrey Alekseenko [Wed, 10 Mar 2021 05:28:27 +0000 (05:28 +0000)]
Wrap more device pointers in DeviceBuffer
Store and pass around more device pointers as DeviceBuffer<T>
instead of as a raw or even void pointer.
Related changes:
- PmeGpu->kernelParams->atoms.d_forces is now RVec, not float. Forces in
most other places are RVec, so it seems more logical.
- GpuForceReduction::Impl::baseForce_ now stores pointer to the
beginning of the array, without shift.
Artem Zhmurov [Tue, 9 Mar 2021 16:17:15 +0000 (19:17 +0300)]
Unify gpu_copy_xq_to_gpu(...) function
Refs. #2608
ejjordan [Tue, 9 Mar 2021 15:16:05 +0000 (16:16 +0100)]
Move radian-angle conversions to math/utility
The constant M_PI is always defined there, and conversion is more
properly a utility than a unit.
Joe Jordan [Tue, 9 Mar 2021 14:33:55 +0000 (14:33 +0000)]
Use constexpr for physical constants and move them into gmx namespace
The physical constants that are part of the public API are converted from
defines to constexprs and are moved into the gmx namespace. This means
that many files are touched with tirvial changes. The benefit is that
now the risk of symbol collision is reduced in cases where a library
might depend on these constants.
Additionally, in the same vein of library cleanup, the math/utility
header is removed from units header and included only in the sources
that actually need it.
Paul Bauer [Tue, 9 Mar 2021 13:37:55 +0000 (13:37 +0000)]
Fix missing stdint.h
MSVC complained about missing definitions for int64_t because stdint.h was
not included.