Функция члена объекта C ++ как функция CUDA __global__

У меня есть базовый class:

template  class A{ public: // some data T data; //some functions like constructs etc. ... // one virtual function virtual void evaluate() = 0; } 

и производный class:

  template  class B:public A{ public: // some functions like constructors etc. virtual void evaluate(); __global__ void function2(); // **** error message } 

Кроме того, у меня есть

  template  void B::evaluate() { dim3 grid(1);dim3 block(1); void function2<<>>(); } 

а также

 template  __global__ void B::function2() // **** error message { // computation here } 

поэтому по существу у меня есть функция-член производного classа, которую я хотел бы выполнить параллельно на устройстве.

К сожалению, я получаю сообщение об ошибке:

 error : illegal combination of memory qualifiers on the lines : 1> __global__ void function2(); // **** error message 2> template  __global__ void B::function2() // **** error message 

Я новичок в CUDA. Было бы очень мило, если бы кто-то указал мне на мою ошибку. Я разрабатываю Visual Studio 2010.

Определение classа шаблона в вашем первом fragmentе кода является незаконным, поскольку оно содержит функцию __global__ (kernel CUDA). В соответствии с языковой документацией функции __global__ не могут быть функциями статического classа. Вторая шаблонная функция члена classа является незаконной по той же причине.