From 2b58adc3bdcf9476e1cef49ad965b7d3c7b9ac24 Mon Sep 17 00:00:00 2001 From: Mwiza Kunda Date: Wed, 8 Oct 2025 14:12:14 +0000 Subject: [PATCH 001/182] [inductor][templates] Distinguish between kernel input nodes and codegen input nodes (#163752) If there is a single autotuner choice, the wrong type of input node is used to instantiate `TritonTemplateBuffer` through `TritonTemplateCaller.output_node`. This PR distinguishes the input nodes used in `AlgorithmSelectorCache.__call__` between the actual inputs passed to the kernel at runtime, vs the possibly viewed inputs that influence scheduling behaviour (e.g. `MemoryDeps`) and codegen. See the added unit test for more detail. Pull Request resolved: https://github.com/pytorch/pytorch/pull/163752 Approved by: https://github.com/eellison --- test/inductor/test_select_algorithm.py | 68 ++++++++++++++++++++++++++ torch/_inductor/select_algorithm.py | 17 +++++-- 2 files changed, 82 insertions(+), 3 deletions(-) diff --git a/test/inductor/test_select_algorithm.py b/test/inductor/test_select_algorithm.py index 539da76650db..2e6ee09bf10a 100644 --- a/test/inductor/test_select_algorithm.py +++ b/test/inductor/test_select_algorithm.py @@ -3,6 +3,7 @@ import contextlib import functools import unittest.mock from collections.abc import Callable +from typing import Any, Optional, Union from unittest.mock import patch import torch @@ -14,14 +15,19 @@ from torch._dynamo.testing import expectedFailureDynamicWrapper from torch._dynamo.utils import counters from torch._inductor import config from torch._inductor.autotune_process import TritonBenchmarkRequest +from torch._inductor.choices import InductorChoices +from torch._inductor.codegen.common import KernelTemplate from torch._inductor.ir import FixedLayout +from torch._inductor.kernel_inputs import KernelInputs from torch._inductor.select_algorithm import ( autotune_select_algorithm, + ExternKernelChoice, TritonTemplate, TritonTemplateKernel, ) from torch._inductor.test_case import run_tests, TestCase from torch._inductor.utils import is_big_gpu, run_and_get_kernels +from torch._inductor.virtualized import V from torch._prims_common import ELEMENTWISE_TYPE_PROMOTION_KIND from torch.testing._internal.common_utils import IS_LINUX, skipIfRocm, skipIfXpu from torch.testing._internal.inductor_utils import ( @@ -393,6 +399,68 @@ class TestSelectAlgorithm(TestCase): # Autotuning checks correctness of each version self.assertEqual(counters["inductor"]["select_algorithm_autotune"], 1) + @patches + @torch._inductor.config.patch( + {"conv_1x1_as_mm": True, "max_autotune_gemm_backends": "TRITON"} + ) + def test_convolution_as_mm_triton_only(self): + # To convert the 1x1 conv to matmul, x is converted to a channels last + # tensor and the channels dimension is permuted to be innermost. This + # prologue should not be fused with the matmul since the prologue writes + # discontiguously, whilst the mm template currently only supports reading + # the input contiguously. + # + # Before the change associated with this PR, fusion would occur because the actual kernel + # input nodes (which don't include views e.g. permute) would be passed to the + # `TritonTemplateCaller` rather than the input nodes that include views. + # For example after x is converted to channels last, its layout is shape @ stride + # [2, 33, 16, 16] @ [8432, 1, 528, 33], or [2, 33, 256] @ [8432, 1, 33], and the + # prologue writes this value discontiguously. + # After the permute, the mm template fixes the layout to [512, 33] @ [33, 1] and + # reads the input contiguously. If the kernel input node for x is passed to the + # `TritonTemplateCaller`, then the scheduler will fuse the prologue since the + # write is compatible with the read. If however the viewed input is passed + # to `TritonTemplateCaller`, then the write won't be compatible with the read, + # and the prologue won't be fused. + def foo(x, w, b): + return aten.convolution( + x + 1, + w, + b, + stride=(1, 1), + padding=(0, 0), + dilation=(1, 1), + transposed=False, + output_padding=(0, 0), + groups=1, + ) + + x = torch.randn(2, 33, 16, 16, device=GPU_TYPE) + w = torch.randn(34, 33, 1, 1, device=GPU_TYPE) + b = torch.randn(34, device=GPU_TYPE) + + class SingleMMConfigChoice(InductorChoices): + def get_template_configs( + self, + kernel_inputs: KernelInputs, + templates: list[Union[KernelTemplate, ExternKernelChoice]], + op_name: str, + kwarg_overrides: Optional[dict[str, dict[str, Any]]] = None, + ): + return super().get_template_configs( + kernel_inputs, templates, op_name, kwarg_overrides + )[:1] + + with V.set_choices_handler(SingleMMConfigChoice()): + result_compile = torch.compile(foo)(x, w, b) + result_eager = foo(x, w, b) + + # If the prologue has been fused this should fail + torch.testing.assert_close(result_compile, result_eager) + + # There should not be any autotuning + self.assertEqual(counters["inductor"]["select_algorithm_autotune"], 0) + @patches @torch._inductor.config.patch(conv_1x1_as_mm=False) def test_convolution2_group(self): diff --git a/torch/_inductor/select_algorithm.py b/torch/_inductor/select_algorithm.py index c1b401b14254..31f74bfc14ee 100644 --- a/torch/_inductor/select_algorithm.py +++ b/torch/_inductor/select_algorithm.py @@ -1983,7 +1983,18 @@ class TritonTemplate(KernelTemplate): expected_input_args, ) - full_input_nodes = tuple(V.graph.get_buffer(k) for k in result.input_call_args) + # `kernel_input_nodes` are the actual inputs that will be passed to the kernel, + # so e.g. views of the same input are not included. `codegen_input_nodes` + # includes views of inputs to preserve the kernel semantics. The shape and + # strides of `codegen_input_nodes` will be used to infer read/writes in + # TemplateBuffer.extract_read_writes + kernel_input_nodes = tuple( + [V.graph.get_buffer(k) for k in result.input_call_args] + ) + # Here we have (*input_nodes, *captured_buffers) + codegen_input_nodes = ( + tuple(input_nodes) + kernel_input_nodes[len(expected_input_args) :] + ) extra_args = V.graph.sizevars.size_hints( map(sympy.expand, result.kernel_args_sizevars_keys), fallback=config.unbacked_symint_fallback, @@ -2056,13 +2067,13 @@ class TritonTemplate(KernelTemplate): matrix_instr_nonkdim=kwargs.get("matrix_instr_nonkdim", 0), waves_per_eu=kwargs.get("waves_per_eu", 0), kpack=kwargs.get("kpack", 2), - input_tensor_meta=TensorMeta.from_irnodes(full_input_nodes), # type: ignore[arg-type] + input_tensor_meta=TensorMeta.from_irnodes(kernel_input_nodes), # type: ignore[arg-type] output_tensor_meta=TensorMeta.from_irnodes(layout), ) return TritonTemplateCaller( kernel_hash_name, - full_input_nodes, + codegen_input_nodes, layout, make_kernel_render, result.extra.strip("-").replace("-", ", "), From 2035f6b2e6b7d7cb9377d01d8ac66de1ae9d4345 Mon Sep 17 00:00:00 2001 From: Laith Sakka Date: Tue, 7 Oct 2025 13:13:33 -0700 Subject: [PATCH 002/182] use check_size instead of check_is_size in ops.py (#164668) Pull Request resolved: https://github.com/pytorch/pytorch/pull/164668 Approved by: https://github.com/angelayi ghstack dependencies: #164664, #164665, #164667 --- test/dynamo/test_repros.py | 2 +- test/dynamo/test_view.py | 4 ---- test/export/test_export.py | 1 + test/export/test_serialize.py | 7 +++--- test/fx/test_source_matcher_utils.py | 2 +- test/higher_order_ops/test_invoke_subgraph.py | 23 +++++++++++++++++-- test/inductor/test_aot_inductor.py | 6 ----- torch/nested/_internal/ops.py | 6 ++--- 8 files changed, 30 insertions(+), 21 deletions(-) diff --git a/test/dynamo/test_repros.py b/test/dynamo/test_repros.py index 8277cf4c57e7..21564aaea6d9 100644 --- a/test/dynamo/test_repros.py +++ b/test/dynamo/test_repros.py @@ -4258,7 +4258,7 @@ class ReproTests(torch._dynamo.test_case.TestCase): @torch.compile(fullgraph=True) def f(x): y = x.item() - torch._check_is_size(y) + torch._check(y >= 0) if y >= 0: return x * 2 else: diff --git a/test/dynamo/test_view.py b/test/dynamo/test_view.py index 03b9ac5a9f81..a9a6e0deca36 100644 --- a/test/dynamo/test_view.py +++ b/test/dynamo/test_view.py @@ -11,8 +11,6 @@ class ViewTests(torch._dynamo.test_case.TestCase): def f(t, _u0): u0 = t[0].item() u1 = t[1].item() - torch._check_is_size(u0) - torch._check_is_size(u1) n = u0 * u1 a = torch.randn(n) return a.view(-1, _u0) @@ -25,8 +23,6 @@ class ViewTests(torch._dynamo.test_case.TestCase): def f(t, _n): u0 = t[0].item() u1 = t[1].item() - torch._check_is_size(u0) - torch._check_is_size(u1) a = torch.randn(u0, u1) return a.view(_n) diff --git a/test/export/test_export.py b/test/export/test_export.py index ef968de0985f..66ceba968ccd 100755 --- a/test/export/test_export.py +++ b/test/export/test_export.py @@ -6742,6 +6742,7 @@ def forward(self, p_linear_weight, p_linear_bias, b_buffer, x): b = x.item() torch._check(b >= 0) torch._check(b < y.shape[0]) + return y[0, b] if is_non_strict_test(self._testMethodName): diff --git a/test/export/test_serialize.py b/test/export/test_serialize.py index b30e0d35ec79..f756e2df8652 100644 --- a/test/export/test_serialize.py +++ b/test/export/test_serialize.py @@ -1412,7 +1412,6 @@ class TestDeserialize(TestCase): def forward(self, x): y = x.nonzero() z = y.size(0) - torch._check_is_size(z) torch._check(z == 2) return y @@ -1423,7 +1422,6 @@ class TestDeserialize(TestCase): def forward(self, x): y = x.nonzero() z = y.size(0) - torch._check_is_size(z) torch._check(z % 3 == 0) torch._check(z == 3) return y @@ -1707,7 +1705,7 @@ def forward(self, x): class Module(torch.nn.Module): def forward(self, x, y): n = x.item() - torch._check_is_size(n) + torch._check(n >= 0) return y.sum() + torch.ones(n, 5).sum() f = Module() @@ -2222,7 +2220,8 @@ def forward(self, x): class Foo(torch.nn.Module): def forward(self, x, y): n = x.item() - torch._check_is_size(n, max=y.size(0) - 1) + torch._check(n >= 0) + torch._check(n < y.size(0)) return torch.empty(n), y[n] ep = torch.export.export( diff --git a/test/fx/test_source_matcher_utils.py b/test/fx/test_source_matcher_utils.py index b7453272a83e..1a5755c383d9 100644 --- a/test/fx/test_source_matcher_utils.py +++ b/test/fx/test_source_matcher_utils.py @@ -222,7 +222,7 @@ class TestSourceMatcher(JitTestCase): class M(torch.nn.Module): def forward(self, x, y): b = x.item() - torch._check_is_size(b) + torch._check(b >= 0) torch._check(b + 1 < y.size(0)) return y[: b + 1] diff --git a/test/higher_order_ops/test_invoke_subgraph.py b/test/higher_order_ops/test_invoke_subgraph.py index 34d8e41d8978..411eba322855 100644 --- a/test/higher_order_ops/test_invoke_subgraph.py +++ b/test/higher_order_ops/test_invoke_subgraph.py @@ -1604,11 +1604,30 @@ class GraphModule(torch.nn.Module): self.assertEqual(ref, res) @torch._dynamo.config.patch(capture_scalar_outputs=True) - def test_unbacked(self): + def test_unbacked1(self): @nested_compile_region def gn(x, y): b = x.item() - torch._check_is_size(b) + return y[:b].clone() + + def fn(x, y): + return gn(x, y) + + x = torch.tensor(4) + y = torch.randn(8) + ref = fn(x, y) + opt_fn = torch.compile( + fn, backend="eager", fullgraph=True + ) # Inductor fails with assertion error when lowering aten.sym_constrain_range_for_size.default + res = opt_fn(x, y) + self.assertEqual(ref, res) + + @torch._dynamo.config.patch(capture_scalar_outputs=True) + def test_unbacked2(self): + @nested_compile_region + def gn(x, y): + b = x.item() + torch._check(b >= 0) torch._check(b < y.shape[0]) return y[:b].clone() diff --git a/test/inductor/test_aot_inductor.py b/test/inductor/test_aot_inductor.py index 3fcd02a306a9..1f4e06d3c6e3 100644 --- a/test/inductor/test_aot_inductor.py +++ b/test/inductor/test_aot_inductor.py @@ -1732,7 +1732,6 @@ class AOTInductorTestsTemplate: backed = z.size(0) unbacked = scalar.item() - torch._check_is_size(unbacked) unbacked_add_expr = backed + unbacked repeated = x.repeat(unbacked_add_expr, 1) @@ -1771,8 +1770,6 @@ class AOTInductorTestsTemplate: index_select = torch.index_select(embeddings, 0, index) u0, u1 = lst.tolist() - torch._check_is_size(u0) - torch._check_is_size(u1) backed0, backed1 = z.size(0), z.size(1) repeated0 = y.repeat(backed0 + u0, 1) @@ -1822,9 +1819,6 @@ class AOTInductorTestsTemplate: class Repro(torch.nn.Module): def forward(self, values, repeats, mask, embeddings, x, y, z, lst): u0, u1, u2 = lst.tolist() - torch._check_is_size(u0) - torch._check_is_size(u1) - torch._check_is_size(u2) backed = z.size(0) backed1 = z.size(1) diff --git a/torch/nested/_internal/ops.py b/torch/nested/_internal/ops.py index 9ac4f53b60eb..e157538ff123 100644 --- a/torch/nested/_internal/ops.py +++ b/torch/nested/_internal/ops.py @@ -1139,7 +1139,7 @@ def unbind_int(func, *args, **kwargs): ragged_idx = inp._ragged_idx def _torch_check(_lengths: list[int], _offsets: Optional[list[int]] = None): - # This torch._check and torch._check_is_size are needed for torch.compile + # This torch._check are needed for torch.compile # symbolic shapes processing. # offsets and lengths are symbolic variables during compilation, # we guarantee the correct offsets/lengths correspondence: @@ -1151,7 +1151,7 @@ def unbind_int(func, *args, **kwargs): lengths_sum = 0 ragged_dim_size = values.shape[ragged_idx - 1] for i in range(len(_lengths)): - torch._check_is_size(_lengths[i]) + torch._check(_lengths[i] >= 0) torch._check(_lengths[i] <= ragged_dim_size) lengths_sum += _lengths[i] @@ -1164,7 +1164,7 @@ def unbind_int(func, *args, **kwargs): if _offsets is not None: for i in range(len(_offsets)): - torch._check_is_size(_offsets[i]) + torch._check(_offsets[i] >= 0) torch._check(_offsets[i] <= ragged_dim_size) if lengths is None: From 7158aa22e8dc97fdc2657cf0d4cde34b277e7d9e Mon Sep 17 00:00:00 2001 From: Laith Sakka Date: Tue, 7 Oct 2025 13:13:34 -0700 Subject: [PATCH 003/182] remove more (#164753) Pull Request resolved: https://github.com/pytorch/pytorch/pull/164753 Approved by: https://github.com/aorenste, https://github.com/mlazos ghstack dependencies: #164664, #164665, #164667, #164668 --- .../test_c10d_functional_native.py | 8 ++----- test/distributed/test_inductor_collectives.py | 13 ++++-------- test/export/test_export.py | 21 ++----------------- test/inductor/test_torchinductor.py | 1 - .../test_torchinductor_dynamic_shapes.py | 7 ------- .../test_torchinductor_strided_blocks.py | 1 - test/inductor/test_unbacked_symints.py | 4 ++-- torch/_decomp/decompositions.py | 2 +- torch/_dynamo/config.py | 2 +- torch/_meta_registrations.py | 4 ++-- torch/_prims_common/__init__.py | 10 ++------- torch/_subclasses/fake_impls.py | 3 ++- torch/distributed/_functional_collectives.py | 2 +- 13 files changed, 19 insertions(+), 59 deletions(-) diff --git a/test/distributed/test_c10d_functional_native.py b/test/distributed/test_c10d_functional_native.py index aa2d38067f54..5e9f70345ae3 100644 --- a/test/distributed/test_c10d_functional_native.py +++ b/test/distributed/test_c10d_functional_native.py @@ -1121,10 +1121,6 @@ class CompileTest(TestCase): @unittest.skipIf(not HAS_GPU, "Inductor+gpu needs triton and recent GPU arch") @fresh_cache() def test_inductor_all_to_all_single(self): - def _tolist(tensor): - lst = tensor.tolist() - return lst - def func( input: torch.Tensor, output_split_sizes: torch.Tensor, @@ -1132,8 +1128,8 @@ class CompileTest(TestCase): ) -> torch.Tensor: output = funcol.all_to_all_single( input, - _tolist(output_split_sizes), - _tolist(input_split_sizes), + output_split_sizes.tolist(), + input_split_sizes.tolist(), "0", ) return funcol.wait_tensor(output) diff --git a/test/distributed/test_inductor_collectives.py b/test/distributed/test_inductor_collectives.py index 12f201c6010b..94ff7a05df74 100644 --- a/test/distributed/test_inductor_collectives.py +++ b/test/distributed/test_inductor_collectives.py @@ -53,11 +53,6 @@ from torch.testing._internal.inductor_utils import HAS_GPU from torch.utils._python_dispatch import TorchDispatchMode -def _tolist(tensor): - lst = tensor.tolist() - return lst - - @requires_accelerator_dist_backend(["nccl", "xccl"]) @instantiate_parametrized_tests class TestCollectivesMultiProc(DynamoDistributedMultiProcTestCase): @@ -535,8 +530,8 @@ class TestCollectivesMultiProc(DynamoDistributedMultiProcTestCase): ranks, group_size, ): - input_split_sizes = _tolist(input_split_sizes_tensor) - output_split_sizes = _tolist(output_split_sizes_tensor) + input_split_sizes = input_split_sizes_tensor.tolist() + output_split_sizes = output_split_sizes_tensor.tolist() a2a = torch.ops.c10d_functional.all_to_all_single( inp, output_split_sizes, @@ -696,8 +691,8 @@ class TestCollectivesMultiProc(DynamoDistributedMultiProcTestCase): ranks, group_size, ): - input_split_sizes = _tolist(input_split_sizes_tensor) - output_split_sizes = _tolist(output_split_sizes_tensor) + input_split_sizes = input_split_sizes_tensor.tolist() + output_split_sizes = output_split_sizes_tensor.tolist() a2a = torch.ops.custom_ns.alltoall_autograd.default( inp, output_split_sizes, diff --git a/test/export/test_export.py b/test/export/test_export.py index 66ceba968ccd..29b4922be1f4 100755 --- a/test/export/test_export.py +++ b/test/export/test_export.py @@ -973,7 +973,7 @@ graph(): model = M() ep = export(model, (torch.randint(0, 8, (5,), dtype=torch.int64),)) - print(ep) + inp = torch.randint(0, 8, (5,), dtype=torch.int64) self.assertTrue(torch.allclose(ep.module()(inp), M()(inp))) @@ -2666,7 +2666,7 @@ class GraphModule(torch.nn.Module): m = M() x = torch.randn(3) ep = export(m, (x,)) - print(ep) + ufm = torch.export.unflatten(ep) self.assertExpectedInline( str(ufm.graph_module.code).strip(), @@ -3571,7 +3571,6 @@ graph(): sample_input = _tensor(nz=nz) ep = export(mod, (sample_input,), strict=False) self.assertEqual(ep.module()(sample_input), nz) - print(ep) def test_export_script_module(self): class Foo(torch.nn.Module): @@ -8902,7 +8901,6 @@ def forward(self, x): def forward(self, start_pos: torch.Tensor): pos = start_pos.item() - torch._check_is_size(pos) torch._check(pos >= 0) torch._check(pos <= 4) return self.freq[pos] * self.freq[pos] @@ -8911,17 +8909,11 @@ def forward(self, x): FileCheck().check_count( "torch.ops.aten._assert_scalar.default", 2, exactly=True ).run(ep.graph_module.code) - FileCheck().check_count( - "torch.ops.aten.sym_constrain_range_for_size.default", 1, exactly=True - ).run(ep.graph_module.code) decompose_ep = ep.run_decompositions() FileCheck().check_count( "torch.ops.aten._assert_scalar.default", 2, exactly=True ).run(ep.graph_module.code) - FileCheck().check_count( - "torch.ops.aten.sym_constrain_range_for_size.default", 1, exactly=True - ).run(ep.graph_module.code) def test_mixed_input(self): class Module(torch.nn.Module): @@ -14360,7 +14352,6 @@ def forward(self, x, y): sin = torch.ops.aten.sin.default(y) sum_1 = torch.ops.aten.sum.dim_IntList(sin, []); sin = None _local_scalar_dense = torch.ops.aten._local_scalar_dense.default(x); x = None - sym_constrain_range_for_size_default = torch.ops.aten.sym_constrain_range_for_size.default(_local_scalar_dense); sym_constrain_range_for_size_default = None ge_1 = _local_scalar_dense >= 3 _assert_scalar_default = torch.ops.aten._assert_scalar.default(ge_1, "Runtime assertion failed for expression u2 >= 3 on node 'ge_1'"); ge_1 = _assert_scalar_default = None le_1 = _local_scalar_dense <= 5 @@ -16781,15 +16772,7 @@ class TestOneOffModelExportResult(TestCase): with torch.nn.attention.sdpa_kernel([SDPBackend.MATH]): ep = torch.export.export(ScaledDotProductAttention(), (q, k, v)) - print(ep.graph) ep.run_decompositions() - print(ep.graph) - - # self.assertExpectedInline(ep.graph_module.code.strip(), """\ - # def forward(self, arg0_1, arg1_1, arg2_1): - # _scaled_dot_product_flash_attention_for_cpu = torch.ops.aten._scaled_dot_product_flash_attention_for_cpu.default(arg0_1, arg1_1, arg2_1, 0.0, True); arg0_1 = arg1_1 = arg2_1 = None - # getitem = _scaled_dot_product_flash_attention_for_cpu[0]; _scaled_dot_product_flash_attention_for_cpu = None - # return (getitem,)""") @skipIfCrossRef @unittest.skipIf( diff --git a/test/inductor/test_torchinductor.py b/test/inductor/test_torchinductor.py index 1cedac3bdf38..e3c551213277 100644 --- a/test/inductor/test_torchinductor.py +++ b/test/inductor/test_torchinductor.py @@ -14489,7 +14489,6 @@ if RUN_GPU: return a[y.to(torch.int64)] def fn2(a: torch.Tensor, b: torch.Tensor) -> torch.Tensor: - torch._check_is_size(b.shape[0]) torch._check(b.shape[0] >= 2) torch._check(b.shape[0] <= 100) return fn1(a, b) diff --git a/test/inductor/test_torchinductor_dynamic_shapes.py b/test/inductor/test_torchinductor_dynamic_shapes.py index 9cd7f7ccb9ac..5eaa007a8a1c 100644 --- a/test/inductor/test_torchinductor_dynamic_shapes.py +++ b/test/inductor/test_torchinductor_dynamic_shapes.py @@ -285,7 +285,6 @@ class TestInductorDynamic(TestCase): def f(): full = torch.full((), 11) i0 = full.item() - torch._check_is_size(i0) return torch.full((i0,), 0) opt_f = torch.compile(f, fullgraph=True) @@ -450,8 +449,6 @@ class TestInductorDynamic(TestCase): def test_return_unbacked_view_split(self, device): def f(values, length_per_key): u0, u1 = length_per_key.tolist() - torch._check_is_size(u0) - torch._check_is_size(u1) v1, v2 = torch.functional.split(values, [u0, u1]) return v1, v2 @@ -483,7 +480,6 @@ class TestInductorDynamic(TestCase): @torch.library.register_fake("_test::_cat") def _cat_fake(t: torch.Tensor, ds: list[int]) -> torch.Tensor: - [torch._check_is_size(d) for d in ds] return t.new_empty([sum(ds)]) def _cat_setup_context(ctx, inputs, output): @@ -983,7 +979,6 @@ class TestInductorDynamic(TestCase): @torch.compile(fullgraph=True, dynamic=True) def f(x): a = x.item() - torch._check_is_size(a) torch._check(a >= 1) torch._check(a <= 10) return torch.ones(a, a) @@ -995,8 +990,6 @@ class TestInductorDynamic(TestCase): @torch.compile() def f(xt): xs = xt.tolist() - for x in xs: - torch._check_is_size(x) y = sum(xs) return torch.zeros(y, device=device) diff --git a/test/inductor/test_torchinductor_strided_blocks.py b/test/inductor/test_torchinductor_strided_blocks.py index 597905a8caa5..c8eb20bffb32 100644 --- a/test/inductor/test_torchinductor_strided_blocks.py +++ b/test/inductor/test_torchinductor_strided_blocks.py @@ -1075,7 +1075,6 @@ class CommonTemplate: def foo(x, length): unbacked = length.item() - torch._check_is_size(unbacked) repeated = x.repeat(1, unbacked, NUM_REPEAT) # permute creates split in middle with unbacked symint is the first range diff --git a/test/inductor/test_unbacked_symints.py b/test/inductor/test_unbacked_symints.py index dff293410fd8..48242e4ed719 100644 --- a/test/inductor/test_unbacked_symints.py +++ b/test/inductor/test_unbacked_symints.py @@ -361,11 +361,11 @@ class TestUnbackedSymints(InductorTestCase): inp = args[0] start = inp.slice_bounds[0].item() - torch._check_is_size(start) + torch._check(start >= 0) torch._check(start <= inp.size(0)) length = (args[0].slice_bounds[1] - args[0].slice_bounds[0]).item() - torch._check_is_size(length) + torch._check(length >= 0) torch._check(start + length <= inp.size(0)) return CustomSliceSubclass( diff --git a/torch/_decomp/decompositions.py b/torch/_decomp/decompositions.py index fc2570999686..18c6ac5945e5 100644 --- a/torch/_decomp/decompositions.py +++ b/torch/_decomp/decompositions.py @@ -1453,7 +1453,7 @@ def tensor_split_tensor_indices_or_sections_py_impl( # To avoid PendingUnbackedSymbolNotFound errors, we tell the compiler it's fine to not bind these. with ctx(): indices = [i.item() for i in tensor_indices_or_sections] - # WARNING: Tempted to torch._check_is_size on the indices here? You + # WARNING: Tempted to torch._check(x>0) on the indices here? You # can't: tensor_split works with negative values in indices: # # >>> torch.tensor_split(torch.randn(10), torch.tensor([-5, 5])) diff --git a/torch/_dynamo/config.py b/torch/_dynamo/config.py index c572f900cfff..0e88b145d951 100644 --- a/torch/_dynamo/config.py +++ b/torch/_dynamo/config.py @@ -308,7 +308,7 @@ optimize_ddp: Union[ ], ] = True -# By default, Dynamo emits runtime asserts (e.g. torch._check, torch._check_is_size) in the graph. +# By default, Dynamo emits runtime asserts (e.g. torch._check) in the graph. # In some cases those asserts could be performance costly # E.g. torch._check(tensor[0].item() > 2) for tensor on cuda will require cuda sync. # Setting this to True keeps them hinting to symbolic shapes engine, diff --git a/torch/_meta_registrations.py b/torch/_meta_registrations.py index 925d6f468f77..8df7e9300d01 100644 --- a/torch/_meta_registrations.py +++ b/torch/_meta_registrations.py @@ -841,7 +841,7 @@ def sym_constrain_range_for_size(size, min=None, max=None): from torch.fx.experimental.symbolic_shapes import _constrain_range_for_size if min is None and max is None: - torch._check_is_size(size) + torch._check(size >= 0) return if isinstance(size, (SymFloat, SymBool)): @@ -6835,7 +6835,7 @@ def topk_meta(self, k, dim=-1, largest=True, sorted=True): # From aten/src/ATen/native/Sorting.cpp dim = maybe_wrap_dim(dim, self.dim(), wrap_scalar=True) sliceSize = 1 if self.dim() == 0 else self.size(dim) - torch._check_is_size(k) + torch._check(k >= 0) torch._check(k <= sliceSize, lambda: "k not in range for dimension") topKSize = list(self.shape) diff --git a/torch/_prims_common/__init__.py b/torch/_prims_common/__init__.py index f52c8cbfdfb6..2afb23310486 100644 --- a/torch/_prims_common/__init__.py +++ b/torch/_prims_common/__init__.py @@ -728,7 +728,7 @@ def validate_dim_length(length: int): """ if isinstance(length, (int, torch.SymInt)): - torch._check_is_size(length) + torch._check(length >= 0) else: # sometimes called with sympy expression by inductor assert length >= 0 @@ -1083,13 +1083,7 @@ def infer_size(shape: ShapeType, numel: int) -> tuple[int, ...]: # PyTorch, which prints sequences in square brackets. shape = list(shape) shape[dim] = numel // newsize - # NB: This is pretty important when you have unbacked SymInts. - # Suppose you have (i0, 12) resizing into (2, -1, 12). The old - # range for i0 is typically [2, inf], which means if you divide - # by two the new range should be [1, inf]. But this is bad news - # if you have an unbacked SymInt: we need to reapply the unsound - # assumption that the size is >= 2. - torch._check_is_size(shape[dim]) + torch._check(shape[dim] >= 0) return tuple(shape) diff --git a/torch/_subclasses/fake_impls.py b/torch/_subclasses/fake_impls.py index c8a72924c1d8..0b000cfa1a9a 100644 --- a/torch/_subclasses/fake_impls.py +++ b/torch/_subclasses/fake_impls.py @@ -822,7 +822,8 @@ def slice_forward( # create unbacked if case unknown if new_size is None: new_size = shape_env.create_unbacked_symint() - torch._check_is_size(new_size, max=sizes[dim]) + torch._check(new_size >= 0) + torch._check(new_size <= sizes[dim]) # stride new_stride = strides[dim] * step diff --git a/torch/distributed/_functional_collectives.py b/torch/distributed/_functional_collectives.py index c893794fc301..83a1b86b109b 100644 --- a/torch/distributed/_functional_collectives.py +++ b/torch/distributed/_functional_collectives.py @@ -944,7 +944,7 @@ def _all_to_all_single_meta( return input.new_empty(input.size()) else: for s in output_split_sizes: - torch._check_is_size(s) + torch._check(s >= 0) out_size = list(input.size()) out_size[0] = sum(output_split_sizes) return input.new_empty(out_size) From 20082d713666fa1eade588bebd523d86309bfa25 Mon Sep 17 00:00:00 2001 From: PyTorch MergeBot Date: Wed, 8 Oct 2025 14:29:10 +0000 Subject: [PATCH 004/182] Revert "fix flex attention eager bwd: more rounding (#164317)" This reverts commit 41808b2ba9a61ab2f4c7af394c1668d09a4a0331. Reverted https://github.com/pytorch/pytorch/pull/164317 on behalf of https://github.com/jeffdaily due to inductor/test_flex_attention.py::TestFlexAttentionCUDA::test_builtin_score_mods_seqlen_lt_custom_sparse_block_size_score_mod4_cuda_float16 [GH job link](https://github.com/pytorch/pytorch/actions/runs/18330774537/job/52207370954) [HUD commit link](https://hud.pytorch.org/pytorch/pytorch/commit/41808b2ba9a61ab2f4c7af394c1668d09a4a0331) ([comment](https://github.com/pytorch/pytorch/pull/164317#issuecomment-3381812090)) --- test/inductor/test_flex_attention.py | 8 ++++---- torch/_higher_order_ops/flex_attention.py | 10 ++-------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/test/inductor/test_flex_attention.py b/test/inductor/test_flex_attention.py index 417a8cbc16fd..43e28a8a2ec2 100644 --- a/test/inductor/test_flex_attention.py +++ b/test/inductor/test_flex_attention.py @@ -6436,7 +6436,7 @@ class TestLearnableBiases(InductorTestCase): bias = torch.randn( params.seq_length, device=device, - dtype=torch.float32, + dtype=params.dtype, requires_grad=True, ) @@ -6619,12 +6619,12 @@ class TestLearnableBiases(InductorTestCase): gate_score = torch.randn( params.num_heads, device=device, - dtype=torch.float32, + dtype=params.dtype, requires_grad=True, ) def bias_func(score, b, h, q_idx, kv_idx): - return score * torch.sigmoid(gate_score[h]) + return score * torch.sigmoid(gate_score[h].to(torch.float32)) flex_compiled = torch.compile(flex_attention, mode=mode) out_eager = flex_attention(query, key, value, score_mod=bias_func) @@ -6659,7 +6659,7 @@ class TestLearnableBiases(InductorTestCase): bias2 = torch.randn( params.seq_length, device=device, - dtype=torch.float32, + dtype=params.dtype, requires_grad=True, ) diff --git a/torch/_higher_order_ops/flex_attention.py b/torch/_higher_order_ops/flex_attention.py index 9e74de4ec763..bdbf56e357b4 100644 --- a/torch/_higher_order_ops/flex_attention.py +++ b/torch/_higher_order_ops/flex_attention.py @@ -902,15 +902,9 @@ def sdpa_dense_backward( grad_value = softmax_scores.to(query.dtype).transpose(-2, -1) @ grad_out - grad_softmax_scores = grad_out.to(dtype=softmax_scores.dtype) @ value.to( - dtype=softmax_scores.dtype - ).transpose(-2, -1) + grad_softmax_scores = grad_out @ value.transpose(-2, -1) - sum_scores = torch.sum( - out.to(dtype=softmax_scores.dtype) * grad_out.to(dtype=softmax_scores.dtype), - -1, - keepdim=True, - ) + sum_scores = torch.sum(out * grad_out, -1, keepdim=True) grad_score_mod = softmax_scores * ( grad_softmax_scores - sum_scores + grad_logsumexp.unsqueeze(-1) ) From f46ddb1e65b595c80f285dc42aa8549970736aae Mon Sep 17 00:00:00 2001 From: Jeff Daily Date: Wed, 8 Oct 2025 14:34:22 +0000 Subject: [PATCH 005/182] [ROCm][CI] add gfx1150 gfx1151 to docker images for binary builds (#164854) Fixes #164346. Pull Request resolved: https://github.com/pytorch/pytorch/pull/164854 Approved by: https://github.com/jeffdaily Co-authored-by: Jeff Daily --- .ci/docker/libtorch/build.sh | 4 ++-- .ci/docker/manywheel/build.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.ci/docker/libtorch/build.sh b/.ci/docker/libtorch/build.sh index 679eebd250ea..8447eb0d8331 100755 --- a/.ci/docker/libtorch/build.sh +++ b/.ci/docker/libtorch/build.sh @@ -46,9 +46,9 @@ case ${DOCKER_TAG_PREFIX} in BASE_TARGET=rocm GPU_IMAGE=rocm/dev-ubuntu-22.04:${GPU_ARCH_VERSION}-complete PYTORCH_ROCM_ARCH="gfx900;gfx906;gfx908;gfx90a;gfx942;gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201" - # add gfx950 conditionally starting in ROCm 7.0 + # add gfx950, gfx115x conditionally starting in ROCm 7.0 if [[ "$GPU_ARCH_VERSION" == *"7.0"* ]]; then - PYTORCH_ROCM_ARCH="${PYTORCH_ROCM_ARCH};gfx950" + PYTORCH_ROCM_ARCH="${PYTORCH_ROCM_ARCH};gfx950;gfx1150;gfx1151" fi DOCKER_GPU_BUILD_ARG="--build-arg PYTORCH_ROCM_ARCH=${PYTORCH_ROCM_ARCH} --build-arg ROCM_VERSION=${GPU_ARCH_VERSION}" ;; diff --git a/.ci/docker/manywheel/build.sh b/.ci/docker/manywheel/build.sh index ead6755e9291..99f03f5c8636 100755 --- a/.ci/docker/manywheel/build.sh +++ b/.ci/docker/manywheel/build.sh @@ -84,9 +84,9 @@ case ${image} in DEVTOOLSET_VERSION="11" GPU_IMAGE=rocm/dev-almalinux-8:${GPU_ARCH_VERSION}-complete PYTORCH_ROCM_ARCH="gfx900;gfx906;gfx908;gfx90a;gfx942;gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201" - # add gfx950 conditionally starting in ROCm 7.0 + # add gfx950, gfx115x conditionally starting in ROCm 7.0 if [[ "$GPU_ARCH_VERSION" == *"7.0"* ]]; then - PYTORCH_ROCM_ARCH="${PYTORCH_ROCM_ARCH};gfx950" + PYTORCH_ROCM_ARCH="${PYTORCH_ROCM_ARCH};gfx950;gfx1150;gfx1151" fi DOCKER_GPU_BUILD_ARG="--build-arg ROCM_VERSION=${GPU_ARCH_VERSION} --build-arg PYTORCH_ROCM_ARCH=${PYTORCH_ROCM_ARCH} --build-arg DEVTOOLSET_VERSION=${DEVTOOLSET_VERSION}" ;; From f8d0d65ddc61e1b2b151127b14738458748f9163 Mon Sep 17 00:00:00 2001 From: PyTorch MergeBot Date: Wed, 8 Oct 2025 14:56:21 +0000 Subject: [PATCH 006/182] Revert "Add memory estimator (#164738)" This reverts commit ab01a0d7d352e7fd07989b8d6bf035bf82aea74e. Reverted https://github.com/pytorch/pytorch/pull/164738 on behalf of https://github.com/eellison due to merge sets makes this trickier ([comment](https://github.com/pytorch/pytorch/pull/164581#issuecomment-3381955240)) --- torch/_inductor/fx_passes/memory_estimator.py | 386 ------------------ 1 file changed, 386 deletions(-) delete mode 100644 torch/_inductor/fx_passes/memory_estimator.py diff --git a/torch/_inductor/fx_passes/memory_estimator.py b/torch/_inductor/fx_passes/memory_estimator.py deleted file mode 100644 index db7e68980dc8..000000000000 --- a/torch/_inductor/fx_passes/memory_estimator.py +++ /dev/null @@ -1,386 +0,0 @@ -import logging -import operator -from typing import Any, Callable - -import torch.fx as fx -from torch._functorch.partitioners import _size_of, get_default_op_list -from torch.utils._ordered_set import OrderedSet - - -log = logging.getLogger(__name__) - - -def build_memory_profile( - graph: fx.Graph, - size_of: Callable[[fx.Node], int], - is_releasable: Callable[[fx.Node], bool], -) -> list[int]: - """ - Function to estimate the memory profile of an input FX graph. - - Args: - - graph (fx.Graph): The input FX graph for which the memory profile - is to be estimated. - - size_of (Callable[[fx.Node], int]): A function that returns - the size of a given node. - - is_releasable (Callable[[fx.Node], bool]): A function that - determines if a node's memory can be released (e.g. primal nodes - cannot be released). - - Returns: - - List[int]: A list representing the memory profile over the execution - of the graph, where each entry corresponds to the memory usage at - a particular point in the execution. - """ - - nodes = list(graph.nodes) - op_types = get_default_op_list() - - class AliasInfo: - """ - Class for storing and accessing alias information of a FX graph. - - Attributes: - - view_to_source: Maps view nodes to their source nodes - - getitem_to_source: Maps getitem nodes to (source_node, key) tuples - - source_to_getitems: Maps source nodes to dictionaries of - {key: getitem_node, "unclaimed": None} - - source_to_unclaimed_size: Maps source nodes to their storage size - unclaimed by any getitem_nodes - """ - - def __init__(self, nodes: list[fx.Node]): - """ - Initialize the AliasInfo class with a list of FX graph nodes. - - Args: - - nodes (list[fx.Node]): A list of nodes from an FX graph, - ordered in execution order. - - The constructor analyzes the relationships between nodes in the FX graph - to populate alias information. It identifies two types of alias nodes: - getitem and view. For each view, it maps it to its source. For each - getitem, it maps it to its source and key. It also populates mappings - for source nodes to their getitems and calculates unclaimed storage sizes. - - """ - # For each view, we map it to its source. - # Note that we treat getitems of a view (e.g. aten.split) as views. - self.view_to_source: dict[fx.Node, fx.Node] = {} - - # For each remaining getitem, we map it to its source and key. - self.getitem_to_source: dict[fx.Node, tuple[fx.Node, Any]] = {} - - # For each none-view source_node of getitems, we map it to a dictionary - # in the form of {key: getitem_node, ..., "unclaimed": None}, where - # "unclaimed" is a dummy key that represents all elements in the - # source_node that is not claimed by any getitems. - self.source_to_getitems: dict[fx.Node, dict[Any, fx.Node | None]] = {} - - # For each none-view source_node of getitems with at least one unclaimed - # elements, we map it to its unclaimed storage size. - self.source_to_unclaimed_size: dict[fx.Node, int] = {} - - for node in nodes: - is_view = op_types.is_view(node) - is_getitem = node.target is operator.getitem - if not (is_view or is_getitem): - continue - assert not (is_view and is_getitem) - assert node.args and isinstance(node.args[0], fx.Node) - source = node.args[0] - if is_view: - assert not isinstance(source.meta["val"], list | tuple | dict) - if source in self.view_to_source: - source = self.view_to_source[source] - self.view_to_source[node] = source - if is_getitem: - assert isinstance(source.meta["val"], list | tuple | dict) - # Source of getitem can be a view (e.g. aten.split). - if source in self.view_to_source: - if source in self.view_to_source: - source = self.view_to_source[source] - # In this case, the getitem node should be treated - # the same way as a regular view. - self.view_to_source[node] = source - continue - # Source of getitem cannot be a getitem. - assert source not in self.getitem_to_source - - # There must be a second argument that specifies the key. - assert len(node.args) >= 2 - key = node.args[1] - self.getitem_to_source[node] = (source, key) - - # Populate source_to_getitems. - if source not in self.source_to_getitems: - self.source_to_getitems[source] = {"unclaimed": None} - assert key not in self.source_to_getitems[source] - self.source_to_getitems[source][key] = node # type: ignore[index] - - for source, getitem_map in self.source_to_getitems.items(): - unclaimed_source_size = size_of(source) - for key, getitem_node in getitem_map.items(): - if key != "unclaimed" and getitem_node is not None: - unclaimed_source_size -= size_of(getitem_node) - assert unclaimed_source_size >= 0 - if unclaimed_source_size > 0: - self.source_to_unclaimed_size[source] = unclaimed_source_size - - def is_view(self, node: fx.Node) -> bool: - return node in self.view_to_source - - def is_getitem(self, node: fx.Node) -> bool: - return node in self.getitem_to_source - - def get_source(self, node: fx.Node) -> fx.Node | tuple[fx.Node, Any]: - if self.is_view(node): - return self.view_to_source[node] - if self.is_getitem(node): - return self.getitem_to_source[node] - return node - - def is_source_of_getitems(self, node: fx.Node) -> bool: - return node in self.source_to_getitems - - def get_storage_keys(self, source_node: fx.Node) -> list[Any]: - assert source_node in self.source_to_getitems - return list(self.source_to_getitems[source_node].keys()) - - def get_unclaimed_storage_size(self, source_node: fx.Node) -> int: - return self.source_to_unclaimed_size.get(source_node, 0) - - def get_getitem_by_key(self, source: fx.Node, key: Any) -> fx.Node | None: - assert source in self.source_to_getitems - assert key in self.source_to_getitems[source] - return self.source_to_getitems[source][key] - - def _get_last_usage( - nodes: list[fx.Node], alias_info: AliasInfo - ) -> dict[fx.Node, list[tuple[fx.Node, Any]]]: - """ - Determine the last usage point of each storage. This information is used to - identify when storages can be safely released. - - Args: - - nodes (list[fx.Node]): A list of nodes from the FX graph, ordered - in execution order. - - alias_info (AliasInfo): An instance of AliasInfo containing aliasing - relationships between nodes in the graph. - - Returns: - - Dict[fx.Node, list[tuple[fx.Node, Optional[Any]]]]: A mapping - from each node to a list of storages (represented as tuples of source node - and key) that are last used by that node. This helps in identifying which - storages can be released after the node's execution. - - """ - storage_to_last_user: dict[tuple[fx.Node, Any], fx.Node] = {} - node_to_last_used_storages: dict[fx.Node, list[tuple[fx.Node, Any]]] = {} - - def register_last_uses(use: fx.Node, user: fx.Node) -> None: - keys: list[Any] = [] - if alias_info.is_view(use): - # When use is a view (or getitem of a view), - # user is essentially using the storage allocated at the - # creation of the source of use. - use = alias_info.get_source(use) # type: ignore[assignment] - - if alias_info.is_source_of_getitems(use): # type: ignore[arg-type] - # When use is a source of getitems, user is using all separate - # storages of use. - keys.extend(alias_info.get_storage_keys(use)) # type: ignore[arg-type] - elif alias_info.is_getitem(use): # type: ignore[arg-type] - # When use is a getitem, user is essentially using a separate - # storage of the source of use specified by key. - use, key = alias_info.get_source(use) # type: ignore[assignment,misc] - keys.append(key) - else: - keys.append(None) - - assert keys - - for key in keys: - if (use, key) not in storage_to_last_user: # type: ignore[comparison-overlap] - storage_to_last_user[(use, key)] = user # type: ignore[index] - node_to_last_used_storages.setdefault(user, []).append((use, key)) # type: ignore[arg-type] - - for node in reversed(nodes): - fx.node.map_arg(node.args, lambda n: register_last_uses(n, node)) - fx.node.map_arg(node.kwargs, lambda n: register_last_uses(n, node)) - - return node_to_last_used_storages - - alias_info = AliasInfo(nodes) - node_to_last_used_storages = _get_last_usage(nodes, alias_info) - - # Initialize memory profile - memory_profile = [0] - - # Process the graph - for node in nodes: - if node.op == "placeholder": - out_mem = size_of(node) - memory_profile[0] += out_mem - elif node.op == "output": - pass - elif ( - node.op == "call_function" - or node.op == "call_module" - or node.op == "call_method" - ): - # Aliases don't allocate new memory - if alias_info.is_view(node) or alias_info.is_getitem(node): - memory_profile.append(memory_profile[-1]) - else: - out_mem = size_of(node) - memory_profile.append(memory_profile[-1] + out_mem) - - # Process storages that are no longer needed after this operation - storages_to_release = [ - (use, key) - for use, key in node_to_last_used_storages.get(node, []) - if is_releasable(use) - ] - freed_memory = 0 - for node_to_release, key in storages_to_release: - released_memory_size = 0 - if key is None: - released_memory_size = size_of(node_to_release) - elif key == "unclaimed": - released_memory_size = alias_info.get_unclaimed_storage_size( - node_to_release - ) - else: - getitem_node = alias_info.get_getitem_by_key(node_to_release, key) - if getitem_node is not None: - released_memory_size = size_of(getitem_node) - freed_memory += released_memory_size - - assert freed_memory >= 0 - memory_profile.append(memory_profile[-1] - freed_memory) - return memory_profile - - -def get_fwd_bwd_interactions( - fwd_graph: fx.Graph, - bwd_graph: fx.Graph, - size_of: Callable[[fx.Node], int], -) -> tuple[int, OrderedSet[str]]: - """ - Analyze the interactions between the forward (fwd) and backward (bwd) graphs - to determine memory usage characteristics. - - Args: - - fwd_graph (fx.Graph): The forward graph representing the forward pass. - - bwd_graph (fx.Graph): The backward graph representing the backward pass. - - size_of (Callable[[fx.Node], int]): A function that returns the size - of a given node. - - Returns: - - tuple[int, Set[fx.Node]]: A tuple containing: - 1. The baseline memory usage during the backward pass, accounting for - nodes that persist from the forward pass (i.e., in fwd output but - not in bwd input). - 2. A set of nodes whose storage cannot be released during the bwd pass. - These include nodes that are views of primals or in bwd input - but not in fwd output. - """ - - def get_nodes_in_output(graph: fx.Graph) -> OrderedSet[fx.Node]: - """ - Get the nodes in the output of a graph. - - Args: - - graph (fx.Graph): The input graph. - - Returns: - - list[fx.Node]: A list of nodes in the output of the graph. - """ - output_node = list(graph.nodes)[-1] - assert output_node.op == "output" - nodes_in_output: OrderedSet[fx.Node] = OrderedSet() - - def add_node(node: fx.Node) -> None: - nodes_in_output.add(node) - - # Using map_arg since output_node.args[0] can be of different types - # e.g. tuple, list, dict, fx.Node, etc. - fx.node.map_arg(output_node.args[0], lambda n: add_node(n)) - return nodes_in_output - - op_types = get_default_op_list() - - bwd_baseline_memory = 0 - # placeholder nodes besides primals of the bwd_graph that should also - # not be deleted during memory profile estimation of the bwd_graph - do_not_delete: OrderedSet[str] = OrderedSet() - - fwd_outputs = {} - for node in get_nodes_in_output(fwd_graph): - is_view_of_primal = False - if op_types.is_view(node): - source = node.args[0] - if isinstance(source, fx.Node) and source.name.startswith("primals"): - is_view_of_primal = True - fwd_outputs[node.name] = (size_of(node), is_view_of_primal) - bwd_inputs: OrderedSet[str] = OrderedSet() - for node in bwd_graph.nodes: - if node.op == "placeholder": - bwd_inputs.add(node.name) - if node.name.startswith("view"): - # if node is a view, then it has to be in fwd_outputs - assert node.name in fwd_outputs - _, is_view_of_primal = fwd_outputs[node.name] - if is_view_of_primal: - # Add node to do_not_delete because it is a view of a primal - do_not_delete.add(node.name) - - # if node is not in fwd_outputs, then add it to do_not_delete - if node.name not in fwd_outputs: - do_not_delete.add(node.name) - - # nodes that are in fwd_outputs but not in bwd_inputs take memory storage - # throughout the bwd pass - for name, (size, _) in fwd_outputs.items(): - if name not in bwd_inputs: - bwd_baseline_memory += size - - return bwd_baseline_memory, do_not_delete - - -def get_peak_memory( - fwd_graph: fx.Graph, - bwd_graph: fx.Graph, -) -> int: - def _safe_size_of(n: fx.Node) -> int: - try: - return _size_of(n) - except Exception: - log.warning("Failed size_of(%s). Returning 0 instead.", n) - return 0 - - def _is_releasable(n: fx.Node) -> bool: - # Storages of primals cannot be released during fwd or bwd pass. - return not n.name.startswith("primals") - - fwd_peak_memory = max( - build_memory_profile(fwd_graph, _safe_size_of, _is_releasable) - ) - - bwd_baseline_memory, bwd_do_not_delete = get_fwd_bwd_interactions( - fwd_graph, bwd_graph, _safe_size_of - ) - - def _is_bwd_releasable(n: fx.Node) -> bool: - # Storages of nodes in bwd_do_not_delete cannot be released - # during the bwd pass. - return _is_releasable(n) and n.name not in bwd_do_not_delete - - bwd_peak_memory = bwd_baseline_memory + max( - build_memory_profile(bwd_graph, _safe_size_of, _is_bwd_releasable) - ) - return max( - fwd_peak_memory, - bwd_peak_memory, - ) From b5e93ffdcf779c703af5c8119636b01f250eafcd Mon Sep 17 00:00:00 2001 From: PyTorch MergeBot Date: Wed, 8 Oct 2025 14:56:21 +0000 Subject: [PATCH 007/182] Revert "Limit path search within range (#164581)" This reverts commit 415e641572473479fc9d9eaea12762e1a223a9e0. Reverted https://github.com/pytorch/pytorch/pull/164581 on behalf of https://github.com/eellison due to merge sets makes this trickier ([comment](https://github.com/pytorch/pytorch/pull/164581#issuecomment-3381955240)) --- test/inductor/test_augmented_graph_helper.py | 29 ---- torch/_inductor/augmented_graph_helper.py | 37 ++--- .../fx_passes/overlap_preserving_bucketer.py | 128 ++++-------------- .../_inductor/fx_passes/overlap_scheduling.py | 10 ++ 4 files changed, 49 insertions(+), 155 deletions(-) diff --git a/test/inductor/test_augmented_graph_helper.py b/test/inductor/test_augmented_graph_helper.py index ea7bd0233e06..7267b4660169 100644 --- a/test/inductor/test_augmented_graph_helper.py +++ b/test/inductor/test_augmented_graph_helper.py @@ -339,35 +339,6 @@ class TestAugmentedGraphHelper(TestCase): self.assertEqual(self.tracker.merge_sets[nodes[0]], {nodes[0]}) self.assertEqual(len(self.tracker.merge_sets[nodes[1]]), 1) - def test_has_path_with_bounded_search(self): - """Test that bounded search correctly respects search range bounds.""" - # Create a simple linear chain: x -> A -> B -> C -> D - graph = fx.Graph() - x = graph.placeholder("x") - a = graph.call_function(torch.neg, args=(x,), name="A") - b = graph.call_function(torch.abs, args=(a,), name="B") - c = graph.call_function(torch.relu, args=(b,), name="C") - d = graph.call_function(torch.sigmoid, args=(c,), name="D") - graph.output(d) - - node_to_idx = {node: idx for idx, node in enumerate(graph.nodes)} - tracker = AugmentedGraphHelper(graph, node_to_idx=node_to_idx) - - # Path exists from A to D: A -> B -> C -> D - self.assertTrue(tracker.has_path(a, d)) - - # Test with correct bounds: include all nodes in the path - a_idx = node_to_idx[a] - d_idx = node_to_idx[d] - # Bounds that include the full path should find it - self.assertTrue(tracker.has_path(a, d, bounded_search_range=(a_idx, d_idx))) - - # Test with incorrect bounds: exclude critical intermediate nodes - c_idx = node_to_idx[c] - # Bounds that exclude A and B (only allowing C and D) should NOT find the path - # because the search can't reach back to A - self.assertFalse(tracker.has_path(a, d, bounded_search_range=(c_idx, d_idx))) - if __name__ == "__main__": from torch._inductor.test_case import run_tests diff --git a/torch/_inductor/augmented_graph_helper.py b/torch/_inductor/augmented_graph_helper.py index 037a6972cee2..c83bdd7d5396 100644 --- a/torch/_inductor/augmented_graph_helper.py +++ b/torch/_inductor/augmented_graph_helper.py @@ -1,5 +1,4 @@ from collections import defaultdict -from typing import Optional import torch import torch.fx as fx @@ -10,20 +9,18 @@ class AugmentedGraphHelper: """ Graph helper that augments the original graph with additional dependencies and uses, plus tracks node equivalences for coalescing. + TODO: if this becomes too large of compile time, consider binding graphcycles.cc """ - def __init__( - self, graph: fx.Graph, node_to_idx: Optional[dict[fx.Node, int]] = None - ): + def __init__(self, graph: fx.Graph): # Each node starts in its own singleton set self.graph = graph self.merge_sets = {node: OrderedSet([node]) for node in graph.nodes} + # Extra dependencies: node depends on dep (dep must come before node) self.extra_deps: dict[fx.Node, OrderedSet[fx.Node]] = defaultdict(OrderedSet) - # Optional node to index mapping for bounded searches - self.node_to_idx = node_to_idx def add_extra_dep(self, *, n: fx.Node, dep: fx.Node) -> None: """Add extra dependency: node depends on dep.""" @@ -36,8 +33,10 @@ class AugmentedGraphHelper: existing_set = self.merge_sets[existing_node] new_set = self.merge_sets[new_node] assert len(new_set) == 1 + # Add all nodes from new_set to existing_set existing_set.update(new_set) + # Update all nodes from new_set to point to existing_set for node in new_set: self.merge_sets[node] = existing_set @@ -45,11 +44,14 @@ class AugmentedGraphHelper: def unmerge_node(self, node: fx.Node) -> None: """Remove a node from its merge set, making it singleton.""" old_set = self.merge_sets[node] + # If already singleton, nothing to do if len(old_set) == 1: return + # Remove from old set old_set.remove(node) + # Make node singleton self.merge_sets[node] = OrderedSet([node]) @@ -61,29 +63,22 @@ class AugmentedGraphHelper: 2. Extra deps of node and its merge equivalents """ deps: OrderedSet[fx.Node] = OrderedSet() + # For each node in the merge set for merged_node in self.merge_sets[node]: # Add direct dependencies from all_input_nodes deps.update(merged_node.all_input_nodes) # Add extra dependencies deps.update(self.extra_deps[merged_node]) + return deps def has_cycle(self) -> bool: merged_deps = {n: self.get_merged_deps(n) for n in self.graph.nodes} return torch._dynamo.graph_deduplication._has_cycle(self.graph, merged_deps) - def has_path( - self, - source: fx.Node, - target: fx.Node, - bounded_search_range: Optional[tuple[int, int]] = None, - ) -> bool: - """ - Check if there's a path from source to target. - - If bounds are provided, only searches nodes within the idx of these ranges. - """ + def has_path(self, source: fx.Node, target: fx.Node) -> bool: + """Check if there's a path from source to target.""" # we should not be checking path from node to itself assert self.merge_sets[source] is not self.merge_sets[target] @@ -97,14 +92,6 @@ class AugmentedGraphHelper: # Get all dependencies for dep in self.get_merged_deps(current): - # If using bounds, skip nodes outside the range - if bounded_search_range is not None and self.node_to_idx is not None: - min_idx, max_idx = bounded_search_range - dep_idx = self.node_to_idx.get(dep) - assert dep_idx is not None - if dep_idx < min_idx or dep_idx > max_idx: - continue - # Check if we reached source or its equivalent if dep in self.merge_sets[source]: return True diff --git a/torch/_inductor/fx_passes/overlap_preserving_bucketer.py b/torch/_inductor/fx_passes/overlap_preserving_bucketer.py index a4333e59d804..aed6076207eb 100644 --- a/torch/_inductor/fx_passes/overlap_preserving_bucketer.py +++ b/torch/_inductor/fx_passes/overlap_preserving_bucketer.py @@ -1,5 +1,4 @@ from collections import defaultdict -from dataclasses import dataclass, field from typing import Optional import torch @@ -12,58 +11,10 @@ from torch._inductor.fx_passes.bucketing import ( is_reduce_scatter_tensor as is_reduce_scatter, is_wait_tensor, ) -from torch._inductor.fx_passes.overlap_scheduling import CollectiveInfo +from torch._inductor.fx_passes.overlap_scheduling import CollBucket, CollectiveInfo from torch.utils._ordered_set import OrderedSet -@dataclass(slots=True) -class CollBucket: - """Track information about a bucket of collectives.""" - - collectives: list[fx.Node] = field( - default_factory=list - ) # Original collective starts - total_bytes: int = 0 - min_start_idx: Optional[int] = None # Minimum index of collective starts - max_wait_idx: Optional[int] = None # Maximum index of collective waits - - bucketed_start: Optional[fx.Node] = None # After bucketing - bucketed_wait: Optional[fx.Node] = None # After bucketing - - def add_collective( - self, - coll_info: CollectiveInfo, - node_idx: dict[fx.Node, int], - ) -> None: - """ - Add a collective to this bucket and update bucket metadata. - - This handles all updates needed when adding a collective: - - Appends to collectives list - - Updates total bytes - - Updates min_start_idx and max_wait_idx - """ - collective = coll_info.start_node - - # Add to bucket - self.collectives.append(collective) - self.total_bytes += coll_info.size_bytes - - # Update min start index - start_idx = node_idx[collective] - if self.min_start_idx is None: - self.min_start_idx = start_idx - else: - self.min_start_idx = min(self.min_start_idx, start_idx) - - # Update max wait index - wait_idx = node_idx[coll_info.wait_node] - if self.max_wait_idx is None: - self.max_wait_idx = wait_idx - else: - self.max_wait_idx = max(self.max_wait_idx, wait_idx) - - def bucket_key(node: torch.fx.Node) -> Optional[object]: if is_all_gather(node): return _ag_group_key(node) @@ -93,19 +44,20 @@ class OverlapPreservingBucketer: self.scheduled = scheduled self.max_bucket_memory_gb = max_bucket_memory_gb self.node_idx = {n: i for i, n in enumerate(scheduled)} - self.aug_graph = AugmentedGraphHelper(self.graph, node_to_idx=self.node_idx) def bucket_collectives(self) -> None: """Main entry point for bucketing collectives.""" + aug_graph = AugmentedGraphHelper(self.graph) + # Add extra dependencies for hidden collectives # For each hidden collective, add: compute -> start and wait -> compute for start_node, info in self.collective_info.items(): if info.hiding_node and not info.is_exposed: # Add edge: hiding_compute depends on start (start must come before compute) - self.aug_graph.add_extra_dep(n=info.hiding_node, dep=start_node) + aug_graph.add_extra_dep(n=info.hiding_node, dep=start_node) # Add edge: wait depends on hiding_compute (compute must come before wait) - self.aug_graph.add_extra_dep(n=info.wait_node, dep=info.hiding_node) + aug_graph.add_extra_dep(n=info.wait_node, dep=info.hiding_node) # Group collectives by bucket key (type, group, etc.) grouped_collectives: dict[object, OrderedSet[fx.Node]] = defaultdict(OrderedSet) @@ -116,7 +68,7 @@ class OverlapPreservingBucketer: all_buckets: list[CollBucket] = [] for collective_group in grouped_collectives.values(): - buckets = self._find_buckets(collective_group) + buckets = self._find_buckets(collective_group, aug_graph) all_buckets.extend(buckets) # Collect all extra dependencies to preserve after bucketing @@ -143,6 +95,7 @@ class OverlapPreservingBucketer: def _find_buckets( self, collective_group: OrderedSet[fx.Node], + aug_graph: AugmentedGraphHelper, ) -> list[CollBucket]: """Find valid buckets within a group of similar collectives.""" @@ -155,10 +108,13 @@ class OverlapPreservingBucketer: continue # Initialize bucket with first collective - bucket_info = CollBucket() - bucket_info.add_collective(self.collective_info[start_node], self.node_idx) + bucket_info = CollBucket( + collectives=[start_node], + total_bytes=self.collective_info[start_node].size_bytes, + ) processed.add(start_node) + # TODO - limit within range for candidate in collective_group: if candidate in processed: continue @@ -167,10 +123,9 @@ class OverlapPreservingBucketer: if bucket_info.total_bytes + candidate_bytes > max_bucket_bytes: continue - if self._can_add_to_bucket(bucket_info, candidate): - bucket_info.add_collective( - self.collective_info[candidate], self.node_idx - ) + if self._can_add_to_bucket(bucket_info, candidate, aug_graph): + bucket_info.collectives.append(candidate) + bucket_info.total_bytes += candidate_bytes processed.add(candidate) if len(bucket_info.collectives) > 1: @@ -182,30 +137,11 @@ class OverlapPreservingBucketer: """Check if there's an ancestor relationship between two nodes.""" return n1 in self.node_ancestors[n2] or n2 in self.node_ancestors[n1] - def _has_path( - self, - source: fx.Node, - source_bounds: tuple[int, int], - target: fx.Node, - target_bounds: tuple[int, int], - ) -> bool: - """Check if there's a path from source to target with bounded search.""" - - search_range = ( - min(source_bounds[0], target_bounds[0]), - max(source_bounds[1], target_bounds[1]), - ) - - return self.aug_graph.has_path( - source, - target, - bounded_search_range=search_range, - ) - def _can_add_to_bucket( self, bucket_info: CollBucket, candidate: fx.Node, + aug_graph: AugmentedGraphHelper, ) -> bool: """ Check if candidate can be added to bucket without interfering @@ -238,39 +174,29 @@ class OverlapPreservingBucketer: # Check if there's a path between any existing start and candidate start. # Because the collectives have already been merged, we can just start from one # of them. + # TODO: we have a range of possible idxs of the merged node, and idx of new node. + # we should not do path search beyond that range existing_coll = bucket_info.collectives[0] - - # Calculate bounds for path search - candidate_idx = self.node_idx[candidate] - candidate_wait_idx = self.node_idx[candidate_wait] - - bucket_min_idx = bucket_info.min_start_idx - bucket_max_idx = bucket_info.max_wait_idx - assert bucket_min_idx is not None and bucket_max_idx is not None - existing_bounds = (bucket_min_idx, bucket_max_idx) - candidate_bounds = (candidate_idx, candidate_wait_idx) - - if self._has_path(existing_coll, existing_bounds, candidate, candidate_bounds): + if aug_graph.has_path(existing_coll, candidate): return False - if self._has_path(candidate, candidate_bounds, existing_coll, existing_bounds): + if aug_graph.has_path(candidate, existing_coll): return False # Safe to merge starts - do the merge - self.aug_graph.merge_to_set(existing_coll, candidate) + aug_graph.merge_to_set(existing_coll, candidate) # Step 3: Check and merge waits existing_wait = self.collective_info[existing_coll].wait_node - - if self._has_path( - existing_wait, existing_bounds, candidate_wait, candidate_bounds - ) or self._has_path( - candidate_wait, candidate_bounds, existing_wait, existing_bounds + candidate_wait = candidate_info.wait_node + # TODO - as above, limit search by idx + if aug_graph.has_path(existing_wait, candidate_wait) or aug_graph.has_path( + candidate_wait, existing_wait ): # Unmerge the start we just merged - self.aug_graph.unmerge_node(candidate) + aug_graph.unmerge_node(candidate) return False - self.aug_graph.merge_to_set(existing_wait, candidate_wait) + aug_graph.merge_to_set(existing_wait, candidate_wait) return True def _apply_bucket( diff --git a/torch/_inductor/fx_passes/overlap_scheduling.py b/torch/_inductor/fx_passes/overlap_scheduling.py index 14362aa4b729..e6468d349e2e 100644 --- a/torch/_inductor/fx_passes/overlap_scheduling.py +++ b/torch/_inductor/fx_passes/overlap_scheduling.py @@ -157,6 +157,16 @@ class CollectiveInfo: return self.exposed_time_ms != 0 +@dataclass +class CollBucket: + """Track information about a bucket of collectives.""" + + collectives: list[fx.Node] # Original collective starts + bucketed_start: Optional[fx.Node] = None # After bucketing + bucketed_wait: Optional[fx.Node] = None # After bucketing + total_bytes: int = 0 + + class OverlapScheduler: """ Scheduler that reorders operations to maximize compute-collective overlap. From fd4bde430a51e5f216295c950d962c6343119821 Mon Sep 17 00:00:00 2001 From: PyTorch MergeBot Date: Wed, 8 Oct 2025 15:10:38 +0000 Subject: [PATCH 008/182] Revert "list_stored_sd_metadata API. (#160610)" This reverts commit da903b6a8be422529d47649e89c0d50bb95c37ca. Reverted https://github.com/pytorch/pytorch/pull/160610 on behalf of https://github.com/jeffdaily due to broke ROCm CI, but flaky also on CUDA CI https://hud.pytorch.org/failure?name=periodic%20%2F%20linux-jammy-rocm-py3.10%20%2F%20test%20(distributed%2C%202%2C%203%2C%20linux.rocm.gpu.mi250.4%2C%20module%3Arocm%2C%20oncall%3Adistributed)&jobName=undefined&failureCaptures=distributed%2Fcheckpoint%2Ftest_list_stored_state_dict.py%3A%3ATestListStateDict%3A%3Atest_list_stored_sd_metadata ([comment](https://github.com/pytorch/pytorch/pull/160610#issuecomment-3382023022)) --- docs/source/distributed.checkpoint.md | 10 --- .../checkpoint/test_list_stored_state_dict.py | 61 ------------------- torch/distributed/checkpoint/__init__.py | 1 - .../distributed/checkpoint/metadata_utils.py | 33 ---------- 4 files changed, 105 deletions(-) delete mode 100644 test/distributed/checkpoint/test_list_stored_state_dict.py delete mode 100644 torch/distributed/checkpoint/metadata_utils.py diff --git a/docs/source/distributed.checkpoint.md b/docs/source/distributed.checkpoint.md index 4a29f9e69363..c733ffef18d9 100644 --- a/docs/source/distributed.checkpoint.md +++ b/docs/source/distributed.checkpoint.md @@ -64,16 +64,6 @@ The entrypoints to load and save a checkpoint are the following: .. autofunction:: load_state_dict ``` -Following APIs can be used for inspecting the metadata of a checkpoint/stored state-dict. - -```{eval-rst} -.. automodule:: torch.distributed.checkpoint.metadata_utils -``` - -```{eval-rst} -.. autofunction:: list_stored_state_dict -``` - The following module is also useful for additional customization of the staging mechanisms used for asynchronous checkpointing (`torch.distributed.checkpoint.async_save`): ```{eval-rst} diff --git a/test/distributed/checkpoint/test_list_stored_state_dict.py b/test/distributed/checkpoint/test_list_stored_state_dict.py deleted file mode 100644 index a2a90072b803..000000000000 --- a/test/distributed/checkpoint/test_list_stored_state_dict.py +++ /dev/null @@ -1,61 +0,0 @@ -# Owner(s): ["oncall: distributed checkpointing"] - -import io - -import torch -import torch.distributed.checkpoint as dist_cp -from torch.distributed.checkpoint.metadata import ( - BytesStorageMetadata, - TensorStorageMetadata, -) -from torch.distributed.device_mesh import init_device_mesh -from torch.distributed.tensor import distribute_tensor, Replicate, Shard -from torch.testing._internal.common_utils import run_tests -from torch.testing._internal.distributed._tensor.common_dtensor import ( - DTensorTestBase, - skip_if_lt_x_gpu, - with_comms, -) -from torch.testing._internal.distributed.checkpoint_utils import with_temp_dir - - -class TestListStateDict(DTensorTestBase): - @with_comms - @skip_if_lt_x_gpu(4) - @with_temp_dir - def test_list_stored_sd_metadata(self) -> None: - CHECKPOINT_DIR = self.temp_dir - global_tensor = torch.arange(16, dtype=torch.float).view(4, 4) - mesh_shape = (2, self.world_size // 2) - mesh_2d = init_device_mesh(self.device_type, mesh_shape) - # Save 1) DTensor 2) Blob - dtensor = distribute_tensor( - global_tensor, - mesh_2d, - placements=[Shard(0), Replicate()], - ) - state_dict_to_save = { - "distributed_weight": dtensor, - "bytes_data": io.BytesIO(b"TrainingEpoch:4"), - } - - dist_cp.save( - state_dict=state_dict_to_save, - storage_writer=dist_cp.FileSystemWriter(path=CHECKPOINT_DIR), - planner=dist_cp.DefaultSavePlanner(), - ) - md = dist_cp.list_stored_state_dict(checkpoint_id=CHECKPOINT_DIR) - - # Verify DTensor - self.assertTrue("distributed_weight" in md) - self.assertTrue(isinstance(md["distributed_weight"], TensorStorageMetadata)) - self.assertEqual(md["distributed_weight"].size, torch.Size([4, 4])) - self.assertEqual(md["distributed_weight"].properties.dtype, torch.float32) - - # Verify Blob - self.assertTrue("bytes_data" in md) - self.assertTrue(isinstance(md["bytes_data"], BytesStorageMetadata)) - - -if __name__ == "__main__": - run_tests() diff --git a/torch/distributed/checkpoint/__init__.py b/torch/distributed/checkpoint/__init__.py index bcf12b23a31b..c9eb7de5b25a 100644 --- a/torch/distributed/checkpoint/__init__.py +++ b/torch/distributed/checkpoint/__init__.py @@ -9,7 +9,6 @@ from .metadata import ( Metadata, TensorStorageMetadata, ) -from .metadata_utils import list_stored_state_dict from .optimizer import load_sharded_optimizer_state_dict from .planner import LoadPlan, LoadPlanner, ReadItem, SavePlan, SavePlanner, WriteItem from .quantized_hf_storage import QuantizedHuggingFaceStorageReader diff --git a/torch/distributed/checkpoint/metadata_utils.py b/torch/distributed/checkpoint/metadata_utils.py deleted file mode 100644 index 2ed61ba9b16f..000000000000 --- a/torch/distributed/checkpoint/metadata_utils.py +++ /dev/null @@ -1,33 +0,0 @@ -import os -from typing import cast, Optional, Union - -from torch.distributed.checkpoint.metadata import ( - BytesStorageMetadata, - TensorStorageMetadata, -) - -from ._storage_utils import _storage_setup -from .storage import StorageReader - - -__all__ = ["list_stored_state_dict"] - - -def list_stored_state_dict( - checkpoint_id: Union[str, os.PathLike, None] = None, - storage_reader: Optional[StorageReader] = None, -) -> dict[str, Union[TensorStorageMetadata, BytesStorageMetadata]]: - """ - List the stored checkpoint metadata. - NB: The returned state-dict keys are flattened. - """ - storage_reader = cast( - StorageReader, _storage_setup(storage_reader, checkpoint_id, reader=True) - ) - md = storage_reader.read_metadata() - sd = md.state_dict_metadata # flattened dict. - for v in sd.values(): - if isinstance(v, TensorStorageMetadata): - v.chunks = [] # Limit exposing storage/impl details. - - return sd From 90c0825e2deb0a46faf5cc2deb7184f6f8ea7a6d Mon Sep 17 00:00:00 2001 From: Nikita Shulga Date: Wed, 8 Oct 2025 08:01:33 -0700 Subject: [PATCH 009/182] [GHF] Allow reverts from pytorch-auto-revert app (#164911) This is a bit weird, but author_login is not a unique field, but author_url is. Explicitly allow https://github.com/apps/pytorch-auto-revert to issue revert commands Update mocks by running ``` sed -i -e s/8e262b0495bd934d39dda198d4c09144311c5ddd6cca6a227194bd48dbfe7201/47860a8f57a214a426d1150c29893cbc2aa49507f12b731483b1a1254bca3428/ gql_mocks.json ``` Test plan: Run ```python from trymerge import GitHubPR pr=GitHubPR("pytorch", "pytorch", 164660) print(pr.get_last_comment().author_url, pr.get_comment_by_id(3375785595).author_url) ``` that should produce ``` https://github.com/pytorch-auto-revert https://github.com/apps/pytorch-auto-revert ``` Plus added a regression test that checks two particular comments for revert validity `pytorch-auto-revert` user is my alter ego :) Pull Request resolved: https://github.com/pytorch/pytorch/pull/164911 Approved by: https://github.com/jeanschmidt --- .github/scripts/drci_mocks.json.gz | Bin 9128 -> 9137 bytes .github/scripts/github_utils.py | 1 + .github/scripts/gql_mocks.json.gz | Bin 276420 -> 272170 bytes .github/scripts/test_check_labels.py | 2 ++ .github/scripts/test_trymerge.py | 18 ++++++++++++++++++ .github/scripts/trymerge.py | 7 +++++++ 6 files changed, 28 insertions(+) diff --git a/.github/scripts/drci_mocks.json.gz b/.github/scripts/drci_mocks.json.gz index b8c48301369470e90b3f3e957185acac3da5513a..4e03d0672bddfa25005979ea9031f7e25d2fe5ce 100644 GIT binary patch delta 51 zcmV-30L=fWN3ll;ABzYGd3NS#u?UDGA>xDiB$pCT9n6;wd%ZvX`%nJ|009600{|?k J0%U(W0RSJ76fOV& delta 42 ycmdn!zQUbDzMF$1kiRT#BS(j_#GdA#|GvDp|0~bH!0`V+GlQOOSaPZrBLe_jz7LxK diff --git a/.github/scripts/github_utils.py b/.github/scripts/github_utils.py index 0fc60cb31e2a..110015988a5c 100644 --- a/.github/scripts/github_utils.py +++ b/.github/scripts/github_utils.py @@ -18,6 +18,7 @@ class GitHubComment: body_text: str created_at: str author_login: str + author_url: Optional[str] author_association: str editor_login: Optional[str] database_id: int diff --git a/.github/scripts/gql_mocks.json.gz b/.github/scripts/gql_mocks.json.gz index 67355239dc422630971f28d7b2474154eeaf78f4..70663a01e7774ff86d1fc26f224fac5dfc438a1c 100644 GIT binary patch literal 272170 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

Vs=WH5!Q$X!uI27%$S8Vos)ffKJ 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