The basic idea is: exploits data dependency to control the execution order of side-effect operations, and keep the semantics of ANF unchanged. The ControlDepend primitive is removed and there are two primitives added: 1. UpdateState: ``` a = Assign(para, value) ``` became: ``` a = Assign(para, value, u) u = UpdateState(u, a) ``` 2. Load: ``` x = Add(para, value) ``` became: ``` p = Load(para, u) x = Add(p, value) u = UpdateState(u, p) ``` |
||
|---|---|---|
| .. | ||
| allreduce_fusion_test.cc | ||
| common_subexpression_elimination_test.cc | ||
| const_to_attr_strided_slice_grad_test.cc | ||
| convert_const_input_to_attr_test.cc | ||
| convert_const_input_to_tensor_input_test.cc | ||
| convert_tuple_input_to_dynamic_input_test.cc | ||
| convert_tuple_output_to_maketuple_test.cc | ||
| eliminate_redundant_op_test.cc | ||
| getitem_tuple_test.cc | ||
| optimize_dependence_test.cc | ||