Viren6 and Joost VandeVondele
3ae7684714
Improve Threats Speed
...
Passed STC:
LLR: 2.95 (-2.94,2.94) <0.00,2.00>
Total: 23168 W: 6132 L: 5845 D: 11191
Ptnml(0-2): 77, 2405, 6325, 2708, 69
https://tests.stockfishchess.org/tests/view/69148c3c7ca8781852331831
```
Result of 50 runs
==================
base (./stockfish.master ) = 985641 +/- 4249
test (./stockfish.patch ) = 1038567 +/- 5679
diff = +52926 +/- 4473
speedup = +0.0537
P(speedup > 0) = 1.0000
CPU: 16 x AMD Ryzen 9 3950X 16-Core Processor
Hyperthreading: on
```
closes https://github.com/official-stockfish/Stockfish/pull/6415
No functional change
2025-11-13 22:13:47 +01:00
+1
8e5392d79a
Update NNUE architecture to SFNNv10 with Threat Inputs and net nn-49c1193b131c.nnue
...
This commit introduces Full Threat Input features, which are a subset of Piece(Square)-Piece(Square) pairs. In any given position, the active features consist of pairs where the second piece’s square lies in the attack set of the first piece. This is an extremely simplified explanation that leaves out many details. The already-used HalfKAv2_hm feature set completes the input features.
Minor quantization changes have also been made.
The net nn-49c1193b131c.nnue was trained by vondele using the following setup: https://github.com/vondele/nettest/blob/7de71238e9b295e3f88ed7c9c5936af632c9b981/threats.yaml
A graphical version of an earlier scheme (with less refinement) that illustrates the core concepts can be found attached.
[NewInputs.pdf](https://github.com/user-attachments/files/23478441/NewInputs.pdf )
Further information, as well as a brief description of the history of development, can be found attached.
[Stockfish threat inputs PR summary.pdf](https://github.com/user-attachments/files/23478634/Stockfish.threat.inputs.PR.summary.pdf )
This has been a huge effort spanning over half a year, with the original [discussion thread](https://discord.com/channels/435943710472011776/1336647760388034610 ) reaching over 11k messages. Thanks to everyone who has contributed.
Monty PRs:
https://github.com/official-monty/Monty/pull/87 (Initial threat input PR)
https://github.com/official-monty/Monty/pull/114 (Fixed threat indexing to take into account colour correctly)
https://github.com/official-monty/Monty/pull/116 (i8 quantisation of weights whilst keeping calculations in i16)
Yukari commit:
https://github.com/yukarichess/yukari/commit/2d482c64a79cec03cf4987d5289334b9cdc737bc (Threat inputs merged)
Plentychess PRs:
https://github.com/Yoshie2000/PlentyChess/pull/400 (Threat inputs merged)
https://github.com/Yoshie2000/PlentyChess/pull/411 (Threat input weights quantised to i8)
Passed STC:
LLR: 2.93 (-2.94,2.94) <0.00,2.00>
Total: 63424 W: 16956 L: 16591 D: 29877
Ptnml(0-2): 276, 7522, 15797, 7795, 322
https://tests.stockfishchess.org/tests/view/69105b3dec1d00d2c195c569
Passed LTC:
LLR: 2.95 (-2.94,2.94) <0.50,2.50>
Total: 27876 W: 7417 L: 7110 D: 13349
Ptnml(0-2): 23, 3033, 7530, 3318, 34
https://tests.stockfishchess.org/tests/view/6910d817ec1d00d2c195c66e
Passed VVLTC (Hash accidentally set to 1/2 normal value for both sides):
LLR: 2.94 (-2.94,2.94) <0.50,2.50>
Total: 12458 W: 3353 L: 3102 D: 6003
Ptnml(0-2): 0, 1106, 3767, 1355, 1
https://tests.stockfishchess.org/tests/view/69115a26ec1d00d2c195c7cd
This version has also passed non-regression LTC against the originally passed version:
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 51144 W: 13086 L: 12903 D: 25155
Ptnml(0-2): 22, 5167, 15018, 5336, 29
https://tests.stockfishchess.org/tests/view/69138a317ca87818523314bf
LTC elo estimate on ARM:
1 patch : 13.9 1.9 38296.5 73728 52
2 master : 0.0 ---- 35431.5 73728 48
closes https://github.com/official-stockfish/Stockfish/pull/6411
bench: 2626086
Co-authored-by: Shawn Xu <xu107288696@gmail.com >
Co-authored-by: Timothy Herchen <timothy.herchen@gmail.com >
Co-authored-by: Viren6 <94880762+Viren6@users.noreply.github.com >
Co-authored-by: Yoshie2000 <patrick.leonhardt@gmx.net >
Co-authored-by: Joost Vandevondele <Joost.VandeVondele@gmail.com >
Co-authored-by: rn5f107s2 <clemens.lerchl@gmail.com >
Co-authored-by: cj5716 <125858804+cj5716@users.noreply.github.com >
Co-authored-by: AliceRoselia <63040919+AliceRoselia@users.noreply.github.com >
Co-authored-by: Linmiao Xu <linmiao.xu@gmail.com >
Co-authored-by: Disservin <disservin.social@gmail.com >
2025-11-12 10:49:39 +01:00
Timothy Herchen and Joost VandeVondele
3bb01ce7a9
prefetch earlier if checKEP is false
...
Only a modest amount of work happens between the transposition table prefetch
and the probe, so the probe still often stalls waiting for DRAM. The vast
majority of the time (in particular, if !checkEP), the key is known much
earlier in the do_move function and the latency can be better hidden.
passed STC SMP
https://tests.stockfishchess.org/tests/view/68f337c528e6d77fcffa066a
LLR: 2.95 (-2.94,2.94) <0.00,2.00>
Total: 65256 W: 16806 L: 16462 D: 31988
Ptnml(0-2): 76, 7386, 17362, 7726, 78
but failed to gain STC
https://tests.stockfishchess.org/tests/view/68f3378328e6d77fcffa0665
LLR: -2.94 (-2.94,2.94) <0.00,2.00>
Total: 109824 W: 28523 L: 28618 D: 52683
Ptnml(0-2): 311, 11799, 30788, 11702, 312
In local tests, the speedup grows with thread count
closes https://github.com/official-stockfish/Stockfish/pull/6372
No functional change
2025-11-01 10:40:23 +01:00
Daniel Monroe and Joost VandeVondele
feb17e5acf
Make sure we don't move a nonexistent piece in SEE
...
added assert.
closes https://github.com/official-stockfish/Stockfish/pull/6342
No functional change
2025-10-07 11:49:00 +02:00
Sebastian Buchwald and Joost VandeVondele
7a3483fa9e
Remove superfluous cast
...
closes https://github.com/official-stockfish/Stockfish/pull/6277
No functional change
2025-08-30 15:14:51 +02:00
rn5f107s2 and Joost VandeVondele
94175524b1
Only set ep square if ep capture is possible
...
for positions such as:
position fen rr6/2q2p1k/2P1b1pp/bB2P1n1/R2B2PN/p4P1P/P1Q4K/1R6 b - - 2 38 moves f7f5
position fen 8/p2r1pK1/6p1/1kp1P1P1/2p5/2P5/8/4R3 b - - 0 43 moves f7f5
position fen 4k3/4p3/2b3b1/3P1P2/4K3/8/8/8 b - - moves e7e5
ep is not possible for various reasons. Do not set the ep square and the do not change the zobrist key, as if ep were possible.
This fixes 3-fold detection, which could in rare cases be observed as a warning generated by fastchess for PVs that continued beyond an actual 3-fold.
Also fixes wrong evals for certain moves e.g. a2a1 for
position fen 4k3/1b2p2b/8/3P1P2/4K3/8/8/r7 b - - 0 1 moves e7e5 e4e3 a1a2 e3e4 a2a1 e4f3 a1a2 f3e4
fixes https://github.com/official-stockfish/Stockfish/issues/6138
originally written and tested by rn5f107s2, with small buglet as
https://tests.stockfishchess.org/tests/view/685af90843ce022d15794400
failed STC
LLR: -2.93 (-2.94,2.94) <-1.75,0.25>
Total: 130688 W: 33986 L: 34362 D: 62340
Ptnml(0-2): 414, 13292, 38302, 12928, 408
https://tests.stockfishchess.org/tests/view/688bcb35502b34dd5e7111c9
passed LTC
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 99018 W: 25402 L: 25273 D: 48343
Ptnml(0-2): 54, 9097, 31089, 9204, 65
https://tests.stockfishchess.org/tests/view/688c613c502b34dd5e7112d3
https://github.com/official-stockfish/Stockfish/pull/6211
Bench: 2946135
Co-authored-by: Joost VandeVondele <Joost.VandeVondele@gmail.com >
2025-08-04 15:16:21 +02:00
FauziAkram and Joost VandeVondele
07f6edf934
Refactor Position::pseudo_legal Pawn Move Check
...
use intermediate variables to make the statement easier to read
closes https://github.com/official-stockfish/Stockfish/pull/6045
No functional change
2025-05-19 07:12:11 +02:00
Carlos Esparza and Disservin
63c6f22627
Simplify DirtyPiece
...
Simplifies the DirtyPiece struct.
passed STC: https://tests.stockfishchess.org/tests/view/68054c9798cd372e3aea05d7
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 36608 W: 9641 L: 9437 D: 17530
Ptnml(0-2): 89, 3630, 10668, 3822, 95
passed LTC: https://tests.stockfishchess.org/tests/view/6805514598cd372e3aea0783
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 127620 W: 31993 L: 31894 D: 63733
Ptnml(0-2): 42, 10983, 41665, 11074, 46
closes https://github.com/official-stockfish/Stockfish/pull/6016
No functional change
2025-05-13 20:30:22 +02:00
Shawn Xu and Joost VandeVondele
b915ed702a
remove StateInfo::next
...
unused.
closes https://github.com/official-stockfish/Stockfish/pull/5997
no functional change
2025-04-26 21:37:17 +02:00
mstembera and Disservin
ed89817f62
Various cleanups
...
Various simplifications, cleanups, consistancy improvements, and warning
mitigations.
Passed Non-Regression STC:
https://tests.stockfishchess.org/tests/view/67e7dd2d6682f97da2178fd8
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 386848 W: 99593 L: 99751 D: 187504
Ptnml(0-2): 1024, 41822, 107973, 41498, 1107
closes https://github.com/official-stockfish/Stockfish/pull/5948
No functional change
2025-04-02 17:43:14 +02:00
mstembera and Disservin
1a395f1b56
Remove pawn_attacks_bb()
...
Generalize attacks_bb() to handle pawns and remove pawn_attacks_bb()
https://tests.stockfishchess.org/tests/view/67e9496231d7cf8afdc44a2e
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 134688 W: 34660 L: 34553 D: 65475
Ptnml(0-2): 298, 14619, 37462, 14608, 357
closes https://github.com/official-stockfish/Stockfish/pull/5947
No functional change
2025-04-02 17:39:40 +02:00
Shawn Xu and Disservin
fc0e0a44d4
Refactor accumulator storage/updates
...
Passed Non-regression STC:
LLR: 2.93 (-2.94,2.94) <-1.75,0.25>
Total: 115840 W: 29983 L: 29854 D: 56003
Ptnml(0-2): 338, 12990, 31149, 13091, 352
https://tests.stockfishchess.org/tests/view/67d0a044166a3e8781d84223
closes https://github.com/official-stockfish/Stockfish/pull/5927
No functional change
2025-03-21 11:12:47 +01:00
99d32e395e
Reapply #5909
...
This version fixes the logic of `gives_check`, which was identified to
be the cause of illegal moves.
closes https://github.com/official-stockfish/Stockfish/pull/5914
No functional change
Co-authored-by: Robert Nürnberg <robert.nurnberg@gmx.de >
Co-authored-by: gab8192 <gabrilomba57@gmail.com >
2025-03-21 11:02:19 +01:00
f3bfce3531
Revert "Replace aligned() function with line_bb() and simplify king piece detection" ( #5915 )
...
closes https://github.com/official-stockfish/Stockfish/pull/5915
No functional change
Co-authored-by: Robert Nürnberg <robert.nurnberg@gmx.de >
2025-02-28 09:50:59 +01:00
Jake Senne and Disservin
6d9c6f99b9
Replace aligned() function with line_bb() and simplify king piece detection
...
From https://discord.com/channels/435943710472011776/813919248455827515/1342267241168900228
Saves 6 instructions
closes https://github.com/official-stockfish/Stockfish/pull/5909
No functional change
2025-02-27 20:38:03 +01:00
Carlos Esparza and Disservin
e089f723d8
Remove two xors by setting the hash keys for unreachable squares to zero
...
performance before:
3.6714 +- 0.20% Gcycles
3.6620 +- 0.12% Gcycles
3.6704 +- 0.26% Gcycles
3.6602 +- 0.27% Gcycles
3.6799 +- 0.37% Gcycles
after:
3.6540 +- 0.30% Gcycles
3.6388 +- 0.25% Gcycles
3.6557 +- 0.17% Gcycles
3.6449 +- 0.15% Gcycles
3.6460 +- 0.26% Gcycles
(every line is a different `profile-build` and shows the number of
cycles needed for `./stockfish bench`, measured with `perf stat -r 10`)
closes https://github.com/official-stockfish/Stockfish/pull/5754
No functional change
2025-02-13 19:44:53 +01:00
Guenther Demetz and Disservin
2a1ab11ab0
Micro-optimization for SEE: remove a superfluous condition
...
This condition can never be true, it's superfluous.
It never triggers even with a bench 16 1 20 run.
To met the condition it would imply that the previous recapture was done
by a higher rated piece than a Queen.
This is only the case when the King recaptures and that's already
handled in line 1161: (return (attackers & ~pieces(stm)) ? res ^ 1).
closes https://github.com/official-stockfish/Stockfish/pull/5839
No functional change
2025-02-04 21:11:05 +01:00
Stefan Geschwentner and Disservin
c83ddd9e4b
Tweak correction history factors
...
The values are taken from this tuning
https://tests.stockfishchess.org/tests/view/679c4e150774dfd78deaf376
which added also a new material correction history. The full tune
doesn't work but ignoring the new history results in this changes.
Passed STC:
LLR: 2.94 (-2.94,2.94) <0.00,2.00>
Total: 102368 W: 27057 L: 26638 D: 48673
Ptnml(0-2): 394, 12031, 25949, 12382, 428
https://tests.stockfishchess.org/tess/view/679d2ca70774dfd78deaf796
Passed LTC:
LLR: 2.96 (-2.94,2.94) <0.50,2.50>
Total: 55044 W: 14215 L: 13855 D: 26974
Ptnml(0-2): 43, 5956, 15172, 6300, 51
https://tests.stockfishchess.org/tests/view/679d30be0774dfd78deafda2
closes https://github.com/official-stockfish/Stockfish/pull/5841
Bench: 3068583
2025-02-02 13:43:32 +01:00
Carlos Esparza and Disservin
7684b6e4d8
Don't increase rule50 when doing null moves
...
also prefetch a bit earlier while we're at it
passed STC: https://tests.stockfishchess.org/tests/view/678c0860f4dc0a8b4ae8cf58
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 67328 W: 17608 L: 17418 D: 32302
Ptnml(0-2): 256, 7905, 17156, 8087, 260
passed LTC: https://tests.stockfishchess.org/tests/view/678c1a56f4dc0a8b4ae8cfb1
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 340896 W: 86577 L: 86685 D: 167634
Ptnml(0-2): 291, 38325, 93332, 38201, 299
closes https://github.com/official-stockfish/Stockfish/pull/5831
Bench: 1910281
2025-02-02 13:35:48 +01:00
Martin Novák and Disservin
831cb01cea
Remove major corrhist
...
Remove major correction history and slightly increase all other
correction weights.
Passed STC:
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 50080 W: 13171 L: 12959 D: 23950
Ptnml(0-2): 196, 5998, 12462, 6166, 218
https://tests.stockfishchess.org/tests/live_elo/67954526406a4efe9eb7d176
Passed LTC:
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 51504 W: 13188 L: 12995 D: 25321
Ptnml(0-2): 54, 5658, 14128, 5865, 47
https://tests.stockfishchess.org/tests/live_elo/67954961406a4efe9eb7d251
closes https://github.com/official-stockfish/Stockfish/pull/5822
Bench: 2081366
2025-01-26 22:41:00 +01:00
Robert Nurnberg @ elitebook and Joost VandeVondele
6c7c5c7e47
Do not change TB cursed wins to draws if requested
...
If Syzygy50MoveRule is false, do not calls to is_draw() need to be guarded.
Also fixes a TB rootmove ranking issue in this case.
closes https://github.com/official-stockfish/Stockfish/pull/5814
No functional change
2025-01-25 20:42:50 +01:00
Carlos Esparza and Joost VandeVondele
aaafaaecf2
prefetch in do_move()
...
this allows removing Position::key_after()
STC
LLR: 2.93 (-2.94,2.94) <-1.75,0.25>
Total: 24960 W: 6556 L: 6336 D: 12068
Ptnml(0-2): 59, 2554, 7056, 2730, 81
LTC
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 115080 W: 29319 L: 29204 D: 56557
Ptnml(0-2): 51, 10736, 35864, 10825, 64
STC with 2MB hash
LLR: 3.04 (-2.94,2.94) <-1.75,0.25>
Total: 182176 W: 46998 L: 46932 D: 88246
Ptnml(0-2): 526, 19711, 50544, 19785, 522
LTC with 8MB hash
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 441180 W: 111557 L: 111746 D: 217877
Ptnml(0-2): 229, 39698, 140929, 39501, 233
closes https://github.com/official-stockfish/Stockfish/pull/5770
bench: 1379150
2025-01-18 20:19:53 +01:00
mstembera and Disservin
b84c8807a3
Optimize attackers_to()
...
https://tests.stockfishchess.org/tests/view/6782decb6ddf09c0b4b6e1b0
LLR: 2.93 (-2.94,2.94) <0.00,2.00>
Total: 105920 W: 27571 L: 27181 D: 51168
Ptnml(0-2): 284, 10808, 30403, 11164, 301
- If we only need to know if attackers exist we can skip some
calculations.
- Also calculating slider/magic attackers first is better because the
double lookup is slow due to memory latency.
- I also included a couple of very minor cleanups in search that
probably don't warrant their own PR but I can open separately if
that's better.
closes https://github.com/official-stockfish/Stockfish/pull/5762
No functional change
2025-01-12 21:24:44 +01:00
Shawn Xu and Disservin
5488dd2f91
Update Copyright Year
...
closes https://github.com/official-stockfish/Stockfish/pull/5747
No functional change
2025-01-06 00:45:28 +01:00
mstembera and Disservin
f656fdfa9a
Simplify Zobrist keys for captures
...
The Zobrist keys for NO_PIECE are 0 so no need to special case captures.
Also the TranspositionTable reference passed to do_null_move() can be
const.
STC Simplification:
https://tests.stockfishchess.org/tests/view/6764a79a86d5ee47d9544005
LLR: 2.96 (-2.94,2.94) <-1.75,0.25>
Total: 114240 W: 29654 L: 29523 D: 55063
Ptnml(0-2): 329, 12360, 31620, 12473, 338
closes https://github.com/official-stockfish/Stockfish/pull/5731
No functional change
2024-12-22 15:29:42 +01:00
mstembera and Disservin
a8b6bf1b1a
Small Major/Minor piece key simplification/optimization.
...
closes https://github.com/official-stockfish/Stockfish/pull/5710
No functional change
2024-12-08 19:58:34 +01:00
Shawn Xu and Disservin
b261df970d
Fix majorPieceKey Updates
...
Passed STC:
LLR: 2.98 (-2.94,2.94) <0.00,2.00>
Total: 476160 W: 124285 L: 123311 D: 228564
Ptnml(0-2): 1662, 56266, 121219, 57302, 1631
https://tests.stockfishchess.org/tests/view/66ea3dc186d5ee47d953ae07
Failed Yellow LTC:
LLR: -2.94 (-2.94,2.94) <0.50,2.50>
Total: 230634 W: 58525 L: 58295 D: 113814
Ptnml(0-2): 113, 25301, 64299, 25451, 153
https://tests.stockfishchess.org/tests/view/66f1825e86d5ee47d953b2ec
Passed Non-regression LTC:
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 112344 W: 28590 L: 28462 D: 55292
Ptnml(0-2): 71, 12439, 31039, 12537, 86
https://tests.stockfishchess.org/tests/view/6707474486d5ee47d953bfe3
closes https://github.com/official-stockfish/Stockfish/pull/5629
Bench: 1283457
2024-10-12 16:40:49 +02:00
Shawn Xu and Disservin
60351b9df9
Introduce Various Correction histories
...
This patch introduces three additional correction histories, namely,
Major Piece Correction History, Minor Piece Correction History, and
Non-Pawn Correction History.
Introduced by @mcthouacbb in Sirius
(https://github.com/mcthouacbb/Sirius ) chess engine. The Major Piece
Correction History is indexed by side-to-move and the Zobrist key
representing the position of the King, Rook, and Queen of both sides.
Likewise, the Minor Piece Correction History is indexed by side-to-move
and the Zobrist key representing the position of the King, Knight, and
Bishop of both sides.
Also See:
https://github.com/mcthouacbb/Sirius/commit/97b85bbaac88ff5a0f63e28776027dd3de77164e
https://github.com/mcthouacbb/Sirius/commit/3099cdef2f13e29805654b5f8153e6ecd5853195
Introduced by @zzzzz151 in Starzix (https://github.com/zzzzz151/Starzix )
chess engine. Non-Pawn correction history consists of side-to-move, side
of Zobrist key, and a Zobrist key representing of the position of all
non-pawn pieces of **one side**. The non-pawn correction values for both
key sides are then summed.
Also See:
https://github.com/zzzzz151/Starzix/commit/34911772f178c27b3a239dda0acb79c397c3a2f0
https://github.com/zzzzz151/Starzix/commit/33e0df8dd2db1d4775974ab12e3390154697f47a
The weights on the final correction value of the above correction
histories, as well as existing correction histories, are then tuned in
two separate SPSA sessions, totaling 75k games.
SPSA1:
https://tests.stockfishchess.org/tests/view/66e5243886d5ee47d953a86b
(Stopped early due to some weights reaching the maximum value)
SPSA2:
https://tests.stockfishchess.org/tests/view/66e6a26f86d5ee47d953a965
Also thanks to @martinnovaak, (Motor
https://github.com/martinnovaak/motor author) for insights and
suggestions.
Passed STC:
LLR: 2.94 (-2.94,2.94) <0.00,2.00>
Total: 23328 W: 6197 L: 5901 D: 11230
Ptnml(0-2): 82, 2582, 6041, 2876, 83
https://tests.stockfishchess.org/tests/view/66e8787b86d5ee47d953ab6f
Passed LTC:
LLR: 2.94 (-2.94,2.94) <0.50,2.50>
Total: 10626 W: 2826 L: 2560 D: 5240
Ptnml(0-2): 4, 1054, 2941, 1300, 14
https://tests.stockfishchess.org/tests/view/66e8ab2386d5ee47d953aba8
closes https://github.com/official-stockfish/Stockfish/pull/5598
Bench: 1011161
2024-09-17 21:01:43 +02:00
MinetaS and Disservin
2680c9c799
Small speedup in incremental accumulator updates
...
Instead of updating at most two accumulators, update all accumluators
during incremental updates. Tests have shown that this change yields a
small speedup of at least 0.5%, and up to 1% with shorter TC.
Passed STC:
LLR: 2.93 (-2.94,2.94) <0.00,2.00>
Total: 54368 W: 14179 L: 13842 D: 26347
Ptnml(0-2): 173, 6122, 14262, 6449, 178
https://tests.stockfishchess.org/tests/view/66db038a9de3e7f9b33d1ad9
Passed 5+0.05:
LLR: 2.98 (-2.94,2.94) <0.00,2.00>
Total: 55040 W: 14682 L: 14322 D: 26036
Ptnml(0-2): 303, 6364, 13856, 6664, 333
https://tests.stockfishchess.org/tests/view/66dbc325dc53972b68218ba7
Passed non-regression LTC:
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 57390 W: 14555 L: 14376 D: 28459
Ptnml(0-2): 37, 5876, 16683, 6069, 30
https://tests.stockfishchess.org/tests/view/66dbc30adc53972b68218ba5
closes https://github.com/official-stockfish/Stockfish/pull/5576
No functional change
2024-09-09 18:02:32 +02:00
Shahin M. Shahin and Joost VandeVondele
6b7822119f
Limit has_game_cycle() to only upcoming repetition
...
use the original algorithm according to the paper
http://web.archive.org/web/20201107002606/https://marcelk.net/2013-04-06/paper/upcoming-rep-v2.pdf ,
which detects accurately if a position has an upcoming repetition. The 'no
progress' part of has_game_cycle has been removed, the function has been
renamed to upcoming_repetition to reflect this.
As a result of this fix, to the best of our knowledge, all PVs for completed
iterations that yield a mate or decisive table base score now end in mate or
contain a TB position, respectively.
passed non-regression STC:
https://tests.stockfishchess.org/tests/view/6679fa1d0c2db3fa2dcecbf2
LLR: 2.96 (-2.94,2.94) <-1.75,0.25>
Total: 63584 W: 16666 L: 16472 D: 30446
Ptnml(0-2): 186, 7552, 16146, 7698, 210
Passed non-regression LTC:
https://tests.stockfishchess.org/tests/view/667ac965e439ed1c7a9ca042
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 464574 W: 117493 L: 117729 D: 229352
Ptnml(0-2): 311, 52468, 126974, 52214, 320
closes https://github.com/official-stockfish/Stockfish/pull/5432
bench: 1209805
2024-07-03 13:35:49 +02:00
cj5716 and Joost VandeVondele
8ee9905d8b
Remove PSQT-only mode
...
Passed STC:
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 94208 W: 24270 L: 24112 D: 45826
Ptnml(0-2): 286, 11186, 24009, 11330, 293
https://tests.stockfishchess.org/tests/view/6635ddd773559a8aa8582826
Passed LTC:
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 114960 W: 29107 L: 28982 D: 56871
Ptnml(0-2): 37, 12683, 31924, 12790, 46
https://tests.stockfishchess.org/tests/view/663604a973559a8aa85881ed
closes #5214
Bench 1653939
2024-05-05 12:36:20 +02:00
Disservin and Joost VandeVondele
432995ad82
Update outdated comments
...
closes https://github.com/official-stockfish/Stockfish/pull/5158
No functional change
2024-04-21 14:32:26 +02:00
Disservin
299707d2c2
Split UCI into UCIEngine and Engine
...
This is another refactor which aims to decouple uci from stockfish. A new engine
class manages all engine related logic and uci is a "small" wrapper around it.
In the future we should also try to remove the need for the Position object in
the uci and replace the options with an actual options struct instead of using a
map. Also convert the std::string's in the Info structs a string_view.
closes #5147
No functional change
2024-04-04 00:15:17 +02:00
mstembera and Joost VandeVondele
7831131591
Only evaluate the PSQT part of the small net for large evals.
...
Thanks to Viren6 for suggesting to set complexity to 0.
STC https://tests.stockfishchess.org/tests/view/65d7d6709b2da0226a5a203f
LLR: 2.92 (-2.94,2.94) <0.00,2.00>
Total: 328384 W: 85316 L: 84554 D: 158514
Ptnml(0-2): 1414, 39076, 82486, 39766, 1450
LTC https://tests.stockfishchess.org/tests/view/65dce6d290f639b028a54d2e
LLR: 2.95 (-2.94,2.94) <0.50,2.50>
Total: 165162 W: 41918 L: 41330 D: 81914
Ptnml(0-2): 102, 18332, 45124, 18922, 101
closes https://github.com/official-stockfish/Stockfish/pull/5083
bench: 1504003
2024-03-03 15:29:58 +01:00
Disservin and Joost VandeVondele
13eb023fc0
Simplify array initializations
...
also retire a few std::memset calls.
Passed non-regresion STC:
https://tests.stockfishchess.org/tests/view/65b8e162c865510db0276901
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 97504 W: 25294 L: 25140 D: 47070
Ptnml(1-2): 378, 11102, 25667, 11198, 407
closes https://github.com/official-stockfish/Stockfish/pull/5018
No functional change
2024-02-03 16:43:23 +01:00
Disservin
a107910951
Refactor global variables
...
This aims to remove some of the annoying global structure which Stockfish has.
Overall there is no major elo regression to be expected.
Non regression SMP STC (paused, early version):
https://tests.stockfishchess.org/tests/view/65983d7979aa8af82b9608f1
LLR: 0.23 (-2.94,2.94) <-1.75,0.25>
Total: 76232 W: 19035 L: 19096 D: 38101
Ptnml(0-2): 92, 8735, 20515, 8690, 84
Non regression STC (early version):
https://tests.stockfishchess.org/tests/view/6595b3a479aa8af82b95da7f
LLR: 2.93 (-2.94,2.94) <-1.75,0.25>
Total: 185344 W: 47027 L: 46972 D: 91345
Ptnml(0-2): 571, 21285, 48943, 21264, 609
Non regression SMP STC:
https://tests.stockfishchess.org/tests/view/65a0715c79aa8af82b96b7e4
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 142936 W: 35761 L: 35662 D: 71513
Ptnml(0-2): 209, 16400, 38135, 16531, 193
These global structures/variables add hidden dependencies and allow data
to be mutable from where it shouldn't it be (i.e. options). They also
prevent Stockfish from internal selfplay, which would be a nice thing to
be able to do, i.e. instantiate two Stockfish instances and let them
play against each other. It will also allow us to make Stockfish a
library, which can be easier used on other platforms.
For consistency with the old search code, `thisThread` has been kept,
even though it is not strictly necessary anymore. This the first major
refactor of this kind (in recent time), and future changes are required,
to achieve the previously described goals. This includes cleaning up the
dependencies, transforming the network to be self contained and coming
up with a plan to deal with proper tablebase memory management (see
comments for more information on this).
The removal of these global structures has been discussed in parts with
Vondele and Sopel.
closes https://github.com/official-stockfish/Stockfish/pull/4968
No functional change
2024-01-13 19:40:53 +01:00
584d9efedc
Dual NNUE with L1-128 smallnet
...
Credit goes to @mstembera for:
- writing the code enabling dual NNUE:
https://github.com/official-stockfish/Stockfish/pull/4898
- the idea of trying L1-128 trained exclusively on high simple eval
positions
The L1-128 smallnet is:
- epoch 399 of a single-stage training from scratch
- trained only on positions from filtered data with high material
difference
- defined by abs(simple_eval) > 1000
```yaml
experiment-name: 128--S1-only-hse-v2
training-dataset:
- /data/hse/S3/dfrc99-16tb7p-eval-filt-v2.min.high-simple-eval-1k.binpack
- /data/hse/S3/leela96-filt-v2.min.high-simple-eval-1k.binpack
- /data/hse/S3/test80-apr2022-16tb7p.min.high-simple-eval-1k.binpack
- /data/hse/S7/test60-2020-2tb7p.v6-3072.high-simple-eval-1k.binpack
- /data/hse/S7/test60-novdec2021-12tb7p-filter-v6-dd.min-mar2023.unmin.high-simple-eval-1k.binpack
- /data/hse/S7/test77-nov2021-2tb7p.v6-3072.min.high-simple-eval-1k.binpack
- /data/hse/S7/test77-dec2021-16tb7p-filter-v6-dd.min-mar2023.unmin.high-simple-eval-1k.binpack
- /data/hse/S7/test77-jan2022-2tb7p.high-simple-eval-1k.binpack
- /data/hse/S7/test78-jantomay2022-16tb7p-filter-v6-dd.min-mar2023.unmin.high-simple-eval-1k.binpack
- /data/hse/S7/test78-juntosep2022-16tb7p-filter-v6-dd.min-mar2023.unmin.high-simple-eval-1k.binpack
- /data/hse/S7/test79-apr2022-16tb7p-filter-v6-dd.min-mar2023.unmin.high-simple-eval-1k.binpack
- /data/hse/S7/test79-may2022-16tb7p-filter-v6-dd.min-mar2023.unmin.high-simple-eval-1k.binpack
# T80 2022
- /data/hse/S7/test80-may2022-16tb7p.high-simple-eval-1k.binpack
- /data/hse/S7/test80-jun2022-16tb7p-filter-v6-dd.min-mar2023.unmin.high-simple-eval-1k.binpack
- /data/hse/S7/test80-jul2022-16tb7p.v6-dd.min.high-simple-eval-1k.binpack
- /data/hse/S7/test80-aug2022-16tb7p-filter-v6-dd.min-mar2023.unmin.high-simple-eval-1k.binpack
- /data/hse/S7/test80-sep2022-16tb7p-filter-v6-dd.min-mar2023.unmin.high-simple-eval-1k.binpack
- /data/hse/S7/test80-oct2022-16tb7p.v6-dd.high-simple-eval-1k.binpack
- /data/hse/S7/test80-nov2022-16tb7p-v6-dd.min.high-simple-eval-1k.binpack
# T80 2023
- /data/hse/S7/test80-jan2023-3of3-16tb7p-filter-v6-dd.min-mar2023.unmin.high-simple-eval-1k.binpack
- /data/hse/S7/test80-feb2023-16tb7p-filter-v6-dd.min-mar2023.unmin.high-simple-eval-1k.binpack
- /data/hse/S7/test80-mar2023-2tb7p.v6-sk16.min.high-simple-eval-1k.binpack
- /data/hse/S7/test80-apr2023-2tb7p-filter-v6-sk16.min.high-simple-eval-1k.binpack
- /data/hse/S7/test80-may2023-2tb7p.v6.min.high-simple-eval-1k.binpack
- /data/hse/S7/test80-jun2023-2tb7p.v6-3072.min.high-simple-eval-1k.binpack
- /data/hse/S7/test80-jul2023-2tb7p.v6-3072.min.high-simple-eval-1k.binpack
- /data/hse/S7/test80-aug2023-2tb7p.v6.min.high-simple-eval-1k.binpack
- /data/hse/S7/test80-sep2023-2tb7p.high-simple-eval-1k.binpack
- /data/hse/S7/test80-oct2023-2tb7p.high-simple-eval-1k.binpack
start-from-engine-test-net: False
nnue-pytorch-branch: linrock/nnue-pytorch/L1-128
engine-test-branch: linrock/Stockfish/L1-128-nolazy
engine-base-branch: linrock/Stockfish/L1-128
num-epochs: 500
lambda: 1.0
```
Experiment yaml configs converted to easy_train.sh commands with:
https://github.com/linrock/nnue-tools/blob/4339954/yaml_easy_train.py
Binpacks interleaved at training time with:
https://github.com/official-stockfish/nnue-pytorch/pull/259
Data filtered for high simple eval positions with:
https://github.com/linrock/nnue-data/blob/32d6a68/filter_high_simple_eval_plain.py
https://github.com/linrock/Stockfish/blob/61dbfe/src/tools/transform.cpp#L626-L655
Training data can be found at:
https://robotmoon.com/nnue-training-data/
Local elo at 25k nodes per move of
L1-128 smallnet (nnue-only eval) vs. L1-128 trained on standard S1 data:
nn-epoch399.nnue : -318.1 +/- 2.1
Passed STC:
https://tests.stockfishchess.org/tests/view/6574cb9d95ea6ba1fcd49e3b
LLR: 2.93 (-2.94,2.94) <0.00,2.00>
Total: 62432 W: 15875 L: 15521 D: 31036
Ptnml(0-2): 177, 7331, 15872, 7633, 203
Passed LTC:
https://tests.stockfishchess.org/tests/view/6575da2d4d789acf40aaac6e
LLR: 2.94 (-2.94,2.94) <0.50,2.50>
Total: 64830 W: 16118 L: 15738 D: 32974
Ptnml(0-2): 43, 7129, 17697, 7497, 49
closes https://github.com/official-stockfish/Stockfish/pulls
Bench: 1330050
Co-Authored-By: mstembera <5421953+mstembera@users.noreply.github.com >
2024-01-07 21:15:52 +01:00
Disservin
b987d4f033
Use type aliases instead of enums for Value types
...
The primary rationale behind this lies in the fact that enums were not
originally designed to be employed in the manner we currently utilize them.
The Value enum was used like a type alias throughout the code and was often
misused. Furthermore, changing the underlying size of the enum to int16_t broke
everything, mostly because of the operator overloads for the Value enum, were
causing data to be truncated. Since Value is now a type alias, the operator
overloads are no longer required.
Passed Non-Regression STC:
https://tests.stockfishchess.org/tests/view/6593b8bb79aa8af82b95b401
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 235296 W: 59919 L: 59917 D: 115460
Ptnml(0-2): 743, 27085, 62054, 26959, 807
closes https://github.com/official-stockfish/Stockfish/pull/4960
No functional change
2024-01-04 15:54:23 +01:00
Disservin
cafbe8e8e8
Change the Move enum to a class
...
This changes the Move enum to a class, this way
all move related functions can be moved into the class
and be more self contained.
closes https://github.com/official-stockfish/Stockfish/pull/4958
No functional change
2024-01-04 15:51:04 +01:00
Disservin
444f03ee95
Update copyright year
...
closes https://github.com/official-stockfish/Stockfish/pull/4954
No functional change
2024-01-04 15:47:10 +01:00
FauziAkram and Disservin
b4e9ee72e3
Reformat some comments
...
Tests used to derive some Elo worth comments:
https://tests.stockfishchess.org/tests/view/653cf6b7cc309ae83956263a
https://tests.stockfishchess.org/tests/view/655250b7136acbc573534711
https://tests.stockfishchess.org/tests/view/65525767136acbc5735347b9
https://tests.stockfishchess.org/tests/view/65525aa1136acbc573534801
closes https://github.com/official-stockfish/Stockfish/pull/4879
No functional change
2023-11-20 19:10:38 +01:00
b0658f09b9
Introduce pawn structure based history
...
Original idea by Seer chess engine https://github.com/connormcmonigle/seer-nnue ,
coding done by @Disservin, code refactoring done by @locutus2 to match the style
of other histories.
This patch introduces pawn structure based history, which assings moves values
based on last digits of pawn structure hash and piece type of moved piece and
landing square of the move. Idea is that good places for pieces are quite often
determined by pawn structure of position. Used in 3 different places
- sorting of quiet moves, sorting of quiet check evasions and in history based
pruning in search.
Passed STC:
https://tests.stockfishchess.org/tests/view/65391d08cc309ae83955dbaf
LLR: 2.95 (-2.94,2.94) <0.00,2.00>
Total: 155488 W: 39408 L: 38913 D: 77167
Ptnml(0-2): 500, 18427, 39408, 18896, 513
Passed LTC:
https://tests.stockfishchess.org/tests/view/653a36a2cc309ae83955f181
LLR: 2.94 (-2.94,2.94) <0.50,2.50>
Total: 70110 W: 17548 L: 17155 D: 35407
Ptnml(0-2): 33, 7859, 18889, 8230, 44
closes https://github.com/official-stockfish/Stockfish/pull/4849
Bench: 1257882
Co-Authored-By: Disservin <disservin.social@gmail.com >
Co-Authored-By: Stefan Geschwentner <locutus2@users.noreply.github.com >
2023-10-27 17:24:25 +02:00
Disservin
a105978bbd
remove blank line between function and it's description
...
- remove the blank line between the declaration of the function and it's
comment, leads to better IDE support when hovering over a function to see it's
description
- remove the unnecessary duplication of the function name in the functions
description
- slightly refactored code for lsb, msb in bitboard.h There are still a few
things we can be improved later on, move the description of a function where
it was declared (instead of implemented) and add descriptions to functions
which are behind macros ifdefs
closes https://github.com/official-stockfish/Stockfish/pull/4840
No functional change
2023-10-23 20:39:48 +02:00
Disservin and Joost VandeVondele
2d0237db3f
add clang-format
...
This introduces clang-format to enforce a consistent code style for Stockfish.
Having a documented and consistent style across the code will make contributing easier
for new developers, and will make larger changes to the codebase easier to make.
To facilitate formatting, this PR includes a Makefile target (`make format`) to format the code,
this requires clang-format (version 17 currently) to be installed locally.
Installing clang-format is straightforward on most OS and distros
(e.g. with https://apt.llvm.org/ , brew install clang-format, etc), as this is part of quite commonly
used suite of tools and compilers (llvm / clang).
Additionally, a CI action is present that will verify if the code requires formatting,
and comment on the PR as needed. Initially, correct formatting is not required, it will be
done by maintainers as part of the merge or in later commits, but obviously this is encouraged.
fixes https://github.com/official-stockfish/Stockfish/issues/3608
closes https://github.com/official-stockfish/Stockfish/pull/4790
Co-Authored-By: Joost VandeVondele <Joost.VandeVondele@gmail.com >
2023-10-22 16:06:27 +02:00
FauziAkram and Joost VandeVondele
edb4ab924f
Standardize Comments
...
use double slashes (//) only for comments.
closes #4820
No functional change.
2023-10-21 10:25:03 +02:00
Stéphane Nicolet and Joost VandeVondele
fe53a18f7a
Reformat some comments and conditions
...
closes https://github.com/official-stockfish/Stockfish/pull/4814
No functional change
2023-10-21 10:15:48 +02:00
mstembera and Disservin
31d0b7fe93
Remove unused see_ge() code
...
closes https://github.com/official-stockfish/Stockfish/pull/4805
No functional change
2023-09-29 22:19:08 +02:00
FauziAkram and Disservin
243f7b264a
Improve grammar of comments
...
closes https://github.com/official-stockfish/Stockfish/pull/4801
No functional change
2023-09-29 22:18:17 +02:00
pb00067 and Stéphane Nicolet
1f7ff8406d
Simplify slider_blocker calculation
...
Now that classical evaluation was removed, we can adapt this method
to the needs of set_check_info.
STC:
2.95 (-2.94,2.94) <-1.75,0.25>
Total: 298176 W: 75802 L: 75868 D: 146506
Ptnml(0-2): 908, 33608, 80192, 33402, 978
https://tests.stockfishchess.org/tests/view/64e70b899009777747557b43
closes https://github.com/official-stockfish/Stockfish/pull/4753
no functional change
2023-09-03 08:57:43 +02:00
Disservin and Stéphane Nicolet
3c0e86a91e
Cleanup includes
...
Reorder a few includes, include "position.h" where it was previously missing
and apply include-what-you-use suggestions. Also make the order of the includes
consistent, in the following way:
1. Related header (for .cpp files)
2. A blank line
3. C/C++ headers
4. A blank line
5. All other header files
closes https://github.com/official-stockfish/Stockfish/pull/4763
fixes https://github.com/official-stockfish/Stockfish/issues/4707
No functional change
2023-09-03 08:24:51 +02:00