Qiskit: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m WP:AWB cleanup, added orphan tag
Removing {{orphan}} per WP:O, article has at least three incoming links from other pages in main space (you can help!); MOS tweaks &c.
Line 1: Line 1:
{{Orphan|date=March 2019}}

{{Infobox software
{{Infobox software
| name = Qiskit
| name = Qiskit
Line 9: Line 7:
| collapsible =
| collapsible =
| developer = [[IBM Research]], Qiskit community
| developer = [[IBM Research]], Qiskit community
| released = {{Start date and age|df=no|2017|03|07}}.<ref>{{cite web|url=https://medium.com/qiskit/qiskit-turns-one-looking-back-cbc2c48d7a95| title=Looking back on a year of Qiskit}}</ref>
| released = {{Start date and age|df=no|2017|03|07}}.<ref>{{cite web |url=https://medium.com/qiskit/qiskit-turns-one-looking-back-cbc2c48d7a95 |title=Looking back on a year of Qiskit}}</ref>
| latest release version = 0.7.0
| latest release version = 0.7.0
| latest release date = {{Start date and age|2018|12|19|df=yes}}<ref>{{cite web|url=https://github.com/Qiskit/qiskit-terra/releases | title=Releases – Qiskit Terra}}</ref>
| latest release date = {{Start date and age|2018|12|19|df=yes}}<ref>{{cite web |url=https://github.com/Qiskit/qiskit-terra/releases |title=Releases – Qiskit Terra}}</ref>
| discontinued =
| discontinued =
| programming language = [[Python (programming language)|Python]], [[Swift (programming language)|Swift]], [[Java (programming language)|Java]]
| programming language = [[Python (programming language)|Python]], [[Swift (programming language)|Swift]], [[Java (programming language)|Java]]
Line 17: Line 15:
| platform =
| platform =
| size =
| size =
| language =
| genre = [[Quantum programming|Quantum Computing]]
| genre = [[Quantum programming|Quantum Computing]]
| license = [https://github.com/Qiskit/qiskit-terra/blob/master/LICENSE.txt Apache license]
| license = [https://github.com/Qiskit/qiskit-terra/blob/master/LICENSE.txt Apache license]
Line 25: Line 22:
'''Qiskit''' is an [[open-source]] [[Software framework|framework]] for [[quantum computing]]. It provides tools for creating and manipulating [[Quantum circuit|quantum programs]] and running them on prototype quantum devices and simulators. It follows the [[Quantum circuit|circuit model]] for [[Quantum Turing machine|universal quantum computation]], and can be used for any [[Qubit#Physical implementations|quantum hardware]] that follows this model.
'''Qiskit''' is an [[open-source]] [[Software framework|framework]] for [[quantum computing]]. It provides tools for creating and manipulating [[Quantum circuit|quantum programs]] and running them on prototype quantum devices and simulators. It follows the [[Quantum circuit|circuit model]] for [[Quantum Turing machine|universal quantum computation]], and can be used for any [[Qubit#Physical implementations|quantum hardware]] that follows this model.


Qiskit was founded by [[IBM Research]] to allow software development for their [[Cloud-based quantum computing|cloud quantum computing]] service.<ref>{{cite web |title=What is Qiskit, IBM's open source quantum computing framework |url=https://www.computerworlduk.com/open-source/inside-qiskit-ibms-open-source-quantum-computing-framework-3682891/ |website=Computerworld UK |accessdate=11 December 2018}}</ref><ref>{{cite web |title=QISKit Developments Key to IBM Quantum Engagement |url=https://www.nextplatform.com/2018/08/07/qiskit-developments-key-to-ibm-quantum-engagement/ |website=The Next Platform |accessdate=11 December 2018}}</ref> Contributions are also made by external supporters, typically from academic institutions.<ref>{{cite web|url=https://qiskit.org | title=Qiskit website}}</ref>
Qiskit was founded by [[IBM Research]] to allow software development for their [[Cloud-based quantum computing|cloud quantum computing]] service.<ref>{{cite web |title=What is Qiskit, IBM's open source quantum computing framework |url=https://www.computerworlduk.com/open-source/inside-qiskit-ibms-open-source-quantum-computing-framework-3682891/ |website=Computerworld UK |accessdate=11 December 2018}}</ref><ref>{{cite web |title=QISKit Developments Key to IBM Quantum Engagement |url=https://www.nextplatform.com/2018/08/07/qiskit-developments-key-to-ibm-quantum-engagement/ |website=The Next Platform |accessdate=11 December 2018}}</ref> Contributions are also made by external supporters, typically from academic institutions.<ref>{{cite web |url=https://qiskit.org |title=Qiskit website}}</ref>


The primary version of Qiskit uses the [[Python (programming language)|Python]] programming language. Versions for [[Swift (programming language)|Swift]] and [[Java (programming language)|Java]] are also available. These are used to create quantum programs based on the [[OpenQASM]] representation of quantum circuits.
The primary version of Qiskit uses the [[Python (programming language)|Python]] programming language. Versions for [[Swift (programming language)|Swift]] and [[Java (programming language)|Java]] are also available. These are used to create quantum programs based on the [[OpenQASM]] representation of quantum circuits.


A range of [[Project Jupyter#Jupyter Notebook|Jupyter notebooks]] are provided with examples of quantum computing being used.<ref>{{cite web|url=https://github.com/Qiskit/qiskit-tutorial/ | title=Qiskit Tutorial}}</ref> Examples include the source code behind scientific studies that use Qiskit,<ref>{{cite web|url=https://www.ibm.com/blogs/research/2018/03/ibmq-published-research/ | title=Celebrating the IBM Q Experience community, and their research}}</ref> as well as a set of exercises to help people to learn the basics of quantum programming.<ref>{{cite web|url=https://github.com/Qiskit/qiskit-tutorial/blob/master/community/games/Hello_Qiskit.ipynb | title=Hello Qiskit}}</ref>
A range of [[Project Jupyter#Jupyter Notebook|Jupyter notebooks]] are provided with examples of quantum computing being used.<ref>{{cite web |url=https://github.com/Qiskit/qiskit-tutorial/ |title=Qiskit Tutorial}}</ref> Examples include the source code behind scientific studies that use Qiskit,<ref>{{cite web |url=https://www.ibm.com/blogs/research/2018/03/ibmq-published-research/ |title=Celebrating the IBM Q Experience community, and their research}}</ref> as well as a set of exercises to help people to learn the basics of quantum programming.<ref>{{cite web |url=https://github.com/Qiskit/qiskit-tutorial/blob/master/community/games/Hello_Qiskit.ipynb |title=Hello Qiskit}}</ref>


==Components==
== 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.<ref name="medium">{{cite web |title=Qiskit and its Fundamental Elements |url=https://medium.com/qiskit/qiskit-and-its-fundamental-elements-bcd7ead80492 |accessdate=10 January 2019}}</ref>
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.<ref name="medium">{{cite web |title=Qiskit and its Fundamental Elements |url=https://medium.com/qiskit/qiskit-and-its-fundamental-elements-bcd7ead80492 |accessdate=10 January 2019}}</ref>


===Terra===
=== Terra ===
Qiskit Terra provides tools to create [[quantum circuit]]s at or close to the level of quantum [[machine code]].<ref>{{cite web|url=https://qiskit.org/Terra | title=Qiskit Terra website}}</ref> It allows the processes that run on quantum hardware to be explicitly constructed in terms of [[Quantum logic gate|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.
Qiskit Terra provides tools to create [[quantum circuit]]s at or close to the level of quantum [[machine code]].<ref>{{cite web |url=https://qiskit.org/Terra |title=Qiskit Terra website}}</ref> It allows the processes that run on quantum hardware to be explicitly constructed in terms of [[Quantum logic gate|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 [[qubit]]s, which consists of the [[Quantum logic gate|quantum gates]] required to create a [[Bell state]]. The quantum circuit then ends with [[Measurement in quantum mechanics|quantum measurements]], which extract a [[bit]] from each qubit.
The following shows a simple example of Qiskit Terra. In this, a quantum circuit is created for two [[qubit]]s, which consists of the [[Quantum logic gate|quantum gates]] required to create a [[Bell state]]. The quantum circuit then ends with [[Measurement in quantum mechanics|quantum measurements]], which extract a [[bit]] from each qubit.


<source lang="numpy">
<syntaxhighlight lang="numpy">


from qiskit import QuantumRegister, ClassicalRegister
from qiskit import QuantumRegister, ClassicalRegister
Line 53: Line 50:
qc.measure(q, c)
qc.measure(q, c)


</syntaxhighlight>
</source>


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.
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.


<source lang="numpy">
<syntaxhighlight lang="numpy">
backend = Aer.get_backend('qasm_simulator')
backend = Aer.get_backend('qasm_simulator')
job_sim = execute(qc, backend)
job_sim = execute(qc, backend)
sim_result = job_sim.result()
sim_result = job_sim.result()
print(sim_result.get_counts(qc))
print(sim_result.get_counts(qc))
</syntaxhighlight>
</source>


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 <code>'00'</code> and <code>'11'</code> 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 <code> {'00':519, '11':505} </code>.
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 <code>'00'</code> and <code>'11'</code> 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 <code> {'00':519, '11':505} </code>.


Experiments done on quantum hardware using Qiskit Terra have been used in many research papers,<ref>{{cite web |title=Community papers |url=https://quantumexperience.ng.bluemix.net/qx/community?channel=papers&category=community |website=IBM Q Experience}}</ref> such as in tests of quantum error correction <ref name="WoottonLoss2018">{{cite journal|last1=Wootton|first1=James R.|last2=Loss|first2=Daniel|title=Repetition code of 15 qubits|journal=Physical Review A|volume=97|issue=5|year=2018|issn=2469-9926|doi=10.1103/PhysRevA.97.052313}}</ref>
Experiments done on quantum hardware using Qiskit Terra have been used in many research papers,<ref>{{cite web |title=Community papers |url=https://quantumexperience.ng.bluemix.net/qx/community?channel=papers&category=community |website=IBM Q Experience}}</ref> such as in tests of quantum error correction<ref name="WoottonLoss2018">{{cite journal |last1=Wootton |first1=James R. |last2=Loss |first2=Daniel |title=Repetition code of 15 qubits |journal=Physical Review A |volume=97 |issue=5 |year=2018 |issn=2469-9926 |doi=10.1103/PhysRevA.97.052313}}</ref>
,<ref name="RoffeHeadley2018">{{cite journal|last1=Roffe|first1=Joschka|last2=Headley|first2=David|last3=Chancellor|first3=Nicholas|last4=Horsman|first4=Dominic|last5=Kendon|first5=Viv|title=Protecting quantum memories using coherent parity check codes|journal=Quantum Science and Technology|volume=3|issue=3|year=2018|pages=035010|issn=2058-9565|doi=10.1088/2058-9565/aac64e}}</ref> generation of entanglement <ref name="WangLi2018">{{cite journal|last1=Wang|first1=Yuanhao|last2=Li|first2=Ying|last3=Yin|first3=Zhang-qi|last4=Zeng|first4=Bei|title=16-qubit IBM universal quantum computer can be fully entangled|journal=npj Quantum Information|volume=4|issue=1|year=2018|issn=2056-6387|doi=10.1038/s41534-018-0095-x}}</ref> and simulation of far-from-equilibrium dynamics<ref name="ZhukovRemizov2018">{{cite journal|last1=Zhukov|first1=A. A.|last2=Remizov|first2=S. V.|last3=Pogosov|first3=W. V.|last4=Lozovik|first4=Yu. E.|title=Algorithmic simulation of far-from-equilibrium dynamics using quantum computer|journal=Quantum Information Processing|volume=17|issue=9|year=2018|issn=1570-0755|doi=10.1007/s11128-018-2002-y}}</ref>
,<ref name="RoffeHeadley2018">{{cite journal |last1=Roffe |first1=Joschka |last2=Headley |first2=David |last3=Chancellor |first3=Nicholas |last4=Horsman |first4=Dominic |last5=Kendon |first5=Viv |title=Protecting quantum memories using coherent parity check codes |journal=Quantum Science and Technology |volume=3 |issue=3 |year=2018 |pages=035010 |issn=2058-9565 |doi=10.1088/2058-9565/aac64e}}</ref> generation of entanglement<ref name="WangLi2018">{{cite journal |last1=Wang |first1=Yuanhao |last2=Li |first2=Ying |last3=Yin |first3=Zhang-qi |last4=Zeng |first4=Bei |title=16-qubit IBM universal quantum computer can be fully entangled |journal=npj Quantum Information |volume=4 |issue=1 |year=2018 |issn=2056-6387 |doi=10.1038/s41534-018-0095-x}}</ref> and simulation of far-from-equilibrium dynamics<ref name="ZhukovRemizov2018">{{cite journal |last1=Zhukov |first1=A. A. |last2=Remizov |first2=S. V. |last3=Pogosov |first3=W. V. |last4=Lozovik |first4=Yu. E. |title=Algorithmic simulation of far-from-equilibrium dynamics using quantum computer |journal=Quantum Information Processing |volume=17 |issue=9 |year=2018 |issn=1570-0755 |doi=10.1007/s11128-018-2002-y}}</ref>
.
.


===Aqua===
=== Aqua ===


Qiskit Aqua provides tools that can be used without any explicit quantum programming required by the user themselves.<ref>{{cite web|url=https://qiskit.org/Aqua | title=Qiskit Aqua website}}</ref> 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]].
Qiskit Aqua provides tools that can be used without any explicit quantum programming required by the user themselves.<ref>{{cite web |url=https://qiskit.org/Aqua |title=Qiskit Aqua website}}</ref> 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===
=== 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 [[Supercomputer|HPC]] resources available through the cloud.<ref>{{cite web|url=https://www.ibm.com/blogs/research/2018/05/quantum-circuits/ | title=An Open High-Performance Simulator for Quantum Circuits}}</ref> The simulators can also simulate the effects of noise for simple and sophisticated noise models <ref>{{cite web|url=https://medium.com/qiskit/qiskit-aer-d09d0fac7759 | title=Introducing Qiskit Aer: A high performance simulator framework for quantum circuits}}</ref>
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 [[Supercomputer|HPC]] resources available through the cloud.<ref>{{cite web |url=https://www.ibm.com/blogs/research/2018/05/quantum-circuits/ |title=An Open High-Performance Simulator for Quantum Circuits}}</ref> The simulators can also simulate the effects of noise for simple and sophisticated noise models<ref>{{cite web |url=https://medium.com/qiskit/qiskit-aer-d09d0fac7759 |title=Introducing Qiskit Aer: A high performance simulator framework for quantum circuits}}</ref>


===Ignis===
=== Ignis ===


Ignis is a planned component that will contain tools for characterizing noise in near-term devices, as well as allowing computations to be performed in the presence of noise. This is expected to include tools for benchmarking near-term devices, error mitigation and error correction, some of which are currently a part of Terra.<ref name="medium" />
Ignis is a planned component that will contain tools for characterizing noise in near-term devices, as well as allowing computations to be performed in the presence of noise. This is expected to include tools for benchmarking near-term devices, error mitigation and error correction, some of which are currently a part of Terra.<ref name="medium" />


== References ==
== References ==
<!-- Inline citations added to your article will automatically display here. See https://en.wikipedia.org/wiki/WP:REFB for instructions on how to add citations. -->
{{reflist}}
{{reflist}}



Revision as of 05:38, 2 April 2019

Qiskit
Developer(s)IBM Research, Qiskit community
Initial releaseMarch 7, 2017; 7 years ago (2017-03-07).[1]
Stable release
0.7.0 / 19 December 2018; 5 years ago (2018-12-19)[2]
Repository
Written inPython, Swift, Java
Operating systemCross-platform
TypeQuantum Computing
LicenseApache license
Websiteqiskit.org

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 and simulators. It follows the circuit model for universal quantum computation, and can be used for any quantum hardware that follows this model.

Qiskit was founded by IBM Research to allow software development for their cloud quantum computing service.[3][4] Contributions are also made by external supporters, typically from academic institutions.[5]

The primary version of Qiskit uses the Python programming language. Versions for Swift and Java are also available. 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.[6] Examples include the source code behind scientific studies that use Qiskit,[7] as well as a set of exercises to help people to learn the basics of quantum programming.[8]

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.[9]

Terra

Qiskit Terra provides tools to create quantum circuits at or close to the level of quantum machine code.[10] 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 QuantumRegister, ClassicalRegister
from qiskit import QuantumCircuit, Aer, execute

q = QuantumRegister(2)
c = ClassicalRegister(2)
qc = QuantumCircuit(q, c)

qc.h(q[0])
qc.cx(q[0], q[1])
qc.measure(q, c)

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,[11] such as in tests of quantum error correction[12] ,[13] generation of entanglement[14] and simulation of far-from-equilibrium dynamics[15] .

Aqua

Qiskit Aqua provides tools that can be used without any explicit quantum programming required by the user themselves.[16] 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.[17] The simulators can also simulate the effects of noise for simple and sophisticated noise models[18]

Ignis

Ignis is a planned component that will contain tools for characterizing noise in near-term devices, as well as allowing computations to be performed in the presence of noise. This is expected to include tools for benchmarking near-term devices, error mitigation and error correction, some of which are currently a part of Terra.[9]

References

  1. ^ "Looking back on a year of Qiskit".
  2. ^ "Releases – Qiskit Terra".
  3. ^ "What is Qiskit, IBM's open source quantum computing framework". Computerworld UK. Retrieved 11 December 2018.
  4. ^ "QISKit Developments Key to IBM Quantum Engagement". The Next Platform. Retrieved 11 December 2018.
  5. ^ "Qiskit website".
  6. ^ "Qiskit Tutorial".
  7. ^ "Celebrating the IBM Q Experience community, and their research".
  8. ^ "Hello Qiskit".
  9. ^ a b "Qiskit and its Fundamental Elements". Retrieved 10 January 2019.
  10. ^ "Qiskit Terra website".
  11. ^ "Community papers". IBM Q Experience.
  12. ^ Wootton, James R.; Loss, Daniel (2018). "Repetition code of 15 qubits". Physical Review A. 97 (5). doi:10.1103/PhysRevA.97.052313. ISSN 2469-9926.
  13. ^ 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. doi:10.1088/2058-9565/aac64e. ISSN 2058-9565.
  14. ^ 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.
  15. ^ 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). doi:10.1007/s11128-018-2002-y. ISSN 1570-0755.
  16. ^ "Qiskit Aqua website".
  17. ^ "An Open High-Performance Simulator for Quantum Circuits".
  18. ^ "Introducing Qiskit Aer: A high performance simulator framework for quantum circuits".