Qiskit
![]() | |
![]() | |
Developer(s) | IBM Research, Qiskit community |
---|---|
Initial release | March 7, 2017[1] | .
Stable release | 0.22.0
/ 6 October 2020[2] |
Repository | |
Written in | Python, Swift, JavaScript |
Operating system | Cross-platform |
Type | Quantum Computing |
License | Apache License 2.0[3] |
Website | qiskit |
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 (currently supports superconducting qubits and trapped ions[4]) that follows this model.
Qiskit was founded by IBM Research to allow software development for their cloud quantum computing service, IBM Q Experience.[5][6] Contributions are also made by external supporters, typically from academic institutions.[7]
The primary version of Qiskit uses the Python programming language. Versions for Swift[8] and JavaScript [9] were initially explored, though the development for these versions have halted.
A range of Jupyter notebooks are provided with examples of quantum computing being used.[10] Examples include the source code behind scientific studies that use Qiskit,[11] 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.[12]
Components
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 distinct components.[13]
Terra
Qiskit Terra provides tools to create quantum circuits at or close to the level of quantum machine code.[14] 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 particular 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, Aer, execute
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0,1], [0,1])
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.
backend = Aer.get_backend("qasm_simulator")
job_sim = execute(qc, backend)
sim_result = job_sim.result()
print(sim_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 Terra have been used in many research papers,[15] such as in tests of quantum error correction[16] ,[17] generation of entanglement[18] and simulation of far-from-equilibrium dynamics[19] .
Aqua
Qiskit Aqua provides tools that can be used without any explicit quantum programming required by the user themselves.[20] It currently supports applications in chemistry, AI, optimization and finance. Users can provide problems and receive results defined using standard tools in these domains, such as PySCF for chemistry. Qiskit Aqua then implements a corresponding quantum algorithm.
Aer
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.[21] The simulators can also simulate the effects of noise for simple and sophisticated noise models.[22]
Ignis
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.[23]
See also
References
- ^ Jay M. Gambetta; Andrew Cross (March 27, 2018). "Looking back on a year of Qiskit". Medium. Retrieved September 24, 2019.
- ^ "Releases – Qiskit".
- ^ License
- ^ "Qiskit - Write once, target multiple architectures". IBM Research Blog. 2019-11-05. Retrieved 2019-12-20.
- ^ Magee, Tamlim (August 24, 2018). "What is Qiskit, IBM's open source quantum computing framework". Computerworld UK. Retrieved 11 December 2018.
- ^ Hemsoth, Nicole (August 7, 2018). "QISKit Developments Key to IBM Quantum Engagement". The Next Platform. Retrieved 11 December 2018.
- ^ "Qiskit Github page".
- ^ "Qiskit in swift". GitHub. Retrieved September 24, 2019.
- ^ "Qiskit (Quantum Information Science Kit) for JavaScript". GitHub. Retrieved September 24, 2019.
- ^ "A collection of Jupyter notebooks showing how to use Qiskit that is synced with the IBM Q Experience". GitHub. Retrieved September 24, 2019.
- ^ "Celebrating the IBM Q Experience community, and their research". IBM. IBM Research Editorial Staff. March 8, 2018. Retrieved September 24, 2019.
- ^ "Learn Quantum Computing using Qiskit". Retrieved 20 December 2019.
- ^ Javadi-Abhari, Ali; Gambetta, Jay M. (July 13, 2018). "Qiskit and its Fundamental Elements". Medium. Retrieved 10 January 2019.
- ^ "Qiskit Terra". Qiskit. Archived from the original on October 10, 2019. Retrieved September 24, 2019.
- ^ "Community papers". IBM Q Experience.
- ^ Wootton, James R.; Loss, Daniel (2018). "Repetition code of 15 qubits". Physical Review A. 97 (5). arXiv:1709.00990. doi:10.1103/PhysRevA.97.052313. ISSN 2469-9926.
- ^ 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. doi:10.1088/2058-9565/aac64e. ISSN 2058-9565.
- ^ 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). 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). arXiv:1807.10149. doi:10.1007/s11128-018-2002-y. ISSN 1570-0755.
- ^ "Qiskit Aqua website". Archived from the original on 2019-10-10. Retrieved 2018-11-05.
- ^ "An Open High-Performance Simulator for Quantum Circuits". IBM. IBM Research Editorial Staff. May 1, 2018. Retrieved September 24, 2019.
- ^ Wood, Christopher J. (December 19, 2018). "Introducing Qiskit Aer: A high performance simulator framework for quantum circuits". Medium. Retrieved September 24, 2019.
- ^ "Ignis provides tools for quantum hardware verification, noise characterization, and error correction". GitHub. Retrieved September 24, 2019.