Compute Unified Device Architecture (CUDA)
Compute Unified Device Architecture (CUDA)
As you guys know, ever since GeForce series 8 NVIDIA is getting pretty keen on utilizing the GPU for functions other than rendering your games. Face it, the floating point parallel processing power of GPUs as shown today are humongous. There's a lot of potential for doing other things rather than just gaming with your graphics cards.
So there's more to the GeForce GTX 200 series than playing games. More and more non-gaming related features can and are being offloaded to the GPU. Roughly a year or two ago NVIDIA introduced CUDA. CUDA is a software layer that allows software developers to 'speak' with the GPU and have it process data using your graphics card. This really is the most simple & basic description I can give it.
Taking it up a notch; still a very simplified explanation: if you can program in C++, chances are pretty good you'll be able to 'speak' to the GPU and get it to return data to you. Here's where we dive into what NVIDIA refers to as 'GPU Beyond' - The GPU evolving beyond graphics applications, beyond gaming. Some dry examples of what you can use the GPU for.
- Physics simulation
- Signal processing
- Computational geometry, biology, chemistry, physics, finance
- Data management
Now I know this is all very abstract, especially to explain. But for the years to come we'll start to see some pretty interesting applications that run over or get assisted by your GeForce GPU. The biggest problem with CUDA is that 99% of CUDA applications are specific to a company or internal projects, therefore that 99% of the software we never get to see. So it's very hard to understand for the end user, specifically the consumer, what CUDA can achieve with your graphics card. To keep it understandable I need to keep it real simple. And I will do so with explaining some examples of where CUDA can help.
Example 1: Transcoding Video on the GPU
Let's go to a more practical consumer application. Most of us have an iPhone, iTouch or iPod, right? I don't know about you but whenever I need to catch a flight, train or just when traveling in general, I like to have some movies on my iTouch. My flights are sometimes inter-continental, and 10+ hour flights have to be the most boring thing ever. So to kill time I like to watch some hand-picked movies or tv-series on my iTouch.
Now if you know what I'm talking about, and do that on a regular basis too then you'll share my pain of transcoding video files. For example if you have a nice high-def movie you like to transcode to an iPod (MP4) compatible format, a PC with any modern processor will crunch that data for hours (depending on the source material of course) Example: for my last trip I transcoded high-definition files to an MP4 compatible format for my iTouch. My PC has been transcoding 10 GB of content and I think it took like 15 hours to do so. There's only one word for this, and that's nauseating.
So the problem at hand: if you like to fill that iPod with video content, your PC could be at work for a day, easily. Quite annoying.
We recently got in contact with a company called Elimental. Among the applications they are working on, they have a piece of software called 'Badaboom media converter'. This company is working right now on several software applications that will manage the transcoding process over the GPU, and it does so with CUDA. Now here's the point I'm slowly working towards.
We've seen what it can do, and it's really interesting. Where a PC with a modern processor would take, say five hours to transcode, the CUDA based Badaboom media converter (badabing? Sopranos? or is that my twisted mind?) you can cut down that time massively.
Fact is that once you transcode over the GPU instead of over the CPU, the speedup is significant. The software still is in development stages, but once released and 100% stable... it'll rock your GPU.
Example 2: Folding@home using the GeForce GPU
Folding@Home is a project where you can have your GPU or CPU (when the PC is not used) help out solving diseases, folding proteins. Over the past 12 months a lot of progress has been made between the two parties involved. And right now there is a beta folding client available that works with GeForce Series 8, 9 and GTX graphics processors. It is CUDA based... meaning that all CUDA ready GPUs can start folding.
Guru3D team is ranking in the Folding@Home top 90, yes... I'm very proud of our guys crunching these numbers, especially since there are tens of thousands of other teams.
The client is out, if possible please join team Guru3D and let's fold away some nasty stuff. The good thing is, you won't even notice that it's running.
Our Folding@home info can be found here:
Our team number is 69411 and if you decide to purchase the GeForce GTX 200 product, guys, promise me you'll use it to fold for us. Of course I recommend all GeForce 8800/9800 owners give this a try as well. By making this move my dear friends, there are now 70 million GPUs available to compute the biggest mysteries in diseases and illnesses. Again, let's make Team Guru3D the biggest one available guys, join our team - 69411.
Example 3: GeForce PhysX aka NVIDIA PhysX
One of the more hot features released a couple of months ago also uses CUDA. Any graphics processor (that can handle CUDA) can be utilized for NVIDIA PhysX processing - or as I like to call it - compute shaders.
You guys probably know Ageia. The company that brought you the physics card under the label PhysX. That company has been bought by NVIDIA and the good news is that PhysX as you know it has been ported into the graphics card driver for CUDA ready products. This means that GeForce series 8 and above now have full physics support right out of the box. So if a game supports Ageia PhysX, your CUDA ready graphics card (GeForce series 8 and above) is compatible.
In very simple wording, physics functionality will not run through the DirectX engine (DX11 will do this though), yet makes a bypass through CUDA where the Ageia PhysX API is now implemented for the bigger part. In games one can now fully utilize physics calculations. Your GPU shader engine will do the math for you.
The downside; obviously once you start using this feature you will forfeit some of the overall performance of the GPU. That's why in the future you could use your older CUDA ready graphics card as an add-on and use it as a physics card while your shiny new graphics card can render the game. The idea, although not definitely new, is an interesting one.
Some games we already saw running using PhysX:
- Space Siege, Gas Powered games
- Nurien, a social network platform
- Bionic Commando, CAPCOM, GRINN
- Backbreaker, Natural Motion
- APB, Realtime Worlds
- Stalker Clear Sky realtime debris - cloth
- Race Driver - GRID - Phill Scott - cloth physics in flags
- Gearbox Software, Brother in Arms - Hell's Highway & Aliens: Colonial Marines and Borderlands.
The biggest recent title, Mirrors Edge for PC, also has PhysX support.
So while it is hard to explain exactly what PhysX can do in your games I will give you a few examples. Imagine cloth or flags moving fluently, dynamically created force fields with changing geometry, when you shoot at stuff, loads of debris. Another good example we have seen live in action was the game Space Siege. Imagine you are on a space ship, when you shoot at objects they now move along with the same speed of the ship moving; all of them. More environmentally rich sceneries loaded with, for example, fuel drums. You can shoot at them, they explode, move, pushing other drums away, cascading... everything will be moving & reacting the way the programmer thinks it should. So again, this stuff is really hard to explain.