Enhance performance of FlopsScorer
for findslices
#63
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR addresses the performance issues of the
FlopsScorer
, a scorer used by thefindslices
function. Before this PR, this function was not very efficient since it created a lot ofPostOrderDFS
instances, and that was slow.In this PR, we modify the
FlopsScorer
so now it directly calculates the difference in score resulting from the slice, rather than creating some copies of the contraction path. This implementation is more efficient (it can reduce the runtime about ~50%) and I have checked that it yields to the same results as before.Example
See this performance gain:
As you can see, we reduced by 50% the runtime and almost 50% the memory allocations too.