Skip to content

Perform ConsolidateBlocks analysis in parallel#16230

Open
mtreinish wants to merge 1 commit into
Qiskit:mainfrom
mtreinish:parallel-consolidation
Open

Perform ConsolidateBlocks analysis in parallel#16230
mtreinish wants to merge 1 commit into
Qiskit:mainfrom
mtreinish:parallel-consolidation

Conversation

@mtreinish
Copy link
Copy Markdown
Member

This commit updates the ConsolidateBlocks transpiler pass to internally be multithreaded. It will run the analysis of blocks in parallel and make the determination on whether to do a consolidation or not and collect that result into an intermediate vector. Then serially we'll iterate over the vector and update the dag based on the result of the analysis. This speeds up the runtime performance of the pass especially as the analysis is the more computationally expensive part of the pass.

This change is still relevant even after #16136 merges as the new TwoQubitPeepholeOptimization pass is only being used to replace the use of ConsolidateBlocks in the optimization loop. We still run the pass as part of the init stage by default and this will speed up that execution.

AI/LLM disclosure

  • I didn't use LLM tooling, or only used it privately.
  • I used the following tool to help write this PR description:
  • I used the following tool to generate or modify code:

This commit updates the ConsolidateBlocks transpiler pass to internally
be multithreaded. It will run the analysis of blocks in parallel and
make the determination on whether to do a consolidation or not and
collect that result into an intermediate vector. Then serially we'll
iterate over the vector and update the dag based on the result of
the analysis. This speeds up the runtime performance of the pass
especially as the analysis is the more computationally expensive
part of the pass.

This change is still relevant even after Qiskit#16136 merges as the new
TwoQubitPeepholeOptimization pass is only being used to replace the
use of ConsolidateBlocks in the optimization loop. We still run the
pass as part of the init stage by default and this will speed up that
execution.
@mtreinish mtreinish added this to the 2.5.0 milestone May 21, 2026
@mtreinish mtreinish requested a review from a team as a code owner May 21, 2026 19:43
@mtreinish mtreinish requested a review from Cryoris May 21, 2026 19:43
@mtreinish mtreinish added performance Rust This PR or issue is related to Rust code in the repository labels May 21, 2026
@qiskit-bot
Copy link
Copy Markdown
Collaborator

One or more of the following people are relevant to this code:

  • @Qiskit/terra-core

@coveralls
Copy link
Copy Markdown

Coverage Report for CI Build 26249064185

Coverage increased (+0.02%) to 87.502%

Details

  • Coverage increased (+0.02%) from the base build.
  • Patch coverage: 38 uncovered changes across 1 file (223 of 261 lines covered, 85.44%).
  • 5 coverage regressions across 4 files.

Uncovered Changes

File Changed Covered %
crates/transpiler/src/passes/consolidate_blocks.rs 261 223 85.44%

Coverage Regressions

5 previously-covered lines in 4 files lost coverage.

File Lines Losing Coverage Coverage
crates/qasm2/src/lex.rs 2 92.29%
crates/circuit/src/parameter/parameter_expression.rs 1 91.04%
crates/circuit/src/parameter/symbol_expr.rs 1 74.21%
crates/transpiler/src/passes/consolidate_blocks.rs 1 88.58%

Coverage Stats

Coverage Status
Relevant Lines: 123883
Covered Lines: 108400
Line Coverage: 87.5%
Coverage Strength: 957569.5 hits per line

💛 - Coveralls

@mtreinish
Copy link
Copy Markdown
Member Author

I ran asv to compare the performance with this PR vs not

Benchmarks that have improved:

