numerics 0.1.0
Loading...
Searching...
No Matches
dense.hpp File Reference

Dense matrix inner kernels (namespace num::kernel::dense) More...

#include "core/matrix.hpp"
#include "core/types.hpp"
#include "core/vector.hpp"
#include "kernel/policy.hpp"

Go to the source code of this file.

Namespaces

namespace  num
 
namespace  num::kernel
 
namespace  num::kernel::dense
 

Functions

void num::kernel::dense::ger (real alpha, const Vector &x, const Vector &y, Matrix &A, seq_t) noexcept
 Sequential rank-1 update: calls raw::ger (routes to cblas_dger when BLAS available; otherwise vectorizable row-update loop).
 
void num::kernel::dense::ger (real alpha, const Vector &x, const Vector &y, Matrix &A, par_t)
 Parallel rank-1 update: OMP parallel-for over rows. Each row update A[i,:] += alpha*x[i]*y is independent.
 
void num::kernel::dense::ger (real alpha, const Vector &x, const Vector &y, Matrix &A)
 Default policy.
 
void num::kernel::dense::trsv_lower (const Matrix &L, const Vector &b, Vector &x)
 Forward substitution: solve Lx = b.
 
void num::kernel::dense::trsv_upper (const Matrix &U, const Vector &b, Vector &x)
 Back substitution: solve Ux = b.
 

Detailed Description

Dense matrix inner kernels (namespace num::kernel::dense)

These are the level-2 BLAS-equivalent operations exposed as first-class kernels. They are the inner loops that factorization solvers and iterative methods reduce to, but which are not currently accessible as standalone functions in the rest of numerics.

ger(alpha, x, y, A) – A += alpha * x * y^T (rank-1 update) trsv_lower(L, b, x) – solve Lx = b (L lower triangular) trsv_upper(U, b, x) – solve Ux = b (U upper triangular)

ger has seq_t / par_t overloads: the outer loop over rows is independent and parallelizable.

trsv has no policy parameter: the outer loop has a serial dependency (each row depends on all previous rows). BLAS cblas_dtrsv is used automatically via raw:: when NUMERICS_HAS_BLAS is defined.

Include kernel/kernel.hpp to get all kernel sub-modules together.

Definition in file dense.hpp.