Advanced search

Message boards : Graphics cards (GPUs) : Dual Core System - How to make GPUGRID use a whole core

Author Message
Grasor
Send message
Joined: 6 Feb 14
Posts: 3
Credit: 3,835,461
RAC: 0
Level
Ala
Scientific publications
watwat
Message 36148 - Posted: 8 Apr 2014 | 2:00:18 UTC

Hi all,

I have a dual core system with a single GPU hanging out in the basement doing nothing but full-time BOINC work. I'd like to split the time between GPUGRID and WCG by assigning 1 core to WCG and the GPU along with the other core to GPUGRID. My settings were previously set to only allow 20% of the processor to be used along with the GPU, but I've changed this to 100% in both the main settings page and the "home" sub-settings page. However, after updating, the work unit for GPUGRID is still reporting only ~20% of the processor core being used along with the GPU.

What's up?

Thanks
G

Jim1348
Send message
Joined: 28 Jul 12
Posts: 819
Credit: 1,591,285,971
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 36150 - Posted: 8 Apr 2014 | 3:03:27 UTC - in response to Message 36148.
Last modified: 8 Apr 2014 | 3:17:22 UTC

However, after updating, the work unit for GPUGRID is still reporting only ~20% of the processor core being used along with the GPU.

That seems to be about right. I run a GTX 660 fed by one core of an E8400 Core2 Duo (3.0 GHz), and it runs about 20% CPU usage, with no restrictions on the CPU. As I recall, that is about the maximum, and some types of work units use less than that.

GPUGRID 8.20 Long runs (8-12 hours on fastest card) (cuda60) I621-NATHAN_KIDc22_full3-9-10-RND7022_0
18.57 (CPU %)


But I am not sure what CPU settings you are referring to in the main settings page and the "home" sub-settings page. Maybe you mean "Use at most % CPU Time"? That throttles the CPU to reduce power, but won't change the CPU usage percentage as far as I know, since both the CPU and the GPU will be idle at the same time, but I don't use that setting anyway and have not looked into it.

mikey
Send message
Joined: 2 Jan 09
Posts: 290
Credit: 2,035,091,115
RAC: 10,299,357
Level
Phe
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 36155 - Posted: 8 Apr 2014 | 11:57:39 UTC - in response to Message 36148.

Hi all,

I have a dual core system with a single GPU hanging out in the basement doing nothing but full-time BOINC work. I'd like to split the time between GPUGRID and WCG by assigning 1 core to WCG and the GPU along with the other core to GPUGRID. My settings were previously set to only allow 20% of the processor to be used along with the GPU, but I've changed this to 100% in both the main settings page and the "home" sub-settings page. However, after updating, the work unit for GPUGRID is still reporting only ~20% of the processor core being used along with the GPU.

What's up?

Thanks
G


You can't do that EXACTLY like you want to. You CANNOT split the cpu's and tell one core to work for this project and another core to work for that project, that is NOT an option in Boinc. What you CAN do is tell one cpu core to work for a project you only get cpu workunits from and then reserve the other cpu core to help the gpu work on a different project. You do this by going into the Boinc Manager, down by the clock, and clicking on Tools, Computing Preferences and then on the processor usage tab put 99% in the box that says 'on multi processor systems, use at most [] % of the processors...' Then click okay and things will be changed right away, this will reduce your cpu processing by one cpu core thereby reserving it for use by the gpu, or whatever else your pc decides to use it for.

I would recommend you change the 20% back to 100%, on the next line down on the same page, as now your pc will only be using one cpu core to crunch. The 20% number you chose probably does NOT work like you think it does, cpu's are either working or not working. The 20% tells the pc to use 100% of your cpu for 20% of the time, when crunching for Boinc. Think of it as slices of pie, you have 10 slices of pie, at the 20% setting you are eating 2 COMPLETE pieces of pie, while 8 pieces sit untouched. You are NOT eating 20% of the WHOLE pie, nibbling some off of this piece and some off of that piece, constantly nibbling.

Grasor
Send message
Joined: 6 Feb 14
Posts: 3
Credit: 3,835,461
RAC: 0
Level
Ala
Scientific publications
watwat
Message 36156 - Posted: 8 Apr 2014 | 13:14:01 UTC - in response to Message 36150.



But I am not sure what CPU settings you are referring to in the main settings page and the "home" sub-settings page. Maybe you mean "Use at most % CPU Time"? That throttles the CPU to reduce power, but won't change the CPU usage percentage as far as I know, since both the CPU and the GPU will be idle at the same time, but I don't use that setting anyway and have not looked into it.


