Skip to content

Commit da7d1a1

Browse files
authored
test x86 arm convolution oom (#5492)
* skip mips loongarch riscv oom test atm * test softmax oom
1 parent 03ca905 commit da7d1a1

6 files changed

+789
-337
lines changed

.ci/test-coverage.yml

+27-27
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ jobs:
7979
run: |
8080
mkdir build && cd build
8181
cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX2=ON -DNCNN_AVX512=OFF -DNCNN_XOP=OFF -DNCNN_OPENMP=OFF -DNCNN_VULKAN=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
82-
cmake --build . -j $(nproc)
82+
cmake --build . -j 4
8383
- name: test
8484
run: |
8585
printf "[Processor]\nThreadCount=4\n" > build/tests/SwiftShader.ini
@@ -159,7 +159,7 @@ jobs:
159159
run: |
160160
mkdir build && cd build
161161
cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX2=ON -DNCNN_AVX512=OFF -DNCNN_XOP=OFF -DNCNN_OPENMP=OFF -DNCNN_VULKAN=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
162-
cmake --build . -j $(nproc)
162+
cmake --build . -j 4
163163
- name: test
164164
run: |
165165
export LP_NUM_THREADS=4
@@ -230,9 +230,9 @@ jobs:
230230
-DNCNN_AVX512BF16=${{matrix.AVX512BF16}} \
231231
-DNCNN_AVX512FP16=${{matrix.AVX512FP16}} \
232232
..
233-
cmake --build . -j $(nproc)
233+
cmake --build . -j 4
234234
- name: test
235-
run: cd build && ctest --output-on-failure -j $(nproc)
235+
run: cd build && ctest --output-on-failure -j 4
236236
- name: lcov-collect
237237
run: |
238238
cd build
@@ -309,12 +309,12 @@ jobs:
309309
run: |
310310
mkdir build && cd build
311311
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabi.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_GNU_INLINE_ASM=${{matrix.GNU_INLINE_ASM}} -DNCNN_VFPV4=ON -DNCNN_ARM82=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
312-
cmake --build . -j $(nproc)
312+
cmake --build . -j 4
313313
- name: test
314314
run: |
315315
export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
316316
cd build
317-
TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabi" ctest --output-on-failure -j $(nproc)
317+
TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabi" ctest --output-on-failure -j 4
318318
- name: lcov-collect
319319
run: |
320320
cd build
@@ -327,12 +327,12 @@ jobs:
327327
run: |
328328
mkdir build-armhf-vfpv3-d16 && cd build-armhf-vfpv3-d16
329329
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabihf-vfpv3-d16.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_GNU_INLINE_ASM=${{matrix.GNU_INLINE_ASM}} -DNCNN_VFPV4=OFF -DNCNN_ARM82=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
330-
cmake --build . -j $(nproc)
330+
cmake --build . -j 4
331331
- name: test-armhf-vfpv3-d16
332332
run: |
333333
export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
334334
cd build-armhf-vfpv3-d16
335-
TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabihf" ctest --output-on-failure -j $(nproc)
335+
TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabihf" ctest --output-on-failure -j 4
336336
- name: lcov-collect-armhf-vfpv3-d16
337337
run: |
338338
cd build-armhf-vfpv3-d16
@@ -423,12 +423,12 @@ jobs:
423423
-DNCNN_ARM84BF16=${{matrix.ARM84BF16}} \
424424
-DNCNN_ARM84I8MM=${{matrix.ARM84I8MM}} \
425425
..
426-
cmake --build . -j $(nproc)
426+
cmake --build . -j 4
427427
- name: test
428428
run: |
429429
export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
430430
cd build
431-
TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j $(nproc)
431+
TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j 4
432432
- name: lcov-collect
433433
run: |
434434
cd build
@@ -502,12 +502,12 @@ jobs:
502502
run: |
503503
mkdir build && cd build
504504
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsisa32r6el-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_MSA=OFF -DNCNN_MMI=OFF -DNCNN_OPENMP=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
505-
cmake --build . -j $(nproc)
505+
cmake --build . -j 4
506506
- name: test
507507
run: |
508508
export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
509509
cd build
510-
TESTS_EXECUTABLE_LOADER=qemu-mipsel TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa32r6el-linux-gnu" ctest --output-on-failure -j $(nproc)
510+
TESTS_EXECUTABLE_LOADER=qemu-mipsel TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa32r6el-linux-gnu" ctest --output-on-failure -j 4
511511
- name: lcov-collect
512512
run: |
513513
cd build
@@ -581,12 +581,12 @@ jobs:
581581
run: |
582582
mkdir build && cd build
583583
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsisa64r6el-linux-gnuabi64.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_MSA=ON -DNCNN_MMI=OFF -DNCNN_OPENMP=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
584-
cmake --build . -j $(nproc)
584+
cmake --build . -j 4
585585
- name: test
586586
run: |
587587
export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
588588
cd build
589-
TESTS_EXECUTABLE_LOADER=qemu-mips64el TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa64r6el-linux-gnuabi64" ctest --output-on-failure -j $(nproc)
589+
TESTS_EXECUTABLE_LOADER=qemu-mips64el TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa64r6el-linux-gnuabi64" ctest --output-on-failure -j 4
590590
- name: lcov-collect
591591
run: |
592592
cd build
@@ -660,12 +660,12 @@ jobs:
660660
run: |
661661
mkdir build && cd build
662662
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/powerpc-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_OPENMP=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
663-
cmake --build . -j $(nproc)
663+
cmake --build . -j 4
664664
- name: test
665665
run: |
666666
export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
667667
cd build
668-
TESTS_EXECUTABLE_LOADER=qemu-ppc TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/powerpc-linux-gnu" ctest --output-on-failure -j $(nproc)
668+
TESTS_EXECUTABLE_LOADER=qemu-ppc TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/powerpc-linux-gnu" ctest --output-on-failure -j 4
669669
- name: lcov-collect
670670
run: |
671671
cd build
@@ -739,12 +739,12 @@ jobs:
739739
run: |
740740
mkdir build && cd build
741741
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/powerpc64le-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_OPENMP=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
742-
cmake --build . -j $(nproc)
742+
cmake --build . -j 4
743743
- name: test
744744
run: |
745745
export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
746746
cd build
747-
TESTS_EXECUTABLE_LOADER=qemu-ppc64le TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/powerpc64le-linux-gnu" ctest --output-on-failure -j $(nproc)
747+
TESTS_EXECUTABLE_LOADER=qemu-ppc64le TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/powerpc64le-linux-gnu" ctest --output-on-failure -j 4
748748
- name: lcov-collect
749749
run: |
750750
cd build
@@ -824,12 +824,12 @@ jobs:
824824
run: |
825825
mkdir build && cd build
826826
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/riscv64-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_OPENMP=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
827-
cmake --build . -j $(nproc)
827+
cmake --build . -j 4
828828
- name: test
829829
run: |
830830
export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
831831
cd build
832-
TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/riscv64-linux-gnu" ctest --output-on-failure -j $(nproc)
832+
TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/riscv64-linux-gnu" ctest --output-on-failure -j 4
833833
- name: lcov-collect
834834
run: |
835835
cd build
@@ -951,12 +951,12 @@ jobs:
951951
export RISCV_ROOT_PATH=${{ci.workspace}}/rv64gcv-install
952952
mkdir build && cd build
953953
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/riscv64-unknown-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DCMAKE_C_FLAGS="-O1" -DCMAKE_CXX_FLAGS="-O1" -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_RVV=ON -DNCNN_OPENMP=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
954-
cmake --build . -j $(nproc)
954+
cmake --build . -j 4
955955
- name: test-vlen128
956956
run: |
957957
export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
958958
cd build
959-
TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,v=true,Zfh=true,x-zvfh=true,vlen=128,elen=64,vext_spec=v1.0;-L;${{ci.workspace}}/rv64gcv-install/sysroot" ctest --output-on-failure -j $(nproc)
959+
TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,v=true,Zfh=true,x-zvfh=true,vlen=128,elen=64,vext_spec=v1.0;-L;${{ci.workspace}}/rv64gcv-install/sysroot" ctest --output-on-failure -j 4
960960
- name: lcov-collect-vlen128
961961
run: |
962962
cd build
@@ -971,7 +971,7 @@ jobs:
971971
run: |
972972
export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
973973
cd build
974-
TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,v=true,Zfh=true,x-zvfh=true,vlen=256,elen=64,vext_spec=v1.0;-L;${{ci.workspace}}/rv64gcv-install/sysroot" ctest --output-on-failure -j $(nproc)
974+
TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,v=true,Zfh=true,x-zvfh=true,vlen=256,elen=64,vext_spec=v1.0;-L;${{ci.workspace}}/rv64gcv-install/sysroot" ctest --output-on-failure -j 4
975975
- name: lcov-collect-vlen256
976976
run: |
977977
cd build
@@ -1051,12 +1051,12 @@ jobs:
10511051
export LOONGARCH64_ROOT_PATH=${{ci.workspace}}/cross-tools
10521052
mkdir build && cd build
10531053
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/loongarch64-unknown-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_LSX=ON -DNCNN_LASX=OFF -DNCNN_OPENMP=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
1054-
cmake --build . -j $(nproc)
1054+
cmake --build . -j 4
10551055
- name: test
10561056
run: |
10571057
export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
10581058
cd build
1059-
TESTS_EXECUTABLE_LOADER=qemu-loongarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;${{ci.workspace}}/cross-tools/target" ctest --output-on-failure -j $(nproc)
1059+
TESTS_EXECUTABLE_LOADER=qemu-loongarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;${{ci.workspace}}/cross-tools/target" ctest --output-on-failure -j 4
10601060
- name: lcov-collect
10611061
run: |
10621062
cd build
@@ -1099,9 +1099,9 @@ jobs:
10991099
run: |
11001100
mkdir build && cd build
11011101
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host-c.gcc.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_STDIO=ON -DNCNN_STRING=ON -DNCNN_SIMPLESTL=ON -DNCNN_SIMPLEMATH=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
1102-
cmake --build . -j $(nproc)
1102+
cmake --build . -j 4
11031103
- name: test
1104-
run: cd build && ctest --output-on-failure -j $(nproc)
1104+
run: cd build && ctest --output-on-failure -j 4
11051105
- name: lcov-collect
11061106
run: |
11071107
cd build

src/layer/convolution.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -241,13 +241,13 @@ int Convolution::forward(const Mat& bottom_blob, Mat& top_blob, const Option& op
241241
op->create_pipeline(opt);
242242

243243
// forward
244-
op->forward(bottom_blob, top_blob, opt);
244+
int ret = op->forward(bottom_blob, top_blob, opt);
245245

246246
op->destroy_pipeline(opt);
247247

248248
delete op;
249249

250-
return 0;
250+
return ret;
251251
}
252252
}
253253

