1 // Copyright 2020 Google LLC
2 //
3 // This source code is licensed under the BSD-style license found in the
4 // LICENSE file in the root directory of this source tree.
5
6 #include <gtest/gtest.h>
7
8 #include "elu-operator-tester.h"
9
10
TEST(ELU_NC_QS8,unit_batch)11 TEST(ELU_NC_QS8, unit_batch) {
12 for (size_t channels = 1; channels < 100; channels += 15) {
13 ELUOperatorTester()
14 .batch_size(1)
15 .channels(channels)
16 .iterations(3)
17 .TestQS8();
18 }
19 }
20
TEST(ELU_NC_QS8,unit_batch_with_qmin)21 TEST(ELU_NC_QS8, unit_batch_with_qmin) {
22 for (size_t channels = 1; channels < 100; channels += 15) {
23 ELUOperatorTester()
24 .batch_size(1)
25 .channels(channels)
26 .qmin(128)
27 .iterations(3)
28 .TestQS8();
29 }
30 }
31
TEST(ELU_NC_QS8,unit_batch_with_qmax)32 TEST(ELU_NC_QS8, unit_batch_with_qmax) {
33 for (size_t channels = 1; channels < 100; channels += 15) {
34 ELUOperatorTester()
35 .batch_size(1)
36 .channels(channels)
37 .qmax(128)
38 .iterations(3)
39 .TestQS8();
40 }
41 }
42
TEST(ELU_NC_QS8,unit_batch_with_input_scale)43 TEST(ELU_NC_QS8, unit_batch_with_input_scale) {
44 for (size_t channels = 1; channels < 100; channels += 15) {
45 for (float input_scale = 1.0e-2f; input_scale < 1.0e+2f; input_scale *= 10.0f) {
46 ELUOperatorTester()
47 .batch_size(1)
48 .channels(channels)
49 .input_scale(input_scale)
50 .iterations(1)
51 .TestQS8();
52 }
53 }
54 }
55
TEST(ELU_NC_QS8,unit_batch_with_input_zero_point)56 TEST(ELU_NC_QS8, unit_batch_with_input_zero_point) {
57 for (size_t channels = 1; channels < 100; channels += 15) {
58 for (int32_t input_zero_point = 0; input_zero_point <= 255; input_zero_point += 51) {
59 ELUOperatorTester()
60 .batch_size(1)
61 .channels(channels)
62 .input_zero_point(uint8_t(input_zero_point))
63 .iterations(1)
64 .TestQS8();
65 }
66 }
67 }
68
TEST(ELU_NC_QS8,small_batch)69 TEST(ELU_NC_QS8, small_batch) {
70 for (size_t channels = 1; channels < 100; channels += 15) {
71 ELUOperatorTester()
72 .batch_size(3)
73 .channels(channels)
74 .iterations(3)
75 .TestQS8();
76 }
77 }
78
TEST(ELU_NC_QS8,small_batch_with_input_stride)79 TEST(ELU_NC_QS8, small_batch_with_input_stride) {
80 for (size_t channels = 1; channels < 100; channels += 15) {
81 ELUOperatorTester()
82 .batch_size(3)
83 .channels(channels)
84 .input_stride(129)
85 .iterations(3)
86 .TestQS8();
87 }
88 }
89
TEST(ELU_NC_QS8,small_batch_with_output_stride)90 TEST(ELU_NC_QS8, small_batch_with_output_stride) {
91 for (size_t channels = 1; channels < 100; channels += 15) {
92 ELUOperatorTester()
93 .batch_size(3)
94 .channels(channels)
95 .output_stride(117)
96 .iterations(3)
97 .TestQS8();
98 }
99 }
100
TEST(ELU_NC_QS8,small_batch_with_qmin)101 TEST(ELU_NC_QS8, small_batch_with_qmin) {
102 for (size_t channels = 1; channels < 100; channels += 15) {
103 ELUOperatorTester()
104 .batch_size(3)
105 .channels(channels)
106 .qmin(128)
107 .iterations(3)
108 .TestQS8();
109 }
110 }
111
TEST(ELU_NC_QS8,small_batch_with_qmax)112 TEST(ELU_NC_QS8, small_batch_with_qmax) {
113 for (size_t channels = 1; channels < 100; channels += 15) {
114 ELUOperatorTester()
115 .batch_size(3)
116 .channels(channels)
117 .qmax(128)
118 .iterations(3)
119 .TestQS8();
120 }
121 }
122
TEST(ELU_NC_QS8,small_batch_with_input_scale)123 TEST(ELU_NC_QS8, small_batch_with_input_scale) {
124 for (size_t channels = 1; channels < 100; channels += 15) {
125 for (float input_scale = 1.0e-2f; input_scale < 1.0e+2f; input_scale *= 10.0f) {
126 ELUOperatorTester()
127 .batch_size(3)
128 .channels(channels)
129 .input_scale(input_scale)
130 .iterations(1)
131 .TestQS8();
132 }
133 }
134 }
135
TEST(ELU_NC_QS8,small_batch_with_input_zero_point)136 TEST(ELU_NC_QS8, small_batch_with_input_zero_point) {
137 for (size_t channels = 1; channels < 100; channels += 15) {
138 for (int32_t input_zero_point = 0; input_zero_point <= 255; input_zero_point += 51) {
139 ELUOperatorTester()
140 .batch_size(3)
141 .channels(channels)
142 .input_zero_point(uint8_t(input_zero_point))
143 .iterations(1)
144 .TestQS8();
145 }
146 }
147 }
148
TEST(ELU_NC_QS8,small_batch_with_alpha)149 TEST(ELU_NC_QS8, small_batch_with_alpha) {
150 for (size_t channels = 1; channels < 100; channels += 15) {
151 for (float alpha = 1.0e-4f; alpha < 1.0f; alpha *= 3.14159265f) {
152 ELUOperatorTester()
153 .batch_size(3)
154 .channels(channels)
155 .alpha(alpha)
156 .iterations(1)
157 .TestQS8();
158 }
159 }
160 }
161
TEST(ELU_NC_QS8,strided_batch)162 TEST(ELU_NC_QS8, strided_batch) {
163 for (size_t channels = 1; channels < 100; channels += 15) {
164 ELUOperatorTester()
165 .batch_size(3)
166 .channels(channels)
167 .input_stride(129)
168 .output_stride(117)
169 .iterations(3)
170 .TestQS8();
171 }
172 }
173
TEST(ELU_NC_QS8,strided_batch_with_qmin)174 TEST(ELU_NC_QS8, strided_batch_with_qmin) {
175 for (size_t channels = 1; channels < 100; channels += 15) {
176 ELUOperatorTester()
177 .batch_size(3)
178 .channels(channels)
179 .input_stride(129)
180 .output_stride(117)
181 .qmin(128)
182 .iterations(3)
183 .TestQS8();
184 }
185 }
186
TEST(ELU_NC_QS8,strided_batch_with_qmax)187 TEST(ELU_NC_QS8, strided_batch_with_qmax) {
188 for (size_t channels = 1; channels < 100; channels += 15) {
189 ELUOperatorTester()
190 .batch_size(3)
191 .channels(channels)
192 .input_stride(129)
193 .output_stride(117)
194 .qmax(128)
195 .iterations(3)
196 .TestQS8();
197 }
198 }
199
TEST(ELU_NC_QS8,strided_batch_with_input_scale)200 TEST(ELU_NC_QS8, strided_batch_with_input_scale) {
201 for (size_t channels = 1; channels < 100; channels += 15) {
202 for (float input_scale = 1.0e-2f; input_scale < 1.0e+2f; input_scale *= 10.0f) {
203 ELUOperatorTester()
204 .batch_size(3)
205 .channels(channels)
206 .input_stride(129)
207 .output_stride(117)
208 .input_scale(input_scale)
209 .iterations(1)
210 .TestQS8();
211 }
212 }
213 }
214
TEST(ELU_NC_QS8,strided_batch_with_input_zero_point)215 TEST(ELU_NC_QS8, strided_batch_with_input_zero_point) {
216 for (size_t channels = 1; channels < 100; channels += 15) {
217 for (int32_t input_zero_point = 0; input_zero_point <= 255; input_zero_point += 51) {
218 ELUOperatorTester()
219 .batch_size(3)
220 .channels(channels)
221 .input_stride(129)
222 .output_stride(117)
223 .input_zero_point(uint8_t(input_zero_point))
224 .iterations(1)
225 .TestQS8();
226 }
227 }
228 }
229
TEST(ELU_NC_QS8,strided_batch_with_alpha)230 TEST(ELU_NC_QS8, strided_batch_with_alpha) {
231 for (size_t channels = 1; channels < 100; channels += 15) {
232 for (float alpha = 1.0e-4f; alpha < 1.0f; alpha *= 3.14159265f) {
233 ELUOperatorTester()
234 .batch_size(3)
235 .channels(channels)
236 .input_stride(129)
237 .output_stride(117)
238 .alpha(alpha)
239 .iterations(1)
240 .TestQS8();
241 }
242 }
243 }
244
TEST(ELU_NC_F32,unit_batch)245 TEST(ELU_NC_F32, unit_batch) {
246 for (size_t channels = 1; channels < 100; channels++) {
247 ELUOperatorTester()
248 .batch_size(1)
249 .channels(channels)
250 .iterations(3)
251 .TestF32();
252 }
253 }
254
TEST(ELU_NC_F32,small_batch)255 TEST(ELU_NC_F32, small_batch) {
256 for (size_t channels = 1; channels < 100; channels++) {
257 ELUOperatorTester()
258 .batch_size(3)
259 .channels(channels)
260 .iterations(3)
261 .TestF32();
262 }
263 }
264
TEST(ELU_NC_F32,small_batch_with_input_stride)265 TEST(ELU_NC_F32, small_batch_with_input_stride) {
266 for (size_t channels = 1; channels < 100; channels += 15) {
267 ELUOperatorTester()
268 .batch_size(3)
269 .channels(channels)
270 .input_stride(129)
271 .iterations(3)
272 .TestF32();
273 }
274 }
275
TEST(ELU_NC_F32,small_batch_with_output_stride)276 TEST(ELU_NC_F32, small_batch_with_output_stride) {
277 for (size_t channels = 1; channels < 100; channels += 15) {
278 ELUOperatorTester()
279 .batch_size(3)
280 .channels(channels)
281 .output_stride(117)
282 .iterations(3)
283 .TestF32();
284 }
285 }
286
TEST(ELU_NC_F32,small_batch_with_input_and_output_stride)287 TEST(ELU_NC_F32, small_batch_with_input_and_output_stride) {
288 for (size_t channels = 1; channels < 100; channels += 15) {
289 ELUOperatorTester()
290 .batch_size(3)
291 .channels(channels)
292 .input_stride(129)
293 .output_stride(117)
294 .iterations(3)
295 .TestF32();
296 }
297 }
298
TEST(ELU_NC_F32,small_batch_with_alpha)299 TEST(ELU_NC_F32, small_batch_with_alpha) {
300 for (size_t batch_size = 1; batch_size <= 3; batch_size += 2) {
301 for (size_t channels = 1; channels < 100; channels += 15) {
302 for (float alpha = 1.0e-4f; alpha < 1.0f; alpha *= 3.14159265f) {
303 ELUOperatorTester()
304 .batch_size(3)
305 .channels(channels)
306 .alpha(alpha)
307 .iterations(1)
308 .TestF32();
309 }
310 }
311 }
312 }
313