add_pass_for_special_op_simplify

This commit is contained in:
lvliang 2021-05-25 14:35:06 +08:00
parent 18ad5412df
commit a304d14706
2 changed files with 12 additions and 9 deletions

View File

@ -145,16 +145,18 @@ FuncGraphPtr PrimBpOptPassStep1(const opt::irpass::OptimizeIRPassLib &irpass, co
}
FuncGraphPtr PrimBpOptPassStep2(const opt::irpass::OptimizeIRPassLib &irpass, const ResourcePtr &res) {
opt::OptPassConfig switch_simplify_ = opt::OptPassConfig({
opt::OptPassConfig special_op_simplify = opt::OptPassConfig({
irpass.switch_simplify_,
irpass.reduce_eliminate_,
irpass.tile_eliminate_,
irpass.arithmetic_simplify_,
});
opt::OptPassConfig inline_ = opt::OptPassConfig({
opt::OptPassConfig inline_opt = opt::OptPassConfig({
irpass.inline_,
});
opt::OptPassConfig zero_like_fill_zero_ = opt::OptPassConfig({
opt::OptPassConfig zero_like_fill_zero = opt::OptPassConfig({
irpass.zero_like_fill_zero_,
});
@ -162,9 +164,9 @@ FuncGraphPtr PrimBpOptPassStep2(const opt::irpass::OptimizeIRPassLib &irpass, co
return ReAutoMonad(root);
};
OptPassGroupMap map({{"ad_renormalize", opt::OptPassConfig::Renormalize()},
{"ad_inline_", inline_},
{"ad_switch_simplify_", switch_simplify_},
{"ad_zero_like_fill_zero_", zero_like_fill_zero_},
{"ad_inline_", inline_opt},
{"ad_special_op_simplify_", special_op_simplify},
{"ad_zero_like_fill_zero_", zero_like_fill_zero},
{"auto_monad_grad", opt::OptPassConfig(re_auto_monadwrapper)}});
auto prim_bprop_opt_step_2 = opt::Optimizer::MakeOptimizer("prim_bprop_opt_step_2", res, map);
@ -182,7 +184,7 @@ FuncGraphPtr BpropGraphFinalOptPass(const ResourcePtr &res) {
}
opt::irpass::OptimizeIRPassLib irpass;
opt::OptPassConfig bg_final_opt_ = opt::OptPassConfig({
opt::OptPassConfig bg_final_opt = opt::OptPassConfig({
irpass.inline_,
irpass.tuple_list_get_set_item_eliminator_,
irpass.tuple_list_get_item_eliminator_,
@ -191,7 +193,7 @@ FuncGraphPtr BpropGraphFinalOptPass(const ResourcePtr &res) {
irpass.reshape_eliminate_,
irpass.switch_simplify_,
});
OptPassGroupMap map({{"ad_final_opt_", bg_final_opt_}});
OptPassGroupMap map({{"ad_final_opt_", bg_final_opt}});
if (pynative::PynativeExecutor::GetInstance()->grad_executor()->need_renormalize()) {
map.emplace_back(std::make_pair("renormalize", opt::OptPassConfig::Renormalize()));
}

View File

@ -2100,7 +2100,8 @@ void GradExecutor::EndGraphInner(py::object *ret, const py::object &cell, const
MS_EXCEPTION_IF_NULL(graph_info);
if (graph_info->node_map.find(out_id) == graph_info->node_map.end()) {
if (py::isinstance<py::tuple>(out) || py::isinstance<py::list>(out)) {
CreateMakeTupleNodeForMultiOut(cell_id, curr_g_, out);
auto tuple_out = py::cast<py::tuple>(out);
CreateMakeTupleNodeForMultiOut(cell_id, curr_g_, tuple_out);
} else {
MS_LOG(DEBUG) << "Set ValueNode as output for graph, out id: " << out_id;
MakeValueNode(out, out_id);