HLIBpro
1.2
|
class for block-wise block cluster tree distribution More...
#include <TDistrBC.hh>
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) |
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.