Einstein@home is also refusing to not send me ATI work units which is getting really annoying because i'd like to run CPU work units for them while my cards crunch but despite the fact that use ATI GPU flag is disabled in my settings for all locations for einstein@home is really annoying, and I don't care enough right now about running it to fix the issue.
i encountered the exact same problem, but in a slightly different form. back when one of my hosts was a dual GTX 580 machine, the Einstein@Home web preferences for that specific host were set to accept nVidia GPU tasks only (and not ATI or Intel GPU tasks). then i upgraded that machine's CPU to an intel 3770K (with the integrated HD 4000 IGP enabled so i could run the display on it). despite having the appropriate project flags set via the web preferences, my host started downloading Intel OpenCL tasks. it didn't take me long to remember that i was using a cc_config.xml file w/ the <use_all_gpus>1</use_all_gpus> statement in it, which apparently was overriding my Einstein@Home web preferences. fortunately all i had to do was add the <ignore_intel_dev>0</ignore_intel_dev> statement to my cc_config.xml file and all was good again. for you, the solution will be slightly different b/c you aren't looking for BOINC to ignore a specific GPU altogether, but rather you want a specific project to ignore a specific GPU (or GPUs). what you need to include in your cc_config.xml file is a <exclude_gpu> statement. the basic format is as follows:
<exclude_gpu>
<url>project_URL</url>
[<device_num>N</device_num>]
[<type>NVIDIA|ATI|intel_gpu</type>]
[<app>appname</app>]
</exclude_gpu>
- because your host in question is an ATI GPU-only host (i'm assuming you aren't running integrated graphics of any sort on this machine), you can omit the <type>_</type> line
- because you want Einstein@Home to ignore all ATI GPUs, you can also omit the <device_num>_</device_num> line as well
- you also don't have to specify a project application since there is only one Einstein@Home application for ATI/AMD GPUs, so you can omit the <app>appname</app> line as well
...so your <exclude_gpu> statement should appear as follows:
<exclude_gpu>
<url>http://einstein.phys.uwm.edu/</url>
</exclude_gpu>
that should be enough to force your host to run Einstein@Home on your CPU only.
Also, if you set your CPU core utilization to 100% and you're not running another CPU using project, when it starts the N-Body simulation unit on all your CPU cores at once it prevents you from running more than 1 GPU at a time because there's not enough CPU time to run all 3 cards i guess? i'm honestly not sure what's going on with it but whenever there's not enough CPU time the GPUs stop crunching. I'm finding it more effective to just run GPU only and let the CPU not run tasks because of this constant switching.
you may be onto something there...unfortunately i can't confirm it b/c i don't run Milkyway@Home n-body (CPU) tasks - i only run Separation (GPU) tasks for Milkyway@Home. if you can afford to dedicate an entire CPU and all its cores to servicing multiple GPUs, your GPUs will be better off. to a certain extent you can run CPU tasks as well, but the continued efficiency of your GPU crunching will depend not only on available CPU resources, but also the projects and/or specific project applications you choose to run on the CPU. i don't know how important it is to you to run both CPU and GPU tasks for MW@H, but you might want to try running only MW@H GPU tasks for a while to see if not running n-body tasks helps your situation any.
The annoying thing to boot as well, is that setting it so that the % of CPU time BOINC is allowed to use doesn't help at all because it's a universal pool to the CPU and GPU total. If i could set a flag to prioritize GPU time over CPU time 100% of the time or set separate % for CPU resources dedicated to running tasks vs feeding GPU tasks either one by itself would fix this issue. as it is now the only way would be maybe through config file fixes but im not sure if the flags to fix this type of issue are even in the program
i always have my "% of CPU time" parameter set to 100% b/c my machine is always crunching. but if i'm looking to allocate CPU and GPU resources, i use the parameter just above it - the "% of the processors" parameter. this setting only affects the CPU, and not the GPU(s). for instance, i can limit CPU tasks to use only 75% of the CPU (or 6 threads of my 4C/8T CPU) for the puropse of leaving some CPU available for the GPU(s). if i then look at CPU consumption via the Windows Task Manager, i'll see that in fact more than 75% of the CPU is being used (75% for CPU tasks, plus any extra consumption for the servicing of GPU tasks). so i think you might find the "% of the processors" parameter more useful than the "% of CPU time" parameter in that respect.
*EDIT* - just realized GLeeM hit on this point before i could finish my post...