Funkcja członkowska obiektu C ++ jako funkcja CUDA __global__
Mam klasę podstawową:
template <class T>
class A{
public:
// some data
T data;
//some functions like constructs etc.
...
// one virtual function
virtual void evaluate() = 0;
}
i klasa pochodna:
template <class T>
class B:public A<T>{
public:
// some functions like constructors etc.
virtual void evaluate();
__global__ void function2(); // **** error message
}
Też mam
template <class T> void
B<T>::evaluate()
{
dim3 grid(1);dim3 block(1);
void function2<<<grid,block>>>();
}
i
template <class T> __global__ void B<T>::function2() // **** error message
{
// computation here
}
więc zasadniczo mam funkcję członka klasy pochodnej, którą chciałbym wykonywać równolegle na urządzeniu.
Niestety pojawia się błąd:
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
Jestem nowy w CUDA. Byłoby bardzo miło, gdyby ktoś wskazał mi mój błąd. Zajmuję się Visual Studio 2010.