diff --git a/.ci/docker/common/install_conda.sh b/.ci/docker/common/install_conda.sh index e2c3e1c566b98..180b1a5267e8c 100755 --- a/.ci/docker/common/install_conda.sh +++ b/.ci/docker/common/install_conda.sh @@ -92,6 +92,9 @@ if [ -n "$ANACONDA_PYTHON_VERSION" ]; then # Install some other packages, including those needed for Python test reporting pip_install -r /opt/conda/requirements-ci.txt + # Installed spmd-types with --no-deps to avoid pulling torch dependency at this point + pip_install --no-deps spmd-types==0.2.1 + if [ -n "$DOCS" ]; then apt-get update apt-get -y install expect-dev diff --git a/.ci/libtorch/extract_libtorch_from_wheel.py b/.ci/libtorch/extract_libtorch_from_wheel.py index 423a1b82cb0b5..75716989fa4fb 100644 --- a/.ci/libtorch/extract_libtorch_from_wheel.py +++ b/.ci/libtorch/extract_libtorch_from_wheel.py @@ -234,16 +234,23 @@ def create_libtorch_zip( return zip_path -def compute_zip_prefix(platform: str, desired_cuda: str, libtorch_variant: str) -> str: +def compute_zip_prefix( + platform: str, desired_cuda: str, libtorch_variant: str, arch: str +) -> str: """Compute the zip filename prefix matching existing naming conventions. Linux: libtorch-shared-with-deps macOS: libtorch-macos-arm64 Windows: libtorch-win-shared-with-deps (or libtorch-win-arm64-shared-with-deps) + + The arch component keeps the Windows x86_64 and arm64 packages from + sharing a filename and overwriting each other in the upload bucket. """ if platform == "macos": return "libtorch-macos-arm64" elif platform == "windows": + if arch == "arm64": + return f"libtorch-win-arm64-{libtorch_variant}" return f"libtorch-win-{libtorch_variant}" else: return f"libtorch-{libtorch_variant}" @@ -273,6 +280,12 @@ def main() -> None: default="shared-with-deps", help="Libtorch variant (shared-with-deps, etc.)", ) + parser.add_argument( + "--arch", + default="x86_64", + choices=["x86_64", "arm64"], + help="Target architecture (used to disambiguate Windows package names)", + ) parser.add_argument( "--git-hash", default="", @@ -316,7 +329,7 @@ def main() -> None: # Compute zip prefix zip_prefix = compute_zip_prefix( - args.platform, args.desired_cuda, args.libtorch_variant + args.platform, args.desired_cuda, args.libtorch_variant, args.arch ) # Split debug symbols on Linux diff --git a/.ci/manywheel/build_env_setup.py b/.ci/manywheel/build_env_setup.py index 1d444bfd8186a..a72b7e47287a6 100755 --- a/.ci/manywheel/build_env_setup.py +++ b/.ci/manywheel/build_env_setup.py @@ -74,6 +74,10 @@ "x86_64": {50, 60, 70, 75, 80, 86, 90}, "aarch64": {80, 90}, }, + "12.9": { + "x86_64": {75, 80, 86, 90, 100, 120}, + "aarch64": {80, 90, 100, 120}, + }, "13.0": { "x86_64": {75, 80, 86, 90, 100, 120}, "aarch64": {80, 90, 100, 110, 120}, @@ -84,14 +88,35 @@ }, } -# Architectures we additionally emit PTX for (forward-compat for newer GPUs). +# Architectures we additionally emit PTX for on nightly/dev builds +# (forward-compat for newer GPUs). Release/RC wheels ship SASS-only to keep +# libtorch_cuda.so size down; see _ptx_arches(). _PTX_ARCHES: set[int] = {120} +def _is_release_build() -> bool: + """True for release / RC binary builds (vs nightly / dev builds). + + Binary builds off a git tag (releases and RCs, e.g. v2.13.0 / v2.13.0-rc1) + get a ``PYTORCH_BUILD_VERSION`` with no ``.dev`` suffix, while + nightlies do -- see .ci/pytorch/binary_populate_env.sh, which relies on the + same ``dev`` check for Triton pinning. A missing/empty version (local or + non-binary builds) is treated as non-release, so PTX is kept. + """ + version = os.environ.get("PYTORCH_BUILD_VERSION", "") + return bool(version) and "dev" not in version + + +def _ptx_arches() -> set[int]: + """PTX arches for this build: empty on release/RC, forward-compat set otherwise.""" + return set() if _is_release_build() else _PTX_ARCHES + + def torch_cuda_arch_list(cuda_version: str, arch: str) -> str: """Format TORCH_CUDA_ARCH_LIST for the wheel build (";"-separated). - Returns e.g. "8.0;9.0;10.0;11.0;12.0+PTX" for cuda 13.x aarch64. + Returns e.g. "8.0;9.0;10.0;11.0;12.0+PTX" for cuda 13.x aarch64 on + nightly builds; release/RC builds omit the +PTX suffix (see _ptx_arches()). CUDA 13.x dropped sm_50/60/70, so we must NOT leave this empty -- CMake's defaults still include compute_50 which nvcc 13 rejects with @@ -102,8 +127,9 @@ def torch_cuda_arch_list(cuda_version: str, arch: str) -> str: archs = TORCH_CUDA_ARCH_LIST_TABLE[cuda_version].get(arch) if not archs: raise SystemExit(f"no TORCH_CUDA_ARCH_LIST for cuda {cuda_version} on {arch}") + ptx_arches = _ptx_arches() return ";".join( - f"{cc // 10}.{cc % 10}" + ("+PTX" if cc in _PTX_ARCHES else "") + f"{cc // 10}.{cc % 10}" + ("+PTX" if cc in ptx_arches else "") for cc in sorted(archs) ) diff --git a/.ci/pytorch/binary_populate_env.sh b/.ci/pytorch/binary_populate_env.sh index 03573a17aac9a..8519328cd7e4e 100755 --- a/.ci/pytorch/binary_populate_env.sh +++ b/.ci/pytorch/binary_populate_env.sh @@ -112,15 +112,6 @@ if [[ "$PACKAGE_TYPE" =~ .*wheel.* && -n "$PYTORCH_BUILD_VERSION" && "$PYTORCH_B fi fi -if [[ "$PACKAGE_TYPE" =~ .*wheel.* ]]; then - SPMD_TYPES_REQUIREMENT="spmd-types==0.2.1" - if [[ -z "${PYTORCH_EXTRA_INSTALL_REQUIREMENTS:-}" ]]; then - export PYTORCH_EXTRA_INSTALL_REQUIREMENTS="${SPMD_TYPES_REQUIREMENT}" - else - export PYTORCH_EXTRA_INSTALL_REQUIREMENTS="${PYTORCH_EXTRA_INSTALL_REQUIREMENTS} | ${SPMD_TYPES_REQUIREMENT}" - fi -fi - USE_GLOO_WITH_OPENSSL="OFF" if [[ "$GPU_ARCH_TYPE" =~ .*aarch64.* ]]; then USE_GOLD_LINKER="OFF" diff --git a/.ci/pytorch/build.sh b/.ci/pytorch/build.sh index a002d1465a7ce..855ad14d64ded 100755 --- a/.ci/pytorch/build.sh +++ b/.ci/pytorch/build.sh @@ -279,6 +279,20 @@ if [[ "$BUILD_ENVIRONMENT" != *libtorch* ]]; then python -m build --wheel --no-isolation fi pip_install_whl "$(echo dist/*.whl)" + + # Smoke-test tools/build_with_debinfo.py against the real build tree: it must + # still emit a debug-rebuild plan with a -g compile and the libtorch_python + # relink. This guards against build-system changes (e.g. a new + # CONFIGURE_DEPENDS glob scheme) silently breaking the tool, which only works + # on a from-source build that test jobs don't have. --dry-run reads the tree + # without rebuilding, so it leaves the checkout clean (assert_git_not_dirty). + if [[ -f build/compile_commands.json ]] && command -v ninja > /dev/null && grep -q "csrc/Module.cpp" build/compile_commands.json; then + debinfo_plan="$(python tools/build_with_debinfo.py --dry-run torch/csrc/Module.cpp)" + echo "${debinfo_plan}" + grep -qE ' -g( |$)' <<< "$debinfo_plan" || { echo "ERROR: build_with_debinfo --dry-run emitted no -g debug compile flag"; exit 1; } + grep -q 'libtorch_python' <<< "$debinfo_plan" || { echo "ERROR: build_with_debinfo --dry-run emitted no libtorch_python link command"; exit 1; } + fi + if [[ "$BUILD_ENVIRONMENT" == *full-debug* ]]; then # Regression test for https://github.com/pytorch/pytorch/issues/164297 # Torch should be importable and that's about it diff --git a/.ci/pytorch/common_utils.sh b/.ci/pytorch/common_utils.sh index ee3d892ad56be..ef402ca66c685 100644 --- a/.ci/pytorch/common_utils.sh +++ b/.ci/pytorch/common_utils.sh @@ -279,7 +279,7 @@ function install_torchrec_and_fbgemm() { function clone_pytorch_xla() { if [[ ! -d ./xla ]]; then - git clone --recursive --quiet https://github.com/pytorch/xla.git + git clone --recursive -b r2.13 https://github.com/pytorch/xla.git pushd xla # pin the xla hash so that we don't get broken by changes to xla git checkout "$(cat ../.github/ci_commit_pins/xla.txt)" diff --git a/.github/ci_commit_pins/xla.txt b/.github/ci_commit_pins/xla.txt index fa0317b710474..d29b1e59a1ae3 100644 --- a/.github/ci_commit_pins/xla.txt +++ b/.github/ci_commit_pins/xla.txt @@ -1 +1 @@ -41398bfff334fc8d3b1c00be6ea8cc5411f6d6bf +r2.13 diff --git a/.github/scripts/filter_test_configs.py b/.github/scripts/filter_test_configs.py index 4c7cfb607dfa4..5c9c363e75104 100755 --- a/.github/scripts/filter_test_configs.py +++ b/.github/scripts/filter_test_configs.py @@ -39,9 +39,9 @@ } # The link to the published list of disabled jobs -DISABLED_JOBS_URL = "https://ossci-metrics.s3.amazonaws.com/disabled-jobs.json" +DISABLED_JOBS_URL = "https://ossci-metrics.s3.amazonaws.com/disabled-jobs.json?versionId=Oekxne_7ooz8C5nmynVmrc5UzuZ875Tr" # and unstable jobs -UNSTABLE_JOBS_URL = "https://ossci-metrics.s3.amazonaws.com/unstable-jobs.json" +UNSTABLE_JOBS_URL = "https://ossci-metrics.s3.amazonaws.com/unstable-jobs.json?versionId=V37EHozs4nE3_iE8GfJ8sctdQzmU9zPH" # Some constants used to handle disabled and unstable jobs JOB_NAME_SEP = "/" diff --git a/.github/scripts/generate_binary_build_matrix.py b/.github/scripts/generate_binary_build_matrix.py index 86027b4394a07..402cb000aeaae 100644 --- a/.github/scripts/generate_binary_build_matrix.py +++ b/.github/scripts/generate_binary_build_matrix.py @@ -24,15 +24,17 @@ REPO_ROOT = SCRIPT_DIR.parent.parent -CUDA_ARCHES = ["12.6", "13.0", "13.2"] +CUDA_ARCHES = ["12.6", "12.9", "13.0", "13.2"] CUDA_STABLE = "13.0" CUDA_ARCHES_FULL_VERSION = { "12.6": "12.6.3", - "13.0": "13.0.2", + "12.9": "12.9.1", + "13.0": "13.0.3", "13.2": "13.2.1", } CUDA_ARCHES_CUDNN_VERSION = { "12.6": "9", + "12.9": "9", "13.0": "9", "13.2": "9", } @@ -47,14 +49,11 @@ CUDA_AARCH64_ARCHES = [ "12.6-aarch64", + "12.9-aarch64", "13.0-aarch64", "13.2-aarch64", ] - -# WARNING: For CUDA 13.0, cublas is pinned to a version range rather -# than an exact version. A broken cublas release within that range will be -# silently pulled in. PYTORCH_EXTRA_INSTALL_REQUIREMENTS = { "12.6": ( "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==12.6.3; platform_system == 'Linux' | " @@ -64,9 +63,16 @@ "nvidia-nccl-cu12==2.29.3; platform_system == 'Linux' | " "nvidia-nvshmem-cu12==3.4.5; platform_system == 'Linux'" ), + "12.9": ( + "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==12.9.1; platform_system == 'Linux' | " + "cuda-bindings>=12.9.4,<13; platform_system == 'Linux' and python_version < '3.15' | " + "nvidia-cudnn-cu12==9.20.0.48; platform_system == 'Linux' | " + "nvidia-cusparselt-cu12==0.8.1; platform_system == 'Linux' | " + "nvidia-nccl-cu12==2.29.7; platform_system == 'Linux' | " + "nvidia-nvshmem-cu12==3.4.5; platform_system == 'Linux'" + ), "13.0": ( - "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cufile,nvjitlink,nvtx]==13.0.2; platform_system == 'Linux' | " - "nvidia-cublas>=13.1.0.3,<=13.1.1.3; platform_system == 'Linux' | " + "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==13.0.3; platform_system == 'Linux' | " "cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | " "nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | " "nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | " @@ -304,6 +310,24 @@ def arch_type(arch_version: str) -> str: "cpu-s390x": "manylinuxs390x-builder:cpu-s390x", } +# RELEASE-ONLY: pin the manywheel builder images to a fixed build so the release +# uses a reproducible toolchain instead of main's floating tags. The suffix is +# the .ci/docker tree hash (`git rev-parse HEAD:.ci/docker`), i.e. the same tag +# .github/actions/binary-docker-build publishes. Only linux manywheel builds run +# inside these containers, so only those images are pinned. s390x is excluded: +# its builder images are built locally on self-hosted runners and never published +# to docker.io under the pinned tag, so pinning it breaks the image pull. +DOCKER_IMAGE_PIN = "78e737ad29420ffc4800e677c51e2a852caf8359" +MANYWHEEL_OSES = ("linux", "linux-aarch64") + + +def wheel_container_image_tag_prefix(arch_version: str, os: str) -> str: + tag_prefix = WHEEL_CONTAINER_IMAGES[arch_version].split(":")[1] + if os in MANYWHEEL_OSES: + return f"{tag_prefix}-{DOCKER_IMAGE_PIN}" + return tag_prefix + + RELEASE = "release" DEBUG = "debug" @@ -344,7 +368,9 @@ def generate_libtorch_matrix( if arches is None: arches = ["cpu"] if os == "windows": - arches += CUDA_ARCHES + # CUDA 12.9 is only built for Linux + windows_cuda_arches = list_without(CUDA_ARCHES, ["12.9"]) + arches += windows_cuda_arches if libtorch_variants is None: libtorch_variants = [ "shared-with-deps", @@ -397,7 +423,9 @@ def generate_wheels_matrix( if os == "linux": arches += CUDA_ARCHES + ROCM_ARCHES + XPU_ARCHES elif os == "windows": - arches += CUDA_ARCHES + XPU_ARCHES + # CUDA 12.9 is only built for Linux + windows_cuda_arches = list_without(CUDA_ARCHES, ["12.9"]) + arches += windows_cuda_arches + XPU_ARCHES elif os == "linux-aarch64": # Separate new if as the CPU type is different and # uses different build/test scripts @@ -439,7 +467,7 @@ def generate_wheels_matrix( # cuda linux wheels require PYTORCH_EXTRA_INSTALL_REQUIREMENTS to install if ( - arch_version in ["13.2", "13.0", "12.6"] + arch_version in ["13.2", "13.0", "12.9", "12.6"] and os == "linux" or arch_version in CUDA_AARCH64_ARCHES ): @@ -453,9 +481,9 @@ def generate_wheels_matrix( "container_image": WHEEL_CONTAINER_IMAGES[arch_version].split( ":" )[0], - "container_image_tag_prefix": WHEEL_CONTAINER_IMAGES[ - arch_version - ].split(":")[1], + "container_image_tag_prefix": wheel_container_image_tag_prefix( + arch_version, os + ), "package_type": package_type, "pytorch_extra_install_requirements": ( PYTORCH_EXTRA_INSTALL_REQUIREMENTS[ @@ -484,9 +512,9 @@ def generate_wheels_matrix( "container_image": WHEEL_CONTAINER_IMAGES[arch_version].split( ":" )[0], - "container_image_tag_prefix": WHEEL_CONTAINER_IMAGES[ - arch_version - ].split(":")[1], + "container_image_tag_prefix": wheel_container_image_tag_prefix( + arch_version, os + ), "package_type": package_type, "build_name": f"{package_type}-py{python_version}-{gpu_arch_type}{gpu_arch_version}".replace( ".", "_" @@ -516,6 +544,7 @@ def generate_libtorch_extraction_configs( uses to add an extraction job that depends on that wheel's build job. """ preferred_python = "3.11" if os == "windows-arm64" else "3.10" + arch = "arm64" if os == "windows-arm64" else "x86_64" # Group wheel configs by (gpu_arch_type, gpu_arch_version) arch_to_config: dict[tuple[str, str], dict[str, str]] = {} @@ -532,7 +561,10 @@ def generate_libtorch_extraction_configs( desired_cuda = source_config["desired_cuda"] libtorch_variant = "shared-with-deps" - build_name = f"libtorch-{gpu_arch_type}{gpu_arch_version}-{libtorch_variant}-release".replace( + # Include arch in the build name so windows x86_64 and arm64 libtorch + # packages don't share a name and overwrite each other on upload. + arch_tag = f"{arch}-" if os == "windows-arm64" else "" + build_name = f"libtorch-{arch_tag}{gpu_arch_type}{gpu_arch_version}-{libtorch_variant}-release".replace( ".", "_" ) @@ -546,6 +578,7 @@ def generate_libtorch_extraction_configs( "desired_cuda": desired_cuda, "gpu_arch_type": gpu_arch_type, "gpu_arch_version": gpu_arch_version, + "arch": arch, } ) diff --git a/.github/templates/common.yml.j2 b/.github/templates/common.yml.j2 index 0dc1cafa54e24..d2e6b2aaecca5 100644 --- a/.github/templates/common.yml.j2 +++ b/.github/templates/common.yml.j2 @@ -3,7 +3,7 @@ {%- set upload_artifact_action = "actions/upload-artifact@v4.4.0" -%} {%- set download_artifact_action = "actions/download-artifact@v4.1.7" -%} -{%- set timeout_minutes = 280 -%} +{%- set timeout_minutes = 400 -%} {%- set timeout_minutes_windows_binary = 360 -%} {%- macro concurrency(build_environment) -%} @@ -32,7 +32,7 @@ concurrency: {%- macro setup_ec2_windows() -%} !{{ display_ec2_information() }} - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 continue-on-error: true with: github-secret: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/templates/linux_binary_build_workflow.yml.j2 b/.github/templates/linux_binary_build_workflow.yml.j2 index a252386af727c..1a1373645140e 100644 --- a/.github/templates/linux_binary_build_workflow.yml.j2 +++ b/.github/templates/linux_binary_build_workflow.yml.j2 @@ -113,7 +113,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -173,7 +173,10 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} - fetch-depth: 2 + # Full fetch on tag pushes so the release tag is visible to + # `git describe --tags --exact`; nightlies stay shallow for speed. + fetch-depth: ${{ github.ref_type != 'tag' && 2 || 0 }} + fetch-tags: ${{ github.ref_type == 'tag' }} submodules: recursive show-progress: false - name: Populate binary env diff --git a/.github/templates/macos_binary_build_workflow.yml.j2 b/.github/templates/macos_binary_build_workflow.yml.j2 index 3aac9aca14e22..8d6a5d43349f8 100644 --- a/.github/templates/macos_binary_build_workflow.yml.j2 +++ b/.github/templates/macos_binary_build_workflow.yml.j2 @@ -74,6 +74,10 @@ jobs: uses: actions/checkout@v4 with: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} + # Full fetch on tag pushes so the release tag is visible to + # `git describe --tags --exact`; nightlies stay shallow for speed. + fetch-depth: ${{ github.ref_type != 'tag' && 1 || 0 }} + fetch-tags: ${{ github.ref_type == 'tag' }} submodules: recursive show-progress: false - name: Clean PyTorch checkout @@ -84,7 +88,7 @@ jobs: run: | "${PYTORCH_ROOT}/.ci/wheel/install_libomp.sh" - name: Install uv - uses: pytorch/test-infra/.github/actions/setup-uv@main + uses: pytorch/test-infra/.github/actions/setup-uv@release/2.13 with: # enable-cache persists ~/.cache/uv across nightlies (keyed on the # workflow file hash by default); a warm cache makes the subsequent diff --git a/.github/templates/windows_binary_build_workflow.yml.j2 b/.github/templates/windows_binary_build_workflow.yml.j2 index 9bdf88bda2ffb..3a0ec14f7ae80 100644 --- a/.github/templates/windows_binary_build_workflow.yml.j2 +++ b/.github/templates/windows_binary_build_workflow.yml.j2 @@ -64,7 +64,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -166,7 +166,7 @@ jobs: {%- else %} !{{ set_runner_specific_vars() }} !{{ common.setup_ec2_windows() }} - !{{ common.checkout(deep_clone=False) }} + !{{ common.checkout(deep_clone=False, checkout_pr_head=False) }} {%- endif %} - name: Populate binary env shell: bash @@ -271,7 +271,7 @@ jobs: ".ci/pytorch/windows/arm64/bootstrap_rust.bat" {%- else %} !{{ common.setup_ec2_windows() }} - !{{ common.checkout(deep_clone=False) }} + !{{ common.checkout(deep_clone=False, checkout_pr_head=False) }} !{{ set_runner_specific_vars() }} {%- endif %} - uses: !{{ common.download_artifact_action }} @@ -371,7 +371,8 @@ jobs: --output-dir "${{ runner.temp }}/libtorch_output" \ --platform windows \ --desired-cuda "$DESIRED_CUDA" \ - --libtorch-variant "$LIBTORCH_VARIANT" + --libtorch-variant "$LIBTORCH_VARIANT" \ + --arch !{{ lt_config["arch"] }} - uses: !{{ common.upload_artifact_action }} if: always() with: diff --git a/.github/workflows/_binary-build-flash-attention-wheel-linux.yml b/.github/workflows/_binary-build-flash-attention-wheel-linux.yml index aa945af50d39c..ff822d6f24153 100644 --- a/.github/workflows/_binary-build-flash-attention-wheel-linux.yml +++ b/.github/workflows/_binary-build-flash-attention-wheel-linux.yml @@ -23,7 +23,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -83,18 +83,18 @@ jobs: TORCH_VERSION: "2.10.0" steps: - name: Setup SSH (Click me for login details) - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 with: github-secret: ${{ secrets.GITHUB_TOKEN }} fail-silently: false - name: Setup Linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: submodules: true - name: Pull Docker image - uses: pytorch/test-infra/.github/actions/pull-docker-image@main + uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.13 with: docker-image: ${{ env.DOCKER_IMAGE }} @@ -135,5 +135,5 @@ jobs: path: ${{ runner.temp }}/artifacts/*.whl - name: Teardown Linux - uses: pytorch/test-infra/.github/actions/teardown-linux@main + uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.13 if: always() diff --git a/.github/workflows/_binary-build-flash-attention-wheel-windows.yml b/.github/workflows/_binary-build-flash-attention-wheel-windows.yml index 5339753a9526f..012d56f2f6585 100644 --- a/.github/workflows/_binary-build-flash-attention-wheel-windows.yml +++ b/.github/workflows/_binary-build-flash-attention-wheel-windows.yml @@ -22,7 +22,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -71,12 +71,12 @@ jobs: git config --global core.ignorecase false git config --global core.fsmonitor false - name: Setup SSH (Click me for login details) - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 with: github-secret: ${{ secrets.GITHUB_TOKEN }} - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: no-sudo: true submodules: true diff --git a/.github/workflows/_binary-build-linux.yml b/.github/workflows/_binary-build-linux.yml index f053c3cf25b2c..0b2d26fcd4db4 100644 --- a/.github/workflows/_binary-build-linux.yml +++ b/.github/workflows/_binary-build-linux.yml @@ -110,7 +110,6 @@ jobs: - name: Checkout PyTorch uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: - ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} fetch-depth: 2 submodules: recursive show-progress: false diff --git a/.github/workflows/_binary-test-linux.yml b/.github/workflows/_binary-test-linux.yml index 0474301da5553..350964da50009 100644 --- a/.github/workflows/_binary-test-linux.yml +++ b/.github/workflows/_binary-test-linux.yml @@ -118,7 +118,6 @@ jobs: - name: Checkout PyTorch uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: - ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} fetch-depth: 1 submodules: recursive show-progress: false diff --git a/.github/workflows/_binary-upload.yml b/.github/workflows/_binary-upload.yml index 8d356acabe667..aaf976ee4e16e 100644 --- a/.github/workflows/_binary-upload.yml +++ b/.github/workflows/_binary-upload.yml @@ -91,7 +91,7 @@ jobs: SHA1: ${{ github.event.pull_request.head.sha || github.sha }} steps: - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: no-sudo: true submodules: "false" diff --git a/.github/workflows/_docs.yml b/.github/workflows/_docs.yml index 6c2ed52dc0a19..a4cadeb552ff8 100644 --- a/.github/workflows/_docs.yml +++ b/.github/workflows/_docs.yml @@ -99,7 +99,7 @@ jobs: name: build-docs-${{ matrix.docs_type }}-${{ inputs.push }} steps: - name: Setup SSH (Click me for login details) - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 with: github-secret: ${{ secrets.GITHUB_TOKEN }} instructions: | @@ -109,7 +109,7 @@ jobs: cd docs && make html && make coverage - name: Setup Linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: # Docs build runs `git log --follow` per page for "Created/Updated" # dates; a treeless clone triggers lazy fetches and makes the build @@ -123,12 +123,12 @@ jobs: - name: Calculate docker image id: calculate-docker-image - uses: pytorch/test-infra/.github/actions/calculate-docker-image@main + uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.13 with: docker-image-name: ${{ inputs.docker-image }} - name: Pull docker image - uses: pytorch/test-infra/.github/actions/pull-docker-image@main + uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.13 with: docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} @@ -258,7 +258,7 @@ jobs: echo "https://docs-preview.pytorch.org/pytorch/pytorch/nightly-${{ github.sha }}/cppdocs/index.html" - name: Teardown Linux - uses: pytorch/test-infra/.github/actions/teardown-linux@main + uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.13 if: always() build-docs-osdc: @@ -285,7 +285,7 @@ jobs: steps: - name: Setup Linux id: setup-linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: use-arc: true python-version: ${{ inputs.python-version }} @@ -306,7 +306,7 @@ jobs: role-duration-seconds: 18000 - name: Download build artifacts - uses: pytorch/pytorch/.github/actions/download-build-artifacts@main + uses: pytorch/pytorch/.github/actions/download-build-artifacts@release/2.13 with: name: ${{ inputs.build-environment }} s3-bucket: ${{ inputs.s3-bucket }} diff --git a/.github/workflows/_lint.yml b/.github/workflows/_lint.yml index 8e707c748f582..5e2060f7d1586 100644 --- a/.github/workflows/_lint.yml +++ b/.github/workflows/_lint.yml @@ -29,7 +29,7 @@ jobs: git config --global --add safe.directory "$GITHUB_WORKSPACE" - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: fetch-depth: 0 submodules: true @@ -37,7 +37,7 @@ jobs: checkout-mode: treeless - name: Setup uv - uses: pytorch/test-infra/.github/actions/setup-uv@main + uses: pytorch/test-infra/.github/actions/setup-uv@release/2.13 with: python-version: "3.12" activate-environment: true diff --git a/.github/workflows/_linux-build.yml b/.github/workflows/_linux-build.yml index 5ae2cb9618479..d89adce9ef97f 100644 --- a/.github/workflows/_linux-build.yml +++ b/.github/workflows/_linux-build.yml @@ -158,7 +158,7 @@ jobs: build-environment: ${{ inputs.build-environment }} steps: - name: Setup SSH (Click me for login details) - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 if: inputs.build-environment != 'linux-s390x-binary-manywheel' with: github-secret: ${{ secrets.GITHUB_TOKEN }} @@ -168,7 +168,7 @@ jobs: - name: Setup Linux id: setup-linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: python-version: ${{ inputs.python-version }} compiler: ${{ inputs.compiler }} @@ -194,7 +194,7 @@ jobs: - name: Calculate docker image id: calculate-docker-image - uses: pytorch/test-infra/.github/actions/calculate-docker-image@main + uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.13 if: inputs.build-environment != 'linux-s390x-binary-manywheel' with: docker-image-name: ${{ inputs.docker-image-name }} @@ -211,7 +211,7 @@ jobs: echo "docker pull ghcr.io/pytorch/ci-image:${tag/:/-}" - name: Pull docker image - uses: pytorch/test-infra/.github/actions/pull-docker-image@main + uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.13 if: inputs.build-environment != 'linux-s390x-binary-manywheel' && steps.use-old-whl.outputs.reuse != 'true' with: docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} @@ -459,7 +459,7 @@ jobs: artifact_prefix: usage_log_build_${{ steps.setup-linux.outputs.job-id }} - name: Teardown Linux - uses: pytorch/test-infra/.github/actions/teardown-linux@main + uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.13 if: always() && inputs.build-environment != 'linux-s390x-binary-manywheel' - name: Cleanup docker @@ -488,7 +488,7 @@ jobs: steps: - name: Setup Linux id: setup-linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: use-arc: true python-version: ${{ inputs.python-version }} @@ -498,7 +498,7 @@ jobs: - name: Check if can use old whl build id: use-old-whl - uses: pytorch/pytorch/.github/actions/reuse-old-whl@main + uses: pytorch/pytorch/.github/actions/reuse-old-whl@release/2.13 if: ${{ inputs.allow-reuse-old-whl }} with: build-environment: ${{ inputs.build-environment }} @@ -510,7 +510,7 @@ jobs: # Apply the filter logic to the build step too if the test-config label is already there - name: Select all requested test configurations (if the test matrix is available) id: filter - uses: pytorch/pytorch/.github/actions/filter-test-configs@main + uses: pytorch/pytorch/.github/actions/filter-test-configs@release/2.13 with: github-token: ${{ secrets.GITHUB_TOKEN }} test-matrix: ${{ inputs.test-matrix }} @@ -572,7 +572,7 @@ jobs: - name: Build external packages id: build-external-packages if: inputs.build-external-packages != '' && steps.build.outcome != 'skipped' - uses: pytorch/pytorch/.github/actions/build-external-packages@main + uses: pytorch/pytorch/.github/actions/build-external-packages@release/2.13 with: build-targets: ${{ inputs.build-external-packages }} docker-image: 308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/${{ inputs.docker-image-name }}${{ inputs.ci-docker-hash && format('-{0}', inputs.ci-docker-hash) || '' }} @@ -596,7 +596,7 @@ jobs: - name: Store build artifacts if: inputs.build-generates-artifacts && (steps.build.outcome != 'skipped' || steps.use-old-whl.outputs.reuse == 'true') - uses: pytorch/pytorch/.github/actions/upload-build-artifacts@main + uses: pytorch/pytorch/.github/actions/upload-build-artifacts@release/2.13 with: name: ${{ inputs.build-environment }} s3-bucket: ${{ inputs.s3-bucket }} @@ -604,7 +604,7 @@ jobs: - name: Upload sccache stats if: steps.build.outcome != 'skipped' && steps.aws-creds.outcome == 'success' - uses: pytorch/pytorch/.github/actions/upload-sccache-stats@main + uses: pytorch/pytorch/.github/actions/upload-sccache-stats@release/2.13 with: github-token: ${{ secrets.GITHUB_TOKEN }} build-time: ${{ steps.build.outputs.build_time }} diff --git a/.github/workflows/_linux-test-stable-fa3.yml b/.github/workflows/_linux-test-stable-fa3.yml index 25b118392af59..b9789f95f4959 100644 --- a/.github/workflows/_linux-test-stable-fa3.yml +++ b/.github/workflows/_linux-test-stable-fa3.yml @@ -85,7 +85,7 @@ jobs: contents: read steps: - name: Setup Linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 - name: Checkout flash-attention as a secondary repository uses: actions/checkout@v4 @@ -98,7 +98,7 @@ jobs: - name: Calculate docker image id: calculate-docker-image - uses: pytorch/test-infra/.github/actions/calculate-docker-image@main + uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.13 with: docker-image-name: ${{ inputs.docker-image }} @@ -112,7 +112,7 @@ jobs: echo "docker pull ghcr.io/pytorch/ci-image:${tag/:/-}" - name: Pull docker image - uses: pytorch/test-infra/.github/actions/pull-docker-image@main + uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.13 with: docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} @@ -274,7 +274,7 @@ jobs: workflow_attempt: ${{github.run_attempt}} - name: Teardown Linux - uses: pytorch/test-infra/.github/actions/teardown-linux@main + uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.13 if: always() && steps.check_container_runner.outputs.IN_CONTAINER_RUNNER == 'false' test-osdc: @@ -292,7 +292,7 @@ jobs: steps: - name: Setup Linux id: setup-linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: use-arc: true python-version: ${{ inputs.python-version }} @@ -317,7 +317,7 @@ jobs: role-duration-seconds: 18000 - name: Download build artifacts - uses: pytorch/pytorch/.github/actions/download-build-artifacts@main + uses: pytorch/pytorch/.github/actions/download-build-artifacts@release/2.13 with: name: ${{ inputs.build-environment }} s3-bucket: ${{ inputs.s3-bucket }} diff --git a/.github/workflows/_linux-test.yml b/.github/workflows/_linux-test.yml index 1b74c52b5c7fd..2f5fb34429069 100644 --- a/.github/workflows/_linux-test.yml +++ b/.github/workflows/_linux-test.yml @@ -136,7 +136,7 @@ jobs: contents: read steps: - name: Setup SSH (Click me for login details) - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 if: ${{ !contains(matrix.runner, 'b200') && inputs.build-environment != 'linux-s390x-binary-manywheel' }} with: github-secret: ${{ secrets.GITHUB_TOKEN }} @@ -146,7 +146,7 @@ jobs: - name: Setup Linux id: setup-linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: python-version: ${{ inputs.python-version }} compiler: ${{ inputs.compiler }} @@ -173,7 +173,7 @@ jobs: - name: Calculate docker image id: calculate-docker-image - uses: pytorch/test-infra/.github/actions/calculate-docker-image@main + uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.13 if: inputs.build-environment != 'linux-s390x-binary-manywheel' with: docker-image-name: ${{ inputs.docker-image }} @@ -189,7 +189,7 @@ jobs: echo "docker pull ghcr.io/pytorch/ci-image:${tag/:/-}" - name: Pull docker image - uses: pytorch/test-infra/.github/actions/pull-docker-image@main + uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.13 if: inputs.build-environment != 'linux-s390x-binary-manywheel' with: docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} @@ -201,7 +201,7 @@ jobs: - name: Install nvidia driver, nvidia-docker runtime, set GPU_FLAG id: install-nvidia-driver - uses: pytorch/test-infra/.github/actions/setup-nvidia@main + uses: pytorch/test-infra/.github/actions/setup-nvidia@release/2.13 with: driver-version: '580.82.07' if: ${{ !contains(matrix.runner, 'b200') }} @@ -538,7 +538,7 @@ jobs: aws-region: us-east-1 - name: Upload the benchmark results - uses: pytorch/test-infra/.github/actions/upload-benchmark-results@main + uses: pytorch/test-infra/.github/actions/upload-benchmark-results@release/2.13 if: inputs.build-environment != 'linux-s390x-binary-manywheel' && steps.check-tpu.outputs.has_tpu != 'true' with: benchmark-results-dir: test/test-reports @@ -596,7 +596,7 @@ jobs: workflow_attempt: ${{github.run_attempt}} - name: Teardown Linux - uses: pytorch/test-infra/.github/actions/teardown-linux@main + uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.13 if: always() && steps.check_container_runner.outputs.IN_CONTAINER_RUNNER == 'false' - name: Cleanup docker @@ -626,7 +626,7 @@ jobs: steps: - name: Setup Linux id: setup-linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: use-arc: true python-version: ${{ inputs.python-version }} @@ -646,7 +646,7 @@ jobs: role-duration-seconds: 18000 - name: Download build artifacts - uses: pytorch/pytorch/.github/actions/download-build-artifacts@main + uses: pytorch/pytorch/.github/actions/download-build-artifacts@release/2.13 with: name: ${{ inputs.build-environment }} s3-bucket: ${{ inputs.s3-bucket }} @@ -654,7 +654,7 @@ jobs: - name: Download TD artifacts continue-on-error: true - uses: pytorch/pytorch/.github/actions/download-td-artifacts@main + uses: pytorch/pytorch/.github/actions/download-td-artifacts@release/2.13 with: use-gha: ${{ steps.aws-creds.outcome != 'success' || inputs.use-gha }} @@ -714,7 +714,7 @@ jobs: # checks for labels and re-enabled test issues. It does not actually do # any filtering. All filtering is done in the build step. id: keep-going - uses: pytorch/pytorch/.github/actions/filter-test-configs@main + uses: pytorch/pytorch/.github/actions/filter-test-configs@release/2.13 with: github-token: ${{ secrets.GITHUB_TOKEN }} test-matrix: ${{ inputs.test-matrix }} @@ -810,7 +810,7 @@ jobs: aws-region: us-east-1 - name: Upload pytest cache if tests failed - uses: pytorch/pytorch/.github/actions/pytest-cache-upload@main + uses: pytorch/pytorch/.github/actions/pytest-cache-upload@release/2.13 continue-on-error: true if: failure() && steps.test.conclusion && steps.test.conclusion == 'failure' && steps.aws-creds-benchmark.outcome == 'success' with: @@ -822,7 +822,7 @@ jobs: - name: Upload the benchmark results if: steps.aws-creds-benchmark.outcome == 'success' - uses: pytorch/test-infra/.github/actions/upload-benchmark-results@main + uses: pytorch/test-infra/.github/actions/upload-benchmark-results@release/2.13 with: benchmark-results-dir: test/test-reports dry-run: false @@ -836,7 +836,7 @@ jobs: cat test/**/*_toprint.log || true - name: Upload test artifacts - uses: pytorch/pytorch/.github/actions/upload-test-artifacts@main + uses: pytorch/pytorch/.github/actions/upload-test-artifacts@release/2.13 if: always() && steps.test.conclusion && steps.test.conclusion != 'skipped' with: file-suffix: ${{ github.job }}-${{ matrix.config }}-${{ matrix.shard }}-${{ matrix.num_shards }}-${{ matrix.runner }}_${{ steps.setup-linux.outputs.job-id }} diff --git a/.github/workflows/_mac-build.yml b/.github/workflows/_mac-build.yml index 4fd7874ee0c4d..52fa51af40953 100644 --- a/.github/workflows/_mac-build.yml +++ b/.github/workflows/_mac-build.yml @@ -71,11 +71,11 @@ jobs: build-environment: ${{ inputs.build-environment }} steps: - name: Clean up disk space before running MacOS workflow - uses: pytorch/test-infra/.github/actions/check-disk-space@main + uses: pytorch/test-infra/.github/actions/check-disk-space@release/2.13 # [see note: pytorch repo ref] - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 - name: Set xcode version env: @@ -86,7 +86,7 @@ jobs: fi - name: Setup Python - uses: pytorch/test-infra/.github/actions/setup-python@main + uses: pytorch/test-infra/.github/actions/setup-python@release/2.13 with: python-version: ${{ inputs.python-version }} pip-requirements-file: .ci/docker/requirements-ci.txt @@ -192,4 +192,4 @@ jobs: - name: Clean up disk space if: always() continue-on-error: true - uses: pytorch/test-infra/.github/actions/check-disk-space@main + uses: pytorch/test-infra/.github/actions/check-disk-space@release/2.13 diff --git a/.github/workflows/_mac-test.yml b/.github/workflows/_mac-test.yml index cfa2af04bdaac..e4ab7c1d9ecb8 100644 --- a/.github/workflows/_mac-test.yml +++ b/.github/workflows/_mac-test.yml @@ -105,11 +105,11 @@ jobs: done - name: Clean up disk space before running MacOS workflow - uses: pytorch/test-infra/.github/actions/check-disk-space@main + uses: pytorch/test-infra/.github/actions/check-disk-space@release/2.13 # [see note: pytorch repo ref] - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 - name: Get workflow job id id: get-job-id @@ -119,7 +119,7 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} - name: Setup Python - uses: pytorch/test-infra/.github/actions/setup-python@main + uses: pytorch/test-infra/.github/actions/setup-python@release/2.13 with: python-version: ${{ inputs.python-version }} pip-requirements-file: .ci/docker/requirements-ci.txt @@ -256,7 +256,7 @@ jobs: file-suffix: ${{ github.job }}-${{ matrix.config }}-${{ matrix.shard }}-${{ matrix.num_shards }}-${{ matrix.runner }}_${{ steps.get-job-id.outputs.job-id }} - name: Upload the benchmark results - uses: pytorch/test-infra/.github/actions/upload-benchmark-results@main + uses: pytorch/test-infra/.github/actions/upload-benchmark-results@release/2.13 with: benchmark-results-dir: test/test-reports dry-run: false @@ -286,4 +286,4 @@ jobs: - name: Clean up disk space if: always() continue-on-error: true - uses: pytorch/test-infra/.github/actions/check-disk-space@main + uses: pytorch/test-infra/.github/actions/check-disk-space@release/2.13 diff --git a/.github/workflows/_rocm-test.yml b/.github/workflows/_rocm-test.yml index e6f9950d07b09..b23078c3a3dc4 100644 --- a/.github/workflows/_rocm-test.yml +++ b/.github/workflows/_rocm-test.yml @@ -85,7 +85,7 @@ jobs: timeout-minutes: ${{ inputs.timeout-minutes }} steps: - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: no-sudo: true @@ -104,12 +104,12 @@ jobs: - name: Calculate docker image id: calculate-docker-image - uses: pytorch/test-infra/.github/actions/calculate-docker-image@main + uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.13 with: docker-image-name: ${{ inputs.docker-image }} - name: Pull docker image - uses: pytorch/test-infra/.github/actions/pull-docker-image@main + uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.13 with: docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} @@ -327,7 +327,7 @@ jobs: aws-region: us-east-1 - name: Upload the benchmark results - uses: pytorch/test-infra/.github/actions/upload-benchmark-results@main + uses: pytorch/test-infra/.github/actions/upload-benchmark-results@release/2.13 with: benchmark-results-dir: test/test-reports dry-run: false diff --git a/.github/workflows/_runner-determinator.yml b/.github/workflows/_runner-determinator.yml index b865e7a14857b..0e556b4828d2a 100644 --- a/.github/workflows/_runner-determinator.yml +++ b/.github/workflows/_runner-determinator.yml @@ -111,7 +111,7 @@ jobs: curr_ref_type="${{ inputs.curr_ref_type }}" echo "Current branch is '$curr_branch'" - # The workflow YAML is loaded from main (via @main in callers) but the + # The workflow YAML is loaded from main (via @release/2.13 in callers) but the # script is checked out from the PR head, so PRs that predate a newly # added optional flag will reject it. Probe --help and only pass flags # the checked-out script supports. diff --git a/.github/workflows/_vllm-benchmark.yml b/.github/workflows/_vllm-benchmark.yml index a993d54bac4b9..8dfd1062829af 100644 --- a/.github/workflows/_vllm-benchmark.yml +++ b/.github/workflows/_vllm-benchmark.yml @@ -94,7 +94,7 @@ jobs: name: ${{ inputs.build_environment }} s3-bucket: gha-artifacts - - uses: pytorch/test-infra/.github/actions/setup-uv@main + - uses: pytorch/test-infra/.github/actions/setup-uv@release/2.13 with: python-version: "3.12" activate-environment: "true" @@ -235,7 +235,7 @@ jobs: aws-region: us-east-1 - name: Upload the benchmark results to OSS benchmark database for the dashboard - uses: pytorch/test-infra/.github/actions/upload-benchmark-results@main + uses: pytorch/test-infra/.github/actions/upload-benchmark-results@release/2.13 with: benchmark-results-dir: vllm-project/vllm/benchmarks/results benchmark-name: 'PyTorch x vLLM benchmark' diff --git a/.github/workflows/_win-build.yml b/.github/workflows/_win-build.yml index 896241e3ea860..ab87c3caf009c 100644 --- a/.github/workflows/_win-build.yml +++ b/.github/workflows/_win-build.yml @@ -89,7 +89,7 @@ jobs: git config --global core.fsmonitor false - name: Setup SSH (Click me for login details) - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 with: github-secret: ${{ secrets.GITHUB_TOKEN }} instructions: | @@ -104,7 +104,7 @@ jobs: # [see note: pytorch repo ref] - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: no-sudo: true diff --git a/.github/workflows/_win-test.yml b/.github/workflows/_win-test.yml index 044860869e1c3..9bce10237ccae 100644 --- a/.github/workflows/_win-test.yml +++ b/.github/workflows/_win-test.yml @@ -78,7 +78,7 @@ jobs: git config --global core.fsmonitor false - name: Setup SSH (Click me for login details) - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 with: github-secret: ${{ secrets.GITHUB_TOKEN }} instructions: | @@ -94,7 +94,7 @@ jobs: # [see note: pytorch repo ref] - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: no-sudo: true submodules: false diff --git a/.github/workflows/_xpu-test.yml b/.github/workflows/_xpu-test.yml index 84976ed699096..5c71ad04986aa 100644 --- a/.github/workflows/_xpu-test.yml +++ b/.github/workflows/_xpu-test.yml @@ -86,14 +86,14 @@ jobs: steps: # [see note: pytorch repo ref] - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 - name: Setup XPU uses: ./.github/actions/setup-xpu - name: Calculate docker image id: calculate-docker-image - uses: pytorch/test-infra/.github/actions/calculate-docker-image@main + uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.13 with: docker-image-name: ${{ inputs.docker-image }} @@ -107,7 +107,7 @@ jobs: echo "docker pull ghcr.io/pytorch/ci-image:${tag/:/-}" - name: Pull docker image - uses: pytorch/test-infra/.github/actions/pull-docker-image@main + uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.13 with: docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} @@ -340,7 +340,7 @@ jobs: aws-region: us-east-1 - name: Upload the benchmark results - uses: pytorch/test-infra/.github/actions/upload-benchmark-results@main + uses: pytorch/test-infra/.github/actions/upload-benchmark-results@release/2.13 with: benchmark-results-dir: test/test-reports dry-run: false diff --git a/.github/workflows/attention_op_microbenchmark.yml b/.github/workflows/attention_op_microbenchmark.yml index a2ed2ae09e088..d0000fe1dd90f 100644 --- a/.github/workflows/attention_op_microbenchmark.yml +++ b/.github/workflows/attention_op_microbenchmark.yml @@ -21,7 +21,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/b200-distributed.yml b/.github/workflows/b200-distributed.yml index 69e4c59a658ff..7cfc8667cbe77 100644 --- a/.github/workflows/b200-distributed.yml +++ b/.github/workflows/b200-distributed.yml @@ -25,7 +25,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} diff --git a/.github/workflows/b200-symm-mem.yml b/.github/workflows/b200-symm-mem.yml index 73ed6d8d01b6b..6a9b1da4b12a1 100644 --- a/.github/workflows/b200-symm-mem.yml +++ b/.github/workflows/b200-symm-mem.yml @@ -25,7 +25,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} diff --git a/.github/workflows/build-almalinux-images.yml b/.github/workflows/build-almalinux-images.yml index ac81f2d2167fa..c3ee23cc0f19d 100644 --- a/.github/workflows/build-almalinux-images.yml +++ b/.github/workflows/build-almalinux-images.yml @@ -36,10 +36,10 @@ jobs: runs-on: linux.9xlarge.ephemeral strategy: matrix: - tag: ["cuda12.6", "cuda13.0", "cuda13.2", "rocm7.1", "rocm7.2", "cpu"] + tag: ["cuda12.6", "cuda12.9", "cuda13.0", "cuda13.2", "rocm7.1", "rocm7.2", "cpu"] steps: - name: Build docker image - uses: pytorch/pytorch/.github/actions/binary-docker-build@main + uses: pytorch/pytorch/.github/actions/binary-docker-build@release/2.13 with: docker-image-name: almalinux-builder custom-tag-prefix: ${{matrix.tag}} diff --git a/.github/workflows/build-manywheel-images-s390x.yml b/.github/workflows/build-manywheel-images-s390x.yml index c498e169f1aa5..a84a38b711413 100644 --- a/.github/workflows/build-manywheel-images-s390x.yml +++ b/.github/workflows/build-manywheel-images-s390x.yml @@ -25,7 +25,7 @@ jobs: runs-on: linux.s390x steps: - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: submodules: false no-sudo: true diff --git a/.github/workflows/build-manywheel-images.yml b/.github/workflows/build-manywheel-images.yml index 4169ccffbdb7b..af5aec93580af 100644 --- a/.github/workflows/build-manywheel-images.yml +++ b/.github/workflows/build-manywheel-images.yml @@ -32,7 +32,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -48,9 +48,11 @@ jobs: include: [ { name: "manylinux2_28-builder", tag: "cuda13.2", runner: "linux.9xlarge.ephemeral" }, { name: "manylinux2_28-builder", tag: "cuda13.0", runner: "linux.9xlarge.ephemeral" }, + { name: "manylinux2_28-builder", tag: "cuda12.9", runner: "linux.9xlarge.ephemeral" }, { name: "manylinux2_28-builder", tag: "cuda12.6", runner: "linux.9xlarge.ephemeral" }, { name: "manylinuxaarch64-builder", tag: "cuda13.2", runner: "linux.arm64.m7g.4xlarge.ephemeral" }, { name: "manylinuxaarch64-builder", tag: "cuda13.0", runner: "linux.arm64.m7g.4xlarge.ephemeral" }, + { name: "manylinuxaarch64-builder", tag: "cuda12.9", runner: "linux.arm64.m7g.4xlarge.ephemeral" }, { name: "manylinuxaarch64-builder", tag: "cuda12.6", runner: "linux.arm64.m7g.4xlarge.ephemeral" }, { name: "manylinux2_28-builder", tag: "rocm7.1", runner: "linux.9xlarge.ephemeral" }, { name: "manylinux2_28-builder", tag: "rocm7.2", runner: "linux.9xlarge.ephemeral" }, @@ -62,7 +64,7 @@ jobs: name: ${{ matrix.name }}:${{ matrix.tag }} steps: - name: Build docker image - uses: pytorch/pytorch/.github/actions/binary-docker-build@main + uses: pytorch/pytorch/.github/actions/binary-docker-build@release/2.13 with: docker-image-name: ${{ matrix.name }} custom-tag-prefix: ${{ matrix.tag }} diff --git a/.github/workflows/build-triton-wheel.yml b/.github/workflows/build-triton-wheel.yml index aec443b0e7758..401ce9afbca99 100644 --- a/.github/workflows/build-triton-wheel.yml +++ b/.github/workflows/build-triton-wheel.yml @@ -3,7 +3,7 @@ name: Build Triton wheels on: push: branches: - - main + - release/2.13 tags: # NOTE: Binary build pipelines should only get triggered on release candidate builds # Release candidate tags look like: v1.11.0-rc1 @@ -36,7 +36,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -74,12 +74,12 @@ jobs: PLATFORM: 'manylinux_2_28_x86_64' steps: - name: Setup SSH (Click me for login details) - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 with: github-secret: ${{ secrets.GITHUB_TOKEN }} - name: Setup Linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: submodules: false @@ -87,7 +87,7 @@ jobs: uses: ./.github/actions/ecr-login - name: Pull Docker image - uses: pytorch/test-infra/.github/actions/pull-docker-image@main + uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.13 with: docker-image: ${{ env.DOCKER_IMAGE }} @@ -179,7 +179,7 @@ jobs: path: ${{ runner.temp }}/artifacts/wheelhouse/* - name: Teardown Linux - uses: pytorch/test-infra/.github/actions/teardown-linux@main + uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.13 if: always() build-wheel-win: @@ -212,7 +212,7 @@ jobs: echo "instance-type: $(get_ec2_metadata instance-type)" echo "system info $(uname -a)" - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 continue-on-error: true with: github-secret: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/build-vllm-wheel.yml b/.github/workflows/build-vllm-wheel.yml index 36ab5b2e1f6e4..9a06eeba43790 100644 --- a/.github/workflows/build-vllm-wheel.yml +++ b/.github/workflows/build-vllm-wheel.yml @@ -56,12 +56,12 @@ jobs: BUILD_DEVICE: ${{ matrix.device }} steps: - name: Setup SSH (Click me for login details) - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 with: github-secret: ${{ secrets.GITHUB_TOKEN }} - name: Setup Linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: submodules: false @@ -152,7 +152,7 @@ jobs: path: ${{ runner.temp }}/artifacts/externals/vllm/wheels/*.whl - name: Teardown Linux - uses: pytorch/test-infra/.github/actions/teardown-linux@main + uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.13 if: always() # Copied from build-triton-wheel workflow (mostly) diff --git a/.github/workflows/claude-autorevert-advisor.yml b/.github/workflows/claude-autorevert-advisor.yml index 6cd96349c6e8e..5be290ce5f499 100644 --- a/.github/workflows/claude-autorevert-advisor.yml +++ b/.github/workflows/claude-autorevert-advisor.yml @@ -170,4 +170,4 @@ jobs: - name: Upload usage metrics if: always() - uses: pytorch/test-infra/.github/actions/upload-claude-usage@main + uses: pytorch/test-infra/.github/actions/upload-claude-usage@release/2.13 diff --git a/.github/workflows/claude-code.yml b/.github/workflows/claude-code.yml index e09b63a1eac89..34dc1dc8c7d81 100644 --- a/.github/workflows/claude-code.yml +++ b/.github/workflows/claude-code.yml @@ -8,7 +8,7 @@ on: jobs: claude-code: - uses: pytorch/test-infra/.github/workflows/_claude-code.yml@main + uses: pytorch/test-infra/.github/workflows/_claude-code.yml@release/2.13 permissions: contents: read pull-requests: write diff --git a/.github/workflows/claude-distributed-triage.yml b/.github/workflows/claude-distributed-triage.yml index 7ef336d7e7b29..8a22a45550664 100644 --- a/.github/workflows/claude-distributed-triage.yml +++ b/.github/workflows/claude-distributed-triage.yml @@ -140,7 +140,7 @@ jobs: - name: Upload usage metrics if: steps.gate.outputs.proceed == 'true' - uses: pytorch/test-infra/.github/actions/upload-claude-usage@main + uses: pytorch/test-infra/.github/actions/upload-claude-usage@release/2.13 - name: Upload execution output to S3 if: always() && steps.gate.outputs.proceed == 'true' diff --git a/.github/workflows/claude-issue-triage-run.yml b/.github/workflows/claude-issue-triage-run.yml index 767b73455d612..0e310d92c8c0d 100644 --- a/.github/workflows/claude-issue-triage-run.yml +++ b/.github/workflows/claude-issue-triage-run.yml @@ -108,7 +108,7 @@ jobs: fi - name: Upload usage metrics - uses: pytorch/test-infra/.github/actions/upload-claude-usage@main + uses: pytorch/test-infra/.github/actions/upload-claude-usage@release/2.13 - name: Upload execution output to S3 if: always() diff --git a/.github/workflows/close-nonexistent-disable-issues.yml b/.github/workflows/close-nonexistent-disable-issues.yml index bef3d8797149c..d8abf53352ac3 100644 --- a/.github/workflows/close-nonexistent-disable-issues.yml +++ b/.github/workflows/close-nonexistent-disable-issues.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: submodules: false fetch-depth: 1 diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index 19b9c1e64988c..c7c012b9a34ea 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -19,7 +19,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} diff --git a/.github/workflows/docker-builds.yml b/.github/workflows/docker-builds.yml index a42faae5c50eb..3e891c24721ad 100644 --- a/.github/workflows/docker-builds.yml +++ b/.github/workflows/docker-builds.yml @@ -91,14 +91,14 @@ jobs: image: ghcr.io/actions/actions-runner:latest steps: - name: Setup Linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: use-arc: true submodules: false github-token: ${{ secrets.GITHUB_TOKEN }} - name: Login to ECR - uses: pytorch/pytorch/.github/actions/ecr-login@main + uses: pytorch/pytorch/.github/actions/ecr-login@release/2.13 with: aws-role-to-assume: arn:aws:iam::308535385114:role/arc diff --git a/.github/workflows/docker-cache-rocm.yml b/.github/workflows/docker-cache-rocm.yml index 8b5d7e4206023..38694d756cf59 100644 --- a/.github/workflows/docker-cache-rocm.yml +++ b/.github/workflows/docker-cache-rocm.yml @@ -72,7 +72,7 @@ jobs: echo "Outputs of download-docker-builds-artifacts job: ${DOWNLOAD_OUTPUTS_JSON}" - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: no-sudo: true submodules: 'false' @@ -90,7 +90,7 @@ jobs: echo "ghcr_image=${ghcr_image}" >> "$GITHUB_OUTPUT" - name: Pull docker image - uses: pytorch/test-infra/.github/actions/pull-docker-image@main + uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.13 with: docker-image: ${{ steps.ghcr-io-tag.outputs.ghcr_image }} diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml index ebfc56a5d0cf5..611eccf2189d6 100644 --- a/.github/workflows/docker-release.yml +++ b/.github/workflows/docker-release.yml @@ -38,7 +38,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -53,7 +53,7 @@ jobs: matrix: ${{ steps.generate-matrix.outputs.matrix }} steps: - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: fetch-depth: 1 submodules: 'false' @@ -83,12 +83,12 @@ jobs: CUDNN_VERSION: ${{ matrix.cudnn_version }} steps: - name: Setup SSH (Click me for login details) - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 with: github-secret: ${{ secrets.GITHUB_TOKEN }} - name: Setup Linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: submodules: 'false' @@ -165,13 +165,13 @@ jobs: fi - name: Teardown Linux - uses: pytorch/test-infra/.github/actions/teardown-linux@main + uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.13 if: always() validate: needs: build if: ${{ github.event_name == 'push' && (github.event.ref == 'refs/heads/nightly' || startsWith(github.event.ref, 'refs/tags/v')) }} - uses: pytorch/test-infra/.github/workflows/validate-docker-images.yml@main + uses: pytorch/test-infra/.github/workflows/validate-docker-images.yml@release/2.13 with: channel: nightly ref: main diff --git a/.github/workflows/docs-build.yml b/.github/workflows/docs-build.yml index d229f1dd187ce..49541f2fe173d 100644 --- a/.github/workflows/docs-build.yml +++ b/.github/workflows/docs-build.yml @@ -34,7 +34,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/dtensor.yml b/.github/workflows/dtensor.yml index bdc6749a9cb00..260c95140df4d 100644 --- a/.github/workflows/dtensor.yml +++ b/.github/workflows/dtensor.yml @@ -23,7 +23,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: github.repository_owner == 'pytorch' with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/dynamo-unittest.yml b/.github/workflows/dynamo-unittest.yml index eb8fac23f5029..9092013cbc09a 100644 --- a/.github/workflows/dynamo-unittest.yml +++ b/.github/workflows/dynamo-unittest.yml @@ -23,7 +23,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/generated-linux-aarch64-binary-manywheel-nightly.yml b/.github/workflows/generated-linux-aarch64-binary-manywheel-nightly.yml index fc1a615809c5a..54511fea51636 100644 --- a/.github/workflows/generated-linux-aarch64-binary-manywheel-nightly.yml +++ b/.github/workflows/generated-linux-aarch64-binary-manywheel-nightly.yml @@ -40,7 +40,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -54,14 +54,14 @@ jobs: runs-on: "${{ needs.get-label-type.outputs.label-type }}linux.arm64.r7g.12xlarge.memory" timeout-minutes: 420 container: - image: pytorch/manylinux2_28_aarch64-builder:cpu-aarch64 + image: pytorch/manylinux2_28_aarch64-builder:cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359 env: PYTORCH_ROOT: ${{ github.workspace }} PACKAGE_TYPE: manywheel DESIRED_CUDA: cpu GPU_ARCH_VERSION: "" GPU_ARCH_TYPE: cpu-aarch64 - DOCKER_IMAGE: pytorch/manylinux2_28_aarch64-builder:cpu-aarch64 + DOCKER_IMAGE: pytorch/manylinux2_28_aarch64-builder:cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359 SKIP_ALL_TESTS: 1 DESIRED_PYTHONS: "3.10 3.11 3.12 3.13 3.14 3.14t 3.15 3.15t" BUILD_NAME_PREFIX: "manywheel-py" @@ -73,7 +73,10 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} - fetch-depth: 2 + # Full fetch on tag pushes so the release tag is visible to + # `git describe --tags --exact`; nightlies stay shallow for speed. + fetch-depth: ${{ github.ref_type != 'tag' && 2 || 0 }} + fetch-tags: ${{ github.ref_type == 'tag' }} submodules: recursive show-progress: false - name: Populate binary env @@ -139,14 +142,14 @@ jobs: runs-on: "${{ needs.get-label-type.outputs.label-type }}linux.arm64.r7g.12xlarge.memory" timeout-minutes: 420 container: - image: pytorch/manylinuxaarch64-builder:cuda12.6 + image: pytorch/manylinuxaarch64-builder:cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359 env: PYTORCH_ROOT: ${{ github.workspace }} PACKAGE_TYPE: manywheel DESIRED_CUDA: cu126 GPU_ARCH_VERSION: "12.6-aarch64" GPU_ARCH_TYPE: cuda-aarch64 - DOCKER_IMAGE: pytorch/manylinuxaarch64-builder:cuda12.6 + DOCKER_IMAGE: pytorch/manylinuxaarch64-builder:cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359 SKIP_ALL_TESTS: 1 DESIRED_PYTHONS: "3.10 3.11 3.12 3.13 3.14 3.14t 3.15 3.15t" BUILD_NAME_PREFIX: "manywheel-py" @@ -159,7 +162,10 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} - fetch-depth: 2 + # Full fetch on tag pushes so the release tag is visible to + # `git describe --tags --exact`; nightlies stay shallow for speed. + fetch-depth: ${{ github.ref_type != 'tag' && 2 || 0 }} + fetch-tags: ${{ github.ref_type == 'tag' }} submodules: recursive show-progress: false - name: Populate binary env @@ -218,6 +224,95 @@ jobs: if-no-files-found: error path: ${{ runner.temp }}/artifacts/manywheel-py3_15t-cuda-aarch64-12_6/* + manywheel-cuda-aarch64-cu129-build: + name: manywheel-cuda-aarch64-cu129-build + if: ${{ github.repository_owner == 'pytorch' }} + needs: get-label-type + runs-on: "${{ needs.get-label-type.outputs.label-type }}linux.arm64.r7g.12xlarge.memory" + timeout-minutes: 420 + container: + image: pytorch/manylinuxaarch64-builder:cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359 + env: + PYTORCH_ROOT: ${{ github.workspace }} + PACKAGE_TYPE: manywheel + DESIRED_CUDA: cu129 + GPU_ARCH_VERSION: "12.9-aarch64" + GPU_ARCH_TYPE: cuda-aarch64 + DOCKER_IMAGE: pytorch/manylinuxaarch64-builder:cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359 + SKIP_ALL_TESTS: 1 + DESIRED_PYTHONS: "3.10 3.11 3.12 3.13 3.14 3.14t 3.15 3.15t" + BUILD_NAME_PREFIX: "manywheel-py" + BUILD_NAME_SUFFIX: "-cuda-aarch64-12_9" + PYTORCH_EXTRA_INSTALL_REQUIREMENTS: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==12.9.1; platform_system == 'Linux' | cuda-bindings>=12.9.4,<13; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu12==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu12==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu12==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu12==3.4.5; platform_system == 'Linux'" + steps: + - name: Configure git safe directory + run: git config --global --add safe.directory "$GITHUB_WORKSPACE" + - name: Checkout PyTorch + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} + # Full fetch on tag pushes so the release tag is visible to + # `git describe --tags --exact`; nightlies stay shallow for speed. + fetch-depth: ${{ github.ref_type != 'tag' && 2 || 0 }} + fetch-tags: ${{ github.ref_type == 'tag' }} + submodules: recursive + show-progress: false + - name: Populate binary env + shell: bash + run: | + export PYTORCH_FINAL_PACKAGE_DIR="${RUNNER_TEMP}/artifacts" + mkdir -p "${PYTORCH_FINAL_PACKAGE_DIR}" + echo "PYTORCH_FINAL_PACKAGE_DIR=${PYTORCH_FINAL_PACKAGE_DIR}" >> "${GITHUB_ENV}" + bash .ci/pytorch/binary_populate_env.sh + - name: Build all wheels + shell: bash + run: | + # shellcheck disable=SC1091 + source "${BINARY_ENV_FILE}" + bash .ci/manywheel/build_all.sh + # One artifact per built Python -- names must match what the test/upload + # matrix below downloads. + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_10-cuda-aarch64-12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_10-cuda-aarch64-12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_11-cuda-aarch64-12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_11-cuda-aarch64-12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_12-cuda-aarch64-12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_12-cuda-aarch64-12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_13-cuda-aarch64-12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_13-cuda-aarch64-12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_14-cuda-aarch64-12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_14-cuda-aarch64-12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_14t-cuda-aarch64-12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_14t-cuda-aarch64-12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_15-cuda-aarch64-12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_15-cuda-aarch64-12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_15t-cuda-aarch64-12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_15t-cuda-aarch64-12_9/* + manywheel-cuda-aarch64-cu130-build: name: manywheel-cuda-aarch64-cu130-build if: ${{ github.repository_owner == 'pytorch' }} @@ -225,19 +320,19 @@ jobs: runs-on: "${{ needs.get-label-type.outputs.label-type }}linux.arm64.r7g.12xlarge.memory" timeout-minutes: 420 container: - image: pytorch/manylinuxaarch64-builder:cuda13.0 + image: pytorch/manylinuxaarch64-builder:cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359 env: PYTORCH_ROOT: ${{ github.workspace }} PACKAGE_TYPE: manywheel DESIRED_CUDA: cu130 GPU_ARCH_VERSION: "13.0-aarch64" GPU_ARCH_TYPE: cuda-aarch64 - DOCKER_IMAGE: pytorch/manylinuxaarch64-builder:cuda13.0 + DOCKER_IMAGE: pytorch/manylinuxaarch64-builder:cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359 SKIP_ALL_TESTS: 1 DESIRED_PYTHONS: "3.10 3.11 3.12 3.13 3.14 3.14t 3.15 3.15t" BUILD_NAME_PREFIX: "manywheel-py" BUILD_NAME_SUFFIX: "-cuda-aarch64-13_0" - PYTORCH_EXTRA_INSTALL_REQUIREMENTS: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cufile,nvjitlink,nvtx]==13.0.2; platform_system == 'Linux' | nvidia-cublas>=13.1.0.3,<=13.1.1.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" + PYTORCH_EXTRA_INSTALL_REQUIREMENTS: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==13.0.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" steps: - name: Configure git safe directory run: git config --global --add safe.directory "$GITHUB_WORKSPACE" @@ -245,7 +340,10 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} - fetch-depth: 2 + # Full fetch on tag pushes so the release tag is visible to + # `git describe --tags --exact`; nightlies stay shallow for speed. + fetch-depth: ${{ github.ref_type != 'tag' && 2 || 0 }} + fetch-tags: ${{ github.ref_type == 'tag' }} submodules: recursive show-progress: false - name: Populate binary env @@ -311,14 +409,14 @@ jobs: runs-on: "${{ needs.get-label-type.outputs.label-type }}linux.arm64.r7g.12xlarge.memory" timeout-minutes: 420 container: - image: pytorch/manylinuxaarch64-builder:cuda13.2 + image: pytorch/manylinuxaarch64-builder:cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359 env: PYTORCH_ROOT: ${{ github.workspace }} PACKAGE_TYPE: manywheel DESIRED_CUDA: cu132 GPU_ARCH_VERSION: "13.2-aarch64" GPU_ARCH_TYPE: cuda-aarch64 - DOCKER_IMAGE: pytorch/manylinuxaarch64-builder:cuda13.2 + DOCKER_IMAGE: pytorch/manylinuxaarch64-builder:cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359 SKIP_ALL_TESTS: 1 DESIRED_PYTHONS: "3.10 3.11 3.12 3.13 3.14 3.14t 3.15 3.15t" BUILD_NAME_PREFIX: "manywheel-py" @@ -331,7 +429,10 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} - fetch-depth: 2 + # Full fetch on tag pushes so the release tag is visible to + # `git describe --tags --exact`; nightlies stay shallow for speed. + fetch-depth: ${{ github.ref_type != 'tag' && 2 || 0 }} + fetch-tags: ${{ github.ref_type == 'tag' }} submodules: recursive show-progress: false - name: Populate binary env @@ -393,7 +494,7 @@ jobs: manywheel-test: name: ${{ matrix.build_name }}-test if: ${{ github.repository_owner == 'pytorch' }} - needs: [get-label-type, manywheel-cpu-aarch64-build, manywheel-cuda-aarch64-cu126-build, manywheel-cuda-aarch64-cu130-build, manywheel-cuda-aarch64-cu132-build] + needs: [get-label-type, manywheel-cpu-aarch64-build, manywheel-cuda-aarch64-cu126-build, manywheel-cuda-aarch64-cu129-build, manywheel-cuda-aarch64-cu130-build, manywheel-cuda-aarch64-cu132-build] uses: ./.github/workflows/_binary-test-linux.yml strategy: fail-fast: false @@ -404,7 +505,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cpu-aarch64" runs_on: "linux.arm64.2xlarge" - desired_python: "3.10" @@ -412,15 +513,23 @@ jobs: gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cuda-aarch64-12_6" runs_on: "linux.arm64.2xlarge" + - desired_python: "3.10" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_10-cuda-aarch64-12_9" + runs_on: "linux.arm64.2xlarge" - desired_python: "3.10" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cuda-aarch64-13_0" runs_on: "linux.arm64.2xlarge" - desired_python: "3.10" @@ -428,7 +537,7 @@ jobs: gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cuda-aarch64-13_2" runs_on: "linux.arm64.2xlarge" - desired_python: "3.11" @@ -436,7 +545,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cpu-aarch64" runs_on: "linux.arm64.2xlarge" - desired_python: "3.11" @@ -444,15 +553,23 @@ jobs: gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cuda-aarch64-12_6" runs_on: "linux.arm64.2xlarge" + - desired_python: "3.11" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_11-cuda-aarch64-12_9" + runs_on: "linux.arm64.2xlarge" - desired_python: "3.11" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cuda-aarch64-13_0" runs_on: "linux.arm64.2xlarge" - desired_python: "3.11" @@ -460,7 +577,7 @@ jobs: gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cuda-aarch64-13_2" runs_on: "linux.arm64.2xlarge" - desired_python: "3.12" @@ -468,7 +585,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cpu-aarch64" runs_on: "linux.arm64.2xlarge" - desired_python: "3.12" @@ -476,15 +593,23 @@ jobs: gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cuda-aarch64-12_6" runs_on: "linux.arm64.2xlarge" + - desired_python: "3.12" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_12-cuda-aarch64-12_9" + runs_on: "linux.arm64.2xlarge" - desired_python: "3.12" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cuda-aarch64-13_0" runs_on: "linux.arm64.2xlarge" - desired_python: "3.12" @@ -492,7 +617,7 @@ jobs: gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cuda-aarch64-13_2" runs_on: "linux.arm64.2xlarge" - desired_python: "3.13" @@ -500,7 +625,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cpu-aarch64" runs_on: "linux.arm64.2xlarge" - desired_python: "3.13" @@ -508,15 +633,23 @@ jobs: gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cuda-aarch64-12_6" runs_on: "linux.arm64.2xlarge" + - desired_python: "3.13" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_13-cuda-aarch64-12_9" + runs_on: "linux.arm64.2xlarge" - desired_python: "3.13" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cuda-aarch64-13_0" runs_on: "linux.arm64.2xlarge" - desired_python: "3.13" @@ -524,7 +657,7 @@ jobs: gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cuda-aarch64-13_2" runs_on: "linux.arm64.2xlarge" - desired_python: "3.14" @@ -532,7 +665,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cpu-aarch64" runs_on: "linux.arm64.2xlarge" - desired_python: "3.14" @@ -540,15 +673,23 @@ jobs: gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cuda-aarch64-12_6" runs_on: "linux.arm64.2xlarge" + - desired_python: "3.14" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_14-cuda-aarch64-12_9" + runs_on: "linux.arm64.2xlarge" - desired_python: "3.14" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cuda-aarch64-13_0" runs_on: "linux.arm64.2xlarge" - desired_python: "3.14" @@ -556,7 +697,7 @@ jobs: gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cuda-aarch64-13_2" runs_on: "linux.arm64.2xlarge" - desired_python: "3.14t" @@ -564,7 +705,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cpu-aarch64" runs_on: "linux.arm64.2xlarge" - desired_python: "3.14t" @@ -572,15 +713,23 @@ jobs: gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cuda-aarch64-12_6" runs_on: "linux.arm64.2xlarge" + - desired_python: "3.14t" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_14t-cuda-aarch64-12_9" + runs_on: "linux.arm64.2xlarge" - desired_python: "3.14t" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cuda-aarch64-13_0" runs_on: "linux.arm64.2xlarge" - desired_python: "3.14t" @@ -588,7 +737,7 @@ jobs: gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cuda-aarch64-13_2" runs_on: "linux.arm64.2xlarge" - desired_python: "3.15" @@ -596,7 +745,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cpu-aarch64" runs_on: "linux.arm64.2xlarge" - desired_python: "3.15" @@ -604,15 +753,23 @@ jobs: gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cuda-aarch64-12_6" runs_on: "linux.arm64.2xlarge" + - desired_python: "3.15" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_15-cuda-aarch64-12_9" + runs_on: "linux.arm64.2xlarge" - desired_python: "3.15" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cuda-aarch64-13_0" runs_on: "linux.arm64.2xlarge" - desired_python: "3.15" @@ -620,7 +777,7 @@ jobs: gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cuda-aarch64-13_2" runs_on: "linux.arm64.2xlarge" - desired_python: "3.15t" @@ -628,7 +785,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cpu-aarch64" runs_on: "linux.arm64.2xlarge" - desired_python: "3.15t" @@ -636,15 +793,23 @@ jobs: gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cuda-aarch64-12_6" runs_on: "linux.arm64.2xlarge" + - desired_python: "3.15t" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_15t-cuda-aarch64-12_9" + runs_on: "linux.arm64.2xlarge" - desired_python: "3.15t" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cuda-aarch64-13_0" runs_on: "linux.arm64.2xlarge" - desired_python: "3.15t" @@ -652,7 +817,7 @@ jobs: gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cuda-aarch64-13_2" runs_on: "linux.arm64.2xlarge" with: @@ -679,7 +844,7 @@ jobs: permissions: id-token: write contents: read - needs: [manywheel-cpu-aarch64-build, manywheel-cuda-aarch64-cu126-build, manywheel-cuda-aarch64-cu130-build, manywheel-cuda-aarch64-cu132-build, manywheel-test] + needs: [manywheel-cpu-aarch64-build, manywheel-cuda-aarch64-cu126-build, manywheel-cuda-aarch64-cu129-build, manywheel-cuda-aarch64-cu130-build, manywheel-cuda-aarch64-cu132-build, manywheel-test] uses: ./.github/workflows/_binary-upload.yml strategy: fail-fast: false @@ -690,224 +855,280 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cpu-aarch64" - desired_python: "3.10" desired_cuda: "cu126" gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cuda-aarch64-12_6" + - desired_python: "3.10" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_10-cuda-aarch64-12_9" - desired_python: "3.10" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cuda-aarch64-13_0" - desired_python: "3.10" desired_cuda: "cu132" gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cuda-aarch64-13_2" - desired_python: "3.11" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cpu-aarch64" - desired_python: "3.11" desired_cuda: "cu126" gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cuda-aarch64-12_6" + - desired_python: "3.11" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_11-cuda-aarch64-12_9" - desired_python: "3.11" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cuda-aarch64-13_0" - desired_python: "3.11" desired_cuda: "cu132" gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cuda-aarch64-13_2" - desired_python: "3.12" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cpu-aarch64" - desired_python: "3.12" desired_cuda: "cu126" gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cuda-aarch64-12_6" + - desired_python: "3.12" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_12-cuda-aarch64-12_9" - desired_python: "3.12" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cuda-aarch64-13_0" - desired_python: "3.12" desired_cuda: "cu132" gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cuda-aarch64-13_2" - desired_python: "3.13" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cpu-aarch64" - desired_python: "3.13" desired_cuda: "cu126" gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cuda-aarch64-12_6" + - desired_python: "3.13" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_13-cuda-aarch64-12_9" - desired_python: "3.13" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cuda-aarch64-13_0" - desired_python: "3.13" desired_cuda: "cu132" gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cuda-aarch64-13_2" - desired_python: "3.14" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cpu-aarch64" - desired_python: "3.14" desired_cuda: "cu126" gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cuda-aarch64-12_6" + - desired_python: "3.14" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_14-cuda-aarch64-12_9" - desired_python: "3.14" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cuda-aarch64-13_0" - desired_python: "3.14" desired_cuda: "cu132" gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cuda-aarch64-13_2" - desired_python: "3.14t" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cpu-aarch64" - desired_python: "3.14t" desired_cuda: "cu126" gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cuda-aarch64-12_6" + - desired_python: "3.14t" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_14t-cuda-aarch64-12_9" - desired_python: "3.14t" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cuda-aarch64-13_0" - desired_python: "3.14t" desired_cuda: "cu132" gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cuda-aarch64-13_2" - desired_python: "3.15" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cpu-aarch64" - desired_python: "3.15" desired_cuda: "cu126" gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cuda-aarch64-12_6" + - desired_python: "3.15" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_15-cuda-aarch64-12_9" - desired_python: "3.15" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cuda-aarch64-13_0" - desired_python: "3.15" desired_cuda: "cu132" gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cuda-aarch64-13_2" - desired_python: "3.15t" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu-aarch64" docker_image: "manylinux2_28_aarch64-builder" - docker_image_tag_prefix: "cpu-aarch64" + docker_image_tag_prefix: "cpu-aarch64-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cpu-aarch64" - desired_python: "3.15t" desired_cuda: "cu126" gpu_arch_version: "12.6-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cuda-aarch64-12_6" + - desired_python: "3.15t" + desired_cuda: "cu129" + gpu_arch_version: "12.9-aarch64" + gpu_arch_type: "cuda-aarch64" + docker_image: "manylinuxaarch64-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_15t-cuda-aarch64-12_9" - desired_python: "3.15t" desired_cuda: "cu130" gpu_arch_version: "13.0-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cuda-aarch64-13_0" - desired_python: "3.15t" desired_cuda: "cu132" gpu_arch_version: "13.2-aarch64" gpu_arch_type: "cuda-aarch64" docker_image: "manylinuxaarch64-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cuda-aarch64-13_2" with: PYTORCH_ROOT: /pytorch diff --git a/.github/workflows/generated-linux-binary-manywheel-nightly.yml b/.github/workflows/generated-linux-binary-manywheel-nightly.yml index f18eb0fcacaac..8e24c76396f62 100644 --- a/.github/workflows/generated-linux-binary-manywheel-nightly.yml +++ b/.github/workflows/generated-linux-binary-manywheel-nightly.yml @@ -41,7 +41,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -53,16 +53,16 @@ jobs: if: ${{ github.repository_owner == 'pytorch' }} needs: get-label-type runs-on: "${{ needs.get-label-type.outputs.label-type }}linux.12xlarge.memory.ephemeral" - timeout-minutes: 280 + timeout-minutes: 400 container: - image: pytorch/manylinux2_28-builder:cpu + image: pytorch/manylinux2_28-builder:cpu-78e737ad29420ffc4800e677c51e2a852caf8359 env: PYTORCH_ROOT: ${{ github.workspace }} PACKAGE_TYPE: manywheel DESIRED_CUDA: cpu GPU_ARCH_VERSION: "" GPU_ARCH_TYPE: cpu - DOCKER_IMAGE: pytorch/manylinux2_28-builder:cpu + DOCKER_IMAGE: pytorch/manylinux2_28-builder:cpu-78e737ad29420ffc4800e677c51e2a852caf8359 SKIP_ALL_TESTS: 1 DESIRED_PYTHONS: "3.10 3.11 3.12 3.13 3.14 3.14t 3.15 3.15t" BUILD_NAME_PREFIX: "manywheel-py" @@ -74,7 +74,10 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} - fetch-depth: 2 + # Full fetch on tag pushes so the release tag is visible to + # `git describe --tags --exact`; nightlies stay shallow for speed. + fetch-depth: ${{ github.ref_type != 'tag' && 2 || 0 }} + fetch-tags: ${{ github.ref_type == 'tag' }} submodules: recursive show-progress: false - name: Populate binary env @@ -138,16 +141,16 @@ jobs: if: ${{ github.repository_owner == 'pytorch' }} needs: get-label-type runs-on: "${{ needs.get-label-type.outputs.label-type }}linux.12xlarge.memory.ephemeral" - timeout-minutes: 280 + timeout-minutes: 400 container: - image: pytorch/manylinux2_28-builder:cuda12.6 + image: pytorch/manylinux2_28-builder:cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359 env: PYTORCH_ROOT: ${{ github.workspace }} PACKAGE_TYPE: manywheel DESIRED_CUDA: cu126 GPU_ARCH_VERSION: "12.6" GPU_ARCH_TYPE: cuda - DOCKER_IMAGE: pytorch/manylinux2_28-builder:cuda12.6 + DOCKER_IMAGE: pytorch/manylinux2_28-builder:cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359 SKIP_ALL_TESTS: 1 DESIRED_PYTHONS: "3.10 3.11 3.12 3.13 3.14 3.14t 3.15 3.15t" BUILD_NAME_PREFIX: "manywheel-py" @@ -160,7 +163,10 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} - fetch-depth: 2 + # Full fetch on tag pushes so the release tag is visible to + # `git describe --tags --exact`; nightlies stay shallow for speed. + fetch-depth: ${{ github.ref_type != 'tag' && 2 || 0 }} + fetch-tags: ${{ github.ref_type == 'tag' }} submodules: recursive show-progress: false - name: Populate binary env @@ -219,26 +225,115 @@ jobs: if-no-files-found: error path: ${{ runner.temp }}/artifacts/manywheel-py3_15t-cuda12_6/* + manywheel-cuda-cu129-build: + name: manywheel-cuda-cu129-build + if: ${{ github.repository_owner == 'pytorch' }} + needs: get-label-type + runs-on: "${{ needs.get-label-type.outputs.label-type }}linux.12xlarge.memory.ephemeral" + timeout-minutes: 400 + container: + image: pytorch/manylinux2_28-builder:cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359 + env: + PYTORCH_ROOT: ${{ github.workspace }} + PACKAGE_TYPE: manywheel + DESIRED_CUDA: cu129 + GPU_ARCH_VERSION: "12.9" + GPU_ARCH_TYPE: cuda + DOCKER_IMAGE: pytorch/manylinux2_28-builder:cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359 + SKIP_ALL_TESTS: 1 + DESIRED_PYTHONS: "3.10 3.11 3.12 3.13 3.14 3.14t 3.15 3.15t" + BUILD_NAME_PREFIX: "manywheel-py" + BUILD_NAME_SUFFIX: "-cuda12_9" + PYTORCH_EXTRA_INSTALL_REQUIREMENTS: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==12.9.1; platform_system == 'Linux' | cuda-bindings>=12.9.4,<13; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu12==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu12==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu12==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu12==3.4.5; platform_system == 'Linux'" + steps: + - name: Configure git safe directory + run: git config --global --add safe.directory "$GITHUB_WORKSPACE" + - name: Checkout PyTorch + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} + # Full fetch on tag pushes so the release tag is visible to + # `git describe --tags --exact`; nightlies stay shallow for speed. + fetch-depth: ${{ github.ref_type != 'tag' && 2 || 0 }} + fetch-tags: ${{ github.ref_type == 'tag' }} + submodules: recursive + show-progress: false + - name: Populate binary env + shell: bash + run: | + export PYTORCH_FINAL_PACKAGE_DIR="${RUNNER_TEMP}/artifacts" + mkdir -p "${PYTORCH_FINAL_PACKAGE_DIR}" + echo "PYTORCH_FINAL_PACKAGE_DIR=${PYTORCH_FINAL_PACKAGE_DIR}" >> "${GITHUB_ENV}" + bash .ci/pytorch/binary_populate_env.sh + - name: Build all wheels + shell: bash + run: | + # shellcheck disable=SC1091 + source "${BINARY_ENV_FILE}" + bash .ci/manywheel/build_all.sh + # One artifact per built Python -- names must match what the test/upload + # matrix below downloads. + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_10-cuda12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_10-cuda12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_11-cuda12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_11-cuda12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_12-cuda12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_12-cuda12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_13-cuda12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_13-cuda12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_14-cuda12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_14-cuda12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_14t-cuda12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_14t-cuda12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_15-cuda12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_15-cuda12_9/* + - uses: actions/upload-artifact@v4.4.0 + with: + name: manywheel-py3_15t-cuda12_9 + if-no-files-found: error + path: ${{ runner.temp }}/artifacts/manywheel-py3_15t-cuda12_9/* + manywheel-cuda-cu130-build: name: manywheel-cuda-cu130-build if: ${{ github.repository_owner == 'pytorch' }} needs: get-label-type runs-on: "${{ needs.get-label-type.outputs.label-type }}linux.12xlarge.memory.ephemeral" - timeout-minutes: 280 + timeout-minutes: 400 container: - image: pytorch/manylinux2_28-builder:cuda13.0 + image: pytorch/manylinux2_28-builder:cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359 env: PYTORCH_ROOT: ${{ github.workspace }} PACKAGE_TYPE: manywheel DESIRED_CUDA: cu130 GPU_ARCH_VERSION: "13.0" GPU_ARCH_TYPE: cuda - DOCKER_IMAGE: pytorch/manylinux2_28-builder:cuda13.0 + DOCKER_IMAGE: pytorch/manylinux2_28-builder:cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359 SKIP_ALL_TESTS: 1 DESIRED_PYTHONS: "3.10 3.11 3.12 3.13 3.14 3.14t 3.15 3.15t" BUILD_NAME_PREFIX: "manywheel-py" BUILD_NAME_SUFFIX: "-cuda13_0" - PYTORCH_EXTRA_INSTALL_REQUIREMENTS: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cufile,nvjitlink,nvtx]==13.0.2; platform_system == 'Linux' | nvidia-cublas>=13.1.0.3,<=13.1.1.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" + PYTORCH_EXTRA_INSTALL_REQUIREMENTS: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==13.0.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" steps: - name: Configure git safe directory run: git config --global --add safe.directory "$GITHUB_WORKSPACE" @@ -246,7 +341,10 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} - fetch-depth: 2 + # Full fetch on tag pushes so the release tag is visible to + # `git describe --tags --exact`; nightlies stay shallow for speed. + fetch-depth: ${{ github.ref_type != 'tag' && 2 || 0 }} + fetch-tags: ${{ github.ref_type == 'tag' }} submodules: recursive show-progress: false - name: Populate binary env @@ -310,16 +408,16 @@ jobs: if: ${{ github.repository_owner == 'pytorch' }} needs: get-label-type runs-on: "${{ needs.get-label-type.outputs.label-type }}linux.12xlarge.memory.ephemeral" - timeout-minutes: 280 + timeout-minutes: 400 container: - image: pytorch/manylinux2_28-builder:cuda13.2 + image: pytorch/manylinux2_28-builder:cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359 env: PYTORCH_ROOT: ${{ github.workspace }} PACKAGE_TYPE: manywheel DESIRED_CUDA: cu132 GPU_ARCH_VERSION: "13.2" GPU_ARCH_TYPE: cuda - DOCKER_IMAGE: pytorch/manylinux2_28-builder:cuda13.2 + DOCKER_IMAGE: pytorch/manylinux2_28-builder:cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359 SKIP_ALL_TESTS: 1 DESIRED_PYTHONS: "3.10 3.11 3.12 3.13 3.14 3.14t 3.15 3.15t" BUILD_NAME_PREFIX: "manywheel-py" @@ -332,7 +430,10 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} - fetch-depth: 2 + # Full fetch on tag pushes so the release tag is visible to + # `git describe --tags --exact`; nightlies stay shallow for speed. + fetch-depth: ${{ github.ref_type != 'tag' && 2 || 0 }} + fetch-tags: ${{ github.ref_type == 'tag' }} submodules: recursive show-progress: false - name: Populate binary env @@ -405,7 +506,7 @@ jobs: gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-rocm7_1" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -414,7 +515,7 @@ jobs: gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-rocm7_2" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -423,16 +524,16 @@ jobs: gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-xpu" - timeout_minutes: 280 + timeout_minutes: 400 pytorch_extra_install_requirements: "intel-cmplr-lib-rt==2026.0.0 | intel-cmplr-lib-ur==2026.0.0 | intel-cmplr-lic-rt==2026.0.0 | intel-sycl-rt==2026.0.0 | oneccl-devel==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | oneccl==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | impi-rt==2021.18.0; platform_system == 'Linux' and platform_machine == 'x86_64' | onemkl-license==2026.0.0 | onemkl-sycl-blas==2026.0.0 | onemkl-sycl-dft==2026.0.0 | onemkl-sycl-lapack==2026.0.0 | onemkl-sycl-rng==2026.0.0 | onemkl-sycl-sparse==2026.0.0 | dpcpp-cpp-rt==2026.0.0 | intel-opencl-rt==2026.0.0 | mkl==2026.0.0 | intel-openmp==2026.0.0 | tbb==2023.0.0 | tcmlib==1.5.0 | umf==1.1.0 | intel-pti==0.17.0 | pyzes==0.1.1; platform_system == 'Linux' and platform_machine == 'x86_64'" - desired_python: "3.11" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-rocm7_1" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -441,7 +542,7 @@ jobs: gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-rocm7_2" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -450,16 +551,16 @@ jobs: gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-xpu" - timeout_minutes: 280 + timeout_minutes: 400 pytorch_extra_install_requirements: "intel-cmplr-lib-rt==2026.0.0 | intel-cmplr-lib-ur==2026.0.0 | intel-cmplr-lic-rt==2026.0.0 | intel-sycl-rt==2026.0.0 | oneccl-devel==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | oneccl==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | impi-rt==2021.18.0; platform_system == 'Linux' and platform_machine == 'x86_64' | onemkl-license==2026.0.0 | onemkl-sycl-blas==2026.0.0 | onemkl-sycl-dft==2026.0.0 | onemkl-sycl-lapack==2026.0.0 | onemkl-sycl-rng==2026.0.0 | onemkl-sycl-sparse==2026.0.0 | dpcpp-cpp-rt==2026.0.0 | intel-opencl-rt==2026.0.0 | mkl==2026.0.0 | intel-openmp==2026.0.0 | tbb==2023.0.0 | tcmlib==1.5.0 | umf==1.1.0 | intel-pti==0.17.0 | pyzes==0.1.1; platform_system == 'Linux' and platform_machine == 'x86_64'" - desired_python: "3.12" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-rocm7_1" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -468,7 +569,7 @@ jobs: gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-rocm7_2" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -477,16 +578,16 @@ jobs: gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-xpu" - timeout_minutes: 280 + timeout_minutes: 400 pytorch_extra_install_requirements: "intel-cmplr-lib-rt==2026.0.0 | intel-cmplr-lib-ur==2026.0.0 | intel-cmplr-lic-rt==2026.0.0 | intel-sycl-rt==2026.0.0 | oneccl-devel==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | oneccl==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | impi-rt==2021.18.0; platform_system == 'Linux' and platform_machine == 'x86_64' | onemkl-license==2026.0.0 | onemkl-sycl-blas==2026.0.0 | onemkl-sycl-dft==2026.0.0 | onemkl-sycl-lapack==2026.0.0 | onemkl-sycl-rng==2026.0.0 | onemkl-sycl-sparse==2026.0.0 | dpcpp-cpp-rt==2026.0.0 | intel-opencl-rt==2026.0.0 | mkl==2026.0.0 | intel-openmp==2026.0.0 | tbb==2023.0.0 | tcmlib==1.5.0 | umf==1.1.0 | intel-pti==0.17.0 | pyzes==0.1.1; platform_system == 'Linux' and platform_machine == 'x86_64'" - desired_python: "3.13" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-rocm7_1" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -495,7 +596,7 @@ jobs: gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-rocm7_2" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -504,16 +605,16 @@ jobs: gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-xpu" - timeout_minutes: 280 + timeout_minutes: 400 pytorch_extra_install_requirements: "intel-cmplr-lib-rt==2026.0.0 | intel-cmplr-lib-ur==2026.0.0 | intel-cmplr-lic-rt==2026.0.0 | intel-sycl-rt==2026.0.0 | oneccl-devel==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | oneccl==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | impi-rt==2021.18.0; platform_system == 'Linux' and platform_machine == 'x86_64' | onemkl-license==2026.0.0 | onemkl-sycl-blas==2026.0.0 | onemkl-sycl-dft==2026.0.0 | onemkl-sycl-lapack==2026.0.0 | onemkl-sycl-rng==2026.0.0 | onemkl-sycl-sparse==2026.0.0 | dpcpp-cpp-rt==2026.0.0 | intel-opencl-rt==2026.0.0 | mkl==2026.0.0 | intel-openmp==2026.0.0 | tbb==2023.0.0 | tcmlib==1.5.0 | umf==1.1.0 | intel-pti==0.17.0 | pyzes==0.1.1; platform_system == 'Linux' and platform_machine == 'x86_64'" - desired_python: "3.14" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-rocm7_1" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -522,7 +623,7 @@ jobs: gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-rocm7_2" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -531,16 +632,16 @@ jobs: gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-xpu" - timeout_minutes: 280 + timeout_minutes: 400 pytorch_extra_install_requirements: "intel-cmplr-lib-rt==2026.0.0 | intel-cmplr-lib-ur==2026.0.0 | intel-cmplr-lic-rt==2026.0.0 | intel-sycl-rt==2026.0.0 | oneccl-devel==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | oneccl==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | impi-rt==2021.18.0; platform_system == 'Linux' and platform_machine == 'x86_64' | onemkl-license==2026.0.0 | onemkl-sycl-blas==2026.0.0 | onemkl-sycl-dft==2026.0.0 | onemkl-sycl-lapack==2026.0.0 | onemkl-sycl-rng==2026.0.0 | onemkl-sycl-sparse==2026.0.0 | dpcpp-cpp-rt==2026.0.0 | intel-opencl-rt==2026.0.0 | mkl==2026.0.0 | intel-openmp==2026.0.0 | tbb==2023.0.0 | tcmlib==1.5.0 | umf==1.1.0 | intel-pti==0.17.0 | pyzes==0.1.1; platform_system == 'Linux' and platform_machine == 'x86_64'" - desired_python: "3.14t" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-rocm7_1" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -549,7 +650,7 @@ jobs: gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-rocm7_2" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -558,16 +659,16 @@ jobs: gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-xpu" - timeout_minutes: 280 + timeout_minutes: 400 pytorch_extra_install_requirements: "intel-cmplr-lib-rt==2026.0.0 | intel-cmplr-lib-ur==2026.0.0 | intel-cmplr-lic-rt==2026.0.0 | intel-sycl-rt==2026.0.0 | oneccl-devel==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | oneccl==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | impi-rt==2021.18.0; platform_system == 'Linux' and platform_machine == 'x86_64' | onemkl-license==2026.0.0 | onemkl-sycl-blas==2026.0.0 | onemkl-sycl-dft==2026.0.0 | onemkl-sycl-lapack==2026.0.0 | onemkl-sycl-rng==2026.0.0 | onemkl-sycl-sparse==2026.0.0 | dpcpp-cpp-rt==2026.0.0 | intel-opencl-rt==2026.0.0 | mkl==2026.0.0 | intel-openmp==2026.0.0 | tbb==2023.0.0 | tcmlib==1.5.0 | umf==1.1.0 | intel-pti==0.17.0 | pyzes==0.1.1; platform_system == 'Linux' and platform_machine == 'x86_64'" - desired_python: "3.15" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-rocm7_1" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -576,7 +677,7 @@ jobs: gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-rocm7_2" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -585,16 +686,16 @@ jobs: gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-xpu" - timeout_minutes: 280 + timeout_minutes: 400 pytorch_extra_install_requirements: "intel-cmplr-lib-rt==2026.0.0 | intel-cmplr-lib-ur==2026.0.0 | intel-cmplr-lic-rt==2026.0.0 | intel-sycl-rt==2026.0.0 | oneccl-devel==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | oneccl==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | impi-rt==2021.18.0; platform_system == 'Linux' and platform_machine == 'x86_64' | onemkl-license==2026.0.0 | onemkl-sycl-blas==2026.0.0 | onemkl-sycl-dft==2026.0.0 | onemkl-sycl-lapack==2026.0.0 | onemkl-sycl-rng==2026.0.0 | onemkl-sycl-sparse==2026.0.0 | dpcpp-cpp-rt==2026.0.0 | intel-opencl-rt==2026.0.0 | mkl==2026.0.0 | intel-openmp==2026.0.0 | tbb==2023.0.0 | tcmlib==1.5.0 | umf==1.1.0 | intel-pti==0.17.0 | pyzes==0.1.1; platform_system == 'Linux' and platform_machine == 'x86_64'" - desired_python: "3.15t" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-rocm7_1" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -603,7 +704,7 @@ jobs: gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-rocm7_2" timeout_minutes: 420 pytorch_extra_install_requirements: "" @@ -612,9 +713,9 @@ jobs: gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-xpu" - timeout_minutes: 280 + timeout_minutes: 400 pytorch_extra_install_requirements: "intel-cmplr-lib-rt==2026.0.0 | intel-cmplr-lib-ur==2026.0.0 | intel-cmplr-lic-rt==2026.0.0 | intel-sycl-rt==2026.0.0 | oneccl-devel==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | oneccl==2022.0.0; platform_system == 'Linux' and platform_machine == 'x86_64' | impi-rt==2021.18.0; platform_system == 'Linux' and platform_machine == 'x86_64' | onemkl-license==2026.0.0 | onemkl-sycl-blas==2026.0.0 | onemkl-sycl-dft==2026.0.0 | onemkl-sycl-lapack==2026.0.0 | onemkl-sycl-rng==2026.0.0 | onemkl-sycl-sparse==2026.0.0 | dpcpp-cpp-rt==2026.0.0 | intel-opencl-rt==2026.0.0 | mkl==2026.0.0 | intel-openmp==2026.0.0 | tbb==2023.0.0 | tcmlib==1.5.0 | umf==1.1.0 | intel-pti==0.17.0 | pyzes==0.1.1; platform_system == 'Linux' and platform_machine == 'x86_64'" with: PYTORCH_ROOT: /pytorch @@ -639,7 +740,7 @@ jobs: manywheel-test: name: ${{ matrix.build_name }}-test if: ${{ github.repository_owner == 'pytorch' }} - needs: [get-label-type, manywheel-cpu-build, manywheel-cuda-cu126-build, manywheel-cuda-cu130-build, manywheel-cuda-cu132-build] + needs: [get-label-type, manywheel-cpu-build, manywheel-cuda-cu126-build, manywheel-cuda-cu129-build, manywheel-cuda-cu130-build, manywheel-cuda-cu132-build] uses: ./.github/workflows/_binary-test-linux.yml strategy: fail-fast: false @@ -650,7 +751,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cpu" runs_on: "linux.4xlarge" - desired_python: "3.10" @@ -658,15 +759,23 @@ jobs: gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cuda12_6" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" + - desired_python: "3.10" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_10-cuda12_9" + runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.10" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cuda13_0" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.10" @@ -674,7 +783,7 @@ jobs: gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cuda13_2" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.11" @@ -682,7 +791,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cpu" runs_on: "linux.4xlarge" - desired_python: "3.11" @@ -690,15 +799,23 @@ jobs: gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cuda12_6" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" + - desired_python: "3.11" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_11-cuda12_9" + runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.11" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cuda13_0" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.11" @@ -706,7 +823,7 @@ jobs: gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cuda13_2" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.12" @@ -714,7 +831,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cpu" runs_on: "linux.4xlarge" - desired_python: "3.12" @@ -722,15 +839,23 @@ jobs: gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cuda12_6" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" + - desired_python: "3.12" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_12-cuda12_9" + runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.12" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cuda13_0" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.12" @@ -738,7 +863,7 @@ jobs: gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cuda13_2" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.13" @@ -746,7 +871,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cpu" runs_on: "linux.4xlarge" - desired_python: "3.13" @@ -754,15 +879,23 @@ jobs: gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cuda12_6" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" + - desired_python: "3.13" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_13-cuda12_9" + runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.13" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cuda13_0" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.13" @@ -770,7 +903,7 @@ jobs: gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cuda13_2" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.14" @@ -778,7 +911,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cpu" runs_on: "linux.4xlarge" - desired_python: "3.14" @@ -786,15 +919,23 @@ jobs: gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cuda12_6" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" + - desired_python: "3.14" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_14-cuda12_9" + runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.14" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cuda13_0" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.14" @@ -802,7 +943,7 @@ jobs: gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cuda13_2" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.14t" @@ -810,7 +951,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cpu" runs_on: "linux.4xlarge" - desired_python: "3.14t" @@ -818,15 +959,23 @@ jobs: gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cuda12_6" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" + - desired_python: "3.14t" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_14t-cuda12_9" + runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.14t" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cuda13_0" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.14t" @@ -834,7 +983,7 @@ jobs: gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cuda13_2" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.15" @@ -842,7 +991,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cpu" runs_on: "linux.4xlarge" - desired_python: "3.15" @@ -850,15 +999,23 @@ jobs: gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cuda12_6" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" + - desired_python: "3.15" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_15-cuda12_9" + runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.15" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cuda13_0" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.15" @@ -866,7 +1023,7 @@ jobs: gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cuda13_2" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.15t" @@ -874,7 +1031,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cpu" runs_on: "linux.4xlarge" - desired_python: "3.15t" @@ -882,15 +1039,23 @@ jobs: gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cuda12_6" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" + - desired_python: "3.15t" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_15t-cuda12_9" + runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.15t" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cuda13_0" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" - desired_python: "3.15t" @@ -898,7 +1063,7 @@ jobs: gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cuda13_2" runs_on: "linux.g4dn.4xlarge.nvidia.gpu" with: @@ -933,112 +1098,112 @@ jobs: gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-rocm7_1" - desired_python: "3.10" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-rocm7_2" - desired_python: "3.11" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-rocm7_1" - desired_python: "3.11" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-rocm7_2" - desired_python: "3.12" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-rocm7_1" - desired_python: "3.12" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-rocm7_2" - desired_python: "3.13" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-rocm7_1" - desired_python: "3.13" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-rocm7_2" - desired_python: "3.14" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-rocm7_1" - desired_python: "3.14" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-rocm7_2" - desired_python: "3.14t" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-rocm7_1" - desired_python: "3.14t" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-rocm7_2" - desired_python: "3.15" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-rocm7_1" - desired_python: "3.15" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-rocm7_2" - desired_python: "3.15t" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-rocm7_1" - desired_python: "3.15t" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-rocm7_2" with: PYTORCH_ROOT: /pytorch @@ -1064,49 +1229,49 @@ jobs: desired_cuda: "xpu" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-xpu" - desired_python: "3.11" desired_cuda: "xpu" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-xpu" - desired_python: "3.12" desired_cuda: "xpu" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-xpu" - desired_python: "3.13" desired_cuda: "xpu" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-xpu" - desired_python: "3.14" desired_cuda: "xpu" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-xpu" - desired_python: "3.14t" desired_cuda: "xpu" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-xpu" - desired_python: "3.15" desired_cuda: "xpu" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-xpu" - desired_python: "3.15t" desired_cuda: "xpu" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-xpu" with: PYTORCH_ROOT: /pytorch @@ -1124,7 +1289,7 @@ jobs: permissions: id-token: write contents: read - needs: [manywheel-build, manywheel-cpu-build, manywheel-cuda-cu126-build, manywheel-cuda-cu130-build, manywheel-cuda-cu132-build, manywheel-test, manywheel-test-rocm, manywheel-test-xpu] + needs: [manywheel-build, manywheel-cpu-build, manywheel-cuda-cu126-build, manywheel-cuda-cu129-build, manywheel-cuda-cu130-build, manywheel-cuda-cu132-build, manywheel-test, manywheel-test-rocm, manywheel-test-xpu] uses: ./.github/workflows/_binary-upload.yml strategy: fail-fast: false @@ -1135,392 +1300,448 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cpu" - desired_python: "3.10" desired_cuda: "cu126" gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cuda12_6" + - desired_python: "3.10" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_10-cuda12_9" - desired_python: "3.10" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cuda13_0" - desired_python: "3.10" desired_cuda: "cu132" gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-cuda13_2" - desired_python: "3.10" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-rocm7_1" - desired_python: "3.10" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-rocm7_2" - desired_python: "3.10" desired_cuda: "xpu" gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_10-xpu" - desired_python: "3.11" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cpu" - desired_python: "3.11" desired_cuda: "cu126" gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cuda12_6" + - desired_python: "3.11" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_11-cuda12_9" - desired_python: "3.11" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cuda13_0" - desired_python: "3.11" desired_cuda: "cu132" gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-cuda13_2" - desired_python: "3.11" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-rocm7_1" - desired_python: "3.11" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-rocm7_2" - desired_python: "3.11" desired_cuda: "xpu" gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_11-xpu" - desired_python: "3.12" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cpu" - desired_python: "3.12" desired_cuda: "cu126" gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cuda12_6" + - desired_python: "3.12" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_12-cuda12_9" - desired_python: "3.12" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cuda13_0" - desired_python: "3.12" desired_cuda: "cu132" gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-cuda13_2" - desired_python: "3.12" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-rocm7_1" - desired_python: "3.12" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-rocm7_2" - desired_python: "3.12" desired_cuda: "xpu" gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_12-xpu" - desired_python: "3.13" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cpu" - desired_python: "3.13" desired_cuda: "cu126" gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cuda12_6" + - desired_python: "3.13" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_13-cuda12_9" - desired_python: "3.13" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cuda13_0" - desired_python: "3.13" desired_cuda: "cu132" gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-cuda13_2" - desired_python: "3.13" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-rocm7_1" - desired_python: "3.13" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-rocm7_2" - desired_python: "3.13" desired_cuda: "xpu" gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_13-xpu" - desired_python: "3.14" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cpu" - desired_python: "3.14" desired_cuda: "cu126" gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cuda12_6" + - desired_python: "3.14" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_14-cuda12_9" - desired_python: "3.14" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cuda13_0" - desired_python: "3.14" desired_cuda: "cu132" gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-cuda13_2" - desired_python: "3.14" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-rocm7_1" - desired_python: "3.14" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-rocm7_2" - desired_python: "3.14" desired_cuda: "xpu" gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14-xpu" - desired_python: "3.14t" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cpu" - desired_python: "3.14t" desired_cuda: "cu126" gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cuda12_6" + - desired_python: "3.14t" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_14t-cuda12_9" - desired_python: "3.14t" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cuda13_0" - desired_python: "3.14t" desired_cuda: "cu132" gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-cuda13_2" - desired_python: "3.14t" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-rocm7_1" - desired_python: "3.14t" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-rocm7_2" - desired_python: "3.14t" desired_cuda: "xpu" gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_14t-xpu" - desired_python: "3.15" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cpu" - desired_python: "3.15" desired_cuda: "cu126" gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cuda12_6" + - desired_python: "3.15" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_15-cuda12_9" - desired_python: "3.15" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cuda13_0" - desired_python: "3.15" desired_cuda: "cu132" gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-cuda13_2" - desired_python: "3.15" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-rocm7_1" - desired_python: "3.15" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-rocm7_2" - desired_python: "3.15" desired_cuda: "xpu" gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15-xpu" - desired_python: "3.15t" desired_cuda: "cpu" gpu_arch_version: "" gpu_arch_type: "cpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cpu" + docker_image_tag_prefix: "cpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cpu" - desired_python: "3.15t" desired_cuda: "cu126" gpu_arch_version: "12.6" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda12.6" + docker_image_tag_prefix: "cuda12.6-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cuda12_6" + - desired_python: "3.15t" + desired_cuda: "cu129" + gpu_arch_version: "12.9" + gpu_arch_type: "cuda" + docker_image: "manylinux2_28-builder" + docker_image_tag_prefix: "cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359" + build_name: "manywheel-py3_15t-cuda12_9" - desired_python: "3.15t" desired_cuda: "cu130" gpu_arch_version: "13.0" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.0" + docker_image_tag_prefix: "cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cuda13_0" - desired_python: "3.15t" desired_cuda: "cu132" gpu_arch_version: "13.2" gpu_arch_type: "cuda" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "cuda13.2" + docker_image_tag_prefix: "cuda13.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-cuda13_2" - desired_python: "3.15t" desired_cuda: "rocm7.1" gpu_arch_version: "7.1" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.1" + docker_image_tag_prefix: "rocm7.1-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-rocm7_1" - desired_python: "3.15t" desired_cuda: "rocm7.2" gpu_arch_version: "7.2" gpu_arch_type: "rocm" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "rocm7.2" + docker_image_tag_prefix: "rocm7.2-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-rocm7_2" - desired_python: "3.15t" desired_cuda: "xpu" gpu_arch_version: "" gpu_arch_type: "xpu" docker_image: "manylinux2_28-builder" - docker_image_tag_prefix: "xpu" + docker_image_tag_prefix: "xpu-78e737ad29420ffc4800e677c51e2a852caf8359" build_name: "manywheel-py3_15t-xpu" with: PYTORCH_ROOT: /pytorch @@ -1562,6 +1783,13 @@ jobs: libtorch_config: "release" source_wheel_build_name: "manywheel-py3_10-cuda12_6" build_name: "libtorch-cuda12_6-shared-with-deps-release" + - desired_cuda: "cu129" + gpu_arch_type: "cuda" + gpu_arch_version: "12.9" + libtorch_variant: "shared-with-deps" + libtorch_config: "release" + source_wheel_build_name: "manywheel-py3_10-cuda12_9" + build_name: "libtorch-cuda12_9-shared-with-deps-release" - desired_cuda: "cu130" gpu_arch_type: "cuda" gpu_arch_version: "13.0" @@ -1647,6 +1875,12 @@ jobs: libtorch_variant: "shared-with-deps" libtorch_config: "release" build_name: "libtorch-cuda12_6-shared-with-deps-release" + - desired_cuda: "cu129" + gpu_arch_type: "cuda" + gpu_arch_version: "12.9" + libtorch_variant: "shared-with-deps" + libtorch_config: "release" + build_name: "libtorch-cuda12_9-shared-with-deps-release" - desired_cuda: "cu130" gpu_arch_type: "cuda" gpu_arch_version: "13.0" diff --git a/.github/workflows/generated-linux-s390x-binary-manywheel-nightly.yml b/.github/workflows/generated-linux-s390x-binary-manywheel-nightly.yml index bd4308da063b9..14b7ee4efd21e 100644 --- a/.github/workflows/generated-linux-s390x-binary-manywheel-nightly.yml +++ b/.github/workflows/generated-linux-s390x-binary-manywheel-nightly.yml @@ -41,7 +41,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} diff --git a/.github/workflows/generated-macos-arm64-binary-wheel-nightly.yml b/.github/workflows/generated-macos-arm64-binary-wheel-nightly.yml index b83781d4f1eaa..a67621bae4d7d 100644 --- a/.github/workflows/generated-macos-arm64-binary-wheel-nightly.yml +++ b/.github/workflows/generated-macos-arm64-binary-wheel-nightly.yml @@ -39,7 +39,7 @@ jobs: wheel-build: if: ${{ github.repository_owner == 'pytorch' }} runs-on: macos-26-xlarge - timeout-minutes: 280 + timeout-minutes: 400 env: PYTORCH_ROOT: ${{ github.workspace }} PACKAGE_TYPE: wheel @@ -49,7 +49,7 @@ jobs: GPU_ARCH_TYPE: cpu SKIP_ALL_TESTS: 1 DESIRED_PYTHONS: "3.10 3.11 3.12 3.13 3.14 3.14t" - PYTORCH_EXTRA_INSTALL_REQUIREMENTS: cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cufile,nvjitlink,nvtx]==13.0.2; platform_system == 'Linux' | nvidia-cublas>=13.1.0.3,<=13.1.1.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux' + PYTORCH_EXTRA_INSTALL_REQUIREMENTS: cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==13.0.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux' steps: # BINARY_ENV_FILE needs ${RUNNER_TEMP} so it has to be populated in-step # rather than at the workflow env level. @@ -61,6 +61,10 @@ jobs: uses: actions/checkout@v4 with: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} + # Full fetch on tag pushes so the release tag is visible to + # `git describe --tags --exact`; nightlies stay shallow for speed. + fetch-depth: ${{ github.ref_type != 'tag' && 1 || 0 }} + fetch-tags: ${{ github.ref_type == 'tag' }} submodules: recursive show-progress: false - name: Clean PyTorch checkout @@ -71,7 +75,7 @@ jobs: run: | "${PYTORCH_ROOT}/.ci/wheel/install_libomp.sh" - name: Install uv - uses: pytorch/test-infra/.github/actions/setup-uv@main + uses: pytorch/test-infra/.github/actions/setup-uv@release/2.13 with: # enable-cache persists ~/.cache/uv across nightlies (keyed on the # workflow file hash by default); a warm cache makes the subsequent diff --git a/.github/workflows/generated-windows-arm64-binary-libtorch-debug-nightly.yml b/.github/workflows/generated-windows-arm64-binary-libtorch-debug-nightly.yml index 709d9549987cd..b092e242f0980 100644 --- a/.github/workflows/generated-windows-arm64-binary-libtorch-debug-nightly.yml +++ b/.github/workflows/generated-windows-arm64-binary-libtorch-debug-nightly.yml @@ -41,7 +41,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} diff --git a/.github/workflows/generated-windows-arm64-binary-wheel-nightly.yml b/.github/workflows/generated-windows-arm64-binary-wheel-nightly.yml index a393721a46ae4..8df4c8e34811e 100644 --- a/.github/workflows/generated-windows-arm64-binary-wheel-nightly.yml +++ b/.github/workflows/generated-windows-arm64-binary-wheel-nightly.yml @@ -42,7 +42,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -263,7 +263,7 @@ jobs: R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }} R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }} R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }} - libtorch-cpu-shared-with-deps-release-extract: + libtorch-arm64-cpu-shared-with-deps-release-extract: if: ${{ github.repository_owner == 'pytorch' }} needs: - wheel-build @@ -295,20 +295,21 @@ jobs: --output-dir "${{ runner.temp }}/libtorch_output" \ --platform windows \ --desired-cuda "$DESIRED_CUDA" \ - --libtorch-variant "$LIBTORCH_VARIANT" + --libtorch-variant "$LIBTORCH_VARIANT" \ + --arch arm64 - uses: actions/upload-artifact@v4.4.0 if: always() with: - name: libtorch-cpu-shared-with-deps-release + name: libtorch-arm64-cpu-shared-with-deps-release retention-days: 14 if-no-files-found: error path: "${{ runner.temp }}/libtorch_output/" - libtorch-cpu-shared-with-deps-release-upload: # Uploading + libtorch-arm64-cpu-shared-with-deps-release-upload: # Uploading if: ${{ github.repository_owner == 'pytorch' }} permissions: id-token: write contents: read - needs: libtorch-cpu-shared-with-deps-release-extract + needs: libtorch-arm64-cpu-shared-with-deps-release-extract with: PYTORCH_ROOT: ${{ github.workspace }} PACKAGE_TYPE: libtorch @@ -316,7 +317,7 @@ jobs: GPU_ARCH_TYPE: cpu LIBTORCH_CONFIG: release LIBTORCH_VARIANT: shared-with-deps - build_name: libtorch-cpu-shared-with-deps-release + build_name: libtorch-arm64-cpu-shared-with-deps-release secrets: github-token: ${{ secrets.GITHUB_TOKEN }} R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }} diff --git a/.github/workflows/generated-windows-binary-libtorch-debug-nightly.yml b/.github/workflows/generated-windows-binary-libtorch-debug-nightly.yml index ee85a796a6f81..c0df3421fee5b 100644 --- a/.github/workflows/generated-windows-binary-libtorch-debug-nightly.yml +++ b/.github/workflows/generated-windows-binary-libtorch-debug-nightly.yml @@ -35,7 +35,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -120,7 +120,7 @@ jobs: echo "instance-type: $(get_ec2_metadata instance-type)" echo "system info $(uname -a)" - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 continue-on-error: true with: github-secret: ${{ secrets.GITHUB_TOKEN }} @@ -152,7 +152,6 @@ jobs: - name: Checkout PyTorch uses: actions/checkout@v4 with: - ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} submodules: recursive show-progress: false - name: Clean PyTorch checkout @@ -255,7 +254,7 @@ jobs: echo "instance-type: $(get_ec2_metadata instance-type)" echo "system info $(uname -a)" - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 continue-on-error: true with: github-secret: ${{ secrets.GITHUB_TOKEN }} @@ -287,7 +286,6 @@ jobs: - name: Checkout PyTorch uses: actions/checkout@v4 with: - ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} submodules: recursive show-progress: false - name: Clean PyTorch checkout diff --git a/.github/workflows/generated-windows-binary-wheel-nightly.yml b/.github/workflows/generated-windows-binary-wheel-nightly.yml index 220271334a505..22ed858719a46 100644 --- a/.github/workflows/generated-windows-binary-wheel-nightly.yml +++ b/.github/workflows/generated-windows-binary-wheel-nightly.yml @@ -36,7 +36,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -58,7 +58,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" build_name: "wheel-py3_10-cpu" - pytorch_extra_install_requirements: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cufile,nvjitlink,nvtx]==13.0.2; platform_system == 'Linux' | nvidia-cublas>=13.1.0.3,<=13.1.1.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" + pytorch_extra_install_requirements: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==13.0.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" - desired_python: "3.10" desired_cuda: "cu126" gpu_arch_version: "12.6" @@ -88,7 +88,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" build_name: "wheel-py3_11-cpu" - pytorch_extra_install_requirements: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cufile,nvjitlink,nvtx]==13.0.2; platform_system == 'Linux' | nvidia-cublas>=13.1.0.3,<=13.1.1.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" + pytorch_extra_install_requirements: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==13.0.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" - desired_python: "3.11" desired_cuda: "cu126" gpu_arch_version: "12.6" @@ -118,7 +118,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" build_name: "wheel-py3_12-cpu" - pytorch_extra_install_requirements: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cufile,nvjitlink,nvtx]==13.0.2; platform_system == 'Linux' | nvidia-cublas>=13.1.0.3,<=13.1.1.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" + pytorch_extra_install_requirements: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==13.0.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" - desired_python: "3.12" desired_cuda: "cu126" gpu_arch_version: "12.6" @@ -148,7 +148,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" build_name: "wheel-py3_13-cpu" - pytorch_extra_install_requirements: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cufile,nvjitlink,nvtx]==13.0.2; platform_system == 'Linux' | nvidia-cublas>=13.1.0.3,<=13.1.1.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" + pytorch_extra_install_requirements: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==13.0.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" - desired_python: "3.13" desired_cuda: "cu126" gpu_arch_version: "12.6" @@ -178,7 +178,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" build_name: "wheel-py3_14-cpu" - pytorch_extra_install_requirements: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cufile,nvjitlink,nvtx]==13.0.2; platform_system == 'Linux' | nvidia-cublas>=13.1.0.3,<=13.1.1.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" + pytorch_extra_install_requirements: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==13.0.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" - desired_python: "3.14" desired_cuda: "cu126" gpu_arch_version: "12.6" @@ -208,7 +208,7 @@ jobs: gpu_arch_version: "" gpu_arch_type: "cpu" build_name: "wheel-py3_14t-cpu" - pytorch_extra_install_requirements: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cufile,nvjitlink,nvtx]==13.0.2; platform_system == 'Linux' | nvidia-cublas>=13.1.0.3,<=13.1.1.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" + pytorch_extra_install_requirements: "cuda-toolkit[nvrtc,cudart,cupti,cufft,curand,cusolver,cusparse,cublas,cufile,nvjitlink,nvtx]==13.0.3; platform_system == 'Linux' | cuda-bindings>=13.0.3,<14; platform_system == 'Linux' and python_version < '3.15' | nvidia-cudnn-cu13==9.20.0.48; platform_system == 'Linux' | nvidia-cusparselt-cu13==0.8.1; platform_system == 'Linux' | nvidia-nccl-cu13==2.29.7; platform_system == 'Linux' | nvidia-nvshmem-cu13==3.4.5; platform_system == 'Linux'" - desired_python: "3.14t" desired_cuda: "cu126" gpu_arch_version: "12.6" @@ -267,7 +267,7 @@ jobs: echo "instance-type: $(get_ec2_metadata instance-type)" echo "system info $(uname -a)" - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 continue-on-error: true with: github-secret: ${{ secrets.GITHUB_TOKEN }} @@ -299,7 +299,6 @@ jobs: - name: Checkout PyTorch uses: actions/checkout@v4 with: - ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} submodules: recursive show-progress: false - name: Clean PyTorch checkout @@ -548,7 +547,7 @@ jobs: echo "instance-type: $(get_ec2_metadata instance-type)" echo "system info $(uname -a)" - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" - uses: pytorch/test-infra/.github/actions/setup-ssh@main + uses: pytorch/test-infra/.github/actions/setup-ssh@release/2.13 continue-on-error: true with: github-secret: ${{ secrets.GITHUB_TOKEN }} @@ -580,7 +579,6 @@ jobs: - name: Checkout PyTorch uses: actions/checkout@v4 with: - ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} submodules: recursive show-progress: false - name: Clean PyTorch checkout @@ -830,7 +828,8 @@ jobs: --output-dir "${{ runner.temp }}/libtorch_output" \ --platform windows \ --desired-cuda "$DESIRED_CUDA" \ - --libtorch-variant "$LIBTORCH_VARIANT" + --libtorch-variant "$LIBTORCH_VARIANT" \ + --arch x86_64 - uses: actions/upload-artifact@v4.4.0 if: always() with: @@ -890,7 +889,8 @@ jobs: --output-dir "${{ runner.temp }}/libtorch_output" \ --platform windows \ --desired-cuda "$DESIRED_CUDA" \ - --libtorch-variant "$LIBTORCH_VARIANT" + --libtorch-variant "$LIBTORCH_VARIANT" \ + --arch x86_64 - uses: actions/upload-artifact@v4.4.0 if: always() with: @@ -951,7 +951,8 @@ jobs: --output-dir "${{ runner.temp }}/libtorch_output" \ --platform windows \ --desired-cuda "$DESIRED_CUDA" \ - --libtorch-variant "$LIBTORCH_VARIANT" + --libtorch-variant "$LIBTORCH_VARIANT" \ + --arch x86_64 - uses: actions/upload-artifact@v4.4.0 if: always() with: @@ -1012,7 +1013,8 @@ jobs: --output-dir "${{ runner.temp }}/libtorch_output" \ --platform windows \ --desired-cuda "$DESIRED_CUDA" \ - --libtorch-variant "$LIBTORCH_VARIANT" + --libtorch-variant "$LIBTORCH_VARIANT" \ + --arch x86_64 - uses: actions/upload-artifact@v4.4.0 if: always() with: diff --git a/.github/workflows/h100-cutlass-backend.yml b/.github/workflows/h100-cutlass-backend.yml index 6079d33753dd9..942db22985387 100644 --- a/.github/workflows/h100-cutlass-backend.yml +++ b/.github/workflows/h100-cutlass-backend.yml @@ -28,7 +28,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} diff --git a/.github/workflows/h100-distributed.yml b/.github/workflows/h100-distributed.yml index 5a1c4c9fc3ffe..2abd4f00f6965 100644 --- a/.github/workflows/h100-distributed.yml +++ b/.github/workflows/h100-distributed.yml @@ -25,7 +25,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} diff --git a/.github/workflows/h100-symm-mem.yml b/.github/workflows/h100-symm-mem.yml index 263b5fc580c39..b1d43b1ae6b0a 100644 --- a/.github/workflows/h100-symm-mem.yml +++ b/.github/workflows/h100-symm-mem.yml @@ -25,7 +25,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} diff --git a/.github/workflows/inductor-micro-benchmark-x86.yml b/.github/workflows/inductor-micro-benchmark-x86.yml index 8d4619da13043..8f9fe66e5bbc8 100644 --- a/.github/workflows/inductor-micro-benchmark-x86.yml +++ b/.github/workflows/inductor-micro-benchmark-x86.yml @@ -21,7 +21,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-micro-benchmark.yml b/.github/workflows/inductor-micro-benchmark.yml index 507e0c37a65b7..b752788633c75 100644 --- a/.github/workflows/inductor-micro-benchmark.yml +++ b/.github/workflows/inductor-micro-benchmark.yml @@ -21,7 +21,7 @@ permissions: jobs: get-default-label-prefix: name: get-default-label-prefix - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-nightly.yml b/.github/workflows/inductor-nightly.yml index 998566b325762..22e4c200c05f7 100644 --- a/.github/workflows/inductor-nightly.yml +++ b/.github/workflows/inductor-nightly.yml @@ -24,7 +24,7 @@ permissions: jobs: get-default-label-prefix: name: get-default-label-prefix - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-pallas.yml b/.github/workflows/inductor-pallas.yml index c2d0924da11eb..cafcfd5ff5ec5 100644 --- a/.github/workflows/inductor-pallas.yml +++ b/.github/workflows/inductor-pallas.yml @@ -21,7 +21,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-perf-compare.yml b/.github/workflows/inductor-perf-compare.yml index 71585bff5086b..72714269be895 100644 --- a/.github/workflows/inductor-perf-compare.yml +++ b/.github/workflows/inductor-perf-compare.yml @@ -19,7 +19,7 @@ jobs: get-default-label-prefix: if: github.repository_owner == 'pytorch' name: get-default-label-prefix - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} diff --git a/.github/workflows/inductor-perf-test-b200.yml b/.github/workflows/inductor-perf-test-b200.yml index ede94e2f4616a..cbdc6aa5771d9 100644 --- a/.github/workflows/inductor-perf-test-b200.yml +++ b/.github/workflows/inductor-perf-test-b200.yml @@ -69,7 +69,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-perf-test-nightly-aarch64.yml b/.github/workflows/inductor-perf-test-nightly-aarch64.yml index 64cdda3d57223..ada81c481fbe7 100644 --- a/.github/workflows/inductor-perf-test-nightly-aarch64.yml +++ b/.github/workflows/inductor-perf-test-nightly-aarch64.yml @@ -64,7 +64,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-perf-test-nightly-h100.yml b/.github/workflows/inductor-perf-test-nightly-h100.yml index 9c54e5c9d5440..974b1d9796efb 100644 --- a/.github/workflows/inductor-perf-test-nightly-h100.yml +++ b/.github/workflows/inductor-perf-test-nightly-h100.yml @@ -84,7 +84,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-perf-test-nightly-rocm-mi300.yml b/.github/workflows/inductor-perf-test-nightly-rocm-mi300.yml index e02ef6c578804..20fbad3dad12d 100644 --- a/.github/workflows/inductor-perf-test-nightly-rocm-mi300.yml +++ b/.github/workflows/inductor-perf-test-nightly-rocm-mi300.yml @@ -71,7 +71,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-perf-test-nightly-rocm-mi355.yml b/.github/workflows/inductor-perf-test-nightly-rocm-mi355.yml index 3c802c4e3d1f8..23cd2d9d85ef2 100644 --- a/.github/workflows/inductor-perf-test-nightly-rocm-mi355.yml +++ b/.github/workflows/inductor-perf-test-nightly-rocm-mi355.yml @@ -72,7 +72,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-perf-test-nightly-x86-zen.yml b/.github/workflows/inductor-perf-test-nightly-x86-zen.yml index a88d3d63ef50c..51e3ba3b7dc93 100644 --- a/.github/workflows/inductor-perf-test-nightly-x86-zen.yml +++ b/.github/workflows/inductor-perf-test-nightly-x86-zen.yml @@ -66,7 +66,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-perf-test-nightly-x86.yml b/.github/workflows/inductor-perf-test-nightly-x86.yml index 6c312586f27b5..073279f9b8dac 100644 --- a/.github/workflows/inductor-perf-test-nightly-x86.yml +++ b/.github/workflows/inductor-perf-test-nightly-x86.yml @@ -66,7 +66,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-perf-test-nightly-xpu.yml b/.github/workflows/inductor-perf-test-nightly-xpu.yml index 70ca8f8a5b44b..e0e96f7350a7c 100644 --- a/.github/workflows/inductor-perf-test-nightly-xpu.yml +++ b/.github/workflows/inductor-perf-test-nightly-xpu.yml @@ -71,7 +71,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-perf-test-nightly.yml b/.github/workflows/inductor-perf-test-nightly.yml index 0ea55510a783c..6721362660ab0 100644 --- a/.github/workflows/inductor-perf-test-nightly.yml +++ b/.github/workflows/inductor-perf-test-nightly.yml @@ -69,7 +69,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-periodic.yml b/.github/workflows/inductor-periodic.yml index 9450e2de36184..f7f9d69879468 100644 --- a/.github/workflows/inductor-periodic.yml +++ b/.github/workflows/inductor-periodic.yml @@ -23,7 +23,7 @@ permissions: jobs: get-default-label-prefix: name: get-default-label-prefix - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-rocm-mi200.yml b/.github/workflows/inductor-rocm-mi200.yml index 52a44fefb0dd1..cca302241b23b 100644 --- a/.github/workflows/inductor-rocm-mi200.yml +++ b/.github/workflows/inductor-rocm-mi200.yml @@ -22,7 +22,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-rocm-mi300.yml b/.github/workflows/inductor-rocm-mi300.yml index 0b196b4a214b9..cdcb60f50c138 100644 --- a/.github/workflows/inductor-rocm-mi300.yml +++ b/.github/workflows/inductor-rocm-mi300.yml @@ -27,7 +27,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-rocm-mi355.yml b/.github/workflows/inductor-rocm-mi355.yml index 7f368e84a401f..203e25e7b2729 100644 --- a/.github/workflows/inductor-rocm-mi355.yml +++ b/.github/workflows/inductor-rocm-mi355.yml @@ -29,7 +29,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor-unittest.yml b/.github/workflows/inductor-unittest.yml index 1a0f490e14c75..3b0cfeef54a77 100644 --- a/.github/workflows/inductor-unittest.yml +++ b/.github/workflows/inductor-unittest.yml @@ -23,7 +23,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/inductor.yml b/.github/workflows/inductor.yml index b53f6fd52ff19..5848732c0f23b 100644 --- a/.github/workflows/inductor.yml +++ b/.github/workflows/inductor.yml @@ -36,7 +36,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/lint-bc.yml b/.github/workflows/lint-bc.yml index e0de9ede35084..785b5ff8d90e4 100644 --- a/.github/workflows/lint-bc.yml +++ b/.github/workflows/lint-bc.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Run BC Lint Action - uses: pytorch/test-infra/.github/actions/bc-lint@main + uses: pytorch/test-infra/.github/actions/bc-lint@release/2.13 with: repo: ${{ github.event.pull_request.head.repo.full_name }} base_sha: ${{ github.event.pull_request.base.sha }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index cd244274039d5..a17a9ca16a1c5 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -22,7 +22,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -144,7 +144,7 @@ jobs: if: ${{ github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'skip-pr-sanity-checks') && github.repository_owner == 'pytorch' }} steps: - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: submodules: false fetch-depth: -1 @@ -165,7 +165,7 @@ jobs: docker-image: ghcr.io/pytorch/test-infra:cpu-x86_64-810d48d script: | # Regenerate workflows - .github/scripts/generate_ci_workflows.py + RELEASE_VERSION_TAG=2.13 .github/scripts/generate_ci_workflows.py RC=0 # Assert that regenerating the workflows didn't change them @@ -239,7 +239,7 @@ jobs: runs-on: linux.24_04.4x steps: - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: submodules: false fetch-depth: 1 @@ -276,7 +276,7 @@ jobs: # [see note: pytorch repo ref] # deep clone (fetch-depth 0) required, to allow us to use git log - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: submodules: false fetch-depth: 1 @@ -335,7 +335,7 @@ jobs: if: github.event_name == 'pull_request' && github.repository_owner == 'pytorch' steps: - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: submodules: false fetch-depth: 0 diff --git a/.github/workflows/llm_td_retrieval.yml b/.github/workflows/llm_td_retrieval.yml index 23416b9b0627f..b75306a49c928 100644 --- a/.github/workflows/llm_td_retrieval.yml +++ b/.github/workflows/llm_td_retrieval.yml @@ -12,7 +12,7 @@ jobs: name: get-label-type # Don't run on forked repos if: github.repository_owner == 'pytorch' - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -27,7 +27,7 @@ jobs: needs: get-label-type steps: - name: Setup Linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 - name: Clone CodeLlama uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -109,5 +109,5 @@ jobs: AWS_REGION: "" - name: Teardown Linux - uses: pytorch/test-infra/.github/actions/teardown-linux@main + uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.13 if: always() diff --git a/.github/workflows/nightly-s3-uploads.yml b/.github/workflows/nightly-s3-uploads.yml index acf3504dec9ca..d967b60256ae7 100644 --- a/.github/workflows/nightly-s3-uploads.yml +++ b/.github/workflows/nightly-s3-uploads.yml @@ -23,7 +23,7 @@ jobs: environment: upload-stats steps: - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: fetch-depth: 1 submodules: false diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index f5e3f5a359e63..a11daae7b89d4 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -26,7 +26,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} @@ -168,7 +168,7 @@ jobs: if: github.repository_owner == 'pytorch' && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') steps: - name: "${{ matrix.repo-owner }}/${{ matrix.repo-name }} update-commit-hash" - uses: pytorch/test-infra/.github/actions/update-commit-hash@main + uses: pytorch/test-infra/.github/actions/update-commit-hash@release/2.13 with: repo-owner: ${{ matrix.repo-owner }} repo-name: ${{ matrix.repo-name }} diff --git a/.github/workflows/operator_benchmark.yml b/.github/workflows/operator_benchmark.yml index 977af370a38f7..a1805e36bf991 100644 --- a/.github/workflows/operator_benchmark.yml +++ b/.github/workflows/operator_benchmark.yml @@ -33,7 +33,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/operator_microbenchmark.yml b/.github/workflows/operator_microbenchmark.yml index 892dfe49c2aa7..857b55d598fc5 100644 --- a/.github/workflows/operator_microbenchmark.yml +++ b/.github/workflows/operator_microbenchmark.yml @@ -22,7 +22,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/operator_microbenchmark_compare.yml b/.github/workflows/operator_microbenchmark_compare.yml index 2e7a771ecc170..0c336ae76f903 100644 --- a/.github/workflows/operator_microbenchmark_compare.yml +++ b/.github/workflows/operator_microbenchmark_compare.yml @@ -39,7 +39,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: github.repository_owner == 'pytorch' with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/periodic-rocm-mi200.yml b/.github/workflows/periodic-rocm-mi200.yml index 720ce8effd973..3b0f6911876c5 100644 --- a/.github/workflows/periodic-rocm-mi200.yml +++ b/.github/workflows/periodic-rocm-mi200.yml @@ -32,7 +32,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/periodic-rocm-mi300.yml b/.github/workflows/periodic-rocm-mi300.yml index cfbe99812d8f6..be68b08478882 100644 --- a/.github/workflows/periodic-rocm-mi300.yml +++ b/.github/workflows/periodic-rocm-mi300.yml @@ -32,7 +32,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/periodic-rocm-mi355.yml b/.github/workflows/periodic-rocm-mi355.yml index 67d46683f13de..71e0277e10eef 100644 --- a/.github/workflows/periodic-rocm-mi355.yml +++ b/.github/workflows/periodic-rocm-mi355.yml @@ -36,7 +36,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/periodic.yml b/.github/workflows/periodic.yml index 66931690efcc2..9c230137e32a7 100644 --- a/.github/workflows/periodic.yml +++ b/.github/workflows/periodic.yml @@ -38,7 +38,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/pull.yml b/.github/workflows/pull.yml index b17775be2d3db..16b6532284e5a 100644 --- a/.github/workflows/pull.yml +++ b/.github/workflows/pull.yml @@ -56,7 +56,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/riscv64.yml b/.github/workflows/riscv64.yml index 40212496ec377..f3354dd5178ed 100644 --- a/.github/workflows/riscv64.yml +++ b/.github/workflows/riscv64.yml @@ -18,7 +18,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/rocm-mi200.yml b/.github/workflows/rocm-mi200.yml index eb6923066e456..23035fd9d1d96 100644 --- a/.github/workflows/rocm-mi200.yml +++ b/.github/workflows/rocm-mi200.yml @@ -31,7 +31,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/rocm-mi300.yml b/.github/workflows/rocm-mi300.yml index 95eef38c17981..b1973d74f8414 100644 --- a/.github/workflows/rocm-mi300.yml +++ b/.github/workflows/rocm-mi300.yml @@ -27,7 +27,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/rocm-mi355.yml b/.github/workflows/rocm-mi355.yml index 14ee957828b65..951e62c521a93 100644 --- a/.github/workflows/rocm-mi355.yml +++ b/.github/workflows/rocm-mi355.yml @@ -28,7 +28,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/rocm-navi31.yml b/.github/workflows/rocm-navi31.yml index 7452762a43bfb..fceeb9307b403 100644 --- a/.github/workflows/rocm-navi31.yml +++ b/.github/workflows/rocm-navi31.yml @@ -28,7 +28,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/rocm-nightly.yml b/.github/workflows/rocm-nightly.yml index 7e1093fa8ae2c..e7feee0197fe8 100644 --- a/.github/workflows/rocm-nightly.yml +++ b/.github/workflows/rocm-nightly.yml @@ -28,7 +28,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/slow-rocm-mi200.yml b/.github/workflows/slow-rocm-mi200.yml index 8444e8eb91d90..3715b1b3d8bd1 100644 --- a/.github/workflows/slow-rocm-mi200.yml +++ b/.github/workflows/slow-rocm-mi200.yml @@ -36,7 +36,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/slow.yml b/.github/workflows/slow.yml index cf0066ab61db5..2b9f76f7c21c9 100644 --- a/.github/workflows/slow.yml +++ b/.github/workflows/slow.yml @@ -36,7 +36,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/target-determination-indexer.yml b/.github/workflows/target-determination-indexer.yml index 69e5b70c893bc..1566e62068452 100644 --- a/.github/workflows/target-determination-indexer.yml +++ b/.github/workflows/target-determination-indexer.yml @@ -13,7 +13,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -26,14 +26,14 @@ jobs: environment: target-determinator-env steps: - name: Setup Linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 - name: Login to ECR uses: ./.github/actions/ecr-login - name: Calculate docker image id: calculate-docker-image - uses: pytorch/test-infra/.github/actions/calculate-docker-image@main + uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.13 with: docker-image-name: ci-image:pytorch-linux-jammy-cuda13.0-cudnn9-py3-gcc11 working-directory: . @@ -48,13 +48,13 @@ jobs: echo "docker pull ghcr.io/pytorch/ci-image:${tag/:/-}" - name: Pull docker image - uses: pytorch/test-infra/.github/actions/pull-docker-image@main + uses: pytorch/test-infra/.github/actions/pull-docker-image@release/2.13 with: docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }} - name: Install nvidia driver, nvidia-docker runtime, set GPU_FLAG id: install-nvidia-driver - uses: pytorch/test-infra/.github/actions/setup-nvidia@main + uses: pytorch/test-infra/.github/actions/setup-nvidia@release/2.13 - name: Clone CodeLlama uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -152,7 +152,7 @@ jobs: "s3://target-determinator-assets/indexes/latest/${ZIP_NAME}" - name: Teardown Linux - uses: pytorch/test-infra/.github/actions/teardown-linux@main + uses: pytorch/test-infra/.github/actions/teardown-linux@release/2.13 if: always() concurrency: diff --git a/.github/workflows/target_determination.yml b/.github/workflows/target_determination.yml index 1e2cd6668ff71..854e97e4e2424 100644 --- a/.github/workflows/target_determination.yml +++ b/.github/workflows/target_determination.yml @@ -9,7 +9,7 @@ jobs: name: get-label-type # Don't run on forked repos if: github.repository_owner == 'pytorch' - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -23,7 +23,7 @@ jobs: needs: get-label-type steps: - name: Setup Linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: submodules: false diff --git a/.github/workflows/test-b200.yml b/.github/workflows/test-b200.yml index 49433ab0f0c2e..5cea8fe3443a5 100644 --- a/.github/workflows/test-b200.yml +++ b/.github/workflows/test-b200.yml @@ -42,7 +42,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} diff --git a/.github/workflows/test-check-binary.yml b/.github/workflows/test-check-binary.yml index 883b2d253aa8f..e45a08c8e5a30 100644 --- a/.github/workflows/test-check-binary.yml +++ b/.github/workflows/test-check-binary.yml @@ -15,7 +15,7 @@ jobs: check_binary_linux_cpu: if: github.repository_owner == 'pytorch' name: Test check_binary.sh for Linux CPU - uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main + uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@release/2.13 with: docker-image: python:3.11 docker-build-dir: "skip-docker-build" @@ -30,7 +30,7 @@ jobs: check_binary_linux_cuda: if: github.repository_owner == 'pytorch' name: Test check_binary.sh for Linux CUDA - uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main + uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@release/2.13 with: runner: linux.g4dn.4xlarge.nvidia.gpu docker-image: python:3.11 diff --git a/.github/workflows/test-h100.yml b/.github/workflows/test-h100.yml index c07b1f7c85b4c..320c40d8b8a04 100644 --- a/.github/workflows/test-h100.yml +++ b/.github/workflows/test-h100.yml @@ -29,7 +29,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} diff --git a/.github/workflows/tools-unit-tests.yml b/.github/workflows/tools-unit-tests.yml index 917d569aba9ce..76830d3e3e71e 100644 --- a/.github/workflows/tools-unit-tests.yml +++ b/.github/workflows/tools-unit-tests.yml @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout pytorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: submodules: true fetch-depth: 0 @@ -52,7 +52,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout pytorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: submodules: true fetch-depth: 0 diff --git a/.github/workflows/torchtitan.yml b/.github/workflows/torchtitan.yml index c47bb1ef13291..06d008a793123 100644 --- a/.github/workflows/torchtitan.yml +++ b/.github/workflows/torchtitan.yml @@ -21,7 +21,7 @@ permissions: jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} @@ -40,7 +40,7 @@ jobs: stable-cuda: ${{ steps.get.outputs.stable-cuda }} steps: - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: submodules: false fetch-depth: 1 diff --git a/.github/workflows/trunk-rocm-sandbox.yml b/.github/workflows/trunk-rocm-sandbox.yml index e8a090c4635be..606bc41052557 100644 --- a/.github/workflows/trunk-rocm-sandbox.yml +++ b/.github/workflows/trunk-rocm-sandbox.yml @@ -31,7 +31,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/trunk.yml b/.github/workflows/trunk.yml index 0a8c2f290e5f5..de76b3bf6c093 100644 --- a/.github/workflows/trunk.yml +++ b/.github/workflows/trunk.yml @@ -53,7 +53,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/tsan.yml b/.github/workflows/tsan.yml index 2d02292289a7f..c858ff8a396b8 100644 --- a/.github/workflows/tsan.yml +++ b/.github/workflows/tsan.yml @@ -20,7 +20,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} diff --git a/.github/workflows/unstable.yml b/.github/workflows/unstable.yml index b5955127d9fb3..c6ef5bced6475 100644 --- a/.github/workflows/unstable.yml +++ b/.github/workflows/unstable.yml @@ -46,7 +46,7 @@ jobs: get-label-type: name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 if: ${{ (github.event_name != 'schedule' || github.repository == 'pytorch/pytorch') && github.repository_owner == 'pytorch' }} with: triggering_actor: ${{ github.triggering_actor }} diff --git a/.github/workflows/update-viablestrict.yml b/.github/workflows/update-viablestrict.yml index 439a2d8c6457e..7aad427a578f7 100644 --- a/.github/workflows/update-viablestrict.yml +++ b/.github/workflows/update-viablestrict.yml @@ -18,7 +18,7 @@ jobs: environment: ${{ (github.event_name == 'schedule') && 'mergebot' || '' }} steps: - name: Update viable/strict - uses: pytorch/test-infra/.github/actions/update-viablestrict@main + uses: pytorch/test-infra/.github/actions/update-viablestrict@release/2.13 id: update_viablestrict with: repository: pytorch/pytorch diff --git a/.github/workflows/update_pytorch_labels.yml b/.github/workflows/update_pytorch_labels.yml index a1b8c38141ae8..8cb403b154401 100644 --- a/.github/workflows/update_pytorch_labels.yml +++ b/.github/workflows/update_pytorch_labels.yml @@ -17,7 +17,7 @@ jobs: contents: read steps: - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: fetch-depth: 1 submodules: false diff --git a/.github/workflows/upload-test-stats-while-running.yml b/.github/workflows/upload-test-stats-while-running.yml index 7771278448a49..7638b61108291 100644 --- a/.github/workflows/upload-test-stats-while-running.yml +++ b/.github/workflows/upload-test-stats-while-running.yml @@ -16,7 +16,7 @@ jobs: runs-on: linux.2xlarge steps: - name: Setup Linux - uses: pytorch/pytorch/.github/actions/setup-linux@main + uses: pytorch/pytorch/.github/actions/setup-linux@release/2.13 with: submodules: false diff --git a/.github/workflows/upload-test-stats.yml b/.github/workflows/upload-test-stats.yml index 8d274071662e1..3ec19664a9fa8 100644 --- a/.github/workflows/upload-test-stats.yml +++ b/.github/workflows/upload-test-stats.yml @@ -66,7 +66,7 @@ jobs: run: echo "${TRIGGERING_WORKFLOW}" - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 - name: Configure aws credentials uses: aws-actions/configure-aws-credentials@ececac1a45f3b08a01d2dd070d28d111c5fe6722 # v4.1.0 diff --git a/.github/workflows/upload-torch-dynamo-perf-stats.yml b/.github/workflows/upload-torch-dynamo-perf-stats.yml index 07471619437a2..bc41a4cc1e4d9 100644 --- a/.github/workflows/upload-torch-dynamo-perf-stats.yml +++ b/.github/workflows/upload-torch-dynamo-perf-stats.yml @@ -32,7 +32,7 @@ jobs: name: Upload dynamo performance stats for ${{ github.event.workflow_run.id }}, attempt ${{ github.event.workflow_run.run_attempt }} steps: - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: submodules: false fetch-depth: 1 diff --git a/.github/workflows/upload_test_stats_intermediate.yml b/.github/workflows/upload_test_stats_intermediate.yml index 5702562006055..f1b0d2eecf269 100644 --- a/.github/workflows/upload_test_stats_intermediate.yml +++ b/.github/workflows/upload_test_stats_intermediate.yml @@ -17,7 +17,7 @@ jobs: environment: upload-stats steps: - name: Checkout PyTorch - uses: pytorch/pytorch/.github/actions/checkout-pytorch@main + uses: pytorch/pytorch/.github/actions/checkout-pytorch@release/2.13 with: fetch-depth: 1 submodules: false diff --git a/.github/workflows/vllm-benchmark.yml b/.github/workflows/vllm-benchmark.yml index 8303ecb387f17..260edfad85dda 100644 --- a/.github/workflows/vllm-benchmark.yml +++ b/.github/workflows/vllm-benchmark.yml @@ -50,7 +50,7 @@ jobs: torch_cuda_arch_list: '8.0 8.9 9.0 10.0 12.0' build_environment: linux-jammy-cuda13.0-py3.12-gcc11 steps: - - uses: pytorch/test-infra/.github/actions/setup-uv@main + - uses: pytorch/test-infra/.github/actions/setup-uv@release/2.13 with: python-version: "3.12" activate-environment: "true" @@ -88,7 +88,7 @@ jobs: - name: Calculate docker image id: calculate-docker-image - uses: pytorch/test-infra/.github/actions/calculate-docker-image@main + uses: pytorch/test-infra/.github/actions/calculate-docker-image@release/2.13 with: working-directory: pytorch/pytorch docker-image-name: ci-image:pytorch-linux-jammy-cuda13.0-cudnn9-py3.12-gcc11-vllm diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml index 7bed6c785d4db..2bd5016819354 100644 --- a/.github/workflows/weekly.yml +++ b/.github/workflows/weekly.yml @@ -22,7 +22,7 @@ jobs: fetch-depth: 0 - name: update-xla-commit-hash continue-on-error: true - uses: pytorch/test-infra/.github/actions/update-commit-hash@main + uses: pytorch/test-infra/.github/actions/update-commit-hash@release/2.13 with: repo-name: xla branch: master diff --git a/.github/workflows/xpu.yml b/.github/workflows/xpu.yml index 3e2f4d43df9f9..3939c615b3d25 100644 --- a/.github/workflows/xpu.yml +++ b/.github/workflows/xpu.yml @@ -24,7 +24,7 @@ jobs: get-label-type: if: github.repository_owner == 'pytorch' name: get-label-type - uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main + uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@release/2.13 with: triggering_actor: ${{ github.triggering_actor }} issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }} @@ -32,7 +32,6 @@ jobs: curr_ref_type: ${{ github.ref_type }} linux-jammy-xpu-n-1-py3_10-build: - if: false # Temporarily disabled name: linux-jammy-xpu-n-1-py3.10 uses: ./.github/workflows/_linux-build.yml needs: get-label-type diff --git a/aten/src/ATen/native/RNN.cpp b/aten/src/ATen/native/RNN.cpp index 817e7c79d64e8..f2ebddcce9a5f 100644 --- a/aten/src/ATen/native/RNN.cpp +++ b/aten/src/ATen/native/RNN.cpp @@ -87,11 +87,10 @@ bool use_mkldnn(const Tensor& input, TensorList params, TensorList hx) { if (!at::globalContext().userEnabledMkldnn()) { return false; } - // XPU: oneDNN LSTM for inference + // XPU: oneDNN LSTM for inference (GPU primitive supports f32 and f16) if (input.is_xpu()) { return !at::GradMode::is_enabled() && - (input.scalar_type() == kFloat || input.scalar_type() == kBFloat16 || - input.scalar_type() == kHalf) && + (input.scalar_type() == kFloat || input.scalar_type() == kHalf) && input.numel() != 0; } auto is_cpu_backend = [&](const TensorList tensors) { diff --git a/aten/src/ATen/native/TopKImpl.h b/aten/src/ATen/native/TopKImpl.h index 51404f4f206a3..0a11f5f408753 100644 --- a/aten/src/ATen/native/TopKImpl.h +++ b/aten/src/ATen/native/TopKImpl.h @@ -1,5 +1,4 @@ #pragma once -#include #include #include @@ -29,24 +28,6 @@ void topk_impl_loop( return; } using elem_t = std::pair; - // See Note [Enabling Deterministic Operations] - const bool deterministic = at::globalContext().deterministicAlgorithms(); - // Keep NumPy-compatible NaN ordering: NaNs sort first for largest=True and - // last for largest=False. - auto topk_comp = [largest, deterministic](const elem_t& x, const elem_t& y) -> bool { - const bool x_nan = _isnan(x.first); - const bool y_nan = _isnan(y.first); - if (x_nan || y_nan) { - if (x_nan != y_nan) { - return largest ? x_nan : !x_nan; - } - return deterministic ? x.second < y.second : false; - } - if (x.first == y.first) { - return deterministic ? x.second < y.second : false; - } - return largest ? x.first > y.first : x.first < y.first; - }; std::vector queue(dim_size); for (const auto i : c10::irange(n)) { TensorAccessor mode_values( @@ -67,12 +48,42 @@ void topk_impl_loop( queue[j].second = j; } + // we want nan to be sorted as top for numpy compatibility if (use_partial_sort) { - std::partial_sort(queue.begin(), queue.begin() + k, queue.end(), topk_comp); + if (largest) { + std::partial_sort(queue.begin(), queue.begin() + k, queue.end(), + [](const elem_t& x, const elem_t& y) -> bool { + return ((_isnan(x.first) && !_isnan(y.first)) || (x.first > y.first)); + }); + } else { + std::partial_sort(queue.begin(), queue.begin() + k, queue.end(), + [](const elem_t& x, const elem_t& y) -> bool { + return ((!_isnan(x.first) && _isnan(y.first)) || (x.first < y.first)); + }); + } } else { - std::nth_element(queue.begin(), queue.begin() + k - 1, queue.end(), topk_comp); - if (sorted) { - std::sort(queue.begin(), queue.begin() + k, topk_comp); + if (largest) { + std::nth_element(queue.begin(), queue.begin() + k - 1, queue.end(), + [](const elem_t& x, const elem_t& y) -> bool { + return ((_isnan(x.first) && !_isnan(y.first)) || (x.first > y.first)); + }); + if (sorted) { + std::sort(queue.begin(), queue.begin() + k - 1, + [](const elem_t& x, const elem_t& y) -> bool { + return ((_isnan(x.first) && !_isnan(y.first)) || (x.first > y.first)); + }); + } + } else { + std::nth_element(queue.begin(), queue.begin() + k -1, queue.end(), + [](const elem_t& x, const elem_t& y) -> bool { + return ((!_isnan(x.first) && _isnan(y.first)) || (x.first < y.first)); + }); + if (sorted) { + std::sort(queue.begin(), queue.begin() + k -1, + [](const elem_t& x, const elem_t& y) -> bool { + return ((!_isnan(x.first) && _isnan(y.first)) || (x.first < y.first)); + }); + } } } diff --git a/aten/src/ATen/native/cuda/Indexing.cu b/aten/src/ATen/native/cuda/Indexing.cu index 5223178f4f30a..01342250e9735 100644 --- a/aten/src/ATen/native/cuda/Indexing.cu +++ b/aten/src/ATen/native/cuda/Indexing.cu @@ -1179,35 +1179,6 @@ void index_add_cuda_impl(const Tensor& self, int64_t dim, const Tensor& index, c const int mpc = at::cuda::getCurrentDeviceProperties()->multiProcessorCount; -#if !defined(USE_ROCM) && defined(CUDA_VERSION) && CUDA_VERSION >= 12080 - // Fast path: index_add_(0, idx, src) with alpha == 1 is equivalent to - // self.scatter_add_(0, idx.view({n, 1, ...}).expand_as(src), src). Delegate - // so scatter_add's own TMA/vectorized eligibility check + dispatch is the - // single source of truth (see PR #182675). Pattern from - // pytorch/pytorch#180430. - // Gated on CUDA >= 12.8: pre-12.8 builds compile out the TMA branch in - // scatter_add and fall back to its vectorized atomicAdd path, which - // regresses skewed/high-contention workloads vs indexFunc{Small,Large}Index - // (warp-per-entry scheduling concentrates atomic contention on hot rows). - // Older builds therefore stay on the existing indexFunc dispatch. - // index_add supports {complex64, complex128, ComplexHalf, Bool} that - // scatter_add does not, so exclude those and let them use indexFunc. - // The dtype check is ordered FIRST so short-circuit evaluation skips - // alpha.equal(1) for complex `self`, where alpha may itself be a - // complex Scalar and the equality comparison would be ill-defined. - const auto stype = self_.scalar_type(); - const bool dtype_supported_by_scatter_add = - !c10::isComplexType(stype) && stype != at::kBool; - if (dtype_supported_by_scatter_add && dim == 0 && - alpha.equal(1) && numIndex > 0 && - index.dim() <= 1 && indContig) { - std::vector idx_shape(source_.dim(), 1); - idx_shape[0] = static_cast(numIndex); - self_.scatter_add_(0, index.view(idx_shape).expand_as(source_), source_); - return; - } -#endif - #define SMALL_INDEX(TENSOR_TYPE, INDICES_TYPE, TYPE, SELF_DIM, SOURCE_DIM, IDX_DIM) \ indexFuncSmallIndex \ <<>>( \ diff --git a/aten/src/ATen/native/cuda/TensorTopK.cpp b/aten/src/ATen/native/cuda/TensorTopK.cpp index bd08f7cc55ad1..1afab34cc3c57 100644 --- a/aten/src/ATen/native/cuda/TensorTopK.cpp +++ b/aten/src/ATen/native/cuda/TensorTopK.cpp @@ -1,7 +1,6 @@ #define TORCH_ASSERT_ONLY_METHOD_OPERATORS #include -#include #include #include #include @@ -24,10 +23,9 @@ void topk_out_with_sort( const Tensor& self, int64_t k, int64_t dim, bool largest, const Tensor& values, - const Tensor& indices, - bool stable + const Tensor& indices ) { - auto [sorted_values, sorted_indices] = at::cuda::sort(self, stable, dim, largest); + auto [sorted_values, sorted_indices] = at::cuda::sort(self, /* stable= */false, dim, largest); values.copy_(sorted_values.narrow(dim, 0, k)); indices.copy_(sorted_indices.narrow(dim, 0, k)); } @@ -85,20 +83,9 @@ TORCH_IMPL_FUNC(topk_out_cuda) checkAllSameGPU(__func__, {topK_arg, indices_arg, input_arg}); dim = at::maybe_wrap_dim(dim, self); - // See Note [Enabling Deterministic Operations] - const bool deterministic = at::globalContext().deterministicAlgorithms(); - -#if defined(USE_ROCM) - if (deterministic) { - // The ROCm top-k gather path can reserve tie slots through atomics. - // Use stable full sort in deterministic mode to guarantee index tie-breaking. - topk_out_with_sort(self, k, dim, largest, values, indices, /*stable=*/true); - return; - } -#endif if (should_use_sort(self, dim)) { - topk_out_with_sort(self, k, dim, largest, values, indices, deterministic); + topk_out_with_sort(self, k, dim, largest, values, indices); return; } @@ -116,7 +103,7 @@ TORCH_IMPL_FUNC(topk_out_cuda) // This avoids any memory allocations and performs all sorting // work inplace along the slice - sortKeyValueInplace(values, indices, dim, largest, deterministic); + sortKeyValueInplace(values, indices, dim, largest); } else { // Depend upon the backup sort that returns indices, which we // can use in conjunction with gather to produce the original @@ -129,7 +116,7 @@ TORCH_IMPL_FUNC(topk_out_cuda) Tensor sortedIndices = at::empty_like(indices); Tensor sortedValues = at::empty_like(values); - at::cuda::sort_outf(values, deterministic, dim, largest, sortedValues, sortedIndices); + at::cuda::sort_outf(values, /* stable= */ false, dim, largest, sortedValues, sortedIndices); indices.copy_(indices.gather(dim, sortedIndices)); values.copy_(sortedValues); } diff --git a/aten/src/ATen/native/mkldnn/xpu/RNN.cpp b/aten/src/ATen/native/mkldnn/xpu/RNN.cpp index 129799534aa83..4f57569ee8c2f 100644 --- a/aten/src/ATen/native/mkldnn/xpu/RNN.cpp +++ b/aten/src/ATen/native/mkldnn/xpu/RNN.cpp @@ -29,9 +29,8 @@ void lstm_onednn_xpu( TORCH_INTERNAL_ASSERT( !train, "oneDNN LSTM on XPU only supports inference mode"); TORCH_INTERNAL_ASSERT( - input.scalar_type() == kFloat || input.scalar_type() == kHalf || - input.scalar_type() == kBFloat16, - "oneDNN LSTM on XPU only supports float, half, and bfloat16"); + input.scalar_type() == kFloat || input.scalar_type() == kHalf, + "oneDNN LSTM on XPU only supports float and half"); auto& engine = GpuEngineManager::Instance().get_engine(); auto& stream = GpuStreamManager::Instance().get_stream(); @@ -128,6 +127,11 @@ void lstm_onednn_xpu( dnnl::primitive_attr pattr; pattr.set_scratchpad_mode(dnnl::scratchpad_mode::user); +#if ONEDNN_SUPPORT_DETERMINISTIC + if (at::globalContext().deterministicAlgorithms() || + at::globalContext().deterministicMkldnn()) + pattr.set_deterministic(true); +#endif auto pd = dnnl::lstm_forward::primitive_desc( engine, diff --git a/aten/src/ATen/native/mps/kernels/ReduceOps.metal b/aten/src/ATen/native/mps/kernels/ReduceOps.metal index f6136c284f273..d871e2c82ab13 100644 --- a/aten/src/ATen/native/mps/kernels/ReduceOps.metal +++ b/aten/src/ATen/native/mps/kernels/ReduceOps.metal @@ -779,75 +779,10 @@ REGISTER_COUNT_NONZERO_INNER(half2); // input element to {0, 1} (nonzero, NaN -> 1) before the reduction. // ============================================================================= -// Reduction op functors. Each Op defines identity(), combine(), and -// threadgroup_reduce(). Identity is the "neutral" element for the op (-INF -// for max on floats, numeric_limits::lowest() for integers, etc.). -// combine() and threadgroup_reduce() delegate to c10::metal helpers, which -// propagate NaN for floats. -struct MaxOp { - template < - typename T, - ::metal::enable_if_t, bool> = true> - static inline constexpr T identity() { - return ::metal::numeric_limits::lowest(); - } - // Float identity is -INFINITY (not -FLT_MAX): max(-INF, x) = x for any - // finite x including -FLT_MAX, but max(-FLT_MAX, -INFINITY) would - // incorrectly return -FLT_MAX. - template < - typename T, - ::metal::enable_if_t, bool> = true> - static inline constexpr T identity() { - return T(-INFINITY); - } - template - static inline T combine(T a, T b) { - return c10::metal::max(a, b); - } - template - static inline T simd_reduce(T val) { - return c10::metal::simd_max(val); - } - template - static inline T threadgroup_reduce( - threadgroup T* shared, - T val, - uint tid, - uint tptg) { - return c10::metal::threadgroup_max(shared, val, tid, tptg); - } -}; - -struct MinOp { - template < - typename T, - ::metal::enable_if_t, bool> = true> - static inline constexpr T identity() { - return ::metal::numeric_limits::max(); - } - template < - typename T, - ::metal::enable_if_t, bool> = true> - static inline constexpr T identity() { - return T(INFINITY); - } - template - static inline T combine(T a, T b) { - return c10::metal::min(a, b); - } - template - static inline T simd_reduce(T val) { - return c10::metal::simd_min(val); - } - template - static inline T threadgroup_reduce( - threadgroup T* shared, - T val, - uint tid, - uint tptg) { - return c10::metal::threadgroup_min(shared, val, tid, tptg); - } -}; +// Reduction op functors MaxOp / MinOp (identity, replace, combine, +// simd_reduce, threadgroup_reduce) live in c10/metal/reduction_utils.h so the +// inductor MPS codegen can reuse the same identity/replace pair; both are +// pulled in via the file-scope `using namespace c10::metal`. // Load functors decide how an input element is converted into the // accumulator type. IdentityLoad casts (min/max keep the value unchanged); @@ -874,7 +809,7 @@ struct PredicateLoad { // runtime tptg value, which in turn lets c10::metal::threadgroup_min/max // constant-fold its size-vs-simdgroup_size branch. template < - typename Op, + template class OpFn, typename Load, typename TI, typename TO, @@ -905,7 +840,8 @@ kernel void value_reduction( } using TA = TO; - const TA identity_val = Op::template identity(); + using Op = OpFn; + const TA identity_val = Op::identity(); metal::array acc; for (uint j = 0; j < NCHAINS; j++) { acc[j] = identity_val; @@ -973,7 +909,7 @@ kernel void value_reduction( // threads split the M rows. Mirrors sum_reduction_outer; uses the same // (Op, Load) abstraction as value_reduction. template < - typename Op, + template class OpFn, typename Load, typename TI, typename TO, @@ -988,6 +924,7 @@ kernel void value_reduction_outer( uint2 tid_tg [[thread_position_in_threadgroup]], uint2 tg_pos [[threadgroup_position_in_grid]]) { using TA = TO; + using Op = OpFn; const uint M = sizes.x; const uint N = sizes.y; const uint out_stride = sizes.z; @@ -1001,7 +938,7 @@ kernel void value_reduction_outer( uint row_start = tid_tg.y * rows_per_y; uint row_end = min(row_start + rows_per_y, M); - const TA identity_val = Op::template identity(); + const TA identity_val = Op::identity(); metal::array acc; for (uint j = 0; j < NCHAINS; j++) { acc[j] = identity_val; @@ -1047,7 +984,7 @@ kernel void value_reduction_outer( // SIMD groups per TG for occupancy. No shared memory needed since // simd_reduce suffices for intra-row collapse. Mirrors sum_reduction_inner. template < - typename Op, + template class OpFn, typename Load, typename TI, typename TO, @@ -1061,6 +998,7 @@ kernel void value_reduction_inner( uint simd_lane_id [[thread_index_in_simdgroup]], uint simdgroup_id [[simdgroup_index_in_threadgroup]]) { using TA = TO; + using Op = OpFn; const uint M = sizes.x; const uint N = sizes.y; const uint num_simd_groups = tptg / simdgroup_size; @@ -1072,7 +1010,7 @@ kernel void value_reduction_inner( constant TI* row_ptr = input + row * N; - const TA identity_val = Op::template identity(); + const TA identity_val = Op::identity(); metal::array acc; for (uint j = 0; j < NCHAINS; j++) { acc[j] = identity_val; @@ -1162,3 +1100,327 @@ REGISTER_REDUCTIONS_OPS_FOR_TYPE(uchar); REGISTER_PRED_REDUCTIONS_FOR_TYPE(bool); REGISTER_PRED_REDUCTIONS_FOR_TYPE(float2); REGISTER_PRED_REDUCTIONS_FOR_TYPE(half2); + +// ============================================================================= +// argmax/argmin: per output element find the (linear) index of the max/min +// input element along the reduced dim(s). Output is always int64. NaN +// propagates (first NaN in source order wins); on ties the lowest index wins. +// Mirrors the value_reduction layout but tracks a (value, index) pair instead +// of just a value. +// ============================================================================= + +// Arg-reductions reuse the same MaxOp / MinOp structs that drive value +// reductions: identity and simd_reduce for the value side, replace for the +// NaN-propagating per-thread scan and outer-kernel shared-memory tree reduce. + +// SIMD argmin/argmax with proper pair tie-break (the c10::metal::simd_argmax +// helper ties on lowest LANE, which is wrong when a single lane has scanned +// multiple positions and stored a non-minimal index for the winning value). +// Two-step: simd-reduce the values, then simd_min the indices of lanes whose +// value matched the winner (NaN lanes count as winners on float). Returns +// (winner_value, min_winning_idx). +template < + template class OpFn, + typename TA, + ::metal::enable_if_t, bool> = true> +inline c10::metal::pair simd_arg_reduce(TA val, uint32_t idx) { + using Op = OpFn; + const TA winner = Op::simd_reduce(val); + const bool is_winner = ::metal::isnan(val) || (val == winner); + const uint32_t eff_idx = + is_winner ? idx : ::metal::numeric_limits::max(); + return {winner, ::metal::simd_min(eff_idx)}; +} + +template < + template class OpFn, + typename TA, + ::metal::enable_if_t, bool> = true> +inline c10::metal::pair simd_arg_reduce(TA val, uint32_t idx) { + using Op = OpFn; + const TA winner = Op::simd_reduce(val); + const uint32_t eff_idx = + (val == winner) ? idx : ::metal::numeric_limits::max(); + return {winner, ::metal::simd_min(eff_idx)}; +} + +// Pair tie-break for the shared-memory tree reduction in the outer-dim +// kernel: cand replaces cur if strictly better OR (equal AND lower idx). +// `Op::replace` already handles NaN propagation; equality here is the +// !replace-either-way fallback, which subsumes both both-NaN and both-equal +// cases. +template