TDLS - Tiny Device-callable Linear Solvers
TDLS is a header-only C++20 library of direct solvers for small general linear systems. It is written to be callable from device code: one thread solves one system, on CPU as well as inside a CUDA, HIP, SYCL, Kokkos, RAJA, OpenMP, OpenACC or parallel STL kernel. The solvers are designed for maximum GPU performance. The library has no dependency.
TDLS is designed to be embedded in
TFEL/MFront. Its solvers accept the
tfel::math objects directly, without including TFEL.
Solvers
As of today, TDLS implements one solver family:
TiledLUpp: LU factorization with logical partial pivoting on a tile grid, in a compile-time dimension and a runtime dimension variant.
Documentation map
Getting started: requirements, installation, building the tests and examples, a first solve, and the calling convention shared by every solver.
TiledLUpp: how the solvers work, their configuration, and their snippets: one entry point per snippet, on a small system.
TFEL interoperability: how the
tfel::mathobjects are accepted, with snippets per solver family.Tests: the method, the generic suites, then the suites and the example programs of each solver family. The examples are complete programs solving a physical problem on every execution scale.
API (Doxygen): the Doxygen reference of the headers.
Use of AI: the use of AI assistants in the project.