Skip to content

Conversation

@nnethercote
Copy link
Collaborator

CUDA 12.0 was released in December 2022, and CUDA 13.0 was released in August 2025. It feels like a good time to drop CUDA 11.x support. This means later Kepler devices with compute capabilities of 3.5 and 3.7 will no longer be supported. The minimum version of NVVM IR increases from 1.6 to 2.0, because that's what CUDA 12.0 uses.

Along with this, change the default compiler target to compute_75. This is a good choice because it's the minimum supported by CUDA 13.0, and gets Rust CUDA a step closer to working with CUDA 13.0.

More details in individual commits.

@nnethercote nnethercote requested a review from LegNeato November 20, 2025 04:28
@nnethercote nnethercote force-pushed the increase-min-cuda-version branch 2 times, most recently from d9aff16 to c8ffbdf Compare November 20, 2025 05:39
@nnethercote nnethercote mentioned this pull request Nov 20, 2025
@LegNeato LegNeato force-pushed the increase-min-cuda-version branch from c8ffbdf to 00c90c0 Compare November 21, 2025 05:17
@LegNeato
Copy link
Contributor

rebasing force pushes? lame. sorry for that

Copy link
Contributor

@LegNeato LegNeato left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should remove the cuda11 docker files and the CI step that builds and pushes them if it exists.

The docs on the `CudaBuilder::arch` method are a subset of those on the
`CudaBuilder::arch` field. So just remove all the method docs except for
the pointer to the arch docs.

XXX: NVVM IR 1.6 -> 2.0
https://docs.nvidia.com/cuda/archive/12.0.0/cuda-toolkit-release-notes/index.html
It can be used in `NvvmOption::from_str`, and will also be used in a
subsequent commit in compiletests.
It's possible with the `#[default]` attribute.
…mpute_75`.

CUDA 12.0 was released in December 2022, and CUDA 13.0 was released in
August 2025. It feels like a good time to drop CUDA 11.x support. This
means later Kepler devices with compute capabilities of 3.5 and 3.7 will
no longer be supported. The minimum version of NVVM IR increases from
1.6 to 2.0, because that's what CUDA 12.0 uses.

Along with this, change the default compiler target to `compute_75`.
This is a good choice because it's the minimum supported by CUDA 13.0,
and gets Rust CUDA a step closer to working with CUDA 13.0.

The existing defaults were all over the place.
- `NvvmArch::default()` was `compute_52`.
- `CudaBuilder`'s default was `compute_61`.
- compiletest's default was `compute_70`.

This commit makes the latter two determined by `NvvmArch::default()`,
which is changed to `compute_75`.

Currently CI runs compiletests on `compute_61`, `compute_70`, and
`compute_90`; this commit changes the `compute_70` to `compute_75`. It
seems sensible to have the default value as one of the things tested by
CI.

This comment also adds a comment on NvvmArch with a table of
CUDA/`compute_*` values, which I found very useful.

Resources:
- https://en.wikipedia.org/wiki/CUDA#GPUs_supported for compute
  capabilities supported by different CUDA versions.
- https://docs.nvidia.com/cuda/archive/12.0.0/cuda-toolkit-release-notes/index.html
  for NVVM IR version information.
@nnethercote nnethercote force-pushed the increase-min-cuda-version branch from 00c90c0 to 5204d42 Compare November 21, 2025 09:56
@nnethercote
Copy link
Collaborator Author

I have added another commit that removes the CUDA 11 docker file.

@nnethercote nnethercote requested a review from LegNeato November 21, 2025 10:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants