Author: Dave Gomboc
Date: 23:28:43 07/21/99
Go up one level in this thread
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? :-) One more question: how much slowed do you think your eval would be if you wrote it in C or C++ instead of assembler? 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.