SPMD on 8800GT Does the G80 has independent instruction counters?


i developed in OpenCL on an 8800GT and had to realize that every if-else doubled my runtime, running only one thread.

Does the G80 support independent instruction counters or has every process to run through all if and else conditions?

Is there NV Hardware which supports independent instruction counters, so one process executes the if and the other the else only?


The threads are divided into small groups called ‘warps’ that share instruction counter and thus if there is at least one thread taking a particular path at the if-else then the other have to wait for it to ‘catch up’. I believe this is the case for all CUDA/OpenCL capable NVIDIA hardware. However, if all threads of the warp takes the same branch, then the un-used instructions are skipped entirely. I cannot explain why you see increased runtimes for a single thread.

Thanks for the reply.

I put my loops now into the main kernel instead of a function and voila…it is a lot of faster…