Skip to content

Commit affeb30

Browse files
No backends use fixed rate (#3057)
closes #3005 --------- Co-authored-by: Frank Harkins <[email protected]>
1 parent 993a43a commit affeb30

File tree

7 files changed

+12
-20
lines changed

7 files changed

+12
-20
lines changed

docs/guides/_toc.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@
584584
"url": "/docs/guides/native-gates"
585585
},
586586
{
587-
"title": "Fixed and dynamic repetition rate execution",
587+
"title": "Dynamic repetition rate execution",
588588
"url": "/docs/guides/repetition-rate-execution"
589589
},
590590
{

docs/guides/dynamic-circuits-considerations.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
" - **Insert `qc.delay()` after measurements:** Add a delay instruction between measurements within a circuit to give the system time to stream results and prevent the buffer from filling.\n",
6666
" **Note:** this approach increases the circuit duration, which might reduce shot quality due to qubit decoherence.\n",
6767
"\n",
68-
" For more information, see the [Fixed and dynamic repetition rate execution](/docs/guides/repetition-rate-execution) guide, which explains dynamic repetition rate execution and how to set `rep_delay`."
68+
" For more information, see the [Dynamic repetition rate execution](/docs/guides/repetition-rate-execution) guide."
6969
]
7070
}
7171
],

docs/guides/execute-on-hardware.mdx

+2-2
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ expectation values of observables corresponding to physical quantities or cost f
7474
* [Calibration jobs](./calibration-jobs)
7575
* [Get QPU information with Qiskit](./get-qpu-information)
7676
* [Native gates and operations](./native-gates)
77-
* [Fixed and dynamic repetition rate execution](./repetition-rate-execution)
77+
* [Dynamic repetition rate execution](./repetition-rate-execution)
7878
* [Retired QPUs](./retired-qpus)
7979
* [Hardware considerations and limitations for classical feedforward and control flow](./dynamic-circuits-considerations)
8080
* [Instances](./instances)
@@ -88,7 +88,7 @@ expectation values of observables corresponding to physical quantities or cost f
8888
* [QPU information](./qpu-information)
8989
* [Get QPU information with Qiskit](./get-qpu-information)
9090
* [Native gates and operations](./native-gates)
91-
* [Fixed and dynamic repetition rate execution](./repetition-rate-execution)
91+
* [Dynamic repetition rate execution](./repetition-rate-execution)
9292
* [Retired QPUs](./retired-qpus)
9393
* [Hardware considerations and limitations for classical feedforward and control flow](./dynamic-circuits-considerations)
9494
* [Instances](./instances)

docs/guides/repetition-rate-execution.mdx

+8-16
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,24 @@
11
---
2-
title: Fixed and dynamic repetition rate execution
3-
description: Explanatory content on fixed and dynamic repetition rate execution
2+
title: Dynamic repetition rate execution
3+
description: Explanatory content about dynamic repetition rate execution
44

55
---
66

7-
# Fixed and dynamic repetition rate execution
7+
# Dynamic repetition rate execution
88

9-
## Fixed repetition rate execution
9+
When a circuit is executed on an IBM&reg; quantum processing unit (QPU), an implicit reset is typically inserted at the beginning of the circuit to ensure the qubits are initialized to zero. However, the reset process is not perfect, leading to state preparation errors. To alleviate the error, the system also inserts repetition delay time (or `rep_delay`) between circuits. Each backend has a different default `rep_delay`, but it's usually longer than T1 to allow the environment to reset the qubits. The default `rep_delay` can be queried by running `backend.default_rep_delay`.
1010

11-
Most IBM&reg; quantum processing units (QPUs) execute circuits at a fixed rate. Although this *repetition rate* varies by QPU, the underlying execution model is the same, and is described here. First, consider three circuits sent to a QPU using separate jobs, one for each circuit. The example below shows what happens for jobs of varying lengths. Because of the fixed repetition rate, there is a variable amount of *idle time* that occurs before the start of a circuit in order to make the entire duration match that given by the QPU repetition rate.
12-
13-
![With fixed-rate execution, shorter jobs result in longer idle time.](/docs/images/guides/repetition-rate-execution/fixed_single_circuit1.avif "Idle time versus job length")
14-
15-
The situation changes somewhat when the same circuits are batched into a single job. In this case the circuits included in the job are executed by iterating over the circuits for each shot requested; the execution is column-wise over a matrix of circuits and shots (see below).
11+
All IBM QPUs use dynamic repetition rate execution, which allows you to change the `rep_delay` for each job. Circuits you submit in a primitive job are batched together for execution on the QPU. These circuits are executed by iterating over the circuits for each shot requested; the execution is column-wise over a matrix of circuits and shots, as illustrated in the following figure.
1612

1713
![The first column represents shot 0. The circuits are run in order from 0 through 3. The second column represents shot 1. The circuits are run in order from 0 through 3. The remaining columns follow the same pattern. ](/docs/images/guides/repetition-rate-execution/circuits_shots_matrix1.avif "Column-wise execution matrix")
1814

19-
Matrix of four circuits in a job showing the execution pattern over the circuits.
20-
21-
When submitting batches of circuits to QPUs, the circuits are executed differently than they would be if executed separately. Namely, the initialization of the circuit, that is, prepare the ground state, and measurements (if any) are aligned over all circuits.
2215

23-
![The image shows three circuits. Although they are different lengths, they take the same amount of time to complete because they were submitted in a batch.](/docs/images/guides/repetition-rate-execution/fixed_batch_circuit1.avif)
16+
Because `rep_delay` is inserted between circuits, each shot of the execution encounters this delay. Therefore, lowering the `rep_delay` decreases the total QPU execution time, but at the expense of increased state preparation error rate, as can be seen in the following image:
2417

25-
Therefore, each circuit is equal in duration to the longest circuit in the batch, and there is a common idle time that is placed in front of all circuits to match the repetition rate.
18+
![This image shows that as the `rep_delay` value is lowered, the state preparation error rate increases.](/docs/images/guides/repetition-rate-execution/rep_delay.avif "Repetition delay versus error rate")
2619

27-
## Dynamic repetition rate execution
2820

29-
Some IBM QPUs allow for dynamic repetition rate execution. These QPUs are identified in Qiskit using `backend.configuration().dynamic_reprate_enabled`, and return a value of `True`. On these QPUs, it is possible to manually set the above idle time by setting the `rep_delay` of the submitted job. One can see from the above figures that by reducing the idle time one can potentially see a greater throughput of circuits on the QPUs that support dynamic repetition rates.
21+
Note that while circuits in a primitive job are batched together for QPU execution, there is no guarantee on the order the circuits from PUBs are executed. Thus, even though you submit `pubs=[pub1, pub2]`, there is no guarantee the circuits from `pub1` will run before those from `pub2`. There is also no guarantee that circuits from the same job would run as a single batch on the QPU.
3022

3123
## Specify rep_delay for a primitive job
3224

Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)