diff options
Diffstat (limited to 'parallel/search.ps')
| -rw-r--r-- | parallel/search.ps | 2298 |
1 files changed, 2298 insertions, 0 deletions
diff --git a/parallel/search.ps b/parallel/search.ps new file mode 100644 index 0000000..3b5be1c --- /dev/null +++ b/parallel/search.ps @@ -0,0 +1,2298 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.17.2 +%%CreationDate: Wed Sep 4 21:51:42 2002 +%%DocumentNeededResources: font Times-Roman +%%DocumentSuppliedResources: procset grops 1.17 2 +%%Pages: 27 +%%PageOrder: Ascend +%%Orientation: Portrait +%%EndComments +%%BeginProlog +%%BeginResource: procset grops 1.17 2 +/setpacking where{ +pop +currentpacking +true setpacking +}if +/grops 120 dict dup begin +/SC 32 def +/A/show load def +/B{0 SC 3 -1 roll widthshow}bind def +/C{0 exch ashow}bind def +/D{0 exch 0 SC 5 2 roll awidthshow}bind def +/E{0 rmoveto show}bind def +/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def +/G{0 rmoveto 0 exch ashow}bind def +/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/I{0 exch rmoveto show}bind def +/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def +/K{0 exch rmoveto 0 exch ashow}bind def +/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/M{rmoveto show}bind def +/N{rmoveto 0 SC 3 -1 roll widthshow}bind def +/O{rmoveto 0 exch ashow}bind def +/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/Q{moveto show}bind def +/R{moveto 0 SC 3 -1 roll widthshow}bind def +/S{moveto 0 exch ashow}bind def +/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/SF{ +findfont exch +[exch dup 0 exch 0 exch neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/MF{ +findfont +[5 2 roll +0 3 1 roll +neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/level0 0 def +/RES 0 def +/PL 0 def +/LS 0 def +/MANUAL{ +statusdict begin/manualfeed true store end +}bind def +/PLG{ +gsave newpath clippath pathbbox grestore +exch pop add exch pop +}bind def +/BP{ +/level0 save def +1 setlinecap +1 setlinejoin +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}bind def +/DA{ +newpath arcn stroke +}bind def +/SN{ +transform +.25 sub exch .25 sub exch +round .25 add exch round .25 add exch +itransform +}bind def +/DL{ +SN +moveto +SN +lineto stroke +}bind def +/DC{ +newpath 0 360 arc closepath +}bind def +/TM matrix def +/DE{ +TM currentmatrix pop +translate scale newpath 0 0 .5 0 360 arc closepath +TM setmatrix +}bind def +/RC/rcurveto load def +/RL/rlineto load def +/ST/stroke load def +/MT/moveto load def +/CL/closepath load def +/FL{ +currentgray exch setgray fill setgray +}bind def +/BL/fill load def +/LW/setlinewidth load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne{def}{pop pop}ifelse +}forall +/Encoding exch def +dup/FontName exch def +currentdict end definefont pop +}bind def +/DEFS 0 def +/EBEGIN{ +moveto +DEFS begin +}bind def +/EEND/end load def +/CNT 0 def +/level1 0 def +/PBEGIN{ +/level1 save def +translate +div 3 1 roll div exch scale +neg exch neg exch translate +0 setgray +0 setlinecap +1 setlinewidth +0 setlinejoin +10 setmiterlimit +[]0 setdash +/setstrokeadjust where{ +pop +false setstrokeadjust +}if +/setoverprint where{ +pop +false setoverprint +}if +newpath +/CNT countdictstack def +userdict begin +/showpage{}def +}bind def +/PEND{ +clear +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%IncludeResource: font Times-Roman +grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 +def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron +/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent +/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen +/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O +/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex +/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y +/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft +/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl +/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut +/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash +/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen +/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft +/logicalnot/minus/registered/macron/degree/plusminus/twosuperior +/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior +/ordmasculine/guilsinglright/onequarter/onehalf/threequarters +/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE +/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn +/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash +/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def +/Times-Roman@0 ENC0/Times-Roman RE +%%EndProlog +%%Page: 1 1 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF(Abstract)72 96 Q .758(This paper describes a hi\ +gh-performance parallel tree search algorithm that uses Dynamic T)72 120 +R .757(ree Splitting)-.385 F .412 +(\(DTS\) to search alpha/beta minimax g)72 132 R .412 +(ame trees, speci\214cally those for the g)-.055 F .413(ame of chess.) +-.055 F .413(This algorithm)5.913 F(di)72 144 Q .843 +(vides the search tree among se)-.275 F -.165(ve)-.275 G .842 +(ral processors on a shared memory parallel machine.).165 F .842 +(This paper dis-)6.342 F .997(cusses the follo)72 156 R .997 +(wing topics:)-.275 F .997(\(1\) the DTS algorithm, \(2\) ho)6.497 F +3.747(wt)-.275 G .998(he tree is di)-3.747 F .998 +(vided into parallel pieces that)-.275 F .509(can be searched in parall\ +el; \(3\) performance results of the algorithm and \(4\) analysis of th\ +e results to see)72 168 R(where further impro)72 180 Q -.165(ve)-.165 G +(ments might occur).165 E(..)-.605 E 2.75(1. Introduction.)72 204 R(Ov) +72 228 Q 1.11(er the past ten years, high performance computer architec\ +tural designers ha)-.165 F 1.44 -.165(ve t)-.22 H 1.11 +(urned to parallel pro-).165 F .027(cessing to push the performance en) +72 240 R -.165(ve)-.44 G .026(lope to higher and higher le).165 F -.165 +(ve)-.275 G 2.776(ls. Unfortunately).165 F 2.776(,f)-.715 G .026(or man) +-2.776 F 2.776(ya)-.165 G(lgorithms)-2.776 E 1.533 +(in general, and the alpha/beta algorithm in particular)72 252 R 4.283 +(,p)-.44 G 1.533(arallel processing of)-4.283 F 1.534 +(fers a substantial hurdle to)-.275 F -.165(ex)72 264 S +(tracting maximum performance from parallel machines.).165 E 1.81(The a\ +lpha/beta algorithm is based on a highly sequential property of searchi\ +ng that depends on prior)72 288 R(kno)72 300 Q 3.431(wledge to pre)-.275 +F -.165(ve)-.275 G 3.431(nt searching parts of the g).165 F 3.432 +(ame tree that ha)-.055 F 3.762 -.165(ve n)-.22 H 6.182(ob).165 G 3.432 +(earing on the \214nal results)-6.182 F 4.909([Knuth75,Hyatt89]. Since) +72 312 R 4.908(ap)4.908 G 2.158(arallel search tra)-4.908 F -.165(ve) +-.22 G 2.158(rses parts of the tree "simultaneously" such a priori).165 +F(kno)72 324 Q 6.478(wledge is not al)-.275 F -.11(wa)-.11 G 6.478(ys a) +.11 F -.275(va)-.22 G 6.478 +(ilable [Campbell81,Hyatt88,Hyatt89,Hsu90,Lindstrom83,Marsland85,).275 F +(Popo)72 336 Q(wich83,Schaef)-.275 E(fer89,man)-.275 E 2.75(yo)-.165 G +(thers].)-2.75 E 1.814(The best-kno)72 360 R 1.814 +(wn early attempt at searching such trees in parallel w)-.275 F 1.813 +(as the Principal V)-.11 F 1.813(ariation Splitting)-1.221 F 4.248(\(PV\ +S\) algorithm [Hyatt86,Marsland80,Marsland81, Marsland82,Marsland86,Ne) +72 372 R(wborn85,Schaef)-.275 E(fer89].)-.275 E .062(This w)72 384 R +.062(as both simple to understand and easy to implement.)-.11 F .061 +(When starting an N-ply search, one processor)5.561 F .553 +(generates the mo)72 396 R -.165(ve)-.165 G 3.303(sa).165 G 3.303(tt) +-3.303 G .553(he root position, mak)-3.303 F .553(es the \214rst mo)-.11 +F .883 -.165(ve \()-.165 H .553 +(leading to what is often referred to as the).165 F .086 +(left-most descendent position\), then generates the mo)72 408 R -.165 +(ve)-.165 G 2.836(sa).165 G 2.836(tp)-2.836 G .086(ly=2, mak)-2.836 F +.086(es the \214rst mo)-.11 F .416 -.165(ve a)-.165 H -.055(ga).165 G +.086(in, and contin-).055 F .115(ues this until reaching ply=N.)72 420 R +.115(At this point, the processor pool searches all of the mo)5.615 F +-.165(ve)-.165 G 2.865(sa).165 G 2.866(tt)-2.865 G .116 +(his ply \(N\) in)-2.866 F .42(parallel, and the best v)72 432 R .42 +(alue is back)-.275 F .419(ed up to ply N-1.)-.11 F(No)5.919 E 3.169(wt) +-.275 G .419(hat the lo)-3.169 F .419(wer bound for ply N-1 is kno)-.275 +F .419(wn, the)-.275 F .328(rest of the mo)72 444 R -.165(ve)-.165 G +3.078(sa).165 G 3.078(tN)-3.078 G .329 +(-1 are searched in parallel, and the best v)-3.078 F .329(alue ag)-.275 +F .329(ain back)-.055 F .329(ed up to N-2.)-.11 F .329(This contin-) +5.829 F .464(ues until the \214rst root mo)72 456 R .794 -.165(ve h) +-.165 H .464(as been searched and the v).165 F .464(alue is kno)-.275 F +3.214(wn. The)-.275 F .464(remainder of the root mo)3.214 F -.165(ve) +-.165 G(s).165 E .4(are searched in parallel, until none are left.)72 +468 R .4(The ne)5.9 F .4 +(xt iteration is started and the process repeats for depth)-.165 F(N+1.) +72 480 Q .048 +(Performance analysis with this algorithm \(PVS\) produced speedups gi) +72 504 R -.165(ve)-.275 G 2.797(nb).165 G(elo)-2.797 E 2.797(wi)-.275 G +2.797(nt)-2.797 G .047(able 1 [Hyatt88] \(oth-)-2.797 F 1.112(ers ha)72 +516 R 1.442 -.165(ve p)-.22 H 1.112(roduced results v).165 F 1.113 +(ery similar to this\).)-.165 F 1.113(Clearly the performance curv)6.613 +F 3.863(ei)-.165 G 3.863<738d>-3.863 G 1.113(attened badly on the)-3.863 +F .23(upper end, and the C90 with 16 processors and the T90 with 32 are\ + not going to perform as well as might)72 528 R 1.231(be e)72 540 R +1.231(xpected, although the)-.165 F 3.981(ya)-.165 G 1.231 +(re certainly v)-3.981 F 1.231(ery f)-.165 F 3.981(ast. An)-.11 F 1.231 +(upper bound of 5X \(maybe\) does not look v)3.981 F(ery)-.165 E +(attracti)72 552 Q -.165(ve)-.275 G 2.75(,h).165 G -.275(ow)-2.75 G +-2.365 -.275(ev e).275 H 2.75(r[).275 G(Hyatt88].)-2.75 E EP +%%Page: 2 2 +%%BeginPageSetup +BP +%%EndPageSetup +.44 LW 414.465 88.75 197.534 88.75 DL/F0 11/Times-Roman@0 SF 2.75(#p) +203.034 98 S 17.875(rocessors 1)-2.75 F 24.75(248)24.75 G(16)-2.75 E +414.465 102.75 197.534 102.75 DL 32.384(speedup 1.0)203.034 112 R 13.75 +(1.9 3.4 5.4 6.0)16.5 F 414.465 116.75 197.534 116.75 DL 386.965 102.75 +386.965 116.75 DL 356.715 102.75 356.715 116.75 DL 326.465 102.75 +326.465 116.75 DL 296.215 102.75 296.215 116.75 DL 265.965 102.75 +265.965 116.75 DL 414.465 88.75 414.465 116.75 DL 197.534 88.75 197.534 +116.75 DL 386.965 88.75 386.965 116.75 DL 356.715 88.75 356.715 116.75 +DL 326.465 88.75 326.465 116.75 DL 296.215 88.75 296.215 116.75 DL +265.965 88.75 265.965 116.75 DL -.88(Ta)233.427 140.2 S +(ble 1 PVS performance results).88 E 1.656 +(This approach has a couple of f)72 164.2 R 1.656(airly ob)-.11 F 1.656 +(vious dra)-.165 F 4.406(wbacks. First,)-.165 F 1.656 +(notice that all of the processors w)4.406 F(ork)-.11 E .724 +(together at a single node, searching descendent positions in parallel.) +72 176.2 R .725(If the number of possible mo)6.224 F -.165(ve)-.165 G +3.475(si).165 G(s)-3.475 E .368 +(small, or the number of processors is lar)72 188.2 R .368(ge, some ha) +-.198 F .698 -.165(ve n)-.22 H .368(othing to do.).165 F .368(Second, e) +5.868 F -.165(ve)-.275 G .368(ry branch from a gi).165 F -.165(ve)-.275 +G(n).165 E .492(position does not produce a tree of equal size, since s\ +ome branches may gro)72 200.2 R 3.242(wi)-.275 G .492 +(nto complicated positions)-3.242 F .988 +(with lots of checks and search e)72 212.2 R .988(xtensions that mak) +-.165 F 3.738(et)-.11 G .988(he tree v)-3.738 F .988(ery lar)-.165 F +.987(ge, while other branches gro)-.198 F 3.737(wi)-.275 G(nto)-3.737 E +.84(simple positions that are searched quickly)72 224.2 R 6.34(.T)-.715 +G .84(his leads to a load balancing problem where one processor)-6.34 F +(be)72 236.2 Q .312(gins searching a v)-.165 F .312(ery lar)-.165 F .312 +(ge tree and the others \214nish the easy mo)-.198 F -.165(ve)-.165 G +3.062(sa).165 G .312(nd ha)-3.062 F .641 -.165(ve t)-.22 H 3.061(ow).165 +G .311(ait for the remaining)-3.171 F(processor to slo)72 248.2 Q +(wly tra)-.275 E -.165(ve)-.22 G(rse the tree.).165 E .235 +(This second problem is a serious dra)72 272.2 R .235 +(wback, because with a reasonable number of processors, the speedup) +-.165 F .092(can look v)72 284.2 R .092(ery bad if most of the time man) +-.165 F 2.842(yo)-.165 G 2.842(ft)-2.842 G .092(he processors are w) +-2.842 F .092(aiting on one last node to be completed)-.11 F(before the) +72 296.2 Q 2.75(yc)-.165 G(an back up to ply N-1 and start to w)-2.75 E +(ork there.)-.11 E .271(Because of this, when we \214rst mo)72 320.2 R +-.165(ve)-.165 G 3.021(dC).165 G .272 +(ray Blitz to the eight processor Cray YMP)-3.021 F 3.022(,w)-1.221 G +3.022(ed)-3.022 G(isco)-3.022 E -.165(ve)-.165 G .272(red that the).165 +F 2.067(performance w)72 332.2 R 2.067(as only mar)-.11 F 2.067 +(ginally better than it w)-.198 F 2.067(as on the four processor XMP) +-.11 F 4.817(,i)-1.221 G 4.817(fy)-4.817 G 2.067(ou discount the)-4.817 +F(impro)72 344.2 Q -.165(ve)-.165 G 4.166(dc).165 G 1.416 +(lock speed of each YMP processor)-4.166 F 6.916(.T)-.605 G 1.416 +(he \214rst approach we de)-6.916 F -.165(ve)-.275 G 1.417(loped w).165 +F 1.417(as called Enhanced)-.11 F 6.409(Principal V)72 356.2 R 6.409(ar\ +iation Splitting \(EPVS\) and is also pretty easy to understand and imp\ +lement)-1.221 F 3.843([Hyatt88,Hyatt89]. EPVS)72 368.2 R 1.093 +(simply notices whene)3.843 F -.165(ve)-.275 G 3.843(rap).165 G 1.093 +(rocessor at a node runs out of w)-3.843 F 3.843(ork. When)-.11 F(this) +3.843 E 1.711(happens, assuming there are M processors w)72 380.2 R +1.711(orking, we kno)-.11 F 4.461(wt)-.275 G 1.711(hat there are no) +-4.461 F 4.461(wM)-.275 G 1.71(-1 \(or less\) acti)-4.461 F -.165(ve) +-.275 G 1.684(branches remaining.)72 392.2 R 1.685 +(EPVS immediately stops all processors \(which are w)7.185 F 1.685 +(orking at ply P)-.11 F 4.435(,t)-1.221 G 1.685(he current)-4.435 F .419 +(position\) and follo)72 404.2 R .419 +(ws the \214rst remaining ply=P branch tw)-.275 F 3.168(op)-.11 G .418 +(lies and then splits the tree at that point with)-3.168 F 2.751(ap)72 +416.2 S .001(arallel search e)-2.751 F .001(xactly lik)-.165 F 2.751(et) +-.11 G .001(he old PVS idea.)-2.751 F .002(The bene\214t is that no) +5.501 F 2.752(wa)-.275 G .002(ll processors are w)-2.752 F .002 +(orking together)-.11 F .187 +(on a single branch at a node where there is little w)72 428.2 R .187 +(ork, and ha)-.11 F .517 -.165(ve s)-.22 H .187(tepped do).165 F .186 +(wn into the tree to a node with)-.275 F .633(more mo)72 440.2 R -.165 +(ve)-.165 G 3.383(st).165 G 3.383(os)-3.383 G .633(earch, and also a no\ +de where the descendent trees will be smaller since this node is tw) +-3.383 F(o)-.11 E .581(plies deeper in the tree.)72 452.2 R .581 +(It should be noted that this is ef)6.081 F(fecti)-.275 E .911 -.165 +(ve b)-.275 H .58(ecause the transposition table stores the).165 F .231 +(partial results from the searches that are stopped, so that when these\ + branches are searched later)72 464.2 R 2.982(,t)-.44 G .232(he w)-2.982 +F(ork)-.11 E .789 +(is not repeated because the information is found in the table.)72 476.2 +R .788(In case you might w)6.289 F .788(onder wh)-.11 F 3.538(yt)-.055 G +.788(he search)-3.538 F .165(steps further into the tree tw)72 488.2 R +2.915(op)-.11 G .165(lies, rather than one, recall that with alpha/beta\ +, if one ply \(P\) requires that)-2.915 F .2(all mo)72 500.2 R -.165(ve) +-.165 G 2.95(sb).165 G 2.95(es)-2.95 G .2(earched, then the ne)-2.95 F +.199(xt ply \(P+1\) only requires that one mo)-.165 F .529 -.165(ve b) +-.165 H 2.949(es).165 G .199(earched to produce a refu-)-2.949 F 1.168 +(tation \(e)72 512.2 R 1.168(xcept for the case of PV nodes where no mo) +-.165 F -.165(ve)-.165 G 3.918(sh).165 G -2.475 -.22(av e)-3.918 H 1.168 +(yet been searched.\))4.138 F 1.169(Therefore, since we)6.669 F(kno)72 +524.2 Q 3.385(wt)-.275 G .634(hat we are going to e)-3.385 F .634 +(xamine all nodes at P \(since we just back)-.165 F .634 +(ed up the PVS algorithm to ply P\),)-.11 F .847(we kno)72 536.2 R 3.597 +(wt)-.275 G .847(hat all nodes at ply P+2 will most lik)-3.597 F .848 +(ely ha)-.11 F 1.178 -.165(ve t)-.22 H 3.598(ob).165 G 3.598(es)-3.598 G +.848(earched as well, so long as we choose a)-3.598 F(reasonable mo)72 +548.2 Q .33 -.165(ve a)-.165 H 2.75(tp).165 G(ly=P+1.)-2.75 E EP +%%Page: 3 3 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF 1.83(Performance analysis with this algorithm \ +\(EPVS\) produced speedups that were modest impro)72 96 R -.165(ve)-.165 +G(ments).165 E -.165(ove)72 108 S 3.435(rP).165 G .685(VS, as gi)-3.435 +F -.165(ve)-.275 G 3.435(ni).165 G 3.435(nt)-3.435 G .685(able 2 belo) +-3.435 F 4.865 -.715(w. T)-.275 H .685(his is roughly 20% f).715 F .685 +(aster than PVS on lar)-.11 F .686(ger numbers of proces-)-.198 F .285 +(sors, from the results belo)72 120 R 1.715 -.715(w, b)-.275 H .284(ut \ +the 8 and 16 processor times still are disappointing, and the 32 proces\ +sor).495 F 1.229(results w)72 132 R 1.23(ould be abysmal.)-.11 F +(Clearly)6.73 E 3.98(,ab)-.715 G 1.23 +(etter algorithm had to be found, or we were going to see a v)-3.98 F +(ast)-.275 E(amount of unused processing po)72 144 Q +(wer on future Cray computers [Hyatt88].)-.275 E .44 LW 414.465 164.95 +197.534 164.95 DL 2.75(#p)203.034 174.2 S 17.875(rocessors 1)-2.75 F +24.75(248)24.75 G(16)-2.75 E 414.465 178.95 197.534 178.95 DL 32.384 +(speedup 1.0)203.034 188.2 R 13.75(1.9 3.4 5.4 6.0)16.5 F 414.465 192.95 +197.534 192.95 DL 386.965 178.95 386.965 192.95 DL 356.715 178.95 +356.715 192.95 DL 326.465 178.95 326.465 192.95 DL 296.215 178.95 +296.215 192.95 DL 265.965 178.95 265.965 192.95 DL 414.465 164.95 +414.465 192.95 DL 197.534 164.95 197.534 192.95 DL 386.965 164.95 +386.965 192.95 DL 356.715 164.95 356.715 192.95 DL 326.465 164.95 +326.465 192.95 DL 296.215 164.95 296.215 192.95 DL 265.965 164.95 +265.965 192.95 DL -.88(Ta)230.067 216.4 S +(ble 2 EPVS performance results).88 E 2.75(2. Dynamic)72 240.4 R -.385 +(Tr)2.75 G(ee Splitting algorithm \(DTS\)).385 E .595(Before describing\ + the DTS algorithm in detail, one important point needs e)72 264.4 R +3.345(xplanation. This)-.165 F .595(algorithm is)3.345 F .457(speci\214\ +cally designed for a shared memory multiprocessor architecture.)72 276.4 +R .457(As a result, issues that other pro-)5.957 F 1.152 +(grams and programmers ha)72 288.4 R 1.482 -.165(ve t)-.22 H 3.902(of) +.165 G 1.152(ace \(distrib)-4.012 F 1.152 +(uted transposition tables, killer mo)-.22 F -.165(ve)-.165 G 1.151 +(s, history information).165 F .099 +(and such\) are not an issue here at all.)72 300.4 R .1 +(Some of the decisions in the DTS design w)5.6 F .1(ould lik)-.11 F .1 +(ely cause signi\214-)-.11 F 1.014 +(cant problems on a message-passing architecture, no matter ho)72 312.4 +R 3.764(wf)-.275 G 1.014(ast the communication channel might)-3.874 F +3.479(be. On)72 324.4 R .729(the Cray)3.479 F 3.479(,w)-.715 G .73 +(hich has an absolutely astounding cpu-to-memory bandwidth, mo)-3.479 F +.73(ving a me)-.165 F -.055(ga)-.165 G .73(byte of).055 F 1.693 +(data tak)72 336.4 R 1.693(es v)-.11 F 1.692(ery little time at all, wh\ +ich simply means that in this algorithm, communication costs are)-.165 F +(al)72 348.4 Q -.11(wa)-.11 G .037(ys assumed to be zero.).11 F .037 +(An assumption that w)5.537 F .037(ould f)-.11 F .037 +(ail on other architectures of course, b)-.11 F .038(ut one which)-.22 F +.664(certainly af)72 360.4 R .663 +(fected decisions made while designing the DTS algorithm as well.)-.275 +F .663(It turns out that loading a)6.163 F .649("\215ag w)72 372.4 R +.649(ord" \(which indicates that there is some parallel-processing rela\ +ted task to perform\) and testing it)-.11 F(can be b)72 384.4 Q +(uried in the instruction stream so that the)-.22 E 2.75(yc)-.165 G +(ause no delays at all.j)-2.75 E(2.1 The DTS approach)72 408.4 Q .446 +(In analyzing the pre)72 432.4 R .446(vious tw)-.275 F 3.196(oa)-.11 G +.446(lgorithms, the)-3.196 F 3.196(yb)-.165 G .445(oth suf)-3.196 F .445 +(fer from tw)-.275 F 3.195(od)-.11 G .445(istinct problems:)-3.195 F +.445(\(1\) all processors)5.945 F -.11(wo)72 444.4 S .152 +(rk together at a single node, which is acceptable for middle-g).11 F +.152(ames with 35+ le)-.055 F -.055(ga)-.165 G 2.903(lm).055 G -.165 +(ove)-2.903 G 2.903(s\().165 G -2.475 -.22(av e)-2.903 H .153(rage\), b) +.22 F(ut)-.22 E .175(which does not look attracti)72 456.4 R .505 -.165 +(ve i)-.275 H 2.925(ne).165 G(nd-g)-2.925 E .175 +(ames where the number of le)-.055 F -.055(ga)-.165 G 2.925(lm).055 G +-.165(ove)-2.925 G 2.925(si).165 G 2.925(sm)-2.925 G .175(uch smaller;) +-2.925 F .175(\(2\) if one)5.675 F .366(processor selects a mo)72 468.4 +R .696 -.165(ve t)-.165 H .367(hat leads to a v).165 F .367(ery b)-.165 +F(ush)-.22 E 3.117(yt)-.055 G .367 +(ree, the other processors might end up w)-3.117 F .367(aiting for an) +-.11 F -.165(ex)72 480.4 S .324(tended period before that tree is compl\ +eted, producing long periods where most processors are w).165 F(aiting,) +-.11 E .251(and greatly de)72 492.4 R .251 +(grading parallel performance.)-.165 F .252(The DTS algorithm w)5.752 F +.252(as speci\214cally de)-.11 F -.165(ve)-.275 G .252(loped to a).165 F +-.22(vo)-.22 G .252(id both).22 F(of these problems.)72 504.4 Q .192 +(The \214rst design goal in de)72 528.4 R -.165(ve)-.275 G .191 +(loping the DTS algorithm w).165 F .191 +(as to completely eliminate the cases where a pro-)-.11 F .365(cessor w) +72 540.4 R .366(as idle, with no mo)-.11 F -.165(ve)-.165 G 3.116(sl) +.165 G .366(eft to search, while other processors were b)-3.116 F(usy) +-.22 E 5.866(.I)-.715 G 3.116(na)-5.866 G .366(ccomplishing this, it) +-3.116 F .848(became ob)72 552.4 R .848(vious that the \214rst step w) +-.165 F .847(as to disassociate all of the processors, so there w)-.11 F +.847(as no requirement)-.11 F(that the)72 564.4 Q 2.75(ya)-.165 G +(ll congre)-2.75 E -.055(ga)-.165 G(te at a single node and w).055 E +(ork together searching mo)-.11 E -.165(ve)-.165 G 2.75(su).165 G +(ntil all were completed.)-2.75 E EP +%%Page: 4 4 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF 2.554(Note that there are alternati)72 96 R +2.884 -.165(ve w)-.275 H 2.554(ays to k).055 F 2.554(eep processors b) +-.11 F(usy)-.22 E 5.304(,b)-.715 G 2.555(esides trying to ha)-5.304 F +2.885 -.165(ve t)-.22 H 2.555(hem all w).165 F(ork)-.11 E(together)72 +108 Q 6.366(.O)-.605 G .866(ne such approach w)-6.366 F .866 +(as used in Phoenix [Schaef)-.11 F .865(fer89], and used tw)-.275 F +3.615(os)-.11 G .865(eparate search engines,)-3.615 F 1.058 +(one a full chess program, the other \(called Minix\) w)72 120 R 1.059 +(as a material-only searcher that searched deeper to)-.11 F .424 +(con\214rm/reject mo)72 132 R -.165(ve)-.165 G 3.174(sp).165 G .424 +(roposed by the full chess program.)-3.174 F(Ob)5.923 E .423 +(viously there is duplicate w)-.165 F .423(ork done in this)-.11 F .88 +(approach, as well as other problems related to choosing a mo)72 144 R +1.21 -.165(ve t)-.165 H 3.63(op).165 G .881 +(lay when the positional search says)-3.63 F .604(play X, b)72 156 R +.604(ut the tactical search says "no.")-.22 F .603 +(This sort of speculati)6.103 F .933 -.165(ve c)-.275 H .603 +(omputing, which is an admission that).165 F .541 +(additional processors w)72 168 R(on')-.11 E 3.291(ts)-.198 G .541 +(peed up the basic search, w)-3.291 F .542(as deemed too inef)-.11 F +.542(\214cient and inef)-.275 F(fecti)-.275 E .872 -.165(ve t)-.275 H +3.292(oc).165 G(on-)-3.292 E(sider)72 180 Q 2.75(,a)-.44 G +(nd something better w)-2.75 E(as desired.)-.11 E 2.554 +(The second design goal w)72 204 R 2.553(as to a)-.11 F -.22(vo)-.22 G +2.553(id completely ripping Cray Blitz apart, ef).22 F(fecti)-.275 E +-.165(ve)-.275 G 2.553(ly starting from).165 F .994(scratch; rather)72 +216 R 3.744(,w)-.44 G 3.744(ew)-3.744 G .994(anted to use the same mo) +-3.854 F 1.324 -.165(ve g)-.165 H .995 +(enerator code, tree search code, mo).165 F 1.325 -.165(ve o)-.165 H +.995(rdering code,).165 F(and so forth for both a one-processor sequent\ +ial program and the multi-processing v)72 228 Q(ersion.)-.165 E 3.071 +(As)72 252 S .321(imple e)-3.071 F .321(xplanation of DTS is f)-.165 F +.321(airly easy to understand, b)-.11 F .321 +(ut it also hides a great deal of comple)-.22 F .321(xity that)-.165 F +1.565(has to be o)72 264 R -.165(ve)-.165 G 1.565 +(rcome when writing and deb).165 F 1.565(ugging the code.)-.22 F 1.566 +(At the be)7.066 F 1.566(ginning of a ne)-.165 F 4.316(wi)-.275 G 1.566 +(teration, DTS)-4.316 F(beha)72 276 Q -.165(ve)-.22 G 3.594(sj).165 G +.844(ust lik)-3.594 F 3.594(eP)-.11 G .844(VS, searching do)-3.594 F +.843 +(wn the left-hand side of the tree from ply=1 up to ply=N, with only) +-.275 F .789(one processor)72 288 R 6.289(.A)-.605 G 3.539(tp)-6.289 G +.789(ly=N, all processors "join the party" and search the ply=N mo) +-3.539 F 1.119 -.165(ve l)-.165 H .789(ist in parallel, just).165 F(lik) +72 300 Q 3.346(eP)-.11 G 3.345(VS/EPVS. Ho)-3.346 F(we)-.275 E -.165(ve) +-.275 G 1.475 -.44(r, w).165 H .595(hen a processor completes the mo).44 +F .925 -.165(ve i)-.165 H 3.345(ti).165 G 3.345(ss)-3.345 G .595 +(earching, and disco)-3.345 F -.165(ve)-.165 G .595(rs there are).165 F +(no more to be searched, DTS reacts to this.)72 312 Q .802(This idle pr\ +ocessor broadcasts \(using shared memory\) that it is idle, and is a)72 +336 R -.275(va)-.22 G .802(ilable to "help" an).275 F 3.552(yo)-.165 G +(ther)-3.552 E .514(processor \214nish searching its tree.)72 348 R .514 +(The b)6.014 F .513 +(usy processors collect the "state of the tree" data, and store it in) +-.22 F 1.558(shared memory for the idle processor to e)72 360 R 4.308 +(xamine. This)-.165 F 1.558 +(idle processor analyzes this data, and decides)4.308 F .057 +(which \(if an)72 372 R .057(y\) of the b)-.165 F .057 +(usy processors seems to ha)-.22 F .386 -.165(ve a t)-.22 H .056 +(ree that is complicated enough that it w).165 F .056(ould be ef)-.11 F +<8c2d>-.275 E .591(cient to help with the search.)72 384 R .592(If such\ + a position is found, the idle processor informs the processor which) +6.092 F -.275(ow)72 396 S(ns that node of this and the).275 E 2.75(y") +-.165 G(join" forces.)-2.75 E 2.07 -.88(To a)72 420 T .31(ccomplish thi\ +s, the idle processor speci\214cally chooses a ply=S position and tells\ + the o).88 F .309(wner that S has)-.275 F .767 +(been chosen as the split-point ply)72 432 R 6.267(.T)-.715 G .768 +(he processor with that subtree in progress then copies the complete) +-6.267 F .008(tree state to a shared memory area called a "split block"\ + \(this tree state includes the v)72 444 R .008(arious search bounds,) +-.275 F(mo)72 456 Q 1.498 -.165(ve l)-.165 H 1.169(ists for each ply un\ +der analysis, current board position and other related search data such\ + as the).165 F .745(repetition list and so forth\).)72 468 R .745 +(Both processors can no)6.245 F 3.494(we)-.275 G .744(xtract mo)-3.659 F +-.165(ve)-.165 G 3.494(sf).165 G .744 +(rom this shared data and search in)-3.494 F 2.92(parallel. Whene)72 480 +R -.165(ve)-.275 G 2.92(ro).165 G .17(ne runs out of w)-2.92 F .171 +(ork, it simply repeats this process.)-.11 F .171 +(In some cases, we might see tw)5.671 F(o)-.11 E .794 +(processors split the tree at ply=8, then one runs out of w)72 492 R +.793(ork, and decides that the other one has the best)-.11 F .401 +(split candidate, and the)72 504 R 3.151(yt)-.165 G .401 +(hen split at ply=10.)-3.151 F .401(The \214rst might run out of w)5.901 +F .402(ork at that split point, and help)-.11 F .586(the other at a ne) +72 516 R 3.336(ws)-.275 G .586(plit point at ply=12.)-3.336 F .586 +(Or it might bail out completely and choose to help another pro-)6.086 F +(cessor)72 528 Q 3.713(,s)-.44 G .964(ince going deeper and deeper spli\ +tting the tree means that each subtree searched is smaller and)-3.713 F +(smaller)72 540 Q 4.25(,a)-.44 G 1.5(nd e)-4.25 F -.165(ve)-.275 G 1.5 +(ntually the tw).165 F 4.25(op)-.11 G 1.5 +(rocessors might spend as much time splitting and sharing as the)-4.25 F +4.249(yd)-.165 G(o)-4.249 E +(searching \(more about this possible condition later)72 552 Q(.\))-.605 +E .893(The o)72 576 R -.165(ve)-.165 G .893(rall ef).165 F .893(fect of\ + this is that the processors start together on a single node, searching\ + in parallel, b)-.275 F(ut)-.22 E EP +%%Page: 5 5 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF(the)72 96 Q 2.75(yq)-.165 G +(uickly spread out in groups o)-2.75 E -.165(ve)-.165 G 2.75(rt).165 G +(he acti)-2.75 E .33 -.165(ve t)-.275 H +(ree, helping at points where there is w).165 E(ork to be done.)-.11 E +(No)72 120 Q 3.518(wt)-.275 G .768(he ne)-3.518 F .768(xt issue.)-.165 F +.767(Notice that as a processor becomes idle, it can re-split the same \ +tree it w)6.268 F .767(as sharing)-.11 F .561(with another processor)72 +132 R 3.311(,b)-.44 G .561(ut so f)-3.531 F(ar)-.11 E 3.311(,o)-.44 G +.561(nly at deeper plies.)-3.311 F(Wh)6.061 E 3.311(yi)-.055 G 3.311(st) +-3.311 G 3.311(his? Because)-3.311 F .562(it is inef)3.311 F .562 +(\214cient to back up)-.275 F 1.604(to ply N-1 and search branches ther\ +e before ply=N has been completely searched \(remember the \214rst)72 +144 R .033(ply=N split node is a PV node just lik)72 156 R 2.783(eP)-.11 +G .033(VS, and we don')-2.783 F 2.783(tw)-.198 G .033(ant to start w) +-2.893 F .034(orking on ply N-1, until we ha)-.11 F -.165(ve)-.22 G +2.388(the actual score for ply=N\).)72 168 R(Ho)7.888 E(we)-.275 E -.165 +(ve)-.275 G 3.267 -.44(r, e).165 H -.165(ve).165 G(ntually).165 E 5.137 +(,t)-.715 G 2.387(he trees can')-5.137 F 5.137(tb)-.198 G 5.137(ef) +-5.137 G 2.387(urther sub-di)-5.137 F 2.387(vided an)-.275 F 5.137(yf) +-.165 G(urther)-5.137 E .003(because the cost of doing so w)72 180 R +.003(ould be more than the cost of searching the subtree.)-.11 F(No) +5.503 E 2.754(wac)-.275 G .004(ritical decision)-2.754 F +(has to be made, "what to do ne)72 192 Q(xt?")-.165 E .389 +(Since we are using the best-kno)72 216 R .389(wn mo)-.275 F .719 -.165 +(ve o)-.165 H .389 +(rdering heuristics in the alpha/ beta tree, it is lik).165 F .388 +(ely that by the)-.11 F .641(time the \214rst fe)72 228 R 3.391(wm)-.275 +G -.165(ove)-3.391 G 3.391(sa).165 G 3.391(tp)-3.391 G .641(ly=N ha) +-3.391 F .971 -.165(ve b)-.22 H .641(een searched, we kno).165 F 3.391 +(wt)-.275 G .641(he actual score for this node, as mo)-3.391 F -.165(ve) +-.165 G(s).165 E .092(further do)72 240 R .092(wn the list should be w) +-.275 F .092(orse and not impro)-.11 F .421 -.165(ve t)-.165 H .091 +(he score further).165 F 5.591(.T)-.605 G .091(hen, allo)-5.591 F .091 +(wing idle processors to)-.275 F .276(back up to ply=N-1 and start sear\ +ching there before ply=N is completed is probably safe, and this is wha\ +t)72 252 R .129(DTS does.)72 264 R .128(On the rare occasions when the \ +ply=N search completes, and the last branch produces an e)5.629 F -.165 +(ve)-.275 G(n).165 E 1.475(better score, the processors that ha)72 276 R +1.805 -.165(ve b)-.22 H(ack).165 E 1.475 +(ed up to ply=N-1 already are searching with a less ef)-.11 F(\214cient) +-.275 E 3.062(bound. DTS)72 288 R .312 +(notices this and each processor already searching at N-1 is gi)3.062 F +-.165(ve)-.275 G 3.061(nt).165 G .311(he ne)-3.061 F 3.061(w\()-.275 G +.311(correct\) bound as)-3.061 F .261(soon as it is kno)72 300 R 3.012 +(wn. This)-.275 F .262(sounds easy and clean, b)3.012 F .262 +(ut it can cause some interesting problems, because this)-.22 F(ne)72 +312 Q 3.124(wb)-.275 G .374 +(ound might mean most of what a processor has been b)-3.124 F .374 +(usy doing can be thro)-.22 F .373(wn a)-.275 F -.11(wa)-.165 G 3.123 +(ys).11 G .373(ince the ne)-3.123 F(w)-.275 E(bound w)72 324 Q(ould ha) +-.11 E .33 -.165(ve c)-.22 H(aused a cutof).165 E 2.75(fm)-.275 G +(uch sooner than the original bound used.)-2.75 E .813(The best metapho\ +r for describing this might be "ants at a picnic" where the chess tree \ +is the picnic, and)72 348 R .01 +(the ants are the search engines \(processors\).)72 360 R .01 +(The ants start eating on a lar)5.51 F .009(ge crumb, b)-.198 F .009 +(ut as it is eaten a)-.22 F -.11(wa)-.165 G -.715(y,).11 G 1.623 +(it becomes too small and the ants that are displaced mo)72 372 R 1.953 +-.165(ve t)-.165 H 4.373(oa).165 G 1.623(nother crumb and start w)-4.373 +F 1.624(orking there..)-.11 F(Ev)72 384 Q .551 +(entually lots of ants are congre)-.165 F -.055(ga)-.165 G .551 +(ted around a steadily diminishing supply of crumbs, which brings up) +.055 F(the \214nal phase of the DTS algorithm de)72 396 Q -.165(ve)-.275 +G(lopment.).165 E .137 +(In testing this code, we found, on occasion, a position that w)72 420 R +.137(ould blo)-.11 F 2.887(wu)-.275 G 2.887(pa)-2.887 G .138 +(nd produce search times much)-2.887 F .884(longer than e)72 432 R -.165 +(ve)-.275 G 3.634(nt).165 G .884(he single-processor search.)-3.634 F +-.165(Fo)6.384 G 3.634(re).165 G .884(xample, 1 processor w)-3.799 F +.883(ould tak)-.11 F 3.633(e1m)-.11 G .883(inute to do a 10)-3.633 F +.135(ply search, b)72 444 R .135 +(ut with DTS, out of 5,000 test runs, one run w)-.22 F .136(ould tak) +-.11 F 2.886(e1m)-.11 G .136(inute to do a 5 ply search with 16)-2.886 F +3.074(processors. What)72 456 R .324(we found w)3.074 F .323(as a condi\ +tion we later termed a "feeding frenzy" to maintain the ants anal-)-.11 +F(ogy)72 468 Q 6.533(.W)-.715 G 1.033(hat w)-6.533 F 1.033 +(as happening w)-.11 F 1.033(as that as the tree w)-.11 F 1.033 +(as nearly completed, the search reached a point where)-.11 F .597 +(there were no good "split points".)72 480 R .597(DTS w)6.097 F .597 +(as quite good at recognizing when it w)-.11 F .596 +(as appropriate to split a)-.11 F .084 +(tree into parallel slices and when it w)72 492 R .084(as not.)-.11 F +(Unfortunately)5.584 E 2.834(,i)-.715 G 2.834(tw)-2.834 G .084 +(as not so good at determining when it w)-2.944 F(as)-.11 E +(time to quit checking to see if there were an)72 504 Q 2.75(yg)-.165 G +(ood split points.)-2.75 E .187 +(Imagine a case with 16 processors, with 15 idle, and one w)72 528 R +.186(orking trying to search the last 15 nodes left in)-.11 F .836 +(the entire tree.)72 540 R .836(This one processor k)6.336 F .836 +(eeps getting interrupted with "may I help you?", "can I help you?",) +-.11 F .299("could you use some help there?" and so forth, so that rath\ +er than searching, it stays b)72 552 R .298(usy cop)-.22 F .298 +(ying its tree)-.11 F 1.201(state to shared memory so that the idle pro\ +cessors can attempt to \214nd a split point.)72 564 R(The)6.701 E 3.951 +(yf)-.165 G 1.201(ail, and ask)-4.061 F(ag)72 576 Q 2.159(ain, and ag) +-.055 F 4.909(ain. And)-.055 F 2.158(in a v)4.909 F 2.158(ery fe)-.165 F +4.908(wp)-.275 G 2.158(athological cases, this almost hung the search.) +-4.908 F 3.918 -.88(To s)7.658 H(olv).88 E 4.908(et)-.165 G(his)-4.908 E +EP +%%Page: 6 6 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF 1.617(problem, which only occurred right at the\ + end of an iteration, we chose to add a "thrashing" counter)72 96 R(,) +-.44 E .202(which w)72 108 R .202(as nothing more than a counter that w) +-.11 F .202(as set to some v)-.11 F .201 +(alue when a processor handled one of those)-.275 F .692 +("may I help you?")72 120 R 3.442(queries. Until)6.192 F .693 +(that processor searched N nodes \(N w)3.442 F .693(as the v)-.11 F .693 +(alue set in the thrashing)-.275 F .754(counter\) it w)72 132 R .753 +(ould refuse to answer an)-.11 F 3.503(ym)-.165 G .753 +(ore "may I help you?")-3.503 F .753 +(queries, which eliminated the thrashing)6.253 F +(right at the end of an iteration.)72 144 Q .818(That is a basic e)72 +168 R .819(xplanation of DTS.)-.165 F(Ho)6.319 E(we)-.275 E -.165(ve) +-.275 G 1.699 -.44(r, t).165 H 3.569(oa).44 G .819(ppreciate e)-3.569 F +.819(xactly ho)-.165 F 3.569(wc)-.275 G(omple)-3.569 E 3.569(xa)-.165 G +.819(nd sophisticated this)-3.569 F -2.365 -.275(ev e)72 180 T .252 +(ntually became, the ne).275 F .252(xt step is to look at some of the s\ +peci\214c components and data structures need to)-.165 F(mak)72 192 Q +3.733(et)-.11 G .983(his algorithm perform.)-3.733 F .983 +(First, we need a couple of de\214nitions to mak)6.483 F 3.734(es)-.11 G +.984(ure terminology does not)-3.734 F(obscure the algorithm.)72 204 Q +2.75(2.2 De\214nitions)72 228 R 1.162(Split-point is a node within the \ +tree where it appears that the search must e)72 252 R 1.161 +(xamine all of the successor)-.165 F 2.791(nodes. The)72 264 R .041(qua\ +lity of a split point is related both to its depth \(nodes closer to th\ +e root of the tree represent)2.791 F(lar)72 276 Q 2.328(ger subtrees an\ +d thus are better split points\) and the con\214dence that all of the b\ +ranches must be)-.198 F 2.091(searched must be high.)72 288 R 2.091(Thi\ +s con\214dence is described in section three which discusses choosing s\ +plit)7.591 F(points.)72 300 Q .48(Branching f)72 324 R .48 +(actor is a measure of the comple)-.11 F .48 +(xity of a position reached in the tree search which character)-.165 F +(-)-.22 E .754(izes this comple)72 336 R .754(xity in terms of the a) +-.165 F -.165(ve)-.22 G .755(rage number of successor branches \(le).165 +F -.055(ga)-.165 G 3.505(lm).055 G -.165(ove)-3.505 G .755 +(s\) from this posi-).165 F 3.902(tion. Chess)72 348 R 1.152(seems to a) +3.902 F -.165(ve)-.22 G 1.152(rage around 38 according to man).165 F +3.902(yp)-.165 G 1.152(ublished papers, b)-3.902 F 1.152 +(ut the number can v)-.22 F(ary)-.275 E +(from zero \(mate or stalemate or dra)72 360 Q +(w\) to around 200 \(with man)-.165 E 2.75(yq)-.165 G +(ueens and an open board.\))-2.75 E 2.75(2.3 The)72 384 R(HELP command) +2.75 E .765 +(The HELP command is the primary signaling mechanism within DTS.)72 408 +R(Whene)6.265 E -.165(ve)-.275 G 3.515(rap).165 G .766 +(rocessor is "out of)-3.515 F -.11(wo)72 420 S +(rk" it sends the HELP command to what is ef).11 E(fecti)-.275 E -.165 +(ve)-.275 G(ly the entire group of acti).165 E .33 -.165(ve p)-.275 H +(rocessors.).165 E .444(The HELP command simply requests that an)72 444 +R 3.194(yp)-.165 G .444(rocessors that are acti)-3.194 F -.165(ve)-.275 +G .443(ly searching subtrees temporarily).165 F(stop, cop)72 456 Q 2.75 +(yt)-.11 G(he "tree state" to shared memory)-2.75 E 2.75(,a)-.715 G +(nd then continue searching.)-2.75 E 1.553 +(As these "tree states" become a)72 480 R -.275(va)-.22 G 1.553 +(ilable, the idle processor that initiated the HELP command analyzes) +.275 F 1.005(each state to determine if it can \214nd a satisf)72 492 R +1.004(actory split point.)-.11 F 1.004 +(If not, it simply re-broadcasts the HELP)6.504 F(command.)72 504 Q .07 +(As will be sho)72 528 R .07(wn later)-.275 F 2.82<2c8c>-.44 G .07 +(nding a split point is non-tri)-2.82 F .071(vial, because it is a k) +-.275 F .401 -.165(ey s)-.11 H .071(tep in the DTS algorithm.).165 F(If) +5.571 E 1.209(an incorrect split point is chosen, then it is lik)72 540 +R 1.208(ely that the processors that start to help at that point are) +-.11 F .175(going to search nodes that are not necessary)72 552 R 2.925 +(,w)-.715 G .175(hich does nothing b)-2.925 F .175 +(ut increase the parallel search o)-.22 F -.165(ve)-.165 G(rhead).165 E +(without making the search progress an)72 564 Q 2.75(yf)-.165 G +(aster through the tree.)-2.86 E EP +%%Page: 7 7 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF .59(An interesting feature here, is that once a\ + processor \214nds a viable split-point, and the Split\(\) operation is) +72 96 R 1.058(performed, whene)72 108 R -.165(ve)-.275 G 3.808(ra).165 G +1.388 -.165(ny o)-3.808 H 1.058(ther processor becomes idle, the).165 F +3.808(yc)-.165 G 1.058(heck for acti)-3.808 F 1.388 -.165(ve s)-.275 H +1.058(plit-points before broad-).165 F 1.037(casting a HELP command.)72 +120 R 1.036(If a processor locates an)6.537 F 3.786(yv)-.165 G 1.036 +(alid split points, and there is w)-4.061 F 1.036(ork remaining at)-.11 +F(an)72 132 Q 3.258(yo)-.165 G 3.258(ft)-3.258 G .508 +(hem, it simply attaches to the split point with the most w)-3.258 F +.509(ork remaining, and does not broadcast a)-.11 F 1.445(help command.) +72 144 R 1.444(This tends to k)6.944 F 1.444(eep the processors w)-.11 F +1.444(orking together in related parts of the tree, which)-.11 F(mak)72 +156 Q .521(es the transposition table and scoring hash tables more ef) +-.11 F(fecti)-.275 E .851 -.165(ve s)-.275 H .521 +(ince the information is more useful).165 F .101 +(among closely related positions.)72 168 R(Ho)5.601 E(we)-.275 E -.165 +(ve)-.275 G .981 -.44(r, i).165 H 2.851(fap).44 G .101 +(rocessor becomes idle, and \214nds no split-point with w)-2.851 F(ork) +-.11 E .665(remaining, it does initiate a HELP command and goes about \ +\214nding a ne)72 180 R 3.416(ws)-.275 G 3.416(plit-point. Other)-3.416 +F(processors)3.416 E .956(will lik)72 192 R .956 +(ely join it at that split point as the)-.11 F 3.706(yb)-.165 G .956 +(ecome idle.)-3.706 F .955 +(Another reason for doing this is that \214nding a)6.456 F .34 +(split point tak)72 204 R .34 +(es time, and once a good one has been located, there')-.11 F 3.09(sn) +-.605 G 3.09(op)-3.09 G .34(oint in locating another until the)-3.09 F +1.863 +(\214rst one has been completed, or at least until there are no more mo) +72 216 R -.165(ve)-.165 G 4.613(sl).165 G 1.863 +(eft at that point that can be)-4.613 F 1.086 +(searched by idle processors.)72 228 R 1.086(In the v)6.586 F 1.087 +(ery w)-.165 F 1.087 +(orst case, with N processors each split point could ha)-.11 F 1.417 +-.165(ve t)-.22 H -.11(wo).165 G .177(processors w)72 240 R .177 +(orking, if the tree is v)-.11 F .176(ery narro)-.165 F 4.356 -.715 +(w. I)-.275 H 2.926(nt).715 G .176(he optimal case, which is f)-2.926 F +.176(airly common in the middle-)-.11 F -.055(ga)72 252 S 1.416 +(me, there are rarely more than one or tw).055 F 4.166(os)-.11 G 1.416 +(plit points, the \214rst is nearly completed, and the second)-4.166 F +(\(ne)72 264 Q +(w\) split point is where each processor goes when it runs out of w) +-.275 E(ork at the original split point.)-.11 E 2.078 -.88(To p)72 288 T +.318(rocess the HELP command, a simple test w).88 F .317 +(as added to the sequential search code.)-.11 F .317(After an)5.817 F +3.067(yn)-.165 G .317(ode is)-3.067 F .91(processed, HELP\(i\) is check) +72 300 R .911(ed, and if set, the tree state is copied to shared memory) +-.11 F 3.661(,t)-.715 G .911(he \215ag is cleared,)-3.661 F .888 +(and the search continues normally)72 312 R 6.388(.T)-.715 G .887 +(his reduces the idle time for a processor to the time required for a) +-6.388 F .712(processor to search one node and return to the top of Sea\ +rch\(\) and then store the "tree state" for the idle)72 324 R .982 +(processor to e)72 336 R 3.732(xamine. \(About)-.165 F .981 +(30 microseconds on a Cray C90.\))3.732 F .981 +(After this time, an idle processor will)6.481 F(ha)72 348 Q .33 -.165 +(ve a)-.22 H 2.75(tl).165 G(east one tree state to e)-2.75 E +(xamine for split points, making this reasonably ef)-.165 E(\214cient.) +-.275 E 1.001(While it sounds lik)72 372 R 3.751(eal)-.11 G 1.001 +(ot of w)-3.751 F 1.001(ait time could accumulate, man)-.11 F 3.751(yt) +-.165 G 1.001(ests on a C90 ha)-3.751 F 1.332 -.165(ve c)-.22 H 1.002 +(on\214rmed that this).165 F -.11(wa)72 384 S .232(it time is ne).11 F +2.982(gligible. In)-.165 F .231(searching for 5-6 minutes of w)2.982 F +.231(all-clock time, typical idle times \(per processor\))-.11 F -2.475 +-.22(av e)72 396 T .566(rage between .01 seconds and .1 seconds.).22 F +.566(On rare occasions \(notably v)6.066 F .566(ery simple endg)-.165 F +.567(ame positions)-.055 F .666(where the branching f)72 408 R .666 +(actor is quite lo)-.11 F .665 +(w\) this has reached one second per processor)-.275 F 3.415(,s)-.44 G +.665(till k)-3.415 F .665(eeping the idle)-.11 F .882 +(time per processor do)72 420 R .882 +(wn to less than .3% of the total search time.)-.275 F .883 +(One major reason for this is that the)6.383 F .279 +(code which selects split points is v)72 432 R .279(ery careful, and f) +-.165 F -.22(avo)-.11 G .279 +(rs nodes near the root of the tree, because the sub-).22 F 1.307 +(trees belo)72 444 R 4.057(wt)-.275 G 1.307 +(hose nodes represent a signi\214cant amount of w)-4.057 F 1.307 +(ork that must be completed before another)-.11 F .703 +(split point must be found.)72 456 R .703 +(The only time that processors are idle is while the)6.203 F 3.452(ya) +-.165 G .702(re w)-3.452 F .702(aiting on other pro-)-.11 F .573 +(cessors to pro)72 468 R .573 +(vide tree state information to one idle processor)-.165 F 3.324(,o)-.44 +G 3.324(rw)-3.324 G .574(hile the)-3.324 F 3.324(ya)-.165 G .574(re w) +-3.324 F .574(aiting on one idle pro-)-.11 F .071 +(cessor to select a split point.)72 480 R .071(If this e)5.571 F -.165 +(ve)-.275 G .071(nt is relati).165 F -.165(ve)-.275 G .07 +(ly rare, as it typically is in DTS, then the opportunities).165 F +(for accumulating e)72 492 Q(xcessi)-.165 E .33 -.165(ve i)-.275 H +(dle time are fe).165 E 2.75(wa)-.275 G(nd f)-2.75 E(ar between.)-.11 E +2.75(2.4 The)72 516 R(Split\(\) operation.)2.75 E .315 +(Split\(\) is called whene)72 540 R -.165(ve)-.275 G 3.065(ra).165 G +3.065(ni)-3.065 G .315 +(dle processor has one or more "tree state" blocks to e)-3.065 F .316 +(xamine when attempt-)-.165 F .267(ing to \214nd a split-point.)72 552 R +.266(Split\(\) \214rst attempts to \214nd a good split point \(section \ +three\) and then sets things)5.767 F(up so that the Select\(\) operatio\ +n described later can function correctly)72 564 Q(.)-.715 E EP +%%Page: 8 8 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF .557(The \214rst operation performed after a go\ +od split-point is located is to allocate a data structure kno)72 96 R +.557(wn as a)-.275 F 1.231(SPLIT BLOCK.)72 108 R 1.23 +(This data structure is simply an e)6.731 F 1.23 +(xact duplicate of the tree search data structures that)-.165 F .028 +(already e)72 120 R .029(xist in each processor')-.165 F 2.779(sl)-.605 +G .029(ocal memory area.)-2.779 F .029(It contains the v)5.529 F .029 +(arious mo)-.275 F .359 -.165(ve l)-.165 H .029 +(ists, board information,).165 F(scoring information, etc.)72 132 Q .265 +(The Split\(\) operation then copies ALL of the current processor')72 +156 R 3.015(sl)-.605 G .265(ocal tree state information to the SPLIT) +-3.015 F 3.208(BLOCK. \(ALL)72 168 R .458 +(here means that if the current ply is \214v)3.208 F 3.208(e\()-.165 G +.458(5\), then all of the data for plies 1-5 are copied,)-3.208 F -.22 +(bu)72 180 S 4.901(tn).22 G 2.151(ot all of the useless data belo)-4.901 +F 4.901(wp)-.275 G 2.151(ly 5.)-4.901 F 2.151(Note that EVER)7.651 F +2.15(YTHING is copied, so that this global)-.715 F .806 +(\(shared\) memory area has an e)72 192 R .807(xact cop)-.165 F 3.557 +(yo)-.11 G 3.557(ft)-3.557 G .807(he current processor')-3.557 F 3.557 +(ss)-.605 G .807(earch data structures.)-3.557 F .807(It w)6.307 F .807 +(ould no)-.11 F(w)-.275 E .026(be possible for this processor to e)72 +204 R .026(xit, and another processor could cop)-.165 F 2.776(yt)-.11 G +.026(his global data to its pri)-2.776 F -.275(va)-.275 G .025(te mem-) +.275 F .497(ory area and resume the search just as if it were the origi\ +nal processor since it no)72 216 R 3.247(ww)-.275 G .497(ould ha)-3.357 +F .827 -.165(ve a)-.22 H .497(ccess to).165 F -2.365 -.275(ev e)72 228 T +.406(rything the original processor had.).275 F 3.156(\(Note: Cray)5.906 +F .406(Blitz w)3.156 F .405(as written before F)-.11 F .405 +(ortran supported recursion,)-.165 F 1.075 +(and as a result, it did not use the no)72 240 R 3.825(wi)-.275 G 3.825 +(nv)-3.825 G 1.075(ogue "ne)-4.045 F -.055(ga)-.165 G 1.075 +(max" recursi).055 F 1.405 -.165(ve a)-.275 H 1.075 +(lpha/beta search implementation.).165 F .118(As a result, there w)72 +252 R .118(as no problem in implementing the parallel search as e)-.11 F +2.868(xplained. Ne)-.165 F -.055(ga)-.165 G .117(max w).055 F .117 +(ould ha)-.11 F -.165(ve)-.22 G 1.058(made it much more dif)72 264 R +1.058(\214cult, since the call stack is inaccessible to the search code\ + and mo)-.275 F 1.059(ving the tree)-.165 F(state around w)72 276 Q +(ould ha)-.11 E .33 -.165(ve b)-.22 H(een much more dif).165 E +(\214cult [Pearl80].\))-.275 E .733(The Split\(\) operation then passes\ + the address of this SPLIT BLOCK to an)72 300 R 3.483(yp)-.165 G .733 +(rocessors that are currently)-3.483 F .224(idle, so that the)72 312 R +2.974(ym)-.165 G .224(ay be)-2.974 F .224(gin w)-.165 F .224 +(orking at this point immediately)-.11 F 5.725(.T)-.715 G .225 +(he idle processors drop out of their b)-5.725 F(usy)-.22 E -.11(wa)72 +324 S 1.109(it loop since the).11 F 3.859(yn)-.165 G 1.659 -.275(ow h) +-3.859 H -2.475 -.22(av e).275 H 3.859(ap)4.079 G 1.108(ointer to a v) +-3.859 F 1.108(alid SPLIT BLOCK rather than a v)-.275 F 1.108 +(alue of "zero".)-.275 F(The)6.608 E(y)-.165 E(must \214rst cop)72 336 Q +2.75(yt)-.11 G(he global data to their pri)-2.75 E -.275(va)-.275 G +(te memory area, and then be).275 E(gin searching at that point.)-.165 E +.258(The primary reason for cop)72 360 R .258 +(ying ALL of the "splitting" processor')-.11 F 3.009(sd)-.605 G .259 +(ata to the shared memory re)-3.009 F .259(gion is to)-.165 F -.22(avo) +72 372 S 1.046(id an).22 F 3.796(yt)-.165 G 1.045(ype of synchronizatio\ +n delays after searching all branches from the split-point.)-3.796 F +1.045(The speci\214c)6.545 F .607(problem addressed is that the "contro\ +lling" processor \(the one splitting w)72 384 R .608 +(ork for other processors to help)-.11 F .548 +(with\) might choose a branch that is v)72 396 R .548 +(ery simple with a minimum number of nodes and \214nish this branch) +-.165 F .902(quite quickly)72 408 R 6.402(.A)-.715 G .902 +(nother processor might choose a branch that has man)-6.402 F 3.653(yc) +-.165 G .903(hecks and/or search e)-3.653 F(xtensions)-.165 E 1.666 +(and requires an e)72 420 R 1.666(xtended amount of time to search.) +-.165 F 1.666(The controlling processor w)7.166 F 1.665 +(ould often \214nd itself)-.11 F -.11(wa)72 432 S .673 +(iting on other processors to complete their searches and return the v) +.11 F .674(alues for their subtrees before the)-.275 F +(controlling processor could back up the proper v)72 444 Q(alue.)-.275 E +-.44(Wi)72 468 S .375(th the current implementation, this ne).44 F -.165 +(ve)-.275 G 3.125(rh).165 G 3.125(appens. Since)-3.125 F .375 +(ALL processors ha)3.125 F .705 -.165(ve a c)-.22 H .375(omplete cop) +.165 F 3.125(yo)-.11 G 3.125(ft)-3.125 G(he)-3.125 E .694 +(search data, an)72 480 R 3.444(yo)-.165 G 3.444(ft)-3.444 G .694(hem i\ +s capable of \214nishing the search of the nodes in the tree after the \ +split-point is)-3.444 F 2.751(completed. F)72 492 R .001(or e)-.165 F +.001(xample, processor 1 can search from plies 1 through 5 and then ano\ +ther processor selects)-.165 F 1.294(ply=5 as a split-point.)72 504 R +1.295(Processor 2 joins the search at this split-point and selects a br\ +anch to e)6.794 F(xamine.)-.165 E .455(Processor 1 completes the remain\ +der of the branches at this split-point and then sends a HELP command)72 +516 R 1.552 +(to processor 2 so that it can help with the remainder of the comple)72 +528 R 4.303(xb)-.165 G 1.553(ranch processor 2 is searching.)-4.303 F +1.018(When the search \214nally backs up to ply=1, EITHER processor \(b) +72 540 R 1.018(ut not both\) could be in char)-.22 F 1.017(ge of the) +-.198 F .019 +(search at that point; it depends on which one \214nishes \214rst.)72 +552 R .019(In simple terms, this is a "peer)5.519 F .02 +(-to-peer" design,)-.22 F(rather than a "master)72 564 Q(-sla)-.22 E +-.165(ve)-.22 G 2.75("d).165 G(esign, so that all processors are equal.) +-2.75 E EP +%%Page: 9 9 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF .093 +(The nice feature of this approach is that whene)72 96 R -.165(ve)-.275 +G 2.842(rA).165 G .092(NY processor runs out of w)-2.842 F .092 +(ork at a split-point, it then)-.11 F .49(assists one of the b)72 108 R +.49(usy processors by \214rst sending a HELP command to force the creat\ +ion of a ne)-.22 F 3.241(ws)-.275 G(plit-)-3.241 E .663 +(point where this idle processor can "join in.")72 120 R .663 +(This feature is implemented by a simple rule that pre)6.163 F -.165(ve) +-.275 G(nts).165 E(an)72 132 Q 3.464(yp)-.165 G .714(rocessor from back\ +ing the search up past a split point, unless \(if and only if\) only on\ +e processor is)-3.464 F -.11(wo)72 144 S .181 +(rking on that split point.).11 F .18(The best visual analogy is the g) +5.68 F .18(ame of "leap-frog" where one processor starts)-.055 F .685(o\ +n a position, another helps it, the \214rst \214nishes and "leap-frogs"\ + the second to a position further into the)72 156 R(tree and helps the \ +second processor search at that point, and so forth.)72 168 Q 2.75 +(2.5 The)72 192 R(Select\(\) operation.)2.75 E 1.079(one of the tw)72 +216 R 3.829(og)-.11 G 1.078 +(oals mentioned when designing the DTS algorithm w)-3.829 F 1.078 +(as to a)-.11 F -.22(vo)-.22 G 1.078(id completely re-writing).22 F .307 +(the search code for Cray Blitz.)72 228 R .308 +(This code \(approximately 10,000 lines of FOR)5.807 F .308 +(TRAN, which are replaced)-.66 F .35(by about 20,000 lines of Cray Asse\ +mbly Language [CAL] when running on the C90\) has been de)72 240 R -.165 +(ve)-.275 G(loped).165 E 1.21(and deb)72 252 R 1.21(ugged o)-.22 F -.165 +(ve)-.165 G 3.96(rap).165 G 1.21 +(eriod of years, and altering it signi\214cantly w)-3.96 F 1.211 +(as something the authors w)-.11 F 1.211(anted to)-.11 F -.22(avo)72 264 +S(id if possible since deb).22 E +(ugging the parallel processing code already loomed as a lar)-.22 E +(ge obstacle.)-.198 E -.165(Fo)72 288 S 3.376(rs).165 G(implicity)-3.376 +E 3.376(,t)-.715 G .626(he design retained the original programming met\ +hodology that a processor maintains the)-3.376 F 1.152 +(tree \(subtree, actually\) it is searching by k)72 300 R 1.152 +(eeping all of the related data in local \(pri)-.11 F -.275(va)-.275 G +1.152(te, task common,).275 F(etc.\) memory so that other processors ca\ +n not "change" this information directly)72 312 Q(.)-.715 E(Ho)72 336 Q +(we)-.275 E -.165(ve)-.275 G 1.079 -.44(r, s).165 H .199 +(ince a group of processors must w).44 F .198 +(ork together at some point within the tree, shared memory is)-.11 F +.022(also required to allo)72 348 R 2.772(wt)-.275 G .022 +(his communication.)-2.772 F .022 +(The simple implementation mechanism we chose w)5.522 F .023(as to mod-) +-.11 F(ify the procedure Select\(\) so that it could w)72 360 Q +(ork in this en)-.11 E(vironment.)-.44 E .716 +(Select\(\) is a procedure called to select the ne)72 384 R .715(xt mo) +-.165 F 1.045 -.165(ve a)-.165 H 3.465(tt).165 G .715 +(he current node in the tree.)-3.465 F(Normally)6.215 E 3.465(,i)-.715 G +3.465(te)-3.465 G(xam-)-3.63 E 1.611(ines the mo)72 396 R 1.941 -.165 +(ve l)-.165 H 1.612(ist in the pri).165 F -.275(va)-.275 G 1.612 +(te memory for the current processor and remo).275 F -.165(ve)-.165 G +4.362(so).165 G 1.612(ne of the mo)-4.362 F -.165(ve)-.165 G 4.362(sf) +.165 G(or)-4.362 E -.165(ex)72 408 S 3.946(amination. At).165 F 3.946 +(as)3.946 G 1.196(plit-point, this is slightly more complicated since m\ +ultiple processors are "sharing")-3.946 F(this mo)72 420 Q .33 -.165 +(ve l)-.165 H(ist.).165 E 1.29 +(Select\(\) is unchanged, the only code that w)72 444 R 1.291 +(as modi\214ed w)-.11 F 1.291 +(as the code that actually calls Select\(\) within)-.11 F 2.909 +(Search\(\). Search\(\))72 456 R .159(simply tests to see if the curren\ +t ply is a split point, and if so it copies the shared mo)2.909 F -.165 +(ve)-.165 G .917(list to the local mo)72 468 R 1.248 -.165(ve l)-.165 H +.918(ist, calls Select\(\) to choose one for searching and then remo) +.165 F -.165(ve)-.165 G 3.668(si).165 G 3.668(tf)-3.668 G .918 +(rom the mo)-3.668 F -.165(ve)-.165 G .531 +(list. Search\(\) then copies the local mo)72 480 R .861 -.165(ve l) +-.165 H .53 +(ist back to the shared one \(all protected by a semaphore so that).165 +F .131(no race conditions arise\).)72 492 R .131(If the current ply is \ +not a split point, Select\(\) is simply called normally)5.631 F 5.632 +(.t)-.715 G .132(he fol-)-5.632 F(lo)72 504 Q 1.494(wing code sho)-.275 +F 1.494(ws ho)-.275 F 4.244(wt)-.275 G 1.494(his w)-4.244 F 1.494 +(as implemented.)-.11 F 1.494 +(The major bene\214t here is that Select\(\) is a v)6.994 F 1.493 +(ery lar)-.165 F(ge)-.198 E .6(block of code, that generates mo)72 516 R +-.165(ve)-.165 G .6(s, orders the list, selects mo).165 F -.165(ve)-.165 +G 3.35(sf).165 G .601(rom the list based on things lik)-3.35 F 3.351(ec) +-.11 G(ap-)-3.351 E 1.49(tures and the e)72 528 R 1.49(xpected g)-.165 F +1.49(ain, killer mo)-.055 F -.165(ve)-.165 G 1.49(s, and so forth.).165 +F 1.49(It w)6.99 F 1.49(as considered v)-.11 F 1.489 +(ery desirable to lea)-.165 F 1.819 -.165(ve t)-.22 H(his).165 E +(completely alone, since the assembly v)72 540 Q +(ersion of this module is se)-.165 E -.165(ve)-.275 G +(ral thousand lines long.).165 E(call Select\(\))99.5 564 Q EP +%%Page: 10 10 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF -.11(wa)72 96 S 2.75(sr).11 G +(eplaced by the follo)-2.75 E(wing lines of code:)-.275 E +(if\(ply .eq. splitl\(taskid\)\) then)99.5 120 Q(call Selget\(\))110.5 +132 Q(call Select\(\))110.5 144 Q(call Selput\(\))110.5 156 Q(else)99.5 +168 Q(call Select\(\))110.5 180 Q(endif)99.5 192 Q .425(In the abo)72 +216 R .755 -.165(ve c)-.165 H .425 +(ode, Selget\(\) sets a semaphore to lock this mo).165 F .755 -.165 +(ve l)-.165 H .425(ist \(there are multiple semaphores so that).165 F +.191(multiple mo)72 228 R .52 -.165(ve l)-.165 H .19(ists can be shared\ + without unnecessary interaction\) and then copies the global mo).165 F +.52 -.165(ve l)-.165 H .19(ist to).165 F .568(the local memory)72 240 R +3.318(.S)-.715 G .568(elect\(\) then operates normally)-3.318 F 6.068 +(.S)-.715 G .568(elput\(\) then copies the mo)-6.068 F .898 -.165(ve l) +-.165 H .569(ist back \(after a mo).165 F -.165(ve)-.165 G +(has been remo)72 252 Q -.165(ve)-.165 G 2.75(df).165 G +(or searching\) and \214nally clears the semaphore.)-2.75 E .752(The v) +72 276 R .751(ector splitl\(taskid\) is set up by the split operation a\ +nd identi\214es the current split point for this pro-)-.165 F .736 +(cessor \(taskid\).)72 288 R .737(It should be noted that this implemen\ +tation is quite good in terms of ef)6.236 F(\214cienc)-.275 E 2.167 +-.715(y, b)-.165 H(ecause).715 E .353(the Selget\(\) \(cop)72 300 R +3.103(ys)-.11 G .352(hared memory to local memory\) and the Selput\(\) \ +\(back to shared memory\) operations)-3.103 F 1.311 +(are rarely used, and on a Cray the)72 312 R 4.061(yv)-.165 G 1.312 +(ectorize quite well and cost v)-4.226 F 1.312(ery little.)-.165 F 1.312 +(Note that this same code)6.812 F -.11(wo)72 324 S .911(rks well withou\ +t parallel processing since Selget\(\) and Selput\(\) are ne).11 F -.165 +(ve)-.275 G 3.661(rc).165 G .911(alled if a Split\(\) operation)-3.661 F +(has not been performed.)72 336 Q 2.75(2.6 The)72 360 R(Mer)2.75 E +(ge\(\) operation.)-.198 E(Whene)72 384 Q -.165(ve)-.275 G 2.897(rap) +.165 G .147(rocessor calls Select\(\) and is told that the mo)-2.897 F +-.165(ve)-.165 G 2.898(sl).165 G .148(ist is empty)-2.898 F 2.898(,t) +-.715 G .148(he \214rst test made by the DTS)-2.898 F .702 +(search algorithm is "is this a split-point?")72 396 R .702 +(If the answer is yes, this processor has computed a v)6.202 F .701 +(alue that)-.275 F .225 +(represents only a subset of the branches from this node.)72 408 R .226 +(The DTS Search no)5.726 F 2.976(wc)-.275 G .226(alls procedure Mer) +-2.976 F .226(ge\(\) to)-.198 F .397(process this partial v)72 420 R +3.147(alue. Mer)-.275 F .396(ge\(\) simply compares the search v)-.198 F +.396(alue from the current partial search with)-.275 F .983 +(the best search v)72 432 R .984(alue for this node yet back)-.275 F +.984(ed up, and remembers the best result.)-.11 F .984 +(It also notes that one)6.484 F 1.367(less processor is w)72 444 R 1.366 +(orking at this split point by decrementing the processor count.)-.11 F +1.366(If this count is no)6.866 F(w)-.275 E -.165(ex)72 456 S .252 +(actly one, the split-point is no longer needed; in this case, Mer).165 +F .252(ge\(\) sends an UNSPLIT command to the)-.198 F +(remaining processor \(described belo)72 468 Q -.715(w.)-.275 G(\)).715 +E .333(After the cleanup is completed via Mer)72 492 R .332 +(ge\(\), the DTS algorithm then returns this processor to its idle loop) +-.198 F .501(where it immediately checks for another split-point to joi\ +n, or else it generates a HELP command to cre-)72 504 R +(ate a split-point.)72 516 Q 2.75(2.7 The)72 540 R +(Unsplit\(\) operation.)2.75 E .076(The ne)72 564 R .076 +(xt-to-last processor w)-.165 F .076(orking on a split point sends an U\ +NSPLIT command to the remaining proces-)-.11 F(sor)72 576 Q 2.818(,w) +-.44 G(hene)-2.818 E -.165(ve)-.275 G 2.818(ri).165 G 2.818<748c>-2.818 +G .068(nds no more w)-2.818 F .068(ork to do at this split point.)-.11 F +.068(The split-point has been completely searched)5.568 F EP +%%Page: 11 11 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF -.165(ex)72 96 S +(cept for the branch being analyzed by the remaining processor).165 E(.) +-.605 E 2.147(When a processor recei)72 120 R -.165(ve)-.275 G 4.897(sa) +.165 G 4.897(nU)-4.897 G 2.147 +(NSPLIT command, it calls procedure Unsplit\(\) to cleanup the split-) +-4.897 F .221(point\(S\) that ha)72 132 R .551 -.165(ve b)-.22 H .221(e\ +en "almost completed" \(recall that the current processor is STILL sear\ +ching a branch).165 F(at one or more of these e)72 144 Q +(xhausted split-points.\))-.165 E .028(Unsplit\(\) performs tw)72 168 R +2.778(oa)-.11 G 2.778(ctions. The)-2.778 F .028(\214rst action it tak) +2.778 F .027(es is to compare the partial score from the split-point) +-.11 F .42(with its o)72 180 R .42 +(wn partial score for that ply and remember the best one.)-.275 F .42 +(It then deallocates the SPLIT BLOCK)5.92 F .982 +(so that this block can be used whene)72 192 R -.165(ve)-.275 G 3.731 +(ra).165 G .981(nother Split\(\) operation is required.)-3.731 F .981 +(After an Unsplit\(\) opera-)6.481 F(tion, all signs of the pre)72 204 Q +(vious Split\(\) operation are gone.)-.275 E 2.75(2.8 The)72 228 R +(Share\(\) operation.)2.75 E 1.051(Since the ef)72 252 R(\214cienc)-.275 +E 3.801(yo)-.165 G 3.801(ft)-3.801 G 1.051 +(he alpha/beta algorithm directly depends on kno)-3.801 F 1.051 +(wing the best scores back)-.275 F 1.052(ed up)-.11 F 1.525 +(through the tree, whene)72 264 R -.165(ve)-.275 G 4.275(rb).165 G 1.525 +(acking up a ne)-4.275 F 4.274(wb)-.275 G 1.524 +(est score to a split-point ply \(by an)-4.274 F 4.274(yo)-.165 G 4.274 +(ft)-4.274 G 1.524(he processors)-4.274 F -.11(wo)72 276 S +(rking at that split-point\), special action is required.).11 E .971 +(The re)72 300 R .971(gular search procedure Backup\(\) w)-.165 F .972 +(as modi\214ed to check for this condition in the same manner as)-.11 F +1.06(Select\(\) described pre)72 312 R(viously)-.275 E 3.81(,i)-.715 G +3.81(tc)-3.81 G 1.06 +(hecks the SPLITL\(i\) \215ag to determine if it is "w)-3.81 F 1.06 +(orking together" with)-.11 F .182(another processor)72 324 R 5.682(.I) +-.605 G 2.932(fs)-5.682 G .182 +(o, it sends a SHARE command to all processors w)-2.932 F .182 +(orking at this split- point.)-.11 F(These)5.683 E .193 +(processors then call Share\(\) to determine if this ne)72 336 R .193 +(wly back)-.275 F .192(ed up v)-.11 F .192(alue is better than the v) +-.275 F .192(alue in this pro-)-.275 F(cessor')72 348 Q 3.565(ss)-.605 G +3.565(earch. If)-3.565 F .815(so, some quick tests for alpha/beta cutof) +3.565 F .816(fs are made to determine if this ne)-.275 F .816(wly a) +-.275 F -.275(va)-.22 G(il-).275 E(able v)72 360 Q(alue w)-.275 E +(ould prune a)-.11 E -.11(wa)-.165 G 2.75(yp).11 G +(art of the tree currently being searched by this processor)-2.75 E(.) +-.605 E .161(This procedure w)72 384 R .161(as added to address tw)-.11 +F 2.911(op)-.11 G 2.91(roblems. \(1\))-2.911 F .16(When a better v)2.91 +F .16(alue is found at a split-point, ef)-.275 F<8c2d>-.275 E(cienc)72 +396 Q 4.368(yd)-.165 G 1.618(emands that all processors be made a)-4.368 +F -.11(wa)-.165 G 1.619 +(re of it as soon as possible in order to maximize the).11 F .109 +(alpha/beta ef)72 408 R(\214cienc)-.275 E 4.289 -.715(y. \()-.165 H +2.859(2\) W).715 F 2.859(ea)-.88 G .109(nticipated the case where the s\ +earch might create a split-point at a location)-2.859 F .717 +(within the tree where either alpha or beta might be unkno)72 420 R .717 +(wn \(this is the idea of speculati)-.275 F 1.048 -.165(ve s)-.275 H +.718(earching to).165 F -.11(ke)72 432 S .59(ep processors b).11 F .59 +(usy described earlier)-.22 F 3.339(.\) Share\(\))-.605 F .589 +(determines these v)3.339 F .589(alues for the current processor when-) +-.275 F -2.365 -.275(ev e)72 444 T 2.75(rt).275 G(he)-2.75 E 2.75(yb) +-.165 G(ecome a)-2.75 E -.275(va)-.22 G(ilable.).275 E 2.75(3. Choosing) +72 468 R(where to split the tree.)2.75 E 1.027(The most important decis\ +ion that the DTS algorithm frequently addresses is where to split the t\ +ree into)72 492 R 1.083(parallel subtrees.)72 504 R 1.083(If it chooses\ + a good split point, performance is good; if it chooses a poor split po\ +int,)6.583 F(performance suf)72 516 Q(fers.)-.275 E(3.1 Node types PV)72 +540 Q 2.75(,C)-1.419 G(UT and ALL.)-2.75 E 3.097(Knuth and Moore clearl\ +y de\214ned three node classes of nodes within the alpha/beta minimax t\ +ree)72 564 R 4.378([Knut75]. While)72 576 R 1.628(their analysis w)4.378 +F 1.628(as centered on a minimal g)-.11 F 1.627 +(ame-tree with perfect mo)-.055 F 1.957 -.165(ve o)-.165 H 1.627 +(rdering, the).165 F EP +%%Page: 12 12 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF .386(concepts the)72 96 R 3.136(yp)-.165 G .386 +(resented also apply to "real" alpha/beta trees, e)-3.136 F -.165(ve) +-.275 G 3.136(nt).165 G .386(hough it is impossible to produce per) +-3.136 F(-)-.22 E .611(fect mo)72 108 R .94 -.165(ve o)-.165 H .61 +(rdering [Hyatt89].).165 F .61(In this conte)6.11 F .61 +(xt we use the terminology de)-.165 F -.165(ve)-.275 G .61 +(loped in [Marsland85], which).165 F(uses the terms PV)72 120 Q 2.75(,C) +-1.419 G(UT and ALL instead of type one, tw)-2.75 E 2.75(oa)-.11 G +(nd three.)-2.75 E -.88(Ty)108 144 S .768(pe one \(PV\) nodes.).88 F +.769(The root position is a type one node.)6.268 F .769 +(The \214rst successor)6.269 F .346(of a PV node is also a PV node whil\ +e all other successors of a PV node are CUT)108 156 R 3.17(nodes. PV)108 +168 R .42(nodes require e)3.17 F .421 +(xamination of all their successors.)-.165 F 3.171(AP)5.921 G 3.171(Vn) +-3.171 G .421(ode is easy)-3.171 F .643 +(to recognize, because both alpha and beta are at their original v)108 +180 R .643(alues since noth-)-.275 F(ing has yet been searched.)108 192 +Q -.88(Ty)108 216 S .02(pe tw).88 F 2.77(o\()-.11 G .02(CUT\) nodes.) +-2.77 F 2.771(AC)5.521 G .021 +(UT node is a successor of either a PV node \(as gi)-2.771 F -.165(ve) +-.275 G(n).165 E(abo)108 228 Q -.165(ve)-.165 G 3.434(\)o).165 G 3.433 +(ra)-3.434 G 3.433(nA)-3.433 G .683(LL node.)-3.433 F 3.433(AC)6.183 G +.683(UT node only requires e)-3.433 F .683(xamination of one succes-) +-.165 F .407(sor \(for perfectly ordered g)108 240 R .407(ame trees.\)) +-.055 F .407(This is the node type that we must recog-)5.907 F .99 +(nize and a)108 252 R -.22(vo)-.22 G .989 +(id selecting as a split-point, because with best mo).22 F 1.319 -.165 +(ve o)-.165 H .989(rdering, only).165 F .206 +(one branch needs to be searched, which lea)108 264 R -.165(ve)-.22 G +2.957(sn).165 G 2.957(ow)-2.957 G .207(ork for additional processors,) +-3.067 F(other than w)108 276 Q(ork that is completely unnecessary)-.11 +E(.)-.715 E -.88(Ty)108 300 S 2.43(pe three \(ALL\) nodes.).88 F 2.43 +(An ALL node is a successor of a CUT node and)7.93 F .719(requires e)108 +312 R .72(xamination of all its successor branches.)-.165 F(Ev)6.22 E +.72(en more interesting, mo)-.165 F -.165(ve)-.165 G .335(ordering with\ +in a type three node is completely unimportant and has no ef)108 324 R +.335(fect on)-.275 F 2.053(the total nodes searched.)108 336 R 2.054 +(This is an important node type in a parallel search)7.554 F .806 +(because e)108 348 R -.165(ve)-.275 G .806(ry mo).165 F 1.136 -.165 +(ve m)-.165 H .806(ust be searched, of).165 F .806(fering plenty of w) +-.275 F .805(ork that can be done)-.11 F(in parallel.)108 360 Q 1.164 +(From these de\214nitions, se)72 384 R -.165(ve)-.275 G 1.164 +(ral things become apparent.).165 F 1.164(\(1\) T)6.664 F 1.164 +(ype three \(ALL\) nodes are perfect candi-)-.88 F .276(dates for paral\ +lel searching since all successors must be searched, and the order of t\ +ra)72 396 R -.165(ve)-.22 G .276(rsal for these suc-).165 F .152 +(cessors is unimportant.)72 408 R 2.902(\(2\) T)5.652 F .152(ype tw)-.88 +F 2.902(o\()-.11 G .152(CUT\) nodes must be a)-2.902 F -.22(vo)-.22 G +.153(ided as split points since only one succes-).22 F .225 +(sor must be e)72 420 R 2.975(xamined. If)-.165 F .225 +(such a node is chosen as a split point, e)2.975 F .225 +(xtra branches will be searched, resulting)-.165 F .91(in w)72 432 R .91 +(asted w)-.11 F 3.66(ork. \(3\))-.11 F -.88(Ty)3.66 G .91(pe one \(PV\)\ + nodes appear to be good candidates for parallel search until careful) +.88 F 1.023(study unco)72 444 R -.165(ve)-.165 G 1.023(rs the f).165 F +1.023 +(act that the \214rst successor of a type one node must be completely e) +-.11 F 1.022(xamined before)-.165 F(an)72 456 Q 4.358(yo)-.165 G 4.358 +(ft)-4.358 G 1.608(he other successors.)-4.358 F 1.608(This is required\ + since the \214rst branch establishes a search bound for the)7.108 F +1.174(remainder of the successors, and if the)72 468 R 3.924(ya)-.165 G +1.174(re searched before this bound is kno)-3.924 F 1.174(wn, e)-.275 F +1.174(xtra w)-.165 F 1.174(ork might be)-.11 F(done.)72 480 Q 2.75 +(3.2 Classifying)72 504 R(node types.)2.75 E .563(When a processor gene\ +rates a HELP command, and obtains tree-state data from b)72 528 R .564 +(usy processors, it must)-.22 F .408(\(if possible\) establish a split \ +point so that it \(and other idle processors\) can "join in" and help.) +72 540 R .408(From sec-)5.908 F .39(tion 3.1, it becomes ob)72 552 R .39 +(vious that type ALL nodes mak)-.165 F 3.141(ed)-.11 G .391 +(esirable split points, type PV nodes mak)-3.141 F 3.141(ed)-.11 G(esir) +-3.141 E(-)-.22 E 1.62(able split points AFTER the \214rst successor of\ + the node has been completely searched, and type CUT)72 564 R +(nodes must be a)72 576 Q -.22(vo)-.22 G(ided at all costs.).22 E EP +%%Page: 13 13 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF 1.52(Cray Blitz contains a function T)72 96 R +1.52(ypeNode\(\), that types an)-.88 F 4.27(yn)-.165 G 1.52 +(ode from ply one to the current ply)-4.27 F 9.771(.t)-.715 G(his)-9.771 +E .574(function is called by function Split\(\) to mak)72 108 R 3.323 +(ea)-.11 G 3.323(ni)-3.323 G .573 +(nitial "guess" of the node types for each ply in the cur)-3.323 F(-) +-.22 E(rent processor')72 120 Q 2.75(ss)-.605 G(earch space.)-2.75 E +.239(It mak)72 144 R .239(es the follo)-.11 F .239(wing assumptions.) +-.275 F .239(If, for the current node being tested, the v)5.739 F .24 +(alues of alpha and beta are)-.275 F .06 +(equal to the initial search windo)72 156 R 1.49 -.715(w, t)-.275 H .06 +(hen this node is a PV node.).715 F .059 +(Otherwise, if the current node is at an odd)5.559 F .683 +(ply and alpha is equal to the lo)72 168 R .684 +(wer initial search bound, or the current node is at an e)-.275 F -.165 +(ve)-.275 G 3.434(np).165 G .684(ly and beta is)-3.434 F +(equal to the upper initial search bound, then the node type is CUT)72 +180 Q 5.5(.F)-.814 G(or all other cases, it is type ALL.)-5.665 E .642 +(Split\(\) uses the abo)72 204 R .971 -.165(ve a)-.165 H .641(lgorithm \ +to set its initial guess for each node type from ply 1 through the curr\ +ent).165 F(ply)72 216 Q 5.915(.N)-.715 G -.165(ex)-5.915 G 3.165(ti).165 +G 3.165(te)-3.165 G .416(nters an "o)-3.165 F -.165(ve)-.165 G .416 +(rride" phase.).165 F .416 +(Split\(\) starts at ply=2 and checks the number of mo)5.916 F -.165(ve) +-.165 G 3.166(st).165 G .416(hat ha)-3.166 F -.165(ve)-.22 G 1.132 +(been zeroed by the search \(the number of mo)72 228 R -.165(ve)-.165 G +3.881(st).165 G 1.131(hat ha)-3.881 F 1.461 -.165(ve a)-.22 H 1.131 +(ctually been searched.\)).165 F -.165(Fo)6.631 G 3.881(ra).165 G 3.881 +(nA)-3.881 G 1.131(LL node,)-3.881 F(man)72 240 Q 3.087(ym)-.165 G -.165 +(ove)-3.087 G 3.087(sa).165 G .338(lready searched increases the "con\ +\214dence" that this is truly an ALL node.)-3.087 F -.165(Fo)5.838 G +3.088(rC).165 G .338(UT nodes,)-3.088 F 1.527(if more than one mo)72 252 +R 1.856 -.165(ve h)-.165 H 1.526 +(as been searched, then the con\214dence for this CUT node is lo).165 F +1.526(wered, since it)-.275 F 1.014 +(should not be necessary to search more than one mo)72 264 R 1.344 -.165 +(ve a)-.165 H -6.513 3.764(ta r).165 H 1.015(eal CUT node.)-3.764 F +1.015(In f)6.515 F 1.015(act, if more than some)-.11 F .361(limit of mo) +72 276 R -.165(ve)-.165 G 3.111(sh).165 G .361(as been e)-3.111 F .361 +(xamined \(currently=3\) then the type for this node is o)-.165 F -.165 +(ve)-.165 G .36(rridden and set to ALL,).165 F .161 +(since it appears that mo)72 288 R .491 -.165(ve o)-.165 H .161 +(rdering has someho).165 F 2.912(wf)-.275 G .162 +(ailed to search the best mo)-3.022 F .492 -.165(ve \214)-.165 H .162 +(rst at some pre).165 F .162(vious ply)-.275 F(.)-.715 E .252 +(After this o)72 312 R -.165(ve)-.165 G .251 +(rride phase, a \214nal simple check is made since it is no).165 F 3.001 +(wp)-.275 G .251(ossible to ha)-3.001 F .581 -.165(ve t)-.22 H .471 -.11 +(wo A).165 H .251(LL nodes on).11 F(successi)72 324 Q .784 -.165(ve p) +-.275 H 3.204(lies. If).165 F .455(this happens, the second ALL node pr\ +obably means that the successor to this node is)3.204 F .306 +(really a CUT node and we are resetting the upper/lo)72 336 R .305 +(wer search bounds after searching a wrong \214rst mo)-.275 F -.165(ve) +-.165 G(some)72 348 Q 3(where. The)-.275 F .25(\214nal o)3 F -.165(ve) +-.165 G .251(rride phase will note the second ALL node, and then force \ +the successor of this).165 F .042 +(node to be type CUT since yet another ALL node can')72 360 R 2.792(tf) +-.198 G(ollo)-2.792 E 2.792(wt)-.275 G .042(his one unless mo)-2.792 F +.371 -.165(ve o)-.165 H .041(rdering is hopelessly).165 F 3.847 +(bad. This)72 372 R 1.097(phase of the o)3.847 F -.165(ve)-.165 G 1.097 +(rride code simply allo).165 F 1.097(ws only tw)-.275 F 3.847(oA)-.11 G +1.097(LL nodes to be consecuti)-3.847 F 1.428 -.165(ve i)-.275 H 3.848 +(nt).165 G 1.098(he tree.)-3.848 F .218 +(After the second ALL node, the ne)72 384 R .218(xt node must be CUT) +-.165 F 2.968(,t)-.814 G .218(he ne)-2.968 F .218(xt ALL, etc.)-.165 F +-.165(Fo)5.718 G 2.968(ra).165 G .218(ll of these o)-2.968 F -.165(ve) +-.165 G .218(rrides the).165 F 1.125(con\214dence is v)72 396 R 1.125 +(ery "lo)-.165 F 1.125(w" and, ag)-.275 F 1.125(ain, the number of mo) +-.055 F -.165(ve)-.165 G 3.875(ss).165 G 1.126 +(earched at each ply is used to impro)-3.875 F 1.456 -.165(ve t)-.165 H +(his).165 E(con\214dence.)72 408 Q .116(This has pro)72 432 R -.165(ve) +-.165 G 2.866(nt).165 G 2.865(ob)-2.866 G 2.865(eac)-2.865 G .115 +(ritical step in the DTS algorithm.)-2.865 F 2.865(Am)5.615 G(istak) +-2.865 E 2.865(eh)-.11 G .115(ere produces se)-2.865 F -.165(ve)-.275 G +.115(re problems later).165 F .657(because the search space is going to\ + increase due to searching branches that the sequential search w)72 444 +R(ould)-.11 E .154(be able to a)72 456 R -.22(vo)-.22 G 2.904(id. The) +.22 F .154(initial estimate w)2.904 F .154(as quite good, b)-.11 F .154 +(ut the o)-.22 F -.165(ve)-.165 G .153(rride phase further impro).165 F +-.165(ve)-.165 G 2.903(dt).165 G .153(he reliabil-)-2.903 F .729 +(ity of choosing a good node for a Split\(\) operation.)72 468 R .73 +(This has been modi\214ed more than an)6.23 F 3.48(yo)-.165 G .73 +(ther part of)-3.48 F .838(the DTS code, because Cray Blitz still \(on \ +occasion\) searches trees in parallel that are much lar)72 480 R .838 +(ger than)-.198 F .15(the same tree searched by only one processor)72 +492 R 5.65(.I)-.605 G 2.9(ft)-5.65 G .151 +(his were 100% accurate, then Cray Blitz w)-2.9 F .151(ould produce)-.11 +F(almost linear speedup as additional processors are added to the searc\ +h.)72 504 Q .599(Others ha)72 528 R .929 -.165(ve t)-.22 H .599 +(ackled this "where to split the tree" in dif).165 F .598(ferent w)-.275 +F .598(ays, and ha)-.11 F .928 -.165(ve p)-.22 H .598 +(roduced interesting results).165 F([Akl82,A)72 540 Q(werb)-1.012 E .569 +(uch85,Baudet78,Feldman90, Feldman93,and others].)-.22 F .57 +(Most all were designed for message-)6.07 F .683 +(passing systems, which made choosing split-points more comple)72 552 R +3.433(xs)-.165 G .683(ince it becomes a serious issue when)-3.433 F 2.09 +(communication costs become a major design consideration.)72 564 R 2.091 +(It should be noted that the only serious)7.59 F .877 +(attempts to control tree search o)72 576 R -.165(ve)-.165 G .877 +(rhead all do so at the e).165 F .877(xpense of synchronization/w)-.165 +F .877(ait penalties.)-.11 F .876(In a)6.376 F EP +%%Page: 14 14 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF(distrib)72 96 Q .904(uted en)-.22 F .904 +(vironment, this mak)-.44 F .904 +(es a great deal of sense, since the cost of di)-.11 F .904 +(viding a tree into pieces is)-.275 F -.165(ve)72 108 S(ry high.).165 E +(On the Cray architecture, the opposite is true.)5.5 E +(3.3 Choosing a SPLIT ply)72 132 Q .547(The \214rst goal of the Split\(\ +\) procedure is to select an ALL node for splitting since this is the o\ +nly reason-)72 156 R .958(able type of node that w)72 168 R(on')-.11 E +3.708(ta)-.198 G .958(dd an)-3.708 F 3.708(ys)-.165 G .958(earch o) +-3.708 F -.165(ve)-.165 G .958(rhead \(e).165 F .958(xtra nodes.\))-.165 +F .958(Since the o)6.458 F -.165(ve)-.165 G .958(rhead for choosing a) +.165 F .708(SPLIT point is costly)72 180 R 3.457(,am)-.715 G .707(ajor \ +consideration for selecting a split point is to choose a split point th\ +at will)-3.457 F(tak)72 192 Q 3.938(ear)-.11 G 1.188 +(easonable amount of time to search in parallel so Split\(\) w)-3.938 F +(on')-.11 E 3.938(tb)-.198 G 3.939(ei)-3.938 G -2.09 -.44(nv o)-3.939 H +-.11(ke).44 G 3.939(da).11 G -.055(ga)-3.939 G 3.939(in. As).055 F 3.939 +(ag)3.939 G(eneral)-3.939 E .512(rule, nodes at shallo)72 204 R 3.261 +(wd)-.275 G .511(epths represent more w)-3.261 F .511 +(ork than nodes at deep plies, making shallo)-.11 F 3.261(wn)-.275 G +.511(odes desir)-3.261 F(-)-.22 E .486(able split points.)72 216 R .486 +(This can be complicated by at least tw)5.986 F 3.237(of)-.11 G .487 +(eatures of the nodes;)-3.237 F .487(\(1\) the con\214dence of an)5.987 +F .71(ALL node is lo)72 228 R 2.14 -.715(w, m)-.275 H .71(aking it risk) +.715 F 3.46(yt)-.165 G 3.46(os)-3.46 G .709 +(earch it in parallel and possibly introduce e)-3.46 F .709 +(xtra nodes into the tree)-.165 F 1.169 +(search, and \(2\) the node has v)72 240 R 1.169(ery fe)-.165 F 3.919 +(wb)-.275 G 1.169(ranches remaining, so that it will only supply w) +-3.919 F 1.17(ork for a small)-.11 F(number of processors which will fo\ +rce yet another Split\(\) when the remaining processors become idle.)72 +252 Q .461(As can be seen, this is a some)72 276 R .461(what subjecti) +-.275 F .79 -.165(ve d)-.275 H .46 +(ecision, and tuning this code will continue for some time.).165 F .25 +(Other recent modi\214cations to this include questions lik)72 288 R 3 +(e")-.11 G .25(is the king in check at this node?" since this can)-3 F +.26(result in a misleading "w)72 300 R .26(ork estimate.")-.11 F .26 +(Cray Blitz generates pseudo-le)5.76 F -.055(ga)-.165 G 3.009(lm).055 G +-.165(ove)-3.009 G .259(s, and when the king is in).165 F .109 +(check, most of these mo)72 312 R -.165(ve)-.165 G 2.859(sa).165 G .109 +(re, in f)-2.859 F .11(act, ille)-.11 F -.055(ga)-.165 G 2.86(l. If).055 +F .11(these mo)2.86 F -.165(ve)-.165 G 2.86(sa).165 G .11 +(re used to estimate the w)-2.86 F .11(ork to be done at)-.11 F .171 +(this ply)72 324 R 2.921(,ap)-.715 G .17 +(oor SPLIT point will be chosen since man)-2.921 F 2.92(ym)-.165 G -.165 +(ove)-2.92 G 2.92(sa).165 G .17(re a)-2.92 F -.275(va)-.22 G .17 +(ilable, b).275 F .17(ut most will be immediately)-.22 F .332 +(recognized as ille)72 336 R -.055(ga)-.165 G 3.082(lw).055 G .332 +(ith almost no w)-3.082 F .332(ork required to determine this.)-.11 F +(Se)5.833 E -.165(ve)-.275 G .333(ral such features can af).165 F .333 +(fect the)-.275 F 1.625("estimated w)72 348 R 1.625 +(orkload" of a potential split point to mak)-.11 F 4.375(ei)-.11 G 4.375 +(tl)-4.375 G 1.625(ess attracti)-4.375 F -.165(ve)-.275 G 7.125(.A).165 +G 1.625(nother e)-7.125 F 1.624(xample is that the)-.165 F .315 +(search e)72 360 R .316(xtensions used by Cray Blitz at ply=N are af) +-.165 F .316(fected by the e)-.275 F .316 +(xtensions at plies before N in the tree.)-.165 F 1.713 +(The idea is that if something is causing e)72 372 R 1.712 +(xtensions at shallo)-.165 F 4.462(wp)-.275 G 1.712 +(lies, the search should be careful and)-4.462 F -.165(ex)72 384 S .523 +(tend at deeper plies too, to \214nd out what is going on.).165 F .524 +(Therefore, if there are man)6.024 F 3.274(ye)-.165 G .524 +(xtensions before a)-3.439 F .958 +(potential split-point, the subtrees belo)72 396 R 3.708(wt)-.275 G .957 +(hat possible split-point will lik)-3.708 F .957(ely be lar)-.11 F .957 +(ger than normal, a f)-.198 F(act)-.11 E +(that should be considered when choosing from se)72 408 Q -.165(ve)-.275 +G(ral candidate nodes for a split-point.).165 E .309 +(Split\(\) is the single most important function in the DTS algorithm.) +72 432 R .31(When it inadv)5.81 F .31(ertently chooses a CUT)-.165 F +.831(node as a split-point, search o)72 444 R -.165(ve)-.165 G .831 +(rhead increases dramatically).165 F 6.33(.C)-.715 G .83 +(hoosing a PV node potentially increases)-6.33 F 1.145(the search o)72 +456 R -.165(ve)-.165 G 1.146(rhead until the \214rst branch is e).165 F +1.146(xamined and Share\(\) correctly establishes the upper/lo)-.165 F +(wer)-.275 E(search bounds.)72 468 Q 2.75(3.4 Splitting)72 492 R +(at the root)2.75 E .832 +(Splitting the search at the root \(or not\) unco)72 516 R -.165(ve) +-.165 G .832(rs some interesting problems.).165 F .832 +(First, most computer chess)6.332 F .186(programs use the so-called ite\ +rated search where a one ply search is done, then that information is u\ +sed to)72 528 R .137(order the mo)72 540 R -.165(ve)-.165 G 2.887(sf) +.165 G .137(or a tw)-2.887 F 2.887(op)-.11 G .137(ly search, and the in\ +formation from that is used to order a three ply search and)-2.887 F +(so forth.)72 552 Q +(This process is continued until the time allotted for this mo)5.5 E .33 +-.165(ve r)-.165 H(uns out.).165 E 1.096(It should be ob)72 576 R 1.096 +(vious that the reason for doing a "depth+1" search is to \214nd a bett\ +er mo)-.165 F 1.427 -.165(ve t)-.165 H 1.097(han the one).165 F EP +%%Page: 15 15 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF .85(found from the "depth" search.)72 96 R .849 +(Often, the program does not change its mind from iteration to iteratio\ +n,)6.35 F .347 +(and, in such circumstances, splitting the tree at the root is an e)72 +108 R .347(xcellent idea.)-.165 F .347(After searching the \214rst root) +5.847 F .314(branch completely)72 120 R 3.064(,s)-.715 G .314 +(earching the remainder in parallel introduces almost no o)-3.064 F +-.165(ve)-.165 G .314(rhead \(some arises due to).165 F .768 +(transposition table interaction.\))72 132 R(Ho)6.269 E(we)-.275 E -.165 +(ve)-.275 G 1.649 -.44(r, w).165 H .769(hen the \214rst mo).44 F 1.099 +-.165(ve s)-.165 H .769(earched is not the best, and the program).165 F +.705(ultimately chooses a dif)72 144 R .705(ferent root mo)-.275 F 1.035 +-.165(ve a)-.165 H 3.455(sb).165 G .705 +(est, searching root branches in parallel causes a problem in)-3.455 F +(timed tournament chess g)72 156 Q(ames.)-.055 E .938(From prior analys\ +is [Knuth75,Hyatt88,Hyatt89,Hsu90] the \214rst branch from the root pro\ +duces a subtree)72 180 R .52(much lar)72 192 R .52(ger than the remaind\ +er of the branches \(when the \214rst branch is best.\))-.198 F .519 +(If the program then must)6.019 F .632 +("change its mind" and select a dif)72 204 R .632(ferent mo)-.275 F .962 +-.165(ve a)-.165 H 3.382(sb).165 G .632(est, this mo)-3.382 F .962 -.165 +(ve w)-.165 H .632(ill also produce a much lar).165 F .633(ger subtree) +-.198 F(than the other mo)72 216 Q -.165(ve)-.165 G 2.75(s. This).165 F +("much lar)2.75 E(ger subtree" causes an interesting problem in timed e) +-.198 E -.165(ve)-.275 G(nts.).165 E .148(Consider a case where the sec\ +ond branch is really the one that the "depth+1" search will ultimately \ +select.)72 240 R .816(After searching the \214rst branch \(using parall\ +el processing\) one processor selects the second mo)72 252 R 1.146 -.165 +(ve i)-.165 H 3.566(nt).165 G(he)-3.566 E .346 +(list \(that is really the best mo)72 264 R -.165(ve)-.165 G 3.095(\)a) +.165 G .345(nd starts searching the v)-3.095 F .345(ery lar)-.165 F .345 +(ge subtree it produces.)-.198 F .345(Other processors)5.845 F -.165(ex) +72 276 S .009(amine other root branches that are unimportant.).165 F +.009(If time runs out before the second branch is completely)5.509 F +-.165(ex)72 288 S .389(amined, the \214rst mo).165 F .719 -.165(ve w) +-.165 H .388(ill be chosen, resulting in the program making a w).165 F +.388(orse mo)-.11 F .718 -.165(ve t)-.165 H .388(han it really has).165 +F 2.948(to. An)72 300 R(alternati)2.948 E .528 -.165(ve i)-.275 H 2.949 +(st).165 G 2.949(oh)-2.949 G -2.475 -.22(av e)-2.949 H .199 +(all processors w)3.169 F .199(ork on the \214rst mo)-.11 F -.165(ve) +-.165 G 2.949(,t).165 G .199(hen all processors w)-2.949 F .199 +(ork on the second)-.11 F(mo)72 312 Q -.165(ve)-.165 G 3.6(,a).165 G .85 +(nd so forth.)-3.6 F .849(Then, when a ne)6.349 F 3.599(wb)-.275 G .849 +(est mo)-3.599 F 1.179 -.165(ve i)-.165 H 3.599(ss).165 G .849 +(earched, all processors search it and complete the)-3.599 F +(search before time runs out.)72 324 Q .883(Some might be quick to sugg\ +est that "the search should notice that the un\214nished mo)72 348 R +1.214 -.165(ve h)-.165 H .884(as produced a).165 F(lar)72 360 Q .429 +(ge tree, and is lik)-.198 F .429(ely about to become a ne)-.11 F 3.179 +(wb)-.275 G .429(est, so don')-3.179 F 3.179(tg)-.198 G -2.365 -.275 +(iv e)-3.179 H .428(up until it has been completed.")3.454 F(Ho)5.928 E +(w-)-.275 E -2.365 -.275(ev e)72 372 T 1.181 -.44(r, t).275 H .301 +(here are tw).44 F 3.052(oi)-.11 G .302(ssues with this:)-3.052 F .302 +(\(1\) just because a root mo)5.802 F .632 -.165(ve p)-.165 H .302 +(roduces a tree se).165 F -.165(ve)-.275 G .302(ral orders of magni-) +.165 F .811(tude lar)72 384 R .811(ger than an)-.198 F 3.561(yo)-.165 G +.811(ther \(than the \214rst\) root mo)-3.561 F 1.141 -.165(ve d)-.165 H +.811(oes not imply that this mo).165 F 1.141 -.165(ve i)-.165 H 3.561 +(sb).165 G(etter)-3.561 E 6.311(.I)-.605 G 3.561(tm)-6.311 G .81 +(ight be)-3.561 F(better)72 396 Q 4.048(,o)-.44 G 4.048(ri)-4.048 G +4.048(tm)-4.048 G 1.298(ight simply be a complicated mo)-4.048 F 1.628 +-.165(ve t)-.165 H 1.299 +(hat leads to positions which stimulate lots of search).165 F -.165(ex) +72 408 S .148(tensions and mak).165 F 2.898(et)-.11 G .148 +(he tree quite lar)-2.898 F 2.898(ge. Therefore,)-.198 F .148 +(it is not safe to simply say the tree so f)2.898 F .148(ar is big, w) +-.11 F(ait,)-.11 E .884(because that might tak)72 420 R 3.634(eas)-.11 G +.884(igni\214cant amount of time to \214nish.)-3.634 F .885 +(And note the major problem here is that)6.385 F .068 +(only one processor is searching that branch should we choose to w)72 +432 R .067(ait for a result.)-.11 F .067(\(2\) "Just w)5.567 F .067 +(aiting" is not)-.11 F 3.879(ap)72 444 S 1.129 +(articularly good plan in a timed e)-3.879 F -.165(ve)-.275 G 3.879 +(nt. Since).165 F 1.129(time is a f)3.879 F(actor)-.11 E 3.879(,u)-.44 G +1.129(sing it wisely is a major part of an)-3.879 F(y)-.165 E 1.055 +(chess program, and ha)72 456 R 1.055(ving to b)-.22 F 1.054(urn man) +-.22 F 3.804(ym)-.165 G 1.054(inutes just because the search can')-3.804 +F 3.804(tr)-.198 G(esolv)-3.804 E 3.804(ew)-.165 G 1.054(hether a mo) +-3.804 F -.165(ve)-.165 G(further do)72 468 Q(wn the ply=1 mo)-.275 E +.33 -.165(ve l)-.165 H(ist is better or not can lead to timing dif).165 +E(\214culties.)-.275 E .252(The dra)72 492 R .252 +(wback to solving this is that we "kno)-.165 F .252 +(w" that all branches at the root should be searched \(time per)-.275 F +(-)-.22 E 1.002(mitting\) and that searching them will cause no e)72 504 +R 1.002(xtra o)-.165 F -.165(ve)-.165 G 1.002 +(rhead \(after the \214rst branch establishes a lo).165 F(wer)-.275 E +.621(search bound, assuming that the \214rst mo)72 516 R .951 -.165 +(ve i)-.165 H 3.371(sa).165 G .621(ctually the best mo)-3.371 F -.165 +(ve)-.165 G 6.121(.T).165 G .621(his is true for a lar)-6.121 F .621 +(ge majority of)-.198 F 1.614(positions, \).)72 528 R 1.614 +(The root is therefore a highly f)7.114 F -.22(avo)-.11 G 1.613 +(rable \(from a search o).22 F -.165(ve)-.165 G 1.613 +(rhead point of vie).165 F 1.613(w\) place to)-.275 F 1.085 +(search in parallel.)72 540 R 1.085(If the entire ply=1 mo)6.585 F 1.415 +-.165(ve l)-.165 H 1.085(ist w).165 F 1.086 +(as searched, then splitting at ply=1 w)-.11 F 1.086(ould w)-.11 F 1.086 +(ork well.)-.11 F(Ho)72 552 Q(we)-.275 E -.165(ve)-.275 G 1.257 -.44 +(r, s).165 H .377(ince time can run out and stop the search, e).44 F +.377(xamining the \214rst fe)-.165 F 3.126(wm)-.275 G -.165(ove)-3.126 G +3.126(so).165 G 3.126(nt)-3.126 G .376(he list \(searching)-3.126 F .942 +(each in succession with all processors w)72 564 R .942 +(orking together on each mo)-.11 F -.165(ve)-.165 G 3.692(\)e).165 G +.942(nsures that the \214rst fe)-3.692 F 3.693(wm)-.275 G -.165(ove) +-3.693 G(s).165 E 1.19(are COMPLETEL)72 576 R 3.94(Ye)-1.1 G 1.19 +(xamined before time runs out. \(Note: in Cray Blitz and Crafty)-4.105 F +3.939(,a)-.715 G 3.939(ni)-3.939 G 1.189(teration is not)-3.939 F EP +%%Page: 16 16 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF .398(completed after time has run out.)72 96 R +(Rather)5.898 E 3.148(,t)-.44 G .398(he search stops, the mo)-3.148 F +.728 -.165(ve i)-.165 H 3.148(sm).165 G .398 +(ade, and then the ponder search)-3.148 F .731 +(picks up and continues searching.\))72 108 R 2.491 -.88(We c)6.231 H +.731(hose to accept this inef).88 F(\214cienc)-.275 E 3.481(y\()-.165 G +.73(searching e)-3.481 F .73(xtra nodes\) in order)-.165 F(to let the p\ +rogram change its mind on the last iteration, if the \214rst mo)72 120 Q +.33 -.165(ve i)-.165 H 2.75(sn).165 G(ot best.)-2.75 E .063 +(This often leads to a li)72 144 R -.165(ve)-.275 G .064(ly debate abou\ +t \(a\) whether or not a parallel search should split at the root and \ +\(b\)).165 F .591 +(whether or not the program should completely search the root mo)72 156 +R .921 -.165(ve l)-.165 H .591(ist before stopping for a time limit.) +.165 F 1.76 -.88(We h)72 168 T -2.475 -.22(av e).88 H -.165(ex)2.97 G +(perimented with possible alternati).165 E .33 -.165(ve a)-.275 H +(lgorithms, b).165 E(ut none ha)-.22 E .33 -.165(ve p)-.22 H(ro).165 E +-.165(ve)-.165 G 2.75(nb).165 G(etter to date.)-2.75 E 2.75(4. DTS)72 +192 R(performance results)2.75 E .117(The DTS algorithm w)72 216 R .117 +(as tested using a Cray C916/1024 computer)-.11 F 5.617(.T)-.605 G .117 +(his machine has 16 processors with a)-5.617 F -.165(cy)72 228 S +(cle time of 4.166 nanoseconds, and also has 1024 million w).165 E +(ords of memory \(eight gig)-.11 E(abytes.\))-.055 E(4.1 T)72 252 Q +(esting methodology)-.77 E .829(In producing these results, all testing\ + used the machine in a dedicated mode so that all of the machine')72 276 +R(s)-.605 E .241(memory w)72 288 R .241(as used, re)-.11 F -.055(ga) +-.165 G .242 +(rdless of the number of processors utilized in each test \(e).055 F +.242(xcept for the one-proces-)-.165 F 1.227(sor test, which is e)72 300 +R 1.227(xplained later\).)-.165 F 1.227 +(Often, particularly when using distrib)6.727 F 1.227(uted machines lik) +-.22 F 3.976(et)-.11 G 1.226(he Hyper)-3.976 F(-)-.22 E 4.252(cubes, ad\ +ding additional processors also adds additional memory [Feldmann90,Feld\ +mann93,K)72 312 R(usz-)-.165 E(maul94,Schaef)72 324 Q(fer89,Y)-.275 E +1.535(ang93], ef)-1.1 F(fecti)-.275 E -.165(ve)-.275 G 1.535 +(ly changing tw).165 F 4.285(os)-.11 G 1.534 +(earch parameters at the same time \(number of)-4.285 F .166 +(processors or total computation po)72 336 R .166 +(wer and total memory a)-.275 F -.275(va)-.22 G 2.916(ilable.\) It).275 +F .166(is then dif)2.916 F .166(\214cult to attrib)-.275 F .166 +(ute the per)-.22 F(-)-.22 E .379(formance impro)72 348 R -.165(ve)-.165 +G .379(ment to additional processor po).165 F .378 +(wer alone as the transposition table is e)-.275 F .378(xtremely impor) +-.165 F(-)-.22 E(tant to search performance and making it lar)72 360 Q +(ger often dramatically speeds up search times.)-.198 E .434 +(The testing done to produce the results gi)72 384 R -.165(ve)-.275 G +3.184(nh).165 G .434(erein dif)-3.184 F .434 +(fers from the testing used in pre)-.275 F .434(vious parallel tree) +-.275 F .378(search algorithms [Hyatt88, Hyatt89, Schaef)72 396 R .378 +(fer89, Feldmann90,others].)-.275 F .378 +(Rather than use a group of unre-)5.878 F 1.856 +(lated chess problems, we elected to tak)72 408 R 4.606(eas)-.11 G -.165 +(eg)-4.606 G 1.856(ment of a real chess g).165 F 1.856(ame and ha)-.055 +F 2.187 -.165(ve t)-.22 H 1.857(he program play).165 F .175 +(through it with v)72 420 R .175(arying numbers of processors.)-.275 F +.175(There are tw)5.675 F 2.925(or)-.11 G .175 +(easons for choosing this approach: \(1\) this)-2.925 F .124 +(is what a chess program is designed to do, "play a complete g)72 432 R +.124(ame", not "search random positions" and \(2\))-.055 F 1.346 +(it is well-kno)72 444 R 1.345(wn that parallel algorithms perform bett\ +er when searching deeper trees [Hyatt88,Hyatt89,)-.275 F(Schaef)72 456 Q +4.903(fer89,others]. When)-.275 F 2.153(searching unrelated problems, t\ +here is no "continuity" between problems.)4.903 F .974 +(When searching a series of mo)72 468 R -.165(ve)-.165 G 3.724(sf).165 G +.974(rom the same g)-3.724 F .974 +(ame, the transposition table, the killer mo)-.055 F 1.304 -.165(ve l) +-.165 H .974(ist, the).165 F .105 +(dynamic scoring parameters, all "tie things together" and allo)72 480 R +2.855(wd)-.275 G .105(eeper searches.)-2.855 F .105 +(Note also, that if you are)5.605 F +(iterested in results on a traditional test lik)72 492 Q 2.75(et)-.11 G +(he K)-2.75 E(opek/Bratk)-.385 E 2.75(op)-.11 G(ositions, the)-2.75 E +2.75(ya)-.165 G(re a)-2.75 E -.275(va)-.22 G(ilable in [Hyatt88].).275 E +1.564(The testing methodology w)72 516 R 1.564(as to tak)-.11 F 4.314 +(et)-.11 G 1.564(he 16-processor log produced during the actual g)-4.314 +F 1.563(ame, and then)-.055 F("contri)72 528 Q -.165(ve)-.275 G 4.302 +("t).165 G 1.552(hings so that the "lesser" con\214gurations w)-4.302 F +1.552(ould do the same amount of w)-.11 F 1.552(ork \(roughly\).)-.11 F +(In)7.053 E 1.257(these tests, if the 16 processor search reached 11 pl\ +ies and searched the \214rst 10 root mo)72 540 R -.165(ve)-.165 G 4.007 +(sb).165 G 1.257(efore the)-4.007 F .21 +(search timed out, then all lessor con\214gurations had to also do e)72 +552 R .21(xactly this same search, which led to some)-.165 F .406 +(embarrassingly long search times for one processor as will be seen.)72 +564 R .405(One other minor note is that the sin-)5.905 F 1.222 +(gle processor times appear to search slightly slo)72 576 R 1.222 +(wer than the equi)-.275 F -.275(va)-.275 G 1.222 +(lent parallel searches, which w).275 F(ould)-.11 E EP +%%Page: 17 17 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF .019(seem to be counter)72 96 R(-intuiti)-.22 E +-.165(ve)-.275 G 5.518(.H).165 G -.275(ow)-5.518 G -2.365 -.275(ev e) +.275 H .898 -.44(r, d).275 H .018 +(ue to the enormous time required to play through this g).44 F .018 +(ame with-)-.055 F .33(out stopping \(which w)72 108 R .331(ould ha)-.11 +F .661 -.165(ve c)-.22 H .331(leared the transposition table and so for\ +th\) we ran this test on a produc-).165 F .263 +(tion machine, and competed with other processes.)72 120 R .263 +(As a result, memory con\215icts were much higher \(bank)5.763 F 1.866 +(con\215icts to those that are Cray-sa)72 132 R 1.866 +(vvy\) as well as sw)-.22 F 1.866(apping o)-.11 F -.165(ve)-.165 G 1.866 +(rhead which gets char).165 F 1.867(ged to the user)-.198 F(.)-.605 E +(While this is well belo)72 144 Q 2.75(wt)-.275 G(he .1% le)-2.75 E +-.165(ve)-.275 G 2.75(lo).165 G 2.75(fn)-2.75 G +(oise, it is noticeable, and should be remembered.)-2.75 E .978 +(The test positions came from the g)72 168 R .977 +(ame Mchess Pro vs Cray Blitz at the 1993 A)-.055 F .977 +(CM International Com-)-.44 F .112(puter Chess Championship.)72 180 R +.112(\(This g)5.612 F .112(ame is included as Appendix A.\))-.055 F .113 +(This g)5.613 F .113(ame w)-.055 F .113(as chosen after looking)-.11 F +.84(at analysis produced by Cray Blitz during the tournament.)72 192 R +.839(The opening w)6.339 F .839(as a King')-.11 F 3.589(sG)-.605 G .839 +(ambit Accepted)-3.589 F .428 +(where white sacri\214ced a piece for some pa)72 204 R .429 +(wns and a strong attack.)-.165 F .429(C-B sa)5.929 F 3.179(wt)-.165 G +.429(he e)-3.179 F -.275(va)-.275 G .429(luation steadily drop).275 F +.553(as it disco)72 216 R -.165(ve)-.165 G .553(red just ho).165 F 3.303 +(ws)-.275 G .553(trong the attack w)-3.303 F .553(as, then it le)-.11 F +-.165(ve)-.275 G .553(led of).165 F 3.303(fa)-.275 G .552(nd follo) +-3.303 F .552(wed a "tight-rope" for se)-.275 F -.165(ve)-.275 G(ral) +.165 E(mo)72 228 Q -.165(ve)-.165 G 1.286 +(s, making the only possible mo).165 F 1.616 -.165(ve t)-.165 H 1.287 +(hat w).165 F 1.287(ould not lose, then it started f)-.11 F 1.287 +(ailing high repeatedly as it)-.11 F(\214nally survi)72 240 Q -.165(ve) +-.275 G 2.75(dt).165 G(he attack and started a counter)-2.75 E +(-attack that ultimately w)-.22 E(on the g)-.11 E(ame.)-.055 E .275 +(The \214rst position occurs after the sequence of mo)72 264 R -.165(ve) +-.165 G 3.024(s1).165 G 3.024(.e)-3.024 G 3.024(4e)-3.024 G 3.024(52) +-3.024 G 3.024(.N)-3.024 G .274(c3 Nc6 3. f4 e)-3.024 F .274 +(xf4 4. Nf3 g5 5. d4 g4 6.)-.165 F .557(Bc4 gxf3 7. o-o d5)72 276 R .557 +(8. e)6.057 F .557(xd5 Bg4 9. Qd2 ...)-.165 F .558(At this point, C-B w) +6.058 F .558(as "out of book" and quickly disco)-.11 F -.165(ve)-.165 G +(red).165 E .021(that its king w)72 288 R .021(as e)-.11 F .021 +(xposed in the center although it w)-.165 F .021 +(as a piece up and a couple of pa)-.11 F .02(wns do)-.165 F 2.77 +(wn. The)-.275 F -.275(eva)2.77 G(lu-).275 E .972 +(ation steadily dropped for the ne)72 300 R .973(xt fe)-.165 F 3.723(wm) +-.275 G -.165(ove)-3.723 G 3.723(sa).165 G 3.723(sC)-3.723 G .973 +(-B "sa)-3.723 F .973(w" ho)-.165 F 3.723(we)-.275 G .973 +(xposed its king w)-3.888 F 3.723(as. The)-.11 F -.275(eva)3.723 G +(luation).275 E .598(dropped to a point where C-B w)72 312 R .598 +(as about 1/4 pa)-.11 F .597(wn "do)-.165 F .597(wn" at the lo)-.275 F +3.347(wp)-.275 G .597(oint in the g)-3.347 F 3.347(ame. It)-.055 F .597 +(then be)3.347 F -.055(ga)-.165 G 3.347(na).055 G 1.491 +(climb to roughly 1/3 of a pa)72 324 R 1.491(wn "ahead" before disco) +-.165 F -.165(ve)-.165 G 1.492 +(ring that Mchess could force a perpetual dra).165 F -.715(w.)-.165 G +.248(\(This occurred at position 17 where C-B took a long time trying t\ +o \214nd an)72 336 R 2.997(yw)-.165 G .247(ay out of the v)-3.107 F .247 +(ery deep per)-.165 F(-)-.22 E .274(petual check.)72 348 R .274 +(The perpetual w)5.774 F .274(as some 19 plies deep.\))-.11 F -.165(Fo) +5.774 G 3.024(rt).165 G .274(he ne)-3.024 F .274(xt tw)-.165 F 3.024(om) +-.11 G -.165(ove)-3.024 G .274(s, it w).165 F .274(as resigned to a dra) +-.11 F -.715(w,)-.165 G -.22(bu)72 360 S 4.917(tM).22 G 2.167(chess app\ +arently did not search deeply enough to detect the repetition and v) +-4.917 F 2.166(aried, gi)-.275 F 2.166(ving C-B)-.275 F(another chance.) +72 372 Q(From this point on the e)5.5 E -.275(va)-.275 G +(luation climbed steadily).275 E(.)-.715 E .256 +(This particular series of positions of)72 396 R .256 +(fered both "good," "bad" and "normal" positions that C-B searched in) +-.275 F(parallel.)72 408 Q 2.784(A")72 432 S .033 +(good" position is one where the program \214nds the correct mo)-2.784 F +.363 -.165(ve a)-.165 H 2.783(tas).165 G(hallo)-2.783 E 2.783(ws)-.275 G +.033(earch and "sticks with it")-2.783 F .327 +(through later searches and ultimately mak)72 444 R .328(es that mo)-.11 +F -.165(ve)-.165 G 5.828(.T).165 G .328 +(his means that ordering at the root of the tree is)-5.828 F .531 +(perfect, and often means that ordering f)72 456 R .531(arther do)-.11 F +.531(wn in the tree is also quite good, making the search rea-)-.275 F +1.069(sonably ef)72 468 R 3.82(\214cient. These)-.275 F 1.07 +(positions produce good speedups re)3.82 F -.055(ga)-.165 G 1.07 +(rdless of the number of processors used.).055 F +(Positions 20 and 21 are e)72 480 Q(xamples of such positions.)-.165 E +3.761(A")72 504 S 1.01(normal" position is one where the program occasi\ +onally changes its mind at the root, b)-3.761 F 1.01(ut that mo)-.22 F +-.165(ve)-.165 G .143(ordering is still good.)72 516 R .144 +(This lets C-B \214nd the ne)5.643 F 2.894(wb)-.275 G .144(est mo)-2.894 +F .474 -.165(ve a)-.165 H 2.894(tt).165 G .144(he root f)-2.894 F .144 +(aster than it w)-.11 F .144(ould if it could split)-.11 F(the w)72 528 +Q(ork at the root \(pre)-.11 E(vious discussion.\))-.275 E 3.443(A")72 +552 S .692(bad" position is one where e)-3.443 F -.165(ve)-.275 G .692 +(ry iteration un).165 F -.165(ve)-.44 G .692(ils some ne).165 F 3.442 +(wt)-.275 G .692(hreat that the program must then \214nd a)-3.442 F -.11 +(wa)72 564 S 3.25(yt).11 G 3.25(od)-3.25 G .5(efend ag)-3.25 F 3.25 +(ainst. At)-.055 F .5(the be)3.25 F .5(ginning of each ne)-.165 F 3.251 +(wi)-.275 G .501(teration, the best mo)-3.251 F .831 -.165(ve f)-.165 H +.501(rom the pre).165 F .501(vious iteration)-.275 F .707(often f)72 576 +R .707(ails lo)-.11 F 2.137 -.715(w, a)-.275 H .707 +(nd with little help in ordering mo).715 F -.165(ve)-.165 G .707 +(s, the parallel v).165 F .706(ersion of the search be)-.165 F .706 +(gins to search)-.165 F EP +%%Page: 18 18 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF .389 +(signi\214cantly more nodes than the sequential v)72 96 R 3.14 +(ersion. These)-.165 F .39(positions typically ha)3.14 F .72 -.165(ve p) +-.22 H .39(oor speedup results).165 F .07 +(when compared with a sequential search.)72 108 R .07(An e)5.57 F .07 +(xcellent e)-.165 F .069(xample of this is position 17.)-.165 F .069 +(This is the position)5.569 F 1.575(where C-B disco)72 120 R -.165(ve) +-.165 G 1.575(rs that it can').165 F 4.325(ta)-.198 G -.22(vo)-4.545 G +1.575(id a dra).22 F 4.325(wb)-.165 G 4.325(yr)-4.325 G 1.575 +(epetition \(with best play by the opponent.\))-4.325 F(Mo)7.076 E -.165 +(ve)-.165 G .923(ordering is poor since prior kno)72 132 R .923 +(wledge of good mo)-.275 F -.165(ve)-.165 G 3.673(si).165 G 3.673(sq) +-3.673 G .923(uickly refuted by the dra)-3.673 F .923 +(wing lines found by)-.165 F(the constantly increasing search depth.)72 +144 Q .276(The results include tw)72 168 R 3.026(os)-.11 G .276 +(ets of numbers for each test, where a test used either one, tw)-3.026 F +.277(o, four)-.11 F 3.027(,e)-.44 G .277(ight or six-)-3.027 F .133 +(teen processors.)72 180 R .133 +(The numbers are the clock time required for the search \(w)5.633 F .133 +(all clock time\) and the number)-.11 F(of nodes searched \(which sho)72 +192 Q(ws ho)-.275 E 2.75(wm)-.275 G(uch e)-2.75 E(xtra w)-.165 E +(ork is added by using additional processors.)-.11 E .256 +(These results are summarized belo)72 216 R 3.006(wi)-.275 G 3.006(nt) +-3.006 G .256(able 3, which can be compared to the results for the tw) +-3.006 F 3.007(op)-.11 G(re)-3.007 E(vious)-.275 E(algorithms.)72 228 Q +.44 LW 417.215 248.95 194.784 248.95 DL 2.75(#p)200.284 258.2 S 17.875 +(rocessors 1)-2.75 F 24.75(2481)24.75 G(6)-24.75 E 417.215 262.95 +194.784 262.95 DL 32.384(speedup 1.0)200.284 272.2 R 13.75 +(2.0 3.7 6.6 11.1)16.5 F 417.215 276.95 194.784 276.95 DL 384.215 262.95 +384.215 276.95 DL 353.965 262.95 353.965 276.95 DL 323.715 262.95 +323.715 276.95 DL 293.465 262.95 293.465 276.95 DL 263.215 262.95 +263.215 276.95 DL 417.215 248.95 417.215 276.95 DL 194.784 248.95 +194.784 276.95 DL 384.215 248.95 384.215 276.95 DL 353.965 248.95 +353.965 276.95 DL 323.715 248.95 323.715 276.95 DL 293.465 248.95 +293.465 276.95 DL 263.215 248.95 263.215 276.95 DL -.88(Ta)233.125 300.4 +S(ble 3 DTS performance results).88 E 2.75(5. Performance)72 324.4 R +(analysis)2.75 E .292(The performance results for DTS are presented in \ +table 4 \(search time for each test position in the g)72 348.4 R(ame\),) +-.055 E 1.243(table 5 \(nodes searched for each test position\) and tab\ +le 6 \(the performance impro)72 360.4 R -.165(ve)-.165 G 1.244 +(ment for each test).165 F(position\).)72 372.4 Q 1.37(The simplest w)72 +396.4 R 1.37(ay to analyze the performance is to e)-.11 F 1.369 +(xamine T)-.165 F 1.369(able 3 which gi)-.88 F -.165(ve)-.275 G 4.119 +(st).165 G 1.369(he speedup for each)-4.119 F 4.238(position. This)72 +408.4 R 1.488(table presents the a)4.238 F -.165(ve)-.22 G 1.489 +(rage speedup for tw).165 F 1.489(o, four)-.11 F 4.239(,e)-.44 G 1.489 +(ight and sixteen processors, and is a)-4.239 F .379 +(summary of the timing results from table 6, gi)72 420.4 R .378 +(ving each position a weight of one and di)-.275 F .378 +(viding the sum of)-.275 F .505(the column by 24.)72 432.4 R .506 +(It is interesting to note that there is an in)6.005 F -.165(ve)-.44 G +.506(rse relationship between speedup and total).165 F 1.163 +(nodes searched, which is e)72 444.4 R 1.162(xactly as e)-.165 F 1.162 +(xpected with DTS.)-.165 F 1.162(Recall that DTS does not allo)6.662 F +3.912(wp)-.275 G 1.162(rocessors to)-3.912 F .328(remain idle for an)72 +456.4 R 3.078(ys)-.165 G .328(igni\214cant amount of time, so that poor\ + speedup results has to be the result of search-)-3.078 F +(ing nodes that are unnecessary)72 468.4 Q 2.75(,e)-.715 G +(xactly as the ra)-2.915 E 2.75(wd)-.165 G(ata gi)-2.75 E -.165(ve)-.275 +G 2.75(ns).165 G(ho)-2.75 E(ws.)-.275 E -.165(Fo)72 492.4 S 3.441(rt) +.165 G .691 +(he older Cray XMP machines with a maximum of four processors, an a) +-3.441 F -.165(ve)-.22 G .69(rage speedup of tw).165 F 3.44(o\()-.11 G +(tw)-3.44 E(o)-.11 E .194 +(processors\) and 3.7 \(four processors\) looks e)72 504.4 R .194 +(xtremely ef)-.165 F 2.944(\214cient. Mo)-.275 F .195 +(ving up to an eight processor machine)-.165 F 1.013 +(\(the old YMP line is an e)72 516.4 R 1.013 +(xample\) produces a speedup of 6.6 which, ag)-.165 F 1.013 +(ain, is a reasonable result.)-.055 F(Here)6.512 E .334(doubling the nu\ +mber of processors from four to eight produces a performance impro)72 +528.4 R -.165(ve)-.165 G .334(ment f).165 F .334(actor of 1.8.)-.11 F +(Ho)72 540.4 Q(we)-.275 E -.165(ve)-.275 G 2.493 -.44(r, p).165 H 1.613 +(ushing this further be).44 F 1.613(gins to sho)-.165 F 4.363(wj)-.275 G +1.613(ust ho)-4.363 F 4.363(wd)-.275 G(if)-4.363 E 1.612 +(\214cult parallelizing an alpha/beta tree search)-.275 F 1.164 +(really is.)72 552.4 R 1.164 +(The speedup of 11.1 for 16 processors means that o)6.664 F -.165(ve) +-.165 G 3.915(ro).165 G 1.165(ne quarter of the C90')-3.915 F 3.915(sc) +-.605 G 1.165(ycles were)-4.08 F -.11(wa)72 564.4 S 2.903(sted. F).11 F +.153(or these tests, processor idle time a)-.165 F -.165(ve)-.22 G .153 +(raged under tw).165 F 2.903(os)-.11 G .153 +(econds for each position \(per processor\),)-2.903 F EP +%%Page: 19 19 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF(sho)72 96 Q .549 +(wing that the parallel search e)-.275 F .55(xamined a signi\214cant nu\ +mber of nodes that the sequential search didn')-.165 F(t)-.198 E(\(e)72 +108 Q 1.019(xamine T)-.165 F 1.018 +(able 2 and compare the 1cpu node counts column to an)-.88 F 3.768(yo) +-.165 G 3.768(ft)-3.768 G 1.018(he others.)-3.768 F -.165(Fo)6.518 G +3.768(rp).165 G 1.018(osition 17 it is)-3.768 F(ob)72 120 Q 1.22 +(vious that the program searched almost three times as man)-.165 F 3.97 +(yn)-.165 G 1.22(odes with 16 processors as it did with)-3.97 F .087 +(one, so that, e)72 132 R -.165(ve)-.275 G 2.837(nt).165 G .086 +(hough the entire machine \(16 processors\) w)-2.837 F .086(as b)-.11 F +(usy)-.22 E 2.836(,t)-.715 G .086(he majority of the processors were) +-2.836 F(doing unnecessary w)72 144 Q(ork.)-.11 E .297(Cray Blitz count\ +s the number of split operations that it attempts, as part of its b)72 +168 R .297(uilt-in performance analy-)-.22 F 3.562(sis. This)72 180 R +.812(count is af)3.562 F .811(fected by tw)-.275 F 3.561(op)-.11 G 3.561 +(arameters; \(1\))-3.561 F .811(the e)3.561 F .811 +(xtra nodes searched by the program, and \(2\) the)-.165 F 1.872 +(total search time.)72 192 R 1.873(In ef)7.373 F 1.873 +(fect, the number of splits per unit of time \(in)-.275 F -.165(ve)-.44 +G 1.873(rsely\) follo).165 F 1.873(ws the e)-.275 F 1.873(xtra nodes) +-.165 F .218(searched by the program.)72 204 R -.165(Fo)5.718 G 2.968 +(rt).165 G .218(hese test positions, the SPLIT count ranged from a lo) +-2.968 F 2.968(wo)-.275 G 2.968(f3)-2.968 G .218(07 to a high of)-2.968 +F -.165(ove)72 216 S 3.225(r1).165 G 3.225(20,000! As)-3.225 F 3.225(ar) +3.225 G .476(esult, this data has not been presented since the speedup \ +table and time tables accu-)-3.225 F 1.63 +(rately predict the split counts obtained from the tests.)72 228 R 1.629 +(The best speedup \(and the fe)7.13 F 1.629(west e)-.275 F 1.629 +(xtra nodes\))-.165 F .716(occurs on positions where fe)72 240 R 3.467 +(ws)-.275 G .717(plit operations are attempted.)-3.467 F 2.477 -.88 +(To a)6.217 H -.22(vo).66 G .717(id a situation of "information o).22 F +-.165(ve)-.165 G -.22(r-).165 G<8d6f>72 252 Q .095 +(w" additional statistics g)-.275 F .095(athered by C-B ha)-.055 F .425 +-.165(ve b)-.22 H .094(een omitted since statistical analysis sho).165 F +.094(ws strong corre-)-.275 F .407(lation among all of the metrics.)72 +264 R .408(One e)5.908 F .408 +(xample is that C-B counts the number of times a processor starts a) +-.165 F .648(parallel task only to be stopped by another because mo)72 +276 R .978 -.165(ve o)-.165 H .648(rdering w).165 F .648 +(as not optimal.)-.11 F .648(These "early stops")6.148 F +(correspond with the "split operations attempted" and with the "e)72 288 +Q(xtra nodes" quite well.)-.165 E 1.25(The most immediate problem in th\ +e current algorithm is that the parallel search e)72 312 R 1.25 +(xamines a signi\214cant)-.165 F .413(number of e)72 324 R .413 +(xtra nodes that the sequential algorithm does not.)-.165 F .413(Much w) +5.913 F .412(ork remains to determine just ho)-.11 F(w)-.275 E -.11(fa) +72 336 S 2.773(rt).11 G .024(his can be reduced.)-2.773 F(Intuiti)5.524 +E -.165(ve)-.275 G(ly).165 E 2.774(,i)-.715 G 2.774(ti)-2.774 G 2.774 +(sn)-2.774 G .024(ot possible to reduce the number of e)-2.774 F .024 +(xtra nodes to zero since this)-.165 F -.11(wo)72 348 S 1.702 +(uld require nearly perfect mo).11 F 2.032 -.165(ve o)-.165 H 4.452 +(rdering. The).165 F(rele)4.452 E -.275(va)-.275 G 1.702 +(nt question is whether or not it is possible to).275 F .418 +(choose a split point more accurately than the present algorithm does.) +72 360 R .419(If some information were a)5.919 F -.275(va)-.22 G(ilable) +.275 E .446(that might be used to predict ho)72 372 R 3.196(wg)-.275 G +.446(ood mo)-3.196 F .776 -.165(ve o)-.165 H .446 +(rdering is at a particular node, better split points might be).165 F +(chosen.)72 384 Q -.165(Fo)72 408 S 3.053(rc).165 G .303 +(urrent machines with sixteen processors \(and e)-3.053 F -.165(ve)-.275 +G 3.053(nf).165 G .303(or future potential supercomputers with up to 64) +-3.053 F .279(processors\) the processor idle time in the current algor\ +ithm does not pose a signi\214cant problem.)72 420 R .278(The cur)5.778 +F(-)-.22 E 1.43(rent idle times of tw)72 432 R 4.181(ot)-.11 G 4.181(ot) +-4.181 G 1.431(hree seconds o)-4.181 F -.165(ve)-.165 G 4.181(ram).165 G +1.761 -.165(ove t)-4.181 H 1.431(hat tak).165 F 1.431 +(es 200 to 500 seconds does not af)-.11 F 1.431(fect the)-.275 F .475(s\ +earch times signi\214cantly for small numbers of processors \(2-16\), b) +72 444 R .475(ut for really lar)-.22 F .474(ge numbers of proces-)-.198 +F(sors, something must be done to a)72 456 Q -.22(vo)-.22 G +(id running into Amdahl').22 E 2.75(sL)-.605 G -.165(aw)-2.75 G(.)-.55 E +.143(This result compares f)72 480 R -.22(avo)-.11 G .143 +(rably with the DPVS \(Dynamic PVS\) algorithm de).22 F -.165(ve)-.275 G +.144(loped for Phoenix \(Schaef-).165 F 3.365(fer89]. The)72 492 R -.165 +(ove)3.365 G .615(rall algorithms seem quite similar).165 F 3.365(,b) +-.44 G .615(ut ag)-3.585 F .615(ain, DTS is designed for a much dif) +-.055 F .614(ferent com-)-.275 F 2.718 +(munication mechanism \(shared memory\) and can o)72 504 R -.165(ve) +-.165 G 2.719(rlook some things that Phoenix [Schaef).165 F(fer89],) +-.275 E(Zugzw)72 516 Q .746(ang [Feldman93], *Socrates [K)-.11 F .746 +(uszmaul], and others ha)-.165 F 1.076 -.165(ve t)-.22 H 3.496(ob).165 G +3.496(ev)-3.496 G .746(ery concerned about because the)-3.661 F .725(co\ +mmunication costs are so signi\214cant in those message passing archite\ +ctures used.)72 528 R .726(In f)6.226 F .726(act, perhaps the)-.11 F +1.313(Deep Thought/Deep Blue hardw)72 540 R 1.312 +(are comes closest to the architecture used by Cray Blitz, b)-.11 F +1.312(ut e)-.22 F -.165(ve)-.275 G 4.062(nt).165 G(his)-4.062 E 1.102 +(chess-speci\214c architecture still does not ha)72 552 R 1.432 -.165 +(ve a u)-.22 H 1.103 +(niform shared memory system that is global across all).165 F +(processors and chess processors [Hsu90].)72 564 Q EP +%%Page: 20 20 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF(It')72 96 Q 3.367(su)-.605 G .616(nfortunate th\ +at shared memory is an architectural design feature that doesn')-3.367 F +3.366(ts)-.198 G .616(cale to lar)-3.366 F .616(ge numbers)-.198 F .39(\ +of processors, because CB might produce some interesting performance re\ +sults with really lar)72 108 R .39(ge numbers)-.198 F 1.413 +(of processors.)72 120 R(Ho)6.913 E(we)-.275 E -.165(ve)-.275 G 2.293 +-.44(r, t).165 H 1.413(his is not the case, and it is doubtful that a C\ +ray-class machine will support).44 F .474(shared memory on more than 64\ + processors, using a high-speed interconnect lik)72 132 R 3.224(et)-.11 +G .474(he Cray machines use.)-3.224 F .032 +(As a result, this algorithm really will only scale as f)72 144 R .031 +(ar as a shared memory architecture scales.)-.11 F(An)5.531 E 2.781(yd) +-.165 G(elays)-2.781 E 1.782(\(such as those in some architectures that\ + use a hierarchical memory or)72 156 R -.055(ga)-.198 G 1.783 +(nization with v).055 F 1.783(arying delays)-.275 F .496 +(depending on ho)72 168 R 3.246(wf)-.275 G .496 +(ar the memory is from the requesting processor\) will certainly ha) +-3.356 F .826 -.165(ve a)-.22 H 3.246(na).165 G(dv)-3.246 E .496 +(erse ef)-.165 F(fect)-.275 E(on DTS.)72 180 Q EP +%%Page: 21 21 +%%BeginPageSetup +BP +%%EndPageSetup +.44 LW 418.139 88.75 193.86 88.75 DL/F0 11/Times-Roman@0 SF(processors) +298.673 98 Q 418.139 102.75 193.86 102.75 DL 23.375(pos 1)199.36 112 R +35.75(248)35.75 G(16)-6.875 E 418.139 116.75 193.86 116.75 DL 16.5(12) +209.139 126 S 13.75(,830 1,415)-16.5 F 22(832 435)24.75 F(311)16.5 E +418.139 130.75 193.86 130.75 DL 16.5(22)209.139 140 S 13.75(,849 1,424) +-16.5 F 22(791 438)24.75 F(274)16.5 E 418.139 144.75 193.86 144.75 DL +16.5(33)209.139 154 S 13.75(,274 1,637)-16.5 F 22(884 467)24.75 F(239) +16.5 E 418.139 158.75 193.86 158.75 DL 16.5(42)209.139 168 S 13.75 +(,308 1,154)-16.5 F 22(591 349)24.75 F(208)16.5 E 418.139 172.75 193.86 +172.75 DL 16.5(51)209.139 182 S 22(,584 792 440 243)-16.5 F(178)16.5 E +418.139 186.75 193.86 186.75 DL 16.5(64)209.139 196 S 13.75 +(,294 2,147 1,160)-16.5 F 13.75(670 452)24.75 F 418.139 200.75 193.86 +200.75 DL 16.5(71)209.139 210 S 22(,888 993 524 273)-16.5 F(187)16.5 E +418.139 214.75 193.86 214.75 DL 16.5(87)209.139 224 S 13.75 +(,275 3,637 1,966 1,039 680)-16.5 F 418.139 228.75 193.86 228.75 DL 16.5 +(93)209.139 238 S 13.75(,940 1,970 1,094)-16.5 F 13.75(635 398)24.75 F +418.139 242.75 193.86 242.75 DL 13.75(10 2,431 1,215)203.639 252 R 22 +(639 333)24.75 F(187)16.5 E 418.139 256.75 193.86 256.75 DL 13.75 +(11 3,062 1,531)203.639 266 R 22(827 425)24.75 F(247)16.5 E 418.139 +270.75 193.86 270.75 DL 13.75(12 2,518 1,325)203.639 280 R 22(662 364) +24.75 F(219)16.5 E 418.139 284.75 193.86 284.75 DL 13.75(13 2,131 1,121) +203.639 294 R 22(560 313)24.75 F(192)16.5 E 418.139 298.75 193.86 298.75 +DL 13.75(14 1,871)203.639 308 R 22(935 534 296)24.75 F(191)16.5 E +418.139 312.75 193.86 312.75 DL 13.75(15 2,648 1,324)203.639 322 R 22 +(715 378)24.75 F(243)16.5 E 418.139 326.75 193.86 326.75 DL 13.75 +(16 2,347 1,235)203.639 336 R 22(601 321)24.75 F(182)16.5 E 418.139 +340.75 193.86 340.75 DL 13.75(17 4,884 2,872 1,878 1,085 814)203.639 350 +R 418.139 354.75 193.86 354.75 DL 22(18 646 358 222 124)203.639 364 R +(84)22 E 418.139 368.75 193.86 368.75 DL 13.75(19 2,983 1,491)203.639 +378 R 22(785 426)24.75 F(226)16.5 E 418.139 382.75 193.86 382.75 DL +13.75(20 7,473 3,736 1,916 1,083 530)203.639 392 R 418.139 396.75 193.86 +396.75 DL 13.75(21 3,626 1,813)203.639 406 R 22(906 489)24.75 F(237)16.5 +E 418.139 410.75 193.86 410.75 DL 13.75(22 2,560 1,347)203.639 420 R 22 +(691 412)24.75 F(264)16.5 E 418.139 424.75 193.86 424.75 DL 13.75 +(23 2,039 1,019)203.639 434 R 22(536 323)24.75 F(206)16.5 E 418.139 +438.75 193.86 438.75 DL 13.75(24 2,563 1,281)203.639 448 R 22(657 337) +24.75 F(178)16.5 E 418.139 452.75 193.86 452.75 DL 387.889 116.75 +387.889 452.75 DL 346.639 116.75 346.639 452.75 DL 305.389 116.75 +305.389 452.75 DL 264.139 116.75 264.139 452.75 DL 222.889 116.75 +222.889 452.75 DL 418.139 88.75 418.139 452.75 DL 193.86 88.75 193.86 +452.75 DL 387.889 102.75 387.889 452.75 DL 346.639 102.75 346.639 452.75 +DL 305.389 102.75 305.389 452.75 DL 264.139 102.75 264.139 452.75 DL +222.889 88.75 222.889 452.75 DL -.88(Ta)235.297 476.2 S(ble 4 Search T) +.88 E(ime in Seconds)-.385 E EP +%%Page: 22 22 +%%BeginPageSetup +BP +%%EndPageSetup +.44 LW 497.889 88.75 114.11 88.75 DL/F0 11/Times-Roman@0 SF(processors) +298.673 98 Q 497.889 102.75 114.11 102.75 DL 38.5(pos 1)119.61 112 R 66 +(248)66 G(16)-2.75 E 497.889 116.75 114.11 116.75 DL 22(18)129.389 126 S +19.25(7,735,974 89,052,012)-22 F 13.75 +(105,025,123 109,467,495 155,514,410)16.5 F 497.889 130.75 114.11 130.75 +DL 22(28)129.389 140 S 19.25(8,954,757 90,289,077)-22 F 13.75 +(100,568,301 110,988,161 137,965,406)16.5 F 497.889 144.75 114.11 144.75 +DL 16.5(31)129.389 154 S 13.75 +(01,302,792 102,822,332 111,433,074 117,366,515 119,271,093)-16.5 F +497.889 158.75 114.11 158.75 DL 22(47)129.389 168 S 19.25 +(1,726,853 72,802,754 74,853,409 88,137,085)-22 F(104,230,094)16.5 E +497.889 172.75 114.11 172.75 DL 22(54)129.389 182 S 19.25 +(9,386,616 50,127,414 55,834,316 61,619,298 89,506,306)-22 F 497.889 +186.75 114.11 186.75 DL 16.5(61)129.389 196 S 13.75 +(33,238,718 135,237,296 146,562,594 168,838,428 226,225,307)-16.5 F +497.889 200.75 114.11 200.75 DL 22(75)129.389 210 S 19.25 +(8,593,747 62,602,792 66,243,490 68,868,878 93,575,946)-22 F 497.889 +214.75 114.11 214.75 DL 16.5(82)129.389 224 S 13.75 +(25,906,282 229,294,872 248,496,917 261,728,552 340,548,431)-16.5 F +497.889 228.75 114.11 228.75 DL 16.5(91)129.389 238 S 13.75 +(22,264,617 124,098,584 138,226,951 159,930,005 199,204,874)-16.5 F +497.889 242.75 114.11 242.75 DL 19.25 +(10 75,301,353 76,430,872 80,651,716 83,656,702 93,431,597)123.889 252 R +497.889 256.75 114.11 256.75 DL 19.25(11 95,321,494 96,751,315)123.889 +266 R 13.75(104,853,646 107,369,070 123,994,812)16.5 F 497.889 270.75 +114.11 270.75 DL 19.25(12 79,975,416 85,447,418 85,657,884 94,000,085) +123.889 280 R(112,174,209)16.5 E 497.889 284.75 114.11 284.75 DL 19.25 +(13 66,100,160 70,622,802 70,796,754 78,834,155 96,053,649)123.889 294 R +497.889 298.75 114.11 298.75 DL 19.25 +(14 58,099,574 58,971,066 67,561,507 74,791,668 95,627,150)123.889 308 R +497.889 312.75 114.11 312.75 DL 19.25 +(15 84,143,340 85,405,488 92,557,676 97,486,065)123.889 322 R +(124,516,703)16.5 E 497.889 326.75 114.11 326.75 DL 19.25 +(16 75,738,094 80,920,173 79,039,499 84,141,904 94,701,972)123.889 336 R +497.889 340.75 114.11 340.75 DL 13.75 +(17 154,901,225 184,970,278 242,480,013 279,166,418 416,426,105)123.889 +350 R 497.889 354.75 114.11 354.75 DL 19.25 +(18 20,266,629 22,856,254 28,443,165 31,608,146 42,454,639)123.889 364 R +497.889 368.75 114.11 368.75 DL 19.25(19 93,858,903 95,266,785)123.889 +378 R 13.75(100,527,830 108,742,238 114,692,731)16.5 F 497.889 382.75 +114.11 382.75 DL 13.75 +(20 231,206,390 234,674,482 241,284,621 271,751,263 264,493,531)123.889 +392 R 497.889 396.75 114.11 396.75 DL 13.75 +(21 112,457,464 114,144,324 114,425,474 123,247,294 118,558,091)123.889 +406 R 497.889 410.75 114.11 410.75 DL 19.25 +(22 81,302,340 86,865,131 89,432,576)123.889 420 R 13.75 +(106,348,704 135,196,568)16.5 F 497.889 424.75 114.11 424.75 DL 19.25 +(23 63,598,940 64,552,923 68,117,815 81,871,010)123.889 434 R +(103,621,303)16.5 E 497.889 438.75 114.11 438.75 DL 19.25 +(24 80,413,971 81,620,179 83,919,196 85,810,169 90,074,814)123.889 448 R +497.889 452.75 114.11 452.75 DL 429.139 116.75 429.139 452.75 DL 357.639 +116.75 357.639 452.75 DL 286.139 116.75 286.139 452.75 DL 214.639 116.75 +214.639 452.75 DL 143.139 116.75 143.139 452.75 DL 497.889 88.75 497.889 +452.75 DL 114.11 88.75 114.11 452.75 DL 429.139 102.75 429.139 452.75 DL +357.639 102.75 357.639 452.75 DL 286.139 102.75 286.139 452.75 DL +214.639 102.75 214.639 452.75 DL 143.139 88.75 143.139 452.75 DL -.88 +(Ta)238.911 476.2 S(ble 5).88 E -.88(To)5.5 G(tal Nodes Searched).88 E +EP +%%Page: 23 23 +%%BeginPageSetup +BP +%%EndPageSetup +.44 LW 393.582 88.75 218.418 88.75 DL/F0 11/Times-Roman@0 SF(processors) +298.866 98 Q 393.582 102.75 218.418 102.75 DL 13.943(pos 1)224.11 112 R +24.75(2481)20.625 G(6)-24.75 E 393.582 116.75 218.418 116.75 DL 16.5 +(112)234.082 126 S 13.75(.0 3.4 6.5)-16.5 F(9.1)22 E 393.582 130.75 +218.418 130.75 DL 16.5(212)234.082 140 S 13.75(.0 3.6 6.5 10.4)-16.5 F +393.582 144.75 218.418 144.75 DL 16.5(312)234.082 154 S 13.75 +(.0 3.7 7.0 13.7)-16.5 F 393.582 158.75 218.418 158.75 DL 16.5(412) +234.082 168 S 13.75(.0 3.9 6.6 11.1)-16.5 F 393.582 172.75 218.418 +172.75 DL 16.5(512)234.082 182 S 13.75(.0 3.6 6.5)-16.5 F(8.9)22 E +393.582 186.75 218.418 186.75 DL 16.5(612)234.082 196 S 13.75 +(.0 3.7 6.4)-16.5 F(9.5)22 E 393.582 200.75 218.418 200.75 DL 16.5(711) +234.082 210 S 13.75(.9 3.6 6.9 10.1)-16.5 F 393.582 214.75 218.418 +214.75 DL 16.5(812)234.082 224 S 13.75(.0 3.7 7.0 10.7)-16.5 F 393.582 +228.75 218.418 228.75 DL 16.5(912)234.082 238 S 13.75(.0 3.6 6.2)-16.5 F +(9.9)22 E 393.582 242.75 218.418 242.75 DL 13.75(10 1 2.0 3.8 7.3 13.0) +228.582 252 R 393.582 256.75 218.418 256.75 DL 13.75 +(11 1 2.0 3.7 7.2 12.4)228.582 266 R 393.582 270.75 218.418 270.75 DL +13.75(12 1 1.9 3.8 6.9 11.5)228.582 280 R 393.582 284.75 218.418 284.75 +DL 13.75(13 1 1.9 3.8 6.8 11.1)228.582 294 R 393.582 298.75 218.418 +298.75 DL 13.75(14 1 2.0 3.5 6.3)228.582 308 R(9.8)22 E 393.582 312.75 +218.418 312.75 DL 13.75(15 1 2.0 3.7 7.0 10.9)228.582 322 R 393.582 +326.75 218.418 326.75 DL 13.75(16 1 1.9 3.9 7.3 12.9)228.582 336 R +393.582 340.75 218.418 340.75 DL 13.75(17 1 1.7 2.6 4.5)228.582 350 R +(6.0)22 E 393.582 354.75 218.418 354.75 DL 13.75(18 1 1.8 2.9 5.2) +228.582 364 R(7.7)22 E 393.582 368.75 218.418 368.75 DL 13.75 +(19 1 2.0 3.8 7.0 13.2)228.582 378 R 393.582 382.75 218.418 382.75 DL +13.75(20 1 2.0 3.9 6.9 14.1)228.582 392 R 393.582 396.75 218.418 396.75 +DL 13.75(21 1 2.0 4.0 7.4 15.3)228.582 406 R 393.582 410.75 218.418 +410.75 DL 13.75(22 1 1.9 3.7 6.2)228.582 420 R(9.7)22 E 393.582 424.75 +218.418 424.75 DL 13.75(23 1 2.0 3.8 6.3)228.582 434 R(9.9)22 E 393.582 +438.75 218.418 438.75 DL 13.75(24 1 2.0 3.9 7.6 14.4)228.582 448 R +393.582 452.75 218.418 452.75 DL -.22(av)223.918 462 S 16.5(g12).22 G +13.75(.0 3.7 6.6 11.1)-16.5 F 393.582 466.75 218.418 466.75 DL 360.582 +116.75 360.582 466.75 DL 330.332 116.75 330.332 466.75 DL 300.082 116.75 +300.082 466.75 DL 269.832 116.75 269.832 466.75 DL 247.832 116.75 +247.832 466.75 DL 393.582 88.75 393.582 466.75 DL 218.418 88.75 218.418 +466.75 DL 360.582 102.75 360.582 466.75 DL 330.332 102.75 330.332 466.75 +DL 300.082 102.75 300.082 466.75 DL 269.832 102.75 269.832 466.75 DL +247.832 88.75 247.832 466.75 DL -.88(Ta)224.798 490.2 S(ble 6).88 E +-.165(Pa)5.5 G(rallel Processing Speedup).165 E 2.75(6. Future)72 514.2 +R -.11(wo)2.75 G(rk).11 E .824(Perhaps the most signi\214cant future w) +72 538.2 R .824 +(ork for this algorithm lies in selecting split points more accurately) +-.11 F(.)-.715 E -.165(Fo)72 550.2 S 4.713(rs).165 G 1.963 +(ome positions, the current Split\(\) algorithm performs admirably) +-4.713 F 7.462(.F)-.715 G 1.962(or others, it performs poorly)-7.627 F +(.)-.715 E(An)72 562.2 Q(ything that impro)-.165 E -.165(ve)-.165 G 2.75 +(st).165 G(he "poor" cases has a positi)-2.75 E .33 -.165(ve e)-.275 H +-.275(ff).165 G(ect on o).275 E -.165(ve)-.165 G(rall performance.).165 +E EP +%%Page: 24 24 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF .071(There are at least tw)72 96 R 2.822(oa)-.11 +G .072(pproaches to this problem.)-2.822 F .072 +(One is to more accurately \214nd good split points \(some-)5.572 F .721 +(thing that might be impossible in a signi\214cant number of positions\ +\).)72 108 R .72(Another is to de)6.22 F -.165(ve)-.275 G .72 +(lop some sort of).165 F .501 +(con\214dence in a list of split points, someho)72 120 R 3.251(we)-.275 +G .501(liminating those that are potentially bad.)-3.251 F .502 +(After eliminating)6.002 F .511(such split points, the o)72 132 R -.165 +(ve)-.165 G .511(rhead should drop signi\214cantly).165 F 6.011(.U)-.715 +G(nfortunately)-6.011 E 3.261(,d)-.715 G .511 +(etecting such split points is not)-3.261 F(easy)72 144 Q 5.882(.T)-.715 +G .382(he \214rst step will lik)-5.882 F .383 +(ely be more detailed analysis of the trees searched by C-B.)-.11 F .383 +(The problem with)5.883 F .434(this is that these trees re)72 156 R .434 +(gularly e)-.165 F .433(xceed one billion nodes on a T90, making the v) +-.165 F .433(olume of data some)-.22 F(what)-.275 E(lar)72 168 Q 3.063 +(ge! Such)-.198 F(lar)3.063 E .313(ge trees require recognizing a speci\ +\214c performance feature and then adding instructions to)-.198 F .156 +(the code to measure the feature "in situ" since analyzing such a lar)72 +180 R .156(ge tree by visual inspection is impracti-)-.198 F(cal.)72 192 +Q .913(The current algorithm depends on rapid information sharing and u\ +ses shared memory to implement this)72 216 R 4.45(sharing. The)72 228 R +(ne)4.449 E 1.699(xt logical step in algorithm de)-.165 F -.165(ve)-.275 +G 1.699(lopment is to mo).165 F 2.029 -.165(ve t)-.165 H -2.31 -.275 +(ow a).165 H 1.699(rd a distrib).275 F 1.699(uted architecture.)-.22 F +-.44(Wi)72 240 S .091(th HIPPI and/or other high-performance processor \ +interconnects, a distrib).44 F .091(uted v)-.22 F .092 +(ersion of this algorithm)-.165 F 1.738(should deli)72 252 R -.165(ve) +-.275 G 4.488(rh).165 G 1.738(igh performance if care is tak)-4.488 F +1.737(en to control task granularity \(which is not an issue on)-.11 F +(machines lik)72 264 Q 2.75(et)-.11 G(he C90/T90 with shared memory) +-2.75 E(.\))-.715 E(7. Bibliograph)72 288 Q(y)-.055 E 1.053(S. Akl, D. \ +Barnard, and R. Doran, "The Design, Analysis and Implementation of a P) +72 312 R 1.054(arallel Alpha-Beta)-.165 F 2.925(Algorithm", IEEE T)72 +324 R 2.925(ransactions on P)-.385 F 2.924 +(attern Analysis and Machine Intelligence, P)-.165 F 2.924 +(AMI-4, \(2\) \(1982\),)-1.012 F(\(192-203\).)72 336 Q 1.392(B. A)72 360 +R(werb)-1.012 E 1.392(uch, "A Ne)-.22 F 4.142(wD)-.275 G(istrib)-4.142 E +1.393(uted Depth-First Search Algorithm", Information Processing Letter\ +s \(20\))-.22 F(\(1985\) 147-150.)72 372 Q .363(G. Baudet, "The Design \ +and Analysis of Algorithms for Asynchronous Multiprocessors", Ph. D Dis\ +serta-)72 396 R(tion, Carne)72 408 Q(gie-Mellon Uni)-.165 E -.165(ve) +-.275 G(rsity).165 E 2.75(,P)-.715 G(ittsb)-2.75 E(ur)-.22 E(gh, P)-.198 +E 2.75(a. \(1978\).)-.165 F .892(M. Campbell, "Algorithms for the P)72 +432 R .892(arallel Search of Game T)-.165 F .892 +(rees", M. Sc. Thesis, T)-.385 F .892(echnical Report TR)-.77 F +(81-8, Computer Science Department, Uni)72 444 Q -.165(ve)-.275 G +(rsity of Alberta, Edmonton \(1981\).).165 E 4.095(RF)72 468 S 1.345 +(eldmann, B. Monieni, P)-4.095 F 4.095(.M)-1.221 G 1.345 +(ysliwietz and O. V)-4.095 F(ornber)-1.419 E(ger)-.198 E 4.095(,")-.44 G +(Distrib)-4.095 E 1.345(uted g)-.22 F 1.344(ame tree search," in P)-.055 +F(arallel)-.165 E +(algorithms for machine intelligence and pattern recognition \(1990\).) +72 480 Q 3(RF)72 504 S .25(eldmann, "Game T)-3 F .251 +(ree Search on Massi)-.385 F -.165(ve)-.275 G .251(ly P).165 F .251 +(arallel Systems," Ph.D. Theses, Uni)-.165 F -.165(ve)-.275 G .251 +(rsity of P).165 F(aderborn,)-.165 E(August, 1993.)72 516 Q(R. Fink)72 +540 Q(el and J. Fishb)-.11 E(urn, "P)-.22 E(arallelism in Alpha-Beta Se\ +arch", Arti\214cial Intelligence \(1982\) 89-106.)-.165 E 1.706 +(F-h Hsu, "Lar)72 564 R 1.705(ge scale parallelism of alpha-beta search\ +: an algorithmic and architectural study)-.198 F 1.705(," Ph.D.)-.715 F +(Thesis, Carne)72 576 Q(gie-Mellon Uni)-.165 E -.165(ve)-.275 G +(rsity \(1990\).).165 E EP +%%Page: 25 25 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF .025(R. Hyatt, B. Suter)72 96 R 2.775(,a)-.44 G +.025(nd H. Nelson, "A P)-2.775 F .026(arallel Alpha/Beta T)-.165 F .026 +(ree Searching Algorithm," P)-.385 F .026(arallel Computing)-.165 F +(10 \(1989\) 299-308.)72 108 Q 1.052(R. Hyatt, "A High-Performance P)72 +132 R 1.052(arallel Algorithm to Search Depth-First Game T)-.165 F 1.051 +(rees," Ph.D. Disserta-)-.385 F(tion, Uni)72 144 Q -.165(ve)-.275 G +(rsity of Alabama at Birmingham, 1988.).165 E 1.7(R. Hyatt, A. Go)72 168 +R(wer)-.275 E 4.45(,a)-.44 G 1.7(nd H. Nelson, "Cray Blitz", Adv)-4.45 F +1.7(ances in Computer Chess 4, Per)-.275 F -.055(ga)-.198 G 1.701 +(mmon Press).055 F(\(1986\) \(8-18\).)72 180 Q .293 +(R. Hyatt, H. Nelson, A. Go)72 204 R(wer)-.275 E 3.043(,")-.44 G .292 +(Cray Blitz - 1984 Chess Champion", T)-3.043 F .292 +(elematics and Informatics \(2\) \(4\),)-.77 F(Per)72 216 Q -.055(ga) +-.198 G(mmon Press Ltd. \(1986\) \(299-305\).).055 E .119(D. Knuth and \ +R. Moore, "An Analysis of Alpha-Beta Pruning", Arti\214cial Intelligenc\ +e 6 \(1975\) \(293-326\).)72 240 R(B. K)72 264 Q +(uszmaul, "Synchronized MIMD Computing," Ph.D. Thesis, MIT)-.165 E 2.75 +(,1)-.814 G(994.)-2.75 E 2.239(G. Lindstrom, "The K)72 288 R 2.569 -.165 +(ey N)-.275 H 2.239(ode Method: A Highly P).165 F 2.239 +(arallel Alpha-Beta Algorithm", T)-.165 F 2.238(echnical Report)-.77 F +(UUCS 83-101, Department of Computer Science, Uni)72 300 Q -.165(ve) +-.275 G(rsity of Utah, 1983.).165 E 1.628 -.814(T. M)72 324 T +(arsland and J. Schaef).814 E(fer)-.275 E 2.75(,C)-.44 G +(omputers, Chess and Cognition, Springer)-2.75 E(-V)-.22 E(erlag, 1990.) +-1.221 E 1.913 -.814(T. M)72 348 T .285(arsland and M. Campbell, "P).814 +F .286(arallel Search of Strongly Ordered Game T)-.165 F .286(rees", A) +-.385 F .286(CM Computing Sur)-.44 F(-)-.22 E -.165(vey)72 360 S 2.75 +(s\().165 G(4\) \(1982\) \(533-551\).)-2.75 E 2.905 -.814(T. A)72 384 T +4.027(.M).814 G 1.277(arsland and F)-4.027 F 4.027(.P)-.88 G(opo)-4.027 +E 4.026(wich, "P)-.275 F 1.276(arallel Game-tree Search", IEEE T)-.165 F +1.276(ransactions on P)-.385 F 1.276(attern Analysis)-.165 F +(and Machine Intelligence, P)72 396 Q(AMI-7, \(1985\) \(442-452\).) +-1.012 E 2.523 -.814(T. M)72 420 T .895(arsland, M. Campbell, and A. Ri) +.814 F -.165(ve)-.275 G .896(ra, "P).165 F .896 +(arallel Search of Game T)-.165 F .896(rees", T)-.385 F .896 +(echnical Report TR 80-7,)-.77 F(Computing Science Department, Uni)72 +432 Q -.165(ve)-.275 G(rsity of Alberta, Edmonton \(1980\).).165 E 2.851 +-.814(T. M)72 456 T 1.222(arsland and M. Campbell, "Methods for P).814 F +1.222(arallel Search of Game T)-.165 F 1.222 +(rees", Proceedings of the 1981)-.385 F +(International Joint Conference on Arti\214cial Intelligence.)72 468 Q +3.843 -.814(T. M)72 492 T 2.215(arsland, M. Olafsson, and J. Schaef).814 +F(fer)-.275 E 4.966(,")-.44 G 2.216(Multiprocessor T)-4.966 F 2.216 +(ree-Search Experiments", Adv)-.385 F 2.216(ances in)-.275 F +(Computer Chess 4, Per)72 504 Q -.055(ga)-.198 G +(mmon Press \(1986\) \(37-51\).).055 E 3.234(M. Ne)72 528 R 3.234 +(wborn, "A P)-.275 F 3.233 +(arallel Search Chess Program", Proceedings, A)-.165 F 3.233 +(CM Annual Conference, \(1985\),)-.44 F(\(272-277\).)72 540 Q .826 +(J. Pearl, "Scout: A Simple Game-Searching Algorithm with Pro)72 564 R +-.165(ve)-.165 G 3.577(nO).165 G .827 +(ptimal Properties", Proceedings of)-3.577 F(the First Annual National \ +Conference on Arti\214cial Intelligence, Stanford, \(1980\).)72 576 Q EP +%%Page: 26 26 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF 2.219 -.88(F. P)72 96 T(opo).88 E .459 +(wich and T)-.275 F 3.208(.M)-.814 G .458(arsland, "P)-3.208 F .458 +(arabelle: Experiments with a P)-.165 F .458(arallel Chess Program", T) +-.165 F .458(echnical Report)-.77 F +(TR 83-7, Computing Science Department, Uni)72 108 Q -.165(ve)-.275 G +(rsity of Alberta, Edmonton \(1983\).).165 E .612(J. Schaef)72 132 R +(fer)-.275 E 3.362(,")-.44 G(Distrib)-3.362 E .612(uted g)-.22 F .612 +(ame-tree search," Journal of P)-.055 F .612(arallel and Distrib)-.165 F +.612(uted Computing 6 \(2\) \(1989\),)-.22 F(90-114.)72 144 Q .133 +(I. Steinber)72 168 R 2.883(ga)-.198 G .133(nd M. Solomon, "Searching g) +-2.883 F .132 +(ame trees in parallel," Proceedings of the International Confer)-.055 F +(-)-.22 E(ence on P)72 180 Q(arallel Processing \(V)-.165 E +(ol 3\) \(1990\), 9-17.)-1.419 E 1.89(Z. Y)72 204 R 1.89(ang and T)-1.1 +F 4.64(.M)-.814 G 1.89(arsland, "Global States and T)-4.64 F 1.89 +(ime in Distrib)-.385 F 1.89(uted Systems," IEEE Computer Society)-.22 F +(Press, No)72 216 Q -.165(ve)-.165 G(mber 1993.).165 E EP +%%Page: 27 27 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 11/Times-Roman@0 SF(Appendix A)72 96 Q([Ev)72 120 Q(ent "23rd A) +-.165 E(CM International Computer Chess Championship"])-.44 E +([Site "Indianapolis, MD"])72 132 Q([Date "02.14.1993"])72 144 Q +([Round "?"])72 156 Q([White "Mchess Pro"])72 168 Q +([Black "Cray Blitz"])72 180 Q([Result "0-1"])72 192 Q .78(1. e4)72 204 +R .78(e5 2. Nc3 Nc6 3. f4)6.28 F -.165(ex)6.28 G .78(f4 4. Nf3 g5 5. d4) +.165 F .78(g4 6. Bc4 gxf3 7. o-o d5 8. e)6.28 F .78 +(xd5 Bg4 9. Qd2 Na5 10.)-.165 F .744 +(Bb5+ c6 11. Qxf4 Nf6 12. Re1+ Kd7 13. dxc6+ bxc6 14. Ne4 Nx)72 216 R +.744(e4 15. Qxg4+ Kc7 16. Rx)-.165 F .744(e4 cxb5 17.)-.165 F 1.054 +(Qxf3 Qd7 18. Rf4 Be7 19. Rxf7 Raf8 20. Bf4+ Kb6 21. Be5 Rhg8 22. c3)72 +228 R 1.054(Nc6 23. Re1 Qe8 24. Rxf8)6.554 F .718 +(Qxf8 25. Qd5 Rg5 26. a4)72 240 R .718(bxa4 27. c4)6.218 F(Nx)6.218 E +.718(e5 28. Rx)-.165 F .718(e5 Rx)-.165 F .718(e5 29. Qx)-.165 F .719 +(e5 Qd8 30. c5+ Kb5 31. Qe2+ Kb4)-.165 F .585(32. Qd3 Bf6 33. Qc3+ Kb5 \ +34. Qd3+ Kc6 35. Qf3+ Kd7 36. Qe4 Qe7 37. Qb7+ K)72 252 R .585 +(e8 38. Qa8+ Qd8 39.)-.275 F .911(Qc6+ Kf7 40. Qb7+ Kf8 41. d5)72 264 R +.911(Qe7 42. Qb8+ Kf7 43. Kf1 Bxb2 44. g4)6.411 F .912 +(Bc3 45. Kf2 Qxc5+ 46. Kf1)6.411 F(Qc4+ 47. Kf2 Qd4+ 48. Kf3 Qd1+ 49. K) +72 276 Q(e3 Bd2+ 50. Kf2 Qe1+ 51. Kg2 Qe2+)-.275 E EP +%%Trailer +end +%%EOF |
