Hi,
I have an OpenCL programs that runs about 25% faster when the screen goes into standby mode.
At the same time the compiz process takes 100% cpu usage. This is a known bug that is discussed in here : https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/969860
That site suggest a workaround (enable "Force full screen redraw (buffer swap) on repaint") which fixes the 100% cpu usage issue, but the performance now stays low even when the screen goes into standby mode.
This behavior have been happened to me on ubuntu 12.04 with Radeon 6970 and 7970 with 2.7 sdk 12-4 and 12-6 drivers.
I guess that getting better performance when the screen goes into standby mode is reasonable, but right now to achieve this I must "pay" with one core of 100% usage.
I can't tell if this a general GPU drivers issue or an OpenCL one.
If you are running OpenCL apps remotely, did you try without logging in to ubuntu? You should be able to run OpenCL apps when the computer is running at login prompt. Try and let us know the results:
Thanks , I used that info that you wrote in the other post.
I run the app without login and the performance is still slower than login and let the screen to go into standby.
Hi c0nfig,
I think you should have a test on Windows. And then to confirm it's a driver issue or program issue.
It is possible that when in standby the card does not exit power saving mode. Did you try to check it with aticontrol program to check current speeds when running your program to verify this?
How long is your test case? It is also possible that the time it takes for the card to switch from low power to performance mode might be where you are loosing that 20--25% performance. Perhaps when compiz runs, it forces card to be on performance mode at all times (you can confirm this with aticontrol getclocks as well).
Hi Wenju,
I tested it on windows, the performance didn't change when the screen went into standby.
Moreover, my program runs faster in windows (about 20% more than the fastest I could get using the linux version)
I used aticonfig --odgc to see the current peak clock.
From what I saw, the current peak clock is always equal to 925MHz which is the maximum clock in my settings for this card.
I notice that the GPU load is getting higher in the standby mode (from about 40% to 55%), which is maybe caused by the compiz process + my program.
Each test case duration is taken for few minutes and the performance is steady in the standby or the "awake" mode .
I tried to run samples from the SDK to see if it happens also there.
The only difference I've found so far is in BufferBandwidth on one line :
when awake:
Page fault | 1670.84 ns |
when standby:
Page fault | 837.94 ns |
It doesn't tell me allot, but maybe it has something to do with my issue.
In Linux, if you return the cpu usage to 100%, what's the result? Faster again?
I'll use some numbers to ease this discussion.
I doesn't matter if I start the program when the screen is off ( through SSH) or directly from the computer with the screen on.
Moreover, during these tests, every few minutes I moved the mouse to awake the screen and then let it goes off again (after 5 minutes).
Ok, so these are the two cases:
Hi c0nfig,
I think you should do another test. Close compiz process and run your program.
So far I just speculting: when the screen is off, the gpu will be idle. And it's a bug that the compiz process takes 100% cpu, so at this moment, compiz doesn't perform very good, just like 3d render. When the screen goes into standby mode, compiz performs much worse or maybe it doesn't work. So there has a lot of gpu resource to your program. But on the other hand, when you fix it, compiz perfoms nornally even though in the standby mode.