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::math objects 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.