convnd_bwd_data.cpp 12.5 KB
Newer Older
Chao Liu's avatar
Chao Liu committed
1
2
3
// SPDX-License-Identifier: MIT
// Copyright (c) 2018-2022, Advanced Micro Devices, Inc. All rights reserved.

4
5
6
7
8
9
#include <iostream>
#include <numeric>
#include <initializer_list>
#include <cstdlib>
#include <vector>

10
#include "profiler/include/profile_conv_bwd_data_impl.hpp"
11
12
13
14

int main()
{
    bool pass = true;
15
16
17

    std::vector<ck::tensor_operation::device::ConvParams> params;

18
19
20
21
22
23
24
    // check 1d
    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)
    {
Chao Liu's avatar
Chao Liu committed
25
        // fp32
26
27
28
29
30
31
32
33
34
35
36
37
        pass &= ck::profiler::profile_conv_bwd_data_impl<1,
                                                         ck::tensor_layout::convolution::NWC,
                                                         ck::tensor_layout::convolution::KXC,
                                                         ck::tensor_layout::convolution::NWK,
                                                         float,
                                                         float,
                                                         float>(true,  // do_verification
                                                                1,     // init_method
                                                                false, // do_log
                                                                false, // time_kernel
                                                                param);

Chao Liu's avatar
Chao Liu committed
38
        // fp16
39
40
41
42
43
44
45
46
47
48
49
50
        pass &= ck::profiler::profile_conv_bwd_data_impl<1,
                                                         ck::tensor_layout::convolution::NWC,
                                                         ck::tensor_layout::convolution::KXC,
                                                         ck::tensor_layout::convolution::NWK,
                                                         ck::half_t,
                                                         ck::half_t,
                                                         ck::half_t>(true,  // do_verification
                                                                     1,     // init_method
                                                                     false, // do_log
                                                                     false, // time_kernel
                                                                     param);

Chao Liu's avatar
Chao Liu committed
51
        // bf16
52
53
54
55
56
57
58
59
60
61
62
63
        pass &= ck::profiler::profile_conv_bwd_data_impl<1,
                                                         ck::tensor_layout::convolution::NWC,
                                                         ck::tensor_layout::convolution::KXC,
                                                         ck::tensor_layout::convolution::NWK,
                                                         ck::bhalf_t,
                                                         ck::bhalf_t,
                                                         ck::bhalf_t>(true,  // do_verification
                                                                      1,     // init_method
                                                                      false, // do_log
                                                                      false, // time_kernel
                                                                      param);

Chao Liu's avatar
Chao Liu committed
64
        // int8
65
66
67
68
69
70
71
72
73
74
75
        pass &= ck::profiler::profile_conv_bwd_data_impl<1,
                                                         ck::tensor_layout::convolution::NWC,
                                                         ck::tensor_layout::convolution::KXC,
                                                         ck::tensor_layout::convolution::NWK,
                                                         int8_t,
                                                         int8_t,
                                                         int8_t>(true,  // do_verification
                                                                 1,     // init_method
                                                                 false, // do_log
                                                                 false, // time_kernel
                                                                 param);
76
77
78
79
80
81
82
83
84
85
    }

    // 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)
    {
Chao Liu's avatar
Chao Liu committed
86
        // fp32
87
88
89
90
91
92
93
94
95
96
97
98
        pass &= ck::profiler::profile_conv_bwd_data_impl<2,
                                                         ck::tensor_layout::convolution::NHWC,
                                                         ck::tensor_layout::convolution::KYXC,
                                                         ck::tensor_layout::convolution::NHWK,
                                                         float,
                                                         float,
                                                         float>(true,  // do_verification
                                                                1,     // init_method
                                                                false, // do_log
                                                                false, // time_kernel
                                                                param);

Chao Liu's avatar
Chao Liu committed
99
        // fp16
100
101
102
103
104
105
106
107
108
109
110
111
        pass &= ck::profiler::profile_conv_bwd_data_impl<2,
                                                         ck::tensor_layout::convolution::NHWC,
                                                         ck::tensor_layout::convolution::KYXC,
                                                         ck::tensor_layout::convolution::NHWK,
                                                         ck::half_t,
                                                         ck::half_t,
                                                         ck::half_t>(true,  // do_verification
                                                                     1,     // init_method
                                                                     false, // do_log
                                                                     false, // time_kernel
                                                                     param);

Chao Liu's avatar
Chao Liu committed
112
        // bf16
113
114
115
116
117
118
119
120
121
122
123
124
        pass &= ck::profiler::profile_conv_bwd_data_impl<2,
                                                         ck::tensor_layout::convolution::NHWC,
                                                         ck::tensor_layout::convolution::KYXC,
                                                         ck::tensor_layout::convolution::NHWK,
                                                         ck::bhalf_t,
                                                         ck::bhalf_t,
                                                         ck::bhalf_t>(true,  // do_verification
                                                                      1,     // init_method
                                                                      false, // do_log
                                                                      false, // time_kernel
                                                                      param);

Chao Liu's avatar
Chao Liu committed
125
        // int8
126
127
128
129
130
131
132
133
134
135
136
        pass &= ck::profiler::profile_conv_bwd_data_impl<2,
                                                         ck::tensor_layout::convolution::NHWC,
                                                         ck::tensor_layout::convolution::KYXC,
                                                         ck::tensor_layout::convolution::NHWK,
                                                         int8_t,
                                                         int8_t,
                                                         int8_t>(true,  // do_verification
                                                                 1,     // init_method
                                                                 false, // do_log
                                                                 false, // time_kernel
                                                                 param);
137
138
139
140
141
142
143
144
145
146
147
148
149
    }

    // 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)
    {
Chao Liu's avatar
Chao Liu committed
150
        // fp32
151
152
153
154
155
156
157
158
159
160
161
162
        pass &= ck::profiler::profile_conv_bwd_data_impl<3,
                                                         ck::tensor_layout::convolution::NDHWC,
                                                         ck::tensor_layout::convolution::KZYXC,
                                                         ck::tensor_layout::convolution::NDHWK,
                                                         float,
                                                         float,
                                                         float>(true,  // do_verification
                                                                1,     // init_method
                                                                false, // do_log
                                                                false, // time_kernel
                                                                param);

Chao Liu's avatar
Chao Liu committed
163
        // fp16
164
165
166
167
168
169
170
171
172
173
174
175
        pass &= ck::profiler::profile_conv_bwd_data_impl<3,
                                                         ck::tensor_layout::convolution::NDHWC,
                                                         ck::tensor_layout::convolution::KZYXC,
                                                         ck::tensor_layout::convolution::NDHWK,
                                                         ck::half_t,
                                                         ck::half_t,
                                                         ck::half_t>(true,  // do_verification
                                                                     1,     // init_method
                                                                     false, // do_log
                                                                     false, // time_kernel
                                                                     param);

Chao Liu's avatar
Chao Liu committed
176
        // bf16
177
178
179
180
181
182
183
184
185
186
187
188
        pass &= ck::profiler::profile_conv_bwd_data_impl<3,
                                                         ck::tensor_layout::convolution::NDHWC,
                                                         ck::tensor_layout::convolution::KZYXC,
                                                         ck::tensor_layout::convolution::NDHWK,
                                                         ck::bhalf_t,
                                                         ck::bhalf_t,
                                                         ck::bhalf_t>(true,  // do_verification
                                                                      1,     // init_method
                                                                      false, // do_log
                                                                      false, // time_kernel
                                                                      param);

Chao Liu's avatar
Chao Liu committed
189
        // int8
190
191
192
193
194
195
196
197
198
199
200
        pass &= ck::profiler::profile_conv_bwd_data_impl<3,
                                                         ck::tensor_layout::convolution::NDHWC,
                                                         ck::tensor_layout::convolution::KZYXC,
                                                         ck::tensor_layout::convolution::NDHWK,
                                                         int8_t,
                                                         int8_t,
                                                         int8_t>(true,  // do_verification
                                                                 1,     // init_method
                                                                 false, // do_log
                                                                 false, // time_kernel
                                                                 param);
201
202
203
204
    }

    if(pass)
    {
Chao Liu's avatar
Chao Liu committed
205
        std::cout << "test convnd bwd data: Pass" << std::endl;
206
207
208
209
        return 0;
    }
    else
    {
Chao Liu's avatar
Chao Liu committed
210
        std::cout << "test convnd bwd data: Fail " << std::endl;
Chao Liu's avatar
Chao Liu committed
211
        return 1;
212
213
    }
}