3 | 5 | Load balancing without global communication is difficult to do, but not impossible. Scrambler accomplishes this by storing a subtree computational cost map for each node calculated from the previous generation of descendants to predict the subtree computational costs for each new child that it generates. This allows for nodes to have pre-allocated resources for their children. The global communication of the work load associated with refinement is essentially reduced to a restriction of the costmap down to the root node. Of course if the regions of AMR refinement change dramatically between time steps, then this predictive approach will need to be modified - but for most typical simulations, this should allow for reasonable load balancing with efficiencies of 80%? |