This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
Qiskit is an open-source software development kit (SDK) for working with quantum computers at the level of circuits, pulses, and algorithms. It provides tools for creating and manipulating quantum programs and running them on prototype quantum devices on IBM Quantum Platform or on simulators on a local computer. It follows the circuit model for universal quantum computation, and can be used for any quantum hardware (currently supports superconducting qubits and trapped ions)[4] that follows this model.
Developer(s) | IBM Research, Qiskit community |
---|---|
Initial release | March 7, 2017[1] | .
Stable release | 0.45.0
/ 3 November 2023[2] |
Repository | |
Written in | Python |
Operating system | Cross-platform |
Type | SDK for Quantum Computing |
License | Apache License 2.0[3] |
Website | qiskit |
Qiskit was founded by IBM Research to allow software development for their cloud quantum computing service, IBM Quantum Experience.[5][6] Contributions are also made by external supporters, typically from academic institutions.[7][8]
The primary version of Qiskit uses the Python programming language. Versions for Swift[9] and JavaScript[10] were initially explored, though the development for these versions has halted. Instead, a minimal re-implementation of basic features is available as MicroQiskit,[11] which is made to be easy to port to alternative platforms.
A range of Jupyter notebooks are provided with examples of quantum computing being used.[12] Examples include the source code behind scientific studies that use Qiskit,[13] 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.[14]
Components
editQiskit is made of elements that work together to enable quantum computing. The central goal of Qiskit is to build a software stack that makes it easier for anyone to use quantum computers, regardless of their skill level or area of interest; Qiskit allows users to design experiments and applications and run them on real quantum computers and/or classical simulators. Qiskit provides the ability to develop quantum software both at the machine code level of OpenQASM, and at abstract levels suitable for end-users without quantum computing expertise. This functionality is provided by the following components.[15]
Qiskit Terra
editThe element Terra is the foundation on which the rest of Qiskit is built. Qiskit Terra provides tools to create quantum circuits at or close to the level of quantum machine code.[16] It allows the processes that run on quantum hardware to be explicitly constructed in terms of quantum gates. It also provides tools to allow quantum circuits to be optimized for a device, as well as managing batches of jobs and running them on remote-access quantum devices and simulators.
The following shows a simple example of Qiskit Terra. In this, a quantum circuit is created for two qubits, which consists of the quantum gates required to create a Bell state. The quantum circuit then ends with quantum measurements, which extract a bit from each qubit.
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0,1], [0,1])
Qiskit Aer
editThe element Aer provides high-performance quantum computing simulators with realistic noise models. In the near-term, development of quantum software will depend largely on simulation of small quantum devices. For Qiskit, this is provided by the Aer component. This provides simulators hosted locally on the user's device, as well as HPC resources available through the cloud.[17] The simulators can also simulate the effects of noise for simple and sophisticated noise models.[18]
Continuing with the previous example: Once the quantum circuit has been created, it can be run on a backend (either quantum hardware or a simulator). In the following example, a local simulator is used.
from qiskit import Aer, execute
backend = Aer.get_backend("qasm_simulator")
job = execute(qc, backend)
result = job.result()
print(result.get_counts(qc))
The final print statement here will show the results returned by the backend. This is a Python dictionary that describes the bit strings obtained from multiple runs of the quantum circuit. In the quantum circuit used in this example, the bit strings '00'
and '11'
should be the only possible results, and should occur with equal probability. The full results will therefore typically have the samples split approximately equally between the two, such as {'00':519, '11':505}
.
Experiments done on quantum hardware using Qiskit have been used in many research papers,[19] such as in tests of quantum error correction,[20][21] generation of entanglement[22] and simulation of far-from-equilibrium dynamics.[23]
Qiskit Ignis
editAs of version 0.7.0, released on 6th December 2021, Qiskit Ignis has been deprecated and superseded by the Qiskit Experiments project.[24]
The element Ignis provides tools for quantum hardware verification, noise characterization, and error correction. Ignis is a component that contains tools for characterizing noise in near-term devices, as well as allowing computations to be performed in the presence of noise. This includes tools for benchmarking near-term devices, error mitigation and error correction.[25]
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.
Qiskit Aqua
editAs of version 0.9.0, released on 2nd April 2021, Qiskit Aqua has been deprecated with its support ending and eventual archival being no sooner than 3 months from that date.
The element Aqua provided a library of cross-domain algorithms upon which domain-specific applications can be built. However, the Qiskit 0.25.0 release included a restructuring of the applications and algorithms. What previously has been referred to as Qiskit Aqua, the single applications and algorithms module of Qiskit, is now split into dedicated application modules for Optimization, Finance, Machine Learning and Nature (including Physics & Chemistry). The core algorithms and opflow operator functionality were moved to Qiskit Terra.
Additionally, to the restructuring, all algorithms follow a unified paradigm: algorithms are classified according to the problems they solve, and within one application class algorithms can be used interchangeably to solve the same problem. This means that, unlike before, algorithm instances are decoupled from the problem they solve.[26]
Qiskit Optimization
editQiskit Optimization is an open-source framework that covers the whole range from high-level modeling of optimization problems, with automatic conversion of problems to different required representations, to a suite of easy-to-use quantum optimization algorithms that are ready to run on classical simulators, as well as on real quantum devices via Qiskit. The Optimization module enables easy, efficient modeling of optimization problems using docplex.[27]
Qiskit Finance
editQiskit Finance is an open-source framework that contains uncertainty components for stock/securities problems, Ising translators for portfolio optimizations and data providers to source real or random data to finance experiments.[28]
Qiskit Machine Learning
editThe Machine Learning package (as of 2021) contains sample datasets at present. It has some classification algorithms such as QSVM and VQC (Variational Quantum Classifier), where this data can be used for experiments, and there is also QGAN (Quantum Generative Adversarial Network) algorithm.[29]
Qiskit Nature
editQiskit Nature is an open-source framework that supports problems including ground state energy computations, excited states and dipole moments of molecule, both open and closed-shell. The code comprises chemistry drivers, which when provided with a molecular configuration will return one and two-body integrals as well as other data that is efficiently computed classically. This output data from a driver can then be used as input in Qiskit Nature that contains logic which is able to translate this into a form that is suitable for quantum algorithms.[30]
See also
edit- IBM Quantum Platform
- Cirq, Google's Quantum framework
- Quantum programming
References
edit- ^ Jay M. Gambetta; Andrew Cross (March 27, 2018). "Looking back on a year of Qiskit". Medium. Archived from the original on December 16, 2021. Retrieved September 24, 2019.
- ^ "Releases – Qiskit". GitHub. Archived from the original on 2021-12-16. Retrieved 2019-12-20.
- ^ License
- ^ "Qiskit - Write once, target multiple architectures". IBM Research Blog. 2019-11-05. Archived from the original on 2020-11-26. Retrieved 2019-12-20.
- ^ Magee, Tamlim (August 24, 2018). "What is Qiskit, IBM's open source quantum computing framework". Computerworld UK. Archived from the original on 6 March 2019. Retrieved 11 December 2018.
- ^ Hemsoth, Nicole (August 7, 2018). "QISKit Developments Key to IBM Quantum Engagement". The Next Platform. Archived from the original on 6 March 2019. Retrieved 11 December 2018.
- ^ "Qiskit Github page". GitHub. Archived from the original on 2021-02-04. Retrieved 2018-11-05.
- ^ Wille, R.; Meter, R. Van; Naveh, Y. (March 25, 2019). "IBM's Qiskit Tool Chain: Working with and Developing for Real Quantum Computers". 2019 Design, Automation & Test in Europe Conference & Exhibition (DATE). pp. 1234–1240. doi:10.23919/DATE.2019.8715261. ISBN 978-3-9819263-2-3. S2CID 155108078. Archived from the original on 2022-10-17. Retrieved 2023-12-30.
- ^ "Qiskit in swift". GitHub. Archived from the original on December 16, 2021. Retrieved September 24, 2019.
- ^ "Qiskit (Quantum Information Science Kit) for JavaScript". GitHub. Archived from the original on August 14, 2018. Retrieved September 24, 2019.
- ^ "MicroQiskit". GitHub. Archived from the original on February 12, 2022. Retrieved February 10, 2021.
- ^ "A collection of Jupyter notebooks showing how to use Qiskit that is synced with the IBM Quantum Experience". GitHub. Archived from the original on July 7, 2018. Retrieved September 24, 2019.
- ^ "Celebrating the IBM Q Experience community, and their research". IBM. IBM Research Editorial Staff. March 8, 2018. Archived from the original on October 10, 2019. Retrieved September 24, 2019.
- ^ "Learn Quantum Computing using Qiskit". Archived from the original on 20 December 2019. Retrieved 20 December 2019.
- ^ Javadi-Abhari, Ali; Gambetta, Jay M. (July 13, 2018). "Qiskit and its Fundamental Elements". Medium. Archived from the original on 8 January 2019. Retrieved 10 January 2019.
- ^ "Qiskit Terra". Qiskit. Archived from the original on October 10, 2019. Retrieved September 24, 2019.
- ^ "An Open High-Performance Simulator for Quantum Circuits". IBM. IBM Research Editorial Staff. May 1, 2018. Archived from the original on June 14, 2019. Retrieved September 24, 2019.
- ^ Wood, Christopher J. (December 19, 2018). "Introducing Qiskit Aer: A high performance simulator framework for quantum circuits". Medium. Archived from the original on November 1, 2019. Retrieved September 24, 2019.
- ^ "IBM Q Experience community publishes research". IBM Research Blog. 2018-03-08. Archived from the original on 2019-10-10. Retrieved 2021-07-14.
- ^ Wootton, James R.; Loss, Daniel (2018). "Repetition code of 15 qubits". Physical Review A. 97 (5): 052313. arXiv:1709.00990. Bibcode:2018PhRvA..97e2313W. doi:10.1103/PhysRevA.97.052313. ISSN 2469-9926. S2CID 53444623.
- ^ Roffe, Joschka; Headley, David; Chancellor, Nicholas; Horsman, Dominic; Kendon, Viv (2018). "Protecting quantum memories using coherent parity check codes". Quantum Science and Technology. 3 (3): 035010. arXiv:1709.01866. Bibcode:2018QS&T....3c5010R. doi:10.1088/2058-9565/aac64e. ISSN 2058-9565. S2CID 51684176.
- ^ Wang, Yuanhao; Li, Ying; Yin, Zhang-qi; Zeng, Bei (2018). "16-qubit IBM universal quantum computer can be fully entangled". npj Quantum Information. 4 (1): 46. arXiv:1801.03782. Bibcode:2018npjQI...4...46W. doi:10.1038/s41534-018-0095-x. ISSN 2056-6387.
- ^ Zhukov, A. A.; Remizov, S. V.; Pogosov, W. V.; Lozovik, Yu. E. (2018). "Algorithmic simulation of far-from-equilibrium dynamics using quantum computer". Quantum Information Processing. 17 (9): 223. arXiv:1807.10149. Bibcode:2018QuIP...17..223Z. doi:10.1007/s11128-018-2002-y. ISSN 1570-0755. S2CID 254991672.
- ^ Qiskit/qiskit-ignis, Qiskit, archived from the original on 2021-12-21, retrieved 2021-12-21.
- ^ "Ignis provides tools for quantum hardware verification, noise characterization, and error correction". GitHub. Archived from the original on March 25, 2019. Retrieved September 24, 2019.
- ^ "Qiskit Algorithms Migration Guide – Qiskit 0.28.0 documentation". qiskit.org. Archived from the original on 2021-07-14. Retrieved 2021-07-14.
- ^ Qiskit/qiskit-optimization, Qiskit, 2021-07-13, archived from the original on 2022-01-21, retrieved 2021-07-14.
- ^ Qiskit/qiskit-finance, Qiskit, 2021-07-13, archived from the original on 2021-12-18, retrieved 2021-07-14.
- ^ Qiskit/qiskit-machine-learning, Qiskit, 2021-07-13, archived from the original on 2021-07-22, retrieved 2021-07-14.
- ^ Qiskit/qiskit-nature, Qiskit, 2021-07-13, archived from the original on 2021-08-16, retrieved 2021-07-14.