Por que as variáveis ​​de membro não podem ser compartilhadas?

Gostaria de instanciar uma classe no código CUDA, que compartilha alguns de seus membros com outros threads no mesmo bloco.

No entanto, ao tentar compilar o seguinte código, recebo o erro: »o atributo" shared "não se aplica aqui« (nvcc versão 4.2).

class SharedSomething {

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

__global__ void run() {

    SharedSomething something;
}

Qual é a lógica por trás disso? Existe uma solução alternativa para alcançar o comportamento desejado (membros compartilhados de uma classe em um bloco)?

questionAnswers(2)

yourAnswerToTheQuestion