diff --git a/sample/README.md b/sample/README.md index 167b1a01cbd87c75eb6a6479a39fc198360a402f..22a6e9907683e57d51ded9d0c475fb3984925b67 100644 --- a/sample/README.md +++ b/sample/README.md @@ -11,6 +11,13 @@ source set_env.sh ``` +## 目录说明 + +| 目录 | 说明 | +|---|---| +| normal_sample | 可正常执行的算子样例 | +| sanitizer_sample | 用于异常检测的异常算子样例,详见[异常检测样例介绍](./sanitizer_sample/README.md) | + ## 算子调优 算子调优工具可以支持上板和仿真算子的调优,下面将以vec_only中的算子为例,进行工具使用的实战命令讲解 @@ -94,20 +101,35 @@ source set_env.sh 修改为: COMPILER_FLAG := -xcce -O0 -std=c++17 -g -mllvm -cce-aicore-function-stack-size=0x8000 -mllvm -cce-aicore-stack-size=0x8000 -mllvm -cce-aicore-jump-expand=true -## 内存检测 sanitizer -### sanitizer_sample目录介绍 +## 异常检测 mssanitizer -此目录下为sanitizer对应的样例库,包含竞争检测和内存检测相关的样例。 +### 使用前准备 +若使用 mssanitizer 对算子进行异常检测,还需要加入额外编译选项,具体如下: -#### Racecheck目录介绍 +在 `sample\normal_sample\vec_only` 相对路径下的 `Makefile` 文件中修改如下内容: -Racecheck为竞争检测相关的样例。 - -raw_error_kernel.cpp文件为UB上先读后写竞争和GM上先写后读竞争问题的样例。 +1. 编译阶段增加 `-g --cce-enable-sanitizer` 选项启用检测功能 + ``` makefile + COMPILER_FLAG := -xcce -O2 -std=c++17 + # 修改为: + COMPILER_FLAG := -xcce -O2 -std=c++17 --cce-enable-sanitizer -g + ``` +2. 链接阶段增加 `--cce-enable-sanitizer` 选项启用检测功能 + ``` makefile + LINK_FLAG := --cce-fatobj-link + # 修改为: + LINK_FLAG := --cce-fatobj-link --cce-enable-sanitizer + ``` +`sample\sanitizer_sample` 目录下的样例均已支持检测功能,也可参考此目录下的样例进行修改。 -运行阶段: +### 运行异常检测工具 -``` -/usr/local/Ascend/ascend-toolkit/latest/tools/mssanitizer/bin/mssanitizer --tool=racecheck ./raw_error.fatbin -``` \ No newline at end of file +1. 内存检测 + ``` bash + mssanitizer -t memcheck ./illegal_align.fatbin + ``` +2. 竞争检测 + ``` bash + mssanitizer -t racecheck ./raw_error.fatbin + ``` \ No newline at end of file diff --git a/sample/build/build.sh b/sample/build/build.sh index bbb2915b04c1c28828dbb7de6f00c28ca8bbe45f..c19216d80581288c9818b7899824ea70458b3d67 100644 --- a/sample/build/build.sh +++ b/sample/build/build.sh @@ -33,6 +33,6 @@ cd ${TOP_DIR}/sanitizer_sample/memcheck/illegal_align make mv *.fatbin ${TOP_DIR}/build -cd ${TOP_DIR}/sanitizer_sample/Racecheck +cd ${TOP_DIR}/sanitizer_sample/racecheck/raw_race make mv *.fatbin ${TOP_DIR}/build \ No newline at end of file diff --git a/sample/sanitizer_sample/README.md b/sample/sanitizer_sample/README.md new file mode 100644 index 0000000000000000000000000000000000000000..132cadca082b0bdfa40e374ec707e805e0257cbd --- /dev/null +++ b/sample/sanitizer_sample/README.md @@ -0,0 +1,19 @@ +# 异常检测样例介绍 + +## 内存检测样例 + +用于展示内存检测的异常用例在 `memcheck` 目录下,各样例的功能说明如下: + +| 样例 | 说明 | +|---|---| +| illegal_align | 用于展示非法对齐访问异常检测的样例 | +| illegal_read_and_write | 用于展示非法读写异常检测的样例 | +| out_of_bound | 用于展示多核内存踩踏异常检测的样例 | + +## 竞争检测样例 + +用于展示竞争检测的异常用例在 `racecheck` 目录下,各样例的功能说明如下: + +| 样例 | 说明 | +|---|---| +| raw_race | 用于展示 read-after-write 竞争检测的样例 | \ No newline at end of file diff --git a/sample/sanitizer_sample/Racecheck/Makefile b/sample/sanitizer_sample/racecheck/raw_race/Makefile similarity index 86% rename from sample/sanitizer_sample/Racecheck/Makefile rename to sample/sanitizer_sample/racecheck/raw_race/Makefile index ac230761b61a28fa17decd73803949826b91aee0..10d070e183fe0ca5d3ba293db2cd2275258e4938 100644 --- a/sample/sanitizer_sample/Racecheck/Makefile +++ b/sample/sanitizer_sample/racecheck/raw_race/Makefile @@ -12,17 +12,17 @@ LINK_LIBS := -L${ASCEND_HOME_PATH}/lib64 -lruntime -lascendcl all: build -build: raw_error_kernel.o main.o raw_error.fatbin +build: raw_race_kernel.o main.o raw_race.fatbin -raw_error_kernel.o: raw_error_kernel.cpp +raw_race_kernel.o: raw_race_kernel.cpp $(COMPILER) $(COMPILER_FLAG) $(DAV_FLAG) $(ASCENDC_INC_FLAG) -o $@ -c $^ main.o: main.cpp $(HOST_COMPILER) $(HOST_COMPILER_FLAG) $(HOST_INC_FLAG) -o $@ -c $^ -raw_error.fatbin: raw_error_kernel.o main.o +raw_race.fatbin: raw_race_kernel.o main.o $(COMPILER) $(LINK_FLAG) $(DAV_FLAG) -o $@ $^ ${LINK_LIBS} .PHONY: clean clean: - rm *.o raw_error.fatbin + rm *.o raw_race.fatbin diff --git a/sample/sanitizer_sample/Racecheck/main.cpp b/sample/sanitizer_sample/racecheck/raw_race/main.cpp similarity index 100% rename from sample/sanitizer_sample/Racecheck/main.cpp rename to sample/sanitizer_sample/racecheck/raw_race/main.cpp diff --git a/sample/sanitizer_sample/Racecheck/raw_error_kernel.cpp b/sample/sanitizer_sample/racecheck/raw_race/raw_race_kernel.cpp similarity index 100% rename from sample/sanitizer_sample/Racecheck/raw_error_kernel.cpp rename to sample/sanitizer_sample/racecheck/raw_race/raw_race_kernel.cpp