错误码

总览

注解

错误码共有7位,前两位表示错误类型,后5位表示具体错误描述。

// common status
HB_UCP_SUCCESS = 0                              // Execution successfully
HB_UCP_INVALID_ARGUMENT = -100001               // Illegal parameter
HB_UCP_API_USE_ERROR = -100002                  // Interface use error
HB_UCP_INIT_FAILED = -100003                    // Init error
HB_UCP_UNKNOWN_ERROR = -100004                  // Intercept internal error code
// task error
HB_UCP_TASK_NUMBER_EXCEED_LIMIT = -200001       // Number of tasks exceeds the limit
HB_UCP_TASK_TIMEOUT = -200002                   // Task wait timeout
HB_UCP_TASK_RUN_FAILED = -200003                // Task failed to execute
HB_UCP_TASK_HANDLE_INVALID = -200004            // Illegal task handle
// op error
HB_UCP_OP_NUMBER_EXCEED_LIMIT = -300001         // Number of operators exceeds the limit
HB_UCP_OP_NOT_REGISTER = -300002                // The operator is not registered
HB_UCP_OP_CMD_UNAVAILABLE = -300003             // The operator command code is not available
// memory error
HB_UCP_MEM_ALLOC_FAIL = -400001                 // Failed to alloc memory
HB_UCP_MEM_FREE_FAIL = -400002                  // Failed to free memory
HB_UCP_MEM_FLUSH_FAIL = -400003                 // Failed to flush cached data to memory
HB_UCP_MEM_INVALIDATE_FAIL = -400004            // Failed to flush memory to cache
HB_UCP_MEM_IS_INVALID = -400005                 // Invalid memory
HB_UCP_MEM_MAP_FAIL = -400006                   // Failed to map memory
HB_UCP_MEM_UNMAP_FAIL = -400007                 // Failed to unmap memory
// file
HB_UCP_FILE_OPEN_FAILED = -500001               // Failed to open the file
// model
HB_UCP_MODEL_NUMBER_EXCEED_LIMIT = -600001      // Number of models exceeds the limit
HB_UCP_MODEL_INVALID = -600002                  // Illegal model
HB_UCP_MODEL_IS_INUSE = -600003                 // Model execution in progress
HB_UCP_MODEL_INCOMPATIBLE = -600004             // Incompatible model
// dsp
HB_UCP_DSP_UNAVAILABLE = -700001                // DSP unavailable
HB_UCP_DSP_XV_ALLOC_FAIL = -700002              // Failed to alloc DSP memory
HB_UCP_DSP_XV_FREE_FAIL = -700003               // Failed to free DSP memory
HB_UCP_DSP_IDMA_COPY_FAIL = -700004             // Failed to copy DSP DMA
HB_UCP_DSP_IDMA_BAD_INIT = -700005              // Failed to initialize DSP DMA
HB_UCP_DSP_MMAP_FAIL = -700006                  // Failed to map DSP memory
HB_UCP_DSP_INVALID_SCALE = -700007              // DSP invalid scaling
HB_UCP_DSP_UNMAP_FAIL = -700008                 // Failed to unmap DSP memory
HB_UCP_DSP_OFFLINE = -700009                    // DSP is offline
// codec
HB_UCP_CODEC_OPERATION_NOT_ALLOWED = -800001    // Not allowed JPU/VPU(Video Processing Unit) operation
HB_UCP_CODEC_INSUFFICIENT_RES = -800002         // Insufficient JPU/VPU(Video Processing Unit) memory resource
HB_UCP_CODEC_NO_FREE_INSTANCE = -800003         // Number of JPU/VPU(Video Processing Unit) instances exceeds the limit, JPEG supports up to 64
HB_UCP_CODEC_INVALID_INSTANCE = -800004         // Invalid instance
HB_UCP_CODEC_BUFFER_WAIT_TIMEOUT = -800005      // JPU/VPU(Video Processing Unit) Buffer wait timeout
HB_UCP_CODEC_IS_INUSE = -800006                 // JPU/VPU(Video Processing Unit) execution in progress
// isp
HB_UCP_ISP_NO_AVAILABLE_SLOT = -900001          // No ISP slot available
HB_UCP_ISP_CTX_INUSE = -900002                  // ISP ctx is being used

常见错误码说明

错误码可能原因应对措施
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_REGISTERDSP自定义算子未注册请检查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_UNAVAILABLEDSP通信不可用请检查DSP是否已经正常启动
HB_UCP_DSP_XV_ALLOC_FAILDSP侧申请tcm内存失败请检查DSP是否存在内存泄露或者有过大的内存需求
HB_UCP_DSP_MMAP_FAILDSP内存映射失败请检查地址信息是否属于hbmem,若仍有问题请联系地平线技术支持人员进行分析
HB_UCP_CODEC_OPERATION_NOT_ALLOWEDCodec状态异常导致操作失败,通常因非法状态引起请联系地平线技术支持人员进行分析
HB_UCP_CODEC_INSUFFICIENT_RES系统内存不足导致资源分配失败请检查并释放空闲内存资源
HB_UCP_CODEC_NO_FREE_INSTANCEContext实例数量已达上限请释放闲置实例后再创建
HB_UCP_CODEC_IS_INUSEContext释放时仍有任务占用请先释放所有关联任务再释放Context
小技巧

分析错误码时建议结合错误日志一起,并且可通过 环境变量 调整UCP日志等级,根据更详细的日志信息帮助排查问题。