如何查找特定NVCC编译警告的标识并禁用
NVCC 警告标识查询及抑制指南
常见查询渠道说明
NVCC 编译产生的警告分两类,对应查询方式不同:
- 宿主侧编译警告:由前端 GCC/Clang 生成,可直接使用
-W<警告标识>控制开关,对应标识可查询本地 C 编译器的官方文档 - 设备侧编译警告:由 cudafe 核心前端生成,需通过
-Xcudafe "--diag_suppress=<警告标识>"参数抑制,对应标识可通过两种本地渠道直接获取:- 编译时追加
-Xcudafe --display_error_number参数,所有警告输出会附带唯一的数字错误码或短标识,可直接用于抑制命令 - 查阅本地 CUDA 安装路径下的
errmsg.xml配置文件,该文件存储了全部 cudafe 警告的标识、说明、默认等级,无需联网查询
- 编译时追加
注:你此前参考的 Intel 编译器警告列表不属于 NVCC 的警告体系,无法查询到对应条目属于正常情况。
你遇到的特定警告对应抑制方案
当前遇到的两条「__host__/__device__ 注解在显式默认声明的函数上被忽略」警告,对应 cudafe 抑制标识为 decl_annot_ignored,直接在编译命令中追加以下参数即可同时抑制同类警告:-Xcudafe "--diag_suppress=decl_annot_ignored"
该警告属于 Eigen 库头文件与高版本 CUDA 编译器的适配兼容性问题,并非业务代码逻辑错误,直接抑制不会影响程序运行正确性。
内容的提问来源于stack exchange,提问作者A_Man
相关产品推荐
相关产品推荐

