工具概述
msSanitizer工具是基于昇腾AI处理器的一个异常检测工具,包含了内存检测和竞争检测两个子功能。用户使用msOpST工具在真实的硬件环境中对算子的功能进行测试后,可根据实际测试情况选择是否使用msSanitizer工具进行异常检测。
- 内存检测:工具可以在用户开发算子的过程中,协助定位非法读写、多核踩踏、非对齐访问、内存泄漏以及非法释放等内存问题。同时工具也支持对CANN软件栈的内存检测,帮助用户定界软件栈内存异常发生的模块。
 - 竞争检测:工具可以协助用户定位由于竞争风险可能导致的数据竞争问题,包含核内竞争和核间竞争问题。其中,核内竞争包含流水间竞争和流水内竞争。 
     
 
      msSanitizer工具不支持对多线程算子、二级指针类算子及使用了掩码的向量类计算指令进行检测。
 
工具特性
msSanitizer通过不同子工具提供了不同类型的检测功能,目前已支持的功能如下:
命令汇总
可以通过运行以下命令来调用msSanitizer工具。
mssanitizer <options> <user_program> <user_options>
 
     
    | 
          参数名称  | 
        
          参数描述  | 
        
          参数取值  | 
        
          是否必选  | 
       
|---|---|---|---|
| 
          -v,--version  | 
        
          查询msSanitizer工具版本。  | 
        
          -  | 
        
          否  | 
       
| 
          -t,--tool  | 
        
          指定异常检测的子工具。  | 
        
         
  | 
        
          否  | 
       
| 
          --log-file  | 
        
          指定检测报告输出到文件。  | 
        
          {file_name},如配置为test_log。 
           说明: 
           
  | 
        
          否  | 
       
| 
          --log-level  | 
        
          指定检测报告输出等级。  | 
        
         
  | 
        
          否  | 
       
| 
          --max-debuglog-size  | 
        
          指定检测工具调试输出日志中单个文件大小的上限。  | 
        
          可设定范围为1~10240之间的整数,单位为mb。 默认值为1024mb。 
           说明: 
           --max-debuglog-size=100就表示单个调试日志的大小上限为100mb。  | 
        
          否  | 
       
| 
          -h,--help  | 
        
          输出帮助信息。  | 
        
          -  | 
        
          否  | 
       
| 
          参数名称  | 
        
          参数描述  | 
        
          参数取值  | 
        
          是否必选  | 
       
|---|---|---|---|
| 
          --leak-check  | 
        
          使能内存泄漏检测。  | 
        
         
  | 
        
          否  | 
       
| 
          --check-device-heap  | 
        
          使能device侧内存检测。  | 
        
         
  | 
        
          否  | 
       
| 
          --check-cann-heap  | 
        
          使能CANN软件栈内存检测。  | 
        
         
  | 
        
          否  | 
       
| 
          --check-unused-memory  | 
        
          使能内存分配未使用检测。  | 
        
         
  | 
        
          否  | 
       
| 
          --check-uninitialized-read  | 
        
          使能内存分配未初始化检测。  | 
        
         
  | 
        
          否  | 
       
 
     - --check-device-heap或--check-cann-heap使能后,将不会对kernel内进行检测。
 - Device侧内存检测和CANN软件栈内存检测不能同时使能,若同时使能会提示“--check-cann-heap and --check-device-heap CANNOT both enabled”。
 
- 使用msSanitizer工具提供的API头文件重新编译的待检测程序只能用于AsecndCL系列接口的泄漏检测,无法用于Device接口的检测。
 
调用场景
结果件说明
| 
          结果件名称  | 
        
          说明  | 
       
|---|---|
| 
          mssanitizer_{TIMESTAMP}_{PID}.log  | 
        
          msSanitizer工具运行过程中,在当前路径下生成的工具运行日志,TIMESTAMP由当前时间戳和当前使用的检测工具的PID组成。  | 
       
| 
          kernel.{PID}.o  | 
        
          msSanitizer工具运行过程中,在当前路径下生成的算子缓存文件,PID为当前使用的检测工具的PID,该算子缓存文件用于解析异常调用栈。 
  |