提交 af4dac4a 编写于 作者: Y Yu Yang 提交者: GitHub

Feature/free kid scope (#4951)

* Delete kid

* Delete local scope
上级 42f2dd40
...@@ -84,8 +84,7 @@ void Executor::Run(const ProgramDesc& pdesc, Scope* scope, int block_id) { ...@@ -84,8 +84,7 @@ void Executor::Run(const ProgramDesc& pdesc, Scope* scope, int block_id) {
op->Run(local_scope, *device); op->Run(local_scope, *device);
} }
// TODO(tonyyang-svail): scope->DeleteScope(&local_scope);
// - Destroy local_scope
} }
} // namespace framework } // namespace framework
......
...@@ -65,6 +65,13 @@ void Scope::DropKids() { ...@@ -65,6 +65,13 @@ void Scope::DropKids() {
kids_.clear(); kids_.clear();
} }
void Scope::DeleteScope(Scope* scope) {
auto it = std::find(this->kids_.begin(), this->kids_.end(), scope);
PADDLE_ENFORCE(it != this->kids_.end(), "Cannot find %p as kid scope", scope);
this->kids_.erase(it);
delete scope;
}
framework::Scope& GetGlobalScope() { framework::Scope& GetGlobalScope() {
static framework::Scope* g_scope = nullptr; static framework::Scope* g_scope = nullptr;
if (g_scope == nullptr) { if (g_scope == nullptr) {
......
...@@ -59,6 +59,8 @@ class Scope { ...@@ -59,6 +59,8 @@ class Scope {
/// Find the scope or an ancestor scope that contains the given variable. /// Find the scope or an ancestor scope that contains the given variable.
const Scope* FindScope(const Variable* var) const; const Scope* FindScope(const Variable* var) const;
void DeleteScope(Scope* scope);
/// Drop all kids scopes belonged to this scope. /// Drop all kids scopes belonged to this scope.
void DropKids(); void DropKids();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册