检测Ascend CL调用的单算子
完成自定义算子的开发部署后,通过单算子API执行的方式调用,添加检测相关编译选项重新编译算子并部署,使用msSanitizer工具运行可执行文件实现算子进行异常检测。
操作步骤
- 参考创建算子工程完成算子工程的创建。
- 参考算子开发完成算子开发。
- 请参考算子编译部署,完成算子的编译部署。
在kernel侧实现中增加检测选项-sanitizer。
在op_kernel/CMakeLists.txt文件中新增如下命令,以支持检测功能
add_ops_compile_options(ALL OPTIONS -sanitizer)
- 进入自定义算子工程目录下重新编译部署算子。
bash build.sh ./build_out/custom_opp_ubuntu_aarch64.run
- 单击LINK,获取验证代码的样例工程。
├──input // 存放脚本生成的输入数据目录 ├──output // 存放算子运行输出数据和真值数据的目录 ├── inc // 头文件目录 │ ├── common.h // 声明公共方法类,用于读取二进制文件 │ ├── operator_desc.h // 算子描述声明文件,包含算子输入/输出,算子类型以及输入描述与输出描述 │ ├── op_runner.h // 算子运行相关信息声明文件,包含算子输入/输出个数,输入/输出大小等 ├── src │ ├── CMakeLists.txt // 编译规则文件 │ ├── common.cpp // 公共函数,读取二进制文件函数的实现文件 │ ├── main.cpp // 单算子调用应用的入口 │ ├── operator_desc.cpp // 构造算子的输入与输出描述 │ ├── op_runner.cpp // 单算子调用主体流程实现文件 ├── scripts │ ├── verify_result.py // 真值对比文件 │ ├── gen_data.py // 输入数据和真值数据生成脚本文件 │ ├── acl.json // acl配置文件
- 使用检测工具拉起算子API运行脚本。
mssanitizer --tool=memcheck bash run.sh # 内存检测需指定 --tool=memcheck mssanitizer --tool=racecheck bash run.sh # 竞争检测需指定 --tool=racecheck
- 参考内存异常报告解析和竞争检测报告解析分析异常行为。
父主题: 典型案例