2013-02-14 4 views
1

자유/활성 SM의 수를 알 수있는 방법이 있습니까? 또는 각 SM의 전압/전력 또는 온도 값을 읽음으로써 작동 여부를 알 수 있어야합니다. (실시간으로 일부 작업이 GPU 장치에서 실행되는 동안).활성 SM을 찾는 방법은 무엇입니까?

% smid는 각 SM의 ID를 아는 데 도움이되었습니다. 비슷한 것이 도움이 될 것입니다.

감사와 안부, 케쉬

+0

소스 코드에 액세스 할 수있는 경우 '% smid'을 (를) 사용하여 활성 SM 수를 찾을 수 있습니다. – ahmad

답변

2

는 CUDA 프로파일 링 도구 인터페이스 (CUPTI)는 GPU의 PM 카운터의 시간 샘플링을 실행할 수 있도록하는 이벤트 API가 포함되어 있습니다. CUPTI SDK는 CUDA 툴킷의 일부로 제공됩니다. 샘플링에 대한 문서는 CUPTI Events API \ Sampling Events 섹션에서 찾을 수 있습니다. 다음 카운터의

하나 이상이 당신에게 SM 활동의 좋은 아이디어를 제공 할 것입니다 :

  • 는 active_cycles : 다중 프로세서가 하나 이상의 활성 워프를 가지고 사이클의 수.
  • active_warps :주기 당 활성 워프의 누적 개수. 매 사이클마다주기 에있는 활성 워프 수만큼 증가하며 0 - {48,64} 범위에있을 수 있습니다.
+0

고맙습니다. 그것은 매우 지옥입니다. 하지만 좀 더 명확한 설명이 필요합니다. CUDA 응용 프로그램이 실행 중이고 50 초 동안 14 개의 SM 중 2 개의 SM을 점유한다고 가정합니다. (nvprof를 사용하여 확인할 수 있지만 nvprof는 active_cycles 또는 active_warps 결과를 끝에 제공합니다). 다른 프로파일 링 애플리케이션을 개발하면 CUPTI API를 사용하여 CUDA 애플리케이션과 동시에 실행하고 5 초, 10 초 등 CUDA 애플리케이션에서 사용되는 SM 수를 파악하고 기록 할 수 있습니까? –

+0

예. 문서를 읽고 {CUDA Toolkit} \ extras \ CUPTI \ sample \ event_sampling에서 샘플을 다시 읽으십시오. 이 샘플에서는 백그라운드 스레드의 카운터를 200Hz로 쿼리합니다. 아마도 2^32/gpu_core_clock_frequency/log2 (max_event_increment)보다 커야합니다. 그렇지 않으면 일부 카운터에서 오버플로가 발생합니다. –

+0

event_sampling 코드를 살펴 봤습니다. 그들은 동일한 프로그램에서 두 개의 쓰레드를 사용했고 그 중 하나는 샘플링 작업을 수행합니다. 내 상황이 다르다. CUPTI API로 프로파일 링 애플리케이션을 쿼리하고 결과 (SM 상태, active_cycles 또는 active_warps가 괜찮을 것임)를 표시하려면 즉시 요청하십시오. nvidia-smi가하는 것처럼. 이는 GPU에서 일반적인 응용 프로그램으로 실행되는 백그라운드 프로세스와는 독립적이어야합니다. –