lower_normal.c File Reference


Detailed Description

Non-transposed sparse triangular solve implementation when the matrix is lower triangular and stored in CSR format.

#include <assert.h>
#include <oski/config.h>
#include <oski/common.h>
#include <oski/mangle.h>
#include <oski/vecview.h>
#include <oski/CSR/format.h>
#include <oski/CSR/module.h>

Defines

#define REGISTER   register
 Real-valued, so use explicit 'register' keyword.

Functions

static void CSR_MatTrisolveLower_Unitdiag_xsX (oski_index_t m, oski_index_t indbase, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_value_t alpha, oski_value_t *restrict x, oski_index_t incx)
 Solves $T\cdot x = \alpha\cdot b$ for $x$, where:
  • $T$ is lower triangular,
  • the diagonal is implicit and equal to 1,
  • the column indices within a given row may be unsorted, and
  • $x$ is an array with general stride.

static void CSR_MatTrisolveLower_Unitdiag_xs1 (oski_index_t m, oski_index_t indbase, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_value_t alpha, oski_value_t *x)
 Solves $T\cdot x = \alpha\cdot b$ for $x$, where:
  • $T$ is lower triangular,
  • the diagonal is implicit and equal to 1,
  • the column indices within a given row may be unsorted, and
  • $x$ is an array with unit-stride.

static void CSR_MatTrisolveLower_Diag_Sorted_xsX (oski_index_t m, oski_index_t indbase, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_value_t alpha, oski_value_t *restrict x, oski_index_t incx)
 Solves $T\cdot x = \alpha\cdot b$ for $x$, where:
  • $T$ is lower triangular,
  • a full (all non-zero) diagonal exists,
  • the column indices within a given row are sorted in increasing order (i.e., the last element of each row is the diagonal non-zero value), and
  • $x$ is an array with general stride.

static void CSR_MatTrisolveLower_Diag_Sorted_xs1 (oski_index_t m, oski_index_t indbase, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_value_t alpha, oski_value_t *x)
 Solves $T\cdot x = \alpha\cdot b$ for $x$, where:
  • $T$ is lower triangular,
  • a full (all non-zero) diagonal exists,
  • the column indices within a given row are sorted in increasing order (i.e., the last element of each row is the diagonal non-zero value), and
  • $x$ is an array with unit-stride.

static void CSR_MatTrisolveLower_Diag_Unsorted_xsX (oski_index_t m, oski_index_t indbase, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_value_t alpha, oski_value_t *restrict x, oski_index_t incx)
 Solves $T\cdot x = \alpha\cdot b$ for $x$, where:
  • $T$ is lower triangular,
  • a full (all non-zero) diagonal exists,
  • the column indices within a given row may be unsorted, and
  • $x$ is an array with general stride.

static void CSR_MatTrisolveLower_Diag_Unsorted_xs1 (oski_index_t m, oski_index_t indbase, const oski_index_t *restrict ptr, const oski_index_t *restrict ind, const oski_value_t *restrict val, oski_value_t alpha, oski_value_t *x)
 Solves $T\cdot x = \alpha\cdot b$ for $x$, where:
  • $T$ is lower triangular,
  • a full (all non-zero) diagonal exists,
  • the column indices within a given row may be unsorted, and
  • $x$ is an array with unit-stride.

void CSR_MatTrisolveLower (oski_index_t m, oski_index_t indbase, int is_unit, int is_sorted, const oski_index_t *ptr, const oski_index_t *ind, const oski_value_t *val, oski_value_t alpha, oski_value_t *restrict x, oski_index_t num_vecs, oski_index_t rowinc, oski_index_t colinc)


Generated on Wed Sep 19 16:41:22 2007 for BeBOP Optimized Sparse Kernel Interface Library by  doxygen 1.4.6