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
 $A_1$
oski_submatMBCSR_t A2
 $A_2$
oski_matBCSR_tp_A3
 Pointer to $A_3$.
struct {
   int   is_upper
   int   is_lower
stored
 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.
enabled
 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.

Note:
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