Мне было интересно, можно ли вызывать одни и те же функции ядра из разных .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
И есть много из них
Спасибо заранее
Что такое big_random_block? Где это определено? Надеюсь, вы не включаете Bitmap8.cu и Bitmap4.cu друг в друга? –
Не знаю! На самом деле, это вопрос моего вопроса ... Я не понимаю, что это значит! Внутри функции ядра есть только цикл for! В любом случае, Bitmpa8.cu и Bitmap4.cu не включены друг в друга. В этом сообщении есть более подробное объяснение моей проблемы, связанного с другим вопросом. –
davideberdin
Как насчет отправки еще одного кода. На это невозможно ответить, как есть. Если вы не можете точно описать структуру * вашего собственного кода *, как вы можете ожидать, что кто-то другой сможет диагностировать, что может быть неправильным? – talonmies