Nvidia purposefully hobbles PhysX on the CPU

The place for technology related posts.

Moderator: Moderators

Post Reply
User avatar
Sabre
DCAWD Founding Member
Posts: 21432
Joined: Wed Aug 11, 2004 8:00 pm
Location: Springfield, VA
Contact:

Nvidia purposefully hobbles PhysX on the CPU

Post by Sabre »

Article
Technical article
NVIDIA JUST HAD one of their most sleazy marketing tactics exposed, that PhysX is faster on a GPU than a CPU. As David Kanter at Real World Tech proves, the only reason that PhysX is faster on a GPU is because Nvidia purposely hobbles it on the CPU. If they didn't, PhysX would run faster on a modern CPU.

The article itself can be found here, and be forewarned, it is highly technical. In it, Kanter watched the execution of two PhysX enabled programs, a game/tech demo called Cryostasis, and an Nvidia program called PhysX Soft Body Demo. Both use PhysX, and are heavily promoted by Nvidia to 'prove' how much better their GPUs are.

The rationale behind using PhysX in this way is that Nvidia artificially blocks any other GPU from using PhysX, going so far as to disable the functionality on their own GPUs if an ATI GPU is simply present in the system but completely unused. The only way to compare is to use PhysX on the CPU, and compare it to the Nvidia GPU version.

If you can imagine the coincidence, it runs really well on Nvidia cards, but chokes if there is an ATI card in the system. Frame rates tend to go from more than 50 to the single digits even when you have an overclocked i7 and an ATI HD5970. Since this setup is vastly faster than an i7 and a GTX480 in almost every objective test, you might suspect foul play if the inclusion of PhysX drops performance by an order of magnitude. As Real World Tech proved, those suspicions would be absolutely correct.

How do they do it? It is easy, a combination of optimization for the GPU and de-optimization for the CPU. Nvidia has long claimed a 2-4x advantage for GPU physics, using their own PhysX APIs, over anything a CPU can do, no matter what it is or how many there are. And they can back it up with hard benchmarks, but only ones where the Nvidia API is used. For the sake of argument, lets assume that the PhysX implementations are indeed 4x faster on an Nvidia GPU than on the fastest quad core Intel iSomethingMeaningless.
Sabre (Julian)
Image
92.5% Stock 04 STI
Good choice putting $4,000 rims on your 1990 Honda Civic. That's like Betty White going out and getting her tits done.
User avatar
complacent
DCAWD Founding Member
Posts: 11651
Joined: Sun Aug 29, 2004 8:00 pm
Location: near the rockies. very.
Contact:

Re: Nvidia purposefully hobbles PhysX on the CPU

Post by complacent »

wow.

protecting turf, eh?
colin

a tank, a yammie, a spaceship
i <3 teh 00ntz
User avatar
Raven
Mr. Underpowered or something
Posts: 1221
Joined: Thu Feb 18, 2010 12:46 pm
Location: Manasty

Re: Nvidia purposefully hobbles PhysX on the CPU

Post by Raven »

This is one of the reasons I don't buy nVidia, they're sleqazy bastards. And this isn't the first time if I recall correctly.
All my cars have drum brakes and are sub 200 hp, what am I doing with my life?
2013 Mazda 2
1994 Chevy S10 pickup
1985 Chevy Caprice (no fuel system)
scheherazade
DCAWD Groupie
Posts: 727
Joined: Wed Dec 05, 2007 11:19 am
Location: nova

Re: Nvidia purposefully hobbles PhysX on the CPU

Post by scheherazade »

I currently run the nvidia 257.15 drivers which are bugged, and do not have the ati filter.

8800 gtx for physx and cuda
5970 for graphics and openCL


After messing with gpgpu a bit, I do find the GPU faster at certain things.

Massively parallel items (i.e. 10'000 items, all interacting with every other item (o^2)) are faster on the GPU, no doubt.

However, it doesn't really matter, since the frame rates are still far short of what I would call realtime.

GPU problems where framerates are good, are also quite quick on CPU.

Often, these "realtime framerate" problems are so small that eliminating the bus overhead (using CPU instead of GPU over PCI-E) has a greater impact than anything else.

Also, dedicating a GPU to GPGPU is REALLY to your benefit, as sharing it for graphics has (at least in my tests) made performance suffer dramatically. Even when rendering simple dozen-tri models.

I've got mixed feelings.
If I were to write an off-line simulator of millions of entities, I'd do it on the GPU.

For more pedestrian problems, I'd probably implement multiple paths, and let the software sample and choose the best path dynamically.
I'm confident that all reasonable problems would run better on the CPU (or alternatively, on a dedicated GPU).



How this relates to physx? I donno... it's just a GPGPU SDK for physics.

My biggest problem with it is that it presumes your data structures mesh well with the SDK's concepts of primitives - which often times they do NOT, unless you began coding with physx in mind to begin with.

-scheherazade
Post Reply