BeBOP Optimized Sparse Kernel Interface Library  1.0.1h
Defines | Functions
lower_conj.c File Reference

Conjugate sparse triangular solve implementation when the matrix is lower triangular and stored in CSR format. More...

#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_MatConjTrisolveLower_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:
static void CSR_MatConjTrisolveLower_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:
static void CSR_MatConjTrisolveLower_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:
static void CSR_MatConjTrisolveLower_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:
static void CSR_MatConjTrisolveLower_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:
static void CSR_MatConjTrisolveLower_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:
void CSR_MatConjTrisolveLower (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)

Detailed Description

Conjugate sparse triangular solve implementation when the matrix is lower triangular and stored in CSR format.


Function Documentation

static void CSR_MatConjTrisolveLower_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 
) [static]

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.

References REGISTER, VAL_ASSIGN, VAL_DIVEQ_CONJ, VAL_MSUB_CONJ, and VAL_MUL.

static void CSR_MatConjTrisolveLower_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 
) [static]

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.

References REGISTER, VAL_ASSIGN, VAL_DIVEQ_CONJ, VAL_MSUB_CONJ, and VAL_MUL.

static void CSR_MatConjTrisolveLower_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 
) [static]

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.

References REGISTER, VAL_ASSIGN, VAL_DIVEQ_CONJ, VAL_INC, VAL_MSUB_CONJ, VAL_MUL, and VAL_SET_ZERO.

static void CSR_MatConjTrisolveLower_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 
) [static]

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.

References REGISTER, VAL_ASSIGN, VAL_DIVEQ_CONJ, VAL_INC, VAL_MSUB_CONJ, VAL_MUL, and VAL_SET_ZERO.

static void CSR_MatConjTrisolveLower_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 
) [static]

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.

References REGISTER, VAL_ASSIGN, VAL_MSUB_CONJ, and VAL_MUL.

static void CSR_MatConjTrisolveLower_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 
) [static]

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.

References REGISTER, VAL_ASSIGN, VAL_MSUB_CONJ, and VAL_MUL.