searching: nodes per second

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: searching: nodes per second

Post by bob »

diep wrote:
G. Hensel wrote:I would like to know if there is a standard way of measuring nodes per second. For example, are transposition moves also considered? I would think that only moves that are actually searched (i.e. move is played, move generator called, etc.) are counted. And do all top programs (Fritz, Shredder, Junior, etc.) measure engine speed in the same manner?
Most commercial authors just toy something with their nps.

Junior is known for also counting moves they futile skip. Tiger was known for just counting a part of what it actually searched. Fritz for years kept secret the nps it got, "as that was our biggest secret", to quote Frans.

Rybka decided to follow Fritz approach it seems and just shows some garbage number that has not even a close relation to its nps.

Zappa without evaluation function gets to 3.3 mln nps at an opteron 2.2Ghz in 64 bits, so Rybka will be close to that actually.

For diep currently showing its nps is easy, i just count what i search, but as i already detect repetitions early on, and illegal moves diep also detects early on, so i'm not so sure i count them (as i don't even search them).

So that would make diep's nps quite a tad higher, up to 50% in some positions when i would count it like Bob does.
I'm not sure "count it like bob does" means. In q-search I count some illegal moves to be sure, because most are not illegal (by a huge margin since they are captures anyway, and for qsearch checks I only generate legal responses). In the normal (non-qsearch) nodes I don't search nor do I count illegal moves. I make 'em, discover they are illegal, and unmake 'em without recursively calling search, which means they don't get counted.


Additionally is the fast searcher idea i've got. That searcher is at millions of nps a node, whereas diep is something like 200k nps at a core2 2.4Ghz (single core).

If i combine them together i do not actually know what to count to be honest. Internal i have 2 counts of course. I know the average goes to roughly 700k-900k nps then (single core). So i'm not sure which of the 2 npses to show or an average then.

Vincent
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: searching: nodes per second

Post by sje »

bob wrote:In the normal (non-qsearch) nodes I don't search nor do I count illegal moves. I make 'em, discover they are illegal, and unmake 'em without recursively calling search, which means they don't get counted.
Symbolic's move generation routines output legal moves only with no exceptions. However, not all moves come directly from the generator functions and sometimes a move from a refutation table might be legal except that it leaves the passive color king in check. The illegality is caught in almost all cases before a trial execution. I may change this from "almost all" to "all". In any case, bogus moves, if any, are never counted towards the node frequency statistic.