-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Adds cirq-rigetti #4302
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
Adds cirq-rigetti #4302
Conversation
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
249114a
to
e206be4
Compare
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
I was just thinking to add it as a job on the same ci.yml workflow. Is there a benefit of adding a separate workflow?
Hmmm....I wouldn't call it an antipattern, we don't really use pytest fixtures, instead rely on local functions to create test data and pytest.parametrize to inject combinations of test inputs. If a certain method is used as part of multiple tests, we write tests for those too in a dedicated testing package, e.g. I'm going to get other's views on this too.
We will need two docs similar to google, aqt, etc.:
I'm thinking about adding the "multi-platformness" to only one of the notebooks. It could be VQE, but let's discuss that.
Sounds good. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we move the quil converters in cirq-core to here?
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some more comments.
Also we typically ask our implementors to create a Device
instance that helps with validation of circuits upfront against allowed operations, and adjacency and scheduling constraints. For the adjacency constraints we might want to consider adding OctogonalQubit
to cirq-core/cirq/devices
, with two dimensions: octogon number (0 to n) and qubit location (0 to 7) - if I understand https://qcs.rigetti.com/qpus/ correctly.
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
For formatting errors, the easiest way to fix is |
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
3c0b5c2
to
64db623
Compare
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
64db623
to
b065827
Compare
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
1 similar comment
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
cirq-rigetti/requirements.txt
Outdated
six==1.16.0 | ||
sniffio==1.2.0 | ||
toml==0.10.2 | ||
typing-extensions==3.10.0.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The way Cirq uses requirements.txt is a bit unorthodox - we should remove as much of the constraints as possible as we are using requirements.txt as the install_requires
instruction in setup.py. This does mean that our continuous integration keeps changing as new versions are released of our dependencies, but it didn't cause too many problems just yet. See #3552 for detailed discussions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, I've dropped some dependencies (I see pyQuil itself was already a dependency for the Quil conversion) and loosened constraints to ~=
. Let me know if that suffices of if there is something additional that'd facilitate management.
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
I don't think so. Quil is now separate from Rigetti. See https://github.com/quil-lang/. If anything, we'd want to break the Quil converters into their own separate package. Something I'd consider working on time permitting. |
Yes, you are understanding correctly. tldr; I deliberately did not implement a device as of yet because our stack is tied to the Quil compiler pretty closely. This enables users to execute circuits using an arbitrary gate set against a hardware device of another native gate set. Circuit decomposition is on the periphery of my competencies, so after an attempt at native Cirq decomposition and validation, I decided it best to not implement those devices quite yet. As things stand, we have three circuit executors and I describe circuit validation below:
The ergonomics here aren't quite as clean as Cirq's decomposition and validation, however, fairly certain the Quil compiler can decompose all of Cirq's gates to our native gate set. |
No, I misspoke and meant separate job. For now, I've added services to the Also, I'm less familiar with github workflows. Looks like they don't expose a
Let me know if you're aware of a more straightforward way of executing a command.
Ok I'm working on this.
|
Yeah, it's quite annoying that they introduced this feature for first time users. After you have a commit in the repo it's automated. I'll look into whether I can turn this off...but probably it's an anti-spam measure, which is good. I think you might be able to test your workflows if you raise a PR within your fork against your |
c1d491e
to
1a26798
Compare
5ba6c2f
to
a4cdfd0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with some nits
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM (I fixed the last nits)
Automerge cancelled: A status check is failing. |
Automerge cancelled: A required status check is not present. Missing statuses: ['Build docs', 'Build protos', 'Changed files test', 'Coverage check', 'Doc test', 'Format check', 'Lint check', 'Misc check', 'Notebook formatting', 'Pytest MacOS (3.7)', 'Pytest MacOS (3.8)', 'Pytest MacOS (3.9)', 'Pytest Ubuntu (3.7)', 'Pytest Ubuntu (3.8)', 'Pytest Ubuntu (3.9)', 'Pytest Windows (3.7)', 'Pytest Windows (3.8)', 'Pytest Windows (3.9)', 'Type check', 'Typescript lint check', 'Typescript tests', 'Typescript tests coverage', 'cla/google'] |
Adds integrations to the Rigetti QVM and Forest SDK in a new module: cirq-rigetti. Includes integration testing with docker compose jobs and documentation. [RFC](https://docs.google.com/document/d/16h5qe5Ljf4Cgws6C0PDJ2a2M7Z-KYKq7N_2iT9XV9Lo/edit#heading=h.mckr847qq60k)
Adds integrations to the Rigetti QVM and Forest SDK in a new module: cirq-rigetti. Includes integration testing with docker compose jobs and documentation. [RFC](https://docs.google.com/document/d/16h5qe5Ljf4Cgws6C0PDJ2a2M7Z-KYKq7N_2iT9XV9Lo/edit#heading=h.mckr847qq60k)
Adds integrations to the Rigetti QVM and Forest SDK in a new module: cirq-rigetti.
Includes integration testing with docker compose jobs and documentation.
RFC