为什么nvcc不能用boost::spirit编译CUDA文件?

2024-10-02 22:30:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将CUDA集成到一个使用boost::spirit的现有应用程序中。在

隔离问题后,我发现以下代码不能与nvcc一起复制:

{

#include <boost/spirit/include/qi.hpp>
int main(){
    exit(0);
}

nvcc -o cudaTest main.cu编译时,我得到了很多可以看到here的错误。在

但如果我将文件名改为main.cpp,并使用nvcc再次编译,它就可以工作了。这里发生了什么?我该怎么解决它?在


Tags: 代码应用程序hereincludemainexitcudaint
1条回答
网友
1楼 · 发布于 2024-10-02 22:30:34

nvcc有时在编译复杂的模板代码(如Boost中的代码)时遇到问题,即使代码只用于__host__函数中。在

当文件的扩展名是.cppnvcc本身不执行解析,而是将代码转发给主编译器,这就是为什么根据文件扩展名观察到不同的行为。在

如果可能,尝试将依赖Boost的代码隔离到.cpp文件中,这些文件不需要nvcc解析。在

我还要确保尝试一下最近的CUDA 4.1附带的nvccnvcc的模板支持随着每个版本的增加而提高。在

相关问题 更多 >