• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright 2019-2023 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_UTILS_TRACE_INFO_H_
18 #define MINDSPORE_CORE_UTILS_TRACE_INFO_H_
19 
20 #include <string>
21 #include <memory>
22 
23 namespace mindspore {
24 class TraceInfo;
25 using TraceInfoPtr = std::shared_ptr<TraceInfo>;
26 class Location;
27 using LocationPtr = std::shared_ptr<Location>;
28 class DebugInfo;
29 using DebugInfoPtr = std::shared_ptr<DebugInfo>;
30 
31 class TraceInfo {
32  public:
TraceInfo(const DebugInfoPtr & info)33   explicit TraceInfo(const DebugInfoPtr &info) : debug_info_(info) {}
34   TraceInfo(const TraceInfo &other) = default;
35   TraceInfo &operator=(const TraceInfo &) = default;
36   virtual ~TraceInfo() = default;
name()37   virtual std::string name() const { return ""; }
symbol()38   virtual std::string symbol() const { return ""; }
full_name()39   virtual std::string full_name() const { return name(); }
clone()40   virtual TraceInfoPtr clone() { return std::make_shared<TraceInfo>(*this); }
action_name()41   virtual std::string action_name() const { return ""; }
set_debug_info(const DebugInfoPtr & info)42   void set_debug_info(const DebugInfoPtr &info) { debug_info_ = info; }
debug_info()43   const DebugInfoPtr &debug_info() const { return debug_info_; }
44   template <typename T>
isa()45   bool isa() const {
46     return dynamic_cast<const T *>(this) != nullptr;
47   }
48 
49  protected:
50   DebugInfoPtr debug_info_;
51 };
52 
53 #define MS_DECLARE_TRACE_NAME_SYMBOL(trace_name, trace_symbol) \
54   std::string name() const override { return trace_name; }     \
55   std::string symbol() const override { return trace_symbol; }
56 
57 class TracePhi : public TraceInfo {
58  public:
TracePhi(const DebugInfoPtr & info)59   explicit TracePhi(const DebugInfoPtr &info) : TraceInfo(info) {}
60   ~TracePhi() override = default;
61   // phi: Φ
62 #ifdef _WIN32
63   MS_DECLARE_TRACE_NAME_SYMBOL("phi", "phi_");
64 #else
65   MS_DECLARE_TRACE_NAME_SYMBOL("phi", "\u0444");
66 #endif
clone()67   TraceInfoPtr clone() override { return std::make_shared<TracePhi>(*this); }
68 };
69 
70 class TraceIfStmtTrueBranch : public TraceInfo {
71  public:
72   TraceIfStmtTrueBranch(const TraceIfStmtTrueBranch &) = default;
73   TraceIfStmtTrueBranch &operator=(const TraceIfStmtTrueBranch &) = default;
TraceIfStmtTrueBranch(const DebugInfoPtr & info)74   explicit TraceIfStmtTrueBranch(const DebugInfoPtr &info) : TraceInfo(info) {}
75   ~TraceIfStmtTrueBranch() override = default;
76   // if_true: ✓
77   MS_DECLARE_TRACE_NAME_SYMBOL("if_true", "\u2713");
clone()78   TraceInfoPtr clone() override { return std::make_shared<TraceIfStmtTrueBranch>(*this); }
79 };
80 
81 class TraceIfStmtFalseBranch : public TraceInfo {
82  public:
83   TraceIfStmtFalseBranch(const TraceIfStmtFalseBranch &) = default;
84   TraceIfStmtFalseBranch &operator=(const TraceIfStmtFalseBranch &) = default;
TraceIfStmtFalseBranch(const DebugInfoPtr & info)85   explicit TraceIfStmtFalseBranch(const DebugInfoPtr &info) : TraceInfo(info) {}
86   ~TraceIfStmtFalseBranch() override = default;
87   // if_false: ✗
88   MS_DECLARE_TRACE_NAME_SYMBOL("if_false", "\u2717");
clone()89   TraceInfoPtr clone() override { return std::make_shared<TraceIfStmtFalseBranch>(*this); }
90 };
91 
92 class TraceIfStmtAfterBranch : public TraceInfo {
93  public:
TraceIfStmtAfterBranch(const DebugInfoPtr & info)94   explicit TraceIfStmtAfterBranch(const DebugInfoPtr &info) : TraceInfo(info) {}
95   ~TraceIfStmtAfterBranch() override = default;
96   // if_after: ↓
97   MS_DECLARE_TRACE_NAME_SYMBOL("if_after", "\u2193");
clone()98   TraceInfoPtr clone() override { return std::make_shared<TraceIfStmtAfterBranch>(*this); }
99 };
100 
101 class TraceIfExpTrueBranch : public TraceInfo {
102  public:
TraceIfExpTrueBranch(const DebugInfoPtr & info)103   explicit TraceIfExpTrueBranch(const DebugInfoPtr &info) : TraceInfo(info) {}
104   ~TraceIfExpTrueBranch() override = default;
105   // ifexp_true: ↰
106   MS_DECLARE_TRACE_NAME_SYMBOL("ifexp_true", "\u21B0");
clone()107   TraceInfoPtr clone() override { return std::make_shared<TraceIfExpTrueBranch>(*this); }
108 };
109 
110 class TraceIfExpFalseBranch : public TraceInfo {
111  public:
TraceIfExpFalseBranch(const DebugInfoPtr & info)112   explicit TraceIfExpFalseBranch(const DebugInfoPtr &info) : TraceInfo(info) {}
113   ~TraceIfExpFalseBranch() override = default;
114   // ifexp_false: ↱
115   MS_DECLARE_TRACE_NAME_SYMBOL("ifexp_false", "\u21B1");
clone()116   TraceInfoPtr clone() override { return std::make_shared<TraceIfExpFalseBranch>(*this); }
117 };
118 
119 class TraceCopy : public TraceInfo {
120  public:
TraceCopy()121   TraceCopy() : TraceInfo(nullptr) {}
TraceCopy(const DebugInfoPtr & info)122   explicit TraceCopy(const DebugInfoPtr &info) : TraceInfo(info) {}
123   ~TraceCopy() override = default;
124   MS_DECLARE_TRACE_NAME_SYMBOL("copy", "");
clone()125   TraceInfoPtr clone() override { return std::make_shared<TraceCopy>(*this); }
126 };
127 
128 class TraceIterator : public TraceInfo {
129  public:
TraceIterator(const DebugInfoPtr & info)130   explicit TraceIterator(const DebugInfoPtr &info) : TraceInfo(info) {}
131   ~TraceIterator() override = default;
132   MS_DECLARE_TRACE_NAME_SYMBOL("iterator", "@");
clone()133   TraceInfoPtr clone() override { return std::make_shared<TraceIterator>(*this); }
134 };
135 
136 class TraceWhileHeader : public TraceInfo {
137  public:
TraceWhileHeader(const DebugInfoPtr & info)138   explicit TraceWhileHeader(const DebugInfoPtr &info) : TraceInfo(info) {}
139   ~TraceWhileHeader() override = default;
140   // while_header: ↵
141   MS_DECLARE_TRACE_NAME_SYMBOL("while_header", "\u21B5");
clone()142   TraceInfoPtr clone() override { return std::make_shared<TraceWhileHeader>(*this); }
143 };
144 
145 class TraceWhileBody : public TraceInfo {
146  public:
TraceWhileBody(const DebugInfoPtr & info)147   explicit TraceWhileBody(const DebugInfoPtr &info) : TraceInfo(info) {}
148   ~TraceWhileBody() override = default;
149   // while_body: ↻
150   MS_DECLARE_TRACE_NAME_SYMBOL("while_body", "\u21BB");
clone()151   TraceInfoPtr clone() override { return std::make_shared<TraceWhileBody>(*this); }
152 };
153 
154 class TraceWhileAfter : public TraceInfo {
155  public:
TraceWhileAfter(const DebugInfoPtr & info)156   explicit TraceWhileAfter(const DebugInfoPtr &info) : TraceInfo(info) {}
157   ~TraceWhileAfter() override = default;
158   // while_after: ↓
159   MS_DECLARE_TRACE_NAME_SYMBOL("while_after", "\u2193");
clone()160   TraceInfoPtr clone() override { return std::make_shared<TraceWhileAfter>(*this); }
161 };
162 
163 class TraceForHeader : public TraceInfo {
164  public:
TraceForHeader(const DebugInfoPtr & info)165   explicit TraceForHeader(const DebugInfoPtr &info) : TraceInfo(info) {}
166   ~TraceForHeader() override = default;
167   // for_header: ↵
168   MS_DECLARE_TRACE_NAME_SYMBOL("for_header", "\u21B5");
clone()169   TraceInfoPtr clone() override { return std::make_shared<TraceForHeader>(*this); }
170 };
171 
172 class TraceForBody : public TraceInfo {
173  public:
TraceForBody(const DebugInfoPtr & info)174   explicit TraceForBody(const DebugInfoPtr &info) : TraceInfo(info) {}
175   ~TraceForBody() override = default;
176   // for_body: ↻
177   MS_DECLARE_TRACE_NAME_SYMBOL("for_body", "\u21BB");
clone()178   TraceInfoPtr clone() override { return std::make_shared<TraceForBody>(*this); }
179 };
180 
181 class TraceForRolledBody : public TraceInfo {
182  public:
TraceForRolledBody(const DebugInfoPtr & info)183   explicit TraceForRolledBody(const DebugInfoPtr &info) : TraceInfo(info) {}
184   ~TraceForRolledBody() override = default;
185   MS_DECLARE_TRACE_NAME_SYMBOL("for_rolled_body", "R_");
clone()186   TraceInfoPtr clone() override { return std::make_shared<TraceForRolledBody>(*this); }
187 };
188 
189 class TraceForAfter : public TraceInfo {
190  public:
TraceForAfter(const DebugInfoPtr & info)191   explicit TraceForAfter(const DebugInfoPtr &info) : TraceInfo(info) {}
192   ~TraceForAfter() override = default;
193   // for_after: ↓
194   MS_DECLARE_TRACE_NAME_SYMBOL("for_after", "\u2193");
clone()195   TraceInfoPtr clone() override { return std::make_shared<TraceForAfter>(*this); }
196 };
197 
198 class TraceLoopEnd : public TraceInfo {
199  public:
TraceLoopEnd(const DebugInfoPtr & info)200   explicit TraceLoopEnd(const DebugInfoPtr &info) : TraceInfo(info) {}
201   ~TraceLoopEnd() override = default;
202   // loop_end: ⇊
203   MS_DECLARE_TRACE_NAME_SYMBOL("loop_end", "\u21CA");
clone()204   TraceInfoPtr clone() override { return std::make_shared<TraceLoopEnd>(*this); }
205 };
206 
207 class TraceEquiv : public TraceInfo {
208  public:
TraceEquiv(const DebugInfoPtr & info)209   explicit TraceEquiv(const DebugInfoPtr &info) : TraceInfo(info) {}
210   ~TraceEquiv() override = default;
211   MS_DECLARE_TRACE_NAME_SYMBOL(std::string("equiv") + std::to_string(equiv_id_),
212                                std::string("equiv_") + std::to_string(equiv_id_) + "_");
clone()213   TraceInfoPtr clone() override { return std::make_shared<TraceEquiv>(*this); }
214 
215  private:
equiv_id()216   size_t equiv_id() const {
217     // cppcheck-suppress variableScope
218     static size_t current_id = 0;
219     ++current_id;
220     return current_id;
221   }
222 
223   size_t equiv_id_{equiv_id()};
224 };
225 
226 class TraceGradFpropApp : public TraceInfo {
227  public:
TraceGradFpropApp()228   TraceGradFpropApp() : TraceInfo(nullptr) {}
TraceGradFpropApp(const DebugInfoPtr & info)229   explicit TraceGradFpropApp(const DebugInfoPtr &info) : TraceInfo(info) {}
230   ~TraceGradFpropApp() override = default;
231   // grad_fprop_app: ▲
232   MS_DECLARE_TRACE_NAME_SYMBOL("grad_fprop_app", "\u25B2");
clone()233   TraceInfoPtr clone() override { return std::make_shared<TraceGradFpropApp>(*this); }
234 };
235 
236 class TraceGradBpropApp : public TraceInfo {
237  public:
TraceGradBpropApp()238   TraceGradBpropApp() : TraceInfo(nullptr) {}
TraceGradBpropApp(const DebugInfoPtr & info)239   explicit TraceGradBpropApp(const DebugInfoPtr &info) : TraceInfo(info) {}
240   ~TraceGradBpropApp() override = default;
241   // grad_bprop_app: ▼
242   MS_DECLARE_TRACE_NAME_SYMBOL("grad_bprop_app", "\u25BC");
clone()243   TraceInfoPtr clone() override { return std::make_shared<TraceGradBpropApp>(*this); }
244 };
245 
246 class TraceGradFprop : public TraceInfo {
247  public:
TraceGradFprop()248   TraceGradFprop() : TraceInfo(nullptr) {}
TraceGradFprop(const DebugInfoPtr & info)249   explicit TraceGradFprop(const DebugInfoPtr &info) : TraceInfo(info) {}
250   ~TraceGradFprop() override = default;
251   // grad_fprop: ▶
252   MS_DECLARE_TRACE_NAME_SYMBOL("grad_fprop", "\u25B8");
clone()253   TraceInfoPtr clone() override { return std::make_shared<TraceGradFprop>(*this); }
254 };
255 
256 class TraceGradBprop : public TraceInfo {
257  public:
TraceGradBprop()258   TraceGradBprop() : TraceInfo(nullptr) {}
TraceGradBprop(const DebugInfoPtr & info)259   explicit TraceGradBprop(const DebugInfoPtr &info) : TraceInfo(info) {}
260   ~TraceGradBprop() override = default;
261   // grad_bprop: ◀
262   MS_DECLARE_TRACE_NAME_SYMBOL("grad_bprop", "\u25C2");
clone()263   TraceInfoPtr clone() override { return std::make_shared<TraceGradBprop>(*this); }
264 };
265 
266 class TraceGradSens : public TraceInfo {
267  public:
TraceGradSens()268   TraceGradSens() : TraceInfo(nullptr) {}
TraceGradSens(const DebugInfoPtr & info)269   explicit TraceGradSens(const DebugInfoPtr &info) : TraceInfo(info) {}
270   ~TraceGradSens() override = default;
271   // grad_sens: ∇
272   MS_DECLARE_TRACE_NAME_SYMBOL("grad_sens", "\u25BD");
clone()273   TraceInfoPtr clone() override { return std::make_shared<TraceGradSens>(*this); }
274 };
275 
276 class TraceSpecialize : public TraceInfo {
277  public:
TraceSpecialize(int64_t counter)278   explicit TraceSpecialize(int64_t counter) : TraceInfo(nullptr), counter_(counter) {}
279   MS_DECLARE_TRACE_NAME_SYMBOL("specialize" + std::to_string(counter_), std::to_string(counter_) + "_");
full_name()280   std::string full_name() const override { return "specialize" + std::to_string(counter_) + "_"; }
281   ~TraceSpecialize() override = default;
clone()282   TraceInfoPtr clone() override { return std::make_shared<TraceSpecialize>(*this); }
283 
284  private:
285   int64_t counter_;
286 };
287 
288 class TraceGradOperation : public TraceInfo {
289  public:
TraceGradOperation(const DebugInfoPtr & info)290   explicit TraceGradOperation(const DebugInfoPtr &info) : TraceInfo(info) {}
291   ~TraceGradOperation() override = default;
292   MS_DECLARE_TRACE_NAME_SYMBOL("grad_ops", "grad_");
clone()293   TraceInfoPtr clone() override { return std::make_shared<TraceGradOperation>(*this); }
294 };
295 
296 class TraceVmapOperation : public TraceInfo {
297  public:
TraceVmapOperation(const DebugInfoPtr & info)298   explicit TraceVmapOperation(const DebugInfoPtr &info) : TraceInfo(info) {}
299   ~TraceVmapOperation() override = default;
300   MS_DECLARE_TRACE_NAME_SYMBOL("vmap_ops", "vmap_");
clone()301   TraceInfoPtr clone() override { return std::make_shared<TraceVmapOperation>(*this); }
302 };
303 
304 class TraceForceBool : public TraceInfo {
305  public:
TraceForceBool(const DebugInfoPtr & info)306   explicit TraceForceBool(const DebugInfoPtr &info) : TraceInfo(info) {}
307   ~TraceForceBool() override = default;
308   MS_DECLARE_TRACE_NAME_SYMBOL("force_bool", "force_bool_");
clone()309   TraceInfoPtr clone() override { return std::make_shared<TraceForceBool>(*this); }
310 };
311 
312 class TraceForceWhileCond : public TraceInfo {
313  public:
TraceForceWhileCond(const DebugInfoPtr & info)314   explicit TraceForceWhileCond(const DebugInfoPtr &info) : TraceInfo(info) {}
315   ~TraceForceWhileCond() override = default;
316   MS_DECLARE_TRACE_NAME_SYMBOL("force_while_cond", "force_while_cond_");
clone()317   TraceInfoPtr clone() override { return std::make_shared<TraceForceWhileCond>(*this); }
318 };
319 
320 class TraceExpandJ : public TraceInfo {
321  public:
TraceExpandJ(const DebugInfoPtr & info)322   explicit TraceExpandJ(const DebugInfoPtr &info) : TraceInfo(info) {}
323   ~TraceExpandJ() override = default;
324   MS_DECLARE_TRACE_NAME_SYMBOL("expand_j", "j_");
clone()325   TraceInfoPtr clone() override { return std::make_shared<TraceExpandJ>(*this); }
326 };
327 
328 class TraceGenMetaFuncGraph : public TraceInfo {
329  public:
TraceGenMetaFuncGraph(const DebugInfoPtr & info)330   explicit TraceGenMetaFuncGraph(const DebugInfoPtr &info) : TraceInfo(info) {}
331   ~TraceGenMetaFuncGraph() override = default;
332   MS_DECLARE_TRACE_NAME_SYMBOL("GenMetaFuncGraph", "meta_");
clone()333   TraceInfoPtr clone() override { return std::make_shared<TraceGenMetaFuncGraph>(*this); }
334 };
335 
336 class TraceEvaluatorGenGraph : public TraceInfo {
337  public:
TraceEvaluatorGenGraph(const DebugInfoPtr & info)338   explicit TraceEvaluatorGenGraph(const DebugInfoPtr &info) : TraceInfo(info) {}
339   ~TraceEvaluatorGenGraph() override = default;
340   MS_DECLARE_TRACE_NAME_SYMBOL("GenEvaluatorGraph", "gen_evaluator_graph_");
clone()341   TraceInfoPtr clone() override { return std::make_shared<TraceEvaluatorGenGraph>(*this); }
342 };
343 
344 class TraceParse : public TraceInfo {
345  public:
TraceParse(const DebugInfoPtr & info)346   explicit TraceParse(const DebugInfoPtr &info) : TraceInfo(info) {}
347   ~TraceParse() override = default;
348   MS_DECLARE_TRACE_NAME_SYMBOL("parse", "");
clone()349   TraceInfoPtr clone() override { return std::make_shared<TraceParse>(*this); }
350 };
351 
352 class TraceResolve : public TraceInfo {
353  public:
TraceResolve(const DebugInfoPtr & info)354   explicit TraceResolve(const DebugInfoPtr &info) : TraceInfo(info) {}
355   ~TraceResolve() override = default;
356   MS_DECLARE_TRACE_NAME_SYMBOL("resolve", "resolve_");
clone()357   TraceInfoPtr clone() override { return std::make_shared<TraceResolve>(*this); }
358 };
359 
360 class TraceTransform : public TraceInfo {
361  public:
TraceTransform()362   TraceTransform() : TraceTransform("") {}
TraceTransform(const std::string & transform_name)363   explicit TraceTransform(const std::string &transform_name) : TraceInfo(nullptr), transform_name_(transform_name) {}
364   ~TraceTransform() override = default;
365   MS_DECLARE_TRACE_NAME_SYMBOL("transform", transform_name_.empty() ? "" : (transform_name_ + "_"));
full_name()366   std::string full_name() const override { return "transform" + transform_name_; }
clone()367   TraceInfoPtr clone() override { return std::make_shared<TraceTransform>(*this); }
368 
369  private:
370   std::string transform_name_;
371 };
372 
373 class TraceGenerateVarArg : public TraceInfo {
374  public:
TraceGenerateVarArg(const DebugInfoPtr & info)375   explicit TraceGenerateVarArg(const DebugInfoPtr &info) : TraceInfo(info) {}
376   ~TraceGenerateVarArg() override = default;
377   MS_DECLARE_TRACE_NAME_SYMBOL("GenerateVarArg", "gen_var_arg_");
clone()378   TraceInfoPtr clone() override { return std::make_shared<TraceGenerateVarArg>(*this); }
379 };
380 
381 class TraceGenerateKwArg : public TraceInfo {
382  public:
TraceGenerateKwArg(const DebugInfoPtr & info)383   explicit TraceGenerateKwArg(const DebugInfoPtr &info) : TraceInfo(info) {}
384   ~TraceGenerateKwArg() override = default;
385   MS_DECLARE_TRACE_NAME_SYMBOL("GenerateKwArg", "gen_kw_arg_");
clone()386   TraceInfoPtr clone() override { return std::make_shared<TraceGenerateKwArg>(*this); }
387 };
388 
389 class TraceTransformK : public TraceInfo {
390  public:
TraceTransformK(const DebugInfoPtr & info)391   explicit TraceTransformK(const DebugInfoPtr &info) : TraceInfo(info) {}
392   ~TraceTransformK() override = default;
393   MS_DECLARE_TRACE_NAME_SYMBOL("TraceTransformK", "k_");
clone()394   TraceInfoPtr clone() override { return std::make_shared<TraceTransformK>(*this); }
395 };
396 
397 class TracePartialTransform : public TraceInfo {
398  public:
TracePartialTransform(const DebugInfoPtr & info)399   explicit TracePartialTransform(const DebugInfoPtr &info) : TraceInfo(info) {}
400   ~TracePartialTransform() override = default;
401   MS_DECLARE_TRACE_NAME_SYMBOL("PartialTransform", "partial_trans_");
clone()402   TraceInfoPtr clone() override { return std::make_shared<TracePartialTransform>(*this); }
403 };
404 
405 class TraceGetEnv : public TraceInfo {
406  public:
TraceGetEnv(const DebugInfoPtr & info)407   explicit TraceGetEnv(const DebugInfoPtr &info) : TraceInfo(info) {}
408   ~TraceGetEnv() override = default;
409   MS_DECLARE_TRACE_NAME_SYMBOL("get_env", "get_env_");
clone()410   TraceInfoPtr clone() override { return std::make_shared<TraceGetEnv>(*this); }
411 };
412 
413 class TraceDoSignature : public TraceInfo {
414  public:
TraceDoSignature(const DebugInfoPtr & info)415   explicit TraceDoSignature(const DebugInfoPtr &info) : TraceInfo(info) {}
416   ~TraceDoSignature() override = default;
417   MS_DECLARE_TRACE_NAME_SYMBOL("DoSignature", "");
clone()418   TraceInfoPtr clone() override { return std::make_shared<TraceDoSignature>(*this); }
419 };
420 
421 class TraceCombileLikeGraphs : public TraceInfo {
422  public:
TraceCombileLikeGraphs()423   TraceCombileLikeGraphs() : TraceInfo(nullptr) {}
TraceCombileLikeGraphs(const DebugInfoPtr & info)424   explicit TraceCombileLikeGraphs(const DebugInfoPtr &info) : TraceInfo(info) {}
425   ~TraceCombileLikeGraphs() override = default;
426   MS_DECLARE_TRACE_NAME_SYMBOL("CombileLike", "L_");
clone()427   TraceInfoPtr clone() override { return std::make_shared<TraceCombileLikeGraphs>(*this); }
428 };
429 
430 class TraceGraphReusing : public TraceInfo {
431  public:
TraceGraphReusing()432   TraceGraphReusing() : TraceInfo(nullptr) {}
TraceGraphReusing(const DebugInfoPtr & info)433   explicit TraceGraphReusing(const DebugInfoPtr &info) : TraceInfo(info) {}
434   ~TraceGraphReusing() override = default;
435   MS_DECLARE_TRACE_NAME_SYMBOL("CellReusing", "CR_");
clone()436   TraceInfoPtr clone() override { return std::make_shared<TraceGraphReusing>(*this); }
437 };
438 
439 class TraceSegmentTransform : public TraceInfo {
440  public:
TraceSegmentTransform(const DebugInfoPtr & info)441   explicit TraceSegmentTransform(const DebugInfoPtr &info) : TraceInfo(info) {}
442   ~TraceSegmentTransform() override = default;
443   MS_DECLARE_TRACE_NAME_SYMBOL("segment_transform", "seg_trans_");
clone()444   TraceInfoPtr clone() override { return std::make_shared<TraceSegmentTransform>(*this); }
445 };
446 
447 class TraceOpt : public TraceInfo {
448  public:
TraceOpt(const DebugInfoPtr & info)449   explicit TraceOpt(const DebugInfoPtr &info) : TraceInfo(info) {}
450   ~TraceOpt() override = default;
451   MS_DECLARE_TRACE_NAME_SYMBOL("opt", "");
clone()452   TraceInfoPtr clone() override { return std::make_shared<TraceOpt>(*this); }
453 };
454 
455 class TraceListComp : public TraceInfo {
456  public:
TraceListComp(const DebugInfoPtr & info)457   explicit TraceListComp(const DebugInfoPtr &info) : TraceInfo(info) {}
458   ~TraceListComp() override = default;
459   MS_DECLARE_TRACE_NAME_SYMBOL("ListComp", "G_");
clone()460   TraceInfoPtr clone() override { return std::make_shared<TraceListComp>(*this); }
461 };
462 
463 class TraceDictComp : public TraceInfo {
464  public:
TraceDictComp(const DebugInfoPtr & info)465   explicit TraceDictComp(const DebugInfoPtr &info) : TraceInfo(info) {}
466   ~TraceDictComp() override = default;
467   MS_DECLARE_TRACE_NAME_SYMBOL("DictComp", "GD_");
clone()468   TraceInfoPtr clone() override { return std::make_shared<TraceDictComp>(*this); }
469 };
470 
471 class TraceMixedPrecision : public TraceInfo {
472  public:
TraceMixedPrecision(const DebugInfoPtr & info)473   explicit TraceMixedPrecision(const DebugInfoPtr &info) : TraceInfo(info) {}
474   MS_DECLARE_TRACE_NAME_SYMBOL("MixedPrecision", "C_");
475   ~TraceMixedPrecision() override = default;
clone()476   TraceInfoPtr clone() override { return std::make_shared<TraceMixedPrecision>(*this); }
477 };
478 
479 class TraceShard : public TraceInfo {
480  public:
TraceShard(const DebugInfoPtr & info)481   explicit TraceShard(const DebugInfoPtr &info) : TraceInfo(info) {}
482   ~TraceShard() override = default;
483   MS_DECLARE_TRACE_NAME_SYMBOL("shard_ops", "shard_");
clone()484   TraceInfoPtr clone() override { return std::make_shared<TraceShard>(*this); }
485 };
486 
487 class TraceAssert : public TraceInfo {
488  public:
TraceAssert(const DebugInfoPtr & info)489   explicit TraceAssert(const DebugInfoPtr &info) : TraceInfo(info) {}
490   MS_DECLARE_TRACE_NAME_SYMBOL("Assert", "assert_");
491   ~TraceAssert() override = default;
clone()492   TraceInfoPtr clone() override { return std::make_shared<TraceAssert>(*this); }
493 };
494 }  // namespace mindspore
495 
496 #endif  // MINDSPORE_CORE_UTILS_TRACE_INFO_H_
497