I have started working with opencl a couple of months ago with a nVidia card on ubuntu 10.04. As I wanted to get top performance I got myself a 5830 and a 5970, and things didn't go exactly as I thought they would...
Running my code on the 5830 gives me 4 times the performance I had on the nvidia card, but where CPU usage on nvidia was 2%, I get constant 100% on ATI. All of that CPU time is apparently spent on the kernel driver. It is kind of disappointing the need for X running also.
My real problems came with multiple cards, though. Running my code on single context, single thread across all GPUs gave me a marginal speed increase, and the funny thing is looking at aticontrol --odgc with one card, I get constant GPU usage of 99%, but with 3 GPUs (1 5830 and 2 on the 5970) I get 40+30+30. So are the kernels being serialized? I also tried separate threads with separate contexts/kernels/everything, and all I got was 3 CPU cores at 100% and the same 40/30/30 division of GPU usage.
Is there a way of quickly resolving this, other than moving back to nvidia?
I'm using the latest stream sdk (2.2) and driver is 10.9 (the hotfix from sep27).