From 59ef1737c6f4bab4369cfb80487497bb64cea2f5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 3 Sep 2021 22:41:19 -0400 Subject: [PATCH] add communication section --- doc/src/Developer_parallel.rst | 121 ++++++++++++++++++++++++++++++++- doc/src/img/ghost-comm.png | Bin 0 -> 33712 bytes 2 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 doc/src/img/ghost-comm.png diff --git a/doc/src/Developer_parallel.rst b/doc/src/Developer_parallel.rst index 32d9c584e1..bba8b086d9 100644 --- a/doc/src/Developer_parallel.rst +++ b/doc/src/Developer_parallel.rst @@ -13,13 +13,14 @@ Partitioning ^^^^^^^^^^^^ The underlying spatial decomposition strategy used by LAMMPS for -distributed-memory parallelism is set with the :doc:`comm_style command ` -and can be either "brick" (a regular grid) or "tiled". +distributed-memory parallelism is set with the :doc:`comm_style command +` and can be either "brick" (a regular grid) or "tiled". .. _domain-decomposition: .. figure:: img/domain-decomp.png + :align: center - LAMMPS domain decomposition + domain decomposition This figure shows the different kinds of domain decomposition used for MPI parallelization: "brick" on the left with an orthogonal @@ -97,6 +98,120 @@ And using the recursive bisectioning leads to further improved decomposition (ri Communication ^^^^^^^^^^^^^ +Following the partitioning scheme the data of the system is distributed +and each MPI process stores information (positions, velocities, etc.) +for the subset of atoms within its sub-domain, called "owned" atoms. It +also stores copies of some of that information for "ghost" atoms within +the communication cutoff distance of its sub-domain, which are owned by +nearby MPI processes. This enables calculating all short-range +interactions which involve atoms the MPI process "owns" in parallel. +The dashed-line boxes in the :ref:`domain-decomposition` figure +illustrate the extended ghost-atom sub-domain for one processor. + +This approach is also used to implement periodic boundary conditions: +atoms that lie within the cutoff distance across a periodic boundary are +also stored as ghost atoms and taken from the periodic replication of +the sub-domain, which may be the same sub-domain, e.g. if running in +serial. As a consequence of this, force computation in LAMMPS is not +subject to minimum image conventions and thus cutoffs may be larger than +half the simulation domain. + +.. _ghost-atom-comm: +.. figure:: img/ghost-comm.png + :align: center + + ghost atom communication + + This figure shows the ghost atom communication patterns between + sub-domains for "brick" (left) and "tiled" communication styles for + 2d simulations. The numbers indicate MPI process ranks. Here the + sub-domains are drawn spatially separated for clarity. The + dashed-line box is the extended sub-domain of processor 0 which + includes its ghost atoms. The red- and blue-shaded boxes are the + regions of communicated ghost atoms. + +The diagrams of the `ghost-atom-comm` figure illustrate how ghost atom +communication is performed in two stages for a 2d simulation (three in +3d) for both a regular and irregular partitioning of the simulation box. +For the regular case (left) atoms are exchanged first in the +*x*-direction, then in *y*, with four neighbors in the grid of processor +sub-domains. + +In the *x* stage, processor ranks 1 and 2 send owned atoms in their +red-shaded regions to rank 0 (and vice versa). Then in the *y* stage, +ranks 3 and 4 send atoms in their blue-shaded regions to rank 0, which +includes ghost atoms they received in the *x* stage. Rank 0 thus +acquires all its ghost atoms; atoms in the solid blue corner regions +are communicated twice before rank 0 receives them. + +For the irregular case (right) the two stages are similar, but a +processor can have more than one neighbor in each direction. In the +*x* stage, MPI ranks 1,2,3 send owned atoms in their red-shaded regions to +rank 0 (and vice versa). These include only atoms between the lower +and upper *y*-boundary of rank 0's sub-domain. In the *y* stage, ranks +4,5,6 send atoms in their blue-shaded regions to rank 0. This may +include ghost atoms they received in the *x* stage, but only if they +are needed by rank 0 to fill its extended ghost atom regions in the ++/-*y* directions (blue rectangles). Thus in this case, ranks 5 and +6 do not include ghost atoms they received from each other (in the *x* +stage) in the atoms they send to rank 0. The key point is that while +the pattern of communication is more complex in the irregular +partitioning case, it can still proceed in two stages (three in 3d) +via atom exchanges with only neighboring processors. + +When attributes of owned atoms are sent to neighboring processors to +become attributes of their ghost atoms, LAMMPS calls this a "forward" +communication. On timesteps when atoms migrate to new owning processors +and neighbor lists are rebuilt, each processor creates a list of its +owned atoms which are ghost atoms in each of its neighbor processors. +These lists are used to pack per-atom coordinates (for example) into +message buffers in subsequent steps until the next reneighboring. + +A "reverse" communication is when computed ghost atom attributes are +sent back to the processor who owns the atom. This is used (for +example) to sum partial forces on ghost atoms to the complete force on +owned atoms. The order of the two stages described in the +:ref:`ghost-atom-comm` figure is inverted and the same lists of atoms +are used to pack and unpack message buffers with per-atom forces. When +a received buffer is unpacked, the ghost forces are summed to owned atom +forces. As in forward communication, forces on atoms in the four blue +corners of the diagrams are sent, received, and summed twice (once at +each stage) before owning processors have the full force. + +These two operations are used many places within LAMMPS aside from +exchange of coordinates and forces, for example by manybody potentials +to share intermediate per-atom values, or by rigid-body integrators to +enable each atom in a body to access body properties. Here are +additional details about how these communication operations are +performed in LAMMPS: + +- When exchanging data with different processors, forward and reverse + communication is done using ``MPI_Send()`` and ``MPI_IRecv()`` calls. + If a processor is "exchanging" atoms with itself, only the pack and + unpack operations are performed, e.g. to create ghost atoms across + periodic boundaries when running on a single processor. + +- For forward communication of owned atom coordinates, periodic box + lengths are added and subtracted when the receiving processor is + across a periodic boundary from the sender. There is then no need to + apply a minimum image convention when calculating distances between + atom pairs when building neighbor lists or computing forces. + +- The cutoff distance for exchanging ghost atoms is typically equal to + the neighbor cutoff. But it can also chosen to be longer if needed, + e.g. half the diameter of a rigid body composed of multiple atoms or + over 3x the length of a stretched bond for dihedral interactions. It + can also exceed the periodic box size. For the regular communication + pattern (left), if the cutoff distance extends beyond a neighbor + processor's sub-domain, then multiple exchanges are performed in the + same direction. Each exchange is with the same neighbor processor, + but buffers are packed/unpacked using a different list of atoms. For + forward communication, in the first exchange a processor sends only + owned atoms. In subsequent exchanges, it sends ghost atoms received + in previous exchanges. For the irregular pattern (right) overlaps of + a processor's extended ghost-atom sub-domain with all other processors + in each dimension are detected. + Neighbor lists ^^^^^^^^^^^^^^ diff --git a/doc/src/img/ghost-comm.png b/doc/src/img/ghost-comm.png new file mode 100644 index 0000000000000000000000000000000000000000..a402daa0540c4af299e309cd9094e9fd1825953e GIT binary patch literal 33712 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