thanks Dann!Dann Corbit wrote:Branching factor is far more important than NPS.kranium wrote:Dr. Hyatt,
Is there (as far as you know) a direct correlation (or any relationship) betwen NPS and strength?
I'm often concerned if a change I make lowers NPS.
I know that some engines are strong despite a low NPS.
I also know that other engines acheive an extraordinarily high NPS (like Crafty)
I hate to see the engine lose node count...
Am I unecessarily concerned?
I'm asking you because i realize that you likely have an extremely keen insight into this matter..
Many thanks,
Norm
But you should not unnecessarily have a slow move generator or evaluation.
If you want to improve strength, there is a bigger win in branching factor than in speeding up NPS. But there is still something to gain from how fast you can generate moves and evaluate them.
reasonable nps
Moderator: Ras
-
kranium
- Posts: 2130
- Joined: Thu May 29, 2008 10:43 am
Re: reasonable nps
-
AndrewShort
Re: reasonable nps
slight correction. VB.NET is not a truly compiled language. It is compiled into MSIL (Microsoft Intermediate Language), which is not machine code. At run time, a JIT (just in time) compiler compiles the MSIL into native code. I have no idea what the performance hit of this is, compared to unmanaged C, for example.AndrewShort wrote:I'm trying to determine what a reasonable nps is. In other words, I want to make sure my engine is doing what it should be doing, with regard to speed, at least on my hardware.
Perhaps there is a rule of thumb out there - you should be getting x nps for each GHz, or something like that..
My machine is a 2 year old Sony VAIO laptop, running 32-bit Windows Vista, Intel Core 2 CPU, T5600, 1.83 Ghz, 2 GB RAM.
My engine is written in VB.NET, which is a compiled language. It's not the old interpreted Basic. It's compiled.
I use a 128 MB hash, and I use 1d array with "border squares" for the board (array of piece indeces to a piece list), pseudo-legal move generation, PVS, null-move, killers, history heuristic, ID with aspiration windows, IID, MVV/LVA, check extension, piece square tables, and a rather simple eval function. I presently have no SEE, and no futiliity pruning of any kind, no lazy eval, no LMR. Also, I fail hard, not soft. No pondering.
Also, my engine runs on a separate thread from my own GUI. But, the engine itself does not split the tree among multiple threads.
If I include hash hits in the node count (which most of you seem to be doing), I am getting roughly 450,000 to 650,000 nps, depending upon the position, but more usually around 500,000 nps. In that famous Fine's Chess endings high-hash position with all the locked pawns, I solve a depth 26 search (includes depth 1-25, too) in less than half a second (.497 sec), and the nps in that startup position is just over 500,000 nps.
Given the parameters of my hardware and engine, does that seem reasonable? Or have I just publicly humiliated myself?
-
YL84
Re: reasonable nps
If you compare VB.net, native and MSIL compiled, MS says that MSIL is faster. But comparing C,C++ VB.net,... is an other thing
I can say that between VB.net and C# there is no difference for my programme, but C# is not C or C++
My 2 cents
Yves
I can say that between VB.net and C# there is no difference for my programme, but C# is not C or C++
My 2 cents
Yves
-
bob
- Posts: 20943
- Joined: Mon Feb 27, 2006 7:30 pm
- Location: Birmingham, AL
Re: reasonable nps
yes and no.kranium wrote:Dr. Hyatt,
Is there (as far as you know) a direct correlation (or any relationship) betwen NPS and strength?
I'm often concerned if a change I make lowers NPS.
I know that some engines are strong despite a low NPS.
I also know that other engines acheive an extraordinarily high NPS (like Crafty)
I hate to see the engine lose node count...
Am I unecessarily concerned?
I'm asking you because i realize that you likely have an extremely keen insight into this matter..
Many thanks,
Norm
Given a program, A, its strength will increase as its NPS increases, if all else remains the same. If you remove parts of the eval to increase the NPS, this may well not be true. But in general, faster NPS means higher Elo, all else being equal.
That being said, comparing NPS between programs is pointless. Different evaluations, data structures, move generation scheme, search algorithm modifications, all affect NPS.
Think of NPS as similar to RPM in an auto engine. In a specific car, higher rpm produces higher speed. But comparing rpm between two different cars is meaningless since they can have different engine characteristics (high-RPM small displacement vs lower RPM larger displacement for example), different rear-end gearing, different transmission ratios, etc.