Skip to content

Commit

Permalink
Merge pull request #11180 from jacquesqiao/cherry-pick-fix-memory-pic…
Browse files Browse the repository at this point in the history
…k-to-0.13.0

fix protobuf memory leak (#11177)
  • Loading branch information
panyx0718 authored Jun 5, 2018
2 parents 12e873b + 7fb06a5 commit 9d40eb3
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 33 deletions.
28 changes: 4 additions & 24 deletions paddle/fluid/framework/block_desc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -169,17 +169,13 @@ void BlockDesc::Flush() {
}

if (need_update_) {
auto &op_field = *this->desc_->mutable_ops();
this->ClearPBOps();
op_field.Reserve(static_cast<int>(ops_.size()));
this->desc_->mutable_ops()->Clear();
for (auto &op_desc : ops_) {
op_field.AddAllocated(op_desc->Proto());
this->desc_->mutable_ops()->Add()->CopyFrom(*op_desc->Proto());
}
auto &var_field = *this->desc_->mutable_vars();
this->ClearPBVars();
var_field.Reserve(static_cast<int>(vars_.size()));
this->desc_->mutable_vars()->Clear();
for (auto &var_desc : vars_) {
var_field.AddAllocated(var_desc.second->Proto());
this->desc_->mutable_vars()->Add()->CopyFrom(*var_desc.second->Proto());
}
need_update_ = false;
}
Expand Down Expand Up @@ -217,22 +213,6 @@ BlockDesc::BlockDesc(const BlockDesc &other, proto::BlockDesc *desc,
}
}

void BlockDesc::ClearPBOps() {
auto ops = this->desc_->mutable_ops();
while (!ops->empty()) {
// we do not own the OpDesc, so release the ownership.
ops->ReleaseLast();
}
}

void BlockDesc::ClearPBVars() {
auto vars = this->desc_->mutable_vars();
while (!vars->empty()) {
// we do not own the VarDesc, so release the ownership.
vars->ReleaseLast();
}
}

void BlockDesc::SetForwardBlockID(int32_t forward_block_id) {
PADDLE_ENFORCE(!desc_->has_forward_block_idx(),
"Parent block ID has been set to %d. Cannot set to %d",
Expand Down
9 changes: 0 additions & 9 deletions paddle/fluid/framework/block_desc.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,6 @@ class BlockDesc {

BlockDesc(const BlockDesc &other, proto::BlockDesc *desc, ProgramDesc *prog);

~BlockDesc() {
this->ClearPBVars();
this->ClearPBOps();
}

int32_t ID() const { return desc_->idx(); }

int32_t Parent() const { return desc_->parent_idx(); }
Expand Down Expand Up @@ -113,10 +108,6 @@ class BlockDesc {

ProgramDesc *Program() const { return this->prog_; }

private:
void ClearPBOps();
void ClearPBVars();

private:
ProgramDesc *prog_; // not_own
proto::BlockDesc *desc_; // not_own
Expand Down

0 comments on commit 9d40eb3

Please sign in to comment.