你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Quantum 中的 QIR target 配置文件类型

本文讨论 Azure Quantum 中的量子计算提供程序中提供的不同类型的 QIR target 配置文件类型。 QIR target 配置文件类型用于定义可以使用 target Q# 程序的量子设备的功能。

目标配置文件及其限制

量子设备仍是新兴技术,并非所有量子设备都可以运行所有 Q# 代码。 因此,在开发不同 targets程序时,需要记住一些限制。 目前,Azure Quantum 和 QDK 管理三个不同的 target 配置文件:

  • Unrestricted:此配置文件可以在模拟器的内存限制内运行任何 QIR 程序,也可以运行物理量子计算机的量子比特数。
  • QIR base:此配置文件可以运行任何不需要使用量子比特度量结果来控制程序流的 Q# 程序。 在针对此类 QPU 的 Q# 程序中 target,类型的 Result 值不支持相等比较。
  • QIR Adaptive RI:此配置文件使用量子比特度量的结果来控制程序流的能力有限。 在为此类 QPU 编写的 Q# 程序中 target,可以将类型 Result 值作为操作语句中 if 条件的一部分进行比较,从而允许进行中线测量。

创建并运行配置文件 Unrestrictedtarget 的应用程序

Unrestrictedtarget 配置文件可以运行任何程序,这意味着可以编写 Q# 程序,而无需功能限制。 Azure Quantum 不提供 target 任何此配置文件。 但是,可以在 Unrestricted QDK 提供的模拟器上运行 Q# 程序。

配置 Unrestrictedtarget 配置文件

在 Visual Studio Code 中:

  1. 选择“ 视图 -> 命令面板 ”并键入 Q#:设置 Azure Quantum QIR target 配置文件。 按 Enter
  2. 选择 “不受限制”。

在 Python 中,可以使用该方法qsharp.init设置target配置文件。

qsharp.init(target_profile=qsharp.TargetProfile.Unrestricted) 

创建并运行配置文件 QIR Basetarget 的应用程序

QIR Basetarget 配置文件可以运行各种 Q# 应用程序,其约束是无法使用量子位度量的结果来控制程序流。 更具体地说,类型的 Result 值不支持相等比较。

例如, 此操作不能 在以下项 QIR Basetarget上运行:

    operation FlipQubitOnZero() : Unit {
        use q = Qubit();
        if M(q) == Zero {
            X(q);
        }
    }

如果尝试对某个 QIR Basetarget操作运行此操作,该操作将失败,因为它使用度量结果(M(q) == Zero)对计算流进行比较,以使用 if 语句控制计算流。 这同样适用于任何类型的 条件分支,例如 elifelse 语句。

配置 QIR Basetarget 配置文件

在 Visual Studio Code 中:

  1. 选择“ 视图 -> 命令面板 ”并键入 Q#:设置 Azure Quantum QIR target 配置文件。 按 Enter
  2. 选择 QIR 基

在 Python 中,可以使用该方法qsharp.init设置target配置文件。

qsharp.init(target_profile=qsharp.TargetProfile.Base) 

已支持 targets

目前,Azure Quantum 提供以下 QIR Basetargets 功能:

创建并运行配置文件 QIR Adaptive RI 的应用程序 targets

QIR Adaptive RI 配置文件 targets 可以运行各种 Q# 应用程序,但存在一些约束。 此配置文件类型假设对 QIR Base 配置文件进行了改进,但仍存在一些限制。

QIR Adaptive RI 配置文件 targets 允许基于度量的条件运算和 中电路度量,这意味着量子比特可以在量子程序的最终语句以外的某个点选择性地测量,并且测量的输出可用于其他操作。 在量子程序中,中间电路测量允许在任何点进行多个测量。 测量量子比特的量子信息折叠为经典状态(零或一个),但非测量量子比特仍处于其量子状态。

在 Q# 中测量量子位时,将返回类型 Result 值。 如果要在条件语句中使用此结果,则必须直接在条件语句中进行比较。 对应的条件块不能包含 returnset 语句。

例如,以下 Q# 代码在以下 QIR Adaptive RItargetQ# 代码中是允许的:

operation MeasureQubit(q : Qubit) : Result { 
    return M(q); 
}

operation SetToZero(q : Qubit) : Unit {
     if MeasureQubit(q) == One { X(q); }
}

配置 QIR Adaptive RItarget 配置文件

在 Visual Studio Code 中:

  1. 选择“ 视图 -> 命令面板 ”并键入 Q#:设置 Azure Quantum QIR target 配置文件。 按 Enter
  2. 选择 QIR Adaptive RI

在 Python 中,可以使用该方法qsharp.init设置target配置文件。

qsharp.init(target_profile=qsharp.TargetProfile.Adaptive_RI) 

已支持 targets

目前,Azure Quantum 提供以下 QIR Adaptive RItargets 功能: