HLIBpro
2.3.1
|
Class for distributing block cluster trees using space filling curves. More...
#include <TDistrBC.hh>
Public Types | |
enum | curve_t |
different types of space-filling-curves | |
Public Member Functions | |
TSFCDistrBC (const bool adj_coarsen=false, const curve_t curve_type=HILBERT_CURVE, const double eps=0.05) | |
construct block cluster distributor | |
virtual void | distribute (const uint p, TBlockCluster *tree, const TDistrBC::TCostFunc *cf) const |
distribute tree, obtain costs from cost-function cf | |
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) | |
The partitioning of the block index set as defined by the nodes of a given level of the block cluster tree is mapped to a one dimensional sequence using space filling curves. This sequence is afterwards partitioned into p intervals by a sequence partitioning scheduler.
This procedure is performed for each level of the block cluster from root to leaves, as long as no load balance was achieved. The difference between the individual loads in all intervals is defined by ε, e.g. [min load, max load] ⊆ [-ε,+ε]·avg load.