2017-10-01 3 views
0

Ich führe ein typisches 5-Schicht Faltungsnetzwerk auf der GPU in Tensorflow. Wenn ich auf einer schnellen 1080 TI GPU laufe, bekomme ich ungefähr 35% GPU Auslastung. Auf einer langsameren M40 bekomme ich 80% Auslastung und 97% Auslastung auf einer 970m mobilen GPU.Tensorflow läuft mit 35% GPU-Auslastung, Profiler zeigt ungerade CPU-Aktivität

Ich habe die GPU-Warteschlange tf.StagingArea implementiert und mit einer Warnmeldung bestätigt, dass StagingArea vor jedem Trainingsschritt nicht leer ist. Es wird asynchron gespeist.

Ich habe den Tensorflow Profiler unten gesehen. Bemerkenswerterweise scheinen die Hauptoperationen auf der GPU in 15 ms abgeschlossen zu sein, aber dann gibt es eine Lücke zwischen 15 ms und 40 ms, wo vom Profiler nichts registriert wird. Bei 40 ms treten drei kleine CPU-Vorgänge auf, die mit dem Optimierer in Zusammenhang stehen (globale Schrittaktualisierung).

Dieses Verhalten ist bei jedem Schritt konsistent.

Irgendeine Idee, warum es hier eine solche Verzögerung gibt?

enter image description here

Antwort

1

Es gibt einen Weg, wie kann man bestimmen, was innerhalb dieses Intervalls mit Hilfe von Intel VTune Amplifier auf CPU geschieht (das Werkzeug ist nicht kostenlos, aber es gibt kostenlose voll funktionsfähige akademische und Testversionen) . Sie können ein Rezept von this article verwenden, um Timeline-Daten in Intel VTune Amplifier zu importieren und dort zu analysieren. Sie benötigen die Gruppierung Frame Domain/Source Function. Erweitern Sie die Zeile [Keine Rahmendomäne - Außerhalb eines Rahmens] und Sie erhalten die Liste der Hotspots, die in dem Intervall auftreten, an dem Sie interessiert sind.

Verwandte Themen