CUDA多个编译器警告
CUDA Multiple Compiler Warnings
我一直在Visual Studio 2012中使用CUDA v6.5进行开发,遇到了一个问题:编译.cu文件时,编译器会为单行源代码输出多个警告。通常情况下,这不会是一件大事,但它已经开始花很长时间来构建,我怀疑这可能就是原因。例如:
int unused = 0;
生成以下错误四次:
1>.../GeometryManager.cu(188): warning : variable "unused" was declared but never referenced
这些是传递给nvcc:的命令行参数
-gencode=arch=compute_35,code="sm_35,compute_35" --use-local-env --cl-version 2012
-ccbin "C:Program Files (x86)Microsoft Visual Studio 11.0VCbin"
-I"C:Program FilesNVIDIA GPU Computing ToolkitCUDAv6.5include"
-I"C:Program FilesNVIDIA GPU Computing ToolkitCUDAv6.5include"
-I"C:Program FilesNVIDIA GPU Computing ToolkitCUDAv6.5include"
-G --keep-dir Debug -maxrregcount=0 --machine 32 --compile
-cudart static -arch sm_20 -g -DNDEBUG -DWIN32 -D_DEBUG -D_CONSOLE
-D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MTd "
-o DebugGeometryManager.cu.obj "C:...GeometryManager.cu"
编译.cpp文件时,似乎会正常发出警告。到目前为止,我尝试将属性中"代码生成"的值更改为compute_35,sm_35(它以前列出了其中的几个),但没有帮助。
如果有CUDA或nvcc经验的人能对这种情况有所了解,我将不胜感激。关于如何使用CUDA减少构建时间的任何其他建议也会有所帮助。谢谢
它多次生成警告的原因是,由于指定了多个目标,它正在多次编译您的代码:
-gencode=arch=compute_35,code="sm_35,compute_35"
和
-arch sm_20
如果您不需要这两组目标,您可以通过删除其中一个(即从visual studio项目配置中删除它)来减少生成的警告消息并缩短编译时间。(在这种情况下,我认为您最终会得到2组警告,而不是4组。)
相关文章:
- 如何修复编译器警告 C6386 和 C6385?
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 为什么布尔开关语句有编译器警告?
- 奇怪的缩小转换在 g++ 编译器中加倍到浮点警告
- 处理编译器关于可能丢失数据的警告的最优雅方法是什么
- 使用 reverse_iterator 而不是const_reverse_iterator并获得讨厌的编译器警告和错误
- 添加 c++11 编译器后打开 devc++ 时显示的警告
- 来自 std::chrono 的编译器警告,但未被使用
- 警告级别为 3 的 int 的 std::vector push_back 处的编译器警告
- G++ 编译器未为未定义的方法生成错误/警告
- 从 int 中剥离位时,编译器会警告一个转换,但不警告其他转换.有解决方法吗?
- 有没有办法在从临时返回按值string_view时获得编译器警告?
- 常量更改而不const_cast<> 为什么没有编译器警告/错误?
- 为什么编译器不在同一翻译单元中警告 ODR 违规
- C++语法错误,编译器不会警告或 int v = func(&v) 出错;
- C++ 添加编译器警告,以错误使用自定义打印/日志功能
- 我正在尝试在我的类中创建一个静态成员,但编译器警告我它是未定义的
- 是否可以将移动的变量标记为不再可用,并在使用它时收到编译器警告?
- 为什么我应该始终启用编译器警告
- 使用Boost :: black在boost :: variant中使用时,请警告编译器