Repository navigation
Support 1D linear in the CPU Reference provider - #24254
JakeStevens wants to merge 1 commit into
Conversation
Summary: `aten::linear` with a 1D input or a 1D weight failed at execution with `0x12` (InvalidArgument). The Reference provider routes every `linear` to `opt_linear_out`, which requires an input of rank >= 2 and a 2D weight. Portable has no `linear` kernel, and XNNPACK declines non-constant or non-2D weights. The Reference provider now binds 1D operands as single-row views: a `[K]` input or weight becomes `[1, K]`, and the output gains the matching unit dimension. Scalar bias is also viewed as `[1]` to satisfy the optimized kernel's bias contract. Views share the value's buffer, so nothing is copied. The partitioner keeps preserving these `linear` nodes instead of decomposing them, so a provider can later claim the 1D shapes with a dedicated kernel. Authored with assistance from Claude Code and Codex. Differential Revision: D128153701
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/24254
Note: Links to docs will display an error until the docs builds have been completed. ✅ No FailuresAs of commit f3a460b with merge base bf9bef3 ( This comment was automatically generated by Dr. CI and updates every 15 minutes. |
|
@JakeStevens has exported this pull request. If you are a Meta employee, you can view the originating Diff in D128153701. |
This PR needs a
|
Summary:
aten::linearwith a 1D input or a 1D weight failed at execution with0x12(InvalidArgument). The Reference provider routes everylineartoopt_linear_out, which requires an input of rank >= 2 and a 2D weight. Portable has nolinearkernel, and XNNPACK declines non-constant or non-2D weights.The Reference provider now binds 1D operands as single-row views: a
[K]input or weight becomes[1, K], and the output gains the matching unit dimension. Scalar bias is also viewed as[1]to satisfy the optimized kernel's bias contract. Views share the value's buffer, so nothing is copied. The partitioner keeps preserving theselinearnodes instead of decomposing them, so a provider can later claim the 1D shapes with a dedicated kernel.Authored with assistance from Claude Code and Codex.
Differential Revision: D128153701