Глобальная общая память JCuda, вызывающая ошибки

Я пытаюсь сделать что-то очень очень простое с общей памятью в jcuda. Мое ядро:

__shared__ int testMe;

extern "C"__global__ void test() {
testMe = 5;
}

Делая общую память общей, я могу использовать ее в функциях устройства, к сожалению, я даже не могу объявить общую память глобальной. Cuda просто падает с ядром не может запустить проблему. Я также попытался сделать:

extern __shared__ int test

Однако компилятор nvcc не может внешне связать ошибку общей памяти. Я действительно хочу заставить это работать, чтобы облегчить написание ядер, но я не вижу пути.

0

Решение

Вы не можете определить статическую разделяемую память в области видимости блока перевода, вы должны объявить ее в области ядра. Если вы сделаете это, ваша общая память будет одинаковой для каждого потока в одном и том же блоке. Если вы хотите использовать память, которая одинакова для каждый Во всех блоках вы должны использовать глобальную память (вызвать cudaMalloc () в коде хоста и передать указатель памяти вашему ядру).

1

Другие решения


По вопросам рекламы [email protected]