3#include <batchlas/export.hh>
15#include <batchlas/backend_config.h>
25using gesvd_vendor =
Event(Queue&,
26 const MatrixView<T, MatrixFormat::Dense>&,
28 const MatrixView<T, MatrixFormat::Dense>&,
29 const MatrixView<T, MatrixFormat::Dense>&,
33using gesvd_vendor_buffer_size = size_t(Queue&,
34 const MatrixView<T, MatrixFormat::Dense>&,
36 const MatrixView<T, MatrixFormat::Dense>&,
37 const MatrixView<T, MatrixFormat::Dense>&,
43 const MatrixView<T, MatrixFormat::Dense>&,
const MatrixView<T, MatrixFormat::Dense>&,
46using gesvd_hermitian =
Event(Queue&,
const MatrixView<T, MatrixFormat::Dense>&,
51using gesvd_buffer_size = size_t(Queue&,
const MatrixView<T, MatrixFormat::Dense>&,
55using gesvd_buffer_size_hermitian = size_t(Queue&,
const MatrixView<T, MatrixFormat::Dense>&,
57 const MatrixView<T, MatrixFormat::Dense>&,
108template <Backend B,
typename T>
129template <Backend B,
typename T>
146template <Backend B,
typename T>
159template <Backend B,
typename T>
169 return gesvd<B, T>(ctx, A, singular_values, U, Vh, jobu, jobvh, hermitian_uplo, workspace,
180template <Backend B,
typename T>
190template <Backend B,
typename T>
198 Uplo hermitian_uplo);
218template <Backend B,
typename T>
230template <Backend B,
typename T>
Non-owning view of a batch of matrices: the argument type of every entry point.
Enumerations, scalar traits and scalar concepts shared by every public header.
size_t gesvd_vendor_buffer_size(Queue &ctx, const MatrixView< T, MatrixFormat::Dense > &A, Span< typename base_type< T >::type > singular_values, const MatrixView< T, MatrixFormat::Dense > &U, const MatrixView< T, MatrixFormat::Dense > &Vh, SvdVectors jobu, SvdVectors jobvh)
Workspace, in bytes, for backend::gesvd_vendor().
Event gesvd_vendor(Queue &ctx, const MatrixView< T, MatrixFormat::Dense > &A, Span< typename base_type< T >::type > singular_values, const MatrixView< T, MatrixFormat::Dense > &U, const MatrixView< T, MatrixFormat::Dense > &Vh, SvdVectors jobu, SvdVectors jobvh, Span< std::byte > workspace, Span< int32_t > info_out=Span< int32_t >())
The vendor solver's SVD (cuSOLVER gesvdjBatched or a LAPACKE loop), as gesvd()'s vendor kernel family...
Uplo
Which triangle of a symmetric, Hermitian or triangular operand is referenced.
SvdVectors
Which singular vectors gesvd computes for one factor (LAPACK jobu / jobvt).
size_t gesvd_buffer_size(Queue &ctx, const MatrixView< T, MatrixFormat::Dense > &A, Span< typename base_type< T >::type > singular_values, const MatrixView< T, MatrixFormat::Dense > &U, const MatrixView< T, MatrixFormat::Dense > &Vh, SvdVectors jobu, SvdVectors jobvh)
Workspace, in bytes, that gesvd() needs for the same arguments.
Event gesvd(Queue &ctx, const MatrixView< T, MatrixFormat::Dense > &A, Span< typename base_type< T >::type > singular_values, const MatrixView< T, MatrixFormat::Dense > &U, const MatrixView< T, MatrixFormat::Dense > &Vh, SvdVectors jobu, SvdVectors jobvh, Span< std::byte > workspace, Span< int32_t > info)
Singular value decomposition of a batch of matrices (LAPACK ?gesvd).
The batched containers: Matrix (owning), MatrixView (non-owning), KernelMatrixView (device-side),...
Span(T *, typename Span< T >::size_t) -> Span< T >
Backend deduction from the Queue and the USM pointer check.
#define BATCHLAS_DISPATCH_ON_QUEUE(NAME)
Completion handle of enqueued work, returned by every entry point.
Event()
An empty Event, already complete.
Where BatchLAS work runs: a device, a backend, an ordered SYCL queue and a workspace arena.
Non-owning view of size() contiguous elements of type T.
batchlas::Device, batchlas::Event and batchlas::Queue: where work runs and how it is ordered.
batchlas::Span, the non-owning pointer + length every entry point takes for 1-D data.