Backends and Diagnostics¶
The symmetrix-xl distribution includes CPU/OpenMP. Detect the local supported
backend first, then install an accelerator extension whose architecture exactly
matches the deployment GPU:
python tools/symmetrix_build.py detect --backend auto
python tools/symmetrix_build.py install --backend cuda --arch smNN \
--cuda-root /path/to/cuda
symmetrix backend list
symmetrix doctor --json
Replace smNN and /path/to/cuda with the target architecture and toolkit on
the deployment system. Build one backend per GPU architecture. NVRTC recompiles direct artifacts but
cannot replace the ahead-of-time Kokkos and SpheriCart code in an extension.
symmetrix doctor is a fresh-process runtime smoke test: it checks OpenMP
runtime/worker participation on CPU and device selection plus a sentinel kernel
on CUDA/HIP. Use the deployment target’s compiler, runtime, and scheduler
documentation when preparing a cluster build.
symmetrix backend list marks a usable accelerator or CPU fallback with *.
Use SYMMETRIX_BACKEND=cuda13-sm80 before Python starts to select a particular
compatible installed backend. symmetrix backend show [selector] resolves the
automatic or explicit selection; it reports an error for an incompatible GPU.
Add --probe to load the selected extension and print its runtime OpenBLAS
configuration, including whether the build is OpenMP-enabled and its active
thread count, OpenMP runtime compatibility, and maximum active levels, just like
symmetrix doctor.
To install a published backend wheel from the command line, use:
symmetrix backend install --arch cuda13-sm120
The default is --arch auto. Automatic installation requires one visible GPU
architecture and infers the CUDA or ROCm major version. Use an explicit selector
when multiple GPUs are visible or the deployment host has no device. The command
uses uv when it is available, otherwise python -m pip, and prints the full
resolution details, including the detected architecture, toolkit version and
source, selected package, and Python environment, before running it.
CUDA 13 hosts automatically fall back to a published CUDA 12 wheel for the
same architecture when no CUDA 13 wheel is available; explicit selectors do not
fall back.
On CPU-only hosts, automatic mode explains that the bundled CPU backend needs no
download. If no pre-compiled wheel resolves, it reports the attempted selectors
and a source-build command.
An OpenMP-enabled OpenBLAS build using the same OpenMP runtime as Kokkos is preferred for CPU Kokkos deployments. Symmetrix-XL selects compatible builds automatically for host GEMMs and prints a runtime warning when the loaded OpenBLAS build uses pthreads instead.