Skip to content

Conversation

@regro-cf-autotick-bot
Copy link
Contributor

This PR has been triggered in an effort to update cuda130.

Notes and instructions for merging this PR:

  1. Please merge the PR only after the tests have passed.
  2. Feel free to push to the bot's branch to update this PR if needed.

Please note that if you close this PR we presume that the feedstock has been rebuilt, so if you are going to perform the rebuild yourself don't close this PR until the your rebuild has been merged.


Here are some more details about this specific migrator:

CUDA 13.0 requires architecture sm_75 or higher, and renamed sm_101 to
sm_110. To build for these, maintainers will need to modify their existing list of
specified architectures (e.g. CMAKE_CUDA_ARCHITECTURES, TORCH_CUDA_ARCH_LIST, etc.)
for their package.

Since CUDA 12.8, the conda-forge nvcc package now sets CUDAARCHS and
TORCH_CUDA_ARCH_LIST in its activation script to a string containing all
of the supported real architectures plus the virtual architecture of the
latest. Recipes for packages who use these variables to control their build
but do not want to build for all supported architectures will need to override
these variables in their build script.

ref: https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#new-features

[[!IMPORTANT]]
Remember to update any CUDA 11/12 specific selector syntax in the recipe to include
CUDA 13. For example # [(cuda_compiler_version or "None").startswith("12")]
might be replaced with # [cuda_compiler_version != "None"].


If this PR was opened in error or needs to be updated please add the bot-rerun label to this PR. The bot will close this PR and schedule another one. If you do not have permissions to add this label, you can use the phrase @conda-forge-admin, please rerun bot in a PR comment to have the conda-forge-admin add it for you.

This PR was created by the regro-cf-autotick-bot. The regro-cf-autotick-bot is a service to automatically track the dependency graph, migrate packages, and propose package version updates for conda-forge. Feel free to drop us a line if there are any issues! This PR was generated by https://github.com/regro/cf-scripts/actions/runs/17661131741 - please use this URL for debugging.

CUDA 13.0 requires architecture `sm_75` or higher, and renamed `sm_101` to
`sm_110`. To build for these, maintainers will need to modify their existing list of
specified architectures (e.g. `CMAKE_CUDA_ARCHITECTURES`, `TORCH_CUDA_ARCH_LIST`, etc.)
for their package.

Since CUDA 12.8, the conda-forge nvcc package now sets `CUDAARCHS` and
`TORCH_CUDA_ARCH_LIST` in its activation script to a string containing all
of the supported real architectures plus the virtual architecture of the
latest. Recipes for packages who use these variables to control their build
but do not want to build for all supported architectures will need to override
these variables in their build script.

ref: https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#new-features

> [[!IMPORTANT]]
> Remember to update any CUDA 11/12 specific selector syntax in the recipe to include
> CUDA 13. For example `# [(cuda_compiler_version or "None").startswith("12")]`
> might be replaced with `# [cuda_compiler_version != "None"]`.
@conda-forge-admin
Copy link
Contributor

conda-forge-admin commented Sep 12, 2025

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe/meta.yaml) and found it was in an excellent condition.

I do have some suggestions for making it better though...

For recipe/meta.yaml:

  • ℹ️ The recipe is not parsable by parser conda-souschef (grayskull). This parser is not currently used by conda-forge, but may be in the future. We are collecting information to see which recipes are compatible with grayskull.

This message was generated by GitHub Actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/17671381198. Examine the logs at this URL for more detail.

@h-vetinari
Copy link
Member

Error in fail: nvidia_nvshmem: The supported platforms are ["cuda11_x86_64-unknown-linux-gnu", "cuda12_x86_64-unknown-linux-gnu", "cuda12_aarch64-unknown-linux-gnu", "cuda12_tegra-aarch64-unknown-linux-gnu"]. Platform cuda13_x86_64-unknown-linux-gnu is not supported.

@h-vetinari h-vetinari marked this pull request as draft September 21, 2025 06:48
@xhochy
Copy link
Member

xhochy commented Sep 23, 2025

This will also need at least clang>=22.

@h-vetinari
Copy link
Member

This will also need at least clang>=22.

Crazy, because CUDA itself has an upper bound on the allowed clang versions, so that'll mean we'll need another CUDA 13.{x>0} to become available with clang 22 next year. What I'm taking away from this, is that CUDA 13 was just not really tested sufficiently with clang on linux? Any thoughts @conda-forge/cuda?

@bdice
Copy link

bdice commented Sep 23, 2025

I might be missing some context here, so apologies in advance if this is information you already know.

The most recent CUDA release, 13.0, has support for the following compilers: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#id61

Distribution GCC Clang NVHPC XLC ArmC/C++
x86_64 6.x – 15.x 7.x – 20.x 24.9–25.5 No No
Arm64 sbsa 6.x – 15.x 7.x – 20.x 24.9–25.5 No 24.04–24.10

