本地模拟 {#guide-simulation}#
什么时候进入本页 {#guide-simulation-when-to-read}#
当你已经有一条线路,想在本地验证结果、查看概率分布、做多次采样,或比较不同模拟后端时,进入本页。
本页解决的核心问题是:如何把已经写好的线路跑起来,并根据目标选择合适的模拟方式与后端。
本页解决的问题 {#guide-simulation-problems}#
如何把已有线路送入模拟器
如何查看概率测量、状态向量、多次采样等不同输出
如何区分 OriginIR、QASM、Opcode 等不同模拟入口
如何根据目标选择 statevector、density matrix、density matrix_qutip 等后端
如何在本地验证时识别已知限制与风险
前置条件#
阅读本页前,默认你已经完成以下至少一项:
已经会使用
Circuit构建基础线路已经拿到了
originir或qasm字符串已经完成 快速上手 中的最小示例
如果你还不清楚如何创建线路、添加量子门或导出线路格式,建议先阅读 构建量子线路。
推荐阅读顺序 {#guide-simulation-reading-order}#
建议按以下顺序阅读本页内容:
OriginIR 模拟器 — 先跑通最常见的本地模拟路径
概率测量 / 状态向量 / 多次采样 — 理解不同输出类型分别回答什么问题
QASM 模拟器 — 当你的输入是 OpenQASM 2.0 时使用
Opcode 模拟器 — 需要底层控制或特定后端时再进入
带噪声模拟 — 当你需要加入噪声模型时阅读
后端对比 — 根据验证目标选择不同后端
已知限制 — 在使用 density matrix 或复杂噪声路径前优先确认
本地模拟入口总览 {#guide-simulation-entry-overview}#
在 UnifiedQuantum 中,“本地模拟”指的是不提交远端任务、直接在当前环境运行线路并查看结果。常见入口可以先按输入格式与验证目标来分:
本地模拟入口 |
输入形式 |
适合先看什么问题 |
|---|---|---|
|
|
已经用 |
|
|
你的线路来自 OpenQASM 2.0,或准备沿着 QASM 路径与外部工具互操作 |
|
opcode 列表 |
需要更底层控制、特定后端或排查后端差异 |
|
|
想在本地模拟阶段加入噪声模型并观察结果变化 |
如果你还在决定线路该如何表达,先回到 构建量子线路;如果你已经完成本地验证,准备提交到云平台或真机执行,转到 提交任务。
OriginIR 模拟器 {#guide-simulation-originir}#
最常用的模拟器,直接模拟 OriginIR 格式的线路。
from uniqc.circuit_builder import Circuit
from uniqc.simulator import OriginIR_Simulator
circuit = Circuit()
circuit.h(0)
circuit.cnot(0, 1)
circuit.measure(0, 1)
sim = OriginIR_Simulator()
概率测量#
prob = sim.simulate_pmeasure(circuit.originir)
# 返回各测量结果的概率分布
状态向量#
sv = sim.simulate_statevector(circuit.originir)
# 返回状态向量
多次采样#
result = sim.simulate_shots(circuit.originir, shots=1000)
# 返回 1000 次采样的统计结果
QASM 模拟器 {#guide-simulation-qasm}#
模拟 OpenQASM 2.0 格式的线路。
from uniqc.simulator import QASM_Simulator
sim = QASM_Simulator()
prob = sim.simulate_pmeasure(qasm_str)
Opcode 模拟器与本地模拟后端 {#guide-simulation-opcode}#
底层模拟器,直接操作 opcode 列表。支持多后端:
statevector— 状态向量(无噪声)density_matrix— 密度矩阵(支持噪声)density_matrix_qutip— 基于 Qutip 的密度矩阵
from uniqc.simulator import OpcodeSimulator
sim = OpcodeSimulator(backend_type='statevector')
Opcode 的详细文档见 Opcode。
带噪声的本地模拟 {#guide-simulation-noisy}#
from uniqc.simulator import OriginIR_NoisySimulator
sim = OriginIR_NoisySimulator(
error_loader=my_error_loader,
readout_error={0: [0.01, 0.02], 1: [0.01, 0.02]}
)
prob = sim.simulate_pmeasure(circuit.originir)
噪声模型的详细配置见 噪声模拟。
后端对比#
后端 |
适用场景 |
噪声支持 |
性能 |
|---|---|---|---|
|
无噪声快速模拟,小规模线路(< 30 量子比特) |
❌ |
最快 |
|
含噪声模拟,双比特门为主 |
✅ |
较慢(内存 O(4^n)) |
|
复杂噪声模型,高精度需求 |
✅ |
较慢,依赖 Qutip |
选择建议:
一般无噪声模拟 →
uniqc.simulator.OriginIR_Simulator(基于 statevector)需要噪声模拟 →
uniqc.simulator.OriginIR_NoisySimulator(基于 density_matrix)复杂多比特噪声模型 →
density_matrix_qutip
已知限制 {#guide-simulation-known-limitations}#
statevector后端无法模拟噪声。多比特门(> 2)在 density matrix 后端支持有限。
API 参考#
完整的模拟器 API 见:
uniqc.simulator— 模拟器模块uniqc.simulator.OpcodeSimulatoruniqc.simulator.OriginIR_Simulatoruniqc.simulator.QASM_Simulator
下一步#
相关测试#
test_simulator.py:噪声模拟器单元测试test_random_OriginIR.py:随机回归测试(密度矩阵对比)test_random_QASM.py:随机回归测试(statevector/density matrix 对比)test_demos.py:示例端到端测试
详见 测试覆盖说明。