# mindspore之中间文件保存

**1. 系统环境**

硬件环境\(Ascend/GPU/CPU\): Ascend

软件环境: MindSpore 版本: 1.7.0

执行模式（静态图/动态图）： 不限

Python 版本: 3.7.6

操作系统平台: linux

**2. 保存中间文件**

保存中间文件是通过set\_context\(save\_graphs=3\)来控制保存图的，其中save\_graphs的值不一样，效果也是不同的:

save\_graphs \(bool 或 int\) - 表示是否保存中间编译图。默认值： 0 。可用的选项为：

False或0：不保存中间编译图。

1：运行时会输出图编译过程中生成的一些中间文件。

True或2：生成更多后端流程相关的ir文件。

3：生成可视化计算图和更多详细的前端ir图。

当 save\_graphs 属性设为 1 、 2 、 3 或者 True 时， save\_graphs\_path 属性用于设置中间编译图的存储路径。默认情况下，计算图保存在当前目录下。

可以输入save\_graphs\_path 控制保存的ir图的地址

```
import numpy as np
import mindspore as ms
import mindspore.ops as ops
import mindspore.nn as nn
import pdb

ms.set_context(device_target="Ascend", mode=ms.GRAPH_MODE, save_graphs=3)

class PrintDemo(nn.Cell):
    def __init__(self):
        super(PrintDemo, self).__init__()
        self.add1 = ops.Add()
        self.add2 = ops.Add()

    def construct(self, x, y):
        out = self.add1(x, y)
        out = self.add2(out, x)
        return x

x = ms.Tensor(np.ones([2, 1]).astype(np.int32))
y = ms.Tensor(np.ones([2, 2]).astype(np.int32))
net = PrintDemo()
output = net(x, y)
```

生成的文件

