Kernel CUDA como función miembro de una clase

Estoy usando CUDA 5.0 y una tarjeta Compute Capability 2.1.

La pregunta es bastante sencilla: ¿puede un núcleo ser parte de una clase? Por ejemplo:

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

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

Si no, entonces la solución es hacer una función de envoltura que sea miembro de la clase y llame al kernel internamente.

Y si es así, ¿tendrá acceso a los atributos privados como una función privada normal?

(No solo lo estoy probando y veo qué sucede porque mi proyecto tiene otros errores en este momento y también creo que es una buena pregunta de referencia. Me fue difícil encontrar una referencia para usar CUDA con C ++. Se pueden encontrar ejemplos de funciones básicas. encontrado pero no estrategias para código estructurado.)

Respuestas a la pregunta(1)

Su respuesta a la pregunta