How to execute your circuits with error mitigation
In Haiqu SDK, applying error mitigation to your workloads is extremely easy: you just have to toggle the correspoding flaguse_mitigation=True in the haiqu.run function. Here is how it works for different settings:
Initialize your workloads
First, you need to specify one or multiple circuits to run and, if needed, the corresponding parameters and/or observables. For a reference on how to submit complex workloads, see API reference for
haiqu.run.Specify the execution details
Before executing the circuits, you have to specify various execution details, such as
device, optionsand the number of shotsto be used.Execute your workload with error mitigation
Finally, you can use
haiqu.run to execute your circuits and add error mitigation. You can then check on the job progress and retrieve the results after it is completed. Note that it is also possible to directly specify device_id keyword instead of initializing the device first.Error Mitigation Details
| Observable | Distribution | |
|---|---|---|
| Supported backends | IBM QPUs, AWS Braket (TBD) | IBM QPUs, AWS Braket (TBD) |
| Circuit format | Qiskit QuantumCircuit | Qiskit QuantumCircuit |
| Max. qubit number | up to 156 qubits (largest QPU) | up to 156 (diminished efficiency with sampling) |
| Max. circuit depth / gate count | up to 1000 2q gates for up to weight-5 observables, up to 300 2q gates for non-local observables | |
| Circuit overhead | 2x circuit overhead per unique circuit | Constant overhead per job (noise learning) |
| Shot overhead | 2x shot overhead per unique circuit | Constant overhead (noise learning) |
| Execution speed | O(1) seconds for QEM + execution time on QPU | O(1) seconds for QEM + execution time on QP |