Advanced search

Message boards : Graphics cards (GPUs) : BOINC 6.6.27 is out

Author Message
MarkJ
Volunteer moderator
Volunteer tester
Send message
Joined: 24 Dec 08
Posts: 738
Credit: 200,909,904
RAC: 0
Level
Leu
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 9321 - Posted: 5 May 2009 | 8:51:28 UTC

Some more scheduling changes in this one.

Changes for 6.6.27

- removed outdated translation files; updated template

- client: view 2 GPUs as equivalent if their memory differs by <30%. (maybe their memory differed slightly from the most capable one)

- client: simplify enforce_schedule(), and maybe fix bugs.
New approach: take the "ordered_schedule_results" list, add running jobs that haven't finished their time slice, and order the result appropriately. Then run jobs in order until CPUs are filled. Simpler and clearer than the old way.

= client: fix compiler warning

____________
BOINC blog

MarkJ
Volunteer moderator
Volunteer tester
Send message
Joined: 24 Dec 08
Posts: 738
Credit: 200,909,904
RAC: 0
Level
Leu
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 9324 - Posted: 5 May 2009 | 9:33:35 UTC

Don't bother guys. It doesn't work.

It won't start new cuda tasks, they just sit there with a "waiting to run" status. No good for GPUgrid, but might be okay for cpu-only users.
____________
BOINC blog

Profile rebirther
Avatar
Send message
Joined: 7 Jul 07
Posts: 53
Credit: 3,048,781
RAC: 0
Level
Ala
Scientific publications
watwatwatwatwat
Message 9326 - Posted: 5 May 2009 | 10:30:07 UTC - in response to Message 9324.

Don't bother guys. It doesn't work.

It won't start new cuda tasks, they just sit there with a "waiting to run" status. No good for GPUgrid, but might be okay for cpu-only users.


Will be fixed in the next version ;)

Profile The Gas Giant
Avatar
Send message
Joined: 20 Sep 08
Posts: 54
Credit: 607,157
RAC: 0
Level
Gly
Scientific publications
watwatwatwat
Message 9327 - Posted: 5 May 2009 | 10:42:30 UTC - in response to Message 9326.

Don't bother guys. It doesn't work.

It won't start new cuda tasks, they just sit there with a "waiting to run" status. No good for GPUgrid, but might be okay for cpu-only users.


Will be fixed in the next version ;)

Always will be....

Profile Paul D. Buck
Send message
Joined: 9 Jun 08
Posts: 1050
Credit: 37,321,185
RAC: 0
Level
Val
Scientific publications
watwatwatwatwatwatwatwatwatwat
Message 9328 - Posted: 5 May 2009 | 10:42:44 UTC - in response to Message 9324.
Last modified: 5 May 2009 | 10:43:58 UTC

Don't bother guys. It doesn't work.

It won't start new cuda tasks, they just sit there with a "waiting to run" status. No good for GPUgrid, but might be okay for cpu-only users.

Dr. A says he might have a fix checked in. If He does it does not show up in the repository anyplace I can find it. THe last fix entered into Trunk breaks cpu_scheduler.cpp and I posted a note about it. SOmehow removing a definition of a variable prevents compilation. Looking at the latest changes it is worse ... sigh ...

That is I did find the latest changes and it is worse. The good news is that he has completely managed to avoid the one line fix I suggested for a complete rewrite of the logic, again ...

Profile Paul D. Buck
Send message
Joined: 9 Jun 08
Posts: 1050
Credit: 37,321,185
RAC: 0
Level
Val
Scientific publications
watwatwatwatwatwatwatwatwatwat
Message 9330 - Posted: 5 May 2009 | 10:53:01 UTC

Changes for 6.6.27

- removed outdated translation files; updated template
- client: view 2 GPUs as equivalent if their memory differs by <30%. (maybe their memory differed slightly from the most capable one)
- client: simplify enforce_schedule(), and maybe fix bugs.
New approach: take the "ordered_schedule_results" list, add running jobs that haven't finished their time slice, and order the result appropriately. Then run jobs in order until CPUs are filled. Simpler and clearer than the old way.

= client: fix compiler warning

=============
I lso noted that the limits on the memory are 1.4 * and 0.7 * the other systems. Sounds to me like a 40% leeway one way and 30% the other. Someone explained that those are something to do with sqquare root of 2 which is all well and good but has nothing to do with the setting of a 30% limit ...

MarkJ
Volunteer moderator
Volunteer tester
Send message
Joined: 24 Dec 08
Posts: 738
Credit: 200,909,904
RAC: 0
Level
Leu
Scientific publications
watwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwatwat
Message 9332 - Posted: 5 May 2009 | 11:29:29 UTC - in response to Message 9330.

Changes for 6.6.27

