qiskit icon indicating copy to clipboard operation
qiskit copied to clipboard

Fully port `GatesInBasis` to Rust.

Open kevinhartman opened this issue 1 year ago • 2 comments

Summary

Ports GatesInBasis to Rust. The implementation avoids the prior conversion to DAGCircuit for each control flow block, which should help with performance.

Details and comments

Additional changes:

  • Adds a PyInstruction::blocks() for passes which need to get the blocks of a control flow operation as native CircuitData.
  • Adds NodeType::unwrap_operation() for callers who know that a DAG node is an operation.
  • Makes Target interface public for use in other crates (needed to accept a &Target in a pyfunction).
  • Fixes some mutability / visibility concerns in DAGCircuit, naming making dag, qubits, and clbits private again.

Includes some changes from #13056, #13013 and ~#13006~ which ought to merge first.

Resolves #12275

kevinhartman avatar Aug 25 '24 18:08 kevinhartman

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

  • @Qiskit/terra-core
  • @kevinhartman
  • @mtreinish

qiskit-bot avatar Aug 25 '24 18:08 qiskit-bot

Pull Request Test Coverage Report for Build 11058624835

Warning: This coverage report may be inaccurate.

This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

Details

  • 89 of 90 (98.89%) changed or added relevant lines in 5 files are covered.
  • 173 unchanged lines in 9 files lost coverage.
  • Overall coverage increased (+0.05%) to 88.847%

Changes Missing Coverage Covered Lines Changed/Added Lines %
crates/circuit/src/dag_circuit.rs 4 5 80.0%
<!-- Total: 89 90
Files with Coverage Reduction New Missed Lines %
qiskit/transpiler/passes/layout/disjoint_utils.py 1 96.83%
qiskit/circuit/instruction.py 4 95.31%
crates/qasm2/src/lex.rs 5 92.73%
crates/qasm2/src/parse.rs 6 97.61%
qiskit/transpiler/passes/basis/basis_translator.py 8 97.45%
qiskit/transpiler/preset_passmanagers/builtin_plugins.py 11 96.46%
crates/circuit/src/dag_circuit.rs 17 87.84%
qiskit/circuit/equivalence.py 24 27.27%
qiskit/circuit/quantumcircuit.py 97 93.33%
<!-- Total: 173
Totals Coverage Status
Change from base Build 10947873036: 0.05%
Covered Lines: 74015
Relevant Lines: 83306

💛 - Coveralls

coveralls avatar Aug 25 '24 18:08 coveralls