1 /**
2 * Copyright 2021 Huawei Technologies Co., Ltd
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 #ifndef MINDSPORE_CORE_MINDAPI_BASE_FORMAT_H_
18 #define MINDSPORE_CORE_MINDAPI_BASE_FORMAT_H_
19
20 #include <cstdint>
21 #include <vector>
22 #include <string>
23
24 namespace mindspore {
25 enum Format : int64_t {
26 DEFAULT_FORMAT = -1,
27 NCHW = 0,
28 NHWC,
29 NHWC4,
30 HWKC,
31 HWCK,
32 KCHW,
33 CKHW,
34 KHWC,
35 CHWK,
36 HW,
37 HW4,
38 NC,
39 NC4,
40 NC4HW4,
41 NCDHW,
42 NWC,
43 NCW,
44 NDHWC,
45 NC8HW8,
46 FRACTAL_NZ,
47 ND, // Nd Tensor
48 NC1HWC0, // NC1HWC0
49 FRACTAL_Z, // FRACTAL_Z
50 NC1C0HWPAD,
51 NHWC1C0,
52 FSR_NCHW,
53 FRACTAL_DECONV,
54 C1HWNC0,
55 FRACTAL_DECONV_TRANSPOSE,
56 FRACTAL_DECONV_SP_STRIDE_TRANS,
57 NC1HWC0_C04, // NC1HWC0, C0 is 4
58 FRACTAL_Z_C04, // FRACZ, C0 is 4
59 CHWN,
60 FRACTAL_DECONV_SP_STRIDE8_TRANS,
61 HWCN,
62 NC1KHKWHWC0, // KH,KW kernel h& kernel w maxpooling max output format
63 BN_WEIGHT,
64 FILTER_HWCK, // filter input tensor format
65 LOOKUP_LOOKUPS,
66 LOOKUP_KEYS,
67 LOOKUP_VALUE,
68 LOOKUP_OUTPUT,
69 LOOKUP_HITS,
70 C1HWNCoC0,
71 MD,
72 FRACTAL_ZZ,
73 DHWCN, // 3D filter input tensor format
74 NDC1HWC0,
75 FRACTAL_Z_3D,
76 CN,
77 DHWNC,
78 FRACTAL_Z_3D_TRANSPOSE, // 3D filter(transpose) input tensor format
79 FRACTAL_ZN_LSTM,
80 FRACTAL_Z_G,
81 ND_RNN_BIAS,
82 FRACTAL_ZN_RNN,
83 NYUV,
84 NYUV_A,
85 NCL,
86 NUM_OF_FORMAT
87 };
88
GetFormatNames()89 inline const std::vector<std::string> &GetFormatNames() {
90 static std::vector<std::string> names = {
91 "NCHW",
92 "NHWC",
93 "NHWC4",
94 "HWKC",
95 "HWCK",
96 "KCHW",
97 "CKHW",
98 "KHWC",
99 "CHWK",
100 "HW",
101 "HW4",
102 "NC",
103 "NC4",
104 "NC4HW4",
105 "NCDHW",
106 "NWC",
107 "NCW",
108 "NDHWC",
109 "NC8HW8",
110 "FRACTAL_NZ",
111 "ND",
112 "NC1HWC0",
113 "FRACTAL_Z",
114 "NC1C0HWPAD",
115 "NHWC1C0",
116 "FSR_NCHW",
117 "FRACTAL_DECONV",
118 "C1HWNC0",
119 "FRACTAL_DECONV_TRANSPOSE",
120 "FRACTAL_DECONV_SP_STRIDE_TRANS",
121 "NC1HWC0_C04",
122 "FRACTAL_Z_C04",
123 "CHWN",
124 "FRACTAL_DECONV_SP_STRIDE8_TRANS",
125 "HWCN",
126 "NC1KHKWHWC0",
127 "BN_WEIGHT",
128 "FILTER_HWCK",
129 "LOOKUP_LOOKUPS",
130 "LOOKUP_KEYS",
131 "LOOKUP_VALUE",
132 "LOOKUP_OUTPUT",
133 "LOOKUP_HITS",
134 "C1HWNCoC0",
135 "MD",
136 "FRACTAL_ZZ",
137 "DHWCN",
138 "NDC1HWC0",
139 "FRACTAL_Z_3D",
140 "CN",
141 "DHWNC",
142 "FRACTAL_Z_3D_TRANSPOSE",
143 "FRACTAL_ZN_LSTM",
144 "FRACTAL_Z_G",
145 "ND_RNN_BIAS",
146 "FRACTAL_ZN_RNN",
147 "NYUV",
148 "NYUV_A",
149 "NCL",
150 };
151 return names;
152 }
153
FormatEnumToString(mindspore::Format format)154 inline std::string FormatEnumToString(mindspore::Format format) {
155 const auto &names = GetFormatNames();
156 if (format == mindspore::Format::DEFAULT_FORMAT) {
157 return "DefaultFormat";
158 }
159 if (format < mindspore::NCHW || format >= mindspore::NUM_OF_FORMAT) {
160 return "";
161 }
162 return names[format];
163 }
164 } // namespace mindspore
165 #endif // MINDSPORE_CORE_MINDAPI_BASE_FORMAT_H_
166