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)?