2012-02-24 2 views
0

나는 다음과 같은 유형의 정적 멤버를 추가하기 위해 노력하고있어 :추력에 정적 멤버를 추가하는 방법 :: 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 프로그래밍 가이드에서 설명합니다.

functor에 데이터 멤버를 원하면 functor에 생성자를 추가하고 생성자에 대한 인수를 사용하여 데이터를 초기화하면됩니다.

관련 문제