diff --git "a/build/webgpu/test.json" "b/build/webgpu/test.json" --- "a/build/webgpu/test.json" +++ "b/build/webgpu/test.json" @@ -3,9 +3,100 @@ "nchw_dilated_kernel_input_x": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], "backend_stride2_with_padding_input_x": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34], "ort_conv2d_group_no_bias_input_x": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], - "ort_conv2d_same_upper_stride2_asymmetric_padding_input_x": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + "ort_conv2d_same_upper_stride2_asymmetric_padding_input_x": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], + "ort_fp16_pointwise_odd_out_channels_97_input_w": [-0.1875, -0.1875, -0.1875, -0.1875, -0.1875, -0.1875, -0.1875, -0.1875, -0.1875, -0.1875, -0.1875, -0.1875, -0.1875, -0.1875, -0.1875, -0.1875, -0.125, -0.125, -0.125, -0.125, -0.125, -0.125, -0.125, -0.125, -0.125, -0.125, -0.125, -0.125, -0.125, -0.125, -0.125, -0.125, -0.0625, -0.0625, -0.0625, -0.0625, -0.0625, -0.0625, -0.0625, -0.0625, -0.0625, -0.0625, -0.0625, -0.0625, -0.0625, -0.0625, -0.0625, -0.0625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1875, 0.1875, 0.1875, 0.1875, 0.1875, 0.1875, 0.1875, 0.1875, 0.1875, 0.1875, 0.1875, 0.1875, 0.1875, 0.1875, 0.1875, 0.1875] }, "cases": [ + { + "name": "qwen-image21-vae-convout-four-channels-sgmat-f32-bias", + "provenance": { + "source": "Qwen-Image 2.1 VAE decoder", + "notes": "The four-output-channel final 3x3 convolution opts into padded implicit subgroup-matrix output rows; odd spatial extent exercises the tail and padding edges." + }, + "attrs": { "strides": [1, 1], "pads": [1, 1, 1, 1] }, + "tunables": { "SGMAT_MIN_M": 4, "SGMAT_SPLIT_K_MAX_BASE_WORKGROUPS": 0 }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 144, 33, 33], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2 } + }, + "w": { + "dtype": "float32", + "shape": [4, 144, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + }, + "bias": { "dtype": "float32", "shape": [4], "data": { "kind": "cycle", "values": [-0.02, 0.0, 0.02, 0.01] } } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 4, 33, 33], "tolerance": 0.00001 } } + }, + { + "name": "qwen-image21-vae-large-column-implicit-f32-bias", + "provenance": { + "source": "Qwen-Image 2.1 VAE decoder", + "notes": "Compact 3x3 analogue of the large-column implicit route, including channel and spatial matrix tiles." + }, + "attrs": { "strides": [1, 1], "pads": [1, 1, 1, 1] }, + "tunables": { "IMPLICIT_MAX_M_TILES": 2, "DIRECT_IM2COL_MIN_M_TILES": 3, "SGMAT_SPLIT_K_MAX_BASE_WORKGROUPS": 0 }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 32, 32, 32], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2 } + }, + "w": { + "dtype": "float32", + "shape": [64, 32, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03 } + }, + "bias": { "dtype": "float32", "shape": [64], "data": { "kind": "cycle", "values": [-0.02, 0.0, 0.02, 0.01] } } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 64, 32, 32], "tolerance": 0.001 } } + }, + { + "name": "qwen-image21-vae-nine-matrix-tiles-f32-bias", + "provenance": { + "source": "Qwen-Image 2.1 VAE decoder", + "notes": "A compact 3x3 convolution at the nine-output-tile boundary of the full-resolution decoder. The input and kernel rows exercise the implicit im2col path without committing a large fixture." + }, + "attrs": { "strides": [1, 1], "pads": [1, 1, 1, 1] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 16, 32, 32], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [288, 16, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + }, + "bias": { "dtype": "float32", "shape": [288], "data": { "kind": "cycle", "values": [-0.02, 0.0, 0.02] } } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 288, 32, 32], "tolerance": 0.001 } } + }, + { + "name": "qwen-image21-vae-nine-wide-matrix-tiles-f32-bias", + "provenance": { + "source": "Qwen-Image 2.1 VAE decoder", + "notes": "The 576-channel decoder convolution needs nine 64-channel matrix tiles. Small spatial dimensions keep the correctness reference compact." + }, + "attrs": { "strides": [1, 1], "pads": [1, 1, 1, 1] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 16, 32, 32], + "data": { "kind": "fillFloat32", "sinStep": 0.147, "cosStep": 0.183, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [576, 16, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.269, "cosStep": 0.289, "scale": 0.03, "offset": 0.013 } + }, + "bias": { "dtype": "float32", "shape": [576], "data": { "kind": "cycle", "values": [-0.02, 0.0, 0.02] } } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 576, 32, 32], "tolerance": 0.001 } } + }, { "name": "f32_subnormal_times_large_scale_2d_gpu_gap", "provenance": { @@ -62,7 +153,7 @@ "provenance": { "source": "onnxruntime/test/providers/cpu/nn/conv_op_test.cc", "test": "ConvTest", - "notes": "1x1 conv with C=32, M=32, HW=64 selects the Conv-as-GEMM subgroup-matrix path; normal operands produce finite subnormal outputs." + "notes": "A 1x1 convolution with 32 input channels, 32 output channels, and 64 spatial positions must preserve finite subnormal outputs." }, "attrs": { "strides": [1, 1], "pads": [0, 0, 0, 0] }, "inputs": { @@ -99,7 +190,7 @@ "provenance": { "source": "onnxruntime/test/providers/cpu/nn/conv_op_test.cc", "test": "ConvTest", - "notes": "2x1 conv with C=32, K=64, M=32, HW=64 selects the aligned im2col+subgroup-matrix path; normal operands produce finite subnormal outputs." + "notes": "A 2x1 convolution with 32 input channels, 32 output channels, and 64 spatial positions must preserve finite subnormal outputs." }, "attrs": { "strides": [1, 1], "pads": [0, 0, 0, 0] }, "inputs": { @@ -136,7 +227,7 @@ "provenance": { "source": "onnxruntime/test/providers/cpu/nn/conv_op_test.cc", "test": "ConvTest", - "notes": "2x1 conv with C=9, K=18 and HW=35 forces the padded im2col+subgroup-matrix path; padding lanes must not erase finite subnormal real outputs." + "notes": "A 2x1 kernel over 9 input channels (an 18-element reduction) with every input and weight set to 1e-20 produces outputs near the float32 subnormal boundary, checking how finite subnormal results are handled. Transcribed from onnxruntime's conv_op_test.cc ConvTest." }, "attrs": { "strides": [1, 1], "pads": [0, 0, 0, 0] }, "inputs": { @@ -507,7 +598,7 @@ "provenance": { "source": "onnxruntime/test/providers/cpu/nn/conv_op_test.cc", "test": "ConvTest.Depthwise2D_Bias_Group1_Issue18992_Packed", - "notes": "Packed-output-channel regression with 32 output channels and bias." + "notes": "A single input channel expands to 32 output channels with weight 0.5 and bias 0.5, so every output equals 1.0; checks 32 packed output channels with bias. Transcribed from onnxruntime's ConvTest.Depthwise2D_Bias_Group1_Issue18992_Packed." }, "attrs": { "strides": [1, 1], "pads": [0, 0, 0, 0] }, "inputs": { @@ -522,7 +613,7 @@ "provenance": { "source": "onnxruntime/test/providers/cpu/nn/conv_op_test.cc", "test": "ConvTest.Depthwise2D_Bias_Group1_Issue18992_Packed4", - "notes": "Packed-output-channel regression with a full 8x8 kernel and 32 output channels." + "notes": "A single input channel with a full 8x8 kernel (64 taps) expands to 32 output channels with weight 0.5 and bias 0.5, so every output equals 32.5; checks 32 packed output channels with a full-kernel bias. Transcribed from onnxruntime's ConvTest.Depthwise2D_Bias_Group1_Issue18992_Packed4." }, "attrs": { "strides": [1, 1], "pads": [0, 0, 0, 0] }, "inputs": { @@ -670,7 +761,7 @@ { "name": "gemm_1x1_tiled_reg_splitk_c128_16x16", "provenance": { - "notes": "Route lock for the split-K 1x1 register tile: four 64x64 output tiles over K=128 take two K slices each, and the reduce sums the f32 partials." + "notes": "A 1x1 convolution with K=128 and four 64-by-64 output regions checks complete float32 accumulation." }, "inputs": { "x": { @@ -1254,7 +1345,7 @@ { "name": "conv_3x3_im2col_gemm_dense_c256_8x8", "provenance": { - "notes": "A compact 3x3 convolution retains a large K/M column-matrix regime while keeping the correctness tensor smaller than the model benchmarks. Offset operands keep each 2,304-tap accumulation proportional to its reduction length instead of cancelling toward zero, so a dropped tap or tile is observable." + "notes": "A 3x3 convolution with 256 input and 256 output channels over an 8x8 spatial output checks a 2304-tap reduction; offset input and weight values keep each accumulation proportional to its length so a dropped tap is observable." }, "attrs": { "strides": [1, 1], "pads": [1, 1, 1, 1] }, "inputs": { @@ -1872,7 +1963,7 @@ "name": "grouped_dilated_large_kernel_k11_oc4_nchw_fallback", "provenance": { "source": "Realistic grouped/dilated Conv stress geometry", - "notes": "A grouped, dilated 11x11 convolution produces two four-channel output tiles per group at the K11 selection boundary." + "notes": "A grouped, dilated 11x11 convolution with two groups and 16 output channels; dilation two and padding ten keep the 24x24 output size." }, "attrs": { "group": 2, "strides": [1, 1], "dilations": [2, 2], "pads": [10, 10, 10, 10] }, "inputs": { @@ -1959,7 +2050,7 @@ { "name": "grouped_large_kernel_k9_odd_width_tail", "provenance": { - "notes": "Uses 16x17 output so the odd-width tail specialization has at least four rows of wide-workgroup spatial work; smaller compact outputs intentionally use direct_unrolled." + "notes": "A grouped 9x9 convolution with a 16x17 output checks the final odd-width column across multiple rows." }, "attrs": { "group": 4, "strides": [1, 1], "pads": [4, 4, 4, 4] }, "inputs": { @@ -1979,8 +2070,8 @@ { "name": "grouped_k3_group4_w4", "provenance": { - "source": "repository-authored fixture", - "notes": "A grouped 3x3 convolution produces 20 columns and enough spatial work to select the four-column grouped specialization." + "source": "synthetic fixture", + "notes": "A grouped 3x3 convolution with four groups produces 20 output columns, a multiple of four." }, "attrs": { "group": 4, "strides": [1, 1], "pads": [1, 1, 1, 1] }, "inputs": { @@ -1992,8 +2083,8 @@ { "name": "grouped_k3_depthwise_w4", "provenance": { - "source": "repository-authored fixture", - "notes": "A depthwise 3x3 convolution produces 20 columns and selects the four-column grouped specialization with one input channel per group." + "source": "synthetic fixture", + "notes": "A depthwise 3x3 convolution produces 20 output columns with one input channel per group." }, "attrs": { "group": 8, "strides": [1, 1], "pads": [1, 1, 1, 1] }, "inputs": { @@ -2005,7 +2096,7 @@ { "name": "grouped_k3_group4_odd_width_tail_bias", "provenance": { - "source": "repository-authored fixture", + "source": "synthetic fixture", "notes": "A grouped 3x3 convolution produces 17 columns, so the final four-lane output group contains one valid column. Mixed-sign channel bias exercises the biased masked-tail epilogue." }, "attrs": { "group": 4, "strides": [1, 1], "pads": [1, 1, 1, 1] }, @@ -2024,7 +2115,7 @@ "name": "grouped_large_kernel_k9_dilation8_span_over_cap", "provenance": { "source": "ONNX Conv-22 dilations semantics (per-axis dilations [1, 8])", - "notes": "For this grouped 7x9 convolution, (kernelW-1)*dilationW + 1 + 3*strideW = 65 exceeds GROUPED_MAX_REGISTER_SPAN (64), selecting per-tap bounds-tested column gathers. Asymmetric dilation keeps all nine width taps live while kw=0 is out of range at ow<2, kw=8 is out of range at ow>=14, and the seven-row window crosses both height edges." + "notes": "A grouped (group=2) 7x9 convolution with height dilation 1 and width dilation 8 reduces a 4-channel, 16x76 input to a 16x16 output; padding [3,2,3,2] keeps out-of-range edge taps at zero, exercising ONNX Conv-22's per-axis dilation semantics." }, "attrs": { "group": 2, "strides": [1, 1], "dilations": [1, 8], "pads": [3, 2, 3, 2] }, "inputs": { @@ -2045,7 +2136,7 @@ "name": "grouped_large_kernel_k9_dilation8_stride2_span_over_cap_tail", "provenance": { "source": "ONNX Conv-22 strides/dilations semantics (strides [1, 2], dilations [1, 8])", - "notes": "The retained column span is 8*8 + 1 + 3*2 = 71, exceeding GROUPED_MAX_REGISTER_SPAN (64). strideW=2 makes each four-lane gather advance by twice the lane index, while output width 15 exercises the masked tail epilogue and 18x15 outputs satisfy the spatial work floor." + "notes": "A grouped (group=2) 7x9 convolution with height dilation 1, width dilation 8 and width stride 2 reduces a 2-channel, 18x90 input to an 18x15 output; padding [3,2,3,2] keeps out-of-range edge taps at zero, exercising ONNX Conv-22's per-axis strides and dilations." }, "attrs": { "group": 2, "strides": [1, 2], "dilations": [1, 8], "pads": [3, 2, 3, 2] }, "inputs": { @@ -2178,9 +2269,9 @@ "outputs": { "y": { "dtype": "float16", "shape": [1, 128, 1024], "tolerance": 0.002, "relTolerance": 0.01 } } }, { - "name": "grouped_kernel12_wide_forces_nchw_scalar", + "name": "grouped_kernel12_wide_nchw_scalar", "provenance": { - "notes": "Grouped 2D conv whose kernel width (12) exceeds DIRECT_MAX_KERNEL_SIZE and GROUPED_MAX_KERNEL_SIZE, while group > 1 rules out every im2col/1x1 GEMM path: the only survivor is the scalar NCHW direct kernel." + "notes": "A grouped (group=2) convolution with a 1x12 kernel reduces a 1x16 row to a 1x5 output; each of the two groups has one input and one output channel." }, "attrs": { "group": 2, "strides": [1, 1], "pads": [0, 0, 0, 0] }, "inputs": { @@ -2198,9 +2289,9 @@ "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 1, 5], "tolerance": 0.0001, "relTolerance": 0.0001 } } }, { - "name": "grouped_kernel12_wide_bias_forces_nchw_scalar", + "name": "grouped_kernel12_wide_bias_nchw_scalar", "provenance": { - "notes": "Kernel width 12 with group > 1 selects the scalar NCHW implementation. Nonzero channel bias exercises its output epilogue." + "notes": "A grouped convolution with kernel width 12 and nonzero channel bias checks every output window and bias addition." }, "attrs": { "group": 2, "strides": [1, 1], "pads": [0, 0, 0, 0] }, "inputs": { @@ -2245,7 +2336,7 @@ { "name": "conv_8x8_im2col_gemm_tiled_bias_reg_m1_n8192", "provenance": { - "notes": "An 8x8 kernel excludes the 1x1 shortcut and selects the N-axis register-tiled column-matrix product. Nonzero channel bias exercises its output epilogue." + "notes": "An 8x8 convolution with 8,192 spatial positions and nonzero channel bias checks a large spatial extent and biased output." }, "attrs": { "strides": [1, 1], "pads": [0, 0, 0, 0] }, "inputs": { @@ -2331,7 +2422,7 @@ { "name": "conv3d_im2col_tiled_bias_reg_large_spatial_f32", "provenance": { - "notes": "Rank-5 geometry selects the portable register-tiled path, and nonzero channel bias makes its epilogue independently observable." + "notes": "Rank-five convolution with a large spatial extent and nonzero channel bias checks three-dimensional indexing and bias application." }, "attrs": { "strides": [1, 1, 1] }, "inputs": { @@ -2352,7 +2443,7 @@ { "name": "conv_3x3_implicit_im2col_aligned", "provenance": { - "notes": "Selects implicit_im2col_subgroup_matrix: outputSpatial 4096 meets IMPLICIT_MIN_OUTPUT_SPATIAL and one M tile. K and N both aligned, so every gathered tile is full." + "notes": "A 3x3 convolution with 32 input and 32 output channels over a 64x64 (4096-element) spatial output has a 288-element reduction; both the reduction and spatial sizes are multiples of 32, leaving no partial tile." }, "attrs": { "strides": [1, 1], "pads": [1, 1, 1, 1] }, "inputs": { @@ -2372,7 +2463,7 @@ { "name": "conv_3x3_implicit_im2col_m32_bias_bk32", "provenance": { - "notes": "Portable implicit-im2col M=32 fixture with K=288: selects the BM32/WG128 bias route and its BK32 carried-gather geometry, including padded border windows." + "notes": "A 3x3 convolution with M=32 and K=288, channel bias, and padded border windows checks the full reduction and spatial boundaries." }, "attrs": { "strides": [1, 1], "pads": [1, 1, 1, 1] }, "inputs": { @@ -2397,7 +2488,7 @@ { "name": "conv_3x3_implicit_im2col_m32_bk16_f16_bias_batch2", "provenance": { - "notes": "M=32 and K=72 select the BK16 carried-gather specialization. batch=2 exercises the z dispatch and batch offset; half-precision X, W, Y, and bias exercise packed storage at the N=128*256=32768 boundary." + "notes": "A float16 3x3 convolution with M=32, K=72, two batches, channel bias, and 32,768 output positions per image checks batch indexing." }, "attrs": { "strides": [1, 1], "pads": [1, 1, 1, 1] }, "inputs": { @@ -2624,7 +2715,7 @@ "name": "conv_3x3_tiled_splitk_implicit_batch2_m_n_tails_bias", "tunables": { "TILED_SPLIT_K_MODE": 1 }, "provenance": { - "notes": "Portable register-tiled split-K over the implicit NCHW gather. Batch 2 exercises the combined batch/slice z axis; M=48 and N=35 exercise both padded partial axes; K=432 selects BK=16 and does not divide evenly across the eight balanced slices; the bias must be applied exactly once by the shared reduce pass." + "notes": "A two-batch convolution with 48 output channels, 35 output positions, K=432, and channel bias checks partial channel/spatial tiles and bias applied once per output." }, "attrs": { "strides": [1, 1], "pads": [1, 1, 1, 1] }, "inputs": { @@ -2883,7 +2974,7 @@ { "name": "f16_grouped_dilated_lanes_k9_d5_g4_oc2_12x40", "provenance": { - "notes": "f16 dilated-lane route at a two-channel output tile (four groups of two) and the smallest width the gate admits at dilation 5." + "notes": "A grouped (group=4, two channels per group) float16 convolution with a 9x9 kernel and dilation 5 pads 20 on every side, keeping the 12x40 spatial size unchanged." }, "attrs": { "group": 4, "strides": [1, 1], "dilations": [5, 5], "pads": [20, 20, 20, 20] }, "inputs": { @@ -2928,7 +3019,7 @@ { "name": "direct_columns_float32_m32_c32_rank1_n128_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 3-tap 1D convolution with 32 input channels and 32 output channels (a multiple of 32) produces a 128-element output row over batch 2; no bias is applied." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -2948,7 +3039,7 @@ { "name": "direct_columns_float32_m32_c32_rank1_n128_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 3-tap 1D convolution with 32 input channels and 32 output channels (a multiple of 32) produces a 128-element output row over batch 2; a 32-element bias is added to each channel." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -2973,7 +3064,7 @@ { "name": "direct_columns_float32_m32_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 32 output channels (a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -2993,7 +3084,7 @@ { "name": "direct_columns_float32_m32_c32_rank2_n8x8_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 32 output channels (a multiple of 32) produces an 8x8 output over batch 2; a 32-element bias is added to each channel." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3018,7 +3109,7 @@ { "name": "direct_columns_float32_m64_c32_rank1_n128_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 3-tap 1D convolution with 32 input channels and 64 output channels (a multiple of 32) produces a 128-element output row over batch 2; no bias is applied." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3038,7 +3129,7 @@ { "name": "direct_columns_float32_m64_c32_rank1_n128_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 3-tap 1D convolution with 32 input channels and 64 output channels (a multiple of 32) produces a 128-element output row over batch 2; a 64-element bias is added to each channel." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3063,7 +3154,7 @@ { "name": "direct_columns_float32_m64_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 64 output channels (a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3083,7 +3174,7 @@ { "name": "direct_columns_float32_m64_c32_rank2_n8x8_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 64 output channels (a multiple of 32) produces an 8x8 output over batch 2; a 64-element bias is added to each channel." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3108,7 +3199,7 @@ { "name": "direct_columns_float32_m96_c32_rank1_n128_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 3-tap 1D convolution with 32 input channels and 96 output channels (a multiple of 32) produces a 128-element output row over batch 2; no bias is applied." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3128,7 +3219,7 @@ { "name": "direct_columns_float32_m96_c32_rank1_n128_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 3-tap 1D convolution with 32 input channels and 96 output channels (a multiple of 32) produces a 128-element output row over batch 2; a 96-element bias is added to each channel." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3153,7 +3244,7 @@ { "name": "direct_columns_float32_m96_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 96 output channels (a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3173,7 +3264,7 @@ { "name": "direct_columns_float32_m96_c32_rank2_n8x8_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 96 output channels (a multiple of 32) produces an 8x8 output over batch 2; a 96-element bias is added to each channel." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3198,7 +3289,7 @@ { "name": "direct_columns_float32_m128_c32_rank1_n128_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 3-tap 1D convolution with 32 input channels and 128 output channels (a multiple of 32) produces a 128-element output row over batch 2; no bias is applied." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3218,7 +3309,7 @@ { "name": "direct_columns_float32_m128_c32_rank1_n128_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 3-tap 1D convolution with 32 input channels and 128 output channels (a multiple of 32) produces a 128-element output row over batch 2; a 128-element bias is added to each channel." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3243,7 +3334,7 @@ { "name": "direct_columns_float32_m128_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 128 output channels (a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3263,7 +3354,7 @@ { "name": "direct_columns_float32_m128_c32_rank2_n8x8_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 128 output channels (a multiple of 32) produces an 8x8 output over batch 2; a 128-element bias is added to each channel." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3288,7 +3379,7 @@ { "name": "direct_columns_float32_m31_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 31 output channels (one short of a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3308,7 +3399,7 @@ { "name": "direct_columns_float32_m33_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 33 output channels (one more than a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3328,7 +3419,7 @@ { "name": "direct_columns_float32_m65_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 65 output channels (one more than a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3348,7 +3439,7 @@ { "name": "direct_columns_float32_m64_c31_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 1x3-kernel 2D convolution with 31 input channels (one short of a multiple of 32) and 64 output channels (a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3368,7 +3459,7 @@ { "name": "direct_columns_float32_m64_c32_rank2_n7x9_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 64 output channels (a multiple of 32) produces a 7x9 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3388,7 +3479,7 @@ { "name": "direct_columns_float16_m32_c32_rank1_n128_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 3-tap 1D convolution with 32 input channels and 32 output channels (a multiple of 32) produces a 128-element output row over batch 2; no bias is applied." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3408,7 +3499,7 @@ { "name": "direct_columns_float16_m32_c32_rank1_n128_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 3-tap 1D convolution with 32 input channels and 32 output channels (a multiple of 32) produces a 128-element output row over batch 2; a 32-element bias is added to each channel." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3433,7 +3524,7 @@ { "name": "direct_columns_float16_m32_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 32 output channels (a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3453,7 +3544,7 @@ { "name": "direct_columns_float16_m32_c32_rank2_n8x8_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 32 output channels (a multiple of 32) produces an 8x8 output over batch 2; a 32-element bias is added to each channel." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3478,7 +3569,7 @@ { "name": "direct_columns_float16_m64_c32_rank1_n128_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 3-tap 1D convolution with 32 input channels and 64 output channels (a multiple of 32) produces a 128-element output row over batch 2; no bias is applied." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3498,7 +3589,7 @@ { "name": "direct_columns_float16_m64_c32_rank1_n128_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 3-tap 1D convolution with 32 input channels and 64 output channels (a multiple of 32) produces a 128-element output row over batch 2; a 64-element bias is added to each channel." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3523,7 +3614,7 @@ { "name": "direct_columns_float16_m64_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 64 output channels (a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3543,7 +3634,7 @@ { "name": "direct_columns_float16_m64_c32_rank2_n8x8_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 64 output channels (a multiple of 32) produces an 8x8 output over batch 2; a 64-element bias is added to each channel." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3568,7 +3659,7 @@ { "name": "direct_columns_float16_m96_c32_rank1_n128_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 3-tap 1D convolution with 32 input channels and 96 output channels (a multiple of 32) produces a 128-element output row over batch 2; no bias is applied." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3588,7 +3679,7 @@ { "name": "direct_columns_float16_m96_c32_rank1_n128_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 3-tap 1D convolution with 32 input channels and 96 output channels (a multiple of 32) produces a 128-element output row over batch 2; a 96-element bias is added to each channel." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3613,7 +3704,7 @@ { "name": "direct_columns_float16_m96_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 96 output channels (a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3633,7 +3724,7 @@ { "name": "direct_columns_float16_m96_c32_rank2_n8x8_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 96 output channels (a multiple of 32) produces an 8x8 output over batch 2; a 96-element bias is added to each channel." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3658,7 +3749,7 @@ { "name": "direct_columns_float16_m128_c32_rank1_n128_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 3-tap 1D convolution with 32 input channels and 128 output channels (a multiple of 32) produces a 128-element output row over batch 2; no bias is applied." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3678,7 +3769,7 @@ { "name": "direct_columns_float16_m128_c32_rank1_n128_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 3-tap 1D convolution with 32 input channels and 128 output channels (a multiple of 32) produces a 128-element output row over batch 2; a 128-element bias is added to each channel." }, "attrs": { "pads": [1, 1] }, "inputs": { @@ -3703,7 +3794,7 @@ { "name": "direct_columns_float16_m128_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 128 output channels (a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3723,7 +3814,7 @@ { "name": "direct_columns_float16_m128_c32_rank2_n8x8_bias1", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 128 output channels (a multiple of 32) produces an 8x8 output over batch 2; a 128-element bias is added to each channel." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3748,7 +3839,7 @@ { "name": "direct_columns_float16_m31_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 31 output channels (one short of a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3768,7 +3859,7 @@ { "name": "direct_columns_float16_m33_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 33 output channels (one more than a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3788,7 +3879,7 @@ { "name": "direct_columns_float16_m65_c32_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 65 output channels (one more than a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3808,7 +3899,7 @@ { "name": "direct_columns_float16_m64_c31_rank2_n8x8_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 1x3-kernel 2D convolution with 31 input channels (one short of a multiple of 32) and 64 output channels (a multiple of 32) produces an 8x8 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3828,7 +3919,7 @@ { "name": "direct_columns_float16_m64_c32_rank2_n7x9_bias0", "provenance": { - "notes": "Direct column matrix inputs cover both input scalar widths, full row bands, batched NCW/NCHW indexing and bias. A shallow reduction retains the unsplit accumulation order; incomplete rows/K/N exercise guarded fallbacks." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 64 output channels (a multiple of 32) produces a 7x9 output over batch 2; no bias is applied." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3848,7 +3939,7 @@ { "name": "direct_columns_float32_m128_c32_rank2_n32x32_bias1", "provenance": { - "notes": "Full spatial tiles on each side of the output-channel reuse preference: retain implicit gathering at low reuse and select direct materialization at high reuse. Batched bias outputs retain the CPU oracle and default dtype tolerance." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 128 output channels (a multiple of 32) produces a 32x32 output over batch 2; a 128-element bias is added to each channel." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3873,7 +3964,7 @@ { "name": "direct_columns_float32_m512_c32_rank2_n32x32_bias1", "provenance": { - "notes": "Full spatial tiles on each side of the output-channel reuse preference: retain implicit gathering at low reuse and select direct materialization at high reuse. Batched bias outputs retain the CPU oracle and default dtype tolerance." + "notes": "A float32 1x3-kernel 2D convolution with 32 input channels and 512 output channels (a multiple of 32) produces a 32x32 output over batch 2; a 512-element bias is added to each channel." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3898,7 +3989,7 @@ { "name": "direct_columns_float16_m64_c32_rank2_n32x32_bias1", "provenance": { - "notes": "Full spatial tiles on each side of the output-channel reuse preference: retain implicit gathering at low reuse and select direct materialization at high reuse. Batched bias outputs retain the CPU oracle and default dtype tolerance." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 64 output channels (a multiple of 32) produces a 32x32 output over batch 2; a 64-element bias is added to each channel." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3923,7 +4014,7 @@ { "name": "direct_columns_float16_m256_c32_rank2_n32x32_bias1", "provenance": { - "notes": "Full spatial tiles on each side of the output-channel reuse preference: retain implicit gathering at low reuse and select direct materialization at high reuse. Batched bias outputs retain the CPU oracle and default dtype tolerance." + "notes": "A float16 1x3-kernel 2D convolution with 32 input channels and 256 output channels (a multiple of 32) produces a 32x32 output over batch 2; a 256-element bias is added to each channel." }, "attrs": { "pads": [0, 1, 0, 1] }, "inputs": { @@ -3948,7 +4039,7 @@ { "name": "direct_1x1_float32_m32_k32_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -3968,7 +4059,7 @@ { "name": "direct_1x1_float32_m32_k32_n64_mode1", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -3993,7 +4084,7 @@ { "name": "direct_1x1_float32_m64_k32_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4013,7 +4104,7 @@ { "name": "direct_1x1_float32_m64_k32_n64_mode1", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4038,7 +4129,7 @@ { "name": "direct_1x1_float32_m33_k32_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4058,7 +4149,7 @@ { "name": "direct_1x1_float32_m65_k32_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4078,7 +4169,7 @@ { "name": "direct_1x1_float32_m96_k32_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4098,7 +4189,7 @@ { "name": "direct_1x1_float32_m64_k31_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4118,7 +4209,7 @@ { "name": "direct_1x1_float32_m64_k33_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4138,7 +4229,7 @@ { "name": "direct_1x1_float32_m64_k32_n63_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4158,7 +4249,7 @@ { "name": "direct_1x1_float32_m64_k32_n65_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4178,7 +4269,7 @@ { "name": "direct_1x1_float16_m32_k32_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4198,7 +4289,7 @@ { "name": "direct_1x1_float16_m32_k32_n64_mode1", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4223,7 +4314,7 @@ { "name": "direct_1x1_float16_m64_k32_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4243,7 +4334,7 @@ { "name": "direct_1x1_float16_m64_k32_n64_mode1", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4268,7 +4359,7 @@ { "name": "direct_1x1_float16_m33_k32_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4288,7 +4379,7 @@ { "name": "direct_1x1_float16_m65_k32_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4308,7 +4399,7 @@ { "name": "direct_1x1_float16_m96_k32_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4328,7 +4419,7 @@ { "name": "direct_1x1_float16_m64_k31_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4348,7 +4439,7 @@ { "name": "direct_1x1_float16_m64_k33_n64_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4368,7 +4459,7 @@ { "name": "direct_1x1_float16_m64_k32_n63_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4388,7 +4479,7 @@ { "name": "direct_1x1_float16_m64_k32_n65_mode0", "provenance": { - "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles retain guarded staging or the existing fallback; device limits determine the row tile." + "notes": "Batched direct 1x1 matrix loads cover both scalar widths and fused epilogues. Neighboring incomplete M/K/N tiles take guarded staging or the fallback route; device limits determine the row tile." }, "attrs": { "pads": [0, 0, 0, 0] }, "inputs": { @@ -4404,6 +4495,2424 @@ } }, "outputs": { "y": { "dtype": "float16", "shape": [2, 64, 1, 65], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_narrow_rows17_bias0", + "provenance": { + "notes": "A float16 convolution with 33 input channels and 17 output channels produces a 1025-element output row (one more than a multiple of 64) over batch 4; no bias is applied." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [4, 33, 1, 1025], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [17, 33, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [4, 17, 1, 1025], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_narrow_rows32_short_k_bias0", + "provenance": { + "notes": "A float16 convolution with a single input channel (a 9-element reduction) and 32 output channels produces a 512-element output (an exact multiple of 64) over batch 8; no bias is applied." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [8, 1, 16, 32], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [32, 1, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [8, 32, 16, 32], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_rows33_bias0", + "provenance": { + "notes": "A float16 convolution with 32 input channels and 33 output channels produces a 1056-element output (not a multiple of 64) over batch 4; no bias is applied." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [4, 32, 32, 33], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [33, 32, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [4, 33, 32, 33], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_short_spatial_alt_layout_bias0", + "provenance": { + "notes": "A float16 convolution with 64 input channels and 384 output channels produces a 128-element (8x16) output, an exact multiple of 64, over batch 1; no bias is applied." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 64, 8, 16], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [384, 64, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 384, 8, 16], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_short_spatial_batched_bias0", + "provenance": { + "notes": "A float16 convolution with 64 input channels and 384 output channels produces a 128-element (8x16) output, an exact multiple of 64, over batch 4; no bias is applied." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [4, 64, 8, 16], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [384, 64, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [4, 384, 8, 16], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_small_tiled_long_spatial_bias0", + "provenance": { + "notes": "A float16 convolution with 33 input channels and 17 output channels produces a 1025-element output row (one more than a multiple of 64) over batch 1; no bias is applied." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 33, 1, 1025], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [17, 33, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 17, 1, 1025], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_narrow_rows17_bias1", + "provenance": { + "notes": "A float16 convolution with 33 input channels and 17 output channels produces a 1025-element output row (one more than a multiple of 64) over batch 4; a 17-element bias is added to each channel." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [4, 33, 1, 1025], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [17, 33, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + }, + "bias": { + "dtype": "float16", + "shape": [17], + "data": { + "kind": "fillFloat32", + "sinStep": 0.020999999999999998, + "cosStep": 0.033, + "scale": 0.05, + "offset": 0.03 + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [4, 17, 1, 1025], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_narrow_rows32_short_k_bias1", + "provenance": { + "notes": "A float16 convolution with a single input channel (a 9-element reduction) and 32 output channels produces a 512-element output (an exact multiple of 64) over batch 8; a 32-element bias is added to each channel." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [8, 1, 16, 32], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [32, 1, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + }, + "bias": { + "dtype": "float16", + "shape": [32], + "data": { + "kind": "fillFloat32", + "sinStep": 0.020999999999999998, + "cosStep": 0.033, + "scale": 0.05, + "offset": 0.03 + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [8, 32, 16, 32], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_rows33_bias1", + "provenance": { + "notes": "A float16 convolution with 32 input channels and 33 output channels produces a 1056-element output (not a multiple of 64) over batch 4; a 33-element bias is added to each channel." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [4, 32, 32, 33], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [33, 32, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + }, + "bias": { + "dtype": "float16", + "shape": [33], + "data": { + "kind": "fillFloat32", + "sinStep": 0.020999999999999998, + "cosStep": 0.033, + "scale": 0.05, + "offset": 0.03 + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [4, 33, 32, 33], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_short_spatial_alt_layout_bias1", + "provenance": { + "notes": "A float16 convolution with 64 input channels and 384 output channels produces a 128-element (8x16) output, an exact multiple of 64, over batch 1; a 384-element bias is added to each channel." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 64, 8, 16], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [384, 64, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + }, + "bias": { + "dtype": "float16", + "shape": [384], + "data": { + "kind": "fillFloat32", + "sinStep": 0.020999999999999998, + "cosStep": 0.033, + "scale": 0.05, + "offset": 0.03 + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 384, 8, 16], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_short_spatial_batched_bias1", + "provenance": { + "notes": "A float16 convolution with 64 input channels and 384 output channels produces a 128-element (8x16) output, an exact multiple of 64, over batch 4; a 384-element bias is added to each channel." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [4, 64, 8, 16], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [384, 64, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + }, + "bias": { + "dtype": "float16", + "shape": [384], + "data": { + "kind": "fillFloat32", + "sinStep": 0.020999999999999998, + "cosStep": 0.033, + "scale": 0.05, + "offset": 0.03 + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [4, 384, 8, 16], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_small_tiled_long_spatial_bias1", + "provenance": { + "notes": "A float16 convolution with 33 input channels and 17 output channels produces a 1025-element output row (one more than a multiple of 64) over batch 1; a 17-element bias is added to each channel." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 33, 1, 1025], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [17, 33, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + }, + "bias": { + "dtype": "float16", + "shape": [17], + "data": { + "kind": "fillFloat32", + "sinStep": 0.020999999999999998, + "cosStep": 0.033, + "scale": 0.05, + "offset": 0.03 + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 17, 1, 1025], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_short_reduction", + "provenance": { + "notes": "A float16 convolution with a 7-channel (63-element) reduction and 512 output channels produces a 1089-element output (one more than a multiple of 64) over batch 1; a 512-element bias is added to each channel." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 7, 33, 33], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [512, 7, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + }, + "bias": { + "dtype": "float16", + "shape": [512], + "data": { + "kind": "fillFloat32", + "sinStep": 0.020999999999999998, + "cosStep": 0.033, + "scale": 0.05, + "offset": 0.03 + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 512, 33, 33], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_dilation", + "provenance": { + "notes": "A float16 convolution with dilation 2 and matching padding 2 keeps the 33x33 spatial size (1089 elements, one more than a multiple of 64) across 33 input and 384 output channels; a 384-element bias is added to each channel." + }, + "attrs": { "pads": [2, 2, 2, 2], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 33, 33, 33], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [384, 33, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + }, + "bias": { + "dtype": "float16", + "shape": [384], + "data": { + "kind": "fillFloat32", + "sinStep": 0.020999999999999998, + "cosStep": 0.033, + "scale": 0.05, + "offset": 0.03 + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 384, 33, 33], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_strided_batch", + "provenance": { + "notes": "A float16 convolution with stride 2 over a 63x65 input (8 input, 512 output channels) reduces to a 32x33 (1056-element, not a multiple of 64) output over batch 2; a 512-element bias is added to each channel." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [2, 2], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [2, 8, 63, 65], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [512, 8, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + }, + "bias": { + "dtype": "float16", + "shape": [512], + "data": { + "kind": "fillFloat32", + "sinStep": 0.020999999999999998, + "cosStep": 0.033, + "scale": 0.05, + "offset": 0.03 + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [2, 512, 32, 33], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_reg_short_tail_bias0", + "provenance": { + "notes": "A float16 convolution with 8 input channels and 512 output channels produces a 496-element output (48 past a multiple of 64) over batch 1; no bias is applied." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 8, 16, 31], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [512, 8, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 512, 16, 31], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "half_columns_reg_short_tail_bias1", + "provenance": { + "notes": "A float16 convolution with 8 input channels and 512 output channels produces a 496-element output (48 past a multiple of 64) over batch 1; a 512-element bias is added to each channel." + }, + "attrs": { "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 8, 16, 31], + "data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [512, 8, 3, 3], + "data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.03, "scale": 0.02, "offset": 0.0 } + }, + "bias": { + "dtype": "float16", + "shape": [512], + "data": { + "kind": "fillFloat32", + "sinStep": 0.020999999999999998, + "cosStep": 0.033, + "scale": 0.05, + "offset": 0.03 + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 512, 16, 31], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float32_b1_g4_c8_m16_32x31_k3x3_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 3x3 convolution with 8 input and 16 output channels per group, dilation 2x2, and stride 1x1. The output has 32 rows and 31 columns per channel." + }, + "attrs": { "group": 4, "pads": [2, 2, 2, 2], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 32, 32, 31], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [64, 8, 3, 3], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [64], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 64, 32, 31], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c8_m16_32x31_k5x5_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 5x5 convolution with 8 input and 16 output channels per group, dilation 2x2, and stride 1x1. The output has 32 rows and 31 columns per channel." + }, + "attrs": { "group": 4, "pads": [4, 4, 4, 4], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 32, 32, 31], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [64, 8, 5, 5], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [64], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 64, 32, 31], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c8_m16_32x31_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 8 input and 16 output channels per group, dilation 2x2, and stride 1x1. The output has 32 rows and 31 columns per channel." + }, + "attrs": { "group": 4, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 32, 32, 31], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [64, 8, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [64], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 64, 32, 31], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c8_m16_32x32_k7x7_d3x3_s1x1_bias0_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 8 input and 16 output channels per group, dilation 3x3, and stride 1x1. The output has 32 rows and 32 columns per channel." + }, + "attrs": { "group": 4, "pads": [9, 9, 9, 9], "strides": [1, 1], "dilations": [3, 3] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 32, 32, 32], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [64, 8, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 64, 32, 32], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c8_m16_32x31_k9x9_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 9x9 convolution with 8 input and 16 output channels per group, dilation 2x2, and stride 1x1. The output has 32 rows and 31 columns per channel." + }, + "attrs": { "group": 4, "pads": [8, 8, 8, 8], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 32, 32, 31], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [64, 8, 9, 9], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [64], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 64, 32, 31], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c8_m16_32x31_k11x11_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 11x11 convolution with 8 input and 16 output channels per group, dilation 2x2, and stride 1x1. The output has 32 rows and 31 columns per channel." + }, + "attrs": { "group": 4, "pads": [10, 10, 10, 10], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 32, 32, 31], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [64, 8, 11, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [64], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 64, 32, 31], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c8_m16_32x32_k11x11_d3x3_s1x1_bias0_asym0", + "provenance": { + "notes": "Grouped 11x11 convolution with 8 input and 16 output channels per group, dilation 3x3, and stride 1x1. The output has 32 rows and 32 columns per channel." + }, + "attrs": { "group": 4, "pads": [15, 15, 15, 15], "strides": [1, 1], "dilations": [3, 3] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 32, 32, 32], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [64, 8, 11, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 64, 32, 32], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float16_b1_g4_c8_m16_32x31_k3x3_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 3x3 convolution with 8 input and 16 output channels per group, dilation 2x2, and stride 1x1. The output has 32 rows and 31 columns per channel." + }, + "attrs": { "group": 4, "pads": [2, 2, 2, 2], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 32, 32, 31], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [64, 8, 3, 3], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [64], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 64, 32, 31], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g4_c8_m16_32x31_k5x5_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 5x5 convolution with 8 input and 16 output channels per group, dilation 2x2, and stride 1x1. The output has 32 rows and 31 columns per channel." + }, + "attrs": { "group": 4, "pads": [4, 4, 4, 4], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 32, 32, 31], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [64, 8, 5, 5], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [64], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 64, 32, 31], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g4_c8_m16_32x31_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 8 input and 16 output channels per group, dilation 2x2, and stride 1x1. The output has 32 rows and 31 columns per channel." + }, + "attrs": { "group": 4, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 32, 32, 31], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [64, 8, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [64], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 64, 32, 31], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g4_c8_m16_32x32_k7x7_d3x3_s1x1_bias0_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 8 input and 16 output channels per group, dilation 3x3, and stride 1x1. The output has 32 rows and 32 columns per channel." + }, + "attrs": { "group": 4, "pads": [9, 9, 9, 9], "strides": [1, 1], "dilations": [3, 3] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 32, 32, 32], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [64, 8, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 64, 32, 32], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g4_c8_m16_32x31_k9x9_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 9x9 convolution with 8 input and 16 output channels per group, dilation 2x2, and stride 1x1. The output has 32 rows and 31 columns per channel." + }, + "attrs": { "group": 4, "pads": [8, 8, 8, 8], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 32, 32, 31], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [64, 8, 9, 9], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [64], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 64, 32, 31], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g4_c8_m16_32x31_k11x11_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 11x11 convolution with 8 input and 16 output channels per group, dilation 2x2, and stride 1x1. The output has 32 rows and 31 columns per channel." + }, + "attrs": { "group": 4, "pads": [10, 10, 10, 10], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 32, 32, 31], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [64, 8, 11, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [64], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 64, 32, 31], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g4_c8_m16_32x32_k11x11_d3x3_s1x1_bias0_asym0", + "provenance": { + "notes": "Grouped 11x11 convolution with 8 input and 16 output channels per group, dilation 3x3, and stride 1x1. The output has 32 rows and 32 columns per channel." + }, + "attrs": { "group": 4, "pads": [15, 15, 15, 15], "strides": [1, 1], "dilations": [3, 3] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 32, 32, 32], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [64, 8, 11, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 64, 32, 32], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float32_b2_g3_c3_m1_17x29_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 3 input and 1 output channels per group, dilation 2x2, and stride 1x1. The output has 17 rows and 29 columns per channel." + }, + "attrs": { "group": 3, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [2, 9, 17, 29], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [3, 3, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [3], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [2, 3, 17, 29], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float16_b2_g3_c3_m1_17x29_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 3 input and 1 output channels per group, dilation 2x2, and stride 1x1. The output has 17 rows and 29 columns per channel." + }, + "attrs": { "group": 3, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [2, 9, 17, 29], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [3, 3, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [3], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [2, 3, 17, 29], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float32_b2_g3_c3_m2_17x29_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 3 input and 2 output channels per group, dilation 2x2, and stride 1x1. The output has 17 rows and 29 columns per channel." + }, + "attrs": { "group": 3, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [2, 9, 17, 29], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [6, 3, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [6], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [2, 6, 17, 29], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float16_b2_g3_c3_m2_17x29_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 3 input and 2 output channels per group, dilation 2x2, and stride 1x1. The output has 17 rows and 29 columns per channel." + }, + "attrs": { "group": 3, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [2, 9, 17, 29], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [6, 3, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [6], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [2, 6, 17, 29], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float32_b2_g3_c3_m3_17x29_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 3 input and 3 output channels per group, dilation 2x2, and stride 1x1. The output has 17 rows and 29 columns per channel." + }, + "attrs": { "group": 3, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [2, 9, 17, 29], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [9, 3, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [9], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [2, 9, 17, 29], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float16_b2_g3_c3_m3_17x29_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 3 input and 3 output channels per group, dilation 2x2, and stride 1x1. The output has 17 rows and 29 columns per channel." + }, + "attrs": { "group": 3, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [2, 9, 17, 29], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [9, 3, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [9], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [2, 9, 17, 29], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float32_b2_g3_c3_m5_17x29_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 3 input and 5 output channels per group, dilation 2x2, and stride 1x1. The output has 17 rows and 29 columns per channel." + }, + "attrs": { "group": 3, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [2, 9, 17, 29], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [15, 3, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [15], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [2, 15, 17, 29], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float16_b2_g3_c3_m5_17x29_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 3 input and 5 output channels per group, dilation 2x2, and stride 1x1. The output has 17 rows and 29 columns per channel." + }, + "attrs": { "group": 3, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [2, 9, 17, 29], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [15, 3, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [15], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [2, 15, 17, 29], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float32_b2_g3_c3_m6_17x29_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 3 input and 6 output channels per group, dilation 2x2, and stride 1x1. The output has 17 rows and 29 columns per channel." + }, + "attrs": { "group": 3, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [2, 9, 17, 29], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [18, 3, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [18], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [2, 18, 17, 29], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float16_b2_g3_c3_m6_17x29_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 3 input and 6 output channels per group, dilation 2x2, and stride 1x1. The output has 17 rows and 29 columns per channel." + }, + "attrs": { "group": 3, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [2, 9, 17, 29], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [18, 3, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [18], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [2, 18, 17, 29], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float32_b2_g3_c3_m8_17x29_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 3 input and 8 output channels per group, dilation 2x2, and stride 1x1. The output has 17 rows and 29 columns per channel." + }, + "attrs": { "group": 3, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [2, 9, 17, 29], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [24, 3, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [2, 24, 17, 29], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float16_b2_g3_c3_m8_17x29_k7x7_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 7x7 convolution with 3 input and 8 output channels per group, dilation 2x2, and stride 1x1. The output has 17 rows and 29 columns per channel." + }, + "attrs": { "group": 3, "pads": [6, 6, 6, 6], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [2, 9, 17, 29], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [24, 3, 7, 7], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [2, 24, 17, 29], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float32_b1_g4_c3_m6_17x7_k5x5_d1x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 5x5 convolution with 3 input and 6 output channels per group, dilation 1x2, and stride 1x1. The output has 17 rows and 7 columns per channel." + }, + "attrs": { "group": 4, "pads": [2, 4, 2, 4], "strides": [1, 1], "dilations": [1, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 12, 17, 7], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [24, 3, 5, 5], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 24, 17, 7], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c3_m6_17x8_k5x5_d1x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 5x5 convolution with 3 input and 6 output channels per group, dilation 1x2, and stride 1x1. The output has 17 rows and 8 columns per channel." + }, + "attrs": { "group": 4, "pads": [2, 4, 2, 4], "strides": [1, 1], "dilations": [1, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 12, 17, 8], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [24, 3, 5, 5], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 24, 17, 8], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c3_m6_17x9_k5x5_d1x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 5x5 convolution with 3 input and 6 output channels per group, dilation 1x2, and stride 1x1. The output has 17 rows and 9 columns per channel." + }, + "attrs": { "group": 4, "pads": [2, 4, 2, 4], "strides": [1, 1], "dilations": [1, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 12, 17, 9], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [24, 3, 5, 5], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 24, 17, 9], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c3_m6_17x11_k5x5_d1x3_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 5x5 convolution with 3 input and 6 output channels per group, dilation 1x3, and stride 1x1. The output has 17 rows and 11 columns per channel." + }, + "attrs": { "group": 4, "pads": [2, 6, 2, 6], "strides": [1, 1], "dilations": [1, 3] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 12, 17, 11], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [24, 3, 5, 5], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 24, 17, 11], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c3_m6_17x12_k5x5_d1x3_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 5x5 convolution with 3 input and 6 output channels per group, dilation 1x3, and stride 1x1. The output has 17 rows and 12 columns per channel." + }, + "attrs": { "group": 4, "pads": [2, 6, 2, 6], "strides": [1, 1], "dilations": [1, 3] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 12, 17, 12], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [24, 3, 5, 5], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 24, 17, 12], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c3_m6_17x13_k5x5_d1x3_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 5x5 convolution with 3 input and 6 output channels per group, dilation 1x3, and stride 1x1. The output has 17 rows and 13 columns per channel." + }, + "attrs": { "group": 4, "pads": [2, 6, 2, 6], "strides": [1, 1], "dilations": [1, 3] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 12, 17, 13], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [24, 3, 5, 5], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 24, 17, 13], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c3_m6_33x35_k3x11_d1x2_s1x1_bias1_asym1", + "provenance": { + "notes": "Grouped 3x11 convolution with 3 input and 6 output channels per group, dilation 1x2, and stride 1x1. The output has 34 rows and 37 columns per channel." + }, + "attrs": { "group": 4, "pads": [1, 10, 2, 12], "strides": [1, 1], "dilations": [1, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 12, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [24, 3, 3, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 24, 34, 37], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c3_m6_33x35_k11x3_d2x1_s1x1_bias1_asym1", + "provenance": { + "notes": "Grouped 11x3 convolution with 3 input and 6 output channels per group, dilation 2x1, and stride 1x1. The output has 34 rows and 37 columns per channel." + }, + "attrs": { "group": 4, "pads": [10, 1, 11, 3], "strides": [1, 1], "dilations": [2, 1] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 12, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [24, 3, 11, 3], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 24, 34, 37], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c3_m6_33x35_k5x9_d1x3_s2x1_bias1_asym1", + "provenance": { + "notes": "Grouped 5x9 convolution with 3 input and 6 output channels per group, dilation 1x3, and stride 2x1. The output has 17 rows and 37 columns per channel." + }, + "attrs": { "group": 4, "pads": [2, 12, 3, 14], "strides": [2, 1], "dilations": [1, 3] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 12, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [24, 3, 5, 9], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 24, 17, 37], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c3_m6_33x35_k7x5_d2x2_s1x2_bias1_asym1", + "provenance": { + "notes": "Grouped 7x5 convolution with 3 input and 6 output channels per group, dilation 2x2, and stride 1x2. The output has 34 rows and 19 columns per channel." + }, + "attrs": { "group": 4, "pads": [6, 4, 7, 6], "strides": [1, 2], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 12, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [24, 3, 7, 5], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 24, 34, 19], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c3_m6_33x35_k11x11_d6x6_s1x1_bias1_asym1", + "provenance": { + "notes": "Grouped 11x11 convolution with 3 input and 6 output channels per group, dilation 6x6, and stride 1x1. The output has 34 rows and 37 columns per channel." + }, + "attrs": { "group": 4, "pads": [30, 30, 31, 32], "strides": [1, 1], "dilations": [6, 6] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 12, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [24, 3, 11, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 24, 34, 37], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g4_c3_m6_33x35_k11x11_d7x7_s1x1_bias1_asym1", + "provenance": { + "notes": "Grouped 11x11 convolution with 3 input and 6 output channels per group, dilation 7x7, and stride 1x1. The output has 34 rows and 37 columns per channel." + }, + "attrs": { "group": 4, "pads": [35, 35, 36, 37], "strides": [1, 1], "dilations": [7, 7] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 12, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [24, 3, 11, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 24, 34, 37], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float16_b1_g4_c3_m6_33x35_k3x11_d1x2_s1x1_bias1_asym1", + "provenance": { + "notes": "Grouped 3x11 convolution with 3 input and 6 output channels per group, dilation 1x2, and stride 1x1. The output has 34 rows and 37 columns per channel." + }, + "attrs": { "group": 4, "pads": [1, 10, 2, 12], "strides": [1, 1], "dilations": [1, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 12, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [24, 3, 3, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 24, 34, 37], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g4_c3_m6_33x35_k11x3_d2x1_s1x1_bias1_asym1", + "provenance": { + "notes": "Grouped 11x3 convolution with 3 input and 6 output channels per group, dilation 2x1, and stride 1x1. The output has 34 rows and 37 columns per channel." + }, + "attrs": { "group": 4, "pads": [10, 1, 11, 3], "strides": [1, 1], "dilations": [2, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 12, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [24, 3, 11, 3], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 24, 34, 37], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g4_c3_m6_33x35_k5x9_d1x3_s2x1_bias1_asym1", + "provenance": { + "notes": "Grouped 5x9 convolution with 3 input and 6 output channels per group, dilation 1x3, and stride 2x1. The output has 17 rows and 37 columns per channel." + }, + "attrs": { "group": 4, "pads": [2, 12, 3, 14], "strides": [2, 1], "dilations": [1, 3] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 12, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [24, 3, 5, 9], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 24, 17, 37], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g4_c3_m6_33x35_k7x5_d2x2_s1x2_bias1_asym1", + "provenance": { + "notes": "Grouped 7x5 convolution with 3 input and 6 output channels per group, dilation 2x2, and stride 1x2. The output has 34 rows and 19 columns per channel." + }, + "attrs": { "group": 4, "pads": [6, 4, 7, 6], "strides": [1, 2], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 12, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [24, 3, 7, 5], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 24, 34, 19], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g4_c3_m6_33x35_k11x11_d6x6_s1x1_bias1_asym1", + "provenance": { + "notes": "Grouped 11x11 convolution with 3 input and 6 output channels per group, dilation 6x6, and stride 1x1. The output has 34 rows and 37 columns per channel." + }, + "attrs": { "group": 4, "pads": [30, 30, 31, 32], "strides": [1, 1], "dilations": [6, 6] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 12, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [24, 3, 11, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 24, 34, 37], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g4_c3_m6_33x35_k11x11_d7x7_s1x1_bias1_asym1", + "provenance": { + "notes": "Grouped 11x11 convolution with 3 input and 6 output channels per group, dilation 7x7, and stride 1x1. The output has 34 rows and 37 columns per channel." + }, + "attrs": { "group": 4, "pads": [35, 35, 36, 37], "strides": [1, 1], "dilations": [7, 7] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 12, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [24, 3, 11, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [24], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 24, 34, 37], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float32_b1_g16_c1_m2_33x35_k3x3_d3x3_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 3x3 convolution with 1 input and 2 output channels per group, dilation 3x3, and stride 1x1. The output has 33 rows and 35 columns per channel." + }, + "attrs": { "group": 16, "pads": [3, 3, 3, 3], "strides": [1, 1], "dilations": [3, 3] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 16, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [32, 1, 3, 3], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [32], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 32, 33, 35], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g16_c1_m1_33x35_k11x11_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 11x11 convolution with 1 input and 1 output channels per group, dilation 2x2, and stride 1x1. The output has 33 rows and 35 columns per channel." + }, + "attrs": { "group": 16, "pads": [10, 10, 10, 10], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 16, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [16, 1, 11, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [16], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 16, 33, 35], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g16_c1_m2_33x35_k11x11_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 11x11 convolution with 1 input and 2 output channels per group, dilation 2x2, and stride 1x1. The output has 33 rows and 35 columns per channel." + }, + "attrs": { "group": 16, "pads": [10, 10, 10, 10], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 16, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [32, 1, 11, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [32], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 32, 33, 35], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float16_b1_g16_c1_m2_33x35_k3x3_d3x3_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 3x3 convolution with 1 input and 2 output channels per group, dilation 3x3, and stride 1x1. The output has 33 rows and 35 columns per channel." + }, + "attrs": { "group": 16, "pads": [3, 3, 3, 3], "strides": [1, 1], "dilations": [3, 3] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 16, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [32, 1, 3, 3], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [32], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 32, 33, 35], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g16_c1_m1_33x35_k11x11_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 11x11 convolution with 1 input and 1 output channels per group, dilation 2x2, and stride 1x1. The output has 33 rows and 35 columns per channel." + }, + "attrs": { "group": 16, "pads": [10, 10, 10, 10], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 16, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [16, 1, 11, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [16], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 16, 33, 35], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g16_c1_m2_33x35_k11x11_d2x2_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 11x11 convolution with 1 input and 2 output channels per group, dilation 2x2, and stride 1x1. The output has 33 rows and 35 columns per channel." + }, + "attrs": { "group": 16, "pads": [10, 10, 10, 10], "strides": [1, 1], "dilations": [2, 2] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 16, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [32, 1, 11, 11], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [32], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 32, 33, 35], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float32_b1_g16_c1_m1_33x35_k4x4_d1x1_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 4x4 convolution with 1 input and 1 output channels per group, dilation 1x1, and stride 1x1. The output has 32 rows and 34 columns per channel." + }, + "attrs": { "group": 16, "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 16, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [16, 1, 4, 4], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [16], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 16, 32, 34], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g16_c1_m1_33x35_k5x5_d1x1_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 5x5 convolution with 1 input and 1 output channels per group, dilation 1x1, and stride 1x1. The output has 33 rows and 35 columns per channel." + }, + "attrs": { "group": 16, "pads": [2, 2, 2, 2], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 16, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [16, 1, 5, 5], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [16], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 16, 33, 35], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float32_b1_g16_c1_m1_33x35_k9x9_d1x1_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 9x9 convolution with 1 input and 1 output channels per group, dilation 1x1, and stride 1x1. The output has 33 rows and 35 columns per channel." + }, + "attrs": { "group": 16, "pads": [4, 4, 4, 4], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 16, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float32", + "shape": [16, 1, 9, 9], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float32", + "shape": [16], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 16, 33, 35], "tolerance": 0.0001, "relTolerance": 0.0001 } } + }, + { + "name": "grouped_float16_b1_g16_c1_m1_33x35_k4x4_d1x1_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 4x4 convolution with 1 input and 1 output channels per group, dilation 1x1, and stride 1x1. The output has 32 rows and 34 columns per channel." + }, + "attrs": { "group": 16, "pads": [1, 1, 1, 1], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 16, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [16, 1, 4, 4], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [16], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 16, 32, 34], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g16_c1_m1_33x35_k5x5_d1x1_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 5x5 convolution with 1 input and 1 output channels per group, dilation 1x1, and stride 1x1. The output has 33 rows and 35 columns per channel." + }, + "attrs": { "group": 16, "pads": [2, 2, 2, 2], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 16, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [16, 1, 5, 5], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [16], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 16, 33, 35], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "grouped_float16_b1_g16_c1_m1_33x35_k9x9_d1x1_s1x1_bias1_asym0", + "provenance": { + "notes": "Grouped 9x9 convolution with 1 input and 1 output channels per group, dilation 1x1, and stride 1x1. The output has 33 rows and 35 columns per channel." + }, + "attrs": { "group": 16, "pads": [4, 4, 4, 4], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 16, 33, 35], + "data": { "kind": "fillFloat32", "sinStep": 0.137, "cosStep": 0.193, "scale": 0.2, "offset": 0.0 } + }, + "w": { + "dtype": "float16", + "shape": [16, 1, 9, 9], + "data": { + "kind": "fillFloat32", + "sinStep": 0.20800000000000002, + "cosStep": 0.246, + "scale": 0.02, + "offset": 0.0 + } + }, + "bias": { + "dtype": "float16", + "shape": [16], + "data": { "kind": "fillFloat32", "sinStep": 0.279, "cosStep": 0.299, "scale": 0.03, "offset": 0.017 } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 16, 33, 35], "tolerance": 0.001, "relTolerance": 0.001 } } + }, + { + "name": "ort_grouped_conv_padding_signed_coordinates", + "provenance": { + "source": "onnxruntime/test/providers/webgpu/grouped_conv_padding_test.cc", + "test": "Conv_WebGPU.GroupedConvWithPaddingUsesSignedCoordinates", + "notes": "Two independent audio-style channels as a 2D convolution with H=1 and a left/right pad of 1, so the leftmost output column needs input column -1. ORT expected Y: [4,8,8, 30,60,50]." + }, + "attrs": { "group": 2, "kernel_shape": [1, 3], "pads": [0, 1, 0, 1], "strides": [1, 1] }, + "inputs": { + "x": { + "dtype": "float32", + "shape": [1, 2, 1, 3], + "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 10.0, 20.0, 30.0] } + }, + "w": { + "dtype": "float32", + "shape": [2, 1, 1, 3], + "data": { "kind": "values", "values": [1.0, 2.0, 1.0, 1.0, 1.0, 1.0] } + } + }, + "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 1, 3], "tolerance": 0.000001 } } + }, + { + "name": "ort_conv3d_f16_valid_c1_scalar_remainder", + "provenance": { + "source": "js/web/test/data/ops/conv3dncdhw_f16.jsonc", + "test": "conv3d float16, x=[1, 1, 2, 2, 2], f=[2, 1, 2, 2, 2], s=1, d=1, p=valid", + "notes": "float16 Conv3D (NCDHW). All operand values are multiples of 0.5 so every partial sum is exact in f16 and the result does not depend on accumulation order. ORT expected output: [6.5, 0.75]" + }, + "attrs": { "kernel_shape": [2, 2, 2], "auto_pad": "VALID", "strides": [1, 1, 1], "dilations": [1, 1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 1, 2, 2, 2], + "data": { "kind": "values", "values": [-1.5, -1.0, 1.5, 0.5, -1.0, -0.5, -1.0, -1.5] } + }, + "w": { + "dtype": "float16", + "shape": [2, 1, 2, 2, 2], + "data": { + "kind": "values", + "values": [-1.0, -1.0, -0.5, 0.5, -1.0, -1.0, -1.5, -1.0, -1.0, -0.5, -1.5, 0.5, 1.5, -1.0, 0.5, -1.5] + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 2, 1, 1, 1], "tolerance": 0.005 } } + }, + { + "name": "ort_conv3d_f16_valid_c4_vec4", + "provenance": { + "source": "js/web/test/data/ops/conv3dncdhw_f16.jsonc", + "test": "conv3d float16, x=[1, 4, 2, 2, 2], f=[2, 4, 2, 2, 2], s=1, d=1, p=valid", + "notes": "float16 Conv3D (NCDHW). All operand values are multiples of 0.5 so every partial sum is exact in f16 and the result does not depend on accumulation order. ORT expected output: [-2.0, 0.5]" + }, + "attrs": { "kernel_shape": [2, 2, 2], "auto_pad": "VALID", "strides": [1, 1, 1], "dilations": [1, 1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 4, 2, 2, 2], + "data": { + "kind": "values", + "values": [0.5, -1.0, -1.5, 0.5, 0.5, -1.0, 1.0, -1.0, 0.5, -1.0, 1.0, -0.5, -1.0, -1.0, -1.5, -1.0, -1.0, -1.0, 1.0, 1.5, 1.5, 1.5, -1.5, -1.0, -1.0, 0.5, 1.5, 1.0, -1.0, -1.0, -1.0, 0.5] + } + }, + "w": { + "dtype": "float16", + "shape": [2, 4, 2, 2, 2], + "data": { + "kind": "values", + "values": [0.5, -1.0, 0.5, 1.0, 1.0, -1.0, 1.0, -1.0, -0.5, 0.5, -1.5, 0.5, -0.5, -1.0, -1.0, 1.5, -1.0, 0.5, 0.5, 1.0, -1.0, -1.0, 0.5, 0.5, 0.5, 0.5, -1.0, -0.5, 1.5, -1.0, 0.5, -1.0, 0.5, 0.5, 1.5, -1.0, -0.5, -1.0, 1.0, -1.0, -1.0, 0.5, -1.0, -1.5, 0.5, -1.0, -1.0, 1.5, 1.0, -1.0, -1.5, -1.0, -1.5, 1.5, -0.5, 0.5, -1.0, 0.5, -0.5, -0.5, -1.0, -1.5, -1.5, 0.5] + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 2, 1, 1, 1], "tolerance": 0.005 } } + }, + { + "name": "ort_conv3d_f16_valid_c6_vec4_vec2_remainder", + "provenance": { + "source": "js/web/test/data/ops/conv3dncdhw_f16.jsonc", + "test": "conv3d float16, x=[1, 6, 2, 2, 2], f=[2, 6, 2, 2, 2], s=1, d=1, p=valid", + "notes": "float16 Conv3D (NCDHW). All operand values are multiples of 0.5 so every partial sum is exact in f16 and the result does not depend on accumulation order. ORT expected output: [-0.5, 1.0]" + }, + "attrs": { "kernel_shape": [2, 2, 2], "auto_pad": "VALID", "strides": [1, 1, 1], "dilations": [1, 1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 6, 2, 2, 2], + "data": { + "kind": "values", + "values": [1.0, 0.5, -0.5, -1.0, 0.5, 0.5, 0.5, -1.5, -1.5, -1.0, 1.0, -1.0, -0.5, -0.5, 1.0, -1.5, -1.0, 0.5, 0.5, 1.5, 1.5, -1.5, -1.0, 0.5, 0.5, 1.0, -0.5, 1.0, 0.5, 1.0, 1.0, -1.0, 1.5, -0.5, -1.0, 1.0, -1.5, 0.5, 0.5, -0.5, -1.5, 1.0, 0.5, -1.0, 0.5, -1.0, 0.5, -1.0] + } + }, + "w": { + "dtype": "float16", + "shape": [2, 6, 2, 2, 2], + "data": { + "kind": "values", + "values": [-1.0, -0.5, -1.0, -1.0, -0.5, 0.5, -0.5, 1.5, -1.5, 1.5, -1.0, -1.0, -1.0, -1.0, 1.5, -1.0, 1.5, -1.5, 1.0, 0.5, -1.5, -0.5, 1.0, 1.5, 0.5, -1.5, -0.5, -1.0, 1.5, 1.0, -1.5, 0.5, -0.5, 0.5, 0.5, 1.0, -1.5, -1.0, -1.5, -1.0, 0.5, -1.0, -1.5, -1.0, 0.5, -1.0, 0.5, -1.0, -0.5, -1.5, 0.5, -1.0, 0.5, -1.0, -1.0, -1.0, -1.5, -0.5, 0.5, 0.5, 1.0, -0.5, -1.5, -1.0, 1.5, 1.5, 0.5, -0.5, 1.5, -1.5, -1.5, 1.5, 1.5, -1.5, -1.5, -1.5, 0.5, 0.5, 1.0, 0.5, 0.5, -1.5, 0.5, -0.5, 0.5, -1.0, -1.0, 1.5, 1.5, 1.0, -1.0, 1.5, 0.5, 1.5, 1.0, 1.0] + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 2, 1, 1, 1], "tolerance": 0.005 } } + }, + { + "name": "ort_conv3d_f16_valid_c7_vec4_vec3_remainder", + "provenance": { + "source": "js/web/test/data/ops/conv3dncdhw_f16.jsonc", + "test": "conv3d float16, x=[1, 7, 2, 2, 2], f=[2, 7, 2, 2, 2], s=1, d=1, p=valid", + "notes": "float16 Conv3D (NCDHW). All operand values are multiples of 0.5 so every partial sum is exact in f16 and the result does not depend on accumulation order. ORT expected output: [4.5, 0.25]" + }, + "attrs": { "kernel_shape": [2, 2, 2], "auto_pad": "VALID", "strides": [1, 1, 1], "dilations": [1, 1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 7, 2, 2, 2], + "data": { + "kind": "values", + "values": [1.0, 0.5, -1.0, -1.5, -0.5, 0.5, -1.0, 0.5, 1.0, -0.5, 1.0, 1.5, -1.0, -1.5, 0.5, -1.0, -1.0, -0.5, 0.5, 1.5, 1.0, 1.5, 0.5, 0.5, 1.0, 1.5, -1.0, 0.5, -1.0, -1.5, -1.5, -0.5, 0.5, -1.5, 0.5, 0.5, 1.0, 0.5, -1.5, 0.5, 0.5, -0.5, 1.0, 1.0, -1.0, 0.5, 0.5, -1.0, 1.0, -1.5, -0.5, 0.5, 0.5, -1.5, 1.5, -1.0] + } + }, + "w": { + "dtype": "float16", + "shape": [2, 7, 2, 2, 2], + "data": { + "kind": "values", + "values": [-1.5, -0.5, -0.5, -1.0, 0.5, 0.5, -1.0, 0.5, 0.5, 1.5, 0.5, -1.0, -1.0, -0.5, -1.5, 1.5, -1.0, 0.5, 0.5, 0.5, -1.0, -1.0, 1.0, 0.5, 0.5, -1.5, -1.5, -0.5, 0.5, -0.5, -1.0, -1.0, -1.5, 1.0, 0.5, 0.5, 0.5, -1.0, -1.0, -0.5, -0.5, -1.5, 0.5, 1.0, 0.5, 0.5, 1.5, 0.5, -1.5, -1.0, -1.0, 0.5, -0.5, -0.5, 0.5, 0.5, 1.0, 1.5, 1.5, 1.0, 1.5, -1.0, -1.0, 0.5, 0.5, 0.5, 1.5, -1.5, 1.5, 0.5, -0.5, 1.0, -1.0, 1.5, -1.0, 1.0, 0.5, -0.5, -0.5, -1.5, -1.5, -1.5, 0.5, -0.5, -1.0, -1.5, 1.5, -1.0, -0.5, 1.5, 1.5, -0.5, 1.0, -1.5, -1.0, 1.0, 0.5, 1.0, 1.5, 1.5, -1.5, -0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 1.5, -1.5, -1.5, 0.5, -1.0] + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 2, 1, 1, 1], "tolerance": 0.005 } } + }, + { + "name": "ort_conv3d_f16_same_upper_k3", + "provenance": { + "source": "js/web/test/data/ops/conv3dncdhw_f16.jsonc", + "test": "conv3d float16, x=[1, 3, 3, 3, 3], f=[2, 3, 3, 3, 3], s=1, d=1, p=same_upper", + "notes": "float16 Conv3D (NCDHW). All operand values are multiples of 0.5 so every partial sum is exact in f16 and the result does not depend on accumulation order. ORT expected output: [-5.75, -0.5, -1.5, 4.25, -5.75, 1.25, 0.75, -5.75, 0.25, -2.25, 4.5, -6.5, 9.25, -2.75, -3.5, 0.25, -5.0, 11.25, -2.5, -5.25, 4.0, -2.75, 1.5, 3.5, 5.75, -3.25, -0.75, -7.0, -5.5, 3.75, 2.75, 0.5, 7.0, -0.25, 3.25, -5.0, -4.5, -2.0, -5.75, 1.75, -1.0, -3.0, -6.75, -16.5, 1.25, -4.25, 3.75, 3.25, 2.25, -3.75, 4.0, -3.75, 11.25, -1.75]" + }, + "attrs": { "kernel_shape": [3, 3, 3], "auto_pad": "SAME_UPPER", "strides": [1, 1, 1], "dilations": [1, 1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 3, 3, 3, 3], + "data": { + "kind": "values", + "values": [-1.0, 0.5, -1.0, -1.5, 0.5, 0.5, 0.5, -0.5, 0.5, 1.5, -1.0, 0.5, -1.0, 0.5, 0.5, 0.5, -1.0, 1.5, -1.0, -0.5, -1.5, -1.0, 0.5, -1.0, 1.5, -1.5, -1.0, -0.5, -1.0, 0.5, 1.5, 0.5, -1.5, 1.0, 0.5, -0.5, -0.5, 1.0, -0.5, -0.5, 0.5, -0.5, 1.0, -1.0, 0.5, 0.5, -1.5, 1.0, 0.5, 0.5, 1.5, 0.5, 1.5, -0.5, -1.0, -1.0, -1.0, 1.0, 1.5, 0.5, -0.5, -1.0, -1.0, 1.0, -0.5, -1.5, -1.0, 1.5, 1.5, -1.5, 0.5, 0.5, -1.0, -1.0, -1.0, 1.5, -0.5, -1.0, -1.0, -1.0, 0.5] + } + }, + "w": { + "dtype": "float16", + "shape": [2, 3, 3, 3, 3], + "data": { + "kind": "values", + "values": [0.5, -1.5, 0.5, -0.5, 1.5, 0.5, 0.5, 1.5, 0.5, 1.5, -1.5, -0.5, 0.5, -1.0, -0.5, -1.5, -1.0, 0.5, -0.5, -1.0, 1.5, -1.0, -1.0, -0.5, 0.5, 1.5, -1.5, 1.5, -1.5, 0.5, 0.5, -0.5, 1.5, 1.0, 1.0, 0.5, -1.5, -1.0, 1.5, -0.5, -0.5, 1.5, -1.0, 0.5, 0.5, -1.5, 1.0, 1.5, -1.0, -0.5, -1.0, -1.5, 0.5, -0.5, 1.0, -1.5, 0.5, -1.0, 0.5, 1.0, 0.5, 0.5, -1.5, 1.5, 1.5, 0.5, 1.0, 1.5, 0.5, 0.5, -0.5, -1.0, -0.5, 1.5, -1.0, -0.5, 0.5, -0.5, 0.5, 1.0, 0.5, 1.0, -0.5, -1.5, -0.5, -1.0, 0.5, 0.5, 0.5, 1.0, 1.0, 1.0, 0.5, 0.5, -1.0, 1.0, -0.5, 0.5, -1.0, -1.5, -0.5, -1.0, -0.5, 0.5, 1.0, -1.0, 1.0, 1.5, 0.5, -0.5, 1.5, -0.5, -1.0, -1.0, -0.5, 0.5, 0.5, -1.0, 1.5, 1.5, -1.0, 1.5, 0.5, 1.5, -1.5, -1.0, -1.5, -1.5, -1.5, 0.5, -1.5, -1.0, 1.5, -0.5, -1.0, -1.0, 1.5, 0.5, -1.0, 0.5, -1.0, -1.0, 1.5, 0.5, 1.5, -1.0, -0.5, 1.0, -1.0, 0.5, 0.5, -1.0, -1.5, -1.5, -0.5, 1.0, 0.5, 1.5, 1.0, -1.0, -1.0, -1.0] + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 2, 3, 3, 3], "tolerance": 0.005 } } + }, + { + "name": "ort_conv3d_f16_same_upper_k3_bias", + "provenance": { + "source": "js/web/test/data/ops/conv3dncdhw_f16.jsonc", + "test": "conv3d float16 with bias, x=[1, 4, 3, 3, 3], f=[2, 4, 3, 3, 3], s=1, d=1, p=same_upper", + "notes": "float16 Conv3D (NCDHW). All operand values are multiples of 0.5 so every partial sum is exact in f16 and the result does not depend on accumulation order. ORT expected output: [3.5, 9.75, -6.5, -17.75, 5.0, -3.0, 3.0, -4.25, -6.0, -5.0, 11.75, -2.25, 8.75, -2.5, 2.25, 11.75, 19.5, -12.25, 1.0, -6.0, -4.75, -1.5, 21.75, 0.75, -8.0, -5.5, -1.0, 0.25, 12.5, 0.0, 6.75, -2.75, -7.0, 5.25, -0.25, -1.25, 2.75, -4.25, 2.5, -3.25, 4.5, 11.5, 5.75, -4.25, -3.75, 5.5, 13.75, 11.25, -4.25, 2.5, 13.25, -1.0, -3.75, -1.5]" + }, + "attrs": { "kernel_shape": [3, 3, 3], "auto_pad": "SAME_UPPER", "strides": [1, 1, 1], "dilations": [1, 1, 1] }, + "inputs": { + "x": { + "dtype": "float16", + "shape": [1, 4, 3, 3, 3], + "data": { + "kind": "values", + "values": [1.0, -0.5, -1.0, 1.5, 1.0, -1.5, -1.0, 1.0, 0.5, 0.5, -0.5, -0.5, -1.0, -1.5, -0.5, 1.0, -1.0, -0.5, 1.5, 0.5, 1.5, -0.5, 0.5, 1.0, 1.5, 1.5, -1.0, -1.0, 1.0, -1.5, -1.5, 1.0, -1.0, -0.5, 0.5, 1.0, -1.0, -1.5, -1.5, -0.5, 1.5, -1.5, 0.5, 0.5, 1.0, -1.0, 1.0, -1.0, -1.0, -1.5, 1.5, 1.5, -1.0, -0.5, -1.5, 1.0, 1.0, 0.5, -1.0, 0.5, -1.5, 0.5, 1.0, 1.0, -1.0, 1.0, -1.0, -1.5, -1.0, -0.5, 1.0, -1.0, 0.5, -0.5, -1.0, -0.5, 0.5, 0.5, 1.0, -1.0, -1.0, 1.5, -1.0, 0.5, -0.5, 1.5, 1.0, 1.5, -0.5, -1.0, -1.5, -1.0, -1.5, -1.5, -1.0, 0.5, -0.5, -0.5, 1.5, 0.5, -1.5, 1.0, 0.5, -1.5, -0.5, -0.5, -1.0, 1.0] + } + }, + "w": { + "dtype": "float16", + "shape": [2, 4, 3, 3, 3], + "data": { + "kind": "values", + "values": [0.5, 1.0, -1.0, -0.5, -1.0, 1.5, 1.5, 1.0, -1.0, -1.0, -1.5, 1.0, 1.0, -1.5, -1.5, 0.5, 1.5, -1.0, -0.5, -1.5, 1.0, 0.5, 0.5, -0.5, 1.5, -1.0, 1.0, -1.5, -1.5, 0.5, 1.0, -1.0, -1.5, -1.0, -1.0, 1.5, -1.0, 1.0, -1.5, -0.5, 1.0, 0.5, 0.5, 1.0, -1.5, 1.5, 0.5, 1.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 1.0, -1.0, 0.5, -1.5, -1.0, -0.5, 1.0, -0.5, -1.0, 0.5, -0.5, -1.5, 1.0, -1.5, 1.0, -1.0, -0.5, -1.0, -0.5, 0.5, -0.5, -1.0, 0.5, -1.5, 1.0, -0.5, 1.0, 0.5, -1.5, 0.5, 0.5, -1.0, 0.5, -1.0, -0.5, -1.5, -1.0, -1.5, 1.5, 0.5, -1.0, 0.5, 0.5, -1.0, 0.5, 1.0, 0.5, -1.0, -1.0, -1.5, -1.5, -1.5, -1.5, 1.5, -1.5, 0.5, 1.0, -0.5, -0.5, 0.5, -0.5, -1.0, 1.5, -1.0, 0.5, 1.0, -0.5, 1.5, 1.0, 1.0, 1.0, 0.5, -0.5, -1.0, 0.5, 1.0, 1.0, -1.0, 0.5, -0.5, 0.5, -1.5, 0.5, 0.5, -1.5, -1.5, -0.5, 0.5, 0.5, -1.5, 0.5, -1.0, 0.5, -1.0, -1.0, 1.0, -1.5, 0.5, 0.5, 0.5, 0.5, 0.5, -1.5, 0.5, 0.5, 0.5, -1.5, -1.0, 0.5, 1.0, 1.0, -1.5, -1.0, 1.5, -0.5, -1.5, -1.5, 1.0, 0.5, 1.5, -1.0, -0.5, 1.0, 0.5, -1.5, 1.0, 1.0, 0.5, 1.0, 0.5, -1.5, 0.5, -1.0, -1.5, 0.5, 1.0, 0.5, -0.5, -1.0, 1.5, -1.0, 1.5, -1.0, -1.0, -0.5, -1.5, -1.0, -0.5, -1.0, -0.5, 1.0, 1.5, 0.5, -1.0, -0.5, 0.5, -0.5, 1.0, 0.5, 0.5, -1.0, 1.5] + } + }, + "bias": { "dtype": "float16", "shape": [2], "data": { "kind": "values", "values": [-1.5, 1.0] } } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 2, 3, 3, 3], "tolerance": 0.005 } } + }, + { + "name": "ort_fp16_pointwise_odd_out_channels_97", + "provenance": { + "source": "onnxruntime/test/providers/cpu/nn/conv_fp16_test.cc", + "test": "ConvFp16Test.WebGpuSubgroupPointwiseNoBias", + "notes": "f16 point-wise (1x1) Conv with an ODD out-channel count (97) -- the shape ORT added to exercise safe reuse of a padded constant B in the subgroup-matrix path. X is all 1.0; W[oc][ic] = (oc%7-3)/16 (period 7 in oc, so a 112-long cycle reproduces it exactly), so every output equals oc%7-3 exactly in f16." + }, + "attrs": { "group": 1, "kernel_shape": [1, 1], "pads": [0, 0, 0, 0], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { "dtype": "float16", "shape": [1, 16, 4, 8], "data": { "kind": "constant", "value": 1.0 } }, + "w": { + "dtype": "float16", + "shape": [97, 16, 1, 1], + "data": { + "kind": "cycle", + "values": { "$ref": "#/fixtureArrays/ort_fp16_pointwise_odd_out_channels_97_input_w" } + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 97, 4, 8], "tolerance": 0.005 } } + }, + { + "name": "ort_fp16_pointwise_odd_out_channels_97_bias", + "provenance": { + "source": "onnxruntime/test/providers/cpu/nn/conv_fp16_test.cc", + "test": "ConvFp16Test.WebGpuSubgroupPointwiseBias", + "notes": "f16 point-wise (1x1) Conv with an ODD out-channel count (97) -- the shape ORT added to exercise safe reuse of a padded constant B in the subgroup-matrix path. X is all 1.0; W[oc][ic] = (oc%7-3)/16 (period 7 in oc, so a 112-long cycle reproduces it exactly), so every output equals oc%7-3 exactly in f16 plus bias (oc%3-1)*0.25 (period 3)." + }, + "attrs": { "group": 1, "kernel_shape": [1, 1], "pads": [0, 0, 0, 0], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { "dtype": "float16", "shape": [1, 16, 4, 8], "data": { "kind": "constant", "value": 1.0 } }, + "w": { + "dtype": "float16", + "shape": [97, 16, 1, 1], + "data": { + "kind": "cycle", + "values": { "$ref": "#/fixtureArrays/ort_fp16_pointwise_odd_out_channels_97_input_w" } + } + }, + "bias": { "dtype": "float16", "shape": [97], "data": { "kind": "cycle", "values": [-0.25, 0.0, 0.25] } } + }, + "outputs": { "y": { "dtype": "float16", "shape": [1, 97, 4, 8], "tolerance": 0.005 } } + }, + { + "name": "ort_fp16_pointwise_odd_out_channels_97_batch2", + "provenance": { + "source": "onnxruntime/test/providers/cpu/nn/conv_fp16_test.cc", + "test": "ConvFp16Test.WebGpuSubgroupPointwiseBatch", + "notes": "f16 point-wise (1x1) Conv with an ODD out-channel count (97) -- the shape ORT added to exercise safe reuse of a padded constant B in the subgroup-matrix path. X is all 1.0; W[oc][ic] = (oc%7-3)/16 (period 7 in oc, so a 112-long cycle reproduces it exactly), so every output equals oc%7-3 exactly in f16." + }, + "attrs": { "group": 1, "kernel_shape": [1, 1], "pads": [0, 0, 0, 0], "strides": [1, 1], "dilations": [1, 1] }, + "inputs": { + "x": { "dtype": "float16", "shape": [2, 16, 4, 8], "data": { "kind": "constant", "value": 1.0 } }, + "w": { + "dtype": "float16", + "shape": [97, 16, 1, 1], + "data": { + "kind": "cycle", + "values": { "$ref": "#/fixtureArrays/ort_fp16_pointwise_odd_out_channels_97_input_w" } + } + } + }, + "outputs": { "y": { "dtype": "float16", "shape": [2, 97, 4, 8], "tolerance": 0.005 } } } ] }