私は基本クラスを持っています:
template <class T>
class A{
public:
// some data
T data;
//some functions like constructs etc.
...
// one virtual function
virtual void evaluate() = 0;
}
および派生クラス:
template <class T>
class B:public A<T>{
public:
// some functions like constructors etc.
virtual void evaluate();
__global__ void function2(); // **** error message
}
また、私は持っています
template <class T> void
B<T>::evaluate()
{
dim3 grid(1);dim3 block(1);
void function2<<<grid,block>>>();
}
と
template <class T> __global__ void B<T>::function2() // **** error message
{
// computation here
}
基本的に、デバイス上で並列に実行したい派生クラスのメンバー関数があります。
残念ながら、次のエラーが表示されます。
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
私はCUDAが初めてです。誰かが私の間違いを指摘してくれたらとても親切です。Visual Studio 2010 で開発しています。