“跑一遍编译器”这句话里藏着一个没说清的前提:编译器的目标门集决定了哪些指标在编译后还看得见。编译到 Clifford+T, 还在;编译到硬件原生门,非 Clifford 门被摊成旋转, 当场消失。算术线路恰恰对这个差别最敏感。本词条先拆层,再比较各家工具的抽象风格,最后说明为什么”导出现成实现核对门数”是最现实的校验路径。
一、先决定你要保留哪个指标
算术线路一旦被分解到硬件原生门,账本里的 与相对相位门比例就都读不出来——任何”编译器把 降了多少”的比较,都必须声明编译停在 Clifford+T 这一层(见基准套件的口径清单)。
二、工具链的分层
| 层 | 做什么 | 对算术线路 | 改动账本的哪一项 |
|---|---|---|---|
| 算术宏门层 | 表达”加一次、乘一次” | 这是设计成果 | 、、 全在此定下 |
| 逻辑门集层(Clifford+T) | 宏门 → Clifford + T | 必需 | 只补 CNOT 与旋转, 不变 |
| 门综合 / 分解层 | 多控门 → Toffoli → 7 T 之类 | 必需 | 在此锁死(Toffoli 分解没有自由度) |
| 硬件原生门 + 路由 | 迁到连接图,插入 SWAP 与调度 | 可选 | 线路规模与 SWAP 数暴涨, 不变 |
| 脉冲 / 时序 | 变成驱动波形 | 与算术资源无关 | 不改账本,只改时间 |
ProjectQ 把这套结构做成了可插拔的公开形态:编译器框架、面向多类硬件的后端、线路绘制与资源估计插件,以及供第三方提供的编译/优化/门综合/布局策略插件。“优化”是插件,作用对象是编译器当前持有的那份门列表——这是线路优化前三条论证的机制来源。
三、各家工具的抽象风格
取材说明
| 工具 | 抽象风格 | 算术线路怎么写 | 产出 | 短板 |
|---|---|---|---|---|
| Qiskit | 门级电路对象 + 上层算术构造 + 硬件后端 | 实例化库里的算术门(如 CDKMRippleAdder),或用位运算手拼 | 门列表、QASM,可接模拟器与真机 | 库实现的寄存器约定未必与论文一致 |
| Cirq | 门级 + moment 抽象,面向调度 | 手工构造,用矩组织 | 矩序列 | 不自带”加法器”这一层的算术语义 |
t|ket> | 寄存器 / 程序语言:量子整数与整数寄存器 | 把加法写成对寄存器的语句 | 编译期算出的 T 数与门数 | 算术语义在语言层,pass 看不到 MAJ/UMA |
| pyzx | 图表示(ZX 图) | 构造蜘蛛图或从门列表翻译 | 化简后的图,可译回线路 | 只覆盖 ZX 可表达的部分;非 Clifford 门密集处收益有限 |
| RevKit | 可逆线路:真值表 / 排列 → NOT/CNOT/Toffoli 网络 | 输入真值表或逻辑网络,走变换式/分解式可逆综合(QRC014) | 可逆网络及其成本报告 | 2012 年后停止演进;成本口径是 Toffoli/CNOT 数,不是 T 数 |
| Quirk | 浏览器交互拖拽 | 拖 | 交互式输出比特分布 | 几十比特就到顶,且不产出任何资源账本 |
这张表最有用的一列是”算术线路怎么写”:它决定工具能否看见算术结构。能看见的(Qiskit 宏门、t\|ket> 寄存器语义)适合资源核对;看不见的(Cirq、Quirk)适合画图与调试;pyzx 属第三条路——改的是表示而不是线路。
四、为什么”导出一个现成实现来核对”是现实路径
- 成本不对称。 核对是一次运行、秒级、可复现的;验证”编译器省了多少”需要统一口径,而 MQT Bench 指出的正是这个口径尚不存在。
- 库实现是独立来源。 它不是从论文推导出来的,导出它就得到一份与手推无关的门数——抓出手算错误最省事的办法。
- 它是上界参考,不是竞争者。 库实现追求可读与正确,不追求最优 。它给出的数字是应当被超越的起点;拿论文数字与它比,是为了确认”确实更省”,不是为了赢一个工具。
- 口径公开且固定。 读源码就知道寄存器宽度、进位线数量、有没有回零——不需要猜。
导出之后必须先对齐四件事,否则数字不可比:
| 对齐项 | 不对齐的后果 |
|---|---|
| 寄存器宽度与线序约定 | 就地加法与异地加法不可比 |
| 辅助位用完是否回零 | 库版本常少算一整段反计算 |
| 多控门分解到 Toffoli 还是 CNOT + 合成 | 差一个量级 |
| 有没有做相对相位门替换 | 有则 直接减半 |
核对顺序:先在逻辑门集层读 与 ,再对照论文的寄存器约定,最后才在 IR 上逐门比对(见统一量子线路表示)。
论文依据
- Steiger 等 2018,ProjectQ —— 公开了本词条第二节那套分层:编译器框架、面向多类硬件的后端、线路绘制与资源估计插件,以及供第三方提供的编译/优化/门综合/布局策略插件。是”工具链分几层、优化是可插拔 pass”的出处。
- Quetschlich 等 2023,MQT Bench —— 指出面向具体设计任务的基准虽有,但跨层级统一基准套件需求尚未被满足、工具评测方式缺乏整合;这是第四节第 1 条的依据,也是它把跨层级支持列为四条核心设计原则之一的原因。
- Gidney 2021,Stim —— 15 秒完成距离 100 表面码线路(2 万物理比特、800 万门、100 万次测量)的分析,是”核对是秒级”的规模锚点。
- Fowler 等 2012,Surface codes —— 逻辑比特的形成与在阵列上搬移的成本算在码距与排布上,说明工具链最末端的代价由目标架构决定,不由 pass 决定。
- Reinhold 等 2020,Error-corrected gates on an encoded qubit —— 一个非 Clifford 门的实现最终依赖具体硬件机制(腔编码逻辑比特上的多能级辅助量子比特)与辅助位错误的实时探测修正:最后一里不是编译问题,任何 pass 都造不出它。