- removed outdated translation files; updated template
- client: view 2 GPUs as equivalent if their memory differs by <30%. (maybe their memory differed slightly from the most capable one)
- client: simplify enforce_schedule(), and maybe fix bugs.
New approach: take the "ordered_schedule_results" list, add running jobs that haven't finished their time slice, and order the result appropriately. Then run jobs in order until CPUs are filled. Simpler and clearer than the old way.

= client: fix compiler warning

=============
I lso noted that the limits on the memory are 1.4 * and 0.7 * the other systems. Sounds to me like a 40% leeway one way and 30% the other. Someone explained that those are something to do with sqquare root of 2 which is all well and good but has nothing to do with the setting of a 30% limit ...


And I thought it was 64k between them.

Geez they make life hard for themselves...
____________
BOINC blog

Profile Paul D. Buck
Send message
Joined: 9 Jun 08
Posts: 1050
Credit: 37,321,185
RAC: 0
Level
Val
Scientific publications
watwatwatwatwatwatwatwatwatwat
Message 9337 - Posted: 5 May 2009 | 17:04:48 UTC

Yes, well, now I am told that 1/0.7 is 1.42 ... which is true ... but when I went to math class I could have sworn that 130% of something was found by multiplying it by 1.3 ...

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 9345 - Posted: 5 May 2009 | 21:06:11 UTC - in response to Message 9337.

Are they making fun of you? Telling you how the rules of math have changed since you visited this establishment?

MrS
____________
Scanning for our furry friends since Jan 2002

Profile Paul D. Buck
Send message
Joined: 9 Jun 08
Posts: 1050
Credit: 37,321,185
RAC: 0
Level
Val
Scientific publications
watwatwatwatwatwatwatwatwatwat
Message 9356 - Posted: 6 May 2009 | 1:44:22 UTC

Are they making fun of you? Telling you how the rules of math have changed since you visited this establishment?

More trying desperately to avoid the situation where someone has to admit that I might be correct about something, anything, no matter how small. That cannot be tolerated publicly...

Well, here is the thread:

Me:
In the change set 17987 there is a new "loose" definition which is 1.4
and .7 of each other. If the definition is 30% should that not be 1.3
and 0.7?


Reply:
Those numbers are approximations to sqrt(2) and 1/sqrt(2) respectively.


Me:
Well, if I read the notes correctly the range was intended to be 30%,

Not sure how the square root of two got in there ...

But the way I read the tolerances it is/ or was based on this code 40%
in one direction and 30% in the other. If that is what is intended
that is fine but then the comment is wrong. Either way, the way *I*
was trained if the comments don't match the code and/or the code does
not match the comment there is an issue. Maintainability if nothing
else ...


Reply:
1/0.7 is 1.42


Me:
Yes, and somehow that is related to the square root of two. Someone
already said that too.

But, being simple minded and all that I sat down with my pocket
calculator and the memory allocation for one of my cards:

That card has:

939,261,952 bytes of RAM

939,261,952 * 1.4 = 1,314,966,732.8
1,314,966,732.8 - 939,261,952 = 375,704,780.8

939,261,952 * 0.7 = 657,483,366.4
939,196,416 - 657,483,366.4 = 281,778,585.6

I don't know clever math like you guys, but what I see is that the
limits are not at all equal.

But if i multiply by 1.3

939,261,952 * 1.3 = 1221040537.6
1221040537.6 - 939,261,952 = 281,778,585.6

Which strangely enough looks like the same as when I multiply by 0.7

If unequal margins are what is desired, fine, then the documentation
should say so.


Reply:
How about :
939,261,952 * 1.4 * 0.7. the answer is not quite back to the same, but
it is close.


Me:
I imagine so, 70% of 140% is close ...

But that is not what we are trying to do...

Try this,

70% of 100 = 70
100 - 70 = 30

100 + 30 = 130
100 * 1.3 = 130

100% minus 30% = 70%
100% plus 30% = 130%

If you want the limit to be 30% plus or minus then you multiply by 1.3
and 0.7
if you want it to be plus 40% and minus 30% then you use the limits
chosen.

But then you cannot say that the limit is plus or minus 30% ...

If our limits are exact, then the numbers will be exact.


Reply:
Should IsEquivalent( x, y) return the same result as IsEquivalent(y,x)? If
you use .7 and 1.4 they do most of the time, if you use .7 and 1.3, they
don't.


For anyone that thinks that I exaggerate for effect, here is a thread where at least two people are trying to tell me down is up, and up is sideways all to avoid the possibility of admitting that I might have been right about even the smallest little detail.

The BOINC Alpha mailing list is open if you want to validate the accuracy of my reporting. I would even wager, no, not googled and you have to snake about to get to the mailing lists, but doable if you persevere.

