18#include "backends/seq/impl.hpp"
20#include "backends/omp/impl.hpp"
100 return std::sqrt(
sum);
constexpr idx size() const noexcept
real dot(const Vector &x, const Vector &y)
void axpy(real alpha, const Vector &x, Vector &y)
real norm(const Vector &x)
void scale(Vector &v, real alpha)
void axpy(real alpha, const Vector &x, Vector &y)
real dot(const Vector &x, const Vector &y)
real norm(const Vector &x)
void scale(Vector &v, real alpha)
real dot(const Vector &x, const Vector &y)
void scale(Vector &v, real alpha)
void axpy(real alpha, const Vector &x, Vector &y)
real dot(const Vector &x, const Vector &y)
void scale(Vector &v, real alpha)
real norm(const Vector &x)
void add(const Vector &x, const Vector &y, Vector &z)
void axpy(real alpha, const Vector &x, Vector &y)
void add(const real *x, const real *y, real *z, idx n)
z = x + y
Backend
Selects which backend handles a linalg operation.
@ gpu
CUDA – custom kernels or cuBLAS.
@ omp
OpenMP parallel blocked loops.
@ blocked
Cache-blocked; compiler auto-vectorizes inner loops.
@ simd
Hand-written SIMD intrinsics (AVX2 or NEON)
@ blas
cblas/LAPACKE – OpenBLAS, MKL, Apple Accelerate
@ seq
Naive textbook loops – always available.
constexpr T ipow(T x) noexcept
Compute x^N at compile time via repeated squaring.
void scale(Vector &v, real alpha, Backend b=default_backend)
v *= alpha
real dot(const Vector &x, const Vector &y, Backend b=default_backend)
dot product
real norm(const Vector &x, Backend b=default_backend)
Euclidean norm.
std::complex< real > cplx
void axpy(real alpha, const Vector &x, Vector &y, Backend b=default_backend)
y += alpha * x
void add(const Vector &x, const Vector &y, Vector &z, Backend b=default_backend)
z = x + y
Private declarations for the BLAS backend. Only included by src/core/vector.cpp and src/core/matrix....
Private declarations for the GPU (CUDA) backend. Only included by src/core/vector....