2016-12-02 74 views
17

nvidia-smi -l 1'un, GPU kullanımına her saniyede (aşağıdakine benzer) vereceğini biliyorum. Ancak, Volatile GPU-Util'un gerçekten ne anlama geldiğine dair bir açıklama için minnettarım. Bu toplam SM'ler veya kullanım veya başka bir şey üzerinden kullanılan SM'lerin sayısı mı?nvidia-smi Uçucu GPU-kullanma açıklaması?

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

Akılda kalanlar için SM, Çok İşlemcili Aktarım anlamına gelir ve [burada.] (Https://stackoverflow.com/questions/3519598/streaming-multiprocessors-blocks-and-threads-cuda) açıklanmıştır. – Davidmh

cevap

21

a sampled measurement over a time period. Belirli bir zaman periyodu için, bir veya daha fazla GPU çekirdeğinin etkin olduğu (yani çalışmakta olan) zaman yüzdesini bildirir.

Size kullanıldığı, ya da ne kadar kaç SM hakkında bir şey söylemez "meşgul" kod, ya tam olarak ne yaptığını veya ne şekilde hafızayı kullanarak olabilir. Yukarıdaki iddia (lar), mikrobölgeleme-tipi bir alıştırma kullanarak çok fazla güçlük çekmeden doğrulanabilir (aşağıya bakınız).

Zaman dilimini tam olarak nasıl tanımlayacağımı bilmiyorum, ancak aynı zamanda genel olarak yalnızca örneklenmiş bir ölçüm olduğu için (yani, nvidia-smi raporladığınız kadarıyla bir örneklenmiş ölçüm raporları) Ben bunun olması gerektiğini düşünmüyorum. Genel kullanım veya aracın anlaşılması için önemlidir. Zaman periyodu açıkça kısadır ve eğer belirtilmişse, nvidia-smi için yoklama aralığıyla ilgili değildir. Ayrıca mikro-kazılama teknikleri kullanılarak örnekleme zaman periyodunu ortaya çıkarmak mümkün olabilir.

Ayrıca kelime "Uçucu" nvidia-smi bu veri öğesine ait olan etmez. Çıkış formatını yanlış okunuyorsunuz.

İşte benim iddiasını destekleyen önemsiz bir kod: Ben 100'lük bir komut satırı parametresi ile yukarıdaki kodu çalıştırdığınızda, benim sistemde

#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 kullanımını bildirir. 1000 komut satırı parametresi ile çalıştığımda, nvidia-smi ~% 83 kullanımı bildirecektir. 10000 komut satırı parametresi ile çalıştırdığımda, nvidia-smi ~% 9 kullanımı rapor edecektir.