chuckula wrote:Not April Fool's: https://www.phoronix.com/scan.php?page= ... urce-PhysX
As usual: OMG THANKS AMD!
Looking for Knowledge wrote:When drunk.....
I want to have sex, but find I am more likely to be shot down than when I am sober.
nuiiii wrote:I don`t care much about PhysX much, I play old-school games but sometimes it`s really nice to play something heavy but cool and detalized, what PhysX supporting game would you advise to play?
Probably some interesting projects may appear now that`s PhysX is open
Concupiscence wrote:I mean, at the very least it'd be nice to see the CPU-driven portion of PhysX rewritten to use SIMD instead of grody old x87. Whether that's possible without fundamentally changing behavior for applications relying on it remains to be seen.
DoomGuy64 wrote:*The developer admits merely enabling SSE in the compiler without code optimization would have instantly given 20% performance, then claims there was no point in using it and support would cause compatibility issues.
At the time, with the available compiler, we never saw more than 20% in the very best of case. And most of the time, for actual scenes running in actual games, we saw virtually no gains at all.
DoomGuy64 wrote:The history I can find is surprisingly sparse, but Ageia bought NovodeX in 2004 and it sounds like the development of this tech goes significantly further back than that. Let's say it was mid-2003. AMD hadn't released a CPU supporting SSE2 yet, and a whole lot of Pentium IIIs that didn't support SSE2 were still in circulation. SSE was a lot less obnoxious to use than x87 when it would work, but wasn't really feature-complete. Now say you're a programmer who is already familiar with x87's jankiness, and you don't want the overhead of having multiple ways of doing things just yet. What's the obvious choice here?The thing about SSE2 not being mainstream was a lie. Everyone was using at minimum a p4 by the time PhysX came out, while Athlon 64's and even the intel core was out afaik.
DoomGuy64 wrote:It isn't "can we do this?" so much as "do we have an appropriate business reason to put in the time to do this?" The business reason for MIPS would have been obvious the moment it came up. SSE, less so.Difficulty of coding for SSE seems suspect. I mean, they were smart enough to code for MIPS, which isn't a widely used architecture. SSE was pretty mainstream at the time, and programmers who make claims of difficulty or lack of knowledge are just shady. Hell, why not just compile flag for SSE, or even MMX, since it did improve performance?
DoomGuy64 wrote:The MIPS chip was definitely slow. It was a lot more parallel than a CPU, of course, but it was on 130nm when 65nm was the usual. There's only so much you can do with that. It did still have a fairly good reason to exist in that it could free up the CPU to do other work. Having more threads than we know what to do with is a recent development.The performance of that outdated 500Mhz MIPS chip seems suspect, especially after CUDA gave it a massive performance boost without making games unplayable. The PPU radically slowed games down when used, and while the pcie 1x bus likely was a bottleneck, I think the MIPS chip was also slow.
DoomGuy64 wrote:Back then, auto-vectorizers really were bad. It isn't tough to believe. +20% in some particular test case doesn't necessarily mean you'll see any gain at all in the real world (or even avoid a performance regression).He mentioned that modern compilers have improved, giving a potential out for performance of the old "unoptimized" code being recompiled on modern compilers.
There never has been any public proof of this mythical old code being compiled for SSE not having real world performance gains. It's all conjecture. We only know that there was a 20% potential gain for unoptimized single threaded physx, and the CPU tested for this is not mentioned. (probably a pentium4 of unknown generation.) Simply put, if an older p4 saw a potential 20% gain, how much would an Athlon 64 have seen? An Athlon 64x2 with multi-threading?
DoomGuy64 wrote:I don't disagree with most of your conclusions, I just think you can still reach those conclusions while assuming his account of it is true to his own perception.I can't trust his excuses, since most of them are void of evidence and laced with contradictory statements, while the PPU was questionably a scam from day one. If it was, there's no way he would fully admit it, and these excuses seem to be just that. Something to justify their business model, which was vendor lock-in from day one.
One of the developers who worked on PhysX during the era it used x87 also has a bone to pick with his code being called unoptimized. His point of view is worth a read.
NoOne ButMe wrote:If this is talking about dives such as was done at RWT... Uh. The big point (as I understand it) of that was that Nvidia was touting all this extra performance when optimized for the GPU compared to the CPU. When that extra performance would have been delivered by optimizing on the CPU as well.
But maybe there were other articles discussing it.
If NVIDIA had fully optimised it for CPU in 2008-2009, how do you define that please? SSE 4.1, 4.2 and/or 4a? Capable of using 4 threads?
NoOne ButMe wrote:No idea, but the x87 used when comparing how much "faster" the GPU was certainly was not optimized.
Without knowing the engineering effort required to optimize for the GPU, it is hard to say anything else.
But generally speaking I would say a CPU optimization which takes about as much time as the GPU optimization did would be fair. More than Nvidia did (aka they did nothing/near nothing), but not a "we optimized every single line of code" scenario (i imagine GPU optimization was not this scenario).
Topinio wrote:If NVIDIA had fully optimised it for CPU in 2008-2009, how do you define that please? SSE 4.1, 4.2 and/or 4a? Capable of using 4 threads?
DoomGuy64 wrote:while the pcie 1x bus likely was a bottleneck
DragonDaddyBear wrote:I just spent like 5 minutes trying to understand this SSE stuff, which got me looking at AVX. I gained a new respect for you true computer programmer types (general app writers people are not your equal) and new insights to your world. I came away thinking that everything in a computer is a mathematical model that executed in binary. Would you say it's important to view the code you work with daily as a mathematical model first or does it really not matter? I ask because I avoided computer science because I hated math (30 minutes of homework in high school pre-calc for just a few problems was depressing). I'm beginning to see the value of higher levels of math for you types. Not really sure what I'm getting at other than sharing my respect to those of you who know how to use an instruction and when and which version, etc.