Skip to content
This repository was archived by the owner on Aug 19, 2023. It is now read-only.

Conversation

mtreinish
Copy link
Member

Summary

This commit reorganizes the passes benchmarks to better measure memory
consumption and decrease the amount of time spent in setup. There are
tests for 3 passes: ConsolidateBlocks, CommutativeCancellation, and
Optimize1qGates that depended on either an analysis pass or
tranformation pass to be run before they can work or are effective. To
isolate the benchmarking of these passes those prequesite passes were
run in setup and then could be accessed by the benchmark methods for
those passes. However this had a cost, it makes the setup for every
benchmark slower because we have to run these extra passes even if the
results are not used. This has a big impact for peakmem benchmarks
though, because the peakmem includes the setup() function there are
cases where the results of peakmem could be skewed by these passes. To
fix this this commit splits benchmarks into classes that run the extra
passes to isolate the setup cost to only those benchmarks which actually
need the extra passes.

Details and comments

This commit reorganizes the passes benchmarks to better measure memory
consumption and decrease the amount of time spent in setup. There are
tests for 3 passes: ConsolidateBlocks, CommutativeCancellation, and
Optimize1qGates that depended on either an analysis pass or
tranformation pass to be run before they can work or are effective. To
isolate the benchmarking of these passes those prequesite passes were
run in setup and then could be accessed by the benchmark methods for
those passes. However this had a cost, it makes the setup for every
benchmark slower because we have to run these extra passes even if the
results are not used. This has a big impact for peakmem benchmarks
though, because the peakmem includes the setup() function there are
cases where the results of peakmem could be skewed by these passes. To
fix this this commit splits benchmarks into classes that run the extra
passes to isolate the setup cost to only those benchmarks which actually
need the extra passes.
@mtreinish mtreinish requested a review from kdk December 3, 2019 18:07
@mtreinish mtreinish merged commit 72380e4 into Qiskit:master Dec 4, 2019
@mtreinish mtreinish deleted the reorg-pass-bench branch December 4, 2019 12:36
jakelishman pushed a commit to jakelishman/qiskit-terra that referenced this pull request Aug 1, 2023
This commit reorganizes the passes benchmarks to better measure memory
consumption and decrease the amount of time spent in setup. There are
tests for 3 passes: ConsolidateBlocks, CommutativeCancellation, and
Optimize1qGates that depended on either an analysis pass or
tranformation pass to be run before they can work or are effective. To
isolate the benchmarking of these passes those prequesite passes were
run in setup and then could be accessed by the benchmark methods for
those passes. However this had a cost, it makes the setup for every
benchmark slower because we have to run these extra passes even if the
results are not used. This has a big impact for peakmem benchmarks
though, because the peakmem includes the setup() function there are
cases where the results of peakmem could be skewed by these passes. To
fix this this commit splits benchmarks into classes that run the extra
passes to isolate the setup cost to only those benchmarks which actually
need the extra passes.
jakelishman pushed a commit to jakelishman/qiskit-terra that referenced this pull request Aug 11, 2023
This commit reorganizes the passes benchmarks to better measure memory
consumption and decrease the amount of time spent in setup. There are
tests for 3 passes: ConsolidateBlocks, CommutativeCancellation, and
Optimize1qGates that depended on either an analysis pass or
tranformation pass to be run before they can work or are effective. To
isolate the benchmarking of these passes those prequesite passes were
run in setup and then could be accessed by the benchmark methods for
those passes. However this had a cost, it makes the setup for every
benchmark slower because we have to run these extra passes even if the
results are not used. This has a big impact for peakmem benchmarks
though, because the peakmem includes the setup() function there are
cases where the results of peakmem could be skewed by these passes. To
fix this this commit splits benchmarks into classes that run the extra
passes to isolate the setup cost to only those benchmarks which actually
need the extra passes.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants