Seti@Home optimized science apps and information

Optimized Seti@Home apps => Discussion Forum => Topic started by: Raistmer on 18 Jul 2009, 03:26:22 pm

Title: What BOINC features we need and what don't
Post by: Raistmer on 18 Jul 2009, 03:26:22 pm
I trying to get max performance for my quad with ATI GPU installed with BOINC 6.6.36 and have already some impression about this version.

For those who neber used ATI GPU with BOINC:
there is no official support for ATI GPU in BOINC but there are at least one project (MilkyWay) that has already optimized app that uses ATI GPU.
Cause there are some special CPU acceleratot boards exist for which BOINC has no support also ATI GPU can be good example what difficulties we could meet if will try to use any CPU accelerator beside nVidia's GPUs.

First and most global problem: BOINC  have no abilities nor options for project pairing. I mean, there is no way to tell BOINC to run this project in pair with that project on multi-CPU systems.
Only indirect influence is possible - via project shares, number of CPUs and CPU shares for project apps.

Now more thorough about ATI GPU + MW tasks running on them.
MW app uses almost no CPU at all.
So it's natural to set its avg_ncpus and max_ncpus to some small value. This will allow MW tasks to run in parallel with CPU intensive tasks. (Note, this model also accounts for any low CPU project like HDD intensive or network intensive apps). But BOINC tends to ignore this opportunity:

situation 1:
MW has lower project share than SETI.
BOINC tends to run 5 SETI tasks (quad system with ncpus setted to 4) that suboptimal and no MW tasks at all, that too unoptimal to tolerate, GPU stays completely idle.

situation 2:
MW has higher (or equal)  project share with SETI:
BOINC tends to run as much MW tasks as it have in cache. Fortunately, there are very low limit of tasks in queue for this project so with 24 MW tasks running BOINC still able to run 4 SETI tasks.
That config is suboptimal too, but at least both CPU and GPU are busy with work.

situation 3:
and what will be if some third "backup" project is active (einstein@home in my case):
cause it's backup project, it should get work only when main projects can't feed host with work. So, its project share is very low.
When einstein has some work and SETI starting to give work too, BOINC 6.6.36 tends to switch einstein tasks into high priority mode putting MW tasks in "waiting for run" state. That is, GPU stays idle again.

That is, there is only one, very unstable, case when both CPU and GPU completely busy with work.

What we need IMHO to be changed in BOINC:

1) project pairing ability should be developed and added to BOINC client.
2) "high priority" mode should be used with much greater care than now. In case 2 MW taks recive "high priority" status too although completion time for each task is less than 3 minutes. And deadline ~3-4 days. Cause MW had bigger project share there is no need to run these tasks in high priority mode at all. Current BOINC 6.6.36 shceduling is broken obviously.
3) option needed to restrict BOINC from using transition to "waiting for run" state (as it exists to restrict BOINC from leaving app in memory, to use CPU, GPU and so on).
Such transition in case of MW app can completely destroy any BOINC's estimations about completion times of these tasks.
Title: Re: What BOINC features we need and what don't
Post by: arkayn on 18 Jul 2009, 05:58:38 pm
situation 1:
MW has lower project share than SETI.
BOINC tends to run 5 SETI tasks (quad system with ncpus setted to 4) that suboptimal and no MW tasks at all, that too unoptimal to tolerate, GPU stays completely idle.


I think I know why mine works a bit better than yours on MW, I don't use the config file and just let it run as needed.
Recently I have gotten a lot of work and while it will start up 10 units it leaves the rest as "ready to start"

Of course I also drop down to 3 processing SETI as well.
Title: Re: What BOINC features we need and what don't
Post by: Richard Haselgrove on 18 Jul 2009, 08:03:59 pm

What we need IMHO to be changed in BOINC:


Shouldn't you add:

4) Native detection of ATI graphics cards, and supported scheduling of applications which use them
???
Title: Re: What BOINC features we need and what don't
Post by: MarkJ on 19 Jul 2009, 01:31:07 am

What we need IMHO to be changed in BOINC:


Shouldn't you add:

4) Native detection of ATI graphics cards, and supported scheduling of applications which use them
???

Slated for BOINC 6.10 apparently.
Title: Re: What BOINC features we need and what don't
Post by: Raistmer on 19 Jul 2009, 02:45:59 am

Shouldn't you add:

4) Native detection of ATI graphics cards, and supported scheduling of applications which use them
???
Actually not. It's not possible to support all current and future coprocessors in the world. Some mechanism should be devised that will not need separate support for each such device
Title: Re: What BOINC features we need and what don't
Post by: Raistmer on 19 Jul 2009, 02:53:54 am
situation 1:
MW has lower project share than SETI.
BOINC tends to run 5 SETI tasks (quad system with ncpus setted to 4) that suboptimal and no MW tasks at all, that too unoptimal to tolerate, GPU stays completely idle.


I think I know why mine works a bit better than yours on MW, I don't use the config file and just let it run as needed.
Recently I have gotten a lot of work and while it will start up 10 units it leaves the rest as "ready to start"

