Commit b234177b authored by Ann Almgren's avatar Ann Almgren
Browse files

Update gridding

parent 10462f61
Loading
Loading
Loading
Loading
+9 −17
Original line number Diff line number Diff line
.. role:: cpp(code)
   :language: c++

.. _Chap:Managing the Grid Hierarchy:

Managing the Grid Hierarchy
===========================

There are four separate parts of any strategy to balance computational
work ina  large-scale calculation with hybrid parallelism:

1) Creation of grids -- this includes defining the BoxArray on which
MultiFabs will be built at each level and defining the work estimates

2) Distribution of grids to MPI processes -- this uses the work estimate
defined above (or defaults to work estimate = number of cells) to define
the DistributionMapping with which MultiFabs at that level will be built.

3) When running on multicore machines with OpenMP: creation of grid tiles
(by defining fabarray_mfiter.tile_size), and if relevant, creation of 
particle tiles (by defining particle.tile_size)

4) When running on multicore machines with OpenMP: distribution of tiles to threads
Computational load balancing is based on several different steps:

If the application contains task parallelism, load balancing may require special 
care in task scheduling.  See the section on task parallelism.
#. The first component of load balancing is the creation of individual grids, 
   i.e. defining the :cpp:`BoxArray` on which :cpp:`MultiFabs` will be built at each level 

#. The second component is distribution of these grids to MPI processes, 
   i.e. defining the :cpp:`DistributionMapping` with which :cpp:`MultiFabs` at that level will be built.
   How we do this depends on what strategy we specify and what work estimate we use 

.. toctree::
   :maxdepth: 1
+1 −1

File changed.

Contains only whitespace changes.