Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Fafis and the virus

Author: Dieter Buerssner

Date: 11:03:20 05/24/05

Go up one level in this thread


On May 24, 2005 at 09:28:17, Thomas Mayer wrote:

>Hi Daniel,
>
>> Well, the new version of UCI support a analyze mode:
>>
>> // if the engine supports the "UCI_AnalyseMode" option and the next search is
>> // supposed to be an analysis, the GUI should set "UCI_AnalyseMode" to true
>> // if it is currently set to false with this engine
>> setoption name UCI_AnalyseMode value true
>
>> Homer support this too, but at the moment there a no gui avaible which
>> support this nice feature.
>
>that's funny, UCI was always thought as stateless protocol and now they
>backinvent states this way ?! :) Well, that it does not work fully without
>states is clear, think about the ponderhit command.
>Anyway, good to know that this feature exists, I will implement that in my
>version of epd2wb -> what I did not understand: So the UCI_AnalyseMode must be
>set before EVERY search which is an analyse ? So it should look like this ?

From the protocol document, this it not really clear. I think, the intention was
to send it just once, and the engine remembers it as a state. Much like the
Ponder option (which the engine can use to adjust its time allocation for ponder
games). We should ask SMK to clarify the wording. Anyway, it should not hurt to
send it before any search.

   * <id> = UCI_AnalyseMode, type check
        The engine wants to behave differently when analysing or playing a game.
        For example when playing it can use some kind of learning.
        This is set to false if the engine is playing a game, otherwise it is
true.

BTW. It might also be the other way around. The engine might want to do some
specific learning during (especially backwards) analysis, which may be useless
or even slightly hurting during normal games. Some engines might need to switch
off asymmetric evaluation. For GUI driven analysis, the engine cannot detect
that it is in analyse mode by other means in general. For example the analysis
might be driven with a typical game time control. (The same problem exists with
GUI driven analysis for the WB protocol).

>By the way: The reason why I send an "ucinewgame" before every position is
>simple: just to keep sure that the hash is cleared. Else solutions are not
>reproduceable at all.

It is of course no guarantee, that the engine will clear the hash tables. Even
if it supports ucinewgame (which many engines will not). Other things, for which
ucinewgame can be useful: have a convinient point to do some learning, perhaps
you want to store games in an engine specific database, perhaps you want to
increment some number in a log file, ...

I think, Yace never clears HTs under UCI, unless the user hits the "clear hash"
button. I don't see much of a disadvantage for this, either. In test-suites, it
might yield in non reproducable node numbers - but really no problem. If I
really want to have reproducable node numbers, I will use some engine specific
test routines. Those who prefer to use a tool, like epd2wb, would need to judge
for themselves, how to approach the problem of possibly not reproducable node
numbers.

It might be interesting to note, that CB UCI implementation more or less
assumes, that Clear Hash is a hardcoded option with a defined meaning, and will
send it for new games. But Clear Hash is not defined like this in the UCI
protocol, it is just given as an example. It might have been a good idea, to
have this hardcoded like few other options (preferably with a name like
"UCI_Clear_Hash").

Regards,
Dieter



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.