diff --git a/mindspore/ccsrc/backend/optimizer/ascend/ascend_backend_optimization.cc b/mindspore/ccsrc/backend/optimizer/ascend/ascend_backend_optimization.cc index 7219d4f62a..1a4b43bd0a 100644 --- a/mindspore/ccsrc/backend/optimizer/ascend/ascend_backend_optimization.cc +++ b/mindspore/ccsrc/backend/optimizer/ascend/ascend_backend_optimization.cc @@ -194,6 +194,7 @@ void RunOpAscendDataLayout(const std::shared_ptr &kernel_g data_layout_pm->AddPass(std::make_shared()); data_layout_pm->AddPass(std::make_shared()); data_layout_pm->AddPass(std::make_shared()); + data_layout_pm->AddPass(std::make_shared()); data_layout_pm->AddPass(std::make_shared()); data_layout_pm->AddPass(std::make_shared()); data_layout_pm->AddPass(std::make_shared()); @@ -330,6 +331,9 @@ void RunOpAscendBackendIRFusionOptimization(const std::shared_ptrAddPass(std::make_shared()); ir_fusion_pm->AddPass(std::make_shared()); ir_fusion_pm->AddPass(std::make_shared()); + ir_fusion_pm->AddPass(std::make_shared()); + ir_fusion_pm->AddPass(std::make_shared()); + ir_fusion_pm->AddPass(std::make_shared()); optimizer->AddPassManager(ir_fusion_pm); (void)optimizer->Optimize(kernel_graph); diff --git a/mindspore/ccsrc/backend/optimizer/ascend/enhancer/add_placeholder_for_dynamic_rnn.cc b/mindspore/ccsrc/backend/optimizer/ascend/enhancer/add_placeholder_for_dynamic_rnn.cc index 279bb04669..dcfafe22cc 100644 --- a/mindspore/ccsrc/backend/optimizer/ascend/enhancer/add_placeholder_for_dynamic_rnn.cc +++ b/mindspore/ccsrc/backend/optimizer/ascend/enhancer/add_placeholder_for_dynamic_rnn.cc @@ -57,7 +57,6 @@ const AnfNodePtr InsertPlaceholderForDynamicRNN::Process(const FuncGraphPtr &fun auto value_node = NewValueNode(value); value_node->set_abstract(std::make_shared()); auto new_node = kernel_graph->NewValueNode(value_node); - kernel_graph->AddValueNodeToGraph(new_node); new_inputs.push_back(new_node); } new_inputs.push_back(input_node); diff --git a/mindspore/ccsrc/runtime/device/ascend/kernel_select_ascend.cc b/mindspore/ccsrc/runtime/device/ascend/kernel_select_ascend.cc index 51e03fa964..d0e9262964 100644 --- a/mindspore/ccsrc/runtime/device/ascend/kernel_select_ascend.cc +++ b/mindspore/ccsrc/runtime/device/ascend/kernel_select_ascend.cc @@ -363,9 +363,6 @@ void SetTensorDeviceInfo(const CNodePtr &kernel_node) { if (real_input_node->isa() && !AnfAlgo::IsParameterWeight(real_input_node->cast())) { continue; } - if (selected_kernel_info->GetInputFormat(input_index) == kOpFormat_FRACTAL_ZN_LSTM) { - continue; - } // we set special device info of a input tensor. bool is_ref = false; auto op_info = kernel::tbe::TbeDynamicShapeUtil::FindOp(AnfAlgo::GetCNodeName(kernel_node), kernel_node); @@ -376,9 +373,12 @@ void SetTensorDeviceInfo(const CNodePtr &kernel_node) { continue; } auto builder = std::make_shared(); + std::vector output_format = {AnfAlgo::GetOutputFormat(real_input_node, 0)}; if (IsValueNode(input_kernel_node) && AnfAlgo::GetOutputDeviceDataType(input_kernel_node, 0) == kTypeUnknown) { - std::vector output_format = {selected_kernel_info->GetInputFormat(input_index)}; + if (selected_kernel_info->GetInputFormat(input_index) != kOpFormat_FRACTAL_ZN_LSTM) { + output_format = {selected_kernel_info->GetInputFormat(input_index)}; + } builder->SetOutputsFormat(output_format); std::vector output_type = {selected_kernel_info->GetInputDeviceType(input_index)}; builder->SetOutputsDeviceType(output_type); @@ -386,7 +386,9 @@ void SetTensorDeviceInfo(const CNodePtr &kernel_node) { continue; } if (AnfAlgo::GetOutputDeviceDataType(real_input_node, 0) == kTypeUnknown || is_ref) { - std::vector output_format = {selected_kernel_info->GetInputFormat(input_index)}; + if (selected_kernel_info->GetInputFormat(input_index) != kOpFormat_FRACTAL_ZN_LSTM) { + output_format = {selected_kernel_info->GetInputFormat(input_index)}; + } builder->SetOutputsFormat(output_format); std::vector output_type = {selected_kernel_info->GetInputDeviceType(input_index)}; builder->SetOutputsDeviceType(output_type); diff --git a/mindspore/ccsrc/runtime/device/kernel_runtime.cc b/mindspore/ccsrc/runtime/device/kernel_runtime.cc index 5d4f94b7a2..4768dd0f5e 100644 --- a/mindspore/ccsrc/runtime/device/kernel_runtime.cc +++ b/mindspore/ccsrc/runtime/device/kernel_runtime.cc @@ -751,6 +751,18 @@ void KernelRuntime::GenLaunchArgs(const mindspore::kernel::KernelMod &kernel_mod return GenAddrCleanLaunchArgs(cnode, kernel_inputs); } for (size_t i = 0; i < AnfAlgo::GetInputTensorNum(kernel); ++i) { + auto op_name = AnfAlgo::GetCNodeName(cnode); + constexpr auto none_placeholder_index = 3; + if (op_name == kDynamicRNNOpName && i == none_placeholder_index) { + continue; + } + if (op_name == kDynamicGRUV2OpName) { + auto none_index = AnfAlgo::GetNodeAttr>(cnode, "placeholder_index"); + auto item = std::find(none_index.begin(), none_index.end(), i); + if (item != none_index.end()) { + continue; + } + } auto real_input = AnfAlgo::GetRealInputIndex(kernel, i); auto device_address = AnfAlgo::GetPrevNodeOutputAddr(kernel, real_input); MS_EXCEPTION_IF_NULL(device_address);