Browse Source

Pre Merge pull request !563 from lixiwen1/development

pull/563/MERGE
lixiwen1 Gitee 4 years ago
parent
commit
d0b0559d03
7 changed files with 91 additions and 0 deletions
  1. +2
    -0
      ge/CMakeLists.txt
  2. +1
    -0
      ge/ge_inference.mk
  3. +1
    -0
      ge/ge_runner.mk
  4. +4
    -0
      ge/graph/manager/graph_manager.cc
  5. +54
    -0
      ge/graph/passes/dynamic_single_op_reset_shape_pass.cc
  6. +28
    -0
      ge/graph/passes/dynamic_single_op_reset_shape_pass.h
  7. +1
    -0
      tests/ut/ge/CMakeLists.txt

+ 2
- 0
ge/CMakeLists.txt View File

@@ -142,6 +142,7 @@ set(TRAIN_SRC_LIST
"graph/passes/atomic_addr_clean_pass.cc" "graph/passes/atomic_addr_clean_pass.cc"
"graph/passes/mark_same_addr_pass.cc" "graph/passes/mark_same_addr_pass.cc"
"graph/passes/mark_graph_unknown_status_pass.cc" "graph/passes/mark_graph_unknown_status_pass.cc"
"graph/passes/dynamic_single_op_reset_shape_pass.cc"
"graph/passes/mark_agnostic_pass.cc" "graph/passes/mark_agnostic_pass.cc"
"graph/partition/dynamic_shape_partition.cc" "graph/partition/dynamic_shape_partition.cc"
"graph/partition/stage_partition.cc" "graph/partition/stage_partition.cc"
@@ -433,6 +434,7 @@ set(INFER_SRC_LIST
"graph/passes/atomic_addr_clean_pass.cc" "graph/passes/atomic_addr_clean_pass.cc"
"graph/passes/mark_same_addr_pass.cc" "graph/passes/mark_same_addr_pass.cc"
"graph/passes/mark_graph_unknown_status_pass.cc" "graph/passes/mark_graph_unknown_status_pass.cc"
"graph/passes/dynamic_single_op_reset_shape_pass.cc"
"graph/passes/mark_agnostic_pass.cc" "graph/passes/mark_agnostic_pass.cc"
"graph/common/omg_util.cc" "graph/common/omg_util.cc"
"graph/common/bcast.cc" "graph/common/bcast.cc"


+ 1
- 0
ge/ge_inference.mk View File

@@ -109,6 +109,7 @@ OMG_HOST_SRC_FILES := \
graph/passes/atomic_addr_clean_pass.cc \ graph/passes/atomic_addr_clean_pass.cc \
graph/passes/mark_same_addr_pass.cc \ graph/passes/mark_same_addr_pass.cc \
graph/passes/mark_graph_unknown_status_pass.cc \ graph/passes/mark_graph_unknown_status_pass.cc \
graph/passes/dynamic_single_op_reset_shape_pass.cc \
graph/passes/mark_agnostic_pass.cc \ graph/passes/mark_agnostic_pass.cc \
graph/common/omg_util.cc \ graph/common/omg_util.cc \
graph/common/bcast.cc \ graph/common/bcast.cc \


+ 1
- 0
ge/ge_runner.mk View File

@@ -111,6 +111,7 @@ LIBGE_LOCAL_SRC_FILES := \
graph/passes/atomic_addr_clean_pass.cc \ graph/passes/atomic_addr_clean_pass.cc \
graph/passes/mark_same_addr_pass.cc \ graph/passes/mark_same_addr_pass.cc \
graph/passes/mark_graph_unknown_status_pass.cc \ graph/passes/mark_graph_unknown_status_pass.cc \
graph/passes/dynamic_single_op_reset_shape_pass.cc \
graph/passes/mark_agnostic_pass.cc \ graph/passes/mark_agnostic_pass.cc \
graph/partition/dynamic_shape_partition.cc \ graph/partition/dynamic_shape_partition.cc \
graph/partition/stage_partition.cc \ graph/partition/stage_partition.cc \


+ 4
- 0
ge/graph/manager/graph_manager.cc View File

@@ -69,6 +69,7 @@
#include "graph/passes/iterator_op_pass.h" #include "graph/passes/iterator_op_pass.h"
#include "graph/passes/link_gen_mask_nodes_pass.h" #include "graph/passes/link_gen_mask_nodes_pass.h"
#include "graph/passes/mark_graph_unknown_status_pass.h" #include "graph/passes/mark_graph_unknown_status_pass.h"
#include "graph/passes/dynamic_single_op_reset_shape_pass.h"
#include "graph/passes/merge_pass.h" #include "graph/passes/merge_pass.h"
#include "graph/passes/merge_input_memcpy_pass.h" #include "graph/passes/merge_input_memcpy_pass.h"
#include "graph/passes/merge_to_stream_merge_pass.h" #include "graph/passes/merge_to_stream_merge_pass.h"
@@ -2280,6 +2281,9 @@ Status GraphManager::OptimizeStage2(ge::ComputeGraphPtr &compute_graph) {
new (std::nothrow) VariableRefDeleteOpPass)) new (std::nothrow) VariableRefDeleteOpPass))
GE_CHK_STATUS_RET(pass_for_control_attr_optimize.AddPass("OptimizeStage2::ControlAttrOptimize::CompileNodesPass", GE_CHK_STATUS_RET(pass_for_control_attr_optimize.AddPass("OptimizeStage2::ControlAttrOptimize::CompileNodesPass",
new (std::nothrow) CompileNodesPass)) new (std::nothrow) CompileNodesPass))
GE_CHK_STATUS_RET(
pass_for_control_attr_optimize.AddPass("OptimizeStage2::AfterMergePasses::DynamicSingleOpResetShapePass",
new (std::nothrow) DynamicSingleOpResetShapePass))
GE_CHK_STATUS_RET(pass_for_control_attr_optimize.AddPass( GE_CHK_STATUS_RET(pass_for_control_attr_optimize.AddPass(
"OptimizeStage2::AfterMergePasses::MarkGraphUnknownStatusPass", new(std::nothrow) MarkGraphUnknownStatusPass)) "OptimizeStage2::AfterMergePasses::MarkGraphUnknownStatusPass", new(std::nothrow) MarkGraphUnknownStatusPass))
GE_CHK_STATUS_RET( GE_CHK_STATUS_RET(


+ 54
- 0
ge/graph/passes/dynamic_single_op_reset_shape_pass.cc View File

@@ -0,0 +1,54 @@
/**
* Copyright 2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#include "graph/passes/dynamic_single_op_reset_shape_pass.h"
#include "graph/utils/node_utils.h"
#include "graph/utils/graph_utils.h"
#include "graph/utils/tensor_utils.h"
#include "graph/utils/op_desc_utils.h"
#include "graph/utils/type_utils.h"
#include "graph/debug/ge_attr_define.h"

namespace ge {
Status DynamicSingleOpResetShapePass::Run(ComputeGraphPtr graph) {
GE_CHECK_NOTNULL(graph);
for (const auto &node : graph->GetDirectNode()) {
GE_CHECK_NOTNULL(node->GetOpDesc());
if (node->GetType() == DATA || node->GetType() == NETOUTPUT) {
continue;
}

bool single_aicpu_unknown = false;
if (!AttrUtils::GetBool(node->GetOpDesc(), ATTR_DYNAMIC_SHAPE_SINGLE_AICPU, single_aicpu_unknown) ||
!single_aicpu_unknown) {
continue;
}

auto op_desc = node->GetOpDesc();
std::vector<int64_t> dynamic_shape_dims = {-2};
ge::Shape dynamic_shape(dynamic_shape_dims);
for (size_t i = 0; i < op_desc->GetAllInputsDesc().size(); i++) {
const auto &input_desc = op_desc->MutableInputDesc(static_cast<uint32_t>(i));
GE_CHECK_NOTNULL(input_desc);
input_desc.SetShape(dynamic_shape);
}
GELOGD("Reset dynamic aicpu node [%s] shape success!", node->GetName().c_str());
}

GELOGD("Reset dynamic aicpu nodes shape of graph [%s] success!", graph->GetName().c_str());
return SUCCESS;
}
} // namespace ge

+ 28
- 0
ge/graph/passes/dynamic_single_op_reset_shape_pass.h View File

@@ -0,0 +1,28 @@
/**
* Copyright 2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef GE_GRAPH_PASSES_DYNAMIC_SINGLE_OP_RESET_SHAPE_PASS_H_
#define GE_GRAPH_PASSES_DYNAMIC_SINGLE_OP_RESET_SHAPE_PASS_H_
#include "graph/graph.h"
#include "inc/graph_pass.h"

namespace ge {
class DynamicSingleOpResetShapePass : public GraphPass {
public:
Status Run(ComputeGraphPtr graph);
};
} // namespace ge
#endif // GE_GRAPH_PASSES_DYNAMIC_SINGLE_OP_RESET_SHAPE_PASS_H_

+ 1
- 0
tests/ut/ge/CMakeLists.txt View File

@@ -182,6 +182,7 @@ set(COMMON_SRC_FILES
"${GE_CODE_DIR}/ge/graph/passes/atomic_addr_clean_pass.cc" "${GE_CODE_DIR}/ge/graph/passes/atomic_addr_clean_pass.cc"
"${GE_CODE_DIR}/ge/graph/passes/mark_same_addr_pass.cc" "${GE_CODE_DIR}/ge/graph/passes/mark_same_addr_pass.cc"
"${GE_CODE_DIR}/ge/graph/passes/mark_graph_unknown_status_pass.cc" "${GE_CODE_DIR}/ge/graph/passes/mark_graph_unknown_status_pass.cc"
"${GE_CODE_DIR}/ge/graph/passes/dynamic_single_op_reset_shape_pass.cc"
"${GE_CODE_DIR}/ge/graph/passes/mark_agnostic_pass.cc" "${GE_CODE_DIR}/ge/graph/passes/mark_agnostic_pass.cc"
"${GE_CODE_DIR}/ge/graph/passes/dimension_compute_pass.cc" "${GE_CODE_DIR}/ge/graph/passes/dimension_compute_pass.cc"
"${GE_CODE_DIR}/ge/graph/passes/dimension_adjust_pass.cc" "${GE_CODE_DIR}/ge/graph/passes/dimension_adjust_pass.cc"


Loading…
Cancel
Save