I don't know why they can't agree, make the change and move on ... this not something that I would start a victory dance over. Heck, all I want is for BOINC to work, and work well ... the fact that I point out its flaws is only so that they can be fixed. Just like here, I point to the tasks that are a problem, not to get accolades or to find fault, but that the project can improve. I do it for any number of alpha class projects ...

Heck, I even had a civil discussion over at Aqua that if their tasks go to 100+ hours per why I would stop contributing if they don't use trickle reporting. They did go there, they didn't start using trickles and I stopped contributing. Do that here, and likely I will rinse and repeat ... :)

Scott Brown
Send message
Joined: 21 Oct 08
Posts: 144
Credit: 2,973,555
RAC: 0
Level
Ala
Scientific publications
watwatwatwatwatwat
Message 9378 - Posted: 6 May 2009 | 12:50:27 UTC - in response to Message 9356.

Paul,

For the record...I am on your side as I firmly think that the BOINC developers really don't care for critical input, especially yours which is always worth considering and mostly correct.

That said, in this case, they are correct. The logic that you are using would work if we are dealing with a completely symmetrical system. Proportions (percentages, odds, etc.) are, however, asymmetrical because of differential bounding. One cannot have negative proportions since proportions are bounded by zero, but in the positive direction, the bound is infinity. A simple example can demonstrate how this works:

Assume 512mb of memory. A 30% lower bound would equal 512 multiplied by 0.7 = 358.4. But to get the same bound when starting from 358.4, one cannot multiply by 1.3 (yields about 465), but rather one must multiply by the 1.42 (rounded) figure which will yield the 512 needed.


Scott

Profile Paul D. Buck
Send message
Joined: 9 Jun 08
Posts: 1050
Credit: 37,321,185
RAC: 0
Level
Val
Scientific publications
watwatwatwatwatwatwatwatwatwat
Message 9397 - Posted: 6 May 2009 | 20:49:59 UTC - in response to Message 9378.

For the record...I am on your side as I firmly think that the BOINC developers really don't care for critical input, especially yours which is always worth considering and mostly correct.

If it were just me one could just smile and move on. But, it is pretty endemic. I am not sure how to get into good graces, but there are few that seem to be able to have their input considered. I know that there can be other chit-chat that I am not privy to that may be seriously considering what I am saying, or others are saying, but, the public discussions are always such that it does not seem so. WOrse, is that the actions are such that few of these external ideas are allowed into the code base ...

That said, in this case, they are correct. The logic that you are using would work if we are dealing with a completely symmetrical system. Proportions (percentages, odds, etc.) are, however, asymmetrical because of differential bounding. One cannot have negative proportions since proportions are bounded by zero, but in the positive direction, the bound is infinity. A simple example can demonstrate how this works:

If we were near one of those limits I would agree. For example there is a hard limit at 0 that we cannot cross in this instance. But when we start with a positive value and then say we want a margin plus or minus around that positive value and that margin is less than 100%, we will not cross the zero boundary.

Assume 512mb of memory. A 30% lower bound would equal 512 multiplied by 0.7 = 358.4. But to get the same bound when starting from 358.4, one cannot multiply by 1.3 (yields about 465), but rather one must multiply by the 1.42 (rounded) figure which will yield the 512 needed.

And here I think you are making the same mistake JM VII did but in the other direction ...

70% of 140% is what he suggested. You are doing 142% of 70% going in the opposite direction.

Trust me on this, as an guy that spent 30+ years in electronics engineering and electronics maintenance I am well aware of tolerances and how they SHOULD be calculated. You do not calculate the upper bound from the lower bound any more than you calculate the lower bound from the upper. You calculate both from the center value. In this case 512 M ...

And a plus 30% margin means you find 30% of 512 and add it to 512 (1.3 * 512) ... a 30% minus margin means you find 30% of 512 and subtract it from 512 (0.7 * 512) ... what the relationship of the lower bound is to the upper bound is irrelevant to this discussion. THe question is what is the + or - AROUND the central value, in this case 512M ...

But the discussion is moot, Dr. Anderson is not going to make the change, if for no other reason than that I suggested it. So we have a plus tolerance of 40% and a minus tolerance of 30% ... fundamentally it really makes little practical difference other than the fact that the comment does not match the code and that they do not use a common single factor to set the tolerance so that the value can be changed in a single place.

In fact the whole use of multipliers is not correct. It should be TOL= x * tolerance percentage and then if y + TOL and if y - TOL to be perfectly correct.

But I do see your point, if you swap viewpoints is card 2 within 30% of card 1 and is card 1 in 140% of card 2 ... but that is not supposed to be the question. It is supposed to be is card 2 in plus or minus of card 1 ...

Scott Brown
Send message
Joined: 21 Oct 08
Posts: 144
Credit: 2,973,555
RAC: 0
Level
Ala
Scientific publications
watwatwatwatwatwat
Message 9479 - Posted: 8 May 2009 | 16:02:14 UTC - in response to Message 9397.

