0

我正在尝试将静态成员添加到以下类型:

struct mostRightCornerPred
{
    __host__ __device__ 
    static int numIterations;   
    bool operator()(const long long first,const long long seconds) const
    {
        return true;
    }

};

但我不断收到错误:

1>c:\users\igal\desktop\pj1712 固定地图 res\graph\types.h(21): 错误
:属性“__host__”不适用于此处
1>c:\users\igal\desktop\pj1712 固定地图 res\graph\types.h(21): 错误
: 不允许在数据成员上使用内存限定符

我的猜测是 CUDA 不能引用这个成员。我该如何解决?

4

1 回答 1

4

即使查看代码中的语法错误,设备代码中的静态数据也是非法的。原因是没有定义初始化的点,如果所有线程都这样做,或者只有一个,如果是,哪个线程。所以静态数据在这种情况下没有意义。

我相信在 CUDA 编程指南中讨论了这个限制。

如果您希望函子中的数据成员,只需将构造函数添加到函子并使用构造函数的参数初始化数据。

于 2012-02-25T12:44:56.013 回答