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

Support qiskit transpile() with IonQ native gateset #92

Open
Cynocracy opened this issue Jun 2, 2022 · 2 comments
Open

Support qiskit transpile() with IonQ native gateset #92

Cynocracy opened this issue Jun 2, 2022 · 2 comments

Comments

@Cynocracy
Copy link
Collaborator

We can support in-qiskit transpilation to our native gateset, now that native gates are supported.

This would be a good task for someone with deep experience/understanding of quantum circuits.

@ColemanCollins ColemanCollins changed the title Support transpile() in qiskit from QIS to native gates Support qiskit.transpile() with IonQ native gateset Jun 3, 2022
@ColemanCollins ColemanCollins changed the title Support qiskit.transpile() with IonQ native gateset Support qiskit transpile() with IonQ native gateset Jun 3, 2022
@ColemanCollins
Copy link
Collaborator

ColemanCollins commented Jun 3, 2022

This issue has been given a bounty as part of unitaryhack 2022. A PR closing the issue by a unitary hack participant will result in a cash prize!

Feel free to comment on this issue to discuss approach and solutions, or find us on the Qiskit Slack at #partners-ionq.

I believe the main thrust of work here is in providing appropriate decompositions (or even more advanced ones, see this paper) for a universal gateset that already works with the transpiler, e.g. CNOT and rotations. See this page for a lot more on our native gateset, and this one for the gateset in qiskit specificxally.

Note that some or all of this of this work may/should/could happen upstream in the main qiskit repo — we are happy to cover the bounty (or a secondary bounty) however the solution shakes out.

@mtreinish
Copy link
Contributor

Just for reference there is documentation on how to do this in a backend implementation: https://qiskit.org/documentation/apidoc/providers.html#custom-basis-gates

Ideally you wouldn't need to do anything in qiskit-terra but there are still some gaps in the backend/transpiler interface around integrating optimization with custom backend specific gates so passes like Optimize1qGatesDecomposition and UnitarySynthesis (which are used to simplify the circuit after translation) can work in a custom gate set (this should hopefully be getting addressed over the next couple of releases). But to start if you follow the steps from the documentation guide the transpile() will at least generate valid circuits.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants