Project

General

Profile

Integration planning for GROMACS 2020 GPU features » History » Version 12

Szilárd Páll, 10/02/2019 11:50 AM

1 1 Mark Abraham
h1. Integration planning for GROMACS 2020 GPU features
2 1 Mark Abraham
3 1 Mark Abraham
We have a set of target functionality to integrate by 9/16. (TODO record that)
4 1 Mark Abraham
5 1 Mark Abraham
Due 8/30
6 1 Mark Abraham
7 1 Mark Abraham
* GPU halo-exchange for positions. Coding assigned to Alan. Review assigned to Mark and Berk.
8 5 Mark Abraham
  Status - code in gerrit, class+file+method naming input given, can merge when revised accordingly
9 1 Mark Abraham
10 12 Szilárd Páll
_DONE with follow-up work needed ASAP, see TODOs in code, in #2890, and subtasks of #2890_
11 12 Szilárd Páll
12 1 Mark Abraham
Due 9/2
13 1 Mark Abraham
14 1 Mark Abraham
* pp-pme exchange class. Coding assigned to Alan. Review assigned to Mark, Berk.
15 8 Alan Gray
  Status - https://gerrit.gromacs.org/c/gromacs/+/12783 awaiting further review/merge.
16 12 Szilárd Páll
  _Reviewed/Ready, merge pending rebase (StatePropagator upstream improvements?)_
17 1 Mark Abraham
* simulation flags structs. Coding assigned to Szilard. Review assigned to Mark, Berk, Paul, Erik.
18 1 Mark Abraham
  Status - WIP at https://gerrit.gromacs.org/c/gromacs/+/11622, would benefit from FTF discussion on how to describe lifetime and intent for this initial patch, whose form is understood to be unlike what we want in the long term
19 12 Szilárd Páll
    _DONE_
20 8 Alan Gray
* -Question: Does multi-domain GPU-halo-exchange force handling support adding extra CPU forces?- Alan's answer: I believe it should do (if an H2D copy of CPU forces is placed before the halo exchange), since the non-local part from the remote GPU wil be accumulated into the local part of the force buffer.   
21 12 Szilárd Páll
    _DONE_
22 1 Mark Abraham
23 1 Mark Abraham
Due 9/3
24 1 Mark Abraham
25 1 Mark Abraham
* LF pressure-coupling support for GPU-based update. Coding assigned to Artem. Review assigned to TODO.
26 1 Mark Abraham
  Status - P-R is plus2 on gerrit at https://gerrit.gromacs.org/c/gromacs/+/12477. Berendsen support easy to add in a future patch?
27 12 Szilárd Páll
    _DONE_
28 1 Mark Abraham
* tests covering .mdp nst* flags, in particular for well chosen co-prime cases to prevent unexpected behavior changes. Also can we test e.g. forces with FEP on non-output steps. Coding assigned to Mark. Review assigned to TODO.
29 1 Mark Abraham
  Status - start work Monday afternoon
30 12 Szilárd Páll
    *Status?*
31 7 Artem Zhmurov
* Make GPU version of StatePropagatorData. Coding assigned to Artem. Review assigned to Erik, Mark.
32 7 Artem Zhmurov
  Status - awaiting patch from Artem. Naming decision recorded at https://gerrit.gromacs.org/c/gromacs/+/11986
33 12 Szilárd Páll
    _DONE; follow-up WIP linking tasks with event dependencies_
34 1 Mark Abraham
35 1 Mark Abraham
Due 9/5
36 1 Mark Abraham
37 1 Mark Abraham
* Clean up to make a PP-rank "PME force receiver". Coding assigned to Mark. Review assigned to Alan, Paul, Berk.
38 10 Alan Gray
  Status: awaiting pp-pme exchange class stabilizing. Also review of clfft init change https://gerrit.gromacs.org/c/gromacs/+/12897.
39 12 Szilárd Páll
    _DONE_
40 10 Alan Gray
* Code to receive PME-rank forces on PP-rank GPU buffers (avoiding CPU). Coding assigned to Alan. Review assigned to Szilard, Berk, Mark.
41 1 Mark Abraham
  Status: Code at https://gerrit.gromacs.org/c/gromacs/+/12980 awaiting review.
