简单来说,是的。微软已经制作了Q#,其确切目的是当人们可以访问现实生活中的Qubits和昆腾计算机时,他们可以简单地开始使用Q#,因为他们已经拥有在虚拟环境中编码的经验。 至于你如何做到这一点,我不知道,我建议最好的办法是给自己发电子邮件,他们会非常乐意帮助你。
我在对象浏览器中稍微戳了一下。
用于调用Q#的C#存根 operations 看起来像这样:
operations
using (var sim = new QuantumSimulator()) { var res = MyOperation.Run(sim, arg1, arg2).Result; }
似乎正在传递运行时环境 作为一个论点 到操作。所以我看了看 QuantumSimulator class然后是它的父级 SimulatorBase 有这个有用的评论和定义。
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 命名空间。 (所有原始操作似乎都是抽象类)。
AbstractFactory<AbstractOperation>
Microsoft.Quantum.Primitive
我认为你可能必须具体实现每个原语来适当地控制你机器上的量子比特,然后你 威力 能够使用Q#语言几乎开箱即用。
这对我来说非常具有推测性,但它可能是一个很好的起点。
编辑: Prelude中需要修改的四个名称空间是 Microsoft.Quantum.Extensions.Bitwise
Microsoft.Quantum.Extensions.Convert
Microsoft.Quantum.Extensions.Math
Microsoft.Quantum.Extensions.RangeFunctions
根据 微软QDK ,微软采取的方法是基于 的 协处理器方案 强> 。所以我们可以放心地假设它与GPU或FPGA的工作方式非常相似:
Q#标准库 由组成 两个基本部分: 的 前奏 强> (机器特定的操作和功能)和 的 佳能 强> (与设备无关的逻辑和包装器)。 因此,您的运行时需要实现Prelude的类型和功能。