qiskit/releasenotes/notes/0.24/unitary-synthesis-based-on-...

26 lines
1.3 KiB
YAML

---
features:
- |
The :class:`~.DefaultUnitarySynthesis` transpiler pass now chooses
one and two-qubit unitary synthesis based on the basis errors, if they
are reported in the target. In particular, it runs all possible synthesis
and chooses the cheapest option.
For a one-qubit decomposition, it can target Pauli basis
(e.g. RZ-RX-RZ or RZ-RY-RZ), generic unitary basis (e.g. U), and a
few others.
For a two-qubit decomposition, it can target any supercontrolled basis
(e.g. CNOT, iSWAP, B) or multiple controlled basis
(e.g. CZ, CH, ZZ^.5, ZX^.2, etc.).
- |
The interface for :class:`~.UnitarySynthesisPlugin` has two new
optional properties ``supports_gate_lengths_by_qubit`` and
``supports_gate_errors_by_qubit`` which when set will add the
fields ``gate_lengths_by_qubit`` and ``gate_errors_by_qubit``
respectively to the input options to the plugin's ``run()`` method.
These new fields are an alternative view of the data provided by
``gate_lengths`` and ``gate_errors`` but instead have the form:
``{(qubits,): [Gate, length]}`` (where ``Gate`` is the instance
of :class:`~.Gate` for that definition). This allows plugins to
reason about working with gates of the same type but but that
have different parameters set.