2016-08-09 46 views
1

Gibt es eine Möglichkeit, zu einem bestimmten Zeitpunkt zu ermitteln, wie viele Prozesse auf der GPU laufen und sie möglicherweise verwalten (yield, resume, kill ... wenn nötig). Was ich tun möchte ist, während ich verschiedene Programme laufe, jeden Prozess auf der GPU überwachen. Ich habe nicht gesehen, wie das geht. Ich habe gesehen, dass der GPU-Kontext das CPU-Äquivalent des Prozesses ist, aber alle Erklärungen, die ich gelesen habe, bestanden darin, sie in einem einzigen Programm zu beeinflussen. Noch einmal, was ich will ist, alle Aktivitäten auf der GPU (wie mit dem nvidia-smi Tool, aber mit meinen eigenen Mitteln) zu verfolgen. Kann mir jemand dabei helfen? Ist das überhaupt möglich?Erhalte aktuelle CUDA-Kontexte, die auf meiner GPU laufen

Antwort

1

Ein GPU-Kontext ist ein Konstruktor auf Treiberebene, die GPU selbst weiß nichts über Kontexte. Alles, was es weiß, ist, dass es eine Befehlswarteschlange hat, die vom Treiber gesendet wird, dass es durchläuft und ausgeführt wird. Die verschiedenen APIs, die von der GPU unterstützt werden, bieten Unterstützung für das Ausgeben von Befehlen. Ich glaube nicht, dass es Befehle zum Abbrechen von Befehlen gibt, obwohl es Befehle zum Überprüfen gibt, ob ein Befehl abgeschlossen wurde. Befehle in anderen Kontexten aus meiner Perspektive zu prüfen oder zu manipulieren wäre ein Verrat am Konzept eines Kontextes.

RE prüfen, was die GPU tut, können Sie dies auf der Treiberebene tun, indem Sie die Treiber-Befehlswarteschlange verfolgen, Sie ausgeben und die Hardware-Befehlswarteschlange Stichprobenstatus, es ist eine Menge Arbeit, weshalb diese Aufgabe ist normalerweise zu GPU-Anbietern zu implementieren.

+0

Danke, es scheint nicht so einfach zu sein. –