28 const std::int64_t m = A.
rows(), n = A.
cols();
30 const auto budget =
static_cast<std::size_t
>(d.
slm_budget);
32 [&](
Tiny) {
return native && m == n && n <= sycl_geqrf::geqrf_tiny_max_n_for_slm<T>(budget); },
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).
bool is_heterogeneous() const
True when per-item active extents are attached.
int cols() const
Columns per item (the capacity on a heterogeneous batch).
int batch_size() const
Number of batch items.
geqrf: tiny, cta, blocked, vendor.
The batched containers: Matrix (owning), MatrixView (non-owning), KernelMatrixView (device-side),...
std::variant< Tiny, Cta, Blocked, Vendor > GeqrfChoice
fieldless: buckets, packing, nb, leaf derived
bool can_run(const GeqrfChoice &c, const select::Device &d, const MV< T > &A)
Correctness only (R3): each clause is its driver's check.
MatrixView< T, MatrixFormat::Dense > MV
BATCHLAS_INTERNAL_API int64_t geqrf_cta_max_elems_for_slm(std::size_t slm_budget_bytes, int min_blocks_per_sm=kGeqrfMinBlocksPerSm)
BATCHLAS_INTERNAL_API bool geqrf_cta_fits(int m, int n, std::size_t slm_budget_bytes, int min_blocks_per_sm=kGeqrfMinBlocksPerSm)
BATCHLAS_INTERNAL_API bool geqrf_blocked_available()
Flat kernel selection: one choose() per op over measured per-device tables.
geqrf_blocked_dispatch + the public gemm, any m >= n
geqrf_cta_dispatch: the whole panel in SLM (geqrf_cta_fits)
geqrf_tiny_dispatch: square, registers, n <= the tiny ceiling
backend::geqrf_vendor; needs the factorization library
The device facts a can_run predicate and the table lookup read (§5.1).
std::int64_t slm_budget
LOCAL_MEM_SIZE less a 4 KiB reserve, bytes: any work-group size.
bool has_vendor
the asking op's library group (OpSpec::vendor) is compiled in
std::visit over a choice with one lambda per family.