STARS-H
Software for Testing Accuracy, Reliability and Scalability of Hierarchical computations
starsh_blrf Struct Reference

Non-nested block-wise low-rank format. More...

#include <starsh.h>

Collaboration diagram for starsh_blrf:
[legend]

Data Fields

STARSH_problemproblem
 Corresponding problem.
 
char symm
 'S' if format is symmetric and 'N' otherwise.
 
STARSH_clusterrow_cluster
 Clusterization of rows into subclusters (block rows).
 
STARSH_clustercol_cluster
 Clusterization of columns into subclusters (block columns).
 
STARSH_int nbrows
 Number of block rows (clusters of rows).
 
STARSH_int nbcols
 Number of block columns (clusters of columns).
 
STARSH_int nblocks_far
 Number of admissible far-field blocks.
 
STARSH_intblock_far
 Coordinates of far-field admissible blocks. More...
 
STARSH_intbrow_far_start
 Start indexes of admissibly far block columns for each block row. More...
 
STARSH_intbrow_far
 List of admissibly far block columns for each block row. More...
 
STARSH_intbcol_far_start
 Start indexes of admissibly far block rows for each block column. More...
 
STARSH_intbcol_far
 List of admissibly far block rows for each block column. More...
 
STARSH_int nblocks_far_local
 Number of far-field blocks, stored locally on MPI node.
 
STARSH_intblock_far_local
 List of far-field blocks, stored locally on MPI node.
 
STARSH_int nblocks_near
 Number of admissible near-field blocks. More...
 
STARSH_intblock_near
 Coordinates of near-field admissible blocks. More...
 
STARSH_intbrow_near_start
 Start indexes of admissibly near block colums for each block row. More...
 
STARSH_intbrow_near
 List of admissibly near block columns for each block row. More...
 
STARSH_intbcol_near_start
 Start indexes of admissibly near block rows for each block column. More...
 
STARSH_intbcol_near
 List of admissibly near block rows for each block column. More...
 
STARSH_int nblocks_near_local
 Number of near-field blocks, stored locally on MPI node.
 
STARSH_intblock_near_local
 List of near-field blocks, stored locally on MPI node.
 
enum STARSH_BLRF_TYPE type
 Type of format.
 

Detailed Description

Non-nested block-wise low-rank format.

Stores non-nested division of problem into set of admissible pairs of block rows and block columns. For simplicity, such admissible pairs are called admissible blocks, since they stand as submatrix of corresponding matrix. Each admissible block is either far-field or near-field. Each far-field block can be approximated by some low-rank matrix with any given precision, whereas each near-field block is assumed to be dense.

Virtually, there is matrix of size total number of block rows by total number of block columns with elements, equal to 0 for non-admissible blocks and 1 for admissible far-field blocks. This is matrix of admissible far-field blocks. Correspondingly, there is matrix of admissible near-field blocks. These matrices are virtual, so we name them as lists of admissible far-field and near-field blocks. These lists are sparse, so they are stored in 3 different sparse formats: COO, CSR and CSC. For example, fields nblocks_far and block_far represent COO format, fields brow_far_start and brow_far represent CSR format and fields bcol_near_start and bcol_near represent CSC format. We use these lists to flatten hierarchical algorithms to get good performance in parallel implementations.

Function starsh_blrf_generate() computes CSR and CSC formats out of given COO format.

See also
starsh_blrf_generate().

Field Documentation

◆ bcol_far

STARSH_int* starsh_blrf::bcol_far

List of admissibly far block rows for each block column.

Admissibly far blocks for a given block i are elements of array bcol_far from index bcol_far_start[i] to bcol_far_start[i+1]-1 inclusively.

◆ bcol_far_start

STARSH_int* starsh_blrf::bcol_far_start

Start indexes of admissibly far block rows for each block column.

Admissibly far blocks for a given block i are elements of array bcol_far from index bcol_far_start[i] to bcol_far_start[i+1]-1 inclusively.

◆ bcol_near

STARSH_int* starsh_blrf::bcol_near

List of admissibly near block rows for each block column.

Admissibly near blocks for a given block i are elements of array bcol_near from index bcol_near_start[i] to bcol_near_start[i+1]-1 inclusively.

◆ bcol_near_start

STARSH_int* starsh_blrf::bcol_near_start

Start indexes of admissibly near block rows for each block column.

Admissibly near blocks for a given block i are elements of array bcol_near from index bcol_near_start[i] to bcol_near_start[i+1]-1 inclusively.

◆ block_far

STARSH_int* starsh_blrf::block_far

Coordinates of far-field admissible blocks.

block_far[2*i] is an index of block row (row cluster) and block_far[2*i+1] is an index of block column (column cluster).

◆ block_near

STARSH_int* starsh_blrf::block_near

Coordinates of near-field admissible blocks.

block_near[2*i] is an index of block row (row cluster) and block_near[2*i+1] is an index of block column (column cluster).

◆ brow_far

STARSH_int* starsh_blrf::brow_far

List of admissibly far block columns for each block row.

Admissibly far blocks for a given block i are elements of array brow_far from index brow_far_start[i] to brow_far_start[i+1]-1 inclusively.

◆ brow_far_start

STARSH_int* starsh_blrf::brow_far_start

Start indexes of admissibly far block columns for each block row.

Admissibly far blocks for a given block i are elements of array brow_far from index brow_far_start[i] to brow_far_start[i+1]-1 inclusively.

◆ brow_near

STARSH_int* starsh_blrf::brow_near

List of admissibly near block columns for each block row.

Admissibly near blocks for a given block i are elements of array brow_near from index brow_near_start[i] to brow_near_start[i+1]-1 inclusively.

◆ brow_near_start

STARSH_int* starsh_blrf::brow_near_start

Start indexes of admissibly near block colums for each block row.

Admissibly near blocks for a given block i are elements of array brow_near from index brow_near_start[i] to brow_near_start[i+1]-1 inclusively.

◆ nblocks_near

STARSH_int starsh_blrf::nblocks_near

Number of admissible near-field blocks.

Near-field blocks are dense.


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