i have this question.
If the kernel code has a loop inside, and depending on the loop condition, some threads will exit and some will take longer time. For example, lets say from 64 threads in a block, 61 will exit within 1 second, and the last 3 will exit after 5 seconds. Will the multiprocessor be idle during 4 seconds for the first 61 threads that has exited? Or will it load next threads from the next block scheduled for execution?
The MP will most likely not be idle during that time. MPs can process many blocks at the same time.
FYI: __syncthreads() will NOT work if some threads have exited. Just be aware of this fact.