Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Deep Blue afterthoughts

Author: Guido Schimmels

Date: 07:47:17 05/12/98

Go up one level in this thread


On May 11, 1998 at 15:11:14, Vincent Diepeveen wrote:

>
>On May 11, 1998 at 11:47:08, Robert Hyatt wrote:
>
>>On May 11, 1998 at 10:20:27, Vincent Diepeveen wrote:
>>
>>>
>>>On May 11, 1998 at 09:06:05, Guido Schimmels wrote:
>>>
>>>>>The only addition I would make to this report is a remark on the odd
>>>>>nature of the PV for Qb6 at ply 10. GM Ronen Har-Zvi pointed out to me
>>>>>that the move Qa7 in this PV is a simple blunder. How such a move can
>>>>>appear in a PV is just one more mystery.
>>>>
>>>>The DB outputs of game 2 you've presented here, have already been
>>>>discussed
>>>>in an issue of the german magazine "CSS" quite some time ago.
>>>>The author says, DB does not propagate the PV from the leaves to
>>>>the root, as most PC-programs do. In order to save time, DB simply
>>>>looks up the PV in the hashtable, which he thinks explains for some
>>>>weird PV's.
>>>
>>>I'm doing this to: i only look in the hashtable. You get exactly
>>>the same PV. the 2 advantages are:
>>>  -it is faster
>>> - sometimes you get a little longer PV because of transpositions that
>>>   extend your PV.
>>>>Guido
>>
>>
>>No you don't get "exactly the same PV".  Often you get one *much
>>shorter*
>>because a critical PV node was overwritten by something that was
>>searched
>>later.
>>  That is *the* problem with using the TT for PV moves...  Unless
>>you
>>either search very slowly or have a huge TT so you never have to replace
>>anything...
>
>>Backing it up from the tips is much more reliable, but DB can't do this
>>because the hardware doesn't have a way to pass back a variable amount
>>of
>>information.. just best move and best score...  The software search can
>>back up a PV, but when they hit the hardware part, it stops...
>
>Correct when they hit the hardware then it stops.
>So assuming 32 processors which each search 4 ply, then
>how much nodes do we get when we search say 14 ply?
>
>I think you can store these tuples quite easily in few gigabyte RAM.
>You might even want to hand count them.
>
>So there loading factor is very low. If they additional have a say 8
>probe or more,
>then they're doing much better than my program.
>
>Because after few hours of search with 8 probe i still get a long PV
>which
>is at least as long as the pv backed up by arrays would be. In fact it
>sometimes is longer.
>
>If you DON'T get the same PV because of TT overwrite then there is a
>bug in your 8 probe. Perhaps there are even more bugs in your program
>then.
>
>Because the depth of the PV is always as big or bigger than the tuple
>that would replace it.
>
>The chance that it gets replaced is so terrible little.
>
>It can happen when you use nullmove that you get the same position
>at a lower depth and cannot give a cutoff. This can take care that if
>there is
>a bug in your hashtable which causes an overwrite that a stupid move
>gets stored, because it was a nullmove, so the scores you got back
>indicate that the most stupid move was in fact good as the opponent
>ply after it nullmoved also.
>However DB doesn't use nullmove, so the only scenario which can
>disturb PV's doesn't work for them.
>
>Now in Diep i do use nullmove, and the better my search is beyond the
>PV the better the PV.
>
>When we look to DB out put, then we see clearly some stupid moves
>near the leafs.
>
>This means that after that move their search was kind of silly causing
>that
>move to come into the hashtable.
>
>Vincent.

Vincent, I agree with you, if DB was a single-CPU system, reconstructing
the PV from hash as not beeing critical. I do this as well. I do not
even
have any problems with part of the PV getting overwritten, which you
have
been discussing with Bob. I use an enhanced version of the Belle/Crafty
hashing approach, where I have three kind of tables:

1. depth-priority-replacement (8 byte/entry)
2. always-replace (8 byte/entry)
3. PV-table (16 byte/entry)

The 8-byte record works this way:
 32-bit key
  9-bit move
 15-bit score
  6-bit depth
  1-bit flag (upper_bound/lower_bound)
  1-bit age

At the beginning of the search I do as follows:
CopyPVTableToTT();
ClearPVTable();
pv_count = 0;

Storing of TRUE-nodes into the depth-priority-table:
table->key = key; /* 32-bit */
table->depth = 63 /* 63 == max_depth+3 */
table->score = pv_count;
pvtable[pv_count]->address = hash_address; /* 32-bit */
pvtable[pv_count]->key = hash_key; /* 32-bit */
pvtable[pv_count]->score = score;
pvtable[pv_count]->mv = bestmove;
pvtable[pv_count]->depth = depth;
++pv_count;

Retrievial:
if(table->key == key) {
 if(table->depth == 63) { /* true */}
 else {
  if(table->flag) {/* upper_bound */}
  else {/* lower_bound */}
 }
}
(My real code looks a lot different than this of course, but for
the sake of simplicity I didn't show all the shifting and masking here)

As I use PVS, the PV-table can be very very small.
This method has some more advantages. The PV-table does hold
every position that was 'true' at least one time during the search.
Normally when you revisit a true-node and it fails high/low then, you
loose this information. But this information is of high value, you
can do a lot of things with it.

Ok Vincent, but now back to Deep Blue.
DB's search/hashing is much different. The 512 ASICs are distributed to
32
boards, each containing 16 of them plus an additional RISC-CPU at 120
mhz.
(AFAIK)
I don't know, how the boards/RISC-CPU's manage the hashing (one big
table
or 32 small tables), I have no kind of experience at parallel computing
anyway, but the complexity of DB might explain a lot of things that look
strange to us PC-programers.

PS:
I'm not defending IBM here.
I'm not very happy about the circumstances of the match - to say the
least.
Nor I'm happy about the way IBM has behaved since then.
I don't want to be naive, but the way IBM is exploiting their success
upsets
me a lot.
When I read in computer-magazines:
'Deep Blue is currently doing some molecular engineering',
I don't know how I should call this. They are fooling the public.

What is the sence of life, the universe and all the rest ?
Deep Thought: 42 !

What is the sequence of a protein katalyzing the synthesis of alcohol ?
Deep Blue:    e4 !


'You may call this cheating, but I can impossibly comment on that'
(Francis Urquart, 'House of Cards' (freely citated))

Guido



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.