| 58 | | == Unresolved issues == |
| 59 | | |
| 60 | | Apps that use GPUs use the CPU as well. |
| 61 | | The CPU part typically is a polling loop: |
| 62 | | it starts a "kernel" on the GPU, |
| 63 | | waits for it to finish (checking once per .01 sec, say) |
| 64 | | then starts another kernel. |
| 65 | | |
| 66 | | If there's a delay between when the kernel finishes |
| 67 | | and when the CPU starts another one, |
| 68 | | the GPU sits idle and the entire program runs slowly. |
| 69 | | |
| 70 | | The CPU scheduler on Windows doesn't work well, |
| 71 | | and when the CPU is overcommitted the CPU part of GPU applications |
| 72 | | doesn't run as often as it needs to in order to keep the GPU "fed". |
| 73 | | As a result the GPU is underutilized and the program runs slowly. |
| 74 | | (This seems to happen even if the GPU app is run at high priority |
| 75 | | while other apps run at low priority). |
| 76 | | |
| 77 | | If we can't resolve this we'll have to change the scheduling policy |
| 78 | | to avoid overcommitting the CPU in the presence of GPU apps. |