From 6e7574f8a78c83f6e44b716cc1d760d24e13c3dc Mon Sep 17 00:00:00 2001 From: ssjia Date: Sun, 16 Nov 2025 20:48:54 -0800 Subject: [PATCH] [ET-VK][Debug] Add isolated test cases for grouped quantized convolution TSIA Differential Revision: [D87197559](https://our.internmc.facebook.com/intern/diff/D87197559/) [ghstack-poisoned] --- .../custom_ops/q8ta_q8csw_q8to_conv2d.cpp | 214 ++++++++++-------- 1 file changed, 115 insertions(+), 99 deletions(-) diff --git a/backends/vulkan/test/custom_ops/q8ta_q8csw_q8to_conv2d.cpp b/backends/vulkan/test/custom_ops/q8ta_q8csw_q8to_conv2d.cpp index bbd4af7579c..ee54b0e705f 100644 --- a/backends/vulkan/test/custom_ops/q8ta_q8csw_q8to_conv2d.cpp +++ b/backends/vulkan/test/custom_ops/q8ta_q8csw_q8to_conv2d.cpp @@ -164,7 +164,8 @@ TestCase create_test_case_from_config( test_case.add_output_spec(output); - test_case.set_abs_tolerance(output_scale_val + 1e-4f); + test_case.set_abs_tolerance(output_scale_val + 2e-3f); + test_case.set_rel_tolerance(1e-2); return test_case; } @@ -206,115 +207,130 @@ std::vector generate_quantized_conv2d_test_cases() { std::vector test_cases; std::vector configs = { - // Pointwise convolutions: kernel size 1x1 - {OutInChannels(32, 3), - InputSize2D(64, 64), - KernelSize(1, 1), - Stride(1, 1), - Padding(0, 0), - Dilation(1, 1), - 1}, - {OutInChannels(64, 32), - InputSize2D(32, 32), - KernelSize(1, 1), - Stride(1, 1), - Padding(0, 0), - Dilation(1, 1), - 1}, - {OutInChannels(96, 64), - InputSize2D(16, 16), - KernelSize(1, 1), - Stride(1, 1), - Padding(0, 0), - Dilation(1, 1), - 1}, - {OutInChannels(13, 7), - InputSize2D(57, 33), - KernelSize(1, 1), - Stride(1, 1), - Padding(0, 0), - Dilation(1, 1), - 1}, - // General 2D convolutions - {OutInChannels(32, 3), - InputSize2D(64, 64), - KernelSize(3, 3), - Stride(1, 1), - Padding(1, 1), - Dilation(1, 1), - 1}, - {OutInChannels(32, 3), - InputSize2D(64, 64), - KernelSize(3, 3), - Stride(2, 2), - Padding(1, 1), - Dilation(1, 1), - 1}, - {OutInChannels(64, 32), - InputSize2D(8, 8), - KernelSize(3, 3), - Stride(1, 1), - Padding(1, 1), - Dilation(1, 1), - 1}, - {OutInChannels(64, 32), - InputSize2D(64, 64), - KernelSize(3, 3), - Stride(1, 1), - Padding(1, 1), - Dilation(1, 1), - 1}, - {OutInChannels(64, 32), - InputSize2D(64, 64), - KernelSize(3, 3), - Stride(2, 2), - Padding(1, 1), - Dilation(1, 1), - 1}, - {OutInChannels(16, 32), - InputSize2D(77, 77), - KernelSize(3, 3), - Stride(1, 1), - Padding(1, 1), - Dilation(1, 1), - 1}, - // Grouped convolutions - {OutInChannels(64, 32), - InputSize2D(64, 64), + // // Pointwise convolutions: kernel size 1x1 + // {OutInChannels(32, 3), + // InputSize2D(64, 64), + // KernelSize(1, 1), + // Stride(1, 1), + // Padding(0, 0), + // Dilation(1, 1), + // 1}, + // {OutInChannels(64, 32), + // InputSize2D(32, 32), + // KernelSize(1, 1), + // Stride(1, 1), + // Padding(0, 0), + // Dilation(1, 1), + // 1}, + // {OutInChannels(96, 64), + // InputSize2D(16, 16), + // KernelSize(1, 1), + // Stride(1, 1), + // Padding(0, 0), + // Dilation(1, 1), + // 1}, + // {OutInChannels(13, 7), + // InputSize2D(57, 33), + // KernelSize(1, 1), + // Stride(1, 1), + // Padding(0, 0), + // Dilation(1, 1), + // 1}, + // // General 2D convolutions + // {OutInChannels(32, 3), + // InputSize2D(64, 64), + // KernelSize(3, 3), + // Stride(1, 1), + // Padding(1, 1), + // Dilation(1, 1), + // 1}, + // {OutInChannels(32, 3), + // InputSize2D(64, 64), + // KernelSize(3, 3), + // Stride(2, 2), + // Padding(1, 1), + // Dilation(1, 1), + // 1}, + // {OutInChannels(64, 32), + // InputSize2D(8, 8), + // KernelSize(3, 3), + // Stride(1, 1), + // Padding(1, 1), + // Dilation(1, 1), + // 1}, + // {OutInChannels(64, 32), + // InputSize2D(64, 64), + // KernelSize(3, 3), + // Stride(1, 1), + // Padding(1, 1), + // Dilation(1, 1), + // 1}, + // {OutInChannels(64, 32), + // InputSize2D(64, 64), + // KernelSize(3, 3), + // Stride(2, 2), + // Padding(1, 1), + // Dilation(1, 1), + // 1}, + // {OutInChannels(16, 32), + // InputSize2D(77, 77), + // KernelSize(3, 3), + // Stride(1, 1), + // Padding(1, 1), + // Dilation(1, 1), + // 1}, + // // Grouped convolutions + // {OutInChannels(64, 32), + // InputSize2D(64, 64), + // KernelSize(3, 3), + // Stride(1, 1), + // Padding(1, 1), + // Dilation(1, 1), + // 2}, + // {OutInChannels(96, 96), + // InputSize2D(81, 81), + // KernelSize(3, 3), + // Stride(2, 2), + // Padding(1, 1), + // Dilation(1, 1), + // 3}, + // {OutInChannels(96, 96), + // InputSize2D(64, 64), + // KernelSize(5, 5), + // Stride(2, 2), + // Padding(2, 2), + // Dilation(1, 1), + // 4}, + // // Performance cases (pointwise) + // {OutInChannels(128, 128), + // InputSize2D(128, 128), + // KernelSize(1, 1), + // Stride(1, 1), + // Padding(0, 0), + // Dilation(1, 1), + // 1}, + // {OutInChannels(128, 128), + // InputSize2D(128, 128), + // KernelSize(1, 1), + // Stride(1, 1), + // Padding(0, 0), + // Dilation(1, 1), + // 1}, + // Performance cases (grouped convs) + {OutInChannels(64, 64), + InputSize2D(128, 128), KernelSize(3, 3), Stride(1, 1), Padding(1, 1), Dilation(1, 1), 2}, {OutInChannels(96, 96), - InputSize2D(81, 81), + InputSize2D(128, 128), KernelSize(3, 3), Stride(2, 2), Padding(1, 1), Dilation(1, 1), 3}, - {OutInChannels(96, 96), - InputSize2D(64, 64), - KernelSize(5, 5), - Stride(2, 2), - Padding(2, 2), - Dilation(1, 1), - 4}, - // Performance cases (pointwise) - {OutInChannels(128, 128), - InputSize2D(128, 128), - KernelSize(1, 1), - Stride(1, 1), - Padding(0, 0), - Dilation(1, 1), - 1}, - {OutInChannels(128, 128), - InputSize2D(128, 128), - KernelSize(1, 1), - Stride(1, 1), - Padding(0, 0), - Dilation(1, 1), - 1}, // Performance cases (general 2d convs) {OutInChannels(32, 3), InputSize2D(256, 256),