2014-11-06 2 views
3

일정 기간 동안 GPU (NVIDIA Tesla K20, Linux에서 실행)의 전반적인 사용률에 대한 정보를 얻으려고합니다. "전반적으로"나는 스트리밍 멀티 프로세서가 몇 개나 실행되도록 스케줄되어 있는지, 얼마나 많은 GPU 코어가 실행되도록 스케줄되어 있는지 (코어가 실행 중일 때 전체 속도/빈도로 실행될 수 있다고 생각하십니까?) . 내가 플립에 의해 측정 된 전체 이용률을 얻을 수 있다면 좋을 것이다.일정 기간 동안 GPU의 전반적인 활용도를 얻는 방법은 없습니까?

물론 질문을하기 전에 NVML (nvidia-smi), CUPTI (and nvprof), PAPI, TAU 및 Vampir 등의 기존 도구/라이브러리를 검색하여 조사했습니다. . 그러나, 그것은 보인다 (그러나 나는 아직 확실하지 않다) 그들 중 누구도 필요한 정보를 제공 할 수 없었다. 예를 들어, NVML은 퍼센트로 "GPU 사용률"을보고 할 수 있지만 문서/설명에 따르면이 사용률은 "GPU에서 하나 이상의 커널이 실행되고있는 과거 초의 비율"로, 이는 충분히 정확하지 않습니다 . nvprof의 경우 개별 커널에 대해 (매우 높은 오버 헤드로) 플립을보고 할 수 있지만 GPU가 얼마나 잘 활용되는지 아직 알지 못합니다.

PAPI는 명령어 카운트를 얻을 수있는 것 같지만 다른 것들과 부동 소수점 연산을 다른 부동 소수점 수 없습니다. 나는 다른 두 가지 도구 (TAU와 Vampir)를 아직 시도하지 않았지만 그들이 내 필요를 충족시킬 수 있을지는 의문입니다.

그래서 GPU의 전반적인 활용 정보를 얻을 수 있는지 궁금합니다. 그렇지 않다면, 그것을 추정하는 최선의 대안은 무엇입니까? 이 작업을 수행하는 목적은 GPU를 기반으로 실행되는 여러 작업에 대한 더 나은 일정을 찾는 것입니다.

제 질문을 명확하게 설명했는지 확신 할 수 없으므로 더 자세한 설명을 위해 추가 할 수있는 것이 있으면 알려주십시오.

대단히 감사합니다!

답변

5

Visual Studio에 대한 nVidia Nsight 플러그인에는 원하는 통계를 제공하는 매우 멋진 그래픽 기능이 있습니다. 하지만 Nsight가 작동하지 않을 리눅스 시스템이 있다는 느낌이 들었습니다.

nVidia Visual Profiler을 사용하는 것이 좋습니다.

메트릭 참조는 매우 완전하며 here입니다. sm_efficiency 볼 -

  • 활동 SMX 유닛 :이 내가 관심있는 데이터를 수집 할 방법이다. 100 %에 가깝습니다. 낮 으면 SMX 장치 중 일부가 활성화되지 않습니다.

  • 활성 코어/SMX - 이것은에 달려 있습니다. K20에는 이중 명령어 문제가있는 쿼드 워프 (quad warp) 스케줄러가 있습니다. 워프가 32 개의 SM 코어를 발사합니다. K20에는 192 개의 SP 코어와 64 개의 DP 코어가 있습니다. ipc 미터법 (명령어 /주기)을 살펴 봐야합니다. 프로그램이 DP이고 IPC가 2이면 100 % 사용률을가집니다 (전체 워크로드 실행의 경우 )). 즉, 2 개의 스케 일에 워프가 적용되어 모든 DP 코어가 활성화되어 모든 사이클에서 입니다. 프로그램이 SP 인 경우 이론적으로 IPC는 6이어야합니다. 그러나 실제로는 매우 어렵습니다.IPC가 6 인 것은 3 명의 스케줄러가 각각 2 개의 워프를 시작했으며 3 x 2 x 32 = 192 SP 코어에 작업을 제공함을 의미합니다.

  • FLOPS - 프로그램이 부동 소수점 연산 사용하는 경우 음, 그럼 내가 flop_count_sp에보고 경과 초를 나눌 것입니다.

빈도는 걱정하지 않지만 nvidia-smi로 확인하는 것이 좋지는 않습니다. 카드의 냉각이 충분하면 실행하는 동안 최고 빈도를 유지합니다.

메트릭 참조를 확인하면 훨씬 유용한 정보를 얻을 수 있습니다.

NVprof는 여러 프로세스를 지원한다고 생각합니다. here을 확인하십시오. 프로세스 ID별로 필터링 할 수도 있습니다. 따라서 이러한 "다중 컨텍스트"또는 "단일 컨텍스트"메트릭을 수집 할 수 있습니다. 메트릭 참조 표에는 두 경우 모두에서 수집 할 수 있는지 여부를 나타내는 열이 있습니다.

참고 : 메트릭은 HW 성능 카운터 및 드라이버 수준 분석을 사용하여 계산됩니다. nvidia 도구가 이보다 더 많은 것을 제공 할 수 없다면, 다른 도구가 더 많은 것을 제공 할 가능성은 없습니다. 그러나 통계를 적절하게 결합하면 앱 실행에 대해 원하는 모든 것을 알 수 있다고 생각합니다.

+0

빠른 답장을 보내 주셔서 감사합니다. 네, 저는 리눅스를 사용하고 있으며, nvprof가 비주얼 프로파일 러와 동일한 기능을 수행 할 수 있다고 생각합니다. 그러나 이러한 측정 기준조차도 충분하지 않습니다. – rsm

+0

다른 측정 항목이 필요합니까? NVprof는 각 커널에 대해 이러한 메트릭을 개별적으로 계산하고 적절한 해석을 통해 추가 정보를 결정할 수 있습니다. 게시물의 내 ​​마지막 성명서를보십시오. – VAndrei

+0

내 마지막 코멘트가 게시되기 전에 미안합니다. sm_efficiency는 단일 컨텍스트에만 적용될 수 있으며 다중 컨텍스트 또는 다중 프로세스가있는 경우 전체 효율성을 측정 할 수 없습니다. 이전에는 flop_count_sp도 시도했지만 성능이 크게 떨어졌지만 별도의 라운드에서 실행 시간을 별도로 측정 할 수있었습니다. ipc 메트릭은 유용하지만 단일 워프 내에서만 유용합니다. 어쨌든, 마지막 메모에 명시된 바와 같이 이것이 우리가 얻을 수있는 최선의 것 같습니다. – rsm