fillet said: The point is that each stream processor in a GPGPU is much less powerful, and when you have code that depends on other code having been processed already it limits the use of the stream processors, I'm not saying the 2 are different in terms of functionality, I'm saying they're different in terms of their useful application in terms of processing in video games for anything other than physics. You can't just split the jobs up. My understanding is clearly not at your level, I don't know about the technical terms but I do know about the technical limitations of stream processors on GPGPUs. Your explanation works when it's just a few threads where code can be hand optimized, but what about when you have 100s of stream processors that you have to have running in parallel to make viable use of their processing power? That can't realistically be hand optimized given the amount of time it would take, and even if it could be there's still physical problems in that calculations need to have been worked out before the results can be used for further processing...I thought that was the whole reason that parallel computing is limited to the extent that it is? Or am I completely wrong in how I'm looking at it? |
Instead of thinking of each core as a processor, consider the entire GPGPU as a Cell SPE. You would craft a single function to run in parallel with 200 odd cores, note that the 200 cores is just the physical maximum, you don't have to use all 200 cores if you don't need to. A good example is putting 1-200 in an array. Normally, you would write the code like this:
for i=0; i<200
array[_i] = i
This will probably take about 600 CPU cycles to complete (for itierating i, copy, then jump)
if you have a GPGPU you can simply do something like this using a warp with 200 threads with 200 cores:
array[core_id] = core_id
this will complete in ~1 cycle because all the cores just need to do 1 operation in parallel.
The challenges in parallel programing is ability to split your code in parallel and to tackle bottlenecks. Cell was a bitch to program because the majority of the processor power is locked away inside the SPEs, you are literally forced to program in parallel, to get any performance from the thing. GPGPU in the next gen game consoles are sugar coating on top. Game developers don't have to use them if they don't want to but if they want to make the best looking game where every blade of grass has its own physics , then its a must have tool. Like I said in my inital post, we, gamers don't appericate grass physics much but we shouldn't write off the tool, incase someone creatively finds a use for GPGPU outside of grass.