STARS-H
Software for Testing Accuracy, Reliability and Scalability of Hierarchical computations
|
Routines to partition matrix into low-rank blocks. More...
Data Structures | |
struct | starsh_blrf |
Non-nested block-wise low-rank format. More... | |
Typedefs | |
typedef struct starsh_blrf | STARSH_blrf |
Functions | |
int | starsh_blrf_new (STARSH_blrf **format, STARSH_problem *problem, char symm, STARSH_cluster *row_cluster, STARSH_cluster *col_cluster, STARSH_int nbrows, STARSH_int nbcols, STARSH_int nblocks_far, STARSH_int *block_far, STARSH_int *brow_far_start, STARSH_int *brow_far, STARSH_int *bcol_far_start, STARSH_int *bcol_far, STARSH_int nblocks_far_local, STARSH_int *block_far_local, STARSH_int nblocks_near, STARSH_int *block_near, STARSH_int *brow_near_start, STARSH_int *brow_near, STARSH_int *bcol_near_start, STARSH_int *bcol_near, STARSH_int nblocks_near_local, STARSH_int *block_near_local, enum STARSH_BLRF_TYPE type) |
Init STARSH_blrf object. More... | |
int | starsh_blrf_new_from_coo (STARSH_blrf **format, STARSH_problem *problem, char symm, STARSH_cluster *row_cluster, STARSH_cluster *col_cluster, STARSH_int nblocks_far, STARSH_int *block_far, STARSH_int nblocks_near, STARSH_int *block_near, enum STARSH_BLRF_TYPE type) |
Init STARSH_blrf object by lists of admissible blocks. More... | |
int | starsh_blrf_new_tlr (STARSH_blrf **format, STARSH_problem *problem, char symm, STARSH_cluster *row_cluster, STARSH_cluster *col_cluster) |
TLR partitioning of problem with given plain clusters. More... | |
void | starsh_blrf_free (STARSH_blrf *format) |
void | starsh_blrf_info (STARSH_blrf *format) |
void | starsh_blrf_print (STARSH_blrf *format) |
int | starsh_blrf_get_block (STARSH_blrf *format, STARSH_int i, STARSH_int j, int *shape, void **D) |
Returns dense block on intersection of given block row and column. More... | |
int | starsh_blrf_new_from_coo_mpi (STARSH_blrf **format, STARSH_problem *problem, char symm, STARSH_cluster *row_cluster, STARSH_cluster *col_cluster, STARSH_int nblocks_far, STARSH_int *block_far, STARSH_int nblocks_far_local, STARSH_int *block_far_local, STARSH_int nblocks_near, STARSH_int *block_near, STARSH_int nblocks_near_local, STARSH_int *block_near_local, enum STARSH_BLRF_TYPE type) |
Create new STARSH_blrf object on MPI node. More... | |
int | starsh_blrf_new_tlr_mpi (STARSH_blrf **format, STARSH_problem *problem, char symm, STARSH_cluster *row_cluster, STARSH_cluster *col_cluster) |
TLR partitioning on MPI nodes with 2D block cycling distribution. More... | |
Routines to partition matrix into low-rank blocks.
typedef struct starsh_blrf STARSH_blrf |
Typedef for block-wise low-rank format
void starsh_blrf_free | ( | STARSH_blrf * | format | ) |
Free STARSH_blrf object.
int starsh_blrf_get_block | ( | STARSH_blrf * | format, |
STARSH_int | i, | ||
STARSH_int | j, | ||
int * | shape, | ||
void ** | D | ||
) |
Returns dense block on intersection of given block row and column.
Allocate memory and compute kernel function for a given submatrix on intersection of i
-th row cluster with j
-th column cluster. User have to free memory after usage.
[in] | format | Pointer to STARSH_blrf object. |
[in] | i,j | Indexes of row and column clusters. |
[out] | shape | Shape of output submatrix. |
[out] | D | Submatrix on intersection of i -th row cluster and j -th column cluster. |
void starsh_blrf_info | ( | STARSH_blrf * | format | ) |
Print short info about STARSH_blrf object.
int starsh_blrf_new | ( | STARSH_blrf ** | format, |
STARSH_problem * | problem, | ||
char | symm, | ||
STARSH_cluster * | row_cluster, | ||
STARSH_cluster * | col_cluster, | ||
STARSH_int | nbrows, | ||
STARSH_int | nbcols, | ||
STARSH_int | nblocks_far, | ||
STARSH_int * | block_far, | ||
STARSH_int * | brow_far_start, | ||
STARSH_int * | brow_far, | ||
STARSH_int * | bcol_far_start, | ||
STARSH_int * | bcol_far, | ||
STARSH_int | nblocks_far_local, | ||
STARSH_int * | block_far_local, | ||
STARSH_int | nblocks_near, | ||
STARSH_int * | block_near, | ||
STARSH_int * | brow_near_start, | ||
STARSH_int * | brow_near, | ||
STARSH_int * | bcol_near_start, | ||
STARSH_int * | bcol_near, | ||
STARSH_int | nblocks_near_local, | ||
STARSH_int * | block_near_local, | ||
enum STARSH_BLRF_TYPE | type | ||
) |
Init STARSH_blrf object.
This function simply allocates memory and fills fields of STARSH_blrf object. Look at STARSH_blrf to get more info about meaning of each field.
[out] | format | Pointer to STARSH_blrf object. |
[in] | problem | pointer to STARSH_problem object. |
[in] | symm | 'S' if format is symmetric and 'N' otherwise. |
[in] | row_cluster,col_cluster | pointers to STARSH_cluster objects, corresponding to clusterization of rows and columns. |
[in] | nbrows,nbcols | Number of clusters of rows and columns. |
[in] | nblocks_far | Number of admissible far-field blocks. |
[in] | block_far | Coordinates of admissible far-field blocks. |
[in] | brow_far_start,brow_far | List of all admissible far-field blocks, stored in CSR format. |
[in] | bcol_far_start,bcol_far | List of all admissible far-field blocks, stored in CSC format. |
[in] | nblocks_far_local,block_far_local | List of local admissible far-field blocks, stored on current MPI node. |
[in] | nblocks_near | Number of admissible near-field blocks. |
[in] | block_near | Coordinates of admissible near-field blocks. |
[in] | brow_near_start,brow_near | List of all admissible near-field blocks, stored in CSR format. |
[in] | bcol_near_start,bcol_near | List of all admissible near-field blocks, stored in CSC format. |
[in] | nblocks_near_local,block_near_local | List of local admissible near-field blocks, stored on current MPI node. |
[in] | type | Type of format. Look at STARSH_BLRF_TYPE for more info. |
int starsh_blrf_new_from_coo | ( | STARSH_blrf ** | format, |
STARSH_problem * | problem, | ||
char | symm, | ||
STARSH_cluster * | row_cluster, | ||
STARSH_cluster * | col_cluster, | ||
STARSH_int | nblocks_far, | ||
STARSH_int * | block_far, | ||
STARSH_int | nblocks_near, | ||
STARSH_int * | block_near, | ||
enum STARSH_BLRF_TYPE | type | ||
) |
Init STARSH_blrf object by lists of admissible blocks.
Allocate memory and fill ifields of STARSH_blrf object. Uses lists of admissible far-field and near-field blocks in COO sparse format to copy it into CSR and CSC formats. Look at STARSH_blrf to get more info about meaning of each field.
[out] | format | Address of pointer to STARSH_blrf object. |
[in] | problem | pointer to STARSH_problem object. |
[in] | symm | 'S' if format is symmetric and 'N' otherwise. |
[in] | row_cluster,col_cluster | pointers to STARSH_cluster objects, corresponding to clusterization of rows and columns. |
[in] | nblocks_far | Number of admissible far-field blocks. |
[in] | block_far | Coordinates of admissible far-field blocks. |
[in] | nblocks_near | Number of admissible near-field blocks. |
[in] | block_near | Coordinates of admissible near-field blocks. |
[in] | type | Type of format. |
int starsh_blrf_new_from_coo_mpi | ( | STARSH_blrf ** | format, |
STARSH_problem * | problem, | ||
char | symm, | ||
STARSH_cluster * | row_cluster, | ||
STARSH_cluster * | col_cluster, | ||
STARSH_int | nblocks_far, | ||
STARSH_int * | block_far, | ||
STARSH_int | nblocks_far_local, | ||
STARSH_int * | block_far_local, | ||
STARSH_int | nblocks_near, | ||
STARSH_int * | block_near, | ||
STARSH_int | nblocks_near_local, | ||
STARSH_int * | block_near_local, | ||
enum STARSH_BLRF_TYPE | type | ||
) |
Create new STARSH_blrf object on MPI node.
Allocate memory and fill fields of STARSH_blrf object on a distributed-memory system (using MPI). Uses lists of admissible far-field and near-field blocks in COO sparse format to copy it into CSR and CSC formats. Look at STARSH_blrf to get more info about meaning of each field.
[out] | format | Address of pointer to STARSH_blrf object. |
[in] | problem | pointer to STARSH_problem object. |
[in] | symm | 'S' if format is symmetric and 'N' otherwise. |
[in] | row_cluster,col_cluster | pointers to STARSH_cluster objects, corresponding to clusterization of rows and columns. |
[in] | nblocks_far | Number of admissible far-field blocks. |
[in] | block_far | Coordinates of admissible far-field blocks. |
[in] | nblocks_far_local | Number of admissible far-field blocks, stored locally on MPI node. |
[in] | block_far_local | List of admissible far-field blocks, stored locally on MPI node. |
[in] | nblocks_near | Number of admissible near-field blocks. |
[in] | block_near | Coordinates of admissible near-field blocks. |
[in] | nblocks_near_local | Number of admissible near-field blocks, stored locally on MPI node. |
[in] | block_near_local | List of admissible near-field blocks, stored locally on MPI node. |
[in] | type | Type of format. |
int starsh_blrf_new_tlr | ( | STARSH_blrf ** | format, |
STARSH_problem * | problem, | ||
char | symm, | ||
STARSH_cluster * | row_cluster, | ||
STARSH_cluster * | col_cluster | ||
) |
TLR partitioning of problem with given plain clusters.
Uses non-hierarchical clusterization of rows and columns to generate plain division of problem into admissible blocks.
[out] | format | Address of pointer to STARSH_blrf object. |
[in] | problem | Pointer to STARSH_problem object. |
[in] | symm | 'S' if format is symmetric and 'N' otherwise. |
[in] | row_cluster,col_cluster | pointers to STARSH_cluster objects, corresponding to clusterization of rows and columns. |
int starsh_blrf_new_tlr_mpi | ( | STARSH_blrf ** | format, |
STARSH_problem * | problem, | ||
char | symm, | ||
STARSH_cluster * | row_cluster, | ||
STARSH_cluster * | col_cluster | ||
) |
TLR partitioning on MPI nodes with 2D block cycling distribution.
Uses non-hierarchical clusterization of rows and columns to generate plain division of problem into admissible far-field and near-field blocks, placed over MPI nodes by 2D block cycling distribution.
[out] | format | Address of pointer to STARSH_blrf object. |
[in] | problem | Pointer to STARSH_problem object. |
[in] | symm | 'S' if format is symmetric and 'N' otherwise. |
[in] | row_cluster,col_cluster | pointers to STARSH_cluster objects, corresponding to clusterization of rows and columns. |
void starsh_blrf_print | ( | STARSH_blrf * | format | ) |
Print full info about STARSH_blrf object.