```
total 1288
drwx------.  3 root root 20480 Jul 31 21:53 .
drwxr-xr-x. 30 root root  4096 Jul 27 10:08 ..
-r--------.  1 root root  2805 Jul 31 21:53 00_parse_0000.ir
-r--------.  1 root root  5977 Jul 31 21:53 00_parse_0001.dot
-r--------.  1 root root  1402 Jul 31 21:53 01_symbol_resolve_0008.ir
-r--------.  1 root root  4153 Jul 31 21:53 01_symbol_resolve_0009.dot
-r--------.  1 root root  1402 Jul 31 21:53 02_combine_like_graphs_0010.ir
-r--------.  1 root root  4153 Jul 31 21:53 02_combine_like_graphs_0011.dot
-r--------.  1 root root  1402 Jul 31 21:53 03_meta_unpack_prepare_0014.ir
-r--------.  1 root root  4153 Jul 31 21:53 03_meta_unpack_prepare_0015.dot
-r--------.  1 root root  1782 Jul 31 21:53 04_abstract_specialize_0016.ir
-r--------.  1 root root  4291 Jul 31 21:53 04_abstract_specialize_0017.dot
-r--------.  1 root root  1782 Jul 31 21:53 05_pack_expand_0018.ir
-r--------.  1 root root  4291 Jul 31 21:53 05_pack_expand_0019.dot
-r--------.  1 root root   481 Jul 31 21:53 06_auto_monad_0020.ir
-r--------.  1 root root  1076 Jul 31 21:53 06_auto_monad_0021.dot
-r--------.  1 root root   481 Jul 31 21:53 07_inline_0022.ir
-r--------.  1 root root  1076 Jul 31 21:53 07_inline_0023.dot
-r--------.  1 root root   563 Jul 31 21:53 08_pre_auto_parallel_0024.ir
-r--------.  1 root root  1076 Jul 31 21:53 08_pre_auto_parallel_0025.dot
-r--------.  1 root root   563 Jul 31 21:53 09_pipeline_split_0026.ir
-r--------.  1 root root  1076 Jul 31 21:53 09_pipeline_split_0027.dot
-r--------.  1 root root   682 Jul 31 21:53 10_optimize_0278.ir
-r--------.  1 root root  1078 Jul 31 21:53 10_optimize_0279.dot
-r--------.  1 root root   682 Jul 31 21:53 11_auto_monad_reorder_0280.ir
-r--------.  1 root root  1078 Jul 31 21:53 11_auto_monad_reorder_0281.dot
-r--------.  1 root root   682 Jul 31 21:53 12_get_jit_bprop_graph_0282.ir
-r--------.  1 root root  1078 Jul 31 21:53 12_get_jit_bprop_graph_0283.dot
-r--------.  1 root root   682 Jul 31 21:53 13_eliminate_special_op_node_0290.ir
-r--------.  1 root root  1078 Jul 31 21:53 13_eliminate_special_op_node_0291.dot
-r--------.  1 root root   682 Jul 31 21:53 14_validate_0292.ir
-r--------.  1 root root  1078 Jul 31 21:53 14_validate_0293.dot
-r--------.  1 root root   682 Jul 31 21:53 15_distribtued_split_0294.ir
-r--------.  1 root root  1078 Jul 31 21:53 15_distribtued_split_0295.dot
-r--------.  1 root root   682 Jul 31 21:53 16_task_emit_0296.ir
-r--------.  1 root root  1078 Jul 31 21:53 16_task_emit_0297.dot
-r--------.  1 root root   682 Jul 31 21:53 17_execute_0298.ir
-r--------.  1 root root  1078 Jul 31 21:53 17_execute_0299.dot
-r--------.  1 root root   730 Jul 31 21:53 ModelDigraph_0300.dot
-r--------.  1 root root   110 Jul 31 21:53 ms_output_optimize.pb
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_addn_check_dump_0056.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_addn_check_dump_0057.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_arithmetic_simplify_0066.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_arithmetic_simplify_0067.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_compare_switch_simplify_0054.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_compare_switch_simplify_0055.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_depend_value_elim_0078.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_depend_value_elim_0079.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_environ_get_eliminate_0076.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_environ_get_eliminate_0077.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_float_environ_get_switch_0060.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_float_environ_get_switch_0061.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_float_tuple_getitem_switch_0058.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_float_tuple_getitem_switch_0059.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_incorporate_call_0072.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_incorporate_call_0073.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_incorporate_call_switch_0074.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_incorporate_call_switch_0075.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_inline_0062.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_inline_0063.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_merge_addn_0052.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_merge_addn_0053.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_reduce_all_const_elim_0080.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_reduce_all_const_elim_0081.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_specialize_transform_0050.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_specialize_transform_0051.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_switch_simplify_0048.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_switch_simplify_0049.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_tuple_list_get_item_eliminator_0070.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_tuple_list_get_item_eliminator_0071.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_tuple_list_set_item_eliminator_0068.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_tuple_list_set_item_eliminator_0069.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_a_r1_a_2_updatestate_useless_node_eliminater_0064.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_a_2_updatestate_useless_node_eliminater_0065.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_a_r1_a_3_check_bprop_eliminate_0124.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_a_r1_a_3_check_bprop_eliminate_0125.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_a_r1_a_3_micro_step_allgather_replace_0134.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_a_r1_a_3_micro_step_allgather_replace_0135.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_a_r1_a_3_mini_step_allgather_replace_0132.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_a_r1_a_3_mini_step_allgather_replace_0133.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_a_r1_a_3_replace_applicator_0128.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_a_r1_a_3_replace_applicator_0129.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_a_r1_a_3_row_tensor_add_zeros_like_0130.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_a_r1_a_3_row_tensor_add_zeros_like_0131.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_a_r1_a_3_same_eliminate_0122.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_a_r1_a_3_same_eliminate_0123.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_a_r1_a_3_split_environ_get_set_with_tuple_value_0136.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_a_r1_a_3_split_environ_get_set_with_tuple_value_0137.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_a_r1_a_3_switch_layer_defer_inline_0126.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_a_r1_a_3_switch_layer_defer_inline_0127.dot
-r--------.  1 root root   596 Jul 31 21:53 opt_a_r1_cell_reuse_handle_not_recompute_node_pass_remove_not_recompute_node_0102.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_a_r1_cell_reuse_handle_not_recompute_node_pass_remove_not_recompute_node_0103.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_environ_add_const_eliminate__0190.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_environ_add_const_eliminate__0191.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_environ_get_add_eliminate_0184.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_environ_get_add_eliminate_0185.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_environ_get_depend_swap_0188.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_environ_get_depend_swap_0189.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_environ_get_eliminate_0182.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_environ_get_eliminate_0183.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_environ_get_set_eliminate_0186.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_environ_get_set_eliminate_0187.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_float_tuple_getitem_switch_0166.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_float_tuple_getitem_switch_0167.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_inline_0170.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_inline_0171.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_load_eliminater_0176.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_load_eliminater_0177.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_make_slice_get_slice_eliminator_0164.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_make_slice_get_slice_eliminator_0165.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_parallel_virtual_node_0194.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_parallel_virtual_node_0195.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_reset_defer_inline_0168.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_reset_defer_inline_0169.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_special_op_eliminate_0180.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_special_op_eliminate_0181.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_stopgrad_eliminater_0178.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_stopgrad_eliminater_0179.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_tuple_list_convert_item_index_to_positive_0162.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_tuple_list_convert_item_index_to_positive_0163.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_tuple_list_get_item_const_eliminator_0154.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_tuple_list_get_item_const_eliminator_0155.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_tuple_list_get_item_depend_reorder_0160.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_tuple_list_get_item_depend_reorder_0161.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_tuple_list_get_item_eliminator_0152.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_tuple_list_get_item_eliminator_0153.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_tuple_list_get_set_item_eliminator_0158.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_tuple_list_get_set_item_eliminator_0159.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_tuple_list_set_item_eliminator_0156.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_tuple_list_set_item_eliminator_0157.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_updatestate_pure_node_eliminater_0174.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_updatestate_pure_node_eliminater_0175.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_updatestate_useless_node_eliminater_0172.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_updatestate_useless_node_eliminater_0173.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_value_based_eliminate_0192.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_value_based_eliminate_0193.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_b_r1_b_1_zero_like_fill_zero_0150.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_b_r1_b_1_zero_like_fill_zero_0151.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_pass_0_py_interpret_to_execute_0028.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_pass_0_py_interpret_to_execute_0029.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_pass_10_remove_dup_value_0230.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_10_remove_dup_value_0231.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_pass_11_tuple_transform_0236.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_11_tuple_transform_0237.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_pass_12_add_cache_embedding_0238.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_12_add_cache_embedding_0239.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_13_add_recomputation_0240.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_13_add_recomputation_0241.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_14_cse_after_recomputation_0244.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_14_cse_after_recomputation_0245.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_15_environ_conv_0246.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_15_environ_conv_0247.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_16_label_micro_interleaved_index_0248.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_16_label_micro_interleaved_index_0249.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_17_slice_recompute_activation_0250.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_17_slice_recompute_activation_0251.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_18_micro_interleaved_order_control_0252.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_18_micro_interleaved_order_control_0253.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_19_comp_comm_scheduling_0254.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_19_comp_comm_scheduling_0255.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_pass_1_rewriter_before_opt_a_0030.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_pass_1_rewriter_before_opt_a_0031.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_20_reorder_send_recv_between_fp_bp_0256.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_20_reorder_send_recv_between_fp_bp_0257.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_21_comm_op_add_attrs_0258.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_21_comm_op_add_attrs_0259.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_22_process_send_recv_for_ge_0260.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_22_process_send_recv_for_ge_0261.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_23_add_comm_op_reuse_tag_0262.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_23_add_comm_op_reuse_tag_0263.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_24_overlap_opt_shard_in_pipeline_0264.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_24_overlap_opt_shard_in_pipeline_0265.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_25_grouped_pairwise_exchange_alltoall_0266.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_25_grouped_pairwise_exchange_alltoall_0267.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_26_overlap_recompute_and_grad_model_parallel_0268.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_26_overlap_recompute_and_grad_model_parallel_0269.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_27_split_matmul_comm_elemetwise_0270.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_27_split_matmul_comm_elemetwise_0271.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_28_split_layernorm_comm_0272.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_28_split_layernorm_comm_0273.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_29_overlap_grad_matmul_and_grad_allreduce_0274.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_29_overlap_grad_matmul_and_grad_allreduce_0275.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_pass_2_opt_a_0140.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_2_opt_a_0141.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_pass_30_handle_group_info_0276.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_30_handle_group_info_0277.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_pass_3_slice_cell_reuse_recomputed_activation_0142.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_3_slice_cell_reuse_recomputed_activation_0143.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_pass_4_rewriter_after_opt_a_0144.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_4_rewriter_after_opt_a_0145.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_pass_5_convert_pyexecute_list_input_0146.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_5_convert_pyexecute_list_input_0147.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_pass_6_order_py_execute_after_rewriter_0148.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_6_order_py_execute_after_rewriter_0149.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_pass_7_opt_b_0210.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_7_opt_b_0211.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_pass_8_cconv_0212.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_8_cconv_0213.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_pass_9_opt_after_cconv_0228.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_pass_9_opt_after_cconv_0229.dot
-r--------.  1 root root  1827 Jul 31 21:53 opt_resolve_r1_resolve_getattr_setattr_resolve_0002.ir
-r--------.  1 root root  4153 Jul 31 21:53 opt_resolve_r1_resolve_getattr_setattr_resolve_0003.dot
-r--------.  1 root root  1827 Jul 31 21:53 opt_resolve_r1_resolve_getattr_setattr_resolve_0004.ir
-r--------.  1 root root  4153 Jul 31 21:53 opt_resolve_r1_resolve_getattr_setattr_resolve_0005.dot
-r--------.  1 root root  1180 Jul 31 21:53 opt_substep_meta_unpack_prepare_r1_0_meta_unpack_prepare_0012.ir
-r--------.  1 root root  4153 Jul 31 21:53 opt_substep_meta_unpack_prepare_r1_0_meta_unpack_prepare_0013.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_after_cconv_r1_0_c_1_0214.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_after_cconv_r1_0_c_1_0215.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_after_cconv_r1_1_parameter_eliminate_0216.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_after_cconv_r1_1_parameter_eliminate_0217.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_after_cconv_r1_2_updatestate_depend_eliminate_0218.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_after_cconv_r1_2_updatestate_depend_eliminate_0219.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_after_cconv_r1_3_updatestate_assign_eliminate_0220.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_after_cconv_r1_3_updatestate_assign_eliminate_0221.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_after_cconv_r1_4_updatestate_loads_eliminate_0222.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_after_cconv_r1_4_updatestate_loads_eliminate_0223.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_after_cconv_r1_5_cse_0224.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_after_cconv_r1_5_cse_0225.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_after_cconv_r1_6_renormalize_0226.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_after_cconv_r1_6_renormalize_0227.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_substep_opt_after_recompute_r1_0_cse_0242.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_after_recompute_r1_0_cse_0243.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_substep_opt_a_r1_0_expand_dump_flag_0032.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_0_expand_dump_flag_0033.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_substep_opt_a_r1_10_pynative_shard_0086.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_10_pynative_shard_0087.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_substep_opt_a_r1_11_auto_parallel_0088.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_11_auto_parallel_0089.dot
-r--------.  1 root root   596 Jul 31 21:53 opt_substep_opt_a_r1_12_parallel_0090.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_12_parallel_0091.dot
-r--------.  1 root root   596 Jul 31 21:53 opt_substep_opt_a_r1_13_allreduce_fusion_0092.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_13_allreduce_fusion_0093.dot
-r--------.  1 root root   596 Jul 31 21:53 opt_substep_opt_a_r1_14_virtual_dataset_0094.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_14_virtual_dataset_0095.dot
-r--------.  1 root root   596 Jul 31 21:53 opt_substep_opt_a_r1_15_get_grad_eliminate__0096.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_15_get_grad_eliminate__0097.dot
-r--------.  1 root root   596 Jul 31 21:53 opt_substep_opt_a_r1_16_virtual_output_0098.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_16_virtual_output_0099.dot
-r--------.  1 root root   596 Jul 31 21:53 opt_substep_opt_a_r1_17_cell_reuse_recompute_pass_0100.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_17_cell_reuse_recompute_pass_0101.dot
-r--------.  1 root root   596 Jul 31 21:53 opt_substep_opt_a_r1_18_cell_reuse_handle_not_recompute_node_pass_0104.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_18_cell_reuse_handle_not_recompute_node_pass_0105.dot
-r--------.  1 root root   596 Jul 31 21:53 opt_substep_opt_a_r1_19_meta_fg_expand_0106.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_19_meta_fg_expand_0107.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_substep_opt_a_r1_1_switch_simplify_0034.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_1_switch_simplify_0035.dot
-r--------.  1 root root   596 Jul 31 21:53 opt_substep_opt_a_r1_20_after_resolve_0108.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_20_after_resolve_0109.dot
-r--------.  1 root root   596 Jul 31 21:53 opt_substep_opt_a_r1_21_a_after_grad_0110.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_21_a_after_grad_0111.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_a_r1_22_renormalize_0112.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_a_r1_22_renormalize_0113.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_a_r1_23_real_op_eliminate_0114.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_a_r1_23_real_op_eliminate_0115.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_a_r1_24_auto_monad_grad_0116.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_a_r1_24_auto_monad_grad_0117.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_a_r1_25_auto_monad_eliminator_0118.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_a_r1_25_auto_monad_eliminator_0119.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_a_r1_26_cse_0120.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_a_r1_26_cse_0121.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_a_r1_27_a_3_0138.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_a_r1_27_a_3_0139.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_substep_opt_a_r1_2_a_1_0036.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_2_a_1_0037.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_substep_opt_a_r1_3_recompute_prepare_0038.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_3_recompute_prepare_0039.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_substep_opt_a_r1_4_updatestate_depend_eliminate_0040.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_4_updatestate_depend_eliminate_0041.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_substep_opt_a_r1_5_updatestate_assign_eliminate_0042.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_5_updatestate_assign_eliminate_0043.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_substep_opt_a_r1_6_updatestate_loads_eliminate_0044.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_6_updatestate_loads_eliminate_0045.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_substep_opt_a_r1_7_parameter_eliminate_0046.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_7_parameter_eliminate_0047.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_substep_opt_a_r1_8_a_2_0082.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_8_a_2_0083.dot
-r--------.  1 root root   518 Jul 31 21:53 opt_substep_opt_a_r1_9_accelerated_algorithm_0084.ir
-r--------.  1 root root  1076 Jul 31 21:53 opt_substep_opt_a_r1_9_accelerated_algorithm_0085.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_b_r1_0_b_1_0196.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_b_r1_0_b_1_0197.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_b_r1_1_b_2_0198.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_b_r1_1_b_2_0199.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_b_r1_2_updatestate_depend_eliminate_0200.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_b_r1_2_updatestate_depend_eliminate_0201.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_b_r1_3_updatestate_assign_eliminate_0202.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_b_r1_3_updatestate_assign_eliminate_0203.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_b_r1_4_updatestate_loads_eliminate_0204.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_b_r1_4_updatestate_loads_eliminate_0205.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_b_r1_5_renormalize_0206.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_b_r1_5_renormalize_0207.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_b_r1_6_cse_0208.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_b_r1_6_cse_0209.dot
-r--------.  1 root root  1827 Jul 31 21:53 opt_substep_opt_resolve_r1_0_resolve_0006.ir
-r--------.  1 root root  4153 Jul 31 21:53 opt_substep_opt_resolve_r1_0_resolve_0007.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_trans_graph_r1_0_d_1_0232.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_trans_graph_r1_0_d_1_0233.dot
-r--------.  1 root root   602 Jul 31 21:53 opt_substep_opt_trans_graph_r1_1_renormalize_0234.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_opt_trans_graph_r1_1_renormalize_0235.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_substep_special_op_eliminate_r1_0_ad_related_special_op_eliminate_0284.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_special_op_eliminate_r1_0_ad_related_special_op_eliminate_0285.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_substep_special_op_eliminate_r1_1_mutable_op_eliminate_0286.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_special_op_eliminate_r1_1_mutable_op_eliminate_0287.dot
-r--------.  1 root root   637 Jul 31 21:53 opt_substep_special_op_eliminate_r1_2_convert_tensor_op_eliminate_0288.ir
-r--------.  1 root root  1078 Jul 31 21:53 opt_substep_special_op_eliminate_r1_2_convert_tensor_op_eliminate_0289.dot
drwx------.  4 root root    53 Jul 31 20:22 rank_0
-rw-------.  1 root root    73 Jul 31 20:30 test2.py
-r--------.  1 root root    90 Jul 31 20:22 test.data
-rw-------.  1 root root   581 Jul 31 21:52 test.py
```

