2024-10-02 22:30:34 发布
网友
我正在尝试将CUDA集成到一个使用boost::spirit的现有应用程序中。在
隔离问题后,我发现以下代码不能与nvcc一起复制:
{#include <boost/spirit/include/qi.hpp> int main(){ exit(0); } 用nvcc -o cudaTest main.cu编译时,我得到了很多可以看到here的错误。在但如果我将文件名改为main.cpp,并使用nvcc再次编译,它就可以工作了。这里发生了什么?我该怎么解决它?在
#include <boost/spirit/include/qi.hpp> int main(){ exit(0); }
用nvcc -o cudaTest main.cu编译时,我得到了很多可以看到here的错误。在
nvcc -o cudaTest main.cu
但如果我将文件名改为main.cpp,并使用nvcc再次编译,它就可以工作了。这里发生了什么?我该怎么解决它?在
main.cpp
nvcc
nvcc有时在编译复杂的模板代码(如Boost中的代码)时遇到问题,即使代码只用于__host__函数中。在
__host__
当文件的扩展名是.cpp,nvcc本身不执行解析,而是将代码转发给主编译器,这就是为什么根据文件扩展名观察到不同的行为。在
.cpp
如果可能,尝试将依赖Boost的代码隔离到.cpp文件中,这些文件不需要nvcc解析。在
我还要确保尝试一下最近的CUDA 4.1附带的nvcc。nvcc的模板支持随着每个版本的增加而提高。在
nvcc
有时在编译复杂的模板代码(如Boost中的代码)时遇到问题,即使代码只用于__host__
函数中。在当文件的扩展名是
.cpp
,nvcc
本身不执行解析,而是将代码转发给主编译器,这就是为什么根据文件扩展名观察到不同的行为。在如果可能,尝试将依赖Boost的代码隔离到
.cpp
文件中,这些文件不需要nvcc
解析。在我还要确保尝试一下最近的CUDA 4.1附带的
nvcc
。nvcc
的模板支持随着每个版本的增加而提高。在相关问题 更多 >
编程相关推荐