• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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