消息定义(Router-Dealer模式) ================================ 下发计算任务 ------------ **功能:** 该消息用于司南系统向测控系统下发计算任务。 **参数定义:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``MsgTask``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 - **TaskId** (``String``): [不可空] 任务ID。 - **ConvertQProg** (``String``): [不可空] 测控要执行的指令(中性原子平台专用格式)。 - **Configure.TaskPriority** (``Uint32_t``): [可空,默认为0] 任务优先级。目前只支持2级优先级:0(普通任务),1(高优先级)。 - **Configure.Shot** (``Uint32_t``): [不可空] 重复次数。取值区间:100$im$10000,超出后默认1000。 - **Configure.IsExperiment** (``Bool``): [可空] 是否实验模式。true:实验模式;false:非实验模式(普通用户任务模式)。该字段为空时,代表普通用户任务模式。 - **Configure.ClockCycle** (``Uint32_t``): [可空] 执行时序。最大线路执行周期,单位:微秒。司南根据测控返回的芯片最大执行周期自动决定是否传递该参数。比如测控返回当前芯片的普通执行周期是100us,最大执行周期是500us,如果一个任务的执行时序超过100us,小于500us,则根据具体线路时序情况,调整该参数;如果用户线路执行时序小于100us,则不需要传递该参数。 - **Configure.PointLabel** (``Uint32_t``): [不可空] 应用工厂标签,暂定为128。 **返回信息:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``MsgTaskAck``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 - **ErrCode** (``Uint32_t``): [不可空] 错误码。 - **ErrInfo** (``String``): [条件必填] 错误信息。无错误时可为空;发生错误时不可空。 **请求示例:** .. code-block:: json { "MsgType":"MsgTask", "SN":133, "TaskId":"11D919FA044846F3B4DF453A827AE901", "ConvertQProg":"中性原子平台专用指令格式", "Configure":{ "Shot":1000, "TaskPriority":1, "IsExperiment": true, "PointLabel":128 } } **返回示例:** .. code-block:: json { "MsgType":"MsgTaskAck", "SN":133, "ErrCode":2, "ErrInfo":"configure error." } 任务状态查询 ------------ **功能:** 司南向测控系统发送任务状态查看信息,用于确定当前任务计算状态。当司南长时间接收不到计算结果时,可通过此消息,向测控查询任务状态,防止异常情况下,司南死等。 **参数定义:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``TaskStatus``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 - **TaskId** (``String``): [不可空] 任务ID。 **返回信息:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``TaskStatusAck``。 - **SN** (``Uint32_t``): [不可空] 心跳消息序列号。 - **TaskId** (``String``): [不可空] 任务ID。 - **TaskStatus** (``Uint32_t``): [不可空] 任务状态,参考"类型定义"章节。 **请求示例:** .. code-block:: json { "MsgType":"TaskStatus", "SN":10086, "TaskId":"11D919FA044846F3B4DF453A827AE901" } **返回示例:** .. code-block:: json { "MsgType":"TaskStatusAck", "SN":10086, "TaskId":"11D919FA044846F3B4DF453A827AE901", "TaskStatus":3 } 返回计算结果 ------------ **功能:** 测控系统向司南系统返回计算结果。 **参数定义:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``MsgTaskResult``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 - **TaskId** (``String``): [不可空] 任务ID。 - **ProbCount** (``Int数组``): [不可空] 坍缩次数,各个Key对应的坍缩次数。 - **NoteTime.CompileTime** (``Int``): [不可空] 编译耗时信息,单位ms。 - **NoteTime.PendingTime** (``Int``): [不可空] 排队耗时信息,单位ms。 - **NoteTime.MeasureTime** (``Int``): [不可空] 测量耗时信息,单位ms。 - **NoteTime.PostProcessTime** (``Int``): [不可空] 后处理耗时信息,单位ms。 - **ErrCode** (``Uint32_t``): [不可空] 错误码。 - **ErrInfo** (``String``): [条件必填] 错误信息。无错误时可为空;发生错误时不可空。 **返回信息:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``MsgTaskResultAck``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 - **ErrCode** (``Uint32_t``): [不可空] 错误码。 - **ErrInfo** (``String``): [条件必填] 错误信息。无错误时可为空;发生错误时不可空。 **请求示例:** .. code-block:: json { "MsgType":"MsgTaskResult", "SN":133, "TaskId":"11D919FA044846F3B4DF453A827AE901", "#key":"量子态统一用16进制字符串表示", "Key": [["0x0","0x1"],["0x0","0x1"]], "ProbCount": [[111,656],[103,703]], "NoteTime": { "CompileTime":1, "PendingTime":94, "MeasureTime":2306, "PostProcessTime":105 }, "ErrCode":0, "ErrInfo":"" } **返回示例:** .. code-block:: json { "MsgType":"MsgTaskResultAck", "SN":133, "ErrCode":3, "ErrInfo":"data error." } 心跳消息 -------- **功能:** 用户探测司南系统和测控系统的连接状态。由测控系统维护系统服务,司南系统主动发送心跳包,测控收到心跳包后,发送心跳回应。 **参数定义:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``MsgHeartbeat``。 - **SN** (``Uint32_t``): [不可空] 心跳消息序列ID。 - **TimeStamp** (``Uint64_t``): [不可空] 64位整形时间戳,毫秒。 - **ChipID** (``Uint32_t``): [不可空] 芯片名称,例如:72。 **返回信息:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``MsgHeartbeatAck``。 - **SN** (``Uint32_t``): [不可空] 心跳消息序列ID。 - **backend** (``Uint32_t``): [不可空] 后端芯片ID。 - **TimeStamp** (``Uint64_t``): [不可空] 64位整形时间戳,毫秒。 - **Topic** (``String``): [不可空] 订阅消息主题。 **请求示例:** .. code-block:: json { "MsgType":"MsgHeartbeat", "SN":133, "ChipID":72, "TimeStamp":1638769359507 } **返回示例:** .. code-block:: json { "MsgType":"MsgHeartbeatAck", "SN":133, "backend":72, "TimeStamp":1638769359517, "Topic":"Y4-231011-设计验证-72bit_300pin_V9.2.3_Base-3#_|_Y4-231011-设计验证-72bit_300pin_V9.2.3_Base-3#" } 获取芯片校准时间 ---------------- **功能:** 用户主动获取测控系统对芯片最后一次校准的时间。由测控系统返回。 **参数定义:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``GetUpdateTime``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 **返回信息:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``GetUpdateTimeAck``。 - **SN** (``Uint32_t``): [不可空] 心跳消息序列ID。 - **backend** (``Uint32_t``): [不可空] 后端芯片ID。 - **LastUpdateTime.qubit** (``Uint32_t``): [不可空] 芯片校准时间戳的比特名称(整型数据)。 - **LastUpdateTime.timeStamp** (``Uint64_t``): [不可空] 芯片校准时间戳的比特对应时间(64位整型时间戳,毫秒)。 - **ErrCode** (``Uint32_t``): [不可空] 错误码。 - **ErrInfo** (``String``): [条件必填] 错误信息。无错误时可为空;发生错误时不可空。 **请求示例:** .. code-block:: json { "MsgType":"GetUpdateTime", "SN":133 } **返回示例:** .. code-block:: json { "MsgType":"GetUpdateTimeAck", "SN":133, "backend":72, "LastUpdateTime": { "qubit":[43,45,46,48,49,52,53,54,60], "timeStamp":[1687243363189,1687243363189,1687243363189, 1687243363189,1687243363189,1687243363189, 1687243363189,1687243363189,1687243363189] }, "ErrCode":0, "ErrInfo":"" } 获取RB 实验数据 --------------- **功能:** 用户主动获取RB 实验数据。由测控系统返回。 **参数定义:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``GetRBData``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 - **ChipID** (``Uint32_t``): [不可空] 芯片名称,例如:72。 **返回信息:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``GetRBDataAck``。 - **SN** (``Uint32_t``): [不可空] 心跳消息序列ID。 - **backend** (``Uint32_t``): [不可空] 后端芯片ID。 - **SingleGateCircuitDepth** (``Uint32_t``): [不可空] RB实验单门线路最大深度。 - **DoubleGateCircuitDepth** (``Uint32_t``): [不可空] RB实验双门线路最大深度。 - **SingleGateFidelity** (``String``): [不可空] 单比特保真度(字符串类型map表,key为比特名,value为对应保真度)。 - **DoubleGateFidelity** (``String``): [不可空] 双比特保真度(字符串类型map表,key为比特名,value为对应保真度)。 - **ErrCode** (``Uint32_t``): [不可空] 错误码。 - **ErrInfo** (``String``): [条件必填] 错误信息。无错误时可为空;发生错误时不可空。 **请求示例:** .. code-block:: json { "MsgType":"GetRBData", "SN":133, "ChipID":72 } **返回示例:** .. code-block:: json { "MsgType":"GetRBDataAck", "SN":133, "backend":72, "SingleGateCircuitDepth":[50,50,50,50,50,50,50,50,50,50], "DoubleGateCircuitDepth":[0,50,50,50,50,50,50,0], "SingleGateFidelity": { "qubit":["45","46","48","52"], "fidelity":[0.9,0.9,0.9,0.9] }, "DoubleGateFidelity": { "qubitPair":["45-46","46-52","48-54","52-53"], "fidelity":[0.9,0.9,0.9,0.9] }, "ErrCode":0, "ErrInfo":"" } 获取芯片配置参数 ---------------- **功能:** 获取芯片配置参数(json数据),由测控返回。 **参数定义:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``GetChipConfig``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 - **ChipID** (``Uint32_t``): [不可空] 芯片名称,例如:72。 **返回信息:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``GetChipConfigAck``。 - **SN** (``Uint32_t``): [不可空] 心跳消息序列ID。 - **backend** (``Uint32_t``): [不可空] 后端芯片ID。 - **PointLabelList** (``Uint32_t数组``): [不可空] 当前芯片支持的工作区模式列表。 - **ChipConfig** (``String``): [不可空] 芯片参数json字符串。 - **ErrCode** (``Uint32_t``): [不可空] 错误码。 - **ErrInfo** (``String``): [条件必填] 错误信息。无错误时可为空;发生错误时不可空。 **请求示例:** .. code-block:: json { "MsgType":"GetChipConfig", "SN":133, "ChipID":72 } **返回示例:** .. code-block:: json { "MsgType":"GetChipConfigAck", "SN":133, "backend":72, "PointLabelList":[1,2], "ChipConfig":{ "1":"QuantumChipArch.json 相关配置信息", "2":"QuantumChipArch.json 相关配置信息" }, "ErrCode":0, "ErrInfo":"" } 请求指定任务结果 ---------------- **功能:** 用于在异常情况下,司南未正确接收到测控返回的计算结果时,司南主动向测控请求指定任务的计算结果信息。 **参数定义:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``GetTaskResult``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 - **TaskId** (``String``): [不可空] 任务ID。 **返回信息:** 返回结果信息和"2.3 返回计算结果"章节中,返回结果格式保持一致,但删除"TaskResult"和"FidelityMat"这两个字段信息。 **注意:返回结果中的消息流水号和获取结果消息的流水号保持一致。** **请求示例:** .. code-block:: json { "MsgType":"GetTaskResult", "SN":134, "TaskId":"11D919FA044846F3B4DF453A827AE901" } **返回示例:** .. code-block:: json { "MsgType":"MsgTaskResult", "SN":134, "TaskId":"11D919FA044846F3B4DF453A827AE901", "#key":"量子态统一用16进制字符串表示", "Key": [["0x0","0x1"],["0x0","0x1"]], "ProbCount": [[111,656],[103,703]], "NoteTime": { "CompileTime":1, "PendingTime":94, "MeasureTime":2306, "PostProcessTime":105 }, "ErrCode":0, "ErrInfo":"" } 设置独占机时 ------------ **功能:** 用于在特定需求场景下,司南设定独占机时,确保在独占机时内任务无需排队。 **参数定义:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``SetVip``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 - **OffsetTime** (``Uint64_t``): [不可空] 相对系统当前时间的偏移时间(单位:秒)。 - **ExclusiveTime** (``Uint64_t``): [不可空] 独占机时时长(单位:秒)。 **返回信息:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``SetVipAck``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 - **ErrCode** (``Uint32_t``): [不可空] 错误码。 - **ErrInfo** (``String``): [条件必填] 错误信息。无错误时可为空;发生错误时不可空。 **请求示例:** .. code-block:: json { "MsgType":"SetVip", "SN":134, "OffsetTime":120, "ExclusiveTime":600 } **返回示例:** .. code-block:: json { "MsgType":"SetVipAck", "SN":134, "ErrCode":0, "ErrInfo":"" } 释放独占机时 ------------ **功能:** 用于在完成独占机时任务计算后,释放独占机时操作,恢复普通模式。 **参数定义:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``ReleaseVip``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 **返回信息:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``ReleaseVipAck``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 - **ErrCode** (``Uint32_t``): [不可空] 错误码。 - **ErrInfo** (``String``): [条件必填] 错误信息。无错误时可为空;发生错误时不可空。 **请求示例:** .. code-block:: json { "MsgType":"ReleaseVip", "SN":135 } **返回示例:** .. code-block:: json { "MsgType":"ReleaseVipAck", "SN":135, "ErrCode":0, "ErrInfo":"" }