HLIBpro  2.8.1
TBlockDistrBC Class Reference

class for block-wise block cluster tree distribution More...

#include <TDistrBC.hh>

Inheritance diagram for TBlockDistrBC:
TDistrBC

Public Member Functions

virtual void distribute (const uint p, TBlockCluster *tree, const TDistrBC::TCostFunc *cf) const
 distribute block cluster tree
 
virtual void distribute (const uint p, TBlockCluster *tree, const TDistrBC::TCostFunc *cf) const=0
 distribute block cluster tree More...
 
virtual void distribute (const uint p, TBlockClusterTree *tree, const TDistrBC::TCostFunc *cf) const
 distribute block cluster tree (tree version)
 
- Public Member Functions inherited from TDistrBC
virtual void distribute (const uint p, TBlockClusterTree *tree, const TDistrBC::TCostFunc *cf) const
 distribute block cluster tree (tree version)
 

Detailed Description

   Distribute block cluster trees by traversing tree using BFS and
   collect at least p nodes, where p is the number of processors,
   on a level. The collected nodes are then distributed onto the p
   processors. This ensures, that all nodes below that level are
   assigned to a unique processor. All nodes above belong to all
   processors. This is necessary for the factorisation algorithms.

   The number of nodes to schedule can be further controlled by a
   minimal depth in the BFS, e.g. even if enough nodes were found
   earlier, the algorithm will proceed until level \c _min_lvl.

   In case of symmetric/hermitian matrices, the scheduling can be
   performed for the lower left part of the block cluster tree.
   The upper right part will be assigned by mirroring the distribution
   pattern.

   Make sure, that leaves in the tree will apear at most on the
   level of the scheduled nodes and not earlier.

Member Function Documentation

◆ distribute()

virtual void distribute

distribute given block cluster tree onto p processors with costs for block clusters provided by cost-function cf