VECTOR 组件错误码#
范围:FC0XXX - FC2XXX
本文档说明 VECTOR 子类 OP 的错误码定义、场景说明与排查建议。
错误码定义与使用说明#
Vector相关错误码的统一定义,参见 /framework/src/interface/utils/vector_error.h 文件。
排查建议#
根据日志中不同ErrorCode关联到下述排查建议:
FC0000 ERR_PARAM_INVALID#
检查张量基础信息:确认输入输出张量的维度、数据类型、格式均为合法有效值。
检查维度合法性:确认向量维度为正整数,无零维、负维度等非法情况。
检查参数完整性:确认 Vector 接口必填参数均已传入,无缺失、无越界。
查日志上下文:通过相关日志查看参数详情,定位非法字段。
FC0001 ERR_PARAM_DTYPE_UNSUPPORTED#
检查数据类型:确认使用 NPU 支持的数据类型(如 FP32、FP16、INT32 等)。
检查类型组合:确认操作中涉及的多个张量数据类型匹配且均被支持。
检查操作支持:确认当前操作支持指定的数据类型。
查日志上下文:查看不支持的数据类型,切换为兼容类型重试。
FC1000 ERR_CONFIG_TILE#
检查 Tile 分块参数:确认分块大小在硬件支持范围内。
检查分块合理性:确认分块大小可整除对应维度,无非法零值。
检查分块策略:确认使用官方推荐的分块组合,无自定义非法分块。
查日志上下文:通过日志获取非法 tile 参数,修正分块配置。
FC1001 ERR_CONFIG_ALIGNMENT#
检查张量地址:确认设备地址按 16B/32B 对齐。
检查分块大小:确认 tile 大小满足硬件对齐约束。
检查维度对齐:确认向量维度满足硬件要求的对齐条件(如 32 字节对齐)。
查日志上下文:查看未对齐地址/大小,调整张量形状或使用内存分配接口重新申请。
FC2000 ERR_RUNTIME_NULLPTR#
检查输入输出张量:确认传入的 Tensor 非空且已完成地址分配。
检查上下文初始化:确认 vector 操作所需的上下文、配置句柄已正常创建。
检查函数入参:确认调用层未传入空指针到 vector 接口。
查日志上下文:定位空指针变量,检查上层初始化与赋值流程。
FC2001 ERR_RUNTIME_LOGIC#
检查执行分支:确认计算流程未进入未定义/异常分支。
检查中间结果:确认计算过程中临时数据、索引值符合预期。
检查不变量约束:确认核心计算逻辑的前置条件均满足。
查日志上下文:通过日志定位异常路径,核对计算逻辑。
排查手段#
排查步骤#
日志落盘:打开DEBUG日志,指定日志落盘路径:
export ASCEND_GLOBAL_LOG_LEVEL=0
export ASCEND_PROCESS_LOG_PATH=./my_log
检查入参:查阅对应算子或 API 文档,确认输入及输出 Tensor 是否符合 Vector 约束规格,包括 Shape,Dtype,Format 等。
检查切分设置:调用 Vector 算子前,会执行相关切分设置,检查设置的 TileShape 大小是否符合 Tiling 的切分约束。
典型场景#
以 ERR_CONFIG_ALIGNMENT 为例,表示输入 Tensor 未满足对齐约束,可以关注 reshape/view、交换维度(转置场景)、是否改变对应的维度对齐要求,例如,当进行向量操作时,某些操作可能要求输入张量的最后维度满足 32 字节对齐,需要确保输入数据的形状符合这一要求。