diff --git a/paddle/fluid/framework/new_executor/interpretercore.cc b/paddle/fluid/framework/new_executor/interpretercore.cc index a8007c2f26a0e82ebbdf87399de1560921e94353..5b00214566c8355cb962475bce97bf9ec2affe5b 100644 --- a/paddle/fluid/framework/new_executor/interpretercore.cc +++ b/paddle/fluid/framework/new_executor/interpretercore.cc @@ -502,11 +502,11 @@ void InterpreterCore::CheckGC(const Instruction& instr) { for (auto var_id : instr.GCCheckVars()) { bool is_ready = atomic_var_ref[var_id]->fetch_sub(1, std::memory_order_relaxed) == 1; - if (is_ready && var_scope.VarDesc(var_id) && - !var_scope.VarDesc(var_id)->Persistable()) { - gc_.Add(var_scope.Var(var_id), gc_event_.at(instr_id), - &instr.DeviceContext()); - } else if (is_ready && var_scope.VarDesc(var_id) == nullptr) { + // ignore all persistable var while GC + if (var_scope.VarDesc(var_id) && var_scope.VarDesc(var_id)->Persistable()) { + continue; + } + if (is_ready) { gc_.Add(var_scope.Var(var_id), gc_event_.at(instr_id), &instr.DeviceContext()); } diff --git a/paddle/fluid/framework/new_executor/interpretercore_util.cc b/paddle/fluid/framework/new_executor/interpretercore_util.cc index 9de03a435ab586b388af187abbc73310e557c82c..fdc5617eaff96ae31ed538f446fdd355bb7e8cdb 100644 --- a/paddle/fluid/framework/new_executor/interpretercore_util.cc +++ b/paddle/fluid/framework/new_executor/interpretercore_util.cc @@ -146,7 +146,7 @@ void build_variable_scope(const framework::ProgramDesc& pdesc, if (nullptr == var_desc_tmp) { VLOG(3) << "update var:" << var_name << " desc from nullptr into " << var_desc; - var_scope->VarMetaInfo(var_name).vardesc_ = var_desc; + var_scope->SetVarDesc(var_name, var_desc); } } } diff --git a/paddle/fluid/framework/new_executor/new_executor_defs.h b/paddle/fluid/framework/new_executor/new_executor_defs.h index d70243b93fed3fcd0ec67a1a8ac12b039009587e..580a0ed8d5fc7b9c3dff38f5d7f337766412122e 100644 --- a/paddle/fluid/framework/new_executor/new_executor_defs.h +++ b/paddle/fluid/framework/new_executor/new_executor_defs.h @@ -564,6 +564,11 @@ class VariableScope : public ScopeBase { vec_meta_info_.push_back(info); } + void SetVarDesc(const std::string& name, framework::VarDesc* var_desc) { + CheckExist(name); + vec_meta_info_[VarId(name)].vardesc_ = var_desc; + } + paddle::framework::VarDesc* VarDesc(const std::string& name) const { return VarDesc(VarId(name)); } @@ -573,10 +578,6 @@ class VariableScope : public ScopeBase { return vec_meta_info_[id].vardesc_; } - VariableMetaInfo& VarMetaInfo(const std::string& name) { - return vec_meta_info_[VarId(name)]; - } - void CheckExist(int id) const { PADDLE_ENFORCE_LT(id, var_list_.size(), platform::errors::PreconditionNotMet(