Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Parallel algorithms in chess programming

Author: Tony Werten

Date: 21:25:17 04/17/01

Go up one level in this thread


On April 17, 2001 at 16:14:02, José Carlos wrote:

>On April 17, 2001 at 15:16:46, Tony Werten wrote:
>
>>On April 17, 2001 at 09:21:42, José Carlos wrote:
>>
>>>On April 17, 2001 at 03:08:42, Tony Werten 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.
>>>>>
>>>>>Regards,
>>>>>Dieter
>>>>
>>>>I haven't tried parallelism yet, but my (very) simple approach would be:
>>>>
>>>>Since my program spends most of its time in eval(), split it in evalblack() and
>>>>evalwhite(). No need for many changes. Haven't got a clue what the speedup would
>>>>be, but it's easy to try.
>>>>
>>>>cheers,
>>>>
>>>>Tony
>>>
>>>  Are you sure you spend most of your time in eval? My problem is inCheck()
>>>since ever. That's where my prog spends most of the time.
>>
>>Then you're doing something wrong.
>>
>>Take the last move. To make it easy: If it's a special move do your normal check
>>code.
>>
>>If it's not look if the fromsquare is a queenmove from the king. If not it
>>cannot be a discovered check else walk from to king in the direction of that
>>square and look if there a checking piece. Stop if blocked.
>>
>>Do the same for the to square.
>
>  I'm trying something like that in my new rewrite, but it's much more
>complicated. Consider en passant captures (which removes an enemy pawn)
>a promotion (which makes a new pice to appear on the board), castling, captures...
>  You must check for _many_ special cases.

No, actually only castle and en passant are special. All the other moves are the
same. A piece disappears of the fromsquare (giving the possibility of discovered
check ) and a piece appears on the tosquare (possibly giving check if the piece
on the square can attack the kingsquare )

It's even easier for checking legal moves (ie not leaving yourself in check) if
you were not in check to start with.

Tony

>  That's my approach now, but I'm really far from finishing it, because the more
>I implement, the further I realize I'm from catching all cases.
>  Anyway, I can very well be wrong, and actually be very close to the end... I
>hope so :)
>
>  José C.
>
>>If this takes more than 5% then it's time to make your evaluationfunction
>>bigger.
>>
>>Tony
>>
>>>  The good thing is that, everytime I want to improve the speed of my program, I
>>>know exactly where to focus on :)
>>>  I suggest you to profile your program to know exactly where the time is spend,
>>>although probably you've already done this.
>>>
>>>  José C.



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.