Silicon Valley chip expert David Kanter has hypothesized that PhysX diminishes CPU performance by “exclusively” using an outdated x87 instruction set.
“x87 has been deprecated for many years now, with [both] Intel and AMD recommending the much faster SSE instruction [set],” Kanter told TG Daily in an e-mailed statement.
“On modern CPUs, SSE can easily run 1.3-2X faster than similar x87 code. By using x87, PhysX diminishes the performance of CPUs, calling into question the real benefits of PhysX on a GPU.”
Kanter – who performed a detailed analysis of the instruction set – also acknowledged that Nvidia was free to “hobble” PhysX on the CPU by using single, rather than multi-threaded code “if it wished.”
“[But] that choice does not benefit developers or consumers, and casts substantial doubts on the purported performance advantages of running PhysX on a GPU, rather than a CPU.
“[Still], for Nvidia, decreasing the baseline CPU performance by using x87 instructions and a single thread makes GPUs look better. This tactic calls into question the CPU vs. GPU comparisons made using PhysX; but the name of the game at Nvidia is making the GPU look good, and PhysX certainly fits the bill in [its] current incarnation.”
However, Nvidia spokesperson Bryan Del Rizzo told TG Daily that Kanter’s theory was “factually incorrect.”
“Since the acquisition of PhysX, [we] have and will continue to invest heavily [in] PhysX performance for all platforms – including CPU-only on the PC. [But], we cannot become dependent on any hardware feature like SSE after the first revision has shipped.
“[And although] our SDK does [include] some SSE code, we found [that] non-SSE code can result in higher performance than SSE in many situations. [Nevertheless], we will continue to use SSE and plan to enable it by default in future releases. That being said, not all developers want SSE enabled by default, because they still want support for older CPUs for their SW versions.”
Del Rizzo also emphasized that PhysX was “fully compatible” with multi-core CPUs.
“It’s incorrect to say that PhysX does not allow multi-threading, when in fact it is up to the developer to allocate threads as they see fit based on their needs. Examples of multi-core use of PhysX includes 3DMarkVantage and FluidMark.
“Clearly, Nvidia is committed to improving the performance of PhysX for all platforms, including PCs – with and without – GPU acceleration. Having great CPU only performance is critical to allow developers to use more PhysX [in a] game.
“We are [certainly] happy to get feedback on any PhysX performance issues and observations, particularly from developers. That said, any assertion that we are somehow hamstringing the CPU as Kanter indicates, is patently false.”