8#include <KokkosBatched_ApplyQ_Decl.hpp>
9#include <KokkosBatched_Copy_Decl.hpp>
10#include <KokkosBatched_LU_Decl.hpp>
11#include <KokkosBatched_QR_Decl.hpp>
12#include <KokkosBatched_SVD_Decl.hpp>
13#include <KokkosBatched_SolveLU_Decl.hpp>
14#include <KokkosBatched_Trsv_Decl.hpp>
15#include <Kokkos_Core.hpp>
46template <KokkosViewRank<2> AViewType, KokkosViewRank<2> BViewType,
47 KokkosViewRank<1> TViewType, KokkosViewRank<2> XViewType,
48 KokkosViewRank<1> WViewType>
53 using QR = KB::SerialQR<KB::Algo::QR::Unblocked>;
54 using ApplyQ = KB::SerialApplyQ<KB::Side::Left, KB::Trans::Transpose,
55 KB::Algo::ApplyQ::Unblocked>;
56 using CopyVector = KB::SerialCopy<KB::Trans::NoTranspose>;
57 using Trsv = KB::SerialTrsv<KB::Uplo::Upper, KB::Trans::NoTranspose,
58 KB::Diag::NonUnit, KB::Algo::Trsv::Unblocked>;
61 CopyVector::invoke(
B,
X);
62 ApplyQ::invoke(
A,
T,
X,
W);
63 const int_t M =
A.extent_int(1);
64 auto x = Kokkos::subview(
X, Kokkos::make_pair(0,
M), 0);
65 auto R = Kokkos::subview(
A, Kokkos::make_pair(0,
M), Kokkos::make_pair(0,
M));
76template <KokkosViewRank<2> AViewType, KokkosViewRank<1> BViewType>
79 using LU = KB::SerialLU<KB::Algo::LU::Unblocked>;
81 KB::SerialSolveLU<KB::Trans::NoTranspose, KB::Algo::SolveLU::Unblocked>;
83 SolveLU::invoke(
A,
B);
100template <KokkosViewRank<2> AViewType, KokkosViewRank<1> SViewType,
101 KokkosViewRank<1> WViewType>
105 using SVD = KB::SerialSVD;
KOKKOS_FORCEINLINE_FUNCTION void SerialSVD(AViewType &A, SViewType &S, WViewType &W)
Perform a partial SVD decomposition, to fetch only the singular values of A.
KOKKOS_FORCEINLINE_FUNCTION void SerialSolveLU(AViewType &A, BViewType &B)
Solves AX=B for X using a LU factorization on A.
KOKKOS_FORCEINLINE_FUNCTION auto SerialSolveQR(AViewType &A, const BViewType &B, TViewType &T, XViewType &X, WViewType &W)
Solves AX=B for X using a QR factorization on A.
KOKKOS_INLINE_FUNCTION consteval fp_t epsilon(void)
KOKKOS_INLINE_FUNCTION consteval fp_t one(void)