Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Experimentation with move ordering

Author: Eugene Nalimov

Date: 17:00:47 11/28/00

Go up one level in this thread


On November 28, 2000 at 18:20:01, Will Singleton wrote:

>On November 28, 2000 at 16:06:11, Bruce Moreland wrote:
>
>>On November 28, 2000 at 14:06:27, Andrew Williams wrote:
>>
>>>On November 28, 2000 at 12:52:57, Scott Gasch wrote:
>>>
>>>>Hi,
>>>>
>>>>I posted a couple of messages about move ordering yesterday and wanted to share
>>>>some results from my (limited) testing.  I ended up implementing the suggested
>>>>"apparently losing captures" (MVV/LVA) after all others order.  In one test
>>>>position this resulted in a tree 200k nodes larger at 8 ply but in two others it
>>>>resulted in a marginally smaller (under 40k nodes) tree at 8 ply.  I will do
>>>>more testing on this matter but it may be a moot point because I intend to write
>>>>a SEE pretty soon.
>>>>
>>>>I also did some experimenting with ordering captures that take the last moved
>>>>enemy piece.  At low search depth this seems to make some difference but at
>>>>higher depth this heuristic actually grew the tree in all three test positions > I tried.
>>>>
>>>>I also did some playing with history weight and settled on hist[x][y] += (2 <<
>>>>depth).
>>>
>>>I use history[whoseTurn][frsq][tosq] += (depthremaining*depthremaining)
>>>I have a separate table for white and black. Every few plies I divide
>>>this number back by a lot (can't remember how much or how often).
>>
>>Why does everyone think that a move that cuts off after a deep search is more
>>likely to produce cutoffs elsewhere in the tree, than one that cuts off after a
>>shallow search?
>>
>>That multiplication is expensive.  Does it achieve anything?
>>
>>bruce
>
>How expensive?  I've got multiplications and divisions all over my program.  I
>never thought it would amount to more than a few nps.
>
>Will

For Itanium, best code sequence for 32-bit multiplication takes 9 clock cycles
(it is produced by MS compiler; Intel compiler's version takes 19 clock cycles).
32-bit division takes 37 cycles. And in the best case Itanium can execute 6
simple instructions per clock cycle (i.e. 2 memory loads, 2 comparisons, and 2
branches).

Of course you can do several divisions/multiplications in parallel, but my guess
it will not help you in the chess engine.

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.