Add provenance to inductor IR nodes created after graph.run (#164255)

Summary:
as title

- Some IR nodes are created during `finalize_multi_template_buffers()` in Scheduler. This PR adds provenance (`origin_node` and `origins`) for those nodes.

- Extract `assign_origin_node` function

Differential Revision: D82871244

Pull Request resolved: https://github.com/pytorch/pytorch/pull/164255
Approved by: https://github.com/mlazos
This commit is contained in:
Shangdi Yu
2025-10-02 17:32:43 +00:00
committed by PyTorch MergeBot
parent 0319556a35
commit b9e73e639e
5 changed files with 80 additions and 28 deletions

View File

@ -50,6 +50,7 @@ from .dependencies import Dep, MemoryDep, StarDep, WeakDep
from .exc import GPUTooOldForTriton, TritonMissing
from .fx_utils import count_flops_fx
from .ir import (
assign_origin_node,
get_device_type,
GraphPartitionSignature,
MultiOutput,
@ -3163,12 +3164,16 @@ class Scheduler:
node.node.finalize_as_triton_caller(min_node_unfused)
continue
out_tensorbox = min_node_unfused.output_node()
with ir.IRNode.current_origins(multi_node.origins):
out_tensorbox = min_node_unfused.output_node()
out_storage = out_tensorbox.data # type: ignore[union-attr]
assert isinstance(out_storage, ir.StorageBox)
out_buffer = out_storage.data
assert isinstance(out_buffer, ir.OperationBuffer)
if multi_node.origin_node:
assign_origin_node(out_tensorbox, multi_node.origin_node)
out_buffer.layout = multi_node.layout
replace_operation_buffer(multi_node, out_buffer)
new_scheduler_node = self.create_scheduler_node(out_buffer)