Browse Source

multi graph and control flow

asyn dynamic shape

format

control flow error

format
tags/v1.1.0
hwjiaorui 5 years ago
parent
commit
aa3e94bbe8
3 changed files with 13 additions and 2 deletions
  1. +1
    -2
      mindspore/ccsrc/backend/session/ascend_session.cc
  2. +11
    -0
      mindspore/ccsrc/backend/session/session_basic.cc
  3. +1
    -0
      mindspore/ccsrc/backend/session/session_basic.h

+ 1
- 2
mindspore/ccsrc/backend/session/ascend_session.cc View File

@@ -146,8 +146,7 @@ GraphId AscendSession::CompileGraphImpl(NotNull<FuncGraphPtr> func_graph) {
std::vector<KernelGraphPtr> all_graphs;
auto root_graph = ConstructKernelGraph(func_graph, &all_graphs);
// Update Graph Dynamic Shape Attr
UpdateGraphDynamicShapeAttr(NOT_NULL(root_graph));
root_graph->UpdateGraphDynamicAttr();
UpdateAllGraphDynamicShapeAttr(all_graphs);
BackendOptimization(all_graphs);
// empty graph dont entry to backend
if (root_graph->execution_order().empty()) {


+ 11
- 0
mindspore/ccsrc/backend/session/session_basic.cc View File

@@ -1527,6 +1527,17 @@ bool IsNodeInputDynamicShape(const CNodePtr &anf_node_ptr) {
return false;
}

void SessionBasic::UpdateAllGraphDynamicShapeAttr(const std::vector<KernelGraphPtr> &all_graphs) {
bool is_dynamic = false;
for (const auto &graph : all_graphs) {
UpdateGraphDynamicShapeAttr(NOT_NULL(graph));
is_dynamic = graph->is_dynamic_shape() || is_dynamic;
}
if (is_dynamic && all_graphs.size() > 1) {
MS_LOG(EXCEPTION) << "Dynamic shape is not supported with control flow.";
}
}

void SessionBasic::UpdateGraphDynamicShapeAttr(const NotNull<KernelGraphPtr> &root_graph) {
for (const auto &cnode : root_graph->execution_order()) {
auto output_dynamic = IsNodeOutputDynamicShape(NOT_NULL(cnode));


+ 1
- 0
mindspore/ccsrc/backend/session/session_basic.h View File

@@ -180,6 +180,7 @@ class SessionBasic : public std::enable_shared_from_this<SessionBasic> {
void InitInternalOutputParameter(const AnfNodePtr &out_node, const AnfNodePtr &parameter);
AnfNodePtr FindPullNode(const AnfNodePtr &push_node, const std::vector<AnfNodePtr> &node_list);
void UpdateGraphDynamicShapeAttr(const NotNull<KernelGraphPtr> &root_graph);
void UpdateAllGraphDynamicShapeAttr(const std::vector<KernelGraphPtr> &all_graphs);

std::unordered_map<GraphId, std::shared_ptr<KernelGraph>> graphs_;
std::unordered_map<GraphInfo, std::shared_ptr<KernelGraph>> run_op_graphs_;


Loading…
Cancel
Save