Computer Chess Club Archives




Subject: Re: Parallel algorithms in chess programming

Author: Eugene Nalimov

Date: 20:14:45 04/16/01

Go up one level in this thread

On April 16, 2001 at 23:06:55, Robert Hyatt wrote:

>On April 16, 2001 at 22:53:34, Eugene Nalimov wrote:
>>On April 16, 2001 at 22:07:10, Robert Hyatt wrote:
>>>On April 16, 2001 at 18:15:52, Dieter Buerssner wrote:
>>>>In a different discussion, Vincent wrote the following:
>>>>>It is not difficult to implement the form of parallellism as used by
>>>>>Rudolf. Invented by a frenchman who couldn't spell a word english and
>>>>>who wrote an impossible article for JICCA (did anyone proofread it at
>>>>>the time as i'm pretty sure they didn't get his parallel idea?).
>>>>>At the time when i read the article i was pathetically laughing about it
>>>>>actually as i also didn't get the idea of the frenchman. But it appears
>>>>>everyone who can make a chessprogram work under win2000 can also get
>>>>>within an afternoon his program parallel to work. Then some debugging
>>>>>and a day later it works cool.
>>>>I'd be very interested in this algorithm, that can be implemented at an
>>>>afternoon :-)
>>>>Could you point elaborate on this.
>>>>BTW. In Paderborn, Roland Pfister also told me, that he knows this from Rudolf
>>>>Huber, and he even started to explain it to me. Somhow, we (or me) got
>>>>distracted, and I cannot remember the essential things.
>>>>What I remember is, that the time consuming work, of making your
>>>>search/evaluation routines free from all those global variables is not needed.
>>>Global variables will _always_ be a problem.  Unless you avoid threads
>>>altogether and use separate processes.  But then you incur other penalties
>>>you have to solve...
>>Visual C allows you to declare the global variable as "thread-specific", i.e.
>>each thread will have its own copy of the variable. Compiler generates special
>>code to access such a variables.
>Many machines have a variant of this.  On the Cray, we had global variables
>in FORTRAN via a "common" statement.  They added "task common" which were
>global but thread-specific.
>I do the same thing via pointers in normal C.  A thread-specific (local) pointer
>that points to a global area that is allocated to a specific thread for its
>exclusive use...
>But any such thing causes syntacical changes and lots of debugging...

My point was that it's not necessary to introduce a lot of syntax changes. I
belive that changing several declarations is not a large change by any standard.
Or (in C++) you can wrap your functions in a class, thus avoiding necessity to
change each *use* of the variable.

Debugging parallel search is other issue, of course...


This page took 0.01 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

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