Cuda内核在多个文件中起作用

时间:2012-04-05 12:47:03

标签: c++ linker cuda

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

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)" (?big_random_block@@YAPAXH@Z) already defined in Bitmap4.cu.obj

并且有很多

提前谢谢

2 个答案:

答案 0 :(得分:1)

是的,可以从不同的文件中调用相同的函数。我的错误与标题的双重包含有关!问题解决了

答案 1 :(得分:0)

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

例如,在一个文件中,您可以#define malloc_size 20和另一个文件#define malloc_size 20176 每次调用malloc_size时,每个文件都会有所不同..

我认为您应该再次查看代码并澄清它的作用。 从简单的事情开始。

此致