|
April 25, 2013, 11:45:58 AM |
|
I'm only guessing here:
During executing the opencl program nvidia opencl library enters loop which checks if the execution of opencl program has ended. At the end of each iteration of the loop sched_yield function is called to move the tasks to the end of system tasks queue, to allow other tasks to run unaffected. But if there are no other tasks scheduled to run it just spins in this loop, eating CPU for nothing - not really a big problem, but eats power and heats up CPU.
In CUDA you can control weather it behaves like this, or use some kind of conditional wait, not spinning in a loop, till the CUDA program finishes.
Probably nvidia could've implemented this mode for OpenCL too, without much effort.
|