| @@ -245,7 +245,7 @@ TEST_F(UtestGeHybrid, init_weight_success) { | |||||
| ASSERT_EQ(ret,PARAM_INVALID); | ASSERT_EQ(ret,PARAM_INVALID); | ||||
| } | } | ||||
| TEST_F(UtestGeHybrid, hybrid_model_executor) { | |||||
| TEST_F(UtestGeHybrid, hybrid_model_executor) { | |||||
| ComputeGraphPtr compute_graph = MakeShared<ComputeGraph>("abc"); | ComputeGraphPtr compute_graph = MakeShared<ComputeGraph>("abc"); | ||||
| GeRootModelPtr root_model = MakeShared<ge::GeRootModel>(compute_graph); | GeRootModelPtr root_model = MakeShared<ge::GeRootModel>(compute_graph); | ||||
| HybridModel model(root_model); | HybridModel model(root_model); | ||||
| @@ -256,3 +256,40 @@ TEST_F(UtestGeHybrid, init_weight_success) { | |||||
| HybridModelExecutor executor(model_ptr, device_id, stream); | HybridModelExecutor executor(model_ptr, device_id, stream); | ||||
| executor.Init(); | executor.Init(); | ||||
| } | } | ||||
| TEST_F(UtestGeHybrid, unfold_subgraphs_success) { | |||||
| ComputeGraphPtr merged_graph = nullptr; | |||||
| ComputeGraphPtr root_graph = std::make_shared<ComputeGraph>("root_graph"); | |||||
| auto partitioned_call_op_desc = MakeShared<OpDesc>("partitioned_call", PARTITIONEDCALL); | |||||
| auto partitioned_call_node = root_graph->AddNode(partitioned_call_op_desc); | |||||
| ComputeGraphPtr sub_graph = std::make_shared<ComputeGraph>("sub_graph"); | |||||
| OpDescPtr sub_graph_while_op_desc = CreateOpDesc("while", WHILE); | |||||
| NodePtr sub_graph_while_node = sub_graph->AddNode(op_desc); | |||||
| ComputeGraphPtr sub_sub_graph1 = std::make_shared<ComputeGraph>("while_cond"); | |||||
| OpDescPtr sub_sub_graph_while_cond_const_op_desc = CreateOpDesc("cond_const", CONST); | |||||
| NodePtr sub_sub_graph_while_cond_const_node = sub_sub_graph1->AddNode(sub_sub_graph_while_cond_const_op_desc); | |||||
| ComputeGraphPtr sub_sub_graph2 = std::make_shared<ComputeGraph>("while body"); | |||||
| OpDescPtr sub_sub_graph_while_body_const_op_desc = CreateOpDesc("body_const", CONST); | |||||
| NodePtr sub_sub_graph_while_body_const_node = sub_sub_graph2->AddNode(sub_sub_graph_while_body_const_op_desc); | |||||
| OpDescPtr sub_sub_graph_while_body_data_op_desc = CreateOpDesc("body_data", DATA); | |||||
| NodePtr sub_sub_graph_while_body_data_node = sub_sub_graph2->AddNode(sub_sub_graph_while_body_data_op_desc); | |||||
| OpDescPtr sub_sub_graph_while_body_add_op_desc = CreateOpDesc("body_add", ADD); | |||||
| NodePtr sub_sub_graph_while_body_add_node = sub_sub_graph2->AddNode(sub_sub_graph_while_body_add_node); | |||||
| sub_sub_graph_while_body_add_node->AddLinkFrom(sub_sub_graph_while_body_data_node); | |||||
| sub_sub_graph_while_body_add_node->AddLinkFrom(sub_sub_graph_while_body_const_node); | |||||
| sub_sub_graph1->AddSubGraph(sub_sub_graph1); | |||||
| sub_sub_graph2->AddSubGraph(sub_sub_graph2); | |||||
| root_graph->AddSubGraph(sub_graph); | |||||
| sub_graph->SetParentNode(partitioned_call_node); | |||||
| GeRootModelPtr root_model = MakeShared<ge::GeRootModel>(root_graph); | |||||
| HybridModel hybrid_model(root_model); | |||||
| HybridModelBuilder hybrid_model_builder(hybrid_model); | |||||
| EXPECT_EQ(hybrid_model_builder.UnfoldSubgraphs(root_graph, merged_graph), SUCCESS); | |||||
| } | |||||