2016-05-24 5 views
1

Ich entwickle eine Anwendung mit CUDA. Ich habe es mit der CPU verglichen und einige variable Laufzeiten bemerkt. Ich entschied mich, meine Anwendung in einer Schleife von der Befehlszeile aus auszuführen, damit ich bessere Statistiken sammeln konnte. Ich habe die Anwendung 50 Mal ausgeführt und die Ergebnisse aufgezeichnet. Ich war sehr überrascht zu sehen, dass die verstrichene Kernel-Zeit als eine Funktion der Startnummer zunahm.Warum steigt die Ausführungszeit meines CUDA-Kernels bei aufeinanderfolgenden Starts?

GPU Kernel Time Increasing With Run Number

Hier ist ein Ausschnitt, so dass Sie den Teil des Codes sehen, die zeitlich gesteuert wird:

int nblocks = (int)ceil((float)n/(float)NUM_THREADS); 

gpuErrchk(cudaEventRecord(start, 0)); 
gpuperfkernel << <nblocks, NUM_THREADS >> >(dmetadata, ddatax, ddatay); 
gpuErrchk(cudaPeekAtLastError()); 
gpuErrchk(cudaDeviceSynchronize()); 
gpuErrchk(cudaEventRecord(stop, 0)); 
gpuErrchk(cudaEventSynchronize(stop)); 

gpuErrchk(cudaEventElapsedTime(&milliseconds, start, stop)); 
printf("GPU kernel took %f milliseconds.\n", milliseconds); 
gpuelapsed += milliseconds; 

ich gearbeitet habe CUDA recht viel und ich habe nicht gesehen Verhalten vorher. Fragen Sie sich, ob das jemand bemerkt hat? Meine Plattform ist Windows 10, CUDA 7.5, MSI Notebook, GeForce 970m.

Da ich auf einem Laptop bin, dachte ich, es könnte eine Energie bezogene Einstellung oder etwas ähnliches sein, aber ich habe alles auf Hochleistung eingestellt und habe den Bildschirmschoner deaktiviert.

+0

Insgesamt ist dies weniger als 1% Unterschied in der gemessenen Zeit, min bis max. Das Windows-Betriebssystem verwendet auch Ihre GPU und verwaltet tatsächlich alle Ihre CUDA-Zugriffe auf die GPU. Windows ist eine beschäftigte Umgebung. Ich bin nicht überrascht, dass es einige Variationen gibt. –

Antwort

2

Die GeForce 970m hat Boost-Uhren. Run-for-run steigt die Temperatur Ihrer GPU an und der Boost ist wahrscheinlich weniger auf dem höchsten Niveau, wenn die Temperatur steigt.

Sie können die GPU-Temperatur mit NVIDIA-SMI überwachen. Es gibt auch eine Überwachungs-API. Ihre Boost-Einstellungen sollten auch in nvidia-smi konfigurierbar sein, wenn Sie dies überprüfen möchten.

+0

Dies ist genau das, was passiert. Ich habe Speedfan heruntergeladen und ausgeführt, während ich meine Bewerbung bewertet habe. Die GPU-Temperaturkurve folgt der gleichen Form wie die Kurve im Benchmarking-Diagramm. Vielen Dank! – jungleman007