Laskos wrote:bob wrote:
I find it amusing you demand high accuracy from an approximation. Pretty irrational thinking, in fact.
1/ Approximation is as good as its accuracy goes. If you don't require _some _ (higher is better) accuracy, that's not approximation, it's shamanism.
2/ You miss the asymptotic behavior of the approximation, which is pretty un-scientifical. My advice for effective speed-up of SMP: 1+a*log(Ncpus), or, with more data . With the main lesson that the asymptotic behavior is logarithmic with the number of cores.
If you want an exact number, only way to produce it is to actually run the tests. An approximation is used to avoid the work.
"Exact" doesn't exist in SMP, it's time dependent, engine dependent, hardware dependent, etc.
Feel free to do exactly what I have done in the past, namely run several hundred positions, several dozen times each, with 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 processors, and then compute the average speedup for each test. Then show me the gross inaccuracy in my formula. It should be easy to do, if you are correct. Or if others are correct, you might find that that formula is a little optimistic, or a little pessimistic. You won't find it grossly inaccurate.
I could care less about how the formula extrapolates out to an infinite number of processors. I have NEVER claimed it is accurate beyond 16, in fact, although it looked reasonably accurate with a few 32 cpu tests, and a very small number of tests beyond that.
Grow up. Given my past statements, the formula works well. Just because you see something illogical when you take the limit as cores -> infinity doesn't mean a thing. It was not intended to be used with cores > 16, and I have always clearly stated so. Ergo, it does EXACTLY what was intended, using the simplest calculation possible so that it can be done in your head.
I actually use
speedup = N - (N-1)*0.3 which is quite easy to compute and which gives a pretty good ball-park number.
For my formula, for 8 cores, one gets either
1 + (N-1)*0.7 ==
1 + 7 * 0.7 ==
1 + 4.9 ~=
6.0
For yours, you gave
a + b*log(Ncpus + c)
what is a, b and c?
what is log(Ncpus + c) (in your head, since this is a simple approximation). Etc.
I'll take mine any day...