MUSA Compute Sanitizer 用户指南
什么是 MUSA Compute Sanitizer?
MUSA Compute Sanitizer(简称 mt-compute-sanitizer)是摩尔线程自主研发的 GPU 运行时调试工具,专为 MUSA GPU 应用程序设计。该工具可帮助开发者在程序运 行时检测和定位内存错误,包括越界访问、内存泄漏和 API 调用错误等问题。MUSA Compute Sanitizer 通过详细的错误报告和调用栈信息,帮助开发者快速定位并修复问题,提高代码质量和开发效率。
主要功能
| 功能 | 默认状态 | 说明 |
|---|---|---|
| global memory 越界检查 | 默认启用 | 检测 kernel 访问不属于自己的 global memory 地址。 |
| MUSA API 错误检查 | 默认启用 | 报告 MUSA Runtime / Driver API 返回的错误。 |
| 显存泄漏检查 | 默认关闭 | 检测 musaMalloc() 后未正确 musaFree() 的显存,需要 --leak-check=full。 |
备注
显存泄漏检查不是默认项。排查泄漏或长稳显存增长问题时,必须显式添加 --leak-check=full。
推荐运行方式
最常用的方式是在原始测试命令前加 mt-compute-sanitizer,并使用 --log-file 保存 MT Compute Sanitizer 日志:
/usr/local/musa/bin/mt-compute-sanitizer \
--log-file san.log \
./your_test_program --case-args
建议同时保存应用输出:
/usr/local/musa/bin/mt-compute-sanitizer \
--log-file san.log \
./your_test_program --case-args \
> app.out 2>&1
| 文件 | 内容 |
|---|---|
san.log | MT Compute Sanitizer 检查到的 OOB、leak、API error、错误汇总。 |
app.out | 被测程序自己的输出、报错和测试框架日志。 |
环境检查
排查问题前建议记录环境信息:
mthreads-gmi
/usr/local/musa/bin/mcc --version
/usr/local/musa/bin/mt-compute-sanitizer --version
/usr/local/musa/bin/mt-compute-sanitizer -h
提报问题时至少保留 Driver、Toolkit、mt-compute-sanitizer 版本和完整命令。
内存错误检测
越界检查
global memory 越界检查默认启用。典型命令如下:
/usr/local/musa/bin/mt-compute-sanitizer \
--log-file oob.log \
./your_test_program --case-args \
> oob.out 2>&1
查看结果:
grep "ERROR SUMMARY" oob.log
grep -n "Out of bounds memory access\|ERROR SUMMARY" oob.log