Batched dense and sparse linear algebra for SYCL: thousands of small-to-medium problems in one call. Each call is routed, per op, size and batch, between native SYCL kernels and the vendor library (cuBLAS, cuSOLVER, cuSPARSE, rocBLAS, netlib), whichever measured faster.
User guide
Build, install, and call BatchLAS from C++ or Python.
Get started →API reference
Every function, type and option, grouped by operation family.
Browse the API →Architecture
Matrix model, kernel selection, workspaces, errors and the environment.
Read the design →Algorithms
The mathematics behind the solvers.
See the algorithms →Performance
Which kernel runs for a shape, and the measurements behind that choice.
See the evidence →Developer guide
Build, test, benchmark, tune and document the library.
Contribute →Every entry point enqueues and returns an Event. Matrices are column-major in device-accessible (USM) memory. Use one Queue per thread. The full contract is in The BatchLAS C++ API.
| Family | Operations |
|---|---|
| Batched BLAS | gemm, gemv, symm, syrk, syr2k, trmm, trsm, hemm, herk, her2k |
| Factorizations and solves | potrf, posv, getrf, getrs, getri, gesv, geqrf, orgqr, ormqr |
| Eigenvalues and SVD | syev, syevx (selected range), gesvd (one-sided Jacobi and blocked) |
| Sparse and spectral | spmm, lanczos, steqr, stedc, ritz_values, ILU(k) |
| Utilities | ortho, matrix generators, norms, condition numbers |
| Python | pybind11 package with NumPy and SciPy interop (BatchLAS Python examples) |
Float, RTX 4090, CUDA backend, large batch.
| Op | BatchLAS | cuSOLVER | Speed-up | Conditions |
|---|---|---|---|---|
| syev with eigenvectors, n = 320, batch 819 | 67.8 µs/matrix | 203.0 µs/matrix | 3.0× | measurement |
| syev with eigenvectors, n = 448, batch 585 | (ratio only) | (ratio only) | 2.1× | same |
| gesvd vs cusolverDnXgesvdjBatched, n = 8, batch 16384 | 0.0064 µs/matrix | 0.339 µs/matrix | 53× | comparison |
| gesvd vs cusolverDnXgesvdjBatched, n = 32 | 0.468 µs/matrix | 0.768 µs/matrix | 1.6× | same |
Where the vendor library is faster for a shape, it runs instead (Kernel selection tables).
Source, issues and releases: github.com/jonasdelacour/BatchLAS.