tensor_layout.hpp Source File

tensor_layout.hpp Source File#

Composable Kernel: tensor_layout.hpp Source File
tensor_operation/gpu/device/tensor_layout.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2018-2024, Advanced Micro Devices, Inc. All rights reserved.
3
4#pragma once
5
6namespace ck {
7namespace tensor_layout {
8
10{
11 static constexpr const char* name = "BaseTensorLayout";
12};
13
15{
16 static constexpr const char* name = "BypassLayoutVerification";
17};
18
19namespace gemm {
20
22{
23 static constexpr const char* name = "BaseConvolutionLayout";
24};
25struct RowMajor : public BaseGemmLayout
26{
27 static constexpr const char* name = "RowMajor";
28};
29
31{
32 static constexpr const char* name = "ColumnMajor";
33};
34
35struct MFMA : public BaseGemmLayout
36{
37 static constexpr const char* name = "MFMA";
38};
39
40} // namespace gemm
41
42namespace convolution {
43
45{
46 static constexpr const char* name = "BaseConvolutionLayout";
47};
48
49// input tensor
50// packed NCW/NCHW/NCDHW
52{
53 static constexpr const char* name = "NCW";
54};
55
57{
58 static constexpr const char* name = "NCHW";
59};
60
62{
63 static constexpr const char* name = "NCDHW";
64};
65
66// packed GNCW/GNCHW/GNCDHW
68{
69 static constexpr const char* name = "GNCW";
70};
71
73{
74 static constexpr const char* name = "GNCHW";
75};
76
78{
79 static constexpr const char* name = "GNCDHW";
80};
81
82// input tensor
83// packed NWC/NHWC/NDHWC
85{
86 static constexpr const char* name = "NWC";
87};
88
90{
91 static constexpr const char* name = "NHWC";
92};
93
95{
96 static constexpr const char* name = "NDHWC";
97};
98
99// input tensor
100// packed GNWC/GNHWC/GNDHWC
102{
103 static constexpr const char* name = "GNWC";
104};
105
107{
108 static constexpr const char* name = "GNHWC";
109};
110
112{
113 static constexpr const char* name = "GNDHWC";
114};
115
116// for input bias
118{
119 static constexpr const char* name = "GC";
120};
121
122// input tensor
123// packed NWGC/NHWGC/NDHWGC
125{
126 static constexpr const char* name = "NWGC";
127};
128
130{
131 static constexpr const char* name = "NHWGC";
132};
133
135{
136 static constexpr const char* name = "NDHWGC";
137};
138
139// input tensor
140// packed NGCW/NGCHW/NGCDHW
142{
143 static constexpr const char* name = "NGCW";
144};
145
147{
148 static constexpr const char* name = "NGCHW";
149};
150
152{
153 static constexpr const char* name = "NGCDHW";
154};
155
156// input tensor
157// strided layout
159{
160 static constexpr const char* name = "G_NW_C";
161};
162
164{
165 static constexpr const char* name = "G_NHW_C";
166};
167
169{
170 static constexpr const char* name = "G_NDHW_C";
171};
172
173// for input bias
175{
176 static constexpr const char* name = "G_C";
177};
178
179// weight tensor
180// packed KCX/KCYX/KCZYX
182{
183 static constexpr const char* name = "KCX";
184};
185
187{
188 static constexpr const char* name = "KCYX";
189};
190
192{
193 static constexpr const char* name = "KCZYX";
194};
195
196// weight tensor
197// packed KCX/KCYX/KCZYX
199{
200 static constexpr const char* name = "GKCX";
201};
202
204{
205 static constexpr const char* name = "GKCYX";
206};
207
209{
210 static constexpr const char* name = "GKCZYX";
211};
212
213// weight tensor
214// packed KXC/KYXC/KZYXC
216{
217 static constexpr const char* name = "KXC";
218};
219
221{
222 static constexpr const char* name = "KYXC";
223};
224
226{
227 static constexpr const char* name = "KZYXC";
228};
229
230// weight tensor
231// packed GKXC/GKYXC/GKZYXC
233{
234 static constexpr const char* name = "GKXC";
235};
236
238{
239 static constexpr const char* name = "GKYXC";
240};
241
243{
244 static constexpr const char* name = "GKZYXC";
245};
246
247// weight tensor
248// packed KXGC/KYXGC/KZYXGC
250{
251 static constexpr const char* name = "KXGC";
252};
253
255{
256 static constexpr const char* name = "KYXGC";
257};
258
260{
261 static constexpr const char* name = "KZYXGC";
262};
263
264// weight tensor
265// strided
267{
268 static constexpr const char* name = "G_K_X_C";
269};
270
272{
273 static constexpr const char* name = "G_K_YX_C";
274};
275
277{
278 static constexpr const char* name = "G_K_ZYX_C";
279};
280
281// output tensor
282// packed NKW/NKHW/NKDHW
284{
285 static constexpr const char* name = "NKW";
286};
287
289{
290 static constexpr const char* name = "NKHW";
291};
292
294{
295 static constexpr const char* name = "NKDHW";
296};
297
298// output tensor
299// packed GNKW/GNKHW/GNKDHW
301{
302 static constexpr const char* name = "GNKW";
303};
304
306{
307 static constexpr const char* name = "GNKHW";
308};
309
311{
312 static constexpr const char* name = "GNKDHW";
313};
314
315// output tensor
316// packed NWK/NHWK/NDHWK
318{
319 static constexpr const char* name = "NWK";
320};
321
323{
324 static constexpr const char* name = "NHWK";
325};
326
328{
329 static constexpr const char* name = "NDHWK";
330};
331
332// output tensor
333// packed GNWK/GNHWK/GNDHWK
335{
336 static constexpr const char* name = "GNWK";
337};
338
340{
341 static constexpr const char* name = "GNHWK";
342};
343
345{
346 static constexpr const char* name = "GNDHWK";
347};
348
349// output tensor
350// packed NWGK/NHWGK/NDHWGK
352{
353 static constexpr const char* name = "NWGK";
354};
355
357{
358 static constexpr const char* name = "NHWGK";
359};
360
362{
363 static constexpr const char* name = "NDHWGK";
364};
365
367{
368 static constexpr const char* name = "NGKW";
369};
370
372{
373 static constexpr const char* name = "NGKHW";
374};
375
377{
378 static constexpr const char* name = "NGKDHW";
379};
380
381// output tensor
382// strided layout
384{
385 static constexpr const char* name = "G_NW_K";
386};
387
389{
390 static constexpr const char* name = "G_NHW_K";
391};
392
394{
395 static constexpr const char* name = "G_NDHW_K";
396};
397
398// for output bias
400{
401 static constexpr const char* name = "G_K";
402};
403
404// K-reduced output tensor (packed)
406{
407 static constexpr const char* name = "GNW";
408};
409
411{
412 static constexpr const char* name = "GNHW";
413};
414
416{
417 static constexpr const char* name = "GNDHW";
418};
419
420// K-reduced output tensor (packed)
422{
423 static constexpr const char* name = "NWG";
424};
425
427{
428 static constexpr const char* name = "NHWG";
429};
430
432{
433 static constexpr const char* name = "NDHWG";
434};
435
436// K-reduced output tensor (strided)
438{
439 static constexpr const char* name = "G_NW";
440};
441
443{
444 static constexpr const char* name = "G_NHW";
445};
446
448{
449 static constexpr const char* name = "G_NDHW";
450};
451
452} // namespace convolution
453
454#if !defined(__HIPCC_RTC__) || !defined(CK_CODE_GEN_RTC)
455template <
456 typename Layout,
457 typename std::enable_if<std::is_base_of<BaseTensorLayout, Layout>::value, bool>::type = false>
458std::ostream& operator<<(std::ostream& os, const Layout&)
459{
460 os << Layout::name;
461 return os;
462}
463#endif
464
465} // namespace tensor_layout
466} // namespace ck
Definition tensor_operation/gpu/device/tensor_layout.hpp:42
Definition tensor_operation/gpu/device/tensor_layout.hpp:19
Definition tensor_operation/gpu/device/tensor_layout.hpp:7
std::ostream & operator<<(std::ostream &os, const Layout &)
Definition tensor_operation/gpu/device/tensor_layout.hpp:458
Definition ck.hpp:268
Layout wrapper that performs the tensor descriptor logic.
Definition layout.hpp:24
Definition tensor_operation/gpu/device/tensor_layout.hpp:10
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:11
Definition tensor_operation/gpu/device/tensor_layout.hpp:15
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:16
Definition tensor_operation/gpu/device/tensor_layout.hpp:45
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:46
Definition tensor_operation/gpu/device/tensor_layout.hpp:175
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:176
Definition tensor_operation/gpu/device/tensor_layout.hpp:267
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:268
Definition tensor_operation/gpu/device/tensor_layout.hpp:272
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:273
Definition tensor_operation/gpu/device/tensor_layout.hpp:277
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:278
Definition tensor_operation/gpu/device/tensor_layout.hpp:400
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:401
Definition tensor_operation/gpu/device/tensor_layout.hpp:169
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:170
Definition tensor_operation/gpu/device/tensor_layout.hpp:394
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:395
Definition tensor_operation/gpu/device/tensor_layout.hpp:448
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:449
Definition tensor_operation/gpu/device/tensor_layout.hpp:164
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:165
Definition tensor_operation/gpu/device/tensor_layout.hpp:389
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:390
Definition tensor_operation/gpu/device/tensor_layout.hpp:443
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:444
Definition tensor_operation/gpu/device/tensor_layout.hpp:159
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:160
Definition tensor_operation/gpu/device/tensor_layout.hpp:384
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:385
Definition tensor_operation/gpu/device/tensor_layout.hpp:438
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:439
Definition tensor_operation/gpu/device/tensor_layout.hpp:118
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:119
Definition tensor_operation/gpu/device/tensor_layout.hpp:199
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:200
Definition tensor_operation/gpu/device/tensor_layout.hpp:204
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:205
Definition tensor_operation/gpu/device/tensor_layout.hpp:209
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:210
Definition tensor_operation/gpu/device/tensor_layout.hpp:233
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:234
Definition tensor_operation/gpu/device/tensor_layout.hpp:238
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:239
Definition tensor_operation/gpu/device/tensor_layout.hpp:243
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:244
Definition tensor_operation/gpu/device/tensor_layout.hpp:78
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:79
Definition tensor_operation/gpu/device/tensor_layout.hpp:73
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:74
Definition tensor_operation/gpu/device/tensor_layout.hpp:68
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:69
Definition tensor_operation/gpu/device/tensor_layout.hpp:112
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:113
Definition tensor_operation/gpu/device/tensor_layout.hpp:416
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:417
Definition tensor_operation/gpu/device/tensor_layout.hpp:345
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:346
Definition tensor_operation/gpu/device/tensor_layout.hpp:107
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:108
Definition tensor_operation/gpu/device/tensor_layout.hpp:411
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:412
Definition tensor_operation/gpu/device/tensor_layout.hpp:340
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:341
Definition tensor_operation/gpu/device/tensor_layout.hpp:311
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:312
Definition tensor_operation/gpu/device/tensor_layout.hpp:306
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:307
Definition tensor_operation/gpu/device/tensor_layout.hpp:301
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:302
Definition tensor_operation/gpu/device/tensor_layout.hpp:102
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:103
Definition tensor_operation/gpu/device/tensor_layout.hpp:406
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:407
Definition tensor_operation/gpu/device/tensor_layout.hpp:335
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:336
Definition tensor_operation/gpu/device/tensor_layout.hpp:182
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:183
Definition tensor_operation/gpu/device/tensor_layout.hpp:187
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:188
Definition tensor_operation/gpu/device/tensor_layout.hpp:192
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:193
Definition tensor_operation/gpu/device/tensor_layout.hpp:216
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:217
Definition tensor_operation/gpu/device/tensor_layout.hpp:250
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:251
Definition tensor_operation/gpu/device/tensor_layout.hpp:221
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:222
Definition tensor_operation/gpu/device/tensor_layout.hpp:255
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:256
Definition tensor_operation/gpu/device/tensor_layout.hpp:226
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:227
Definition tensor_operation/gpu/device/tensor_layout.hpp:260
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:261
Definition tensor_operation/gpu/device/tensor_layout.hpp:62
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:63
Definition tensor_operation/gpu/device/tensor_layout.hpp:57
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:58
Definition tensor_operation/gpu/device/tensor_layout.hpp:52
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:53
Definition tensor_operation/gpu/device/tensor_layout.hpp:95
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:96
Definition tensor_operation/gpu/device/tensor_layout.hpp:135
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:136
Definition tensor_operation/gpu/device/tensor_layout.hpp:432
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:433
Definition tensor_operation/gpu/device/tensor_layout.hpp:362
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:363
Definition tensor_operation/gpu/device/tensor_layout.hpp:328
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:329
Definition tensor_operation/gpu/device/tensor_layout.hpp:152
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:153
Definition tensor_operation/gpu/device/tensor_layout.hpp:147
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:148
Definition tensor_operation/gpu/device/tensor_layout.hpp:142
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:143
Definition tensor_operation/gpu/device/tensor_layout.hpp:377
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:378
Definition tensor_operation/gpu/device/tensor_layout.hpp:372
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:373
Definition tensor_operation/gpu/device/tensor_layout.hpp:367
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:368
Definition tensor_operation/gpu/device/tensor_layout.hpp:90
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:91
Definition tensor_operation/gpu/device/tensor_layout.hpp:130
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:131
Definition tensor_operation/gpu/device/tensor_layout.hpp:427
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:428
Definition tensor_operation/gpu/device/tensor_layout.hpp:357
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:358
Definition tensor_operation/gpu/device/tensor_layout.hpp:323
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:324
Definition tensor_operation/gpu/device/tensor_layout.hpp:294
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:295
Definition tensor_operation/gpu/device/tensor_layout.hpp:289
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:290
Definition tensor_operation/gpu/device/tensor_layout.hpp:284
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:285
Definition tensor_operation/gpu/device/tensor_layout.hpp:85
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:86
Definition tensor_operation/gpu/device/tensor_layout.hpp:125
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:126
Definition tensor_operation/gpu/device/tensor_layout.hpp:422
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:423
Definition tensor_operation/gpu/device/tensor_layout.hpp:352
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:353
Definition tensor_operation/gpu/device/tensor_layout.hpp:318
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:319
Definition tensor_operation/gpu/device/tensor_layout.hpp:22
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:23
Definition tensor_operation/gpu/device/tensor_layout.hpp:31
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:32
Definition tensor_operation/gpu/device/tensor_layout.hpp:36
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:37
Definition tensor_operation/gpu/device/tensor_layout.hpp:26
static constexpr const char * name
Definition tensor_operation/gpu/device/tensor_layout.hpp:27