Commit 2e5b13c3 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

provide a minimal documentation for optional flags to optimize certain operations on many MPI ranks

parent f44bab7c
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -13,7 +13,8 @@ comm_modify command :h3
comm_modify keyword value ... :pre

zero or more keyword/value pairs may be appended :ulb,l
keyword = {mode} or {cutoff} or {cutoff/multi} or {group} or {vel} :l
keyword = {mode} or {cutoff} or {cutoff/multi} or {group} or {vel} or
{ring_neighbors} :l
  {mode} value = {single} or {multi} = communicate atoms within a single or multiple distances
  {cutoff} value = Rcut (distance units) = communicate atoms from this far away
  {cutoff/multi} type value
@@ -21,6 +22,8 @@ keyword = {mode} or {cutoff} or {cutoff/multi} or {group} or {vel} :l
     value = Rcut (distance units) = communicate atoms for selected types from this far away
  {group} value = group-ID = only communicate atoms in the group
  {vel} value = {yes} or {no} = do or do not communicate velocity info with ghost atoms :pre
  {ring_neighbors} value = {yes} or {no} = do or do not use optimize ring
communication to only nearest neighbors :pre
:ule

[Examples:]
@@ -143,6 +146,11 @@ with its "remap v" option enabled, then the velocities for ghost atoms
also include components due to any velocity shift that occurs across
that boundary (e.g. due to dilation or shear).

The {ring_neighbors} keyword enables an optimization to perform ring
communications only to nearest neighbor processors for supported
communication operations. This can result in substabtial speedups for
calculations using a very large number of processors.

[Restrictions:]

Communication mode {multi} is currently only available for
@@ -155,5 +163,5 @@ Communication mode {multi} is currently only available for
[Default:]

The option defauls are mode = single, group = all, cutoff = 0.0, vel =
no.  The cutoff default of 0.0 means that ghost cutoff = neighbor
cutoff = pairwise force cutoff + neighbor skin.
no, ring_neighbors = no.  The cutoff default of 0.0 means that ghost
cutoff = neighbor cutoff = pairwise force cutoff + neighbor skin.
+9 −2
Original line number Diff line number Diff line
@@ -10,9 +10,11 @@ replicate command :h3

[Syntax:]

replicate nx ny nz :pre
replicate nx ny nz {keyword} :pre

nx,ny,nz = replication factors in each dimension :ul
nx,ny,nz = replication factors in each dimension :ulb
optional {keyword} = {bbox} :l
  {bbox} = restrict processors used in communicating replicated atoms :ule

[Examples:]

@@ -43,6 +45,11 @@ file that crosses a periodic boundary should be between two atoms with
image flags that differ by 1.  This will allow the bond to be
unwrapped appropriately.

The optional keyword {bbox} allows to restrict the number of processors
used in the communication of the replicated atoms, and thus can result in
substantial speedups for calculations using a large number of processors.
It does require temporarily using more memory.

[Restrictions:]

A 2d simulation cannot be replicated in the z dimension.
+6 −3
Original line number Diff line number Diff line
@@ -309,9 +309,12 @@ void Comm::modify_params(int narg, char **arg)
      else if (strcmp(arg[iarg+1],"no") == 0) ghost_velocity = 0;
      else error->all(FLERR,"Illegal comm_modify command");
      iarg += 2;
    } else if (strcmp(arg[iarg],"ring_neighbor") == 0) {
      neighborflag = 1;
      iarg++;
    } else if (strcmp(arg[iarg],"ring_neighbors") == 0) {
      if (iarg+2 > narg) error->all(FLERR,"Illegal comm_modify command");
      if (strcmp(arg[iarg+1],"yes") == 0) neighborflag = 1;
      else if (strcmp(arg[iarg+1],"no") == 0) neighborflag = 0;
      else error->all(FLERR,"Illegal comm_modify command");
      iarg += 2;
    } else error->all(FLERR,"Illegal comm_modify command");
  }
}