11#include <batchlas/export.hh>
28using posv =
Event(Queue&,
29 const MatrixView<T, MatrixFormat::Dense>&,
30 const MatrixView<T, MatrixFormat::Dense>&,
34using posv_buffer_size = size_t(Queue&,
35 const MatrixView<T, MatrixFormat::Dense>&,
36 const MatrixView<T, MatrixFormat::Dense>&,
54 "POSV: Matrix dimensions cannot be negative (A: rows=" +
55 std::to_string(A.
rows()) +
", cols=" + std::to_string(A.
cols()) +
56 "; B: rows=" + std::to_string(B.
rows()) +
57 ", cols=" + std::to_string(B.
cols()) +
")");
61 "POSV: A must be square, got " + std::to_string(A.
rows()) +
"x" +
62 std::to_string(A.
cols()));
66 "POSV: B must have A.rows() rows, got " + std::to_string(B.
rows()) +
67 " against " + std::to_string(A.
rows()));
71 "POSV: A and B must share a batch size, got " +
76 "POSV: Invalid uplo parameter: " + std::to_string(
static_cast<int>(uplo)));
103template <Backend Back,
typename T>
116template <Backend Back,
typename T>
125template <Backend Back,
typename T>
Non-owning view of a batch of matrices: the argument type of every entry point.
int rows() const
Rows per item (the capacity on a heterogeneous batch).
int cols() const
Columns per item (the capacity on a heterogeneous batch).
int batch_size() const
Number of batch items.
The call violates the API contract.
Enumerations, scalar traits and scalar concepts shared by every public header.
Uplo
Which triangle of a symmetric, Hermitian or triangular operand is referenced.
@ Upper
The upper triangle (i <= j).
@ Lower
The lower triangle (i >= j).
void posv_validate_params(const MatrixView< T, MatrixFormat::Dense > &A, const MatrixView< T, MatrixFormat::Dense > &B, Uplo uplo)
Validates the arguments of posv() and posv_buffer_size().
size_t posv_buffer_size(Queue &ctx, const MatrixView< T, MatrixFormat::Dense > &A, const MatrixView< T, MatrixFormat::Dense > &B, Uplo uplo)
Workspace, in bytes, that posv() needs for these operands on this queue.
Event posv(Queue &ctx, const MatrixView< T, MatrixFormat::Dense > &A, const MatrixView< T, MatrixFormat::Dense > &B, Uplo uplo, Span< std::byte > work_space, Span< int32_t > info)
Batched solve of for Hermitian positive-definite A.
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.