SuperLU Distributed 8.2.1
Distributed memory sparse direct solver
supernodalForest.c File Reference

SuperLU utilities. More...

#include <stdio.h>
#include <assert.h>
#include "superlu_ddefs.h"
#include <math.h>
Include dependency graph for supernodalForest.c:

Classes

struct  rForest_t
 
struct  forestPartition_t
 

Macros

#define INT_T_ALLOC(x)   ((int_t *) SUPERLU_MALLOC ( (x) * sizeof (int_t)))
 
#define DOUBLE_ALLOC(x)   ((double *) SUPERLU_MALLOC ( (x) * sizeof (double)))
 
#define ABS(a)   ((a)<0?-(a):a)
 
#define ACCEPTABLE_TREE_IMBALANCE   0.2
 
#define MAX_TREE_ALLOWED   1024
 

Functions

int_t calcTopInfoForest (sForest_t *forest, int_t nsupers, int_t *setree)
 
sForest_t ** getForests (int_t maxLvl, int_t nsupers, int_t *setree, treeList_t *treeList)
 
double calcNodeListWeight (int_t nnodes, int_t *nodeList, treeList_t *treeList)
 
sForest_t ** getNestDissForests (int_t maxLvl, int_t nsupers, int_t *setree, treeList_t *treeList)
 
static int cmpfuncInd (const void *a, const void *b)
 
int_tgetSortIndex (int_t n, int_t *A)
 
static int cmpfuncIndDouble (const void *a, const void *b)
 
int_tgetSortIndexDouble (int_t n, double *A)
 
static int cmpfunc (const void *a, const void *b)
 
int_tpermuteArr (int_t n, int_t *A, int_t *perm)
 
double * getTreeWeights (int_t numTrees, int_t *gNodeCount, int_t **gNodeLists, treeList_t *treeList)
 
int_tgetNodeCountsFr (int_t maxLvl, sForest_t **sForests)
 
int_t ** getNodeListFr (int_t maxLvl, sForest_t **sForests)
 
int_tgetNodeToForstMap (int_t nsupers, sForest_t **sForests, gridinfo3d_t *grid3d)
 
int_tgetMyNodeCountsFr (int_t maxLvl, int_t *myTreeIdxs, sForest_t **sForests)
 
int_t ** getTreePermFr (int_t *myTreeIdxs, sForest_t **sForests, gridinfo3d_t *grid3d)
 
int * getIsNodeInMyGrid (int_t nsupers, int_t maxLvl, int_t *myNodeCount, int_t **treePerm)
 
double pearsonCoeff (int_t numForests, double *frCost, double *frWeight)
 
void printGantt (int root, int numForests, char *nodename, double scale, double *gFrstCostAcc, double *crPathCost)
 
void printForestWeightCost (sForest_t **sForests, SCT_t *SCT, gridinfo3d_t *grid3d)
 
double getLoadImbalance (int_t nTrees, int_t *treeIndx, double *gTreeWeights)
 
void freeRforest (rForest_t *rforest)
 
sForest_tcreateForestNew (int_t numTrees, int_t nsupers, int_t *nodeCounts, int_t **NodeLists, int_t *setree, treeList_t *treeList)
 
void oneLeveltreeFrPartition (int_t nTrees, int_t *trCount, int_t **trList, int_t *treeSet, double *sWeightArr)
 
forestPartition_t iterativeFrPartitioning (rForest_t *rforest, int_t nsupers, int_t *setree, treeList_t *treeList)
 
sForest_tr2sForest (rForest_t *rforest, int_t nsupers, int_t *setree, treeList_t *treeList)
 
sForest_t ** getGreedyLoadBalForests (int_t maxLvl, int_t nsupers, int_t *setree, treeList_t *treeList)
 
sForest_t ** getOneLevelBalForests (int_t maxLvl, int_t nsupers, int_t *setree, treeList_t *treeList)
 

Variables

static int_tsortPtr
 
static double * sortPtrDouble
 

Detailed Description

SuperLU utilities.

-- Distributed SuperLU routine (version 7.0) --
Lawrence Berkeley National Lab, Oak Ridge National Lab
May 12, 2021

Macro Definition Documentation

◆ ABS

#define ABS (   a)    ((a)<0?-(a):a)

◆ ACCEPTABLE_TREE_IMBALANCE

#define ACCEPTABLE_TREE_IMBALANCE   0.2

◆ DOUBLE_ALLOC

#define DOUBLE_ALLOC (   x)    ((double *) SUPERLU_MALLOC ( (x) * sizeof (double)))

◆ INT_T_ALLOC

#define INT_T_ALLOC (   x)    ((int_t *) SUPERLU_MALLOC ( (x) * sizeof (int_t)))

◆ MAX_TREE_ALLOWED

#define MAX_TREE_ALLOWED   1024

Function Documentation

◆ calcNodeListWeight()

