Stockfish still scales poorly?

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Stockfish still scales poorly?

Post by bob »

Dann Corbit wrote:
bob wrote:
Dann Corbit wrote:
syzygy wrote:
Dann Corbit wrote:The current state of analysis is sent to some central hub decision maker node.

The time allotted for each thread is one hour.

Now, some period into the search, our hub can see that 45 of the threads are faring very badly as to the score of the search from our {side to move} point of view.

The hub can now tell those 45 threads to work on something else.
Serial alpha-beta does that, but much more efficiently.
If the pv thread is doing a normal aspiration search and all the other threads are doing zero window searches, in what way is the normal serial search more efficient?
Do you agree that the parallel version doing this will be much easier to write?
No. I'm sorry, but what you are proposing cannot even be called an idea. I think Bob picked a good word when he said mystical.
The zero-window searches know the CORRECT aspiration window. The way you are doing it, you do not. That's why YBW works, you get the correct lower bound from the first move before searching all the others...
Aspiration windows are arbitrary estimates which can very possibly be improved by information from multiple parallel sources.

It is the base search that needs an aspiration window.

The zero window searches only need a single number (alpha) because by definition they are one unit wide.
value = PVS(-(alpha+1),-alpha)
If the search exceeds alpha, then we will need beta.
Alpha and beta themselves are only arbitrary estimates and are almost never the true values but are only the best possible estimates based on current and previous searches.
At any point in time, we can collect a best possible estimate for alpha and beta from all of the threads that are performing the search in some area of shared memory. It seems to me that we can form a much better estimate in this way. Of course, the estimate will vary over time and the search will be less deterministic and therefore much harder to debug.
Wrong. Alpha is defined by the score returned from the FIRST move searched at the root. That's why you don't want to search other moves in parallel at the root (or any other ply in fact) until the first move at any ply has been completely searched. You MUST have that alpha bound before searching the other moves, else those searches could fail low when they should not, or fail high when they should not, etc.