HLIBpro  2.8.1
TSFCDistrBC Class Reference

Class for distributing block cluster trees using space filling curves. More...

#include <TDistrBC.hh>

Inheritance diagram for TSFCDistrBC:
TDistrBC

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
 
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

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.

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