TransWikia.com

What is the minimal delay between gates on IBM devices?

Quantum Computing Asked on March 31, 2021

Suppose I create the very simple circuit

OPENQASM 2.0;
include "qelib1.inc";
qreg q[1];
x q[0];
barrier q[0];
x q[0];

and submit it to an IBM backend. How do I find the buffer time between the end of the first X and the beginning of the second X for a given backend? I’ve seen the number ~10 ns thrown around in the literature (see this paper above Fig. 1), but this value is not displayed in the calibration data for a device.

Just for clarify, I am NOT referring to the duration of X but the duration of time between the X pulses even "when it appears to be 0."

If there’s a way to obtain it via Qiskit on a per-calibration basis, that’s even better, but just a reference which verifies that 10 ns is a reasonable value would suffice.

2 Answers

Short answer: The minimal delay between gates on IBMQ chips is $0$ nano-seconds.

Longer answer:

The barrier operation is not a hardware operation, it just give instructions to the compiler to schedule the circuit correctly. As such, its duration is $0$ nano-seconds as it is never executed on the hardware. You can check this on luciano answer: the barrier operation is not present in the generated schedule.

If your question was rather "what it is the minimum non-zero delay between two gates on IBM chips", the answer is dt = $frac{2}{9}$ nano-seconds on the most recent backends. You can recover this value for each backend with

from qiskit import schedule, QuantumCircuit, transpile, IBMQ
IBMQ.load_account()
provider = IBMQ.get_provider()
backend = provider.get_backend("ibmq_armonk")

dt = backend.configuration().dt
print(f"dt = {dt*1e9:.2f} ns")

Pulses duration should be a multiple of 16dt but delay duration can be any multiple of dt.

Correct answer by Adrien Suau on March 31, 2021

Not an expert here, but my impression is that the rotations are scheduled one after the other one, with no delay.

Taking your example:

from qiskit import schedule, QuantumCircuit, transpile, IBMQ
IBMQ.load_account()
provider = IBMQ.get_provider()

circuit = QuantumCircuit(1)
circuit.x(0)
circuit.barrier(0)
circuit.x(0)
circuit_t = transpile(circuit, backend)

If we schedule that one on ibmq_lima:

backend = provider.get_backend('ibmq_lima')
print('lima openpulse support:', backend.configuration().open_pulse)

schedule(circuit_t, backend).draw(backend=backend, time_unit='ns')

enter image description here

It seems to me that the distance between pulses is not 10ns.

Answered by luciano on March 31, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP