错误码
总览
注解
错误码共有7位,前两位表示错误类型,后5位表示具体错误描述。
常见错误码说明
| 错误码 | 可能原因 | 应对措施 |
|---|---|---|
| HB_UCP_INVALID_ARGUMENT | 接口入参非法,比如指针入参设置为空或者任务参数校验失败等情况 | 请根据使用接口及对应的错误日志进行排查 |
| HB_UCP_API_USE_ERROR | 接口错误使用,已经提交的任务被再一次提交 | 请检查是否存在重复提交任务的错误使用 |
| HB_UCP_UNKNOWN_ERROR | 内部未知问题 | 请保存好相关日志或环境并联系地平线技术支持人员进行分析 |
| HB_UCP_TASK_NUMBER_EXCEED_LIMIT | 进程内创建且未释放的任务数量超过池子的上限 | 请确保正确调用任务释放接口,若符合预期可通过设置环境变量HB_UCP_MAX_TASK_NUM调整数量上限 |
| HB_UCP_TASK_TIMEOUT | 任务的超时时间设置较短或者硬件负载过高导致的超时 | 可尝试增加任务超时时间或者降低负载 |
| 虚拟内存泄漏导致模型推理超时 | 可检查系统是否存在虚拟内存泄漏 | |
| 模型指令卡死导致推理超时 | 确认进程未退出的情况下,可通过 cat /sys/devices/system/bpu/bpu0/task_running 对bpu任务情况进行查看,若一直存在同一个任务且这个任务的p_time在不断增加,则表示模型长时间未完成 | |
| 其他 | 请保存好相关日志或环境并联系地平线技术支持人员进行分析 | |
| HB_UCP_TASK_RUN_FAILED | 任务未完成提前调用释放任务,等待接口或者回调函数里返回此错误码 | 请检查提前释放任务行为是否符合预期 |
| Resizer输入模型的ROI不符合限制 | 请在创建任务前增加ROI的合法性检查 | |
| 内部问题 | 请保存好相关日志或环境并联系地平线技术支持人员进行分析 | |
| HB_UCP_TASK_HANDLE_INVALID | 模型推理接口入参的任务句柄非法,非hbDNNInferV2输出,或者已经释放了 | 请检查任务句柄对象或者接口使用的正确性 |
| 算子任务入参的任务句柄非法,必须为空指针或者指向空指针 | 请检查接口的任务句柄入参 | |
| HB_UCP_OP_NOT_REGISTER | DSP自定义算子未注册 | 请检查DSP侧注册接口调用或确认自定义算子CMD值与DSP侧注册值是否一致 |
| HB_UCP_MEM_ALLOC_FAIL | 内存分配失败 | 请检查是否有内存泄露或者是否有过大的内存需求 |
| HB_UCP_MEM_MAP_FAIL | 模型推理内存映射失败 | 请检查推理使用的tensor地址信息,包括首地址和尺寸,是否包含在已申请的hbmem内存空间内 |
| HB_UCP_FILE_OPEN_FAILED | 模型加载使用的文件打不开 | 请确认模型文件存在且可读 |
| HB_UCP_MODEL_INVALID | 模型加载失败,内容校验失败 | 请检查hbm模型文件或内容的正确性 |
| HB_UCP_MODEL_INCOMPATIBLE | 模型架构与运行环境不兼容 | 请检查hbm编译设置的march参数和运行环境是否一致 |
| HB_UCP_DSP_UNAVAILABLE | DSP通信不可用 | 请检查DSP是否已经正常启动 |
| HB_UCP_DSP_XV_ALLOC_FAIL | DSP侧申请tcm内存失败 | 请检查DSP是否存在内存泄露或者有过大的内存需求 |
| HB_UCP_DSP_MMAP_FAIL | DSP内存映射失败 | 请检查地址信息是否属于hbmem,若仍有问题请联系地平线技术支持人员进行分析 |
| HB_UCP_CODEC_OPERATION_NOT_ALLOWED | Codec状态异常导致操作失败,通常因非法状态引起 | 请联系地平线技术支持人员进行分析 |
| HB_UCP_CODEC_INSUFFICIENT_RES | 系统内存不足导致资源分配失败 | 请检查并释放空闲内存资源 |
| HB_UCP_CODEC_NO_FREE_INSTANCE | Context实例数量已达上限 | 请释放闲置实例后再创建 |
| HB_UCP_CODEC_IS_INUSE | Context释放时仍有任务占用 | 请先释放所有关联任务再释放Context |
小技巧
分析错误码时建议结合错误日志一起,并且可通过环境变量调整UCP日志等级,根据更详细的日志信息帮助排查问题。
