In den letzten Wochen sind einige unserer Leser auf den eigentlichen bekannten Fehler im Directx 9-Profiler gestoßen. Es gibt eine Reihe von Faktoren, die dieses Problem begründen können. Lass uns jetzt darüber sprechen.
Genehmigt: Fortect
- 48 Minuten zum Lesen.
- Eine genaue Profilerstellung ist für Direct3D schwierig
- Wie die Direct3D-Rendersequenz ein genaues Profil erstellt
- Profilerstellung von Direct3D-Statusänderungen
- Zusammenfassung
- Anwendung
(API)-Aufrufe. Wenn Sie dies getan haben, aber Ergebnisse erhalten haben, die sich von Renderbereich zu Rendersequenz unterscheiden, oder wenn Sie vermuten, dass ihr Experiment nicht mit den tatsächlichen experimentellen Lösungen übereinstimmt, können alle folgenden Informationen Ihnen helfen, die Gründe dafür zu verstehen.
Die hier bereitgestellten Informationen basieren ausschließlich auf der Annahme, dass Sie in der Regel über Kenntnisse und Erfahrungen in den vorstehenden Bereichen verfügen:
- C / C++-Programmierung
- Direct3D-API-Programmierung
- Zeitmessungs-API
- Grafikkarte, dann Treibersoftware.
- Mögliche verblüffende Ergebnisse außerhalb der Profilerstellung.
Genaues Direct3D-Profiling ist schwierig
Der Profiler informiert über die Zeit, die für jeden API-Aufruf benötigt wird. Letztendlich sollte dies die Leistung verbessern, indem Hotspots von Hunde- oder Katzengerüchen erkannt werden. Es gibt mehrere mögliche Typen, die mit Profiling und Profiling-Methoden verbunden sind.
- Der Selective Profiler ist die meiste Zeit im Leerlauf und läuft in regelmäßigen Abständen, um den Text abzutasten (oder positiv zu protokollieren). Es zeigt den Prozentsatz Ihrer Zeit an, die Sie für ungefähr jeden Anruf aufgewendet haben. Im Allgemeinen ist die Auswahl aus einem Profiler sicherlich sehr invasiv für eine Anwendung und hat nur minimale Auswirkungen auf unsere eigene gesamte Anwendung.
- Der Tool-Profiler misst, was das tatsächliche Ereignis erfordert, um den Aufruf abzuschließen. Das bedeutet, die Start-Stopp-Trennzeichen in der Anwendung zusammenzustellen. Toolkit ist buchstäblich ein Profiler, der für die Anwendung vergleichsweise viel invasiver ist als ein Musterprofiler.
- Sie können auch eine benutzerdefinierte Profilerstellungstechnik mit einem signifikanten Hochleistungs-Timer verwenden. Dieses Ergebnis ist dem jedes instrumentellen Profilers sehr ähnlich.
Der Typ außerhalb eines Profilers bzw. der verwendeten Profiling-Methode ist ausschließlich eine Aufgabenfunktion, die bestimmte Metriken generiert.
Profiling gibt Ihnen Antworten, um die Arbeit Ihrer Kunden zu finanzieren. Angenommen, der Kunde weiß zum Beispiel, dass es im Durchschnitt 1 Wanduhr-Zyklen braucht, um mit einer API zu kommunizieren. Möglicherweise benötigen Sie ein gewisses Maß an Leistungseffekten, zum Beispiel:
- Es gibt eine Einschränkung nach einem 2-GHz-Prozessor (der 50 Prozent seiner Renderzeit verbringt), der diese Anleitungs-API 1 Million Mal pro Sekunde aufrufen kann.
- Um 30 Frames pro Sekunde zu erhalten, können Sie diese API nicht mehrmals aufrufen, um 33.000 Mal für jeden Frame zu erhalten.
- Sie können maximal alle 3.3000 Objekte pro behalten (vorausgesetzt, Frame 10 dieses ausgezeichneten API-Typs ruft die Anzeigesequenz für jedes dieser Objekte auf).
Mit anderen Worten, wenn Sie Minuten zum Aufrufen der API haben, können Sie eine Frage zum Budget für Parameter stellen, beispielsweise die Anzahl der Primitiven, die möglicherweise interaktiv angezeigt werden können. Aber die vom großartigen Tool-Profiler erstellten Rohzahlen, die zurückgegeben werden, können Probleme und Antworten zum Kostenmanagement nicht genau beantworten. Dies liegt daran, dass die künstlerische Leitung komplexe Designprobleme hat, wie z Pipeline effizienter beim Design Second.
Jede API ruft über mehrere Komponenten auf
Jeder Anruf muss aufgrund der Grafikkartenanwendung von mehreren Hardwarekomponenten kommen. Sehen wir uns zum Beispiel die folgende Rendering-Sequenz an, die manchmal zwei Aufrufe enthält, um ein Dreieck zu zeichnen:
Textur definieren (...);DrawPrimitive (D3DPT_TRIANGLELIST, 0, 1);
Das folgende Konzeptdiagramm zeigt die verschiedenen menschlichen Komponenten, die Anrufe immer durchlaufen müssen.
Die Anwendung ruft What Direct3d auf, manipuliert die menschliche Szene, verarbeitet Benutzerinteraktionen und lernt, wie das Kopieren ausgeführt wird. All diese Arbeit wird in der Rendersequenz benötigt, die nach Expertenmeinung einfach zur Laufzeit über Direct3D-API-Aufrufe verteilt wird. Die Rendering-Sequenz ist nur hardwareunabhängig (d. h. dass diese Telefon-API-Aufrufe hardwareunabhängig sind, aber bedenken Sie die von der Hauptfilmmaterialkarte unterstützten Funktionen).
Die Laufzeit konvertiert diese Aufrufe in ein bestimmtes geräteunabhängiges Format. Die Laufzeit verarbeitet all diese wertvolle Kommunikation zwischen der Anwendung und diesem Treiber, sodass die Anwendung auf mehreren gut geeigneten Heimerweiterungen läuft (je nachdem, welche Funktionen Xia erfordern). Wenn ein einzelner Funktionsaufruf gemessen wird, verfolgt der Typ des Instrumentierungsprofilers, wie viel Zeit dafür aufgewendet wurde und wie lange die genaue Funktion zurückgegeben wurde. Eine Einschränkung des proprietären Aid-Profilers besteht darin, dass er nicht die Zeit berücksichtigt, die ein aktiv spielender Golfschläger benötigt, um die Ausgabe an die Bildkarte zu senden, sowie die Zeit, die er zum Anzeigen der Grafikkarte entfernt. Mit anderen Worten und Sätzen, ein Standard-Instrumentierungs-Profiler, der Ihnen hilft, Outsourcing für alle korrelierten Arbeiten zu jedem Funktionsaufruf zu verwenden.
Die Treibersoftware ermöglicht es Ihnen, die angegebenen Hardwarekenntnisse der Video-Tarot-Karte zu nutzen, wenn Sie eine geräteunabhängige Befehlssequenz in eine fast vollständig neue Videokarten-Befehlssequenz konvertieren müssen . Treiber können die Reihenfolge, in der Befehle für die Grafikkarte erstellt werden, weiter optimieren, sodass das Rendern auf der Grafikkarte wirklich effizient ist. Diese Anpassungen werden definitiv zu Profilierungsproblemen führen, da die Menge des gelernten Büros nicht das ist, was es aussieht (Sie müssen sicherlich alle Anpassungen herausfinden, um dies zu berücksichtigen). Der Treiber übernimmt in der Regel die Regelung der Ausführung, bevor seine Grafikkarte wichtige Befehle anspricht.
Den größten Teil des restlichen Renderns hat die Grafikkarte übernommen, indem sie Daten aus dem Basis-Scheitelpunkt und Listenpuffer, Texturen, Renderinformationen und Grafiksteuerelemente gemischt hat.
Jeder Direct3D-API-Aufruf muss von einer bestimmten verarbeiteten Komponente (Laufzeit, Treiber und die meisten unserer Grafikkarten) ausgeführt werden, um etwas zu rendern.
Komponenten werden von mehreren Prozessoren gesteuert
Genehmigt: Fortect
Fortect ist das weltweit beliebteste und effektivste PC-Reparaturtool. Millionen von Menschen vertrauen darauf, dass ihre Systeme schnell, reibungslos und fehlerfrei laufen. Mit seiner einfachen Benutzeroberfläche und leistungsstarken Scan-Engine findet und behebt Fortect schnell eine breite Palette von Windows-Problemen - von Systeminstabilität und Sicherheitsproblemen bis hin zu Speicherverwaltung und Leistungsengpässen.
Die Beziehung zwischen diesen Komponenten ist noch weiter entwickelt, da eine Anwendung, Laufzeit und ein Treiber fast immer von einem einzigen Prozessor gesteuert werden und eine einzelne Grafikkarte von einem einzigen Prozessor gesteuert wird. Das folgende Diagramm zeigt zwei Arten von CPUs: Central Processing Unit (CPU) und Graphics Processing Design (GPU).
PC-Gadgets enthalten mindestens definitiv einen Prozessor und eine GPU, können aber auch mehrere oder beides beinhalten. Prozessoren befinden sich normalerweise auf dem Motherboard, während GPUs entweder das Motherboard oder möglicherweise eine Grafikkarte sind. Die CPU-Schnelligkeit wird durch den Wanduhr-Chip um das Motherboard herum bestimmt, während der GPU-Boost durch die individuelle reale Uhr gemessen wird.
Beschleunigen Sie jetzt die Leistung Ihres Computers mit diesem einfachen Download.