Поэтому моя проблема заключается в следующем: я использую приложение Nvidia nsight на Mac OS X Mountain Lion, чтобы написать приложение CUDA: Исходный код представляет собой смесь .h / .cu / .cpp.
У меня есть заголовок HelloCUDA.h со следующими объявлениями:
//yep, both taken from examples.
__device__ unsigned int bitreverse2(unsigned int number);
__global__ void bitreverse(void *data);
и у меня есть файл HelloCUDA.cu, который определяет эти методы:
__device__ unsigned int bitreverse3(unsigned int number) {
//definition
return number;
}
__global__ void bitreverse4(void *data) {
//another definition...
bitreverse3(idata[threadIdx.x]);
}
Это работало, пока я не добавил новые файлы классов C ++ (.h / .cpp), используя мастер создания классов eclipse (nsight). Теперь, когда я пытаюсь построить эту вещь:
../src/HelloCUDA.h:21: error: expected constructor, destructor, or type conversion before ‘unsigned’
../src/HelloCUDA.h:23: error: expected constructor, destructor, or type conversion before ‘void’
Я проверил настройки проекта, я не думаю, что что-то изменилось.
Итак, что дает? Кто-нибудь может, пожалуйста, помочь мне с этим?
Вероятно, вы создали новый файл CPP, используя шаблон «CUDA C Bitreverse Application». Этот шаблон для файла CUDA C. Просто удалите содержимое файла и вместо этого добавьте свой код C ++.
Других решений пока нет …