Bremst Nvidia CPU-PhysX-Effekte künstlich aus?
Die Grafikchips moderner GeForce-Grafikkarten von Nvidia beschleunigen bestimmte physikalische Effekte und rendern in einigen Spielen beispielsweise wehende Fahnen, Rauch oder herumflatternde Zeitungen. Zwar können auch Hauptprozessoren (CPUs) die sogenannten PhysX-Effekte berechnen, die Bildrate sinkt dann aber selbst bei modernen Vier- oder Sechskern-Prozessoren auf Spiele-untaugliche Werte.
Die Webseite Realworldtech analysierte den PhysX-Code und prangert an, dass dieser in Verbindung mit Hauptprozessoren lediglich einen Kern zur Abarbeitung nutzt. Wird aber der Grafikchip als “PhysX-Prozessor” festgelegt, dann verpackt der GeForce-Treiber die Aufgaben automatisch in mehrere Threads und die Bildrate schnellt in die Höhe. Außerdem nutzt Nvidia lediglich veraltete x86-Befehle für Gleitkommaberechnungen, von denen Intel und AMD schon seit Anfang 2000 abraten. Effiziente SSE-Befehle, die ohne größeren Programmieraufwand eingebunden werden könnten und die Performance auf aktuellen CPUs deutlich steigern würden, nutzt Nvidia bei PhysX nicht.
Daraus leitete Realworldtech den Verdacht ab, Nvidia bremse die Berechnung von PhyX-Effekten auf CPUs künstlich aus, um den GeForce-Grafikkarten ein weiteres Verkaufsargument angedeihen zu lassen.
Doch der kalifornische Grafikchiphersteller wies derlei Anschuldigungen umgehend zurück. Nvidias Senior PR Manager Brian Del Rizzo erklärte gegenüber der Webseite Thinq sinngemäß: “Jede Behauptung, dass wir die CPU künstlich ausbremsen würden, ist offenkundig falsch.” Es liege vielmehr in den Händen der Entwickler, Multithreading bei CPU-PhysX-Code zu nutzen und Aufgaben auf verschiedene Threads zu verteilen. Gute Beispiele seien laut Del Rizzo die CPU-Tests in den Benchmark-Programmen 3DMark Vantage und Fluidmark, die mit zunehmender Kernzahl skalieren.
Der verwendete PhysX-Programmcode stamme außerdem von Ageia und noch aus einer Zeit, in denen Prozessoren mit nur einem Kern vorherrschten. Das ist laut Del Rizzo der Grund, weshalb Multithreading nicht enthalten ist. Die Firma Nvidia, die lediglich GPUs und keine CPUs herstellt, sah sich hier offensichtlich nicht gezwungen, den alten Code auf moderne Mehrkernprozessoren hin zu optimieren beziehungsweise umzuschreiben.
Immerhin sollen Entwickler ab dem PhysX-API 3.0 Multi-Threading mithilfe von neuen Funktionen einfach und automatisch implementieren können – auch SSE-Unterstützung soll dabei sein.