|
numerics 0.1.0
|
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. | |
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.