Skip to content
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

Update to qibolab 0.2 #990

Open
wants to merge 183 commits into
base: main
Choose a base branch
from
Open

Update to qibolab 0.2 #990

wants to merge 183 commits into from

Conversation

stavros11
Copy link
Member

@stavros11 stavros11 commented Oct 1, 2024

I am starting this by squashing the commits of #809, because many of them was keeping up-to-date with the many API changes during the qibolab 0.2 development and these are not very relevant for the final commit history.

The update requires roughly the following steps:

  • Update the _acquisition in all routines (list of routines below).
  • Update the methods that update the Platform after each routine. This should mainly affect the update.py file and not the routines themselves.
  • Deal with parameters that are no longer in the qibolab Platform. These are not required for execution, but usually calculated/updated by qibocal (T1, T2, fidelities, etc.). Adding calibration parameters to qibocal #1021
  • Fix pylint and tests. Most like this has to come after the first two (or at least the first), because currently even just the PulseSequence manipulation is broken almost everywhere.
  • Fix any direct references to qibolab, which are based on the 0.1 API, in the docs.

This update should not affect the qibocal interface. I called the branch 0.2 because I assumed that we will eventually release it as such, in order to maintain agreement between qibolab-qibocal versions, but this is not strictly required if we don't break the qibocal interface (we could keep going with qibocal 0.1.*). I could change the branch name if it is confusing.

@Edoardo-Pedicillo mentioned that a potential qibocal refactoring was being discussed, however I would suggest to keep the two independent unless there is an important reason not to. If you want the "refactored qibocal" to support qibolab 0.1, you need to do this refactor first, however based on the discussed priorities, I think we should go ahead with 0.2 and forget 0.1 as soon as possible.

To elaborate a bit more on the above points:
(1) requires the most work, however it is also the tedious kind of work, so there should be no significant blocking points. I will add below a list of the routines, to split them among the people involved and keep track what is updated. In every routine we need to update the PulseSequence creation, how the native pulses are obtained from the Platform, how Sweepers are defined and potentially how results are obtained and post-processed. Qibolab devs could potentially give a tutorial with more details. Some routines are already updated (see below) so they could serve as template.

(2) may be a bit trickier because, unlike (1), we don't have a POC yet and qibolab 0.2 is not very user-friendly when it comes to Platform parameter updates. I am planning to open another PR (on top of this) with a POC to discuss and once this is finalized we can propagate to all updates. The good news is that this can also progress independently of point 1.

(3) is not strictly required for things to work and the simplest solution is to just drop all the updates of such parameters. If users want to report them, they can refer to the corresponding reports, until we come up with a better way to store them. However, alternative solutions are welcome (@andrea-pasquale @alecandido ).

Points 4 and 5 should come naturally as 1 and 2 are completed.

List of routines to be updated (taken from `__init__` ):

@stavros11
Copy link
Member Author

Note that testing updated routines on hardware also requires a working platform that complies with the qibolab 0.2 interface. As of now the only available is qiboteam/qibolab_platforms_qrc#153.

@alecandido alecandido mentioned this pull request Oct 1, 2024
@stavros11 stavros11 mentioned this pull request Oct 2, 2024
@stavros11
Copy link
Member Author

In 4154ea9 I updated the resonator and qubit flux routines. Here are some examples on

As mentioned elsewhere, these routines are making use of some parameters that are no longer in the qibocal platform, such as the crosstalk matrix and bare resonator frequency for the fit of resonator flux and the anharmonicity for the qubit flux of the 02 state. I have temporarily disabled/set dummy values in the related points, however we should probably find a solution on how to deal with these parameters before merging this.

@stavros11
Copy link
Member Author

stavros11 commented Oct 18, 2024

I have updated most routines that are needed for basic calibration of a chip from scratch (see list in first post). I have tested these on qw11q and they seem to work. If anyone tries to use this and encounters any issues or if some important routine is missing let us know. For TII, it should work with the platforms on qibolab_platforms_qrc main and the latest qibolab main (qw11q should also work with 0.2.0 release).

Note that the spin echo routine has been changed to use sweepers, instead of unrolling, since now there is no discrepancy with how delay durations are swept and they should be uniformly supported by all drivers in qibolab 0.2.

For the rest of routines I will probably need some help. I will now shift focus on #996 to implement the updates using the method discussed.

@alecandido
Copy link
Member

Whenever someone can take a look, please consider merging/rebasing on main to solve the conflicts (even discarding everything, if they do not apply to the new version).

commit 27d5c46a6b5843b97e9e3a46e2a38a578dd47034
Author: Stavros Efthymiou <[email protected]>
Date:   Tue Oct 1 16:36:56 2024 +0400

    build: update pyproject

commit 02e2313096ffaef2e0d49007609f3cc98630392a
Author: Stavros Efthymiou <[email protected]>
Date:   Fri Sep 20 14:26:42 2024 +0400

    fix: resonator spectroscopy errors

commit 56a4a03fca9ab6442c0f29b539ee72271da88924
Author: Stavros Efthymiou <[email protected]>
Date:   Fri Sep 20 13:43:39 2024 +0400

    fix: drop create_sequence

commit f70cfa6e97cfc55c6580863600d57e5eb74c5c9c
Author: Stavros Efthymiou <[email protected]>
Date:   Fri Sep 20 13:25:12 2024 +0400

    fix: drop ExecutionParameters from Parameters

commit dc48c6e99ae19992258578a5893493c54c9e90c0
Author: Stavros Efthymiou <[email protected]>
Date:   Fri Sep 20 13:22:54 2024 +0400

    chore: drop usage of ExecutionParameters

commit 188caf54fcb0dae4d8f757a79deda9983b6892c3
Author: Stavros Efthymiou <[email protected]>
Date:   Wed Sep 18 19:21:26 2024 +0400

    fix: fixes for hardware execution

commit 140b76500c3b4772612ec965e1116b618ce0e4d6
Author: Stavros Efthymiou <[email protected]>
Date:   Wed Sep 18 19:16:17 2024 +0400

    refactor: use sequence creation helpers in single shot routine

commit b3714b9423234d0277204472d88633740035bf82
Author: Stavros Efthymiou <[email protected]>
Date:   Wed Sep 18 19:02:18 2024 +0400

    chore: update for new qibolab public API

commit 0b5fb601b5b91da23b58c257ba00f92846e36ee5
Author: Stavros Efthymiou <[email protected]>
Date:   Wed Sep 18 18:56:52 2024 +0400

    chore: move QubitId and QubitPairId to qibocal

commit 9ffd79b2a30cfc953ddb329302c64c238731aaea
Author: Stavros Efthymiou <[email protected]>
Date:   Fri Sep 13 16:30:08 2024 +0400

    fix: Rabi length for new result shapes

commit c6482aa4615eee9ae9ebda0e2624c746b6437fed
Author: Stavros Efthymiou <[email protected]>
Date:   Mon Sep 9 18:08:09 2024 +0400

    chore: update resonator spectroscopy after moving results to qibocal

commit 36d38cda8a34731d5471394e58750658d2524d55
Author: Stavros Efthymiou <[email protected]>
Date:   Tue Sep 3 19:47:45 2024 +0400

    chore: move result manipulation functions from qibolab

commit 9dd49a48cb9541666de894be6535f5da8cf807a9
Author: Stavros Efthymiou <[email protected]>
Date:   Tue Sep 3 19:47:25 2024 +0400

    chore: update for new result structure

commit 57503ffd0e21dc754c078cf046cafe696dc78bdb
Author: Stavros Efthymiou <[email protected]>
Date:   Tue Sep 3 14:03:52 2024 +0400

    chore: update resonator spectroscopy

commit 6468d925eb871b3d0e064702f522cf80483a9b5a
Author: Stavros Efthymiou <[email protected]>
Date:   Sun Sep 1 02:53:07 2024 +0400

    chore: update Rabi routines

commit fef91b9e66bb58c8ef736241059820fe26028598
Author: Alessandro Candido <[email protected]>
Date:   Fri Aug 30 20:34:47 2024 +0200

    fix: Add delays on acquisition in classification

commit 5b6611df547abaab4fd3eb2ed7de70b824b25953
Author: Alessandro Candido <[email protected]>
Date:   Mon Aug 26 15:17:32 2024 +0200

    fix: Use readout id, not acquisition

commit a80712b41300c518cea710617e817d5b6e26130a
Author: Alessandro Candido <[email protected]>
Date:   Mon Aug 26 13:19:15 2024 +0200

    fix: Update channel names retrieval in classification

commit 36a9339a8d50d35bd2c2f456f884adc5db8c1560
Author: Stavros Efthymiou <[email protected]>
Date:   Sun Sep 1 02:29:06 2024 +0400

    chore: convert Rabi amplitude to absolute sweeper

commit 0b522082368b68ebb74b1b2b43050b380b68bc72
Author: Stavros Efthymiou <[email protected]>
Date:   Thu Aug 29 01:04:00 2024 +0400

    chore: drop sweeper type from rabi

commit 1f33656bc7d7ab3a965d4766b1a66ab41c34ba9a
Author: Stavros Efthymiou <[email protected]>
Date:   Thu Aug 29 01:03:38 2024 +0400

    chore: drop outdated updates

commit 9e86b1d5b23792d2679efce99d8bdf8aa9ff7de8
Author: Stavros Efthymiou <[email protected]>
Date:   Wed Aug 28 23:49:02 2024 +0300

    chore: drop SweeperType

commit b874a42b348ab2dc80b2e747f7da6d660b60c7ce
Author: Stavros Efthymiou <[email protected]>
Date:   Wed Aug 28 23:44:18 2024 +0300

    chore: update QubitId and QubitPairId imports to identifier

commit 222da2ba2ea5f7678eb2d0ca33bb167429c9cdd3
Author: Stavros Efthymiou <[email protected]>
Date:   Tue Aug 27 21:06:25 2024 +0400

    fix: unrolling result indexing

commit 28d3cd20ef890b1b26d7f12f19698471e873d61a
Author: Alessandro Candido <[email protected]>
Date:   Sun Aug 25 11:37:45 2024 +0200

    build: Update qibolab version with git dependency

commit 544bd67b3311b15a52924a3578231d77369cb55a
Author: Stavros Efthymiou <[email protected]>
Date:   Thu Aug 22 22:27:30 2024 +0400

    chore: update Rabi routines for acquisition

commit 2f9f1ea279c3300166c7257b01c25c521d6e9972
Author: Stavros Efthymiou <[email protected]>
Date:   Thu Aug 22 22:07:03 2024 +0400

    chore: implement duration interpolated sweeper

commit 1f937268e25b2d3577b9b240915b39e1ef31d527
Author: Stavros Efthymiou <[email protected]>
Date:   Tue Aug 20 21:59:08 2024 +0400

    chore: update with new acquisition format

commit 5e3cbe6d2a927fcbe3e74c0187dd6d944850c9b5
Author: Stavros Efthymiou <[email protected]>
Date:   Sun Aug 18 14:56:31 2024 +0400

    chore: update Rabi routines

commit 0984ba8014cbec78be53ef07da531eeb00c80eab
Author: Stavros Efthymiou <[email protected]>
Date:   Sun Aug 18 13:36:58 2024 +0300

    chore: change PulseSequence import to qibolab.sequence

commit 77e36846f424ad69392e7f8b2d0a0d2f789d6225
Author: Stavros Efthymiou <[email protected]>
Date:   Fri Aug 16 21:09:57 2024 +0400

    chore: update single shot for new qibolab serialization

commit 47a5d48e7f6a9f37c2f3f0e67cc8ba3605e339ca
Author: Stavros Efthymiou <[email protected]>
Date:   Tue Aug 13 20:33:24 2024 +0400

    fix: update Rabi length signal for new sequence layout

commit 0a269b4c2d94b88d4347ca3d18492e5793e10e2f
Author: Stavros Efthymiou <[email protected]>
Date:   Tue Aug 13 20:33:07 2024 +0400

    fix: update Rabi length for new sequence layout

commit 6964785715488adeac3aa8066500ac01afa7a73e
Author: Stavros Efthymiou <[email protected]>
Date:   Sun Aug 11 15:05:59 2024 +0400

    chore: update routines for the new sequence layout

commit eee321e33866f4d5e3ce9f319507043fe0055829
Author: Stavros Efthymiou <[email protected]>
Date:   Tue Aug 6 23:57:34 2024 +0400

    chore: update resonator spectroscopy

commit 5c9838b4ef811cac68ef706d1a97cb8528b6ab04
Author: Stavros Efthymiou <[email protected]>
Date:   Tue Aug 6 23:57:08 2024 +0400

    chore: update rabi amplitude

commit ceed1c7396f45a634da58a3eb599f68bd6fc0a67
Author: Stavros Efthymiou <[email protected]>
Date:   Tue Aug 6 23:09:21 2024 +0400

    chore: update single shot

commit 9c7da03c986b51201225d3ab6e9ced713f0a57af
Author: Stavros Efthymiou <[email protected]>
Date:   Mon Jul 15 16:44:16 2024 +0400

    chore: update T1, T2 signal and rabi length routines

commit 502cd2dddf24a99c73435d4a6645a3a35f2d58e6
Author: Stavros Efthymiou <[email protected]>
Date:   Sun Jul 14 01:27:51 2024 +0400

    refactor: update classification, rabi amplitude and resonator spectroscopy routines
@stavros11
Copy link
Member Author

stavros11 commented Dec 5, 2024

I have done some comparisons between 0.1 and 0.2 (using this branch) on qw11q:

These tests were done using the qw11q platform from the 0.1 branch of qibolab and the corresponding converted platform for 0.2 (which can be found in qiboteam/qibolab_platforms_qrc#205).

Most routines I tried look similar among the two versions. There are known discrepancies on

Note that these tests are an in a small subset of routines. However, I would still ask others to try using 0.2 so that we can identify other problems, if there are any. Maybe merging this could be a good step towards that direction.

@andrea-pasquale
Copy link
Contributor

Thanks for the detailed comparison @stavros11!
Something else that was missing which I added in d7745ae is the update for the DRAG pulse.
I'm intrigued by the Ramsey, I will try to have a look.

Note that these tests are an in a small subset of routines. However, I would still ask others to try using 0.2 so that we can identify other problems, if there are any. Maybe merging this could be a good step towards that direction.

Generally I agree with this, since if we merge people (at least developers) will be more or less forced to use this version :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants