Función miembro de un objeto C ++ como función __global__ CUDA
Tengo una clase base:
template <class T>
class A{
public:
// some data
T data;
//some functions like constructs etc.
...
// one virtual function
virtual void evaluate() = 0;
}
y una clase derivada:
template <class T>
class B:public A<T>{
public:
// some functions like constructors etc.
virtual void evaluate();
__global__ void function2(); // **** error message
}
También tengo
template <class T> void
B<T>::evaluate()
{
dim3 grid(1);dim3 block(1);
void function2<<<grid,block>>>();
}
y
template <class T> __global__ void B<T>::function2() // **** error message
{
// computation here
}
así que esencialmente tengo una función miembro de una clase derivada que me gustaría ejecutar de forma paralela en el dispositivo.
Desafortunadamente, me sale el error:
error : illegal combination of memory qualifiers on the lines :
1> __global__ void function2(); // **** error message
2> template <class T> __global__ void B<T>::function2() // **** error message
Soy nuevo en CUDA. Sería muy amable si alguien me señala mi error. Estoy desarrollando en Visual Studio 2010.