Nvidia Physics Engine Almost Complete
Nvidia has stated that their translation of Ageia's physics engine to CUDA is almost complete. To showcase the capabilities of the new tech Nvidia ran a particle demonstration similar to Intel's Nehalem demo, at ten times the speed. "While Intel's Nehalem demo had 50,000-60,000 particles and ran at 15-20 fps (without a GPU), the particle demo on a GeForce 9800 card resulted in 300 fps. In the very likely event that Nvidia's next-gen parts (G100: GT100/200) will double their shader units, this number could top 600 fps, meaning that Nehalem at 2.53 GHz is lagging 20-40x behind 2006/2007/2008 high-end GPU hardware. However, you can't ignore the fact that Nehalem in fact can run physics."
This is just a particle system. Smoke, snow, rain, and maybe water look better, but it apparently has no influence on gameplay.
It'll be like 1996 all over again, only from a physics not graphics perspective. That, and there might be a new Duke Nukem game due out within the next 12 years.
...provide Linux drivers, or will the F/OSS community have to reverse-engineer this one?
Is a particle motion simulator a abnormally easy test case?
When I was getting up to speed on IBM Cell programming, IBM had a programmer's tutorial (excellently written, btw). The example problem they used for their chapter(s?) on code tuning were a particle simulator. It was a wonderful example problem, because it showed how to vectorize a program. But then when we went to vectorize our own algorithm, it didn't fit the Cell's vector programming instructions nearly as cleanly, so in the end we didn't get nearly the performance increase due to vector instructions as did the particle simulator.
So I'm thinking that just even though CUDA can do a good job with particle motion simulations, we shouldn't remotely assume that it's good for particular algorithms for which each of us is responsible.
http://www.nvidia.com/object/cuda_get.html offers: "NVIDIA Driver for Linux with CUDA Support (169.09)"
So, physics should work on Linux, having been ported to CUDA already, and CUDA being cross-platform, but the question is if any Linux games will actually support and/or make use of it.
PC Gaming is dead . . . right?
Anyone care to explain why there's such a big difference between a GPU and a CPU? I keep hearing how GPU's are this and that much faster than a CPU at calculations like graphics, physics and such, so naturally I assume there's a big difference that makes us still chose the x86 and x64 CPUs as the main processors of a PC. What are the limitations; why can't just the libraries be ported for GPUs instead of CPUs and why don't we then just run all calculations on a GPU, if they are anything from 2 to 50 times faster?
:)
It just seems to me that if a graphics card can calculate physics then it would also be able to do pretty much all the same types of calculations that a regular CPU can do, but I am obviously missing a big part of it.
Experts, continue!
They should test physics systems with spheres on irregular ground, with uneven μ (coefficient of kinetic friction), and changing wind.
Those are the kind of problems that force programmers to use approximations when using a physics engine.
The next step is really abstracting the physics from the development, not having pretty water.
The *only* use?? Geez, I'd like to get my hands on the API to write some physics educational/demonstration software. Or just create physically accurate simulations for kicks. We don't *have* to rely on others to write software for us.
That's okay - somebody else already posted the answer - this thing'll use an established mechanism (CUDA). I don't know what that is, but after this card hits the market, I'll probably start to find out.
However, you can't ignore the fact that Nehalem in fact can run physics.
In fact, I can.
Interested in open source engine management for your Subaru?
(sarcasm on)Yes, I am sure there are no scientific or enginnering applications for accellerated physics calculations (sarcasm off).
Anyone ever tell you that a lot of scientific types use Linux on their workstations? They do.
I want to see 10^88 particles simulated at 10^33 frames / second.
Comment removed based on user account deletion
To what extend does this contain real physics as opposed to "game" physics. Cuda maps to linear algebra fairly well but most phyics is second order (either algebraically or as differential equations). Are they actually trying to implement those or are they just making things that "look right" but really don't obey physics.
I recall that in the original Toy Story there is only one place they used "real physics". When the jump rope is thrown off the balcony (for the army men to descend), they used real physics to model it's tangled fall. But thye later sent it was not a good idea to use the real physics. Not only was it harder but it didn't really look right and could not be easily tweaked. So all the rest is pretend physics.
Some drink at the fountain of knowledge. Others just gargle.
Just sayin'. ;^)
It's great that they can do all this physics stuff on the GPU, but they seem to be forgetting the other thing you need that for; graphics. Games like Crysis don't exactly leave room on the GPU to do anything but graphics, and throwing physics into the mix will only make things worse.
Linux games? I guarantee you that many packages tagged "science" will use this in no time and games will be left to rot.
The government can't save you.
Huh? The local physics computations are only being used for presentation and local extrapolation. The server recomputes the relevant physics anyway, and can re-sync everyone periodically. That's how FPSes work to reduce lag--they do local extrapolation, and the server periodically snaps everyone back in line. It sometimes leads to what John Carmack calls "paradoxes" where locally displayed events get undone, but it works.
So, if some portion of your local physics calculation is purely for local presentation (e.g. game outcome doesn't depend on exactly how dirt particles fly around or boobs bounce, but you want it to look realistic), the server doesn't need to reproduce any of that to model the game correctly. Your screen might look different than someone else's, but in an immaterial way. For the super-soaker example, the server will still compute actual "wetness," possibly with a simplified model that skips computing the goosebumps and most of the dripping water.
--JoeProgram Intellivision!
Wow ! That's more than 4 times faster than the human brain can detect. Now if I only knew why a frame rate this high is needed. Anybody?
It's not needed. But it's useful for comparison.
Nehalem only got x frames per second, but nVidia Magic Goodness 9800 Large Numbers GTX got y FPS, where y > x, can show that nVidia MG9600LNGTX > CPU.
Also, presumably this won't be used to run 50,000 particle games at 300fps, but much more complicated simulations (infinitely destructable environments, not linear algebra) at 60fps.
DATABASE WOW WOW
id seem to make all their games for Linux, and they also like using random accessories like that USB flak jacket thing that simulates you getting shot (by quickly puffing up pockets of air with pneumatic compressors). No doubt Quake 5 or whatever will support it at least.
which is totally what she said
They're fake
I'm using CUDA for my masters project, and I've had the same problem that you describe. The way CUDA works, having a conditional statement that evaluates differently in each thread will kill your performance. It makes sense as to why:
A GeForce 8800GTX has 16 multiprocessors, which each have 8 processors, so a total of 128 processors. It's your basic SIMD (single instruction, multiple data) architecture. So if you have lots of conditions, you go from having 128 processors, to having 16 as your code serializes because it has turned into MIMD.
In my particular project, there have been times where I've tried to optimize something with an if statement, but it's not worth it for the reason described above. With that said, it's still much faster then doing computation on the CPU. I think the biggest problem to working with CUDA, at least for me, is that I've never worked with an SIMD architecture like it, so I don't know any really good techniques. I assume they're out there, but I haven't come across anything more then what they say in the CUDA programming guide, which is fairly minimal.
I think CUDA is good for what it is designed to do, but you won't see a real time raytracer on it anytime soon even though the gflops are there.
nuff said