13

简而言之:如果我可以使用真正的量子计算机,是否有可能使用 Q# 来控制它?

在你因为“还没有可用的量子计算机”而将其否决之前:我是一名物理学家,我们的团队能够在现实世界的量子比特上做真正的门。我也有一些编程背景(主要是 C++)。

因此,为了这个问题,让我们假设有人可以访问真实世界的设备,该设备能够对多个量子位执行某些量子操作。显然,量子比特的数量可能是有限的,可能的操作也可能是有限的。我们还假设某人对 Q# 和必要时 C# 足够精通。是否可以将计算从内置模拟器“重定向”到某个真实世界的设备?还是必须基本上重写整个 Q# 库?有什么方法可以定义我自己的QuantumSimulator,我将如何开始这样做?

4

4 回答 4

4

根据Microsoft QDK的说法,Microsoft采用的方法是基于协处理器方案。所以我们可以放心地假设它与 GPU 或 FPGA 的工作方式非常相似:

  • 主程序运行在熟悉的.NET框架下的主处理器上;
  • 特定于协处理器的子程序被翻译成特定于架构的指令,就像它为 GPU 所做的那样,包装成任意函数,然后上传到物理设备;
  • 然后像正常函数一样调用它们。

Q# 标准库两个基本部分组成:前奏(特定于机器的操作和功能)和规范(独立于设备的逻辑和包装器)。
所以你的运行时需要实现 Prelude 的类型和功能。

于 2017-12-15T02:09:27.663 回答
4

我在对象浏览器中浏览了一下。

用于调用 Q# 的 C# 存根operations如下所示:

using (var sim = new QuantumSimulator())
{
  var res = MyOperation.Run(sim, arg1, arg2).Result;
}

运行时环境似乎作为参数传递给操作。所以我查看了这个QuantumSimulator类,然后查看了它的父类,SimulatorBase它有这个有用的评论和定义。

//
// Summary:
//     A Base class for Simulators. It provides the infrastructure that makes it easy
//     for a Simulator to become an OperationFactory (so the execution of an Operation
//     can be tied to this simulator) and to manage the allocation of Qubits (via the
//     QubitManager).
public abstract class SimulatorBase : AbstractFactory<AbstractOperation>, IOperationFactory

我将其解释为任何实现的东西AbstractFactory<AbstractOperation>都可以作为参数传递给操作 - 从而将语言结构与特定的运行环境联系起来。在实现真正的量子计算机时,它可能可以QuantumSimulator用作示例——看起来它主要只是实现了Microsoft.Quantum.Primitive命名空间中原始操作的具体版本。(所有原始操作似乎都是抽象类)。

我认为您可能必须具体实现每个原语才能适当地控制机器上的量子位,但是您可能几乎可以开箱即用地使用 Q# 语言。

这对我来说是相当投机的,但它可能是一个很好的起点。

编辑:前奏曲中需要修改的四个命名空间是 Microsoft.Quantum.Extensions.Bitwise

Microsoft.Quantum.Extensions.Convert

Microsoft.Quantum.Extensions.Math

Microsoft.Quantum.Extensions.RangeFunctions

Microsoft.Quantum.Primitive

于 2017-12-14T04:13:58.657 回答
0

简单来说,是的。微软制作 Q# 的确切目的是,当人们可以访问现实生活中的 Qubits 和 Quantum 计算机时,他们可以简单地开始使用 Q#,因为他们已经有在虚拟环境中使用它的编码经验。至于你如何做到这一点,我不知道,我建议最好的办法是给微软自己发电子邮件,他们会很乐意帮助你的。

于 2018-01-08T05:05:57.833 回答
0

根据微软的说法:“然后可调用本身在目标机器上运行。这样的目标机器可以是实际的量子硬件或作为 QDK 的一部分提供的多个模拟器。” 尽管该量子硬件必须具有使用 Q# 编写所需的一组内在函数和操作。

于 2021-06-02T16:24:33.970 回答