cheers, anyone got any more info on it, ive checked out the site but i just want it in plain english really lol
A CPU is, at heart, a serial device, designed to execute complex instructions one after the other. As such it uses most of its transistors for control logic and cache. You can have multiple CPUs, but as you have probably seen it is not always easy or even feasible for a program (like a game) to make use of more than one of the CPUs (since each thread may need to communicate with the others more rapidly than the separate cores structure allows).
A GPU is a massively parallel device, which executes multiple simple instructions simultaneously. As such, it uses almost all its transistors for computation. Of course, only a very small subset of programs can be adapted to take advantage of this structure. But you're right - a GPU will have the ability to execute (say) 128 parallel threads, while your CPU can execute (say) 4. So for the few kinds of application that
can be designed to run on a GPU (like graphics, and some large-scale scientific computations), the GPU is far more efficient.
The following picture sums up the difference between the two compnents quite nicely:
CUDA itself is an API; a kind of interface which provides a series of instructions to allow general C-type code to be run using a GPU. It is still up to the user to write the code in a way which will see benefit from the GPU structure.
If you're looking for something that tells you
how to use it in plain English, I'm afraid you won't find it. You will use CUDA if you want to make your massively parallel application work with a nvidia stream-processing device. If you have already written a massively parallel code, then you are only interested in useful technical information.