运行作业
本教程将指导您完成使用程序在 IBM Quantum 计算机上运行作业并返回作业状态的步骤。
全新的 IBM 量子平台界面已发布,处于抢先体验模式。 建议您开始使用该界面来使用 IBM Quantum服务。 因为它是建立在 IBM Cloud 上的,所以迁移非常简单。 详情请参阅 迁移指南。
准备工作
您需要一个回路来提交到程序。 要了解如何使用 Qiskit 创建电路,请参阅 将问题映射到量子电路和算子指南。
运行作业
您将使用 Qiskit Runtime QiskitRuntimeService.run() 方法,该方法需要以下参数:
- program_id: 要运行的程序的标识。
- 输入: 程序输入参数。 这些输入值将传递到运行时程序,并且取决于为程序定义的参数。
- options: 运行时选项。 这些选项控制执行环境。 目前,唯一可用的选项是 backend_name,这是可选的。
- result_解码器: 用于对作业结果进行解码的可选类。
在以下示例中,我们向采样器程序提交一个电路:
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
from qiskit import QuantumCircuit
service = QiskitRuntimeService()
bell = QuantumCircuit(2)
bell.h(0)
bell.cx(0, 1)
bell.measure_all()
# Execute the Bell circuit
backend = service.backend("ibmq_qasm_simulator")
sampler = Sampler(backend=backend)
job = sampler.run([(bell,)])
result = job.result()
pub_result = result[0]
# Get counts from the classical register "meas".
print(f" >> Counts for the meas output register: {pub_result.data.meas.get_counts()}")
或者,可以使用 运行作业 API; (可选) 使用 Swagger。 必须指定要运行的程序标识和后端,并且可以选择提供参数。 记下返回的作业标识。 您需要此信息来检查状态和查看结果。
为确保公平性,存在每个 Qiskit Runtime 作业的最大执行时间。 如果作业超过此时间限制,那么将强制结束该作业。 最大执行时间是 1)QPU 限制和 2)程序定义的 max_execution_time
中较小的一个。 模拟器作业的执行时间限制为 3 小时,在物理 QPU 上运行的作业的执行时间限制为 8 小时。
以上示例提交一个简单作业,但您可以批量提交多个作业,也可以使用会话来提交多个迭代作业。 有关信息,请参阅 执行方式 文档。
(可选) 返回作业状态
通过运行 RuntimeJobV2
方法,跟进 Qiskit Runtime QiskitRuntimeService.run()
方法。 run()
方法返回 RuntimeJob 实例,该实例表示程序的异步执行实例。 RuntimeJobV2
类继承自 BasePrimitiveJob
。 此类的 status()
方法返回一个字符串,而不是返回先前返回的
JobStatus 枚举。 请参阅 RuntimeJobV2 API 参考 以获取详细信息。
存在多个 RuntimeJob 方法,包括 job.status()
:
# check the job status
print(f"Job {job.job_id()} status: {job.status()}")
或者,手动或使用 Swagger 来运行 列出作业详细信息 API以检查作业的状态。