I’m not sure my understanding about multiprocessor.
So here, I have a very simple question.
All multiprocessors on a GPU are executed concurrently?
If so, the # of threads which can be executed at a time is 512(because 3216=512) for G80? (and 3230=960 for GTX280)?
Yes, but I wonder that whether all 16 (30 for GTX280) multiprocessors work concurrently or not…
Physically, only 32 threads (=a warp) are calculated at a time on 1 multiprocessor.
So, if my suggestion (that all multiprocessors work concurrently) is right, I think 32*(# of multiprocessors) threads are calculated at a time when all multiprocessors have more than 32 threads.
not completely, there are many more threads ‘in flight’. GTX280 for example can have 1024 threads running per multiprocessor.
In hardware processing is done in warps, and each warp is processed in 4 clocks by the 8 StreamProcessors on a MultiProcessor. So if you want to be very precise each clocktick, 8*20 = 240 threads are processing.
On GTX280 32 warps can be active at a time on a MP, so one warp is processed while other warps are e.g. waiting for data from memory.
So for GTX280 30720 threads can be running at a time at max (and running can thus also be, waiting for a time slot or for data from memory)