"vscode:/vscode.git/clone" did not exist on "d4bc61609bb9263d6bd891166437853da8917320"
convnd_bwd_data.cpp 14.6 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <numeric>
#include <initializer_list>
#include <cstdlib>
#include <stdlib.h>
#include <half.hpp>
#include <vector>

#include "profile_convnd_bwd_data_impl.hpp"

int main()
{
    bool pass = true;
    // check 1d
15
    std::vector<ck::utils::conv::ConvParams> params;
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    params.push_back({1, 128, 128, 256, {1}, {14}, {2}, {1}, {0}, {0}});
    params.push_back({1, 128, 128, 256, {3}, {28}, {1}, {1}, {1}, {1}});
    params.push_back({1, 128, 128, 256, {1}, {3}, {1}, {1}, {0}, {0}});

    for(auto& param : params)
    {
        pass &= ck::profiler::profile_convnd_bwd_data_impl<1,
                                                           float,
                                                           float,
                                                           float,
                                                           float,
                                                           ck::tensor_layout::convolution::NWC,
                                                           ck::tensor_layout::convolution::KXC,
                                                           ck::tensor_layout::convolution::NWK>(
JD's avatar
JD committed
30
31
32
33
            true,  // do_verification
            1,     // init_method
            false, // do_log
            false, // time_kernel
Adam Osewski's avatar
Adam Osewski committed
34
35
36
37
38
            param.N_,
            param.K_,
            param.C_,
            param.input_spatial_lengths_,
            param.filter_spatial_lengths_,
39
            param.GetOutputSpatialLengths(),
Adam Osewski's avatar
Adam Osewski committed
40
41
42
43
            param.conv_filter_strides_,
            param.conv_filter_dilations_,
            param.input_left_pads_,
            param.input_right_pads_);
44
45
46
47
48
49
50
51
52

        pass &= ck::profiler::profile_convnd_bwd_data_impl<1,
                                                           ck::half_t,
                                                           ck::half_t,
                                                           ck::half_t,
                                                           float,
                                                           ck::tensor_layout::convolution::NWC,
                                                           ck::tensor_layout::convolution::KXC,
                                                           ck::tensor_layout::convolution::NWK>(
JD's avatar
JD committed
53
54
55
56
            true,  // do_verification
            1,     // init_method
            false, // do_log
            false, // time_kernel
Adam Osewski's avatar
Adam Osewski committed
57
58
59
60
61
            param.N_,
            param.K_,
            param.C_,
            param.input_spatial_lengths_,
            param.filter_spatial_lengths_,
62
            param.GetOutputSpatialLengths(),
Adam Osewski's avatar
Adam Osewski committed
63
64
65
66
            param.conv_filter_strides_,
            param.conv_filter_dilations_,
            param.input_left_pads_,
            param.input_right_pads_);
67
68
69
70
71
72
73
74
75

        pass &= ck::profiler::profile_convnd_bwd_data_impl<1,
                                                           ck::bhalf_t,
                                                           ck::bhalf_t,
                                                           ck::bhalf_t,
                                                           float,
                                                           ck::tensor_layout::convolution::NWC,
                                                           ck::tensor_layout::convolution::KXC,
                                                           ck::tensor_layout::convolution::NWK>(
JD's avatar
JD committed
76
77
78
79
            true,  // do_verification
            1,     // init_method
            false, // do_log
            false, // time_kernel
Adam Osewski's avatar
Adam Osewski committed
80
81
82
83
84
            param.N_,
            param.K_,
            param.C_,
            param.input_spatial_lengths_,
            param.filter_spatial_lengths_,
85
            param.GetOutputSpatialLengths(),
Adam Osewski's avatar
Adam Osewski committed
86
87
88
89
            param.conv_filter_strides_,
            param.conv_filter_dilations_,
            param.input_left_pads_,
            param.input_right_pads_);
90
91
92
93
94
95
96
97
98

        pass &= ck::profiler::profile_convnd_bwd_data_impl<1,
                                                           int8_t,
                                                           int8_t,
                                                           int8_t,
                                                           int,
                                                           ck::tensor_layout::convolution::NWC,
                                                           ck::tensor_layout::convolution::KXC,
                                                           ck::tensor_layout::convolution::NWK>(
JD's avatar
JD committed
99
100
101
102
            true,  // do_verification
            1,     // init_method
            false, // do_log
            false, // time_kernel
Adam Osewski's avatar
Adam Osewski committed
103
104
105
106
107
            param.N_,
            param.K_,
            param.C_,
            param.input_spatial_lengths_,
            param.filter_spatial_lengths_,
108
            param.GetOutputSpatialLengths(),
Adam Osewski's avatar
Adam Osewski committed
109
110
111
112
            param.conv_filter_strides_,
            param.conv_filter_dilations_,
            param.input_left_pads_,
            param.input_right_pads_);
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
    }

    // check 2d
    params.clear();
    params.push_back({2, 128, 128, 256, {1, 1}, {7, 7}, {2, 2}, {1, 1}, {0, 0}, {0, 0}});
    params.push_back({2, 128, 128, 256, {3, 3}, {14, 14}, {1, 1}, {1, 1}, {1, 1}, {1, 1}});
    params.push_back({2, 128, 128, 256, {1, 1}, {3, 3}, {1, 1}, {1, 1}, {0, 0}, {0, 0}});

    for(auto& param : params)
    {
        pass &= ck::profiler::profile_convnd_bwd_data_impl<2,
                                                           float,
                                                           float,
                                                           float,
                                                           float,
                                                           ck::tensor_layout::convolution::NHWC,
                                                           ck::tensor_layout::convolution::KYXC,
                                                           ck::tensor_layout::convolution::NHWK>(
JD's avatar
JD committed
131
132
133
134
            true,  // do_verification
            1,     // init_method
            false, // do_log
            false, // time_kernel
Adam Osewski's avatar
Adam Osewski committed
135
136
137
138
139
            param.N_,
            param.K_,
            param.C_,
            param.input_spatial_lengths_,
            param.filter_spatial_lengths_,
140
            param.GetOutputSpatialLengths(),
Adam Osewski's avatar
Adam Osewski committed
141
142
143
144
            param.conv_filter_strides_,
            param.conv_filter_dilations_,
            param.input_left_pads_,
            param.input_right_pads_);
145
146
147
148
149
150
151
152
153

        pass &= ck::profiler::profile_convnd_bwd_data_impl<2,
                                                           ck::half_t,
                                                           ck::half_t,
                                                           ck::half_t,
                                                           float,
                                                           ck::tensor_layout::convolution::NHWC,
                                                           ck::tensor_layout::convolution::KYXC,
                                                           ck::tensor_layout::convolution::NHWK>(
JD's avatar
JD committed
154
155
156
157
            true,  // do_verification
            1,     // init_method
            false, // do_log
            false, // time_kernel
Adam Osewski's avatar
Adam Osewski committed
158
159
160
161
162
            param.N_,
            param.K_,
            param.C_,
            param.input_spatial_lengths_,
            param.filter_spatial_lengths_,
163
            param.GetOutputSpatialLengths(),
Adam Osewski's avatar
Adam Osewski committed
164
165
166
167
            param.conv_filter_strides_,
            param.conv_filter_dilations_,
            param.input_left_pads_,
            param.input_right_pads_);
168
169
170
171
172
173
174
175
176

        pass &= ck::profiler::profile_convnd_bwd_data_impl<2,
                                                           ck::bhalf_t,
                                                           ck::bhalf_t,
                                                           ck::bhalf_t,
                                                           float,
                                                           ck::tensor_layout::convolution::NHWC,
                                                           ck::tensor_layout::convolution::KYXC,
                                                           ck::tensor_layout::convolution::NHWK>(
JD's avatar
JD committed
177
178
179
180
            true,  // do_verification
            1,     // init_method
            false, // do_log
            false, // time_kernel
Adam Osewski's avatar
Adam Osewski committed
181
182
183
184
185
            param.N_,
            param.K_,
            param.C_,
            param.input_spatial_lengths_,
            param.filter_spatial_lengths_,
186
            param.GetOutputSpatialLengths(),
Adam Osewski's avatar
Adam Osewski committed
187
188
189
190
            param.conv_filter_strides_,
            param.conv_filter_dilations_,
            param.input_left_pads_,
            param.input_right_pads_);
191
192
193
194
195
196
197
198
199

        pass &= ck::profiler::profile_convnd_bwd_data_impl<2,
                                                           int8_t,
                                                           int8_t,
                                                           int8_t,
                                                           int,
                                                           ck::tensor_layout::convolution::NHWC,
                                                           ck::tensor_layout::convolution::KYXC,
                                                           ck::tensor_layout::convolution::NHWK>(
JD's avatar
JD committed
200
201
202
203
            true,  // do_verification
            1,     // init_method
            false, // do_log
            false, // time_kernel
Adam Osewski's avatar
Adam Osewski committed
204
205
206
207
208
            param.N_,
            param.K_,
            param.C_,
            param.input_spatial_lengths_,
            param.filter_spatial_lengths_,
209
            param.GetOutputSpatialLengths(),
Adam Osewski's avatar
Adam Osewski committed
210
211
212
213
            param.conv_filter_strides_,
            param.conv_filter_dilations_,
            param.input_left_pads_,
            param.input_right_pads_);
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
    }

    // check 3d
    params.clear();
    params.push_back(
        {3, 128, 128, 256, {1, 1, 1}, {7, 7, 7}, {2, 2, 2}, {1, 1, 1}, {0, 0, 0}, {0, 0, 0}});
    params.push_back(
        {3, 128, 128, 256, {3, 3, 3}, {14, 14, 14}, {1, 1, 1}, {1, 1, 1}, {1, 1, 1}, {1, 1, 1}});
    params.push_back(
        {3, 128, 128, 256, {1, 1, 1}, {3, 3, 3}, {1, 1, 1}, {1, 1, 1}, {0, 0, 0}, {0, 0, 0}});

    for(auto& param : params)
    {
        pass &= ck::profiler::profile_convnd_bwd_data_impl<3,
                                                           float,
                                                           float,
                                                           float,
                                                           float,
                                                           ck::tensor_layout::convolution::NDHWC,
                                                           ck::tensor_layout::convolution::KZYXC,
                                                           ck::tensor_layout::convolution::NDHWK>(
JD's avatar
JD committed
235
236
237
238
            true,  // do_verification
            1,     // init_method
            false, // do_log
            false, // time_kernel
Adam Osewski's avatar
Adam Osewski committed
239
240
241
242
243
            param.N_,
            param.K_,
            param.C_,
            param.input_spatial_lengths_,
            param.filter_spatial_lengths_,
244
            param.GetOutputSpatialLengths(),
Adam Osewski's avatar
Adam Osewski committed
245
246
247
248
            param.conv_filter_strides_,
            param.conv_filter_dilations_,
            param.input_left_pads_,
            param.input_right_pads_);
249
250
251
252
253
254
255
256
257

        pass &= ck::profiler::profile_convnd_bwd_data_impl<3,
                                                           ck::half_t,
                                                           ck::half_t,
                                                           ck::half_t,
                                                           float,
                                                           ck::tensor_layout::convolution::NDHWC,
                                                           ck::tensor_layout::convolution::KZYXC,
                                                           ck::tensor_layout::convolution::NDHWK>(
JD's avatar
JD committed
258
259
260
261
            true,  // do_verification
            1,     // init_method
            false, // do_log
            false, // time_kernel
Adam Osewski's avatar
Adam Osewski committed
262
263
264
265
266
            param.N_,
            param.K_,
            param.C_,
            param.input_spatial_lengths_,
            param.filter_spatial_lengths_,
267
            param.GetOutputSpatialLengths(),
Adam Osewski's avatar
Adam Osewski committed
268
269
270
271
            param.conv_filter_strides_,
            param.conv_filter_dilations_,
            param.input_left_pads_,
            param.input_right_pads_);
272
273
274
275
276
277
278
279
280

        pass &= ck::profiler::profile_convnd_bwd_data_impl<3,
                                                           ck::bhalf_t,
                                                           ck::bhalf_t,
                                                           ck::bhalf_t,
                                                           float,
                                                           ck::tensor_layout::convolution::NDHWC,
                                                           ck::tensor_layout::convolution::KZYXC,
                                                           ck::tensor_layout::convolution::NDHWK>(
JD's avatar
JD committed
281
282
283
284
            true,  // do_verification
            1,     // init_method
            false, // do_log
            false, // time_kernel
Adam Osewski's avatar
Adam Osewski committed
285
286
287
288
289
            param.N_,
            param.K_,
            param.C_,
            param.input_spatial_lengths_,
            param.filter_spatial_lengths_,
290
            param.GetOutputSpatialLengths(),
Adam Osewski's avatar
Adam Osewski committed
291
292
293
294
            param.conv_filter_strides_,
            param.conv_filter_dilations_,
            param.input_left_pads_,
            param.input_right_pads_);
295
296
297
298
299
300
301
302
303

        pass &= ck::profiler::profile_convnd_bwd_data_impl<3,
                                                           int8_t,
                                                           int8_t,
                                                           int8_t,
                                                           int,
                                                           ck::tensor_layout::convolution::NDHWC,
                                                           ck::tensor_layout::convolution::KZYXC,
                                                           ck::tensor_layout::convolution::NDHWK>(
JD's avatar
JD committed
304
305
306
307
            true,  // do_verification
            1,     // init_method
            false, // do_log
            false, // time_kernel
Adam Osewski's avatar
Adam Osewski committed
308
309
310
311
312
            param.N_,
            param.K_,
            param.C_,
            param.input_spatial_lengths_,
            param.filter_spatial_lengths_,
313
            param.GetOutputSpatialLengths(),
Adam Osewski's avatar
Adam Osewski committed
314
315
316
317
            param.conv_filter_strides_,
            param.conv_filter_dilations_,
            param.input_left_pads_,
            param.input_right_pads_);
318
319
320
321
322
323
324
325
326
327
328
329
330
    }

    if(pass)
    {
        std::cout << "test convnd bwd : Pass" << std::endl;
        return 0;
    }
    else
    {
        std::cout << "test convnd bwd: Fail " << std::endl;
        return -1;
    }
}