昇腾社区首页
中文
注册

使用前准备

工具路径

使用的LINKmssanitizer检测工具安装在Ascend-cann-toolkit开发套件包中,工具路径为${INSTALL_DIR}/tools/mssanitizer/bin/mssanitizer。
  • ${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。例如,若安装的Ascend-cann-toolkit软件包,则安装后文件存储路径为:$HOME/Ascend/ascend-toolkit/latest。
  • 若完成了环境准备章节中的环境变量配置,可无需切换目录直接执行mssanitizer命令。

内核调用符场景准备

  • 算子代码的编译选项需添加 -g --cce-enable-sanitizer。
    编辑样例工程目录下的“cmake/npu/CMakeLists.txt”文件,单击LINK参考核函数开发和运行验证的完整样例。
    target_compile_options(${smoke_testcase}_npu PRIVATE
                         -O2
                         -std=c++17
                         --cce-enable-sanitizer
                         -g
    )

    增加 --cce-enable-sanitizer 选项代表使能异常检测。

    为了在异常报告输出时显示异常发生的具体位置,增加 -g 选项使编译器生成定位信息,从而在报告中显示文件名行号等信息。

    • 开启-O2后可能会导致编译器对某些代码进行优化,造成行号被异常报告为0,此时,需将-O2改为-O0,通过-O0关闭优化获取正确定位信息。
    • 下载代码样例时,需执行以下命令指定分支版本。
      git clone https://gitee.com/ascend/samples.git -b 8.0.RC1
  • 链接阶段需增加target_link_options选项。
    • 编辑样例工程目录下的“cmake/npu/CMakeLists.txt”文件。
      target_link_options(${smoke_testcase}_npu PRIVATE
          --cce-fatobj-link
          --cce-enable-sanitizer
      )
    • 编辑样例工程目录下的“cmake/Modules/CMakeCCEInformation.cmake”文件。
      if(NOT CMAKE_CCE_LINK_EXECUTABLE)
        set(CMAKE_CCE_LINK_EXECUTABLE
          "<CMAKE_CCE_COMPILER> ${CMAKE_LIBRARY_CREATE_CCE_FLAGS} ${_CMAKE_COMPILE_AS_CCE_FLAG} <FLAGS> <CMAKE_CCE_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>${__IMPLICIT_LINKS}")
      endif()
  • 启用msSanitizer检测工具时需要加载NPU侧可执行文件<kernel_name>_npu,该文件的获取可参考Ascend C算子开发指南中的“算子调用 > Kernel直调 > 核函数运行验证”章节。

使用约束

  • device侧内存检测和CANN软件栈内存检测不能同时使能,如同时使能会提示“--check-cann-heap and --check-device-heap CANNOT both enabled”。
  • 使用工具提供的API头文件重新编译的待检测程序只能用于AsecndCL系列接口的泄漏检测,无法用于device接口的检测。
  • 如要加载的可执行文件或用户自定义程序本身带有命令行参数时,在可执行文件或用户程序之前使用“--”分隔检测工具和用户命令,如下所示:
    mssanitizer --check-cann-heap=yes --leak-check=yes -- ./<kernel_name>_npu  parameter1 parameter2 ...
  • 如需要加载python脚本,python解析器所在路径需要配置为绝对路径,如下所示:
    mssanitizer --check-cann-heap=yes --leak-check=yes -- /usr/bin/python3 prog.py

    /usr/bin/python3为python解析器所在绝对路径,prog.py为用户自定义脚本。

    不建议配置其他用户目录或其他用户可写目录下的自定义脚本,避免提权风险。

    自定义脚本中不建议配置删除文件或目录、修改密码、提权命令等有安全风险的高危操作。