Я пытаюсь сделать что-то очень очень простое с общей памятью в jcuda. Мое ядро:
__shared__ int testMe;
extern "C"__global__ void test() {
testMe = 5;
}
Делая общую память общей, я могу использовать ее в функциях устройства, к сожалению, я даже не могу объявить общую память глобальной. Cuda просто падает с ядром не может запустить проблему. Я также попытался сделать:
extern __shared__ int test
Однако компилятор nvcc не может внешне связать ошибку общей памяти. Я действительно хочу заставить это работать, чтобы облегчить написание ядер, но я не вижу пути.
Вы не можете определить статическую разделяемую память в области видимости блока перевода, вы должны объявить ее в области ядра. Если вы сделаете это, ваша общая память будет одинаковой для каждого потока в одном и том же блоке. Если вы хотите использовать память, которая одинакова для каждый Во всех блоках вы должны использовать глобальную память (вызвать cudaMalloc () в коде хоста и передать указатель памяти вашему ядру).