HLIBpro  2.1
Public Member Functions | List of all members
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
 
- 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 _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.