Of course I also drop down to 3 processing SETI as well.
Hm, if you get idle CPU cores time to time it's not better ;)
Currently I managed to have MW RAC >52k with peak >56k (then einstein started in high priority mode and BOINC with great sadism began to put into waiting state exactly that MW tasks which was actually run) It's MW opt app pecularity so I didn't mention it in starting post but if those 3 (in my case number ==3, default setting) MW tasks that actually run will be put in waiting state, all MW tasks will be stopped. BOINC can set remaining "running" tasks into high priority  state - no matter. They will do no progress at all.
User intervention (BOINC restart) absolutely required in such situation.
Title: Re: What BOINC features we need and what don't
Post by: arkayn on 19 Jul 2009, 03:22:44 am
I go full idle on occasion, it is also my gaming machine and playing games and crunching at the same time do not mix at all.
Either the ATI app crashes, the driver crashes or the computer just BSOD's.

I don't mind the idle CPU all that much since I am mostly concentrating on getting my MW RAC up.
Title: Re: What BOINC features we need and what don't
Post by: Raistmer on 21 Jul 2009, 04:10:05 am
Ok, so we pursue different aims in our setups :)
I trying to get best possible MW performance (almost pure ATI GPU processing) almost not hurting SETI performance (CPU processing).
And came to sad conclusion that it's impossible to achieve with BOINC 6.6.36.
Sheduling is broken. High priority mode in use on every sneeze... And running 4 CPU taks in high priority mode makes impossible to run additional tasks even with avg_cpu setted to 0.01.
So, if 4 SETI or einstein tasks are running in high priority mode, no MW tasks running at all :(
Situation with BOINC resembles situation with robots described in Shekly's story "A Ticket to Tranai".... they unfeature their robots in same manner BOINC devs degrade BOINC... :(
Title: Re: What BOINC features we need and what don't
Post by: arkayn on 21 Jul 2009, 08:32:03 am
Lets also not forget that I only use 6.6.20 on my PC's as well.
Title: Re: What BOINC features we need and what don't
Post by: Raistmer on 21 Jul 2009, 08:52:34 am
Lets also not forget that I only use 6.6.20 on my PC's as well.
Oh, you lucky one :)
I installed some special build of 6.6.36 to diminish current SETI's problems with bandwidth, but it seems will be forced to return to 6.6.20. I used it before and had only one problem - too much running MWs.... Now I have completely different problem, no MWs at all too often...
Title: Re: What BOINC features we need and what don't
Post by: WHRoeder on 21 Jul 2009, 02:32:35 pm
On another forum (MW or Boinc) someone reported that 6.3.?-6.6.37 has a bug in the scheduling calculation. That why we get the won't complete in time message.
Its been fixed in the main trunk.
Title: Re: What BOINC features we need and what don't
Post by: Raistmer on 21 Jul 2009, 02:40:02 pm
yes,geles posted on BOINC and I on MW, will see what that fix is. But  unfortunately, it solves fetching problem but not solves scheduling problems...
Title: Re: What BOINC features we need and what don't
Post by: ralph on 24 Aug 2009, 11:05:13 pm
I think that trying to lay all this on the BOINC Manager might make it too complex, but a "BOINC Setup advisor"  might be a good thing to design.

The setup advisor could:

1) analyze your hardware, along with BOINC projects, and figure out what science applications to recommend, based on effiencies and/or workunit data sizes.  For example, if I have an nVidia GPU, it could recommend applications that used that feature.

2) connect to your friends (based on their e-mail address, or where you went to high school or college) or 'geek buds' (based on their hardware similarity) and invite/encourage them to complete with you to process workunits.

Any other suggestions?
Title: Re: What BOINC features we need and what don't
Post by: Vid Vidmar on 18 Oct 2009, 07:57:48 am
I would like to have the ability to set resource shares between projects per resource (cpu / gpu ... ).
Title: Re: What BOINC features we need and what don't
Post by: Triumph on 19 Oct 2009, 08:32:53 am
I would like to have the ability to set resource shares between projects per resource (cpu / gpu ... ).

What, like having 4 core cpu with different projects running on each core at the same time(+gpu)
It seems to be easier to schedule properly each project
Title: Re: What BOINC features we need and what don't
Post by: DLukenbill on 19 Oct 2009, 03:27:41 pm
I would like to have the ability to set resource shares between projects per resource (cpu / gpu ... ).
I agree.  It would be nice to have a "resources" tab under preferences which would let me set the resource share for the projects.  An option to enter/display them as a percentage would be nice also.

Are these ideas and requests being forwarded to the BOINC Manager developers, or is it a local wish list?
Title: Re: What BOINC features we need and what don't
Post by: Vid Vidmar on 22 Oct 2009, 09:14:00 am
What, like having 4 core cpu with different projects running on each core at the same time(+gpu)
It seems to be easier to schedule properly each project
Well not exactly. What I have in mind is what I spammed a couple of message boards about: having something like a separate scheduler thread for each resource, be it CPU, GPU or any other device. Then ofc you would have to modify the manager like DLukenbill suggested, or something like having a tab for each resource, and add/remove projects to them (without necessarily attaching other resources to those projects), and set resource shares between projects using that particular resource.

I would like to have the ability to set resource shares between projects per resource (cpu / gpu ... ).
I agree.  It would be nice to have a "resources" tab under preferences which would let me set the resource share for the projects.  An option to enter/display them as a percentage would be nice also.

Are these ideas and requests being forwarded to the BOINC Manager developers, or is it a local wish list?
My fear is, that it's more a local kind. And even if it wasn't, I don't think those developers would even consider them. Too many things to modify and fix. Too much work. However it might prove useful to have such a list, one never knows when someone will decide to do things right.
BR,
Vid