Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Namespaces | Functions
linear_solve.hpp File Reference

Reference CPU backend for dense general linear systems. More...

#include "lu_common.hpp"
#include <uni20/common/trace.hpp>
#include <uni20/core/scalar_concepts.hpp>
#include <uni20/core/scalar_traits.hpp>
#include <uni20/linalg/backends/linear_solve_common.hpp>
#include <uni20/linalg/backends/packed_matrix.hpp>
#include <uni20/linalg/dispatch.hpp>
#include <uni20/linalg/operation_tags.hpp>
#include <uni20/mdspan/concepts.hpp>
#include <uni20/tensor/access.hpp>
#include <uni20/tensor/concepts.hpp>
#include <cmath>
#include <concepts>
#include <cstddef>
#include <type_traits>
#include <utility>
Include dependency graph for backends/cpu/linear_solve.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  uni20
 
namespace  uni20::linalg
 

Functions

template<uni20::MutableRankedMdspecLike< 2 > CoefficientMdspec, uni20::MutableRankedMdspecLike< 2 > RhsMdspec>
requires uni20::HostWritableMdspec<CoefficientMdspec> && uni20::HostWritableMdspec<RhsMdspec>
consteval auto uni20::linalg::kernel_accepts_types (CpuReferenceBackend const &, linear_solve_op const &, CoefficientMdspec &, RhsMdspec &, SolveInfo &, SolveOptions< uni20::make_real_t< typename CoefficientMdspec::value_type > > const &)
 Report eligibility for a host-accessible dense general solve.
 
template<MutableRankedMdspecLike< 2 > A, MutableRankedMdspecLike< 2 > B>
requires HostWritableMdspec<A> && HostWritableMdspec<B> && RealOrComplex<typename A::value_type> && has_runtime_precision_v<typename A::value_type> && std::same_as<typename A::value_type, typename B::value_type>
consteval auto uni20::linalg::kernel_accepts_types (CpuReferenceBackend, linear_solve_op const &, A &, B &, SolveInfo &, SolveOptions< make_real_t< typename A::value_type > > const &, Precision)
 Accept runtime-precision host solves with an explicit finite working precision.
 
template<MutableRankedMdspecLike< 2 > A, MutableRankedMdspecLike< 2 > B>
requires HostWritableMdspec<A> && HostWritableMdspec<B> && RealOrComplex<typename A::value_type> && has_runtime_precision_v<typename A::value_type> && std::same_as<typename A::value_type, typename B::value_type>
KernelAttempt uni20::linalg::try_kernel (CpuReferenceBackend, linear_solve_op const &, A &a, B &b, SolveInfo &info, SolveOptions< make_real_t< typename A::value_type > > const &options, Precision p)
 Convert runtime workspaces, then use reference LU and triangular substitution.
 
template<uni20::MutableRankedMdspecLike< 2 > CoefficientMdspec, uni20::MutableRankedMdspecLike< 2 > RhsMdspec>
requires uni20::HostWritableMdspec<CoefficientMdspec> && uni20::HostWritableMdspec<RhsMdspec>
KernelAttempt uni20::linalg::try_kernel (CpuReferenceBackend, linear_solve_op const &, CoefficientMdspec &coefficients, RhsMdspec &right_hand_sides, SolveInfo &info, SolveOptions< uni20::make_real_t< typename CoefficientMdspec::value_type > > const &options)
 Resolve host access and solve a dense general linear system.
 

Detailed Description

Reference CPU backend for dense general linear systems.