Project

General

Profile

Feature #2888

Feature #2816: Device-side update&constraits, buffer ops and multi-gpu comms

CUDA Update and Constraints module

Added by Artem Zhmurov 5 months ago. Updated 3 months ago.

Status:
New
Priority:
Normal
Assignee:
Category:
-
Target version:
Difficulty:
uncategorized
Close

Description

  • LINCS for non-water constraints.
  • SETTLE for water constraints.
  • Leap frog integrator.
  • Merge of the three into single module.
  • Remove the scaffolding from LINCS, SETTLE and Leap-Frog:
    • Coordinates, velocities, forces management.
    • PBC management.
    • Virial reduction.
    • Update tests.
    • Remove Impl.
    • Template computeVirial and updateVelocities

Related issues

Related to GROMACS - Feature #2885: CUDA version of LINCSNew
Related to GROMACS - Feature #2886: CUDA version of SETTLENew
Related to GROMACS - Feature #2887: CUDA version of Leap Frog algorithmNew
Related to GROMACS - Task #2936: introduce check that CPU-GPU transfers are made between arrays of compatible typesNew

Associated revisions

Revision 1c8eb7c5 (diff)
Added by Artem Zhmurov about 1 month ago

Combine CUDA Leap-Frog, LINCS and SETTLE. I.

This is the first step in combining constraints and integrator
into "UpdateAndConstraints" module. The initial merge does not
imply any performance optimisation or code clean-up. Hence, this
patch keeps all the temporary infrastructure that was built
around SETTLE, LINCS and Leap-Frog to allow them to function as
a separate units. In the following commits, this infrastructure
will be removed and these three implementations will be more closely
integrated. To enable, set GMX_UPDATE_CONSTRAIN_GPU environment
variable. Note, that environment variables GMX_LINCS_GPU,
GMX_SETTLE_GPU and GMX_INTEGRATE_GPU will no longer work.

Refs #2816, #2888

Change-Id: I8730aad0ecaa0230686fe89d1157b0da2f01f7bc

Revision fb7a59cd (diff)
Added by Artem Zhmurov 21 days ago

Combine CUDA Leap-Frog, LINCS and SETTLE. II.

Stand-alone CUDA implementations of Leap-Frog, LINCS
and SETTLE required additional scaffolding for integration
and testing. The most prominent part of this is the
management of coordinates, velocities and forces, which
is removed in this commit. Management of periodic boundary
conditions and virial reduction will be removed in
following commits.

Refs #2816, #2888

Change-Id: I4c65a6c7088fd8059f4e7fa3cb4637cb2af79ebc

Revision 747c371c (diff)
Added by Artem Zhmurov 20 days ago

Memory management fixes in CUDA version of LINCS

This fix is to prepare LINCS to run with DD.

1. The masses array size depends on the current number of atoms
rather than on the number of constraints.
2. The size of other arrays should be based on the number of
threads launched on the GPU, which include padding added to
align coupled constraints with the thread blocks. Also
renamed variable according to conventions.

Refs #2885 and #2888

Change-Id: I20cb53ebc6da6a1ff2ee1e385613b27c4a01d11f

Revision 1b64f6aa (diff)
Added by Artem Zhmurov 20 days ago

Use reallocateDeviceBuffer(...) in CUDA version of SETTLE

Refs #2886 and #2888

Change-Id: Ia45254a24eda8e6ad151b1f4c6583b1a2c926004

Revision 6385f296 (diff)
Added by Artem Zhmurov 18 days ago

Remove PImpl scaffolding from CUDA version of LINCS

The CUDA implementation of LINCS was initially introduced as a
stand-alone feature. This required hiding CUDA-specific variables
and subroutines into the private implementation subclass. Since the
LINCS is not a part of Update and Constraints module, this is no
longer required and can be removed.

Refs #2816, #2888

Change-Id: I9698224d4702dfb8d99106999335c62e83a511df

History

#1 Updated by Artem Zhmurov 5 months ago

#2 Updated by Artem Zhmurov 4 months ago

#3 Updated by Artem Zhmurov 4 months ago

  • Related to Feature #2887: CUDA version of Leap Frog algorithm added

#4 Updated by Artem Zhmurov 4 months ago

  • Description updated (diff)

I have LINCS with some tests for it, SETTLE with some tests for it and Leap-Frog integrator with some tests for it. Now I combine them into one "Update and Constrain" module. Any ideas for the test that the merge was successful?

#5 Updated by Artem Zhmurov 4 months ago

  • Subject changed from CUDA GPU-only loop to CUDA Update and Constraints module
  • Description updated (diff)

#6 Updated by Gerrit Code Review Bot 4 months ago

Gerrit received a related patchset '4' for Issue #2888.
Uploader: Artem Zhmurov ()
Change-Id: gromacs~master~I8730aad0ecaa0230686fe89d1157b0da2f01f7bc
Gerrit URL: https://gerrit.gromacs.org/9329

#7 Updated by Artem Zhmurov 4 months ago

  • Description updated (diff)

#8 Updated by Artem Zhmurov 4 months ago

  • Description updated (diff)

#9 Updated by Artem Zhmurov 3 months ago

  • Description updated (diff)

#10 Updated by Artem Zhmurov 3 months ago

  • Description updated (diff)

#11 Updated by Szilárd Páll 3 months ago

  • Related to Task #2936: introduce check that CPU-GPU transfers are made between arrays of compatible types added

Also available in: Atom PDF