Я пишу программу для школы, использующую общую память. Я получил функцию для правильной работы, но она работает только с блоками на размер сетки: 1. Если на каждую сетку больше 1 блока, то функция больше не работает.CUDA общая память более 1 блок перестает работать
Например, если я отправляю массив размером 10, с 1 блоком и 10 потоками, эта функция работает правильно. Если я отправлю в тот же массив с 2 блоками и 5 потоками на блок, то он больше не работает. Когда я говорю, что больше не работает, я получаю тот же массив, в который я отправил, назад, как будто ничего не происходит.
Для жизни меня не могу понять, почему. Есть ли специальный способ использования разделяемой памяти по нескольким блокам?
Просто, чтобы попробовать и отладить это, я заменил весь код a[threadId] = threadId
, и массив был, по-видимому, правильным (печать чисел от 0 до 9). Поэтому я не понимаю, почему это не сработает, если threadId кажется правильным, и он работает с 1 блоком.