Ядро CUDA как функция-член класса
Я использую CUDA 5.0 и карту Compute Capability 2.1.
Вопрос довольно прост: может ли ядро быть частью класса? Например:
class Foo
{
private:
//...
public:
__global__ void kernel();
};
__global__ void Foo::kernel()
{
//implementation here
}
Если нет, то решение состоит в том, чтобы сделать функцию-оболочку, которая является членом класса и вызывает ядро внутри?
И если да, то будет ли он иметь доступ к закрытым атрибутам как обычная закрытая функция?
(Я не просто пробую это и посмотрю, что происходит, потому что у моего проекта есть несколько других ошибок прямо сейчас, и я также думаю, что это хороший справочный вопрос. Мне было трудно найти ссылку для использования CUDA с C ++. Примеры основных функций могут быть найдены, но не стратегии для структурированного кода.)