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 |
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.