| @@ -48,50 +48,23 @@ namespace ge { | |||||
| using Cluster = DynamicShapePartitioner::Cluster; | using Cluster = DynamicShapePartitioner::Cluster; | ||||
| using ClusterPtr = std::shared_ptr<Cluster>; | using ClusterPtr = std::shared_ptr<Cluster>; | ||||
| static bool IsInExperimentalMode(const ComputeGraphPtr &root_graph) { | |||||
| static bool IsSingleOpScene(const ComputeGraphPtr &root_graph) { | |||||
| for (const auto &node : root_graph->GetAllNodes()) { | for (const auto &node : root_graph->GetAllNodes()) { | ||||
| GE_CHECK_NOTNULL(node->GetOpDesc()); | GE_CHECK_NOTNULL(node->GetOpDesc()); | ||||
| // not do partition in single op scene. | // not do partition in single op scene. | ||||
| bool is_singleop = false; | bool is_singleop = false; | ||||
| (void)AttrUtils::GetBool(node->GetOpDesc(), ATTR_SINGLE_OP_SCENE, is_singleop); | (void)AttrUtils::GetBool(node->GetOpDesc(), ATTR_SINGLE_OP_SCENE, is_singleop); | ||||
| if (is_singleop) { | if (is_singleop) { | ||||
| return false; | |||||
| } | |||||
| for (const auto &input_desc : node->GetOpDesc()->GetAllInputsDesc()) { | |||||
| auto type = input_desc.GetDataType(); | |||||
| if (type == DT_STRING || type == DT_RESOURCE || type == DT_STRING_REF) { | |||||
| if (std::getenv("EXPERIMENTAL_DYNAMIC_PARTITION") == nullptr) { | |||||
| return false; | |||||
| } else { | |||||
| GEEVENT("In dynamic shape scene, model contains data type:" | |||||
| "DT_STRING/DT_RESOURCE/DT_STRING_REF may not be supported well " | |||||
| "temporarily, please retry with \"unset EXPERIMENTAL_DYNAMIC_PARTITION\"."); | |||||
| break; | |||||
| } | |||||
| } | |||||
| } | |||||
| for (const auto &output_desc : node->GetOpDesc()->GetAllOutputsDesc()) { | |||||
| auto type = output_desc.GetDataType(); | |||||
| if (type == DT_STRING || type == DT_RESOURCE || type == DT_STRING_REF) { | |||||
| if (std::getenv("EXPERIMENTAL_DYNAMIC_PARTITION") == nullptr) { | |||||
| return false; | |||||
| } else { | |||||
| GEEVENT("In dynamic shape scene, model contains data type:" | |||||
| "DT_STRING/DT_RESOURCE/DT_STRING_REF may not be supported well " | |||||
| "temporarily, please retry with \"unset EXPERIMENTAL_DYNAMIC_PARTITION\"."); | |||||
| break; | |||||
| } | |||||
| } | |||||
| return true; | |||||
| } | } | ||||
| } | } | ||||
| return true; | |||||
| return false; | |||||
| } | } | ||||
| Status DynamicShapePartitioner::Partition() { | Status DynamicShapePartitioner::Partition() { | ||||
| REQUIRE_NOT_NULL(root_graph_, "Graph is nullptr."); | REQUIRE_NOT_NULL(root_graph_, "Graph is nullptr."); | ||||
| if (!IsInExperimentalMode(root_graph_)) { | |||||
| GELOGD("Skip dynamic shape partition as not in experimental mode."); | |||||
| if (IsSingleOpScene(root_graph_)) { | |||||
| GELOGD("Skip dynamic shape partition as in single op scene."); | |||||
| REQUIRE(AttrUtils::SetBool(*root_graph_, ATTR_NAME_DYNAMIC_SHAPE_PARTITIONED, false), | REQUIRE(AttrUtils::SetBool(*root_graph_, ATTR_NAME_DYNAMIC_SHAPE_PARTITIONED, false), | ||||
| "Failed set dynamic shape partitioned flag on root graph."); | "Failed set dynamic shape partitioned flag on root graph."); | ||||
| return SUCCESS; | return SUCCESS; | ||||