This benchmark is a trick to make Cell look good
Jawed said:
Interesting - even if I did skip over the maths involved in the physics modelling.
That's a very important part that you missed:
IBM said:
However, an alternate method was chosen for this project that was more robust, efficient, and better suited to SIMD hardware, namely semi-implicit integration6 of a penalty force-based system, that is, a dynamic system that enforces constraints by applying a restorative force when the constraint is violated.
They basically just skipped over the toughest part of doing physics and did it the lazy, slow way. Just applied a restoration force to any joint that violated it's constraints.
I tried this when doing a physics engine, because I successfully did something similar to this in a simple 3D truck simulation way back in high school (in Turbo Pascal
). Let me tell you that for real-world situations it converges veeeery slowly for many systems. They borrowed the technique from a cloth simulation paper, but cloth behaves very differently from rigid bodies. Even simply stacking a couple of boxes is really tough for this method, because there is strong coupling between points that creates "loops" of dependency in the system. You need
tons of iterations to make it work for anything but the most simple of scenarios. Obviously they're not comparing apples to oranges, and did this for all the architectures, but it's a horrible way to do physics for a game like HL2, for example.
Here's my point:
Their physics algorithm is probably a factor of 10 or 100 slower than a real physics engine (in the real world) just to make it run relatively faster on Cell.
If you want to make a real physics solver, your massive system of differential equations needs to be solved by a method other than conjugate gradient. If you're smart, you can try to decouple this system into smaller equations, which helps tremendously with speed, but you have to do it right. I'm just blown away that IBM can call this even remotely typical of a game server.