Syine Mineta and Joost VandeVondele
d678f839d8
Fix remote access bug across NUMA nodes
...
Ensure that thread-local data is created within the correct NUMA
context, so that thread stacks or thread-local storage are allocated
to proper NUMA nodes.
refs https://github.com/official-stockfish/Stockfish/issues/6516
closes https://github.com/official-stockfish/Stockfish/pull/6518
No functional change
2026-01-06 12:01:01 +01:00
Syine Mineta and Joost VandeVondele
a47a1c1804
Penalty to TT move history on MultiCut
...
If a reduced search fails high with the TT move excluded, we know that
there are multiple moves that can produce cutoffs. Applying a penalty
to the TT move history reduces extensions for TT moves so that it may
spend a bit more time exploring other moves.
Passed STC:
LLR: 2.93 (-2.94,2.94) <0.00,2.00>
Total: 263680 W: 68965 L: 68313 D: 126402
Ptnml(0-2): 855, 31090, 67336, 31666, 893
https://tests.stockfishchess.org/tests/view/68c1f65a59efc3c96b6110e5
Passed LTC:
LLR: 2.94 (-2.94,2.94) <0.50,2.50>
Total: 61008 W: 15713 L: 15350 D: 29945
Ptnml(0-2): 27, 6428, 17235, 6783, 31
https://tests.stockfishchess.org/tests/view/68c1fc5359efc3c96b611141
Passed non-regression VLTC (60+0.6, Threads=8):
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 50340 W: 13003 L: 12830 D: 24507
Ptnml(0-2): 3, 4570, 15849, 4747, 1
https://tests.stockfishchess.org/tests/view/68c2056559efc3c96b6111c3
closes https://github.com/official-stockfish/Stockfish/pull/6305
Bench: 2342975
2025-09-28 20:49:24 +02:00
Syine Mineta and Joost VandeVondele
fc54d87301
Revert "Adjustment of the aspiration window after fail high/low."
...
This reverts commit bfc7000597 .
Fixes https://github.com/official-stockfish/Stockfish/issues/6296
After this commit a bug has been reported when the position is close to
mate or being mated. Since no workarounds have been suggested yet, it
is best to revert this commit until a better solution is found.
closes https://github.com/official-stockfish/Stockfish/pull/6309
Bench: 2493363
2025-09-13 08:18:52 +02:00
MinetaS and Joost VandeVondele
32cb78d782
Increase CI timeouts for perft
...
might fix CI failures on macOS instances
closes https://github.com/official-stockfish/Stockfish/pull/6194
No functional change
2025-08-02 15:52:24 +02:00
MinetaS and Disservin
ea85a54fef
Fix trivial errors in Makefile
...
1. Remove "default" rule as "default" has no special meaning as a rule
name. Make runs the very first rule whose name doesn't begin with a dot
(which is "help" currently).
2. Make "format" rule not update dependencies.
closes https://github.com/official-stockfish/Stockfish/pull/6140
No functional change
2025-07-02 18:32:12 +02:00
MinetaS and Disservin
24c57793e1
Remove moveCountPruning in search.cpp
...
The definition of moveCountPruning may cause confusion by implying that
the variable is unconstrained. However, once it is set to true, it
should not be reset to false, otherwise it would break the internal
logic of MovePicker.
Several patches have overlooked this constraint. For example:
https://tests.stockfishchess.org/tests/view/671e7c0486d5ee47d953d226
https://tests.stockfishchess.org/tests/view/66a1de7b4ff211be9d4eccea
The implementation approach was suggested by Disservin.
Passed non-regression STC:
LLR: 3.02 (-2.94,2.94) <-1.75,0.25>
Total: 180672 W: 47072 L: 47006 D: 86594
Ptnml(0-2): 536, 19482, 50247, 19522, 549
https://tests.stockfishchess.org/tests/view/6720df6f86d5ee47d953d542
closes https://github.com/official-stockfish/Stockfish/pull/5661
No functional change
2024-10-31 10:08:34 +01:00
MinetaS and Disservin
f677aee28b
Fix net downloading script
...
The recent commit introduced a bug in the net downloading script that
the file is not downloaded correctly and the content is redirected to
stdout.
closes https://github.com/official-stockfish/Stockfish/pull/5585
No functional change
2024-09-10 23:00:41 +02:00
MinetaS and Disservin
6de2587236
Remove statScore condition in NMP
...
Eliminate the condition that is nearly 100% likelihood of being true.
Passed non-regression STC:
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 208832 W: 54053 L: 54022 D: 100757
Ptnml(0-2): 753, 24987, 52901, 25026, 749
https://tests.stockfishchess.org/tests/view/66cddb50bf8c9d8780fdabaf
Passed non-regression LTC:
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 154344 W: 39132 L: 39047 D: 76165
Ptnml(0-2): 115, 17231, 42403, 17300, 123
https://tests.stockfishchess.org/tests/view/66cfafe39de3e7f9b33d1050
closes https://github.com/official-stockfish/Stockfish/pull/5558
Bench: 1393697
2024-09-10 22:58:47 +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
MinetaS and Disservin
1b310cc87e
Export and clean up net downloading script
...
Fixes https://github.com/official-stockfish/Stockfish/issues/5564
This patch extracts the net downloading script in Makefile into an
external script file. Also the script is moderately rewritten for
improved readability and speed.
* Use wget preferentially over curl, as curl is known to have slight
overhead.
* Use command instead of hash to check if command exists. Reportedly,
hash always returns zero in some POSIX shells even when the command
fails.
* Command existence checks (wget/curl, sha256sum) are performed only
once at the beginning.
* Each of common patterns is encapsulated in a function
(get_nnue_filename, validate_network).
* Print out error/warning messages to stderr.
closes https://github.com/official-stockfish/Stockfish/pull/5563
No functional change
Co-authored-by: Disservin <disservin.social@gmail.com >
2024-09-09 18:02:27 +02:00
MinetaS and Joost VandeVondele
b976f0a101
Move DotProd code into optimized affine layer
...
This patch moves the DotProd code into the propagation function which
has sequential access optimization. To prove the speedup, the comparison
is done without the sparse layer. With the sparse layer the effect is
marginal (GCC 0.3%, LLVM/Clang 0.1%).
For both tests, binary is compiled with GCC 14.1. Each test had 50 runs.
Sparse layer included:
```
speedup = +0.0030
P(speedup > 0) = 1.0000
```
Sparse layer excluded:
```
speedup = +0.0561
P(speedup > 0) = 1.0000
```
closes https://github.com/official-stockfish/Stockfish/pull/5520
No functional change
2024-08-03 09:42:03 +02:00
MinetaS and Joost VandeVondele
2b37b151dd
Use ValueList to represent searched moves array
...
This PR replaces a pair of array and size with existing ValueList class.
Removes two local variables in search and two parameters of
update_all_stats.
Passed non-regression STC:
LLR: 2.93 (-2.94,2.94) <-1.75,0.25>
Total: 227040 W: 58472 L: 58463 D: 110105
Ptnml(0-2): 495, 23572, 65427, 23481, 545
https://tests.stockfishchess.org/tests/view/669299204ff211be9d4e98dc
closes https://github.com/official-stockfish/Stockfish/pull/5484
No functional change
2024-07-15 13:30:47 +02:00
MinetaS and Joost VandeVondele
563d268519
Simplify futility_move_count
...
This patch reverts changes from #4032 which was introduced as a speedup.
Modern compilers no longer use DIV/IDIV instructions, potentially making
the explicit branch perform worse. Since evaluations spend significantly
more time now, the impact of the speedup in search diminishes with old
compilers as well.
GCC 14.1.0 profile-build, x86-64-vnni512
```
.text:000000014010FEA9 mov ecx, [rsp+3FB8h+var_3F5C]
...
.text:000000014010FEBD mov r10d, ecx
.text:000000014010FEC0 imul r10d, ecx
.text:000000014010FEC4 mov ecx, dword ptr [rsp+3FB8h+var_3F44+4]
.text:000000014010FEC8 add r10d, 3
.text:000000014010FECC mov r11d, r10d
.text:000000014010FECF sar r11d, 1
.text:000000014010FED2 cmp [rsp+3FB8h+var_3EE7], 0
.text:000000014010FEDA cmovnz r11d, r10d
```
LLVM 18.1.18 profile-build, x86-64-vnni512
```
.text:0000000140001EDC mov [rsp+40h+arg_E0], r13
.text:0000000140001EE4 movsxd rcx, r13d
.text:0000000140001EE7 mov rax, rcx
.text:0000000140001EEA mov [rsp+40h+arg_B8], rcx
.text:0000000140001EF2 imul eax, eax
.text:0000000140001EF5 add eax, 3
.text:0000000140001EF8 mov ecx, [rsp+40h+arg_8C]
.text:0000000140001EFF shrx eax, eax, ecx
.text:0000000140001F04 mov [rsp+40h+arg_190], rax
```
Passed non-regression STC:
LLR: 2.96 (-2.94,2.94) <-1.75,0.25>
Total: 109504 W: 28420 L: 28280 D: 52804
Ptnml(0-2): 355, 12326, 29273, 12420, 378
https://tests.stockfishchess.org/tests/view/6690dc095034141ae599c5fe
closes https://github.com/official-stockfish/Stockfish/pull/5478
No functional change
2024-07-15 13:19:46 +02:00
MinetaS and Joost VandeVondele
cdb0b96e07
Clean up refutations array in MovePicker
...
This is a follow-up cleanup to a45c2bc34a .
closes https://github.com/official-stockfish/Stockfish/pull/5458
No functional change
2024-07-09 18:34:00 +02:00
MinetaS and Joost VandeVondele
180cab4438
Simplify 50 move rule dampening
...
Refactor the logic of 50 move rule dampening by removing a constant.
Passed non-regression STC:
LLR: 2.93 (-2.94,2.94) <-1.75,0.25>
Total: 35232 W: 9214 L: 8992 D: 17026
Ptnml(0-2): 114, 4081, 8999, 4313, 109
https://tests.stockfishchess.org/tests/view/665a329013d08af3c1725610
Passed non-regression LTC:
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 38406 W: 9732 L: 9530 D: 19144
Ptnml(0-2): 14, 4132, 10708, 4336, 13
https://tests.stockfishchess.org/tests/view/665a370913d08af3c1725651
https://github.com/official-stockfish/Stockfish/pull/5327
Bench: 1059739
2024-06-01 20:09:47 +02:00
MinetaS and Joost VandeVondele
c86ec8ec29
Remove cutoffCnt margin adjustment in razoring
...
Passed non-regression STC:
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 65344 W: 16767 L: 16578 D: 31999
Ptnml(0-2): 198, 7557, 16987, 7718, 212
https://tests.stockfishchess.org/tests/view/664bd895830eb9f886615a26
Passed non-regression LTC:
LLR: 2.96 (-2.94,2.94) <-1.75,0.25>
Total: 35214 W: 8999 L: 8791 D: 17424
Ptnml(0-2): 16, 3804, 9760, 4010, 17
https://tests.stockfishchess.org/tests/view/664bead5830eb9f886615a52
closes https://github.com/official-stockfish/Stockfish/pull/5278
Bench: 1296223
2024-05-21 08:46:12 +02:00
MinetaS and Joost VandeVondele
2dbb44e28d
Fix nodestime
...
1. The current time management system utilizes limits.inc and
limits.time, which can represent either milliseconds or node count,
depending on whether the nodestime option is active. There have been
several modifications which brought Elo gain for typical uses (i.e.
real-time matches), however some of these changes overlooked such
distinction. This patch adjusts constants and multiplication/division to
more accurately simulate real TC conditions when nodestime is used.
2. The advance_nodes_time function has a bug that can extend the time
limit when availableNodes reaches exact zero. This patch fixes the bug
by initializing the variable to -1 and make sure it does not go below
zero.
3. elapsed_time function is newly introduced to print PV in the UCI
output based on real time. This makes PV output more consistent with the
behavior of trivial use cases.
closes https://github.com/official-stockfish/Stockfish/pull/5186
No functional changes
2024-05-09 08:42:56 +02:00
MinetaS and Disservin
40c6a84434
Fix a compiler bug on Clang 15+ with AVX-512
...
fixes https://github.com/official-stockfish/Stockfish/issues/4450
closes https://github.com/official-stockfish/Stockfish/pull/4830
No functional change.
2023-10-23 20:39:48 +02:00
MinetaS and Joost VandeVondele
96b6c0b36f
Remove some conditions at PV improvement reduction
...
Non-regression STC:
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 63664 W: 17007 L: 16823 D: 29834
Ptnml(0-2): 163, 6998, 17336, 7162, 173
https://tests.stockfishchess.org/tests/view/6430b124028b029b01ac99f2
Non-regression LTC:
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 90016 W: 24399 L: 24258 D: 41359
Ptnml(0-2): 52, 8672, 27405, 8841, 38
https://tests.stockfishchess.org/tests/view/64310e74028b029b01ad3131
closes https://github.com/official-stockfish/Stockfish/pull/4526
Bench: 3661938
2023-04-22 10:37:14 +02:00
MinetaS and Joost VandeVondele
a5643b89fd
Remove extraReduction
...
Since bestValue becomes value and beta - alpha is always non-negative,
extraReduction is always false, hence it has no effect.
This patch includes small changes to improve readability.
closes https://github.com/official-stockfish/Stockfish/pull/4505
No functional change
2023-04-10 09:28:37 +02:00
MinetaS and Joost VandeVondele
6e63dd63a4
Use int conversion for Option class
...
The current implementation generates warnings on MSVC. However, we have
no real use cases for double-typed UCI option values now. Also parameter
tuning only accepts following three types:
int, Value, Score
closes https://github.com/official-stockfish/Stockfish/pull/4505
No functional change
2023-04-10 09:27:35 +02:00
MinetaS and Joost VandeVondele
38a80c0b47
Simplify away complexityAverage
...
Instead of tracking the average of complexity values, calculate
complexity of root position at the beginning of the search and use it as
a scaling factor in time management.
Passed non-regression STC:
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 58752 W: 15738 L: 15551 D: 27463
Ptnml(0-2): 164, 6194, 16478, 6371, 169
https://tests.stockfishchess.org/tests/view/6423010edb43ab2ba6f9424a
Passed non-regression LTC:
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 92872 W: 24865 L: 24729 D: 43278
Ptnml(0-2): 38, 8652, 28929, 8770, 47
https://tests.stockfishchess.org/tests/view/6423c1f0db43ab2ba6f9644f
closes https://github.com/official-stockfish/Stockfish/pull/4472
No functional change
2023-04-01 16:14:30 +02:00
MinetaS and Joost VandeVondele
587bc647d7
Remove non_pawn_material in NNUE::evaluate
...
After "Use NNUE complexity in search, retune related parameters" commit,
the effect of non-pawn material adjustment has been nearly diminished.
This patch removes pos.non_pawn_material as a simplification, which
passed non-regression tests with both STC and LTC.
Passed non-regression STC:
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 75152 W: 20030 L: 19856 D: 35266
Ptnml(0-2): 215, 8281, 20459, 8357, 264
https://tests.stockfishchess.org/tests/view/641ab471db43ab2ba6f7bc58
Passed non-regression LTC:
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 193864 W: 51870 L: 51829 D: 90165
Ptnml(0-2): 86, 18968, 58794, 18987, 97
https://tests.stockfishchess.org/tests/view/641b4fe6db43ab2ba6f7db96
closes https://github.com/official-stockfish/Stockfish/pull/4461
Bench: 5020718
2023-03-25 09:25:49 +01:00
MinetaS and Joost VandeVondele
2c36d1e7e7
Fix overflow in add_dpbusd_epi32x2
...
This patch fixes 16bit overflow in *_add_dpbusd_epi32x2 functions,
that can be triggered in rare cases depending on the NNUE weights.
While the code leads to some slowdown on affected architectures
(most notably avx2), the fix is simpler than some of the other
options discussed in
https://github.com/official-stockfish/Stockfish/pull/4394
Code suggested by Sopel97.
Result of "bench 4096 1 30 default depth nnue":
| Architecture | master | patch (gcc) | patch (clang) |
|---------------------|-----------|-------------|---------------|
| x86-64-vnni512 | 762122798 | 762122798 | 762122798 |
| x86-64-avx512 | 769723503 | 762122798 | 762122798 |
| x86-64-bmi2 | 769723503 | 762122798 | 762122798 |
| x86-64-ssse3 | 769723503 | 762122798 | 762122798 |
| x86-64 | 762122798 | 762122798 | 762122798 |
Following architectures will experience ~4% slowdown due to an
additional instruction in the middle of hot path:
* x86-64-avx512
* x86-64-bmi2
* x86-64-avx2
* x86-64-sse41-popcnt (x86-64-modern)
* x86-64-ssse3
* x86-32-sse41-popcnt
This patch clearly loses Elo against master with both STC and LTC.
Failed non-regression STC (256bit fix only):
LLR: -2.95 (-2.94,2.94) <-1.75,0.25>
Total: 33528 W: 8769 L: 9049 D: 15710
Ptnml(0-2): 96, 3616, 9600, 3376, 76
https://tests.stockfishchess.org/tests/view/63e6a5b44299542b1e26a485
60+0.6 @ 30000 games:
Elo: -1.67 +-1.7 (95%) LOS: 2.8%
Total: 30000 W: 7848 L: 7992 D: 14160
Ptnml(0-2): 12, 2847, 9436, 2683, 22
nElo: -3.84 +-3.9 (95%) PairsRatio: 0.95
https://tests.stockfishchess.org/tests/view/63e7ac716d0e1db55f35a660
However, a test against nn-a3dc078bafc7.nnue, which is the latest "safe"
network not causing the bug, passed with regular bounds.
Passed STC:
LLR: 2.94 (-2.94,2.94) <0.00,2.00>
Total: 160456 W: 42658 L: 42175 D: 75623
Ptnml(0-2): 487, 17638, 43469, 18173, 461
https://tests.stockfishchess.org/tests/view/63e89836d62a5d02b0fa82c8
closes https://github.com/official-stockfish/Stockfish/pull/4391
closes https://github.com/official-stockfish/Stockfish/pull/4394
No functional change
2023-02-18 13:23:18 +01:00
MinetaS and Joost VandeVondele
5a30b087c3
Expand statistics tools for engine development
...
This patch adds more debugging slots up to 32 per type and provide tools
to calculate standard deviation and Pearson's correlation coefficient.
However, due to slot being 0 at default, dbg_hit_on(c, b) has to be removed.
Initial idea from snicolet/Stockfish@d8ab604
closes https://github.com/official-stockfish/Stockfish/pull/4354
No functional change
2023-02-03 20:07:56 +01:00
MinetaS and Joost VandeVondele
7fc0f589d6
Add -Wconditional-uninitialized when using Clang
...
Add -Wconditional-uninitialized as it is not controlled by -Wall.
closes https://github.com/official-stockfish/Stockfish/pull/4371
No functional change
2023-02-02 17:49:23 +01:00
MinetaS and Joost VandeVondele
e4e61cd9cc
Remove maxNextDepth
...
This patch allows full PV search to have double extensions as well when
extension == 1 && doDeeperSearch && doEvenDeeperSearch && !doShallowerSearch
is true, which is extremely rare to occur.
Passed non-regression STC (master 3d2381d ):
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 370824 W: 97835 L: 97974 D: 175015
Ptnml(0-2): 1073, 38814, 105731, 38767, 1027
https://tests.stockfishchess.org/tests/view/63c89416a83c702aac08314c
Passed non-regression LTC (master 3d2381d ):
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 306048 W: 81173 L: 81237 D: 143638
Ptnml(0-2): 117, 27977, 96901, 27911, 118
https://tests.stockfishchess.org/tests/view/63cc4e84344bb01c191b2658
Bench: 4208265
2023-01-28 16:54:30 +01:00
MinetaS and Joost VandeVondele
20b0226462
Fix a dependency bug
...
Instead of allowing .depend for specific build-related targets, filter
non-build-related targets (i.e. help, clean) so that other targets can
normally execute .depend target.
closes https://github.com/official-stockfish/Stockfish/pull/4293
No functional change
2022-12-20 08:14:19 +01:00
MinetaS and Joost VandeVondele
74fb936dbd
Invoke .depend only on build targets
...
Add a constraint so that the dependency build only occurs when users
actually run build tasks.
This fixes a bug on some systems where gcc/g++ is not available.
closes https://github.com/official-stockfish/Stockfish/pull/4255
No functional change
2022-12-08 20:48:20 +01:00
MinetaS and Joost VandeVondele
234d2156fd
Apply -flto-partition=one / -flto=full
...
This patch fixes a potential bug derived from an incompatibility between LTO and top-level assembly code (INCBIN).
Passed non-regression STC (master e90341f ):
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 119352 W: 31986 L: 31862 D: 55504
Ptnml(0-2): 439, 12624, 33400, 12800, 413
https://tests.stockfishchess.org/tests/view/634aacf84bc7650f0755188b
closes https://github.com/official-stockfish/Stockfish/pull/4201
No functional change
2022-10-23 19:58:47 +02:00