Qiskit

cuQuantum Appliance 包含 Qiskit 和 cusvaer。 cusvaer 无缝集成到 Qiskit Aer 中,使用户能够通过 Qiskit Aer 运行多节点模拟,而无需对其源代码进行任何修改。

有关 cusvaer 后端求解器的详细信息,请参阅 cusvaer

入门指南

以下 Python 脚本是运行 Greenberger-Horne-Zeilinger (GHZ) 电路的示例。

from qiskit import QuantumCircuit, transpile
from qiskit_aer import Aer

def create_ghz_circuit(n_qubits):
    circuit = QuantumCircuit(n_qubits)
    circuit.h(0)
    for qubit in range(n_qubits - 1):
        circuit.cx(qubit, qubit + 1)
    return circuit

simulator = Aer.get_backend('aer_simulator_statevector')
circuit = create_ghz_circuit(n_qubits=20)
circuit.measure_all()
circuit = transpile(circuit, simulator)
job = simulator.run(circuit)
result = job.result()

print(result.get_counts())
print(f'backend: {result.backend_name}')

此脚本适用于 Qiskit Aer。当脚本在当前版本的 cuQuantum Appliance 中执行时,将自动选择多节点后端并运行模拟。后端名称为 "cusvaer_simulator_statevector"

$ python ghz.py
{'00000000000000000000': 493, '11111111111111111111': 531}
backend: cusvaer_simulator_statevector

通过使用 mpirun 启动脚本,模拟将分布到多个进程。在以下示例中,使用两个进程进行模拟,结果将输出两次。

$ mpirun -n 2 python ghz.py
{'00000000000000000000': 536, '11111111111111111111': 488}
cusvaer_simulator_statevector
{'00000000000000000000': 536, '11111111111111111111': 488}
cusvaer_simulator_statevector

通过添加下面显示的行,将选择 mpi_rank == 0 的进程来输出结果。

if result.mpi_rank == 0:
    print(result.get_counts())
    print(f'backend: {result.backend_name}')
$ mpirun -n 2 python ghz.py
{'00000000000000000000': 532, '11111111111111111111': 492}
cusvaer_simulator_statevector

注意

qiskit_aer.Aer 对象在 Qiskit 1.0 中可用。对于以前版本的 Qiskit,qiskit.Aer 的工作方式相同。

注意

此处使用 GHZ 电路作为示例,并不意味着演示性能。众所周知,当模拟分布到多个 GPU 和/或多个节点时,GHZ 电路太浅而无法显示良好的扩展性。

选择模拟器

当满足以下所有条件时,当前版本的 cuQuantum Appliance 中安装的 Qiskit Aer 扩展为实例化 cusvaer 后端求解器

cusvaer_enable == True

method == "statevector" or method == "automatic"

noise_model == None

cusvaer_enable 是 Qiskit Aer 的扩展,用于启用 cusvaer。默认值为 Truemethodnoise_model 是 Qiskit Aer 提供的选项。仅当 noise_model 选项为 None 时才选择 cusvaer,因为 cusvaer 的第一个版本不支持噪声模型。

cusvaer 特定选项

请参阅 cusvaer 选项

Qiskit Aer 选项的修改

下表显示了对 Qiskit Aer 的修改和添加的选项。

选项

描述

cusvaer_enable

如果设置为 True,则启用 cusvaer。否则,将使用 Qiskit Aer 模拟器。默认值设置为 True

device

默认值已更改为 "GPU"

cuStateVec_enable

默认值已更改为 True

与 mpi4py 的互操作性

mpi4py 可与 cusvaer 后端互操作。有关详细信息,请参阅 与 mpi4py 的互操作性

限制

当前发行版本有以下限制

  • 不支持噪声模型和噪声电路模拟。

  • 即使提供了 Qiskit Aer 的并行模拟选项(例如,batched_shots_gpubatched_shots_gpu_max_qubits),模拟也以串行方式执行。

  • 不支持单进程多 GPU 模拟。即使在单个节点中,用户也需要启动多个 MPI 进程。