Skip to content

Commit

Permalink
Switch QU8 AVGPOOL microkernels to FP32 requantization
Browse files Browse the repository at this point in the history
- Remove legacy AVGPOOL requantization and all support code for it

PiperOrigin-RevId: 492322439
  • Loading branch information
Maratyszcza authored and xnnpack-bot committed Dec 2, 2022
1 parent 73e3b69 commit aeacca9
Show file tree
Hide file tree
Showing 22 changed files with 1,391 additions and 1,909 deletions.
36 changes: 18 additions & 18 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -278,8 +278,8 @@ PROD_SCALAR_AARCH32_MICROKERNEL_SRCS = [
"src/qs8-vaddc/gen/qs8-vaddc-minmax-scalar-x1.c",
"src/qs8-vmul/gen/qs8-vmul-minmax-fp32-scalar-x4.c",
"src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-scalar-x4.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-scalar-c1.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-scalar-c1.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-scalar-imagic-c1.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-scalar-imagic-c1.c",
"src/qu8-dwconv/gen/qu8-dwconv-9p1c-minmax-fp32-scalar-fmagic.c",
"src/qu8-dwconv/gen/qu8-dwconv-25p1c-minmax-fp32-scalar-fmagic.c",
"src/qu8-f32-vcvt/gen/qu8-f32-vcvt-scalar-x4.c",
Expand Down Expand Up @@ -425,8 +425,8 @@ PROD_SCALAR_WASM_MICROKERNEL_SRCS = [
"src/qs8-vlrelu/gen/qs8-vlrelu-scalar-select-x4.c",
"src/qs8-vmul/gen/qs8-vmul-minmax-fp32-scalar-x4.c",
"src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-scalar-x4.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-scalar-c1.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-scalar-c1.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-scalar-imagic-c1.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-scalar-imagic-c1.c",
"src/qu8-dwconv/gen/qu8-dwconv-9p2c-minmax-fp32-scalar-imagic.c",
"src/qu8-dwconv/gen/qu8-dwconv-25p1c-minmax-fp32-scalar-imagic.c",
"src/qu8-f32-vcvt/gen/qu8-f32-vcvt-scalar-x1.c",
Expand Down Expand Up @@ -578,8 +578,8 @@ PROD_SCALAR_RISCV_MICROKERNEL_SRCS = [
"src/qs8-vlrelu/gen/qs8-vlrelu-scalar-andxor-x4.c",
"src/qs8-vmul/gen/qs8-vmul-minmax-fp32-scalar-x4.c",
"src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-scalar-x4.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-scalar-c1.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-scalar-c1.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-scalar-imagic-c1.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-scalar-imagic-c1.c",
"src/qu8-dwconv/gen/qu8-dwconv-9p2c-minmax-fp32-scalar-lrintf.c",
"src/qu8-dwconv/gen/qu8-dwconv-25p2c-minmax-fp32-scalar-lrintf.c",
"src/qu8-f32-vcvt/gen/qu8-f32-vcvt-scalar-x4.c",
Expand Down Expand Up @@ -1269,8 +1269,8 @@ ALL_SCALAR_MICROKERNEL_SRCS = [
"src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-scalar-x1.c",
"src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-scalar-x2.c",
"src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-scalar-x4.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-scalar-c1.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-scalar-c1.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-scalar-imagic-c1.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-scalar-imagic-c1.c",
"src/qu8-dwconv/gen/qu8-dwconv-9p1c-minmax-fp32-scalar-fmagic.c",
"src/qu8-dwconv/gen/qu8-dwconv-9p1c-minmax-fp32-scalar-imagic.c",
"src/qu8-dwconv/gen/qu8-dwconv-9p1c-minmax-fp32-scalar-lrintf.c",
Expand Down Expand Up @@ -3300,8 +3300,8 @@ PROD_NEON_MICROKERNEL_SRCS = [
"src/qs8-vlrelu/gen/qs8-vlrelu-neon-x32.c",
"src/qs8-vmul/gen/qs8-vmul-minmax-rndnu-neon-ld64-x16.c",
"src/qs8-vmulc/gen/qs8-vmulc-minmax-rndnu-neon-ld64-x16.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-neon-c8.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-neon-c8.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-neon-c8.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-neon-c8.c",
"src/qu8-dwconv/gen/qu8-dwconv-9p16c-minmax-rndnu-neon-mul8.c",
"src/qu8-dwconv/gen/qu8-dwconv-25p8c-minmax-rndnu-neon-mul8.c",
"src/qu8-f32-vcvt/gen/qu8-f32-vcvt-neon-x32.c",
Expand Down Expand Up @@ -4287,8 +4287,8 @@ ALL_NEON_MICROKERNEL_SRCS = [
"src/qs8-vmulc/gen/qs8-vmulc-minmax-rndnu-neon-ld64-x8.c",
"src/qs8-vmulc/gen/qs8-vmulc-minmax-rndnu-neon-ld64-x16.c",
"src/qs8-vmulc/gen/qs8-vmulc-minmax-rndnu-neon-ld128-x16.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-neon-c8.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-neon-c8.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-neon-c8.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-neon-c8.c",
"src/qu8-dwconv/gen/qu8-dwconv-9p8c-minmax-fp32-neon-mul16.c",
"src/qu8-dwconv/gen/qu8-dwconv-9p8c-minmax-rndnu-neon-mul8.c",
"src/qu8-dwconv/gen/qu8-dwconv-9p8c-minmax-rndnu-neon-mul16.c",
Expand Down Expand Up @@ -5878,8 +5878,8 @@ PROD_SSE2_MICROKERNEL_SRCS = [
"src/qs8-vlrelu/gen/qs8-vlrelu-sse2-x32.c",
"src/qs8-vmul/gen/qs8-vmul-minmax-fp32-sse2-mul16-ld64-x8.c",
"src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-sse2-mul16-ld64-x8.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-sse2-c8.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-sse2-c8.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-sse2-c8.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-sse2-c8.c",
"src/qu8-dwconv/gen/qu8-dwconv-9p8c-minmax-fp32-sse2-mul16.c",
"src/qu8-dwconv/gen/qu8-dwconv-25p8c-minmax-fp32-sse2-mul16.c",
"src/qu8-f32-vcvt/gen/qu8-f32-vcvt-sse2-x32.c",
Expand Down Expand Up @@ -6172,8 +6172,8 @@ ALL_SSE2_MICROKERNEL_SRCS = [
"src/qs8-vmul/gen/qs8-vmul-minmax-fp32-sse2-mul16-ld64-x16.c",
"src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-sse2-mul16-ld64-x8.c",
"src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-sse2-mul16-ld64-x16.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-sse2-c8.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-sse2-c8.c",
"src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-sse2-c8.c",
"src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-sse2-c8.c",
"src/qu8-dwconv/gen/qu8-dwconv-9p8c-minmax-fp32-sse2-mul16.c",
"src/qu8-dwconv/gen/qu8-dwconv-9p16c-minmax-fp32-sse2-mul16.c",
"src/qu8-dwconv/gen/qu8-dwconv-25p8c-minmax-fp32-sse2-mul16.c",
Expand Down Expand Up @@ -14918,10 +14918,10 @@ xnnpack_unit_test(
)

xnnpack_unit_test(
name = "qu8_avgpool_minmax_test",
name = "qu8_avgpool_minmax_fp32_test",
srcs = [
"test/avgpool-microkernel-tester.h",
"test/qu8-avgpool-minmax.cc",
"test/qu8-avgpool-minmax-fp32.cc",
],
deps = MICROKERNEL_TEST_DEPS,
)
Expand Down
38 changes: 19 additions & 19 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -435,8 +435,8 @@ SET(PROD_SCALAR_AARCH32_MICROKERNEL_SRCS
src/qs8-vaddc/gen/qs8-vaddc-minmax-scalar-x1.c
src/qs8-vmul/gen/qs8-vmul-minmax-fp32-scalar-x4.c
src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-scalar-x4.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-scalar-c1.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-scalar-c1.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-scalar-imagic-c1.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-scalar-imagic-c1.c
src/qu8-dwconv/gen/qu8-dwconv-9p1c-minmax-fp32-scalar-fmagic.c
src/qu8-dwconv/gen/qu8-dwconv-25p1c-minmax-fp32-scalar-fmagic.c
src/qu8-f32-vcvt/gen/qu8-f32-vcvt-scalar-x4.c
Expand Down Expand Up @@ -583,8 +583,8 @@ SET(PROD_SCALAR_RISCV_MICROKERNEL_SRCS
src/qs8-vlrelu/gen/qs8-vlrelu-scalar-andxor-x4.c
src/qs8-vmul/gen/qs8-vmul-minmax-fp32-scalar-x4.c
src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-scalar-x4.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-scalar-c1.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-scalar-c1.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-scalar-imagic-c1.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-scalar-imagic-c1.c
src/qu8-dwconv/gen/qu8-dwconv-9p2c-minmax-fp32-scalar-lrintf.c
src/qu8-dwconv/gen/qu8-dwconv-25p2c-minmax-fp32-scalar-lrintf.c
src/qu8-f32-vcvt/gen/qu8-f32-vcvt-scalar-x4.c
Expand Down Expand Up @@ -1273,8 +1273,8 @@ SET(ALL_SCALAR_MICROKERNEL_SRCS
src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-scalar-x1.c
src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-scalar-x2.c
src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-scalar-x4.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-scalar-c1.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-scalar-c1.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-scalar-imagic-c1.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-scalar-imagic-c1.c
src/qu8-dwconv/gen/qu8-dwconv-9p1c-minmax-fp32-scalar-fmagic.c
src/qu8-dwconv/gen/qu8-dwconv-9p1c-minmax-fp32-scalar-imagic.c
src/qu8-dwconv/gen/qu8-dwconv-9p1c-minmax-fp32-scalar-lrintf.c
Expand Down Expand Up @@ -1713,8 +1713,8 @@ SET(PROD_NEON_MICROKERNEL_SRCS
src/qs8-vlrelu/gen/qs8-vlrelu-neon-x32.c
src/qs8-vmul/gen/qs8-vmul-minmax-rndnu-neon-ld64-x16.c
src/qs8-vmulc/gen/qs8-vmulc-minmax-rndnu-neon-ld64-x16.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-neon-c8.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-neon-c8.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-neon-c8.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-neon-c8.c
src/qu8-dwconv/gen/qu8-dwconv-9p16c-minmax-rndnu-neon-mul8.c
src/qu8-dwconv/gen/qu8-dwconv-25p8c-minmax-rndnu-neon-mul8.c
src/qu8-f32-vcvt/gen/qu8-f32-vcvt-neon-x32.c
Expand Down Expand Up @@ -2699,8 +2699,8 @@ SET(ALL_NEON_MICROKERNEL_SRCS
src/qs8-vmulc/gen/qs8-vmulc-minmax-rndnu-neon-ld64-x8.c
src/qs8-vmulc/gen/qs8-vmulc-minmax-rndnu-neon-ld64-x16.c
src/qs8-vmulc/gen/qs8-vmulc-minmax-rndnu-neon-ld128-x16.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-neon-c8.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-neon-c8.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-neon-c8.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-neon-c8.c
src/qu8-dwconv/gen/qu8-dwconv-9p8c-minmax-fp32-neon-mul16.c
src/qu8-dwconv/gen/qu8-dwconv-9p8c-minmax-rndnu-neon-mul8.c
src/qu8-dwconv/gen/qu8-dwconv-9p8c-minmax-rndnu-neon-mul16.c
Expand Down Expand Up @@ -4271,8 +4271,8 @@ SET(PROD_SSE2_MICROKERNEL_SRCS
src/qs8-vlrelu/gen/qs8-vlrelu-sse2-x32.c
src/qs8-vmul/gen/qs8-vmul-minmax-fp32-sse2-mul16-ld64-x8.c
src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-sse2-mul16-ld64-x8.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-sse2-c8.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-sse2-c8.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-sse2-c8.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-sse2-c8.c
src/qu8-dwconv/gen/qu8-dwconv-9p8c-minmax-fp32-sse2-mul16.c
src/qu8-dwconv/gen/qu8-dwconv-25p8c-minmax-fp32-sse2-mul16.c
src/qu8-f32-vcvt/gen/qu8-f32-vcvt-sse2-x32.c
Expand Down Expand Up @@ -4564,8 +4564,8 @@ SET(ALL_SSE2_MICROKERNEL_SRCS
src/qs8-vmul/gen/qs8-vmul-minmax-fp32-sse2-mul16-ld64-x16.c
src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-sse2-mul16-ld64-x8.c
src/qs8-vmulc/gen/qs8-vmulc-minmax-fp32-sse2-mul16-ld64-x16.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-sse2-c8.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-sse2-c8.c
src/qu8-avgpool/qu8-avgpool-9p8x-minmax-fp32-sse2-c8.c
src/qu8-avgpool/qu8-avgpool-9x-minmax-fp32-sse2-c8.c
src/qu8-dwconv/gen/qu8-dwconv-9p8c-minmax-fp32-sse2-mul16.c
src/qu8-dwconv/gen/qu8-dwconv-9p16c-minmax-fp32-sse2-mul16.c
src/qu8-dwconv/gen/qu8-dwconv-25p8c-minmax-fp32-sse2-mul16.c
Expand Down Expand Up @@ -9253,11 +9253,11 @@ IF(XNNPACK_BUILD_TESTS)
TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
ADD_TEST(NAME qs8-vmulc-minmax-fp32-test COMMAND qs8-vmulc-minmax-fp32-test)

ADD_EXECUTABLE(qu8-avgpool-minmax-test test/qu8-avgpool-minmax.cc)
TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-test PRIVATE include src test)
TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
ADD_TEST(NAME qu8-avgpool-minmax-test COMMAND qu8-avgpool-minmax-test)
ADD_EXECUTABLE(qu8-avgpool-minmax-fp32-test test/qu8-avgpool-minmax-fp32.cc)
TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-fp32-test PRIVATE include src test)
TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
ADD_TEST(NAME qu8-avgpool-minmax-fp32-test COMMAND qu8-avgpool-minmax-fp32-test)

ADD_EXECUTABLE(qu8-dwconv-minmax-fp32-test test/qu8-dwconv-minmax-fp32.cc)
TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-minmax-fp32-test PRIVATE include src test)
Expand Down
2 changes: 1 addition & 1 deletion scripts/generate-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ tools/generate-maxpool-test.py --spec test/u8-maxpool-minmax.yaml --output test/
### Tests for AvgPool micro-kernels
tools/generate-avgpool-test.py --spec test/f16-avgpool-minmax.yaml --output test/f16-avgpool-minmax.cc &
tools/generate-avgpool-test.py --spec test/f32-avgpool-minmax.yaml --output test/f32-avgpool-minmax.cc &
tools/generate-avgpool-test.py --spec test/qu8-avgpool-minmax.yaml --output test/qu8-avgpool-minmax.cc &
tools/generate-avgpool-test.py --spec test/qu8-avgpool-minmax-fp32.yaml --output test/qu8-avgpool-minmax-fp32.cc &

### Tests for GAvgPool micro-kernels
tools/generate-gavgpool-test.py --spec test/f32-gavgpool-minmax.yaml --output test/f32-gavgpool-minmax.cc &
Expand Down
Loading

0 comments on commit aeacca9

Please sign in to comment.