Analysis: PhysX On Systems With AMD Graphics Cards

CPU PhysX: The x87 Story

CPU PhysX and Old Commands

In an interesting article by David Kanter at Real World Technologies, he explored using Intel’s VTune to analyze CPU-based PhysX. Looking at the results, he found loads of x87 instructions and x87 micro operations.     

  • Explanation: x87 is a small part of the x86 architecture’s instruction set used for floating point calculations. It is a so-called instruction set extension, a hardware implementation providing essential elements for solving common numerical tasks faster (sine and cosine calculations, for example). Since the introduction of the SSE2 instruction set, the x87 extension has lost much of its former importance. However, for calculations requiring a mantissa of 64 bits, only possible with the 80-bit wide x87 registers, x87 remains important.


David speculated that optimizing PhysX code using the more modern and faster SSE2 instruction set extension instead of x87 might make it run more efficiently. His assessment hinted at 1.3 to 2 times better performance. He also carefully noted that Nvidia would have nothing to gain from such optimizations, considering the company’s focus on people using its GPUs.

We reconstructed these findings using Mafia II instead of Cryostasis, and switching back to our old Intel-based test rig, since VTune unfortunately could/would not work with our AMD CPU.

Assessment

Our own measurements fully confirm Kanter's results. However, the predicted performance increase from merely changing the compiler options is smaller than the headlines from SemiAccurate might indicate. Testing with the Bullet Benchmark only showed a difference of 10% to 20% between the x87- and SSE2-compiled files. This might seem like a big increase on paper, but in practice it’s rather marginal, especially if PhysX only runs on one CPU core. If the game wasn’t playable before, this little performance boost isn’t going to change much.

Nvidia wants to give a certain impression by enabling the SSE2 setting by default in its SDK 3.0. But ultimately it’s still up to developers to decide how and to what extent SSE2 will be used. The story above shows that there’s still potential for performance improvements, but also that some news headlines are a bit sensationalistic. Still, even after putting things in perspective, it’s obvious that Nvidia is making a business decision here, rather than doing what would be best for performance overall.

Create a new thread in the UK Article comments forum about this subject
This thread is closed for comments
13 comments
Comment from the forums
    Your comment
  • david__t
    This has been going on for ages now and I don't think AMD are going to try and counter nVidia just yet, because they obviously think that the limited numbers of games that support this makes the issue not worthy of much R&D money. Also, unless they are going to produce drivers that 'fool' the nVidia drivers in to making PhysX work, they will have to come up with their own Physics solution - which is another bit of code that the developers will have to tackle causing even more hassle. Dedicated Physics cards that work with any GPU was the way to go, it was just brought to market too early before the software was out to make it a 'must have' purchase.
    Personally I find it ridiculous that you can have an Extreme Edition CPU sat in your PC which costs £1000 and still they cannot make Physics work on it properly. Whether this is due to nVidia bias or lack of funds during developement remains to be seen.
    1
  • mi1ez
    If you install an extra Nvidia GPU for PhysX, just think of the folding ppd! Brucey Bonus!
    1
  • jamie_macdonald
    Nvidia stated themselves sometime ago that "physX is old and clunky and will soon have a complete re-write to bring it to the modern age and make it CPU freindly" ...

    ...I'd rather wait for that to happen, pretty sure they will make it more usable soon.

    I have a decent Nvidia card so i do not need to offload it but i do understand it is high time it was updated. :D
    0
  • swamprat
    Quote:
    The current situation is also architected to help promote GPU-based PhysX over CPU-based PhysX.

    Aside from the use of 'architected' as a word, isn't that a generally levied accusation rather than something you've actually proven? The following comment that Nvidia CBA to work on it would seem to possibly explain the position. It might be deliberate on Nvidia's part and you'd see why (although getting a decent albeit smaller advantage with GPU but having a wider base of games using physx might do them better in some ways) if you can't prove it then you didn't ought to report it as fact.
    Besides, if everyone had better physx then there could be more and more use of it - so having extra GPU umph would probably come back into play (?)
    0
  • gdilord
    Thank you for the article Igor, it was a very interesting read.

    I hope that Tom's does more articles and features on what I consider the enthusiast/indie/homebrew sector. I really do enjoy reading these articles.
    1
  • LePhuronn
    What about running CUDA with Radeons? Can I drop in a (say) GTX 460 next to my (say) HD 6970 Crossfire and still use the GTX 460 for CUDA apps?

    Same workarounds? Non-issue? Impossible?
    1
  • hanrak
    Excellent article! Great read and very interesting. I may just go and get that Nvidia card to go with my 5970 now :)
    0
  • wild9
    I think you've got more chance of resolving the American/Mexican border sham, than you have seeing a unified Physics standard. Corporate interests vs. a clear, workable and altogether fair solution.
    0
  • Rab1d-BDGR
    Quote:
    In addition to the high costs of buying an extra card, we have added power consumption. If you use an older card, this is disturbingly noticeable, even in idle mode or normal desktop operation.


    Not necessarily, say you had a Geforce 9800 Green edition - those cards can run off the PCIe bus power with no additional connectors yet provide 112 CUDA cores. Running PhysX on that will be barely noticeable as it quietly sips a few watts here-and-there while the radeon 5970 or dual GTX 470s doing the graphics are happily guzzling away and the dial on your electric meter whizzes round.
    0
  • ben BOys
    awesome investigateing i never knew this! This further helps the cause of ATI since you can get a powerful card for cheap price and then get cheap nvidia card for the physx when physx become mainstream. get a 6870 and a 9xxxGT nvidia card and have best price proformance combo!
    0
  • monkeymanuk
    We have PhysX running on our Gaming rigs for a few customers using Radeon Hardware. http://www.southampton-computers.co.uk/shop/gamer-systems-c-7.html

    Take a look.
    0
  • Gonemad
    Did anybody think of a PCIe card that could house an extra, completely functional, Intel or AMD CPU? All the way around... I bet there are some situations where it would trump having a physx card, a new /other GPU, or a full-blown CPU + motherboard upgrade.

    Well, too bad I don't have any Nvidia cards containing PhysX laying around.
    0
  • kaprikawn
    Nvidia own PhysX, why shouldn't they be able to nerf it on ATI-based solutions? It isn't healthy to have a company who so clearly has a conflict of interest controlling something so fundamental as physics in gaming.

    Instead of demonising Nvidia who are only doing what is in their commercial interests, people should be looking to someone like Microsoft to implement a more platform agnostic approach in DirectX.

    The better solution would be an open-source alternative of course, but that's just wishful thinking.
    0