MultiPV support - #418
Merged
Merged
Conversation
Contributor
lgtm, first one probably good to avoid problems with some guis |
Ciekce
marked this pull request as ready for review
July 21, 2026 19:29
Contributor
|
lgtm |
Merged
TheRealGioviok
pushed a commit
that referenced
this pull request
Aug 6, 2026
Implemented syzygy tablebase support via Pyrrhic. Implementation is essentially ported (as with #418) from stormphrax, complete with correct multipv handling and handling for repetition edge cases. Bitboard attacks with sliders based on jw's implementation in [akimbo](https://github.com/jw1912/akimbo) are also included. This will need to be adressed to reclaim some speed. The need of inclusion of pyrrhic wholly in the vendor folder (rather than a lazy download when building) is due to the problem with importing the bb attacks headers (which we purposefully left in the main repository, so that we might use them in eval in the future). Also identified a TODO in uci.cpp, as SyzygyPath currently does not accept values with spaces Passed STC with 6-Man: ``` Test | tb Elo | 16.62 +- 5.82 (95%) SPRT | 8.0+0.08s Threads=1 Hash=16MB LLR | 2.97 (-2.94, 2.94) [0.00, 3.00] Games | N: 4226 W: 1217 L: 1015 D: 1994 Penta | [32, 404, 1063, 558, 56] ``` https://ob.cwchess.org/test/1551/ Passed LTC with 6-Man: ``` Test | tb Elo | 18.18 +- 5.70 (95%) SPRT | 40.0+0.40s Threads=1 Hash=64MB LLR | 2.96 (-2.94, 2.94) [0.00, 3.00] Games | N: 3366 W: 896 L: 720 D: 1750 Penta | [12, 263, 961, 431, 16] ``` https://ob.cwchess.org/test/1552/ Bench: 13841007
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
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.
Design essentially ported from Stormphrax. Behaviour matches SP's exactly (barring any bugs I've missed).
Marked as draft because no test has been run, and there are implementation decisions from SP that I am unsure are wanted in CW:when the UCI optionMultiPVis set to 1 (i.e. multipv disabled), themultipv Noutput in info strings is suppressedIn the (ideally impossible) scenario that a root move could not be found,std::terminate()is calledhttps://ob.cwchess.org/test/1528/
Almost all the machinery for a future working TB implementation is also present. The root move implementation allows for some other cleanup (notably moving node counts from the enormous table into root moves), but that is out of the scope of this PR. "Verbose MultiPV" as I call it (printing info lines after every single PV is searched, after a delay) is also omitted, as it requires some somewhat involved refactoring of how/when info lines are printed.
A side effect of this implementation is that partial depths are now accepted (safely) if search stops mid-iteration.