From f4d8fe21560c4f4a02fbb286048a090d82553297 Mon Sep 17 00:00:00 2001 From: nihui Date: Wed, 5 Feb 2025 22:01:00 +0800 Subject: [PATCH] w --- src/layer/x86/convolution_x86.cpp | 2 +- tests/test_requantize.cpp | 150 ++++++++++++------------------ 2 files changed, 63 insertions(+), 89 deletions(-) diff --git a/src/layer/x86/convolution_x86.cpp b/src/layer/x86/convolution_x86.cpp index acaeedaac22..d9aee62e15e 100644 --- a/src/layer/x86/convolution_x86.cpp +++ b/src/layer/x86/convolution_x86.cpp @@ -998,7 +998,7 @@ int Convolution_x86::forward_int8_x86(const Mat& bottom_blob, Mat& top_blob, con #if __AVX__ out_elempack_int32 = num_output % 8 == 0 ? 8 : 1; #else - out_elempack_int32 = num_output % 4 == 0 ? 4 : 1; + out_elempack_int32 = num_output % 8 == 0 ? 4 : 1; #endif } else diff --git a/tests/test_requantize.cpp b/tests/test_requantize.cpp index 3e4fe148828..e9c37d739f7 100644 --- a/tests/test_requantize.cpp +++ b/tests/test_requantize.cpp @@ -14,7 +14,7 @@ #include "testutil.h" -static int test_requantize(const ncnn::Mat& a, int scale_in_data_size, int scale_out_data_size, int bias_data_size, int activation_type, float alpha, float beta) +static int test_requantize_pack1(const ncnn::Mat& a, int scale_in_data_size, int scale_out_data_size, int bias_data_size, int activation_type, float alpha, float beta) { ncnn::ParamDict pd; pd.set(0, scale_in_data_size); @@ -36,25 +36,25 @@ static int test_requantize(const ncnn::Mat& a, int scale_in_data_size, int scale Randomize(weights[0], 0.0001, 0.001); Randomize(weights[1], 10, 100); - int flag = TEST_LAYER_DISABLE_AUTO_INPUT_CASTING; + int flag = TEST_LAYER_DISABLE_AUTO_INPUT_CASTING | TEST_LAYER_DISABLE_AUTO_INPUT_PACKING; int ret = test_layer("Requantize", pd, weights, a, 1, 0, flag); if (ret != 0) { - fprintf(stderr, "test_requantize failed a.dims=%d a=(%d %d %d) scale_in_data_size=%d scale_out_data_size=%d bias_data_size=%d act=%d actparams=[%f,%f]\n", a.dims, a.w, a.h, a.c, scale_in_data_size, scale_out_data_size, bias_data_size, activation_type, activation_params[0], activation_params[1]); + fprintf(stderr, "test_requantize_pack1 failed a.dims=%d a=(%d %d %d) scale_in_data_size=%d scale_out_data_size=%d bias_data_size=%d act=%d actparams=[%f,%f]\n", a.dims, a.w, a.h, a.c, scale_in_data_size, scale_out_data_size, bias_data_size, activation_type, activation_params[0], activation_params[1]); } return ret; } -static int test_requantize(const ncnn::Mat& a, int scale_in_data_size, int scale_out_data_size, int bias_data_size) +static int test_requantize_pack1(const ncnn::Mat& a, int scale_in_data_size, int scale_out_data_size, int bias_data_size) { return 0 - || test_requantize(a, scale_in_data_size, scale_out_data_size, bias_data_size, 0, 0.f, 0.f) - || test_requantize(a, scale_in_data_size, scale_out_data_size, bias_data_size, 1, 0.f, 0.f) - || test_requantize(a, scale_in_data_size, scale_out_data_size, bias_data_size, 2, RandomFloat(0, 1), 0.f) - || test_requantize(a, scale_in_data_size, scale_out_data_size, bias_data_size, 3, RandomFloat(-1, 0), RandomFloat(0, 1)) - || test_requantize(a, scale_in_data_size, scale_out_data_size, bias_data_size, 4, 0.f, 0.f) - || test_requantize(a, scale_in_data_size, scale_out_data_size, bias_data_size, 5, 0.f, 0.f); + || test_requantize_pack1(a, scale_in_data_size, scale_out_data_size, bias_data_size, 0, 0.f, 0.f) + || test_requantize_pack1(a, scale_in_data_size, scale_out_data_size, bias_data_size, 1, 0.f, 0.f) + || test_requantize_pack1(a, scale_in_data_size, scale_out_data_size, bias_data_size, 2, RandomFloat(0, 1), 0.f) + || test_requantize_pack1(a, scale_in_data_size, scale_out_data_size, bias_data_size, 3, RandomFloat(-1, 0), RandomFloat(0, 1)) + || test_requantize_pack1(a, scale_in_data_size, scale_out_data_size, bias_data_size, 4, 0.f, 0.f) + || test_requantize_pack1(a, scale_in_data_size, scale_out_data_size, bias_data_size, 5, 0.f, 0.f); } static int test_requantize_pack8(const ncnn::Mat& a, int scale_in_data_size, int scale_out_data_size, int bias_data_size, int activation_type, float alpha, float beta) @@ -103,94 +103,68 @@ static int test_requantize_pack8(const ncnn::Mat& a, int scale_in_data_size, int static int test_requantize_0() { return 0 - || test_requantize(RandomIntMat(5, 7, 24), 1, 1, 24) - || test_requantize(RandomIntMat(5, 7, 24), 1, 1, 1) - || test_requantize(RandomIntMat(5, 7, 24), 1, 1, 0) - || test_requantize(RandomIntMat(5, 7, 24), 24, 24, 24) - || test_requantize(RandomIntMat(5, 7, 24), 24, 24, 1) - || test_requantize(RandomIntMat(5, 7, 24), 24, 24, 0) - || test_requantize(RandomIntMat(5, 7, 24), 1, 24, 24) - || test_requantize(RandomIntMat(5, 7, 24), 1, 24, 1) - || test_requantize(RandomIntMat(5, 7, 24), 1, 24, 0) - || test_requantize(RandomIntMat(5, 7, 24), 24, 1, 24) - || test_requantize(RandomIntMat(5, 7, 24), 24, 1, 1) - || test_requantize(RandomIntMat(5, 7, 24), 24, 1, 0) - || test_requantize(RandomIntMat(7, 9, 12), 1, 1, 12) - || test_requantize(RandomIntMat(7, 9, 12), 1, 1, 1) - || test_requantize(RandomIntMat(7, 9, 12), 1, 1, 0) - || test_requantize(RandomIntMat(7, 9, 12), 12, 12, 12) - || test_requantize(RandomIntMat(7, 9, 12), 12, 12, 1) - || test_requantize(RandomIntMat(7, 9, 12), 12, 12, 0) - || test_requantize(RandomIntMat(7, 9, 12), 1, 12, 12) - || test_requantize(RandomIntMat(7, 9, 12), 1, 12, 1) - || test_requantize(RandomIntMat(7, 9, 12), 1, 12, 0) - || test_requantize(RandomIntMat(7, 9, 12), 12, 1, 12) - || test_requantize(RandomIntMat(7, 9, 12), 12, 1, 1) - || test_requantize(RandomIntMat(7, 9, 12), 12, 1, 0) - || test_requantize(RandomIntMat(3, 5, 13), 1, 1, 13) - || test_requantize(RandomIntMat(3, 5, 13), 1, 1, 1) - || test_requantize(RandomIntMat(3, 5, 13), 1, 1, 0) - || test_requantize(RandomIntMat(3, 5, 13), 13, 13, 13) - || test_requantize(RandomIntMat(3, 5, 13), 13, 13, 1) - || test_requantize(RandomIntMat(3, 5, 13), 13, 13, 0) - || test_requantize(RandomIntMat(3, 5, 13), 1, 13, 13) - || test_requantize(RandomIntMat(3, 5, 13), 1, 13, 1) - || test_requantize(RandomIntMat(3, 5, 13), 1, 13, 0) - || test_requantize(RandomIntMat(3, 5, 13), 13, 1, 13) - || test_requantize(RandomIntMat(3, 5, 13), 13, 1, 1) - || test_requantize(RandomIntMat(3, 5, 13), 13, 1, 0); + || test_requantize_pack1(RandomIntMat(7, 9, 12), 1, 1, 12) + || test_requantize_pack1(RandomIntMat(7, 9, 12), 1, 1, 1) + || test_requantize_pack1(RandomIntMat(7, 9, 12), 1, 1, 0) + || test_requantize_pack1(RandomIntMat(7, 9, 12), 12, 12, 12) + || test_requantize_pack1(RandomIntMat(7, 9, 12), 12, 12, 1) + || test_requantize_pack1(RandomIntMat(7, 9, 12), 12, 12, 0) + || test_requantize_pack1(RandomIntMat(7, 9, 12), 1, 12, 12) + || test_requantize_pack1(RandomIntMat(7, 9, 12), 1, 12, 1) + || test_requantize_pack1(RandomIntMat(7, 9, 12), 1, 12, 0) + || test_requantize_pack1(RandomIntMat(7, 9, 12), 12, 1, 12) + || test_requantize_pack1(RandomIntMat(7, 9, 12), 12, 1, 1) + || test_requantize_pack1(RandomIntMat(7, 9, 12), 12, 1, 0) + || test_requantize_pack1(RandomIntMat(3, 5, 13), 1, 1, 13) + || test_requantize_pack1(RandomIntMat(3, 5, 13), 1, 1, 1) + || test_requantize_pack1(RandomIntMat(3, 5, 13), 1, 1, 0) + || test_requantize_pack1(RandomIntMat(3, 5, 13), 13, 13, 13) + || test_requantize_pack1(RandomIntMat(3, 5, 13), 13, 13, 1) + || test_requantize_pack1(RandomIntMat(3, 5, 13), 13, 13, 0) + || test_requantize_pack1(RandomIntMat(3, 5, 13), 1, 13, 13) + || test_requantize_pack1(RandomIntMat(3, 5, 13), 1, 13, 1) + || test_requantize_pack1(RandomIntMat(3, 5, 13), 1, 13, 0) + || test_requantize_pack1(RandomIntMat(3, 5, 13), 13, 1, 13) + || test_requantize_pack1(RandomIntMat(3, 5, 13), 13, 1, 1) + || test_requantize_pack1(RandomIntMat(3, 5, 13), 13, 1, 0); } static int test_requantize_1() { return 0 - || test_requantize(RandomIntMat(15, 24), 1, 1, 24) - || test_requantize(RandomIntMat(15, 24), 1, 1, 1) - || test_requantize(RandomIntMat(15, 24), 1, 1, 0) - || test_requantize(RandomIntMat(15, 24), 24, 24, 24) - || test_requantize(RandomIntMat(15, 24), 24, 24, 1) - || test_requantize(RandomIntMat(15, 24), 24, 24, 0) - || test_requantize(RandomIntMat(15, 24), 1, 24, 24) - || test_requantize(RandomIntMat(15, 24), 1, 24, 1) - || test_requantize(RandomIntMat(15, 24), 1, 24, 0) - || test_requantize(RandomIntMat(15, 24), 24, 1, 24) - || test_requantize(RandomIntMat(15, 24), 24, 1, 1) - || test_requantize(RandomIntMat(15, 24), 24, 1, 0) - || test_requantize(RandomIntMat(17, 12), 1, 1, 12) - || test_requantize(RandomIntMat(17, 12), 1, 1, 1) - || test_requantize(RandomIntMat(17, 12), 1, 1, 0) - || test_requantize(RandomIntMat(17, 12), 12, 12, 12) - || test_requantize(RandomIntMat(17, 12), 12, 12, 1) - || test_requantize(RandomIntMat(17, 12), 12, 12, 0) - || test_requantize(RandomIntMat(17, 12), 1, 12, 12) - || test_requantize(RandomIntMat(17, 12), 1, 12, 1) - || test_requantize(RandomIntMat(17, 12), 1, 12, 0) - || test_requantize(RandomIntMat(17, 12), 12, 1, 12) - || test_requantize(RandomIntMat(17, 12), 12, 1, 1) - || test_requantize(RandomIntMat(17, 12), 12, 1, 0) - || test_requantize(RandomIntMat(19, 15), 1, 1, 15) - || test_requantize(RandomIntMat(19, 15), 1, 1, 1) - || test_requantize(RandomIntMat(19, 15), 1, 1, 0) - || test_requantize(RandomIntMat(19, 15), 15, 15, 15) - || test_requantize(RandomIntMat(19, 15), 15, 15, 1) - || test_requantize(RandomIntMat(19, 15), 15, 15, 0) - || test_requantize(RandomIntMat(19, 15), 1, 15, 15) - || test_requantize(RandomIntMat(19, 15), 1, 15, 1) - || test_requantize(RandomIntMat(19, 15), 1, 15, 0) - || test_requantize(RandomIntMat(19, 15), 15, 1, 15) - || test_requantize(RandomIntMat(19, 15), 15, 1, 1) - || test_requantize(RandomIntMat(19, 15), 15, 1, 0); + || test_requantize_pack1(RandomIntMat(17, 12), 1, 1, 12) + || test_requantize_pack1(RandomIntMat(17, 12), 1, 1, 1) + || test_requantize_pack1(RandomIntMat(17, 12), 1, 1, 0) + || test_requantize_pack1(RandomIntMat(17, 12), 12, 12, 12) + || test_requantize_pack1(RandomIntMat(17, 12), 12, 12, 1) + || test_requantize_pack1(RandomIntMat(17, 12), 12, 12, 0) + || test_requantize_pack1(RandomIntMat(17, 12), 1, 12, 12) + || test_requantize_pack1(RandomIntMat(17, 12), 1, 12, 1) + || test_requantize_pack1(RandomIntMat(17, 12), 1, 12, 0) + || test_requantize_pack1(RandomIntMat(17, 12), 12, 1, 12) + || test_requantize_pack1(RandomIntMat(17, 12), 12, 1, 1) + || test_requantize_pack1(RandomIntMat(17, 12), 12, 1, 0) + || test_requantize_pack1(RandomIntMat(19, 15), 1, 1, 15) + || test_requantize_pack1(RandomIntMat(19, 15), 1, 1, 1) + || test_requantize_pack1(RandomIntMat(19, 15), 1, 1, 0) + || test_requantize_pack1(RandomIntMat(19, 15), 15, 15, 15) + || test_requantize_pack1(RandomIntMat(19, 15), 15, 15, 1) + || test_requantize_pack1(RandomIntMat(19, 15), 15, 15, 0) + || test_requantize_pack1(RandomIntMat(19, 15), 1, 15, 15) + || test_requantize_pack1(RandomIntMat(19, 15), 1, 15, 1) + || test_requantize_pack1(RandomIntMat(19, 15), 1, 15, 0) + || test_requantize_pack1(RandomIntMat(19, 15), 15, 1, 15) + || test_requantize_pack1(RandomIntMat(19, 15), 15, 1, 1) + || test_requantize_pack1(RandomIntMat(19, 15), 15, 1, 0); } static int test_requantize_2() { return 0 - || test_requantize(RandomIntMat(128), 1, 1, 1) - || test_requantize(RandomIntMat(128), 1, 1, 0) - || test_requantize(RandomIntMat(124), 1, 1, 1) - || test_requantize(RandomIntMat(124), 1, 1, 0) - || test_requantize(RandomIntMat(127), 1, 1, 1) - || test_requantize(RandomIntMat(127), 1, 1, 0); + || test_requantize_pack1(RandomIntMat(124), 1, 1, 1) + || test_requantize_pack1(RandomIntMat(124), 1, 1, 0) + || test_requantize_pack1(RandomIntMat(127), 1, 1, 1) + || test_requantize_pack1(RandomIntMat(127), 1, 1, 0); } static int test_requantize_3()