Frage:
Feststellen, ob ein Spiel CPU- oder GPU-begrenzt ist
Mad Scientist
2010-12-03 01:24:20 UTC
view on stackexchange narkive permalink

Was ist eine zuverlässige, aber nicht zu zeitaufwändige Methode, um festzustellen, ob ein bestimmtes Spiel durch die Grafikkarte oder die Prozessorgeschwindigkeit eingeschränkt ist?

Ich habe einige Vorurteile darüber, ob ich meistens bin GPU oder CPU begrenzt, aber ich möchte überprüfen, ob ich damit Recht habe. Ich habe einige Ideen, wie ich das testen könnte, aber genaue Benchmarks durchzuführen ist notorisch schwierig und ich habe nicht viel Erfahrung damit.

Ich frage mich also, wie der Engpass auf einfache Weise ermittelt werden kann, wenn nur ein Computer mit einer bestimmten Konfiguration verfügbar ist. Welche Tools würde ich für diesen Zweck verwenden?

Es wäre auch interessant festzustellen, ob die Menge an VRAM auf meiner Grafikkarte ein begrenzender Faktor ist.

Ich wünschte, ich könnte diese Frage mehr als einmal beantworten, ich würde gerne eine großartige Antwort darauf sehen
Eine Sache, die mir aufgefallen ist, war, dass die wahnsinnige KI des WC3 davon abhängt, wie schnell Ihre CPU ist. Normalerweise kann ich zwei davon auf meinem langsamen Computer besiegen, aber nicht auf meinem schnellen: D.
Mögliches Duplikat von [Was ist besser für eine Gaming PC-Grafikkarte - mehr RAM oder schnellere GPU?] (http://gaming.stackexchange.com/questions/321/which-is-better-for-a-gaming-pc -graphics-card-more-ram-or-schneller-gpu)
Ist die CPU-Auslastung bei 100%
@Zommuter das sind ganz andere Fragen.Diese Frage bezieht sich auf das Flaschenhals der GPU oder CPU und darauf, wie festgestellt wird, welche gedrosselt wird.Nicht was optimaler ist.
Sechs antworten:
weiji
2010-12-03 11:11:53 UTC
view on stackexchange narkive permalink

Zwei Faustregeln, die ich verwendet habe:

Wenn das Erhöhen der Auflösung zu einem starken Abfall der Bildrate führte, könnte dies darauf hinweisen, dass das Spiel GPU-gebunden war, da die erhöhte Auflösung das macht Grafikkarten arbeiten viel härter und brauchen daher länger, um jeden Frame aus der Tür zu bekommen.

Wenn andererseits die Erhöhung der Auflösung nur zu einer vernachlässigbaren Verringerung der Bildrate (oder überhaupt nicht zu einer Verringerung) führte, war dies ein Indikator dafür, dass das Spiel als zusätzliches Video CPU-gebunden war Die Komplexität wurde leicht durch die freie Grafikkartenverarbeitungskapazität bewältigt, während die Hauptspielverarbeitungslogik die CPU bereits gebunden hatte. In dieser Situation ist die Spiel-Engine zu beschäftigt, um dem Video-Subsystem genügend Arbeit zu geben.

Ich denke jedoch nicht, dass Spiele heutzutage so einfach sind, dass die Leistung so leicht eingeschränkt wird. Seit vielen Jahren sind GPUs komplexer geworden und Entwickler finden Möglichkeiten, mehr Arbeit auf sie zu verlagern. Daher kann auf beiden Seiten viel Arbeit geleistet werden. Deshalb verwende ich diese Faustregeln nicht sehr viel mehr - sie gelten einfach nicht wirklich. Die Annahme war, dass das Erhöhen der Auflösung keine zusätzliche Arbeit für die CPU verursachte.

Wenn Sie diese Grafikkarten-Benchmarks aus Toms Hardware-Handbuch in den frühen 2000er Jahren religiös befolgten, konnten Sie dies manchmal sehen - z. Quake 3 mit einer "modernen" Grafikkarte und Sie erhalten so viele Balkendiagramme, dass sie nur flach sind.

Wenn Sie die Bildrate Ihres Spiels messen können, probieren Sie dies aus und sehen Sie, was passiert.

IMO ist dies der bisher beste Rat.
ChrisF
2010-12-03 02:27:56 UTC
view on stackexchange narkive permalink

Da das Reduzieren der Optionen für Bildschirmauflösung und / oder Texturdetails so gut wie garantiert die Leistung eines Spiels verbessert, kann dies nicht verwendet werden, um festzustellen, ob es an eine GPU gebunden ist oder nicht. Sie können nachsehen, welche höchste Auflösung / Texturdetailstufe für Ihr System verfügbar ist.

Wenn Sie die Leistung Ihrer CPU verringern könnten (Übertakten?), Könnte dies bedeuten Sie geben einen Hinweis darauf, ob das Spiel CPU-gebunden war - aber ich glaube auch nicht, dass es 100% zuverlässig sein kann.

Es gibt auch eine Unschärfe darüber, was von der Game Engine (CPU) gemacht wird und was von die Rendering Engine (GPU). In den späten 1990er / frühen 200er Jahren wurde die Spielphysik früher von der CPU durchgeführt, aber dann konnten Grafikkarten diese Berechnungen auf dedizierter Hardware durchführen, wodurch sie beschleunigt und die Leistung verbessert wurden. Dies bedeutet, dass das Anzeigen, wie viele Objekte sich auf dem Bildschirm bewegen (zum Beispiel), nicht als Anhaltspunkt dafür dienen kann, wie leistungsfähig eine CPU ist, da ein Großteil der Bewegung möglicherweise von der GPU-basierten Physik-Engine gesteuert wird.

Eine Sache, die zu beachten ist, ist, dass aufgrund der großen Auswahl an Hardware, die PC-Spiele auf Spieleentwicklern ausführen müssen, nach Tricks Ausschau gehalten werden muss, die die Leistung verbessern können, und dass das Spiel (hoffentlich) verschlechtern sich anmutig, so dass es auf den unteren Endmaschinen spielbar ist. Dies bedeutet, dass wenn Sie die Hardware zur Verfügung haben, sie verwendet wird, wenn nicht bis zum Äußersten, dann ziemlich nah.

Underclocking ist der richtige Begriff.
Xantec
2010-12-03 05:28:26 UTC
view on stackexchange narkive permalink

aus rein beobachtender Sicht (ohne Überprüfung anderer Anwendungen usw.) Ich glaube, wenn Sie CPU-gebunden sind, werden Sie feststellen, dass es viel mehr Frame-Ruckler gibt, wenn die GPU auf die CPU wartet, während Sie GPU sind gebunden wird es eine konsistentere Erfahrung geben, wenn auch langsam und träge.

dies könnte jedoch alles hooey sein.

ErsatzStoat
2016-03-31 22:33:48 UTC
view on stackexchange narkive permalink

Wenn Sie nach einer "schnellen und schmutzigen" Vermutung suchen, können Sie zwei Tests ausführen:

  1. Verwenden Sie einen Systemmonitor oder ein Profiling-Tool, um die CPU mit der GPU-Nutzung zu vergleichen und sehen, ob man deutlich nicht ausgelastet ist. Mein Vorschlag ist GPUView.
  2. Führen Sie alle GPU-Engpass-Tests gleichzeitig durch und prüfen Sie, ob sich die Leistung verbessert:
    • Reduzieren Sie die Bittiefe des Farb- / Tiefenpuffers.
    • Verwenden Sie Texturen mit der höchsten Mip-Stufe (niedrigste Auflösung).
    • Auflösung reduzieren.
    • Vereinfachen Sie den Vertex-Shader.
    • Reduzieren Sie die Größe des Scheitelpunktformats.
  3. ol>

    Was sie bedeuten:

  • Smaller Bittiefe bedeutet weniger Ressourcen pro Pixel, was Engpässe auf Framebuffer-Ebene aufdeckt. Mögliche Korrekturen:
    • Rendertiefe zuerst
    • Verwenden Sie weniger Alpha-Blending
    • Tiefenschreibvorgänge nach Möglichkeit deaktivieren
    • Vermeiden Sie unnötige Pufferlöschungen
    • Skybox optimieren (zuletzt mit frühem Z-Out oder zuerst ohne R / W-Tiefe rendern)
    • Verwenden Sie Puffer mit kleineren Bittiefen
  • Smaller textures bedeutet weniger Ressourcen und weniger Abrufe, wodurch Engpässe in der Texturbandbreite aufgedeckt werden. Mögliche Korrekturen:
    • Verwenden Sie kleinere Texturen
    • Verwenden Sie kleinere Texturbittiefen
    • Texturen komprimieren
    • Verwenden Sie Mipmapping
  • Reduzierte Auflösung bedeutet, dass weniger Pixel verarbeitet werden müssen, was zu Engpässen sowohl beim Framebuffer als auch beim Fragment-Shader führt. Mögliche Korrekturen:
    • Rendertiefe zuerst
    • Verschieben Sie die Arbeit vom Fragment-Shader zum Vertex-Shader
    • Vermeiden Sie übermäßige Normalisierung
    • Vermeiden Sie zu teure Texturfilterung
    • Reduzieren Sie die Komplexität des Fragment-Shaders :(
  • Smaller Vertex Shader bedeutet weniger Verarbeitung pro Vertex, was Engpässe in der Vertex-Verarbeitungsphase aufdeckt. Mögliche Korrekturen:
    • Reduzieren Sie die Anzahl der verarbeiteten Scheitelpunkte!
    • Verschieben Sie die Berechnungen pro Objekt auf die CPU-Seite
    • Verwenden Sie LOD
  • Führen Sie weniger Transformationen durch, indem Sie mit den richtigen Koordinatenräumen beginnen
  • Smaller Vertex-Formate bedeutet, dass weniger Daten übertragen werden müssen, was Engpässe auf der Vertex- / Indexübertragungsebene aufdeckt. Mögliche Korrekturen:
    • Verwenden Sie kleinere Scheitelpunktformate (wenn Ihre unnötig fett sind)
    • Verwenden Sie kleinere Scheitelpunktformate (indem Sie Attribute von kleinen Typen ableiten, anstatt größere zu speichern)
    • Verwenden Sie kleinere Indextypen
    • Greifen Sie nacheinander auf Scheitelpunkt- / Indexdaten zu
  • Wenn all dies erledigt ist und Sie keine Leistungsverbesserung feststellen, können Sie mit Sicherheit sagen, dass Sie an die CPU gebunden sind. Mögliche Korrekturen:

    • Mehr Chargen
  • Weniger Sperren
  • Arbeiten Sie weiter unten im Rohr
  • Machen Sie Ihr Projekt realistischer
  • Wenn diese Menge an GPU-Tests für Sie immer noch zu umfangreich ist, können Sie die einfachsten Änderungen auswählen (z. B. die Auflösung reduzieren) und hoffen, dass sie Ihnen etwas sagen, aber Ihre Ergebnisse sind offensichtlich weniger schlüssig, da dies der Fall ist In bestimmten Phasen der GPU-Pipeline werden keine Engpässe festgestellt.

    Wenn Sie GPU-gebunden sind, um Engpässe auf der GPU-Seite weiter zu isolieren, sollten Sie diese Tests einzeln durchführen, beginnend am unteren Ende (Ende der Pipeline) und nach oben arbeiten (Framebuffer - > Textur -> Fragmentschattierung -> Scheitelpunktverarbeitung -> Scheitelpunktübertragung).

    NOTE: Dies setzt natürlich voraus, dass Sie entweder Zugriff auf Einstellungen haben, mit denen Sie diese Änderungen vornehmen können, oder dass Sie Entwickler sind und es sich um ein Spiel handelt, für das Sie Zugriff auf den Quellcode haben.

    Willkommen bei Gaming.SE!Schöne erste Antwort: D.
    Wikwocket
    2010-12-03 05:12:15 UTC
    view on stackexchange narkive permalink

    Sie können den Windows-Task-Manager öffnen (den Sie über Strg + Alt + Entf aufrufen können), ihn dann minimieren und Ihr Spiel ein wenig spielen. Beenden Sie dann Ihr Spiel und sehen Sie sich die CPU-Auslastung auf der Registerkarte Leistung an (Sie können die Größe des Monitors ändern, um mehr vom Trend zu sehen). Überprüfen Sie, ob Ihre CPU-Auslastung bei 100% oder viel weniger zu bleiben scheint.

    Ich weiß, dass es andere Dienstprogramme gibt, mit denen Sie die CPU-Auslastung sowie die RAM-Auslastung und die Festplatten-E / A anzeigen können, die Sie ausprobieren können . Ich weiß jedoch nicht, ob es eine gibt, mit der die Leistung von Grafikkarten überwacht werden kann.

    Abhängig von den Grafikkarten, aber aus den in anderen Fragen genannten Gründen ist dies kein guter Weg, um festzustellen, wo ein Spiel einen Engpass aufweist.
    DrFish
    2010-12-03 17:16:58 UTC
    view on stackexchange narkive permalink

    Vor ein paar Jahren würde ich das definitiv sagen, wenn ich mit der Auflösung spiele: Wenn die Leistung in direktem Verhältnis zur Auflösung variiert, ist sie an die GPU gebunden, wenn nicht, an die CPU, aber jetzt ist es eine andere Geschichte, da Shader dabei sind Einige der Shader-Effekte können nicht einfach durch Verringern der Auflösung abgeschwächt werden. Sie greifen auf dieselbe Menge an Ressourcen zurück, egal was passiert.

    Einige Grafikoptionen betreffen nur die CPU, andere nur die GPU und einige eine Mischung aus beiden (Raucheffekte sind ein häufiges Beispiel).

    Das Verringern der Auflösung ist immer noch eine Faustregel, es funktioniert einfach nicht so gut wie zuvor. P. >

    Aber wenn ich das Geld hätte, würde ich in eine bessere GPU als in eine schnellere CPU investieren, da es Extras gibt, die Sie ohne mehr GPU-Leistung niemals erreichen würden, wie Anti-Aliasing und anisotropes Filtern.



    Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 2.0-Lizenz, unter der er vertrieben wird.
    Loading...