用户可根据需求自行选择是否添加编译选项,具体请参见表1。
是否添加编译选项 |
支持的指令 |
功能差异 |
用途 |
---|---|---|---|
不添加 |
与GM相关的搬运指令 |
|
该场景支持的功能上有限制,仅适用于对算子内存异常中的非法读写和非对齐访问异常的快速定界。 |
添加 |
全量指令 |
|
通过不添加编译选项的功能快速定位异常算子后,再添加编译选项对异常算子进行全量检测,具体操作请参见开启全量检测。 |
如需要开启全量检测,需要在算子代码的编译阶段增加编译选项,不同算子工程添加编译选项的位置不同,下面以内核调用符场景和msOpGen算子工程编译场景准备为例进行介绍:
target_compile_options(${smoke_testcase}_npu PRIVATE -O2 -std=c++17 --cce-enable-sanitizer -g )
增加 --cce-enable-sanitizer 选项代表使能异常检测。
增加 -g 选项使编译器生成定位信息,将会在异常报告输出时显示异常发生的具体位置(文件名、行号以及调用栈等信息)。
git clone https://gitee.com/ascend/samples.git -b 8.0.RC2
target_link_options(${smoke_testcase}_npu PRIVATE --cce-fatobj-link --cce-enable-sanitizer )
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()
1 | git clone https://gitee.com/ascend/samples.git -b v1.0-8.1.RC1.alpha001 |
1 | bash install.sh -v Ascendxxxyy # xxxyy为用户实际使用的具体芯片类型 |
1 | cd CustomOp |
1 | add_ops_compile_options(ALL OPTIONS -sanitizer) |
环境准备和添加编译选项(可选)完成后,请参见启用内存检测和启用竞争检测章节使能msSanitizer工具的相关功能。