@@ -401,6 +401,8 @@ int Convolution::forward_int8(const Mat& bottom_blob, Mat& top_blob, const Optio
401401
opt_g.blob_allocator = opt.workspace_allocator;
402402

403403
quantize_to_int8(bottom_blob, bottom_blob_unbordered, bottom_blob_int8_scales, opt_g);
404+
if (bottom_blob_unbordered.empty())
405+
return -100;
404406
}
405407

406408
Mat bottom_blob_bordered;

tests/test_convolution_oom.cpp

+149
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
// Tencent is pleased to support the open source community by making ncnn available.
2+
//
3+
// Copyright (C) 2024 THL A29 Limited, a Tencent company. All rights reserved.
4+
//
5+
// Licensed under the BSD 3-Clause License (the "License"); you may not use this file except
6+
// in compliance with the License. You may obtain a copy of the License at
7+
//
8+
// https://opensource.org/licenses/BSD-3-Clause
9+
//
10+
// Unless required by applicable law or agreed to in writing, software distributed
11+
// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12+
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
13+
// specific language governing permissions and limitations under the License.
14+
15+
#include "testutil.h"
16+
17+
static int test_convolution_oom(int w, int h, int c, int outch, int kernel, int dilation, int stride, int pad, int bias)
18+
{
19+
ncnn::Mat a = RandomMat(w, h, c);
20+
21+
ncnn::ParamDict pd;
22+
pd.set(0, outch);
23+
pd.set(1, kernel);
24+
pd.set(2, dilation);
25+
pd.set(3, stride);
26+
pd.set(4, pad);
27+
pd.set(5, bias);
28+
pd.set(6, outch * c * kernel * kernel);
29+
30+
int activation_type = RAND() % 7; // 0 1 2 3 4 5 6
31+
ncnn::Mat activation_params(2);
32+
activation_params[0] = (activation_type == 6) ? RandomFloat(0, 1) : RandomFloat(-1, 0); // alpha
33+
activation_params[1] = RandomFloat(0, 1); // beta
34+
pd.set(9, activation_type);
35+
pd.set(10, activation_params);
36+
37+
std::vector<ncnn::Mat> weights(bias ? 2 : 1);
38+
weights[0] = RandomMat(outch * c * kernel * kernel);
39+
if (bias)
40+
weights[1] = RandomMat(outch);
41+
42+
int ret = test_layer_oom("Convolution", pd, weights, a);
43+
if (ret != 0)
44+
{
45+
fprintf(stderr, "test_convolution_oom failed w=%d h=%d c=%d outch=%d kernel=%d dilation=%d stride=%d pad=%d bias=%d act=%d actparams=[%f,%f]\n", w, h, c, outch, kernel, dilation, stride, pad, bias, activation_type, activation_params[0], activation_params[1]);
46+
return ret;
47+
}
48+
49+
return ret;
50+
}
51+
52+
static int test_convolution_0()
53+
{
54+
return 0
55+
|| test_convolution_oom(9, 7, 31, 63, 1, 1, 1, 0, 1)
56+
|| test_convolution_oom(9, 7, 31, 63, 3, 1, 1, 1, 1);
57+
}
58+
59+
#if NCNN_INT8
60+
static int test_convolution_oom_int8(int w, int h, int c, int outch, int kernel, int dilation, int stride, int pad, int bias, bool requant = false)
61+
{
62+
ncnn::Mat a = RandomMat(w, h, c);
63+
64+
ncnn::ParamDict pd;
65+
pd.set(0, outch);
66+
pd.set(1, kernel);
67+
pd.set(2, dilation);
68+
pd.set(3, stride);
69+
pd.set(4, pad);
70+
pd.set(5, bias);
71+
pd.set(6, outch * c * kernel * kernel);
72+
pd.set(8, requant ? 101 : 1); // int8_scale_term
73+
74+
int activation_type = RAND() % 7; // 0 1 2 3 4 5 6
75+
ncnn::Mat activation_params(2);
76+
activation_params[0] = (activation_type == 6) ? RandomFloat(0, 1) : RandomFloat(-1, 0); // alpha
77+
activation_params[1] = RandomFloat(0, 1); // beta
78+
pd.set(9, activation_type);
79+
pd.set(10, activation_params);
80+
81+
std::vector<ncnn::Mat> weights(bias ? 5 : 4);
82+
weights[0] = RandomMat(outch * c * kernel * kernel);
83+
84+
ncnn::Mat weight_scales = scales_mat(weights[0], outch, c * kernel * kernel, c * kernel * kernel);
85+
ncnn::Mat input_scales = scales_mat(a, 1, w * h * c, a.cstep);
86+
ncnn::Mat top_scales = requant ? scales_mat(a, 1, w * h * c, a.cstep) : ncnn::Mat();
87+
88+
if (kernel == 3 && dilation == 1 && stride == 1)
89+
{
90+
// test for 6bit quant
91+
for (int i = 0; i < weight_scales.w; i++)
92+
weight_scales[i] = weight_scales[i] / 4.f;
93+
}
94+
95+
if (bias)
96+
{
97+
weights[1] = RandomMat(outch);
98+
weights[2] = weight_scales;
99+
weights[3] = input_scales;
100+
weights[4] = top_scales;
101+
}
102+
else
103+
{
104+
weights[1] = weight_scales;
105+
weights[2] = input_scales;
106+
weights[3] = top_scales;
107+
}
108+
109+
int flag = TEST_LAYER_DISABLE_GPU_TESTING;
110+
int ret = test_layer_oom("Convolution", pd, weights, a, flag);
111+
if (ret != 0)
112+
{
113+
fprintf(stderr, "test_convolution_oom_int8 failed w=%d h=%d c=%d outch=%d kernel=%d dilation=%d stride=%d pad=%d bias=%d requant=%d act=%d actparams=[%f,%f]\n", w, h, c, outch, kernel, dilation, stride, pad, bias, requant, activation_type, activation_params[0], activation_params[1]);
114+
return ret;
115+
}
116+
117+
return ret;
118+
}
119+
120+
static int test_convolution_1()
121+
{
122+
return 0
123+
|| test_convolution_oom_int8(9, 7, 31, 63, 1, 1, 1, 0, 1)
124+
|| test_convolution_oom_int8(9, 7, 31, 63, 3, 1, 1, 1, 1);
125+
}
126+
127+
static int test_convolution_2()
128+
{
129+
return 0
130+
|| test_convolution_oom_int8(9, 7, 31, 63, 1, 1, 1, 0, 1, true)
131+
|| test_convolution_oom_int8(9, 7, 31, 63, 3, 1, 1, 1, 1, true);
132+
}
133+
#endif // NCNN_INT8
134+
135+
int main()
136+
{
137+
SRAND(7767517);
138+
139+
#if __mips__ || __loongarch64 || __riscv
140+
// TODO
141+
return 0;
142+
#endif
143+
144+
#if NCNN_INT8
145+
return test_convolution_0() || test_convolution_1() || test_convolution_2();
146+
#else
147+
return test_convolution_0();
148+
#endif
149+
}

0 commit comments

Comments
 (0)