Overview

Workspace queries, argument validation and the CTA ormqr kernel behind the QR entry points.

Functions

◆ ortho_buffer_size() [1/2]

template<Backend B, typename T>
size_t batchlas::ortho_buffer_size ( Queue & ctx,
const MatrixView< T, MatrixFormat::Dense > & A,
Transpose transA,
OrthoAlgorithm algo = OrthoAlgorithm::Chol2 )

Required workspace, in bytes, for ortho(); arguments as for the call itself.

◆ ortho_buffer_size() [2/2]

template<Backend B, typename T>
size_t batchlas::ortho_buffer_size ( Queue & ctx,
const MatrixView< T, MatrixFormat::Dense > & A,
const MatrixView< T, MatrixFormat::Dense > & M,
Transpose transA,
Transpose transM,
OrthoAlgorithm algo = OrthoAlgorithm::Chol2,
size_t iterations = 2 )

Required workspace, in bytes, for the external-basis ortho(); same arguments.

◆ ormqx_cta()

template<Backend B, typename T>
Event batchlas::ormqx_cta ( Queue & ctx,
const MatrixView< T, MatrixFormat::Dense > & a_in,
const VectorView< T > & tau_in,
const MatrixView< T, MatrixFormat::Dense > & c_in,
Uplo factorization,
Side side,
Transpose trans,
int32_t k,
const Span< std::byte > & ws,
size_t cta_wg_size_multiplier = 1 )

CTA-optimized application of Q from a QR/QL factorization (ORMQx/UNMQx semantics) for very small matrices: applies the implicit Q of the Householder reflectors (A, TAU) from GEQRF (Upper) or GEQLF (Lower) to C.

Overwrites c_in with op(Q) * C (Side::Left) or C * op(Q) (Side::Right), using the first k reflectors.

◆ geqrf_validate_params()

template<typename T>
void batchlas::geqrf_validate_params ( const MatrixView< T, MatrixFormat::Dense > & A)
inline

Validates the arguments of the positional geqrf() entry point.

Checks only non-negative extents. Rectangular A of either orientation is valid; the length of tau is checked by the option overloads.

Exceptions
batchlas::invalid_argumenton negative extents

Definition at line 57 of file geqrf.hh.

◆ geqrf_buffer_size()

template<Backend B, typename T>
size_t batchlas::geqrf_buffer_size ( Queue & ctx,
const MatrixView< T, MatrixFormat::Dense > & A,
Span< T > tau )

Workspace, in bytes, that geqrf() needs for this shape on this queue.

◆ orgqr_validate_params()

template<typename T>
void batchlas::orgqr_validate_params ( const MatrixView< T, MatrixFormat::Dense > & A)
inline

Validates the arguments of the positional orgqr() entry point.

Checks only non-negative extents. n <= m is not checked: an n > m view is served by the vendor kernel, the only one whose can_run admits it (src/ops/orgqr/orgqr.cc). The length of tau is checked by the option overloads.

Exceptions
batchlas::invalid_argumenton negative extents

Definition at line 55 of file orgqr.hh.

◆ orgqr_buffer_size()

template<Backend B, typename T>
size_t batchlas::orgqr_buffer_size ( Queue & ctx,
const MatrixView< T, MatrixFormat::Dense > & A,
Span< T > tau )

Workspace, in bytes, that orgqr() needs for this shape on this queue.

◆ ormqr_buffer_size()

template<Backend B, typename T>
size_t batchlas::ormqr_buffer_size ( Queue & ctx,
const MatrixView< T, MatrixFormat::Dense > & A,
const MatrixView< T, MatrixFormat::Dense > & C,
Side side,
Transpose trans,
Span< T > tau,
int32_t block_size_hint = 0 )

Workspace, in bytes, that ormqr() needs for these operands on this queue.

Makes the same kernel choice and block width as ormqr() from the same inputs, so the result is valid for a call with the same arguments and block_size_hint. evidence: docs/perf/qr.md#ormqr-one-route-resolution-for-the-call-and-its-size-query