You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确设置cuda-memcheck(compute-sanitizer)的--filter选项

cuda-memcheck racecheck 单Kernel过滤配置方法

--filter选项的官方文档描述中,{key1=val1}[{,key2=val2}]格式里的key1/key2和外层方括号都是格式占位标记,不是实际需要输入的内容。按Kernel名称过滤时固定使用预定义键kns(kernel name substring的缩写),对应值为目标Kernel的名称子串,整个参数串不能加多余空格、括号,也不能拆分键值对。

常见写法错误

  • 误将文档里的key1/key2占位符当作实际参数名写入
  • 逗号前后加空格,导致参数被Shell拆分为独立片段,触发无效选项报错
  • 误将标记可选内容的方括号当作参数内容输入
  • 直接把Kernel名放在--filter后,没有指定对应的过滤键

正确命令格式

cuda-memcheck --tool racecheck --filter kns=<目标Kernel名称> <可执行文件路径> [可执行文件启动参数]

使用示例

假设待检测Kernel名为vec_add_kernel,编译出的可执行文件为./my_cuda_app,程序运行需要传入参数./input.dat,完整检测命令为:

cuda-memcheck --tool racecheck --filter kns=vec_add_kernel ./my_cuda_app ./input.dat

使用注意事项

  • kns采用子串匹配规则,不需要输入CUDA编译器自动生成的Kernel完整修饰名(包括前缀标记、模板参数后缀等),只要传入的子串能唯一匹配目标Kernel即可;如果项目中存在同名Kernel,可以传入更长的特征子串避免误匹配
  • 过滤规则生效后,racecheck仅会对匹配到的Kernel插桩做竞态检测,其余Kernel直接跳过执行,检测速度相比全量开启racecheck有数量级提升,适配大体量CUDA项目的单Kernel调试需求
  • 如果需要叠加其他过滤规则(比如按所属源码模块、Kernel启动配置过滤),直接在filter参数后用无空格的逗号拼接键值对即可,例如同时限定Kernel所属源码文件为vec_ops.cu时,参数写法为--filter kns=vec_add_kernel,mod=vec_ops.cu
  • 除了已经配置的-Xcompiler -lineinfo参数,建议编译时加上-Xcompiler -rdynamic,可以让racecheck输出的报错栈、行号信息更完整准确

内容的提问来源于stack exchange,提问作者Samiran K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:12:16