프로필을 작성하고 싶은 CUDA 응용 프로그램을 만들고 있습니다. 지금까지 내가 사용한 모든 것은 커맨드 라인 프로파일 러 인 nvprof
으로 요약 된 통계 만 표시합니다.헤드없는 노드에서 CUDA 코드를 프로파일하는 방법은 무엇입니까?
GUI 프로파일 러 인 NVVP를 사용하려고 생각했습니다. 문제는 응용 프로그램을 실행중인 원격 Linux 노드에 GUI (심지어 X.org)가 없다는 것입니다. 게다가, 원격 노드에서 X11 스택을 얻을 수 있었다고해도 프로파일 링의 전체 시간 동안 내 자신의 랩톱을 유지하는 것은 매우 지루할 것입니다.
나는 다음과 같은 방법으로 필요한 모든 정보를 수집하려고 :nvprof --analysis-metrics -o application.nvprof ./myapplication
가 그럼 난 내 노트북에 출력 파일을 복사 NVVP에서 봅니다. 그러나 이것은 세 가지 문제가 있습니다.
우선 NVVP에 출력 파일을로드 할 때 파일 전송 정보를 얻지 못합니다. NVVP 창에 전혀 표시되지 않습니다.
둘째, 호출 그래프가 완전히 왜곡됩니다. 커널 시작 사이의 간격은 커널 지속 시간보다 적어도 100 배 더 크므로 종속성 및 흐름 분석을 불가능하게 만듭니다.
마지막으로 내 응용 프로그램은 많은 GPU 메모리를 사용합니다. 프로파일 링하는 동안 장치의 메모리가 부족해 지므로 독립 실행 형 장치에서는 문제가되지 않습니다.
헤드리스 노드에서 내 CUDA 응용 프로그램을 올바르게 프로파일 링하는 방법은 무엇입니까?
설명하는 방법이 적절한 방법입니다. nvprof -> nvvp 메소드에는 잠재적으로 nvvp만을 사용할 때 없을 수있는 제한 사항이 있습니다. "파일 전송 정보"로 정확히 무엇을 의미하는지 모르겠지만'nvprof '로 메트릭을 캡처하면 다른 유형의 데이터가 수집되지 않습니다. nvprof 설명서를 검토하고 선택하는 모드에 따라 캡처 할 내용에 제한이 있음을 이해하십시오. 나는 당신이보고 한 두 번째 이슈를 본적이 없다. 세 번째 문제는 프로파일 링 범위를 제한하는 것입니다. –
nvvp에서 수행 할 수있는 모든 작업을 nvprof import로 수행 할 수있는 것은 아닙니다. 예를 들어, 가이드 분석은 매우 제한적입니다. –