Author: Ed Schröder
Date: 03:05:43 07/22/99
Go up one level in this thread
On July 22, 1999 at 02:28:43, Dave Gomboc wrote: >Thanks for posting this. > >I wanted to clarify something, though I think I know the answer: you were >referring to the binary size of the eval when you said 120Kb of assembler, not >the source size, right? :-) I was referring to the binaty size indeed. >One more question: how much slowed do you think your eval would be if you wrote >it in C or C++ instead of assembler? The C-version is about 30% slower than the ASM version. Ed Schroder >Dave > >On July 21, 1999 at 06:41:25, Ed Schröder wrote: > >>>I took a look at the log file you placed on your site so as to show what would >>>be subject to tweaking and found that what interested me most was all grouped >>>up. I am thinking particularly of Chess Knowledge which is said to increase or >>>decrease the quality of positional play according to its value. This is quite >>>vague, and I would have thought that it was precisely in the various >>>elements of >>>chess knowledge that one could achieve the most interesting tweaking. Is this >>>left like this due to a desire to not divulge all of Rebel's cogs and screws? >>> >>> Albert Silver >> >>The option [Chess Knowledge] is about LAZY-EVAL which is currently >>a hot topic here. Below is a quote from my pages which might explain >>a bit (I hope). >> >>Ed Schroder >> >>----------------------------------- >> >>[Chess Knowledge = 200] Chess Knowledge above 100 will result in >>more accurate positional play but a lower search depth. Chess Knowledge >>below 100 will result in less accurate positional play but a higher search >>depth. This function needs a detailed (and quite technical) explanation: >> >>The heart of a (any) chess program is its evaluation function (EVAL). In >>there all chess knowledge is present. The most important ones are already >>discussed above (King Safety, Mobility, Pawn Structure, Passed Pawns >>etc). Above these major items EVAL contains over 200 specific (position >>oriented) chess knowledge cases of all kind. To name a few: Bishop of >>opposite colors, bad (or good) bishops, piece development in the >>opening, castling, rook endings, pawn endings and and and... EVAL is >>the soul of a (any) chess program and will reflect the playing style the >>programmer has (had) in mind. >> >>EVAL in REBEL takes a lot of processor time even for todays fast >>computers. EVAL's size is over 120 Kb (pure assembler code) >>containing over 30,000 instructions which is very big for a chess >>program. Calling EVAL for every position in the tree-search is very >>expensive and will slow down the search tremendously, in REBEL's >>case a slow down factor of 7 to 8 (nodes per second) is not unusual. >> >>To handle this chess programmers invented LAZY EVAL in all kind >>of sorts. LAZY-EVAL is a smart algorithm that only picks the main >>important parts of EVAL belonging to the (current position) and then >>skips the rest of EVAL. This is of course a very dangerous approach >>as often LAZY-EVAL is not 100% right and will return a score that isn't >>100% accurate which (sometimes) in the end may result in a lesser >>quality move. >> >>On the other hand Rebel's LAZY-EVAL algorithm will speed-up the >>search tremendously and allows REBEL to look 2-3 plies deeper >>than without LAZY-EVAL which in the end is by far is superior in >>terms of chess strength. >> >>With the option [Chess Knowledge = 200] you can tune REBEL's >>LAZY-EVAL. The higher you set its value the more accurate REBEL >>will play but the search depth will decrease. If you set Chess >>Knowledge to its maximum [Chess Knowledge = 500] you actually >>see REBEL's EVAL in its full glory as LAZY-EVAL is hardly active >>anymore. >> >>However REBEL'S nodes per second (NPS) will drop typically with >>a factor of 7-8. On a PII-333 REBEL searches about 100,000 >>positions a second. Using [Chess Knowledge = 500] REBEL's >>NPS will drop to 12,000-15,000. >> >>More technical stuff: all of the above is true for current and older >>INTEL processors. However times are changing, chips are equiped >>with larger and faster cache memory. On the new AMD-K6-III the >>cache runs at full processor clock speed. INTEL processors cache >>memory is just running on 100 or 66 Mhz. The result is that on >>AMD K6-III using the maximum [Chess Knowledge = 500] REBEL >>will run 2-2½ times faster than on INTEL. >> >>All of this makes it very difficult to tune Chess Knowledge for its >>best setting because it is very dependant on the processor you >>have in your PC. This month AMD released the new K7 processor >>which again doubled the cache memory and REBEL will profit a lot >>from that. INTEL surely will answer. The bottom line is that one day >>the ideal setting will be [Chess Knowledge = 500] and you can use >>REBEL's EVAL in its full glory.
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.