DiCarloLab-Delft / PycQED_py3

Python3 version of PycQED using QCoDeS as backend
MIT License
68 stars 41 forks source link

Review LUTmaps standards #626

Open jorgemfm27 opened 4 years ago

jorgemfm27 commented 4 years ago

In summary, there is a problem of lutmap state changing across different experiments. Ideally, this can be addressed by ensuring the proper LUTman is uploaded in the beginning of every experiment, and set to the previous state by the end of the experiment (still arguable). Additionally, there are 3 different MW LUTmaps:

MiguelSMoreira commented 4 years ago

I believe the most important point to address is correctness: Given the current status of PycQED, I believe the only way to do this is to always prepare (and upload) the lutmap required for a certain experiment. This is because there are several functions that modify it in non-trivial ways, without moving it back. Therefore, only by always ensuring the proper lutman is uploaded, can you be certain an experiment will execute properly.

NOTE: in the beginning (ie, before this is done to all the functions that require it) it may be a good idea to also end the function by moving the lutmaps back to their initial value. This way, you can ensure the most consistent behavior until all functions properly prepare their required lutmans.

After doing so, there are a few optimizations that could be done: 1st. a parameter can be created (at the lutman level) to keep track of which lutmap was uploaded last. This way, you will ensure that lutmaps are only re-uploaded when strictly needed, ensuring the most efficient use of time.

2nd. the most commonly used lutmaps could also be merged into a single (new) lutmap. This way, you could (potentially) further cut-down on upload time, by spending more time uploading (a bigger lutmap) but doing so less often (since, after combining lutmaps, you won't need to switch as much)

NOTE: whether item 2 actually reduces time spent in waveform upload greatly depends on the pattern of experiments you use (frequency of lutman change vs size of upload). Example: if you make the lutman bigger, upload time will increase and, if you still have to switch between lutmans often, it may be that the overall time spend increases from the case where you keep lutmans smaller.

MiguelSMoreira commented 4 years ago

@caenrigen @hasali92 @jorgemfm27 Is everything about my post above clear? Do you agree? Did I forget anything?

caenrigen commented 4 years ago

@MiguelSMoreira very good summary!

Question: In the case of the HDAWGs, is it true that, if the waveform in the HDAWG's memory is the same as the one that is intended to be uploaded (i believe this is hash based), then having certain waveforms associated to the same codewords most of the time, would avoid some real data transmission to the HDAWG even when we instruct the upload of the waveforms (in pyqced) ?

elrama- commented 4 years ago

want to hear from @MiguelSMoreira what he did for inspire