I have a question that may seem stupid to many of you, but I need it to do implement some sort of busy waiting. I have a kernel code similar to this:

global void
kernel(int *str1)

while(true) {


I call this kernel from the host with grid size of 2 and block size of 6(total 12 threads). I expected this to just not do anything, basically it should hang, but surprisingly after 10 seconds the program finishes. Remember that I am actually running this on a 8400 GS card. If I run this in emulation mode, then the program never finishes, which is expected.

Can someone explain this to me please? Why does the program finish?


Are you using the 8400 as a display card as well? If so, you can’t have infinite kernels because the watchdog will terminate execution.

Yes, I am using it as my main graphics card too. Can you explain a little more? What is watchdog?



Watchdog is used to identify a case where the main display card is frozen - like in your case and then it suppose to

kick in and kill the offending process.

Take a look here: http://www.microsoft.com/whdc/device/displ…dm_timeout.mspx

From my experience its problematic in windows. On windows with X server it should probably work (at least long running

kernels on linux works without any problem)

If I remember correctly in a previous post, tmurray, specified that in 2.2 it should be a non issue - not sure though…


Uh, 2.2 has no impact on watchdog behavior. It’s still there and will always be there.