Writing quantum programs
The process of designing quantum algorithms mainly consists in writing a sequence of quantum instructions in a way that is comprehensible
by Quantum Processing Units (QPUs) so that they can be executed. In quantum programming, different paradigms are available to describe the quantum
Program
, each of them dedicated to be used by a different quantum system and for various use cases.
The Qaptiva framework offers a collection of tools to help express these quantum algorithms using high-level constructs. The main
objects are mostly wrapped under the qat.core
module, while the higher level interface is defined in the qat.lang
module.
Three main paradigms to design quantum algorithms are provided in the framework, namely:
Gate-based Programming - A series of quantum gates are applied to manipulate the quantum system.
Analog Quantum Programming - Evolves a quantum schedule encoding a Hamiltonian in an analog Quantum Processing Unit
Quantum Annealing Programming - Evolving a quantum schedule in a quantum annealer
In addition to defining the quantum algorithm, it is often necessary to describe the result that we wish to obtain from the QPU after the execution. An observable sampling feature is also available in the framework, allowing us to declare observables to be sampled on the final state in the QPU.
To respond to the needs of the current state of quantum computing, which are referred to as the Noisy intermediate-scale quantum (NISQ) era, some tools are also provided in the framework to construct noise models. This allows for stochastic simulation which includes the noises introduced during the simulation, to understand and predict their effects.