walberla::blockforest::GlobalLoadBalancing Class Reference

#include <GlobalLoadBalancing.h>

Classes

class  MetisConfiguration
 

Static Public Member Functions

template<typename BLOCK >
static uint_t balance (const std::vector< BLOCK * > &blocks, const uint_t sfcIterations, const memory_t memoryLimit, const MetisConfiguration< BLOCK > &metisConfig, const memory_t avgMemoryUtilization)
 
template<typename BLOCK >
static uint_t balanceSorted (const std::vector< BLOCK * > &blocks, const uint_t sfcIterations, const memory_t memoryLimit, const MetisConfiguration< BLOCK > &metisConfig, const memory_t avgMemoryUtilization)
 
template<typename BLOCK >
static uint_t balance (const std::vector< BLOCK * > &blocks, const uint_t sfcIterations, const memory_t memoryLimit, const MetisConfiguration< BLOCK > &metisConfig, const uint_t numberOfProcesses)
 
template<typename BLOCK >
static uint_t balanceSorted (const std::vector< BLOCK * > &blocks, const uint_t sfcIterations, const memory_t memoryLimit, const MetisConfiguration< BLOCK > &metisConfig, const uint_t numberOfProcesses)
 
template<typename BLOCK >
static uint_t minimizeProcesses (const std::vector< BLOCK * > &blocks, const memory_t memoryLimit, const MetisConfiguration< BLOCK > &metisConfig, const std::vector< workload_t > *processesWork=nullptr, const std::vector< memory_t > *processesMemory=nullptr)
 
template<typename BLOCK >
static uint_t maximizeMemoryUtilization (const std::vector< BLOCK * > &blocks, const memory_t memoryLimit, const MetisConfiguration< BLOCK > &metisConfig, const std::vector< workload_t > *processesWork=nullptr, const std::vector< memory_t > *processesMemory=nullptr)
 
template<typename BLOCK >
static uint_t optimizeWorkload (const std::vector< BLOCK * > &blocks, const uint_t sfcIterations, const memory_t memoryLimit, const MetisConfiguration< BLOCK > &metisConfig, const real_t workloadWeighting, const bool sortByLevel=false, const uint_t samples=10)
 
template<typename BLOCK >
static void prepareProcessReordering (const std::vector< BLOCK * > &blocks, std::vector< std::vector< uint_t > > &processNeighbors)
 
template<typename BLOCK >
static void reorderProcessesByBFS (std::vector< BLOCK * > &blocks, const std::vector< std::vector< uint_t > > &processNeighbors)
 

Static Private Member Functions

template<typename BLOCK >
static uint_t fixedWork (const std::vector< BLOCK * > &blocks, const workload_t workloadLimit, const memory_t memoryLimit, const std::vector< workload_t > *processesWork=nullptr, const std::vector< memory_t > *processesMemory=nullptr)
 
template<typename BLOCK >
static void checkForBetterWorkloadDistributation (const std::vector< BLOCK * > &blocks, const uint_t numberOfProcesses, const real_t sumWorkload, const real_t memoryUtilization, const real_t workloadWeighting, const real_t memoryWeighting, real_t &bestWeightedValue, std::vector< uint_t > &bestProcessMapping, uint_t &bestNumberOfProcesses)
 

Member Function Documentation

◆ balance() [1/2]

template<typename BLOCK >
uint_t walberla::blockforest::GlobalLoadBalancing::balance ( const std::vector< BLOCK * > &  blocks,
const uint_t  sfcIterations,
const memory_t  memoryLimit,
const MetisConfiguration< BLOCK > &  metisConfig,
const memory_t  avgMemoryUtilization 
)
inlinestatic

◆ balance() [2/2]

template<typename BLOCK >
uint_t walberla::blockforest::GlobalLoadBalancing::balance ( const std::vector< BLOCK * > &  blocks,
const uint_t  sfcIterations,
const memory_t  memoryLimit,
const MetisConfiguration< BLOCK > &  metisConfig,
const uint_t  numberOfProcesses 
)
static

◆ balanceSorted() [1/2]

template<typename BLOCK >
uint_t walberla::blockforest::GlobalLoadBalancing::balanceSorted ( const std::vector< BLOCK * > &  blocks,
const uint_t  sfcIterations,
const memory_t  memoryLimit,
const MetisConfiguration< BLOCK > &  metisConfig,
const memory_t  avgMemoryUtilization 
)
inlinestatic

◆ balanceSorted() [2/2]

template<typename BLOCK >
uint_t walberla::blockforest::GlobalLoadBalancing::balanceSorted ( const std::vector< BLOCK * > &  blocks,
const uint_t  sfcIterations,
const memory_t  memoryLimit,
const MetisConfiguration< BLOCK > &  metisConfig,
const uint_t  numberOfProcesses 
)
static

◆ checkForBetterWorkloadDistributation()

template<typename BLOCK >
void walberla::blockforest::GlobalLoadBalancing::checkForBetterWorkloadDistributation ( const std::vector< BLOCK * > &  blocks,
const uint_t  numberOfProcesses,
const real_t  sumWorkload,
const real_t  memoryUtilization,
const real_t  workloadWeighting,
const real_t  memoryWeighting,
real_t bestWeightedValue,
std::vector< uint_t > &  bestProcessMapping,
uint_t bestNumberOfProcesses 
)
staticprivate

◆ fixedWork()

template<typename BLOCK >
uint_t walberla::blockforest::GlobalLoadBalancing::fixedWork ( const std::vector< BLOCK * > &  blocks,
const workload_t  workloadLimit,
const memory_t  memoryLimit,
const std::vector< workload_t > *  processesWork = nullptr,
const std::vector< memory_t > *  processesMemory = nullptr 
)
staticprivate

◆ maximizeMemoryUtilization()

template<typename BLOCK >
uint_t walberla::blockforest::GlobalLoadBalancing::maximizeMemoryUtilization ( const std::vector< BLOCK * > &  blocks,
const memory_t  memoryLimit,
const MetisConfiguration< BLOCK > &  metisConfig,
const std::vector< workload_t > *  processesWork = nullptr,
const std::vector< memory_t > *  processesMemory = nullptr 
)
inlinestatic

◆ minimizeProcesses()

template<typename BLOCK >
uint_t walberla::blockforest::GlobalLoadBalancing::minimizeProcesses ( const std::vector< BLOCK * > &  blocks,
const memory_t  memoryLimit,
const MetisConfiguration< BLOCK > &  metisConfig,
const std::vector< workload_t > *  processesWork = nullptr,
const std::vector< memory_t > *  processesMemory = nullptr 
)
inlinestatic

◆ optimizeWorkload()

template<typename BLOCK >
uint_t walberla::blockforest::GlobalLoadBalancing::optimizeWorkload ( const std::vector< BLOCK * > &  blocks,
const uint_t  sfcIterations,
const memory_t  memoryLimit,
const MetisConfiguration< BLOCK > &  metisConfig,
const real_t  workloadWeighting,
const bool  sortByLevel = false,
const uint_t  samples = 10 
)
static

◆ prepareProcessReordering()

template<typename BLOCK >
void walberla::blockforest::GlobalLoadBalancing::prepareProcessReordering ( const std::vector< BLOCK * > &  blocks,
std::vector< std::vector< uint_t > > &  processNeighbors 
)
static

◆ reorderProcessesByBFS()

template<typename BLOCK >
void walberla::blockforest::GlobalLoadBalancing::reorderProcessesByBFS ( std::vector< BLOCK * > &  blocks,
const std::vector< std::vector< uint_t > > &  processNeighbors 
)
static

The documentation for this class was generated from the following file: