你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:在 Azure Quantum 中创建基于量子的随机数生成器
了解如何使用 Azure Quantum 创建简单的基于量子的随机数生成器。
先决条件
若要完成本教程,需要
- 具有活动订阅的 Azure 帐户。 如果没有 Azure 帐户,请免费注册并注册 即用即付订阅。
- Visual Studio Code,可供免费下载和使用。
- 适用于 VS Code 的 Microsoft QDK 扩展。
- Azure CLI 和量子 CLI 扩展。
- 启用了 IonQ 提供商的 Azure Quantum 工作区。 有关详细信息,请参阅创建 Azure Quantum 工作区。
在 Visual Studio Code 中创建 Q# 项目
在 VS Code 中,打开“视图”菜单,然后选择“命令面板” 。
键入“Q#: 创建新项目”。
选择“独立控制台应用程序”。
选择用于保存项目的目录,例如主目录。 输入 QuantumRNG 作为项目名称,然后选择“创建项目”。
在底部显示的窗口中,选择“打开新项目”。
应会看到两个文件: QuantumRNG.csproj、项目文件和包含初学者代码 的 Program.qs。
首先打开 QuantumRNG.csproj 文件并添加
ExecutionTarget
属性,这将为你提供有关 IonQ 硬件的程序兼容性的设计时反馈。<Project Sdk="Microsoft.Quantum.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ExecutionTarget>ionq.qpu</ExecutionTarget> </PropertyGroup> </Project>
使用以下程序替换 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
接下来,我们将准备你的环境,针对你创建的工作区运行程序。
从 Visual Studio Code 菜单中,选择“终端”>“新建终端”。
使用凭据登录到 Azure。 你将获得与你帐户关联的订阅列表。
az login
从与 Azure 帐户关联的订阅中指定要使用的订阅。 还可以在 Azure 门户中的工作区概述中找到你的订阅 ID。
az account set -s MySubscriptionID
使用
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
)。在工作区中,可用提供程序与创建工作区时添加的提供程序不同 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 ▐█ |
你收到的直方图可能与上述图略有不同,但你会发现通常以相等的频率观察到状态。
先决条件
若要完成本教程,需要
- 具有活动订阅的 Azure 帐户。 如果没有 Azure 帐户,请免费注册并注册 即用即付订阅。
- Visual Studio Code,可供免费下载和使用。
- 适用于 VS Code 的 Microsoft QDK 扩展。
- Azure CLI 和量子 CLI 扩展。
- 启用了 Quantinuum 提供商的 Azure Quantum 工作区。 有关详细信息,请参阅创建 Azure Quantum 工作区。
在 Visual Studio Code 中创建 Q# 项目
在 VS Code 中,打开“视图”菜单,然后选择“命令面板” 。
键入“Q#: 创建新项目”。
选择“独立控制台应用程序”。
选择用于保存项目的目录,例如主目录。 输入 QuantumRNG 作为项目名称,然后选择“创建项目”。
在底部显示的窗口中,选择“打开新项目”。
应会看到两个文件: QuantumRNG.csproj、项目文件和包含初学者代码 的 Program.qs。
首先打开 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>
使用以下程序替换 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
接下来,我们将准备你的环境,针对你创建的工作区运行程序。
从 Visual Studio Code 菜单中,选择“终端”>“新建终端”。
使用凭据登录到 Azure。 你将获得与你帐户关联的订阅列表。
az login
从与 Azure 帐户关联的订阅中指定要使用的订阅。 还可以在 Azure 门户中的工作区概述中找到你的订阅 ID。
az account set -s MySubscriptionID
使用
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
)。在工作区中,可用提供程序与创建工作区时添加的提供程序不同 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 ▐█ |
你收到的直方图可能与上述图略有不同,但你会发现通常以相等的频率观察到状态。
先决条件
若要完成本教程,需要
- 具有活动订阅的 Azure 帐户。 如果没有 Azure 帐户,请免费注册并注册 即用即付订阅。
- Visual Studio Code,可供免费下载和使用。
- 适用于 VS Code 的 Microsoft QDK 扩展。
- Azure CLI 和量子 CLI 扩展。
- 启用了 Rigetti 提供程序的 Azure Quantum 工作区。 有关详细信息,请参阅创建 Azure Quantum 工作区。
在 Visual Studio Code 中创建 Q# 项目
在 VS Code 中,打开“视图”菜单,然后选择“命令面板” 。
键入“Q#: 创建新项目”。
选择“独立控制台应用程序”。
选择用于保存项目的目录,例如主目录。 输入 QuantumRNG 作为项目名称,然后选择“创建项目”。
在底部显示的窗口中,选择“打开新项目”。
应会看到两个文件: QuantumRNG.csproj、项目文件和包含初学者代码 的 Program.qs。
首先打开 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>
使用以下程序替换 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 不支持可变数组,因此不支持ApplyToEach
或MultiM
操作。
准备 Azure CLI
接下来,我们将准备你的环境,针对你创建的工作区运行程序。
从 Visual Studio Code 菜单中,选择“终端”>“新建终端”。
使用凭据登录到 Azure。 你将获得与你帐户关联的订阅列表。
az login
从与 Azure 帐户关联的订阅中指定要使用的订阅。 还可以在 Azure 门户中的工作区概述中找到你的订阅 ID。
az account set -s MySubscriptionID
使用
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
)。在工作区中,可用提供程序与创建工作区时添加的提供程序不同 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# 编程语言用户指南。