Polyglot and Multi-PV
Posted: 23 Nov 2009, 20:51
Current Polyglots do not work conveniently in multi-variation mode with WinBoard. They do send thinking output with lower depth than they previously sent, which is a signal to WinBoard to clear te Engine-Output window. And what is worse, this is always information that was already sent before: there are many duplicate Thinking-Output lines in the multi-PV output, leading to a totally cluttered Engine-Output display when no clearing would take place.
This is not the way how multi-variation mode should work in WB protocol. The engine should send every line it wants displayed only once, and in order of increasing depth. WinBoard will take care of sorting the lines by score within one depth.
So what I need is a Polyglot that removes duplicate output lines, and lines of lower depth than the maximum depth given. I guess this should not be so difficult to implement. In UCI protocol the lines always come in bunches, numbered by the multipv value. In any case Polyglot should immediately discard all lines that have a depth lower than the maximum depth received in the current search. Of the other lines it receives, it should push score and PV on a stack. Every incoming line of higher depth than the current maximum first clears this stack before being pushed on it. Finally every incoming line can be compared against all these stored lines, and if it is a duplicate, it can be discarded. Only if it survives this test, it will be relayed to WinBoard (and pushed on the stack).
Can this patch be included in the Polyglot development lines? I would be willing to write the patch myself, but I lost touch a bit with Polyglot development lately, and am not sure what would be the best version to patch.
This is not the way how multi-variation mode should work in WB protocol. The engine should send every line it wants displayed only once, and in order of increasing depth. WinBoard will take care of sorting the lines by score within one depth.
So what I need is a Polyglot that removes duplicate output lines, and lines of lower depth than the maximum depth given. I guess this should not be so difficult to implement. In UCI protocol the lines always come in bunches, numbered by the multipv value. In any case Polyglot should immediately discard all lines that have a depth lower than the maximum depth received in the current search. Of the other lines it receives, it should push score and PV on a stack. Every incoming line of higher depth than the current maximum first clears this stack before being pushed on it. Finally every incoming line can be compared against all these stored lines, and if it is a duplicate, it can be discarded. Only if it survives this test, it will be relayed to WinBoard (and pushed on the stack).
Can this patch be included in the Polyglot development lines? I would be willing to write the patch myself, but I lost touch a bit with Polyglot development lately, and am not sure what would be the best version to patch.