From 9c92d0304fd34236d0b123fb5def0725596865c3 Mon Sep 17 00:00:00 2001 From: dzhwinter Date: Tue, 19 Feb 2019 16:32:56 +0800 Subject: [PATCH 1/3] fix default value. test=develop --- paddle/fluid/framework/details/memory_optimize_pass.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/paddle/fluid/framework/details/memory_optimize_pass.cc b/paddle/fluid/framework/details/memory_optimize_pass.cc index b35b967c72..93d08649db 100644 --- a/paddle/fluid/framework/details/memory_optimize_pass.cc +++ b/paddle/fluid/framework/details/memory_optimize_pass.cc @@ -235,7 +235,9 @@ void MemoryOptimizePass::RenameVarInGraphDesc(const std::string& var, auto* op_desc = op->Op(); op_desc->RenameInput(var, cache_var); op_desc->RenameOutput(var, cache_var); - if (op_desc->Block()->HasVar(var)) op_desc->Block()->RemoveVar(var); + if (op_desc->Block() != nullptr && op_desc->Block()->HasVar(var)) { + op_desc->Block()->RemoveVar(var); + } op_desc->Flush(); } } From 089d262c41a36d9fdd4fd61ecf3fda968fedc71a Mon Sep 17 00:00:00 2001 From: dzhwinter Date: Tue, 19 Feb 2019 16:39:57 +0800 Subject: [PATCH 2/3] fix default value. test=develop --- paddle/fluid/framework/details/memory_optimize_helper.cc | 8 +++++++- paddle/fluid/framework/details/memory_optimize_pass.cc | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/paddle/fluid/framework/details/memory_optimize_helper.cc b/paddle/fluid/framework/details/memory_optimize_helper.cc index 6126c168cc..db4e805bb6 100644 --- a/paddle/fluid/framework/details/memory_optimize_helper.cc +++ b/paddle/fluid/framework/details/memory_optimize_helper.cc @@ -129,7 +129,13 @@ size_t NodeSize(const VarDesc& node) { } size_t NodeSize(ir::Node* n) { - auto* desc = FindVarDescInBlock(n); + VarDesc* desc = nullptr; + // some op do not have block pointer + if (n->inputs[0]->Op() != nullptr) { + desc = FindVarDescInBlock(n); + } else { + desc = n->Var(); + } return NodeSize(*desc); } diff --git a/paddle/fluid/framework/details/memory_optimize_pass.cc b/paddle/fluid/framework/details/memory_optimize_pass.cc index 93d08649db..d45a43d851 100644 --- a/paddle/fluid/framework/details/memory_optimize_pass.cc +++ b/paddle/fluid/framework/details/memory_optimize_pass.cc @@ -194,7 +194,8 @@ void MemoryOptimizePass::SubGraphOptimize(OpDesc* op_desc) const { // effect. Because it is a single op in graph. No need to // update the ir nodes. sub_op_desc->Rename(var->Name(), cache->Name()); - if (sub_op_desc->Block()->HasVar(var->Name())) { + if (sub_op_desc->Block() != nullptr && + sub_op_desc->Block()->HasVar(var->Name())) { sub_op_desc->Block()->RemoveVar(var->Name()); } } From 6deb17ed8c5706835caffae94dcfa968d2151acb Mon Sep 17 00:00:00 2001 From: dzhwinter Date: Tue, 19 Feb 2019 16:59:12 +0800 Subject: [PATCH 3/3] fix default value. test=develop --- paddle/fluid/framework/details/memory_optimize_pass.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/paddle/fluid/framework/details/memory_optimize_pass.cc b/paddle/fluid/framework/details/memory_optimize_pass.cc index d45a43d851..fd02bc4697 100644 --- a/paddle/fluid/framework/details/memory_optimize_pass.cc +++ b/paddle/fluid/framework/details/memory_optimize_pass.cc @@ -236,8 +236,12 @@ void MemoryOptimizePass::RenameVarInGraphDesc(const std::string& var, auto* op_desc = op->Op(); op_desc->RenameInput(var, cache_var); op_desc->RenameOutput(var, cache_var); - if (op_desc->Block() != nullptr && op_desc->Block()->HasVar(var)) { + if (op_desc->Block() != nullptr) { op_desc->Block()->RemoveVar(var); + } else { + LOG(WARNING) << "op " << op->Name() << " not know its block." + << "Is the op_desc created without block pointer? " + << "Can not find " << var << " in Block(0)"; } op_desc->Flush(); }