我正在使用CUDA 5.0和一个计算能力为2.1的显卡。
问题非常直接:一个内核函数可以是一个类的一部分吗? 例如:
class Foo
{
private:
//...
public:
__global__ void kernel();
};
__global__ void Foo::kernel()
{
//implementation here
}
如果不行的话,解决方案就是创建一个作为类成员并在内部调用内核函数的包装函数?
如果可以的话,那么它是否能像普通私有函数一样访问私有属性?
(我不只是想试一下看会发生什么,因为我的项目现在有几个其他错误,而且我认为这是一个很好的参考问题。对我来说很难找到使用CUDA和C++的参考资料。可以找到基本功能示例,但没有结构化代码的策略。)
__global__
函数的指针作为(静态或常规)数据成员保留,或者使用getter函数返回它。 - einpoklum