Skip to Content

真机任务提交

compile() 只生成编译结果;submit() 会向量子硬件提供商实际提交任务,并可能消耗任务额度。提交前请确认 provider、机器、shots 和凭据。

提交前检查

  1. 在模拟器中验证线路和测量映射。
  2. 使用 compile() 检查目标门基、布局和生成的可执行内容。
  3. 确认提供商账户、目标机器、shots、费用或任务额度。
  4. 通过安全方式提供 token,再调用 submit()。
from unitarylab import Circuit qc = Circuit(2) qc.h(0) qc.cx(0, 1) hardware_result = qc.submit( provider="guodun", machine="gd_qc1", token="your-provider-token", shots=1024, )

submit() 完成编译和提交并返回 HardwareResult。Guodun 和 Tianyan 适配器在省略 machine 时会查询机器列表并选择一个可用项;其余适配器应明确指定机器。凭据省略时,Guodun 和 Tianyan 可分别读取 GUODUN_LOGIN_KEY 和 TIANYAN_LOGIN_KEY。

submit(provider, machine=None, shots=1024, token=None)

provider 必须指向真实硬件适配器,不能使用 local。shots 应为正整数。省略 machine 时,实际目标取决于提交时返回的机器列表;要求固定目标时应明确指定机器。

from unitarylab import QCompiler hardware_result = QCompiler().submit( circuit_or_qasm, provider="guodun", machine="gd_qc1", token="your-provider-token", shots=1024, )

完整产物流为 raw_qasm -> optimized_qasm -> mapped_qcis -> hardware_result。LQCloud 需要 lqcloud SDK,QPanda3 需要 pyqpanda3,Quafu 需要 quarkstudio;缺少依赖时会在提交阶段报错。

HardwareResult

HardwareResult 统一保存以下信息:

字段或属性说明
provider / vendor提供商名称
machine、status、submitted机器、任务状态和是否已提交
query_ids / job_ids提供商任务标识
layout、final_layout逻辑–物理量子比特映射
raw_counts、raw_probabilities原始测量结果
corrected_counts、corrected_probabilities读出缓解后的结果
observed_counts、observed_probabilities根据缓解状态选择的推荐结果视图
executable、executable_format实际提交的程序及格式
stage_metadata、provider_result流水线元数据和提供商原始结果

可使用 to_dict() 生成可序列化摘要。不同提供商的任务状态和附加结果并不完全相同,应先检查 status,再读取 counts 或 provider_result。

提交成功只表示提供商已接受任务,不等于任务已经完成。网络超时后不要立即重复提交;应先使用提供商任务标识确认是否已经创建任务,避免重复消耗额度。

安全与限制

  • 不要在 Notebook 输出、日志、截图或异常信息中打印 token。
  • 真机结果受排队、校准、噪声和 shots 影响,与理想模拟结果不会完全一致。
  • 提交前保存编译产物、机器名称和提交参数,便于复现实验。
  • 第三方 SDK 的认证和网络错误由对应提供商处理,失败信息可能采用提供商自己的格式。

相关页面

最后更新于