VECTOR 组件错误码#

  • 范围:FC0XXX - FC2XXX

  • 本文档说明 VECTOR 子类 OP 的错误码定义、场景说明与排查建议。

错误码定义与使用说明#

Vector相关错误码的统一定义,参见 /framework/src/interface/utils/vector_error.h 文件。

排查建议#

根据日志中不同ErrorCode关联到下述排查建议:

FC0000 ERR_PARAM_INVALID#

  1. 检查张量基础信息:确认输入输出张量的维度、数据类型、格式均为合法有效值。

  2. 检查维度合法性:确认向量维度为正整数,无零维、负维度等非法情况。

  3. 检查参数完整性:确认 Vector 接口必填参数均已传入,无缺失、无越界。

  4. 查日志上下文:通过相关日志查看参数详情,定位非法字段。

FC0001 ERR_PARAM_DTYPE_UNSUPPORTED#

  1. 检查数据类型:确认使用 NPU 支持的数据类型(如 FP32、FP16、INT32 等)。

  2. 检查类型组合:确认操作中涉及的多个张量数据类型匹配且均被支持。

  3. 检查操作支持:确认当前操作支持指定的数据类型。

  4. 查日志上下文:查看不支持的数据类型,切换为兼容类型重试。

FC1000 ERR_CONFIG_TILE#

  1. 检查 Tile 分块参数:确认分块大小在硬件支持范围内。

  2. 检查分块合理性:确认分块大小可整除对应维度,无非法零值。

  3. 检查分块策略:确认使用官方推荐的分块组合,无自定义非法分块。

  4. 查日志上下文:通过日志获取非法 tile 参数,修正分块配置。

FC1001 ERR_CONFIG_ALIGNMENT#

  1. 检查张量地址:确认设备地址按 16B/32B 对齐。

  2. 检查分块大小:确认 tile 大小满足硬件对齐约束。

  3. 检查维度对齐:确认向量维度满足硬件要求的对齐条件(如 32 字节对齐)。

  4. 查日志上下文:查看未对齐地址/大小,调整张量形状或使用内存分配接口重新申请。

FC2000 ERR_RUNTIME_NULLPTR#

  1. 检查输入输出张量:确认传入的 Tensor 非空且已完成地址分配。

  2. 检查上下文初始化:确认 vector 操作所需的上下文、配置句柄已正常创建。

  3. 检查函数入参:确认调用层未传入空指针到 vector 接口。

  4. 查日志上下文:定位空指针变量,检查上层初始化与赋值流程。

FC2001 ERR_RUNTIME_LOGIC#

  1. 检查执行分支:确认计算流程未进入未定义/异常分支。

  2. 检查中间结果:确认计算过程中临时数据、索引值符合预期。

  3. 检查不变量约束:确认核心计算逻辑的前置条件均满足。

  4. 查日志上下文:通过日志定位异常路径,核对计算逻辑。

排查手段#

排查步骤#

  1. 日志落盘:打开DEBUG日志,指定日志落盘路径:

export ASCEND_GLOBAL_LOG_LEVEL=0
export ASCEND_PROCESS_LOG_PATH=./my_log
  1. 检查入参:查阅对应算子或 API 文档,确认输入及输出 Tensor 是否符合 Vector 约束规格,包括 Shape,Dtype,Format 等。

  2. 检查切分设置:调用 Vector 算子前,会执行相关切分设置,检查设置的 TileShape 大小是否符合 Tiling 的切分约束。

典型场景#

以 ERR_CONFIG_ALIGNMENT 为例,表示输入 Tensor 未满足对齐约束,可以关注 reshape/view、交换维度(转置场景)、是否改变对应的维度对齐要求,例如,当进行向量操作时,某些操作可能要求输入张量的最后维度满足 32 字节对齐,需要确保输入数据的形状符合这一要求。