QRAM 当前策略

当前 pyqres/QEC 联调主线明确暂不支持 QRAM wrapper。

实际行为

pyqres.primitives.QRAMpyqres.primitives.QRAMFast 仍保留类名,保证历史 YAML/Python import 不崩溃;但它们的语义入口全部显式报错:

QRAM.pyqsparse_object()      -> NotImplementedError
QRAM.t_count()               -> NotImplementedError
QRAMFast.pyqsparse_object()  -> NotImplementedError
QRAMFast.t_count()           -> NotImplementedError

为什么不能用 dummy memory

QRAM 是强语义 primitive:address/data width、memory layout、load/unload 是否 self-adjoint、 clean ancilla contract、QEC lowering 资源模型都必须明确。用 dummy memory 或普通 arithmetic primitive 冒充会让 PySparQ reference 与 QEC contract 不一致。

因此当前策略是 fail closed:

  • 不提供近似 PySparQ reference。

  • 不提供 T-count 占位数。

  • 不进入 QEC lowering 主路径。

测试记录

.venv/bin/pytest tests/test_qram_unimplemented.py -q

测试使用 strict xfail,表示当前预期行为就是 NotImplementedError。未来 QRAM contract 修复后,应删除 xfail 并补充正向 reference tests。

直接 PySparQ QRAM

如果只是实验 QRAM-Simulator 本体,可以直接使用 PySparQ API;这不代表 pyqres QRAM wrapper 已经进入稳定 workflow。

import pysparq as ps

ps.System.clear()
state = ps.SparseState()
ps.AddRegister("addr", ps.UnsignedInteger, 2)(state)
ps.AddRegister("data", ps.UnsignedInteger, 3)(state)
ps.Hadamard_Int("addr", 2)(state)

qram = ps.QRAMCircuit_qutrit(2, 3, [0, 2, 4, 6])
ps.QRAMLoad(qram, "addr", "data")(state)