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