I am noticing some very strange behaviour. I have one a kernel running in a tight busy loop waiting for events. When doing this GPU utilization is 85% - but if I try to be 'nice' and add a usleep() call in my loop, this drops to 60%. This happens even if I call usleep(0), which in theory does 'nothing'.
What in the World is going on here ? Does the CAL runtime interfere with SIG_ALARM handling ?
I also have reports that the same thing happens on 5970 cards (10.x) driver, even without a usleep() call, I can't get utilization much higher than 60%. I am thinking there may be a connection since the symptoms are quite similar.
Code hosted here:
http://reflextor.com/trac/a51/browser/tinkering/new_ati_code
A5Slice::tick() is the state machine that drives the kernel invocations. Adding usleep(0) to the loop of the calling function makes things go pear shaped. (A5Brook.cpp line 179)
Any clues ? Anyone ?