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

快速入门:在 Azure Quantum 中创建基于量子的随机数生成器

了解如何使用 Azure Quantum 创建简单的基于量子的随机数生成器。

先决条件

若要完成本教程,需要

在 Visual Studio Code 中创建 Q# 项目

  1. 在 VS Code 中,打开“视图”菜单,然后选择“命令面板” 。

  2. 键入“Q#: 创建新项目”。

  3. 选择“独立控制台应用程序”。

  4. 选择用于保存项目的目录,例如主目录。 输入 QuantumRNG 作为项目名称,然后选择“创建项目”。

  5. 在底部显示的窗口中,选择“打开新项目”。

  6. 应会看到两个文件: QuantumRNG.csproj、项目文件和包含初学者代码 的 Program.qs

  7. 首先打开 QuantumRNG.csproj 文件并添加 ExecutionTarget 属性,这将为你提供有关 IonQ 硬件的程序兼容性的设计时反馈。

    <Project Sdk="Microsoft.Quantum.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <ExecutionTarget>ionq.qpu</ExecutionTarget>
      </PropertyGroup>
    </Project>
    
  8. 使用以下程序替换 Program.qs 的内容:

    namespace QuantumRNG {
        open Microsoft.Quantum.Intrinsic;
        open Microsoft.Quantum.Measurement;
        open Microsoft.Quantum.Canon;
    
        @EntryPoint()
        operation GenerateRandomBits() : Result[] {
            use qubits = Qubit[4];
            ApplyToEach(H, qubits);
            return MultiM(qubits);
        }
    }
    

注意

如果想要详细了解此程序代码,请参阅使用 Quantum 开发工具包创建你的第一个 Q# 程序

准备 Azure CLI

接下来,我们将准备你的环境,针对你创建的工作区运行程序。

  1. 从 Visual Studio Code 菜单中,选择“终端”>“新建终端”。

  2. 使用凭据登录到 Azure。 你将获得与你帐户关联的订阅列表。

    az login
    
  3. 从与 Azure 帐户关联的订阅中指定要使用的订阅。 还可以在 Azure 门户中的工作区概述中找到你的订阅 ID。

    az account set -s MySubscriptionID
    
  4. 使用 quantum workspace set 选择之前创建的工作区,将其作为默认工作区。 请注意,你还需要指定资源组及其创建位置:

    az quantum workspace set -g MyResourceGroup -w MyWorkspace -l MyLocation -o table
    
     Location    Name         ProvisioningState    ResourceGroup    StorageAccount      Usable
     ----------  -----------  -------------------  ---------------  ------------------  --------
     MyLocation  MyWorkspace  Succeeded            MyResourceGroup  /subscriptions/...  Yes
    
    

    注意

    上述示例中的 MyLocation 参数是按照创建 Azure Quantum 工作区中的步骤在“创建 Quantum 工作区”页上指定的“区域”。 “区域”和“位置”是同义词。 参数值可以用引号括起来的混合大小写形式表示(例如 -l "West US 2"),也可以用不含空格或引号的小写字母表示(例如 -l westus2)。

  5. 在工作区中,可用提供程序与创建工作区时添加的提供程序不同 targets 。 可以使用命令 az quantum target list -o table显示所有可用 targets 的列表:

    az quantum target list -o table
    

    根据所选的提供程序,你将看到:

    Provider      Target-id                                            Current Availability    Average Queue Time (seconds)
    ------------  ---------------------------------------------------  ----------------------  ------------------------------
    ionq          ionq.qpu                                             Available               38715
    ionq          ionq.qpu.aria-1                                      Available               2042052
    ionq          ionq.simulator                                       Available               2
    microsoft-qc  microsoft.estimator                                  Available               0
    quantinuum    quantinuum.hqs-lt-s1                                 Available               232817
    quantinuum    quantinuum.hqs-lt-s1-apival                          Available               331
    quantinuum    quantinuum.hqs-lt-s2                                 Unavailable             0
    quantinuum    quantinuum.hqs-lt-s2-apival                          Available               7
    quantinuum    quantinuum.hqs-lt-s1-sim                             Available               19488
    quantinuum    quantinuum.hqs-lt-s2-sim                             Available               1577
    quantinuum    quantinuum.hqs-lt                                    Available               0
    quantinuum    quantinuum.qpu.h1-1                                  Available               232817
    quantinuum    quantinuum.sim.h1-1sc                                Available               331
    quantinuum    quantinuum.qpu.h1-2                                  Unavailable             0
    quantinuum    quantinuum.sim.h1-2sc                                Available               7
    quantinuum    quantinuum.sim.h1-1e                                 Available               19488
    quantinuum    quantinuum.sim.h1-2e                                 Available               1577
    quantinuum    quantinuum.qpu.h1                                    Unavailable             0
    rigetti       rigetti.sim.qvm                                      Available               5
    rigetti       rigetti.qpu.aspen-11                                 Unavailable             0
    rigetti       rigetti.qpu.aspen-m-2                                Available               5
    rigetti       rigetti.qpu.aspen-m-3                                Available               5
    Microsoft     microsoft.paralleltempering-parameterfree.cpu        Available               0
    Microsoft     microsoft.paralleltempering.cpu                      Available               0
    Microsoft     microsoft.simulatedannealing-parameterfree.cpu       Available               0
    Microsoft     microsoft.simulatedannealing.cpu                     Available               0
    Microsoft     microsoft.tabu-parameterfree.cpu                     Available               0
    Microsoft     microsoft.tabu.cpu                                   Available               0
    Microsoft     microsoft.qmc.cpu                                    Available               0
    Microsoft     microsoft.populationannealing.cpu                    Available               0
    Microsoft     microsoft.populationannealing-parameterfree.cpu      Available               0
    Microsoft     microsoft.substochasticmontecarlo.cpu                Available               0
    Microsoft     microsoft.substochasticmontecarlo-parameterfree.cpu  Available               0
    

    注意

    当你在 Azure Quantum 中提交作业时,它将在队列中等待,直到提供商准备好运行你的程序。 列表命令的“ 平均队列时间 ” target 列显示最近运行作业在队列中等待的秒数。 这可以让你了解可能需要等待多长时间。

