API Reference#

These pages are generated directly from the Doxygen doc-comments in the GLASS headers via Breathe. Only the public, documented entry points appear here — internal *_impl helpers are intentionally excluded.

The reference is organized by BLAS level and by backend:

  • L1 — vector operations (axpy, copy, dot, reduce, norms, elementwise, …).

  • L2 — matrix-vector operations (gemv, ger, trsv, trmv, strided/segmented gemv).

  • L3 — matrix operations (gemm and variants, inverse, Cholesky, trsm, syrk/syr2k, ldlt, posv/potrs).

  • NVIDIA backend — the glass::nvidia::block:: CUB / cuBLASDx / cuSOLVERDx paths and their host-side query/size helpers, plus the glass::nvidia::warp:: CUB WarpReduce reductions (one full 32-lane warp per problem).

  • Warp-scoped — the glass::warp:: single-warp SIMT variants for warp-per-problem kernels.

  • Thread-scoped — the glass::thread:: sequential variants for thread-per-problem low-DOF packing.

  • Block-tridiagonal solvers — the glass::bdmv matvec and the glass::pcg preconditioned conjugate-gradient solver for the block-tridiagonal SPD systems of trajectory optimization / MPC.

  • Robotics operators — the spatial 6-D, Lie/quaternion, projection/cone, geometry-distance, and sampling-reduction families (all three SIMT tiers; see Robotics operators & conventions).

  • Backend pickerglass-defaults.cuh constexpr helpers (suggested_backend / suggested_block_threads / suggested_warps_per_block / suggested_threads_per_block) that pick a backend + launch config from the measured ladder.

Note

Every operation typically ships several overloads — runtime-sized and compile-time-sized (<T, N, ...>), with and without a beta term, and pure-SIMT vs cooperative-groups (glass::cgrps::) variants. The pages below list them per header.

Note

The block-scope SIMT entries on these pages are the glass::block:: contract tier (bit-exact, thread-count invariant, never re-dispatched); the bare glass:: spellings are the measured-default face — in Phase 1 the same entities, re-exported (likewise glass::nvidia::block:: vs bare glass::nvidia::). See Namespaces, suffixes, and flags.