| Change   | Before [7648d768]    | After [465137b2]    |   Ratio | Benchmark (Parameter)                                                                |
|----------|----------------------|---------------------|---------|--------------------------------------------------------------------------------------|
| -        | 908±2μs              | 818±5μs             |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 16, 2)  |
| -        | 56.8±1ms             | 50.4±0.6ms          |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 32, 2)     |
| -        | 29.1±0.5ms           | 25.7±0.2ms          |    0.88 | utility_scale.UtilityScaleBenchmarks.time_bv_100('cx')                               |
| -        | 881±5μs              | 755±7μs             |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 16, 2)            |
| -        | 1.20±0.01ms          | 1.03±0.01ms         |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 16, 3)  |
| -        | 13.7±0.4ms           | 11.8±0.09ms         |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 16, 2)     |
| -        | 1.59±0.01ms          | 1.37±0ms            |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 16, 2)            |
| -        | 1.18±0.01ms          | 979±7μs             |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 16, 3)            |
| -        | 2.42±0.01ms          | 2.00±0.01ms         |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 8, 2)         |
| -        | 2.02±0ms             | 1.66±0.01ms         |    0.82 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 8, 2)          |
| -        | 1.84±0.01ms          | 1.48±0.03ms         |    0.8  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 16, 3)            |
| -        | 1.62±0.01ms          | 1.28±0.02ms         |    0.79 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 32, 2)  |
| -        | 2.34±0.02ms          | 1.80±0.01ms         |    0.77 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 8, 3)          |
| -        | 1.45±0ms             | 1.10±0ms            |    0.76 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 32, 2)            |
| -        | 70.3±0.9ms           | 53.5±0.9ms          |    0.76 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 32, 3)     |
| -        | 1.86±0.01ms          | 1.41±0.01ms         |    0.76 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 8, 2)            |
| -        | 24.4±0.1ms           | 18.6±0.1ms          |    0.76 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 128, 2)           |
| -        | 4.64±0.04ms          | 3.52±0.03ms         |    0.76 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 32, 2)            |
| -        | 2.84±0.01ms          | 2.16±0.01ms         |    0.76 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 8, 3)         |
| -        | 2.21±0.01ms          | 1.66±0.01ms         |    0.75 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 32, 3)  |
| -        | 32.9±0.08ms          | 24.5±0.2ms          |    0.75 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 128, 2)       |
| -        | 4.59±0.07ms          | 3.47±0.02ms         |    0.75 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 16, 2)        |
| -        | 16.9±0.07ms          | 12.7±0.2ms          |    0.75 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 64, 2)        |
| -        | 11.1±0.2ms           | 8.21±0.07ms         |    0.74 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 64, 2)            |
| -        | 3.22±0.03ms          | 2.35±0.02ms         |    0.73 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 64, 2)  |
| -        | 2.00±0.02ms          | 1.44±0.01ms         |    0.72 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 32, 3)            |
| -        | 7.80±0.3ms           | 5.62±0.3ms          |    0.72 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 128, 2) |
| -        | 4.45±0.06ms          | 3.18±0.02ms         |    0.72 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 64, 3)  |
| -        | 17.8±0.4ms           | 12.7±0.4ms          |    0.72 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 16, 3)     |
| -        | 149±0.6ms            | 106±2ms             |    0.71 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 64, 2)           |
| -        | 11.1±0.2ms           | 7.76±0.3ms          |    0.7  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 128, 3) |
| -        | 5.48±0.06ms          | 3.82±0.1ms          |    0.7  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 32, 3)            |
| -        | 9.08±0.1ms           | 6.38±0.1ms          |    0.7  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 32, 2)        |
| -        | 28.8±0.2ms           | 19.8±0.3ms          |    0.69 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 128, 3)           |
| -        | 103±0.8ms            | 70.3±0.2ms          |    0.68 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 128, 2)        |
| -        | 25.1±0.3ms           | 17.0±0.2ms          |    0.68 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 32, 2)         |
| -        | 49.9±0.4ms           | 34.1±0.8ms          |    0.68 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 64, 2)         |
| -        | 31.1±0.2ms           | 21.0±0.3ms          |    0.68 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 32, 2)           |
| -        | 10.3±0.09ms          | 6.98±0.1ms          |    0.68 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 32, 3)        |
| -        | 9.08±0.08ms          | 6.08±0.07ms         |    0.67 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 16, 2)         |
| -        | 13.2±0.2ms           | 8.78±0.2ms          |    0.67 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 64, 3)            |
| -        | 5.56±0.08ms          | 3.73±0.04ms         |    0.67 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 16, 3)        |
| -        | 20.5±0.1ms           | 13.7±0.2ms          |    0.67 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 64, 3)        |
| -        | 2.65±0.02ms          | 1.75±0.01ms         |    0.66 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 8, 3)            |
| -        | 40.0±0.2ms           | 26.5±0.3ms          |    0.66 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 128, 3)       |
| -        | 7.51±0.2ms           | 4.87±0.04ms         |    0.65 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 16, 2)           |
| -        | 2.71±0.04ms          | 1.73±0.01ms         |    0.64 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 64, 2)            |
| -        | 3.69±0.06ms          | 2.33±0.02ms         |    0.63 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 64, 3)            |
| -        | 4.80±0.1ms           | 2.98±0.04ms         |    0.62 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 128, 2)           |
| -        | 6.95±0.1ms           | 4.07±0.03ms         |    0.59 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 128, 3)           |
| -        | 11.4±0.2ms           | 6.60±0.1ms          |    0.58 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 16, 3)         |
| -        | 46.1±0.3ms           | 25.9±0.3ms          |    0.56 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 32, 3)           |
| -        | 148±0.8ms            | 80.5±0.5ms          |    0.54 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 128, 3)        |
| -        | 72.6±0.5ms           | 38.2±0.6ms          |    0.53 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 64, 3)         |
| -        | 11.4±0.2ms           | 6.00±0.1ms          |    0.53 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 16, 3)           |
| -        | 35.9±0.3ms           | 18.7±0.09ms         |    0.52 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 32, 3)         |

