pytorch - 💡(How to fix) Fix [Dynamo] TypeError: cannot determine truth value of Relational during stride sorting with dynamic=True

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

import torch import torch.nn.functional as F

def target_function(x, shift, g2_x, g2_pw, g2_b, g2_fw, g3_x, g3_shift, g4_rolled, g4_cw, g4_cb, g5_x, g5_shift, g7_x, g7_shift, g8_x, g8_shift, g9_x, g9_aff, g9_crop, g10_x, g10_off, g10_pw, g10_pb, g10_blend, g1_crop, g6_cw, g6_cb):

resized = F.interpolate(x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)

patches = F.unfold(g2_x, kernel_size=3, padding=1, stride=1).transpose(1, 2).contiguous()
proj = torch.einsum('blp,op->blo', patches, g2_pw) + g2_b.view(1, 1, -1)
restored = torch.einsum('blo,po->blp', F.gelu(proj), g2_fw).transpose(1, 2).contiguous()
norm = F.fold(torch.ones_like(restored), output_size=[6, 7], kernel_size=3, padding=1, stride=1).clamp_min(1.0)
g2_call = F.fold(restored, output_size=[6, 7], kernel_size=3, padding=1, stride=1) / norm

g3_call = F.interpolate(g3_x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)
g5_call = F.interpolate(g5_x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)
g7_call = F.interpolate(g7_x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)
g8_call = F.interpolate(g8_x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)

conv4 = F.conv2d(g4_rolled[:, :, 1:7, 1:8], g4_cw, g4_cb, padding=1)
pool4 = F.max_pool2d(conv4, kernel_size=3, stride=1, padding=1)
g4_call = torch.where(conv4 > pool4.mean(dim=[2, 3], keepdim=True), conv4, pool4)

res9 = F.interpolate(F.pad(g9_x, [1, 2, 2, 1], 'reflect'), scale_factor=1.5, mode='bicubic', align_corners=False)
grid9 = F.affine_grid(g9_aff, size=[2, 3, 13, 15], align_corners=False)
g9_call = F.grid_sample(res9, grid9, mode='bilinear', padding_mode='reflection', align_corners=False)

yy, xx = torch.meshgrid(torch.linspace(-1, 1, 6), torch.linspace(-1, 1, 7), indexing='ij')
base = torch.stack([xx, yy], dim=-1).view(1, 6, 7, 2)
gs = [F.grid_sample(g10_x, (base + g10_off[:, i].view(2, 1, 1, 2)).clamp(-1, 1), mode='bilinear', align_corners=True, padding_mode='border') for i in range(4)]
proj10 = F.conv2d(torch.cat(gs, dim=1), g10_pw, g10_pb)
sm10 = F.avg_pool2d(proj10, kernel_size=3, stride=1, padding=1)
fused = proj10 * g10_blend.view(1, -1, 1, 1) + sm10 * (1.0 - g10_blend.view(1, -1, 1, 1))
g10_call = torch.tanh(fused) * torch.sigmoid(fused)

g1_call = torch.roll(resized, shifts=[1, -2], dims=[-2, -1])
conv6 = F.conv2d(resized[:, :, 1:7, 1:8], g6_cw, g6_cb, padding=1)
pool6 = F.max_pool2d(conv6, kernel_size=3, stride=1, padding=1)
g6_call = torch.where(conv6 > pool6.mean(dim=[2, 3], keepdim=True), conv6, pool6)

return g2_call, g3_call, g4_call, g5_call, g7_call, g8_call, g9_call, g10_call, g1_call, g6_call

if name == "main": import traceback

def rand(*shape):
    return torch.randn(*shape, dtype=torch.float32, requires_grad=True)

def zero(*shape):
    return torch.zeros(*shape, dtype=torch.int64)

def make_inputs():
    return [
        rand(2, 3, 6, 7), zero(2),
        rand(2, 3, 6, 7), rand(4, 27), rand(4), rand(27, 4),
        rand(2, 3, 6, 7), zero(2),
        rand(2, 3, 9, 8), rand(4, 3, 3, 3), rand(4),
        rand(2, 3, 6, 7), zero(2),
        rand(2, 3, 6, 7), zero(2),
        rand(2, 3, 6, 7), zero(2),
        rand(2, 3, 6, 7), rand(2, 2, 3), zero(2),
        rand(2, 3, 6, 7), rand(2, 4, 2),
        rand(4, 12, 1, 1), rand(4), rand(4),
        zero(2), rand(4, 3, 3, 3), rand(4),
    ]

def clone_inputs(xs):
    return [
        x.detach().clone().requires_grad_(x.requires_grad)
        if x.is_floating_point() else x.clone()
        for x in xs
    ]

