Skip to content

[executorch][cuda] Add triton::convolution and the conv routing framework - #25084

Open
Gasoonjia wants to merge 2 commits into
gh/Gasoonjia/110/basefrom
gh/Gasoonjia/110/head
Open

Gasoonjia wants to merge 2 commits into
gh/Gasoonjia/110/basefrom
gh/Gasoonjia/110/head

Conversation

@Gasoonjia

@Gasoonjia Gasoonjia commented Nov 14, 2026 •

Copy link
Copy Markdown
Contributor

Stack from ghstack (oldest at bottom):

The backend's Triton kernels have no convolution entry point. ATen spreads convolutions over many overloads whose arguments cannot express asymmetric or "same" padding once lowered, and Inductor's templates cannot compile some convolutions at all (dilated, most transposed and 1-D ones).

This diff adds triton::convolution, one canonical op with explicit padding_before/padding_after and separately defined forward and transposed semantics. bind_conv maps every ATen convolution overload of both lowering APIs to it, filling defaults and validating the arguments. out_shape_and_stride computes the output layout ATen's CUDA convolution returns; the op body and its fake share it, so the output is allocated once and templates only write into it. Templates declare supports(), worth_routing() and schedules, and force_conv_candidate lets tests run one schedule. conv.routing.plan is the planner for every convolution overload: it refuses symbolic shapes, non-CUDA inputs, ROCm and calls whose output layout differs from the node's, and marks calls Inductor cannot compile as REQUIRED. No template is registered yet, so lowering is unchanged.

test_conv_binding.py checks the binding, canonical arguments and output layouts against ATen; test_conv_routing.py checks the routing gates and failure contract on graphs from both lowering APIs, without a GPU.

This diff was authored with Claude Code.

Differential Revision: D129595183

NOTE FOR REVIEWERS: This PR has internal Meta-specific changes or comments, please review them on Phabricator!

[ghstack-poisoned]
@pytorch-bot

pytorch-bot Bot commented Nov 14, 2026 •

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/25084

Note: Links to docs will display an error until the docs builds have been completed.

❌ 1 New Failure, 1 Pending, 1 Unrelated Failure

As of commit d941f69 with merge base dea39f0 (image):

NEW FAILURE - The following job has failed:

BROKEN TRUNK - The following job failed but were present on the merge base:

👉 Rebase onto the `viable/strict` branch to avoid these failures

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@github-actions

Copy link
Copy Markdown

This PR needs a release notes: label

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"

For more information, see
https://github.com/pytorch/pytorch/wiki/PyTorch-AutoLabel-Bot#why-categorize-for-release-notes-and-how-does-it-work.

[ghstack-poisoned]
@Gasoonjia
Gasoonjia deployed to upload-benchmark-results November 15, 2026 14:20 — with GitHub Actions Active

This branch was successfully deployed

1 active and 1 inactive deployments
upload-benchmark-results — d941f692 Deployed Nov 15, 2026 by Gasoonjia via upload-benchmark-results #22538
cadence — d941f692 Deployed Nov 15, 2026 by Gasoonjia via hifi-op-test / hifi4 #38440
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. meta-exported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant