框架调研笔记(第一阶段)

English · 简体中文

为审稿驱动的修订收集的工作笔记。每节末尾给出一句话结论,论文修改时不再需要回头查证。以下全部为 2026-10-02 收集的文档与论文层面证据,未做任何基准实测。"文档中未找到"指截至该日在公开文档(Qualtran 另含仓库目录结构)中未见,不涉及未发布代码。

Qrisp BlockEncoding 论文(arXiv:2604.18276)

书目信息(据 arXiv 摘要页):Matic Petrič 与 René Zander,《Block-encodings as programming abstractions: The Eclipse Qrisp BlockEncoding Interface》,2026 年,arXiv:2604.18276 [quant-ph],v1 于 2026-04-20,DOI 10.48550/arXiv.2604.18276。配套文档:Qrisp BlockEncoding 参考。

逐点对照 oracq:

  • 构造接口:BlockEncoding(alpha, ancillas, unitary, num_ops, is_hermitian),工厂方法 from_array、from_operator(QubitOperator/FermionicOperator)、from_lcu(带平衡二叉树 q_switch 的 PREP/SELECT)、from_projector、from_eye。辅助位以模板声明,算子形状在作用时动态确定。oracq 最接近的构造器是显式 Pauli 展开(matrix_pauli_encoding,≤ 5 比特)、projector 以及稀疏/低秩输入模型——oracq 没有稠密矩阵或物理算子构造器。

  • 代数:运算符重载 +/−(LCU)、标量 *(α → |c|·α)、@(乘积,α 可乘)、kron、dagger,另有 qubitization() 与 chebyshev(k)。这与 oracq 的块编码代数(linear_combination、product、scale、tensor、adjoint_be、qubitization_walk、chebyshev_block)直接对应,包括被跟踪的 α。

  • 矩阵反演:inv(eps, kappa, method={"QET","QSVT","GQSVT"}),声明复杂度 𝒪(κ² log(κ/ε)) = 𝒪(κ log(κ/ε)) 次多项式 × 𝒪(κ) 后选择重复;相位合成委托给内部求解器,未文档化度数上限或精度极限。oracq 的 qsvt_matrix_inversion 文档化度数守卫(40),且每次合成经往返自检。Qrisp 另有成品求解器(CKS、dalzell_inversion、lanczos_alg)以及 pseudo_inv、svt、poly、sim(t, N)。

  • 资源估计:resources(*operands) 返回一次编码幺正执行的门计数、深度与比特数,构建在 Jasp 追踪上;整程序计数用 @count_ops。oracq 的 estimate_resources 不执行任何内容,输出容错资源台账(Toffoli/Clifford+T 原子、待合成旋转、QRAM 查询/写入、逐 oracle 调用计数、开放槽位的不完整标记)。

  • 执行:Qrisp 的 BE 可直接运行(apply、apply_rus、expectation_value)并集成 JAX;oracq 把生成与执行分离,经独立执行器路径读出。

oracq 仍独有的差异:带"已声明未绑定"oracle 与 checked late binding 的持久化开放程序;具名运行时 QRAM 资源;带结构化 issue 的静态契约检查;Python 公式到可逆线路的编译器。一句话结论:Qrisp BlockEncoding 接口是组件与分析层的直接对照——同样跟踪 α 的代数、反演与资源查询——差异在持久化开放程序工作流及其周围的科学约定与 QRAM 捕获。

Qualtran 与 Catalyst 证据核对

用于收紧相关工作措辞。来源:Qualtran Bloq 参考、Register 与 Signature 页、资源计数模块、序列化模块页及仓库内 qualtran/serialization/bloq.py 与 qualtran/protos/bloq.proto、Qualtran 论文(arXiv:2409.04643),以及 Catalyst 的首页、架构与 dialects 页。

  • Qualtran 已有:寄存器签名(名称、dtype、形状、side);层次化分解(decompose_bloq、CompositeBloq、BloqBuilder,构造期报寄存器不匹配);无完整分解的符号调用计数(build_call_graph,SymPy 类型计数);protobuf 序列化。未分解的 bloq 仅以"名称+签名+属性"的浅层条目存活序列化,反序列化须解析到已注册的具体 Python 类。

  • Qualtran 未见文档化的 late binding(在程序对象建成后替换子 bloq 实现并复查接口;CompositeBloq 文档明确不可变),也未见文档化的具名运行时 QRAM 资源(QROM/QROAM 是线路 bloq)。

  • Catalyst 已有高层结构化混合 IR(MLIR dialects:Quantum、Gradient、Catalyst 等),但它是编译器内部的瞬态产物:流水线降至 LLVM/QIR 并产出二进制,中间阶段只能经调试工具查看。未见文档化的"声明但不实现、事后在接口检查下解析"的量子 oracle 槽位(文档索引无 "oracle" 条目;quantum.custom 是完整指定的具名门)。

一句话结论:这些机制存在但停在不同位置——Qualtran 有签名、层次、符号计数与抽象 bloq 的浅层序列化,Catalyst 在编译器内部有高层混合 IR;两者均未文档化"持久化开放程序、绑定时科学约定检查、具名运行时 QRAM 资源捕获、重复部分绑定"这一完整流程。

QSP 相位生成接口

