Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: new engine command: "mem"

Author: Dieter Buerssner

Date: 14:22:33 08/06/02

Go up one level in this thread


On August 06, 2002 at 03:28:04, Georg v. Zimmermann wrote:

>Hi,
>
>suggestion for a new engine pseudo-standart command like "hash": "mem".
>For example "mem 64" should tell the engine to use 64MB in total. Which means if
>it uses 16MB for internal structures, 2MB for tablebase stuff, 2MB for learning,
>it has 44MB left for pawn hash and normal hash table which it might distribute
>as it wishes.
>
>Advantages:
>- easier for users
>- fairer engine-matches, everyone gets the same ammount of memory, eg. you get
>rewarded for using small internal structure.

Some time ago such a command has been discussed in the chess engines mailing
list.

I prefer to have it easier. Have one mem size for any adjustable internal tables
besides TBs that are of possibly significant size and unadjustable tables that
are of significant size. But still have another size for TBs. When I call my
engine for analysis, I typically have (when dedicating my small memory old
computer) 40 MBs for "mem" (besides the code space and often accessed internal
data used). I use this for hash in a middlegame pos. In an endgame pos, I would
use perhaps 30M. In both cases, I would give 2 M TB cache. In the first case,
this would never be accessed. In the second case, it would be accessed, and also
the internal compression tables, which make a bit more (with my few 5-men TBs
installed). Then I still get about 7 M for OS-cache, which can speed up endgame
analysis significantly (TB positions are cached there in compressed form, and
for my conditions, this typically performs better than giving a bigger internal
TB cache). So, I believe 2 memory sizes would be preferable.

Some other thoughts about the "base memory usage" of the engine. Say my engine
includes a lot of "tools": for creating/manipulating books/PGN files/whatever.
If this needs 1MB - do I have to count it? For (say) an engine match, that
code/data won't be used - and can (and in tight memory situations will) be
swapped out. No negative consequences at all. Should we count this unused
memory? Not allways, using more RAM than available is bad - otherwise, we would
not need virtual memory.

Say, the engine has some internal table for "learn stuff" - and this must be
resized during a game. Should such a "mem" command really force the engine to
now make the hash tables a bit smaller, and clear them by doing this?

I believe, perfect fairness is not possible here - and one should have a more
pragmatic and less strict solution.

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.