Message boards :
Number crunching :
Tip: How to obtain zero GPU buffer size and normal CPU buffer size
Message board moderation
| Author | Message |
|---|---|
|
Send message Joined: 28 Jul 12 Posts: 819 Credit: 1,591,285,971 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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. |
BeyondSend message Joined: 23 Nov 08 Posts: 1112 Credit: 6,162,416,256 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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. |
|
Send message Joined: 28 Jul 12 Posts: 819 Credit: 1,591,285,971 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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. |
|
Send message Joined: 17 Aug 08 Posts: 2705 Credit: 1,311,122,549 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
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 |
BeyondSend message Joined: 23 Nov 08 Posts: 1112 Credit: 6,162,416,256 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
- you can't set up a real backup project 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. |
|
Send message Joined: 28 Jul 12 Posts: 819 Credit: 1,591,285,971 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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. |
|
Send message Joined: 28 Jul 12 Posts: 819 Credit: 1,591,285,971 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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. |
Retvari ZoltanSend message Joined: 20 Jan 09 Posts: 2380 Credit: 16,897,957,044 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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). |
|
Send message Joined: 28 Jul 12 Posts: 819 Credit: 1,591,285,971 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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. 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. |
|
Send message Joined: 11 Jul 09 Posts: 1639 Credit: 10,159,968,649 RAC: 318 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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. 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. |
|
Send message Joined: 28 Jul 12 Posts: 819 Credit: 1,591,285,971 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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. |
BeyondSend message Joined: 23 Nov 08 Posts: 1112 Credit: 6,162,416,256 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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. 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. |
|
Send message Joined: 28 Jul 12 Posts: 819 Credit: 1,591,285,971 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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. |
BeyondSend message Joined: 23 Nov 08 Posts: 1112 Credit: 6,162,416,256 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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. 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. |
|
Send message Joined: 28 Jul 12 Posts: 819 Credit: 1,591,285,971 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
My point was not the desirability of it, but the feasibility. I don't know if they can implement it. |
|
Send message Joined: 11 Oct 08 Posts: 1127 Credit: 1,901,927,545 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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 |
|
Send message Joined: 28 Jul 12 Posts: 819 Credit: 1,591,285,971 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
(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. |
|
Send message Joined: 11 Oct 08 Posts: 1127 Credit: 1,901,927,545 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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. |
|
Send message Joined: 20 Nov 13 Posts: 21 Credit: 480,846,415 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
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? |
|
Send message Joined: 11 Oct 08 Posts: 1127 Credit: 1,901,927,545 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
I won't be able to help you. I attempted it once, and didn't have much luck. Maybe Retvari can explain it. Sorry. |
©2025 Universitat Pompeu Fabra