Skip to content

[Feature] Make QDP CUDA kernel build targets configurable and future-compatible #1282

@viiccwen

Description

@viiccwen

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions