Code overview#

The Qibo framework in this repository implements a common system to deal with classical hardware and future quantum hardware.


The main Qibo objects are circuits, defined in qibo/models/ and gates, defined in qibo/gates. These allow the user to simulate circuits that follow the gate-based approach of quantum computation or to execute them on different hardware. These objects are backend agnostic, meaning that the same circuit can be executed using different backends. Backends are defined in qibo/backends and are used to simulate the abstract circuits or execute them on hardware.

Qibo provides additional features that are useful for quantum applications, such as Hamiltonians (qibo/hamiltonians), time evolution simulation (qibo/models/ and variational models (qibo/models/

Including a new backend#

New backends can be implemented by inheriting qibo.backends.abstract.Backend and implementing its abstract methods. If the backend is for classical simulation one may prefer to inherit qibo.backends.abstract.Simulator instead.

Examples and tutorials#

The examples folder contains benchmark code for applications/tutorials described in Applications while examples/benchmarks contains some code for benchmarking only.