STARS-H
Software for Testing Accuracy, Reliability and Scalability of Hierarchical computations
|
Non-nested block-wise low-rank format. More...
#include <starsh.h>
Data Fields | |
STARSH_problem * | problem |
Corresponding problem. | |
char | symm |
'S' if format is symmetric and 'N' otherwise. | |
STARSH_cluster * | row_cluster |
Clusterization of rows into subclusters (block rows). | |
STARSH_cluster * | col_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_int * | block_far |
Coordinates of far-field admissible blocks. More... | |
STARSH_int * | brow_far_start |
Start indexes of admissibly far block columns for each block row. More... | |
STARSH_int * | brow_far |
List of admissibly far block columns for each block row. More... | |
STARSH_int * | bcol_far_start |
Start indexes of admissibly far block rows for each block column. More... | |
STARSH_int * | bcol_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_int * | block_far_local |
List of far-field blocks, stored locally on MPI node. | |
STARSH_int | nblocks_near |
Number of admissible near-field blocks. More... | |
STARSH_int * | block_near |
Coordinates of near-field admissible blocks. More... | |
STARSH_int * | brow_near_start |
Start indexes of admissibly near block colums for each block row. More... | |
STARSH_int * | brow_near |
List of admissibly near block columns for each block row. More... | |
STARSH_int * | bcol_near_start |
Start indexes of admissibly near block rows for each block column. More... | |
STARSH_int * | bcol_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_int * | block_near_local |
List of near-field blocks, stored locally on MPI node. | |
enum STARSH_BLRF_TYPE | type |
Type of format. | |
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.
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.
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.
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.
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.
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).
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).
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.
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.
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.
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.
STARSH_int starsh_blrf::nblocks_near |
Number of admissible near-field blocks.
Near-field blocks are dense.