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

工具概述

msSanitizer工具是基于昇腾AI处理器的一个异常检测工具,包含了内存检测和竞争检测两个子功能。用户使用msOpST工具在真实的硬件环境中对算子的功能进行测试后,可根据实际测试情况选择是否使用行msSanitizer工具进行异常检测。

  • 内存检测:工具可以在用户开发算子的过程中,协助定位非法读写、多核踩踏、非对齐访问、内存泄漏以及非法释放等内存问题。同时工具也支持对CANN软件栈的内存检测,帮助用户定界软件栈内存异常发生的模块。
  • 竞争检测:工具可以协助用户定位由于竞争风险可能导致的数据竞争问题,包含核内竞争和核间竞争问题。其中,核内竞争包含流水间竞争和流水内竞争

工具特性

msSanitizer通过不同子工具提供了不同类型的检测功能,目前已支持的功能如下:

表1 msSanitizer工具功能

使用场景

使用说明

使用示例

算子内存检测

内存检测

  • msSanitizer支持内核调用符调用的Ascend C算子(包括Vector、Cube算子和Mix融合算子)内存和竞争的检测,可参考内存检测
  • msSanitizer支持Ascend CL调用的Ascend C算子(包括Vector、Cube算子和Mix融合算子)内存和竞争的检测,可参考竞争检测

算子竞争检测

竞争检测

CANN软件栈的内存检测

内存检测

支持CANN软件栈内存检测,详细可参考检测CANN软件栈的内存

命令汇总

可以通过运行以下命令来调用msSanitizer工具。

mssanitizer <options> <user_program> <user_options>   
  • options为检测工具的命令行选项,详细的参数选项及其默认值,请参考表2表3,user_program为用户算子程序,user_options为用户程序的命令行选项
  • 如要加载的可执行文件或用户自定义程序本身带有命令行参数时,在可执行文件或用户程序之前使用“--”分隔检测工具和用户命令,如下所示:
    mssanitizer --check-cann-heap=yes --leak-check=yes -- ./<kernel_name>_npu  parameter1 parameter2 ...
表2 通用参数说明

参数名称

参数描述

参数取值

是否必选

-v,--version

查询msSanitizer工具版本。

-

-t,--tool

指定异常检测的子工具。

  • memcheck:内存检测(默认)
  • racecheck:竞争检测

--log-file

指定检测报告输出到文件。

{file_name},如配置为test_log。

说明:
  • 仅支持数字、大小写字母和- . / _四种符号。
  • 为避免日志泄露风险,建议限制该文件权限,确保只有授权人员才能访问该文件。

--log-level

指定检测报告输出等级。

  • info:输出info/warn/error级别的运行信息
  • warn:输出warn/error级别的运行信息(默认)
  • error:输出error级别的运行信息

--max-debuglog-size

指定检测工具调试输出日志中单个文件大小的上限。

可设定范围为1~10240之间的整数,单位为mb。

默认值为1024mb。

说明:

--max-debuglog-size=100就表示单个调试日志的大小上限为100mb。

-h,--help

输出帮助信息。

-

表3 内存检测参数说明

参数名称

参数描述

参数取值

是否必选

--leak-check

使能内存泄漏检测。

  • yes
  • no(默认)

--check-device-heap

使能device侧内存检测。

  • yes
  • no(默认)

--check-cann-heap

使能CANN软件栈内存检测。

  • yes
  • no(默认)

--check-unused-memory

使能内存分配未使用检测。

  • yes
  • no(默认)

--check-uninitialized-read

使能内存分配未初始化检测。

  • yes
  • no(默认)

  • --check-device-heap或--check-cann-heap使能后,将不会对kernel内进行检测。
  • Device侧内存检测和CANN软件栈内存检测不能同时使能,若同时使能会提示“--check-cann-heap and --check-device-heap CANNOT both enabled”。
  • 使用msSanitizer工具提供的API头文件重新编译的待检测程序只能用于AsecndCL系列接口的泄漏检测,无法用于Device接口的检测。

调用场景

支持如下调用算子的场景:
  • Kernel直调:核函数运行验证的场景。

    核函数运行验证的场景,详细信息可参考核函数运行验证简介

  • 通过AscendCL单算子调用:单算子API执行的场景。

    单算子API执行的场景,详细信息可参考单算子API调用

  • 第三方框架算子调用:Pytorch框架的场景。

    通过PyTorch框架进行单算子调用的场景,详细信息可参考PyTorch框架

结果件说明

结果件名称

说明

mssanitizer_{TIMESTAMP}_{PID}.log

msSanitizer工具运行过程中,在当前路径下生成的工具运行日志,TIMESTAMP由当前时间戳和当前使用的检测工具的PID组成。

kernel.{PID}.o

msSanitizer工具运行过程中,在当前路径下生成的算子缓存文件,PID为当前使用的检测工具的PID,该算子缓存文件用于解析异常调用栈。

  • 正常情况下,msSanitizer工具退出时会自动清理该算子缓存文件。
  • 当msSanitizer工具异常退出(如被用户“CTRL+C” 中止)时,该算子缓存文件会保留在文件系统中。因为该算子缓存文件包含算子的调试信息,建议限制其他用户对此文件的访问权限,并在检测工具运行完成后及时删除。
搜索结果
找到“0”个结果

当前产品无相关内容

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