LMP in PV nodes

Discussion of chess software programming and technical issues.

Moderator: Ras

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

Re: LMP in PV nodes

Post by bob »

lucasart wrote:Completing the picture with newer tests:

Razoring at PV nodes
http://tests.stockfishchess.org/tests/v ... 5c4de1c0b9
http://tests.stockfishchess.org/tests/v ... 763e075658

Futility + LMP + SEE pruning at PV nodes in search()
http://tests.stockfishchess.org/tests/v ... 28c6bc66fd
http://tests.stockfishchess.org/tests/v ... 26a5666bc6

Futility pruning + SEE pruning at PV nodes in qsearch()
http://tests.stockfishchess.org/tests/v ... 17fe3fc6db
http://tests.stockfishchess.org/tests/v ... 28c6bc6704

Probcut at PV nodes
http://tests.stockfishchess.org/tests/v ... 6d8243c853
http://tests.stockfishchess.org/tests/v ... 5c4de1c0be

Null move pruning at PV nodes
http://tests.stockfishchess.org/tests/v ... 64db6b6d6f
http://tests.stockfishchess.org/tests/v ... 763e07564f

Child node Futility pruning at Root (aka. reverse futility pruning, beta pruning, static null move pruning)
http://tests.stockfishchess.org/tests/v ... 64db6b6d6d
http://tests.stockfishchess.org/tests/v ... 7a947a50bb
Glad to see more evidence that "logic" remains king here. :) I've done a lot of testing myself, but I do not do these 1 second games since I have enough cluster hardware to use 1m + 1s as a minimum test time control anyway. I see no gain whatsoever for treating PV nodes differently, even null-move, although not doing null-move does make sense because it is an illegal move and has to fail low or fail high to avoid an illegal move in the PV...
Michel
Posts: 2292
Joined: Mon Sep 29, 2008 1:50 am

Re: LMP in PV nodes

Post by Michel »

Well it clearly depends on the engine. I just did a quick test in GNU Chess 5.60, enabling both razoring and futility pruning in PV nodes, and it is a total disaster. A loss of at least 12 elo.

Yes I did take the usual beta!=alpha+1 caveats into account.

The time control is 40 moves in 15 seconds.
Ideas=science. Simplification=engineering.
Without ideas there is nothing to simplify.
User avatar
cdani
Posts: 2204
Joined: Sat Jan 18, 2014 10:24 am
Location: Andorra

Re: LMP in PV nodes

Post by cdani »

Michel wrote:Well it clearly depends on the engine. I just did a quick test in GNU Chess 5.60, enabling both razoring and futility pruning in PV nodes, and it is a total disaster. A loss of at least 12 elo.

Yes I did take the usual beta!=alpha+1 caveats into account.

The time control is 40 moves in 15 seconds.
Where are the sources of 5.6? I found this
http://ftp.gnu.org/gnu/chess/
but it says "5.06".
Thanks.
Michel
Posts: 2292
Joined: Mon Sep 29, 2008 1:50 am

Re: LMP in PV nodes

Post by Michel »

Google is your friend!

Anyway here it the link

http://hardy.uhasselt.be/Toga/gnuchess-release/
Ideas=science. Simplification=engineering.
Without ideas there is nothing to simplify.
User avatar
cdani
Posts: 2204
Joined: Sat Jan 18, 2014 10:24 am
Location: Andorra

Re: LMP in PV nodes

Post by cdani »

Michel wrote:Google is your friend!
Sorry, I was unable to find it.

I do razoring before null move. Did you try it?
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: LMP in PV nodes

Post by bob »

cdani wrote:
Michel wrote:Google is your friend!
Sorry, I was unable to find it.

I do razoring before null move. Did you try it?
How would that work? Null move is done BEFORE anything is searched. Razoring applies to moves. I am not sure I understand your idea...
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: LMP in PV nodes

Post by bob »

cdani wrote:
Michel wrote:Google is your friend!
Sorry, I was unable to find it.

I do razoring before null move. Did you try it?
How would that work? Null move is done BEFORE anything is searched. Razoring applies to moves. I am not sure I understand your idea...
Henk
Posts: 7251
Joined: Mon May 27, 2013 10:31 am

Re: LMP in PV nodes

Post by Henk »

bob wrote:
cdani wrote:
Michel wrote:Google is your friend!
Sorry, I was unable to find it.

I do razoring before null move. Did you try it?
How would that work? Null move is done BEFORE anything is searched. Razoring applies to moves. I am not sure I understand your idea...
Maybe he means reverse razoring. Razoring for the opponent. Razoring after opponent has moved. Possible if you get last move from the stack. Don't know what's the use of it. But I also encountered "reverse futility pruning" in historic posts somewhere. I don't know.
syzygy
Posts: 5801
Joined: Tue Feb 28, 2012 11:56 pm

Re: LMP in PV nodes

Post by syzygy »

lucasart wrote:Completing the picture with newer tests:

Razoring at PV nodes
http://tests.stockfishchess.org/tests/v ... 5c4de1c0b9
http://tests.stockfishchess.org/tests/v ... 763e075658

Futility + LMP + SEE pruning at PV nodes in search()
http://tests.stockfishchess.org/tests/v ... 28c6bc66fd
http://tests.stockfishchess.org/tests/v ... 26a5666bc6

Futility pruning + SEE pruning at PV nodes in qsearch()
http://tests.stockfishchess.org/tests/v ... 17fe3fc6db
http://tests.stockfishchess.org/tests/v ... 28c6bc6704

Probcut at PV nodes
http://tests.stockfishchess.org/tests/v ... 6d8243c853
http://tests.stockfishchess.org/tests/v ... 5c4de1c0be

Null move pruning at PV nodes
http://tests.stockfishchess.org/tests/v ... 64db6b6d6f
http://tests.stockfishchess.org/tests/v ... 763e07564f

Child node Futility pruning at Root (aka. reverse futility pruning, beta pruning, static null move pruning)
http://tests.stockfishchess.org/tests/v ... 64db6b6d6d
http://tests.stockfishchess.org/tests/v ... 7a947a50bb
In the end the result wasn't that great, it seems?
http://tests.stockfishchess.org/tests/v ... 047028beb6

Even with the odds considerably favouring the "simplification", it seems to have failed.
User avatar
cdani
Posts: 2204
Joined: Sat Jan 18, 2014 10:24 am
Location: Andorra

Re: LMP in PV nodes

Post by cdani »

Henk wrote:
bob wrote:
cdani wrote: I do razoring before null move. Did you try it?
How would that work? Null move is done BEFORE anything is searched. Razoring applies to moves. I am not sure I understand your idea...
Maybe he means reverse razoring. Razoring for the opponent. Razoring after opponent has moved. Possible if you get last move from the stack. Don't know what's the use of it. But I also encountered "reverse futility pruning" in historic posts somewhere. I don't know.
Also stockfish does razoring before null move:

...
// Step 6. Razoring (skipped when in check)
// Step 7. Futility pruning: child node (skipped when in check)
// Step 8. Null move search with verification search (is omitted in PV nodes)
...

May be I'm not using the correct name in some concepts.