2. 量子计算栈与Benchmark对象
量子计算不是“一块芯片”的孤立性能问题,而是一条从应用意图到物理读出的完整栈。Benchmark 工程的第一件事,是把这条栈拆成可观测、可注入、可复现的层次,并明确每层的“被测对象”和“接口契约”。如果层次划分不清,测出来的数字往往无法归因:一个算法失败,可能是编译映射差、控制脉冲失真、硬件退相干、读出串扰,也可能是应用层问题建模本身有误。
六层栈的职责与可测对象
从上层到下层,量子计算栈通常可划分为:应用层、编译层、控制层、脉冲层、硬件层、读出层。注意读出层在物理上依附于硬件,但在 Benchmark 中必须独立成层,因为读出保真度、判别阈值和串扰会直接污染上层所有指标。
- 应用层:被测对象是量子线路/算法语义,如 QAOA 的代价哈密顿量、VQE 的拟设、量子傅里叶变换的输入态。可测指标包括线路深度、双比特门数量、期望值误差、成功概率。接口是“量子线路 IR + 测量基 + shots”。
- 编译层:被测对象是映射与优化策略,包括初始布局、SWAP 插入、门分解、路由。可测指标为编译后 CNOT 数、深度、映射保真度估计。接口是“逻辑线路 → 物理线路 + 布局表”。
- 控制层:被测对象是波形生成与调度,如 AWG 采样率、混频器本振、门时序对齐。可测指标为控制延迟、通道间偏斜、相位误差。接口是“物理门序列 → 模拟/数字波形”。
- 脉冲层:被测对象是具体脉冲包络,如 DRAG 参数、高斯宽度、微分系数。可测指标为单门保真度、泄漏率、脉冲面积误差。接口是“波形 → 微波/激光激励”。
- 硬件层:被测对象是量子比特与耦合器,如 T1、T2、读出频率、耦合强度。可测指标为相干时间、门错误率、串扰矩阵。接口是“物理激励 → 量子态演化”。
- 读出层:被测对象是测量链路,如谐振腔频率、放大链噪声、判别器。可测指标为读出保真度、QND 性、测量串扰。接口是“量子态 → 经典比特串”。
这六层不是简单串联,而是存在反馈:读出结果会用于校准脉冲,编译布局依赖硬件连通图,应用层指标又反过来约束编译策略。因此 Benchmark 必须区分“层内指标”和“端到端指标”。
接口契约:Benchmark 可复现的关键
每层之间的接口必须用机器可读的格式固定下来,否则同一份“量子线路”在不同工具链上会得到不同物理线路,指标不可比。以超导平台为例,一个可用的接口契约至少包含:
- 应用→编译:逻辑线路(OpenQASM 3 或 QIR)、测量基、shots、优化等级。
- 编译→控制:物理线路、量子比特映射表、门时序约束(如“CNOT 仅允许 0-1、2-3”)。
- 控制→脉冲:通道编号、采样率、本振频率、脉冲包络参数、对齐方式。
- 脉冲→硬件:微波/激光功率、相位、持续时间、触发同步信号。
- 硬件→读出:读出频率、积分窗口、判别阈值、分类器模型。
接口一旦固定,Benchmark 就可以做“单层替换”:保持其他层不变,只替换编译策略或脉冲参数,观察端到端指标变化,从而定位瓶颈层。
端到端性能瓶颈的识别方法
端到端指标通常包括:算法成功率、期望值误差、线路执行时间、总 shots 消耗。瓶颈识别的基本方法是误差预算分解:把端到端误差拆成各层贡献,再比较哪一层占比最大。
例如,一个 4 比特 QAOA 示例(以下为教学假设参数,非实测):目标期望值误差 ≤ 0.05。分解后得到:读出误差贡献 0.018,双比特门错误贡献 0.022,编译 SWAP 引入的额外门贡献 0.009,控制相位偏斜贡献 0.004。此时瓶颈在“双比特门错误”和“读出误差”,应优先优化脉冲层和读出层,而不是继续调编译。
具体操作上,可以按以下顺序做分层扫描:
- 读出层标定:用 |0⟩ 和 |1⟩ 各 10000 shots,统计判别错误率,得到读出保真度 F_readout。若 F_readout < 0.97,先修读出。
- 硬件层标定:测 T1、T2、单比特随机基准(RB)、双比特 RB。若双比特 RB 错误率 > 1%,优先调脉冲。
- 脉冲层扫描:固定硬件,扫描 DRAG 系数 β 从 -0.5 到 0.5,观察泄漏率与门保真度,选最优 β。
- 编译层对比:固定物理线路深度,比较不同初始布局的 CNOT 数,选最小者。
- 应用层回归:在以上优化后重跑端到端任务,确认期望值误差是否达标。
一个可复用的分层 Benchmark 记录表
下表给出一个最小可用的记录结构,字段直接对应六层对象,便于在实验中逐层填写。示例值仍为教学假设。
| 层次 | 被测对象 | 关键参数/指标 | 示例值 | 判定阈值 |
|---|---|---|---|---|
| 应用层 | QAOA 线路 | 期望值误差 | 0.043 | ≤ 0.05 |
| 编译层 | 映射+路由 | CNOT 数 / 深度 | 28 / 41 | ≤ 32 / ≤ 50 |
| 控制层 | AWG 通道 | 通道偏斜 | 12 ps | ≤ 20 ps |
| 脉冲层 | DRAG 脉冲 | 单门保真度 | 99.82% | ≥ 99.7% |
| 硬件层 | Transmon | T1 / T2 | 68 μs / 92 μs | ≥ 50 μs / ≥ 70 μs |
| 读出层 | 谐振腔+判别器 | 读出保真度 | 97.6% | ≥ 97% |
这张表的价值在于:当端到端指标不达标时,可以逐行检查哪一层越界。若所有层都达标但端到端仍失败,则问题通常出在接口失配或反馈延迟,而不是单层性能。
常见误区与工程建议
第一个误区是“只测硬件层”。T1、T2 好不代表算法成功率高,因为编译和读出可能吃掉大部分预算。第二个误区是“忽略读出层”。读出保真度低于 97% 时,任何上层优化都会被测量噪声淹没。第三个误区是“接口不固定”。同一线路在不同编译版本下 CNOT 数可能差 30% 以上,导致 Benchmark 不可比。
工程建议:先固定接口契约,再逐层标定,最后做端到端回归。每层保留原始数据(波形、标定曲线、判别阈值),并在报告中标注版本号。这样,当硬件或软件升级时,可以快速定位是“哪一层变了”导致端到端指标波动。
总结来说,量子计算栈的 Benchmark 对象不是单一指标,而是六层对象、五组接口和一条端到端误差预算。只有把每层的可测对象、接口格式和瓶颈判据都定义清楚,后续的基准测试、对比和优化才有可复现的基础。