{ "op": "ai.onnx.ConvTranspose", "tunableSpace": { "WORKGROUP_SIZE": [64, 128, 256] }, "cases": [ { "name": "conv-transpose-f32-b1c16m16-16x16-k3s2", "preset": "smoke", "vars": { "batch": 1, "inChannels": 16, "outChannels": 16, "inH": 16, "inW": 16, "kernelH": 3, "kernelW": 3, "strideH": 2, "strideW": 2, "padH": 1, "padW": 1 }, "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1] }, "inputs": { "x": { "shape": [1, 16, 16, 16], "dtype": "float32", "dist": "normal", "seed": 114, "scale": 0.2 }, "w": { "shape": [16, 16, 3, 3], "dtype": "float32", "dist": "normal", "seed": 115, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 16, 31, 31], "dtype": "float32" } }, "bench": { "primary": true, "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inH * args.inW * args.inChannels * args.kernelH * args.kernelW" } ] } }, { "name": "conv-transpose-f32-non-vector-bias-b1c3m5-32x32-k3s2", "preset": "edge", "vars": { "batch": 1, "inChannels": 3, "outChannels": 5, "inH": 32, "inW": 32, "kernelH": 3, "kernelW": 3, "strideH": 2, "strideW": 2, "padH": 1, "padW": 1 }, "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1] }, "inputs": { "x": { "shape": [1, 3, 32, 32], "dtype": "float32", "dist": "normal", "seed": 116, "scale": 0.2 }, "w": { "shape": [3, 5, 3, 3], "dtype": "float32", "dist": "normal", "seed": 117, "scale": 0.1 }, "bias": { "shape": [5], "dtype": "float32", "dist": "normal", "seed": 118, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 5, 63, 63], "dtype": "float32" } }, "bench": { "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inH * args.inW * args.inChannels * args.kernelH * args.kernelW" } ] } }, { "name": "conv-transpose-f16-b1c64m64-32x32-k3s2", "preset": "smoke", "vars": { "batch": 1, "inChannels": 64, "outChannels": 64, "inH": 32, "inW": 32, "kernelH": 3, "kernelW": 3, "strideH": 2, "strideW": 2, "padH": 1, "padW": 1 }, "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1] }, "inputs": { "x": { "shape": [1, 64, 32, 32], "dtype": "float16", "dist": "normal", "seed": 211, "scale": 0.2 }, "w": { "shape": [64, 64, 3, 3], "dtype": "float16", "dist": "normal", "seed": 212, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 64, 63, 63], "dtype": "float16" } }, "bench": { "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inH * args.inW * args.inChannels * args.kernelH * args.kernelW" } ] } }, { "name": "conv-transpose-f32-b1c64m64-32x32-k3s2", "preset": "smoke", "vars": { "batch": 1, "inChannels": 64, "outChannels": 64, "inH": 32, "inW": 32, "kernelH": 3, "kernelW": 3, "strideH": 2, "strideW": 2, "padH": 1, "padW": 1 }, "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1] }, "inputs": { "x": { "shape": [1, 64, 32, 32], "dtype": "float32", "dist": "normal", "seed": 211, "scale": 0.2 }, "w": { "shape": [64, 64, 3, 3], "dtype": "float32", "dist": "normal", "seed": 212, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 64, 63, 63], "dtype": "float32" } }, "bench": { "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inH * args.inW * args.inChannels * args.kernelH * args.kernelW" } ] } }, { "name": "conv-transpose-f16-large-upsampler-b1c128m128-64x64-k4s2", "preset": "smoke", "vars": { "batch": 1, "inChannels": 128, "outChannels": 128, "inH": 64, "inW": 64, "kernelH": 4, "kernelW": 4, "strideH": 2, "strideW": 2, "padH": 1, "padW": 1 }, "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1] }, "inputs": { "x": { "shape": [1, 128, 64, 64], "dtype": "float16", "dist": "normal", "seed": 213, "scale": 0.2 }, "w": { "shape": [128, 128, 4, 4], "dtype": "float16", "dist": "normal", "seed": 214, "scale": 0.05 } }, "outputs": { "y": { "shape": [1, 128, 128, 128], "dtype": "float16" } }, "bench": { "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inH * args.inW * args.inChannels * args.kernelH * args.kernelW" } ] } }, { "name": "conv-transpose-f32-depthwise-g64-32x32-k4s2", "preset": "smoke", "vars": { "batch": 1, "inChannels": 64, "outChannels": 64, "inChannelsPerGroup": 1, "inH": 32, "inW": 32, "kernelH": 4, "kernelW": 4, "strideH": 2, "strideW": 2, "padH": 1, "padW": 1, "group": 64 }, "attrs": { "group": 64, "strides": [2, 2], "pads": [1, 1, 1, 1] }, "inputs": { "x": { "shape": [1, 64, 32, 32], "dtype": "float32", "dist": "normal", "seed": 215, "scale": 0.2 }, "w": { "shape": [64, 1, 4, 4], "dtype": "float32", "dist": "normal", "seed": 216, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 64, 64, 64], "dtype": "float32" } }, "bench": { "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inH * args.inW * args.inChannelsPerGroup * args.kernelH * args.kernelW" } ] } }, { "name": "conv-transpose-f32-depthwise-pointwise-g64-512x512-dispatch-fold", "preset": "edge", "provenance": { "notes": "Realistic depthwise pointwise projection at 16,777,216 outputs. Exercises the two-dimensional dispatch fold while exposing scalar coordinate/division overhead in the generic grouped kernel." }, "vars": { "count": 16777216 }, "attrs": { "group": 64 }, "inputs": { "x": { "shape": [1, 64, 512, 512], "dtype": "float32", "dist": "normal", "seed": 221, "scale": 0.2 }, "w": { "shape": [64, 1, 1, 1], "dtype": "float32", "dist": "normal", "seed": 222, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 64, 512, 512], "dtype": "float32" } }, "bench": { "metrics": [{ "type": "bandwidth", "value": "(2 * args.count + 64) * 4" }] } }, { "name": "conv-transpose-f32-1d-b1c128m128-256-k4s2", "preset": "smoke", "vars": { "batch": 1, "inChannels": 128, "outChannels": 128, "inW": 256, "kernelW": 4, "strideW": 2, "padW": 1 }, "attrs": { "strides": [2], "pads": [1, 1] }, "inputs": { "x": { "shape": [1, 128, 256], "dtype": "float32", "dist": "normal", "seed": 217, "scale": 0.2 }, "w": { "shape": [128, 128, 4], "dtype": "float32", "dist": "normal", "seed": 218, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 128, 512], "dtype": "float32" } }, "bench": { "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inW * args.inChannels * args.kernelW" } ] } }, { "name": "neural-audio-1d-f32-b1c256m256-w1024-k4s2-pathology", "preset": "stress", "provenance": { "source": "authored for performance coverage", "notes": "Realistic neural-audio upsampling stage for the direct NCW fallback. Every output sample serially scans 256 input channels and four kernel taps." }, "vars": { "batch": 1, "inChannels": 256, "outChannels": 256, "inW": 1024, "kernelW": 4, "strideW": 2, "padW": 1 }, "attrs": { "strides": [2], "pads": [1, 1] }, "inputs": { "x": { "shape": [1, 256, 1024], "dtype": "float32", "dist": "normal", "seed": 219, "scale": 0.2 }, "w": { "shape": [256, 256, 4], "dtype": "float32", "dist": "normal", "seed": 220, "scale": 0.05 } }, "outputs": { "y": { "shape": [1, 256, 2048], "dtype": "float32" } }, "bench": { "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inW * args.inChannels * args.kernelW" } ] } }, { "name": "conv-transpose-f32-3d-naive-b1c16m16-16x16x16-k3", "preset": "stress", "vars": { "batch": 1, "inChannels": 16, "outChannels": 16, "inD": 16, "inH": 16, "inW": 16, "kernelD": 3, "kernelH": 3, "kernelW": 3 }, "attrs": {}, "inputs": { "x": { "shape": [1, 16, 16, 16, 16], "dtype": "float32", "dist": "normal", "seed": 331, "scale": 0.2 }, "w": { "shape": [16, 16, 3, 3, 3], "dtype": "float32", "dist": "normal", "seed": 332, "scale": 0.05 } }, "outputs": { "y": { "shape": [1, 16, 18, 18, 18], "dtype": "float32" } }, "bench": { "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inD * args.inH * args.inW * args.inChannels * args.kernelD * args.kernelH * args.kernelW" } ] } }, { "name": "medical-decoder-3d-f32-b1c32m32-32x32x32-k3-pathology", "preset": "stress", "provenance": { "source": "authored for performance coverage", "notes": "Realistic 3D decoder stage for the direct NCDHW fallback. Each output voxel serially scans all 32 input channels and the 3x3x3 kernel." }, "vars": { "batch": 1, "inChannels": 32, "outChannels": 32, "inD": 32, "inH": 32, "inW": 32, "kernelD": 3, "kernelH": 3, "kernelW": 3 }, "attrs": { "pads": [1, 1, 1, 1, 1, 1] }, "inputs": { "x": { "shape": [1, 32, 32, 32, 32], "dtype": "float32", "dist": "normal", "seed": 333, "scale": 0.2 }, "w": { "shape": [32, 32, 3, 3, 3], "dtype": "float32", "dist": "normal", "seed": 334, "scale": 0.05 } }, "outputs": { "y": { "shape": [1, 32, 32, 32, 32], "dtype": "float32" } }, "bench": { "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inD * args.inH * args.inW * args.inChannels * args.kernelD * args.kernelH * args.kernelW" } ] } }, { "name": "conv-transpose-f32-grouped-naive-g4-c32m64-48x48-k4s2", "preset": "stress", "vars": { "batch": 1, "inChannels": 32, "outChannels": 64, "inChannelsPerGroup": 8, "inH": 48, "inW": 48, "kernelH": 4, "kernelW": 4, "strideH": 2, "strideW": 2, "padH": 1, "padW": 1, "group": 4 }, "attrs": { "group": 4, "strides": [2, 2], "pads": [1, 1, 1, 1] }, "inputs": { "x": { "shape": [1, 32, 48, 48], "dtype": "float32", "dist": "normal", "seed": 341, "scale": 0.2 }, "w": { "shape": [32, 16, 4, 4], "dtype": "float32", "dist": "normal", "seed": 342, "scale": 0.05 } }, "outputs": { "y": { "shape": [1, 64, 96, 96], "dtype": "float32" } }, "bench": { "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inH * args.inW * args.inChannelsPerGroup * args.kernelH * args.kernelW" } ] } }, { "name": "grouped-bias-g4-c32m64-48x48-k4s2-generic-pathology", "preset": "stress", "provenance": { "source": "authored for variant coverage", "notes": "Adding channel bias excludes nchw2d_grouped_stride_phase and selects nchw2d_grouped_bias; the paired no-bias case isolates this optional-input route boundary." }, "vars": { "batch": 1, "inChannels": 32, "outChannels": 64, "inChannelsPerGroup": 8, "inH": 48, "inW": 48, "kernelH": 4, "kernelW": 4, "strideH": 2, "strideW": 2, "padH": 1, "padW": 1, "group": 4 }, "attrs": { "group": 4, "strides": [2, 2], "pads": [1, 1, 1, 1] }, "inputs": { "x": { "shape": [1, 32, 48, 48], "dtype": "float32", "dist": "normal", "seed": 5104, "scale": 0.2 }, "w": { "shape": [32, 16, 4, 4], "dtype": "float32", "dist": "normal", "seed": 5105, "scale": 0.05 }, "bias": { "shape": [64], "dtype": "float32", "dist": "normal", "seed": 5106, "scale": 0.05 } }, "outputs": { "y": { "shape": [1, 64, 96, 96], "dtype": "float32" } }, "bench": { "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inH * args.inW * args.inChannelsPerGroup * args.kernelH * args.kernelW" } ] } }, { "name": "conv-transpose-f32-dpt-reassemble-48ch-37x49-k4s4", "preset": "all", "provenance": { "source": "Depth Anything V2 Small neck reassemble", "notes": "Depth Anything V2 Small's factor-4 reassemble at 518x686. ConvTranspose contracts the projected neck width (48), not the backbone width." }, "vars": { "batch": 1, "inChannels": 48, "outChannels": 48, "inH": 37, "inW": 49, "kernelH": 4, "kernelW": 4, "strideH": 4, "strideW": 4, "padH": 0, "padW": 0 }, "attrs": { "strides": [4, 4] }, "inputs": { "x": { "shape": [1, 48, 37, 49], "dtype": "float32", "dist": "normal", "seed": 9421, "scale": 0.2 }, "w": { "shape": [48, 48, 4, 4], "dtype": "float32", "dist": "normal", "seed": 9422, "scale": 0.1 }, "bias": { "shape": [48], "dtype": "float32", "dist": "normal", "seed": 9423, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 48, 148, 196], "dtype": "float32" } }, "bench": { "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inH * args.inW * args.inChannels * args.kernelH * args.kernelW" } ] } }, { "name": "conv-transpose-f32-dpt-reassemble-96ch-37x49-k2s2", "preset": "all", "provenance": { "source": "Depth Anything V2 Small neck reassemble", "notes": "The factor-2 reassemble of the same model, likewise contracting over the neck width (96). Four taps per output element, one of them real." }, "vars": { "batch": 1, "inChannels": 96, "outChannels": 96, "inH": 37, "inW": 49, "kernelH": 2, "kernelW": 2, "strideH": 2, "strideW": 2, "padH": 0, "padW": 0 }, "attrs": { "strides": [2, 2] }, "inputs": { "x": { "shape": [1, 96, 37, 49], "dtype": "float32", "dist": "normal", "seed": 9431, "scale": 0.2 }, "w": { "shape": [96, 96, 2, 2], "dtype": "float32", "dist": "normal", "seed": 9432, "scale": 0.1 }, "bias": { "shape": [96], "dtype": "float32", "dist": "normal", "seed": 9433, "scale": 0.1 } }, "outputs": { "y": { "shape": [1, 96, 74, 98], "dtype": "float32" } }, "bench": { "metrics": [ { "type": "gflops", "value": "2 * args.batch * args.outChannels * args.inH * args.inW * args.inChannels * args.kernelH * args.kernelW" } ] } } ] }