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