2014-02-16 5 views
0

Nsight로 디버깅 할 수는 있지만 컴파일러는 중단 점에서 멈추지 않습니다. 디버그 정보를 생성하는 옵션을 활성화했습니다.gpu에서 깨는 지점을 깨우려고 시도

드라이버의 API (NVCC 편집 유형, .cubin .gpu, 또는 .ptx)

세트 CUDAFE_FLAGS = - sdk_dir "C : 여기

enter image description here

명령 줄입니다 \"C : \ Program Files \ NVIDIA GPU 컴퓨팅 툴킷 \ CUDA \ v5.5 \ bin \ nvcc.exe"--use-local-env - 프로그램 파일 (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Microsoft Visual Studio 10.0 \ VC \ bin \ x86_amd64 "-G --keep-dir x64 \ Debug -maxrregcount = 0 - 컴퓨터 32 - 컴파일 - cudart 정적 -o MP7.dir \ Debug \ % (Fi lename) % (확장) 된 .obj "% (FullPath는)"

런타임 API (NVCC 컴파일 타입 하이브리드 개체 또는 .c 인 파일)

세트 CUDAFE_FLAGS =입니다 - sdk_dir "C : \ 프로그램 파일 (x 86) \ Microsoft SDKs \ Windows \ v7.0A \ " "C : \ Program Files \ NVIDIA GPU 컴퓨팅 툴킷 \ CUDA \ v5.5 \ bin \ nvcc.exe "--use-local-env -cl-version 2010 -ccbin "x86 : Visual Studio 10.0 \ VC \ bin \ x86_amd64"c : \ Program Files (x86) 디버그 -maxrregcount = 0 - 컴퓨터 32 - 컴파일 -cudart 정적 -g - (확장명) .obj "% (전체 경로)"

Nsight 디버거가 중단 점 변경을 시작하고 ex clamation 마크는 다음과 같은 박스 정보와 함께 표시됩니다

The break point will not be currently be hit No CUDA device code for source file c:\users\..\file.cu. Did you enable device information in your project? 

모두 .ilk.pdb 파일이 .exe와 같은 폴더에 있습니다. 또한 Nsight 디버거에서 Working directory으로 위의 파일을 포함하는 폴더가 설정되었습니다.

enter image description here

또한, 파괴 점은 커널 함수 내부 설정했다.

무엇이 잘못되었는지 어떻게 알 수 있습니까? 나는 교착 상태에 빠져있다.

감사합니다.

PS : 7 승 64X, VS2010 64X 용액 Nsight 3.2 64X, 쿠다 SDK 5.5 64X, Nsight는 SDK 샘플에 잘 작동하고, GeForce는 9600 GT (컴퓨팅 능력 1.1)이

+0

아마도이 토론 [Cuda-gdb는 커널 내부의 중단 점에서 멈추지 않습니다.] (http://stackoverflow.com/questions/21723664/cuda-gdb-not-stopping-at-breakpoints-inside-kernel/21791042#21791042) 당신에게 관심이있을 수 있습니다. – JackOLantern

+0

감사합니다.또한 cc로'compute_20, sm_20'을 사용합니다. 1.1 내 결과가 손상되었습니다. 그 게시물을 어떻게해야합니까? 그것은 중복으로 간주됩니까? 지워야 하나? – Thoth

답변

1

기기이며 그러나 만약 당신이 계산 능력 2.0 용으로 컴파일 컴퓨팅 능력 1.1

: "코드 생성 compute_20, sm_20"

따라서 귀하의 컴퓨팅 능력 1.1 장치에 해당하는 장치 코드가없는, 그래서 당신은 제대로 설정할 수 없습니다 또는 중단 점을 누르십시오.

코드 생성을 compute_11,sm_11 (으)로 변경하면 장치와 일치하도록합니다.

+0

공유 메모리에서 atomicAdd를 사용하고 싶습니다. 이 설정을 사용하면 'compute_11, sm_11'은'error : Ptx assembly aborted by errors'를 반환합니다. 공유 메모리'atomicAdds'는'cc '에 대해 작동하지 않습니다. 1.1'? 나는 글로벌 메모리에서 일해야합니까? – Thoth

+0

아마도 [atomics] (http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#atomic-functions)의 프로그래밍 가이드 섹션을 읽어야합니다. 공유 메모리의 원자 추가에는 CC 1.2가 필요합니다. –