Benchmarks that have stayed the same:

| Change   | Before [7648d768]    | After [465137b2]    | Ratio   | Benchmark (Parameter)                                                                                  |
|----------|----------------------|---------------------|---------|--------------------------------------------------------------------------------------------------------|
|          | 2.81±0.06s           | 3.02±0.06s          | 1.08    | utility_scale.UtilityScaleBenchmarks.time_circSU2_89('ecr')                                            |
|          | 2.75±0.04s           | 2.93±0.05s          | 1.07    | utility_scale.UtilityScaleBenchmarks.time_circSU2_89('cz')                                             |
|          | 2.81±0.1s            | 2.97±0.05s          | 1.06    | utility_scale.UtilityScaleBenchmarks.time_circSU2_89('cx')                                             |
|          | 3.60±0.04ms          | 3.75±0.2ms          | 1.04    | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(2)        |
|          | 524±1μs              | 539±3μs             | 1.03    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 32, 1)                              |
|          | 10.8±0.3ms           | 11.1±0.2ms          | 1.03    | transpiler_levels.TranspilerLevelBenchmarks.time_quantum_volume_transpile_50_x_20(0)                   |
|          | 345±1μs              | 352±5μs             | 1.02    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 16, 1)                              |
|          | 314±1μs              | 320±4μs             | 1.02    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 32, 0)                              |
|          | 1.60±0ms             | 1.63±0.02ms         | 1.02    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 128, 1)                   |
|          | 400±2μs              | 407±3μs             | 1.02    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 32, 0)                    |
|          | 563±1μs              | 572±6μs             | 1.02    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 32, 1)                    |
|          | 218±0.9μs            | 222±0.7μs           | 1.02    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 8, 0)                     |
|          | 284±1μs              | 291±1μs             | 1.02    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 8, 1)                     |
|          | 1.53±0ms             | 1.56±0.01ms         | 1.02    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 8, 0)                        |
|          | 147±0.8μs            | 150±1μs             | 1.02    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 4, 1)                                |
|          | 249±0.7μs            | 253±0.5μs           | 1.02    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 4, 2)                                |
|          | 141±0.3μs            | 144±3μs             | 1.02    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 8, 0)                                |
|          | 223±3μs              | 227±6μs             | 1.02    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 8, 1)                                |
|          | 165±0.4μs            | 169±0.3μs           | 1.02    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 4, 0)                      |
|          | 229±0.6μs            | 233±2μs             | 1.02    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 4, 1)                      |
|          | 359±3μs              | 366±3μs             | 1.02    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 4, 3)                      |
|          | 495±7μs              | 505±6μs             | 1.02    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 8, 2)                      |
|          | 496±6μs              | 507±2μs             | 1.02    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 8, 3)                      |
|          | 630±4μs              | 635±9μs             | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 8, 0)                            |
|          | 1.12±0ms             | 1.13±0.01ms         | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 8, 1)                            |
|          | 836±3μs              | 845±5μs             | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 128, 0)                             |
|          | 1.58±0.01ms          | 1.60±0.01ms         | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 128, 1)                             |
|          | 232±1μs              | 234±1μs             | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 16, 0)                              |
|          | 494±2μs              | 498±3μs             | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 64, 0)                              |
|          | 877±5μs              | 890±5μs             | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 64, 1)                              |
|          | 255±2μs              | 258±3μs             | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 8, 1)                               |
|          | 720±7μs              | 728±6μs             | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 8, 3)                               |
|          | 383±2μs              | 388±4μs             | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 16, 1)                    |
|          | 921±5μs              | 928±8μs             | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 64, 1)                    |
|          | 230±0.8ms            | 232±1ms             | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 128, 0)                      |
|          | 4.58±0.01ms          | 4.60±0.01ms         | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 16, 0)                       |
|          | 5.94±0.02ms          | 5.98±0.01ms         | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 16, 1)                       |
|          | 21.1±0.1ms           | 21.3±0.1ms          | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 32, 1)                       |
|          | 58.6±0.1ms           | 59.1±0.5ms          | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 64, 0)                       |
|          | 1.75±0ms             | 1.76±0.01ms         | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 8, 1)                        |
|          | 253±1ms              | 255±0.6ms           | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 128, 1)                            |
|          | 520±3μs              | 526±2μs             | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 8, 0)                              |
|          | 245±1μs              | 248±3μs             | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 8, 1)                               |
|          | 716±7μs              | 720±9μs             | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 8, 3)                               |
|          | 20.5±0.1ms           | 20.6±0.08ms         | 1.01    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 128, 1)                         |
|          | 97.9±0.4μs           | 99.3±0.9μs          | 1.01    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 4, 0)                                |
|          | 252±0.9μs            | 253±0.7μs           | 1.01    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 4, 3)                                |
|          | 417±3μs              | 423±8μs             | 1.01    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 8, 2)                                |
|          | 418±2μs              | 423±5μs             | 1.01    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 8, 3)                                |
|          | 360±1μs              | 364±4μs             | 1.01    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 4, 2)                      |
|          | 204±0.7μs            | 206±0.5μs           | 1.01    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 8, 0)                      |
|          | 292±4μs              | 295±4μs             | 1.01    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 8, 1)                      |
|          | 1.68±0ms             | 1.70±0.01ms         | 1.01    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 8, 0)                         |
|          | 1.90±0ms             | 1.93±0.01ms         | 1.01    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 8, 1)                         |
|          | 2.54±0ms             | 2.57±0.01ms         | 1.01    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 8, 2)                         |
|          | 35.1±0.02ms          | 35.3±0.02ms         | 1.01    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 4, 0)                                |
|          | 5.25±0.03ms          | 5.29±0.03ms         | 1.01    | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm(1)                          |
|          | 5.04±0.04ms          | 5.11±0.1ms          | 1.01    | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm(2)                          |
|          | 42.5±0.2ms           | 42.6±0.2ms          | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 128, 1)                          |
|          | 2.28±0.01ms          | 2.27±0.01ms         | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 16, 0)                           |
|          | 8.72±0.06ms          | 8.72±0.02ms         | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 32, 1)                           |
|          | 189±2μs              | 190±2μs             | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 8, 0)                               |
|          | 1.11±0.01ms          | 1.11±0.01ms         | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 128, 0)                   |
|          | 281±1μs              | 282±1μs             | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 16, 0)                    |
|          | 636±1μs              | 637±4μs             | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 64, 0)                    |
|          | 648±6μs              | 647±5μs             | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 8, 2)                     |
|          | 814±9μs              | 815±3μs             | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 8, 3)                     |
|          | 320±0.8ms            | 321±1ms             | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 128, 1)                      |
|          | 15.9±0.07ms          | 16.0±0.03ms         | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 32, 0)                       |
|          | 79.6±0.2ms           | 79.7±0.2ms          | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 64, 1)                       |
|          | 12.3±0.2ms           | 12.3±0.2ms          | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 32, 1)                             |
|          | 51.9±0.3ms           | 51.9±0.3ms          | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 64, 1)                             |
|          | 886±6μs              | 887±8μs             | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 8, 1)                              |
|          | 584±0.6μs            | 585±3μs             | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 16, 1)                              |
|          | 170±0.5μs            | 171±2μs             | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 8, 0)                               |
|          | 635±10μs             | 637±7μs             | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 8, 2)                               |
|          | 1.56±0ms             | 1.56±0.01ms         | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 16, 0)                          |
|          | 2.60±0ms             | 2.60±0.01ms         | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 16, 1)                          |
|          | 5.06±0.02ms          | 5.07±0.02ms         | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 32, 1)                          |
|          | 10.3±0.04ms          | 10.3±0.08ms         | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 64, 1)                          |
|          | 1.41±0ms             | 1.41±0.01ms         | 1.00    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 8, 1)                           |
|          | 76.6±0.4ms           | 76.4±0.1ms          | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 4, 0)                             |
|          | 80.9±0.1ms           | 81.0±0.2ms          | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 4, 1)                             |
|          | 83.1±0.1ms           | 83.2±0.1ms          | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 4, 2)                             |
|          | 83.3±0.07ms          | 83.1±0.07ms         | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 4, 3)                             |
|          | 205±0.6ms            | 205±0.3ms           | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 8, 0)                             |
|          | 17.2±0.04ms          | 17.3±0.05ms         | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 4, 0)                         |
|          | 19.0±0.03ms          | 19.1±0.1ms          | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 4, 1)                         |
|          | 20.5±0.03ms          | 20.5±0.02ms         | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 4, 2)                         |
|          | 20.6±0.07ms          | 20.5±0.04ms         | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 4, 3)                         |
|          | 2.54±0.01ms          | 2.55±0ms            | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 8, 3)                         |
|          | 36.2±0.06ms          | 36.2±0.05ms         | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 4, 1)                                |
|          | 36.8±0.09ms          | 36.8±0.04ms         | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 4, 2)                                |
|          | 36.7±0.04ms          | 36.7±0.01ms         | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 4, 3)                                |
|          | 98.3±0.2ms           | 98.7±0.07ms         | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 8, 0)                                |
|          | 105±0.1ms            | 105±0.2ms           | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 8, 1)                                |
|          | 109±0.2ms            | 109±0.2ms           | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 8, 2)                                |
|          | 109±0.3ms            | 109±0.2ms           | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 8, 3)                                |
|          | 16.1±0.02ms          | 16.1±0.02ms         | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 4, 0)                            |
|          | 18.9±0.08ms          | 18.9±0.08ms         | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 4, 1)                            |
|          | 20.2±0.02ms          | 20.1±0.02ms         | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 4, 2)                            |
|          | 20.2±0.04ms          | 20.2±0.07ms         | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 4, 3)                            |
|          | 17.4±0.03ms          | 17.4±0.02ms         | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 8, 0)                            |
|          | 23.6±0.07ms          | 23.6±0.1ms          | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 8, 1)                            |
|          | 26.7±0.2ms           | 26.6±0.1ms          | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 8, 2)                            |
|          | 26.9±0.1ms           | 26.8±0.1ms          | 1.00    | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 8, 3)                            |
|          | 32.9±0.5ms           | 32.9±0.1ms          | 1.00    | transpiler_levels.TranspilerLevelBenchmarks.time_schedule_qv_14_x_14(0)                                |
|          | 27.2±0.2ms           | 27.2±0.06ms         | 1.00    | transpiler_levels.TranspilerLevelBenchmarks.time_schedule_qv_14_x_14(1)                                |
|          | 3.43±0.01ms          | 3.45±0.02ms         | 1.00    | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm(0)                          |
|          | 5.12±0.03ms          | 5.11±0.09ms         | 1.00    | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm(3)                          |
|          | 12.9±0.05ms          | 12.8±0.06ms         | 1.00    | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(0)        |
|          | 17.1±0.1ms           | 17.1±0.1ms          | 1.00    | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(1)        |
|          | 7.43±0.07ms          | 7.43±0.04ms         | 1.00    | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(1)                               |
|          | 26.4±0.2ms           | 26.3±0.1ms          | 1.00    | utility_scale.UtilityScaleBenchmarks.time_bv_100('cz')                                                 |
|          | 3.35±0.06ms          | 3.36±0.1ms          | 1.00    | utility_scale.UtilityScaleBenchmarks.time_bvlike('cz')                                                 |
|          | 12.0±0.2ms           | 12.0±0.4ms          | 1.00    | utility_scale.UtilityScaleBenchmarks.time_circSU2('cz')                                                |
|          | 3.74±0.06ms          | 3.73±0.02ms         | 1.00    | utility_scale.UtilityScaleBenchmarks.time_parse_qaoa_n100('cz')                                        |
|          | 13.2±0.1ms           | 13.2±0.2ms          | 1.00    | utility_scale.UtilityScaleBenchmarks.time_parse_square_heisenberg_n100('cx')                           |
|          | 13.1±0.1ms           | 13.1±0.1ms          | 1.00    | utility_scale.UtilityScaleBenchmarks.time_parse_square_heisenberg_n100('cz')                           |
|          | 13.2±0.09ms          | 13.1±0.1ms          | 1.00    | utility_scale.UtilityScaleBenchmarks.time_parse_square_heisenberg_n100('ecr')                          |
|          | 18.3±0.1ms           | 18.1±0.1ms          | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 128, 0)                          |
|          | 4.64±0.04ms          | 4.58±0.01ms         | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 16, 1)                           |
|          | 4.53±0.01ms          | 4.49±0.01ms         | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 32, 0)                           |
|          | 8.94±0.04ms          | 8.88±0.02ms         | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 64, 0)                           |
|          | 21.3±0.2ms           | 21.1±0.1ms          | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 64, 1)                           |
|          | 568±3μs              | 564±10μs            | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 8, 2)                               |
|          | 3.14±0.02ms          | 3.09±0.03ms         | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 16, 1)                             |
|          | 7.48±0.04ms          | 7.41±0.03ms         | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 32, 0)                             |
|          | 401±2μs              | 397±1μs             | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 16, 0)                              |
|          | 1.94±0.01ms          | 1.93±0.01ms         | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 32, 1)                              |
|          | 11.5±0.03ms          | 11.4±0.05ms         | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 128, 0)                         |
|          | 2.99±0.01ms          | 2.95±0.01ms         | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 32, 0)                          |
|          | 855±8μs              | 845±3μs             | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 8, 0)                           |
|          | 126                  | 125                 | 0.99    | transpiler_ft.TranspilerCliffordRZBenchmarks.track_rz_count('multiplier', 8, 3)                        |
|          | 26.2±0.3ms           | 25.8±0.07ms         | 0.99    | transpiler_levels.TranspilerLevelBenchmarks.time_quantum_volume_transpile_50_x_20(1)                   |
|          | 3.99±0.08ms          | 3.95±0.04ms         | 0.99    | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(3)        |
|          | 5.05±0.1ms           | 4.98±0.2ms          | 0.99    | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(0)                               |
|          | 3.33±0.1ms           | 3.31±0.04ms         | 0.99    | utility_scale.UtilityScaleBenchmarks.time_bvlike('ecr')                                                |
|          | 10.7±0.1ms           | 10.6±0.2ms          | 0.99    | utility_scale.UtilityScaleBenchmarks.time_circSU2('cx')                                                |
|          | 3.76±0.04ms          | 3.73±0.02ms         | 0.99    | utility_scale.UtilityScaleBenchmarks.time_parse_qaoa_n100('cx')                                        |
|          | 3.76±0.05ms          | 3.74±0.01ms         | 0.99    | utility_scale.UtilityScaleBenchmarks.time_parse_qaoa_n100('ecr')                                       |
|          | 40.9±0.4ms           | 40.5±0.2ms          | 0.99    | utility_scale.UtilityScaleBenchmarks.time_parse_qft_n100('cz')                                         |
|          | 41.0±0.4ms           | 40.7±0.3ms          | 0.99    | utility_scale.UtilityScaleBenchmarks.time_parse_qft_n100('ecr')                                        |
|          | 145±0.3ms            | 143±0.6ms           | 0.98    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 128, 0)                            |
|          | 1.96±0.07ms          | 1.93±0.08ms         | 0.98    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 16, 0)                             |
|          | 31.4±0.1ms           | 30.7±0.2ms          | 0.98    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 128, 1)                             |
|          | 1.35±0.01ms          | 1.33±0.01ms         | 0.98    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 32, 0)                              |
|          | 8.99±0.05ms          | 8.85±0.06ms         | 0.98    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 64, 1)                              |
|          | 5.84±0.02ms          | 5.74±0.02ms         | 0.98    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 64, 0)                          |
|          | 13.4±0.09ms          | 13.1±0.1ms          | 0.98    | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(2)                               |
|          | 3.39±0.09ms          | 3.32±0.03ms         | 0.98    | utility_scale.UtilityScaleBenchmarks.time_bvlike('cx')                                                 |
|          | 41.4±0.5ms           | 40.5±0.2ms          | 0.98    | utility_scale.UtilityScaleBenchmarks.time_parse_qft_n100('cx')                                         |
|          | 33.0±0.3ms           | 32.1±0.07ms         | 0.97    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 64, 0)                             |
|          | 20.0±0.2ms           | 19.4±0.06ms         | 0.97    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 128, 0)                             |
|          | 125                  | 121                 | 0.97    | transpiler_ft.TranspilerCliffordRZBenchmarks.track_rz_count('multiplier', 8, 2)                        |
|          | 26.5±0.3ms           | 25.7±0.3ms          | 0.97    | utility_scale.UtilityScaleBenchmarks.time_bv_100('ecr')                                                |
|          | 223±3ms              | 217±1ms             | 0.97    | utility_scale.UtilityScaleBenchmarks.time_parse_hwb12('ecr')                                           |
|          | 282±1ms              | 274±1ms             | 0.97    | utility_scale.UtilityScaleBenchmarks.time_qv('cx')                                                     |
|          | 312±2ms              | 302±2ms             | 0.97    | utility_scale.UtilityScaleBenchmarks.time_qv('ecr')                                                    |
|          | 5.20±0.04ms          | 5.00±0.05ms         | 0.96    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 64, 0)                              |
|          | 96.0±0.6ms           | 92.2±0.2ms          | 0.96    | transpiler_levels.TranspilerLevelBenchmarks.time_quantum_volume_transpile_50_x_20(2)                   |
|          | 12.5±0.1ms           | 11.9±0.2ms          | 0.96    | utility_scale.UtilityScaleBenchmarks.time_circSU2('ecr')                                               |
|          | 224±4ms              | 216±0.7ms           | 0.96    | utility_scale.UtilityScaleBenchmarks.time_parse_hwb12('cx')                                            |
|          | 224±3ms              | 216±0.8ms           | 0.96    | utility_scale.UtilityScaleBenchmarks.time_parse_hwb12('cz')                                            |
|          | 99.0±0.8ms           | 94.7±0.5ms          | 0.96    | utility_scale.UtilityScaleBenchmarks.time_qaoa('cx')                                                   |
|          | 123±0.6ms            | 117±0.6ms           | 0.96    | utility_scale.UtilityScaleBenchmarks.time_qaoa('cz')                                                   |
|          | 144±0.7ms            | 138±0.9ms           | 0.96    | utility_scale.UtilityScaleBenchmarks.time_qft('cx')                                                    |
|          | 184±0.3ms            | 176±1ms             | 0.96    | utility_scale.UtilityScaleBenchmarks.time_qft('ecr')                                                   |
|          | 304±1ms              | 293±1ms             | 0.96    | utility_scale.UtilityScaleBenchmarks.time_qv('cz')                                                     |
|          | 34.0±0.2ms           | 32.6±0.1ms          | 0.96    | utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('cx')                                      |
|          | 39.2±0.3ms           | 37.6±0.4ms          | 0.96    | utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('ecr')                                     |
|          | 15.1±0.3ms           | 14.3±0.1ms          | 0.95    | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(3)                               |
|          | 119±0.4ms            | 113±0.6ms           | 0.95    | utility_scale.UtilityScaleBenchmarks.time_qaoa('ecr')                                                  |
|          | 38.0±0.2ms           | 36.1±0.4ms          | 0.95    | utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('cz')                                      |
|          | 2.74±0.02ms          | 2.58±0.02ms         | 0.94    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 8, 2)                        |
|          | 2.89±0.01ms          | 2.72±0.02ms         | 0.94    | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 8, 3)                        |
|          | 112±0.1ms            | 106±0.2ms           | 0.94    | transpiler_levels.TranspilerLevelBenchmarks.time_quantum_volume_transpile_50_x_20(3)                   |
|          | 173±0.7ms            | 163±1ms             | 0.94    | utility_scale.UtilityScaleBenchmarks.time_qft('cz')                                                    |
|          | 10.5±0s              | 9.77±0.01s          | 0.93    | utility_scale.UtilityScaleBenchmarks.time_hwb12('cz')                                                  |
|          | 7.44±0.01s           | 6.83±0s             | 0.92    | utility_scale.UtilityScaleBenchmarks.time_hwb12('cx')                                                  |
|          | 10.4±0s              | 9.59±0s             | 0.92    | utility_scale.UtilityScaleBenchmarks.time_hwb12('ecr')                                                 |

SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
PERFORMANCE INCREASED.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

performance Rust This PR or issue is related to Rust code in the repository

Projects

Status: Ready

Development

Successfully merging this pull request may close these issues.

3 participants