在 IonQ 提供程序中模拟程序

在实际硬件上运行程序之前,建议先模拟程序(如果可以的话,基于所需的量子比特数量),以帮助确保算法执行所需的操作。 幸运的是,IonQ 提供一个可供使用的理想化模拟器。

注意

还可以使用 :::no-loc text=“Full state::: 模拟器在本地模拟 Q# 程序。

使用 az quantum execute --target-id ionq.simulator -o table 运行程序。 此命令将编译程序,将其提交到 Azure Quantum,并等待 IonQ 完成对程序的模拟。 完成后,它将输出直方图,如下所示:

az quantum execute --target-id ionq.simulator -o table
Result     Frequency
---------  -----------  -------------------------
[0,0,0,0]  0.06250000   ▐█                      |
[1,0,0,0]  0.06250000   ▐█                      |
[0,1,0,0]  0.06250000   ▐█                      |
[1,1,0,0]  0.06250000   ▐█                      |
[0,0,1,0]  0.06250000   ▐█                      |
[1,0,1,0]  0.06250000   ▐█                      |
[0,1,1,0]  0.06250000   ▐█                      |
[1,1,1,0]  0.06250000   ▐█                      |
[0,0,0,1]  0.06250000   ▐█                      |
[1,0,0,1]  0.06250000   ▐█                      |
[0,1,0,1]  0.06250000   ▐█                      |
[1,1,0,1]  0.06250000   ▐█                      |
[0,0,1,1]  0.06250000   ▐█                      |
[1,0,1,1]  0.06250000   ▐█                      |
[0,1,1,1]  0.06250000   ▐█                      |
[1,1,1,1]  0.06250000   ▐█                      |

4 个量子比特的可能状态是 16 种,而它为每种状态显示相等的频率,这就是我们期望通过理想化模拟器实现的! 这意味着可以在 QPU 上运行该程序了。

在硬件上运行程序

若要在硬件上运行程序,请使用异步作业提交命令 az quantum job submit。 与 execute 命令一样,这将编译和提交程序,但不会等到执行完成。 建议在硬件上运行此模式,因为你可能需要等待一段时间才能完成作业。 若要了解该时间长度,可以按前面所述运行 az quantum target list -o table

az quantum job submit --target-id ionq.qpu -o table
 Name        ID                                   Status    Target    Submission time
 ----------  ------------------------------------  --------  --------  ---------------------------------
 QuantumRNG  5aa8ce7a-25d2-44db-bbc3-87e48a97249c  Waiting   ionq.qpu  2020-10-22T22:41:27.8855301+00:00

