Почему переменные-члены не могут быть общими?

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

Однако при попытке скомпилировать следующий код я получаю сообщение об ошибке: »атрибут "общий" здесь не распространяется (nvcc версия 4.2).

class SharedSomething {

public:
    __shared__ int i; // this is not allowed
};

__global__ void run() {

    SharedSomething something;
}

В чем причина этого? Есть ли обходной путь для достижения желаемого поведения (общие члены класса в одном блоке)?

Ответы на вопрос(2)

Ваш ответ на вопрос