| @@ -584,7 +584,7 @@ void ExecutorPy::ProcessVmArg(const py::tuple &args, const std::string &phase, V | |||||
| if (ms_context->backend_policy() == kMsConvert && py::isinstance<py::array>(arg)) { | if (ms_context->backend_policy() == kMsConvert && py::isinstance<py::array>(arg)) { | ||||
| MS_LOG(EXCEPTION) << "Args[" << i << "] is numpy array, not tensor"; | MS_LOG(EXCEPTION) << "Args[" << i << "] is numpy array, not tensor"; | ||||
| } | } | ||||
| (*arg_list).push_back(arg); | |||||
| arg_list->push_back(arg); | |||||
| } | } | ||||
| ResourcePtr res = GetResource(phase); | ResourcePtr res = GetResource(phase); | ||||
| @@ -462,7 +462,7 @@ void ProcessGeArg(const std::map<std::string, ExecutorInfoPtr> &info, const py:: | |||||
| MS_LOG(EXCEPTION) << "Args convert error"; | MS_LOG(EXCEPTION) << "Args convert error"; | ||||
| } | } | ||||
| if (converted->isa<tensor::Tensor>()) { | if (converted->isa<tensor::Tensor>()) { | ||||
| (*inputs).push_back(converted->cast<tensor::TensorPtr>()); | |||||
| inputs->push_back(converted->cast<tensor::TensorPtr>()); | |||||
| } else { | } else { | ||||
| MS_LOG(EXCEPTION) << "Args " << converted->ToString() << " is not tensor"; | MS_LOG(EXCEPTION) << "Args " << converted->ToString() << " is not tensor"; | ||||
| } | } | ||||
| @@ -28,6 +28,7 @@ class ContractError : public std::logic_error { | |||||
| public: | public: | ||||
| explicit ContractError(const std::string &msg) : std::logic_error(msg) {} | explicit ContractError(const std::string &msg) : std::logic_error(msg) {} | ||||
| explicit ContractError(const char *msg) : std::logic_error(msg) {} | explicit ContractError(const char *msg) : std::logic_error(msg) {} | ||||
| ~ContractError() override = default; | |||||
| }; | }; | ||||
| struct Signatory { | struct Signatory { | ||||
| @@ -60,6 +61,7 @@ class Ensures : public EnsuresAccess<T, R> { | |||||
| } | } | ||||
| template <class O, typename = std::enable_if_t<std::is_convertible_v<O, T>>> | template <class O, typename = std::enable_if_t<std::is_convertible_v<O, T>>> | ||||
| Ensures(const Ensures<O, R> &other) : value_(other.get()) {} | Ensures(const Ensures<O, R> &other) : value_(other.get()) {} | ||||
| ~Ensures() = default; | |||||
| T get() const { return value_; } | T get() const { return value_; } | ||||
| T &get() { return value_; } | T &get() { return value_; } | ||||
| @@ -38,26 +38,32 @@ void PrintProfile(std::ostringstream &oss, const TimeInfo &time_info, int indent | |||||
| void PrintTimeInfoMap(std::ostringstream &oss, const TimeInfoMap &dict, int indent = 0, | void PrintTimeInfoMap(std::ostringstream &oss, const TimeInfoMap &dict, int indent = 0, | ||||
| std::map<std::string, double> *sums = nullptr, const std::string &prefix = "") { | std::map<std::string, double> *sums = nullptr, const std::string &prefix = "") { | ||||
| for (auto iter = dict.begin(); iter != dict.end(); ++iter) { | |||||
| if (iter->second == nullptr) { | |||||
| size_t count = 0; | |||||
| for (const auto &iter : dict) { | |||||
| count++; | |||||
| if (iter.second == nullptr) { | |||||
| continue; | continue; | ||||
| } | } | ||||
| // indent by multiples of 4 spaces. | // indent by multiples of 4 spaces. | ||||
| auto name = iter->first.substr(TIME_INFO_PREFIX_NUM_LEN); | |||||
| if (iter.first.size() < TIME_INFO_PREFIX_NUM_LEN) { | |||||
| MS_LOG(EXCEPTION) << "In TimeInfoMap, the " << count << "th string key is " << iter.first | |||||
| << ", but the length is less than " << TIME_INFO_PREFIX_NUM_LEN; | |||||
| } | |||||
| auto name = iter.first.substr(TIME_INFO_PREFIX_NUM_LEN); | |||||
| oss << std::setw(indent * 4) << "" | oss << std::setw(indent * 4) << "" | ||||
| << "[" << name << "]: " << iter->second->time_; | |||||
| if (iter->second->dict_ != nullptr) { | |||||
| oss << ", [" << iter->second->dict_->size() << "]"; | |||||
| << "[" << name << "]: " << iter.second->time_; | |||||
| if (iter.second->dict_ != nullptr) { | |||||
| oss << ", [" << iter.second->dict_->size() << "]"; | |||||
| } | } | ||||
| oss << "\n"; | oss << "\n"; | ||||
| std::string newPrefix = prefix; | std::string newPrefix = prefix; | ||||
| if (iter->first.find("Cycle ") == std::string::npos) { | |||||
| newPrefix = prefix.empty() ? iter->first : prefix + "." + iter->first; | |||||
| if (iter.first.find("Cycle ") == std::string::npos) { | |||||
| newPrefix = prefix.empty() ? iter.first : prefix + "." + iter.first; | |||||
| } | } | ||||
| PrintProfile(oss, *iter->second, indent + 1, sums, newPrefix); | |||||
| if (iter->second->dict_ == nullptr) { | |||||
| (*sums)[newPrefix] += iter->second->time_; | |||||
| PrintProfile(oss, *iter.second, indent + 1, sums, newPrefix); | |||||
| if (iter.second->dict_ == nullptr) { | |||||
| (*sums)[newPrefix] += iter.second->time_; | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||