Skip to content

Roadmap #10

Description

@alecandido

A sketchy roadmap towards a viable qibo-core.

Representing circuits

The present goal is to be able to represent simple circuits. To have a practical goal, I want to support writing just a QFT, and see the simple diagram being printed.

  • QFT

This is more or less the goal of #6.

Running circuits

Import a trivial copy of the NumPy backend, just to validate the circuit representation and to extend its API, to be sufficient for execution.

  • NumPy backend

Done in #26.

C API

Extra

  • serialize gates and circuit
    • the present idea is using the very popular crate serde

Support all Qibo models and examples

This is the final target for qibo-core to be used as a replacement of the current structure in Qibo.

It will require to implement all gates, the channels, and possibly to implement some additional features of the circuits (distcircuit.py?).

  • plug in Qibo, pass the CI

Tests

This is definitely a moving target, and I will start providing a minimal CI very soon.

  • significant coverage

Docs

Same as for tests.

Allow someone else:

  • to write circuits in Rust
  • to plug further backends
  • to understand (at least minimally) the package structure

Multilanguage backends

This will be the cornerstone of qibo-core: the backend mechanism.
The first step will be to provide a minimal Backend structure, and use it to implement in Python the NumPy backend, based on qibo-core.

The further (and far more ambitious) goal of this stage will be to make a Rust executable, capable to create a circuit and run it on the NumPy backend.
This means that the Rust qibo-core will be somehow able to recognize the availability of the NumPy backend on the platform, spawn the Python process, send it the circuit, and eventually fetch the result (asynchronously?).

  • run on NumPy from Rust

Further APIs

  • Julia
  • Fortran

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions