Я пытаюсь скомпилировать программу, включающую ядро с MSVS 2012 и CUDA. Я использую общую память, но в отличие от this question по той же самой проблеме, я использую только мои имя переменной для общей памяти этого ядра один раз, так что нет никакой проблемы переопределения с помощью следующего кода:.Ошибка объявления CUDA "несовместима с предыдущим" variable_name "
template<typename T>
__global__ void mykernel(
const T* __restrict__ data,
T* __restrict__ results)
{
extern __shared__ T warp_partial_results[];
/* ... */
warp_partial_results[lane_id] = something;
/* ... */
results[something_else] = warp_partial_results[something_else];
/* ... */
}
который конкретизируется для нескольких типов (например, с плавающей точкой, INT, неподписанных INT), я получаю страшный
declaration is incompatible with previous "warp_partial_results"
сообщение. Что может быть причиной этого?
голосование, чтобы закрыть, вы не указали код SSCCE.org. SO ожидает: «Вопросы, касающиеся проблем с кодом, который вы написали, должны описывать конкретную проблему - и включать в себя действительный код для ее воспроизведения - в самом вопросе. См. SSCCE.org для руководства». Исключить «концептуальные вопросы о проблемах с мой код "или" что может вызвать этот "тип вопросов. Предоставьте полный, компилируемый код, который демонстрирует проблему, вместе с командой компиляции, которую вы используете с ней. –
Добавить код за пару минут. – einpoklum
Код, который вы показали до сих пор, не является полным. Когда я пытаюсь взломать его в компилируемый код, он не дает компиляции для меня. Изучите веб-страницу [SSCCE.org] (http://sscce.org) и укажите * полный *, * компилируемый * код, демонстрирующий ошибку. –