Of course I can’t confirm the legitimacy of the concerns raised in the article. Is Unity use the PhysX source or do they statically link to PhysX libraries?
Anyways, if it’s true, there’s nothing we can do about it, and I doubt there’s much Unity can do about it, but it’s disheartening to thing that our physics performance might be intentionally crippled for marketing reasons.
Anyone from Unity able to shed more light on the situation?
I had thought I read about this kind of thing before which had me concerned about Unity’s physics not working or poorly on ATI cards. Yep, sounds believable to me, why give Physx away for free without a catch? The catch is that for maximum efficiency you will need an Nvidia card to run it. There is no such thing as truly free there is always a catch. Well except with Unity. I can’t think of any catches with Unity Indie. I guess wanting to stay with the most developer friendly software after using it is the catch!
I was under the impression that Unity’s PhysX implementation used the CPU regardless of what card was installed, which is why it doesn’t require the PhysX drivers to be installed. Is this correct?
That’s totally wrong–Unity’s physics don’t run on any graphics card at all. You can use ATI or nVidia (or Intel if you have to ) with Unity equally well.
While that article may seem quite detailed and authoritative, all the facts presented do not support the author’s conclusion which he seems to have pulled out of thin air.
The author fails to consider that there are technical reasons that he has not considered and then goes on to magically ascribe intention. How do we know that Ageia and Nvidia “want it that way”? Are there supporting interviews in which credible representatives state this?
There could be plenty of other reasons why Ageia and Nvidia do not focus on the software implementation besides some sort of dastardly conspiracy theory.
Well I think the PhysX version will run in software if you dont have a special physx card. :shock:
Also unless you are using some really complex scene you wont even notice any difference. It would seem unlikely that indie developers would be doing this.
What’s Windows only? The hardware accelerated PhysX drivers? Unity doesn’t use them, which means we only get the CPU path. Good thing about that is it should perform equally well regardless of the video card people are using and doesn’t require the separate PhysX install, but if it’s intentionally gimped (which wouldn’t surprise me, they don’t make money of PhysX other than as a marketing tool for their cards) it’s going to be an artificial limiting factor on what Unity can deliver as far as physics performance.
I don’t care if they use the hardware accelerated drivers, I’d rather they didn’t actually. I DO care that performance might be suffering, and features made infeasible, due to artificially imposed bottlenecks.
But there’s nothing anybody but nVidia could do about it, and it’s not really in their best interests to optimize the CPU path unless they face really stiff competition from Havok/Bullet or there’s a huge public outcry about it. But w/o solid numbers to back up the possibility that it’s intentionally gimped, the outcry won’t happen. And w/o access to the source so that it could be verified/benchmarked, those numbers would just be speculation.
unity supports mac and iphone which means they have the 50k source license so no matter what you read about strange stuff on such strange and pretty incorrect articles really impacts you.
and nvidia has been facing some pretty harsh compeition through havok for quite some time and bullet is running in circles around it due to the (at the time) heavy focus on cpu with the plan to later on support opencl.
ps: that intel bought havoc does not put any relieve on nvidia
Excellent, Unity having the source makes me feel a lot better since they have both the ability and incentive to ensure the CPU path is as optimized as possible.
even if they hadn’t: with people like that tester who blames it on NVIDIA that ATI went the fuck lazy way of not implementing CUDA support although an open thing, its really a shame that people even quote it.
ATI decided to go with something on their own although cuda was already well spread and largely supported on the scientific end (that are those who buy stuff like the tesla boxes etc to do the real math on gpu stuff) and that support for CUDA has not changed since then.
I guess ATI didn’t go to implement CUDA cause they are already incapable to implement the dx stuff and opencl stuff correctly in their drivers (nvidia has several hundred percent the amount of software devs ATI has, ati really is a joke when it comes to supporting their hardware and driving the field)
also he seems to see MMX and SSE as a holy grail yet optimizing vector alignement etc is by far no holy grail thing and especially nothing you do in days on such a scale. NVIDIA doesn’t have several teams all around the globe on the technology cause they want to be lazy, they just don’t want to waste too much time on a path hell inefficient (cpu) for parallel execution. I expect physx to get opencl support by at latest summer 2011, thats when even intel and ATI will get their trash drivers to a level where they don’t deserve class action suites for false advertising any longer.
All I got from that article was that the CPU path isn’t multi-threaded. So if the hardware accelerated version has its way it can use many CUDA cores for physics. As many as it needs balancing rendering and particles and whatnot. The thing is though, is a single core with an equivelent of 500Mhz dedicated to physics able to out perform multiple low Mhz CUDA cores? It could in theory depending on the number of CUDA cores. The big thing is that as CPU numbers increase, multithreaded physics would allow much more than any graphics card could do. Heck, even on modern CPU’s if the task is multithreaded on a dual core or higher processor it probably could out perform CUDA cores. Heck with all the power of multicore CPU’s a multi-CPU enabled physics could probably beat the pants of CUDA cores. Just think physics with at least one dedicated 2.5-3.2GHz processor?!
Have you ever noticed how idle the CPU is when playing Crysis? My C2D 2.13Ghz ran at 30% use in the single player demo with a Geforce 8600GT. What about that extra 70% processing power that was idle? Why not make the physics be able to take from the CPU. The graphics card industry is trying to do all the multimedia stuff. Next thing you know, the next Geforce will have a dedicated AI Chip or a certain number of CUDA cores for it. Then another will have integrated cores for capturing keyboard input and before you know it your graphics acrd will be its own little pc :P. Ok, yes I’m kidding. But seriously, why not keep graphics card for graphics and let the CPU do that intense calculation based stuff. Especially with all the potential of the untapped multicore systems that are so common now. I think the seperate card or CUDA core processing option was only appropriate in a time where the CPU was too busy being bogged down with other tasks in the single core Pentium and poor performance Pentium D days. Core 2 Duo and up all have sufficient enough horsepower to do game logic and physics and let the graphics card make pretty graphics with smooth frame rates.
Try to write multithreaded physics for more than just rigidbodies and you will understand why higher level stuff can’t use it.
fluid solving for example is totally unthinkable with the majority of todays multicore architectures as the intercore relations bring it to its knees. On such stuff, stream processors as PS3s SPE units or graphiccards are magnitudes faster than cpus and always will be. Larabee was the only desktop cpu technology kind of that had a reasonable chance to get anywhere on that matter but obviously it didn’t reach 2+ TFlops like the radeon 5870, thus making them skip the current generation and going towards the future and their 80core experimental concept with it.
also, an 8600gt is worlds cheaper than a dual cpu i7 960 setup, yet the dual cpu setup would lose misserably against the 8600 on physics calc gpu driven physics calculation (independent if physx or havoc).
People tend to forget that todays high end gpus have as much power as whole clusters just a few years ago, while cpus are only “marginably faster” and the multicore scaling is by far not as high as one might think if we talk about realistic scenarios with interrelations etc where L2 and L3 cache and even RAM comes in. Multicore is only then powerfull if you can create distinct datasets to operate on so the cores don’t lock each other.
as for “only few architectures”: Basically core i7 on tri channel, all others either lack L3 memory or the required bandwidth for performant RAM fallback. potentially AMDs newest one can partially keep up too, but the older ones definitely can’t
Also physx actually uses threading but only if you don’t enable CUDA physics, cause in that case the cpu threading would degrade the performance significantly.
If the simulation is properly vectorized, then what you end up with by using your Macbook Pro’s dual core cpu is essentially the equivalent of a card with only two shader units.
The whole point of moving the calculations to the GPU is taking advantage of the parallelization. 800 * 16 = 12,800. 2,800 * 2 = 5600.
That obviously only works when each calculation is independent of the others. So an ocean wave simulation or other surface deformation over time would be blazing fast on the GPU.
If there’s interdependence then things start getting really clunky, with you having to store transient data and parms in working textures and the like.
though even that “clunky” is worlds faster than it is on gpu.
the only reuquirement for gpus to be fast is that the stuff is pretty much a “datastream” not some highly branched stuff. in such a case the cpu would be better.
But as we know physics just runs it does not run “IF”, same goes for maths … as such they often lend themself to some stream form, it just has to be found, researched / developed first potentially
Ah ok, that makes sense. Now I better see why they are using stream processors for physics. Still seems strange to me that ultra fast CPU’s can’t compete. lol guess this CS major has much to learn about graphics hardware… Why isn’t my college teaching a course on graphics and hardware?! I guess that’s what the internet and self study is for :P.