Цель совместной памяти - позволить потокам в блоке сотрудничать.Когда вы объявляете массив как __shared__
, каждый поток в блоке видит одну и ту же память, поэтому для данного потока не имеет смысла устанавливать собственный размер для массива в разделяемой памяти.
Тем не менее, поддерживается особый случай динамического указания размера одного __shared__
массива, который является одинаковым для всех потоков.См. выделение общей памяти .
Если вам нужно динамически выделять память для каждого потока, вы можете использовать new или malloc внутри ядра (в Fermi), но они выделяют глобальную память,скорее всего будет медленным.