2016-12-02 18 views
17

मुझे पता है कि nvidia-smi -l 1 GPU उपयोग को हर एक सेकंड (इसी प्रकार निम्नानुसार) देगा। हालांकि, मैं वास्तव में Volatile GPU-Util पर एक स्पष्टीकरण की सराहना करता हूं। क्या कुल एसएम, या अधिभोग, या कुछ और पर इस्तेमाल एसएम की संख्या है?nvidia-smi अस्थिर जीपीयू-उपयोग स्पष्टीकरण?

+-----------------------------------------------------------------------------+ 
| 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 | 
+-----------------------------------------------------------------------------+ 
+4

उन लोगों के लिए, एसएम का अर्थ है स्ट्रीमिंग मल्टीप्रोसेसर, और यह समझाया गया है [यहां।] (Https://stackoverflow.com/questions/3519598/streaming-multiprocessors-blocks-and-threads-cuda) – Davidmh

उत्तर

21

यह a sampled measurement over a time period है। किसी दिए गए समयावधि के लिए, यह रिपोर्ट करता है कि एक या अधिक GPU कर्नेल सक्रिय था (यानी चल रहा है)।

यह आपको कुछ भी नहीं बताता है कि कितने एसएम का उपयोग किया गया था, या कोड कितना "व्यस्त" था, या यह वास्तव में क्या कर रहा था, या यह किस तरह से स्मृति का उपयोग कर रहा था।

उपरोक्त दावे को माइक्रोबेंमार्किंग-प्रकार अभ्यास (नीचे देखें) का उपयोग करके बहुत अधिक कठिनाई के बिना सत्यापित किया जा सकता है।

मुझे नहीं पता कि समय अवधि को कैसे परिभाषित किया जाए, लेकिन चूंकि यह समग्र रूप से एक नमूना माप भी है (यानी nvidia-smi एक नमूना माप की रिपोर्ट करता है जितनी बार आप इसे मतदान करते हैं) मुझे नहीं लगता कि यह होना चाहिए सामान्य उपयोग या उपकरण की समझ के लिए महत्वपूर्ण है। समय अवधि स्पष्ट रूप से कम है, और यदि कोई निर्दिष्ट है, तो nvidia-smi के लिए मतदान अंतराल से संबंधित नहीं है। Microbenchmarking तकनीकों का उपयोग कर नमूना समय अवधि को उजागर करना संभव हो सकता है।

इसके अलावा, शब्द "वाष्पशील" nvidia-smi में इस डेटा आइटम से संबंधित नहीं है। आप आउटपुट प्रारूप को गलत तरीके से पढ़ रहे हैं।

यहाँ एक तुच्छ कोड मेरे दावे का समर्थन है: जब मैं 100 के एक कमांड लाइन पैरामीटर के साथ उपरोक्त कोड चलाने के लिए,

#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; 
} 

अपने सिस्टम पर, NVIDIA-SMI 99% उपयोग रिपोर्ट करेंगे। जब मैं 1000 के कमांड लाइन पैरामीटर के साथ चलाता हूं, तो nvidia-smi ~ 83% उपयोग की रिपोर्ट करेगा। जब मैंने इसे 10000 के एक कमांड लाइन पैरामीटर के साथ चलाने के लिए, NVIDIA-SMI रिपोर्ट करेंगे ~ 9% उपयोग।

संबंधित मुद्दे