2012-04-05 3 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 друг в друга? –

+0

Не знаю! На самом деле, это вопрос моего вопроса ... Я не понимаю, что это значит! Внутри функции ядра есть только цикл for! В любом случае, Bitmpa8.cu и Bitmap4.cu не включены друг в друга. В этом сообщении есть более подробное объяснение моей проблемы, связанного с другим вопросом. davideberdin

+1

Как насчет отправки еще одного кода. На это невозможно ответить, как есть. Если вы не можете точно описать структуру * вашего собственного кода *, как вы можете ожидать, что кто-то другой сможет диагностировать, что может быть неправильным? – talonmies

ответ

1

Да это possibile называют один и ту же функцию из разных файлов. Мои ошибки были связаны с двойным включением заголовка! Проблема решена

0

Вы можете вызвать ту же функцию из разных файлов (функций) У вас должны быть правильные параметры.

Например, в одном файле можно #define malloc_size 20, а в другом файле #define malloc_size 20176 и каждый раз вызова malloc_size, которая будет отличаться в каждом файле ..

Я думаю, что вы должны смотреть в ваш код снова и уточните, что он делает. Старт от чего-то простого.

С уважением

Смежные вопросы