Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
uni20::krylov::KrylovMetricInnerProduct Concept Reference

Optional customization point for backend-owned metric inner products. More...

#include <matrix_free.hpp>

Concept definition

template<typename Ops, typename Vector, typename Scalar>
concept uni20::krylov::KrylovMetricInnerProduct = requires(Ops ops, Vector x, Vector y) {
{ ops.metric_inner_product(x, y) } -> std::convertible_to<Scalar>;
}
Optional customization point for backend-owned metric inner products.
Definition matrix_free.hpp:421

Detailed Description

Optional customization point for backend-owned metric inner products.

Implementations may provide this operation to compute x^T B y directly, using backend-owned scratch storage, cached B*y values, fused GPU kernels, or MPI collectives. Generic solvers should use metric_inner_product_or_apply so backends without this customization still get a correct default through metric.apply or B.matvec.