消息定义

下发计算任务

功能: 该消息用于司南系统向测控系统下发计算任务。

参数定义: - 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":"离子阱平台专用指令格式",
    "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): [不可空] 心跳消息序列号。 - 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,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): [条件必填] 错误信息。无错误时可为空;发生错误时不可空。

请求示例:

{
    "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":""
}