Qiskit是一个用于和 OpenQASM和 IBM Q experience (QX)协同工作的软件开发工具包(SDK)。
利用 Qiskit 来编写量子计算程序、编译、并且在一些终端上运行(实时在线量子处理器,在线模拟器,和本地模拟器)。 在在线后端, Qiskit 使用我们的 python API client 与 IBM Q experience建立连接。
我们使用 GitHub issues 来追踪需求和错误。详见 IBM Q experience community 中的提问和讨论。 如果您有意对 Qiskit 做出贡献,请参见我们的 contribution guidelines。
链接索引:
安装使用 Qiskit 需要 Python 3.5 版本及以上。 并且建议使用Jupyter Notebook 来参阅我们的教程。 因此我们推荐安装 Anaconda 3 开源Python 发行版本, 它包含了所有需要的安装包。 此外,如果有一些对量子信息的基本了解,在使用 Qiskit的时候会很有帮助。如果您是量子领域的新手,请参见我们的 User Guides!
我们鼓励您使用PIP 工具 (Python包管理工具)来安装 Qiskit:
pip install qiskit
PIP 会自动处理所有的依赖文件,并替您将它们更新到最新的(经过测试的)软件版本。 PIP 为以下平台预装有二进制版本:
- Linux x86_64
- Darwin
- Win64
如果您的运行平台不在以上的列表中,PIP 将会在安装的时候从安装源创建。这将需要预装 CMake 3.5 或更高的版本和至少一个由 CMake支持的开发环境。 如果在安装过程中 PIP 没能成功创建,不要担心,您最终还是会成功安装 Qiskit,只是可能不能使用一些高阶的功能。无论如何,我们还会提供一个不那么快捷的python备选方案。
我们建议采用python虚拟环境来提升运行体验。更多信息请参见 Environment Setup documentation 。
当SDK安装好了之后,我们可以开始使用Qiskit了。
我们可以试验一个量子电路的例子,它将在本地模拟器上运行。
这是一个产生叠加态的简单例子:
# Import the Qiskit SDK
import qiskit
# Create a Quantum Register called "qr" with 2 qubits
qr = qiskit.QuantumRegister("qr", 2)
# Create a Classical Register called "cr" with 2 bits
cr = qiskit.ClassicalRegister("cr", 2)
# Create a Quantum Circuit called involving "qr" and "cr"
qc = qiskit.QuantumCircuit(qr, cr)
# Add a H gate on the 0th qubit in "qr", putting this qubit in superposition.
qc.h(qr[0])
# Add a CX (CNOT) gate on control qubit 0 and target qubit 1, putting
# the qubits in a Bell state.
qc.cx(qr[0], qr[1])
# Add a Measure gate to see the state.
# (Omitting the index applies an operation on all qubits of the register(s))
qc.measure(qr, cr)
# Create a Quantum Program for execution
qp = qiskit.QuantumProgram()
# Add the circuit you created to it, and call it the "bell" circuit.
# (You can add multiple circuits to the same program, for batch execution)
qp.add_circuit("bell", qc)
# See a list of available local simulators
print("Local backends: ", qiskit.backends.discover_local_backends())
# Compile and run the Quantum Program on a simulator backend
sim_result = qp.execute("bell", backend='local_qasm_simulator', shots=1024, seed=1)
# Show the results
print("simulation: ", sim_result)
print(sim_result.get_counts("bell"))
在这个例子中,输出是(大约是由于随机波动):
COMPLETED
{'counts': {'00': 512, '11': 512}}
可以在 这里找到此例的脚本。
您也可以使用 Qiskit 在一个 真实的量子芯片上执行您的程序。 为此,您需要配置 SDK 来为您的 Quantum Experience Account使用证书:
- 建立一个 IBM Q experience 账号,如果您还没有的话。
- 在IBM Q experience网页上取得一个API 令牌: "
My Account
" > "Personal Access Token
"。这个API令牌将使您可以在IBM Q 体验后端上运行您的程序。 示例。 - 之后我们将创建一个新的文件叫
Qconfig.py
并在其中插入 API 令牌。此文件必须包含以下内容:
APItoken = 'MY_API_TOKEN'
config = {
'url': 'https://quantumexperience.ng.bluemix.net/api',
# The following should only be needed for IBM Q users.
'hub': 'MY_HUB',
'group': 'MY_GROUP',
'project': 'MY_PROJECT'
}
- 用您在第2步中获得的 API 令牌替换
'MY_API_TOKEN'
。 - 如果您有IBM Q 的相关访问权限,您仍需为您的hub、group、和project设置数值。可以通过填
config
的变量来将其设置为您 IBM Q 账户页面上的数值。
当 Qconfig.py
文件设置好了之后,您需要将其移动到与您的程序/教程在同一目录/文件夹下,这样它可以被调用使 QuantumProgram.set_api()
函数生效。例如:
from qiskit import QuantumProgram
import Qconfig
# Creating Programs create your first QuantumProgram object instance.
Q_program = QuantumProgram()
Q_program.set_api(Qconfig.APItoken, Qconfig.config["url"], verify=False,
hub=Qconfig.config["hub"],
group=Qconfig.config["group"],
project=Qconfig.config["project"])
更多详细信息请参见我们的 Qiskit documentation。
现在您已经设置好并准备好查看我们的 教程 库中的更多实例了。 首先选择 index tutorial 然后选择 ‘Getting Started’ example。 如果您已经有安装有 Jupyter Notebooks, 那么您可以复制和修改这些notebooks来创建您自己的实验。
如要将教程安装在 Qiskit SDK 中,请参见 安装详述。 完整的 SDK 文档请参见 doc directory 和 Qiskit 官网。
欲知更多有关如何使用 Qiskit、指导实例、和其他有用链接的信息,请见以下资源:
- 用户指南, 一个学习量子信息和计算的很好的入门资料
- 教程, 例如要学习notebooks,可以参见 index 和 ‘Getting Started’ Jupyter notebook
- OpenQASM, 可以找到更多有关QASM代码的信息和实例
- IBM Quantum Experience Composer, 一个与真实和模拟量子计算机交互的GUI
- QISkit Python API,一个在Python中使用IBM Quantum Experience 的API
Qiskit 最早是由IBM Research研究中心的 IBM-Q 团队的研究人员和开发人员开发的, 旨在提供一个与量子计算机配套的高水平的开发工具包。
欲知更多有关 Qiskit 和更广泛地有关量子计算的提问和讨论请访问 IBM Q experience community。 如果您有兴趣为 Qiskit 做出贡献,请参见我们的 contribution guidelines。
- Korean Translation, 基本的韩语指导。
Qiskit was originally authored by Luciano Bello, Jim Challenger, Andrew Cross, Ismael Faro, Jay Gambetta, Juan Gomez, Ali Javadi-Abhari, Paco Martin, Diego Moreda, Jesus Perez, Erick Winston and Chris Wood.
And continues to grow with the help and work of many people who contribute to the project at different levels.