CUDA CI and release build

The CUDA workflow has two distinct jobs:

  • compile and smoke-check CUDA wheels on Linux;

  • run CUDA behavior tests when a real GPU is available.

A GitHub-hosted Linux runner can install the CUDA toolkit and build the extension, but it does not provide an NVIDIA GPU. Tests that require a real CUDA device are therefore guarded with a CUDA availability marker. This is expected: compile-time coverage and runtime GPU coverage are different checks.

Release wheel shape

The wheel contains the Python package and native CUDA extension. Build settings come from pyproject.toml and can be overridden with CMake config settings. For a release build, record the CUDA toolkit, PyTorch CUDA version, and target architecture list used by the build.

Troubleshooting build time

CUDA extension builds are dominated by NVCC compilation. Useful hardening steps include caching build directories, limiting full wheel builds to release or native change paths, and keeping CPU-only quality checks separate from CUDA packaging. Those are CI design choices; they should not change operator semantics.