下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

npucheck功能

功能介绍

npucheck功能表示CPU孪生调试时对Kernel运行过程中的OP指令进行内存检测,涉及的指令分类如表表1所示,用户根据检测信息进行算子问题定位和排查。

  • 该功能仅在CPU孪生调试场景下开启,其他场景不支持。
  • 该功能暂不支持与PRINTF/DumpTensor/DumpAccChkPoint/assert打印功能同时开启。
表1 npucheck检测的OP指令类

OP指令类别

指令说明

npucheck检测内容

OP_DMA

DMA(Direct Memory Access)数据搬运类指令。负责在Global Memory和Local Memory之间搬运数据,包含搬运单元MTE2(Memory Transfer Engine,数据搬入单元)指令,MTE3(数据搬出单元)指令等。

  • 数据读、写、多核踩踏等内存校验。
  • 同步合法性校验。

OP_VEC

vector向量相关操作指令。

根据vector指令配置,检测内存读、写、多核踩踏合法性。

OP_CUBE

cube矩阵相关操作指令。

根据cube指令配置,检测内存读、写、多核踩踏合法性。

OP_SETFLAG

set同步指令。

  • 检测数据同步合法性。
  • 配合OP_WAITFLAG指令,检测set/wait配对校验。

OP_WAITFLAG

wait同步指令。

配合OP_SETFLAG指令,检测set/wait配对校验。

Ascend C Buffer操作指令

包括tbuff的alloc、free、pers、init操作指令。

使用未初始化内存、重复释放内存、内存泄漏等异常操作的校验。

使用方法(命令行)

CPU孪生调试阶段默认开启npucheck功能,如需关闭,执行如下命令即可。这里仅提供关键参数项,其余参数请参考CPU调测参数按需设置。
ascendebug kernel --backend cpu --json-file ${op_config_json_file} --repo-type ${repo_type} --chip-version ${chip_version} --core-type ${core_type} --install-path ${cann_install_path} --work-dir ${work_dir} --npucheck false... {其他参数}

开启npucheck功能后,结果文件详细说明参见产物说明

使用方法(API)

参考CPU孪生调试 > 使用方法(API)步骤,实例化CpuOptions时,默认开启npucheck功能。如需关闭该功能,示例代码如下:

# 调用CPU编译运行接口前,关闭npucheck
cpu_options = ascendebug.CpuOptions(npucheck=False)

开启npucheck功能后,结果文件详细说明参见产物说明

产物说明

npucheck功能开启后,终端会屏显检测到的异常信息,同时将算子OP指令详细信息保存在${root}/${work_dir}/cpu/build/npuchk目录,其中${root}表示当前操作路径,${work_dir}表示调测工作空间,默认为/debug_workspace/${op_type}目录,${op_type}为算子名。目录结构示例如下:

├ ${op_type}                // 算子名
├── cpu
│   ├── build            // 存放CPU编译生成的中间文件
│       ├── xxx_cpu      // CPU编译生成的算子可执行程序
│       ├── npuchk      // npucheck结果存放路径
│           ├── auto_gen_${op_kernel_type}_kernel_${block_num}_${sblock_num}_${kernel_type}_npuchk.log
│           ├── npu_chk_res.log

文件名为auto_gen_${op_kernel_type}_kernel_${block_num}_${sblock_num}_${kernel_type}_npuchk.log,其中${op_kernel_type}是算子核函数名,${block_num}是block编号,${sblock_num}是子block编号,${kernel_type}是核类型标识(如cub、vec)。记录的OP指令信息内容示例如下:

### copy_ubuf_to_gm((__gm__ void*)0x7f75ef657fe0, (__ubuf__ void*)0x7f75c3358010, (uint8_t)0, (uint16_t)1, (uint16_t)4, (uint16_t)0, (uint16_t)0);
[MTE3] [RECV_INST] copy_ubuf_to_gm type 0
[MTE3] [EXECUTE] copy_ubuf_to_gm type 0
[MTE3] read  data 0x7f75c3358010 0x80 B type UB
[MTE3] checking synced queue
[MTE3] [CHECK_DATA] 0x7f75c3358010 0x80 B type UB
[MTE3] [ErrorRead2] on read 0x7f75c3358010 0x80 B

若检测到内存异常信息,npu_chk_res.log会显示检测到的异常信息,示例如下:

---------------------- ERROR STATISTICS ----------------------
1, ErrorRead4, 读取地址非32字节对齐
1, ErrorRead2, [可疑问题]读取无效数据:读取的内存部分/全部从未被写过,读取的数据可能是无效数据
1, ErrorRead1, 非法内存读取数据: 整段内存未经过AscendC框架的alloc_buf申请或者已free
1, ErrorWrite4, 写入地址非32字节对齐
1, ErrorWrite1, 非法内存写入数据: 未经过AscendC框架的alloc_buf申请过或者已经free了
1, ErrorRead3, 读取越界, 长度超出经AscendC框架的alloc_buf申请实际有效的数据(开始/结尾)

全量的异常检测上报信息字段说明参见表2

对于ErrorRead1、ErrorRead3、ErrorRead4、ErrorWrite1、ErrorWrite2、ErrorWrite4、ErrorLeak、ErrorFree、ErrorBuffer1异常,直接屏显异常信息,同时退出当前进程。用户可根据auto_gen_${op_kernel_type}_kernel_${block_num}_${sblock_num}_${kernel_type}_npuchk.log文件分析原因。

表2 npucheck异常类别

ERROR标识

异常可能得原因

ErrorRead1

非法内存读取数据:整段内存未经过Ascend C框架的alloc_buf申请或者已经free。

ErrorRead2

[可疑问题]读取无效数据:读取的内存部分/全部从未被写过,读取的数据可能是无效数据。

ErrorRead3

读取越界,长度超出经Ascend C框架的alloc_buf申请实际有效的数据(开始/结尾)。

ErrorRead4

读取地址非32字节对齐。

ErrorWrite1

非法内存写入数据:未经过Ascend C框架的alloc_buf申请或者已经free。

ErrorWrite2

写入越界,长度超出经Ascend C框架的alloc_buf申请实际有效的数据(开始/结尾)。

ErrorWrite3

[可疑问题]重复写入,前一次写入的内存没有被读取走,重复写入。

ErrorWrite4

写入地址非32字节对齐。

ErrorSync1

写入存在同步问题,pipe内缺少pipe barrier/pipe间缺少set/wait。

ErrorSync2

读取存在同步问题,pipe内缺少pipe barrier/pipe间缺少set/wait。

ErrorSync3

set/wait使用不配对,缺少set或者wait。

ErrorSync4

出现set/wait的eventID重复,比如mte2: set0/set0,vector: wait0/wait0。

ErrorLeak

内存泄露,存在申请内存未释放问题,详细见auto_gen_${op_kernel_type}_kernel_${block_num}_${sblock_num}_${kernel_type}_npuchk.log。

ErrorFree

内存重复释放,调用free_buf释放过,再次调用free_buf。

ErrorBuffer0

tensor内存未使用Ascend C框架的bufInit。

ErrorBuffer1

tensor的que类型与初始化时不一致。

ErrorBuffer2

VECIN/VECOUT/VECCALC的操作不合规。

ErrorBuffer3

tensor的操作内存不合法,可能原因是内存未alloc/内存越界。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词