Merge pull request !7308 from huanghui/unify_add_ir_save_pathtags/v1.1.0
| @@ -257,14 +257,9 @@ void AscendBackendIRFusionOptimization(const std::shared_ptr<session::KernelGrap | |||||
| auto context_ptr = MsContext::GetInstance(); | auto context_ptr = MsContext::GetInstance(); | ||||
| MS_EXCEPTION_IF_NULL(context_ptr); | MS_EXCEPTION_IF_NULL(context_ptr); | ||||
| bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = save_graphs_path + "/" + "hwopt_d_ir_fusion_before" + "_graph_" + | |||||
| std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, kernel_graph); | |||||
| std::string file_name = "hwopt_d_ir_fusion_before_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph); | |||||
| DumpIRProto(kernel_graph, "before_hwopt_" + std::to_string(kernel_graph->graph_id())); | DumpIRProto(kernel_graph, "before_hwopt_" + std::to_string(kernel_graph->graph_id())); | ||||
| } | } | ||||
| auto optimizer = std::make_shared<GraphOptimizer>(); | auto optimizer = std::make_shared<GraphOptimizer>(); | ||||
| @@ -300,9 +295,8 @@ void AscendBackendIRFusionOptimization(const std::shared_ptr<session::KernelGrap | |||||
| (void)optimizer->Optimize(kernel_graph); | (void)optimizer->Optimize(kernel_graph); | ||||
| kernel_graph->SetExecOrderByDefault(); | kernel_graph->SetExecOrderByDefault(); | ||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = | |||||
| save_graphs_path + "/" + "hwopt_d_ir_fusion_after" + "_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, kernel_graph); | |||||
| std::string file_name = "hwopt_d_ir_fusion_after_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph); | |||||
| } | } | ||||
| } | } | ||||
| @@ -314,13 +308,8 @@ void RunOpAscendBackendIRFusionOptimization(const std::shared_ptr<session::Kerne | |||||
| return; | return; | ||||
| } | } | ||||
| bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = save_graphs_path + "/" + "hwopt_d_ir_fusion_before.ir"; | |||||
| DumpIR(file_path, kernel_graph); | |||||
| DumpIR("hwopt_d_ir_fusion_before.ir", kernel_graph); | |||||
| } | } | ||||
| auto optimizer = std::make_shared<GraphOptimizer>(); | auto optimizer = std::make_shared<GraphOptimizer>(); | ||||
| auto ir_fusion_pm = std::make_shared<PassManager>("ir_fusion_pm"); | auto ir_fusion_pm = std::make_shared<PassManager>("ir_fusion_pm"); | ||||
| @@ -336,8 +325,7 @@ void RunOpAscendBackendIRFusionOptimization(const std::shared_ptr<session::Kerne | |||||
| (void)optimizer->Optimize(kernel_graph); | (void)optimizer->Optimize(kernel_graph); | ||||
| kernel_graph->SetExecOrderByDefault(); | kernel_graph->SetExecOrderByDefault(); | ||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = save_graphs_path + "/" + "hwopt_d_ir_fusion_after.ir"; | |||||
| DumpIR(file_path, kernel_graph); | |||||
| DumpIR("hwopt_d_ir_fusion_after.ir", kernel_graph); | |||||
| } | } | ||||
| } | } | ||||
| @@ -345,14 +333,9 @@ void AscendBackendOptimization(const std::shared_ptr<session::KernelGraph> &kern | |||||
| auto context_ptr = MsContext::GetInstance(); | auto context_ptr = MsContext::GetInstance(); | ||||
| MS_EXCEPTION_IF_NULL(context_ptr); | MS_EXCEPTION_IF_NULL(context_ptr); | ||||
| bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = | |||||
| save_graphs_path + "/" + "hwopt_d_before" + "_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, kernel_graph); | |||||
| std::string file_name = "hwopt_d_before_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph); | |||||
| } | } | ||||
| // data layout optimization | // data layout optimization | ||||
| AscendDataLayout(kernel_graph); | AscendDataLayout(kernel_graph); | ||||
| @@ -390,9 +373,8 @@ void AscendBackendOptimization(const std::shared_ptr<session::KernelGraph> &kern | |||||
| kernel_graph->SetExecOrderByDefault(); | kernel_graph->SetExecOrderByDefault(); | ||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = | |||||
| save_graphs_path + "/" + "hwopt_d_end" + "_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, kernel_graph, true); | |||||
| std::string file_name = "hwopt_d_end_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph, true); | |||||
| DumpIRProto(kernel_graph, "after_hwopt_" + std::to_string(kernel_graph->graph_id())); | DumpIRProto(kernel_graph, "after_hwopt_" + std::to_string(kernel_graph->graph_id())); | ||||
| kernel_graph->DumpFuncGraph("hwopt_d_end"); | kernel_graph->DumpFuncGraph("hwopt_d_end"); | ||||
| } | } | ||||
| @@ -406,25 +388,19 @@ void AscendBackendGraphKernelOpt(const std::shared_ptr<session::KernelGraph> &ke | |||||
| return; | return; | ||||
| } | } | ||||
| bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = save_graphs_path + "/" + "hwopt_d_graph_kernel_opt_before_graph_" + | |||||
| std::to_string(!is_before_kernel_select) + "_" + std::to_string(kernel_graph->graph_id()) + | |||||
| ".ir"; | |||||
| DumpIR(file_path, kernel_graph); | |||||
| std::string file_name = "hwopt_d_graph_kernel_opt_before_graph_" + std::to_string(!is_before_kernel_select) + "_" + | |||||
| std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph); | |||||
| } | } | ||||
| // Fuse graph kernels with basic ops | // Fuse graph kernels with basic ops | ||||
| static_cast<void>(FuseCompositeOps(kernel_graph, is_before_kernel_select)); | static_cast<void>(FuseCompositeOps(kernel_graph, is_before_kernel_select)); | ||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = save_graphs_path + "/" + "hwopt_d_graph_kernel_opt_end_graph_" + | |||||
| std::to_string(!is_before_kernel_select) + "_" + std::to_string(kernel_graph->graph_id()) + | |||||
| ".ir"; | |||||
| DumpIR(file_path, kernel_graph, true); | |||||
| std::string file_name = "hwopt_d_graph_kernel_opt_end_graph_" + std::to_string(!is_before_kernel_select) + "_" + | |||||
| std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph, true); | |||||
| } | } | ||||
| } | } | ||||
| @@ -436,25 +412,19 @@ void AscendBackendFuseBasicOpt(const std::shared_ptr<session::KernelGraph> &kern | |||||
| return; | return; | ||||
| } | } | ||||
| bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = save_graphs_path + "/" + "hwopt_fuse_basic_opt_before_graph_" + | |||||
| std::to_string(!is_before_kernel_select) + "_" + std::to_string(kernel_graph->graph_id()) + | |||||
| ".ir"; | |||||
| DumpIR(file_path, kernel_graph, true); | |||||
| std::string file_name = "hwopt_fuse_basic_opt_before_graph_" + std::to_string(!is_before_kernel_select) + "_" + | |||||
| std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph, true); | |||||
| } | } | ||||
| // Fuse basic ops with basic ops | // Fuse basic ops with basic ops | ||||
| static_cast<void>(FuseBasicOps(kernel_graph, is_before_kernel_select)); | static_cast<void>(FuseBasicOps(kernel_graph, is_before_kernel_select)); | ||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = save_graphs_path + "/" + "hwopt_fuse_basic_opt_end_graph_" + | |||||
| std::to_string(!is_before_kernel_select) + "_" + std::to_string(kernel_graph->graph_id()) + | |||||
| ".ir"; | |||||
| DumpIR(file_path, kernel_graph, true); | |||||
| std::string file_name = "hwopt_fuse_basic_opt_end_graph_" + std::to_string(!is_before_kernel_select) + "_" + | |||||
| std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph, true); | |||||
| } | } | ||||
| } | } | ||||
| @@ -465,22 +435,16 @@ void AscendBackendAddAtomicClean(const std::shared_ptr<session::KernelGraph> &ke | |||||
| return; | return; | ||||
| } | } | ||||
| bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = save_graphs_path + "/" + "hwopt_d_add_atomic_clean_before" + "_graph_" + | |||||
| std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, kernel_graph); | |||||
| std::string file_name = "hwopt_d_add_atomic_clean_before_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph); | |||||
| } | } | ||||
| AddAtomicClean(kernel_graph); | AddAtomicClean(kernel_graph); | ||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = | |||||
| save_graphs_path + "/" + "hwopt_d_end" + "_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, kernel_graph, true); | |||||
| std::string file_name = "hwopt_d_end_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph, true); | |||||
| } | } | ||||
| } | } | ||||
| @@ -492,14 +456,9 @@ void AscendBackendUBFusionOptimization(const std::shared_ptr<session::KernelGrap | |||||
| return; | return; | ||||
| } | } | ||||
| bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = | |||||
| save_graphs_path + "/hwopt_d_ub_fusion_before_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, kernel_graph); | |||||
| std::string file_name = "hwopt_d_ub_fusion_before_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph); | |||||
| } | } | ||||
| auto fusion_id_allocator = std::make_shared<FusionIdAllocator>(); | auto fusion_id_allocator = std::make_shared<FusionIdAllocator>(); | ||||
| MS_EXCEPTION_IF_NULL(fusion_id_allocator); | MS_EXCEPTION_IF_NULL(fusion_id_allocator); | ||||
| @@ -525,9 +484,8 @@ void AscendBackendUBFusionOptimization(const std::shared_ptr<session::KernelGrap | |||||
| (void)optimizer->Optimize(kernel_graph); | (void)optimizer->Optimize(kernel_graph); | ||||
| kernel_graph->SetExecOrderByDefault(); | kernel_graph->SetExecOrderByDefault(); | ||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = | |||||
| save_graphs_path + "/hwopt_d_ub_fusion_after_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, kernel_graph); | |||||
| std::string file_name = "hwopt_d_ub_fusion_after_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph); | |||||
| } | } | ||||
| } | } | ||||
| } // namespace opt | } // namespace opt | ||||
| @@ -34,14 +34,9 @@ void BackendCommonOptimization(const std::shared_ptr<session::KernelGraph> &kern | |||||
| auto context_ptr = MsContext::GetInstance(); | auto context_ptr = MsContext::GetInstance(); | ||||
| MS_EXCEPTION_IF_NULL(context_ptr); | MS_EXCEPTION_IF_NULL(context_ptr); | ||||
| bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = | |||||
| save_graphs_path + "/hwopt_common_before_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, kernel_graph); | |||||
| std::string file_name = "hwopt_common_before_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph); | |||||
| } | } | ||||
| auto optimizer = std::make_shared<GraphOptimizer>(); | auto optimizer = std::make_shared<GraphOptimizer>(); | ||||
| auto common_pm = std::make_shared<PassManager>("common_pm"); | auto common_pm = std::make_shared<PassManager>("common_pm"); | ||||
| @@ -55,9 +50,8 @@ void BackendCommonOptimization(const std::shared_ptr<session::KernelGraph> &kern | |||||
| (void)optimizer->Optimize(kernel_graph); | (void)optimizer->Optimize(kernel_graph); | ||||
| kernel_graph->SetExecOrderByDefault(); | kernel_graph->SetExecOrderByDefault(); | ||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = | |||||
| save_graphs_path + "/hwopt_common_after_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, kernel_graph); | |||||
| std::string file_name = "hwopt_common_after_graph_" + std::to_string(kernel_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, kernel_graph); | |||||
| } | } | ||||
| } | } | ||||
| } // namespace opt | } // namespace opt | ||||
| @@ -41,10 +41,6 @@ bool PassManager::Run(const FuncGraphPtr &func_graph, const std::vector<PassPtr> | |||||
| auto context_ptr = MsContext::GetInstance(); | auto context_ptr = MsContext::GetInstance(); | ||||
| MS_EXCEPTION_IF_NULL(context_ptr); | MS_EXCEPTION_IF_NULL(context_ptr); | ||||
| bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| bool changed = false; | bool changed = false; | ||||
| size_t num = 0; | size_t num = 0; | ||||
| for (const auto &pass : passes) { | for (const auto &pass : passes) { | ||||
| @@ -71,9 +67,8 @@ bool PassManager::Run(const FuncGraphPtr &func_graph, const std::vector<PassPtr> | |||||
| MS_LOG(INFO) << "Run pass hwopt_" + name() + "_" << num << "_" + pass->name() + " in " << cost << " us"; | MS_LOG(INFO) << "Run pass hwopt_" + name() + "_" << num << "_" + pass->name() + " in " << cost << " us"; | ||||
| #endif | #endif | ||||
| if (save_graphs) { | if (save_graphs) { | ||||
| auto dump_file_path = | |||||
| save_graphs_path + "/" + "hwopt_" + name() + "_" + std::to_string(num) + "_" + pass->name() + ".ir"; | |||||
| DumpIR(dump_file_path, func_graph, true); | |||||
| auto file_name = "hwopt_" + name() + "_" + std::to_string(num) + "_" + pass->name() + ".ir"; | |||||
| DumpIR(file_name, func_graph, true); | |||||
| } | } | ||||
| num++; | num++; | ||||
| } | } | ||||
| @@ -370,13 +370,9 @@ void AscendControlParser::ExecutorValidate(NotNull<KernelGraphPtr> root_graph) { | |||||
| auto context_ptr = MsContext::GetInstance(); | auto context_ptr = MsContext::GetInstance(); | ||||
| MS_EXCEPTION_IF_NULL(context_ptr); | MS_EXCEPTION_IF_NULL(context_ptr); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| if (context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG)) { | if (context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG)) { | ||||
| std::string file_path = save_graphs_path + "/after_erase_label_and_parameter.ir"; | |||||
| DumpIR(file_path, root_graph.get()); | |||||
| std::string file_name = "after_erase_label_and_parameter.ir"; | |||||
| DumpIR(file_name, root_graph.get()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -280,21 +280,15 @@ void AscendSession::CompileChildGraph(const KernelGraphPtr &child_graph) { | |||||
| auto context_ptr = MsContext::GetInstance(); | auto context_ptr = MsContext::GetInstance(); | ||||
| MS_EXCEPTION_IF_NULL(context_ptr); | MS_EXCEPTION_IF_NULL(context_ptr); | ||||
| bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = | |||||
| save_graphs_path + "/" + "select_kernel_before" + "_graph_" + std::to_string(child_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, child_graph); | |||||
| std::string file_name = "select_kernel_before_graph_" + std::to_string(child_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, child_graph); | |||||
| } | } | ||||
| // select kernel build info | // select kernel build info | ||||
| SelectKernel(*child_graph); | SelectKernel(*child_graph); | ||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = | |||||
| save_graphs_path + "/" + "select_kernel_after" + "_graph_" + std::to_string(child_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, child_graph); | |||||
| std::string file_name = "select_kernel_after_graph_" + std::to_string(child_graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, child_graph); | |||||
| } | } | ||||
| // optimize graph | // optimize graph | ||||
| HardwareOptimize(child_graph); | HardwareOptimize(child_graph); | ||||
| @@ -469,13 +463,8 @@ void AscendSession::AdjustKernel(const std::shared_ptr<KernelGraph> &kernel_grap | |||||
| auto context_ptr = MsContext::GetInstance(); | auto context_ptr = MsContext::GetInstance(); | ||||
| MS_EXCEPTION_IF_NULL(context_ptr); | MS_EXCEPTION_IF_NULL(context_ptr); | ||||
| bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| if (save_graphs) { | if (save_graphs) { | ||||
| std::string file_path = save_graphs_path + "/" + "after_adjust_kernel.ir"; | |||||
| DumpIR(file_path, kernel_graph); | |||||
| DumpIR("after_adjust_kernel.ir", kernel_graph); | |||||
| } | } | ||||
| MS_LOG(INFO) << "Finish!"; | MS_LOG(INFO) << "Finish!"; | ||||
| } | } | ||||
| @@ -589,14 +578,10 @@ void AscendSession::DumpAllGraphs(const std::vector<KernelGraphPtr> &all_graphs) | |||||
| if (!save_graphs) { | if (!save_graphs) { | ||||
| return; | return; | ||||
| } | } | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| for (auto &graph : all_graphs) { | for (auto &graph : all_graphs) { | ||||
| MS_EXCEPTION_IF_NULL(graph); | MS_EXCEPTION_IF_NULL(graph); | ||||
| std::string file_path = save_graphs_path + "/graph_build_" + std::to_string(graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, graph, true); | |||||
| std::string file_name = "graph_build_" + std::to_string(graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, graph, true); | |||||
| DumpIRProto(graph, "vm_build_" + std::to_string(graph->graph_id())); | DumpIRProto(graph, "vm_build_" + std::to_string(graph->graph_id())); | ||||
| } | } | ||||
| #endif | #endif | ||||
| @@ -910,14 +895,9 @@ void AscendSession::IrFusionPass(const NotNull<KernelGraphPtr> graph, NotNull<st | |||||
| auto context_ptr = MsContext::GetInstance(); | auto context_ptr = MsContext::GetInstance(); | ||||
| MS_EXCEPTION_IF_NULL(context_ptr); | MS_EXCEPTION_IF_NULL(context_ptr); | ||||
| bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs) { | if (save_graphs) { | ||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| std::string file_path = | |||||
| save_graphs_path + "/" + "select_kernel_before" + "_graph_" + std::to_string(graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, graph.get()); | |||||
| std::string file_name = "select_kernel_before_graph_" + std::to_string(graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, graph.get()); | |||||
| } | } | ||||
| for (auto &child_graph : graph->child_graph_order()) { | for (auto &child_graph : graph->child_graph_order()) { | ||||
| @@ -982,14 +962,9 @@ void AscendSession::RecurseSelectKernelInfo(NotNull<KernelGraphPtr> graph, | |||||
| auto context_ptr = MsContext::GetInstance(); | auto context_ptr = MsContext::GetInstance(); | ||||
| MS_EXCEPTION_IF_NULL(context_ptr); | MS_EXCEPTION_IF_NULL(context_ptr); | ||||
| bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | bool save_graphs = context_ptr->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG); | ||||
| auto save_graphs_path = context_ptr->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs) { | if (save_graphs) { | ||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| std::string file_path = | |||||
| save_graphs_path + "/" + "select_kernel_after" + "_graph_" + std::to_string(graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_path, graph.get()); | |||||
| std::string file_name = "select_kernel_after_graph_" + std::to_string(graph->graph_id()) + ".ir"; | |||||
| DumpIR(file_name, graph.get()); | |||||
| } | } | ||||
| MS_LOG(INFO) << "Finish selecting kernel info in graph: " << graph->graph_id(); | MS_LOG(INFO) << "Finish selecting kernel info in graph: " << graph->graph_id(); | ||||
| } | } | ||||
| @@ -27,6 +27,7 @@ | |||||
| #include "ir/graph_utils.h" | #include "ir/graph_utils.h" | ||||
| #include "backend/session/anf_runtime_algorithm.h" | #include "backend/session/anf_runtime_algorithm.h" | ||||
| #include "frontend/parallel/ops_info/operator_info.h" | #include "frontend/parallel/ops_info/operator_info.h" | ||||
| #include "pipeline/jit/base.h" | |||||
| namespace mindspore { | namespace mindspore { | ||||
| const std::string ToShortString(const TypeId &typeId) { | const std::string ToShortString(const TypeId &typeId) { | ||||
| @@ -482,7 +483,7 @@ void DumpIR(const std::string &filename, const FuncGraphPtr &graph, bool dump_fu | |||||
| if (graph == nullptr) { | if (graph == nullptr) { | ||||
| return; | return; | ||||
| } | } | ||||
| auto real_filename = AddGlobalId(filename); | |||||
| auto real_filename = pipeline::GetSaveGraphsPathName(AddGlobalId(filename)); | |||||
| if (real_filename.size() > PATH_MAX) { | if (real_filename.size() > PATH_MAX) { | ||||
| MS_LOG(ERROR) << "File path " << real_filename << " is too long."; | MS_LOG(ERROR) << "File path " << real_filename << " is too long."; | ||||
| return; | return; | ||||
| @@ -37,6 +37,7 @@ | |||||
| #include "utils/label.h" | #include "utils/label.h" | ||||
| #include "utils/ms_context.h" | #include "utils/ms_context.h" | ||||
| #include "frontend/operator/ops.h" | #include "frontend/operator/ops.h" | ||||
| #include "pipeline/jit/base.h" | |||||
| using mindspore::tensor::TensorPy; | using mindspore::tensor::TensorPy; | ||||
| @@ -690,19 +691,21 @@ void ExportIR(const std::string &filename, const std::string &id, const FuncGrap | |||||
| return; | return; | ||||
| } | } | ||||
| auto real_filename = pipeline::GetSaveGraphsPathName(filename); | |||||
| AnfExporter exporter(id); | AnfExporter exporter(id); | ||||
| ChangeFileMode(filename, S_IRWXU); | |||||
| exporter.ExportFuncGraph(filename, func_graph); | |||||
| ChangeFileMode(real_filename, S_IRWXU); | |||||
| exporter.ExportFuncGraph(real_filename, func_graph); | |||||
| // set file mode to read only by user | // set file mode to read only by user | ||||
| ChangeFileMode(filename, S_IRUSR); | |||||
| ChangeFileMode(real_filename, S_IRUSR); | |||||
| } | } | ||||
| void ExportIR(const std::string &filename, const std::vector<TaggedGraph> &graphs) { | void ExportIR(const std::string &filename, const std::vector<TaggedGraph> &graphs) { | ||||
| auto real_filename = pipeline::GetSaveGraphsPathName(filename); | |||||
| AnfExporter exporter("", false); | AnfExporter exporter("", false); | ||||
| ChangeFileMode(filename, S_IRWXU); | |||||
| exporter.ExportFuncGraph(filename, graphs); | |||||
| ChangeFileMode(real_filename, S_IRWXU); | |||||
| exporter.ExportFuncGraph(real_filename, graphs); | |||||
| // set file mode to read only by user | // set file mode to read only by user | ||||
| ChangeFileMode(filename, S_IRUSR); | |||||
| ChangeFileMode(real_filename, S_IRUSR); | |||||
| } | } | ||||
| #else | #else | ||||
| void ExportIR(const std::string &, const std::string &, const FuncGraphPtr &) { | void ExportIR(const std::string &, const std::string &, const FuncGraphPtr &) { | ||||
| @@ -29,6 +29,7 @@ | |||||
| #include "frontend/operator/composite/composite.h" | #include "frontend/operator/composite/composite.h" | ||||
| #include "pipeline/jit/parse/resolve.h" | #include "pipeline/jit/parse/resolve.h" | ||||
| #include "ir/tensor.h" | #include "ir/tensor.h" | ||||
| #include "pipeline/jit/base.h" | |||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -189,11 +190,11 @@ void Draw(const std::string &filename, const FuncGraphPtr &func_graph) { | |||||
| const std::string dot_suffix = ".dot"; | const std::string dot_suffix = ".dot"; | ||||
| std::string filename_with_suffix = | std::string filename_with_suffix = | ||||
| (filename.rfind(dot_suffix) != (filename.size() - dot_suffix.size())) ? (filename + dot_suffix) : filename; | (filename.rfind(dot_suffix) != (filename.size() - dot_suffix.size())) ? (filename + dot_suffix) : filename; | ||||
| DrawByOpt(filename_with_suffix, func_graph, false); | |||||
| DrawByOpt(pipeline::GetSaveGraphsPathName(filename_with_suffix), func_graph, false); | |||||
| } | } | ||||
| void DrawUserFuncGraph(const std::string &filename, const FuncGraphPtr &func_graph) { | void DrawUserFuncGraph(const std::string &filename, const FuncGraphPtr &func_graph) { | ||||
| DrawByOpt(filename, func_graph, true); | |||||
| DrawByOpt(pipeline::GetSaveGraphsPathName(filename), func_graph, true); | |||||
| } | } | ||||
| #else | #else | ||||
| void Draw(const std::string &, const FuncGraphPtr &) { | void Draw(const std::string &, const FuncGraphPtr &) { | ||||
| @@ -27,6 +27,7 @@ | |||||
| #include "utils/ms_context.h" | #include "utils/ms_context.h" | ||||
| #include "utils/symbolic.h" | #include "utils/symbolic.h" | ||||
| #include "utils/utils.h" | #include "utils/utils.h" | ||||
| #include "pipeline/jit/base.h" | |||||
| namespace mindspore { | namespace mindspore { | ||||
| class ProtoExporter { | class ProtoExporter { | ||||
| @@ -525,16 +526,7 @@ void DumpIRProto(const FuncGraphPtr &func_graph, const std::string &suffix) { | |||||
| MS_LOG(ERROR) << "Func graph is nullptr"; | MS_LOG(ERROR) << "Func graph is nullptr"; | ||||
| return; | return; | ||||
| } | } | ||||
| auto ms_context = MsContext::GetInstance(); | |||||
| if (ms_context == nullptr) { | |||||
| MS_LOG(ERROR) << "ms_context is nullptr"; | |||||
| return; | |||||
| } | |||||
| auto save_graphs_path = ms_context->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| std::string file_path = save_graphs_path + "/" + "ms_output_" + suffix + ".pb"; | |||||
| std::string file_path = pipeline::GetSaveGraphsPathName("ms_output_" + suffix + ".pb"); | |||||
| if (file_path.size() > PATH_MAX) { | if (file_path.size() > PATH_MAX) { | ||||
| MS_LOG(ERROR) << "File path " << file_path << " is too long."; | MS_LOG(ERROR) << "File path " << file_path << " is too long."; | ||||
| return; | return; | ||||
| @@ -43,7 +43,7 @@ inline std::string GetPhasePrefix(const std::string &phase) { | |||||
| return phase.substr(0, pos); | return phase.substr(0, pos); | ||||
| } | } | ||||
| inline std::string GetFilePathName(const std::string &file_name) { | |||||
| inline std::string GetSaveGraphsPathName(const std::string &file_name) { | |||||
| std::ostringstream oss; | std::ostringstream oss; | ||||
| auto ms_context = MsContext::GetInstance(); | auto ms_context = MsContext::GetInstance(); | ||||
| if (ms_context == nullptr) { | if (ms_context == nullptr) { | ||||
| @@ -85,15 +85,7 @@ std::unordered_map<abstract::AbstractBasePtrList, int, abstract::AbstractBasePtr | |||||
| namespace { | namespace { | ||||
| std::string GetBaseNameForIR(int stage_idx, const std::string &action_name) { | std::string GetBaseNameForIR(int stage_idx, const std::string &action_name) { | ||||
| std::ostringstream oss; | std::ostringstream oss; | ||||
| auto ms_context = MsContext::GetInstance(); | |||||
| if (ms_context == nullptr) { | |||||
| MS_LOG(EXCEPTION) << "ms_context is nullptr"; | |||||
| } | |||||
| auto save_graphs_path = ms_context->get_param<std::string>(MS_CTX_SAVE_GRAPHS_PATH); | |||||
| if (save_graphs_path.empty()) { | |||||
| save_graphs_path = "."; | |||||
| } | |||||
| oss << save_graphs_path << "/" << stage_idx << "_" << action_name; | |||||
| oss << stage_idx << "_" << action_name; | |||||
| return oss.str(); | return oss.str(); | ||||
| } | } | ||||
| } // namespace | } // namespace | ||||
| @@ -690,9 +682,7 @@ void Pipeline::Run() { | |||||
| #endif | #endif | ||||
| if (MsContext::GetInstance()->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG) && (user_graph != nullptr)) { | if (MsContext::GetInstance()->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG) && (user_graph != nullptr)) { | ||||
| std::string user_graph_file = GetFilePathName("ModelDigraph.dot"); | |||||
| MS_LOG(DEBUG) << "Save user graph to: " << user_graph_file; | |||||
| draw::DrawUserFuncGraph(user_graph_file, user_graph); | |||||
| draw::DrawUserFuncGraph("ModelDigraph.dot", user_graph); | |||||
| } | } | ||||
| MS_LOG(INFO) << "End"; | MS_LOG(INFO) << "End"; | ||||
| } | } | ||||
| @@ -215,9 +215,9 @@ bool AddDFGraph(const std::map<std::string, ExecutorInfoPtr> &info, const py::di | |||||
| } | } | ||||
| if (MsContext::GetInstance()->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG)) { | if (MsContext::GetInstance()->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG)) { | ||||
| convertor.DrawComputeGraph(GetFilePathName("ge_graph.dot")); // for debug | |||||
| convertor.DrawInitGraph(GetFilePathName("init_graph.dot")); // for debug | |||||
| convertor.DrawSaveCheckpointGraph(GetFilePathName("save_checkpoint_graph.dot")); // for debug | |||||
| convertor.DrawComputeGraph(GetSaveGraphsPathName("ge_graph.dot")); // for debug | |||||
| convertor.DrawInitGraph(GetSaveGraphsPathName("init_graph.dot")); // for debug | |||||
| convertor.DrawSaveCheckpointGraph(GetSaveGraphsPathName("save_checkpoint_graph.dot")); // for debug | |||||
| } | } | ||||
| std::string init_graph = "init_subgraph." + net_id; | std::string init_graph = "init_subgraph." + net_id; | ||||
| std::string checkpoint_name = "save." + net_id; | std::string checkpoint_name = "save." + net_id; | ||||
| @@ -245,8 +245,8 @@ FuncGraphPtr BuildDFGraph(const std::map<std::string, ExecutorInfoPtr> &info, co | |||||
| FuncGraphPtr anf_graph = info.at(phase)->func_graph; | FuncGraphPtr anf_graph = info.at(phase)->func_graph; | ||||
| if (MsContext::GetInstance()->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG)) { | if (MsContext::GetInstance()->get_param<bool>(MS_CTX_SAVE_GRAPHS_FLAG)) { | ||||
| draw::Draw(GetFilePathName("anf_graph.dot"), anf_graph); // for debug | |||||
| DumpIR(GetFilePathName("anf_graph.ir"), anf_graph, true); | |||||
| draw::Draw("anf_graph.dot", anf_graph); // for debug | |||||
| DumpIR("anf_graph.ir", anf_graph, true); | |||||
| } | } | ||||
| if (!AddDFGraph(info, init_params, phase, broadcast_params)) { | if (!AddDFGraph(info, init_params, phase, broadcast_params)) { | ||||
| @@ -434,7 +434,7 @@ TEST_F(TestStepParallel, ForwardCommunication1) { | |||||
| PrimitivePtr prim = cnode->input(0)->cast<ValueNodePtr>()->value()->cast<PrimitivePtr>(); | PrimitivePtr prim = cnode->input(0)->cast<ValueNodePtr>()->value()->cast<PrimitivePtr>(); | ||||
| if (prim->name() == "MatMul") { | if (prim->name() == "MatMul") { | ||||
| ForwardCommunication(op_list, cnode); | ForwardCommunication(op_list, cnode); | ||||
| draw::Draw("./forwardcommunication.dot", func_graph); | |||||
| draw::Draw("forwardcommunication.dot", func_graph); | |||||
| } | } | ||||
| } | } | ||||
| AnfNodeSet after_nodes = manager->all_nodes(); | AnfNodeSet after_nodes = manager->all_nodes(); | ||||
| @@ -304,7 +304,6 @@ TEST_F(TestHWLambNextMVWithDecayRule, test_lamb_next_mv_with_decay_rule_cond2) { | |||||
| args_spec_list.push_back(x_abstract); | args_spec_list.push_back(x_abstract); | ||||
| } | } | ||||
| auto fg = GetKernelGraph(g, args_spec_list); | auto fg = GetKernelGraph(g, args_spec_list); | ||||
| DumpIR("fg.ir", fg, true); | |||||
| auto optimizer = std::make_shared<opt::GraphOptimizer>(); | auto optimizer = std::make_shared<opt::GraphOptimizer>(); | ||||
| auto pm = std::make_shared<opt::PassManager>(); | auto pm = std::make_shared<opt::PassManager>(); | ||||
| @@ -313,8 +312,6 @@ TEST_F(TestHWLambNextMVWithDecayRule, test_lamb_next_mv_with_decay_rule_cond2) { | |||||
| FuncGraphPtr new_graph = optimizer->Optimize(fg); | FuncGraphPtr new_graph = optimizer->Optimize(fg); | ||||
| FuncGraphPtr g_after = get_py_fun_.CallAndParseRet("test_lamb_next_mv_with_decay_rule_cond2", "after"); | FuncGraphPtr g_after = get_py_fun_.CallAndParseRet("test_lamb_next_mv_with_decay_rule_cond2", "after"); | ||||
| DumpIR("g_after.ir", g_after, true); | |||||
| DumpIR("new_graph.ir", new_graph, true); | |||||
| EXPECT_TRUE(CheckEqualGraph(g_after, new_graph)); | EXPECT_TRUE(CheckEqualGraph(g_after, new_graph)); | ||||
| } | } | ||||
| @@ -348,7 +345,6 @@ TEST_F(TestHWLambNextMVWithDecayRule, test_lamb_next_mv_with_decay_rule_cond3) { | |||||
| args_spec_list.push_back(x_abstract); | args_spec_list.push_back(x_abstract); | ||||
| } | } | ||||
| auto fg = GetKernelGraph(g, args_spec_list); | auto fg = GetKernelGraph(g, args_spec_list); | ||||
| DumpIR("fg.ir", fg, true); | |||||
| auto optimizer = std::make_shared<opt::GraphOptimizer>(); | auto optimizer = std::make_shared<opt::GraphOptimizer>(); | ||||
| auto pm = std::make_shared<opt::PassManager>(); | auto pm = std::make_shared<opt::PassManager>(); | ||||
| @@ -357,8 +353,6 @@ TEST_F(TestHWLambNextMVWithDecayRule, test_lamb_next_mv_with_decay_rule_cond3) { | |||||
| FuncGraphPtr new_graph = optimizer->Optimize(fg); | FuncGraphPtr new_graph = optimizer->Optimize(fg); | ||||
| FuncGraphPtr g_after = get_py_fun_.CallAndParseRet("test_lamb_next_mv_with_decay_rule_cond3", "after"); | FuncGraphPtr g_after = get_py_fun_.CallAndParseRet("test_lamb_next_mv_with_decay_rule_cond3", "after"); | ||||
| DumpIR("g_after.ir", g_after, true); | |||||
| DumpIR("new_graph.ir", new_graph, true); | |||||
| EXPECT_TRUE(CheckEqualGraph(g_after, new_graph)); | EXPECT_TRUE(CheckEqualGraph(g_after, new_graph)); | ||||
| } | } | ||||