2012-11-01 4 views
0

코드에서 threadIdx 줄을 사용하여 GCC를 강제 컴파일하려면 어떻게해야합니까?gcc와 함께 cuda를 컴파일하면 다음과 같은 결과가 발생합니다 : error : 'threadIdx'undeclared

내 cuda 응용 프로그램을 C 랩퍼로 컴파일하려고합니다. 은 NVCC -arch = sm_11 -o libtest.so --shared -Xcompiler -fPIC main.cu

가 그럼 난과 함께 C 래퍼를 컴파일하려고 : GCC를

내가 실행하는 .so 파일을 생성하려면 -std = c99 -I/usr/local/cuda/include -o main -L. 'threadIdx'선언되지 않은

주 : 모든 컴파일하고 바로 실행 않습니다 오류 : -ltest main.c를

이 내 코드에서 몇 층 아래 다음과 같은 오류가 발생

은 (AN는 포함 된 파일에 포함) C 랩핑없이 GPU 애플리케이션으로 사용 가능.

+4

일부 코드를 표시하는 것은 어떻습니까? – hirschhornsalz

+7

threadIdx는 장치 내장 변수입니다. 장치 코드에서 __only__로 표시되어야합니다. 장치 코드는 .cu 파일에 속하므로 nvcc 컴파일러에만 전달되어야합니다. 호스트 코드에 threadIdx가 있으면 문제가 있습니다. –

답변

1

GCC는 코드의 cuda 부분을 컴파일 할 수 없습니다. 코드를 컴파일하려면 nvcc가 필요합니다. gcc는 threadIdx를 찾을 때 무엇을해야할지 모릅니다.

+0

감사합니다. 또한 코드에 extern 키워드를 추가해야했습니다. – skrieder

관련 문제