The Advisor runs a list of Checkers, each checks a specific area.
| 28 | |
| 29 | // The Advisor runs a list of Checkers, each checks a specific area. |
| 30 | class Advisor { |
| 31 | public: |
| 32 | Advisor(const TFStats* stats) : stats_(stats) {} |
| 33 | |
| 34 | static AdvisorOptionsProto DefaultOptions() { |
| 35 | AdvisorOptionsProto options; |
| 36 | std::vector<string> checkers( |
| 37 | kCheckers, kCheckers + sizeof(kCheckers) / sizeof(*kCheckers)); |
| 38 | for (const string& checker : checkers) { |
| 39 | (*options.mutable_checkers())[checker]; |
| 40 | } |
| 41 | return options; |
| 42 | } |
| 43 | |
| 44 | AdviceProto Advise(const AdvisorOptionsProto& options) { |
| 45 | // Note: Release a checker's memory ASAP. |
| 46 | AdviceProto ret = RunInternalCheckers(options, stats_); |
| 47 | |
| 48 | if (options.checkers().find(kCheckers[0]) != options.checkers().end()) { |
| 49 | AcceleratorUtilizationChecker au_checker; |
| 50 | (*ret.mutable_checkers())[kCheckers[0]].MergeFrom( |
| 51 | au_checker.Run(options.checkers().at(kCheckers[0]), stats_)); |
| 52 | } |
| 53 | if (options.checkers().find(kCheckers[1]) != options.checkers().end()) { |
| 54 | OperationChecker op_checker; |
| 55 | (*ret.mutable_checkers())[kCheckers[1]].MergeFrom( |
| 56 | op_checker.Run(options.checkers().at(kCheckers[1]), stats_)); |
| 57 | } |
| 58 | if (options.checkers().find(kCheckers[2]) != options.checkers().end()) { |
| 59 | ExpensiveOperationChecker expensive_op_checker; |
| 60 | (*ret.mutable_checkers())[kCheckers[2]].MergeFrom( |
| 61 | expensive_op_checker.Run(options.checkers().at(kCheckers[2]), |
| 62 | stats_)); |
| 63 | } |
| 64 | for (const auto& checker : ret.checkers()) { |
| 65 | fprintf(stdout, "\n%s:\n", checker.first.c_str()); |
| 66 | for (const string& r : checker.second.reports()) { |
| 67 | fprintf(stdout, "%s\n", r.c_str()); |
| 68 | } |
| 69 | } |
| 70 | fflush(stdout); |
| 71 | return ret; |
| 72 | } |
| 73 | |
| 74 | private: |
| 75 | const TFStats* stats_; |
| 76 | }; |
| 77 | |
| 78 | } // namespace tfprof |
| 79 | } // namespace tensorflow |
no outgoing calls
no test coverage detected