blob: 8a446f618ffd016d1f5858a1a01708115ce56c5c [file] [log] [blame]
XNNPACK Teamb455b122019-09-27 18:10:33 -07001// Copyright 2019 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 <xnnpack/params.h>
9
10#include "prelu-operator-tester.h"
11
12
Marat Dukhan0a756b52022-02-03 23:08:50 -080013TEST(PRELU_NC_F16, unit_batch) {
14 for (size_t channels = 1; channels < xnn_params.f16.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f16.prelu.channel_tile - 1)) {
15 PReLUOperatorTester()
16 .batch_size(1)
17 .channels(channels)
18 .iterations(3)
19 .TestF16();
20 }
21}
22
23TEST(PRELU_NC_F16, small_batch) {
24 for (size_t channels = 1; channels < xnn_params.f16.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f16.prelu.channel_tile - 1)) {
25 PReLUOperatorTester()
26 .batch_size(xnn_params.f16.prelu.row_tile)
27 .channels(channels)
28 .iterations(3)
29 .TestF16();
30 }
31}
32
33TEST(PRELU_NC_F16, small_batch_with_x_stride) {
34 for (size_t channels = 1; channels < xnn_params.f16.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f16.prelu.channel_tile - 1)) {
35 PReLUOperatorTester()
36 .batch_size(xnn_params.f16.prelu.row_tile)
37 .channels(channels)
38 .x_stride(123)
39 .iterations(3)
40 .TestF16();
41 }
42}
43
44TEST(PRELU_NC_F16, small_batch_with_y_stride) {
45 for (size_t channels = 1; channels < xnn_params.f16.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f16.prelu.channel_tile - 1)) {
46 PReLUOperatorTester()
47 .batch_size(xnn_params.f16.prelu.row_tile)
48 .channels(channels)
49 .y_stride(117)
50 .iterations(3)
51 .TestF16();
52 }
53}
54
55TEST(PRELU_NC_F16, small_batch_with_x_stride_and_y_stride) {
56 for (size_t channels = 1; channels < xnn_params.f16.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f16.prelu.channel_tile - 1)) {
57 PReLUOperatorTester()
58 .batch_size(xnn_params.f16.prelu.row_tile)
59 .channels(channels)
60 .x_stride(123)
61 .y_stride(117)
62 .iterations(3)
63 .TestF16();
64 }
65}
66
67TEST(PRELU_NC_F16, large_batch) {
68 for (size_t channels = 1; channels < xnn_params.f16.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f16.prelu.channel_tile - 1)) {
69 PReLUOperatorTester()
70 .batch_size(3 * xnn_params.f16.prelu.row_tile + 1)
71 .channels(channels)
72 .iterations(1)
73 .TestF16();
74 }
75}
76
77TEST(PRELU_NC_F16, large_batch_with_x_stride) {
78 for (size_t channels = 1; channels < xnn_params.f16.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f16.prelu.channel_tile - 1)) {
79 PReLUOperatorTester()
80 .batch_size(3 * xnn_params.f16.prelu.row_tile + 1)
81 .channels(channels)
82 .x_stride(123)
83 .iterations(1)
84 .TestF16();
85 }
86}
87
88TEST(PRELU_NC_F16, large_batch_with_y_stride) {
89 for (size_t channels = 1; channels < xnn_params.f16.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f16.prelu.channel_tile - 1)) {
90 PReLUOperatorTester()
91 .batch_size(3 * xnn_params.f16.prelu.row_tile + 1)
92 .channels(channels)
93 .y_stride(117)
94 .iterations(1)
95 .TestF16();
96 }
97}
98
99TEST(PRELU_NC_F16, large_batch_with_x_stride_and_y_stride) {
100 for (size_t channels = 1; channels < xnn_params.f16.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f16.prelu.channel_tile - 1)) {
101 PReLUOperatorTester()
102 .batch_size(3 * xnn_params.f16.prelu.row_tile + 1)
103 .channels(channels)
104 .x_stride(123)
105 .y_stride(117)
106 .iterations(1)
107 .TestF16();
108 }
109}
110
Marat Dukhanaf1671a2022-02-04 00:32:09 -0800111TEST(PRELU_NC_F16, fp32_weights) {
112 for (size_t channels = 1; channels < xnn_params.f16.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f16.prelu.channel_tile - 1)) {
113 PReLUOperatorTester()
114 .batch_size(3 * xnn_params.f16.prelu.row_tile + 1)
115 .channels(channels)
116 .x_stride(123)
117 .y_stride(117)
118 .weights_type(PReLUOperatorTester::WeightsType::FP32)
119 .iterations(1)
120 .TestF16();
121 }
122}
123
Marat Dukhan0a756b52022-02-03 23:08:50 -0800124
Marat Dukhanefc47b82019-11-18 09:25:38 -0800125TEST(PRELU_NC_F32, unit_batch) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800126 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700127 PReLUOperatorTester()
128 .batch_size(1)
129 .channels(channels)
130 .iterations(3)
131 .TestF32();
132 }
133}
134
Marat Dukhanefc47b82019-11-18 09:25:38 -0800135TEST(PRELU_NC_F32, small_batch) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800136 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700137 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800138 .batch_size(xnn_params.f32.prelu.row_tile)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700139 .channels(channels)
140 .iterations(3)
141 .TestF32();
142 }
143}
144
Marat Dukhanefc47b82019-11-18 09:25:38 -0800145TEST(PRELU_NC_F32, small_batch_with_x_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800146 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700147 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800148 .batch_size(xnn_params.f32.prelu.row_tile)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700149 .channels(channels)
150 .x_stride(123)
151 .iterations(3)
152 .TestF32();
153 }
154}
155
Marat Dukhanefc47b82019-11-18 09:25:38 -0800156TEST(PRELU_NC_F32, small_batch_with_y_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800157 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700158 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800159 .batch_size(xnn_params.f32.prelu.row_tile)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700160 .channels(channels)
161 .y_stride(117)
162 .iterations(3)
163 .TestF32();
164 }
165}
166
Marat Dukhanefc47b82019-11-18 09:25:38 -0800167TEST(PRELU_NC_F32, small_batch_with_x_stride_and_y_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800168 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700169 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800170 .batch_size(xnn_params.f32.prelu.row_tile)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700171 .channels(channels)
172 .x_stride(123)
173 .y_stride(117)
174 .iterations(3)
175 .TestF32();
176 }
177}
178
Marat Dukhanefc47b82019-11-18 09:25:38 -0800179TEST(PRELU_NC_F32, large_batch) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800180 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700181 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800182 .batch_size(3 * xnn_params.f32.prelu.row_tile + 1)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700183 .channels(channels)
184 .iterations(1)
185 .TestF32();
186 }
187}
188
Marat Dukhanefc47b82019-11-18 09:25:38 -0800189TEST(PRELU_NC_F32, large_batch_with_x_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800190 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700191 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800192 .batch_size(3 * xnn_params.f32.prelu.row_tile + 1)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700193 .channels(channels)
194 .x_stride(123)
195 .iterations(1)
196 .TestF32();
197 }
198}
199
Marat Dukhanefc47b82019-11-18 09:25:38 -0800200TEST(PRELU_NC_F32, large_batch_with_y_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800201 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700202 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800203 .batch_size(3 * xnn_params.f32.prelu.row_tile + 1)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700204 .channels(channels)
205 .y_stride(117)
206 .iterations(1)
207 .TestF32();
208 }
209}
210
Marat Dukhanefc47b82019-11-18 09:25:38 -0800211TEST(PRELU_NC_F32, large_batch_with_x_stride_and_y_stride) {
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800212 for (size_t channels = 1; channels < xnn_params.f32.prelu.channel_tile * 10; channels += std::max<size_t>(1, xnn_params.f32.prelu.channel_tile - 1)) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700213 PReLUOperatorTester()
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800214 .batch_size(3 * xnn_params.f32.prelu.row_tile + 1)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700215 .channels(channels)
216 .x_stride(123)
217 .y_stride(117)
218 .iterations(1)
219 .TestF32();
220 }
221}