Breakdown of QPU Access TimeΒΆ

As illustrated in Figure 53, the time to execute a single QMI on a QPU, QPU access time, is broken into two parts: a one-time initialization step to program the QPU (blue), and typically multiple (\(R\)) per-sample times for the actual execution on the QPU (repeated multicolor).


A small amount of initialization time spent in low-level operations, denoted as \(\Delta\) in the equations below, is roughly 1 ms and is reported by the Solver API qpu_access_overhead_time parameter.

Diagram showing the breakdown of QPU access time. The implicit horizontal axis in this diagram is time, because this diagram shows how the QPU access time changes over time. QPU access time begins with the single largest fixed block of time: programming time. This block is the same regardless of the number of samples specified. The rest of the block repeats per sample (within a repeating block called QPU sampling time): QPU anneal time per sample, QPU readout time per sample, QPU readout time per sample, and QPU delay time per sample.

Fig. 53 Detail of QPU access time.

The end-to-end time for one sample is further broken into anneal (the anneal proper; green), readout (read the sample from the QPU; red), and thermalization (wait for the QPU to regain its initial temperature; pink). Note that these component times are calculated as average times per sample. Possible rounding errors mean that the sum of these times may not match the total sampling time reported. Thus, for total time \(T\), these times relate as follows:

\begin{eqnarray} T & = & T_p + \Delta + T_s \nonumber \\ T_s / R & \approx & T_a + T_r + T_d, \nonumber \end{eqnarray}


\begin{eqnarray} T_p & = & {programming\_time} \nonumber \\ T_s & = & {sampling\_time} \nonumber \\ \end{eqnarray}


\begin{eqnarray} T_a = & \textrm{(total) } {annealing\_time} \nonumber \\ T_r = & \textrm{(total) } {readout\_time} \nonumber \\ T_d = & {} & \textrm{(total) } {anneal\_schedule} \nonumber \\ & + & \textrm{(total) } {readout\_thermalization} \nonumber \\ & + & \textrm{(total) } {reduce\_intersample\_correlation} \nonumber \\ & + & \textrm{(total) } {reinitialize\_state}. \end{eqnarray}

Note that reinitialize_state is used only for reverse annealing.