Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: protonspring
Date: Wed Aug 29 02:49:10 2018 +0200 Timestamp: 1535503750 Remove PawnsOnBothFlanks It looks like PawnsOnBothFlanks can be removed from initiative(). A barrage of tests seem to confirm that the adjustment to -110 does not gain elo to offset any potential loss by removing PawnsOnBothFlanks. STC LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 22014 W: 4760 L: 4639 D: 12615 Elo +1.91 http://tests.stockfishchess.org/tests/view/5b7f50cc0ebc5902bdbb3a3e LTC LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 40561 W: 6667 L: 6577 D: 27317 Elo +0.77 http://tests.stockfishchess.org/tests/view/5b801f9f0ebc5902bdbb4467 The barrage of 0,4 tests on the -136 value are in my ps_tunetests branch. http://tests.stockfishchess.org/tests/user/protonspring Closes https://github.com/official-stockfish/Stockfish/pull/1751 Bench: 4413173 ------------- How to continue from there? The fact that endgames with all the pawns on only one flank are drawish is a well-known chess idea, so it seems quite strange that this can be removed so easily without losing Elo. In the past there had been attempts to improve on PawnsOnBothFlanks with similar concepts (for instance using the pawn span value), but the tests were at best neutral. Maybe Stockfish is now mature enough that these refined ideas would work to replace PawnsOnBothFlanks? see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: MJZ1977
Date: Wed Aug 29 02:28:09 2018 +0200 Timestamp: 1535502489 Fix bug with "excludedMove" for probcut Bugfix: "excludedMove" has to be skipped in the probcut loop too. If it is not skipped, the probcut can exit quickly with a wrong return value corresponding to the excluded move. See the following forum thread for a discussion: https://groups.google.com/forum/?fromgroups=#!topic/fishcooking/GGithf_VwSU STC : LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 17130 W: 3747 L: 3617 D: 9766 Elo +2.64 http://tests.stockfishchess.org/tests/view/5b8460c40ebc5902bdbb999a LTC : LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 12387 W: 2064 L: 1930 D: 8393 Elo +3.76 http://tests.stockfishchess.org/tests/view/5b8466f90ebc5902bdbb9a21 To go further : it can be perhaps useful to tune the singular extension search parameters. Closes https://github.com/official-stockfish/Stockfish/pull/1754 Bench: 4308541 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Steinar H. Gunderson
Date: Wed Aug 29 02:00:20 2018 +0200 Timestamp: 1535500820 Shrink the hash table of tablebases back to 4096 entries There is no need to make this as large as 65536 just for the sake of the single 7-man tablebase that happens to have the key 0xf9247fff. Idea for the fix by Ronald de Man, who suggested simply to allow more buckets past the end. We also implement Robin Hood hashing for the hash table, which takes the worst -case search for full 7-man tablebases down from 68 to 11 probes (Also takes the average probe length from 2.06 to 2.05). For a table with 8K entries, the corresponding numbers would be worst-case from 9 to 4, with average from 1.30 to 1.29. https://github.com/official-stockfish/Stockfish/pull/1747 No functional change see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Ondrej Mosnacek
Date: Wed Aug 29 01:24:45 2018 +0200 Timestamp: 1535498685 Refactor pure static eval code This commit tries to make the new pure static eval code more readable by splitting up the nested assignments into separate lines and making a few more cosmetic tweaks. No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: protonspring
Date: Wed Aug 29 01:07:38 2018 +0200 Timestamp: 1535497658 make DistanceRing more consistent This is a non-functional change. By pre-incrementing minKingPawnDistance instead of post-incrementing, we can remove this -1. This also makes DistanceRing more consistent with the rest of stockfish since it now holds an actual "distance" instead of a less natural distance-1. In current master, PseudoAttacks[KING][ksq] == DistanceRingBB[ksq][0] With this patch, it will be PseudoAttacks[KING][ksq] == DistanceRingBB[ksq][1] ie squares at distance 1 from the king. This is more natural use of distance. The current array size DistanceRingBB[SQUARE_NB][8] is still OK with the new definition, because maximum distance between two squares on a chess board is seven (for example Kh1 and a8). No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Vizvezdenec
Date: Wed Aug 29 00:53:31 2018 +0200 Timestamp: 1535496811 Tweak stat bonus formula Tweak stat bonus formula on top of latest elo gain by @snicolet STC http://tests.stockfishchess.org/tests/view/5b830a810ebc5902bdbb7e9c LLR: 2.95 (-2.94,2.94) [0.00,4.00] Total: 27797 W: 6113 L: 5842 D: 15842 Elo +3.39 LTC http://tests.stockfishchess.org/tests/view/5b831f2c0ebc5902bdbb8038 LLR: 2.95 (-2.94,2.94) [0.00,4.00] Total: 13655 W: 2294 L: 2099 D: 9262 Elo +4.96 I think that more elo can be found in tweaks of this parameters so I plan to further try some "hand-tuning", including increasing/decreasing ratio of two constants and making bonus assimetric to 0. Thx to @AndyGrant for helping with github and @jerrydonaldwatson for original idea. Closes https://github.com/official-stockfish/Stockfish/pull/1748 Bench: 4172767 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: VoyagerOne
Date: Wed Aug 29 00:41:53 2018 +0200 Timestamp: 1535496113 Don't modify Eval with search stats at ttHits STC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 28344 W: 6148 L: 6040 D: 16156 Elo +1.32 http://tests.stockfishchess.org/tests/view/5b7d6b4e0ebc5902bdbb1914 LTC: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 41084 W: 6769 L: 6680 D: 27635 Elo +0.75 http://tests.stockfishchess.org/tests/view/5b7d7f5b0ebc5902bdbb1b85 Bench: 4457440 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Stefan Geschwentner
Date: Mon Aug 20 21:52:29 2018 +0200 Timestamp: 1534794749 Store only unchanged static evaluations in TT A recent commit introduced a decrease of the static evaluation of an inner node dependent on the previous stat score, which finally was also stored in the transposition table. Now only the unchanged static evaluation are stored there. Remark: For the case that a static evaluation can be retrieved from the transposition table the value is now used unchanged. Another test which also applies the modification in this case failed: http://tests.stockfishchess.org/tests/view/5b7af6df0ebc5902bdbae2f6 STC: LLR: 2.95 (-2.94,2.94) [0.00,5.00] Total: 6707 W: 1547 L: 1383 D: 3777 Elo +8.50 http://tests.stockfishchess.org/tests/view/5b7a92df0ebc5902bdbadcf3 LTC: LLR: 2.95 (-2.94,2.94) [0.00,5.00] Total: 36203 W: 6046 L: 5781 D: 24376 Elo +2.54 http://tests.stockfishchess.org/tests/view/5b7abaa10ebc5902bdbadfa9 Closes https://github.com/official-stockfish/Stockfish/pull/1742 Bench: 4457440 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Stéphane Nicolet
Date: Sat Aug 18 01:23:36 2018 +0200 Timestamp: 1534548216 Use an affine formula to mix stats and eval Follow-up for the previous patch: we use an affine formula to mix stats and evaluation in search. The idea is to give a bonus if the previous move of the opponent was historically bad, and a malus if the previous move of the opponent was historically good. More precisely, if x is the stat score of the previous move by the opponent, we implement the following formulas to tweak the evaluation at an internal node of the tree for our pruning decisions at this node: if x = 0, use v' = eval(P) if x > 0, use v' = eval(P) - 5 - x/1024 if x < 0, use v' = eval(P) + 5 - x/1024 For reference, the previous master had this simpler rule: if x > 0, use v' = eval(P) - 10 if x <= 0, use v' = eval(P) STC: LLR: 2.95 (-2.94,2.94) [0.00,5.00] Total: 29322 W: 6359 L: 6088 D: 16875 Elo +3.21 http://tests.stockfishchess.org/tests/view/5b76a5980ebc5902bdba957f LTC: LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 30893 W: 5154 L: 4910 D: 20829 Elo +2.74 http://tests.stockfishchess.org/tests/view/5b76ca6d0ebc5902bdba9914 Closes https://github.com/official-stockfish/Stockfish/pull/1740 Bench: 4592766 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: VoyagerOne
Date: Fri Aug 17 11:40:29 2018 +0200 Timestamp: 1534498829 Mix search stats with evaluation Mix search stats with evaluation: if the opponent's move has a good historyStat, then decrease the evaluation of the internal node a bit for the pruning decisions during search. STC; LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 72083 W: 15683 L: 15203 D: 41197 Elo +2.31 http://tests.stockfishchess.org/tests/view/5b74c3ea0ebc5902bdba7d41 LTC: LLR: 2.95 (-2.94,2.94) [0.00,5.00] Total: 29104 W: 4867 L: 4630 D: 19607 Elo +2.83 http://tests.stockfishchess.org/tests/view/5b7565000ebc5902bdba851b Closes https://github.com/official-stockfish/Stockfish/pull/1738 Bench: 4514101 ----------- How to continue from there? • the use of the previous stat score can probably be simplified in lines 587 and 716 • we could try to use a continuous bonus based on the previous stat score, instead of just a fixed offset of -10 when the opponent previous move was good. ---------- Comments by Stefan Geschwentner: Interesting idea. Because only the eval in search is tweak this should only influence the eval and static eval used at inner nodes, and not on the return search value (which comes in the end from quiescence search), except through saving in TT followed by a TT cutoff. So essentialy this effects diverse pruning/reduction parts -- eval and static eval are lowered for good opponent moves: • tt cutoff (ttValue) • improving (static eval) • more razoring (eval) • less futility pruning (eval) • less null move pruning (eval + static eval) (but with little more depth) • more probcut (static eval) • more move futility pruning (static eval) see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: protonspring
Date: Fri Aug 17 10:21:20 2018 +0200 Timestamp: 1534494080 Simplify king file dependancy in evaluate_shelter() Remove the special value we used for the file of the king in the evaluate_shelter() function, and compensate by tweaking some of the ShelterStrength[] array values. STC LLR: 2.94 (-2.94,2.94) [-3.00,1.00] Total: 17069 W: 3782 L: 3652 D: 9635 Elo +2.65 http://tests.stockfishchess.org/tests/view/5b75eb0d0ebc5902bdba8f3d LTC LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 42639 W: 6973 L: 6887 D: 28779 Elo +0.70 http://tests.stockfishchess.org/tests/view/5b75fd7f0ebc5902bdba906b Closes https://github.com/official-stockfish/Stockfish/pull/1739 Bench: 4639508 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Stéphane Nicolet
Date: Tue Aug 14 10:12:31 2018 +0200 Timestamp: 1534234351 Double weight of capture history We double in this patch the weight of the capture history table in the local scoring of captures for move ordering. The capture history table is indexed by the triplet (capturing piece, capture square, captured piece) and gets information like "it seems to have been historically good in that part of the search tree to capture a pawn with a rook on g3, even if it seems to lose material", and affect the normaly pure « Most Valuable Victim » ordering of captures. Finished yellow at STC after 228842 games (posting a +1.36 Elo gain): LLR: -2.95 (-2.94,2.94) [0.00,4.00] Total: 228842 W: 50894 L: 50152 D: 127796 Elo +1.13 http://tests.stockfishchess.org/tests/view/5b714bb00ebc5902bdba332d Passed LTC: LLR: 2.96 (-2.94,2.94) [0.00,4.00] Total: 43251 W: 7425 L: 7131 D: 28695 Elo +2.36 http://tests.stockfishchess.org/tests/view/5b71c7d40ebc5902bdba3e51 Thanks to user Vizvezdenec for running the LTC test. Closes https://github.com/official-stockfish/Stockfish/pull/1736 Bench: 4272361 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Alain SAVARD
Date: Tue Aug 14 08:36:27 2018 +0200 Timestamp: 1534228587 Remove pawncount array in imbalance This is a natural follow up to last commit where values on the QuadraticOurs diagonal and some piece value deltas were changed. @Stefano80 tried to simplify the newly introduced pawncount array using QuadraticOurs[1][1] =52 and a -30 adjustment on pawn values His STC [-3,1] was green http://tests.stockfishchess.org/tests/view/5b707f5b0ebc5902bdba2745 but not his LTC[-3,1] http://tests.stockfishchess.org/tests/view/5b7095700ebc5902bdba2a49 So I started a 80000 30+0.3 SPSA on the QuadraticOurs diagonal and on the piece values using @Stefano80 start values. SPSA gave the new values QuadraticOurs[1][1] =38 and a -33 on pawn values (the other changes on QuadraticOurs were kept, but were not ignificant according to this test http://tests.stockfishchess.org/tests/view/5b710ccb0ebc5902bdba2f27) STC http://tests.stockfishchess.org/tests/view/5b710b220ebc5902bdba2f19 LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 50902 W: 11214 L: 11150 D: 28538 Elo +0.44 LTC http://tests.stockfishchess.org/tests/view/5b7124ef0ebc5902bdba3106 LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 34271 W: 5852 L: 5753 D: 22666 Elo +1.00 Closes https://github.com/official-stockfish/Stockfish/pull/1735 bench: 4738555 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: GuardianRM
Date: Sun Aug 12 18:40:11 2018 +0200 Timestamp: 1534092011 Non-linear bonus for pawn count This patch introduces a non-linear bonus for pawns, along with some (linear) corrections for the other pieces types. The original values were obtained by a massive non-linear tuning of both pawns and other pieces by GuardianRM, while Alain Savard and Chris Cain later simplified the patch by observing that, apart from the pawn case, the tuned corrections were in fact almost affine and could be incorporated in our current code base via the piece values in types.h (offset) and the diagonal of the quadratic matrix (slope). See discussion in PR#1725 : https://github.com/official-stockfish/Stockfish/pull/1725 STC: LLR: 2.97 (-2.94,2.94) [0.00,5.00] Total: 42948 W: 9662 L: 9317 D: 23969 Elo +2.79 http://tests.stockfishchess.org/tests/view/5b6ff6e60ebc5902bdba1d87 LTC: LLR: 2.97 (-2.94,2.94) [0.00,5.00] Total: 19683 W: 3409 L: 3206 D: 13068 Elo +3.58 http://tests.stockfishchess.org/tests/view/5b702dbd0ebc5902bdba216b How to continue from there? - Maybe the non-linearity for the pawn value could be somewhat tempered again and a simpler linear correction for pawns would work? Closes https://github.com/official-stockfish/Stockfish/pull/1734 Bench: 4681496 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Stefano Cardanobile
Date: Sun Aug 12 10:09:30 2018 +0200 Timestamp: 1534061370 Combo of several promising parameter tweaks Combo of several tuning patches which finished yellow at LTC. [STC](http://tests.stockfishchess.org/tests/view/5b6ead340ebc5902bdba14ce) LR: 2.95 (-2.94,2.94) [0.00,4.00] Total: 10668 W: 2445 L: 2239 D: 5984 Elo +6.71 Elo: 6.25 [1.76,10.69] (95%) [LTC](http://tests.stockfishchess.org/tests/view/5b6eb50e0ebc5902bdba151f) LLR: 2.96 (-2.94,2.94) [0.00,4.00] Total: 23761 W: 4155 L: 3923 D: 15683 Elo +3.39 Elo: 3.02 [0.29,5.67] (95%) Original patches: - [Piece values](http://tests.stockfishchess.org/tests/view/5b6d2cc00ebc5902bdba02d5) by Stefano Cardanobile - [Stat bonus](http://tests.stockfishchess.org/tests/view/5b6adbc90ebc5902bdb9da73) by Stefan Geschwentner - [Rook on pawn](http://tests.stockfishchess.org/tests/view/5b62a95b0ebc5902bdb961c0) by Mark Tenzer - [Hanging bonus](http://tests.stockfishchess.org/tests/view/5b5d2fa00ebc5902bdb90855) by Ivan Ilvec - [ss tweak](http://tests.stockfishchess.org/tests/view/5b58b7240ebc5902bdb89025) by miguel-l Bench: 4694813 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Jerry Donald Watson
Date: Sun Aug 12 09:54:16 2018 +0200 Timestamp: 1534060456 Simple razoring: depth 1 only, no distinction between PV / NonPV We simplify the razoring logic by applying it to all nodes at depth 1 only. An added advantage is that only one razor margin is needed now, and we treat PV and Non-PV nodes in the same manner. How to continue? - There may be some conditions in which depth 2 razoring is beneficial. - We can see whether the razor margin can be tuned, perhaps even with a different value for PV nodes. - Perhaps we can unify the treatment of PV and Non-PV nodes in other parts of the search as well. STC: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 5474 W: 1281 L: 1127 D: 3066 Elo +9.78 http://tests.stockfishchess.org/tests/view/5b6de3b20ebc5902bdba0d1e LTC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 62670 W: 10749 L: 10697 D: 41224 Elo +0.29 http://tests.stockfishchess.org/tests/view/5b6dee340ebc5902bdba0eb0 In addition, we ran a fixed LTC test against a similar patch which also passed SPRT [-3, 1]: ELO: 0.23 +-2.1 (95%) LOS: 58.6% Total: 36412 W: 6168 L: 6144 D: 24100 Elo +0.23 http://tests.stockfishchess.org/tests/view/5b6e83940ebc5902bdba1485 We are opting for this patch as the more logical and simple of the two, and it appears to be no less strong. Thanks in particular to @DU-jdto for input into this patch. Bench: 4476945 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Miguel Lahoz
Date: Fri Aug 10 06:16:29 2018 +0200 Timestamp: 1533874589 Remove Condition For Passed Pawns Currently, we do not consider pawns passed if there is another pawn of the same color in front of them. It appears that this condition is not necessary. The idea is that the doubled pawns are likely to be weak and one of them will be likely captured anyway. On the other hand, if we do somehow manage to promote a pawn, then the pawn behind it becomes passed as well. In any case, the end result is we end up with an extra potentially passed pawn. The current evaluation for passed pawns already handles this case by also scaling down this effect. STC: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 28291 W: 6287 L: 6178 D: 15826 Elo +1.34 http://tests.stockfishchess.org/tests/view/5b6c4b960ebc5902bdb9f256 LTC: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 30717 W: 5256 L: 5151 D: 20310 Elo +1.19 http://tests.stockfishchess.org/tests/view/5b6c82980ebc5902bdb9f863 Bench: 4938285 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Stefan Geschwentner
Date: Thu Aug 9 14:45:35 2018 +0200 Timestamp: 1533818735 LMR simplification Unify the "quiet" and "non-quiet" reduction rules for use at any kind of moves. The idea behind it was that both rules reduce at similiar cases in master: one directly for late previous moves and the other indirectly by using a bad stat score which is used for most move sorting and so approximates the late move condition. For captures/promotions the old rule was triggered in 25% but the new rule only for 3% of all cases (so now more reductions are done, whereas for quiet moves reductions keep the same level). STC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 162327 W: 35976 L: 36134 D: 90217 Elo -0.34 http://tests.stockfishchess.org/tests/view/5b6a9a430ebc5902bdb9d5c1 LTC: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 29570 W: 5083 L: 4976 D: 19511 Elo +1.26 http://tests.stockfishchess.org/tests/view/5b6bc5d00ebc5902bdb9e9d6 Bench: 4526980 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Stefano Cardanobile
Date: Wed Aug 8 17:58:41 2018 +0200 Timestamp: 1533743921 First check threshold in space evaluation Currently, we first calculate some bitboards at the top of Evaluation::space() and then check whether we actually need them. Invert the ordering. Of course this does not make a difference in current master because the constexpr bitboard calculations are in fact done at compile time by any decent compiler, but I find my version a bit healthier since it will always meet or exceed current implementation even if we eventually change the spaceMask to something not contsexpr. No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: FauziAkram
Date: Wed Aug 8 17:49:16 2018 +0200 Timestamp: 1533743356 King Psqt Tuning After a session of tuning for King Psqt I got some new values, which was later tweaked manually by me Fauzi, to result in an Elo-gain patch which seems to scale pretty well: STC: LLR: -2.96 (-2.94,2.94) [0.00,4.00] Total: 100653 W: 22550 L: 22314 D: 55789 Elo +0.81 LTC: LLR: 2.96 (-2.94,2.94) [0.00,4.00] Total: 147079 W: 25584 L: 24947 D: 96548 Elo +1.50 Bench: 4669050 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Stefano Cardanobile
Date: Wed Aug 8 17:34:12 2018 +0200 Timestamp: 1533742452 Introduce voting system for best move selection Introduce voting system for best move selction in multi-threads mode. Joint work with Stefan Geschwentner, based on ideas introduced by Michael Stembera. Moves are upvoted by every thread using the margin to the minimum score across threads and the completed depth. First thread voting for the winner move is selected as best thread. Passed STC, LTC. A further LTC test with only 4 threads failed with positive score. A LTC with 31 threads was stopped with LLR 0.77 after 25k games to avoid use of excessive resources (equivalent to 1.5M STC games). Similar ideas were proposed by Michael Stembera 2 years ago #507, #508. This implementation seems simpler and more understandable, the results slightly more promising. Further possible work: 1) Tweak of the formula using for assigning votes. 2) Use a different baseline for the score dependent part: maximum score or winning probability could make more sense. 3) Assign votes in `Thread::Search` as iterations are completed and use voting results to stop search. 4) Select best thread as the threads voting for best move with the highest completed depth or, alternatively, vote on PV moves. Link to SPRT tests [stopped LTC, 31 threads 20+0.02](http://tests.stockfishchess.org/tests/view/5b61dc090ebc5902bdb95192) LLR: 0.77 (-2.94,2.94) [0.00,5.00] Total: 25602 W: 3977 L: 3850 D: 17775 Elo +1.72 Elo: 1.70 [-0.68,4.07] (95%) [passed LTC, 8 threads 20+0.02](http://tests.stockfishchess.org/tests/view/5b5df5180ebc5902bdb9162d) LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 44478 W: 7602 L: 7300 D: 29576 Elo +2.36 Elo: 1.92 [-0.29,3.94] (95%) [failed LTC, 4 threads 20+0.02](http://tests.stockfishchess.org/tests/view/5b5f39ef0ebc5902bdb92792) LLR: -2.94 (-2.94,2.94) [0.00,5.00] Total: 29922 W: 5286 L: 5285 D: 19351 Elo +0.01 Elo: 0.48 [-1.98,3.10] (95%) [passed STC, 4 threads 5+0.05](http://tests.stockfishchess.org/tests/view/5b5dbf0f0ebc5902bdb9131c) LLR: 2.97 (-2.94,2.94) [0.00,5.00] Total: 9108 W: 2033 L: 1858 D: 5217 Elo +6.68 Elo: 6.11 [1.26,10.89] (95%) No functional change (in simple threat mode) see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Marco Costalba
Date: Wed Aug 1 12:40:12 2018 +0200 Timestamp: 1533120012 Improve Stats definition Use operator const T&() instead of operator T() to avoid possible costly hidden copies of non-scalar nested types. Currently StatsEntry has a single member T, so assuming sizeof(StatsEntry) == sizeof(T) it happens to work, but it's better to use the size of the proper entry type in std::fill. Note that current code works because std::array items are ensured to be allocated in contiguous memory and there is no padding among nested arrays. The latter condition does not seem to be strictly enforced by the standard, so be careful here. Finally use address-of operator instead of get() to fully hide the wrapper class StatsEntry at calling sites. For completness add the arrow operator too and simplify the C++ code a bit more. Same binary code as previous master under the Clang compiler. No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Marco Costalba
Date: Tue Jul 31 11:56:10 2018 +0200 Timestamp: 1533030970 Small tweaks to recent code changes As a note, current 2 LMR conditions on stat score could be simplified in a single line: r -= ((ss->statScore >= 0) - ((ss-1)->statScore >= 0)) * ONE_PLY; We keep them splitted in 2 "if" statements because are easier to (immediately) read. No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: noobpwnftw
Date: Tue Jul 31 11:24:28 2018 +0200 Timestamp: 1533029068 7-pieces Syzygy tablebase support This is the first patch teaching Stockfish how to use the 7-pieces Syzygy tablebase currently calculated by Bujun Guo (@noobpwnftw) and Ronald de Man (@syzygy1). The 7-pieces database are so big that they required a change in the internal format of the files (technically, some DTZ values are 16 bits long, so this had to be stored as wide integers in the Huffman tree). Here are the estimated file size for the 7-pieces Syzygy files, compared to the 151G of the 6-pieces Syzygy: ``` 7.1T ./7men_testing/4v3_pawnful (ongoing, 120 of 325 sets remaining) 2.4T ./7men_testing/4v3_pawnless 2.3T ./7men_testing/5v2_pawnful 660G ./7men_testing/5v2_pawnless 117G ./7men_testing/6v1_pawnful 87G ./7men_testing/6v1_pawnless ``` Some pointers to download or recalculate the tables: Location of original files, by Bujun Guo: ftp://ftp.chessdb.cn/pub/syzygy/ Mirrors: http://tablebase.sesse.net/ (partial) http://tablebase.lichess.ovh/tables/standard/7/ Generator code: https://github.com/syzygy1/tb/ Closes https://github.com/official-stockfish/Stockfish/pull/1707 Bench: 5591925 (No functional change if SyzygyTB is not used) ---------------------- Comment by Leonardo Ljubičić (@DragonMist) This is an amazing achievement, generating and being able to use 7 men syzygy on the fly. Thank you for your efforts @noobpwnftw !! Looking forward how this will work in real life, and expecting some trade off between gaining perfect play and slow disc Access, but once the disc speed and space is not a problem, I expect 7 men to yield something like 30 elo at least. ----------------------- Comment by Michael Byrne (@MichaelB7) This definitely has a bright future. I turned off the 50 move rule (ala ICCF new rules) for the following position: `[d]8/8/1b6/8/4N2r/1k6/7B/R1K5 w - - 0 1` This position is a 451 ply win for white (sans the 50 move rule, this position was identified by the generator as the longest cursed win for white in KRBN v KRB). Now Stockfish finds it instantly (as it should), nice work 👊👍 . ``` dep score nodes time 7 +132.79 4339 0:00.00 Rb1+ Kc4 Nd6+ Kc5 Bg1+ Kxd6 Rxb6+ Kc7 Be3 Rh2 Bd4 6 +132.79 1652 0:00.00 Rb1+ Kc4 Nd2+ Kd5 Rxb6 Rxh2 Nf3 Rf2 5 +132.79 589 0:00.00 Rb1+ Kc4 Rxb6 Rxh2 Nf6 Rh1+ Kb2 4 +132.79 308 0:00.00 Rb1+ Kc4 Nd6+ Kc3 Rxb6 Rxh2 3 +132.79 88 0:00.00 Rb1+ Ka4 Nc3+ Ka5 Ra1+ Kb4 Ra4+ Kxc3 Rxh4 2 +132.79 54 0:00.00 Rb1+ Ka4 Nc3+ Ka5 Ra1+ Kb4 1 +132.7 ``` see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Stéphane Nicolet
Date: Mon Jul 30 08:26:48 2018 +0200 Timestamp: 1532932008 Introduce tropism measure in king danger This patch adds the tropism measure as a new term in the king danger variable. Since we then trasform this variable as a Score via a quadratic formula, the main effect of the patch is the positive correlation of the tropism measure with some checks and pins information already present in the king danger code. STC: LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 6805 W: 1597 L: 1431 D: 3777 Elo +8.48 http://tests.stockfishchess.org/tests/view/5b5df8d10ebc5902bdb91699 LTC: LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 32872 W: 5782 L: 5523 D: 21567 Elo +2.74 http://tests.stockfishchess.org/tests/view/5b5e08d80ebc5902bdb917ee How to continue from there? • it may be possible to use CloseEnemies=S(7,0) • we may want to try incorporating other strategic features in the quadratic king danger. Closes https://github.com/official-stockfish/Stockfish/pull/1717 Bench: 5591925 see source |