The "sub-setting" is not obvious to get to, it can only be found once you have gone to your GPUGRID Preferences under your profile then clicking "Update Preferences", then scroll down to the bottom to see three profiles, Home, Work, School. Once you have saved a sub-settings profile, it will become populated for the future.

Sounds like ~20% is the maximum a processor is utilized, so it doesn't sound like I have a problem at all. Thanks for clearing that up.

Grasor
Send message
Joined: 6 Feb 14
Posts: 3
Credit: 3,835,461
RAC: 0
Level
Ala
Scientific publications
watwat
Message 36157 - Posted: 8 Apr 2014 | 13:17:18 UTC - in response to Message 36155.




I would recommend you change the 20% back to 100%, on the next line down on the same page, as now your pc will only be using one cpu core to crunch. The 20% number you chose probably does NOT work like you think it does, cpu's are either working or not working. The 20% tells the pc to use 100% of your cpu for 20% of the time, when crunching for Boinc. Think of it as slices of pie, you have 10 slices of pie, at the 20% setting you are eating 2 COMPLETE pieces of pie, while 8 pieces sit untouched. You are NOT eating 20% of the WHOLE pie, nibbling some off of this piece and some off of that piece, constantly nibbling.



I think there was a miscommunication here, I'm not set to 20%; I WAS but changed it to 100%. The system is fully utilized, with 100% of both cores being used by some program in BOINC. What I wanted to do was increase the share to GPUGRID. It sounds like only about 20% of the processor in this situation will be used by GPUGRID, however, based on what Jim1348 is saying.

Thanks.

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 36163 - Posted: 8 Apr 2014 | 14:51:05 UTC - in response to Message 36157.
Last modified: 8 Apr 2014 | 14:53:56 UTC

At GPUGrid a GPU task (long or short) will only use about 20% of a CPU to support the GPU task with the latest or most recent 331.x drivers. With slightly older drivers it would use a full CPU to support the GPU, but only on GeForce 600 and GeForce 700 cards. On Fermi cards it will not use a full CPU core no matter what driver you have.

Now there are CPU tasks as well as GPU tasks at GPUGrid. You need to select to crunch these on your systems profile (default/home/work/school),



You should be able to crunch 2 CPU tasks and 1 GPU task, however it's likely that the deterioration in performance of the GPU task would not be made up by running more than 1 CPU task.

As already pointed out, Boinc manager will decide what to run based on the projects you are attached to, their weighting and your configuration. You can't set it to run 1 CPU task from WCG and 1 CPU task from GPUGrid (at least not easily), but you can set the project weighting equally (or otherwise). I'm not sure if that will give you an equal weighting of CPU tasks or not (as your GPU will also get GPUGrid tasks), but you should get CPU work from both projects.
____________
FAQ's

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

Jacob Klein
Send message
Joined: 11 Oct 08
Posts: 1127
Credit: 1,901,927,545
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 36172 - Posted: 8 Apr 2014 | 22:11:50 UTC - in response to Message 36163.
Last modified: 8 Apr 2014 | 22:18:56 UTC

I'm not sure if that will give you an equal weighting of CPU tasks or not


BOINC will keep all "allowed" resources busy, as a top priority. It will then try to satisfy your resource share settings, as a secondary priority.

So, if you have your projects at equal resource share, and you have even 1 project that can do CPU work, in a system where the GPU can only do GPUGrid work, then what will likely happen is:
- the GPU does GPUGrid work, getting huge REC (Recent Estimated Credit) for that project
- work fetch will ask any other project for CPU work, before ever asking GPUGrid, because GPUGrid's REC is so high
- GPUGrid will never do CPU tasks on that system, because GPUGrid's REC is so high, and the GPU must do GPUGrid work

Hope that scenario makes sense. BOINC tries to honor your resource share, on a given system, but it keeps the resources busy as a higher priority [and it runs "deadline-miss" "earliest-deadline-first" "high-priority" tasks as an even higher priority]

Note: You can get an idea of the current REC values for your various projects, by looking at their properties in BOINC. The "Scheduling priority" value is a value calculated based on your REC and resource share, and is roughly used to determine "which project to work on next or ask for work next". If you really want to see some geeky stuff, you can turn on the <work_fetch_debug> flag in cc_config.xml, and see it make the fetch decisions. I worked with David Anderson to tweak that to be optimal.

