Как добавить статический член в Thrust :: двоичный_предикат? - PullRequest
0 голосов
/ 24 февраля 2012

Я пытаюсь добавить статический член к следующему типу:

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 fixed map res\graph\types.h(21): error
: attribute "__host__" does not apply here
1>c:\users\igal\desktop\pj1712 fixed map res\graph\types.h(21): error
: memory qualifier on data member is not allowed

Я предполагаю, что CUDA не может ссылаться на этого участника. Как я могу это исправить?

1 Ответ

4 голосов
/ 25 февраля 2012

Даже если не учитывать синтаксические ошибки в вашем коде, статические данные в устройстве коде недопустимы.Причина в том, что не существует определенной точки, в которой он был бы инициализирован, если бы все потоки делали это, или если только один, и если да, то какой поток.Поэтому статические данные просто не имеют смысла в этом контексте.

Я считаю, что это ограничение обсуждается в руководстве по программированию CUDA.

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

...