Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: DTS NUMA

Author: Robert Hyatt

Date: 22:10:49 09/03/02

Go up one level in this thread


On September 03, 2002 at 23:37:31, Vincent Diepeveen wrote:

>On September 03, 2002 at 22:43:03, Robert Hyatt wrote:
>
>>On September 03, 2002 at 19:13:50, Vincent Diepeveen wrote:
>>
>>>On September 03, 2002 at 15:28:03, Eugene Nalimov wrote:
>>>
>>>it all doesn't matter, i don't copy a single byte when splitting.
>>>i just set it to split there and there. that's it.
>>
>>If you don't copy, you share.  That is even worse on NUMA.  :)
>>
>>make up your mind...
>>
>
>i have the last so many plies usually local done all. So those positions
>usually are all already in local memory.
>
>Only splitted alfa beta values will be sometimes in a remote cache lines
>and when one sucha line gets referenced that is a bad luck of a few
>thousands of clocks.
>
>However if we imagine how little splits there are compared to the number
>of nodes and how many clocks each node eats, this is very reasonable loss
>and can be seen as a small lineair penalty.
>
>Obviously a bigger problem is the busy wait. In NT there is a cool
>function called WaitForSingleObject and being multiprocessor, in Unix
>there is not an easy equivalent.
>
>You *have* to suspend by using spin_lock() or whatever usema semaphore
>the processes if they do not search yet (at the start of the search
>obviously). spinning at a variable is not possible as it eats too
>much bandwidth and the hub has just 600MB memory bandwidth a second
>for both the serving of local memory as well as an attempt to get it
>from the SN0 router.
>
>Apart from those 2 small penalties, it is possible to rewrite everything fine
>to NUMA without losses, so it is very easy to have the insight that it is
>possible. It is not each to achieve it of course.


It is not possible, much less not easy.

A memory reference on the cray is just a memory reference, no matter which
processor does it.  There are no NUMA-type penalties.  The cray hardware has
a "spin-lock" facility (a semaphore) which is really just a shared 32 bit
register.  A cpu can test/set any bit and if it is already set, that cpu
stops until the bit is cleared.  No memory references, no bandwidth penalty,
no nothing.  Just a cpu sitting on ready when the bit is cleared.

NUMA simply can't come close to that, unfortunately.

However NUMA is more scalable.  But nowhere near as efficient as a pure
crossbar with _many_ banks compared to the number of cpus...

However, I'm not going to argue about it further.  You will change your mind
soon enough.  You always do.  Last year you declared that "distributed chess
on a cluster was not just hard, but _impossible_ (your word)."  Now you are
declaring "I know how to do it."  That is _so_ typical.  If you can't do it,
it is impossible.  If you later figure out how to do it, it becomes not
impossible again...

You presently have about all the credibility you deserve, IMHO.  Enjoy it...




>
>>
>>>
>>>who needs recursion?
>>>
>>>>Probably I don't understand something, but for me it looks that Crafty copies
>>>>much less than 44k when splitting a tree.
>>>>
>>>>Yes, sizeof(TREE) == 44k. But if you'll look at the function CopyToSMP() in file
>>>>utility.c and count size of the copied data it will be something like 3k.
>>>>
>>>>So, here you miscalculated 15x. I did not read rest of your calculations. You
>>>>are 15x wrong in the first one, why the next ones should be more credible?
>>>>
>>>>Once again: I'd recommend you to replace "it's absolutely impossible" by "for me
>>>>it's absolutely impossible" in your posts.
>>>>
>>>>BTW, I mentioned your so-called "problem" with threads and global variables to
>>>>Andrew Kadatch. In less than 10 seconds he gave *second* solution to the
>>>>"problem", that differs from one I suggested. :-)
>>>>
>>>>Thanks,
>>>>Eugene



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.