Procrastinato said:
The PS3 tuning tools show you the time, during a frame, during which each SPU (and the PPU threads) is idle or busy. The gives a pretty good indication of how well you've parallel-ified your app to work with the Cell. Most devs who state they are using "X %" of the SPUs, are basically just stating that they have only embraced the parallism of the processor to that degree. If the SPUs are constantly busy, that's a pretty impressive accomplishment, because it means they've ported enough work over to the SPUs, and organized their game frame in such a manner that all of them are in use at all times. Sure, their code can probably be optimized further... but I believe the claim is more about not letting cores go idle -- which is the real challenge in utilizing the PS3 to its full potential, in the end. Most devs do NOT use all the SPUs, all the time. Many early apps and ports didn't even use the SPUs at all. There's a big difference between last gen and this one, in that regard, so the quote you have there is really out of context. In any case, I think they have good reason to be proud of their engine -- they obviously have accomplished what many devs in the future will be striving for... efficient usage of a parallel architecture. A much harder task than you might think, for complicated apps. |
Excellent posting.
Certainly their game engine can be optimised a lot. The engine was designed to not be optimised too quickly as long as there is a lot of unused processing time. That's amongst the programming tips by some devs behind this game engine.
The amount of low-level code needed to truly max out the cell would be mindboggling, more so than for other CPUs sporting fewer cores or processing units. Actually I think that will never be achieved, but neither for most modern CPUs (especially in consumer PCs as the main operating systems MacOS, Linux or Windows are far from low-level optimised to begin with). But on the PS3 with mostly static uniform specifications this makes far more sense (like Wii or 360).