Kernel CUDA como função membro de uma classe
Estou usando o CUDA 5.0 e um cartão Compute Capability 2.1.
A questão é bem direta: um kernel pode fazer parte de uma classe? Por exemplo:
class Foo
{
private:
//...
public:
__global__ void kernel();
};
__global__ void Foo::kernel()
{
//implementation here
}
Se não, então a solução é criar uma função wrapper que seja membro da classe e chame o kernel internamente?
E se sim, então terá acesso aos atributos privados como uma função privada normal?
(Eu não estou apenas tentando e vejo o que acontece porque meu projeto tem vários outros erros agora e também acho que é uma boa pergunta de referência. Foi difícil para mim encontrar referência para usar CUDA com C ++. Exemplos de funcionalidade básica podem ser encontrado mas não estratégias para código estruturado.)