qiskit icon indicating copy to clipboard operation
qiskit copied to clipboard

`RZXCalibrationBuilder` fails for qubit pairs with `GaussianSquareDrag`

Open TsafrirA opened this issue 1 year ago • 1 comments

Environment

  • Qiskit version: 0.45 and 1.1.0.dev0+c99f325
  • Python version: 3.12
  • Operating system: Windows

What is happening?

RZXCalibrationBuilder fails for qubit pairs with GaussianSquareDrag, because it can't identify the native ECR direction.

How can we reproduce the issue?

The following code

from qiskit import QuantumCircuit
import numpy as np
from qiskit.transpiler import PassManager
from qiskit.transpiler.passes import RZXCalibrationBuilder

backend = provider.get_backend("ibmq_kolkata")
instmap = backend.defaults().instruction_schedule_map

qubits = ...
qc = QuantumCircuit(8)
qc.rzx(np.pi/2, *qubits)
pass1 = RZXCalibrationBuilder(instmap)
qc = PassManager(pass1).run(qc)

works if you set qubits=(4,7) and fails if you set qubits=(6,7). The error originates here, and is caused by the filter counting comp tones which ignores anything but GaussianSquare or Waveform pulses. However, for some pairs (with the pair 6,7 being one of them) the pulses are reported as GaussianSqaureDrag. The pulses have beta=0 so they are identical to GaussianSquare, but they are not counted towards the comp tones, which leads to the failure.

What should happen?

The code should run for both qubit pairs.

Any suggestions?

I suspect changing the allowed types in the filter would solve the issue, but I am not familiar enough with this piece code, and what the backends might report for other qubits.

Counting GaussianSquareDrag with beta=0 is perhaps a safer option.

TsafrirA avatar Jan 08 '24 10:01 TsafrirA