diff --git a/doc/processors.html b/doc/processors.html index 4839bee67b..b927d5c533 100644 --- a/doc/processors.html +++ b/doc/processors.html @@ -13,15 +13,27 @@

Syntax:

-
processors Px Py Pz 
+
processors Px Py Pz keyword args ... 
 

Examples:

processors 2 4 4
 processors * * 5
-processors * 1 10 
+processors * * * part 1 2 multiple 
 

Description:

@@ -52,6 +64,52 @@ section for an explanation of the grid such as 1 x P x 1 will be required, which may incur extra communication costs.

+
+ +

The part keyword can be useful when running in multi-partition mode, +e.g. with the -partition">>run_style verlet/split command. It +specifies a dependency bewteen a sending partition Psend and a +receiving partition Precv which is enforced when each is setting up +their own mapping of the partitions processors to the simulation box. +Each of Psend and Precv must be integers from 1 to Np, where Np is +the number of partitions you have defined via the +command-line switch. +

+

A "dependency" means that the sending partition will create its 3d +logical grid as Px by Py by Pz and after it has done this, it will +send the Px,Py,Pz values to the receiving partition. The receiving +partition will wait to receive these values before creating its own 3d +logical grid and will use the sender's Px,Py,Pz values as a +constraint. The nature of the constraint is determined by the +cstyle argument. +

+

For a cstyle of multiple, each dimension of the sender's processor +grid is required to be an integer multiple of the corresponding +dimension in the receiver's processor grid. This is a requirement of +the run_style verlet/split command. +

+

For example, assume the sending partition creates a 4x6x10 grid = 240 +processor grid. If the receiving partition is running on 80 +processors, it could create a 4x2x10 grid, but it will not create a +2x4x10 grid, since in the y-dimension, 6 is not an integer multiple of +4. +

+
+ +

Note that you can use the partition command to +specify different processor grids for different partitions, e.g. +

+
partition yes 1 processors 4 4 4
+partition yes 2 processors 2 3 2 
+
+

IMPORTANT NOTE: If you use the partition command to +invoke different "processsors" commands on different partitions, and +you also use the part keyword, then you must insure that both the +sending and receiving partitions invoke the "processors" command that +connects the 2 partitions via the part keyword. LAMMPS cannot +easily check for this, but your simulation will likely hang in its +setup phase if this error has been made. +

Restrictions:

This command cannot be used after the simulation box is defined by a diff --git a/doc/processors.txt b/doc/processors.txt index ae5b89f8cb..ae18b3d7f3 100644 --- a/doc/processors.txt +++ b/doc/processors.txt @@ -10,15 +10,23 @@ processors command :h3 [Syntax:] -processors Px Py Pz :pre +processors Px Py Pz keyword args ... :pre -Px,Py,Pz = # of processors in each dimension of a 3d grid :ul +Px,Py,Pz = # of processors in each dimension of a 3d grid :ulb,l +zero or more keyword/arg pairs may be appended :l +keyword = {part} :l + {part} args = Psend Precv cstyle + Psend = partition # (1 to Np) which will send its processor layout + Precv = partition # (1 to Np) which will recv the processor layout + cstyle = {multiple} + {multiple} = Psend layout will be multiple of Precv layout in each dimension :pre +:ule [Examples:] processors 2 4 4 processors * * 5 -processors * 1 10 :pre +processors * * * part 1 2 multiple :pre [Description:] @@ -49,6 +57,52 @@ Note that if you run on a large, prime number of processors P, then a grid such as 1 x P x 1 will be required, which may incur extra communication costs. +:line + +The {part} keyword can be useful when running in multi-partition mode, +e.g. with the "run_style verlet/split"_run_style.html command. It +specifies a dependency bewteen a sending partition {Psend} and a +receiving partition {Precv} which is enforced when each is setting up +their own mapping of the partitions processors to the simulation box. +Each of {Psend} and {Precv} must be integers from 1 to Np, where Np is +the number of partitions you have defined via the "-partition +command-line switch"__Section_start.html#start_6. + +A "dependency" means that the sending partition will create its 3d +logical grid as Px by Py by Pz and after it has done this, it will +send the Px,Py,Pz values to the receiving partition. The receiving +partition will wait to receive these values before creating its own 3d +logical grid and will use the sender's Px,Py,Pz values as a +constraint. The nature of the constraint is determined by the +{cstyle} argument. + +For a {cstyle} of {multiple}, each dimension of the sender's processor +grid is required to be an integer multiple of the corresponding +dimension in the receiver's processor grid. This is a requirement of +the "run_style verlet/split"_run_style.html command. + +For example, assume the sending partition creates a 4x6x10 grid = 240 +processor grid. If the receiving partition is running on 80 +processors, it could create a 4x2x10 grid, but it will not create a +2x4x10 grid, since in the y-dimension, 6 is not an integer multiple of +4. + +:line + +Note that you can use the "partition"_partition.html command to +specify different processor grids for different partitions, e.g. + +partition yes 1 processors 4 4 4 +partition yes 2 processors 2 3 2 :pre + +IMPORTANT NOTE: If you use the "partition"_partition.html command to +invoke different "processsors" commands on different partitions, and +you also use the {part} keyword, then you must insure that both the +sending and receiving partitions invoke the "processors" command that +connects the 2 partitions via the {part} keyword. LAMMPS cannot +easily check for this, but your simulation will likely hang in its +setup phase if this error has been made. + [Restrictions:] This command cannot be used after the simulation box is defined by a