• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Qiskit / qiskit / 26228078972
87%
main: 88%

Build:
Build:
LAST BUILD BRANCH: revert-15783-basis_translator_dag
DEFAULT BRANCH: main
Ran 21 May 2026 01:44PM UTC
Jobs 1
Files 943
Run time 3min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

21 May 2026 01:10PM UTC coverage: 87.487% (+0.03%) from 87.454%
26228078972

push

github

web-flow
Add new multithreaded TwoQubitPeepholeOptimization pass (#13419)

* Add new multithreaded TwoQubitPeepholeOptimization pass

This commit adds a new transpiler pass for physical optimization,
TwoQubitPeepholeOptimization. This replaces the use of Collect2qBlocks,
ConsolidateBlocks, and UnitarySynthesis in the optimization stage for
a default pass manager setup. The pass logically works the same way
where it analyzes the dag to get a list of 2q runs, calculates the matrix
of each run, and then synthesizes the matrix and substitutes it inplace.
The distinction this pass makes though is it does this all in a single
pass and also parallelizes the matrix calculation and synthesis steps
because there is no data dependency there.

This new pass is not meant to fully replace the Collect2qBlocks,
ConsolidateBlocks, or UnitarySynthesis passes as those also run in
contexts where we don't have a physical circuit. This is meant instead
to replace their usage in the optimization stage only. Accordingly this
new pass also changes the logic on how we select the synthesis to use
and when to make a substituion. Previously this logic was primarily done
via the ConsolidateBlocks pass by only consolidating to a UnitaryGate if
the number of basis gates needed based on the weyl chamber coordinates
was less than the number of 2q gates in the block (see #11659 for
discussion on this). Since this new pass skips the explicit
consolidation stage we go ahead and try all the available synthesizers

Right now this commit has a number of limitations, the largest are:

- Only supports the target
- It doesn't support any synthesizers besides the TwoQubitBasisDecomposer,
  because it's the only one in rust currently.

For plugin handling I left the logic as running the three pass series,
but I'm not sure this is the behavior we want. We could say keep the
synthesis plugins for `UnitarySynthesis` only and then rely on our
built-in methods for physical optimiztion only. But this also seem... (continued)

305 of 340 new or added lines in 12 files covered. (89.71%)

5 existing lines in 2 files now uncovered.

108201 of 123676 relevant lines covered (87.49%)

961161.13 hits per line

Uncovered Changes

Lines Coverage ∆ File
29
87.76
crates/transpiler/src/passes/two_qubit_peephole.rs
3
84.49
-0.3% crates/synthesis/src/two_qubit_decompose/basis_decomposer.rs
2
97.5
0.14% crates/transpiler/src/passes/unitary_synthesis/mod.rs
1
98.78
-1.22% crates/pyext/src/lib.rs

Coverage Regressions

Lines Coverage ∆ File
4
91.52
-0.77% crates/qasm2/src/lex.rs
1
91.46
0.26% crates/synthesis/src/euler_one_qubit_decomposer.rs
Jobs
ID Job ID Ran Files Coverage
1 26228078972.1 21 May 2026 01:44PM UTC 943
87.49
GitHub Action Run
Source Files on build 26228078972
  • Tree
  • List 943
  • Changed 17
  • Source Changed 12
  • Coverage Changed 14
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26228078972
  • ef7004f9 on github
  • Prev Build on gh-readonly-queue/main/pr-16215-f2f85a9476e3a5c07321520bb90914d5e619ac3d (#26222657548)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc