Lower branched A16W8 convs on U55 - #22566
Conversation
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/22566
Note: Links to docs will display an error until the docs builds have been completed. ✅ No FailuresAs of commit 62e3063 with merge base c570b6c ( This comment was automatically generated by Dr. CI and updates every 15 minutes. |
|
@apullin has exported this pull request. If you are a Meta employee, you can view the originating Diff in D118736607. |
This PR needs a
|
sylvesterkaczmarek
left a comment
There was a problem hiding this comment.
The repair matches the U55 constraint: deduplicate truly identical RESCALE→PERMUTE heads first, then clone the INT48-producing convolution only for semantically distinct quantisation heads. Marking the clones against later duplicate-user fusion is important, otherwise a later cleanup can recreate the unsupported fanout. The signature and unknown-user guards keep the rewrite conservative.
f72f672 to
4b87911
Compare
Summary: A16W8 convolution rewriting can expose one INT48 accumulator to multiple output `RESCALE` nodes. Regor cannot materialize INT48 on U55 and can only fuse one output quantization into each convolution, so these graphs fail compilation before scheduling. This fixes a U55 lowering regression introduced by pytorch#21910: its A16W8 output branching can leave one INT48 convolution accumulator feeding multiple `RESCALE` paths, but Regor cannot materialize INT48 and can fold only one `RESCALE` into a convolution. Deduplicate identical complete `RESCALE` plus layout-permute heads, then clone the TOSA convolution for each remaining distinct output quantization while sharing its input, weight, and bias nodes. Mark those exact-semantics clones so later duplicate-user cleanup cannot merge the unsupported fanout back together. Add structural, duplicate-fusion barrier, and true U55 compilation regressions. This change was authored with Codex. Differential Revision: D118736607
4b87911 to
4012468
Compare
Summary: A16W8 convolution rewriting can expose one INT48 accumulator to multiple output `RESCALE` nodes. Regor cannot materialize INT48 on U55 and can only fuse one output quantization into each convolution, so these graphs fail compilation before scheduling. This fixes a U55 lowering regression introduced by pytorch#21910: its A16W8 output branching can leave one INT48 convolution accumulator feeding multiple `RESCALE` paths, but Regor cannot materialize INT48 and can fold only one `RESCALE` into a convolution. Deduplicate identical complete `RESCALE` plus layout-permute heads, then clone the TOSA convolution for each remaining distinct output quantization while sharing its input, weight, and bias nodes. Mark those exact-semantics clones so later duplicate-user cleanup cannot merge the unsupported fanout back together. Add structural, duplicate-fusion barrier, and true U55 compilation regressions. Differential Revision: D118736607
4012468 to
d91d2ab
Compare
|
Local lint stepped on a bunch of comments and unrelated code. Should be cleaned up now, for just the relevant changes. |
Summary: A16W8 convolution rewriting can expose one INT48 accumulator to multiple output `RESCALE` nodes. Regor cannot materialize INT48 on U55 and can only fuse one output quantization into each convolution, so these graphs fail compilation before scheduling. This fixes a U55 lowering regression introduced by pytorch#21910: its A16W8 output branching can leave one INT48 convolution accumulator feeding multiple `RESCALE` paths, but Regor cannot materialize INT48 and can fold only one `RESCALE` into a convolution. Deduplicate identical complete `RESCALE` plus layout-permute heads, then clone the TOSA convolution for each remaining distinct output quantization while sharing its input, weight, and bias nodes. Mark those exact-semantics clones so later duplicate-user cleanup cannot merge the unsupported fanout back together. Add structural, duplicate-fusion barrier, and true U55 compilation regressions. This change was authored with Codex. Differential Revision: D118736607
d91d2ab to
62e3063
Compare
Summary:
A16W8 convolution rewriting can expose one INT48 accumulator to multiple output
RESCALEnodes. Regor cannot materialize INT48 on U55 and can only fuse one output quantization into each convolution, so these graphs fail compilation before scheduling.This fixes a U55 lowering regression introduced by #21910: its A16W8 output branching can leave one INT48 convolution accumulator feeding multiple
RESCALEpaths, but Regor cannot materialize INT48 and can fold only oneRESCALEinto a convolution.Deduplicate identical complete
RESCALEplus layout-permute heads, then clone the TOSA convolution for each remaining distinct output quantization while sharing its input, weight, and bias nodes. Mark those exact-semantics clones so later duplicate-user cleanup cannot merge the unsupported fanout back together.Add structural, duplicate-fusion barrier, and true U55 compilation regressions. This change was authored with Codex.
Differential Revision: D118736607