Repository navigation
[ExecuTorch][WebGPU] Support general groups=1 Conv1d - #21600
Conversation
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/21600
Note: Links to docs will display an error until the docs builds have been completed. ✅ No FailuresAs of commit a17d304 with merge base ad3a71f ( This comment was automatically generated by Dr. CI and updates every 15 minutes. |
This PR needs a
|
**Add a buffer-only groups=1 Conv1d kernel for Voxtral encoder shapes** The WebGPU backend handled only K=1 pointwise and depthwise Conv1d, leaving non-transposed groups=1 K=3 encoder convolutions unsupported. **Before** - Groups=1 K>1 graphs had no valid WebGPU route. **After** - A direct NCL buffer kernel supports groups=1 convolution with stride, padding, dilation, and optional bias. Key changes: - `add_conv1d_node` — validates fp32 operands, geometry, shapes, and shader index ranges. - `conv1d.wgsl` — mirrors Vulkan output indexing in `backends/vulkan/runtime/graph/ops/glsl/conv1d.glsl:78`, stride/padding at `:86`, and the kernel FMA loop at `:108`. - Dispatch and resize hooks — fold x/y workgroups and recompute live parameters safely. - Generated sources — refresh WGSL headers, registry output, and drift digests. The route remains limited to non-transposed groups=1 fp32 convolution; existing pointwise and depthwise routes are unchanged. Co-authored-with: Claude Code. Differential Revision: [D114936145](https://our.internmc.facebook.com/intern/diff/D114936145/) ghstack-source-id: 411044636 Pull-Request: #21600
**Add a buffer-only groups=1 Conv1d kernel for Voxtral encoder shapes** The WebGPU backend handled only K=1 pointwise and depthwise Conv1d, leaving non-transposed groups=1 K=3 encoder convolutions unsupported. **Before** - Groups=1 K>1 graphs had no valid WebGPU route. **After** - A direct NCL buffer kernel supports groups=1 convolution with stride, padding, dilation, and optional bias. Key changes: - `add_conv1d_node` — validates fp32 operands, geometry, shapes, and shader index ranges. - `conv1d.wgsl` — mirrors Vulkan output indexing in `backends/vulkan/runtime/graph/ops/glsl/conv1d.glsl:78`, stride/padding at `:86`, and the kernel FMA loop at `:108`. - Dispatch and resize hooks — fold x/y workgroups and recompute live parameters safely. - Generated sources — refresh WGSL headers, registry output, and drift digests. The route remains limited to non-transposed groups=1 fp32 convolution; existing pointwise and depthwise routes are unchanged. Co-authored-with: Claude Code. Differential Revision: [D114936145](https://our.internmc.facebook.com/intern/diff/D114936145/) ghstack-source-id: 411044636 Pull-Request: #21600
**Add a buffer-only groups=1 Conv1d kernel for Voxtral encoder shapes** The WebGPU backend handled only K=1 pointwise and depthwise Conv1d, leaving non-transposed groups=1 K=3 encoder convolutions unsupported. **Before** - Groups=1 K>1 graphs had no valid WebGPU route. **After** - A direct NCL buffer kernel supports groups=1 convolution with stride, padding, dilation, and optional bias. Key changes: - `add_conv1d_node` — validates fp32 operands, geometry, shapes, and shader index ranges. - `conv1d.wgsl` — mirrors Vulkan output indexing in `backends/vulkan/runtime/graph/ops/glsl/conv1d.glsl:78`, stride/padding at `:86`, and the kernel FMA loop at `:108`. - Dispatch and resize hooks — fold x/y workgroups and recompute live parameters safely. - Generated sources — refresh WGSL headers, registry output, and drift digests. The route remains limited to non-transposed groups=1 fp32 convolution; existing pointwise and depthwise routes are unchanged. Co-authored-with: Claude Code. Differential Revision: [D114936145](https://our.internmc.facebook.com/intern/diff/D114936145/) ghstack-source-id: 411044636 Pull-Request: #21600
Stack from ghstack (oldest at bottom):
Add a buffer-only groups=1 Conv1d kernel for Voxtral encoder shapes
The WebGPU backend handled only K=1 pointwise and depthwise Conv1d, leaving non-transposed groups=1 K=3 encoder convolutions unsupported.
Before
After
Key changes:
add_conv1d_node— validates fp32 operands, geometry, shapes, and shader index ranges.conv1d.wgsl— mirrors Vulkan output indexing inbackends/vulkan/runtime/graph/ops/glsl/conv1d.glsl:78, stride/padding at:86, and the kernel FMA loop at:108.The route remains limited to non-transposed groups=1 fp32 convolution; existing pointwise and depthwise routes are unchanged.
Co-authored-with: Claude Code.
Differential Revision: D114936145