Итак, если у меня есть функция device (или global ), которая создает / копирует некоторые данные в общую память, а позже я вызываю другую функцию device , вот так:
__global__ void a(){
__shared__ int blah=0;
fun();
}
__device__ void fun(){
blah = 1; //perform some operations
//do whatever
}
Я немного заржавел с моей CUDA, думаю, вам, возможно, пришлось «переопределить» разделяемую переменную (я предполагаю, что операция проверена, если существует разделяемая переменная с таким именем, если так ее назначает) - это имело эффект создания контекста - так что в основном переменная не просто возникла из ниоткуда. В качестве альтернативы, если это похоже на наличие глобальной переменной в стандарте C / C ++, и я могу просто сослаться на нее, как я это делал выше, было бы замечательно.
Я знаком с иерархией памяти, я просто разбираюсь в семантике создания / обращения к памяти.
Пожалуйста, сообщите, будет ли работать вышеуказанный эскиз. Спасибо.