2011-09-01 60 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)。