2013-07-30 3 views
1

Visual Studio 또는 OS의 명령 줄을 통해 단순히 바이너리를 실행하는 것 외에 "Nsight로 디버그"옵션을 설정하는 방법을 알고 싶습니다.Nsight 디버그 시작과 정상 OS 시작의 차이점

"Nsight로 디버깅"으로 프로그램을 실행하면 프로그램이 제대로 작동하기 때문에 그 이유는 묻습니다.하지만 Visual Studio의 시작 버튼을 사용하여 드라이버를 시작하면 일부 cudaMemcpys에 cudaMemcpys가 표시 될 수 있습니다. 실행 파일을 실행하는 것). Nsight가 프로그램을 올바르게 실행하는 데 필요한 특정 실행 매개 변수를 가지고 있어야한다고 생각합니다.

+0

API 오류가 발생한 드라이버 크래시가 Windows TDR 이벤트 (Google 또는 SO 검색 - 많은 질문과 답변이 있음)에 부딪 힐 가능성이 큽니다. nsight로 디버깅 할 때 디버그 세션에서 정확히 무엇을하는지에 따라 커널 실행이 여러 가지 이유로 (단일 단계, 중단 점 및 기타 이유로) 중지 된 다음 다시 시작될 수 있습니다. 커널 실행을 중지하면 TDR 이벤트없이 Windows Watchdog을 만족할 수 있습니다. –

+0

그게 정확히 무슨 일이 있었는지. Windows가 기본 2 초 시간 초과 후 드라이버를 손상 시켰기 때문에 cudaMemcpys가 실패했습니다. 나는 TDR을 완전히 무능하게하고 프로그램은 지금 예상대로 달린다. 감사! – brito

답변

1

커널 오류로 인해 앱이 windows TDR event에 오게되면 드라이버 오류가 발생하고 API 오류가 발생합니다. modifying the system registry으로이 문제를 해결하거나 Quadro 또는 Tesla GPU를 TCC mode에 넣거나 커널의 실행 시간을 줄일 수 있습니다.

nsight로 디버깅 할 때 디버그 세션에서 정확히 무엇을하는지에 따라 커널 실행이 여러 가지 이유로 (단일 단계, 중단 점 및 기타 이유로) 중지 된 다음 다시 시작될 수 있습니다. 커널 실행을 중지하면 TDR 이벤트없이 Windows Watchdog을 만족할 수 있습니다.

0

CUDA nSight 디버거를 사용하면 CUDA 커널을 한 줄씩 디버깅 할 수 있지만 표준 Visual Studio 디버거에서는이를 수행 할 수 없습니다.

아마도 nSight는 커널의 런타임을 감지 할 수 있도록 일부 코드 삽입을 수행합니다. nSight를 사용하여 디버깅 할 때 커널이 GPU에서 실행되지 않을 수도 있습니다. 디버거간에오고가는 오류의 원인이 될 수 있습니다. 나는 내가 그것을 사용했을 때 비슷한 불일치가 있음을 안다.

nSight 프로파일 러를 통해 프로그램을 실행하는 경우 memCpy 오류를 명확하게 기록 할 수 있어야합니다.

관련 문제