2017-11-07 13 views
0

프로필을 작성하고 싶은 CUDA 응용 프로그램을 만들고 있습니다. 지금까지 내가 사용한 모든 것은 커맨드 라인 프로파일 러 인 nvprof으로 요약 된 통계 만 표시합니다.헤드없는 노드에서 CUDA 코드를 프로파일하는 방법은 무엇입니까?

GUI 프로파일 러 인 NVVP를 사용하려고 생각했습니다. 문제는 응용 프로그램을 실행중인 원격 Linux 노드에 GUI (심지어 X.org)가 없다는 것입니다. 게다가, 원격 노드에서 X11 스택을 얻을 수 있었다고해도 프로파일 링의 전체 시간 동안 내 자신의 랩톱을 유지하는 것은 매우 지루할 것입니다.

나는 다음과 같은 방법으로 필요한 모든 정보를 수집하려고 :
nvprof --analysis-metrics -o application.nvprof ./myapplication 

가 그럼 난 내 노트북에 출력 파일을 복사 NVVP에서 봅니다. 그러나 이것은 세 가지 문제가 있습니다.

우선 NVVP에 출력 파일을로드 할 때 파일 전송 정보를 얻지 못합니다. NVVP 창에 전혀 표시되지 않습니다.

둘째, 호출 그래프가 완전히 왜곡됩니다. 커널 시작 사이의 간격은 커널 지속 시간보다 적어도 100 배 더 크므로 종속성 및 흐름 분석을 불가능하게 만듭니다.

마지막으로 내 응용 프로그램은 많은 GPU 메모리를 사용합니다. 프로파일 링하는 동안 장치의 메모리가 부족해 지므로 독립 실행 형 장치에서는 문제가되지 않습니다.

헤드리스 노드에서 내 CUDA 응용 프로그램을 올바르게 프로파일 링하는 방법은 무엇입니까?

+0

설명하는 방법이 적절한 방법입니다. nvprof -> nvvp 메소드에는 잠재적으로 nvvp만을 사용할 때 없을 수있는 제한 사항이 있습니다. "파일 전송 정보"로 정확히 무엇을 의미하는지 모르겠지만'nvprof '로 메트릭을 캡처하면 다른 유형의 데이터가 수집되지 않습니다. nvprof 설명서를 검토하고 선택하는 모드에 따라 캡처 할 내용에 제한이 있음을 이해하십시오. 나는 당신이보고 한 두 번째 이슈를 본적이 없다. 세 번째 문제는 프로파일 링 범위를 제한하는 것입니다. –

+1

nvvp에서 수행 할 수있는 모든 작업을 nvprof import로 수행 할 수있는 것은 아닙니다. 예를 들어, 가이드 분석은 매우 제한적입니다. –

답변

3

NVVP는 헤드리스 노드를 일급 시민으로 지원합니다. 원격 프로파일 링은 NVVP의 주요 기능입니다.

NVVP가 로컬 GUI 사용 가능 호스트 시스템에서 실행되고 헤드리스 시스템에서 nvprof를 호출하고 거기에 필요한 파일을 생성하고 파일을 복사 한 다음 열어 보는 방식입니다. 이 모든 것은 투명하고 자동으로 발생합니다. 평소처럼 NVVP에서 추가 분석을 실행할 수 있으며이 단계가 반복됩니다.

원격 프로파일 링을 사용하려면 NVVP를 열고 File->New Session을 엽니 다. Local 대신에 헤드리스 기기의 세부 정보를 입력하여 연결을 추가하십시오. Manage...을 클릭하여 NVVP가 원격 시스템의 툴킷 경로를 가리 키도록하십시오. 이 일회성 설정이 완료되면 실행 파일의 경로를 입력하고 평소와 같이 실행하십시오.

relevant documentation에서 원격 프로파일 링에 대해 읽을 수 있습니다.