Warum können Mitgliedsvariablen nicht geteilt werden?

Ich möchte eine Klasse im CUDA-Code instanziieren, die einige ihrer Mitglieder mit anderen Threads im selben Block teilt.

Beim Kompilieren des folgenden Codes erhalte ich jedoch den Fehler: »Attribut" shared "trifft hier nicht zu« (nvcc Version 4.2).

class SharedSomething {

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

__global__ void run() {

    SharedSomething something;
}

Was ist das Grundprinzip dahinter? Gibt es eine Problemumgehung, um das gewünschte Verhalten zu erreichen (gemeinsame Mitglieder einer Klasse über einen Block)?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage