Advanced search

Message boards : Number crunching : Tip: How to obtain zero GPU buffer size and normal CPU buffer size

Author Message
Jim1348
Send message
Joined: 28 Jul 12
Posts: 819
Credit: 1,591,285,971
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39554 - Posted: 21 Jan 2015 | 15:07:24 UTC

I run both GPU and CPU projects on BOINC, and maintain a low buffer size to ensure a timely return of GPUGrid work units for the bonus points. However, I would prefer a larger buffer size for the CPU work, but BOINC does not allow for separate buffer sizes for GPU and CPU work.

Recently I tried a technique that allows for effectively zero (0) buffer size for GPUGrid work, while still allowing for any buffer size for CPU work for other projects. To implement it, you just set the Resource Share for GPUGrid to 0 percent in your Account "GPUGRID preferences" settings. Then, you won't get a new work unit until the current one finishes. It takes only about a minute or two on a fast Internet connection to download and start a new work unit after the old one finishes.

Caveats:

(1) You need a version of BOINC that works properly for 0 resource share; some have bugs, but the current released version (7.4.36) works fine.

(2) For this trick to work, you need to run GPUGrid as your only GPU project. That is, if you run other GPU projects, then you will never get GPUGrid work unless the other projects don't have any available.

I have used it on GPUGrid with 3 machines and a total of 4 GPU cards with no problems, while running World Community Grid and Climate Prediction Network for the CPU projects with a normal buffer size.

Profile Beyond
Avatar
Send message
Joined: 23 Nov 08
Posts: 1112
Credit: 6,162,416,256
RAC: 0
Level
Tyr
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39561 - Posted: 21 Jan 2015 | 16:38:37 UTC - in response to Message 39554.

I used to do this on all my machines prior to switching to the 750Ti cards. It works. There was a bug that broke the backup project support (0 setting) for quite a while but as you mention it's been fixed in the current version (7.4.36). I think there's a plan to eventually allow separate CPU & GPU queue settings. Jacob Klein could provide more information about if and when this will happen. I also proposed a while ago that a scheduler setting be added to allow an arbitrary smaller queue, perhaps a setting of 1 that would try to maintain 1 hour of work for instance. Never saw any comments in reply on the tread so dropped it at the time. I think it would be a valuable addition.

Jim1348
Send message
Joined: 28 Jul 12
Posts: 819
Credit: 1,591,285,971
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39562 - Posted: 21 Jan 2015 | 16:48:40 UTC - in response to Message 39561.

Separate GPU and CPU buffer queue settings would be ideal. But the last time I checked on the BOINC forum, it did not seem to be in the cards.
http://boinc.berkeley.edu/dev/forum_thread.php?id=6375&postid=58538#58538

Maybe Jacob can give us an authoritative answer on it.

ExtraTerrestrial Apes
Volunteer moderator
Volunteer tester
Avatar
Send message
Joined: 17 Aug 08
Posts: 2705
Credit: 1,311,122,549
RAC: 0
Level
Met
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39714 - Posted: 25 Jan 2015 | 22:49:30 UTC

Jim, the drawbacks of your solution are:

- you can't set up a real backup project
- you'll only ever have 1 GPU-Grid WU at a time. Depending on your upload speed there's goping to be some serious idle time for the GPU

Personally I prefer using small cache setting, around 1/4 of a day, together with backup projects for CPU and GPU.

MrS
____________
Scanning for our furry friends since Jan 2002

Profile Beyond
Avatar
Send message
Joined: 23 Nov 08
Posts: 1112
Credit: 6,162,416,256
RAC: 0
Level
Tyr
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39726 - Posted: 26 Jan 2015 | 18:26:34 UTC - in response to Message 39714.

- you can't set up a real backup project
- you'll only ever have 1 GPU-Grid WU at a time. Depending on your upload speed there's going to be some serious idle time for the GPU

Two of the reasons I proposed the "1" setting that would try to maintain a small amount of work (proposed 1 hour). This would address both of the above issues.

Jim1348
Send message
Joined: 28 Jul 12
Posts: 819
Credit: 1,591,285,971
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39730 - Posted: 26 Jan 2015 | 20:58:01 UTC - in response to Message 39714.


- you can't set up a real backup project
- you'll only ever have 1 GPU-Grid WU at a time. Depending on your upload speed there's goping to be some serious idle time for the GPU

Personally I prefer using small cache setting, around 1/4 of a day, together with backup projects for CPU and GPU.

MrS

