有用于量子计算机的仿真器吗?


64

有什么方法可以在普通计算机上模拟量子计算机,从而使我能够测试和尝试量子编程语言(例如Q#)?我的意思是,我可以真正检验我的假设并获得最准确的结果。

更新:我并不是真的在寻找模拟量子计算机,但是我不确定是否有可能在普通的非量子PC上有效地模拟一台量子计算机。


Answers:


39

是的,有可能(但很慢)。有几个现有的(仅部分列表)模拟器:

  • QDD:量子计算机仿真库

    QDD是一个C ++库,它在C ++编程环境的上下文中提供了相对直观的量子计算构造集。QDD的独特之处在于其对量子计算的仿真基于量子态的二进制决策图(BDD)表示。

  • 量子

    jQuantum是一个模拟量子计算机的程序。您可以使用它设计量子电路,然后让它们运行。示出了量子寄存器的当前状态。

  • QCE

    QCE是一种软件工具,可模拟昆腾计算机的各种硬件设计。QCE严格按照量子力学定律模拟控制硬件量子处理器运行的物理过程。QCE还提供了在实际实验条件下调试和执行量子算法的环境。

(此外,Q#仅适用于MS的QDK,感谢@Pavel)

所有这些的缺点很简单:它们仍然在二进制(非量子)电路上运行。据我所知,没有容易使用的量子计算机来运行这些东西。而且由于要用多个二进制位来表示单个qubit,因此模拟量子程序所需的计算能力会很快增加。

我将引用有关该主题的论文(J. Allcock,2010年):

我们的评估表明,我们的实现非常准确,但是与此同时,我们使用了大量的额外内存来实现这一目标。降低精度目标将使我们能够减小表示大小,从而在相同的内存量下模拟更多的量子位。

第89页,第5.1节

随着我们的实现变得越来越准确,它们也变得越来越慢。

TL; DR:有可能,并且存在一些仿真器,但是对于大量的量子位,没有一个效率很高。


请注意,Q#(当前)不能使用这些仿真器,后者仅适用于Microsoft的QDK。
帕维尔

3
除了您所说的以外:还有一些方法可以在提供真正量子计算机的IBM Quantum Experience上运行代码-不是Q#代码,而是QASM。QISKit是前往此处的方法。github.com/QISKit
blalasaadri

您说的很有意义,因为模拟是在一台计算机上运行的。但是,如果使用多台计算机,是否有可能达到相同的速度?
iOS日历patchthecode.com

26

是的,可以在一台普通的计算机上模拟一台量子计算机–但是您很可能不得不牺牲效率。

状态空间的维数随量子位的数量呈指数增长(,其中是量子位的数量),因此您要处理的线性代数不会太轻-您将遇到非常大的矩阵而且您使用的算法(无论效率如何)都可能很快就呈指数级扩展。但是,肯定可以在普通计算机上模拟质量控制。 n2nn


资源资源

您可能会对Q#感兴趣,如其他答案所述。更多仿真器:

  • 量子计算游乐场

    量子计算游乐场是基于浏览器的WebGL Chrome实验。它具有一个具有简单IDE接口的GPU加速量子计算机,以及具有调试和3D量子状态可视化功能的自己的脚本语言。量子计算游乐场可以有效地模拟高达22个量子位的量子寄存器,运行Grover和Shor的算法,并且在脚本语言本身中内置了多种量子门。

  • QX模拟器

    QX模拟器是Nader Khammassi在QuTech开发的通用量子计算机模拟器。QX允许量子算法设计人员在量子计算机上模拟其量子电路的执行。模拟器定义了一种低级量子汇编语言,即“量子代码”,该语言允许用户在简单的文本源代码文件中描述其电路。然后,将源代码文件用作执行其内容的模拟器的输入。

  • 量子++

    Quantum ++是现代的C ++ 11通用量子计算库,仅由模板头文件组成。Quantum ++用标准C ++ 11编写,并且仅使用Eigen 3线性代数纯头标模板库和OpenMP多处理库(如果有),具有极低的外部依赖性。

  • 量子计算机语言

    尽管古典计算机科学中有许多常见概念,但量子计算仍被广泛认为是理论物理学领域中的一门特殊学科。[...] QCL(量子计算语言)试图填补这一空白:QCL是一种用于量子计算机的高级,与体系结构无关的编程语言,其语法源自经典的过程语言,例如C或Pascal。这允许以一种一致的形式主义完全实现和模拟量子算法(包括经典组件)。

  • 可以在Quantiki上找到更多相关的模拟器


21

是的,可以在经典计算机上模拟量子计算。但是,仿真的成本随着量子比特数和/或电路深度和/或特定操作数成指数增长。

为了快速尝试想法,我的模拟器Quirk非常棒。这是一个在您的Web浏览器中运行的开源拖放式量子电路模拟器。您可以通过algassert.com/quirk访问实时版本。

这是Quirk的示例Grover电路的屏幕截图,该电路配备了中间状态显示,以跟踪“隐藏”状态的发生可能性:

屏幕截图Quirk


16

如果您专门研究Q#,那么将它与仿真器一起使用非常容易-实际上,不可能有Q#但没有仿真器,它们是捆绑在一起的。

首先,您需要从Microsoft的网站下载.NET Core 。

当您通过dotnet new -i "Microsoft.Quantum.ProjectTemplates::0.2-*"或Microsoft的网站下载Microsoft的Quantum Development Kit时,它将同时下载该语言和Microsoft自己的模拟器。

创建一个新的Q#项目(dotnet new console -lang Q#)会自动将其配置为使用仿真器,因此,当您键入一些Q#并运行该项目时,它“就可以正常工作”。


3

是。如果您自己建造,则找到具有与BullSequana M9600系列相同规格的第三方计算机,或者拿出10万欧元以上的价格从Atos购买系统。

注意BullSequana M9600系列和Atos QLM之间的相似之处。 Atis QLM与M9600

具有不同软件(但您想使用自己的Q#)的同一个盒子(可能还有内部组件)。Atos宣称:“世界上性能最高的量子模拟器”。我不确定,但是可以达到30 qubit版本的规格,只有两个Intel CPU和1TB内存。

Atos QLM .PDF手册

什么方法可以在我的普通计算机上模拟量子计算机,从而使我能够测试尝试量子编程语言(例如Q#)?

如果仅使用256GB内存和1-24TB交换驱动器,速度会很慢,可以正常使用。

我的意思是我能真正检验我的假设并得到最准确的结果

从手册中引用:

“ Atos量子学习机以两位数的精度计算量子程序的精确执行。它模拟了物理定律,这是量子计算的核心。这与现有的量子处理器截然不同,后者受量子的影响噪声,量子退相干,制造偏差以及性能瓶颈。在Atos Quantum学习机上进行的仿真使开发人员可以专注于其应用程序和算法,而不必等待量子机可用。”

他们声称它具有很高的精度,因为它是模拟器,因此不会受到噪声的影响,它也不会如此之快或昂贵。从理论上讲,您可以在计算机上添加一些内存,驱动器和软件...


3

我认为可以在以下网站找到有关该主题的不错的“概述”:

他们列出了几种语言的量子计算机模拟器,在此之前已经引用了其中一些模拟器。但是,他们保留一个列表,并进行更新以通知(或尝试通知)项目的状态。有一些“库”,例如:

哈斯克尔

qchas(qchas:用于实现量子算法的库)-一个用于实现量子算法的库。它包含量子门,量子位的定义。

蟒蛇

qubiter:Qubiter项目旨在最终提供一整套工具,这些工具主要是用Python编写的,用于设计和模拟经典计算机上的量子电路。

Java脚本

jsqis:jsqis的核心是一个用Javascript编写的量子计算机模拟器。它允许量子寄存器的初始化及其通过量子门的操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.