#include <format.h>
Variable block row (VBR) format generalizes block compressed sparse row (BCSR) by allowing block rows and columns to have variable sizes.
An
matrix
stored in VBR format is partitioned into
block rows and
block columns and then stored into six arrays:
] stores the starting positions in
of each block row. More specifically, the
block row starts at row brow[
] of
, ends at brow[
]-1, and brow[
] =
.
] stores the block column positions.
] stores the non-zero values, block-by-block, with blocks laid out by row.
] stores starting offsets of each block within val. The
block starts at position val_ptr[
] in the array val. The last element val_ptr[0:
] =
.
] stores the block column indices. The
block begins at column bcol[ind[
M
I^{{th}}
I
Data Fields | |
| oski_index_t | mb |
| No. | |
| oski_index_t | nb |
| No. | |
| oski_index_t * | brow |
| Block row starting indices. | |
| oski_index_t * | bcol |
| Block column starting indices. | |
| oski_value_t * | val |
| Non-zero values. | |
| oski_index_t * | valptr |
| Block value pointers. | |
| oski_index_t * | ind |
| Block column indices. | |
| oski_index_t * | ptr |
| Block row pointers. | |
|
|
No.
of block rows, |
|
|
No.
of block columns, |
1.4.6