2011-09-01 68 views
3

我有一个名为“KernelUtil.cu”文件如下CUDA头文件

 __device__ int add(int a, int b) 
     { 
     return a+b; 
     } 

我有我的主要项目是“main.cu”。我需要从这里调用“添加”功能。我该怎么做??以下不起作用。

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

给了一个错误加入main.cu已经被定义

+0

您是否检查过'add'真的没有被定义在其他地方,但通过cuda.h?据我所见,你正在努力做的事情应该工作。也许为你的KernelUtil.cu使用include guard也可能有帮助。 – Dan

回答

4

我希望你有一个自动编译所有.cu文件的规则,这意味着KernelUtil.cu有效地编了两次,一次在其自己的,一旦当包含在main.cu中,因此add被复制。

尝试重命名KernelUtil.cuKernelUtil.h(或.cuh)。