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

Integrate the NVIDIA cuQuantum backend with OpenQAOA #305

Open
KilianPoirier opened this issue Apr 22, 2024 · 3 comments
Open

Integrate the NVIDIA cuQuantum backend with OpenQAOA #305

KilianPoirier opened this issue Apr 22, 2024 · 3 comments

Comments

@KilianPoirier
Copy link
Collaborator

KilianPoirier commented Apr 22, 2024

Issue Description

Can we add some of the NVIDIA simulators to the OpenQAOA stack?
NVIDIA's cuQuantum SDK provides users with quantum circuit simulation tools:

  • cuStateVec: a library for state vector computations
  • cuTensorNet: a library for tensor network computations

Integrating these tools with our stack would be helpful to implement tensor network simulations or simply make use of the high-performance simulators.

Changes to be made

In the same way we implemented different backends (physical QPU or simulators), implement a plugin package openqaoa-nvidia that allows execution on NVIDIA's backend. More specifically, changes include:

  • Creation of a new plugin openqaoa-nvidia including all necessary components (e.g. setup.py, pyproject.toml, etc...).
  • Creation of a openqaoa-nvidia/backend equivalent, bridging the stack's internal representation to one compatible with NVIDIA's SDK.
  • Creation of unit tests to make sure all features are correctly supported.
@vivek-kumar9696
Copy link

Hi, I would like to work on this enhancement. Can you please direct towards a plugin template used in your code that closely resembles the kind of components required for this.

@KilianPoirier
Copy link
Collaborator Author

Hi @vivek-kumar9696 , thanks for your interest!

You can find examples of such backends in the other plugins already implemented, e.g. openqaoa-azure, openqaoa-braket, openqaoa-qiskit, and openqaoa-pyquil. All plugins have a /backends/ folder where you can find:

  • device.py containing the information to access the specific provider's devices (qpu or sim, local or remote).
  • gates_*.py that contains the mapping between openqaoa's abstract gate representation and the provider's gates.
  • qaoa_*_qpu/sim.py that describes the creation of a QAO object on the specific backend.

Finally there is also a backend configuration file in the root folder of the plugin to describe how everything is mapped to the core library of openqaoa.

You can always refer to the existing plugins for the implementation of this new backend.
Hope that helps!

@vivek-kumar9696
Copy link

Thanks for the information. I am taking up this issue.

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

No branches or pull requests

2 participants