diff --git a/mindspore/ccsrc/pipeline/pynative/pynative_execute.cc b/mindspore/ccsrc/pipeline/pynative/pynative_execute.cc index a932aef8d0..fe1420ad15 100644 --- a/mindspore/ccsrc/pipeline/pynative/pynative_execute.cc +++ b/mindspore/ccsrc/pipeline/pynative/pynative_execute.cc @@ -1282,11 +1282,11 @@ void PynativeExecutor::GradNetInner(const GradOperationPtr &grad, const py::obje } template -void MapClear(T map, const std::string &flag) { - for (auto it = map.begin(); it != map.end();) { +void MapClear(T *map, const std::string &flag) { + for (auto it = map->begin(); it != map->end();) { if (it->first.find(flag) != std::string::npos) { it->second = nullptr; - it = map.erase(it); + it = map->erase(it); } else { it++; } @@ -1296,9 +1296,9 @@ void MapClear(T map, const std::string &flag) { void PynativeExecutor::Clear(const std::string &flag) { if (!flag.empty()) { MS_LOG(DEBUG) << "Clear res"; - MapClear>(graph_map_, flag); - MapClear>(cell_graph_map_, flag); - MapClear>(cell_resource_map_, flag); + MapClear>(&graph_map_, flag); + MapClear>(&cell_graph_map_, flag); + MapClear>(&cell_resource_map_, flag); Clean(); // Maybe exit in the pynative runing op, so need reset pynative flag. auto ms_context = MsContext::GetInstance(); @@ -1331,17 +1331,17 @@ void PynativeExecutor::Clean() { } template -void MapErase(T map) { - for (auto it = map.begin(); it != map.end();) { - it = map.erase(it++); +void MapErase(T *map) { + for (auto it = map->begin(); it != map->end();) { + it = map->erase(it++); } } void PynativeExecutor::ClearRes() { - MapErase>(graph_map_); - MapErase>(cell_graph_map_); - MapErase>(cell_resource_map_); - MapErase>(node_abs_map_); + MapErase>(&graph_map_); + MapErase>(&cell_graph_map_); + MapErase>(&cell_resource_map_); + MapErase>(&node_abs_map_); Clean(); resource_.reset(); }