Maximum speed

Discussion of chess software programming and technical issues.

Moderator: Ras

Henk
Posts: 7251
Joined: Mon May 27, 2013 10:31 am

Re: Maximum speed

Post by Henk »

Joost Buijs wrote:
Henk wrote:
WinPooh wrote:
matthewlai wrote:I happen to have quite a few engines in my gauntlet, so I ran a search from start position on all of them. All single threaded.
This approach can be a little bit misleading if different engines count nodes in different ways.
Yes you are right for instance Skipper currently counts illegal nodes where king might be captured too. Perhaps I have to change that first.

In my opinion a node is a position with a value. No matter how you get that value. If you get value from hash it is still a node. If you do a null move it is still a node for position has changed because side to move has changed.
Every do-move() (also do-nullmove()) I call a node, and I evaluate every node except when the king is in check, which is only a small portion of the total number of nodes.
And what if someone uses do-move for computing SEE ? Should these moves be counted too ?
Joost Buijs
Posts: 1641
Joined: Thu Jul 16, 2009 10:47 am
Location: Almere, The Netherlands

Re: Maximum speed

Post by Joost Buijs »

Henk wrote:
Joost Buijs wrote:
Henk wrote:
WinPooh wrote:
matthewlai wrote:I happen to have quite a few engines in my gauntlet, so I ran a search from start position on all of them. All single threaded.
This approach can be a little bit misleading if different engines count nodes in different ways.
Yes you are right for instance Skipper currently counts illegal nodes where king might be captured too. Perhaps I have to change that first.

In my opinion a node is a position with a value. No matter how you get that value. If you get value from hash it is still a node. If you do a null move it is still a node for position has changed because side to move has changed.
Every do-move() (also do-nullmove()) I call a node, and I evaluate every node except when the king is in check, which is only a small portion of the total number of nodes.
And what if someone uses do-move for computing SEE ? Should these moves be counted too ?
I don't think so, at least I would not count them.
Joost Buijs
Posts: 1641
Joined: Thu Jul 16, 2009 10:47 am
Location: Almere, The Netherlands

Re: Maximum speed

Post by Joost Buijs »

WinPooh wrote:
Joost Buijs wrote:Node-count doesn't mean anything with respect to playing strength.
Yes, remember early Rybkas with their low nodecount.
More to say, depth of search also means almost nothing. Remember Junior :)
Yes, I fully agree with you on this. All that pruning going on doesn't necessarily make an engine play stronger, but the average user thinks 'hey that engine looks much deeper so it must be stronger'.
In the case of SF it seems to work though.

Rybka did something like printf("nps %d", nps / 10); And Junior printf("depth %d", depth * 2);
matthewlai
Posts: 793
Joined: Sun Aug 03, 2014 4:48 am
Location: London, UK

Re: Maximum speed

Post by matthewlai »

Joost Buijs wrote:
WinPooh wrote:
Joost Buijs wrote:Node-count doesn't mean anything with respect to playing strength.
Yes, remember early Rybkas with their low nodecount.
More to say, depth of search also means almost nothing. Remember Junior :)
Yes, I fully agree with you on this. All that pruning going on doesn't necessarily make an engine play stronger, but the average user thinks 'hey that engine looks much deeper so it must be stronger'.
In the case of SF it seems to work though.

Rybka did something like printf("nps %d", nps / 10); And Junior printf("depth %d", depth * 2);
And in Giraffe I have "depth = -log(probability_threshold)/log(2)" since the search is not actually depth-based, but both CECP and UCI assumes depth-based search.
Disclosure: I work for DeepMind on the AlphaZero project, but everything I say here is personal opinion and does not reflect the views of DeepMind / Alphabet.