|
BeBOP Optimized Sparse Kernel Interface Library
1.0.1h
|
Block compressed sparse row data structure. More...
Go to the source code of this file.
Data Structures | |
| struct | tagBebop_matBCSR_t |
| Block compressed sparse row (BCSR) format. More... | |
Defines | |
| #define | INC_OSKI_BCSR_FORMAT_H |
| BCSR/format.h included. | |
Name mangling. | |
| #define | oski_matBCSR_t MANGLE_(oski_matBCSR_t) |
| BCSR matrix representation. | |
Typedefs | |
| typedef struct tagBebop_matBCSR_t | oski_matBCSR_t |
| Block compressed sparse row (BCSR) format. | |
Block compressed sparse row data structure.
For an overview, see Block Compressed Sparse Row (BCSR) Format.
| typedef struct tagBebop_matBCSR_t oski_matBCSR_t |
Block compressed sparse row (BCSR) format.
An
matrix
is stored in
BCSR format using six arrays,
. The triplet
stores rows 1 through
using uniformly aligned
blocks, and the triplet
stores any remaining
rows using uniformly aligned
blocks.
is an integer array of block-row pointers, of length at least
.
is an integer array of block column indices, of length at least
.
is an array of non-zero block values, of length at least
.Define block-row
to be rows
through
of
, where
. For each
such that
,
is the column index
entry of an explicitly stored non-zero block whose values are laid out in row-major order in the subarray
.
These blocks are uniformly aligned, meaning that
. However, there is one exception: if
does not divide
, then each block row may contain one block with
. If such a block overlaps with another block starting at column index
, then the initial columns of the block at
are set to zero.
If
does not divide
, then the remaining rows are stored in
as a single block row with
blocks. These arrays follow the same conventions as
.
1.7.6.1