首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++文件中的cuda集成

C++文件中的cuda集成
EN

Stack Overflow用户
提问于 2015-01-17 14:02:08
回答 1查看 2K关注 0票数 0

我已经阅读了关于将.cu文件包含到其他人之前编写的.cpp文件中的所有相关主题,但没有任何东西对我有帮助。

在我的项目的C++文件中包含文件有问题。我的项目结构如下:main.cpp compute.h compute.cpp kernel.cu

main.cpp不仅仅是我的项目的入口main()点。几个_host_ cuda函数,它包括compute.h,因为它调用了compute.h中定义的一些函数。

compute.cpp只有C++函数,使用sum<<<1,numbloc>>>(list of parameters)函数,该函数引用kernel.cu设备代码。然后,我将kernel.cu包含在compute.cpp头中。但是,在用cuda 5.0在visual 2008上编译时,我遇到了问题,错误说

代码语言:javascript
运行
复制
error C3861:'_syncthreads':identifier not found

但是,当我用一个包含main.cumain(){}函数的_host_函数编写projetc时,它的构建没有错误。

我是否可以保持上面描述的项目结构,并且不出错地运行我的项目?请帮帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-17 14:12:16

默认情况下,.cpp文件不能包含任何非普通C/C++语法的内容。库达内核调用kernel<<<...>>>()不能在.cpp文件中,除非您将特殊的开关传递给nvcc。

因此,通常的建议是将使用CUDA的任何文件重命名为具有.cu扩展名而不是.cpp扩展名,并使用nvcc编译该文件。

这同样适用于任何数据自动化系统特定的语法。(请注意,这并不意味着对CUDA (如cudaMalloc )的调用,只要包含cuda_runtime.h并正确链接,就可以在普通的.cpp文件中进行调用。)因此,如果您的__host__函数装饰器在您的main.cpp中,那么它也不能工作(使用默认的编译器设置)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28000235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档