Skip to content
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

update(cirq-rigetti): use pyquil v4 #6281

Merged
merged 118 commits into from
Jun 11, 2024

Conversation

jselig-rigetti
Copy link
Contributor

Refactors as necessary to anticipate the release of PyQuil v4. Changes between the RC used here and the eventual full release should be compatible, but leave this MR as a draft until the dependency can be pinned to a full >=4.0.0 release.

@google-cla
Copy link

google-cla bot commented Sep 6, 2023

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@CirqBot CirqBot added the size: M 50< lines changed <250 label Sep 6, 2023
@jselig-rigetti jselig-rigetti force-pushed the rigetti-use-pyquil-v4 branch 2 times, most recently from d8c1e61 to 1787c12 Compare September 6, 2023 22:12
raise ValueError(f'Symbols not valid for region name {region_name}')
qam_execution_result = quantum_computer.qam.run(executable)
qam_execution_result = quantum_computer.qam.run(executable, memory_map)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to check for atomic values and wrap them in a list to prevent a breaking change here.

In v3, Program.write_memory accepted atomic values for memory regions of length 1. For example, Program.write_memory("ro", 1) was valid if ro was defined as DECLARE ro BIT[1]. In v4, the new MemoryMap only accepts sequences of values for a memory region, even if that memory region happens to be length 1.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed this in the lines above 👍

@vtomole
Copy link
Collaborator

vtomole commented Sep 18, 2023

Hey @jselig-rigetti @MarquessV

Can either of you please review rigetti/qcs-api-client-python#12? It's been causing incompatibility issues with Cirq.

@jselig-rigetti jselig-rigetti marked this pull request as ready for review September 20, 2023 15:14
@jselig-rigetti jselig-rigetti requested review from vtomole, cduck and a team as code owners September 20, 2023 15:14
@jselig-rigetti jselig-rigetti force-pushed the rigetti-use-pyquil-v4 branch 2 times, most recently from 86fa3dc to c5f7f3a Compare October 19, 2023 15:07
@vtomole
Copy link
Collaborator

vtomole commented Nov 16, 2023

@jselig-rigetti @MarquessV Hey, how's this PR going?

@MarquessV
Copy link

Hey @vtomole! This PR is ready to review from our perspective. Anything else you need us to do?



@_provide_default_client # pragma: no cover
# pragma: no cover
Copy link
Collaborator

@pavoljuhas pavoljuhas Jun 10, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The # pragma: no cover comment is ineffective here.
Please move to the end of the line 238, ie, the end of the def statement to
ignore coverage for the entire get_rigetti_qcs_aspen_device function.

Better yet, adding a unit test would be nicer, even with a mock of the get_instruction_set_architecture function.

PS: to test the coverage and if # pragma: no cover comments apply you can use

$ check/pytest --rigetti-integration cirq-rigetti/ --cov=cirq_rigetti --cov-report=html

and then inspect the htmlcov/index.html file.

Copy link
Collaborator

@pavoljuhas pavoljuhas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Few small updates needed to pass unit tests and fix optional arguments declaration.
Please see inline comments.

jselig-rigetti and others added 2 commits June 10, 2024 13:31
…e as_qvm when constructing service class

Co-authored-by: Pavol Juhas <pavol.juhas@gmail.com>
@pavoljuhas pavoljuhas merged commit f87fd4c into quantumlib:main Jun 11, 2024
34 checks passed
@pavoljuhas
Copy link
Collaborator

Thank you @jselig-rigetti !

@jselig-rigetti jselig-rigetti deleted the rigetti-use-pyquil-v4 branch June 12, 2024 15:05
Yash-10 pushed a commit to Yash-10/Cirq that referenced this pull request Jun 12, 2024
- Add support for Kraus operators, POVMs and parametric defgates
- Update quil->cirq conversion

Fixes quantumlib#6500
Partially implements quantumlib#6464
pavoljuhas added a commit to pavoljuhas/Cirq that referenced this pull request Jun 13, 2024
vmscw pushed a commit to Sonderfall/Cirq that referenced this pull request Jun 14, 2024
- Add support for Kraus operators, POVMs and parametric defgates
- Update quil->cirq conversion

Fixes quantumlib#6500
Partially implements quantumlib#6464
pavoljuhas added a commit that referenced this pull request Jun 14, 2024
Run ci-daily tests with Python 3.12 in addition to 3.10 and 3.11.
Also clean up dependency constraints that got unnecessary after #6281.

Follow-up to #6460
pavoljuhas pushed a commit to pavoljuhas/Cirq that referenced this pull request Jun 26, 2024
- Add support for Kraus operators, POVMs and parametric defgates
- Update quil->cirq conversion

Fixes quantumlib#6500
Partially implements quantumlib#6464
pavoljuhas pushed a commit to pavoljuhas/Cirq that referenced this pull request Jun 26, 2024
- Add support for Kraus operators, POVMs and parametric defgates
- Update quil->cirq conversion

Fixes quantumlib#6500
Partially implements quantumlib#6464
pavoljuhas added a commit to pavoljuhas/Cirq that referenced this pull request Jun 26, 2024
Run ci-daily tests with Python 3.12 in addition to 3.10 and 3.11.
Also clean up dependency constraints that got unnecessary after quantumlib#6281.

Follow-up to quantumlib#6460
pavoljuhas pushed a commit to pavoljuhas/Cirq that referenced this pull request Jun 26, 2024
- Add support for Kraus operators, POVMs and parametric defgates
- Update quil->cirq conversion

Fixes quantumlib#6500
Partially implements quantumlib#6464
pavoljuhas added a commit to pavoljuhas/Cirq that referenced this pull request Jun 26, 2024
Run ci-daily tests with Python 3.12 in addition to 3.10 and 3.11.
Also clean up dependency constraints that got unnecessary after quantumlib#6281.

Follow-up to quantumlib#6460
harry-phasecraft pushed a commit to PhaseCraft/Cirq that referenced this pull request Oct 31, 2024
- allow latest scipy because quimb>=1.18 works with scipy-1.13
  (context in quantumlib#6543)
- allow latest rstcheck
- fix dependency specification for tensorflow-docs so it works with
  `uv pip compile`
- Enable the current latest versions of notebook, ipykernel, papermill
  which are only used for notebook tests
- Add temporary specifications for notebook-related transitive dependencies
  to help pip dependency resolver (should be redundant after quantumlib#6281) 

Partially fixes quantumlib#6464
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
size: M 50< lines changed <250
Projects
None yet
Development

Successfully merging this pull request may close these issues.