1. 课程导入与全景认知
在真正动手写第一行量子电路代码之前,有一个问题值得先想清楚:我们写的量子程序,最终到底跑在哪里?答案通常有两种——真实量子硬件,或者经典计算机上的量子模拟器。前者受限于比特数量、相干时间、门保真度和排队时间,后者则可以在普通服务器甚至笔记本上运行,代价是内存与计算时间随比特数指数增长。本课程聚焦的正是后者:量子电路模拟后端,以及如何为一段具体的量子电路挑选、配置并验证合适的模拟后端。
所谓“后端”(backend),在主流量子计算框架中指的是一个可被电路提交、执行并返回结果的目标对象。它可能是真实设备,也可能是模拟器。模拟后端内部又分成多种实现策略:有的直接对状态向量做矩阵运算,有的用稀疏结构压缩存储,有的沿电路逐个采样轨迹,还有的专门针对含噪声场景做密度矩阵演化。这些策略在可支持的比特数、内存占用、是否支持噪声、是否支持中间测量等维度上差异巨大。选错后端,轻则跑得慢,重则直接内存溢出或得到与预期语义不符的结果。
把后端选型放回开发流程来看,它处在“电路构建”与“提交执行”之间,是一个承上启下的决策点。上游的比特数、门深度、是否含测量决定了候选后端的集合;下游的 shots 数、参数绑定方式和结果统计方式又反过来影响选型是否合理。上图把这条链路和四种典型模拟策略放在一起,便于建立整体印象:状态向量模拟存储 2ⁿ 个复数振幅,是大多数无噪声场景的默认选择;稀疏或张量网络模拟利用电路的低纠缠结构,在浅层大比特电路上更省内存;轨迹模拟逐 shot 采样,天然支持中间测量与条件门;密度矩阵模拟存储 4ⁿ 个矩阵元,能叠加噪声信道,但比特数稍大就难以为继。
这里需要强调一个容易被忽视的量级感。状态向量每个振幅用双精度复数表示约占 16 字节,n 个比特需要 16×2ⁿ 字节:20 比特约 16 MB,25 比特约 512 MB,30 比特约 16 GB,32 比特约 64 GB。密度矩阵则是 16×4ⁿ 字节,12 比特就接近 4 TB。也就是说,模拟后端的能力边界主要由内存决定,而不是由 CPU 主频决定。理解这一点,才能在写代码之前就预判“这段电路能不能在本机跑”。
本课程的目标可以概括为三层。第一层是认知层:能说清模拟后端与真实后端的差别,能区分状态向量、张量网络、轨迹、密度矩阵四类策略的适用条件。第二层是操作层:能在主流框架中列出可用后端、读取其属性(比特数上限、是否支持噪声、是否支持条件门)、完成参数配置并提交一段带 shots 的电路。第三层是判断层:能根据电路特征和资源约束做出选型决策,并在结果异常时判断问题出在电路、后端还是统计方式上。
学习路径按“先全景、再分类、后实战”组织。前半程建立概念地图与选型判据,把四类模拟策略的内存模型、支持能力和典型失败模式讲透;中段进入具体框架的后端枚举与配置,包括如何查询后端列表、如何读取后端属性、如何设置 shots 与随机种子;后段用若干递进案例串联,从 5 比特的 Bell 态验证,到含中间测量的动态电路,再到带噪声信道的密度矩阵对比,最后落到一次完整的“选型—执行—判读—回退”闭环。每个案例都会给出可运行的参数与预期观察点,便于边学边验证。