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文件进行引用。
许可证
项目详情
qiskit_aer_gpu_cu11-0.15.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9a8536d8905bf653ae599caa06d9be969b407e99608ea4b3c118399aa9a73a82 |
|
MD5 | da32236cc6e6dacc2e321432f798a87d |
|
BLAKE2b-256 | 8214fb27751686c342327db34b2d1c8b689ef5f928ca63f924a43279a59bfaec |
qiskit_aer_gpu_cu11-0.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | afeb5c3882af8a18dfd8eb2ee11ff124b2ec614b2f6643cb87771eb872158b6c |
|
MD5 | 3c63052167dd90f3f622bf2023622859 |
|
BLAKE2b-256 | dd0775a393f9db88d373d945fa74e5ad3d98257b14f09b8844c3686c00a07891 |
qiskit_aer_gpu_cu11-0.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 86c181613eb91f60d44e456b12ebe5a884c8097f7a098e4b565056694ae5017b |
|
MD5 | 83e4a5027982974d44c209a76fc34465 |
|
BLAKE2b-256 | 3773d12161827bd1649a84a9187f22babc6dfa8fe390d240593073e31b18f50c |
qiskit_aer_gpu_cu11-0.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f976151c4a942f99baf48705afbb85c949f73e3a55519324ec58a3cef2916a94 |
|
MD5 | d8554d1d25634b3176457f9faf9fdffa |
|
BLAKE2b-256 | 3378b33741c99f1fffe071a79ed7c75e25a03e882b7c1b8903ce568bc0ba9ef7 |
qiskit_aer_gpu_cu11-0.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | aa4e7a1a216ead4c860d99ffc8f6fc4be16b4d77ce376adbe3f040fc18fa375a |
|
MD5 | 1323dc240eb671287754db68a0367dbc |
|
BLAKE2b-256 | a9cd79abd2d1ac1b4eeb1312b4bd9f9f5ddf4061ad9b843d1ca2e6e246c6dccd |