forked from official-stockfish/Stockfish
-
Notifications
You must be signed in to change notification settings - Fork 3
New master #462
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
New master #462
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
No functional change Closes #1173
A pawn (according to all the searched positions of a bench run) is not supported 85% of the time, (in current master it is either isolated, backward or "unsupported"). So it made sense to try moving the S(17, 8) "unsupported" penalty value into the base pawn value hoping for a more representative pawn value, and accordingly a) adjust backward and isolated so that they stay more or less the same as master b) increase the mg connected bonus in the supported case by S(17, 0) and let the Connected formula find a suitable eg value according to rank. Tested as a simplification SPRT(-3, 1) Passed STC http://tests.stockfishchess.org/tests/view/5970dbd30ebc5916ff649dd6 LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 19613 W: 3663 L: 3540 D: 12410 Passed LTC http://tests.stockfishchess.org/tests/view/597137780ebc5916ff649de3 LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 24721 W: 3306 L: 3191 D: 18224 Bench: 5581946 Closes #1179
Raise a little bit the values in the connected pawns seed[] array. STC: LLR: 2.96 (-2.94,2.94) [0.00,4.00] Total: 99033 W: 17939 L: 17448 D: 63646 http://tests.stockfishchess.org/tests/view/597355630ebc5916ff649e3e LTC: LLR: 2.95 (-2.94,2.94) [0.00,4.00] Total: 48044 W: 6371 L: 6099 D: 35574 http://tests.stockfishchess.org/tests/view/597596610ebc5916ff649eba Bench: 5608839 Closes #1182
as a lower level routine, movepicker should not depend on the search stack or the thread class, removing a circular dependency. Instead of copying the search stack into the movepicker object, as well as accessing the thread class for one of the histories, pass the required fields explicitly to the constructor (removing the need for thread.h and implicitly search.h in movepick.cpp). The signature is thus longer, but more explicit: Also some renaming of histories structures while there. passed STC [-3,1], suggesting a small elo impact: LLR: 3.13 (-2.94,2.94) [-3.00,1.00] Total: 381053 W: 68071 L: 68551 D: 244431 elo = -0.438 +- 0.660 LOS: 9.7% No functional change.
No functional change.
moved_piece is the only variable in search not using camel case
Better split code that should be run at startup from code run at ucinewgame. Also fix several races when 'bench', 'perft' and 'ucinewgame' are sent just after 'bestomve' from the engine threads are still running. Also use a specific UI thread instead of main thread when setting up the Position object used by UI uci loop. This fixes a race when sending 'eval' command while searching. We accept a race on 'setoption' to allow the GUI to change an option while engine is searching withouth stalling the pipe. Note that changing an option while searchingg is anyhow not mandated by UCI protocol. No functional change.
Limits::ponder was used as a signal between uci and search threads,
but is not an atomic variable, leading to the following race as
flagged by a sanitized binary.
Expect input:
```
spawn ./stockfish
send "uci\n"
expect "uciok"
send "setoption name Ponder value true\n"
send "go wtime 4000 btime 4000\n"
expect "bestmove"
send "position startpos e2e4 d7d5\n"
send "go wtime 4000 btime 4000 ponder\n"
sleep 0.01
send "ponderhit\n"
expect "bestmove"
send "quit\n"
expect eof
```
Race:
```
WARNING: ThreadSanitizer: data race (pid=7191)
Read of size 4 at 0x0000005c2260 by thread T1:
Previous write of size 4 at 0x0000005c2260 by main thread:
Location is global 'Search::Limits' of size 88 at 0x0000005c2220 (stockfish+0x0000005c2260)
```
The reason of teh race is that ponder is not just set in UCI go()
assignment but also is signaled by an async ponderhit in uci.cpp:
else if (token == "ponderhit")
Search::Limits.ponder = 0; // Switch to normal search
The fix is to add an atomic bool to the threads structure to
signal the ponder status, letting Search::Limits to reflect just
what was passed to 'go'.
No functional change.
This reverts commit 5410424. After the commit pondering is broken, so revert for now. I will resubmit with a proper fix. The issue is mine, Joost original code is correct. No functional change.
But this time correctly set Threads.ponder We avoid using 'limits' for passing pondering flag because we don't want to have 2 ponder variables in search scope: Search::Limits.ponder and Threads.ponder. This would be confusing also because limits.ponder is set at the beginning of the search and never changes, instead Threads.ponder can change value asynchronously during search. No functional change.
In this rare case (e.g. go infinite on a stalemate), just spin till ponderhit/stop comes. The Thread::wait() is a renmant of the old YBWC code, today with lazy SMP, threads don't need to wait when outside of their idle loop. No functional change.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.