Chess engines are an irreplaceable part of professional training. And while most players use them on a daily basis, they may not fully understand the importance and correlation of the values they show during analysis. For example, the depth value is the first number that catches the eye. The higher it is the better the analyses are supposed to be. And yet, many players may ignore an equally important value called NPS.
Nodes per second or NPS, as it is often referred to, can tell much about the credibility of engine analysis. In fact, it may sometimes be even more talkative than the depth. So...
Nodes per second (NPS) is the main measure of chess engines’ speed. It indicates the number of positions the engine considers in one second. You may often see NPS calculated in kN/s (kilo nodes per second) or MN/s to denote the number by one thousand or one million respectively. Thus, 45,000,000 NPS = 45,000 kN/s = 45 MN/s.
A node, in turn, is a chess position with its evaluation and history, i.e. castling rights, repetition of moves, move turn, etc. Once you make a move, the engine starts calculating various continuations in search of the best move. This process can be described as a decision tree with its root being the current position. Every legal move creates a new position, known as a child node, and each of those child nodes, in turn, grows into more branches with every legal move.
Despite the popular belief that it is the depth of the engine analysis that decides its credibility, the truth is that the depth value is heavily dependent on and should only be viewed with regard to NPS. You can ask the computer science experts or find a solution in the FAQ if you still don't understand how a chess engine works.
Stockfish working on 4 CPUs of an average local computer considers around 5,000k nodes per second, which is insufficient for in-depth analysis. A local high-end computer, on the other hand, can support up to 20,000 kN/s; and a special pay-top-dollar local server, which may be owned by some super GMs only, will provide around 50,000kN/s. Higher speeds are possible to reach only with cloud servers: from 100,000 to 1 million kN/s and even higher if needed.
But is more always better? Chess engines have three primary functions: searching different continuations (NPS), evaluating them, and calculating as many moves as possible (depth). The goal of a chess engine is to effectively allocate the recourses of CPUs it's using between these three functions. Different engines use different algorithms and methods to achieve it, so it does not make much sense to compare the number of nodes or depth of different engines. For example, Stockfish operates with the so-called "thin" nodes (little evaluation for a much bigger number of nodes), while Leela Chess Zero operates with "thick" nodes (better evaluation for a smaller number of nodes).
LCZero considers around 1000x fewer nodes per second than Stockfish, but it applies a much stronger evaluation method. In other words, it prioritizes quality over quantity. And despite the difference in the algorithms of Stockfish and Lc0, they will show almost identical results in a given position. Note how Lc0 has reached 2x less depth and 1000x less NPS.
Importantly, if any of the three main factors (NPS, depth, evaluation) spends more resources, the other two will be affected negatively. For example, a high NPS value will affect the engine's time to depth speed-up as it happens with Stockfish. And better evaluation of the nodes can reduce NPS as is the case with Lc0.
The NPS value is essential in measuring the accuracy of a chess engine’s evaluation. The more positions an engine analyzes the better the chances that it won’t cut off any important variations. That's why high NPS is valuable for finding opening novelties. Even though, it does affect the time-to-depth speedup, the analysis and playing strength of the engine do not suffer. Back in 2018, we conducted an experimental tournament between Stockfish engines running on different numbers of CPUs to prove this point. The 4-CPU Stockfish, which often has a worse time-to-depth speedup than the 1-CPU Stockfish, beat the latter quite convincingly in a 100-game match. See the full results here.
It was in 2016 when two of the best chess engines in the world, Stockfish, and Houdini, started to use a new algorithm called Lazy SMP which prioritized the NPS value over depth. The algorithm helped significantly widen the node search speed of the two engines, which had a positive impact on their playing strength. After this change, both Stockfish and Houdini improved their performance at the Top Chess Engines Championship (TCEC) which featured all the best chess engines in the world. During seasons 9-19, for example, Stockfish won 8 of the 10 superfinals it qualified for.
On the second line of the engine dialog, right below the engine name, you can find all values including NPS. The NPS value is mainly shown in kN/s. In the screenshot below, you can see that the NPS value for Stockfish is around 224,000 kN/s. This means that the engine is calculating that many positions (nodes) per second.
Right next to the NPS speed value, you can also find the node's number. If NPS shows how many positions the engine is analyzing in one second, then the node value shows how many positions (nodes) the engine has analyzed since your last move.
You may also be interested in
Thanks to this partnership, the Chess Olympiad Gold medallists in the Open and Women’s categories, both teams and individual boards, will be awarded GrandMaster packages by Chessify, with the opportunity of leveraging premium chess game analysis from the strongest chess engines.
Discover how these startups use #AI and powerful #cloud analysis to help players take their performance to the next level.
Join 300+ GMs on Chessify Cloud to level up your training. Analyze securely with user-dedicated cloud servers at up to 1 BIllion NPS speed