CUDA头文件

3
我有一个文件名为"KernelUtil.cu",内容如下:
     __device__ int add(int a, int b)
      {
         return a+b;
      }

我有一个主程序"main.cu",我需要从这里调用"add"函数。我该怎么做?以下方法不起作用。

    #include "KernelUtil.cu"
     __global__ void test()
   {
      int c = add(10,10);
   } 
   int main()
      {
           test<<<1,1>>>();
      }

出现错误:在main.cu文件中,add已经被定义。


你是否检查过add确实没有在cuda.h中被定义或者其他地方被包含进来了?就我所看到的,你尝试做的应该是可以的。也许为你的KernelUtil.cu使用一个include guard可能会有所帮助。 - Dan
1个回答

4

我猜你可能有一个规则可以自动编译所有的.cu文件,这意味着KernelUtil.cu文件会被编译两次,一次是它本身,一次是在main.cu文件中被包含,因此add函数会被重复定义。

尝试将KernelUtil.cu重命名为KernelUtil.h或者.cuh


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接