def run(name, fn, xs):
    print(f"\n=== {name} ===")
    try:
        ys = fn(*xs)
        loss = sum(y.sum() for y in ys if y.is_floating_point())

        print("forward ok")
        print("loss:", loss.item())

        loss.backward()
        print("backward ok")

    except Exception:
        print("failed")
        traceback.print_exc()

print("torch:", torch.__version__)
print("cuda:", torch.version.cuda)

inputs = make_inputs()

run("Eager", target_function, clone_inputs(inputs))

compiled_fn = torch.compile(target_function, backend="inductor", dynamic=True)
run("Compiled / Inductor", compiled_fn, clone_inputs(inputs))

Fix Action

Fix / Workaround

patches = F.unfold(g2_x, kernel_size=3, padding=1, stride=1).transpose(1, 2).contiguous() proj = torch.einsum('blp,op->blo', patches, g2_pw) + g2_b.view(1, 1, -1) restored = torch.einsum('blo,po->blp', F.gelu(proj), g2_fw).transpose(1, 2).contiguous() norm = F.fold(torch.ones_like(restored), output_size=[6, 7], kernel_size=3, padding=1, stride=1).clamp_min(1.0) g2_call = F.fold(restored, output_size=[6, 7], kernel_size=3, padding=1, stride=1) / norm

