我正在尝试将 CUDA 集成到使用 boost::spirit 的现有应用程序。
隔离问题后,我发现以下代码无法使用 nvcc 编译:
main.cu
:
#include <boost/spirit/include/qi.hpp>
int main(){
exit(0);
}
编译用nvcc -o cudaTest main.cu
我收到很多可以看到的错误here http://pastebin.com/4X9LGDU4.
但是如果我将文件名更改为main.cpp
,然后使用再次编译nvcc
, 有用。这里发生了什么以及我该如何解决它?
nvcc
有时在编译复杂的模板代码(例如 Boost 中的代码)时会遇到问题,即使该代码仅用于__host__
功能。
当文件的扩展名是.cpp
, nvcc
本身不执行解析,而是将代码转发到主机编译器,这就是为什么您会根据文件扩展名观察到不同的行为。
如果可能的话,尝试将依赖于 Boost 的代码隔离到.cpp
不需要解析的文件nvcc
.
我也一定要尝试一下nvcc
与最近的CUDA 4.1 http://developer.nvidia.com/cuda-toolkit-41. nvcc
的模板支持随着每个版本的发布而改进。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)