mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Small cleanups (2)
- fix a small compile error under MSVC - improve sigmoid comment and assert - fix formatting in README.md closes https://github.com/official-stockfish/Stockfish/pull/3960 No functional change
This commit is contained in:
parent
004ea2c25e
commit
f3a2296e59
3 changed files with 44 additions and 36 deletions
71
README.md
71
README.md
|
@ -10,23 +10,28 @@ Cute Chess, eboard, Arena, Sigma Chess, Shredder, Chess Partner or Fritz) in ord
|
||||||
to be used comfortably. Read the documentation for your GUI of choice for information
|
to be used comfortably. Read the documentation for your GUI of choice for information
|
||||||
about how to use Stockfish with it.
|
about how to use Stockfish with it.
|
||||||
|
|
||||||
The Stockfish engine features two evaluation functions for chess.
|
The Stockfish engine features two evaluation functions for chess. The efficiently
|
||||||
The efficiently updatable neural network (NNUE) based evaluation is the default and by far the strongest.
|
updatable neural network (NNUE) based evaluation is the default and by far the strongest.
|
||||||
The classical evaluation based on handcrafted terms remains available.
|
The classical evaluation based on handcrafted terms remains available. The strongest
|
||||||
The strongest network is integrated in the binary and downloaded automatically during the build process.
|
network is integrated in the binary and downloaded automatically during the build process.
|
||||||
The NNUE evaluation benefits from the vector intrinsics available on most CPUs (sse2, avx2, neon, or similar).
|
The NNUE evaluation benefits from the vector intrinsics available on most CPUs (sse2,
|
||||||
|
avx2, neon, or similar).
|
||||||
|
|
||||||
## Files
|
## Files
|
||||||
|
|
||||||
This distribution of Stockfish consists of the following files:
|
This distribution of Stockfish consists of the following files:
|
||||||
|
|
||||||
* [Readme.md](https://github.com/official-stockfish/Stockfish/blob/master/README.md), the file you are currently reading.
|
* [Readme.md](https://github.com/official-stockfish/Stockfish/blob/master/README.md),
|
||||||
|
the file you are currently reading.
|
||||||
|
|
||||||
* [Copying.txt](https://github.com/official-stockfish/Stockfish/blob/master/Copying.txt), a text file containing the GNU General Public License version 3.
|
* [Copying.txt](https://github.com/official-stockfish/Stockfish/blob/master/Copying.txt),
|
||||||
|
a text file containing the GNU General Public License version 3.
|
||||||
|
|
||||||
* [AUTHORS](https://github.com/official-stockfish/Stockfish/blob/master/AUTHORS), a text file with the list of authors for the project
|
* [AUTHORS](https://github.com/official-stockfish/Stockfish/blob/master/AUTHORS),
|
||||||
|
a text file with the list of authors for the project
|
||||||
|
|
||||||
* [src](https://github.com/official-stockfish/Stockfish/tree/master/src), a subdirectory containing the full source code, including a Makefile
|
* [src](https://github.com/official-stockfish/Stockfish/tree/master/src),
|
||||||
|
a subdirectory containing the full source code, including a Makefile
|
||||||
that can be used to compile Stockfish on Unix-like systems.
|
that can be used to compile Stockfish on Unix-like systems.
|
||||||
|
|
||||||
* a file with the .nnue extension, storing the neural network for the NNUE
|
* a file with the .nnue extension, storing the neural network for the NNUE
|
||||||
|
@ -67,9 +72,9 @@ change them via a chess GUI. This is a list of available UCI options in Stockfis
|
||||||
|
|
||||||
* #### EvalFile
|
* #### EvalFile
|
||||||
The name of the file of the NNUE evaluation parameters. Depending on the GUI the
|
The name of the file of the NNUE evaluation parameters. Depending on the GUI the
|
||||||
filename might have to include the full path to the folder/directory that contains the file.
|
filename might have to include the full path to the folder/directory that contains
|
||||||
Other locations, such as the directory that contains the binary and the working directory,
|
the file. Other locations, such as the directory that contains the binary and the
|
||||||
are also searched.
|
working directory, are also searched.
|
||||||
|
|
||||||
* #### UCI_AnalyseMode
|
* #### UCI_AnalyseMode
|
||||||
An option handled by your GUI.
|
An option handled by your GUI.
|
||||||
|
@ -137,8 +142,9 @@ change them via a chess GUI. This is a list of available UCI options in Stockfis
|
||||||
For developers the following non-standard commands might be of interest, mainly useful for debugging:
|
For developers the following non-standard commands might be of interest, mainly useful for debugging:
|
||||||
|
|
||||||
* #### bench *ttSize threads limit fenFile limitType evalType*
|
* #### bench *ttSize threads limit fenFile limitType evalType*
|
||||||
Performs a standard benchmark using various options. The signature of a version (standard node
|
Performs a standard benchmark using various options. The signature of a version
|
||||||
count) is obtained using all defaults. `bench` is currently `bench 16 1 13 default depth mixed`.
|
(standard node count) is obtained using all defaults. `bench` is currently
|
||||||
|
`bench 16 1 13 default depth mixed`.
|
||||||
|
|
||||||
* #### compiler
|
* #### compiler
|
||||||
Give information about the compiler and environment used for building a binary.
|
Give information about the compiler and environment used for building a binary.
|
||||||
|
@ -174,26 +180,27 @@ on the evaluations of millions of positions at moderate search depth.
|
||||||
The NNUE evaluation was first introduced in shogi, and ported to Stockfish afterward.
|
The NNUE evaluation was first introduced in shogi, and ported to Stockfish afterward.
|
||||||
It can be evaluated efficiently on CPUs, and exploits the fact that only parts
|
It can be evaluated efficiently on CPUs, and exploits the fact that only parts
|
||||||
of the neural network need to be updated after a typical chess move.
|
of the neural network need to be updated after a typical chess move.
|
||||||
[The nodchip repository](https://github.com/nodchip/Stockfish) provided the first version of
|
[The nodchip repository](https://github.com/nodchip/Stockfish) provided the first
|
||||||
the needed tools to train and develop the NNUE networks. Today, more advanced training tools are available
|
version of the needed tools to train and develop the NNUE networks. Today, more
|
||||||
in [the nnue-pytorch repository](https://github.com/glinscott/nnue-pytorch/), while data generation tools
|
advanced training tools are available in
|
||||||
are available in [a dedicated branch](https://github.com/official-stockfish/Stockfish/tree/tools).
|
[the nnue-pytorch repository](https://github.com/glinscott/nnue-pytorch/),
|
||||||
|
while data generation tools are available in
|
||||||
|
[a dedicated branch](https://github.com/official-stockfish/Stockfish/tree/tools).
|
||||||
|
|
||||||
On CPUs supporting modern vector instructions
|
On CPUs supporting modern vector instructions (avx2 and similar), the NNUE evaluation
|
||||||
(avx2 and similar), the NNUE evaluation results in much stronger playing strength, even
|
results in much stronger playing strength, even if the nodes per second computed by
|
||||||
if the nodes per second computed by the engine is somewhat lower (roughly 80% of nps
|
the engine is somewhat lower (roughly 80% of nps is typical).
|
||||||
is typical).
|
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
|
|
||||||
1) the NNUE evaluation depends on the Stockfish binary and the network parameter
|
1) the NNUE evaluation depends on the Stockfish binary and the network parameter file
|
||||||
file (see the EvalFile UCI option). Not every parameter file is compatible with a given
|
(see the EvalFile UCI option). Not every parameter file is compatible with a given
|
||||||
Stockfish binary, but the default value of the EvalFile UCI option is the name of a network
|
Stockfish binary, but the default value of the EvalFile UCI option is the name of a
|
||||||
that is guaranteed to be compatible with that binary.
|
network that is guaranteed to be compatible with that binary.
|
||||||
|
|
||||||
2) to use the NNUE evaluation, the additional data file with neural network parameters
|
2) to use the NNUE evaluation, the additional data file with neural network parameters
|
||||||
needs to be available. Normally, this file is already embedded in the binary or it
|
needs to be available. Normally, this file is already embedded in the binary or it can
|
||||||
can be downloaded. The filename for the default (recommended) net can be found as the default
|
be downloaded. The filename for the default (recommended) net can be found as the default
|
||||||
value of the `EvalFile` UCI option, with the format `nn-[SHA256 first 12 digits].nnue`
|
value of the `EvalFile` UCI option, with the format `nn-[SHA256 first 12 digits].nnue`
|
||||||
(for instance, `nn-c157e0a5755b.nnue`). This file can be downloaded from
|
(for instance, `nn-c157e0a5755b.nnue`). This file can be downloaded from
|
||||||
```
|
```
|
||||||
|
@ -321,10 +328,10 @@ it (either by itself or as part of some bigger software package), or
|
||||||
using it as the starting point for a software project of your own.
|
using it as the starting point for a software project of your own.
|
||||||
|
|
||||||
The only real limitation is that whenever you distribute Stockfish in
|
The only real limitation is that whenever you distribute Stockfish in
|
||||||
some way, you MUST always include the license, the full source code, or a pointer
|
some way, you MUST always include the license and the full source code
|
||||||
to where the source code can be found, to generate the exact binary
|
(or a pointer to where the source code can be found) to generate the
|
||||||
you are distributing. If you make any changes to the source code,
|
exact binary you are distributing. If you make any changes to the
|
||||||
these changes must also be made available under the GPL v3.
|
source code, these changes must also be made available under the GPL v3.
|
||||||
|
|
||||||
For full details, read the copy of the GPL v3 found in the file named
|
For full details, read the copy of the GPL v3 found in the file named
|
||||||
[*Copying.txt*](https://github.com/official-stockfish/Stockfish/blob/master/Copying.txt).
|
[*Copying.txt*](https://github.com/official-stockfish/Stockfish/blob/master/Copying.txt).
|
||||||
|
|
|
@ -152,7 +152,7 @@ private:
|
||||||
/// - the slope can be adjusted using C > 0, smaller C giving a steeper sigmoid
|
/// - the slope can be adjusted using C > 0, smaller C giving a steeper sigmoid
|
||||||
/// - the slope of the sigmoid when t = x0 is P/(Q*C)
|
/// - the slope of the sigmoid when t = x0 is P/(Q*C)
|
||||||
/// - sigmoid is increasing with t when P > 0 and Q > 0
|
/// - sigmoid is increasing with t when P > 0 and Q > 0
|
||||||
/// - to get a decreasing sigmoid, call with -t, or change sign of P
|
/// - to get a decreasing sigmoid, change sign of P
|
||||||
/// - mean value of the sigmoid is y0
|
/// - mean value of the sigmoid is y0
|
||||||
///
|
///
|
||||||
/// Use <https://www.desmos.com/calculator/jhh83sqq92> to draw the sigmoid
|
/// Use <https://www.desmos.com/calculator/jhh83sqq92> to draw the sigmoid
|
||||||
|
@ -163,7 +163,8 @@ inline int64_t sigmoid(int64_t t, int64_t x0,
|
||||||
int64_t P,
|
int64_t P,
|
||||||
int64_t Q)
|
int64_t Q)
|
||||||
{
|
{
|
||||||
assert(C > 0 && Q != 0);
|
assert(C > 0);
|
||||||
|
assert(Q != 0);
|
||||||
return y0 + P * (t-x0) / (Q * (std::abs(t-x0) + C)) ;
|
return y0 + P * (t-x0) / (Q * (std::abs(t-x0) + C)) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,8 +107,8 @@ void MovePicker::score() {
|
||||||
|
|
||||||
for (auto& m : *this)
|
for (auto& m : *this)
|
||||||
if constexpr (Type == CAPTURES)
|
if constexpr (Type == CAPTURES)
|
||||||
m.value = 6 * PieceValue[MG][pos.piece_on(to_sq(m))]
|
m.value = 6 * int(PieceValue[MG][pos.piece_on(to_sq(m))])
|
||||||
+ (*captureHistory)[pos.moved_piece(m)][to_sq(m)][type_of(pos.piece_on(to_sq(m)))];
|
+ (*captureHistory)[pos.moved_piece(m)][to_sq(m)][type_of(pos.piece_on(to_sq(m)))];
|
||||||
|
|
||||||
else if constexpr (Type == QUIETS)
|
else if constexpr (Type == QUIETS)
|
||||||
m.value = (*mainHistory)[pos.side_to_move()][from_to(m)]
|
m.value = (*mainHistory)[pos.side_to_move()][from_to(m)]
|
||||||
|
|
Loading…
Add table
Reference in a new issue