I used that too for a long time, but decided that I wanted a larger CPU cache. The idle time is less than 2 minutes for me (see above). I get 30 Mbps down and 3.5 Mbps up as measured (I don't know what the official rating is anymore - they keep changing it). So what works for me may not work for everyone, but I doubt that it would be more than 5 minutes in most areas these days, not a major loss. I have not used a backup for GPUGrid anyway, as it has not really been necessary, but yes you lose that advantage.

The BOINC scheduler often does its own thing with scheduling, and I try to avoid multiple projects when possible. In my case, World Community Grid provides its own backup for the CPU, as it includes multiple projects and is usually quite reliable.

I just offer this as an option in case anyone wants it, but don't particularly advocate it.

Jim1348
Send message
Joined: 28 Jul 12
Posts: 819
Credit: 1,591,285,971
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39732 - Posted: 26 Jan 2015 | 21:05:06 UTC - in response to Message 39726.

Two of the reasons I proposed the "1" setting that would try to maintain a small amount of work (proposed 1 hour). This would address both of the above issues.

The "1" setting addresses the relative amount of time that you devote to one project versus another, but does not change the absolute amount of work in the buffer in terms of time. So it is not quite what I am after in trying to maintain a low GPU cache but a normal CPU cache.

Profile Retvari Zoltan
Avatar
Send message
Joined: 20 Jan 09
Posts: 2343
Credit: 16,201,255,749
RAC: 0
Level
Trp
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39733 - Posted: 26 Jan 2015 | 22:33:21 UTC - in response to Message 39732.

So it is not quite what I am after in trying to maintain a low GPU cache but a normal CPU cache.

You can install two separate instance of BOINC manager on a single host, one for low cache setting and the other for normal cache setting, and then add the projects accordingly.
All you have to do is set the advanced options when installing the second copy of BOINC manager, and designate a different program and data folders (for example: add a "2" to the end of their names).

Jim1348
Send message
Joined: 28 Jul 12
Posts: 819
Credit: 1,591,285,971
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39734 - Posted: 26 Jan 2015 | 22:52:45 UTC - in response to Message 39733.

You can install two separate instance of BOINC manager on a single host, one for low cache setting and the other for normal cache setting, and then add the projects accordingly.
All you have to do is set the advanced options when installing the second copy of BOINC manager, and designate a different program and data folders (for example: add a "2" to the end of their names).

Thanks for the tip. The last time I looked into that it was a pretty involved procedure. Maybe the newer versions of BOINC make it simpler.

Richard Haselgrove
Send message
Joined: 11 Jul 09
Posts: 1617
Credit: 8,127,144,351
RAC: 17,724,077
Level
Tyr
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39735 - Posted: 26 Jan 2015 | 23:38:49 UTC - in response to Message 39734.

You can install two separate instance of BOINC manager on a single host, one for low cache setting and the other for normal cache setting, and then add the projects accordingly.
All you have to do is set the advanced options when installing the second copy of BOINC manager, and designate a different program and data folders (for example: add a "2" to the end of their names).

Thanks for the tip. The last time I looked into that it was a pretty involved procedure. Maybe the newer versions of BOINC make it simpler.

Strictly, you have to install two different copies of the BOINC *client*, and - in theory - you can manage them both with a single instance of the, er, Manager. But that seems to be broken, and (for Windows) BoincTasks seems to handle the scenario much better.

Jim1348
Send message
Joined: 28 Jul 12
Posts: 819
Credit: 1,591,285,971
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39736 - Posted: 27 Jan 2015 | 0:12:54 UTC - in response to Message 39735.

Strictly, you have to install two different copies of the BOINC *client*, and - in theory - you can manage them both with a single instance of the, er, Manager. But that seems to be broken, and (for Windows) BoincTasks seems to handle the scenario much better.

It is worth a try. I use BoincTasks for much of the management anyway, since I remote into several PCs on the LAN. Thanks.

Profile Beyond
Avatar
Send message
Joined: 23 Nov 08
Posts: 1112
Credit: 6,162,416,256
RAC: 0
Level
Tyr
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39737 - Posted: 27 Jan 2015 | 4:03:07 UTC - in response to Message 39732.
Last modified: 27 Jan 2015 | 4:03:38 UTC

Two of the reasons I proposed the "1" setting that would try to maintain a small amount of work (proposed 1 hour). This would address both of the above issues.

The "1" setting addresses the relative amount of time that you devote to one project versus another, but does not change the absolute amount of work in the buffer in terms of time. So it is not quite what I am after in trying to maintain a low GPU cache but a normal CPU cache.

Read my 2 previous posts again. The "1" (or whatever) setting was proposed to the BOINC devs (DA) to address the problem you describe. It would tell the client to try to maintain a 1 hour WU buffer for that project. Similar to the "0" setting it would work independently of the present WU buffer.

Jim1348
Send message
Joined: 28 Jul 12
Posts: 819
Credit: 1,591,285,971
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39743 - Posted: 27 Jan 2015 | 9:49:05 UTC - in response to Message 39737.

Read my 2 previous posts again. The "1" (or whatever) setting was proposed to the BOINC devs (DA) to address the problem you describe. It would tell the client to try to maintain a 1 hour WU buffer for that project. Similar to the "0" setting it would work independently of the present WU buffer.

OK, I see what you are saying. But when you say "for that project", I think that means that BOINC needs a separate project resource share option for the GPU and CPU in order to address the situation I am interested in. However, that seems to be precluded by the response I got on the BOINC forum noted above. Maybe there is another way to implement it; I know nothing about how the scheduler works.

Profile Beyond
Avatar
Send message
Joined: 23 Nov 08
Posts: 1112
Credit: 6,162,416,256
RAC: 0
Level
Tyr
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39770 - Posted: 27 Jan 2015 | 19:07:13 UTC - in response to Message 39743.

Read my 2 previous posts again. The "1" (or whatever) setting was proposed to the BOINC devs (DA) to address the problem you describe. It would tell the client to try to maintain a 1 hour WU buffer for that project. Similar to the "0" setting it would work independently of the present WU buffer.

OK, I see what you are saying. But when you say "for that project", I think that means that BOINC needs a separate project resource share option for the GPU and CPU in order to address the situation I am interested in. However, that seems to be precluded by the response I got on the BOINC forum noted above. Maybe there is another way to implement it; I know nothing about how the scheduler works.

Just like the "0" backup project setting is set for the project (more precisely the default, home, work or school setting within the project preferences), the "1" (1 hour) setting would likewise be for that project. For instance, set up GPUGRID NV GPUs with a 1 hour buffer by using my proposed "1" setting and set up your other CPU projects to use whatever you like. If not using a "0" or a "1" they'd work as the current normal project resource shares. Surely you see the advantage for projects such as GPUGRID, the buffer would stay at 1 hour and all other projects could have normal resource shares. No waste of the long UL/DL times you have with the "0" setting.

Jim1348
Send message
Joined: 28 Jul 12
Posts: 819
Credit: 1,591,285,971
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39777 - Posted: 27 Jan 2015 | 21:26:02 UTC - in response to Message 39770.

My point was not the desirability of it, but the feasibility. I don't know if they can implement it.

Jacob Klein
Send message
Joined: 11 Oct 08
Posts: 1127
Credit: 1,901,927,545
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 39796 - Posted: 28 Jan 2015 | 13:08:51 UTC

Saw my name dropped a couple times here. Chuckled.

The original poster's idea of setting GPUGrid as a backup project, will work great on a computer that is constantly connected to the internet and is not attached to any other GPU projects.

Retvari's solution is even more clean, in the sense that you can have a "GPU instance" of BOINC with a low cache, and still be attached to multiple GPU projects, with that instance being separate from your "CPU instance". However, setting it up can be a bit tricky.

Personally, I go the middle-ground route, where I keep my cache setting at 0.5 days minimum, with 0.2 days max additional. I'm not terribly worried about GPUGrid bonus credits, and the settings work nicely to make sure I never have more than 0.7 days of work stored, while also minimizing RPC calls by only contacting projects 5 times a day with that 0.2 setting.

As far as BOINC development goes, although there will be a slight reshuffle of BOINC preferences, it will be subtle, and will not include anything awesome like profiles or resource-specific resource shares, or anything of that nature. I wouldn't count on that changing.

Regards,
Jacob

Jim1348
Send message
Joined: 28 Jul 12
Posts: 819
Credit: 1,591,285,971
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 40232 - Posted: 22 Feb 2015 | 17:05:28 UTC - in response to Message 39554.

(2) For this trick to work, you need to run GPUGrid as your only GPU project. That is, if you run other GPU projects, then you will never get GPUGrid work unless the other projects don't have any available.

It turns out that that is not entirely correct. During the recent GPUGrid work unit shortages, I added POEM, and also set it as "0 percent" resource share. It works fine; when GPUGrid does not have work, it switches to POEM, and vice-versa.

If both projects have work, then it alternates between the two, I suppose in order to maintain equal shares (0) for both. It works for me.

Jacob Klein
Send message
Joined: 11 Oct 08
Posts: 1127
Credit: 1,901,927,545
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 40237 - Posted: 23 Feb 2015 | 2:57:17 UTC - in response to Message 40232.

Every project has a "priority" value, even if it has 0 resource share. You can actually look at that value if you look at the Project Properties in BOINC. And BOINC uses those values, as guidelines, when determining which projects to schedule to run, and which projects to ask for work. Fun.

Variable
Send message
Joined: 20 Nov 13
Posts: 21
Credit: 437,661,105
RAC: 0
Level
Gln
Scientific publications
watwatwatwatwatwatwatwatwatwat
Message 40544 - Posted: 20 Mar 2015 | 14:08:16 UTC - in response to Message 39796.

Retvari's solution is even more clean, in the sense that you can have a "GPU instance" of BOINC with a low cache, and still be attached to multiple GPU projects, with that instance being separate from your "CPU instance". However, setting it up can be a bit tricky.


I haven't tried yet but would like to implement two separate BOINCs on my main desktop machine if possible. I play games on it during which the BOINC manager will auto-idle, but games only need the primary GPU's resources and there's no need to idle the second GPU along with it. If this is tricky to do, is there a guide/tutorial anywhere?

Jacob Klein
Send message
Joined: 11 Oct 08
Posts: 1127
Credit: 1,901,927,545
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 40574 - Posted: 22 Mar 2015 | 4:32:46 UTC

I won't be able to help you. I attempted it once, and didn't have much luck. Maybe Retvari can explain it. Sorry.

ExtraTerrestrial Apes
Volunteer moderator
Volunteer tester
Avatar
Send message
Joined: 17 Aug 08
Posts: 2705
Credit: 1,311,122,549
RAC: 0
Level
Met
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 40590 - Posted: 22 Mar 2015 | 23:22:52 UTC

Have you tried gaming while simply letting the GPU crunch? I know it will not always work well, but for some games (e.g. Civ V) I really don't mind it. In fact I feel less guilty for "wasting" my time with that if at least the GPU continues to do so real work ;)

And regarding your question: there should be some <exclude_GPU>number</exclude_GPU> tag, but I don't know the details.

MrS
____________
Scanning for our furry friends since Jan 2002

captainjack
Send message
Joined: 9 May 13
Posts: 171
Credit: 3,061,096,788
RAC: 8,703,751
Level
Arg
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 40594 - Posted: 23 Mar 2015 | 22:18:27 UTC

Variable wrote:

I haven't tried yet but would like to implement two separate BOINCs on my main desktop machine if possible. I play games on it during which the BOINC manager will auto-idle, but games only need the primary GPU's resources and there's no need to idle the second GPU along with it. If this is tricky to do, is there a guide/tutorial anywhere?


I have been able to get two clients running but it has been a while. Here is a thread over on the Test4Theory project that has some discussion about getting two clients to run at the same time. Be sure to read all the way through the thread as there are suggestions offered throughout.

http://lhcathome2.cern.ch/vLHCathome/forum_thread.php?id=1154&postid=13411

Also, here is a post over at WCG that I put together for Ubuntu. Windows is a bit different, but maybe this will help.

https://secure.worldcommunitygrid.org/forums/wcg/viewpostinthread?post=460711

Obviously, you will have to put some parameters in the cc_config.xml file for each BOINC client to tell it which GPU to exclude.

In Windows, in the BOINC Manager you can click on "Advanced", "Launch another BOINC Manager" and have multiple BOINC managers running at the same time. When you start the second BOINC manager, you can attach to BOINC client #2 and be able to control both clients at the same time.

If you get through all this and are still having trouble, let us know and I will try to help.

Disclaimer: I had this working for WCG and Test4Theory. I can't remember ever trying it with multiple gpu's on the gpugrid project. If you have trouble with that aspect, let me know and I will do some testing.

Hope that helps.

Profile skgiven
Volunteer moderator
Volunteer tester
Avatar
Send message
Joined: 23 Apr 09
Posts: 3968
Credit: 1,995,359,260
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 40595 - Posted: 23 Mar 2015 | 22:36:16 UTC - in response to Message 40594.
Last modified: 23 Mar 2015 | 22:53:15 UTC

There is another way to do this.
Create two cc_config files in two different directories, one to disable GPU 0 and the other to enable GPU 0 again, and have two batch files on your desktop; one to disable GPU 0 in Boinc prior to gaming and the other to enable it again. Just double-click on the 'DisableGPU0' batch file to disable GPU0 prior to gaming and double-click 'EnableGPU0' to enable it afterwards.

See the following link,

https://www.gpugrid.net/forum_thread.php?id=3738&nowrap=true#36684
____________
FAQ's

HOW TO:
- Opt out of Beta Tests
- Ask for Help

Post to thread

Message boards : Number crunching : Tip: How to obtain zero GPU buffer size and normal CPU buffer size

//