diff --git a/mindspore/ccsrc/frontend/parallel/step_parallel.cc b/mindspore/ccsrc/frontend/parallel/step_parallel.cc index e504059bf1..1189e72165 100644 --- a/mindspore/ccsrc/frontend/parallel/step_parallel.cc +++ b/mindspore/ccsrc/frontend/parallel/step_parallel.cc @@ -2528,7 +2528,7 @@ ParameterUsersInfo FindParameterNodeUsers(const AnfNodePtr &node, bool (*IsCareN for (auto &candidate : candidate_set) { auto candidate_node = candidate.first; auto c = candidate_node->cast(); - if (c == nullptr || !IsValueNode(c->input(0)) || !IsCareNode(c)) { + if (c == nullptr || !c->has_user_data()) { continue; } (void)parameter_user_info.second.second.insert(candidate); @@ -2688,7 +2688,6 @@ bool StepParallel(const FuncGraphPtr &root, const opt::OptimizerPtr &optimizer) // mark the forward cnodes, parallel only care these nodes MarkForwardCNode(root); - HandleRootReshape(all_nodes); if (FindCommunicationOp(all_nodes)) { MS_LOG(EXCEPTION) << "The graph contain communication op"; @@ -2699,6 +2698,8 @@ bool StepParallel(const FuncGraphPtr &root, const opt::OptimizerPtr &optimizer) ReshapeInit(all_nodes); } + HandleRootReshape(all_nodes); + HandleForwardMakeTupleAndMakeList(all_nodes); // if the input or parameter has multiple users, check whether its split strategies are consistent.