Vendor-accelerated paths built on CUB (reductions), cuBLASDx (GEMM/GEMV), and
cuSOLVERDx (LAPACK). Block-scope ops live in glass::nvidia::block::.
Those entry points auto-dispatch at compile time
between a pure-SIMT implementation and the vendor backend based on a size
heuristic / tuning table (a constexpr decision — no runtime branching);
see :doc:`../user_guide/concepts/backend_dispatch`. The L2/L3/LAPACK paths
require NVIDIA MathDx (MATHDX_ROOT) — see
:doc:`../user_guide/getting_started/installation`.
cuSOLVERDx 0.4+ also supplies explicit smem-less LAPACK wrappers under
glass::nvidia::thread::. Each calling CUDA thread owns one packed problem.
Warp-scope CUB reductions live in glass::nvidia::warp::. There is no bare
operation re-export: the scope is always explicit because it determines launch
geometry.
Each call has a companion host-side query helper (*_scratch_bytes,
*_threads, *_block_threads_valid) used to size the launch.
reduce / dot / nrm2 at block scope (cub::BlockReduce) and, in
glass::nvidia::warp::, at warp scope (cub::WarpReduce — one FULL
32-lane warp per problem, per-warp scratch via
warp_reduce_scratch_bytes<T>(), TRAILING_SYNC emits __syncwarp()).
.. doxygenfile:: src/nvidia/l1.cuh :no-link:
.. doxygenfile:: src/nvidia/l2.cuh :no-link:
.. doxygenfile:: src/nvidia/l3.cuh :no-link:
.. doxygenfile:: src/nvidia/l3_simt.cuh :no-link:
.. doxygenfile:: src/nvidia/lapack.cuh :no-link:
.. doxygenfile:: src/nvidia/lapack_thread.cuh :no-link:
.. doxygenfile:: src/nvidia/query.cuh :no-link:
.. doxygenfile:: src/nvidia/query_simt.cuh :no-link:
.. doxygenfile:: src/nvidia/types.cuh :no-link:
The umbrella headers also expose host-callable helpers for sizing dynamic shared memory at launch time.
.. doxygenfunction:: glass_gemm_dispatch_smem
.. doxygenfile:: glass-nvidia.cuh :no-link: