-
Notifications
You must be signed in to change notification settings - Fork 17
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
Pulse scheduling and duration sweepers #935
Comments
Why the 0.2 version is still using the serials? They are even worse than the 0.1 equivalents... However, apart for the serials, the diff I'm getting is: From this, I get that the only relevant difference is indeed the Since we would naively expect them to be the same (and most likely the problem consists in missing baking, or something like that), could we use the simulator to get waveforms plots? |
The program that is sent to the device is not using the serials, it is using the qibolab/src/qibolab/instruments/qm/config.py Lines 47 to 49 in 443dac8
The programs I posted here are the ones I am dumping to disk for debugging and there I replace the
I guess here str(pulse) uses some default pydantic serialization. However, this is only there for debugging and it not meant to be used in "production".
Here are the results of the simulator (zoomed in the relevant area): Actually 0.2 is worse than I expected and the whole drive is pushed inside the readout. That explains the bad results. I don't think the issue is related to baking, as I am only using durations that are multiple of 4ns in this example, so baking should not be needed. This is usually sufficient for single qubit Rabi anyway. However, I think the issue is that I am using the instrument interpolation to change the pulse duration real time by passing the If you notice in 0.1 there is even a gap of ~20ns between drive and readout. I have noticed |
Ok, this reminds me I should reprioritize also #773. But maybe after #687.
Yes, I would say that is much worse (than I expected)...
I thought it could have been some small details, but it seems macroscopic. It is definitely not baking. And yes, in the scripts the numbers were only in the serialization, but I'm reading now that they are all multiple of 4, so I could have excluded myself.
While Instead, So, maybe it's worth to make some more effort in eliminating the usage of It's not going to be for free, since we would abandon interpolation, thus we might have to upload more waveforms. But I'd be glad to pay this price, since interpolation is also reliable up to a point, so you want to use it explicitly (and completely unneeded for rectangular pulses and delays). |
This is related to: though it is the specific QM instance of the phenomenon, including some QM-specific optimization. However, my solution proposal stems from the observation that the observed distortion in Rabi is generated from QM additional runtime delays, generated by the interpolation of the pulses. Thus, as practical steps, I'd propose to:
The idea is then that a Rabi length experiment will be implemented with just a (of course Rabi length is just an example, but it should apply in a very analogue way to all duration experiments) |
I would consider this as fixed by #979, where we implemented the plan outlined in the comment above. |
This issue has been observed with Quantum Machines but may be relevant for other instruments.
In qibolab 0.2 we provide a
Delay
object that can be directly translated towait
(or the equivalent) instruction in the driver. While testing this for the Rabi length using the sequence is defined in https://github.com/qiboteam/qibocal/blob/04ee2f6f05d211edf4528731d309222e963064f6/src/qibocal/protocols/rabi/utils.py#L252in which we sweep the duration of the drive pulse and the delay before readout at the same time (to make sure readout is pushed after drive ends), I realized that it does not work as well with the new translation, as shown in the following reports:
Checking the generated QUA programs, I noticed that 0.1 translates to:
while 0.2 to:
In 0.2 we are translating
Delay
towait
as expected, while in 0.1 the driver forces readout to be after drive usingalign
. The latter seems to work better for that particular routine, as shown in the reports.I am guessing when using
wait
with exactly the duration of the drive pulse, there may still be some overlap between drive and readout that affects results, particularly for short durations. A potential solution (not tested) is to make the driver introduce small delays on its own in such cases, however that means that the sequence we are playing is not exactly the one defined by the user. An alternative is to translate exactly the given sequence and let the user (in this case qibocal) add more delays if such issues appear.The text was updated successfully, but these errors were encountered: