【问题标题】:Is it possible to use Q# to control my own quantum computer? [closed]是否可以使用 Q# 来控制自己的量子计算机? [关闭]
【发布时间】:2018-05-27 20:38:42
【问题描述】:

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

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

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

【问题讨论】:

  • 深入Q#的​​源代码:}“现实世界的计算机”仍然需要提供较低级别的接口(就像任何硬件一样),它就是这个接口(以及如何暴露)在完全回答此类问题之前可能需要考虑这些问题。
  • 我肯定会这样做,但遗憾的是我要到明年才能找到时间。所以我想也许有人已经知道类似“哦,是的,你需要实现接口XY,这至少需要操作z()。我知道这种语言太新了,这个问题可能还没有答案....
  • 它们确实让它听起来像是为在真实硬件上运行而设计的。即使现在不可能,我敢打赌他们以后会定义这样的接口。

标签: quantum-computing q#


【解决方案1】:

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

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

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

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

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

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

Microsoft.Quantum.Extensions.Convert

Microsoft.Quantum.Extensions.Math

Microsoft.Quantum.Extensions.RangeFunctions

Microsoft.Quantum.Primitive

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • @Anedar 我很好奇,你们能做到吗?
        猜你喜欢
        • 1970-01-01
        • 2013-04-18
        • 2023-04-07
        • 1970-01-01
        • 2015-07-13
        • 1970-01-01
        • 1970-01-01
        • 2013-09-13
        • 2019-06-25
        相关资源
        最近更新 更多