mikey
Send message
Joined: 2 Jan 09
Posts: 290
Credit: 2,035,091,115
RAC: 10,299,357
Level
Phe
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 36179 - Posted: 9 Apr 2014 | 11:32:59 UTC - in response to Message 36172.


So, if you have your projects at equal resource share, and you have even 1 project that can do CPU work, in a system where the GPU can only do GPUGrid work, then what will likely happen is:
- the GPU does GPUGrid work, getting huge REC (Recent Estimated Credit) for that project
- work fetch will ask any other project for CPU work, before ever asking GPUGrid, because GPUGrid's REC is so high
- GPUGrid will never do CPU tasks on that system, because GPUGrid's REC is so high, and the GPU must do GPUGrid work


Sounds like we need separate REC settings for the cpu and gpu then so that doesn't happen. Gpu crunching is advancing sooo fast with more then just a couple of projects now supporting them, maybe it's time to think of how to split them so what you said doesn't happen. Encouraging new people is the key to continued growth, each will want to do things old guys like me never even thought of before, but like!

Jacob Klein
Send message
Joined: 11 Oct 08
Posts: 1127
Credit: 1,901,927,545
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 36181 - Posted: 9 Apr 2014 | 12:37:43 UTC - in response to Message 36179.
Last modified: 9 Apr 2014 | 12:49:14 UTC

No.

The logic is correctly as follows: Get as much work done as possible (loading idle GPU Resources before filling idle CPU Resources), and try to honor Resource Share if you can (by maintaining a REC value per project per host).

How would having separate REC values per resource, be better? In this particular scenario, you'd be doing EVEN MORE GPUGrid work as compared to other projects, thus not honoring Resource Share optimally.

So far as I know, there is no easy way to: Have Project A work on GPU tasks, and have Projects A and B work equally on CPU tasks. I've run into the same behavior before, when WCG was running the HCC GPU tasks. WCG REC went way high, and because I had WCG Resource Share set equal to my other CPU tasks, I stopped getting WCG CPU tasks. I expected it, because I believe it is correct behavior. But I wanted to run WCG CPU tasks. So, I countered the behavior by adjusting WCG Resource Share to be way higher, approximately equal to how much additional REC % those WCG HCC GPU tasks were gaining. That was the only way for me to influence BOINC to still request WCG CPU tasks, despite doing WCG HCC GPU tasks.

If you'd like to read over 2 decent design documents, which provide examples and reasons for the logic, they are here:
http://boinc.berkeley.edu/trac/wiki/ClientSched
http://boinc.berkeley.edu/trac/wiki/ClientSchedOctTen

If you'd like to further explain an approach you think would be better, then you may. I'd listen. Use terms like "Resource Share", "REC", "Project", and "Resource".

Thanks,
Jacob

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 36189 - Posted: 9 Apr 2014 | 21:51:22 UTC - in response to Message 36181.

Jacob, thanks for the explanation.
For some reason I thought it was based on runtime!
If you run other CPU projects this basically means that you will never get any GPUGrid CPU work (which is a totally different research line).

We can always manually suspend other projects and get work forcibly that way, but this highlights the issue that Boinc is not resource orientated.
Long term this isn't going to get any better, and every time you dig a new tunnel the map of the underground becomes more indecipherable...
____________
FAQ's

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

Jacob Klein
Send message
Joined: 11 Oct 08
Posts: 1127
Credit: 1,901,927,545
RAC: 0
Level
His
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 36191 - Posted: 9 Apr 2014 | 22:18:20 UTC - in response to Message 36189.

The bowels of task scheduling and work fetch scheduling... are indeed tunnels where flashlights are required.

BOINC was designed with a "Resource Share per project" concept, and to this day, BOINC honors it as best it can on a given host, even if the host has various types/speeds of resources.

(One can imagine a BOINC project that utilizes "network" as a resource, and you could get credit based off of it... or perhaps "hard disk space" as a resource, and you could get credit based off allowing others to use it. GPUs and CPUs are the primary resources... for now.)

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 36205 - Posted: 10 Apr 2014 | 15:10:13 UTC - in response to Message 36191.

Boinc was primarily designed to manage SETI's security issues. At that time (2002) crunchers would have only used one type of processing resource, single core CPU's, though multi core CPU's already existed.

Multi-compute resource management was not a requirement.
____________
FAQ's

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

Post to thread

Message boards : Graphics cards (GPUs) : Dual Core System - How to make GPUGRID use a whole core

//