消息定义(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~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): [条件必填] 错误信息。无错误时可为空;发生错误时不可空。
请求示例:
{
"MsgType":"MsgTask",
"SN":133,
"TaskId":"11D919FA044846F3B4DF453A827AE901",
"ConvertQProg":"[{\"RZ\": [0, 180.0]},{\"CNOT\": [1, 2]},{\"H\": [2]},{\"Measure\": [[1, 0]]}]",
"Configure":{
"Shot":1000,
"TaskPriority":1,
"IsExperiment": true,
"PointLabel":128
}
}
返回示例:
{
"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): [不可空] 消息序列ID。TaskId (
String): [不可空] 任务ID。TaskStatus (
Uint32_t): [不可空] 任务状态,参考”类型定义”章节。
请求示例:
{
"MsgType":"TaskStatus",
"SN":10086,
"TaskId":"11D919FA044846F3B4DF453A827AE901"
}
返回示例:
{
"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): [条件必填] 错误信息。
请求示例:
{
"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":""
}
返回示例:
{
"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): [不可空] 订阅消息主题。
请求示例:
{
"MsgType":"MsgHeartbeat",
"SN":133,
"ChipID":72,
"TimeStamp":1638769359507
}
返回示例:
{
"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): [条件必填] 错误信息。
请求示例:
{
"MsgType":"GetUpdateTime",
"SN":133
}
返回示例:
{
"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]
},
"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表)。DoubleGateFidelity (
String): [不可空] 双比特保真度(字符串类型map表)。ErrCode (
Uint32_t): [不可空] 错误码。ErrInfo (
String): [条件必填] 错误信息。
请求示例:
{
"MsgType":"GetRBData",
"SN":133,
"ChipID":72
}
返回示例:
{
"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): [条件必填] 错误信息。
请求示例:
{
"MsgType":"GetChipConfig",
"SN":133,
"ChipID":72
}
返回示例:
{
"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”字段信息。 注意:返回结果中的消息流水号和获取结果消息的流水号保持一致。
请求示例:
{
"MsgType":"GetTaskResult",
"SN":134,
"TaskId":"11D919FA044846F3B4DF453A827AE901"
}
返回示例:
{
"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): [条件必填] 错误信息。
请求示例:
{
"MsgType":"SetVip",
"SN":134,
"OffsetTime":120,
"ExclusiveTime":600
}
返回示例:
{
"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): [条件必填] 错误信息。
请求示例:
{
"MsgType":"ReleaseVip",
"SN":135
}
返回示例:
{
"MsgType":"ReleaseVipAck",
"SN":135,
"ErrCode":0,
"ErrInfo":""
}