tagBebop_matMBCSR_t Struct Reference

#include <format.h>

Detailed Description

Modified block compressed sparse row (MBCSR) format.

An $m\times n$ matrix $A$ stored in $r\times c$ MBCSR format is logically partitioned row-wise into 3 submatrices, $A = \left(\begin{array} {}A_1 \\ A_2 \\ A_3\end{array}\right)$, where $A$ is stored in $r\times c$ MBCSR format. This partitioning is a `canonical' format in which $A_1$, $A_2$, and $A_3$ have the following properties:

The purpose of this format is to enable fast implementations of the triangular solve and $A^TA\cdot x$ kernels in which the `special case' code to handle degenerate diagonal block, if any, is stored separately in $A_2$, and multiplication by $A_1, A_2,$ and $A_3$ can execute at `full' speed. The canonical form provides a uniform way to treat both square and rectangular matrices stored in MBCSR format.

Data Fields

oski_submatMBCSR_t A1
oski_submatMBCSR_t A2
 Pointer to $A_3$.
struct {
   int   is_upper
   int   is_lower
 Mutually exclusive non-zero pattern properties.
struct {
   int   MatTransMatMult
 Specialized $A^TAx$ kernel.
   int   MatMultAndMatMult
 Specialized $(Ax,Aw)$ kernel.
   int   MatMultAndMatTransMult
 Specialized $(Ax,A^Tw)$ kernel.
   int   MatPowMult
 Specialized $A^kx$ kernel.
   int   MatTransPowMult
 Specialized $(A^T)^kx$ kernel.
 Flags to enable/disable individual kernel implementations.

Field Documentation

struct { ... } tagBebop_matMBCSR_t::enabled

Flags to enable/disable individual kernel implementations.

These are currently implemented as boolean flags, but stored as general integers for future expansion.

We implicitly prefer to always conserve matrix storage, and so 'symmetry' is always enabled.

struct { ... } tagBebop_matMBCSR_t::stored

Mutually exclusive non-zero pattern properties.

These properties work in conjunction with the 'pattern' properties in oski_matcommon_t. If the matrix is symmetric or Hermitian, then one of these flags indicates which non-zero values are actually stored.

is_upper == is_lower <==> full storage.

These flags apply to each of the individual submatrices, $A_1$, $A_2$, and $A_3$.

If the matrix is triangular, these flags are ignored.

The documentation for this struct was generated from the following file:
Generated on Wed Sep 19 16:41:23 2007 for BeBOP Optimized Sparse Kernel Interface Library by  doxygen 1.4.6