-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
dicrease the complexity of CalcDep from exponential to linear #4053
Conversation
fe3beaf
to
f75253c
Compare
LGTM. |
Why is it assumed a tree form? I can see that the base class |
@yaochengji because what does it mean for a graph form program to have scope and effect? |
@MarisaKirisame but I think since using a cc @icemelon9 |
you can still has it. I just mean you should not pass graph in. |
@MarisaKirisame do you think this commit should be merged? |
sure. It will increase the robustness of the DCE. |
Please add a test case |
f75253c
to
e08a1f1
Compare
@vinx13 Done. |
@@ -110,7 +110,11 @@ class CalcDep : private ExprVisitor { | |||
VarMap<size_t> use_map_; | |||
|
|||
void VisitExpr(const Expr& e) final { | |||
return ExprFunctor<void(const Expr& e)>::VisitExpr(e); | |||
visit_counter_[e.get()]++; | |||
if (visit_counter_[e.get()] <= 2) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why <=2
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the dce code seprate variable into three parts:
used 0 times (remove)
used 1 times (inline)
used 2 times (dont do anything).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
okay, let's add a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
e08a1f1
to
90c5b30
Compare
Thanks @yaochengji @MarisaKirisame this is merged |
* master: (21 commits) [Fix][VM] Fix VM invoke with set_params (apache#4079) [QNN] Refactor fixed point multiplication in requantize (apache#4073) Fix match case in Python-side expr functor (apache#4037) Hide symbols from dependent libraries if HIDE_PRIVATE_SYMBOLS is ON. (apache#4041) Add gradient for log-softmax (apache#4069) [DOC] Fix typos in tutorials (apache#4066) dicrease the complexity of CalcDep from exponential to linear (apache#4053) [Relay][AlterOp] Minor refactor. (apache#4064) [Relay][AlterOp] Improving support for broadcast layout alteration. (apache#4040) Add parses support for zeros_like tflite operator (apache#4042) [Bugfix][TF] reset graph after getting tag of savedmodel (apache#4055) [Relay][VM] Add more passes to VMCompiler (apache#4058) [Relay][VM] Add autotvm context when compile (apache#4062) [Bugfix] Fix target host for vm compiler (apache#4057) [Relay][Training] Add gradient for Crossentropy (apache#3925) [llvm] switch to use Align for llvm trunk (apache#4051) [Relay][TopHub] Add switch to disable TopHub download (apache#4015) [Relay][Op] Add instance norm op (apache#4004) [QNN][Relay] Calling Dialect passes from inside Relay Build API. (apache#3971) [RELAY/PASS] Fix the extent for the post_stmt in the loop partition (apache#3734) ...
The DCE pass bug is not caused by infinite loop, it is just time consuming.
@MarisaKirisame please review, thanks!