eckit::linalg::LinearAlgebraSparse class

Derived classes

struct LinearAlgebraCUDA final
struct LinearAlgebraEigen final
struct LinearAlgebraGeneric final
struct LinearAlgebraMKL final
struct LinearAlgebraViennaCL final

Public static functions

static auto backend(const std::string& name = "") -> const LinearAlgebraSparse&
Get backend, re-setting default.
static auto getBackend(const std::string& name) -> const LinearAlgebraSparse&
Get backend.
static auto hasBackend(const std::string& name) -> bool
Check if a backend is available.
static auto list(std::ostream&) -> std::ostream&
List all available backends.
static auto name() -> const std::string&
Return active backend name.

Public functions

void spmv(const SparseMatrix& A, const Vector& x, Vector& y) const pure virtual
void spmm(const SparseMatrix& A, const Matrix& X, Matrix& Y) const pure virtual
void dsptd(const Vector& x, const SparseMatrix& A, const Vector& y, SparseMatrix& B) const pure virtual

Private functions

~LinearAlgebraSparse() private defaulted virtual
void print(std::ostream&) const pure virtual

Friends

auto operator<<(std::ostream& s, const LinearAlgebraSparse& p) -> std::ostream&

Function documentation

void eckit::linalg::LinearAlgebraSparse::spmv(const SparseMatrix& A, const Vector& x, Vector& y) const pure virtual

Compute the product of a sparse matrix A and vector x

void eckit::linalg::LinearAlgebraSparse::spmm(const SparseMatrix& A, const Matrix& X, Matrix& Y) const pure virtual

Compute the product of sparse matrix A and dense matrix X

void eckit::linalg::LinearAlgebraSparse::dsptd(const Vector& x, const SparseMatrix& A, const Vector& y, SparseMatrix& B) const pure virtual

Compute the product x A' y with x and y diagonal matrices stored as vectors and A a sparse matrix