42 12 Szilárd Páll
    _Reviewed (Szilard); merge pending rebase_
43 1 Mark Abraham
44 1 Mark Abraham
Due 9/6
45 1 Mark Abraham
46 9 Alan Gray
* Halo-exchange class for force. Coding assigned to Alan. Review assigned to Szilard, Mark, Berk.
47 1 Mark Abraham
  Status: Code in Gerrit at https://gerrit.gromacs.org/c/gromacs/+/12943. Awaiting review.
48 12 Szilárd Páll
    _DONE_
49 3 Mark Abraham
* Stitching together high-level single-GPU logic to achieve performance. Coding assigned to Artem. Review assigned to Erik, Mark.
50 1 Mark Abraham
  Status: Awaiting progress on GPU StatePropagatorData patch
51 12 Szilárd Páll
    Status: *WIP*, coordinates producers' linking to PME/buf ops: https://gerrit.gromacs.org/c/gromacs/+/13483, https://gerrit.gromacs.org/c/gromacs/+/13484/3
52 1 Mark Abraham
* Lift cr->duty assignment out of init_domain_decomposition(). Coding assigned to Berk. Review assigned to Mark, Paul, Szilard.
53 12 Szilárd Páll
    *Status?*
54 1 Mark Abraham
55 11 Alan Gray
Due 9/9
56 1 Mark Abraham
57 1 Mark Abraham
* Class containing Pme-pp exchange for coordinate buffers. Coding Assigned to Alan. Review assigned to Szilard, Berk, Mark.
58 1 Mark Abraham
  Status: Code at https://gerrit.gromacs.org/c/gromacs/+/13043 awaiting review.
59 12 Szilárd Páll
    *Rebase needed!*
60 1 Mark Abraham
* refinement of simulation flag structs. Coding assigned to Szilard. Review assigned to Mark, Berk, Paul, Erik.
61 12 Szilárd Páll
  Status: -awaiting submission of earlier patch-
62 12 Szilárd Páll
    _DONE / follow-up needed: SimulationWorkload flags prepared after task assignment_
63 1 Mark Abraham
64 1 Mark Abraham
Due 9/12 
65 1 Mark Abraham
66 1 Mark Abraham
* Stitching together high-level multi-GPU logic to achieve performance. Coding assigned to TODO. Will need input from many people
67 12 Szilárd Páll
  Status: precursors WIP (13427, 13494); related tasks on #2890
68 1 Mark Abraham
69 1 Mark Abraham
Due 9/14
70 1 Mark Abraham
71 1 Mark Abraham
* mdrun user interface + choices of defaults. Coding assigned to Paul. Review assigned to Alan, Artem, Mark.
72 12 Szilárd Páll
  Status: -not started yet-
73 12 Szilárd Páll
    _Partially DONE; follow-up needed: StimulationWorkload, refine defaults selection.
74 1 Mark Abraham
75 1 Mark Abraham
Due last minute
76 1 Mark Abraham
77 1 Mark Abraham
* Link task assignment to simulation flags and high-level GPU logic. Coding assigned to TODO. Will need input from many people.
78 12 Szilárd Páll
  -Status: clfft init patch needing review https://gerrit.gromacs.org/c/gromacs/+/12897. That prepares for a patch to manage GPU streams at high level and pass handles into individual modules that need to collaborate on the ~5 streams we identified, namely nonlocal, local, pme work, pp-pme xfer, update). Waiting on Berk's patch to pull cr->duty assignment out of init_domain_decomposition(), so we can rearrange order of operations in runner so that GPU device info is available earlier, so that GPU streams can be set up before init_domain_decomposition() and init_forcerec()-
79 12 Szilárd Páll
  Status: data structures ready for simulation flags to be populated (StimulationWorkload) after task-assignment, a StimulationWorkloadBuilder is needed that takes the task-assignment output as well as some of the dev feature flags and makes a runtime-constant workload descriptor that can be passed down to do_force?(). Note that some of the current @c_useFeatureX@ flags are used to compute a per-step flag with overrides (like buffer ops), but others have the overrides built in the global boolean construction (like @c_enableGpuHaloExchange@). Distinction needs to be made between i) per-step overrides ii) feature requirements/static overrides that might be reasonable to include in StimulationWorkload flags or might be best to assert on.