From bd0a8088285e8d14b816515e29bf5f3263105445 Mon Sep 17 00:00:00 2001 From: liubuyu Date: Thu, 5 Nov 2020 19:05:45 +0800 Subject: [PATCH] dynamic shape judging bug fix --- .../backend/session/anf_runtime_algorithm.cc | 8 ++---- .../ccsrc/backend/session/session_basic.cc | 27 ++----------------- 2 files changed, 4 insertions(+), 31 deletions(-) diff --git a/mindspore/ccsrc/backend/session/anf_runtime_algorithm.cc b/mindspore/ccsrc/backend/session/anf_runtime_algorithm.cc index 773dc33084..eaca523ba0 100644 --- a/mindspore/ccsrc/backend/session/anf_runtime_algorithm.cc +++ b/mindspore/ccsrc/backend/session/anf_runtime_algorithm.cc @@ -1361,10 +1361,6 @@ std::vector AnfRuntimeAlgorithm::GetOutputMinShape(const AnfNodePtr &anf_no } } -bool CheckDynamic(const NotNull &shape) { - return !std::all_of(shape->shape().begin(), shape->shape().end(), [](int s) { return s > 0; }); -} - bool AnfRuntimeAlgorithm::IsNodeDynamicShape(const AnfNodePtr &node) { MS_EXCEPTION_IF_NULL(node); auto base_shape = node->Shape(); @@ -1373,7 +1369,7 @@ bool AnfRuntimeAlgorithm::IsNodeDynamicShape(const AnfNodePtr &node) { return false; } if (base_shape->isa()) { - if (CheckDynamic(NOT_NULL(base_shape->cast()))) { + if (IsShapeDynamic(base_shape->cast())) { return true; } } else if (base_shape->isa()) { @@ -1384,7 +1380,7 @@ bool AnfRuntimeAlgorithm::IsNodeDynamicShape(const AnfNodePtr &node) { if (!b_shape->isa()) { continue; } - if (CheckDynamic(NOT_NULL(b_shape->cast()))) { + if (IsShapeDynamic(b_shape->cast())) { return true; } } diff --git a/mindspore/ccsrc/backend/session/session_basic.cc b/mindspore/ccsrc/backend/session/session_basic.cc index 9ba0621a38..8df2d9a651 100644 --- a/mindspore/ccsrc/backend/session/session_basic.cc +++ b/mindspore/ccsrc/backend/session/session_basic.cc @@ -1415,35 +1415,12 @@ void SessionBasic::RunGraphAsync(const GraphId &graph_id, const std::vector &shape) { - return !std::all_of(shape->shape().begin(), shape->shape().end(), [](int s) { return s > 0; }); + return std::any_of(shape->shape().begin(), shape->shape().end(), [](int s) { return s < 0; }); } bool IsNodeOutputDynamicShape(const CNodePtr &anf_node_ptr) { MS_EXCEPTION_IF_NULL(anf_node_ptr); - auto base_shape = anf_node_ptr->Shape(); - if (base_shape == nullptr) { - MS_LOG(INFO) << "Invalid bash shape ptr, node:" << anf_node_ptr->fullname_with_scope(); - return false; - } - if (base_shape->isa()) { - if (IsDynamicShape(NOT_NULL(base_shape->cast()))) { - return true; - } - } else if (base_shape->isa()) { - auto tuple_shape = base_shape->cast(); - MS_EXCEPTION_IF_NULL(tuple_shape); - - for (size_t i = 0; i < tuple_shape->size(); ++i) { - auto b_shp = (*tuple_shape)[i]; - if (!b_shp->isa()) { - continue; - } - if (IsDynamicShape(NOT_NULL(b_shp->cast()))) { - return true; - } - } - } - return false; + return AnfAlgo::IsNodeDynamicShape(anf_node_ptr); } bool IsNodeInputDynamicShape(const CNodePtr &anf_node_ptr) {