Author: Peter Skinner
Date: 15:06:58 01/20/04
Go up one level in this thread
On January 20, 2004 at 14:03:18, Olaf Jenkner wrote: >Could you please post the changes from 19.0 ? >I dont want to download the whole Crafty source to get main.c. >Maybe other people are also interested in the changes. > >Thanks, > >Olaf Jenkner Sure: 19.0 significant change to the search extension limits. first, the * * limit of no more than 1 ply of extensions per ply has been tossed * * out. now, any number of extensions are allowed in the first N * * plies, where N=iteration_depth of the current iteration. After * * the first N plies, extensions are reduced by 50% for the next N * * plies. They are then reduced by another 50% for the next N plies * * and then completely disabled after that. IE for a 12 ply search, * * all extensions (even > one ply) are allowed for the first 12 * * plies, then the extensions are reduced by 1/2 for the next 12 * * plies, then by 1/4 for the next 12 plies, then turned off from * * that point forward. minor tweak (suggested by GCP) to reduce the * * time limit by 1/4 for ponder=off games was done in time.c. fix * * to EvaluateWinner() to correctly realize that KR[BN] vs KRR is a * * draw for the KRR side if it doesn't have at least a pawn left. * * minor bug in RejectBookMove() would reject all moves if the op- * * ponent had a stonewall-type pawn set-up. it was supposed to only * * reject castling into the attack. minor change to code in the * * EvaluateMaterial() function to lower the penalty for sacrificing * * the exchange. it was considered just as bad as trading a rook * * for two pawns which was wrong. change to hashing code so that we * * can now determine that a hash entry came from the EGTB so that * * PVs are displayed with <EGTB> when appropriate, not <EGTB> if it * * originally came from the EGTB but later <HT> when it was picked * * up from the hash table instead. minor changes to search/searchmp * * to make them identical in "look" where possible, for consistency * * in source reading if nothing else. if the first argument on the * * command-line is "xboard" or if the environment variable * * "CRAFTY_XBOARD" is set, crafty sends a "feature done=0" command * * to tell xboard it has not yet initialized things. significant * * changes to EvaluateWinner() to recognize new cases of draws such * * as Q+minor+nopawns vs Q+pawns as unwinnable by the Q+minor side. * * other cases were fixed/improved as well. * * * * 19.1 changes to the outside passed pawn and outside candidate pawn * * code to more correctly recognize when one side has a simple end- * * game position that is easy to win. futility pruning and razoring * * (Jeremiah Penery) was added. to endable it, you will need to add * * -DFUTILITY to the Makefile options, otherwise it is disabled by * * default. EvaluateWinner() had a bug dealing with KR vs KN or * * KRR vs KRN(B) that has been fixed. * * * * 19.2 CCT-5 version 01/20/03. * * changes to the LimitExtensions() macro. the extensions are now * * a bit more aggressive, but after 2*iteration_depth, then they * * taper off smoothly so that by the time the depth reaches * * 4*iteration_depth, the extensions are cut to zero. fixed bug in * * EvaluatePawns() that missed candidate passed pawns so that the * * new endgame stuff didn't work completely. change to hash.c to * * combine the two hash tables into one so that the two probed * * entries are adjacent in memory to be more cache friendly. A bug * * in moving a replaced entry from depth-preferred to always-store * * caused the moved entry to go to the wrong address which would * * make it impossible to match later. new hash table layout is more * * cache-friendly by putting one entry from depth-preferred table * * with two entries from always-store, so that they often end up in * * the same cache-line. * * * * 19.3 change to EvaluateMaterial to realize that a rook for five pawns * * is also likely a "bad trade." adaptive hash table size code was * * added so that the hash size is set automatically based on the * * estimated NPS and time per move values for a specific "level" * * command setting. RepetitionCheck() rewritten. the old code had * * an unexplained bug that would overlook repetitions in a parallel * * search in rare cases. the old cold was complex enough that it * * was time to rewrite it and simplify it significantly. * * * * 19.4 initial depth "seed" value changed to iteration_depth + 1/2 ply, * * so that fractional extensions kick in earlier rather than deeper * * in the search. this performs _much_ better in tactical tests * * such as WAC and similar suites. minor book fix for a bug that * * could cause a crash with book=off in xboard/winboard. * * * * 19.5 default draw score set to 1, because endgame table draws can be * * 0, -.01 or +.01, which translates to -1, 0 or 1 in real scores * * inside Crafty. +1 means a draw where white has extra material * * and that would break accepting draws with such a score. a few * * NUMA-related changes. one global variable was made thread- * * private to avoid cache thrashing. split blocks are now allocated * * by each individual processor to make them local to the specific * * processor so that access is much faster. CopyToSMP() now tries * * to allocate a block for a thread based on the thread's ID so that * * the split block will be in that thread's local memory. a few * * other NUMA-related changes to help scaling on NUMA machines. * * * * 19.6 new egtb.cpp module that cuts decompression indices memory by 50% * * with no harmful side-effects. fixes to NUMA code to make SMP and * * non-SMP windows compiles go cleanly. * * * * 19.7 changes to draw code so that Crafty will first claim a draw and * * then play the move, to avoid any confusion in whether the draw * * was made according to FIDE rules or not. minor bug in evaluate() * * dealing with candidate passed pawns fixed. A few additions to * * support my AMD Opteron inline assembly for FirstOne(), LastOne() * * and PopCnt() procedures. * * * * 19.8 changes to lock.h to (a) eliminate NT/alpha, since Microsoft no * * longer supports the alpha, which makes lock.h much more readable. * * CLONE is no longer an option either, further simplyfying the .h * * files. new mode option "match" which sets an aggressive learning * * mode, which is now the default. the old learning mode can be set * * by using the command "mode normal". memory leak in new windows * * NUMA code fixed by Eugene Nalimov. AMD fix to make the history * * counts thread-local rather than global (to avoid excessive cache * * invalidate traffic). * * * * 19.9 two new pieces of code submitted by Alexander Wagner. the first * * adds speech to crafty for unix users. /opt/chess/sounds needs to * * exist and the common/sounds.tar.gz file needs to be untarred in * * directory. "speech on*off" controls it. a new annotatet command * * outputs the annotated file in LaTeX format for those that prefer * * that platform. lots of source reformatting to make indenting and * * other things more consistent, using the unix "indent" utility. * * singular extension (simplistic approach) has been added and needs * * -DSINGULAR to activate it. once it has been compiled in, you can * * turn it on/off by setting the singular extension depth using the * * ext command. default is on if you compile it in. ext/sing=0 * * disable it. changes to non-COMPACT_ATTACKS code to shrink the * * array sizes. this was done primarily for the Opteron where the * * COMPACT_ATTACKS stuff was a bit slower than the direct look-up * * approach. this change reduced the table sizes by 75%. I believe that is it :) Peter.
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.