nvidia-smi 휘발성 GPU 활용 설명?
nvidia-smi -l 1
1 초마다 GPU 사용량을 제공 한다는 것을 알고 있습니다 (다음과 유사). 그러나 Volatile GPU-Util
실제로 의미 하는 바에 대한 설명을 부탁드립니다 . 그것은 총 SM 중 사용 된 SM의 수입니까, 아니면 점유입니까, 아니면 다른 것입니까?
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.48 Driver Version: 367.48 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla K20c Off | 0000:03:00.0 Off | 0 |
| 30% 41C P0 53W / 225W | 0MiB / 4742MiB | 96% Default |
+-------------------------------+----------------------+----------------------+
| 1 Tesla K20c Off | 0000:43:00.0 Off | 0 |
| 36% 49C P0 95W / 225W | 4516MiB / 4742MiB | 63% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 1 5193 C python 4514MiB |
+-----------------------------------------------------------------------------+
그것은이다 시간 동안 샘플링 측정 . 주어진 기간 동안 하나 이상의 GPU 커널이 활성화 (즉 실행) 된 시간의 백분율을보고합니다.
SM이 얼마나 많이 사용되었는지, 코드가 얼마나 "바쁜지", 정확히 무엇을하고 있는지, 메모리를 어떤 방식으로 사용했는지에 대해서는 알려주지 않습니다.
위의 주장은 마이크로 벤치마킹 유형의 운동을 사용하여 너무 어렵지 않게 검증 할 수 있습니다 (아래 참조).
기간을 정확히 정의하는 방법을 모르겠지만 전체적으로 샘플링 된 측정이기 때문에 (즉, nvidia-smi
폴링 할 때마다 하나의 샘플링 된 측정을보고 함) 일반적인 사용에 그렇게 중요하지 않다고 생각합니다. 도구에 대한 이해. 기간은 분명히 짧으며 폴링 간격 (지정된 경우)과 반드시 관련이있는 것은 아닙니다 nvidia-smi
. 마이크로 벤치마킹 기술을 사용하여 샘플링 기간을 알아낼 수도 있습니다.
또한 "Volatile"이라는 단어는의이 데이터 항목과 관련이 없습니다 nvidia-smi
. 출력 형식을 잘못 읽었습니다.
내 주장을 뒷받침하는 간단한 코드는 다음과 같습니다.
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
const long long tdelay=1000000LL;
const int loops = 10000;
const int hdelay = 1;
__global__ void dkern(){
long long start = clock64();
while(clock64() < start+tdelay);
}
int main(int argc, char *argv[]){
int my_delay = hdelay;
if (argc > 1) my_delay = atoi(argv[1]);
for (int i = 0; i<loops; i++){
dkern<<<1,1>>>();
usleep(my_delay);}
return 0;
}
On my system, when I run the above code with a command line parameter of 100, nvidia-smi will report 99% utilization. When I run with a command line parameter of 1000, nvidia-smi will report ~83% utilization. When I run it with a command line parameter of 10000, nvidia-smi will report ~9% utilization.
ReferenceURL : https://stackoverflow.com/questions/40937894/nvidia-smi-volatile-gpu-utilization-explanation
'Development Tip' 카테고리의 다른 글
브라우저는 언제 Javascript를 실행합니까? (0) | 2021.01.08 |
---|---|
Firebase 저장소 비디오 스트리밍 (0) | 2021.01.08 |
iPhone에서 UIView 대 UIViewController를 언제 사용합니까? (0) | 2021.01.08 |
자바 스크립트로 콘솔 입력을 받으려면 어떻게해야합니까? (0) | 2021.01.08 |
LL (1), LR (1), LR (0), LALR (1) 문법의 예? (0) | 2021.01.08 |