下载
中文
注册

使用前准备

环境准备

请参考环境准备,完成相关环境变量的配置。

添加编译选项

不同算子工程添加编译选项的位置不同,下面以内核调用符场景msOpGen算子工程编译场景准备为例进行介绍:

  • 内核调用符场景
    • 算子代码的编译选项需添加 -g --cce-enable-sanitizer。
      编辑样例工程目录下的“cmake/npu/CMakeLists.txt”文件,单击LINK参考核函数开发和运行验证的完整样例。
      下载代码样例时,需执行以下命令指定分支版本。
      git clone https://gitee.com/ascend/samples.git -b 8.0.RC2
      1
      2
      3
      4
      5
      6
      target_compile_options(${smoke_testcase}_npu PRIVATE
                           -O2
                           -std=c++17
                           --cce-enable-sanitizer
                           -g
      )
      

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

      增加 -g 选项使编译器生成定位信息,将会在异常报告输出时显示异常发生的具体位置(文件名、行号以及调用栈等信息)。

      • --cce-enable-sanitizer和-O0同时开启的情况下,需要增加编译选项 --cce-ignore-always-inline=false。
      • 添加 -g 编译选项会在生成的二进制文件中附带调试信息,建议限制带有调试信息的用户程序的访问权限,确保只有授权人员可以访问该二进制文件。
      • 因 llvm-symbolizer开源软件限制,调用栈的异常信息可能会获取失败。此时,用户可再次执行检测命令,就可以获取调用栈的异常信息。
    • 链接阶段需增加target_link_options选项。
      • 编辑样例工程目录下的“cmake/npu/CMakeLists.txt”文件。
        1
        2
        3
        4
        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,该文件的获取可参考核函数运行验证简介
  • msOpGen算子工程编译场景
    • op_kernel侧编译选项中添加-sanitizer选项,具体请参考支持自定义编译选项
    • 编辑样例工程目录下的“op_kernel/CMakeLists.txt”文件。
      add_ops_compile_options(ALL OPTIONS -sanitizer)