We enforce the GCC bounds in conda-forge here: https://github.com/conda-forge/cuda-nvcc-impl-feedstock/blob/8022b1c0e056b6d70679c65904e683fd1cc23cc8/recipe/meta.yaml#L1

Maybe we need to do the same for clang, to align with that table of supported compilers? Would that help or hurt in this scenario?

It seems like LLVM 21 was released on August 26, after the release of CUDA 13.0 (it is probably not supported for timeline reasons). https://github.com/llvm/llvm-project/releases/tag/llvmorg-21.1.0

It seems like LLVM 22 isn't released yet. Where is the requirement for clang 22 coming from?

@xhochy
Copy link
Member

xhochy commented Sep 24, 2025

It seems like LLVM 22 isn't released yet. Where is the requirement for clang 22 coming from?

This is coming from device code compilation. clang<=21 doesn't know about sm_110 and at least one header was removed from cuda-cudart-dev that clang's internal headers still reference. jaxlib doesn't like to use nvcc anymore, so it will probably lack a bit in CUDA support in future.

@xhochy
Copy link
Member

xhochy commented Sep 24, 2025

Maybe we need to do the same for clang, to align with that table of supported compilers? Would that help or hurt in this scenario?

It doesn't make a difference. CUDA 12.9 actually does compile with clang=21.

@h-vetinari
Copy link
Member

jaxlib doesn't like to use nvcc anymore, so it will probably lack a bit in CUDA support in future.

did you mean "doesn't like to use GCC anymore"?

@xhochy
Copy link
Member

xhochy commented Sep 24, 2025

jaxlib doesn't like to use nvcc anymore, so it will probably lack a bit in CUDA support in future.

did you mean "doesn't like to use GCC anymore"?

It does not like either. In 0.7.1, it forced me to use clang for everything. No GCC, no nvcc.

@robertmaynard
Copy link

It seems like LLVM 22 isn't released yet. Where is the requirement for clang 22 coming from?

This is coming from device code compilation. clang<=21 doesn't know about sm_110 and at least one header was removed from cuda-cudart-dev that clang's internal headers still reference. jaxlib doesn't like to use nvcc anymore, so it will probably lack a bit in CUDA support in future.

Yes, If you are using clang-cuda you will need to wait for clang-22 to be released as that will be the first release to handle the removal of long deprecated headers that occured in CUDA 13.

The table that @bdice is accurate if you intended to use clang as the host compiler for nvcc.

@hawkinsp
Copy link
Contributor

jaxlib doesn't like to use nvcc anymore, so it will probably lack a bit in CUDA support in future.

did you mean "doesn't like to use GCC anymore"?

It does not like either. In 0.7.1, it forced me to use clang for everything. No GCC, no nvcc.

(Upstream here): This isn't quite accurate. JAX only supports clang for host code. We support nvcc for device code, and actually that's how our CI is building it at the moment.

@h-vetinari
Copy link
Member

h-vetinari commented Sep 25, 2025

Thanks for the info @bdice & @hawkinsp! We're don't have a 100% vanilla build (e.g. utilizing our own abseil, cross-compilation setup, toolchain injection into bazel etc.), which might be the reason @xhochy ran into additional issues with nvcc. But IIRC that was for 0.7.1, perhaps things are looking different for 0.7.2 already.

If you are using clang-cuda you will need to wait for clang-22 to be released

Also, I don't mind building a complete toolchain from upstream main into the llvm_dev label. I already did that during the development of llvm 21 (in a different context; I only stopped short of publishing the compiler activation because I had no need for it)

@xhochy
Copy link
Member

xhochy commented Oct 6, 2025

I got some error while building with nvcc for linux-aarch64 that only clang is supported. This led me go down the rabbit hole of moving everything to pure clang. I would rebase this in a few days again and have a look at the error. I only realised once the builds passed that we didn't have CUDA-on-aarch64 before on this feedstock 🤣

@h-vetinari
Copy link
Member

I only realised once the builds passed that we didn't have CUDA-on-aarch64 before on this feedstock 🤣

Can't miss the chance to quote some of my absolute favourite etymology [my bold, italics in original]:

We are indebted to the English author Horace Walpole for the word serendipity, which he coined in one of the 3,000 or more letters on which [...] his literary reputation rests. In a letter of January 28, 1754, in which he discusses a certain painting, Walpole mentions a discovery about the significance of a Venetian coat of arms that he has made while looking at random into an old book—a method by which he had apparently made other worthwhile discoveries before: "This discovery I made by a talisman ... by which I find everything I want ... wherever I dip for it. This discovery, indeed, is almost of that kind which I call Serendipity, a very expressive word." Walpole formed the word on an old name for Sri Lanka, Serendip. He explained that this name was part of the title of "a silly fairy tale, called The Three Princes of Serendip: as their highnesses travelled, they were always making discoveries, by accidents and sagacity, of things which they were not in quest of...."

😊

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.

7 participants