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