1 | /******************************************************************************* |
2 | * Copyright 2016-2022 Intel Corporation |
3 | * |
4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | * you may not use this file except in compliance with the License. |
6 | * You may obtain a copy of the License at |
7 | * |
8 | * http://www.apache.org/licenses/LICENSE-2.0 |
9 | * |
10 | * Unless required by applicable law or agreed to in writing, software |
11 | * distributed under the License is distributed on an "AS IS" BASIS, |
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. |
15 | *******************************************************************************/ |
16 | |
17 | #include <numeric> |
18 | #include <utility> |
19 | |
20 | #include "dnnl_test_common.hpp" |
21 | #include "gtest/gtest.h" |
22 | |
23 | #include "oneapi/dnnl/dnnl.hpp" |
24 | |
25 | #include "test_reorder_common.hpp" |
26 | |
27 | namespace dnnl { |
28 | |
29 | using f32_f32 = std::pair<float, float>; |
30 | using s32_s32 = std::pair<int32_t, int32_t>; |
31 | using s8_s8 = std::pair<int8_t, int8_t>; |
32 | |
33 | using cfg_f32 = test_simple_params<f32_f32>; |
34 | using cfg_s32 = test_simple_params<s32_s32>; |
35 | using cfg_s8 = test_simple_params<s8_s8>; |
36 | |
37 | using reorder_simple_test_f32_f32 = reorder_simple_test<f32_f32>; |
38 | using reorder_simple_test_s32_s32 = reorder_simple_test<s32_s32>; |
39 | using reorder_simple_test_s8_s8 = reorder_simple_test<s8_s8>; |
40 | |
41 | using fmt = memory::format_tag; |
42 | |
43 | TEST_P(reorder_simple_test_s32_s32, TestsReorder) { |
44 | Test(); |
45 | } |
46 | TEST_P(reorder_simple_test_f32_f32, TestsReorder) { |
47 | Test(); |
48 | } |
49 | TEST_P(reorder_simple_test_s8_s8, TestsReorder) { |
50 | Test(); |
51 | } |
52 | |
53 | INSTANTIATE_TEST_SUITE_P(CornerCases, reorder_simple_test_f32_f32, |
54 | ::testing::Values(cfg_f32 {fmt::nchw, fmt::nc, {2, 16, 8, 8}, true, |
55 | dnnl_invalid_arguments}, |
56 | cfg_f32 {fmt::any, fmt::nchw, {2, 28, 3, 4}, true, |
57 | dnnl_invalid_arguments}, |
58 | cfg_f32 {fmt::nchw, fmt::any, {2, 28, 3, 4}, true, |
59 | dnnl_invalid_arguments}, |
60 | cfg_f32 {fmt::nchw, fmt::nchw, {0, 16, 8, 8}}, |
61 | cfg_f32 {fmt::nchw, fmt::nChw8c, {0, 5, 8, 8}}, |
62 | cfg_f32 {fmt::nchw, fmt::nChw16c, {0, 5, 8, 8}}, |
63 | cfg_f32 {fmt::OIhw8o8i, fmt::oihw, {13, 0, 3, 3}}, |
64 | cfg_f32 {fmt::OIhw8i8o, fmt::OIhw8o8i, {0, 32, 3, 3}}, |
65 | cfg_f32 {fmt::OIhw16o16i, fmt::oihw, {16, 31, 0, 3}}, |
66 | cfg_f32 {fmt::OIhw16i16o, fmt::OIhw16o16i, {32, 16, 3, 0}})); |
67 | |
68 | CPU_INSTANTIATE_TEST_SUITE_P(PaddedData, reorder_simple_test_f32_f32, |
69 | ::testing::Values(cfg_f32 {fmt::nchw, fmt::nChw8c, {2, 28, 3, 4}}, |
70 | cfg_f32 {fmt::nChw8c, fmt::nchw, {2, 28, 3, 4}}, |
71 | cfg_f32 {fmt::chwn, fmt::nChw8c, {2, 28, 3, 4}}, |
72 | cfg_f32 {fmt::nChw8c, fmt::chwn, {2, 28, 3, 4}}, |
73 | cfg_f32 {fmt::nhwc, fmt::nChw8c, {3, 28, 3, 4}}, |
74 | cfg_f32 {fmt::nChw8c, fmt::nhwc, {3, 28, 3, 4}}, |
75 | |
76 | cfg_f32 {fmt::nchw, fmt::nChw16c, {2, 28, 3, 4}}, |
77 | cfg_f32 {fmt::nChw16c, fmt::nchw, {2, 28, 3, 4}}, |
78 | cfg_f32 {fmt::chwn, fmt::nChw16c, {2, 28, 3, 4}}, |
79 | cfg_f32 {fmt::nChw16c, fmt::chwn, {2, 28, 3, 4}}, |
80 | cfg_f32 {fmt::nhwc, fmt::nChw16c, {3, 28, 3, 4}}, |
81 | cfg_f32 {fmt::nChw16c, fmt::nhwc, {3, 28, 3, 4}}, |
82 | |
83 | cfg_f32 {fmt::ncdhw, fmt::nCdhw16c, {2, 28, 2, 3, 4}}, |
84 | cfg_f32 {fmt::nCdhw16c, fmt::ncdhw, {2, 28, 2, 3, 4}}, |
85 | // cfg_f32{fmt::cdhwn, fmt::nCdhw16c, {2, 28, 2, 3, 4}}, |
86 | // cfg_f32{fmt::nCdhw16c, fmt::cdhwn, {2, 28, 2, 3, 4}}, |
87 | cfg_f32 {fmt::ndhwc, fmt::nCdhw16c, {3, 28, 2, 3, 4}}, |
88 | cfg_f32 {fmt::nCdhw16c, fmt::ndhwc, {3, 28, 2, 3, 4}})); |
89 | |
90 | CPU_INSTANTIATE_TEST_SUITE_P(Data_3d, reorder_simple_test_f32_f32, |
91 | ::testing::Values(cfg_f32 {fmt::ncdhw, fmt::nCdhw16c, {2, 32, 2, 3, 4}}, |
92 | cfg_f32 {fmt::nCdhw16c, fmt::ncdhw, {2, 32, 2, 3, 4}}, |
93 | cfg_f32 {fmt::nCdhw8c, fmt::ncdhw, {2, 32, 2, 3, 4}}, |
94 | cfg_f32 {fmt::ndhwc, fmt::nCdhw16c, {3, 32, 2, 3, 4}}, |
95 | cfg_f32 {fmt::nCdhw16c, fmt::ndhwc, {3, 32, 2, 3, 4}}, |
96 | cfg_f32 {fmt::ndhwc, fmt::nCdhw8c, {3, 32, 2, 3, 4}}, |
97 | cfg_f32 {fmt::nCdhw8c, fmt::ndhwc, {3, 32, 2, 3, 4}})); |
98 | |
99 | CPU_INSTANTIATE_TEST_SUITE_P(PaddedWeights, reorder_simple_test_f32_f32, |
100 | ::testing::Values( |
101 | // Oi(d)hw16o |
102 | cfg_f32 {fmt::oihw, fmt::Oihw16o, {17, 23, 2, 3}}, |
103 | cfg_f32 {fmt::Oihw16o, fmt::oihw, {17, 23, 2, 3}}, |
104 | cfg_f32 {fmt::oidhw, fmt::Oidhw16o, {17, 23, 2, 2, 3}}, |
105 | cfg_f32 {fmt::Oidhw16o, fmt::oidhw, {17, 23, 2, 2, 3}}, |
106 | // OIhw16i16o |
107 | cfg_f32 {fmt::oihw, fmt::OIhw16i16o, {17, 23, 2, 3}}, |
108 | cfg_f32 {fmt::OIhw16i16o, fmt::oihw, {17, 23, 2, 3}}, |
109 | cfg_f32 {fmt::oihw, fmt::OIhw16o16i, {17, 23, 2, 3}}, |
110 | cfg_f32 {fmt::OIhw16o16i, fmt::oihw, {17, 23, 2, 3}}, |
111 | cfg_f32 {fmt::hwio, fmt::OIhw16i16o, {17, 23, 2, 3}}, |
112 | cfg_f32 {fmt::OIhw16i16o, fmt::hwio, {17, 23, 2, 3}}, |
113 | // OIhw16o16i |
114 | cfg_f32 {fmt::oihw, fmt::OIhw16o16i, {17, 23, 2, 3}}, |
115 | cfg_f32 {fmt::OIhw16o16i, fmt::oihw, {17, 23, 2, 3}}, |
116 | // IOhw16o16i |
117 | cfg_f32 {fmt::oihw, fmt::IOhw16o16i, {17, 23, 2, 3}}, |
118 | cfg_f32 {fmt::IOhw16o16i, fmt::oihw, {17, 23, 2, 3}}, |
119 | // gOdhwi16o |
120 | cfg_f32 {fmt::goidhw, fmt::gOdhwi16o, {2, 17, 23, 2, 2, 3}}, |
121 | cfg_f32 {fmt::gOdhwi16o, fmt::goidhw, {2, 17, 23, 3, 2, 3}}, |
122 | // OIdhw16o16i |
123 | cfg_f32 {fmt::oidhw, fmt::OIdhw16o16i, {17, 23, 2, 3, 3}}, |
124 | cfg_f32 {fmt::OIdhw16o16i, fmt::oidhw, {17, 23, 2, 3, 3}}, |
125 | // IOdhw16o16i |
126 | cfg_f32 {fmt::oidhw, fmt::IOdhw16o16i, {17, 23, 2, 3, 3}}, |
127 | cfg_f32 {fmt::IOdhw16o16i, fmt::oidhw, {17, 23, 2, 3, 3}}, |
128 | // gOIdhw16i16o |
129 | cfg_f32 {fmt::goidhw, fmt::gOIdhw16i16o, {2, 17, 23, 2, 2, 3}}, |
130 | cfg_f32 {fmt::gOIdhw16i16o, fmt::goidhw, {2, 17, 23, 3, 2, 3}}, |
131 | // gOIdhw16o16i |
132 | cfg_f32 {fmt::goidhw, fmt::gOIdhw16o16i, {2, 17, 23, 2, 2, 3}}, |
133 | cfg_f32 {fmt::gOIdhw16o16i, fmt::goidhw, {2, 17, 23, 3, 2, 3}}, |
134 | // gIOdhw16o16i |
135 | cfg_f32 {fmt::goidhw, fmt::gIOdhw16o16i, {2, 17, 23, 2, 2, 3}}, |
136 | cfg_f32 {fmt::gIOdhw16o16i, fmt::goidhw, {2, 17, 23, 3, 2, 3}}, |
137 | // Oihw16o |
138 | cfg_f32 {fmt::oihw, fmt::Oihw16o, {17, 23, 2, 3}}, |
139 | cfg_f32 {fmt::Oihw16o, fmt::oihw, {17, 23, 2, 3}}, |
140 | // OIhw8i8o |
141 | cfg_f32 {fmt::oihw, fmt::OIhw8i8o, {17, 23, 2, 3}}, |
142 | cfg_f32 {fmt::OIhw8i8o, fmt::oihw, {17, 23, 2, 3}}, |
143 | cfg_f32 {fmt::oihw, fmt::OIhw8o8i, {17, 23, 2, 3}}, |
144 | cfg_f32 {fmt::OIhw8o8i, fmt::oihw, {17, 23, 2, 3}}, |
145 | cfg_f32 {fmt::hwio, fmt::OIhw8i8o, {17, 23, 2, 3}}, |
146 | cfg_f32 {fmt::OIhw8i8o, fmt::hwio, {17, 23, 2, 3}})); |
147 | |
148 | CPU_INSTANTIATE_TEST_SUITE_P(Weights_3d, reorder_simple_test_f32_f32, |
149 | ::testing::Values( |
150 | cfg_f32 {fmt::oidhw, fmt::OIdhw8i8o, {16, 24, 2, 3, 3}}, |
151 | cfg_f32 {fmt::OIdhw8i8o, fmt::oidhw, {16, 24, 2, 3, 3}}, |
152 | cfg_f32 {fmt::oidhw, fmt::OIdhw8o8i, {16, 24, 2, 3, 3}}, |
153 | cfg_f32 {fmt::OIdhw8o8i, fmt::oidhw, {16, 24, 2, 3, 3}}, |
154 | cfg_f32 {fmt::oidhw, fmt::OIdhw8o4i, {16, 24, 2, 3, 3}}, |
155 | cfg_f32 {fmt::OIdhw8o4i, fmt::oidhw, {16, 24, 2, 3, 3}}, |
156 | cfg_f32 {fmt::dhwio, fmt::OIdhw8i8o, {16, 24, 2, 3, 3}}, |
157 | cfg_f32 {fmt::OIdhw8i8o, fmt::dhwio, {16, 24, 2, 3, 3}}, |
158 | cfg_f32 {fmt::goidhw, fmt::gOdhwi8o, {2, 16, 24, 2, 2, 3}}, |
159 | cfg_f32 {fmt::gOdhwi8o, fmt::goidhw, {2, 16, 24, 3, 2, 3}}, |
160 | cfg_f32 {fmt::goidhw, fmt::gOIdhw8i8o, {2, 16, 24, 2, 2, 3}}, |
161 | cfg_f32 {fmt::gOIdhw8i8o, fmt::goidhw, {2, 16, 24, 3, 2, 3}}, |
162 | cfg_f32 {fmt::goidhw, fmt::gOIdhw8o8i, {2, 16, 24, 2, 2, 3}}, |
163 | cfg_f32 {fmt::gOIdhw8o8i, fmt::goidhw, {2, 16, 24, 3, 2, 3}}, |
164 | cfg_f32 {fmt::giodhw, fmt::gOIdhw8o8i, {2, 16, 24, 2, 2, 3}}, |
165 | cfg_f32 {fmt::gOIdhw8o4i, fmt::goidhw, {2, 16, 24, 3, 2, 3}}, |
166 | cfg_f32 {fmt::giodhw, fmt::gOIdhw8o4i, {2, 16, 24, 2, 2, 3}}, |
167 | cfg_f32 {fmt::goidhw, fmt::giodhw, {2, 16, 24, 3, 2, 3}}, |
168 | cfg_f32 {fmt::iodhw, fmt::OIdhw8o8i, {16, 24, 2, 2, 3}}, |
169 | // OIdhw16i16o and IOdhw16o16i |
170 | cfg_f32 {fmt::oidhw, fmt::OIdhw16i16o, {64, 48, 2, 3, 4}}, |
171 | cfg_f32 {fmt::OIdhw16i16o, fmt::oidhw, {64, 48, 2, 3, 4}}, |
172 | cfg_f32 {fmt::dhwio, fmt::OIdhw16i16o, {64, 48, 2, 3, 4}}, |
173 | cfg_f32 {fmt::OIdhw16i16o, fmt::dhwio, {64, 48, 2, 3, 4}}, |
174 | cfg_f32 {fmt::oidhw, fmt::IOdhw16o16i, {64, 48, 2, 3, 4}}, |
175 | cfg_f32 {fmt::IOdhw16o16i, fmt::oidhw, {64, 48, 2, 3, 4}}, |
176 | cfg_f32 {fmt::dhwio, fmt::IOdhw16o16i, {64, 48, 2, 3, 4}}, |
177 | cfg_f32 {fmt::IOdhw16o16i, fmt::dhwio, {64, 48, 2, 3, 4}}, |
178 | cfg_f32 {fmt::OIdhw16i16o, fmt::IOdhw16o16i, {64, 48, 2, 3, 4}}, |
179 | cfg_f32 {fmt::IOdhw16o16i, fmt::OIdhw16i16o, {64, 48, 2, 3, 4}}, |
180 | // gOIdhw16i16o and gIOdhw16o16i |
181 | cfg_f32 {fmt::goidhw, fmt::gOIdhw16i16o, {2, 64, 96, 2, 3, 4}}, |
182 | cfg_f32 {fmt::gOIdhw16i16o, fmt::goidhw, {2, 64, 96, 2, 3, 4}}, |
183 | cfg_f32 {fmt::goidhw, fmt::gIOdhw16o16i, {2, 64, 96, 2, 3, 4}}, |
184 | cfg_f32 {fmt::gIOdhw16o16i, fmt::goidhw, {2, 64, 96, 2, 3, 4}}, |
185 | cfg_f32 {fmt::gOIdhw16i16o, fmt::gIOdhw16o16i, |
186 | {2, 64, 96, 2, 3, 4}}, |
187 | cfg_f32 {fmt::gIOdhw16o16i, fmt::gOIdhw16i16o, |
188 | {2, 64, 96, 2, 3, 4}})); |
189 | |
190 | CPU_INSTANTIATE_TEST_SUITE_P(Data, reorder_simple_test_f32_f32, |
191 | ::testing::Values(cfg_f32 {fmt::nchw, fmt::nchw, {10, 10, 13, 13}}, |
192 | cfg_f32 {fmt::nchw, fmt::nhwc, {10, 10, 10, 10}}, |
193 | cfg_f32 {fmt::nhwc, fmt::nchw, {10, 10, 10, 10}}, |
194 | cfg_f32 {fmt::nchw, fmt::chwn, {28, 3, 10, 10}}, |
195 | cfg_f32 {fmt::chwn, fmt::nchw, {28, 3, 10, 10}}, |
196 | cfg_f32 {fmt::nhwc, fmt::nhwc, {10, 10, 13, 13}}, |
197 | cfg_f32 {fmt::nchw, fmt::nChw8c, {2, 32, 4, 4}}, |
198 | cfg_f32 {fmt::nChw8c, fmt::nchw, {2, 32, 4, 4}}, |
199 | cfg_f32 {fmt::chwn, fmt::nChw8c, {28, 96, 10, 10}}, |
200 | cfg_f32 {fmt::nChw8c, fmt::chwn, {28, 96, 10, 10}}, |
201 | cfg_f32 {fmt::nhwc, fmt::nChw8c, {3, 64, 16, 16}}, |
202 | cfg_f32 {fmt::nChw8c, fmt::nhwc, {3, 64, 16, 16}}, |
203 | cfg_f32 {fmt::nChw8c, fmt::nChw16c, {10, 96, 27, 27}}, |
204 | cfg_f32 {fmt::nChw16c, fmt::nChw8c, {10, 96, 27, 27}}, |
205 | cfg_f32 {fmt::nchw, fmt::nChw16c, {2, 64, 4, 4}}, |
206 | cfg_f32 {fmt::nChw16c, fmt::nchw, {2, 64, 4, 4}}, |
207 | cfg_f32 {fmt::chwn, fmt::nChw16c, {28, 96, 10, 10}}, |
208 | cfg_f32 {fmt::nChw16c, fmt::chwn, {28, 96, 10, 10}}, |
209 | cfg_f32 {fmt::nhwc, fmt::nChw16c, {2, 64, 4, 4}}, |
210 | cfg_f32 {fmt::nChw16c, fmt::nhwc, {2, 64, 4, 4}}, |
211 | cfg_f32 {fmt::abcd, fmt::abdc, {10, 10, 10, 10}})); |
212 | |
213 | CPU_INSTANTIATE_TEST_SUITE_P(Weights_0, reorder_simple_test_f32_f32, |
214 | ::testing::Values(cfg_f32 {fmt::hwio, fmt::oihw, {32, 32, 3, 3}}, |
215 | cfg_f32 {fmt::oihw, fmt::hwio, {32, 32, 3, 3}}, |
216 | cfg_f32 {fmt::hwio, fmt::Ohwi8o, {32, 32, 3, 3}}, |
217 | cfg_f32 {fmt::Ohwi8o, fmt::hwio, {32, 32, 3, 3}}, |
218 | cfg_f32 {fmt::hwio, fmt::Ohwi16o, {64, 64, 3, 3}}, |
219 | cfg_f32 {fmt::Ohwi16o, fmt::hwio, {64, 64, 3, 3}}, |
220 | cfg_f32 {fmt::oihw, fmt::OIhw8i8o, {32, 32, 3, 3}}, |
221 | cfg_f32 {fmt::OIhw8i8o, fmt::oihw, {32, 32, 3, 3}}, |
222 | cfg_f32 {fmt::ihwo, fmt::OIhw8i8o, {32, 32, 3, 3}}, |
223 | cfg_f32 {fmt::OIhw8i8o, fmt::ihwo, {32, 32, 3, 3}}, |
224 | cfg_f32 {fmt::oihw, fmt::OIhw8o8i, {32, 32, 3, 3}}, |
225 | cfg_f32 {fmt::OIhw8o8i, fmt::oihw, {32, 32, 3, 3}}, |
226 | cfg_f32 {fmt::oihw, fmt::OIhw8o4i, {32, 32, 3, 3}}, |
227 | cfg_f32 {fmt::OIhw8o4i, fmt::oihw, {32, 32, 3, 3}}, |
228 | cfg_f32 {fmt::OIhw8i8o, fmt::OIhw8o8i, {32, 32, 3, 3}}, |
229 | cfg_f32 {fmt::OIhw8o8i, fmt::OIhw8i8o, {32, 32, 3, 3}}, |
230 | cfg_f32 {fmt::hwio, fmt::OIhw8i8o, {32, 32, 3, 3}}, |
231 | cfg_f32 {fmt::OIhw8i8o, fmt::hwio, {32, 32, 3, 3}}, |
232 | cfg_f32 {fmt::goihw, fmt::hwigo, {2, 32, 32, 3, 3}}, |
233 | cfg_f32 {fmt::hwigo, fmt::goihw, {2, 32, 32, 3, 3}}, |
234 | cfg_f32 {fmt::goihw, fmt::gOIhw8i8o, {2, 32, 32, 3, 3}}, |
235 | cfg_f32 {fmt::gOIhw8i8o, fmt::goihw, {2, 32, 32, 3, 3}}, |
236 | cfg_f32 {fmt::goihw, fmt::gOIhw8o8i, {2, 32, 32, 3, 3}}, |
237 | cfg_f32 {fmt::gOIhw8o8i, fmt::goihw, {2, 32, 32, 3, 3}}, |
238 | cfg_f32 {fmt::goihw, fmt::gOIhw8o4i, {2, 32, 32, 3, 3}}, |
239 | cfg_f32 {fmt::gOIhw8o4i, fmt::goihw, {2, 32, 32, 3, 3}}, |
240 | cfg_f32 {fmt::gOIhw8i8o, fmt::gOIhw8o8i, {2, 32, 32, 3, 3}}, |
241 | cfg_f32 {fmt::gOIhw8o8i, fmt::gOIhw8i8o, {2, 32, 32, 3, 3}}, |
242 | cfg_f32 {fmt::oihw, fmt::OIhw16i16o, {64, 64, 3, 3}}, |
243 | cfg_f32 {fmt::OIhw16i16o, fmt::oihw, {64, 64, 3, 3}}, |
244 | cfg_f32 {fmt::ihwo, fmt::OIhw16i16o, {64, 64, 3, 3}}, |
245 | cfg_f32 {fmt::OIhw16i16o, fmt::ihwo, {64, 64, 3, 3}}, |
246 | cfg_f32 {fmt::oihw, fmt::OIhw16o16i, {64, 64, 3, 3}}, |
247 | cfg_f32 {fmt::OIhw16o16i, fmt::oihw, {64, 64, 3, 3}}, |
248 | cfg_f32 {fmt::hwio, fmt::OIhw16i16o, {64, 64, 3, 3}}, |
249 | cfg_f32 {fmt::OIhw16i16o, fmt::hwio, {64, 64, 3, 3}}, |
250 | cfg_f32 {fmt::goihw, fmt::gOIhw16i16o, {2, 64, 64, 3, 3}}, |
251 | cfg_f32 {fmt::gOIhw16i16o, fmt::goihw, {2, 64, 64, 3, 3}}, |
252 | cfg_f32 {fmt::goihw, fmt::gOIhw16o16i, {2, 64, 64, 3, 3}}, |
253 | cfg_f32 {fmt::gOIhw16o16i, fmt::goihw, {2, 64, 64, 3, 3}}, |
254 | cfg_f32 {fmt::OIhw16i16o, fmt::OIhw16o16i, {64, 64, 3, 3}}, |
255 | cfg_f32 {fmt::OIhw16o16i, fmt::OIhw16i16o, {64, 64, 3, 3}}, |
256 | cfg_f32 {fmt::gOIhw16i16o, fmt::gOIhw16o16i, {2, 64, 64, 3, 3}}, |
257 | cfg_f32 {fmt::gOIhw16o16i, fmt::gOIhw16i16o, {2, 64, 64, 3, 3}}, |
258 | cfg_f32 {fmt::oihw, fmt::Oihw16o, {64, 64, 3, 3}}, |
259 | cfg_f32 {fmt::Oihw16o, fmt::oihw, {64, 64, 3, 3}}, |
260 | cfg_f32 {fmt::goihw, fmt::gOihw16o, {2, 64, 64, 3, 3}}, |
261 | cfg_f32 {fmt::gOihw16o, fmt::goihw, {2, 64, 64, 3, 3}}, |
262 | cfg_f32 {fmt::Ohwi16o, fmt::Oihw16o, {64, 64, 3, 3}}, |
263 | cfg_f32 {fmt::Oihw16o, fmt::Ohwi16o, {64, 64, 3, 3}}, |
264 | cfg_f32 {fmt::gOhwi16o, fmt::gOihw16o, {2, 64, 64, 3, 3}}, |
265 | cfg_f32 {fmt::gOihw16o, fmt::gOhwi16o, {2, 64, 64, 3, 3}}, |
266 | cfg_f32 {fmt::goihw, fmt::Goihw8g, {16, 16, 16, 3, 3}}, |
267 | cfg_f32 {fmt::Goihw8g, fmt::goihw, {16, 16, 16, 3, 3}})); |
268 | |
269 | CPU_INSTANTIATE_TEST_SUITE_P(Weights_1, reorder_simple_test_f32_f32, |
270 | ::testing::Values( |
271 | cfg_f32 {fmt::goihw, fmt::Goihw16g, {32, 32, 32, 3, 3}}, |
272 | cfg_f32 {fmt::Goihw16g, fmt::goihw, {32, 32, 32, 3, 3}}, |
273 | cfg_f32 {fmt::goihw, fmt::hwioG16g, {32, 32, 32, 3, 3}}, |
274 | cfg_f32 {fmt::hwioG16g, fmt::goihw, {32, 32, 32, 3, 3}}, |
275 | cfg_f32 {fmt::goihw, fmt::hwioG8g, {32, 32, 32, 3, 3}}, |
276 | cfg_f32 {fmt::hwioG8g, fmt::goihw, {32, 32, 32, 3, 3}}, |
277 | cfg_f32 {fmt::oihw, fmt::iohw, {32, 32, 3, 3}}, |
278 | cfg_f32 {fmt::iohw, fmt::oihw, {32, 32, 3, 3}}, |
279 | cfg_f32 {fmt::goihw, fmt::giohw, {2, 32, 32, 3, 3}}, |
280 | cfg_f32 {fmt::giohw, fmt::goihw, {2, 32, 32, 3, 3}})); |
281 | |
282 | CPU_INSTANTIATE_TEST_SUITE_P(Weights_IOhw16o16i, reorder_simple_test_f32_f32, |
283 | ::testing::Values(cfg_f32 {fmt::oihw, fmt::IOhw16o16i, {64, 64, 3, 3}}, |
284 | cfg_f32 {fmt::IOhw16o16i, fmt::oihw, {64, 64, 3, 3}}, |
285 | cfg_f32 {fmt::OIhw16i16o, fmt::IOhw16o16i, {64, 64, 3, 3}}, |
286 | cfg_f32 {fmt::IOhw16o16i, fmt::OIhw16i16o, {64, 64, 3, 3}}, |
287 | cfg_f32 {fmt::goihw, fmt::gOIhw16o16i, {2, 64, 64, 3, 3}}, |
288 | cfg_f32 {fmt::gIOhw16o16i, fmt::goihw, {2, 64, 64, 3, 3}}, |
289 | cfg_f32 {fmt::gOIhw16i16o, fmt::gIOhw16o16i, {2, 64, 64, 3, 3}}, |
290 | cfg_f32 {fmt::gIOhw16o16i, fmt::gOIhw16i16o, |
291 | {2, 64, 64, 3, 3}})); |
292 | |
293 | CPU_INSTANTIATE_TEST_SUITE_P(Simple, reorder_simple_test_s32_s32, |
294 | ::testing::Values(cfg_s32 {fmt::nchw, fmt::nChw16c, {2, 64, 4, 4}}, |
295 | cfg_s32 {fmt::nChw16c, fmt::nchw, {2, 64, 4, 4}})); |
296 | |
297 | CPU_INSTANTIATE_TEST_SUITE_P(Simple, reorder_simple_test_s8_s8, |
298 | ::testing::Values(cfg_s8 {fmt::oihw, fmt::OIhw4i16o4i, {64, 64, 3, 3}}, |
299 | cfg_s8 {fmt::OIhw4i16o4i, fmt::oihw, {64, 64, 3, 3}}, |
300 | cfg_s8 {fmt::goihw, fmt::gOIhw4i16o4i, {2, 64, 64, 3, 3}}, |
301 | cfg_s8 {fmt::gOIhw4i16o4i, fmt::goihw, {2, 64, 64, 3, 3}})); |
302 | |
303 | GPU_INSTANTIATE_TEST_SUITE_P(Data, reorder_simple_test_f32_f32, |
304 | ::testing::Values(cfg_f32 {fmt::nchw, fmt::nhwc, {2, 48, 5, 4}}, |
305 | cfg_f32 {fmt::nchw, fmt::NChw16n16c, {64, 32, 5, 6}}, |
306 | cfg_f32 {fmt::nChw16c, fmt::NChw16n16c, {32, 48, 6, 9}}, |
307 | cfg_f32 {fmt::ncdhw, fmt::ndhwc, {2, 48, 2, 5, 4}}, |
308 | cfg_f32 {fmt::ncdhw, fmt::NCdhw16n16c, {32, 32, 2, 5, 6}}, |
309 | cfg_f32 {fmt::nCdhw16c, fmt::NCdhw16n16c, {32, 48, 2, 6, 9}})); |
310 | |
311 | GPU_INSTANTIATE_TEST_SUITE_P(Data_1D, reorder_simple_test_f32_f32, |
312 | ::testing::Values(cfg_f32 {fmt::ncw, fmt::nCw16c, {2, 48, 7}}, |
313 | cfg_f32 {fmt::nCw16c, fmt::ncw, {2, 48, 7}}, |
314 | cfg_f32 {fmt::ncw, fmt::NCw16n16c, {32, 48, 7}}, |
315 | cfg_f32 {fmt::NCw16n16c, fmt::ncw, {32, 48, 7}}, |
316 | cfg_f32 {fmt::nCw16c, fmt::NCw16n16c, {32, 48, 7}}, |
317 | cfg_f32 {fmt::NCw16n16c, fmt::nCw16c, {32, 48, 7}})); |
318 | |
319 | GPU_INSTANTIATE_TEST_SUITE_P(PaddedData, reorder_simple_test_f32_f32, |
320 | ::testing::Values(cfg_f32 {fmt::nchw, fmt::nChw8c, {2, 28, 5, 4}}, |
321 | cfg_f32 {fmt::nChw8c, fmt::nchw, {2, 28, 5, 4}}, |
322 | cfg_f32 {fmt::nchw, fmt::nChw16c, {2, 28, 5, 4}}, |
323 | cfg_f32 {fmt::nChw16c, fmt::nchw, {2, 28, 5, 4}})); |
324 | |
325 | GPU_INSTANTIATE_TEST_SUITE_P(Weights, reorder_simple_test_f32_f32, |
326 | ::testing::Values(cfg_f32 {fmt::oihw, fmt::IOhw16i16o, {32, 48, 2, 3}}, |
327 | cfg_f32 {fmt::oihw, fmt::OIhw16o16i, {32, 32, 2, 2}}, |
328 | cfg_f32 {fmt::hwigo, fmt::gIOhw16i16o, {2, 64, 32, 2, 3}}, |
329 | cfg_f32 {fmt::goihw, fmt::gOIhw16o16i, {2, 32, 64, 2, 3}}, |
330 | cfg_f32 {fmt::OIhw16o16i, fmt::IOhw16i16o, {32, 48, 2, 3}}, |
331 | cfg_f32 {fmt::gOIhw16o16i, fmt::gIOhw16i16o, {2, 64, 32, 3, 2}}, |
332 | cfg_f32 {fmt::oidhw, fmt::OIdhw16i16o, {64, 32, 3, 9, 5}}, |
333 | cfg_f32 { |
334 | fmt::goidhw, fmt::gOIdhw16i16o, {2, 32, 64, 2, 2, 7}})); |
335 | |
336 | GPU_INSTANTIATE_TEST_SUITE_P(weights_1D, reorder_simple_test_f32_f32, |
337 | ::testing::Values(cfg_f32 {fmt::oiw, fmt::OIw8i16o2i, {32, 48, 7}}, |
338 | cfg_f32 {fmt::OIw8i16o2i, fmt::oiw, {32, 48, 7}}, |
339 | cfg_f32 {fmt::goiw, fmt::gOIw8i16o2i, {8, 32, 48, 7}}, |
340 | cfg_f32 {fmt::gOIw8i16o2i, fmt::goiw, {8, 32, 48, 7}}, |
341 | cfg_f32 {fmt::oiw, fmt::OIw16i16o, {32, 48, 7}}, |
342 | cfg_f32 {fmt::OIw16i16o, fmt::oiw, {32, 48, 7}}, |
343 | cfg_f32 {fmt::oiw, fmt::OIw8o4i, {32, 48, 7}}, |
344 | cfg_f32 {fmt::OIw8o4i, fmt::oiw, {32, 48, 7}}, |
345 | cfg_f32 {fmt::goiw, fmt::gOIw16i16o, {8, 32, 48, 7}}, |
346 | cfg_f32 {fmt::gOIw16i16o, fmt::goiw, {8, 32, 48, 7}}, |
347 | cfg_f32 {fmt::goiw, fmt::gOIw8o4i, {8, 32, 48, 7}}, |
348 | cfg_f32 {fmt::gOIw8o4i, fmt::goiw, {8, 32, 48, 7}}, |
349 | cfg_f32 {fmt::oiw, fmt::Oiw16o, {32, 48, 7}}, |
350 | cfg_f32 {fmt::Oiw16o, fmt::oiw, {32, 48, 7}}, |
351 | cfg_f32 {fmt::goiw, fmt::gOiw16o, {8, 32, 48, 7}}, |
352 | cfg_f32 {fmt::gOiw16o, fmt::goiw, {8, 32, 48, 7}}, |
353 | cfg_f32 {fmt::oiw, fmt::IOw16i16o, {32, 48, 7}}, |
354 | cfg_f32 {fmt::IOw16i16o, fmt::oiw, {32, 48, 7}}, |
355 | cfg_f32 {fmt::goiw, fmt::gIOw16i16o, {8, 32, 48, 7}}, |
356 | cfg_f32 {fmt::gIOw16i16o, fmt::goiw, {8, 32, 48, 7}})); |
357 | |
358 | GPU_INSTANTIATE_TEST_SUITE_P(PaddedWeights, reorder_simple_test_f32_f32, |
359 | ::testing::Values(cfg_f32 {fmt::oihw, fmt::IOhw16i16o, {17, 23, 2, 1}}, |
360 | cfg_f32 {fmt::goihw, fmt::gOIhw16o16i, {2, 17, 23, 1, 2}})); |
361 | |
362 | } // namespace dnnl |
363 | |