2012-02-24 4 views
0

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

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 не может обратиться к этому элементу , Как я могу это исправить?

+0

Этот код нарушен, конечно, это не то, что вы пытаетесь скомпилировать? – talonmies

+0

Что вы имеете в виду? –

+0

'__host__ __device__' предназначены для оператора, не так ли? На данный момент вы применяете их к статическому элементу ....... – talonmies

ответ

3

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^