=== Compiled / Inductor === failed Traceback (most recent call last): File "/tmp/bug.py", line 78, in run ys = fn(*xs) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/eval_frame.py", line 1158, in compile_wrapper raise e.remove_dynamo_frames() from None # see TORCHDYNAMO_VERBOSE=1 File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/eval_frame.py", line 1141, in compile_wrapper result = fn(*args, **kwargs) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 2619, in call result = self._torchdynamo_orig_backend( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 2310, in call result = self._inner_convert( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 777, in call result = _compile( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 2094, in _compile guarded_code, tracer_output = compile_inner(code, one_graph, hooks) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_utils_internal.py", line 96, in wrapper_function return function(*args, **kwargs) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1679, in compile_inner result = _compile_inner(code, one_graph, hooks) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1739, in _compile_inner dynamo_output = compile_frame( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1584, in compile_frame bytecode, tracer_output = transform_code_object(code, transform) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/bytecode_transformation.py", line 1766, in transform_code_object tracer_output = transformations(instructions, code_options) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1555, in transform tracer_output = trace_frame( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 368, in _fn return fn(*args, **kwargs) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 954, in trace_frame run_tracer() File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 935, in run_tracer tracer.run() File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1883, in run while self.step(): File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1536, in step self.dispatch_table[inst.opcode](self, inst) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 5449, in RETURN_VALUE self._return(inst) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 5422, in _return all_stack_locals_metadata = self.output.compile_subgraph( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/output_graph.py", line 2171, in compile_subgraph instructions, subgraph_pycode = self.compile_and_call_fx_graph( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/output_graph.py", line 2817, in compile_and_call_fx_graph compiled_fn = self.call_user_compiler(gm, self.example_inputs()) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/output_graph.py", line 2987, in call_user_compiler return self._call_user_compiler(gm, example_inputs) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/output_graph.py", line 3049, in _call_user_compiler compiled_fn = compiler_fn(gm, example_inputs) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/repro/after_dynamo.py", line 159, in call compiled_gm = compiler_fn(gm, example_inputs) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/init.py", line 2482, in call return compile_fx( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 2764, in compile_fx return _maybe_wrap_and_compile_fx_main( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 2845, in _maybe_wrap_and_compile_fx_main return _compile_fx_main( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 3058, in _compile_fx_main raise e.remove_dynamo_frames() from None # see TORCHDYNAMO_VERBOSE=1 File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 3043, in _compile_fx_main return dynamo_common.aot_autograd( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/backends/common.py", line 123, in call cg = aot_module_simplified(gm, example_inputs, **self.kwargs) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/aot_autograd.py", line 1238, in aot_module_simplified compiled_fn, _ = aot_stage2_compile( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/graph_compile.py", line 349, in aot_stage2_compile return aot_stage2_autograd( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/graph_compile.py", line 2459, in aot_stage2_autograd fwd_output_strides, compiled_fw_func = _aot_stage2b_fw_compile( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/graph_compile.py", line 2240, in _aot_stage2b_fw_compile return _aot_stage2b_compile_forward_or_inference( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/graph_compile.py", line 2779, in _aot_stage2b_compile_forward_or_inference compiled_fw_func = compiler(fw_module, adjusted_flat_args) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/schemas.py", line 1460, in call output_code = self.compiler_fn(gm, example_inputs) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 2906, in fw_compiler_base return compile_fx_forward( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 2534, in compile_fx_forward result = inner_compile( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 836, in compile_fx_inner return wrap_compiler_debug(_compile_fx_inner, compiler_name="inductor")( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/repro/after_aot.py", line 317, in debug_wrapper inner_compiled_fn = compiler_fn(gm, example_inputs) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 1078, in _compile_fx_inner raise InductorError(e, currentframe()).with_traceback( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 1058, in _compile_fx_inner mb_compiled_graph = fx_codegen_and_compile( File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 1845, in fx_codegen_and_compile return scheme.codegen_and_compile(gm, example_inputs, inputs_to_check, graph_kwargs) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 1521, in codegen_and_compile graph.run(*example_inputs) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/graph.py", line 1079, in run return super().run(*args) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/fx/interpreter.py", line 197, in run self.env[node] = self.run_node(node) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/graph.py", line 2010, in run_node ir.get_stride_order(strides), File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/ir.py", line 345, in get_stride_order sorted_idx: Sequence[int] = get_fill_order(seq, shape_env) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/ir.py", line 320, in get_fill_order sorted_idx: Sequence[int] = argsort(seq) File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/utils.py", line 1451, in argsort sort_idx = list(sorted(a_r, key=getter, reverse=True)) # noqa: C413 File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/sympy/core/relational.py", line 519, in bool raise TypeError( torch._inductor.exc.InductorError: TypeError: cannot determine truth value of Relational: 1 < s53

Code Example

import torch
import torch.nn.functional as F

def target_function(x, shift, g2_x, g2_pw, g2_b, g2_fw, g3_x, g3_shift, g4_rolled, g4_cw, g4_cb, 
                    g5_x, g5_shift, g7_x, g7_shift, g8_x, g8_shift, g9_x, g9_aff, g9_crop, 
                    g10_x, g10_off, g10_pw, g10_pb, g10_blend, g1_crop, g6_cw, g6_cb):
    
    resized = F.interpolate(x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)
    
    patches = F.unfold(g2_x, kernel_size=3, padding=1, stride=1).transpose(1, 2).contiguous()
    proj = torch.einsum('blp,op->blo', patches, g2_pw) + g2_b.view(1, 1, -1)
    restored = torch.einsum('blo,po->blp', F.gelu(proj), g2_fw).transpose(1, 2).contiguous()
    norm = F.fold(torch.ones_like(restored), output_size=[6, 7], kernel_size=3, padding=1, stride=1).clamp_min(1.0)
    g2_call = F.fold(restored, output_size=[6, 7], kernel_size=3, padding=1, stride=1) / norm

    g3_call = F.interpolate(g3_x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)
    g5_call = F.interpolate(g5_x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)
    g7_call = F.interpolate(g7_x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)
    g8_call = F.interpolate(g8_x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)

    conv4 = F.conv2d(g4_rolled[:, :, 1:7, 1:8], g4_cw, g4_cb, padding=1)
    pool4 = F.max_pool2d(conv4, kernel_size=3, stride=1, padding=1)
    g4_call = torch.where(conv4 > pool4.mean(dim=[2, 3], keepdim=True), conv4, pool4)

    res9 = F.interpolate(F.pad(g9_x, [1, 2, 2, 1], 'reflect'), scale_factor=1.5, mode='bicubic', align_corners=False)
    grid9 = F.affine_grid(g9_aff, size=[2, 3, 13, 15], align_corners=False)
    g9_call = F.grid_sample(res9, grid9, mode='bilinear', padding_mode='reflection', align_corners=False)

    yy, xx = torch.meshgrid(torch.linspace(-1, 1, 6), torch.linspace(-1, 1, 7), indexing='ij')
    base = torch.stack([xx, yy], dim=-1).view(1, 6, 7, 2)
    gs = [F.grid_sample(g10_x, (base + g10_off[:, i].view(2, 1, 1, 2)).clamp(-1, 1), mode='bilinear', align_corners=True, padding_mode='border') for i in range(4)]
    proj10 = F.conv2d(torch.cat(gs, dim=1), g10_pw, g10_pb)
    sm10 = F.avg_pool2d(proj10, kernel_size=3, stride=1, padding=1)
    fused = proj10 * g10_blend.view(1, -1, 1, 1) + sm10 * (1.0 - g10_blend.view(1, -1, 1, 1))
    g10_call = torch.tanh(fused) * torch.sigmoid(fused)

    g1_call = torch.roll(resized, shifts=[1, -2], dims=[-2, -1])
    conv6 = F.conv2d(resized[:, :, 1:7, 1:8], g6_cw, g6_cb, padding=1)
    pool6 = F.max_pool2d(conv6, kernel_size=3, stride=1, padding=1)
    g6_call = torch.where(conv6 > pool6.mean(dim=[2, 3], keepdim=True), conv6, pool6)

    return g2_call, g3_call, g4_call, g5_call, g7_call, g8_call, g9_call, g10_call, g1_call, g6_call

if __name__ == "__main__":
    import traceback

    def rand(*shape):
        return torch.randn(*shape, dtype=torch.float32, requires_grad=True)

    def zero(*shape):
        return torch.zeros(*shape, dtype=torch.int64)

    def make_inputs():
        return [
            rand(2, 3, 6, 7), zero(2),
            rand(2, 3, 6, 7), rand(4, 27), rand(4), rand(27, 4),
            rand(2, 3, 6, 7), zero(2),
            rand(2, 3, 9, 8), rand(4, 3, 3, 3), rand(4),
            rand(2, 3, 6, 7), zero(2),
            rand(2, 3, 6, 7), zero(2),
            rand(2, 3, 6, 7), zero(2),
            rand(2, 3, 6, 7), rand(2, 2, 3), zero(2),
            rand(2, 3, 6, 7), rand(2, 4, 2),
            rand(4, 12, 1, 1), rand(4), rand(4),
            zero(2), rand(4, 3, 3, 3), rand(4),
        ]

    def clone_inputs(xs):
        return [
            x.detach().clone().requires_grad_(x.requires_grad)
            if x.is_floating_point() else x.clone()
            for x in xs
        ]

    def run(name, fn, xs):
        print(f"\n=== {name} ===")
        try:
            ys = fn(*xs)
            loss = sum(y.sum() for y in ys if y.is_floating_point())

            print("forward ok")
            print("loss:", loss.item())

            loss.backward()
            print("backward ok")

        except Exception:
            print("failed")
            traceback.print_exc()

    print("torch:", torch.__version__)
    print("cuda:", torch.version.cuda)

    inputs = make_inputs()

    run("Eager", target_function, clone_inputs(inputs))

    compiled_fn = torch.compile(target_function, backend="inductor", dynamic=True)
    run("Compiled / Inductor", compiled_fn, clone_inputs(inputs))

---

(torch-nightly) xyt19@Oasis:/tmp$ TORCHDYNAMO_VERBOSE=1 python bug.py
torch: 2.13.0.dev20260521+cu130
cuda: 13.0

=== Eager ===
forward ok
loss: 2699.479736328125
backward ok

=== Compiled / Inductor ===
failed
Traceback (most recent call last):
  File "/tmp/bug.py", line 78, in run
    ys = fn(*xs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/eval_frame.py", line 1158, in compile_wrapper
    raise e.remove_dynamo_frames() from None  # see TORCHDYNAMO_VERBOSE=1
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/eval_frame.py", line 1141, in compile_wrapper
    result = fn(*args, **kwargs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 2619, in __call__
    result = self._torchdynamo_orig_backend(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 2310, in __call__
    result = self._inner_convert(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 777, in __call__
    result = _compile(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 2094, in _compile
    guarded_code, tracer_output = compile_inner(code, one_graph, hooks)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_utils_internal.py", line 96, in wrapper_function
    return function(*args, **kwargs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1679, in compile_inner
    result = _compile_inner(code, one_graph, hooks)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1739, in _compile_inner
    dynamo_output = compile_frame(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1584, in compile_frame
    bytecode, tracer_output = transform_code_object(code, transform)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/bytecode_transformation.py", line 1766, in transform_code_object
    tracer_output = transformations(instructions, code_options)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1555, in transform
    tracer_output = trace_frame(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 368, in _fn
    return fn(*args, **kwargs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 954, in trace_frame
    run_tracer()
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 935, in run_tracer
    tracer.run()
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1883, in run
    while self.step():
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1536, in step
    self.dispatch_table[inst.opcode](self, inst)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 5449, in RETURN_VALUE
    self._return(inst)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 5422, in _return
    all_stack_locals_metadata = self.output.compile_subgraph(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/output_graph.py", line 2171, in compile_subgraph
    instructions, subgraph_pycode = self.compile_and_call_fx_graph(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/output_graph.py", line 2817, in compile_and_call_fx_graph
    compiled_fn = self.call_user_compiler(gm, self.example_inputs())
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/output_graph.py", line 2987, in call_user_compiler
    return self._call_user_compiler(gm, example_inputs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/output_graph.py", line 3049, in _call_user_compiler
    compiled_fn = compiler_fn(gm, example_inputs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/repro/after_dynamo.py", line 159, in __call__
    compiled_gm = compiler_fn(gm, example_inputs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/__init__.py", line 2482, in __call__
    return compile_fx(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 2764, in compile_fx
    return _maybe_wrap_and_compile_fx_main(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 2845, in _maybe_wrap_and_compile_fx_main
    return _compile_fx_main(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 3058, in _compile_fx_main
    raise e.remove_dynamo_frames() from None  # see TORCHDYNAMO_VERBOSE=1
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 3043, in _compile_fx_main
    return dynamo_common.aot_autograd(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/backends/common.py", line 123, in __call__
    cg = aot_module_simplified(gm, example_inputs, **self.kwargs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/aot_autograd.py", line 1238, in aot_module_simplified
    compiled_fn, _ = aot_stage2_compile(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/graph_compile.py", line 349, in aot_stage2_compile
    return aot_stage2_autograd(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/graph_compile.py", line 2459, in aot_stage2_autograd
    fwd_output_strides, compiled_fw_func = _aot_stage2b_fw_compile(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/graph_compile.py", line 2240, in _aot_stage2b_fw_compile
    return _aot_stage2b_compile_forward_or_inference(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/graph_compile.py", line 2779, in _aot_stage2b_compile_forward_or_inference
    compiled_fw_func = compiler(fw_module, adjusted_flat_args)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/schemas.py", line 1460, in __call__
    output_code = self.compiler_fn(gm, example_inputs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 2906, in fw_compiler_base
    return compile_fx_forward(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 2534, in compile_fx_forward
    result = inner_compile(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 836, in compile_fx_inner
    return wrap_compiler_debug(_compile_fx_inner, compiler_name="inductor")(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/repro/after_aot.py", line 317, in debug_wrapper
    inner_compiled_fn = compiler_fn(gm, example_inputs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 1078, in _compile_fx_inner
    raise InductorError(e, currentframe()).with_traceback(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 1058, in _compile_fx_inner
    mb_compiled_graph = fx_codegen_and_compile(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 1845, in fx_codegen_and_compile
    return scheme.codegen_and_compile(gm, example_inputs, inputs_to_check, graph_kwargs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 1521, in codegen_and_compile
    graph.run(*example_inputs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/graph.py", line 1079, in run
    return super().run(*args)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/fx/interpreter.py", line 197, in run
    self.env[node] = self.run_node(node)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/graph.py", line 2010, in run_node
    ir.get_stride_order(strides),
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/ir.py", line 345, in get_stride_order
    sorted_idx: Sequence[int] = get_fill_order(seq, shape_env)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/ir.py", line 320, in get_fill_order
    sorted_idx: Sequence[int] = argsort(seq)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/utils.py", line 1451, in argsort
    sort_idx = list(sorted(a_r, key=getter, reverse=True))  # noqa: C413
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/sympy/core/relational.py", line 519, in __bool__
    raise TypeError(
torch._inductor.exc.InductorError: TypeError: cannot determine truth value of Relational: 1 < s53
RAW_BUFFERClick to expand / collapse

🐛 Describe the bug

When compiling a function containing F.interpolate, F.unfold, and F.grid_sample with torch.compile(backend="inductor", dynamic=True), the compilation fails with an InductorError.

The traceback points to torch/_inductor/ir.py in get_stride_order while sorting symbolic strides.

A Repro

import torch
import torch.nn.functional as F

def target_function(x, shift, g2_x, g2_pw, g2_b, g2_fw, g3_x, g3_shift, g4_rolled, g4_cw, g4_cb, 
                    g5_x, g5_shift, g7_x, g7_shift, g8_x, g8_shift, g9_x, g9_aff, g9_crop, 
                    g10_x, g10_off, g10_pw, g10_pb, g10_blend, g1_crop, g6_cw, g6_cb):
    
    resized = F.interpolate(x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)
    
    patches = F.unfold(g2_x, kernel_size=3, padding=1, stride=1).transpose(1, 2).contiguous()
    proj = torch.einsum('blp,op->blo', patches, g2_pw) + g2_b.view(1, 1, -1)
    restored = torch.einsum('blo,po->blp', F.gelu(proj), g2_fw).transpose(1, 2).contiguous()
    norm = F.fold(torch.ones_like(restored), output_size=[6, 7], kernel_size=3, padding=1, stride=1).clamp_min(1.0)
    g2_call = F.fold(restored, output_size=[6, 7], kernel_size=3, padding=1, stride=1) / norm

    g3_call = F.interpolate(g3_x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)
    g5_call = F.interpolate(g5_x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)
    g7_call = F.interpolate(g7_x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)
    g8_call = F.interpolate(g8_x, scale_factor=[1.5, 1.25], mode='bilinear', align_corners=False)

    conv4 = F.conv2d(g4_rolled[:, :, 1:7, 1:8], g4_cw, g4_cb, padding=1)
    pool4 = F.max_pool2d(conv4, kernel_size=3, stride=1, padding=1)
    g4_call = torch.where(conv4 > pool4.mean(dim=[2, 3], keepdim=True), conv4, pool4)

    res9 = F.interpolate(F.pad(g9_x, [1, 2, 2, 1], 'reflect'), scale_factor=1.5, mode='bicubic', align_corners=False)
    grid9 = F.affine_grid(g9_aff, size=[2, 3, 13, 15], align_corners=False)
    g9_call = F.grid_sample(res9, grid9, mode='bilinear', padding_mode='reflection', align_corners=False)

    yy, xx = torch.meshgrid(torch.linspace(-1, 1, 6), torch.linspace(-1, 1, 7), indexing='ij')
    base = torch.stack([xx, yy], dim=-1).view(1, 6, 7, 2)
    gs = [F.grid_sample(g10_x, (base + g10_off[:, i].view(2, 1, 1, 2)).clamp(-1, 1), mode='bilinear', align_corners=True, padding_mode='border') for i in range(4)]
    proj10 = F.conv2d(torch.cat(gs, dim=1), g10_pw, g10_pb)
    sm10 = F.avg_pool2d(proj10, kernel_size=3, stride=1, padding=1)
    fused = proj10 * g10_blend.view(1, -1, 1, 1) + sm10 * (1.0 - g10_blend.view(1, -1, 1, 1))
    g10_call = torch.tanh(fused) * torch.sigmoid(fused)

    g1_call = torch.roll(resized, shifts=[1, -2], dims=[-2, -1])
    conv6 = F.conv2d(resized[:, :, 1:7, 1:8], g6_cw, g6_cb, padding=1)
    pool6 = F.max_pool2d(conv6, kernel_size=3, stride=1, padding=1)
    g6_call = torch.where(conv6 > pool6.mean(dim=[2, 3], keepdim=True), conv6, pool6)

    return g2_call, g3_call, g4_call, g5_call, g7_call, g8_call, g9_call, g10_call, g1_call, g6_call

if __name__ == "__main__":
    import traceback

    def rand(*shape):
        return torch.randn(*shape, dtype=torch.float32, requires_grad=True)

    def zero(*shape):
        return torch.zeros(*shape, dtype=torch.int64)

    def make_inputs():
        return [
            rand(2, 3, 6, 7), zero(2),
            rand(2, 3, 6, 7), rand(4, 27), rand(4), rand(27, 4),
            rand(2, 3, 6, 7), zero(2),
            rand(2, 3, 9, 8), rand(4, 3, 3, 3), rand(4),
            rand(2, 3, 6, 7), zero(2),
            rand(2, 3, 6, 7), zero(2),
            rand(2, 3, 6, 7), zero(2),
            rand(2, 3, 6, 7), rand(2, 2, 3), zero(2),
            rand(2, 3, 6, 7), rand(2, 4, 2),
            rand(4, 12, 1, 1), rand(4), rand(4),
            zero(2), rand(4, 3, 3, 3), rand(4),
        ]

    def clone_inputs(xs):
        return [
            x.detach().clone().requires_grad_(x.requires_grad)
            if x.is_floating_point() else x.clone()
            for x in xs
        ]

    def run(name, fn, xs):
        print(f"\n=== {name} ===")
        try:
            ys = fn(*xs)
            loss = sum(y.sum() for y in ys if y.is_floating_point())

            print("forward ok")
            print("loss:", loss.item())

            loss.backward()
            print("backward ok")

        except Exception:
            print("failed")
            traceback.print_exc()

    print("torch:", torch.__version__)
    print("cuda:", torch.version.cuda)

    inputs = make_inputs()

    run("Eager", target_function, clone_inputs(inputs))

    compiled_fn = torch.compile(target_function, backend="inductor", dynamic=True)
    run("Compiled / Inductor", compiled_fn, clone_inputs(inputs))

Error logs

(torch-nightly) xyt19@Oasis:/tmp$ TORCHDYNAMO_VERBOSE=1 python bug.py
torch: 2.13.0.dev20260521+cu130
cuda: 13.0

=== Eager ===
forward ok
loss: 2699.479736328125
backward ok

=== Compiled / Inductor ===
failed
Traceback (most recent call last):
  File "/tmp/bug.py", line 78, in run
    ys = fn(*xs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/eval_frame.py", line 1158, in compile_wrapper
    raise e.remove_dynamo_frames() from None  # see TORCHDYNAMO_VERBOSE=1
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/eval_frame.py", line 1141, in compile_wrapper
    result = fn(*args, **kwargs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 2619, in __call__
    result = self._torchdynamo_orig_backend(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 2310, in __call__
    result = self._inner_convert(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 777, in __call__
    result = _compile(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 2094, in _compile
    guarded_code, tracer_output = compile_inner(code, one_graph, hooks)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_utils_internal.py", line 96, in wrapper_function
    return function(*args, **kwargs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1679, in compile_inner
    result = _compile_inner(code, one_graph, hooks)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1739, in _compile_inner
    dynamo_output = compile_frame(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1584, in compile_frame
    bytecode, tracer_output = transform_code_object(code, transform)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/bytecode_transformation.py", line 1766, in transform_code_object
    tracer_output = transformations(instructions, code_options)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 1555, in transform
    tracer_output = trace_frame(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 368, in _fn
    return fn(*args, **kwargs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 954, in trace_frame
    run_tracer()
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/convert_frame.py", line 935, in run_tracer
    tracer.run()
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1883, in run
    while self.step():
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 1536, in step
    self.dispatch_table[inst.opcode](self, inst)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 5449, in RETURN_VALUE
    self._return(inst)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/symbolic_convert.py", line 5422, in _return
    all_stack_locals_metadata = self.output.compile_subgraph(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/output_graph.py", line 2171, in compile_subgraph
    instructions, subgraph_pycode = self.compile_and_call_fx_graph(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/output_graph.py", line 2817, in compile_and_call_fx_graph
    compiled_fn = self.call_user_compiler(gm, self.example_inputs())
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/output_graph.py", line 2987, in call_user_compiler
    return self._call_user_compiler(gm, example_inputs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/output_graph.py", line 3049, in _call_user_compiler
    compiled_fn = compiler_fn(gm, example_inputs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/repro/after_dynamo.py", line 159, in __call__
    compiled_gm = compiler_fn(gm, example_inputs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/__init__.py", line 2482, in __call__
    return compile_fx(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 2764, in compile_fx
    return _maybe_wrap_and_compile_fx_main(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 2845, in _maybe_wrap_and_compile_fx_main
    return _compile_fx_main(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 3058, in _compile_fx_main
    raise e.remove_dynamo_frames() from None  # see TORCHDYNAMO_VERBOSE=1
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 3043, in _compile_fx_main
    return dynamo_common.aot_autograd(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/backends/common.py", line 123, in __call__
    cg = aot_module_simplified(gm, example_inputs, **self.kwargs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/aot_autograd.py", line 1238, in aot_module_simplified
    compiled_fn, _ = aot_stage2_compile(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/graph_compile.py", line 349, in aot_stage2_compile
    return aot_stage2_autograd(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/graph_compile.py", line 2459, in aot_stage2_autograd
    fwd_output_strides, compiled_fw_func = _aot_stage2b_fw_compile(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/graph_compile.py", line 2240, in _aot_stage2b_fw_compile
    return _aot_stage2b_compile_forward_or_inference(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/graph_compile.py", line 2779, in _aot_stage2b_compile_forward_or_inference
    compiled_fw_func = compiler(fw_module, adjusted_flat_args)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_functorch/_aot_autograd/schemas.py", line 1460, in __call__
    output_code = self.compiler_fn(gm, example_inputs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 2906, in fw_compiler_base
    return compile_fx_forward(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 2534, in compile_fx_forward
    result = inner_compile(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 836, in compile_fx_inner
    return wrap_compiler_debug(_compile_fx_inner, compiler_name="inductor")(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_dynamo/repro/after_aot.py", line 317, in debug_wrapper
    inner_compiled_fn = compiler_fn(gm, example_inputs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 1078, in _compile_fx_inner
    raise InductorError(e, currentframe()).with_traceback(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 1058, in _compile_fx_inner
    mb_compiled_graph = fx_codegen_and_compile(
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 1845, in fx_codegen_and_compile
    return scheme.codegen_and_compile(gm, example_inputs, inputs_to_check, graph_kwargs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/compile_fx.py", line 1521, in codegen_and_compile
    graph.run(*example_inputs)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/graph.py", line 1079, in run
    return super().run(*args)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/fx/interpreter.py", line 197, in run
    self.env[node] = self.run_node(node)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/graph.py", line 2010, in run_node
    ir.get_stride_order(strides),
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/ir.py", line 345, in get_stride_order
    sorted_idx: Sequence[int] = get_fill_order(seq, shape_env)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/ir.py", line 320, in get_fill_order
    sorted_idx: Sequence[int] = argsort(seq)
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/torch/_inductor/utils.py", line 1451, in argsort
    sort_idx = list(sorted(a_r, key=getter, reverse=True))  # noqa: C413
  File "/home/xyt19/miniconda3/envs/torch-nightly/lib/python3.10/site-packages/sympy/core/relational.py", line 519, in __bool__
    raise TypeError(
torch._inductor.exc.InductorError: TypeError: cannot determine truth value of Relational: 1 < s53

Versions

PyTorch version: 2.13.0.dev20260521+cu130 Is debug build: False CUDA used to build PyTorch: 13.0 ROCM used to build PyTorch: N/A

OS: Ubuntu 24.04.4 LTS (x86_64) GCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 Clang version: 18.1.3 (1ubuntu1) CMake version: version 3.28.3 Libc version: glibc-2.39

Python version: 3.10.20 (main, Mar 11 2026, 17:46:40) [GCC 14.3.0] (64-bit runtime) Python platform: Linux-5.15.167.4-microsoft-standard-WSL2-x86_64-with-glibc2.39 Is CUDA available: True CUDA runtime version: 12.0.140 Nvidia driver version: 596.49 cuDNN version: Probably one of the following: /usr/lib/x86_64-linux-gnu/libcudnn.so.9.21.1 /usr/lib/x86_64-linux-gnu/libcudnn_adv.so.9.21.1 /usr/lib/x86_64-linux-gnu/libcudnn_cnn.so.9.21.1 /usr/lib/x86_64-linux-gnu/libcudnn_engines_precompiled.so.9.21.1 /usr/lib/x86_64-linux-gnu/libcudnn_engines_runtime_compiled.so.9.21.1 /usr/lib/x86_64-linux-gnu/libcudnn_engines_tensor_ir.so.9.21.1 /usr/lib/x86_64-linux-gnu/libcudnn_graph.so.9.21.1 /usr/lib/x86_64-linux-gnu/libcudnn_heuristic.so.9.21.1 /usr/lib/x86_64-linux-gnu/libcudnn_ops.so.9.21.1 Is XPU available: False HIP runtime version: N/A MIOpen runtime version: N/A Is XNNPACK available: True Caching allocator config: N/A ersions of relevant libraries: [pip3] numpy==2.2.6 [pip3] nvidia-cublas==13.1.1.3 [pip3] nvidia-cuda-cupti==13.0.85 [pip3] nvidia-cuda-nvrtc==13.0.88 [pip3] nvidia-cuda-runtime==13.0.96 [pip3] nvidia-cudnn-cu13==9.20.0.48 [pip3] nvidia-cufft==12.0.0.61 [pip3] nvidia-curand==10.4.0.35 [pip3] nvidia-cusolver==12.0.4.66 [pip3] nvidia-cusparse==12.6.3.3 [pip3] nvidia-cusparselt-cu13==0.8.1 [pip3] nvidia-nccl-cu13==2.29.7 [pip3] nvidia-nvjitlink==13.0.88 [pip3] nvidia-nvtx==13.0.85 [pip3] torch==2.13.0.dev20260521+cu130 [pip3] torchaudio==2.11.0.dev20260525+cu130 [pip3] torchvision==0.28.0.dev20260525+cu130 [pip3] triton==3.7.0+git88b227e2 [conda] numpy 2.2.6 pypi_0 pypi [conda] nvidia-cublas 13.1.1.3 pypi_0 pypi [conda] nvidia-cuda-cupti 13.0.85 pypi_0 pypi [conda] nvidia-cuda-nvrtc 13.0.88 pypi_0 pypi [conda] nvidia-cuda-runtime 13.0.96 pypi_0 pypi [conda] nvidia-cudnn-cu13 9.20.0.48 pypi_0 pypi [conda] nvidia-cufft 12.0.0.61 pypi_0 pypi [conda] nvidia-curand 10.4.0.35 pypi_0 pypi [conda] nvidia-cusolver 12.0.4.66 pypi_0 pypi [conda] nvidia-cusparse 12.6.3.3 pypi_0 pypi [conda] nvidia-cusparselt-cu13 0.8.1 pypi_0 pypi [conda] nvidia-nccl-cu13 2.29.7 pypi_0 pypi [conda] nvidia-nvjitlink 13.0.88 pypi_0 pypi [conda] nvidia-nvtx 13.0.85 pypi_0 pypi [conda] torch 2.13.0.dev20260521+cu130 pypi_0 pypi [conda] torchaudio 2.11.0.dev20260525+cu130 pypi_0 pypi [conda] torchvision 0.28.0.dev20260525+cu130 pypi_0 pypi [conda] triton 3.7.0+git88b227e2 pypi_0 pypi

cc @chauhang @penguinwu @ezyang @bobrenjc93 @aditvenk @laithsakka @voznesenskym @EikanWang @jgong5 @Guobing-Chen @XiaobingSuper @zhuhaozhe @blzheng @wenzhe-nrv @jiayisunx @ipiszy @kadeng @muchulee8 @amjames @aakhundov @coconutruben @jataylo

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING