8#include <src/util/internal-api.hh>
9#include <src/util/resident_capacity.hh>
26 std::size_t slm_budget_bytes,
27 int min_blocks_per_sm = resident::kMinBlocksPerSm);
105 int n, std::size_t slm_budget_bytes,
106 int min_blocks_per_sm = resident::kMinBlocksPerSm);
112BATCHLAS_INTERNAL_API
bool getrf_leaf_fits(
int m,
int n, std::size_t slm_budget_bytes);
132 T* a_ptr,
int ld,
int stride,
133 int m,
int n,
int batch,
134 int* piv_ptr,
int piv_stride,
135 int piv_base, int32_t* info_ptr);
139 T* a_ptr,
int ld,
int stride,
140 int m,
int n,
int batch,
141 int* piv_ptr,
int piv_stride,
int piv_base,
143 bool* used_resident_out);
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.
Transpose
The operator op() applied to an operand: op(A) = A, A^T or A^H.
Diag
Whether a triangular operand's diagonal is read or assumed to be one.
ComputePrecision
Internal compute precision of a GEMM (the cuBLAS cublasComputeType_t).
Uplo
Which triangle of a symmetric, Hermitian or triangular operand is referenced.
Side
Side on which a special operand multiplies: op(A) * B or B * op(A).
The batched containers: Matrix (owning), MatrixView (non-owning), KernelMatrixView (device-side),...
BATCHLAS_INTERNAL_API int getrf_panel_reg_nb()
BATCHLAS_INTERNAL_API Event getrf_tiny_dispatch(Queue &ctx, const MatrixView< T, MatrixFormat::Dense > &A, Span< int64_t > pivots, Span< std::byte > workspace, Span< int32_t > info)
BATCHLAS_INTERNAL_API unsigned getrf_panel_reg_debug_launch(Queue &ctx, int m, int n)
std::function< Event( Queue &, const MatrixView< T, MatrixFormat::Dense > &, const MatrixView< T, MatrixFormat::Dense > &, const MatrixView< T, MatrixFormat::Dense > &, T, T, Transpose, Transpose, ComputePrecision)> GetrfTrailingGemm
BATCHLAS_INTERNAL_API int getrf_panel_reg_max_m()
BATCHLAS_INTERNAL_API std::size_t getrf_blocked_buffer_size(Queue &ctx, const MatrixView< T, MatrixFormat::Dense > &A)
BATCHLAS_INTERNAL_API Event getrf_blocked_dispatch(Queue &ctx, const MatrixView< T, MatrixFormat::Dense > &A, Span< int64_t > pivots, Span< std::byte > workspace, Span< int32_t > info, GetrfTrailingGemm< T > trailing_gemm, GetrfPanelSolveTrsm< T > panel_trsm)
BATCHLAS_INTERNAL_API Event getrf_panel_reg_factorize(Queue &ctx, T *a_ptr, int ld, int stride, int m, int n, int batch, int *piv_ptr, int piv_stride, int piv_base, int32_t *info_ptr)
BATCHLAS_INTERNAL_API bool getrf_cta_fits(int n, std::size_t slm_budget_bytes, int min_blocks_per_sm=resident::kMinBlocksPerSm)
BATCHLAS_INTERNAL_API std::size_t getrf_cta_buffer_size(Queue &ctx, const MatrixView< T, MatrixFormat::Dense > &A)
BATCHLAS_INTERNAL_API bool getrf_blocked_available()
BATCHLAS_INTERNAL_API unsigned getrf_blocked_debug_params(Queue &ctx, int n)
BATCHLAS_INTERNAL_API int getrf_tiny_max_n()
BATCHLAS_INTERNAL_API unsigned getrf_blocked_debug_leaf(Queue &ctx, int n)
BATCHLAS_INTERNAL_API unsigned getrf_cta_debug_launch(Queue &ctx, int m, int n)
constexpr int kGetrfTinyWgSize
BATCHLAS_INTERNAL_API bool getrf_leaf_fits(int m, int n, std::size_t slm_budget_bytes)
BATCHLAS_INTERNAL_API Event getrf_panel_factorize(Queue &ctx, T *a_ptr, int ld, int stride, int m, int n, int batch, int *piv_ptr, int piv_stride, int piv_base, int32_t *info_ptr, bool *used_resident_out)
BATCHLAS_INTERNAL_API Event getrf_cta_dispatch(Queue &ctx, const MatrixView< T, MatrixFormat::Dense > &A, Span< int64_t > pivots, Span< std::byte > workspace, Span< int32_t > info)
std::function< Event( Queue &, const MatrixView< T, MatrixFormat::Dense > &, const MatrixView< T, MatrixFormat::Dense > &, T, Side, Uplo, Transpose, Diag)> GetrfPanelSolveTrsm
BATCHLAS_INTERNAL_API bool getrf_panel_reg_fits(int m, int n, int max_wg)
BATCHLAS_INTERNAL_API int getrf_cta_max_n_for_slm(std::size_t slm_budget_bytes, int min_blocks_per_sm=resident::kMinBlocksPerSm)
BATCHLAS_INTERNAL_API std::size_t getrf_tiny_buffer_size(Queue &ctx, const MatrixView< T, MatrixFormat::Dense > &A)
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.