In matters of physics calculation in games AMD and Nvidia currently don't trust each other. After the problems with Batman: Arkham Asylum the situation is tense and AMD says Nvidia wouldn't adjust the Physx API properly for CPUs.
AMD vs. Nvidia – Physx said to lack CPU optimization [Source: view picture gallery]
Some of you might have heard about ‘Batmangate'. AMD attacked Nvidia because of the Physx support of the game. Now the fight apparently goes to second round. Once again AMD tackled Nviida in an interview: It has been said that the Physx technology wouldn't make proper use of multi-core CPUs.
Richard Huddy, Developer Relations Manager of AMD, told Bit-Tech
in an interview that CPU optimizations have been quite good back in the Ageia times. But since Ageia has been acquired by Nvidia this wouldn't be the case anymore. For AMD the reasons are clear: Market strategies.
In Huddy's opinion Nvidia has neglected the optimization of the CPU API on purpose in order to make GPU physics calculations look better. This is supposed to increase the number of sold graphics cards, what would actually be a benefit for Nvidia. The API is regarded to be single-threaded in some parts even and would not scale on multiple cores.
bit-tech: -so we'll see AMD GPU physics in 2010?
RH: Bullet should be available certainly in 2010, yes. At the very least for ISVs to work with to get stuff ready.
The other thing is that all these CPU cores we have are underutilised and I'm going to take another pop at Nvidia here. When they bought Ageia, they had a fairly respectable multicore implementation of PhysX. If you look at it now it basically runs predominantly on one, or at most, two cores. That's pretty shabby! I wonder why Nvidia has done that? I wonder why Nvidia has failed to do all their QA on stuff they don't care about - making it run efficiently on CPU cores - because the company doesn't care about the consumer experience it just cares about selling you more graphics cards by coding it so the GPU appears faster than the CPU.
It's the same thing as Intel's old compiler tricks that it used to do; Nvidia simply takes out all the multicore optimisations in PhysX. In fact, if coded well, the CPU can tackle most of the physics situations presented to it. The emphasis we're seeing on GPU physics is an over-emphasis that comes from one company having GPU physics... promoting PhysX as if it's Gods answer to all physics problems, when actually it's more a solution in search of problems.
PC Games Hardware contacted Nvidia about the matter and as a result Nvidia published a statement
on the official blog.
Recently, an interview ran with an AMD developer relations manager, who claimed that NVIDIA (after acquiring Ageia) had purposely reduced the performance and scalability of NVIDIA PhysX technology, with regards to CPU core utilization.
I have been a member of the PhysX team, first with AEGIA, and then with NVIDIA, and I can honestly say that since the merger with NVIDIA there have been no changes to the SDK code which purposely reduces the software performance of PhysX or its use of CPU multi-cores.
Our PhysX SDK API is designed such that thread control is done explicitly by the application developer, not by the SDK functions themselves. One of the best examples is 3DMarkVantage which can use 12 threads while running in software-only PhysX. This can easily be tested by anyone with a multi-core CPU system and a PhysX-capable GeForce GPU. This level of multi-core support and programming methodology has not changed since day one. And to anticipate another ridiculous claim, it would be nonsense to say we "tuned” PhysX multi-core support for this case.
PhysX is a cross platform solution. Our SDKs and tools are available for the Wii, PS3, Xbox 360, the PC and even the iPhone through one of our partners. We continue to invest substantial resources into improving PhysX support on ALL platforms--not just for those supporting GPU acceleration.
As is par for the course, this is yet another completely unsubstantiated accusation made by an employee of one of our competitors. I am writing here to address it directly and call it for what it is, completely false. NVIDIA PhysX fully supports multi-core CPUs and multithreaded applications, period. Our developer tools allow developers to design their use of PhysX in PC games to take full advantage of multi-core CPUs and to fully use the multithreaded capabilities.
There is lot more I say on this topic; however, I really have to get back to my day job, which is working to help make gaming great for all users! And today that includes cracking open a new copy of Dark Void, the latest PhysX title, which incorporates some awesome particle weapon effects, an insane Disintegrator gun with fluid particles and jetpack with physical smoke turbulence . I know, hard work, right? But someone has to do it!
Happy 3D gaming!