跳转到主要内容

Aer - 为Qiskit提供高性能模拟器

项目描述

Aer - 高性能Qiskit量子电路模拟

License Build Tests

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文件进行引用。

许可证

Apache License 2.0

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

此版本没有可用的源代码分发文件。请参阅生成分发存档的教程。

构建分发

qiskit_aer_gpu_cu11-0.15.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.0 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ x86_64

qiskit_aer_gpu_cu11-0.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.0 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

qiskit_aer_gpu_cu11-0.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.0 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

qiskit_aer_gpu_cu11-0.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.0 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

qiskit_aer_gpu_cu11-0.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.0 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面