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