该表显示作业已提交,并正在等待其轮次运行。 若要检查状态,请使用 az quantum job show 命令,确保将 job-id 参数替换为上一个命令的 ID 输出,例如:

 az quantum job show -o table --job-id 5aa8ce7a-25d2-44db-bbc3-87e48a97249c 
 Name        ID                                   Status    Target    Submission time
 ----------  ------------------------------------  --------  --------  ---------------------------------
 QuantumRNG  5aa8ce7a-25d2-44db-bbc3-87e48a97249c  Waiting   ionq.qpu  2020-10-22T22:41:27.8855301+00:00

最终,会看到上表中的 Status 更改为 Succeeded。 完成此操作后,可运行 az quantum job output 来获取作业的结果:

az quantum job output -o table --job-id 5aa8ce7a-25d2-44db-bbc3-87e48a97249c 
Result     Frequency
---------  -----------  -------------------------
[0,0,0,0]  0.05200000   ▐█                      |
[1,0,0,0]  0.07200000   ▐█                      |
[0,1,0,0]  0.05000000   ▐█                      |
[1,1,0,0]  0.06800000   ▐█                      |
[0,0,1,0]  0.04600000   ▐█                      |
[1,0,1,0]  0.06000000   ▐█                      |
[0,1,1,0]  0.06400000   ▐█                      |
[1,1,1,0]  0.07600000   ▐██                     |
[0,0,0,1]  0.04800000   ▐█                      |
[1,0,0,1]  0.06200000   ▐█                      |
[0,1,0,1]  0.07400000   ▐█                      |
[1,1,0,1]  0.08000000   ▐██                     |
[0,0,1,1]  0.05800000   ▐█                      |
[1,0,1,1]  0.06800000   ▐█                      |
[0,1,1,1]  0.05200000   ▐█                      |
[1,1,1,1]  0.07000000   ▐█                      |

你收到的直方图可能与上述图略有不同,但你会发现通常以相等的频率观察到状态。

先决条件

若要完成本教程,需要

在 Visual Studio Code 中创建 Q# 项目

  1. 在 VS Code 中,打开“视图”菜单,然后选择“命令面板” 。

  2. 键入“Q#: 创建新项目”。

  3. 选择“独立控制台应用程序”。

  4. 选择用于保存项目的目录,例如主目录。 输入 QuantumRNG 作为项目名称,然后选择“创建项目”。

  5. 在底部显示的窗口中,选择“打开新项目”。

  6. 应会看到两个文件: QuantumRNG.csproj、项目文件和包含初学者代码 的 Program.qs

  7. 首先打开 QuantumRNG.csproj 文件并添加 ExecutionTarget 属性,这将提供有关 Quantinuum 硬件的程序兼容性的设计时反馈。

    <Project Sdk="Microsoft.Quantum.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <ExecutionTarget>quantinuum.qpu.h1-1</ExecutionTarget>
      </PropertyGroup>
    </Project>
    
  8. 使用以下程序替换 Program.qs 的内容:

    namespace QuantumRNG {
        open Microsoft.Quantum.Intrinsic;
        open Microsoft.Quantum.Measurement;
        open Microsoft.Quantum.Canon;
    
        @EntryPoint()
        operation GenerateRandomBits() : Result[] {
            use qubits = Qubit[4];
            ApplyToEach(H, qubits);
            return MultiM(qubits);
        }
    }
    

注意

如果想要详细了解此程序代码,请参阅使用 Quantum 开发工具包创建你的第一个 Q# 程序

准备 Azure CLI

接下来,我们将准备你的环境,针对你创建的工作区运行程序。

  1. 从 Visual Studio Code 菜单中,选择“终端”>“新建终端”。

  2. 使用凭据登录到 Azure。 你将获得与你帐户关联的订阅列表。

    az login
    
  3. 从与 Azure 帐户关联的订阅中指定要使用的订阅。 还可以在 Azure 门户中的工作区概述中找到你的订阅 ID。

    az account set -s MySubscriptionID
    
  4. 使用 quantum workspace set 选择之前创建的工作区,将其作为默认工作区。 请注意,你还需要指定资源组及其创建位置:

    az quantum workspace set -g MyResourceGroup -w MyWorkspace -l MyLocation -o table
    
     Location    Name         ProvisioningState    ResourceGroup    StorageAccount      Usable
     ----------  -----------  -------------------  ---------------  ------------------  --------
     MyLocation  MyWorkspace  Succeeded            MyResourceGroup  /subscriptions/...  Yes
    
    

    注意

    上述示例中的 MyLocation 参数是按照创建 Azure Quantum 工作区中的步骤在“创建 Quantum 工作区”页上指定的“区域”。 “区域”和“位置”是同义词。 参数值可以用引号括起来的混合大小写形式表示(例如 -l "West US 2"),也可以用不含空格或引号的小写字母表示(例如 -l westus2)。

  5. 在工作区中,可用提供程序与创建工作区时添加的提供程序不同 targets 。 可以使用命令 az quantum target list -o table显示所有可用 targets 的列表:

    注意

    target Quantinuum 语法检查器、模拟器和 QCPU 的名称最近已更改。 本主题使用更新后的名称。 有关详细信息,请参阅 Quantinuum 提供程序 主题。

    az quantum target list -o table
    

    这会提供输出

    Provider      Target-id                                            Current Availability    Average Queue Time (seconds)
    ------------  ---------------------------------------------------  ----------------------  ------------------------------
    ionq          ionq.qpu                                             Available               38715
    ionq          ionq.qpu.aria-1                                      Available               2042052
    ionq          ionq.simulator                                       Available               2
    microsoft-qc  microsoft.estimator                                  Available               0
    quantinuum    quantinuum.hqs-lt-s1                                 Available               232817
    quantinuum    quantinuum.hqs-lt-s1-apival                          Available               331
    quantinuum    quantinuum.hqs-lt-s2                                 Unavailable             0
    quantinuum    quantinuum.hqs-lt-s2-apival                          Available               7
    quantinuum    quantinuum.hqs-lt-s1-sim                             Available               19488
    quantinuum    quantinuum.hqs-lt-s2-sim                             Available               1577
    quantinuum    quantinuum.hqs-lt                                    Available               0
    quantinuum    quantinuum.qpu.h1-1                                  Available               232817
    quantinuum    quantinuum.sim.h1-1sc                                Available               331
    quantinuum    quantinuum.qpu.h1-2                                  Unavailable             0
    quantinuum    quantinuum.sim.h1-2sc                                Available               7
    quantinuum    quantinuum.sim.h1-1e                                 Available               19488
    quantinuum    quantinuum.sim.h1-2e                                 Available               1577
    quantinuum    quantinuum.qpu.h1                                    Unavailable             0
    rigetti       rigetti.sim.qvm                                      Available               5
    rigetti       rigetti.qpu.aspen-11                                 Unavailable             0
    rigetti       rigetti.qpu.aspen-m-2                                Available               5
    rigetti       rigetti.qpu.aspen-m-3                                Available               5
    Microsoft     microsoft.paralleltempering-parameterfree.cpu        Available               0
    Microsoft     microsoft.paralleltempering.cpu                      Available               0
    Microsoft     microsoft.simulatedannealing-parameterfree.cpu       Available               0
    Microsoft     microsoft.simulatedannealing.cpu                     Available               0
    Microsoft     microsoft.tabu-parameterfree.cpu                     Available               0
    Microsoft     microsoft.tabu.cpu                                   Available               0
    Microsoft     microsoft.qmc.cpu                                    Available               0
    Microsoft     microsoft.populationannealing.cpu                    Available               0
    Microsoft     microsoft.populationannealing-parameterfree.cpu      Available               0
    Microsoft     microsoft.substochasticmontecarlo.cpu                Available               0
    Microsoft     microsoft.substochasticmontecarlo-parameterfree.cpu  Available               0
    

    注意

    当你在 Azure Quantum 中提交作业时,它将在队列中等待,直到提供商准备好运行你的程序。 列表命令的“ 平均队列时间 ” target 列显示最近运行作业在队列中等待的秒数。 这可以让你了解可能需要等待多长时间。

在 Quantinuum 语法检查器中检查程序

