Wie fange ich an, einen GPU-Profiler auf niedriger Ebene zu schreiben?

8

Ich habe in den letzten Tagen GPU-Profiler von Hardware-Unternehmen (Qualcomm, PowerVR, Intel) studiert. Mir ist aufgefallen, dass diese Tools mehr Details auf niedriger Ebene zu liefern scheinen als die GPU-Profiler, die ich in der Vergangenheit verwendet habe - XCodes OpenGL ES-Frame-Capture und Apitrace -, in denen nur aufgeführt ist, welche OpenGL-Aufrufe getätigt wurden und wie der aktuelle Status ist Ressourcen sind.

Wie fange ich an, wenn ich ein einfaches Tool erstellen möchte, das beispielsweise Sampler-Cache-Fehler und Shader-Assembler-Code anzeigt?


quelle

Antworten:

6

Für grundlegende GPU- Zeitdaten können Sie D3D-Zeitstempelabfragen oder die entsprechenden OpenGL- Zeitabfragen verwenden .

Alle Hardwaredaten auf niedriger Ebene wie Cache-Fehler werden extrem herstellerspezifisch sein. Jeder GPU-Anbieter verfügt über eine eigene benutzerdefinierte API oder Erweiterung für den Zugriff auf Leistungsdaten auf niedriger Ebene auf seiner Hardware. Die APIs unterscheiden sich in ihrer Funktionsweise und legen nicht unbedingt alle dieselben Details offen. Die verfügbaren Daten können auch zwischen verschiedenen Chipmodellen innerhalb desselben Herstellers variieren. Daher müssen Sie wahrscheinlich ein wenig über die Funktionsweise der Hardware wissen, um einen Sinn daraus zu ziehen.

Hier finden Sie Links zu den relevanten APIs für die meisten Hauptanbieter von GPUs.

Nathan Reed
quelle
Oh, großartig, ich denke, ich hätte etwas tiefer in die Unternehmenswebsites eintauchen sollen. Ich nahm an, dass, da Apitrace diese Details nicht anbot, eine Art Umkehrung vor sich ging. Vielen Dank!
Oh, ich dachte, er wollte noch ein Perfkit schreiben. Die Antwort wäre, dass es nur möglich ist, wenn Sie Ihre eigene Hardware herstellen.
v.oddou