Public API

Overview

Everything reachable from #include <batchlas.hh>, plus the two opt-in SYCL headers.

Every entry point enqueues on a batchlas::Queue and returns a batchlas::Event; nothing is readable until the queue (or the event) is waited on. The backend is taken from the Queue, options are designated-initialiser structs, and scratch comes from the Queue's workspace arena. The conventions shared by all entry points are in The BatchLAS C++ API.

Topics

 Queues, devices and events
 batchlas::Queue, batchlas::Device, batchlas::Event and SYCL interop.
 Matrices, views and vectors
 Column-major batched containers and the non-owning views every entry point takes.
 Enumerations and scalar concepts
 Transpose, Uplo, Side, Diag, Backend and the scalar concepts that constrain every template.
 Option structs
 Designated-initialiser option structs accepted by the entry points.
 BLAS level 2
 Batched matrix-vector operations.
 BLAS level 3
 Batched matrix-matrix operations: gemm, trsm, trmm, symm/hemm, syrk/herk, syr2k/her2k.
 Factorizations and linear solvers
 Cholesky and LU factorizations, their solves and inverses.
 QR and orthogonal transforms
 Householder QR, forming and applying Q, and batched orthogonalisation.
 Symmetric and Hermitian eigensolvers
 syev and its tiers, selected-range syevx, and the iterative eigensolvers.
 Tridiagonal and band reduction
 Reduction to tridiagonal form and the tridiagonal eigensolvers (steqr, stedc, stebz, stein).
 Singular value decomposition
 gesvd and the bidiagonal pipeline stages.
 Sparse (CSR) operations
 Sparse-dense products, ILU(k) and CSR test-matrix generators.
 Norms, condition numbers and utilities
 Matrix norms, condition estimates, inversion and scaling helpers.
 Convenience layer (batchlas::linalg)
 Value-returning, NumPy-like wrappers over the entry points.
 Backend dispatch and vendor seams
 How a call reaches a backend: the Queue's backend, owning arguments, and the backend::*_vendor declarations the vendor families call.
 Workspace and memory
 The per-Queue workspace arena, leases and BumpAllocator sizing.
 Errors and convergence status
 The exception hierarchy and per-item info reporting.
 Configuration, environment and tuning
 Runtime settings captured from the environment and the tuning constants.
 Device-side group BLAS
 In-kernel work-group and sub-group BLAS templates (#include <batchlas/blas/device.hh>, needs -fsycl).
 Kernel helpers (installed, not API)
 Headers installed because public headers include them.

Files

file  include/batchlas.hh
 The umbrella header: #include <batchlas.hh> gives the whole public API.
file  include/batchlas/blas/functions.hh
 All positional dense entry points (blas/functions/*.hh) plus their option-struct spellings.
file  include/batchlas/blas/linalg.hh
 Everything <batchlas.hh> provides: containers, entry points, extensions and the linalg layer.