wiki:AlternateDistributionAlgorithms

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

Alternate Distribution Algorithms

This page is summarizes the communication and distribution methods used by other codes.

  • is a specific level.
  • is the number of grids on level .
  • is the number of processors.

CASTRO

Although CASTRO can run both on pure MPI and an OpenMP-MPI hybrid, this discussion will concern itself with pure MPI.

  • At least one grid on each level is distributed to each core, meaning that .
  • Each level has an associated MultiFab object, holding the data from all the grids on that level.
  • Each processor requires an array of boxes describing the index space on each level (similar to hypre).
  • 2 distribution algorithms:
    • Crutchfield's Knapsack algorithm, (see Crutchfield '91, Rendleman '00).
    • Morton-ordering space-filling curve.
    • Dynamic switching between methods, based on and .


ENZO

  • Grid hierarchies are replicated on each processor.
  • Root grid is split into and refined grids remain on their processors until the structure of the level is complete.
  • Acknowledges that their distribution algorithm is less than optimal (references to a grid-splitting technique by Lan, Taylor & Bryan, '01.
  • Sibling search is sped up by using a coarse "chaining" mesh to map grids to neighbor lists. Reduces the number of neighbor comparisons from to .


Orion

  • Orion uses an approximate heuristic algorithm by Kernighan & Lin (no reference found yet) to solve a knapsack-style distribution problem.


Flash

  • All refinements are performed locally and resulting children stay local until refinements are completed. No information about root decomposition.
  • PARAMESH enforces proper nesting.
  • Flash uses a work-weighted Morton space-filling curve for load balancing. Warren & Salmon, '93, used it for their N-body code.


References

Norman et al. 2007 — Enzo parallelization.

Almgren et al. 2010 — CASTRO parallelization.

Fryxell et al. 2000 — FLASH parallelization.

Rendleman et al. 1999 — An additional resource on parallelization of AMR algorithms.

Note: See TracWiki for help on using the wiki.