2012-03-26 2 views
1

내 cuda 프로그램을 nvcc의 --ptxas-options = -v 플래그와 함께 컴파일하여 레지스터 및 메모리 사용량을 달성하기 위해 사용하려고합니다. CUDA GPU 점유율 계산기.nvcc --ptxas-options = -v (레지스터 및 메모리 사용) 오류

오류 : 식별자 "atomicAdd은"나는 내 커널에서 atomicAdd을 사용했다

을 정의되어 있지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

3

모든 GPU 세대에서 원자 연산을 지원하지 않으며 nvcc의 기본 대상은 sm_10입니다. GPU가 원자 적 연산을 지원한다고 가정하면 (GPU에서 지원하는 기능에 대한 자세한 내용은 CUDA C Programming Guide, 부록 F.1) 해당 아키텍처를 대상으로 지정해야합니다. Fermi 이상 -gencode arch=compute_20,code=\'compute_20,sm_20\' 용. gencode 옵션에 대한 자세한 내용은 NVCC manual을 참조하십시오.

실제로는 --ptxas-options=-v 플래그를 추가해도 실제로 동작이 변경됩니까? 그렇지 않다면 질문의 제목이 오해의 소지가 있습니다.

+0

내가 사용하는 GPU는 원자 연산을 지원합니다. 내 프로그램을 nvcc -arch = sm_20 test.cu -o test로 컴파일하고 올바른 결과를 얻었습니다. 난 그냥 내 프로그램의 등록 및 공유 메모리 사용량을 얻으려면 언급 된 옵션을 사용하고 싶습니다. –

+0

문제가 해결 되었습니까? 즉, 더 이상 오류가 발생하지 않습니까? – Tom

+0

아니요, 문제가 해결되지 않았습니다. 내가 언급 한 옵션에 여전히 문제가있다. 언급 한 옵션을 사용하여 프로그램을 컴파일 할 수 없습니다. –