Index | Recent Threads | Unanswered Threads | Who's Active | Guidelines | Search |
World Community Grid Forums
Category: Beta Testing Forum: Beta Test Support Forum Thread: Work Now Available for Beta Test |
No member browsing this thread |
Thread Status: Active Total posts in this thread: 231
|
Author |
|
mikey
Veteran Cruncher Joined: May 10, 2009 Post Count: 821 Status: Offline Project Badges: |
Just curious if it's even possible to code an option that's able to be checked by us users that would allow us to free up 1 core of our cpu per GPU used to crunch? I'm thinking it would be pretty hard to do, if possible at all. Though it would probably have to be done so it only does that once it starts crunching a GPU work unit, that it automatically suspends a work unit that one core of the cpu is currently crunching, so it can be used during the GPU work unit. Once that GPU unit is done, if there's no more, it would re-enable the cpu core for cpu work units again, thus resuming the work unit that was already in progress. Maybe it's just wishful thinking, but I think this would be an ideal situation for us users. :) It may not be worth doing...if the Beta works, and it WILL eventually, then they could be sending out gpu units non stop for a long time to come. Making the switching back and forth unnecessary as you would never switch back to cpu crunching with that core. MOST of us gpu crunchers crunch for OTHER gpu projects, and have been forced to do so until lately. Using an AMD gpu most projects code it to only use less than 0.05 percent of the cpu, meaning I can run all cpu cores and the gpu at the same time and not lose much. Now my Nvidia runs at 9?% of a cpu core while it is crunching. Even though they are crunching for different projects it is consistent across the projects I do crunch for. Time will tell how much of a cpu core WCG uses for both. |
||
|
Jim1348
Veteran Cruncher USA Joined: Jul 13, 2009 Post Count: 1066 Status: Offline Project Badges: |
Just curious if it's even possible to code an option that's able to be checked by us users that would allow us to free up 1 core of our cpu per GPU used to crunch? I'm thinking it would be pretty hard to do, if possible at all. Though it would probably have to be done so it only does that once it starts crunching a GPU work unit, that it automatically suspends a work unit that one core of the cpu is currently crunching, so it can be used during the GPU work unit. Once that GPU unit is done, if there's no more, it would re-enable the cpu core for cpu work units again, thus resuming the work unit that was already in progress. Maybe it's just wishful thinking, but I think this would be an ideal situation for us users. :) It may not be worth doing...if the Beta works, and it WILL eventually, then they could be sending out gpu units non stop for a long time to come. Making the switching back and forth unnecessary as you would never switch back to cpu crunching with that core. |
||
|
Coleslaw
Veteran Cruncher USA Joined: Mar 29, 2007 Post Count: 1343 Status: Offline Project Badges: |
mikey159b...your experience from other GPU capable projects is because they were written in other languages. For example, PrimeGrid uses CAL not OpenCL. That is why it uses very little of the CPU core. (or at least from my understanding) So far, all OpenCL projects have seemed to utilize a much larger percentage of a CPU core. The trade off is that it is easier and cheaper for scientists to code in one language instead of two or three. The volunteers however lose a little efficiency on their end as far as resources go.
---------------------------------------- |
||
|
BladeD
Ace Cruncher USA Joined: Nov 17, 2004 Post Count: 28976 Status: Offline Project Badges: |
mikey159b...your experience from other GPU capable projects is because they were written in other languages. For example, PrimeGrid uses CAL not OpenCL. That is why it uses very little of the CPU core. (or at least from my understanding) So far, all OpenCL projects have seemed to utilize a much larger percentage of a CPU core. The trade off is that it is easier and cheaper for scientists to code in one language instead of two or three. The volunteers however lose a little efficiency on their end as far as resources go. PrimeGrid WAS the first project I run that stops a CPU task when 2 of them are running at same time. Now a PG AND a HCC GPU will do that, but 2 HCC GPUs will not! |
||
|
kashie
Cruncher Joined: Mar 7, 2007 Post Count: 46 Status: Offline Project Badges: |
Yes not allowing sufficient CPU resources for GPU processing can be very inefficient. The resulting CPU overcommitment slows down both CPU applications and GPU applications. In the worst cases it can lead to the GPU being starved of CPU resources and almost stalling and this increases the chances of GPU tasks erroring or producing invalid results. As this current OpenCL application uses more CPU time than GPU time on fast ATI Cypress, Cayman or Tahiti class GPUs, allocating a core to support GPU processing is the more efficient choice.
My HD 5870 does these HCC tasks over 20 times faster than a core of my CPU. An overclocked HD 7870 may be over 60 times faster. So for me, it's more than a fair swap to use a CPU core to achieve this efficiency and increase the amount of scientific research that I can contribute. I do understand the all cores for the cause concept that some adhere to though. However OpenCL GPU applications often use more CPU resources than applications coded in CAL, or with optimised IL coded cores. Better to accept it and move on from the myth of GPU processing not needing CPU resources. Avoiding CPU overcommitment with the use of a default ncpus value suitable for high CPU usage OpenCL GPU applications will allow greater efficiency for those contributing to GPU projects. It will also avoid the need for keen contributors to mess about with <file_name>, <open_name> mumbo jumbo. |
||
|
Bugg
Senior Cruncher USA Joined: Nov 19, 2006 Post Count: 271 Status: Offline Project Badges: |
So basically what you all seem to be saying is that with OpenCL it's best to have a cpu core set aside to use than not have one, right?
----------------------------------------Now for my next question. If I have only 1 GPU (graphics card) in my machine, I'd only need 1 core set aside out of the 4 on my i5, right? So I could use 3 to crunch other WCG projects and then whenever it's crunching GPU units it'll have one available. Even though this would mean my CPU production would go way down (25% less than now due to only using 3 cores instead of 4), to have a much better chance at returning valid (or at least non-error) work units via my GPU, this would be the way to go? i5-12600K (3.7GHz), 32GB DDR5, Win11 64bit Home |
||
|
kashie
Cruncher Joined: Mar 7, 2007 Post Count: 46 Status: Offline Project Badges: |
Well these OpenCL GPU tasks have a fair amount of CPU time at the start and end. So if you allocate a CPU core to support these GPU tasks your computer will be more efficient overall as the GPU tasks will complete faster.
This is assuming that GPU work is consistently available. When GPU work is not available a CPU core would be idle. This should be handled automatically by BOINC for high CPU usage GPU applications but often isn't because variable performance potential of different contributors' hardware makes projects reluctant to do so. It's kind of a "can't please everyone" scenario. |
||
|
Movieman
Veteran Cruncher Joined: Sep 9, 2006 Post Count: 1042 Status: Offline |
@RT- I highly recommend you don't use the newest Nvidia drivers. They have issues that have yet to be addressed. 290.53 beta or earlier would be my suggestion. @Movieman I'm pretty new at this myself but it would be my educated guess that you'll need to free at least 1 CPU for each of your GPUs for them to run at their peak efficiency. Just hypothetically speaking that is. Wish I had the $'s for 2 570"s. Don't we all. Thanks for the info and the 570's were a gift.. Knocked out Tom Peterson from nVidia at the CES XS Poker Party last January and he handed me the cards..PNY's.. Knocked him out of the poker game I mean of course..LOLOL So two cards will work but only with 14 cores on the cpu's..hypothetically of course.. [Edit 1 times, last edit by Movieman at Mar 17, 2012 3:53:35 AM] |
||
|
nanoprobe
Master Cruncher Classified Joined: Aug 29, 2008 Post Count: 2998 Status: Offline Project Badges: |
So two cards will work but only with 14 cores on the cpu's..hypothetically of course.. I'm sure they will work either way but will probably work more efficiently if each GPU has a CPU core (HT or non HT) since when these WCG GPU tasks start and end they use the CPU exclusively.... hypothetically of course.
In 1969 I took an oath to defend and protect the U S Constitution against all enemies, both foreign and Domestic. There was no expiration date.
|
||
|
Former Member
Cruncher Joined: May 22, 2018 Post Count: 0 Status: Offline |
Well these OpenCL GPU tasks have a fair amount of CPU time at the start and end. So if you allocate a CPU core to support these GPU tasks your computer will be more efficient overall as the GPU tasks will complete faster. Something for the WCG-Techs: Please confirm or deny the following assertion: A CPU-thread made available (ideally on-demand and 100% of the CPU-thread when required by an OpenCL GPU-aware WU) will provide the said WU with an environment that not only has the potential to realize the fastest possible GPU-hardware execution of the said WU, but also to minimize (if not eliminate?) the occurrence of errors that (may?, would?) otherwise likely occur for the said WU.-- snip from kashie [Mar 16, 2012 7:45:24 PM] post ; |
||
|
|