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

questionAnswers(1)

yourAnswerToTheQuestion