Skip to content

Transforms: share the horizontal fusion passes - #22122

Open
rascani wants to merge 2 commits into
gh/rascani/25/headfrom
gh/rascani/26/head
Open

Transforms: share the horizontal fusion passes#22122
rascani wants to merge 2 commits into
gh/rascani/25/headfrom
gh/rascani/26/head

Conversation

@rascani

@rascani rascani commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

FuseDuplicateUsersPass and FuseIdenticalInputTransformsPass are the fan-out and
fan-in halves of horizontal fusion: the first merges identical transforms that
several users apply to one producer, the second merges identical transforms
several producers apply into one consumer. Together with the canonicalizer they
are everything the propagation driver needs besides the algorithm itself.

Neither had a real tie to Arm. FuseIdenticalInputTransformsPass took
ArmOpTargetedPass for a pre-scan optimization it never used, since it overrides
call() outright and reads target_ops only as a membership set.

FuseDuplicateUsersPass had one genuine dependency worth preserving rather than
deleting: it refuses to fuse duplicate users of tosa.RESCALE, because a fused
RESCALE feeding every original consumer corrupts integer output on Ethos-U. That
is not a property of duplicate-user fusion, it is a property of RESCALE, so the
exclusion set becomes a constructor argument that defaults to empty. The Arm
subclass supplies the TOSA set, and the driver asks for it through a new
duplicate_user_fusion_exclusions() extension point so it no longer needs to know
what a RESCALE is.

With this the driver's only remaining Arm import is the pass base class, and it
can move next.

No behaviour change: the Arm pass suite produces a failure set identical to
merge base, name for name.

Authored with Claude Code.

[ghstack-poisoned]
@pytorch-bot

pytorch-bot Bot commented Aug 25, 2026

Copy link
Copy Markdown

🔗 Helpful Links

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

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

❌ 11 New Failures

As of commit 5f12829 with merge base e831b3e (image):

NEW FAILURES - The following jobs have failed:

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

[ghstack-poisoned]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciflow/trunk CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. module: arm Issues related to arm backend

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant