| 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. |
|---|