What
Make QDP CUDA kernel build targets configurable and future-compatible instead of hardcoding a small fixed set of nvcc -gencode targets.
Today qdp/qdp-kernels/build.rs only emits a narrow cubin set, which makes it harder to support both current GPUs and newer architectures such as Blackwell without editing the build script again. It also does not provide a clean override for CI, wheel builds, or local development environments that need a different architecture mix.
Why
QDP should be able to:
- keep working on currently used GPUs without regressing existing builds
- adopt newer NVIDIA architectures without repeatedly rewriting the build script
- let maintainers and CI choose a specific architecture list when packaging or testing
- preserve a PTX fallback path for forward compatibility where appropriate
Without this, architecture support remains tied to source edits and older nvcc defaults, which makes maintenance and release packaging more fragile than necessary.
How
Update qdp/qdp-kernels/build.rs so that:
- the default target set is derived from a project-maintained shortlist filtered by what the local
nvcc actually supports
- at least one PTX target is emitted for forward compatibility when supported by the toolchain
- callers can override the target set through an environment variable such as
QDP_CUDA_ARCH_LIST
- the parser can represent newer suffixed architectures such as
90a when supported by nvcc
- documentation explains how to override architecture targets for local builds and CI
This keeps the change localized to build configuration and documentation, without changing QDP runtime behavior.
What
Make QDP CUDA kernel build targets configurable and future-compatible instead of hardcoding a small fixed set of
nvcc -gencodetargets.Today
qdp/qdp-kernels/build.rsonly emits a narrow cubin set, which makes it harder to support both current GPUs and newer architectures such as Blackwell without editing the build script again. It also does not provide a clean override for CI, wheel builds, or local development environments that need a different architecture mix.Why
QDP should be able to:
Without this, architecture support remains tied to source edits and older
nvccdefaults, which makes maintenance and release packaging more fragile than necessary.How
Update
qdp/qdp-kernels/build.rsso that:nvccactually supportsQDP_CUDA_ARCH_LIST90awhen supported bynvccThis keeps the change localized to build configuration and documentation, without changing QDP runtime behavior.