来源:pyqsp README 与源码 docstring(pyqsp/angle_sequence.py、pyqsp/sym_qsp_opt.py、pyqsp/response.py),pyLIQTR Features.md 及其 phase_factors 包。

  • pyqsp v0.2.0(MIT;依赖 numpy/scipy/matplotlib;pip install pyqsp):输入为 Chebyshev 基系数;主入口 QuantumSignalProcessingPhases(poly, method=…, chebyshev_basis=True) 对度数 d 返回 d+1 个相位。相位约定:Wx 信号算子,U = e^{iφ₀Z} ∏ W·e^{iφ_k Z},φ₀ 为最后作用的旋转,无 π/4 偏移;method="sym_qsp" 时目标落在 Im⟨0|U|0⟩。方法:laurent(求根补全,中度数机器精度,高度数不稳)与 sym_qsp(简约相位上带 FFT Jacobian 的 Newton 迭代,源自 arXiv:2002.11649 与 arXiv:2307.12468;文档称可稳定到"数千个相位")。响应自评:pyqsp.response.ComputeQSPResponse / PlotQSPResponse。

  • pyLIQTR 不包装 pyqsp:其 Angler_opt 是"非常直接地"取自 QSPPACK 的 L-BFGS 对称 QSP 生成器,目标是 Re⟨0|U|0⟩ 且带显式 π/4 端偏移——其相位不经转换不能与 pyqsp 互换。旧的 scipy/mpsolve 求根路线正在弃用。

  • PennyLane 更正:"相位角外部提供"的说法已过时——qml.poly_to_angles(求根路线约到度数 1000,迭代 L-BFGS-B 更高)已存在,文档记载对 P(x) 约 1e-10 的线路级验证。

oracq 本阶段落地的契约选择:PhaseSynthesizer 接收实目标 f 的升幂实系数(单项式基)与可选的钉死虚部补全 h,返回反射约定时间正序相位;钉死模式要求精确复现 p = f + i·h,自由模式只钉死 Re p = f。pyqsp 适配器(仅自由模式)把目标转到 Chebyshev 基并把 Wx 相位映射到反射约定(逆转列表、端相位减 π/4、中间减 π/2、按 d mod 4 给首作用相位加偏移,d ≡ 3 mod 4 时目标取反);每次调用由 qsp_response 网格校验独立核验。pyLIQTR 的 Re 目标 π/4 偏移约定未采用。一句话结论:相位约定映射是精确且机器校验的;适配器只越过合成度数守卫——单项式系数管线自身在度数约 40 处有可靠性极限,高度数目标必须在 Chebyshev 基下构造与校验(κ=8、ε=1e-2 反演目标即在度数 585 以此方式达到,往返残差 ≈ 1e-13)。

成熟度分级素材

四级:L1 有接口 · L2 能生成线路 · L3 能闭合执行(端到端模拟/运行)· L4 达到指定精度且有验证。文档层面分级,来源随框架附链接;"—" 表示所查文档中未见。

框架

L1 接口

L2 线路

L3 执行

L4 精度验证

QLS

ODE/PDE

Qualtran

是(BE bloq)

是(GeneralizedQSP)

部分(bloq 经典模拟;目的在于资源估计)

—

—

—

pyLIQTR

是(Features.md)

是(QSVT 线路类,OpenQASM 导出)

部分(内部用 cirq;交付物是 Clifford+T 估计)

—

—

仅经典(clam)

PennyLane

是(qml.QSVT、poly_to_angles、FABLE、Qubitization)

是(BlockEncode 仅模拟器)

是(default.qubit 文档示例)

是(poly_to_angles ~1e-10 验证;QSVT 演示对拍经典解)

QSVT 反演演示

—

Classiq

是(qsvt_inversion 库、qsp_approximate)

是(封闭综合引擎)

是(模拟器与云后端)

是(QSVT/HHL 示例对拍经典解)

HHL、QSVT、VQLS、绝热

Poisson、LCHS、time-marching、CFD 示例

UnitaryLab

是(算法手册)

是(.run() 建线路)

是(numpy/torch 后端)

部分——Schrödingerization 的 method='block' 文档明确回退经典计算(手册页)

HHL、QSVT-QLSA、VQLS、AQC

Schrödingerization 热/平流(trotter + 经典)

Qrisp

是(BlockEncoding)

是

是(apply_rus,模拟+硬件)

是(inv() QSLP 示例对拍经典解)

CKS、inv()

—

oracq 自校准行:L1 是(类型化 oracle 接口与契约)、L2 是、L3 是(参考执行器加后端路径)、L4 对已见证 fixture 是(自校验相位合成;κ=8/ε=1e-2 反演经可替换合成器在相位级与 2×2 块编码级达到),QLS 是(CKS、VTAA-CKS),ODE/PDE 是(LCHS、Schrödingerization、CBMD、Carleman、QHAM/QFVM 族)。

一句话结论:四级分级能干净地区分模板、演示与已验证求解器;所查文档显示 PennyLane(模拟器)、Classiq(封闭引擎)、Qrisp 与 oracq 在 QSVT/QLS 上有完整 L1–L4 链,Qualtran 与 pyLIQTR 为部分链(面向资源估计),UnitaryLab 的 Schrödingerization block 选项有文档化的经典回退;ODE/PDE 求解器族仍是 oracq 的差异化覆盖。