diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index 4e007958..45682f92 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -5,7 +5,7 @@ jobs: - job: osx pool: - vmImage: macOS-13 + vmImage: macOS-15 strategy: matrix: osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython: @@ -20,9 +20,6 @@ jobs: osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313: CONFIG: osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313 UPLOAD_PACKAGES: 'True' - osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython: - CONFIG: osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython - UPLOAD_PACKAGES: 'True' osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython: CONFIG: osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython UPLOAD_PACKAGES: 'True' @@ -35,9 +32,6 @@ jobs: osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313: CONFIG: osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313 UPLOAD_PACKAGES: 'True' - osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython: - CONFIG: osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython - UPLOAD_PACKAGES: 'True' osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython: CONFIG: osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython UPLOAD_PACKAGES: 'True' @@ -50,9 +44,6 @@ jobs: osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313: CONFIG: osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313 UPLOAD_PACKAGES: 'True' - osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython: - CONFIG: osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython - UPLOAD_PACKAGES: 'True' timeoutInMinutes: 360 variables: {} diff --git a/.ci_support/linux_64_blas_implgenericchannel_targetsconda-forge_maincuda_compiler_version12.9is_rcFalse.yaml b/.ci_support/linux_64_blas_implgenericchannel_targetsconda-forge_maincuda_compiler_version12.9is_rcFalse.yaml index 7c84d0b9..d40b2866 100644 --- a/.ci_support/linux_64_blas_implgenericchannel_targetsconda-forge_maincuda_compiler_version12.9is_rcFalse.yaml +++ b/.ci_support/linux_64_blas_implgenericchannel_targetsconda-forge_maincuda_compiler_version12.9is_rcFalse.yaml @@ -18,8 +18,6 @@ cuda_compiler: - cuda-nvcc cuda_compiler_version: - '12.9' -cudnn: -- '9' cxx_compiler: - gxx cxx_compiler_version: @@ -55,17 +53,18 @@ nccl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython - 3.13.* *_cp313 -- 3.9.* *_cpython pytorch: - '2.6' target_platform: @@ -73,6 +72,7 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version + - c_stdlib_version - cuda_compiler_version - - channel_targets - is_rc diff --git a/.ci_support/linux_64_blas_implgenericchannel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml b/.ci_support/linux_64_blas_implgenericchannel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml index 5add6a00..7b9807d3 100644 --- a/.ci_support/linux_64_blas_implgenericchannel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml +++ b/.ci_support/linux_64_blas_implgenericchannel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml @@ -18,8 +18,6 @@ cuda_compiler: - cuda-nvcc cuda_compiler_version: - None -cudnn: -- '9' cxx_compiler: - gxx cxx_compiler_version: @@ -55,17 +53,18 @@ nccl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython - 3.13.* *_cp313 -- 3.9.* *_cpython pytorch: - '2.6' target_platform: @@ -73,6 +72,7 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version + - c_stdlib_version - cuda_compiler_version - - channel_targets - is_rc diff --git a/.ci_support/linux_64_blas_implmklchannel_targetsconda-forge_maincuda_compiler_version12.9is_rcFalse.yaml b/.ci_support/linux_64_blas_implmklchannel_targetsconda-forge_maincuda_compiler_version12.9is_rcFalse.yaml index 3485cccf..5a2789cb 100644 --- a/.ci_support/linux_64_blas_implmklchannel_targetsconda-forge_maincuda_compiler_version12.9is_rcFalse.yaml +++ b/.ci_support/linux_64_blas_implmklchannel_targetsconda-forge_maincuda_compiler_version12.9is_rcFalse.yaml @@ -18,8 +18,6 @@ cuda_compiler: - cuda-nvcc cuda_compiler_version: - '12.9' -cudnn: -- '9' cxx_compiler: - gxx cxx_compiler_version: @@ -55,17 +53,18 @@ nccl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython - 3.13.* *_cp313 -- 3.9.* *_cpython pytorch: - '2.6' target_platform: @@ -73,6 +72,7 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version + - c_stdlib_version - cuda_compiler_version - - channel_targets - is_rc diff --git a/.ci_support/linux_64_blas_implmklchannel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml b/.ci_support/linux_64_blas_implmklchannel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml index f1316ac3..bc4b8536 100644 --- a/.ci_support/linux_64_blas_implmklchannel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml +++ b/.ci_support/linux_64_blas_implmklchannel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml @@ -18,8 +18,6 @@ cuda_compiler: - cuda-nvcc cuda_compiler_version: - None -cudnn: -- '9' cxx_compiler: - gxx cxx_compiler_version: @@ -55,17 +53,18 @@ nccl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython - 3.13.* *_cp313 -- 3.9.* *_cpython pytorch: - '2.6' target_platform: @@ -73,6 +72,7 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version + - c_stdlib_version - cuda_compiler_version - - channel_targets - is_rc diff --git a/.ci_support/linux_aarch64_channel_targetsconda-forge_maincuda_compiler_version12.9is_rcFalse.yaml b/.ci_support/linux_aarch64_channel_targetsconda-forge_maincuda_compiler_version12.9is_rcFalse.yaml index daaf79b0..4ced13c0 100644 --- a/.ci_support/linux_aarch64_channel_targetsconda-forge_maincuda_compiler_version12.9is_rcFalse.yaml +++ b/.ci_support/linux_aarch64_channel_targetsconda-forge_maincuda_compiler_version12.9is_rcFalse.yaml @@ -18,8 +18,6 @@ cuda_compiler: - cuda-nvcc cuda_compiler_version: - '12.9' -cudnn: -- '9' cxx_compiler: - gxx cxx_compiler_version: @@ -55,17 +53,18 @@ nccl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython - 3.13.* *_cp313 -- 3.9.* *_cpython pytorch: - '2.6' target_platform: @@ -73,6 +72,7 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version + - c_stdlib_version - cuda_compiler_version - - channel_targets - is_rc diff --git a/.ci_support/linux_aarch64_channel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml b/.ci_support/linux_aarch64_channel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml index c02cf42c..ab055fd9 100644 --- a/.ci_support/linux_aarch64_channel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml +++ b/.ci_support/linux_aarch64_channel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml @@ -18,8 +18,6 @@ cuda_compiler: - cuda-nvcc cuda_compiler_version: - None -cudnn: -- '9' cxx_compiler: - gxx cxx_compiler_version: @@ -55,17 +53,18 @@ nccl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython - 3.13.* *_cp313 -- 3.9.* *_cpython pytorch: - '2.6' target_platform: @@ -73,6 +72,7 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version + - c_stdlib_version - cuda_compiler_version - - channel_targets - is_rc diff --git a/.ci_support/migrations/cuda129.yaml b/.ci_support/migrations/cuda129.yaml index 24ef061b..dac5adb9 100644 --- a/.ci_support/migrations/cuda129.yaml +++ b/.ci_support/migrations/cuda129.yaml @@ -14,33 +14,53 @@ __migrator: primary_key: cuda_compiler_version ordering: cuda_compiler_version: - - 11.8 - 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 commit_message: | Upgrade to CUDA 12.9 - - With CUDA 12.9, the following new architectures are added `sm_100`, `sm_101` and `sm_120`. - To build for these architectures, maintainers will need to add these to list of architectures - that their package builds for. - + + CUDA 12.8 added support for architectures `sm_100`, `sm_101` and `sm_120`, + while CUDA 12.9 further added `sm_103` and `sm_121`. 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. A good balance between broad support and storage + footprint (resp. compilation time) is to add `sm_100` and `sm_120`. + + 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 cuda_compiler_version: # [((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)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - 12.8 # [win64 and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] -c_compiler_version: # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - 14 # [(linux and x86_64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - 13 # [(linux and aarch64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] +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"] + +# Compiler pinnings deviate from global migrator in order to honor pinnings in local conda_build_config for aarch64 +c_compiler_version: # [(linux and (x86_64 or aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 14 # [(linux and (x86_64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 13 # [(linux and (aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] -cxx_compiler_version: # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - 14 # [(linux and x86_64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - 13 # [(linux and 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)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] + - 13 # [(linux and (aarch64)) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] -fortran_compiler_version: # [linux and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - 14 # [(linux and x86_64) and os.environ.get("CF_CUDA_ENABLED", "False") == "True"] - - 13 # [(linux and 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"] diff --git a/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython.yaml b/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython.yaml index e8bedf2e..857838f8 100644 --- a/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython.yaml +++ b/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython.yaml @@ -51,11 +51,13 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.10.* *_cpython pytorch: diff --git a/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.11.____cpython.yaml b/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.11.____cpython.yaml index 1bc6b879..de901805 100644 --- a/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.11.____cpython.yaml +++ b/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.11.____cpython.yaml @@ -51,11 +51,13 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.11.* *_cpython pytorch: diff --git a/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.12.____cpython.yaml b/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.12.____cpython.yaml index 4a49b01a..5bba5f95 100644 --- a/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.12.____cpython.yaml +++ b/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.12.____cpython.yaml @@ -51,11 +51,13 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.12.* *_cpython pytorch: diff --git a/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313.yaml b/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313.yaml index b6af8a64..859260c7 100644 --- a/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313.yaml +++ b/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313.yaml @@ -51,11 +51,13 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.13.* *_cp313 pytorch: diff --git a/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython.yaml b/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython.yaml deleted file mode 100644 index 5bee1ea8..00000000 --- a/.ci_support/osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython.yaml +++ /dev/null @@ -1,71 +0,0 @@ -MACOSX_DEPLOYMENT_TARGET: -- '11.0' -MACOSX_SDK_VERSION: -- '13.3' -blas_impl: -- generic -c_compiler: -- clang -c_compiler_version: -- '19' -c_stdlib: -- macosx_deployment_target -c_stdlib_version: -- '11.0' -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -cuda_compiler: -- cuda-nvcc -cuda_compiler_version: -- None -cxx_compiler: -- clangxx -cxx_compiler_version: -- '19' -is_rc: -- 'False' -libabseil: -- '20250512' -libblas: -- 3.9.* *netlib -libcblas: -- 3.9.* *netlib -liblapack: -- 3.9.* *netlib -libmagma_sparse: -- '2.9' -libprotobuf: -- 6.31.1 -libtorch: -- '2.6' -llvm_openmp: -- '19' -macos_machine: -- x86_64-apple-darwin13.4.0 -megabuild: -- false -mkl: -- '2023' -numpy: -- '2' -orc: -- 2.1.3 -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.9.* *_cpython -pytorch: -- '2.6' -target_platform: -- osx-64 -zip_keys: -- - c_compiler_version - - cxx_compiler_version -- - channel_targets - - is_rc -zlib: -- '1' diff --git a/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython.yaml b/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython.yaml index 01e5506c..3e623646 100644 --- a/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython.yaml +++ b/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython.yaml @@ -51,11 +51,13 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.10.* *_cpython pytorch: diff --git a/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.11.____cpython.yaml b/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.11.____cpython.yaml index c1a56e1f..350780da 100644 --- a/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.11.____cpython.yaml +++ b/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.11.____cpython.yaml @@ -51,11 +51,13 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.11.* *_cpython pytorch: diff --git a/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.12.____cpython.yaml b/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.12.____cpython.yaml index 14f1b6ad..8815158f 100644 --- a/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.12.____cpython.yaml +++ b/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.12.____cpython.yaml @@ -51,11 +51,13 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.12.* *_cpython pytorch: diff --git a/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313.yaml b/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313.yaml index 7ae02ad5..df79ec36 100644 --- a/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313.yaml +++ b/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313.yaml @@ -51,11 +51,13 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.13.* *_cp313 pytorch: diff --git a/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython.yaml b/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython.yaml deleted file mode 100644 index d084ea4d..00000000 --- a/.ci_support/osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython.yaml +++ /dev/null @@ -1,71 +0,0 @@ -MACOSX_DEPLOYMENT_TARGET: -- '11.0' -MACOSX_SDK_VERSION: -- '13.3' -blas_impl: -- mkl -c_compiler: -- clang -c_compiler_version: -- '19' -c_stdlib: -- macosx_deployment_target -c_stdlib_version: -- '11.0' -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -cuda_compiler: -- cuda-nvcc -cuda_compiler_version: -- None -cxx_compiler: -- clangxx -cxx_compiler_version: -- '19' -is_rc: -- 'False' -libabseil: -- '20250512' -libblas: -- 3.9.* *netlib -libcblas: -- 3.9.* *netlib -liblapack: -- 3.9.* *netlib -libmagma_sparse: -- '2.9' -libprotobuf: -- 6.31.1 -libtorch: -- '2.6' -llvm_openmp: -- '19' -macos_machine: -- x86_64-apple-darwin13.4.0 -megabuild: -- false -mkl: -- '2023' -numpy: -- '2' -orc: -- 2.1.3 -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.9.* *_cpython -pytorch: -- '2.6' -target_platform: -- osx-64 -zip_keys: -- - c_compiler_version - - cxx_compiler_version -- - channel_targets - - is_rc -zlib: -- '1' diff --git a/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython.yaml b/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython.yaml index ad85f446..7e73b7e4 100644 --- a/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython.yaml +++ b/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython.yaml @@ -51,11 +51,13 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.10.* *_cpython pytorch: diff --git a/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.11.____cpython.yaml b/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.11.____cpython.yaml index 5e94b2cc..422a958a 100644 --- a/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.11.____cpython.yaml +++ b/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.11.____cpython.yaml @@ -51,11 +51,13 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.11.* *_cpython pytorch: diff --git a/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.12.____cpython.yaml b/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.12.____cpython.yaml index 169ef5df..379f9163 100644 --- a/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.12.____cpython.yaml +++ b/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.12.____cpython.yaml @@ -51,11 +51,13 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.12.* *_cpython pytorch: diff --git a/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313.yaml b/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313.yaml index b1d1cff1..03d74c79 100644 --- a/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313.yaml +++ b/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.13.____cp313.yaml @@ -51,11 +51,13 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.13.* *_cp313 pytorch: diff --git a/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython.yaml b/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython.yaml deleted file mode 100644 index 1dd36087..00000000 --- a/.ci_support/osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython.yaml +++ /dev/null @@ -1,71 +0,0 @@ -MACOSX_DEPLOYMENT_TARGET: -- '11.0' -MACOSX_SDK_VERSION: -- '13.3' -blas_impl: -- generic -c_compiler: -- clang -c_compiler_version: -- '19' -c_stdlib: -- macosx_deployment_target -c_stdlib_version: -- '11.0' -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -cuda_compiler: -- cuda-nvcc -cuda_compiler_version: -- None -cxx_compiler: -- clangxx -cxx_compiler_version: -- '19' -is_rc: -- 'False' -libabseil: -- '20250512' -libblas: -- 3.9.* *netlib -libcblas: -- 3.9.* *netlib -liblapack: -- 3.9.* *netlib -libmagma_sparse: -- '2.9' -libprotobuf: -- 6.31.1 -libtorch: -- '2.6' -llvm_openmp: -- '19' -macos_machine: -- arm64-apple-darwin20.0.0 -megabuild: -- false -mkl: -- '2023' -numpy: -- '2' -orc: -- 2.1.3 -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.9.* *_cpython -pytorch: -- '2.6' -target_platform: -- osx-arm64 -zip_keys: -- - c_compiler_version - - cxx_compiler_version -- - channel_targets - - is_rc -zlib: -- '1' diff --git a/.ci_support/win_64_channel_targetsconda-forge_maincuda_compiler_version12.8is_rcFalse.yaml b/.ci_support/win_64_channel_targetsconda-forge_maincuda_compiler_version12.8is_rcFalse.yaml index 04f91077..c9eb93c8 100644 --- a/.ci_support/win_64_channel_targetsconda-forge_maincuda_compiler_version12.8is_rcFalse.yaml +++ b/.ci_support/win_64_channel_targetsconda-forge_maincuda_compiler_version12.8is_rcFalse.yaml @@ -12,8 +12,6 @@ cuda_compiler: - cuda-nvcc cuda_compiler_version: - '12.8' -cudnn: -- '9' cxx_compiler: - vs2022 github_actions_labels: @@ -37,17 +35,18 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython - 3.13.* *_cp313 -- 3.9.* *_cpython pytorch: - '2.6' target_platform: diff --git a/.ci_support/win_64_channel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml b/.ci_support/win_64_channel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml index f427c263..c000d0a0 100644 --- a/.ci_support/win_64_channel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml +++ b/.ci_support/win_64_channel_targetsconda-forge_maincuda_compiler_versionNoneis_rcFalse.yaml @@ -12,8 +12,6 @@ cuda_compiler: - cuda-nvcc cuda_compiler_version: - None -cudnn: -- '9' cxx_compiler: - vs2022 github_actions_labels: @@ -37,17 +35,18 @@ mkl: numpy: - '2' orc: -- 2.1.3 +- 2.2.0 pin_run_as_build: python: min_pin: x.x max_pin: x.x +pybind11_abi: +- '4' python: - 3.10.* *_cpython - 3.11.* *_cpython - 3.12.* *_cpython - 3.13.* *_cp313 -- 3.9.* *_cpython pytorch: - '2.6' target_platform: diff --git a/.gitattributes b/.gitattributes index 18f114a1..85ccb8f4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -24,4 +24,5 @@ bld.bat text eol=crlf /README.md linguist-generated=true azure-pipelines.yml linguist-generated=true build-locally.py linguist-generated=true +pixi.toml linguist-generated=true shippable.yml linguist-generated=true diff --git a/.github/workflows/conda-build.yml b/.github/workflows/conda-build.yml index c7d8d001..6e7bede8 100644 --- a/.github/workflows/conda-build.yml +++ b/.github/workflows/conda-build.yml @@ -133,6 +133,31 @@ jobs: fi ./.scripts/run_osx_build.sh + # https://github.com/aktech/cirun-azure-resize-disk + - name: Resize all partitions to maximum + if: matrix.os == 'windows' + shell: pwsh + run: | + Write-Output "=== RESIZING PARTITIONS ===" + $disks = Get-Disk | Where-Object PartitionStyle -ne 'RAW' + + foreach ($disk in $disks) { + $partitions = Get-Partition -DiskNumber $disk.Number + foreach ($partition in $partitions) { + try { + $size = Get-PartitionSupportedSize -DiskNumber $disk.Number -PartitionNumber $partition.PartitionNumber + if ($partition.Size -lt $size.SizeMax) { + Write-Output "Resizing Disk $($disk.Number) Partition $($partition.PartitionNumber) from $($partition.Size) to $($size.SizeMax)" + Resize-Partition -DiskNumber $disk.Number -PartitionNumber $partition.PartitionNumber -Size $size.SizeMax -Verbose + } else { + Write-Output "Disk $($disk.Number) Partition $($partition.PartitionNumber) already at max size ($($partition.Size))" + } + } catch { + Write-Warning "Failed resizing Disk $($disk.Number) Partition $($partition.PartitionNumber): $_" + } + } + } + - name: Build on windows id: build-windows if: matrix.os == 'windows' @@ -234,4 +259,4 @@ jobs: name: ${{ steps.prepare-artifacts.outputs.ENV_ARTIFACT_NAME }} path: ${{ steps.prepare-artifacts.outputs.ENV_ARTIFACT_PATH }} retention-days: 14 - continue-on-error: true \ No newline at end of file + continue-on-error: true diff --git a/.scripts/create_conda_build_artifacts.bat b/.scripts/create_conda_build_artifacts.bat index 29c22033..0bb6fc0b 100755 --- a/.scripts/create_conda_build_artifacts.bat +++ b/.scripts/create_conda_build_artifacts.bat @@ -19,8 +19,6 @@ rem BLD_ARTIFACT_PATH rem ENV_ARTIFACT_NAME rem ENV_ARTIFACT_PATH -@echo on - rem Check that the conda-build directory exists if not exist %CONDA_BLD_DIR% ( echo conda-build directory does not exist diff --git a/README.md b/README.md index 300e20c3..96a642ef 100644 --- a/README.md +++ b/README.md @@ -106,13 +106,6 @@ Current build status variant - - osx_64_blas_implgenericchannel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython - - - variant - - osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython @@ -141,13 +134,6 @@ Current build status variant - - osx_64_blas_implmklchannel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython - - - variant - - osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.10.____cpython @@ -176,13 +162,6 @@ Current build status variant - - osx_arm64_channel_targetsconda-forge_mainis_rcFalsepython3.9.____cpython - - - variant - - win_64_channel_targetsconda-forge_maincuda_compiler_version12.8is_rcFalse diff --git a/recipe/bld.bat b/recipe/bld.bat index 965a1178..e5e215ed 100644 --- a/recipe/bld.bat +++ b/recipe/bld.bat @@ -46,11 +46,11 @@ if "%PKG_NAME%" == "pytorch" ( if %ERRORLEVEL% neq 0 exit 1 @REM Replace version string v3.12.8() with ie v3.11.11() - sed -i.bak -E "s/v3\.12\.[0-9]+/v%PY_VERSION_FULL%/g" build/CMakeCache.txt + sed -i.bak -E "s/v3\.12\.[0-9]+/v!PY_VERSION_FULL!/g" build/CMakeCache.txt if %ERRORLEVEL% neq 0 exit 1 @REM Replace interpreter properties Python;3;12;8;64 with ie Python;3;11;11;64 - sed -i.bak -E "s/Python;3;12;[0-9]+;64/Python;%PY_VERSION_FULL:.=;%;64/g" build/CMakeCache.txt + sed -i.bak -E "s/Python;3;12;[0-9]+;64/Python;!PY_VERSION_FULL:.=;!;64/g" build/CMakeCache.txt if %ERRORLEVEL% neq 0 exit 1 @REM Replace cp312-win_amd64 with ie cp311-win_amd64 diff --git a/recipe/build.sh b/recipe/build.sh index d27a67c8..ab944468 100644 --- a/recipe/build.sh +++ b/recipe/build.sh @@ -98,6 +98,7 @@ export BUILD_CUSTOM_PROTOBUF=OFF rm -rf $PREFIX/bin/protoc export USE_SYSTEM_PYBIND11=1 export USE_SYSTEM_EIGEN_INSTALL=1 +export Python_ROOT_DIR=$PREFIX # workaround to stop setup.py from trying to check whether we checked out # all submodules (we don't use all of them) diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 87a4de6a..b98c86b0 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,6 +1,6 @@ # if you wish to build release candidate number X, append the version string with ".rcX" -{% set version = "2.7.1" %} -{% set build = 4 %} +{% set version = "2.8.0" %} +{% set build = 0 %} # Use a higher build number for the CUDA variant, to ensure that it's # preferred by conda's solver, and it's preferentially @@ -16,7 +16,7 @@ # see https://github.com/pytorch/pytorch/blame/v{{ version }}/.ci/docker/ci_commit_pins/triton.txt # pytorch and triton are released in tandem, see notes in their release process # https://github.com/pytorch/pytorch/blob/main/RELEASE.md#triton-dependency-for-the-release -{% set triton = "3.3.1" %} +{% set triton = "3.4.0" %} # TODO Temporary pin, remove me {% set mkl = "<2025" %} @@ -38,7 +38,7 @@ source: {% else %} # The "pytorch-v" tarballs contain submodules; the "pytorch-" ones don't. - url: https://github.com/pytorch/pytorch/releases/download/v{{ version }}/pytorch-v{{ version }}.tar.gz - sha256: 5befd2e540fd55ce4782d0ca7610ce5b572d756d7ea38090ef0f3c7c428fb20f + sha256: c70a2c9488f6f6e8af5982a10d1cc2c37b7df5e6506d839daa5d5e250953d7b5 {% endif %} patches: - patches/0001-Force-usage-of-python-3-and-error-without-numpy.patch @@ -61,10 +61,6 @@ source: - patches/0012-avoid-deprecated-find_package-CUDA-in-caffe2-CMake-m.patch # backport https://github.com/pytorch/pytorch/pull/148668 - patches/0013-Fix-CUPTI-lookup-to-include-target-directory.patch - # backport (practically speaking) https://github.com/pytorch/pytorch/pull/149861 - - patches/0014-Always-use-system-nvtx.patch - # https://github.com/pytorch/pytorch/pull/152533 - - patches/0015-Do-not-check-out-nccl-when-not-building-it.patch # skip a test that fails with numpy 2.3; can be dropped for pytorch>2.7 - patches/0016-skip-test_norm_matrix_degenerate_shapes-on-numpy-2.3.patch # backport https://github.com/pytorch/pytorch/pull/127702 @@ -113,7 +109,7 @@ requirements: - llvm-openmp # [unix] - intel-openmp {{ mkl }} # [win] - libuv # [win] - - cmake <4 + - cmake - ninja # Keep libprotobuf here so that a compatibile version # of protobuf is installed between build and host @@ -125,7 +121,9 @@ requirements: - rsync # [unix] host: # GPU requirements - - cudnn # [cuda_compiler_version != "None"] + # cudnn pinned over segfaults + # https://github.com/conda-forge/pytorch-cpu-feedstock/pull/411 + - cudnn <9.11 # [cuda_compiler_version != "None"] - nccl # [cuda_compiler_version != "None" and linux] - magma # [cuda_compiler_version != "None"] - cuda-version {{ cuda_compiler_version }} # [cuda_compiler_version != "None"] @@ -171,11 +169,12 @@ requirements: - pkg-config # [unix] - typing_extensions - pybind11 + - pybind11-abi - eigen - zlib run: # GPU requirements without run_exports - - {{ pin_compatible('cudnn') }} # [cuda_compiler_version != "None"] + - cudnn <9.11 # [cuda_compiler_version != "None"] - intel-openmp {{ mkl }} # [win] - libblas * *{{ blas_impl }} # [blas_impl == "mkl"] run_constrained: @@ -192,6 +191,7 @@ requirements: # if using OpenBLAS, ensure that a version compatible with OpenMP is used # otherwise, we get the following warnings: # OpenBLAS Warning : Detect OpenMP Loop and this application may hang. Please rebuild the library with USE_OPENMP=1 option. + - libopenblas * openmp_* # [unix and blas_impl != "mkl"] - openblas * openmp_* # [unix and blas_impl != "mkl"] # these tests are for the libtorch output below, but due to @@ -206,7 +206,7 @@ test: - {{ compiler('cuda') }} # [cuda_compiler_version != "None"] - cuda-nvrtc-dev # [cuda_compiler_version != "None"] - nvtx-c # [cuda_compiler_version != "None"] - - cmake <4 + - cmake - ninja - pkg-config files: @@ -266,7 +266,7 @@ outputs: - {{ compiler('cuda') }} # [cuda_compiler_version != "None"] - llvm-openmp # [unix] - intel-openmp {{ mkl }} # [win] - - cmake <4 + - cmake - ninja # Keep libprotobuf here so that a compatibile version # of protobuf is installed between build and host @@ -277,7 +277,7 @@ outputs: host: - {{ pin_subpackage('libtorch', exact=True) }} # GPU requirements - - cudnn # [cuda_compiler_version != "None"] + - cudnn <9.11 # [cuda_compiler_version != "None"] - nccl # [cuda_compiler_version != "None" and linux] - cuda-version {{ cuda_compiler_version }} # [cuda_compiler_version != "None"] - nvtx-c # [cuda_compiler_version != "None"] @@ -316,6 +316,7 @@ outputs: - libabseil - libprotobuf - pybind11 + - pybind11-abi - eigen - sleef - libuv @@ -331,8 +332,8 @@ outputs: - libblas * *{{ blas_impl }} # [blas_impl == "mkl"] - nomkl # [blas_impl != "mkl"] # GPU requirements without run_exports - - {{ pin_compatible('cudnn') }} # [cuda_compiler_version != "None"] - - triton {{ triton }} # [cuda_compiler_version != "None" and not win] + - cudnn <9.11 # [cuda_compiler_version != "None"] + - triton =={{ triton }} # [cuda_compiler_version != "None" and not win] # avoid that people without GPUs needlessly download ~0.5-1GB - __cuda # [cuda_compiler_version != "None"] - python @@ -371,6 +372,7 @@ outputs: - pip - expecttest - xmlrunner + - pyyaml # Required by run_test.py - pytest-flakefinder - pytest-rerunfailures @@ -380,7 +382,7 @@ outputs: # https://github.com/pytorch/pytorch/blob/main/test/pytest_shard_custom.py # - pytest-shard # for cmake_test - - cmake <4 + - cmake - cuda-nvrtc-dev # [cuda_compiler_version != "None"] - nvtx-c # [cuda_compiler_version != "None"] - pybind11 @@ -443,6 +445,7 @@ outputs: # minor tolerance violations {% set skips = skips ~ " or test_1_sized_with_0_strided_cpu_float32" %} # [osx] {% set skips = skips ~ " or test_batchnorm_nhwc_cpu" %} # [unix] + {% set skips = skips ~ " or test_layer_norm_backwards_eps" %} # [unix] # timeouts and failures on aarch, see https://github.com/conda-forge/pytorch-cpu-feedstock/pull/298#issuecomment-2555888508 {% set skips = skips ~ " or test_pynode_destruction_deadlock" %} # [aarch64] {% set skips = skips ~ " or (TestLinalgCPU and test_cholesky_cpu_float32)" %} # [aarch64] diff --git a/recipe/patches/0014-Always-use-system-nvtx.patch b/recipe/patches/0014-Always-use-system-nvtx.patch deleted file mode 100644 index 0a0895d1..00000000 --- a/recipe/patches/0014-Always-use-system-nvtx.patch +++ /dev/null @@ -1,22 +0,0 @@ -From b3371dcb971658239ce8aa8f6fa0a4d7bcea6735 Mon Sep 17 00:00:00 2001 -From: Jeongseok Lee -Date: Sat, 22 Mar 2025 22:50:49 -0700 -Subject: [PATCH 14/17] Always use system nvtx - ---- - cmake/public/cuda.cmake | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/cmake/public/cuda.cmake b/cmake/public/cuda.cmake -index e538fb5662b..b409c6c30e9 100644 ---- a/cmake/public/cuda.cmake -+++ b/cmake/public/cuda.cmake -@@ -146,7 +146,7 @@ else() - endif() - - # nvToolsExt --if(USE_SYSTEM_NVTX) -+if(TRUE) - find_path(nvtx3_dir NAMES nvtx3 PATHS ${CUDA_INCLUDE_DIRS}) - else() - find_path(nvtx3_dir NAMES nvtx3 PATHS "${PROJECT_SOURCE_DIR}/third_party/NVTX/c/include" NO_DEFAULT_PATH) diff --git a/recipe/patches/0015-Do-not-check-out-nccl-when-not-building-it.patch b/recipe/patches/0015-Do-not-check-out-nccl-when-not-building-it.patch deleted file mode 100644 index 9bca436a..00000000 --- a/recipe/patches/0015-Do-not-check-out-nccl-when-not-building-it.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 647a6da2006050b4983cab517167105d6b4badfe Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= -Date: Wed, 30 Apr 2025 17:11:56 +0200 -Subject: [PATCH 15/17] Do not check out nccl when not building it - -Add additional conditions to `build_pytorch_libs.py` to avoid fetching -NCCL when `USE_CUDA` or `USE_NCCL` are disabled. While at it, adjust -the existing condition for `USE_SYSTEM_NCCL` to use the utility -function. ---- - tools/build_pytorch_libs.py | 14 ++++++++++++-- - 1 file changed, 12 insertions(+), 2 deletions(-) - -diff --git a/tools/build_pytorch_libs.py b/tools/build_pytorch_libs.py -index 5dd5a221975..2b8b868eaa8 100644 ---- a/tools/build_pytorch_libs.py -+++ b/tools/build_pytorch_libs.py -@@ -7,7 +7,12 @@ from glob import glob - from pathlib import Path - - from .setup_helpers.cmake import CMake, USE_NINJA --from .setup_helpers.env import check_negative_env_flag, IS_64BIT, IS_WINDOWS -+from .setup_helpers.env import ( -+ check_env_flag, -+ check_negative_env_flag, -+ IS_64BIT, -+ IS_WINDOWS, -+) - - - repo_root = Path(__file__).absolute().parent.parent -@@ -119,7 +124,12 @@ def build_pytorch( - cmake: CMake, - ) -> None: - my_env = _create_build_env() -- checkout_nccl() -+ if ( -+ not check_negative_env_flag("USE_CUDA") -+ and not check_negative_env_flag("USE_NCCL") -+ and not check_env_flag("USE_SYSTEM_NCCL") -+ ): -+ checkout_nccl() - build_test = not check_negative_env_flag("BUILD_TEST") - cmake.generate( - version, cmake_python_library, build_python, build_test, my_env, rerun_cmake