|
BeBOP Optimized Sparse Kernel Interface Library
1.0.1h
|
Modified block compressed sparse row data structure. More...
Go to the source code of this file.
Data Structures | |
| struct | tagOski_submatMBCSR_t |
| Stores an MBCSR "submatrix". More... | |
| struct | tagBebop_matMBCSR_t |
| Modified block compressed sparse row (MBCSR) format. More... | |
Defines | |
| #define | INC_OSKI_MBCSR_FORMAT_H |
| oski/MBCSR/format.h included. | |
Name mangling. | |
| #define | oski_submatMBCSR_t MANGLE_(oski_submatMBCSR_t) |
| MBCSR matrix representation. | |
| #define | oski_matMBCSR_t MANGLE_(oski_matMBCSR_t) |
| MBCSR matrix representation. | |
| #define | oski_MBCSR_MatMult_funcpt MANGLE_(oski_MBCSR_MatMult_funcpt) |
| MBCSR matrix representation. | |
Typedefs | |
| typedef struct tagOski_submatMBCSR_t | oski_submatMBCSR_t |
| Stores an MBCSR "submatrix". | |
| typedef struct tagBebop_matMBCSR_t | oski_matMBCSR_t |
| Modified block compressed sparse row (MBCSR) format. | |
Modified block compressed sparse row data structure.
For an overview, see Modified Block Compressed Sparse Row (MBCSR) Format.
| typedef struct tagBebop_matMBCSR_t oski_matMBCSR_t |
Modified block compressed sparse row (MBCSR) format.
An
matrix
stored in
MBCSR format is logically partitioned row-wise into 3 submatrices,
, where
is stored in
MBCSR format. This partitioning is a `canonical' format in which
,
, and
have the following properties:
consists of all block rows and diagonal blocks of size
and
, respectively.
contains the degenerate diagonal block of size
where
, and the corresponding block row of size
that contains it.
contains no diagonal blocks (i.e., is simply stored in BCSR format).The purpose of this format is to enable fast implementations of the triangular solve and
kernels in which the `special case' code to handle degenerate diagonal block, if any, is stored separately in
, and multiplication by
and
can execute at `full' speed. The canonical form provides a uniform way to treat both square and rectangular matrices stored in MBCSR format.
| typedef struct tagOski_submatMBCSR_t oski_submatMBCSR_t |
Stores an MBCSR "submatrix".
An
matrix
stored in
MBCSR submatrix format must satisfy the following conditions:
divides 

Let
be the number of block rows. Then
is stored in 4 arrays,
, as follows:
is an array of length
containing all the elements of
that lie within the
diagonal blocks beginning at element
where each block is a square
block. The blocks are stored consecutively, and each block is stored in row-major order. More precisely, for all
,
, and
, the array element
stores the matrix element
.
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
.
, where
, as rows
through
of
. Then For each
such that
,
is the column index of the
entry of an explicitly stored non-zero block whose values are laid out in row-major order in the subarray
.
overlaps with a diagonal block in
, then the corresponding entries in
are set to 0.
is defined so that it extends beyond column
of
. That is, 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.
1.7.6.1