Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: good MP idea?

Author: Robert Hyatt

Date: 13:53:55 07/31/98

Go up one level in this thread


On July 31, 1998 at 08:05:04, Tom Kerrigan wrote:

>Would this work on modern computers?
>IE, 400 MHz processors with lots of cache?
>Seems to me like cache coherency would be a big deal.
>
>-Tom

remember... it is already being done.  I've been chatting with a guy up at
SGI who is getting this to run on a 256 processor machine...  There are lots
of ways to handle cache coherency issues, from bus snooping (on bus
architectures) to dedicated busses for cache controller communication only...
non-trivial and non-cheap, but solutions.  :)  IE think about my ALR with 4
processors... same issue with L2 a L1 caches for each cpu...




>
>On July 30, 1998 at 20:28:10, Robert Hyatt wrote:
>
>>On July 30, 1998 at 17:17:05, Tom Kerrigan wrote:
>>
>>>Memory isn't fast enough to divide up processors by function (e.g., move
>>>generation, etc.). It wouldn't make the program any faster.
>>>
>>>Cheers,
>>>Tom
>>
>>actually it is.  In fact, this is how "hitech" works... one processor
>>per chess board square in fact.  And others have played with generating
>>moves in parallel, evaluating in parallel, etc.  Where it breaks down is
>>once you pass 4 or 8 processors.  IE generating moves with 512 processors
>>would be problematic since there are *never* 512 moves to generate, for
>>example.  Scalability becomes a serious drawback when you try what is
>>commonly called "horizontal multiprocessing" (assuming the tree is a
>>vertical entity, horizontal means dividing a single node up into pieces,
>>rather than splitting the tree into "vertical slices" and searching each
>>part in parallal as I do).
>>
>> On July 30, 1998 at 16:39:00, Danniel Corbit wrote:
>>>
>>>>On July 30, 1998 at 14:46:46, Tom Kerrigan wrote:
>>>>
>>>>>I was just thinking, what if a chess engine was contained in a C++ class?
>>>>>It would have a function that starts a little loop that waits for work. When it
>>>>>gets work, it starts searching.
>>>>>To use it, you make a thread out of this function.
>>>>>Then, when you want to write an MP program, you make several copies of this
>>>>>class and several threads running the respective loops.
>>>>>The threads, being contained in the classes, don't bother each other, except to
>>>>>request work.
>>>>>Comments? Suggestions?
>>>>I think it is a very good idea, but I might scale it down a bit.  For instance,
>>>>make the class be a move generator.  Make another class that is a position
>>>>evaluator.  The hardest part will be to write the coordinator so that no work is
>>>>duplicated and so that resultsare properly synchronized.



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.