Features of ProjectQ
The main features of ProjectQ are
- a high level language to write quantum programs
- a modular and customizable compiler
- various hardware and software back-ends
- a library (FermiLib) to solve fermionic problems on a quantum computer
A more detailed description of each feature can be found below.
Compiler
The compilation framework consists of a main compiler engine, which executes a user-defined sequence of compilation steps by sending the circuit through a chain of so-called compiler engines. Each compiler engine manipulates the circuit to, e.g., reduce the number of gates or quantum bits required to run the quantum program. Engines further down the stack become more back-end-specific and take care of the mapping of the logical circuit to the layout of the back-end.
Users are encouraged to implement their own compiler engines and contribute them to the framework such that others can benefit from a more diverse set of compiler engines.
Back-ends
After the circuit has passed through all compiler engines, it gets sent to the back-end. The back-end may be actual quantum hardware, a simulator run on a classical computer, a circuit drawing engine, etc.
Having all of these possibilities in one unified framework allows users to test their implementations using a simulator before running them on actual hardware or getting resource estimates for larger instances.
The following back-ends are available in the first version of ProjectQ:
FermiLib
Solving fermionic problems is one of the most promising applications of quantum computing. This library automates the mapping of such problems from, e.g., the geometry of a molecule to quantum gates implementing the evolution under the Hamiltonian.