Parallel NSight를 이용한 CUDA코드 디버깅

ParallelNSight_debug_cuda

일전에 잠깐 소개했었다시피 Parallel NSight를 설치해서 이리저리 테스트중입니다.

일단 Parallel NSight를 설치하면 vs2008과 vs2010의 rule파일을 모두 설치할 수 있습니다.

금요일밤과 토요일 새벽 내내 삽질을 한 끝에 원하던대로 VS2010에서 CUDA빌드 환경을 구축했습니다.

라이트맵 계산을 위해 사용했던 CUDA_STUB.DLL을 성공적으로 빌드했고 현재 사용중인 게임의 맵들을 가지고 테스트를 완료했습니다.

이제 정말 CUDA코드에 브레이크 포인트를 찍어서 디버깅할 수 있는지 테스트를 해보았습니다.

이 역시 삽질을 좀 했습니다. 참고로 웬만하면 Synchronization은 사용하지 않는 것이 좋습니다. 이거 설정해놓으면 디버깅 시작할때 타겟머신에서 패스를 제대로 못찾는거 같더군요.

하여간 설정을 모두 마치고 로컬 머신에서 NSight메뉴의 ‘Start CUDA Debugging’을 클릭했습니다.

로컬머신에서는 VS의 디버깅 화면이 뜨고  원격의 노트북에서 어플리케이션이 런칭 됩니다.

로컬 머신에서 CUDA코드를 찾아서 브레이크를 찍고 원격머신에서 라이트맵계산을 시작하자 브레이크포인트가 찍혀있는 CUDA코드에 포커스가 설정되고 실제로 디버깅이 가능했습니다.

CUDA코드에서의 변수 확인 가능하고 현재 컨텍스트를 스레드 인덱스과 블럭 인덱스로 설정할 수 있습니다.

진작에 이런걸 쓸 수 있었다면 전에 라이트맵 계산용 CUDA코드를 짜면서 고생을 덜 했을텐데…

굉장히 신기하고 재미있습니다. 이제 VS2010에서 즐겁게 CUDA코드를 작성하고 디버깅할 수 있을것 같습니다.

원격디버깅이 꽤나 성가시기 때문에 결국은 GTX460 두개를 SLI로 꽂아야할 것 같군요. 아 돈이..돈이…

DX9에서도 이런식으로 쉐이더 디버깅이 가능하면 좋겠지만 먼저 언급한대로 DX10,11만 가능합니다.


답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중