diff --git a/recipe/conda_build_config.yaml b/recipe/conda_build_config.yaml index 95384c634a..2c19bba754 100644 --- a/recipe/conda_build_config.yaml +++ b/recipe/conda_build_config.yaml @@ -19,6 +19,7 @@ m2w64_c_stdlib_version: # [win] - 12 # [win] c_stdlib_version: # [unix] - 2.17 # [linux] + - 2.17 # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - 10.13 # [osx and x86_64] - 11.0 # [osx and arm64] cxx_compiler: @@ -154,6 +155,8 @@ zip_keys: - c_compiler_version # [unix] - cxx_compiler_version # [unix] - fortran_compiler_version # [unix] + # CUDA 13.x requires newer glibc than our current baseline + - c_stdlib_version # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - cuda_compiler_version # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - python diff --git a/recipe/migrations/cuda118.yaml b/recipe/migrations/cuda118.yaml index de3fb48c66..c98421899d 100644 --- a/recipe/migrations/cuda118.yaml +++ b/recipe/migrations/cuda118.yaml @@ -1,4 +1,5 @@ -migrator_ts: 1748496951 +# In order to work, this timestamp needs to be newer than all other CUDA migrators +migrator_ts: 2145938400 # 2038-01-01 __migrator: kind: version @@ -28,6 +29,7 @@ __migrator: - 12.8 - None - 12.9 + - 13.0 - 11.8 cuda_compiler_version_min: - 12.4 @@ -45,6 +47,9 @@ cuda_compiler_version: # [(linux or win64) and os.environ.get("CF_CUDA_ENAB cuda_compiler_version_min: # [linux or win64] - 11.8 # [linux or win64] +c_stdlib_version: # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 2.17 # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + c_compiler_version: # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - 11 # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] diff --git a/recipe/migrations/cuda129.yaml b/recipe/migrations/cuda129.yaml index 5074cd12af..f8b53b3640 100644 --- a/recipe/migrations/cuda129.yaml +++ b/recipe/migrations/cuda129.yaml @@ -18,6 +18,7 @@ __migrator: - 12.8 - None - 12.9 + - 13.0 # to allow manual opt-in for CUDA 11.8, see # https://github.com/conda-forge/conda-forge-pinning-feedstock/pull/7472 # must be last due to how cuda_compiler ordering in that migrator works @@ -47,6 +48,9 @@ cuda_compiler_version: # [((linux and (x86_64 or aarch64)) or win64) and cuda_compiler_version_min: # [((linux and (x86_64 or aarch64)) or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - 12.9 # [((linux and (x86_64 or aarch64)) or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] +c_stdlib_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 2.17 # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + c_compiler_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - 14 # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] diff --git a/recipe/migrations/cuda130.yaml b/recipe/migrations/cuda130.yaml new file mode 100644 index 0000000000..bd840bd952 --- /dev/null +++ b/recipe/migrations/cuda130.yaml @@ -0,0 +1,62 @@ +migrator_ts: 1755016036 +__migrator: + operation: key_add + migration_number: + 1 + build_number: + 1 + paused: true + override_cbc_keys: + - cuda_compiler_stub + check_solvable: false + primary_key: cuda_compiler_version + ordering: + cuda_compiler_version: + - 12.4 + - 12.6 + - 12.8 + - None + - 12.9 + - 13.0 + # to allow manual opt-in for CUDA 11.8, see + # https://github.com/conda-forge/conda-forge-pinning-feedstock/pull/7472 + # must be last due to how cuda_compiler ordering in that migrator works + - 11.8 + wait_for_migrators: + - cuda129 + commit_message: | + Upgrade to CUDA 13.0 + + 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"]`. + +cuda_compiler_version: # [((linux and (x86_64 or aarch64)) or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 13.0 # [((linux and (x86_64 or aarch64)) or win64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + +c_stdlib_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 2.28 # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + +c_compiler_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 14 # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + +cxx_compiler_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 14 # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + +fortran_compiler_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 14 # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"]