Infleqtion / client-superstaq

https://superstaq.readthedocs.io
Apache License 2.0
84 stars 19 forks source link

Feature/base qcvv framework #992

Closed cdbf1 closed 4 weeks ago

cdbf1 commented 1 month ago

In preparation for the XEB/IRB benchmarking routines, this PR implements some common functionality that can form the basis of a wide QCVV within superstaq.

review-notebook-app[bot] commented 1 month ago

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

cdbf1 commented 1 month ago

not necessarily in this pr, but we'll probably also want to add a third path for experiments on local hardware: in this case we would still use superstaq to compile (but not submit) all the circuits, and then lets the user run the compiled circuits locally and pass in their counts back in to the experiment for analysis

Definitely a good shout. A hacky way to do this at the moment would be for the user to use the _build_circuits() method to build the samples and then process them separately. Adding the option to compile them would be cool too, and I guess ideally a slick handle for the users to pass in connection to their own hardware would be the dream - definitely a separate PR though!

richrines1 commented 1 month ago

^ sounds good! we'll definitely need something like this for testbed users (e.g. aqt and qscout) who use superstaq to compile but don't have cloud-accessible machines. having a slick interface for this would be really nice

cdbf1 commented 1 month ago

^ sounds good! we'll definitely need something like this for testbed users (e.g. aqt and qscout) who use superstaq to compile but don't have cloud-accessible machines. having a slick interface for this would be really nice

I've implemented this by separating out the prepare_experiment function from the run function and added a compile method which will compile the circuits to the desired target (with additional optimization options). Then I've added an additional run_with_callable method which allows a custom callable to be used to evaluate each circuit which could in principal be used to run circuits on some local device

cdbf1 commented 4 weeks ago

Thanks for all your help @richrines1 - I think we've got something really nice here!