You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[executorch][cuda] Add planned replacement to the Triton replacement pass - #25083
The CUDA backend's Triton replacement pass replaces every node of a listed op. Some kernels, such as the convolution kernels later in this stack, can take only some calls of an op, are worth taking only on some, and are the only lowering for others; and a failure in the middle of a rewrite could leave a partly edited graph.
triton/routing.py adds planned replacement. An op listed in replacement_pass.PLANNERS gets a pure preflight that classifies each node as OPTIONAL, REQUIRED (the regular lowering cannot compile it) or UNSUPPORTED. The rewrite is transactional: if inserting the new node, rewiring its users or erasing the old node fails, every change is undone; an OPTIONAL call then keeps the regular lowering with a warning, and a REQUIRED call raises ReplacementError with its signature. device_supports(min_capability, device) says whether a kernel can run on the GPU the model is exported and autotuned on, and is False on ROCm; newer GPUs run the package through its PTX. No op uses the planner yet, so lowering is unchanged.
test_triton_replacement.py covers kernel legality by capability and on ROCm, every route through the pass, and fault injection at each rewrite step.
This comment was automatically generated by Dr. CI and updates every 15 minutes.
meta-claBot
added
the
CLA Signed
This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.
label
Nov 14, 2026
If your change should be included in the release notes (i.e. would users of this library care about this change?), please use a label starting with release notes:. This helps us keep track and include your important work in the next release notes.
To add a label, you can comment to pytorchbot, for example @pytorchbot label "release notes: none"
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.meta-exported
1 participant
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack from ghstack (oldest at bottom):
The CUDA backend's Triton replacement pass replaces every node of a listed op. Some kernels, such as the convolution kernels later in this stack, can take only some calls of an op, are worth taking only on some, and are the only lowering for others; and a failure in the middle of a rewrite could leave a partly edited graph.
triton/routing.pyadds planned replacement. An op listed inreplacement_pass.PLANNERSgets a pure preflight that classifies each node as OPTIONAL, REQUIRED (the regular lowering cannot compile it) or UNSUPPORTED. The rewrite is transactional: if inserting the new node, rewiring its users or erasing the old node fails, every change is undone; an OPTIONAL call then keeps the regular lowering with a warning, and a REQUIRED call raisesReplacementErrorwith its signature.device_supports(min_capability, device)says whether a kernel can run on the GPU the model is exported and autotuned on, and is False on ROCm; newer GPUs run the package through its PTX. No op uses the planner yet, so lowering is unchanged.test_triton_replacement.pycovers kernel legality by capability and on ROCm, every route through the pass, and fault injection at each rewrite step.This diff was authored with Claude Code.
Differential Revision: D129725797
NOTE FOR REVIEWERS: This PR has internal Meta-specific changes or comments, please review them on Phabricator!