wiki:DistributedControl

Version 5 (modified by trac, 12 years ago) ( diff )

Distributed Control

While each processor in scrambler executes the same code and is therefore somewhat autonomous - the AMR nested grid algorithm does create a hierarchy of nodes that is reflected in a hierarchy of processors. Fundamentally there is only need for one real root node. That node creates children and those children then create more children and so on… If nodes are not artificially split, (and single nodes are not shared across processors) then only one processor can determine which regions of the root grid to refine and in turn the nodes for the next higher level (level 1) Since this processor creates the children - it then has to distribute the children to other processors. These processors then create their own children and distribute those children to other processors and so on. In this way the tree is distributed across the entire collection of processors. However, the dependencies present in the nested grid algorithm create a dependency between level 0 processors and level 1 processors and so on.

This dependency requires a certain serialization of the algorithm from level to level - and unfortunately the only way to achieve perfect scalability is to balance these parts of the algorithm across each level. However in general the time spent during these serial portions of the AMR algorithm should be significantly less than the time spent during the parallel portion of the algorithm (ie the advance stage) and it should be possible to achieve good parallelization even with many levels of AMR without artificially fragmenting grids.

Child Groups

Before discussing distributed control it is helpful to first discuss child node groups and child processor groups where the denotes whether it is the 0th or 1st generation of children. Using the same definitions in DistributedTree we can construct

and

Additionally since each node contains a list of processor resources we can construct a Resource Processor Group:

Since during the distribution of resources to children:

we have

Additionally we can define a descendant processor group

Since during the distribution of resouces to children

we also have

Processors in the will receive child grids (level l+1) directly, while processors in the may receive descendant grids (level > l+1) from the processors in the in which case they need to receive the list of processors in the which contain nodes with resource lists that contain that processor…

Note: See TracWiki for help on using the wiki.