Since each warp is processed in a SIMD fashion I have the following questions. Does the SIMD Processing in this regard imply that each thread will wait until it is allowed to use its desired instruction or will the threads remain roughly synchronyzed in the sence that when an if statement arrises that is false for some threads and true for others, the ones with false will wait until the rest of thethreads finished their if clause.
Warp threads are synchronized, in a sense that they always execute the same instruction. If there is divergence, both paths are executed, with threads that don’t need to be computing not producing output. So, if you have an if-then-else statement, instructions for both the if and the else clause will be executed, with only appropriate threads producing output. So, that’s a penalty for diverging within a warp.