SuperAPI AI 工具集

ascendc-mssanitizer

数据与分析

查看项目

更新于 10-15 19:58

技能介绍

用途:系统化检测 Ascend C 算子的内存正确性问题并生成分析报告。mssanitizer(MindStudio Sanitizer)是 CANN 提供的内存正确性检测工具套件,可检测内存泄漏、非法内存访问、未初始化内存使用、数据竞争与同步问题。

主要能力:提供四类检测工具——memcheck(非法内存访问、非法释放、内存泄漏、UB 地址越界)、racecheck(多核并行竞争与数据竞争)、initcheck(未初始化内存读取)、synccheck(同步错误)。常用参数包括 -t 指定工具、--leak-check、--check-device-heap、--check-cann-heap、--log-file、--log-level、--kernel-name、--block-id、--cache-size。注意 --check-device-heap 与 --check-cann-heap 互斥,需分两次运行。

使用方式:先判断工程类型。存在 op_graph/、op_host/op_api/、examples/test_geir_.cpp 或 examples/test_aclnn_.cpp 的 ops 算子仓使用 C++ 模式;否则为自定义算子仓,使用 Python 模式。Python 模式先用 scripts/gen_test_script.py 生成测试脚本,再执行 scripts/run_mssanitizer.sh;C++ 模式执行 scripts/run_mssanitizer_geir.sh,脚本自动识别 GE IR 或 aclnn 子模式并构建可执行文件。日志可用 scripts/parse_mssanitizer_log.py 解析。需先设置 ASCEND_HOME_PATH 与 LD_LIBRARY_PATH 并激活 CANN 环境。

适用场景:算子开发完成后、修改内存相关代码后、提交代码前的内存安全验证。

限制:mssanitizer 会显著降低运行速度(可能慢 10-100 倍),仅用于调试;检测需额外内存;部分问题不一定每次复现,建议多次运行;日志文件为 0 字节表示该项通过而非工具未运行;未添加 -g 编译选项时日志可能显示 <unknown>:0。CANN 版本需 8.0+,容器中多套 CANN 时需显式指定路径。