double calcNodeListWeight ( int_t  nnodes,
int_t nodeList,
treeList_t treeList 
)

◆ calcTopInfoForest()

int_t calcTopInfoForest ( sForest_t forest,
int_t  nsupers,
int_t setree 
)
Here is the call graph for this function:

◆ cmpfunc()

static int cmpfunc ( const void *  a,
const void *  b 
)
static
Here is the caller graph for this function:

◆ cmpfuncInd()

static int cmpfuncInd ( const void *  a,
const void *  b 
)
static
Here is the caller graph for this function:

◆ cmpfuncIndDouble()

static int cmpfuncIndDouble ( const void *  a,
const void *  b 
)
static
Here is the caller graph for this function:

◆ createForestNew()

sForest_t * createForestNew ( int_t  numTrees,
int_t  nsupers,
int_t nodeCounts,
int_t **  NodeLists,
int_t setree,
treeList_t treeList 
)
Here is the call graph for this function:

◆ freeRforest()

void freeRforest ( rForest_t rforest)

◆ getForests()

sForest_t ** getForests ( int_t  maxLvl,
int_t  nsupers,
int_t setree,
treeList_t treeList 
)
Here is the call graph for this function:

◆ getGreedyLoadBalForests()

sForest_t ** getGreedyLoadBalForests ( int_t  maxLvl,
int_t  nsupers,
int_t setree,
treeList_t treeList 
)
Here is the call graph for this function:

◆ getIsNodeInMyGrid()

int * getIsNodeInMyGrid ( int_t  nsupers,
int_t  maxLvl,
int_t myNodeCount,
int_t **  treePerm 
)
Here is the caller graph for this function:

◆ getLoadImbalance()

double getLoadImbalance ( int_t  nTrees,
int_t treeIndx,
double *  gTreeWeights 
)
Here is the call graph for this function:

◆ getMyNodeCountsFr()

int_t * getMyNodeCountsFr ( int_t  maxLvl,
int_t myTreeIdxs,
sForest_t **  sForests 
)

◆ getNestDissForests()

sForest_t ** getNestDissForests ( int_t  maxLvl,
int_t  nsupers,
int_t setree,
treeList_t treeList 
)
Here is the call graph for this function:

◆ getNodeCountsFr()

int_t * getNodeCountsFr ( int_t  maxLvl,
sForest_t **  sForests 
)

◆ getNodeListFr()

int_t ** getNodeListFr ( int_t  maxLvl,
sForest_t **  sForests 
)

◆ getNodeToForstMap()

int_t * getNodeToForstMap ( int_t  nsupers,
sForest_t **  sForests,
gridinfo3d_t grid3d 
)
Here is the call graph for this function:

◆ getOneLevelBalForests()

sForest_t ** getOneLevelBalForests ( int_t  maxLvl,
int_t  nsupers,
int_t setree,
treeList_t treeList 
)
Here is the call graph for this function:

◆ getSortIndex()

int_t * getSortIndex ( int_t  n,
int_t A 
)
Here is the call graph for this function:

◆ getSortIndexDouble()

int_t * getSortIndexDouble ( int_t  n,
double *  A 
)
Here is the call graph for this function:

◆ getTreePermFr()

int_t ** getTreePermFr ( int_t myTreeIdxs,
sForest_t **  sForests,
gridinfo3d_t grid3d 
)
Here is the call graph for this function:

◆ getTreeWeights()

double * getTreeWeights ( int_t  numTrees,
int_t gNodeCount,
int_t **  gNodeLists,
treeList_t treeList 
)
Here is the call graph for this function:

◆ iterativeFrPartitioning()

forestPartition_t iterativeFrPartitioning ( rForest_t rforest,
int_t  nsupers,
int_t setree,
treeList_t treeList 
)
Here is the call graph for this function:

◆ oneLeveltreeFrPartition()

void oneLeveltreeFrPartition ( int_t  nTrees,
int_t trCount,
int_t **  trList,
int_t treeSet,
double *  sWeightArr 
)
Here is the call graph for this function:

◆ pearsonCoeff()

double pearsonCoeff ( int_t  numForests,
double *  frCost,
double *  frWeight 
)

◆ permuteArr()

int_t * permuteArr ( int_t  n,
int_t A,
int_t perm 
)

◆ printForestWeightCost()

void printForestWeightCost ( sForest_t **  sForests,
SCT_t SCT,
gridinfo3d_t grid3d 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ printGantt()

void printGantt ( int  root,
int  numForests,
char *  nodename,
double  scale,
double *  gFrstCostAcc,
double *  crPathCost 
)
Here is the call graph for this function:

◆ r2sForest()

sForest_t * r2sForest ( rForest_t rforest,
int_t  nsupers,
int_t setree,
treeList_t treeList 
)
Here is the call graph for this function:

Variable Documentation

◆ sortPtr

int_t* sortPtr
static

◆ sortPtrDouble

double* sortPtrDouble
static