CUDA-Kernel als Member-Funktion einer Klasse

Ich verwende CUDA 5.0 und eine Compute Capability 2.1-Karte.

Die Frage ist ganz einfach: Kann ein Kernel Teil einer Klasse sein? Zum Beispiel:

class Foo
{
private:
 //...
public:
 __global__ void kernel();
};

__global__ void Foo::kernel()
{
 //implementation here
}

Wenn nicht, besteht die Lösung darin, eine Wrapper-Funktion zu erstellen, die Mitglied der Klasse ist und den Kernel intern aufruft.

Und wenn ja, hat es dann als normale private Funktion Zugriff auf die privaten Attribute?

(Ich versuche es nicht nur und sehe, was passiert, weil mein Projekt im Moment mehrere andere Fehler aufweist. Ich denke auch, dass es eine gute Referenzfrage ist. Es war schwierig, eine Referenz für die Verwendung von CUDA mit C ++ zu finden. Grundlegende Funktionsbeispiele können sein gefunden, aber keine Strategien für strukturierten Code.)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage