Dlaczego nie można udostępniać zmiennych członkowskich?

Chciałbym utworzyć instancję klasy w kodzie CUDA, która dzieli niektóre jej elementy z innymi wątkami w tym samym bloku.

Jednak podczas próby skompilowania następującego kodu otrzymuję błąd: »atrybut„ shared ”nie ma tu zastosowania« (nvcc wersja 4.2).

class SharedSomething {

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

__global__ void run() {

    SharedSomething something;
}

Jakie jest tego uzasadnienie? Czy istnieje rozwiązanie pozwalające osiągnąć pożądane zachowanie (współużytkowane elementy klasy w jednym bloku)?

questionAnswers(2)

yourAnswerToTheQuestion