Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Zappa @ CCT6 (would be interested to see some other engines here)

Author: Robert Hyatt

Date: 11:28:27 02/02/04

Go up one level in this thread


On February 02, 2004 at 13:55:55, Tord Romstad wrote:

>On February 02, 2004 at 13:50:36, Robert Hyatt wrote:
>
>>waiting a little longer finds
>>
>>               17     7:43   1.95   1. Nd4 Qc5 2. R1e6 Rb7 3. Rxb7 Nxb7
>>                                    4. Rc6 Qe7 5. Rc7 Qd6 6. Nc6 Qxf4 7.
>>                                    gxf4 Kh8 8. Ne7 Nd6 9. Rc6 Rd8 10.
>>                                    Rxd6 Rxd6 11. Nxc8 (s=4)
>
>Very fast.  Is this on the quad Opteron, or a slower machine?  What does
>the "(s=4)" at the end of the PV mean?
>
>Tord


Sorry, I had meant to mention that.  Yes, it was the quad opteron.

s=4 is part of my "split at the root" algorithm.  Crafty noticed that four moves
(s=4) had an unusually close node count after the 16 ply search finished (it
actually said s=5 there).  This says that it is possible that one of these moves
is going to replace the current best on the next ply, since usually the real
best move has a far higher node count due to alpha/beta.

If you choose to split at the root (ie search each move at ply=1 on a separate
processor, which is _the_ most efficient way to do a parallel search) then you
run into a problem when you get one cpu to searching a move that is going to
become the new best, because that one cpu might take a long time to get the
result, where it would get it 3-4 times faster if all cpus worked together.

So, when you see s=N after an iteration, that says that on the next iteration,
the first N moves are searched one at a time, using all available processors, in
the expectation that one of them will replace the first move as best, and this
will discover that quicker.  After the first N are searched one at a time using
all threads, the rest are searched in parallel one thread per move, as that is
more efficient when you don't expect to change the best move.

Hope that helps.  I'm going to write all of this up and publish it before long,
although I am not sure there is any interest in determining how such a bad
parallel search works internally.  :)

BTW, after each root move is searched, if it produces any output, I simply
append the s=N to that move, although N steadily decreases and simply says "I
have N more moves to search one at a time before turning the SMP search loose at
the root.  The N=4 above is one less than the s=5 displayed at the end of the
previous search (which I apparently snipped to save space)..

Here's a better example:

                9->   0.92  -1.44   10. ... O-O 11. h3 Qd7 12. Bc4 e4 13.
                                    Ng5 Ne5 14. Bb5 Qf5 (s=6)
               10     1.18  -1.20   10. ... O-O 11. h3 Qe6 12. Bd3 h6 13.
                                    Nd2 Re8 14. Rhf1 Nd5 15. Bc4 (s=5)
               10     2.41  -1.26   10. ... e4 11. Nb5 exf3 12. Rxd6 cxd6
                                    13. Nc7+ Kd8 14. Nxa8 fxg2 15. Bxg2
                                    Ne4 16. Qf1 Rf8 (s=4)

Notice after 9, s=6.  After searching the first move, s=5.  The next move is
also searched with all threads and it replaces the original best, as expected.
Note s=4 as there are still four _more_ moves that might become new best moves,
although in this case it did not happen...

Bob



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.