-
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
Sweeper unrolling #1059
Comments
Indeed, this is definitely useful, since it could even greatly simplify Qibocal. Currently, some routines are more or less duplicated, only because there is a However, in my mind we could go even further, and instead of unrolling the sweepers at drivers' level, we could do this directly in the In order to do this, we should implement part of #854, and list in the instrument class the supported sweepers. At that point, the It's not really that simple, only because we may have multiple instruments in a platform, and there is no requirement of having a single In any case, even assuming a single [*]: it doesn't have to be true unrolling, as this is possibly hard to implement for some drivers, e.g. because you need the readout operation at the end of the experiment; but we're batching the unrolled sequence at |
I didn't think of this, but that would indeed help in a multi-instrument setup.
Indeed, we also may need to respect the amount of times we run different instruments. For example, if instrument 1 has a hardware sweeper and instrument 2 does not need to be swept, then we pass the sweeper to instrument 1 and may have to inform instrument 2 that the same sequence is to be played for the sweeper's length.
So my main motivation behind this was the sweeper = Sweeper(parameter=Parameter.duration, pulses=[rabi_pulse], values=(20, 220, 2))
sequence = [(drive_chan, rabi_pulse), (drive_chan, align1), (acq_chan, align1), (acq_chan, acquisition)] During my first implementation of python recursive based sweeper handling, I was first using |
Yes, but to do this, the current Qibolab strategy would be to act at the sequence level. If we unroll, we'll pass the unrolled sequences to all instruments. Otherwise, it will be the sweepers going to all instruments. Then, each driver will filter the part relevant to it, and upload. It would be hard to deduplicate information on a general basis. Like "this instrument only needs to repeat this sequence irrespective of other portions of the sequence being changing for other instruments", but:
Yes, that's more or less the reason why
Yeah, the If you don't have native aligns, consider not supporting duration sweepers in a first iteration of the Keysight driver. Qibocal has alternative experiments for drivers not supporting some sweepers (e.g. |
Some instruments are unable to use hardware sweepers and can only play a sequence at a time. Also, conventional AWGs are able to store multiple sequences.
To implement the "sweeper functionality" for these devices, I propose an alternative approach to unrolling to unroll the sweepers into an array of sequences. The controller will then either play all the sequences together or one sequence at a time.
The text was updated successfully, but these errors were encountered: