Project

General

Profile

Feature #2885

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

CUDA version of LINCS

Added by Artem Zhmurov about 2 months ago. Updated about 1 month ago.

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

Description

Adapt the LINCS constraints to work efficiently on CUDA-enabled GPUs.

TODO:

  • A separate class that contains the logic.
  • Reduction for the virial using shuffle.
  • PLINCS.
  • Many-GPU version.
  • Free energy.

Ideas for kernel improvement:

  • Use analytical solution for matrix A inversion (for small matrices of H-bonds constraints), inverted matrix itself can be reused rather than recomputed.
  • Move more data to local/shared memory and try to get rid of atomics (at least on the device level).
  • Use locality of coupled constraints better (maybe go from block-sync to warp-sync)
  • Introduce mapping of thread id to both single constraint and single atom, thus designating Nth threads to deal with Nat <= Nth coupled atoms and Nc <= Nth coupled constraints.

Testing:

  • Initial integration to the constraints test.
  • Add bigger systems to test virial reduction and overall redistribution of constraints among threads.
  • Generalization of tests for different platforms.

Current version of the code is in gerrit change 9193 (https://gerrit.gromacs.org/#/c/9193/).


Related issues

Related to GROMACS - Feature #2886: CUDA version of SETTLENew
Related to GROMACS - Feature #2887: CUDA version of Leap Frog algorithmNew
Related to GROMACS - Feature #2888: CUDA Update and Constraints moduleNew

History

#1 Updated by Artem Zhmurov about 2 months ago

#2 Updated by Artem Zhmurov about 2 months ago

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

#3 Updated by Artem Zhmurov about 2 months ago

  • Related to Feature #2888: CUDA Update and Constraints module added

#4 Updated by Artem Zhmurov about 2 months ago

  • Description updated (diff)

#5 Updated by Artem Zhmurov about 1 month ago

  • Description updated (diff)

Also available in: Atom PDF