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.
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')
It seems to me that the distance between pulses is not 10ns.
Answered by luciano on March 31, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP