From 38a3f9577fbc8e1903c850626c1f5a583ac55628 Mon Sep 17 00:00:00 2001 From: Julian Ng-Thow-Hing Date: Fri, 10 Jul 2026 11:26:52 -0700 Subject: [PATCH] Update [ghstack-poisoned] --- backends/webgpu/test/op_tests/cases.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/backends/webgpu/test/op_tests/cases.py b/backends/webgpu/test/op_tests/cases.py index 81498c65b32..d52b7d768a3 100644 --- a/backends/webgpu/test/op_tests/cases.py +++ b/backends/webgpu/test/op_tests/cases.py @@ -396,7 +396,11 @@ def _linear_fp32_suite() -> WebGPUTestSuite: @register_op_test("conv2d") def _conv2d_suite() -> WebGPUTestSuite: # DaViT patch-embed / downsample convs + conv_transpose2d (same registration, - # folded by the `transposed` arg). NCHW fp32. + # folded by the `transposed` arg). NCHW fp32. Routing coverage (all vs the + # same fp64 golden): patch_embed/conv3x3_pad1/strided/gemm_batched are + # groups==1 → im2col tiled GEMM (gemm_batched pins the B>1 output write); + # grouped_vec4 (groups=2, icpg=4) → direct vec4 kernel; depthwise (groups=8, + # icpg=1) → direct scalar; transpose2x → conv_transpose2d. return WebGPUTestSuite( module_factory=make_conv, cases=[ @@ -432,6 +436,22 @@ def _conv2d_suite() -> WebGPUTestSuite: }, inputs=(InputSpec(shape=(1, 8, 8, 8), gen=_chw_ramp),), ), + Case( + name="grouped_vec4", + construct={ + "in_ch": 8, + "out_ch": 8, + "kernel": 3, + "padding": 1, + "groups": 2, + }, + inputs=(InputSpec(shape=(1, 8, 8, 8), gen=_chw_ramp),), + ), + Case( + name="gemm_batched", + construct={"in_ch": 8, "out_ch": 16, "kernel": 3, "padding": 1}, + inputs=(InputSpec(shape=(2, 8, 16, 16), gen=_chw_ramp),), + ), Case( name="transpose2x", construct={