2013-05-14 6 views
0

내 문제는 다음과 같습니다. Mac OS X에서 Mountain Lion에서 Nvidia의 nsight 응용 프로그램을 사용하여 CUDA 응용 프로그램을 작성하고 있습니다. :. 소스 코드는 내가 다음과 같은 선언과 HelloCUDA.h 헤더가CUDA : __device__ 및 __global__ 오류 : "unsigned"/ "void"이전에 예상되는 생성자, 소멸자 또는 형식 변환 "

.H/.CU/cpp를 믹스입니다 :

//yep, both taken from examples. 
__device__ unsigned int bitreverse2(unsigned int number); 

__global__ void bitreverse(void *data); 

을 그리고 난이 방법을 정의하는 HelloCUDA.cu 파일이 :

__device__ unsigned int bitreverse3(unsigned int number) { 
    //definition 
    return number; 
} 

__global__ void bitreverse4(void *data) { 
    //another definition... 
    bitreverse3(idata[threadIdx.x]); 
} 

이클립스 (nsight)의 새로운 클래스 마법사를 사용하여 새로운 C++ 클래스 파일 (.h/.cpp)을 추가 할 때까지 작동했습니다. 이제 그 것을 만들려고 할 때 :

프로젝트 설정을 확인한 결과 아무 것도 변경되지 않았다고 생각합니다.

그래서 무엇을 제공합니까? 아무도 제발 저걸 도와 줄 수 없나요?

+0

'idata'란 무엇입니까? 어디에도 정의되어 있지 않습니다. – talonmies

+0

HelloCUDA.h가 .cu 파일 대신 .cpp 파일에 포함되면 작동하지 않습니다. .cpp 파일이'__device__' 또는'__global__ '이 무엇인지 알지 못하는 호스트 컴파일러로 보내집니다. 어쨌든 .cpp 파일에 헤더 (이 질문에 게시 된 내용을 기반으로)가 필요하지 않습니다. –

+0

idata는 코드의 일부일뿐입니다. 그것은 중요하지 않으며, 그것은 문제가 아닙니다. –

답변

1

아마도 "CUDA C Bitreverse Application"템플릿을 사용하여 새로운 CPP 파일을 만들었을 것입니다. 해당 템플릿은 CUDA C 파일 용입니다. 파일 내용을 삭제하고 대신 C++ 코드를 추가하십시오.