在针对实际硬件运行程序之前,我们建议先根据) 所需的量子比特数 (对量子模拟器运行该程序,以帮助确保算法执行所需的操作。

若要使用 Quantinuum 语法检查器运行程序,请提交以下命令:

az quantum execute --target-id quantinuum.sim.h1-1sc -o table

此命令编译程序,将其提交到 Quantinuum 语法检查器,并等待它完成程序模拟。 完成后,它会输出如下所示的直方图:

Result     Frequency
---------  -----------  ----------------------
[0,0,0,0]  1.00000000   |████████████████████|

查看直方图,你可能会注意到随机数生成器每次都返回 0,这不是非常随机的。 这是因为,虽然语法检查器可确保代码在 Quantinuum 硬件上成功运行,但每次量子测量也会返回 0。 对于真正的随机数生成器,需要在量子硬件上运行线路。

在硬件上运行程序

若要在硬件上运行程序,请使用异步作业提交命令 az quantum job submit。 与 execute 命令一样,这将编译和提交程序,但不会等到执行完成。 建议在硬件上运行此模式,因为你可能需要等待一段时间才能完成作业。 若要了解该时间长度,可以按前面所述运行 az quantum target list -o table

az quantum job submit --target-id quantinuum.qpu.h1-1 -o table
 Name        ID                                    Status    Target                Submission time
 ----------  ------------------------------------  --------  --------              ---------------------------------
 QuantumRNG  b4d17c63-2119-4d92-91d9-c18d1a07e08f  Waiting   quantinuum.qpu.h1-1   2020-01-12T22:41:27.8855301+00:00

该表显示作业已提交,并正在等待其轮次运行。 若要检查状态,请运行 az quantum job show 命令,务必要将 job-id 参数替换为上一命令的 ID 输出,例如:

 az quantum job show -o table --job-id b4d17c63-2119-4d92-91d9-c18d1a07e08f 
 Name        ID                                    Status    Target               Submission time
 ----------  ------------------------------------  --------  --------             ---------------------------------
 QuantumRNG  b4d17c63-2119-4d92-91d9-c18d1a07e08f  Waiting   quantinuum.qpu.h1-1  2020-10-22T22:41:27.8855301+00:00

上表中的 Status 更改为 Succeeded。 完成此操作后,可运行 az quantum job output 来获取作业的结果:

az quantum job output -o table --job-id b4d17c63-2119-4d92-91d9-c18d1a07e08f 
Result     Frequency
---------  -----------  -------------------------
[0,0,0,0]  0.05200000   ▐█                      |
[1,0,0,0]  0.07200000   ▐█                      |
[0,1,0,0]  0.05000000   ▐█                      |
[1,1,0,0]  0.06800000   ▐█                      |
[0,0,1,0]  0.04600000   ▐█                      |
[1,0,1,0]  0.06000000   ▐█                      |
[0,1,1,0]  0.06400000   ▐█                      |
[1,1,1,0]  0.07600000   ▐██                     |
[0,0,0,1]  0.04800000   ▐█                      |
[1,0,0,1]  0.06200000   ▐█                      |
[0,1,0,1]  0.07400000   ▐█                      |
[1,1,0,1]  0.08000000   ▐██                     |
[0,0,1,1]  0.05800000   ▐█                      |
[1,0,1,1]  0.06800000   ▐█                      |
[0,1,1,1]  0.05200000   ▐█                      |
[1,1,1,1]  0.07000000   ▐█                      |

你收到的直方图可能与上述图略有不同,但你会发现通常以相等的频率观察到状态。

先决条件

若要完成本教程,需要

在 Visual Studio Code 中创建 Q# 项目

  1. 在 VS Code 中,打开“视图”菜单,然后选择“命令面板” 。

  2. 键入“Q#: 创建新项目”。

  3. 选择“独立控制台应用程序”。

  4. 选择用于保存项目的目录,例如主目录。 输入 QuantumRNG 作为项目名称,然后选择“创建项目”。

  5. 在底部显示的窗口中,选择“打开新项目”。

  6. 应会看到两个文件: QuantumRNG.csproj、项目文件和包含初学者代码 的 Program.qs

  7. 首先打开 QuantumRNG.csproj 文件并添加 ExecutionTarget 属性,该属性提供有关 Rigetti 硬件的程序兼容性的设计时反馈。

    <Project Sdk="Microsoft.Quantum.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <ExecutionTarget>rigetti.qpu.aspen-m-3</ExecutionTarget>
      </PropertyGroup>
    </Project>
    
  8. 使用以下程序替换 Program.qs 的内容:

    namespace QuantumRNG {
       open Microsoft.Quantum.Intrinsic;
       open Microsoft.Quantum.Measurement;
       open Microsoft.Quantum.Canon;
    
       @EntryPoint()
       operation GenerateRandomBits() : Result[] {
          use qubits = Qubit[4];
          for q in qubits {
             H(q);
          }
          return MeasureEachZ(qubits);
       }
    }
    

    注意

    在实现相同的结果时,Rigetti 的示例代码不同于本快速入门中的其他示例,使用 for 循环来执行量子 H 操作并 MeasureEachZ 测量结果。 目前,Rigetti targets 不支持可变数组,因此不支持 ApplyToEachMultiM 操作。

准备 Azure CLI

接下来,我们将准备你的环境,针对你创建的工作区运行程序。

  1. 从 Visual Studio Code 菜单中,选择“终端”>“新建终端”。

  2. 使用凭据登录到 Azure。 你将获得与你帐户关联的订阅列表。

    az login
    
  3. 从与 Azure 帐户关联的订阅中指定要使用的订阅。 还可以在 Azure 门户中的工作区概述中找到你的订阅 ID。

    az account set -s MySubscriptionID
    
  4. 使用 quantum workspace set 选择之前创建的工作区,将其作为默认工作区。 请注意,你还需要指定资源组及其创建位置:

    az quantum workspace set -g MyResourceGroup -w MyWorkspace -l MyLocation -o table
    
     Location    Name         ProvisioningState    ResourceGroup    StorageAccount      Usable
     ----------  -----------  -------------------  ---------------  ------------------  --------
     MyLocation  MyWorkspace  Succeeded            MyResourceGroup  /subscriptions/...  Yes
    
    

    注意

    上述示例中的 MyLocation 参数是按照创建 Azure Quantum 工作区中的步骤在“创建 Quantum 工作区”页上指定的“区域”。 “区域”和“位置”是同义词。 参数值可以用引号括起来的混合大小写形式表示(例如 -l "West US 2"),也可以用不含空格或引号的小写字母表示(例如 -l westus2)。

  5. 在工作区中,可用提供程序与创建工作区时添加的提供程序不同 targets 。 可以使用命令 az quantum target list -o table显示所有可用 targets 的列表:

    az quantum target list -o table
    

    这会提供类似于

    Provider        Target-id                                     Current Availability  Average Queue Time
    ----------      -------------------------------------------   --------------------  --------------------
    ionq            ionq.qpu                                      Available             0
    ionq            ionq.qpu.aria-1                               Available             0
    ionq            ionq.simulator                                Available             0
    microsoft-q c   microsoft.estimator
    quantinuum      quantinuum.qpu.h1-1                           Available             0
    quantinuum      quantinuum.qpu.h1-1sc                         Available             0
    quantinuum      quantinuum.qpu.h1-1e                          Available             0
    quantinuum      quantinuum.qpu.h1-2                           Available             0
    quantinuum      quantinuum.qpu.h1-2sc                         Available             0
    quantinuum      quantinuum.qpu.h1-2e                          Available             0
    rigetti         rigetti.sim.qvm                               Available             5
    rigetti         rigetti.qpu.aspen-11                          Unavailable           0
    rigetti         rigetti.qpu.aspen-m-2                         Available             5
    rigetti         rigetti.qpu.aspen-m-3                         Available             5
    

    注意

    当你在 Azure Quantum 中提交作业时,它将在队列中等待,直到提供商准备好运行你的程序。 列表命令的“ 平均队列时间 ” target 列显示最近运行作业在队列中等待的秒数。 这可以让你了解可能需要等待多长时间。

在 Rigetti 模拟器中模拟程序

在针对实际硬件运行程序之前,我们建议先根据) 所需的量子比特数 (对量子模拟器运行该程序,以帮助确保算法执行所需的操作。

若要使用 Rigetti QVM 模拟器运行程序,请提交以下命令:

az quantum execute --target-id rigetti.sim.qvm -o table

此命令编译程序,将其提交到 Rigetti QVM 模拟器,并等待它完成程序模拟。 完成后,它会输出如下所示的直方图:

Result        Frequency
------------  -----------  ----------------------[0, 0, 0, 0]  0.06600000   |█                   |
[1, 1, 1, 1]  0.05800000   |█                   |
[0, 0, 0, 1]  0.06000000   |█                   |
[0, 1, 1, 1]  0.07400000   |█                   |
[0, 0, 1, 1]  0.05800000   |█                   |
[1, 0, 1, 0]  0.06400000   |█                   |
[1, 1, 0, 1]  0.07600000   |██                  |
[1, 1, 0, 0]  0.04400000   |█                   |
[0, 1, 0, 1]  0.06000000   |█                   |
[1, 0, 1, 1]  0.07400000   |█                   |
[0, 1, 0, 0]  0.05800000   |█                   |
[0, 0, 1, 0]  0.07200000   |█                   |
[0, 1, 1, 0]  0.06800000   |█                   |
[1, 1, 1, 0]  0.05600000   |█                   |
[1, 0, 0, 0]  0.05600000   |█                   |
[1, 0, 0, 1]  0.05600000   |█                   |

在硬件上运行程序

若要在硬件上运行程序,请使用异步作业提交命令 az quantum job submit。 与 execute 命令一样,这将编译和提交程序,但不会等到执行完成。 建议在硬件上运行此模式,因为你可能需要等待一段时间才能完成作业。 若要了解该时间长度,可以按前面所述运行 az quantum target list -o table

az quantum job submit --target-id rigetti.qpu.aspen-m-3 -o table
 Name        ID                                    Status    Target                Submission time
 ----------  ------------------------------------  --------  --------              ---------------------------------
 QuantumRNG  b4d17c63-2119-4d92-91d9-c18d1a07e08f  Waiting   rigetti.qpu.aspen-m-3   2020-01-12T22:41:27.8855301+00:00

该表显示作业已提交,并正在等待其轮次运行。 若要检查状态,请使用 az quantum job show 命令,确保将 job-id 参数替换为上一个命令的 ID 输出,例如:

 az quantum job show -o table --job-id b4d17c63-2119-4d92-91d9-c18d1a07e08f 
 Name        ID                                    Status    Target               Submission time
 ----------  ------------------------------------  --------  --------             ---------------------------------
 QuantumRNG  b4d17c63-2119-4d92-91d9-c18d1a07e08f  Waiting   rigetti.qpu.aspen-m-3  2020-10-22T22:41:27.8855301+00:00

最终,你将看到 Status 在上表中将 更改为 Succeeded。 完成此操作后,可以通过运行 az quantum job output 获取作业的结果:

az quantum job output -o table --job-id b4d17c63-2119-4d92-91d9-c18d1a07e08f 
Result     Frequency
---------  -----------  -------------------------
[0,0,0,0]  0.05200000   ▐█                      |
[1,0,0,0]  0.07200000   ▐█                      |
[0,1,0,0]  0.05000000   ▐█                      |
[1,1,0,0]  0.06800000   ▐█                      |
[0,0,1,0]  0.04600000   ▐█                      |
[1,0,1,0]  0.06000000   ▐█                      |
[0,1,1,0]  0.06400000   ▐█                      |
[1,1,1,0]  0.07600000   ▐██                     |
[0,0,0,1]  0.04800000   ▐█                      |
[1,0,0,1]  0.06200000   ▐█                      |
[0,1,0,1]  0.07400000   ▐█                      |
[1,1,0,1]  0.08000000   ▐██                     |
[0,0,1,1]  0.05800000   ▐█                      |
[1,0,1,1]  0.06800000   ▐█                      |
[0,1,1,1]  0.05200000   ▐█                      |
[1,1,1,1]  0.07000000   ▐█                      |

你收到的直方图可能与上述图略有不同,但你会发现通常以相等的频率观察到状态。

注意

如果在使用 Azure Quantum 时遇到错误,你可以查阅常见问题列表

后续步骤

本快速入门演示了如何针对不同的量子计算模拟器和 QPU 开始运行 Q# 程序。 有关可用提供程序的详细信息,请参阅量子计算提供程序概述文档。

我们建议你继续你的旅程,详细了解 Azure Quantum 中的不同类型的 targets,这些类型决定了可以针对给定提供程序运行的 Q# 程序类型。 你可能还有兴趣了解如何使用 Python、Jupyter Notebook 或 Azure CLI 提交 Q# 作业

在寻找更多示例以供运行? 查看 Azure Quantum 的示例目录

最后,如果你想要详细了解如何编写 Q# 程序,请参阅 Q# 编程语言用户指南