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) and glass::nvidia::thread:: cuSOLVERDx 0.4+ LAPACK wrappers (one packed problem per CUDA thread).

  • 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).

  • Execution plansglass-defaults.cuh and its constexpr glass::recommend() query, which returns family, scope, and launch packing 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 for deterministic-order ops; never re-dispatched); the bare glass:: spellings are the measured-default face. Measured cells can use a warp-0 or thread-0 body while preserving the block-scope calling contract; unmoved operations remain re-exports. See Namespaces, suffixes, and flags.