Browse Source

perf_opt(manager): avoid generate anonymous function in every acquire

node loop.
tags/v0.5.0-beta
yvetteliu 5 years ago
parent
commit
1daad56fd1
2 changed files with 4 additions and 3 deletions
  1. +3
    -3
      mindspore/ccsrc/ir/manager.cc
  2. +1
    -0
      mindspore/ccsrc/ir/manager.h

+ 3
- 3
mindspore/ccsrc/ir/manager.cc View File

@@ -87,6 +87,8 @@ void FuncGraphManager::Reset() {
func_graphs_used_total_ = std::make_shared<FuncGraphsUsedTotalComputer>(this);
recursive_ = std::make_shared<RecursiveComputer>(this);
j_total_ = std::make_shared<FuncGraphJTotalComputer>(this);

limit_ = std::bind(&FuncGraphManager::Limit, this, std::placeholders::_1);
}

void FuncGraphManager::Init() {
@@ -359,9 +361,7 @@ IncludeType FuncGraphManager::Limit(const AnfNodePtr &node) {
void FuncGraphManager::AcquireNodes(const std::vector<AnfNodePtr> &nodes) {
AnfNodeSet acq;
for (auto &node : nodes) {
std::function<IncludeType(AnfNodePtr)> limit = std::bind(&FuncGraphManager::Limit, this, std::placeholders::_1);

AnfNodeSet new_nodes = AnfNodeSet(DeepScopedGraphSearch(node, limit));
AnfNodeSet new_nodes = AnfNodeSet(DeepScopedGraphSearch(node, limit_));

all_nodes_.update(new_nodes);
acq.update(new_nodes);


+ 1
- 0
mindspore/ccsrc/ir/manager.h View File

@@ -515,6 +515,7 @@ class FuncGraphManager : public std::enable_shared_from_this<FuncGraphManager> {
std::shared_ptr<FuncGraphJTotalComputer> j_total_;

bool is_manage_;
std::function<IncludeType(AnfNodePtr)> limit_;
};

class FuncGraphTransaction {


Loading…
Cancel
Save