-
Notifications
You must be signed in to change notification settings - Fork 11
Cross Resonance calibration #1414
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
9c9f58c
f13b8a7
22ca463
9705dc6
d2e923e
4a91ee1
75409bd
ff3cb33
c7320c4
4c772ed
2e861f7
962b6fa
f126309
0526a8d
7359c60
be8af10
88b2a9c
b50752c
b9d3b4b
cc7434f
8d039d0
49f82a5
ec88c6e
01ec777
e54b0d7
f9fc0db
94756fb
5e5304e
2250a5a
ee7c5b2
d0dadd8
4bb0efe
b1a4c2f
f64f777
efa8d60
a688eca
267bb35
04f2726
f42d5d8
5cbb38d
a2f69cb
4644432
f07d7a7
42f4a4a
779613a
f10cdea
d3a4681
08d5ab8
d539b61
50e7e18
8a261e4
49dfc1e
0081b6d
7aaf34c
29e322c
e957e50
69bd81c
e7ab45a
6a15c7a
7da462f
7734ed0
8bf67f8
3000951
e0a7315
d1ff300
47b9200
d9c8bdf
6b09875
68e1b27
b687c08
b620653
56afddd
7a42318
182de6d
1281720
dbbdebe
f4ed748
c6d568d
f7a27e1
07d950a
0ed63a9
002f85f
ba410e2
620558b
0c40bc6
6c935bd
6319a26
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Given this is more a "protocol suite" than a single protocol, we should put some care in documenting it properly, to avoid confusion about the roles of the various protocols. In this sense, this page is quite fundamental.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I agree, I'll keep doc updating as last fix. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,188 @@ | ||
| Calibration of CNOT gate using Cross-Resonance | ||
| =============================================== | ||
|
|
||
| It is possible to generate an interaction between two superconducting qubits without requiring | ||
| flux tunability, through a mechanism known as Cross Resonance (CR). This mechanism relies only | ||
| on microwave drive pulses. Moreover, not using flux lines, results in a reduction of the number | ||
| of fridge lines and allows to ignore all problems related to flux noise. | ||
|
|
||
| The cross resonance effect was first proposed :cite:p:`CR_First` in and later | ||
| independently discovered in :cite:p:`CR_Righetti, CR_Second`. | ||
|
|
||
| The CR effect can be showed by starting with the Hamiltonian of a two-qubit system with | ||
| a drive term on the first qubit :cite:p:`Manenti:2023zzn` | ||
|
|
||
| .. math:: | ||
|
|
||
| H = b_1^\dagger b_1 \omega_1 + \frac{\alpha_1}{2} b_1^\dagger b_1^\dagger b_1 b_1 + | ||
| b_2^\dagger b_2 \omega_2 + \frac{\alpha_2}{2} b_2^\dagger b_2^\dagger b_2 b_2 + | ||
| g (b_1 b_2^\dagger + b_1^\dagger b_2) + \Omega(t) (b_1 + b_1^\dagger) | ||
|
|
||
| If we are in a dispersive regime (i.e. :math:`|\omega_1 - \omega_2| \gg g`), through a | ||
| Schrieffer-Wolff transformation we can obtain the effective Hamiltonian: | ||
|
|
||
| .. math:: | ||
|
|
||
| H_\text{eff} = - \frac{\tilde{\omega_1}}{2} \sigma_1^z - \frac{\tilde{\omega_2}}{2} \sigma_2^z | ||
| + \frac{\zeta}{4} \sigma_1^z \sigma_2^z | ||
| + \Omega(t) \Big[ \sigma_1^x + \nu \sigma_2^x + \mu \sigma_1^z \sigma_2^x\Big] | ||
|
|
||
| where :math:`\zeta` is the ZZ coupling, :math:`\nu` is quantum crosstalk factor and :math:`\mu` is the | ||
| cross-resonance factor. From the equation above we can see that by driving the first qubit | ||
| at the frequency of the second qubit . | ||
|
|
||
| By tuning the amplitude and the duration of this drive pulse it is possible to calibrate a | ||
| :math:`RZX` rotation to rotate exactly by :math:`- \pi/2`. This is done because starting | ||
| from a :math:`ZX_{frac{\pi}{2}}` we can obtain a CNOT gate using single qubit rotations. | ||
|
|
||
| .. math:: | ||
|
|
||
| \text{CNOT} = \text{R}_\text{ZX}(-\pi/2) \text{R}_\text{IX}(\pi/2) \text{R}_\text{ZI}(\pi/2) | ||
|
|
||
| In Qibocal we provide protocols to calibrate CR pulses. | ||
|
|
||
| Sweeping the duration of the CR pulse | ||
| ------------------------------------- | ||
|
|
||
| In a first experiment we can sweep the duration of the CR pulse and measure both the | ||
| target and control qubit. The measurement is performed while preparing the control | ||
| qubit in state :math:`\ket{0}` and :math:`\ket{1}`. | ||
|
|
||
| Parameters | ||
| ^^^^^^^^^^ | ||
|
|
||
| .. autoclass:: qibocal.protocols.two_qubit_interaction.cross_resonance.length.CrossResonanceLengthParameters | ||
| :noindex: | ||
|
|
||
| Example | ||
| ^^^^^^^ | ||
|
|
||
| A possible runcard to launch the experiment could be the following: | ||
|
|
||
| .. code-block:: yaml | ||
|
|
||
| - id: CR length | ||
| operation: cross_resonance_length | ||
| parameters: | ||
| targets: [[0,1]] | ||
| pulse_duration_start: 10 | ||
| pulse_duration_end: 200 | ||
| pulse_duration_step: 10 | ||
| flux_pulse_amplitude: 0.1 | ||
| nshots: 2000 | ||
| relaxation_time: 50000 | ||
|
|
||
|
|
||
| The expected output is the following: | ||
|
|
||
| .. image:: length.png | ||
|
|
||
| Post-processing | ||
| ^^^^^^^^^^^^^^^ | ||
|
|
||
| The probability of the target qubit is fitted in both cases to a dumped cosine functions. | ||
| It is possible to extract the effective coupling as | ||
|
|
||
| .. math:: | ||
|
|
||
| \text{J}_\text{eff}/ 2 \pi = \frac{f^{\pi}_\text{Rabi} - f_\text{Rabi}}{2} | ||
|
|
||
|
|
||
| where :math:`f^{\pi}_\text{Rabi}` and :math:`f_\text{Rabi}` are the frequencies of the | ||
| fitted Rabi oscillations on the target qubit. | ||
|
Comment on lines
+44
to
+92
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This protocol does not exist any longer (to the best of my knowledge) since it has been replaced by
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. actually there was already a first implementation of the hamiltonian tomography, but yeah we are no longer relying on that. I think documentation will be the last thing I'll fix before merging. |
||
|
|
||
| Sweeping amplitude of the CR pulse | ||
| ---------------------------------- | ||
|
|
||
| Similarly it is possible to sweep the amplitude of the CR pulse and measure both the | ||
| target and control qubit. | ||
|
|
||
|
|
||
| Parameters | ||
| ^^^^^^^^^^ | ||
|
|
||
| .. autoclass:: qibocal.protocols.two_qubit_interaction.cross_resonance.length.CrossResonanceLengthParameters | ||
| :noindex: | ||
|
|
||
| Example | ||
| ^^^^^^^ | ||
|
|
||
| A possible runcard to launch the experiment could be the following: | ||
|
|
||
| .. code-block:: yaml | ||
|
|
||
| - id: CR amplitude | ||
| operation: cross_resonance_amplitude | ||
| parameters: | ||
| targets: [[0,1]] | ||
| max_amp: 0.05 | ||
| min_amp: 0.01 | ||
| step_amp: 0.005 | ||
| pulse_duration: 100 | ||
| nshots: 2000 | ||
| relaxation_time: 50000 | ||
|
|
||
|
|
||
| The expected output is the following: | ||
|
|
||
| .. image:: amplitude.png | ||
|
|
||
| Post-processing | ||
| ^^^^^^^^^^^^^^^ | ||
|
|
||
| The probability of the target qubit is fitted in both cases to a cosine function. | ||
|
Comment on lines
+94
to
+133
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same as above |
||
|
|
||
| Hamiltonian Tomography measurement | ||
| ---------------------------------- | ||
|
|
||
| Although from the two previous experiments it is possible to perform an initial | ||
| calibration of the CR gate, by performing a state tomography on the target qubit it is | ||
| possible to reconstruct the effective Hamiltonian of the system :cite:p:`CRDrag`: | ||
|
|
||
| .. math:: | ||
|
|
||
| H_\text{eff} = \frac{\nu_\text{ZX}}{2} \text{ZX} + \frac{\nu_\text{ZY}}{2} \text{ZY} + | ||
| \frac{\nu_\text{ZZ}}{2} \text{ZZ} + \frac{\nu_\text{IX}}{2} \text{IX} + | ||
| \frac{\nu_\text{IY}}{2} \text{IY} + \frac{\nu_\text{IZ}}{2} \text{IZ} | ||
|
|
||
| In particular, by sweeping the duration of the CR pulse and measuring the expectation | ||
| values of the target qubit :math:`\langle X \rangle`, :math:`\langle Y \rangle` and :math:`\langle Z \rangle` | ||
| when the control qubit is prepared in :math:`\ket{0}` and :math:`\ket{1}` we can compute all terms in | ||
| the effective Hamiltonian following the procedure in :cite:p:`CRDrag`. | ||
|
|
||
| Parameters | ||
| ^^^^^^^^^^ | ||
|
|
||
|
|
||
| .. autoclass:: qibocal.protocols.two_qubit_interaction.cross_resonance.hamiltonian_tomography.length.HamiltonianTomographyCRLengthParameters | ||
| :noindex: | ||
|
|
||
| Example | ||
| ^^^^^^^ | ||
|
|
||
| A possible runcard to launch the experiment could be the following: | ||
|
|
||
| .. code-block:: yaml | ||
|
|
||
| - id: Hamiltonian tomography CR | ||
| operation: cross_resonance_amplitude | ||
| parameters: | ||
| targets: [[0,1]] | ||
| nshots: 2000 | ||
| pulse_amplitude: 0.1 | ||
| pulse_duration_end: 400 | ||
| pulse_duration_start: 10 | ||
| pulse_duration_step: 20 | ||
|
|
||
|
|
||
| The expected output is the following: | ||
|
|
||
| .. image:: tomography_length.png | ||
|
Comment on lines
+165
to
+180
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is definitely inconsistent. If nothing else, at least the
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why is it inconsistent?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe inconsistent was misleading, as a word. Let's say outdated |
||
|
|
||
|
|
||
|
|
||
| Requirements | ||
| ^^^^^^^^^^^^ | ||
|
|
||
| To run these experiments single qubit gates for both target and control qubit needs | ||
| to be calibrated. | ||
|
lballerio marked this conversation as resolved.
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,75 @@ | ||
| { | ||
| "single_qubits": { | ||
| "0": { | ||
| "resonator": { | ||
| "bare_frequency": 0.0, | ||
| "dressed_frequency": 0.0, | ||
| "depletion_time": 0, | ||
| "bare_frequency_amplitude": null | ||
| }, | ||
| "qubit": { | ||
| "frequency_01": 5114000000.0, | ||
| "frequency_12": 4784000000.0, | ||
| "maximum_frequency": 5114000000.0, | ||
| "asymmetry": 0.0, | ||
| "sweetspot": 0.0, | ||
| "flux_coefficients": null | ||
| }, | ||
| "readout": { | ||
| "fidelity": 0.0, | ||
| "coupling": null, | ||
| "effective_temperature": null, | ||
| "ground_state": [ | ||
| 0.0, | ||
| 1.0 | ||
| ], | ||
| "excited_state": [ | ||
| 1.0, | ||
| 0.0 | ||
| ], | ||
| "qudits_frequency": {} | ||
| }, | ||
| "t1": null, | ||
| "t2": null, | ||
| "t2_spin_echo": null, | ||
| "rb_fidelity": null | ||
| }, | ||
| "1": { | ||
| "resonator": { | ||
| "bare_frequency": 0.0, | ||
| "dressed_frequency": 0.0, | ||
| "depletion_time": 0, | ||
| "bare_frequency_amplitude": null | ||
| }, | ||
| "qubit": { | ||
| "frequency_01": 4914000000.0, | ||
| "frequency_12": 4584000000.0, | ||
| "maximum_frequency": 4914000000.0, | ||
| "asymmetry": 0.0, | ||
| "sweetspot": 0.0, | ||
| "flux_coefficients": null | ||
| }, | ||
| "readout": { | ||
| "fidelity": 0.0, | ||
| "coupling": null, | ||
| "effective_temperature": null, | ||
| "ground_state": [ | ||
| 0.0, | ||
| 1.0 | ||
| ], | ||
| "excited_state": [ | ||
| 1.0, | ||
| 0.0 | ||
| ], | ||
| "qudits_frequency": {} | ||
| }, | ||
| "t1": null, | ||
| "t2": null, | ||
| "t2_spin_echo": null, | ||
| "rb_fidelity": null | ||
| } | ||
| }, | ||
| "two_qubits": {}, | ||
| "readout_mitigation_matrix": null, | ||
| "flux_crosstalk_matrix": null | ||
| } |
Uh oh!
There was an error while loading. Please reload this page.