With the power within GPUs in comparison to CPUs. Do you think a time will come when GPGPUs replace CPUs? Or does the paralell nature GPGPUs make them ineffective for general computing. Basically what are your opinions as I'm really lost on this subject
It would, only if GPGPU developers (i.e. Nvidia w/ Tesla) can write drivers and programs that would in turn simplify programmers' work.
Here is a start up on what GPGPU is:
So put it in short, GPUs are like RISC structured processors, that have relatively much simpler internal architecture than CISC based (Intel's Core 2, AMD's K10). GPUs do not have out of order (OoO) process capability, or predict branch. Everything must be written in a way like this:
A->B, C->D, E->F
...in order to take the advantage of parallel processing. In this case, A, C, and E can be separately loaded into stream engines, and process accordingly.
However, in most modern programs, they are usually written like this:
A->B, B->C, D->E, E->F
...and it would be impossible to obtain B before processing A, or obtain E without running D. Therefore, you can only load A and D into both separate engine, and process accordingly.
EDIT: And this, is called single threaded, which only one thread of code can be processed at any given time. About 90% of the general home use programs are like this.
EDIT: So what are the programs that may take advantage of multi-stream engined architecture? Photoshop for example, while one engine is rendering a pixel, other pixels are not bound to the result of this pixel, therefore can be sent to other execution units for processing. Or video encoding, where video and audio can be separated, and load in different execution units.
Of course, this is over-simplifying the issue, but you get the idea.
So far GPGPUs can only be run very specifically written tasks, and mostly those who purchase the hardware have to write their own codes. As a result, it may be at least decades before we see the proliferation of GPGPUs.