diff --git a/build.sh b/build.sh index 7b6da560..a7e87cd5 100644 --- a/build.sh +++ b/build.sh @@ -76,8 +76,8 @@ checkopts() ENABLE_GE_ST="on" ;; t) - ENABLE_GE_UT="on" - ;; + ENABLE_GE_UT="on" + ;; c) ENABLE_GE_COV="on" ;; @@ -214,13 +214,14 @@ if [[ "X$ENABLE_GE_UT" = "Xon" || "X$ENABLE_GE_COV" = "Xon" ]]; then cp ${BUILD_PATH}/tests/ut/ge/ut_libge_others_utest ${OUTPUT_PATH} cp ${BUILD_PATH}/tests/ut/ge/ut_libge_kernel_utest ${OUTPUT_PATH} - ${OUTPUT_PATH}/ut_libgraph && - ${OUTPUT_PATH}/ut_libge_multiparts_utest && - ${OUTPUT_PATH}/ut_libge_distinct_load_utest && - ${OUTPUT_PATH}/ut_libge_others_utest && - ${OUTPUT_PATH}/ut_libge_kernel_utest + RUN_TEST_CASE=${OUTPUT_PATH}/ut_libgraph && ${RUN_TEST_CASE} && + RUN_TEST_CASE=${OUTPUT_PATH}/ut_libge_multiparts_utest && ${RUN_TEST_CASE} && + RUN_TEST_CASE=${OUTPUT_PATH}/ut_libge_distinct_load_utest && ${RUN_TEST_CASE} && + RUN_TEST_CASE=${OUTPUT_PATH}/ut_libge_others_utest && ${RUN_TEST_CASE} && + RUN_TEST_CASE=${OUTPUT_PATH}/ut_libge_kernel_utest && ${RUN_TEST_CASE} if [[ "$?" -ne 0 ]]; then echo "!!! UT FAILED, PLEASE CHECK YOUR CHANGES !!!" + echo -e "\033[31m${RUN_TEST_CASE}\033[0m" exit 1; fi echo "Generating coverage statistics, please wait..." diff --git a/ge/CMakeLists.txt b/ge/CMakeLists.txt index a7fd2794..30e91bb3 100755 --- a/ge/CMakeLists.txt +++ b/ge/CMakeLists.txt @@ -607,8 +607,8 @@ set(INFER_SRC_LIST "graph/passes/hccl_group_pass.cc" "graph/passes/memcpy_addr_async_pass.cc" "graph/passes/set_input_output_offset_pass.cc" - "graph/passes/parallel_group_pass.cc" "graph/manager/model_manager/event_manager.cc" + "graph/passes/parallel_group_pass.cc" "graph/manager/util/rt_context_util.cc" "graph/manager/util/variable_accelerate_ctrl.cc" "graph/manager/util/debug.cc" diff --git a/ge/graph/passes/parallel_group_pass.cc b/ge/graph/passes/parallel_group_pass.cc index b3225dd0..b682f17a 100644 --- a/ge/graph/passes/parallel_group_pass.cc +++ b/ge/graph/passes/parallel_group_pass.cc @@ -83,7 +83,7 @@ Status ParallelGroupPass::ProcessAllGraph(ComputeGraphPtr graph, std::unordered_ if (!is_unknown_shape) { group_node[group_id].push_back(node); parallel_group.insert(group_id); - GELOGI("Find hccl node:%s, group_id=%d", op_desc->GetName().c_str(), group_id); + GELOGD("Find group node:%s, group_id=%d", node->GetName().c_str(), group_id); } } @@ -116,7 +116,8 @@ Status ParallelGroupPass::ProcessAllGraph(ComputeGraphPtr graph, std::unordered_ cur_node = node_vec[i]; auto tmp_pre_node = pre_node; auto tmp_cur_node = cur_node; - GELOGI("original we should add ctrl anchor for node1:%s------>node2:%s", pre_node->GetName().c_str(), cur_node->GetName().c_str()); + GELOGD("original add ctrl anchor for node:%s-->node:%s", pre_node->GetName().c_str(), + cur_node->GetName().c_str()); ReplaceSwitchAndMerge(tmp_pre_node, tmp_cur_node, node_2_switch_merge); pre_node = cur_node; } @@ -127,13 +128,13 @@ Status ParallelGroupPass::ProcessAllGraph(ComputeGraphPtr graph, std::unordered_ void ParallelGroupPass::AddCtrlEdge(NodePtr pre_node, NodePtr cur_node) { if (pre_node == cur_node) { - GELOGI("--- pr_node == cur_node"); return; } const auto &in_node = cur_node->GetInAllNodes(); for (const auto &node : in_node) { if (pre_node == node) { - GELOGI("--- pr_node and cur_node have linked"); + GELOGD("node:%s and node:%s has linked", pre_node->GetName().c_str(), + cur_node->GetName().c_str()); return; } } @@ -211,7 +212,7 @@ Status ParallelGroupPass::ProcessSwitch(ComputeGraphPtr graph, auto &tmp = it->second; auto &switch_vec = tmp.first; const auto &merge_node = tmp.second; - GELOGI(" --- hccl node: %s, switch node %s, merge node :%s.", + GELOGD("Find group node: %s in switch node %s and merge node :%s.", group_node->GetName().c_str(), node->GetName().c_str(), merge_node->GetName().c_str()); if (merge_node != merge_vec.back()) { GELOGE(GRAPH_FAILED, "error: has two merge node: %s and %s.", @@ -263,15 +264,15 @@ void ParallelGroupPass::ReplaceSwitchAndMerge(NodePtr &pre_node, pre_node = pre_itr->second.second; for (const auto &switch_node : cur_itr->second.first) { AddCtrlEdge(pre_node, switch_node); - GELOGI("changed we should add ctrl anchor for node1:%s------>node2:%s", pre_node->GetName().c_str(), switch_node->GetName().c_str()); + GELOGD("finally add ctrl anchor for node:%s-->node:%s", pre_node->GetName().c_str(), + switch_node->GetName().c_str()); } - } else { - GELOGI("--- no need add ctrl edge"); } } else { pre_node = pre_itr->second.second; AddCtrlEdge(pre_node, cur_node); - GELOGI("changed we should add ctrl anchor for node1:%s------>node2:%s", pre_node->GetName().c_str(), cur_node->GetName().c_str()); + GELOGD("finally add ctrl anchor for node:%s-->node:%s", pre_node->GetName().c_str(), + cur_node->GetName().c_str()); } } else { if (cur_itr != node_2_switch_merge.end()) { @@ -281,20 +282,24 @@ void ParallelGroupPass::ReplaceSwitchAndMerge(NodePtr &pre_node, if (pre_id > switch_id) { // special handle for merge and group node auto merge_node = cur_itr->second.second; AddCtrlEdge(merge_node, pre_node); - GELOGI("changed we should add ctrl anchor for node1:%s------>node2:%s", merge_node->GetName().c_str(), pre_node->GetName().c_str()); + GELOGD("finally add ctrl anchor for node:%s-->node:%s", merge_node->GetName().c_str(), + pre_node->GetName().c_str()); } else { AddCtrlEdge(pre_node, switch_node); - GELOGI("changed we should add ctrl anchor for node1:%s------>node2:%s", pre_node->GetName().c_str(), switch_node->GetName().c_str()); + GELOGD("finally add ctrl anchor for node:%s-->node:%s", pre_node->GetName().c_str(), + switch_node->GetName().c_str()); } } } else { AddCtrlEdge(pre_node, cur_node); - GELOGI("changed we should add ctrl anchor for node1:%s------>node2:%s", pre_node->GetName().c_str(), cur_node->GetName().c_str()); + GELOGD("finally add ctrl anchor for node:%s-->node:%s", pre_node->GetName().c_str(), + cur_node->GetName().c_str()); } } } -bool ParallelGroupPass::HasSameSwitch(const std::set &switch_set1, const std::set &switch_set2) { +bool ParallelGroupPass::HasSameSwitch(const std::set &switch_set1, + const std::set &switch_set2) { for (const auto &node1 : switch_set1) { for (const auto &node2 : switch_set2) { if (node1 == node2) { diff --git a/metadef b/metadef index a2b80cb2..b6de68fd 160000 --- a/metadef +++ b/metadef @@ -1 +1 @@ -Subproject commit a2b80cb22a62a6757c7dd31e684ca632e0b79268 +Subproject commit b6de68fdf0f131fd5f8aa3a84245ad7779b348f5 diff --git a/parser b/parser index cfabf622..7a631135 160000 --- a/parser +++ b/parser @@ -1 +1 @@ -Subproject commit cfabf622b803d5957563a73652a0ce5086aab99d +Subproject commit 7a6311351f8294eb11033b10e9f7b2b993cc3c2a diff --git a/tests/ut/ge/CMakeLists.txt b/tests/ut/ge/CMakeLists.txt index 8e91969f..cd3be907 100755 --- a/tests/ut/ge/CMakeLists.txt +++ b/tests/ut/ge/CMakeLists.txt @@ -522,6 +522,7 @@ set(GRAPH_PASS_COMMON_SRC_FILES "${GE_CODE_DIR}/ge/graph/passes/hccl_memcpy_pass.cc" "${GE_CODE_DIR}/ge/graph/passes/no_use_reshape_remove_pass.cc" "${GE_CODE_DIR}/ge/graph/passes/infershape_pass.cc" + "${GE_CODE_DIR}/ge/graph/passes/parallel_group_pass.cc" "${GE_CODE_DIR}/ge/ge_local_engine/engine/host_cpu_engine.cc" "${GE_CODE_DIR}/ge/analyzer/analyzer.cc" "${GE_CODE_DIR}/ge/graph/passes/net_output_pass.cc" diff --git a/tests/ut/ge/graph/build/logical_stream_allocator_unittest.cc b/tests/ut/ge/graph/build/logical_stream_allocator_unittest.cc index 20e005c5..a2204db2 100644 --- a/tests/ut/ge/graph/build/logical_stream_allocator_unittest.cc +++ b/tests/ut/ge/graph/build/logical_stream_allocator_unittest.cc @@ -170,6 +170,22 @@ class UtestLogicalStreamAllocator : public testing::Test { return CreateSubgraphWithName("graph", engine, stream_label, in_num, out_num); } + SubGraphInfoPtr CreateParallelGroupSubgraphWithName(const string &name, const string &engine, + const string &stream_label = "", + int group_id = 1) { + ComputeGraphPtr compute_graph = make_shared(name); + OpDescPtr op_desc = std::make_shared("relu", "Relu"); + op_desc->AddInputDesc(GeTensorDesc()); + op_desc->AddOutputDesc(GeTensorDesc()); + AttrUtils::SetInt(op_desc, ATTR_NAME_PARALLEL_GROUP, group_id); + compute_graph->AddNode(op_desc); + + SubGraphInfoPtr subgraph = BuildSubGraph(compute_graph, engine, stream_label); + AddPlaceHolderAndEnd(subgraph, 1, 1); + + return subgraph; + } + void LinkSubGraph(SubGraphInfoPtr subgraph1, const string &end_name, SubGraphInfoPtr subgraph2, const string &placeholder_name) { NodePtr end_node = subgraph1->GetSubGraph()->FindNode(end_name);