MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / remove_unused_exprs

Method remove_unused_exprs

imperative/src/impl/subgraph.cpp:6–29  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4namespace imperative {
5
6void Subgraph::remove_unused_exprs() {
7 std::unordered_set<size_t> required_vars = {outputs.begin(), outputs.end()};
8 required_vars.erase(0);
9 for (auto iter = exprs.rbegin(); iter != exprs.rend(); ++iter) {
10 auto& expr = *iter;
11 bool required = false;
12 for (auto output : expr.outputs) {
13 if (required_vars.count(output)) {
14 required = true;
15 break;
16 }
17 }
18 if (required) {
19 required_vars.insert(expr.inputs.begin(), expr.inputs.end());
20 } else {
21 expr.op = nullptr;
22 }
23 }
24 exprs.erase(
25 std::remove_if(
26 exprs.begin(), exprs.end(),
27 [](auto expr) { return expr.op == nullptr; }),
28 exprs.end());
29}
30
31SmallVector<bool> Subgraph::gen_input_mask() {
32 std::unordered_set<size_t> unused_inputs = {inputs.begin(), inputs.end()};

Callers 1

encodeMethod · 0.80

Calls 7

rbeginMethod · 0.80
rendMethod · 0.80
beginMethod · 0.45
endMethod · 0.45
eraseMethod · 0.45
countMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected