ErrorCode
ErrorCode 是一个枚举类型,表示 QPilot OS 操作返回的错误代码。这些代码指示在量子任务提交、执行或结果检索过程中发生的故障类型。
概述
错误代码有助于诊断与 QPilot OS 平台交互时的问题。每个代码对应一类特定的故障,从数据库错误到芯片离线等。
枚举值
成功
| 取值 | 描述 |
|---|
| NO_ERROR_FOUND | 未发生错误;操作成功完成 |
数据和格式错误
| 取值 | 描述 |
|---|
| DATABASE_ERROR | 数据库操作失败 |
| ORIGINIR_ERROR | OriginIR 程序字符串无效或格式错误 |
| JSON_FIELD_ERROR | 必需的 JSON 字段缺失或包含无效值 |
| ERR_PARAMETER | 请求中的参数无效或缺失 |
| ERR_TASK_CONFIG | 任务配置无效 |
后端和计算错误
| 取值 | 描述 |
|---|
| BACKEND_CALC_ERROR | 后端在计算过程中遇到错误 |
| ERR_UNSUPPORT_BACKEND_TYPE | 不支持指定的后端类型 |
| ERR_QVM_INIT_FAILED | 量子虚拟机初始化失败 |
| ERR_QCOMPILER_FAILED | 量子编译器遇到错误 |
| CLUSTER_SIMULATE_CALC_ERR | 集群模拟计算失败 |
| CLUSTER_BASE | 基础集群错误 |
资源限制错误
| 取值 | 描述 |
|---|
| ERR_TASK_BUF_OVERFLOW | 任务缓冲区溢出;排队任务过多 |
| EXCEED_MAX_QUBIT | 程序超出芯片支持的最大量子比特数 |
| EXCEED_MAX_CLOCK | 程序超出允许的最大线路深度(时钟周期) |
| ERR_SUB_GRAPH_OUT_OF_RANGE | 子图规范超出有效范围 |
| ERR_TASK_STATUS_BUF_OVERFLOW | 任务状态缓冲区溢出 |
| ERR_QPROG_LENGTH | 量子程序超出允许的最大长度 |
线路和编译错误
| 取值 | 描述 |
|---|
| ERR_PRE_ESTIMATE | 线路资源预估失败 |
| ERR_MATE_GATE_CONFIG | Mate 门配置错误 |
| ERR_FIDELITY_MATRIX | 保真度矩阵计算错误 |
| ERR_QST_PROG | 无效的量子态层析程序 |
| ERR_EMPTY_PROG | 提交的量子程序为空 |
| ERR_QUBIT_SIZE | 无效的量子比特大小规范 |
| ERR_QUBIT_TOPO | 量子比特拓扑错误 |
| ERR_QUANTUM_CHIP_PROG | 量子芯片程序错误 |
| ERR_REPEAT_MEASURE | 重复测量配置错误 |
| ERR_OPERATOR_DB | 算符数据库错误 |
任务管理错误
| 取值 | 描述 |
|---|
| ERR_UNKNOW_TASK_TYPE | 未知或不支持的任务类型 |
| ERR_NOT_FOUND_APP_ID | 未找到指定的应用 ID |
| ERR_NOT_FOUND_TASK_ID | 未找到指定的任务 ID |
| ERR_PARSER_SUB_TASK_RESULT | 解析子任务结果失败 |
| ERR_TASK_TERMINATED | 任务在完成前被终止 |
网络和连接错误
| 取值 | 描述 |
|---|
| ERR_SYS_CALL_TIME_OUT | 系统调用超时 |
| ERR_INVALID_URL | 提供的 URL 无效 |
| ERR_BACKEND_CHIP_TASK_SOCKET_WRONG | 后端芯片任务套接字错误 |
| ERR_TCP_INIT_FATLT | TCP 初始化失败 |
| ERR_TCP_SERVER_HALT | TCP 服务器已停止或无法访问 |
芯片可用性
| 取值 | 描述 |
|---|
| ERR_CHIP_OFFLINE | 目标量子芯片当前处于离线状态 |
| ERR_SCHEDULE_CHIP_TOPOLOGY_SUPPORTED | 调度器不支持该芯片拓扑 |
通用
| 取值 | 描述 |
|---|
| UNDEFINED_ERROR | 发生了未定义或无法识别的错误 |
示例
pythonfrom pyqpanda3.pilot_service import QPilotService
service = QPilotService(url="https://qpilot.originquantum.cn", api_key="key")
task_id = service.async_run(prog, shot=1000)
# Query and check for errors
state, results, err_code, err_info = service.query_result(task_id)
if err_code == 0: # NO_ERROR_FOUND
print("Operation succeeded")
elif err_code == 1: # ERR_CHIP_OFFLINE
print("The chip is offline; try a different backend")
elif err_code == 2: # EXCEED_MAX_QUBIT
print("Program uses too many qubits for this chip")
elif err_code == 3: # ERR_TASK_TERMINATED
print("Task was terminated")
else:
print(f"Error {err_code}: {err_info}")
另见