Logo
Section 1 / 6

为什么要进行模拟?

本章将专注于在传统/经典计算机上模拟量子计算机及其功能。让我们看看原因所在。

导入

为什么要进行模拟?

本章将专注于在传统/经典计算机上模拟量子计算机及其功能。让我们看看原因所在。

这是在介绍实际量子算法之前最后一步。虽然其他课程通常不会专门讲解构建自己的量子计算模拟器这一练习,但这是我们理解量子计算及其数学原理的最佳方式之一。

致谢:在我们学习量子计算的过程中,我们(作者)完成了QOSF导师计划的筛选任务。构建自己的量子计算模拟器正是我们完成的一项任务,也是我们认为特别有用且编程过程充满乐趣的内容。原始创意及任务设定的功劳归于QOSF导师计划。

资源限制

此外,当我们进入实际的量子算法时,我们仍然会使用量子计算库提供的模拟器。原因有两点:第一,当前处于NISQ时代的量子计算机并不完美,其结果往往不够准确;第二,尽管IBM、AWS和谷歌等公司正逐步将真实的量子计算机接入云端,但该技术仍处于初步阶段。目前,用户提交的任务需要排队等待量子计算机返回结果,这一过程可能耗时很长。在学习环境中,快速原型设计、调试和即时反馈至关重要,因此这种方式并不理想。

此外,要在这些量子计算机上运行任务,你还需要在服务提供商的网站上注册账户,并使用与账户关联的令牌来提交任务。我们认为,这种额外的复杂性可能会阻碍那些希望以最低门槛快速进入量子计算领域的学习者。

因此,我们将继续使用在经典计算机上模拟量子计算机的模拟器。

顺便提一句,对大量量子比特的量子计算机进行模拟极为困难。以下摘录说明了原因:

由于量子比特可以存在于远超传统比特“0”和“1”的多种状态中,我们可以用它们编码更多信息。实际上,可以用一个量子比特表示一个经典比特,但反过来则不行——无法用经典晶体管存储一个量子比特的信息。使用经典比特,一个n个组件的系统只需n个晶体管即可表示。仅需8个存储位就能完整描述一个8位的经典系统。但如果这个n个组件的系统是量子的,则需要用 2n2^n 个复数来表示。由此推算,表示一个8量子比特的系统需要256个复数;而要模拟64个量子比特,则需要 264=18,446,744,073,709,551,6162^{64} = 18,446,744,073,709,551,616 个复数,这在经典机器上几乎不可行。

——摘自:敲响图灵之门:量子计算与机器学习

GPU上的模拟

尽管如此,模拟量子计算机并非毫无意义。事实上,这一领域正在快速发展,并获得了科技公司的大力支持。最近,在2021年GPU技术大会(GTC'21)上,NVIDIA宣布推出其项目cuQuantum,旨在利用GPU优化量子计算机的模拟。未来这一项目的成效令人期待。

NVIDIA cuQuantum SDK [图片来自NVIDIA GTC'21]
NVIDIA cuQuantum SDK [图片来自NVIDIA GTC'21]

不过,我们在此展示的算法可以直接应用于当今的量子计算机。只需修改一行代码,将后端从模拟器切换为真实量子计算机,并输入你的访问凭证,即可直接获取来自真实量子设备的结果。

量子力学的本质

在 Python 中模拟量子态