Skip to content

Add a primitives/backend wrapper to StabilizerState #13610

@gadial

Description

@gadial

What should we add?

In Qiskit we have the class quantum_info.states.StabilizerState which is effectively a Clifford simulator. Such simulator can provide real value for users thanks to their ability to handle large (Clifford) circuits.

Currently the usage of StabilizerState is very simple:

from qiskit import QuantumCircuit
from qiskit.quantum_info import StabilizerState, Pauli

# Bell state generation circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
stab = StabilizerState(qc)
print (stab.probabilities_dict())

However, this is not the interface expected by users or encouraged by our documentation; currently the users are encouraged to use the primitives interface. While using primitives on the cloud is done via qiskit-ibm-runtime, in qiskit-sdk we also provide a local interface in the qiskit.primitives module. There are two ways in which the existing Clifford simulator can be integrated into qiskit.primitives with relative ease:

  1. We currently have a StatevectorEstimator and StatevectorSampler classes which are also based on a quantum_info capability (the Statevector class). Similarly we can add a StabilizerEstimator and StabilizerSampler classes.
  2. More generally, we can add a StabilizerBackend to providers (which currently contain the rudimentary simulator BasicSimulator) which will support the BackendV2 interface and will be used directly or via the BackendEstimatorV2 and BackendSamplerV2 classes of the primitives module.

Metadata

Metadata

Assignees

Labels

mod: primitivesRelated to the Primitives modulemod: quantum infoRelated to the Quantum Info module (States & Operators)type: feature requestNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions