Aer - 为Qiskit提供高性能模拟器
项目描述
Aer - 高性能量子电路模拟器,适用于Qiskit
Aer 是一个以Qiskit编写的量子电路高性能模拟器,包括现实的噪声模型。
安装
我们鼓励通过pip工具(一个Python包管理器)安装Aer
pip install qiskit-aer
Pip将自动为我们处理所有依赖项,您将始终安装最新(并且经过充分测试)的版本。
要从源安装,请遵循贡献指南中的说明。
安装GPU支持
为了在Linux上安装和运行支持GPU的模拟器,您需要先前安装CUDA® 11.2或更新的版本。CUDA®本身需要一套特定的GPU驱动程序。请按照NVIDIA®官网的CUDA®安装步骤进行安装。官网链接。
如果您想安装我们支持的GPU模拟器,您必须安装此其他软件包
pip install qiskit-aer-gpu
上述软件包是为CUDA® 12设计的,因此如果您的系统已安装CUDA® 11,请安装单独的软件包
pip install qiskit-aer-gpu-cu11
这将覆盖您当前的qiskit-aer
软件包安装,为您提供在规范qiskit-aer
软件包中找到的功能,以及运行GPU支持模拟器的功能:状态向量、密度矩阵和幺正算子。
注意:此软件包仅在x86_64 Linux上可用。对于其他具有CUDA支持的平台,您必须从源代码构建。有关如何操作的说明,请参阅贡献指南。
使用Aer模拟第一个Qiskit电路
现在您已经安装了Aer,您可以使用原语和噪声模型开始模拟量子电路。以下是一个基本示例
$ python
from qiskit import transpile
from qiskit.circuit.library import RealAmplitudes
from qiskit.quantum_info import SparsePauliOp
from qiskit_aer import AerSimulator
sim = AerSimulator()
# --------------------------
# Simulating using estimator
#---------------------------
from qiskit_aer.primitives import EstimatorV2
psi1 = transpile(RealAmplitudes(num_qubits=2, reps=2), sim, optimization_level=0)
psi2 = transpile(RealAmplitudes(num_qubits=2, reps=3), sim, optimization_level=0)
H1 = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)])
H2 = SparsePauliOp.from_list([("IZ", 1)])
H3 = SparsePauliOp.from_list([("ZI", 1), ("ZZ", 1)])
theta1 = [0, 1, 1, 2, 3, 5]
theta2 = [0, 1, 1, 2, 3, 5, 8, 13]
theta3 = [1, 2, 3, 4, 5, 6]
estimator = EstimatorV2()
# calculate [ [<psi1(theta1)|H1|psi1(theta1)>,
# <psi1(theta3)|H3|psi1(theta3)>],
# [<psi2(theta2)|H2|psi2(theta2)>] ]
job = estimator.run(
[
(psi1, [H1, H3], [theta1, theta3]),
(psi2, H2, theta2)
],
precision=0.01
)
result = job.result()
print(f"expectation values : psi1 = {result[0].data.evs}, psi2 = {result[1].data.evs}")
# --------------------------
# Simulating using sampler
# --------------------------
from qiskit_aer.primitives import SamplerV2
from qiskit import QuantumCircuit
# create a Bell circuit
bell = QuantumCircuit(2)
bell.h(0)
bell.cx(0, 1)
bell.measure_all()
# create two parameterized circuits
pqc = RealAmplitudes(num_qubits=2, reps=2)
pqc.measure_all()
pqc = transpile(pqc, sim, optimization_level=0)
pqc2 = RealAmplitudes(num_qubits=2, reps=3)
pqc2.measure_all()
pqc2 = transpile(pqc2, sim, optimization_level=0)
theta1 = [0, 1, 1, 2, 3, 5]
theta2 = [0, 1, 2, 3, 4, 5, 6, 7]
# initialization of the sampler
sampler = SamplerV2()
# collect 128 shots from the Bell circuit
job = sampler.run([bell], shots=128)
job_result = job.result()
print(f"counts for Bell circuit : {job_result[0].data.meas.get_counts()}")
# run a sampler job on the parameterized circuits
job2 = sampler.run([(pqc, theta1), (pqc2, theta2)])
job_result = job2.result()
print(f"counts for parameterized circuit : {job_result[0].data.meas.get_counts()}")
# --------------------------------------------------
# Simulating with noise model from actual hardware
# --------------------------------------------------
from qiskit_ibm_runtime import QiskitRuntimeService
provider = QiskitRuntimeService(channel='ibm_quantum', token="set your own token here")
backend = provider.get_backend("ibm_kyoto")
# create sampler from the actual backend
sampler = SamplerV2.from_backend(backend)
# run a sampler job on the parameterized circuits with noise model of the actual hardware
bell_t = transpile(bell, AerSimulator(basis_gates=["ecr", "id", "rz", "sx"]), optimization_level=0)
job3 = sampler.run([bell_t], shots=128)
job_result = job3.result()
print(f"counts for Bell circuit w/noise: {job_result[0].data.meas.get_counts()}")
贡献指南
如果您想为Aer做出贡献,请查看我们的贡献指南。本项目遵守Qiskit的行为准则。通过参与,您应遵守此准则。
我们使用GitHub问题来跟踪请求和错误。请使用我们的Slack进行讨论和简单问题。要加入我们的Slack社区,请使用链接。对于更适合论坛的问题,我们使用Stack Exchange的Qiskit标签。
下一步
现在您已经设置好了,可以查看Aer文档中的其他示例。
作者和引用
Aer是许多人的工作成果,他们以不同级别为该项目做出贡献。如果您使用Qiskit,请根据包含的BibTeX文件进行引用。
许可证
项目详情
哈希值 for qiskit_aer_gpu-0.15.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5b65d98386a703a3ec351ee343169f66072179e92dd61bbf3a035912465bb924 |
|
MD5 | 08d2a008ad73186a7f1665cd01d33040 |
|
BLAKE2b-256 | 7fc164a33ea3ec3f7ceae2bdd5181e4d021f12750d4559767157ebd56399a78f |
哈希值 for qiskit_aer_gpu-0.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | da4819ae20f391625e84e1aed55f8d361891699e87d36a07cec76ddd4c3a8eb7 |
|
MD5 | 4342ffcb3ae779f9a4f90624eef13467 |
|
BLAKE2b-256 | af0d9504b5083282d3d5c5a101eb30d7e68efd651797beef7afdab184562ea18 |
哈希值 for qiskit_aer_gpu-0.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f5bf7924c088c6fc2930435318b8cdd63ff7438cae182ee9992227957e4a0e9d |
|
MD5 | f79d74157e74caba2f288b02385b144d |
|
BLAKE2b-256 | 2b804e9db284573a513fad9159da14c3e6b1d28b7c333df41200db21dfe5d8c3 |
哈希值 for qiskit_aer_gpu-0.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f3e3baa65a805036ba580d6ed7c0ff5e38a6b8ac9c9079dd1d26158534a50938 |
|
MD5 | c568d5af662305cebda8171baaccbd2b |
|
BLAKE2b-256 | 1d6f1466e106321c63bc955447cd4d5dd2b4e5fde35ea3f8ff26b8e078c13a6b |
哈希值 for qiskit_aer_gpu-0.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 91cf40d84c4913f695701d9bb513aae4ecbc90225cce486a65095ef5bcabf78c |
|
MD5 | dccedd396b02d9d97f3e3ad4136f202f |
|
BLAKE2b-256 | 6a761a422cd52f0b89f5a053249c26a5859b5a49dfdfcb690393c45a7fce7020 |