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.
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
.