2012-04-05 65 views
0

我想知道是否可以从不同的.cu文件调用相同的内核函数。我的意思是,我的程序有不同的类,它们都有一些共同的功能,但具有不同的内存大小;例如:Cuda内核函数在多个文件中

void Bitmap8::Or(const Bitmap8 &b1, const Bitmap8 &b2); 

// the function above is as same as this one (of course they are in two different files) 

void Bitmap4::Or(const Bitmap4 &b1, const Bitmap4 &b2); 

它们都有不同的内存大小分配。我为他们创建了一个独特的CUDA内核来执行这些操作。这可能是一些冲突,而我正在编译这个程序吗?因为我在所有的时间这些样的错误:

1>Bitmap8.cu.obj : error LNK2005: "void * __cdecl big_random_block(int)" ([email protected]@[email protected]) already defined in Bitmap4.cu.obj 

而且有很多他们

预先感谢您

+0

什么是big_random_block?它在哪里定义?我希望你没有包含Bitmap8.cu和Bitmap4.cu在对方? – 2012-04-05 13:11:47

+0

我不知道!其实,这就是我的问题的重点......我不明白它的意思!在内核函数里面只有一个for循环!无论如何,Bitmpa8.cu和Bitmap4.cu不包括在彼此之中。在这篇文章中有更多的解释我的问题,这是另一个问题 davideberdin 2012-04-05 13:19:17

+1

如何发布一些更多的代码。这是不可能的,因为它是。如果你不能准确地描述*你自己的代码*的结构,你怎么能指望别人来诊断可能出错的东西? – talonmies 2012-04-05 14:25:30

回答

1

是的,这是不可能性,从不同的文件调用相同的功能。我的错误与头文件的双重包含有关!问题解决了

0

您还可以从不同的文件(功能相同的功能) 你应该有正确的参数。

例如在一个文件中,你可以malloc_size#定义20,而在另一个文件中的#define malloc_size 20176 每一次通话malloc_size这将是每个文件不同..

我想你应该采取一看你的代码再次澄清它的功能。 从简单的事情开始。

问候