0

異なる.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

そしてそれらはたくさんあります

前もって感謝します

4

2 に答える 2

1

はい、異なるファイルから同じ関数を呼び出すことができます。私のエラーは、ヘッダーが二重に含まれていることに関連していました。問題が解決しました

于 2012-04-09T06:39:57.167 に答える
0

異なるファイル(関数)から同じ関数を呼び出すことができますが、正しいパラメーターが必要です。

たとえば、あるファイルでは#define malloc_size 20を、別のファイルでは#define malloc_size 20176を実行でき、毎回、ファイルごとに異なるmalloc_sizeを呼び出すことができます。

コードをもう一度見て、それが何をするのかを明確にする必要があると思います。単純なものから始めます。

よろしく

于 2012-04-06T13:29:10.347 に答える