Qiskit is an open-source framework for quantum computing. It provides tools for creating and manipulating quantum programs and running them on prototype quantum devices on IBM Q Experience or on simulators on a local computer. It follows the circuit model for universal quantum computation, and can be used for any quantum hardware that follows this model.
The four elements of Qiskit are the essential parts that give Qiskit its power are Qiskit Terra, Qiskit Aer, Qiskit Ignis, Qiskit Aqua and if you want to run your experiments on real systems you need the 5th element IBM Q Provider
The workflow of using Qiskit consists of three high-level steps:
- Build: design a quantum circuit that represents the problem you are considering.
- Execute: run experiments on different backends (which include both systems and simulators).
- Analyze: calculate summary statistics and visualize the results of experiments.
Terra is the foundation on which the rest of Qiskit lies. Terra provides a bedrock for composing quantum programs at the level of circuits and pulses, to optimize them for the constraints of a particular device, and to manage the execution of batches of experiments on remote-access devices. Terra defines the interfaces for a desirable end-user experience, as well as the efficient handling of layers of optimization, pulse scheduling and backend communication.
Aer provides a high performance simulator framework for quantum circuits using the Qiskit software stack. It contains optimized C++ simulator backends for executing circuits compiled in Terra. Aer also provides tools for constructing highly configurable noise models for performing realistic noisy simulations of the errors that occur during execution on real devices.
Ignis is dedicated to fighting noise and errors and to forging a new path. This includes better characterization of errors, improving gates, and computing in the presence of noise. Ignis is meant for those who want to design quantum error correction codes, or who wish to study ways to characterize errors through methods such as tomography, or even to find a better way for using gates by exploring dynamical decoupling and optimal control. Ignis provides code for users to easily generate circuits for specific experiments given a minimal set of user input parameters.
Aqua is where algorithms for quantum computers are built. These algorithms can be used to build applications for quantum computing. Aqua is accessible to domain experts in chemistry, optimization, finance and AI, who want to explore the benefits of using quantum computers as accelerators for specific computational tasks.
The primary version of Qiskit uses the Python programming language. Versions for Swift and JavaScript are also available, though the development for these versions have halted. These are used to create quantum programs based on the OpenQASM representation of quantum circuits. A range of Jupyter notebooks are provided with examples of quantum computing being used. Examples include the source code behind scientific studies that use Qiskit, as well as a set of exercises to help people to learn the basics of quantum programming. An open source textbook based on Qiskit is available as a university level quantum algorithms or quantum computation course supplement.IBM Quantum offers several real quantum computers and high-performance classical computing simulators through its IBM Quantum Experience with Qiskit.