小弟刚入手cuda,开始编写相关程序,遇到一个问题。。
在涉及cuda的程序中,可能会有下面几部分(考虑稍大点的项目,不想用一个cu文件实现):
- 主程序main
- c/c++函数
- c调用cuda的函数(包括InitCuda之类,以及cudaMalloc命令之类的函数)
- cuda核函数
这几部分应该分别放在什么地方?放在c/c++, cu?各部分单独放好,还是合起来方便?
相互之间的应该如何引用?
(这部分的资料好像较少,欢迎大家指导)
小弟刚入手cuda,开始编写相关程序,遇到一个问题。。
在涉及cuda的程序中,可能会有下面几部分(考虑稍大点的项目,不想用一个cu文件实现):
同求答案,我也有这样的困惑
我后来试了一下,发现以下的方案比较可行,不知道有没有更好的。。
1.建立一个cuda工程(建立这个工程的目的是为了不用各种配置)
2.建立main.cpp文件,里面就放主流程好了。。
3.建立func.h和func.cpp(名字自定义)文件,分别放纯c/c++的函数声明和定义。。
4.建立func.cu文件,里面放置cuda kernel函数以及调用kernel函数的函数,(包括cudaMalloc命令的函数)
之所以将调用kernel的函数放在cu里面,一是为了有相同的头文件引用,省一点事;而是它对于kernel函数的调用<<<>>>规则需要cuda编译器的判定才能有效。
关于各函数的调用,关于c的不多说,在主流程文件中包含func.h即可。对于cu文件中的函数,在主流程文件中#include "func.cu"即可。。
目前,就用到以上东西,后来看一篇文章,发现可以有"func.cuh",旨在放cu中函数的声明。由于目前cu文件中函数较少,该方法没有试验过,不知道可行否。。
我琢磨了两天,我得出跟你一样的结论。也是这样子组织的。:victory:
学习学习。。。