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