Nvidia PhysX Software is Ancient, Slow for CPUs

55

Latest Videos FromTom's Hardware
Marcus Yam served as Tom's Hardware News Director during 2008-2014. He entered tech media in the late 90s and fondly remembers the days when an overclocked Celeron 300A and Voodoo2 SLI comprised a gaming rig with the ultimate street cred.
  • Computerrock1
    As much as I think Nvidia is a great marketing strategist, I think they dropped the ball on Physx...
    Reply
  • mauller07
    This is why Agners CPU blog is a good read.

    seriously need better standardization and a massive spring clean with the x86 code base and all extensions since, it could bring a lot of performance improvements with very little expenditure on cpu resources much like optimizing bad code.
    Reply
  • kartu
    But it's not fair to say, in the words of that article, that we're intentionally hobbling the CPU
    Right. You are soo motivated to make it work well even without nVidia's mini-ovens.
    Reply
  • abcdeasdfasdf
    GPU scene has some shady part; no doubt about it, even hardware Ageia cards back then is questionable.
    Reply
  • waffle911
    Why so lazy, Nvidia? "Better than it was" and "good enough" are not real excuses for neglecting a key technology you market to developers.

    I really wouldn't be surprised if AMD eventually brought about and advocated the development of a new "Open-PL" physics standard or something.
    Reply
  • dan117
    DirectCompute / OpenCL >>> PhysX
    Reply
  • kelemvor4
    dan117DirectCompute / OpenCL >>> PhysXDirectCompute/OpenCL/CUDA != PhysX. They serve different purposes.

    Silly to say nvidia is deliberately hobbling physx on the cpu, though; given that ALL the physx code is old (by the author's admission) it's just old code. I'm an nvidia fan but the truth is that physx is so poorly adopted among game developers it wouldn't bother me in the least to just see it go away.
    Reply
  • mitch074
    There is one thing to keep in mind, though: MMX is useless for this kind of computation, and SSE was absent from:
    - Pentium Pro
    - Pentium II
    - early K7: Athlon (up to 1200 MHz) and Duron (up to 950 MHz)
    So, at the time the software-only implementation of PhysX was written (around 2005, I'd say), there were still some SSE-less machines around.

    Of course, Nvidia has no excuse about not making an SSE-optimized build until now, will x87 fallback.
    Reply
  • rembo666
    To be fair, it takes almost as much effort to make something run with SSE instructions as it does with GPU. "Deprecated" is a strong word. x87 instructions are still very widely used and are much more efficient today than they were with the old 8087 co-processor. The only time programmers use SIMD (Single-Instruction-Multiple-Data) instructions is when they need to speed up processing on a massive amount of floating point data.

    I do agree with your premise, but not the language you use. Optimizing your code to run the SSE instructions can give you about 3x to 4x speedup. However, it takes effort. NVIDIA would rather spend the resources on the parts of PhysX that sell their GPUs than to maintain the CPU compatibility code.

    This strategy may backfire, since they still make money by licensing the PhysX technology to game developers. If they cripple their physics engine for non-NVIDIA setups, they will lose revenue and market share to Havok. Developers want their games to work on as many configurations as possible. If they can't have what they want from NVIDIA, they will go to someone who will provide it.
    Reply
  • Syndil
    PhysX has always been shady. This should come as no surprise to anyone. I'm not sure why it's still around. Well, other than the fact that Nvidia wants it to be around.
    But with multi-core CPUs the norm now, why would I want to dedicate part of my graphics computing power for physics? Rhetorical question; I wouldn't. I'd rather have the game written to be optimized for multiple cores, and perhaps dedicate one core to physics, if it would help. Seems silly to have CPU cores idling while the GPU does double duty.
    Reply