|
@@ -272,115 +272,3 @@ TEST_F(UtestGeAnchor, graph_utils_test) { |
|
|
EXPECT_EQ(GraphUtils::RemoveEdge(conv_node->GetOutDataAnchor(0), bn_node->GetInControlAnchor()), GRAPH_SUCCESS); |
|
|
EXPECT_EQ(GraphUtils::RemoveEdge(conv_node->GetOutDataAnchor(0), bn_node->GetInControlAnchor()), GRAPH_SUCCESS); |
|
|
EXPECT_EQ(GraphUtils::RemoveEdge(conv_node->GetOutDataAnchor(0), bn_node->GetInControlAnchor()), GRAPH_FAILED); |
|
|
EXPECT_EQ(GraphUtils::RemoveEdge(conv_node->GetOutDataAnchor(0), bn_node->GetInControlAnchor()), GRAPH_FAILED); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
TEST_F(UtestGeAnchor, data_anchor_replace_peer) { |
|
|
|
|
|
ComputeGraphPtr graph_ptr = std::make_shared<ComputeGraph>("graph"); |
|
|
|
|
|
OpDescPtr in_op_ptr = std::make_shared<OpDesc>("in_op_1", "float"); |
|
|
|
|
|
in_op_ptr->AddInputDesc("x1", GeTensorDesc(GeShape({1, 32, 8, 8}), FORMAT_NCHW)); |
|
|
|
|
|
in_op_ptr->AddInputDesc("x2", GeTensorDesc(GeShape({1, 32, 8, 8}), FORMAT_NCHW)); |
|
|
|
|
|
in_op_ptr->AddInputDesc("x3", GeTensorDesc(GeShape({1, 32, 8, 8}), FORMAT_NCHW)); |
|
|
|
|
|
in_op_ptr->AddOutputDesc("y1", GeTensorDesc(GeShape({1, 32, 8, 8}), FORMAT_NCHW)); |
|
|
|
|
|
in_op_ptr->AddOutputDesc("y2", GeTensorDesc(GeShape({1, 32, 8, 8}), FORMAT_NCHW)); |
|
|
|
|
|
in_op_ptr->AddOutputDesc("y3", GeTensorDesc(GeShape({1, 32, 8, 8}), FORMAT_NCHW)); |
|
|
|
|
|
NodePtr node1 = graph_ptr->AddNode(in_op_ptr); |
|
|
|
|
|
NodePtr node2 = graph_ptr->AddNode(in_op_ptr); |
|
|
|
|
|
NodePtr node3 = graph_ptr->AddNode(in_op_ptr); |
|
|
|
|
|
|
|
|
|
|
|
OutDataAnchorPtr out_data_anchor = node1->GetOutDataAnchor(1); |
|
|
|
|
|
InDataAnchorPtr in_data_anchor = node2->GetInDataAnchor(1); |
|
|
|
|
|
EXPECT_EQ(out_data_anchor != nullptr, true); |
|
|
|
|
|
EXPECT_EQ(in_data_anchor != nullptr, true); |
|
|
|
|
|
EXPECT_EQ(node1->GetOutDataAnchor(1)->LinkTo(node2->GetInDataAnchor(0)), GRAPH_SUCCESS); |
|
|
|
|
|
EXPECT_EQ(node1->GetOutDataAnchor(1)->LinkTo(node2->GetInDataAnchor(1)), GRAPH_SUCCESS); |
|
|
|
|
|
EXPECT_EQ(node1->GetOutDataAnchor(1)->LinkTo(node2->GetInDataAnchor(2)), GRAPH_SUCCESS); |
|
|
|
|
|
|
|
|
|
|
|
size_t out_idx = 0; |
|
|
|
|
|
for (; out_idx < out_data_anchor->peer_anchors_.size(); out_idx++) { |
|
|
|
|
|
if (out_data_anchor->peer_anchors_[out_idx].lock() == in_data_anchor) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
EXPECT_EQ(out_idx, 1); |
|
|
|
|
|
|
|
|
|
|
|
size_t in_idx = 0; |
|
|
|
|
|
for (; in_idx < in_data_anchor->peer_anchors_.size(); in_idx++) { |
|
|
|
|
|
if (in_data_anchor->peer_anchors_[in_idx].lock() == out_data_anchor) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
EXPECT_EQ(in_idx, 0); |
|
|
|
|
|
|
|
|
|
|
|
out_data_anchor->ReplacePeer(in_data_anchor, node3->GetInDataAnchor(1), node3->GetOutDataAnchor(1)); |
|
|
|
|
|
|
|
|
|
|
|
size_t out_idx1 = 0; |
|
|
|
|
|
for (; out_idx1 < out_data_anchor->peer_anchors_.size(); out_idx1++) { |
|
|
|
|
|
if (out_data_anchor->peer_anchors_[out_idx1].lock() == node3->GetInDataAnchor(1)) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
EXPECT_EQ(out_idx1, out_idx); |
|
|
|
|
|
|
|
|
|
|
|
size_t in_idx1 = 0; |
|
|
|
|
|
for (; in_idx1 < in_data_anchor->peer_anchors_.size(); in_idx1++) { |
|
|
|
|
|
if (in_data_anchor->peer_anchors_[in_idx1].lock() == node3->GetOutDataAnchor(1)) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
EXPECT_EQ(in_idx1, in_idx); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
TEST_F(UtestGeAnchor, graph_utils_insert_node) { |
|
|
|
|
|
ComputeGraphPtr graph_ptr = std::make_shared<ComputeGraph>("graph"); |
|
|
|
|
|
OpDescPtr in_op_ptr = std::make_shared<OpDesc>("in_op_1", "float"); |
|
|
|
|
|
in_op_ptr->AddInputDesc("x1", GeTensorDesc(GeShape({1, 32, 8, 8}), FORMAT_NCHW)); |
|
|
|
|
|
in_op_ptr->AddInputDesc("x2", GeTensorDesc(GeShape({1, 32, 8, 8}), FORMAT_NCHW)); |
|
|
|
|
|
in_op_ptr->AddInputDesc("x3", GeTensorDesc(GeShape({1, 32, 8, 8}), FORMAT_NCHW)); |
|
|
|
|
|
in_op_ptr->AddOutputDesc("y1", GeTensorDesc(GeShape({1, 32, 8, 8}), FORMAT_NCHW)); |
|
|
|
|
|
in_op_ptr->AddOutputDesc("y2", GeTensorDesc(GeShape({1, 32, 8, 8}), FORMAT_NCHW)); |
|
|
|
|
|
in_op_ptr->AddOutputDesc("y3", GeTensorDesc(GeShape({1, 32, 8, 8}), FORMAT_NCHW)); |
|
|
|
|
|
NodePtr node1 = graph_ptr->AddNode(in_op_ptr); |
|
|
|
|
|
NodePtr node2 = graph_ptr->AddNode(in_op_ptr); |
|
|
|
|
|
NodePtr node3 = graph_ptr->AddNode(in_op_ptr); |
|
|
|
|
|
|
|
|
|
|
|
OutDataAnchorPtr out_data_anchor = node1->GetOutDataAnchor(1); |
|
|
|
|
|
InDataAnchorPtr in_data_anchor = node2->GetInDataAnchor(1); |
|
|
|
|
|
EXPECT_EQ(out_data_anchor != nullptr, true); |
|
|
|
|
|
EXPECT_EQ(in_data_anchor != nullptr, true); |
|
|
|
|
|
EXPECT_EQ(node1->GetOutDataAnchor(1)->LinkTo(node2->GetInDataAnchor(0)), GRAPH_SUCCESS); |
|
|
|
|
|
EXPECT_EQ(node1->GetOutDataAnchor(1)->LinkTo(node2->GetInDataAnchor(1)), GRAPH_SUCCESS); |
|
|
|
|
|
EXPECT_EQ(node1->GetOutDataAnchor(1)->LinkTo(node2->GetInDataAnchor(2)), GRAPH_SUCCESS); |
|
|
|
|
|
|
|
|
|
|
|
size_t out_idx = 0; |
|
|
|
|
|
for (; out_idx < out_data_anchor->peer_anchors_.size(); out_idx++) { |
|
|
|
|
|
if (out_data_anchor->peer_anchors_[out_idx].lock() == in_data_anchor) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
EXPECT_EQ(out_idx, 1); |
|
|
|
|
|
|
|
|
|
|
|
size_t in_idx = 0; |
|
|
|
|
|
for (; in_idx < in_data_anchor->peer_anchors_.size(); in_idx++) { |
|
|
|
|
|
if (in_data_anchor->peer_anchors_[in_idx].lock() == out_data_anchor) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
EXPECT_EQ(in_idx, 0); |
|
|
|
|
|
|
|
|
|
|
|
GraphUtils::InsertNodeBetweenDataAnchors(out_data_anchor, in_data_anchor, node3); |
|
|
|
|
|
|
|
|
|
|
|
size_t out_idx1 = 0; |
|
|
|
|
|
for (; out_idx1 < out_data_anchor->peer_anchors_.size(); out_idx1++) { |
|
|
|
|
|
if (out_data_anchor->peer_anchors_[out_idx1].lock() == node3->GetInDataAnchor(0)) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
EXPECT_EQ(out_idx1, out_idx); |
|
|
|
|
|
|
|
|
|
|
|
size_t in_idx1 = 0; |
|
|
|
|
|
for (; in_idx1 < in_data_anchor->peer_anchors_.size(); in_idx1++) { |
|
|
|
|
|
if (in_data_anchor->peer_anchors_[in_idx1].lock() == node3->GetOutDataAnchor(0)) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
EXPECT_EQ(in_idx1, in_idx); |
|
|
|
|
|
} |
|
|
|