Overview
Stockfish is a free, powerful UCI chess engine
derived from Glaurung 2.1. Stockfish is not a complete chess program and requires a
UCI-compatible graphical user interface (GUI) (e.g. XBoard with PolyGlot, Scid,
Cute Chess, eboard, Arena, Sigma Chess, Shredder, Chess Partner or Fritz) in order
to be used comfortably. Read the documentation for your GUI of choice for information
about how to use Stockfish with it.
The Stockfish engine features two evaluation functions for chess, the classical
evaluation based on handcrafted terms, and the NNUE evaluation based on efficiently
updatable neural networks. The classical evaluation runs efficiently on almost all
CPU architectures, while the NNUE evaluation benefits from the vector
intrinsics available on most CPUs (sse2, avx2, neon, or similar).
Files
This distribution of Stockfish consists of the following files:
Readme.md, the file you are currently reading.
Copying.txt, a text file containing the GNU General Public License version 3.
AUTHORS, a text file with the list of authors for the project
src, a subdirectory containing the full source code, including a Makefile
that can be used to compile Stockfish on Unix-like systems.
a file with the .nnue extension, storing the neural network for the NNUE
evaluation. Binary distributions will have this file embedded.
The UCI protocol and available options
The Universal Chess Interface (UCI) is a standard protocol used to communicate with a chess engine,
and is the recommended way to do so for typical graphical user interfaces (GUI) or chess tools.
Stockfish implements most commands as described in the UCI protocol
For users, the following UCI options, which can typically be set via a GUI, are available in Stockfish:
Threads
The number of CPU threads used for searching a position. For best performance, set
this equal to the number of CPU cores available.
Hash
The size of the hash table in MB. It is recommended to set Hash after setting Threads.
Clear Hash
Clear the hash table.
Ponder
Let Stockfish ponder its next move while the opponent is thinking.
MultiPV
Output the N best lines (principal variations, PVs) when searching.
Leave at 1 for best performance.
Use NNUE
Toggle between the NNUE and classical evaluation functions. If set to "true",
the network parameters must be available to load from file (see also EvalFile),
if they are not embedded in the binary.
EvalFile
The name of the file of the NNUE evaluation parameters. Depending on the GUI the
filename might have to inc