**3. 根因分析**

parse阶段负责解析入口函数，该阶段会初步生成MindIR，如果查看IR文件，我们能观察到该阶段仅仅解析了顶层Cell的图信息；

symbol\_resolve阶段负责进一步解析入口函数，主要是递归解析入口函数直接或间接引用到的其他函数和对象。如果使用了尚不支持的语法，一般会在此阶段出错；

abstract\_specialize阶段，会根据输入信息推导出IR中所有节点的数据类型和形状信息。当需要查看IR中具体算子的形状或数据类型，可查看该IR文件；

optimize阶段负责硬件无关的优化，自动微分与自动并行功能也是在该阶段展开。该阶段又可细分为若干个子阶段，在IR文件列表中，其中以opt\_pass\_\[序号\]为前缀的文件分别是这些子阶段结束后保存的IR文件，非框架开发人员无需过多关注；

validate阶段负责校验编译出来的计算图，如果到此阶段IR中还有仅临时使用的内部算子，则会报错退出；

task\_emit阶段负责将计算图传给后端进一步处理；

execute阶段负责启动执行图流程，该阶段的IR图是前端编译阶段的最终图。

%0\(\[CNode\]20\) = Add\(%para1\_x, %para2\_y\)，图里面会出现类似这样的关键字。

若是编译失败，会出现analyze\_fail.ir这样的ir图，可以根据这个图找到具体报错的语句