...But I do see your point, if you swap viewpoints is card 2 within 30% of card 1 and is card 1 in 140% of card 2 ... but that is not supposed to be the question. It is supposed to be is card 2 in plus or minus of card 1 ...


Well, the limit does not really matter here, since it is a basic mathematical property, but you have "hit the nail on the head" in that the question being solved has not clearly been stated.

If clearly stated, then all of the above is wrong. Given a finite set of cards in any given machine (and especially the 2 card scenario being used as an example), there is never a need to calculate an upper bound. One should simply take the card with highest value (say the 512mb card) and calculate the 70% lower bound to see if the second card has less than that threshold. If not less, it is necessarily within the 30%.

All of this ignores the issues when attempting to use 3 or more cards. If one had three cards such that each has different memory (say 9600GSO's with 384mb, 512mb, and 1GB--the first would have 96 shaders, the other two would have 48 shaders each), the current logic would exclude the 384mb card despite the fact that it is the best cruncher of the three. Even the 2 card scenario could produce equally ridiculous logic (e.g., a 512mb 9800GT being excluded when a 1GB 9800GT is added to the system, etc.).

Basically, (as you and others have stated in various forms previously) this is really just a dumb idea.

Profile Paul D. Buck
Send message
Joined: 9 Jun 08
Posts: 1050
Credit: 37,321,185
RAC: 0
Level
Val
Scientific publications
watwatwatwatwatwatwatwatwatwat
Message 9498 - Posted: 9 May 2009 | 3:00:48 UTC - in response to Message 9479.

All of this ignores the issues when attempting to use 3 or more cards. If one had three cards such that each has different memory (say 9600GSO's with 384mb, 512mb, and 1GB--the first would have 96 shaders, the other two would have 48 shaders each), the current logic would exclude the 384mb card despite the fact that it is the best cruncher of the three. Even the 2 card scenario could produce equally ridiculous logic (e.g., a 512mb 9800GT being excluded when a 1GB 9800GT is added to the system, etc.).

Basically, (as you and others have stated in various forms previously) this is really just a dumb idea.

More importantly it begs the question of scheduling work on the cards. In one scenario the system would, as it does now, blindly assign the tasks to the cards and let the chips fall where they may.

A smarter way would be to test to see if the work could be completed if it were run on the cards in a sequence, 30% on the slowest card, then 30% on the next card up and so on... or if there are two projects if the cards could be usefully allocated better to support the individual projects. Currently SaH and GPU Grid, again, here the consideration would be to run GPU Grid as much as possible on the "faster" and more capable cards and SaH on the slower and less capable.

OF course, we are not, as far as i can tell, considering this as an option.

Even as I consider a new system which will probably be an i7 I have and ATI GPU and 9800GT cards in the systems to retire. And in the Q9300 a GTX280 ... which I could pull because that MB only supports one GPU to become the home for the ATI card. The new i7 I will probably try to get 1-3 GTX295 cards meaning I could still find myself using the GTX280 and 9800 GT for some little time in the new system until I can get a total of 4 GTX 295 cards.

Rinse and repeat for the next system that will replace the Q9300 ... though now I would be considering getting ATI GPUs to fill out the dance card ... :)

But, that is the point. GPUs are going to be a non-orthogonal computing resource and we need to adapt to that fact.

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 9550 - Posted: 9 May 2009 | 14:42:57 UTC - in response to Message 9479.

but you have "hit the nail on the head" in that the question being solved has not clearly been stated.


I'd put it this way: their method answers a question which was not being asked (by the comment).

Really, it would almost be funny, if it wouldn't affect us all: I easily got Pauls point, but they didn't seem to. They kept explaining their idea, which I didn't get until Scott explained it easily:

Assume 512mb of memory. A 30% lower bound would equal 512 multiplied by 0.7 = 358.4. But to get the same bound when starting from 358.4, one cannot multiply by 1.3 (yields about 465), but rather one must multiply by the 1.42 (rounded) figure which will yield the 512 needed.


Didn't they realize that this does not match the comment? Or if they think so, that it likely will be misunderstood? It's.. strange. How can communication be so bad?

Basically, (as you and others have stated in various forms previously) this is really just a dumb idea.


Definitely!

The world of Co-processors is going to be much too diverse for such stupid and restrictive rules. Projects have to define which kind of computing ressource they need and the BOINC clients have to understand this and have to figure out which of their co-processors are useful for which project.
Taking speed into account would make things quite complicated.. I don't think we can get around some manual settings here. (e.g. "my NV GPU is not allowed to run MW, because its performance sucks there, but the ATI is fine")

MrS
____________
Scanning for our furry friends since Jan 2002

Post to thread

Message boards : Graphics cards (GPUs) : BOINC 6.6.27 is out

//