Subject: Submission to CPE (Postscript file) Resent-Date: Fri, 06 Aug 1999 22:21:29 -0400 Resent-From: Geoffrey Fox ?gcf@npac.syr.edu? Resent-To: p_gcf@npac.syr.edu Date: Thu, 5 Aug 99 9:12:10 MET DST From: Henri Bal ?bal@cs.vu.nl? To: gcf@npac.syr.edu %!PS-Adobe-2.0 %%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software %%Title: cpe99.dvi %%Pages: 21 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentFonts: Times-Roman Times-Bold Times-Italic Symbol %%DocumentPaperSizes: A4 %%EndComments %DVIPSCommandLine: dvips cpe99.dvi %DVIPSParameters: dpi=600, comments removed %DVIPSSource: TeX output 1999.08.05:0907 %%BeginProcSet: tex.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginFont: Times-Roman % @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", % version = "0.6", % date = "22 June 1996", % filename = "8r.enc", % email = "kb@@mail.tug.org", % address = "135 Center Hill Rd. // Plymouth, MA 02360", % codetable = "ISO/ASCII", % checksum = "119 662 4424", % docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX." % @} % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y?Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y?Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndFont %%BeginProcSet: texps.pro TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} ifelse}forall Metrics /Metrics currentdict end def[2 index currentdict end definefont 3 -1 roll makefont /setfont load]cvx def}def /ObliqueSlant{dup sin S cos div neg}B /SlantFont{4 index mul add}def /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding exch def}def end %%EndProcSet %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 39158280 55380996 1000 600 600 (cpe99.dvi) @start /Fa 184[53 1[44 3[53 65[{ TeXBase1Encoding ReEncodeFont }3 72.999954 /Times-Roman rf /Fb 134[40 40 61 40 45 25 35 35 1[45 45 45 66 25 40 25 25 45 45 25 40 45 40 45 45 8[56 76 1[66 51 45 56 1[56 66 61 76 51 61 40 30 66 66 56 56 66 61 56 56 6[30 45 45 45 45 45 45 1[45 45 45 1[23 30 23 2[30 30 30 39[{ TeXBase1Encoding ReEncodeFont }62 91.249977 /Times-Italic rf /Fc 134[50 50 1[50 55 33 39 44 1[55 50 55 83 28 2[28 55 2[44 1[44 1[50 13[55 72 1[61 2[94 2[50 39 3[66 22[25 33 45[{ TeXBase1Encoding ReEncodeFont }26 100.000000 /Times-Bold rf /Fd 55 126 df?387CFEFEFEFEFEFEFEFEFEFEFEFEFEFE FEFEFEFEFEFEFEFEFEFE7C00000000000000387CFEFEFE7C38072972A823?33 D?000780000F80001F80003F8000FE0000FC0001F80003F00007E00007C0000F80000F80 001F00001F00003E00003E00007E00007C00007C00007C0000FC0000F80000F80000F800 00F80000F80000F80000F80000F80000F80000F80000FC00007C00007C00007C00007E00 003E00003E00001F00001F00000F80000F800007C00007E00003F00001F80000FC0000FE 00003F80001F80000F80000780113475AD23?40 D?700000F80000FC00007E00003F8000 1F80000FC00007E00003F00001F00000F80000F800007C00007C00003E00003E00003F00 001F00001F00001F00001F80000F80000F80000F80000F80000F80000F80000F80000F80 000F80000F80001F80001F00001F00001F00003F00003E00003E00007C00007C0000F800 00F80001F00003F00007E0000FC0001F80003F80007E0000FC0000F8000070000011347A AD23?I?00078000000FC000000FC000000FC000000FC000000FC000000FC000000FC000 000FC000000FC000000FC000000FC0007FFFFFF8FFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC 7FFFFFF8000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000 000FC000000FC000000FC000000780001E1E7EA223?43 D?1F003F807FC07FC07FE07FE0 7FE03FE01FE003E003C007C00F801F807F00FE00FC0070000B12748823?I?7FFFFF80FF FFFFC0FFFFFFC0FFFFFFC0FFFFFFC07FFFFF801A067C9623?I?3E007F00FF80FF80FF80 FF80FF807F003E000909738823?I?0000078000000FC000000FC000001FC000001FC000 003F8000003F8000003F0000007F0000007F000000FE000000FE000001FC000001FC0000 01F8000003F8000003F8000007F0000007F000000FE000000FE000000FC000001FC00000 1FC000003F8000003F8000007F0000007F000000FE000000FE000000FC000001FC000001 FC000003F8000003F8000007F0000007F0000007E000000FE000000FE000001FC000001F C000003F8000003F8000003F0000007F0000007F000000FE000000FE000000FC000000FC 000000780000001A347CAD23?I?001F8000007FE00001FFF80003FFFC0007F0FE000FC0 3F000F801F001F000F801F000F803E0007C03E0007C07C0003E07C0003E07C0003E07800 01E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F800 01F0F80001F0F80001F07C0003E07C0003E07C0003E07E0007E03E0007C03E0007C01F00 0F801F801F800F801F000FC03F0007F0FE0003FFFC0001FFF800007FE000001F80001C29 7DA823?I?003C00003C00007C00007C0000FC0001FC0003FC0007FC007FFC00FFFC00FF 7C007C7C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000 7C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000 7C00007C00007C007FFFFC7FFFFE7FFFFE7FFFFC17297AA823?I?1F003F807FC07FC07F C07FC07FC03F801F00000000000000000000000000000000000000000000001E003F807F 807FC07FC07FC07FC03FC01FC007C007800F801F803F007E00FC00F80070000A26749C23 ?59 D?0000078000000FC000003FC000007FC00000FFC00003FF800007FF00000FFC0000 3FF800007FF00000FFC00003FF800007FF00000FFC00003FF800007FF00000FFC00000FF 800000FF800000FFC000007FF000003FF800000FFC000007FF000003FF800000FFC00000 7FF000003FF800000FFC000007FF000003FF800000FFC000007FC000003FC000000FC000 0007801A247CA523?I?7FFFFFF8FFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC7FFFFFF80000 000000000000000000000000000000000000000000007FFFFFF8FFFFFFFCFFFFFFFCFFFF FFFCFFFFFFFC7FFFFFF81E127E9C23?I?01FFE0000FFFF8001FFFFE007FFFFF007F807F 80FE001FC0FC000FC0FC0007C0FC0007C0FC000FC078001F8000007F800000FF000001FE 000007F800000FF000000FE000001FC000001F8000003F0000003F0000003F0000003F00 00003F0000003F0000003F0000003E000000000000000000000000000000000000000000 000000000000000000001C0000003E0000007F0000007F0000007F0000003E0000001C00 001A297CA823?63 D?000FC000000FC000001FE000001FE000001FE000001CE000003CF0 00003CF000003CF000003CF000007CF800007CF800007CF800007CF8000078780000F87C 0000F87C0000F87C0000F87C0001F03E0001F03E0001F03E0001F03E0001F03E0003E01F 0003E01F0003FFFF0003FFFF0007FFFF8007FFFF8007C00F8007C00F8007C00F800F8007 C00F8007C00F8007C00F8007C0FFF03FFCFFF03FFCFFF03FFCFFF03FFC1E297EA823?65 D?FFFFF000FFFFFE00FFFFFF00FFFFFF800F801FC00F8007E00F8003E00F8003F00F8001 F00F8001F00F8001F00F8001F00F8001F00F8003F00F8003E00F8007E00F800FC00F807F 800FFFFF000FFFFC000FFFFF000FFFFF800F8007C00F8003E00F8001F00F8001F00F8000 F80F8000F80F8000F80F8000F80F8000F80F8000F80F8001F80F8001F00F8003F00F8007 F00F800FE0FFFFFFC0FFFFFF80FFFFFF00FFFFFC001D297EA823?I?000FE0F0007FF8F0 00FFFFF003FFFFF007F83FF007E01FF00FC00FF01F8007F01F0003F03F0003F03E0001F0 7E0001F07C0001F07C0001F07C000000FC000000F8000000F8000000F8000000F8000000 F8000000F8000000F8000000F8000000F8000000FC0000007C0000007C0000007C0001F0 7E0001F03E0001F03F0001F01F0003F01F8003E00FC007E007E00FC007F83FC003FFFF80 00FFFF00007FFC00000FE0001C297DA823?I?FFFFFEFFFFFEFFFFFEFFFFFE007C00007C 00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C 00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C 00007C00007C00007C00007C00007C00007C00007C00FFFFFEFFFFFEFFFFFEFFFFFE1729 7AA823?73 D?7FFF0000FFFF0000FFFF00007FFF000007C0000007C0000007C0000007C0 000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0 000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0 000007C0000007C0000007C0000007C0000007C0007C07C0007C07C0007C07C0007C07C0 007C07C0007C07C0007C7FFFFFFCFFFFFFFCFFFFFFFC7FFFFFFC1E297EA823?76 D?FF8001FFFF8001FFFFC003FFFFC003FF1FC003F81EE007781EE007781EE007781EF00F 781E700E781E700E781E781E781E781E781E381C781E3C3C781E3C3C781E1C38781E1E78 781E1E78781E0E70781E0E70781E0E70781E07E0781E07E0781E07E0781E03C0781E03C0 781E0000781E0000781E0000781E0000781E0000781E0000781E0000781E0000781E0000 781E000078FFC003FFFFC003FFFFC003FFFFC003FF20297FA823?I?03FFF0000FFFFC00 1FFFFE003FFFFF007F807F807E001F807C000F807C000F807C000F80F80007C0F80007C0 F80007C0F80007C0F80007C0F80007C0F80007C0F80007C0F80007C0F80007C0F80007C0 F80007C0F80007C0F80007C0F80007C0F80007C0F80007C0F80007C0F80007C0F80007C0 F80007C0F80007C0FC000FC07C000F807C000F807C000F807E001F807F807F803FFFFF00 1FFFFE000FFFFC0003FFF0001A297CA823?79 D?FFFFC00000FFFFF80000FFFFFE0000FF FFFF00000F807F80000F801F80000F800FC0000F8007C0000F8007E0000F8003E0000F80 03E0000F8003E0000F8003E0000F8007E0000F8007C0000F800FC0000F801F80000F807F 80000FFFFF00000FFFFE00000FFFFC00000FFFFE00000F807F00000F803F00000F801F80 000F800F80000F800F80000F800F80000F800F80000F800F80000F800F80000F800F8000 0F800F87000F800F8F800F800F8F800F800F8F800F8007DF80FFF807FF00FFF803FF00FF F803FE00FFF800F80021297FA823?82 D?00FF83C003FFF3C00FFFFFC01FFFFFC03FC0FF C07F003FC07E001FC07C000FC0F8000FC0F80007C0F80007C0F80007C0FC0007C0FC0000 007E0000007F8000003FF000001FFF00000FFFF00007FFFC0001FFFF00001FFF800001FF C000001FC000000FE0000007E0000003F0000003F0780001F0F80001F0F80001F0F80001 F0F80003F0FC0003E0FE0007E0FF000FC0FFE03FC0FFFFFF80FFFFFF00F3FFFC00F03FE0 001C297DA823?I?7FFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCF807C07CF807C07CF807C07C F807C07CF807C07CF807C07C0007C0000007C0000007C0000007C0000007C0000007C000 0007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C000 0007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C000 0007C0000007C0000007C00000FFFE0001FFFF0001FFFF0000FFFE001E297EA823?I?FF F81FFFFFF81FFFFFF81FFFFFF81FFF0F8001F00F8001F00F8001F00F8001F00F8001F00F 8001F00F8001F00F8001F00F8001F00F8001F00F8001F00F8001F00F8001F00F8001F00F 8001F00F8001F00F8001F00F8001F00F8001F00F8001F00F8001F00F8001F00F8001F00F 8001F00F8001F00F8001F00F8001F00FC003F007C003E007E007E003E007C003F00FC001 FC3F8000FFFF00007FFE00003FFC000007E00020297FA823?I?FFC003FFFFC003FFFFC0 03FFFFC003FF3C00003C3C00003C3C00003C3E00007C1E0000781E0000781E0000781E00 00781E0000781E0000781E0000781E0000780F07E0F00F0FF0F00F0FF0F00F0FF0F00F0F F0F00F1E78F00F1E78F00F1E78F0071E78E0071E78E0079C39E0079C39E007BC3DE007BC 3DE007BC3DE007B81DE003B81DC003B81DC003B81DC003B81DC003F00FC003F00FC003F0 0FC001F00F8001E0078020297FA823?87 D?FFFFE0FFFFE0FFFFE0FFFFE0F80000F80000 F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000 F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000 F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000 F80000F80000F80000F80000F80000F80000FFFFE0FFFFE0FFFFE0FFFFE0133473AD23? 91 D?FFFFE0FFFFE0FFFFE0FFFFE00003E00003E00003E00003E00003E00003E00003E0 0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 0003E0FFFFE0FFFFE0FFFFE0FFFFE013347EAD23?93 D?03FF80001FFFE0001FFFF8003F FFFC003F01FE003F007F001E001F0000001F8000000F8000000F8000001F80003FFF8001 FFFF8007FFFF801FFFFF803FF00F807F800F807E000F80FC000F80F8000F80F8000F80F8 000F80FC001F807E003F807F80FF803FFFFFFE1FFFFFFE07FFF7FE01FF81FE1F1D7D9C23 ?97 D?FFC00000FFC00000FFC00000FFC0000007C0000007C0000007C0000007C0000007 C0000007C0000007C0000007C0000007C3F80007CFFF0007FFFF8007FFFFE007FE0FE007 F803F007F001F807E000F807E000FC07C0007C07C0007E07C0003E07C0003E07C0003E07 C0003E07C0003E07C0003E07C0003E07C0007E07E0007C07E000FC07F000F807F001F807 F807F007FE0FE007FFFFC007FFFF8007CFFE0003C3F8001F297FA823?I?003FF80000FF FE0003FFFE0007FFFF000FE03F001F803F003F001E003E0000007E0000007C000000FC00 0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000FC0000007C00 00007E0000003E000F803F000F801F801F800FE07F8007FFFF0003FFFE0000FFFC00003F E000191D7B9C23?I?0000FFC00000FFC00000FFC00000FFC0000007C0000007C0000007 C0000007C0000007C0000007C0000007C0000007C0003F87C000FFE7C003FFFFC007FFFF C00FE0FFC01FC03FC03F001FC03E000FC07E000FC07C0007C0FC0007C0F80007C0F80007 C0F80007C0F80007C0F80007C0F80007C0F80007C0FC0007C07C000FC07E000FC03E001F C03F003FC01F807FC00FE0FFC00FFFFFFE03FFF7FE01FFE7FE003F87FE1F297EA823?I? 003FC00000FFF80003FFFE0007FFFF000FF07F001FC01F803F800FC03F0007C07E0007C0 7C0007E0FC0003E0F80003E0FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0F8000000F8000000 7C0000007C0000007E0000003F0003E03F8003E01FC007E00FF01FE007FFFFC001FFFF80 007FFE00001FF8001B1D7D9C23?I?0000FF000003FFC00007FFE0000FFFE0001FC7E000 3F07E0003E03C0003E0000003E0000003E0000003E0000003E00007FFFFFC0FFFFFFC0FF FFFFC0FFFFFFC0003E0000003E0000003E0000003E0000003E0000003E0000003E000000 3E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E000000 3E0000003E0000003E0000003E0000003E00003FFFFE007FFFFF007FFFFF003FFFFE001B 297EA823?I?007F83F801FFEFFC03FFFFFE07FFFFFE0FE1FE3E1F807E3C1F003E003F00 3F003E001F003E001F003E001F003E001F003E001F003F003F001F003E001F807E000FE1 FC000FFFF8001FFFF0001FFFE0001E7F80001E0000001E0000001E0000001F0000000FFF FC000FFFFF801FFFFFC03FFFFFF03F0007F07C0001F878000078F800007CF000003CF000 003CF000003CF000003CF800007C7C0000F87F0003F83FE01FF01FFFFFE007FFFF8001FF FE00003FF0001F2D7E9C23?I?FFC00000FFC00000FFC00000FFC0000007C0000007C000 0007C0000007C0000007C0000007C0000007C0000007C0000007C1FC0007C7FF0007DFFF 8007FFFFC007FF0FC007FC07E007F803E007F003E007E003E007E003E007C003E007C003 E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C003 E007C003E007C003E007C003E007C003E0FFFE1FFFFFFE3FFFFFFE3FFFFFFE1FFF20297F A823?I?003800007C0000FE0000FE0000FE00007C000038000000000000000000000000 000000000000007FFE00FFFE00FFFE007FFE00003E00003E00003E00003E00003E00003E 00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E 00003E00003E00003E00FFFFFFFFFFFFFFFFFFFFFFFF182A7AA923?I?0000E00001F000 03F80003F80003F80001F00000E000000000000000000000000000000000000003FFF807 FFF807FFF803FFF80000F80000F80000F80000F80000F80000F80000F80000F80000F800 00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800 00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80001F83001F0FC 03F0FC07E0FC0FE0FFFFC07FFF803FFF000FFC0015397DA923?I?7FC00000FFC00000FF C000007FC0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003 C0000003C0FFFC03C1FFFC03C1FFFC03C0FFFC03C01F8003C03F0003C07E0003C0FC0003 C1F80003C3F00003C7E00003CFC00003DFE00003FFE00003FFF00003FCF80003F8FC0003 F07C0003E03E0003C01F0003C01F8003C00F8003C007C003C003E003C003F07FFE0FFFFF FF1FFFFFFF1FFF7FFE0FFF20297FA823?I?7FFF0000FFFF0000FFFF00007FFF0000001F 0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F 0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F 0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F 0000001F0000001F0000001F0000001F0000001F00007FFFFFC0FFFFFFE0FFFFFFE07FFF FFC01B297CA823?I?7F1F01F000FF7FC7FC00FFFFEFFE007FFFFFFE000FF1FF1F000FE0 FE0F000FC0FC0F000F80F80F000F80F80F000F00F00F000F00F00F000F00F00F000F00F0 0F000F00F00F000F00F00F000F00F00F000F00F00F000F00F00F000F00F00F000F00F00F 000F00F00F000F00F00F000F00F00F000F00F00F000F00F00F007FE3FE3FE0FFF3FF3FF0 FFF3FF3FF07FE3FE3FE0241D819C23?I?FFC1FC00FFC7FF00FFDFFF80FFFFFFC007FF0F C007FC07E007F803E007F003E007E003E007E003E007C003E007C003E007C003E007C003 E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C003 E007C003E007C003E0FFFE1FFFFFFE3FFFFFFE3FFFFFFE1FFF201D7F9C23?I?003F0000 01FFE00003FFF00007FFF8000FE1FC001F807E003F003F003E001F007C000F807C000F80 F80007C0F80007C0F80007C0F80007C0F80007C0F80007C0F80007C0F80007C0FC000FC0 7C000F807E001F803E001F003F003F001F807E000FE1FC0007FFF80003FFF00001FFE000 003F00001A1D7C9C23?I?FFC3F800FFCFFF00FFFFFF80FFFFFFE007FE0FE007F803F007 F001F807E000F807E000FC07C0007C07C0007E07C0003E07C0003E07C0003E07C0003E07 C0003E07C0003E07C0003E07C0007E07E0007C07E000FC07F000F807F001F807F807F007 FE0FE007FFFFC007FFFF8007CFFE0007C3F80007C0000007C0000007C0000007C0000007 C0000007C0000007C0000007C0000007C0000007C0000007C00000FFFE0000FFFE0000FF FE0000FFFE00001F2C7F9C23?I?7FF80FE0FFF87FF8FFF8FFFC7FFBFFFC00FFF8FC00FF E0FC00FF807800FF000000FF000000FE000000FC000000FC000000FC000000F8000000F8 000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8 000000F800007FFFFC00FFFFFE00FFFFFE007FFFFC001E1D7E9C23?114 D?01FF9E0FFFFE3FFFFE7FFFFE7F01FEF8007EF0003EF0003EF0003EF8003E7E00007FF0 003FFF801FFFE003FFF8003FFC0001FE00003E78001FF8000FF8000FFC000FFC001FFE00 3EFF80FEFFFFFCFFFFF8F7FFF0F0FF80181D7B9C23?I?0078000000F8000000F8000000 F8000000F8000000F8000000F8000000F800007FFFFFC0FFFFFFC0FFFFFFC0FFFFFFC000 F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000 F8000000F8000000F8000000F8000000F8000000F803E000F803E000F803E000F803E000 F803E000FC07E0007E0FC0007FFFC0003FFF80001FFE000007F8001B257EA423?I?FFC0 7FE0FFC07FE0FFC07FE0FFC07FE007C003E007C003E007C003E007C003E007C003E007C0 03E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C0 03E007C003E007C003E007C007E007C007E007C00FE007F03FE003FFFFFF01FFFFFF00FF FBFF003FE3FF201D7F9C23?I?FFF03FFCFFF03FFCFFF03FFCFFF03FFC0F0003C00F8007 C0078007800780078007C00F8003C00F0003C00F0003E01F0001E01E0001E01E0001F03E 0000F03C0000F03C0000F87C000078780000787800007CF800003CF000003CF000003FF0 00001FE000001FE000001FE000000FC000000780001E1D7E9C23?I?7FF81FFEFFF81FFF FFF81FFF7FF81FFE1E0000781F0000F80F0000F00F0000F00F0000F00F0000F00F0000F0 0F8001F00783C1E00787E1E00787E1E00787E1E0078FF1E0038E71C003CE73C003CE73C0 03DE7BC003DE7BC003DE7BC001DC3B8001FC3F8001FC3F8001F81F8001F81F8000F00F00 201D7F9C23?I?7FF87FF8FFF8FFF8FFF8FFF87FF87FF803C01F0003E03E0001F03C0000 F87C000078F800007CF000003FE000001FE000000FC000000F800000078000000FC00000 1FE000003DE000003CF0000078780000F07C0001F03C0001E01E0003C01F0007C00F80FF F03FFCFFF87FFCFFF87FFCFFF03FFC1E1D7E9C23?I?FFF03FFCFFF03FFCFFF03FFCFFF0 3FFC0F8003C0078007C00780078007C0078003C00F8003C00F0001E00F0001E01F0001F0 1E0000F01E0000F01E0000F83C0000783C0000783C00003C7800003C7800003C7800001E 7000001EF000000EF000000FE000000FE0000007E0000007C0000007C0000007C0000007 800000078000000F8000000F0000000F0000001F00003C1E00007E3E00007E3C00007CFC 00007FF800003FF000001FE000000F8000001E2C7E9C23?I?3FFFFFF07FFFFFF87FFFFF F87FFFFFF87C0007F07C000FE07C001FC07C003F8000007F000000FE000001FC000003F8 000007F000000FE000001FC000003F8000007F000000FE000001FC000003F8000007F000 F80FE000F81FC000F83F8000F87F0000F8FFFFFFF8FFFFFFF8FFFFFFF87FFFFFF81D1D7E 9C23?I?00003FC00000FFC00003FFC00007FFC0000FF000001FC000001F8000001F0000 001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000 001F0000001F0000001F0000001F0000003F0000007F000001FE0000FFFC0000FFF80000 FFF80000FFFC000001FE0000007F0000003F0000001F0000001F0000001F0000001F0000 001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000 001F0000001F8000001FC000000FF0000007FFC00003FFC00000FFC000003FC01A347CAD 23?I?7F000000FFE00000FFF80000FFFC000001FE0000007F0000003F0000001F000000 1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F000000 1F0000001F0000001F0000001F0000001F8000001FC000000FF0000007FFC00003FFC000 03FFC00007FFC0000FF000001FC000001F8000001F0000001F0000001F0000001F000000 1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F000000 1F0000003F0000007F000001FE0000FFFC0000FFF80000FFE000007F0000001A347CAD23 ?125 D E /Fe 2 3 df?FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF0FFFF FFFFFFFFFFF03C04789A4D?0 D?700000000007F8000000000FFC000000001F7E000000 003F3F000000007E1F80000000FC0FC0000001F807E0000003F003F0000007E001F80000 0FC000FC00001F80007E00003F00003F00007E00001F8000FC00000FC001F8000007E003 F0000003F007E0000001F80FC0000000FC1F800000007E3F000000003F7E000000001FFC 000000000FF80000000007F00000000007F0000000000FF8000000001FFC000000003F7E 000000007E3F00000000FC1F80000001F80FC0000003F007E0000007E003F000000FC001 F800001F8000FC00003F00007E00007E00003F0000FC00001F8001F800000FC003F00000 07E007E0000003F00FC0000001F81F80000000FC3F000000007E7E000000003FFC000000 001FF8000000000F700000000007303072B04D?2 D E /Ff 74[42 65[32 115[{ TeXBase1Encoding ReEncodeFont }2 83.333336 /Times-Italic rf /Fg 256[{}0 83.333336 /Symbol rf /Fh 133[37 42 42 1[42 42 23 32 28 1[42 42 42 65 23 2[23 42 42 1[37 42 37 42 37 12[51 46 55 1[46 2[74 51 60 32 28 4[60 1[55 60 8[42 42 42 42 42 42 42 42 42 23 21 28 21 2[28 28 40[{ TeXBase1Encoding ReEncodeFont }48 83.333336 /Times-Roman rf /Fi 206[31 49[{ TeXBase1Encoding ReEncodeFont }1 61.666618 /Times-Roman rf /Fj 206[37 49[{ TeXBase1Encoding ReEncodeFont }1 75.000000 /Times-Roman rf /Fk 8 113 df?00000F0000003F8000007F800000FF800001FF000003FE000007F800 000FF000001FE000003FC000007F800000FF000000FE000001FC000003FC000003F80000 07F0000007F000000FE000000FE000001FC000001FC000001F8000003F8000003F800000 3F0000007F0000007F0000007E0000007E0000007E000000FE000000FE000000FC000000 FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000 FC000000FE000000FE0000007E0000007E0000007E0000007F0000007F0000003F000000 3F8000003F8000001F8000001FC000001FC000000FE000000FE0000007F0000007F00000 03F8000003FC000001FC000000FE000000FF0000007F8000003FC000001FE000000FF000 0007F8000003FE000001FF000000FF8000007F8000003F8000000F00194D6FC433?40 D?78000000FE000000FF000000FF8000007FC000003FE000000FF0000007F8000003FC00 0001FE000000FF0000007F8000003F8000001FC000001FE000000FE0000007F0000007F0 000003F8000003F8000001FC000001FC000000FC000000FE000000FE0000007E0000007F 0000007F0000003F0000003F0000003F0000003F8000003F8000001F8000001F8000001F 8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000003F 8000003F8000003F0000003F0000003F0000007F0000007F0000007E000000FE000000FE 000000FC000001FC000001FC000003F8000003F8000007F0000007F000000FE000001FE0 00001FC000003F8000007F800000FF000001FE000003FC000007F800000FF000003FE000 007FC00000FF800000FF000000FE00000078000000194D78C433?I?000000FFF0000000 01FFF800000001FFF800000001FFF800000001FFF800000000FFF80000000001F8000000 0001F80000000001F80000000001F80000000001F80000000001F80000000001F8000000 0001F80000000001F80000000001F80000000001F80000000001F8000003FE01F800001F FFC1F800003FFFF1F80000FFFFF9F80001FFFFFDF80003FFFFFFF80007FF83FFF8000FFC 007FF8000FF0003FF8001FE0000FF8003FC0000FF8003F800007F8007F800003F8007F00 0003F8007F000001F8007E000001F800FE000001F800FE000001F800FC000001F800FC00 0001F800FC000001F800FC000001F800FC000001F800FC000001F800FC000001F800FE00 0001F800FE000003F8007E000003F8007F000003F8007F000007F8007F800007F8003F80 000FF8003FC0001FF8001FE0001FF8001FF0007FF8000FFC00FFF80007FF07FFF80003FF FFFDFFF001FFFFF9FFF800FFFFF1FFF8007FFFE1FFF8001FFF81FFF80007FC00FFF02D3D 7CBC33?100 D?0000FF80000007FFF000001FFFFE00007FFFFF0000FFFFFF8001FFFFFF C003FF80FFE007FE001FF00FF8000FF01FF00007F81FE00003F83FC00001FC3F800001FC 7F000000FC7F000000FE7E000000FEFE0000007EFE0000007EFFFFFFFFFEFFFFFFFFFEFF FFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFCFC00000000FE00000000FE000000007E00 0000007F000000007F000000003F8000003C3FC000007E1FE000007E0FF00000FE0FFC00 01FE07FE0007FC03FFC01FFC01FFFFFFF800FFFFFFF0003FFFFFE0001FFFFF800003FFFE 0000007FF000272B7BAA33?I?7FFFF800007FFFFC0000FFFFFC0000FFFFFC00007FFFFC 00007FFFFC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00 000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000 0000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC000000 00FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000 FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC 00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00 000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000 7FFFFFFFF87FFFFFFFF8FFFFFFFFFCFFFFFFFFFC7FFFFFFFF87FFFFFFFF8263D7ABC33? 108 D?7FF807FE0000FFFC1FFF8000FFFC7FFFC000FFFCFFFFE000FFFDFFFFF0007FFFFF FFF80000FFFE0FF80000FFF003F80000FFE001FC0000FF8001FC0000FF8000FC0000FF00 00FC0000FF0000FC0000FE0000FC0000FE0000FC0000FC0000FC0000FC0000FC0000FC00 00FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00 00FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00 00FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00 00FC0000FC0000FC007FFFF83FFFF8FFFFFC3FFFFCFFFFFC7FFFFCFFFFFC7FFFFCFFFFFC 3FFFFC7FFFF83FFFF82E2B7EAA33?110 D?0001FE0000000FFFC000003FFFF000007FFF F80001FFFFFE0003FFFFFF0007FF03FF8007F8007F800FF0003FC01FE0001FE01FC0000F E03F800007F03F000003F07F000003F87E000001F87E000001F87E000001F8FC000000FC FC000000FCFC000000FCFC000000FCFC000000FCFC000000FCFC000000FCFC000000FCFE 000001FC7E000001F87E000001F87F000003F87F000003F83F800007F03F800007F01FC0 000FE01FE0001FE00FF0003FC007FC00FF8007FF03FF8003FFFFFF0001FFFFFE00007FFF F800003FFFF000000FFFC0000001FE0000262B7AAA33?I?7FF803FE0000FFFC1FFF8000 FFFC7FFFE000FFFCFFFFF000FFFDFFFFF8007FFFFFFFFC0000FFFE0FFE0000FFF003FF00 00FFE000FF8000FF80007F8000FF80003FC000FF00001FC000FE00001FE000FE00000FE0 00FC00000FE000FC000007E000FC000007F000FC000007F000FC000003F000FC000003F0 00FC000003F000FC000003F000FC000003F000FC000003F000FC000003F000FC000007F0 00FC000007F000FE000007E000FE00000FE000FE00000FE000FF00001FC000FF00001FC0 00FF80003FC000FFC0007F8000FFE000FF0000FFF003FF0000FFFC1FFE0000FFFFFFFC00 00FDFFFFF80000FCFFFFF00000FC7FFFC00000FC1FFF800000FC07FC000000FC00000000 00FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC00000000 00FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC00000000 00FC0000000000FC0000000000FC000000007FFFF8000000FFFFFC000000FFFFFC000000 FFFFFC000000FFFFFC0000007FFFF80000002C417EAA33?I E /Fl 17 119 df?FFFFFFFFFFFFFFFF080877871B?46 D?0000007FF0000000000003FFFE0000 0000001FFFFFC0000000007FFFFFF000000000FFFFFFF800000003FFFFFFFE00000007FF C01FFF0000000FFE0003FF8000001FF80000FFC000003FF000007FE000007FE000003FF0 0000FFC000001FF80001FF8000000FFC0001FF00000007FC0003FE00000003FE0007FC00 000001FF0007FC00000001FF000FF800000000FF800FF0000000007F801FF0000000007F C01FF0000000007FC03FE0000000003FE03FE0000000003FE03FC0000000001FE03FC000 0000001FE07FC0000000001FF07FC0000000001FF07FC0000000001FF07F80000000000F F0FF80000000000FF8FF80000000000FF8FF80000000000FF8FF80000000000FF8FF8000 0000000FF8FF80000000000FF8FF80000000000FF8FF80000000000FF8FF80000000000F F8FF80000000000FF8FF80000000000FF8FF80000000000FF8FFC0000000001FF87FC000 0000001FF07FC0000000001FF07FC0000000001FF07FC0000000001FF07FE0000000003F F03FE0000000003FE03FE0000000003FE03FF0000000007FE01FF0000000007FC01FF800 000000FFC00FF800000000FF800FFC00000001FF8007FC00000001FF0007FE00000003FF 0003FE00000003FE0003FF00000007FE0001FF8000000FFC0000FFC000001FF800007FE0 00003FF000003FF000007FE000001FFC0001FFC000000FFF0007FF80000007FFE03FFF00 000003FFFFFFFE00000000FFFFFFF8000000007FFFFFF0000000001FFFFFC00000000003 FFFE0000000000007FF00000003D477BC548?79 D?FFFFFFF8000000FFFFFFFF800000FF FFFFFFF00000FFFFFFFFFC0000FFFFFFFFFE0000FFFFFFFFFF8000FF80000FFFC000FF80 0001FFE000FF8000007FF000FF8000001FF800FF8000000FFC00FF80000007FC00FF8000 0003FE00FF80000003FE00FF80000001FE00FF80000001FF00FF80000001FF00FF800000 00FF00FF80000000FF00FF80000000FF00FF80000001FF00FF80000001FF00FF80000001 FE00FF80000003FE00FF80000003FE00FF80000007FC00FF8000000FFC00FF8000001FF8 00FF8000007FF000FF800001FFE000FF80000FFFC000FFFFFFFFFF8000FFFFFFFFFE0000 FFFFFFFFFC0000FFFFFFFFF00000FFFFFFFF800000FFFFFFFF000000FF8000FF000000FF 8000FF800000FF80007F800000FF80007FC00000FF80003FC00000FF80003FE00000FF80 001FF00000FF80001FF00000FF80000FF80000FF800007F80000FF800007FC0000FF8000 03FC0000FF800003FE0000FF800001FE0000FF800001FF0000FF800000FF8000FF800000 FF8000FF8000007FC000FF8000003FC000FF8000003FE000FF8000001FE000FF8000001F F000FF8000000FF800FF8000000FF800FF80000007FC00FF80000007FC00FF80000003FE 00FF80000001FE00FF80000001FF00FF80000000FF80FF80000000FF80FF800000007FC0 324577C43F?82 D?FF800000007F80FF800000007F80FF800000007F80FF800000007F80 FF800000007F80FF800000007F80FF800000007F80FF800000007F80FF800000007F80FF 800000007F80FF800000007F80FF800000007F80FF800000007F80FF800000007F80FF80 0000007F80FF800000007F80FF800000007F80FF800000007F80FF800000007F80FF8000 00007F80FF800000007F80FF800000007F80FF800000007F80FF800000007F80FF800000 007F80FF800000007F80FF800000007F80FF800000007F80FF800000007F80FF80000000 7F80FF800000007F80FF800000007F80FF800000007F80FF800000007F80FF800000007F 80FF800000007F80FF800000007F80FF800000007F80FF800000007F80FF800000007F80 FF800000007F80FF800000007F80FF800000007F80FF800000007F80FF800000007F80FF 800000007F80FF800000007F80FF800000007F80FF800000007F80FF800000007F80FF80 0000007F807FC0000000FF007FC0000000FF007FC0000000FF003FE0000001FE003FE000 0001FE003FF0000003FE001FF0000003FC000FF8000007F8000FFC00000FF80007FE0000 1FF00003FF00007FE00001FFC000FFC00000FFF807FF8000007FFFFFFF0000003FFFFFFE 0000000FFFFFF800000003FFFFF000000000FFFF80000000000FFC000000314678C442? 85 D?000FFE000000FFFFC00003FFFFF0000FFFFFF8001FFFFFFC001FFFFFFE001FF807 FF001FC001FF801F0000FF801C00007FC01000007FC00000003FC00000003FE00000001F E00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE0 0000FFFFE0000FFFFFE0007FFFFFE001FFFFFFE007FFFFFFE00FFFF01FE01FFF001FE03F F8001FE07FE0001FE07FC0001FE0FF80001FE0FF00001FE0FF00001FE0FF00001FE0FF00 001FE0FF80003FE0FF80007FE0FFC000FFE07FE001FFE07FF80FFFE03FFFFFFFE03FFFFF FFE01FFFFFDFE00FFFFF1FE007FFFC1FE001FF800000232F7CAD2F?97 D?FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000 FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF 00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00 000000FF00000000FF00000000FF007FC000FF03FFF800FF0FFFFC00FF3FFFFF00FFFFFF FF80FFFFFFFFC0FFFE07FFC0FFF801FFE0FFE0007FF0FFC0003FF0FF80001FF8FF00000F F8FF00000FF8FF000007FCFF000007FCFF000003FCFF000003FCFF000003FEFF000001FE FF000001FEFF000001FEFF000001FEFF000001FEFF000001FEFF000001FEFF000001FEFF 000001FEFF000001FEFF000003FEFF000003FCFF000003FCFF000007FCFF000007FCFF00 000FF8FF80001FF8FF80001FF0FFC0003FF0FFE000FFE0FFF001FFC0FFFC0FFFC0FFFFFF FF80FFFFFFFF00FF3FFFFE00FF1FFFF800FF07FFE0000000FF8000274679C432?I?0000 FFF0000007FFFE00001FFFFF80003FFFFFE000FFFFFFF001FFFFFFF003FFC03FF007FF00 07F007FC0001E00FF80000601FF00000001FF00000003FE00000003FC00000003FC00000 007F800000007F800000007F80000000FF80000000FF00000000FF00000000FF00000000 FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF 800000007F800000007F800000007FC00000003FC00000003FE00000001FE00000301FF0 0000700FF80000F00FFC0003F007FF000FF003FFC07FF001FFFFFFF000FFFFFFE0007FFF FFC0001FFFFF000007FFFC000000FFC000242F7DAD2B?I?0001FE00000007FFC000001F FFF000007FFFF80000FFFFFC0001FFFFFE0003FF03FF0007FC00FF000FF8007F800FF000 3F801FE0001FC01FE0000FC03FC0000FE03F800007E07F800007E07F800007E07F000007 E07F000003F0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0 FE00000000FE00000000FE00000000FF00000000FF000000007F000000007F000000007F 800000003F800000003FC00000003FC00000001FE00000001FF00000300FF800007007FC 0001F003FE0007F003FF807FF001FFFFFFF000FFFFFFE0003FFFFFC0001FFFFF000007FF FC000000FFC000242F7DAD2B?101 D?FF80FF80FF80FF80FF80FF80FF80FF80FF800000 0000000000000000000000000000000000000000000000000000000000007F807F807F80 7F807F807F807F807F807F807F807F807F807F807F807F807F807F807F807F807F807F80 7F807F807F807F807F807F807F807F807F807F807F807F807F807F807F807F807F807F80 7F807F807F807F807F8009457AC417?105 D?0001FF0001FF0001FF0001FF0001FF0001 FF0001FF0001FF0001FF0000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000FF0000FF0000FF0000FF0000 FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 FF0000FF0001FF6003FE7807FE7F3FFCFFFFFCFFFFF8FFFFF07FFFE01FFFC001FF001859 86C41A?I?00007FC0000FF800FF03FFF8007FFF00FF0FFFFE01FFFFC0FF1FFFFF03FFFF E0FF7FFFFF8FFFFFF0FFFFFFFF9FFFFFF0FFFE07FFDFC0FFF8FFFC00FFFF801FF8FFF000 7FFE000FF8FFE0003FFC0007FCFFE0003FFC0007FCFFC0003FF80007FCFFC0001FF80003 FCFF80001FF00003FCFF80001FF00003FCFF80001FF00003FCFF00001FE00003FCFF0000 1FE00003FCFF00001FE00003FCFF00001FE00003FCFF00001FE00003FCFF00001FE00003 FCFF00001FE00003FCFF00001FE00003FCFF00001FE00003FCFF00001FE00003FCFF0000 1FE00003FCFF00001FE00003FCFF00001FE00003FCFF00001FE00003FCFF00001FE00003 FCFF00001FE00003FCFF00001FE00003FCFF00001FE00003FCFF00001FE00003FCFF0000 1FE00003FCFF00001FE00003FCFF00001FE00003FCFF00001FE00003FCFF00001FE00003 FCFF00001FE00003FCFF00001FE00003FCFF00001FE00003FCFF00001FE00003FCFF0000 1FE00003FC3E2D79AC4D?109 D?00007FC000FF03FFF800FF0FFFFE00FF1FFFFF00FF7F FFFF80FFFFFFFF80FFFE07FFC0FFFC00FFC0FFF0007FC0FFE0003FE0FFE0003FE0FFC000 3FE0FFC0001FE0FF80001FE0FF80001FE0FF80001FE0FF00001FE0FF00001FE0FF00001F E0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0 FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF 00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00 001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0232D79AC32?I?00007F800000 0003FFF00000000FFFFC0000003FFFFF0000007FFFFF800000FFFFFFC00001FFC0FFE000 03FE001FF00007FC000FF8000FF80007FC000FF00003FC001FE00001FE001FC00000FE00 3FC00000FF003F8000007F007F8000007F807F8000007F807F8000007F807F0000003F80 FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0 FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC07F8000007F807F8000007F80 7F8000007F807FC00000FF803FC00000FF003FE00001FF001FE00001FE001FF00003FE00 0FF80007FC0007FC000FF80007FE001FF80003FFC0FFF00001FFFFFFE00000FFFFFFC000 003FFFFF0000001FFFFE00000003FFF0000000007F8000002A2F7DAD31?I?00001FFE00 FFFE03FFFE0FFFFE1FFFFE3FFFFE7FFFFEFFF0FFFF80FFFF00FFFC00FFF800FFF000FFE0 00FFE000FFC000FFC000FF8000FF8000FF0000FF0000FF0000FF0000FF0000FF0000FF00 00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00 00FF0000FF0000FF0000FF0000FF0000FF0000FF0000182D79AC21?114 D?003FF80001FFFF0007FFFFE00FFFFFF01FFFFFF83FFFFFF87FE01FF87F8003F87F0000 F0FF000030FE000000FE000000FE000000FE000000FF000000FF000000FF8000007FE000 007FFC00003FFFE0003FFFFC001FFFFF000FFFFFC007FFFFE001FFFFF0007FFFF80007FF F800007FFC00000FFC000003FE000003FE000001FE000000FE000000FE000000FE000000 FE600001FE700001FE7C0003FCFF0007FCFFE01FF8FFFFFFF8FFFFFFF07FFFFFE01FFFFF C003FFFF00003FF8001F2F7DAD25?I?01FE000001FE000001FE000001FE000001FE0000 01FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE0000FFFFFFF0 FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FE000001FE000001FE000001FE0000 01FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE0000 01FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE0000 01FE000001FE000001FE000001FE000001FE000001FE000001FE000001FF000001FF0018 01FF803800FFC1FC00FFFFFC00FFFFFC007FFFFC007FFFF0003FFFC0000FFC001E3A7EB8 23?I?FF000000FFFF000000FFFF800000FF7F800001FE7F800001FE7FC00001FE3FC000 03FC3FC00003FC3FE00003FC1FE00007F81FE00007F80FF00007F00FF0000FF00FF0000F F007F8001FE007F8001FE007F8001FE003FC003FC003FC003FC003FC003FC001FE007F80 01FE007F8000FE007F0000FF00FF0000FF00FF00007F00FE00007F81FE00007F81FE0000 3F81FC00003FC1FC00003FC3FC00001FC3F800001FC3F800001FE3F800000FE7F000000F E7F0000007E7E0000007F7E0000007F7E0000003FFC0000003FFC0000003FFC0000001FF 80000001FF8000282C7EAB2D?118 D E /Fm 1 44 df?00000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000000000001E000000000FFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFC0FFFFFFFF FFFFFFFFC0FFFFFFFFFFFFFFFFC000000001E00000000000000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000000000001E00000000000000001E00000000000000001E00000000000000001 E00000000042427BB94D?43 D E /Fn 134[60 60 86 60 66 40 47 53 1[66 60 66 100 33 2[33 66 60 40 53 66 53 66 60 12[80 66 2[73 93 1[113 3[47 4[86 86 1[86 12[60 60 60 60 2[30 40 2[60 42[{ TeXBase1Encoding ReEncodeFont }38 119.999947 /Times-Bold rf /Fo 1 59 df?1F003F807FC0FFE0FFE0FFE0FFE0FFE07F C03F801F000B0B788A1C?58 D E /Fp 256[{}0 100.000000 /Symbol rf /Fq 74[50 59[44 1[66 44 50 28 39 39 1[50 50 50 72 28 44 1[28 50 50 28 44 50 44 50 50 11[72 55 50 61 2[72 1[83 55 7[72 66 61 61 6[33 10[28 25 46[{ TeXBase1Encoding ReEncodeFont } 37 100.000000 /Times-Italic rf /Fr 107[44 44 24[44 50 50 72 50 50 28 39 33 50 50 50 50 78 28 50 28 28 50 50 33 44 50 44 50 44 3[33 1[33 3[94 72 72 61 55 66 1[55 72 72 89 61 72 39 33 72 72 55 61 72 66 66 72 5[28 28 50 50 50 50 50 50 50 50 50 50 28 25 33 25 56 50 33 33 33 1[83 3[33 29[55 55 2[{ TeXBase1Encoding ReEncodeFont }77 100.000000 /Times-Roman rf /Fs 134[72 72 104 72 80 48 56 64 1[80 72 80 120 40 80 1[40 1[72 48 64 80 64 1[72 14[104 7[72 56 5[104 1[104 10[72 72 72 72 72 72 3[48 45[{ TeXBase1Encoding ReEncodeFont }33 144.000000 /Times-Bold rf /Ft 139[30 35 40 14[40 51 45 31[66 65[{ TeXBase1Encoding ReEncodeFont }7 91.249977 /Times-Bold rf /Fu 17 120 df?1F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B0B6E8A30? 46 D?00000000F000000001F800000003F800000003F800000007F800000007F8000000 0FF00000000FF00000001FE00000001FE00000003FC00000003FC00000007F800000007F 80000000FF00000000FF00000001FE00000001FE00000001FC00000003FC00000003FC00 000007F800000007F80000000FF00000000FF00000001FE00000001FE00000003FC00000 003FC00000007F800000007F80000000FF00000000FF00000001FE00000001FE00000001 FC00000003FC00000003FC00000007F800000007F80000000FF00000000FF00000001FE0 0000001FE00000003FC00000003FC00000007F800000007F80000000FF00000000FF0000 0001FE00000001FE00000001FC00000003FC00000003FC00000007F800000007F8000000 0FF00000000FF00000001FE00000001FE00000003FC00000003FC00000007F800000007F 80000000FF00000000FF00000000FE00000000FE00000000FC000000007C000000002547 7BBE30?I?1F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F00000000000000000000 000000000000000000000000000000000000000000000000001F003F807FC0FFE0FFE0FF E0FFE0FFE07FC03F801F000B276EA630?58 D?01FFFC00000007FFFF8000001FFFFFE000 003FFFFFF000003FFFFFF800003FFFFFFC00003FC00FFE00003FC001FF00001F8000FF00 000F00003F80000000003F80000000001F80000000001F80000000001F800000007FFF80 00000FFFFF8000007FFFFF800001FFFFFF800007FFFFFF80000FFFFC1F80001FFF001F80 003FF0001F80007FC0001F8000FF00001F8000FE00001F8000FC00001F8000FC00001F80 00FC00001F8000FE00001F8000FE00003F8000FF00007F80007F8001FF80007FF01FFFC0 003FFFFFFFFF801FFFFFFFFFC00FFFFFFFFFC007FFFFCFFFC001FFFF07FFC0007FF001FF 802A277BA630?97 D?7FF800000000FFFC00000000FFFC00000000FFFC00000000FFFC00 0000007FFC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC00 00000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC00 00000000FC07FC000000FC3FFF800000FC7FFFE00000FDFFFFF00000FFFFFFF80000FFFF FFFC0000FFFC1FFE0000FFF003FF0000FFC000FF0000FF80007F8000FF00003F8000FE00 003FC000FE00001FC000FC00000FC000FC00000FE000FC00000FE000FC000007E000FC00 0007E000FC000007E000FC000007E000FC000007E000FC000007E000FC000007E000FC00 000FE000FE00000FE000FE00001FC000FE00001FC000FF00003FC000FF80003F8000FF80 007F8000FFC001FF0000FFE007FE0000FFFC1FFC0000FFFFFFF80000FFFFFFF00000FDFF FFE00000FC7FFFC00000FC3FFF000000780FF800002B387FB730?I?0003FFF000001FFF FE00007FFFFF0000FFFFFF8001FFFFFF8003FFFFFF8007FF007F800FF8007F801FF0003F 001FC0001E003F800000007F800000007F000000007F00000000FE00000000FE00000000 FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FE00000000FE 00000000FE000000007F000000007F000000007F800007803FC0000FC01FE0000FC01FF0 001FC00FFC003FC007FF81FF8003FFFFFF0001FFFFFE0000FFFFFC00007FFFF800001FFF E0000003FF8000222779A630?I?7FF800000000FFFC00000000FFFC00000000FFFC0000 0000FFFC000000007FFC0000000000FC0000000000FC0000000000FC0000000000FC0000 000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000 000000FC0000000000FC07FC000000FC3FFF000000FC7FFF800000FDFFFFC00000FFFFFF E00000FFFFFFF00000FFFC1FF00000FFE007F80000FFC003F80000FF8003F80000FF0001 F80000FF0001F80000FE0001F80000FE0001F80000FC0001F80000FC0001F80000FC0001 F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001 F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001 F80000FC0001F80000FC0001F80000FC0001F80000FC0001F8007FFFF83FFFF0FFFFFC7F FFF8FFFFFC7FFFF8FFFFFC7FFFF8FFFFFC7FFFF87FFFF83FFFF02D387FB730?104 D?7FFFF00000FFFFF80000FFFFF80000FFFFF80000FFFFF800007FFFF800000001F80000 0001F800000001F800000001F800000001F800000001F800000001F800000001F8000000 01F800000001F800000001F800000001F800000001F800000001F800000001F800000001 F800000001F800000001F800000001F800000001F800000001F800000001F800000001F8 00000001F800000001F800000001F800000001F800000001F800000001F800000001F800 000001F800000001F800000001F800000001F800000001F800000001F800000001F80000 0001F800000001F800000001F800000001F800000001F800000001F800000001F800007F FFFFFFE0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF07FFFFFFFE024387AB730? 108 D?7FF807FC0000FFFC3FFF0000FFFC7FFF8000FFFDFFFFC000FFFFFFFFE0007FFFFF FFF00000FFFC1FF00000FFE007F80000FFC003F80000FF8003F80000FF0001F80000FF00 01F80000FE0001F80000FE0001F80000FC0001F80000FC0001F80000FC0001F80000FC00 01F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC00 01F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC00 01F80000FC0001F80000FC0001F80000FC0001F8007FFFF83FFFF0FFFFFC7FFFF8FFFFFC 7FFFF8FFFFFC7FFFF8FFFFFC7FFFF87FFFF83FFFF02D277FA630?110 D?0003FE0000001FFFC000007FFFF00000FFFFF80001FFFFFC0003FFFFFE0007FE03FF00 0FF800FF801FE0003FC01FC0001FC03F80000FE03F000007E07F000007F07E000003F07E 000003F0FC000001F8FC000001F8FC000001F8FC000001F8FC000001F8FC000001F8FC00 0001F8FC000001F8FE000003F87E000003F07E000003F07F000007F03F80000FE03F8000 0FE01FC0001FC01FE0003FC00FF800FF8007FE03FF0003FFFFFE0001FFFFFC0000FFFFF8 00007FFFF000001FFFC0000003FE000025277BA630?I?7FF807FC0000FFFC3FFF8000FF FC7FFFE000FFFDFFFFF000FFFFFFFFF8007FFFFFFFFC0000FFFC1FFE0000FFF003FF0000 FFC000FF0000FF80007F8000FF00003F8000FE00003FC000FE00001FC000FC00000FC000 FC00000FE000FC00000FE000FC000007E000FC000007E000FC000007E000FC000007E000 FC000007E000FC000007E000FC000007E000FC00000FE000FE00000FE000FE00001FC000 FE00001FC000FF00003FC000FF80003F8000FF80007F8000FFC001FF0000FFE007FE0000 FFFC1FFC0000FFFFFFF80000FFFFFFF00000FDFFFFE00000FC7FFFC00000FC3FFF000000 FC0FF8000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000 FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000 FC0000000000FC0000000000FC000000007FFFF8000000FFFFFC000000FFFFFC000000FF FFFC000000FFFFFC0000007FFFF80000002B3B7FA630?I?7FFF001FF800FFFF80FFFE00 FFFF83FFFF00FFFF87FFFF80FFFF8FFFFF807FFF9FFFFF80001FBFF87F80001FFFC07F80 001FFF003F00001FFE001E00001FFC000000001FF8000000001FF0000000001FE0000000 001FE0000000001FC0000000001FC0000000001FC0000000001F80000000001F80000000 001F80000000001F80000000001F80000000001F80000000001F80000000001F80000000 001F80000000001F80000000001F80000000001F80000000001F80000000001F80000000 001F800000007FFFFFFC0000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000 7FFFFFFC000029277DA630?114 D?003FFE0E0003FFFFDF0007FFFFFF001FFFFFFF003F FFFFFF007FFFFFFF007FF007FF00FF8000FF00FE00007F00FC00003F00FC00003F00FC00 003F00FE00001E00FF000000007FE00000003FFF0000001FFFFC00000FFFFFC00003FFFF F00000FFFFFC000007FFFE0000001FFF00000001FF807800007F80FC00001FC0FC00001F C0FE00000FC0FE00000FC0FF00000FC0FF00001FC0FF80003FC0FFE0007F80FFFC03FF80 FFFFFFFF00FFFFFFFE00FFFFFFFC00FDFFFFF800F87FFFE000700FFF0000222779A630? I?0007800000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000 000FC00000000FC00000000FC00000000FC000007FFFFFFFE0FFFFFFFFF0FFFFFFFFF0FF FFFFFFF0FFFFFFFFF07FFFFFFFE0000FC00000000FC00000000FC00000000FC00000000F C00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0 0000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC000 78000FC000FC000FC000FC000FC000FC000FC000FC000FE001FC000FE001FC000FF007F8 0007FC1FF80007FFFFF00003FFFFE00001FFFFC00000FFFF8000007FFE0000001FF80026 327EB130?I?7FF800FFF000FFFC01FFF800FFFC01FFF800FFFC01FFF800FFFC01FFF800 7FFC00FFF80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F800 00FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F800 00FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F800 00FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0003F800 00FC0003F80000FC0007F80000FE001FF80000FF80FFF800007FFFFFFFF0007FFFFFFFF8 003FFFFFFFF8001FFFFDFFF8000FFFF1FFF80003FF80FFF02D277FA630?I?7FFF803FFF C0FFFFC07FFFE0FFFFC07FFFE0FFFFC07FFFE0FFFFC07FFFE07FFF803FFFC001F00001F0 0001F00001F00001F80003F00000F80003E00000F80003E000007C0007C000007C0007C0 00007C0007C000003E000F8000003E000F8000003E000F8000001F001F0000001F001F00 00001F001F0000000F803E0000000F803E0000000F803E00000007C07C00000007C07C00 000007E0FC00000003E0F800000003E0F800000003F1F800000001F1F000000001F1F000 000001FBF000000000FBE000000000FBE000000000FFE0000000007FC0000000007FC000 0000007FC0000000001F0000002B277EA630?I?7FFF800FFFF0FFFFC01FFFF8FFFFC01F FFF8FFFFC01FFFF8FFFFC01FFFF87FFF800FFFF007C000001F0007C000001F0007E00000 3F0003E000003E0003E000003E0003E000003E0003E000003E0003E000003E0003F00000 7E0001F000007C0001F00FC07C0001F01FE07C0001F03FF07C0001F03FF07C0001F03FF0 7C0000F87FF0F80000F87DF8F80000F87CF8F80000F87CF8F80000F8FCF8F8000078FCFC F0000078FCFCF000007CF87CF000007DF87CF000007DF87DF000007DF07DF000003DF03D E000003FF03FE000003FF03FE000003FE01FE000003FE01FE000001FE01FC000000FC00F 80002D277FA630?I E /Fv 87[30 16[91 45 27[40 45 45 66 45 45 25 35 30 1[45 45 45 71 25 45 25 25 45 45 30 40 45 40 45 40 3[30 1[30 56 66 1[86 66 66 56 51 61 1[51 66 66 81 56 66 35 30 66 66 51 56 66 61 61 66 84 5[25 45 45 45 45 45 45 45 45 45 45 25 23 30 23 51 1[30 30 30 5[30 30[51 2[{ TeXBase1Encoding ReEncodeFont }76 91.249977 /Times-Roman rf /Fw 136[86 60 60 33 47 40 1[60 60 60 93 33 1[33 33 60 1[40 53 60 53 60 53 10[86 86 73 66 80 3[86 106 1[86 47 1[86 2[73 86 80 80 86 18[30 1[30 44[{ TeXBase1Encoding ReEncodeFont }37 119.999947 /Times-Roman rf /Fx 137[86 86 48 67 57 2[86 86 134 48 2[48 86 86 1[76 86 76 1[76 9[163 4[115 1[96 2[153 3[57 7[124 19[57 45[{ TeXBase1Encoding ReEncodeFont }23 172.833374 /Times-Roman rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%PaperSize: A4 %%EndSetup %%Page: 1 1 1 0 bop 458 506 a Fx(W)-7 b(ide-Area)45 b(P)m(arallel)f(Programming)g (using)g(the)762 714 y(Remote)g(Method)f(In)-7 b(v)m(ocation)45 b(Model)747 1013 y Fw(Rob)29 b(v)m(an)g(Nieuwpoort)131 b(Jason)29 b(Maassen)130 b(Henri)30 b(E.)f(Bal)1192 1162 y(Thilo)h(Kielmann)131 b(Ronald)30 b(V)-13 b(eldema)50 1406 y(Department)30 b(of)g(Computer)f(Science,)h(Vrije)h(Uni)m(v)n (ersiteit,)f(Amsterdam,)g(The)g(Netherlands)336 1556 y Fv(rob@cs.vu.nl)119 b(jason@cs.vu.nl)h(bal@cs.vu.nl)f (kielmann@cs.vu.nl)h(rv)o(eldema@cs.vu.nl)1334 1705 y Fu(http://www.cs.vu.nl/alb)o(atro)o(ss/)1781 2026 y Ft(Abstract)380 2196 y Fv(Ja)n(v)n(a')-5 b(s)38 b(support)g(for)e(parallel)i(and)e (distrib)n(uted)k(processing)f(mak)o(es)d(the)h(language)h(attracti)n (v)o(e)g(for)244 2309 y(metacomputing)21 b(applications,)h(such)d(as)f (parallel)i(applications)i(that)c(run)h(on)f(geographically)k(distrib)n (uted)244 2422 y(\(wide-area\))h(systems.)29 b(T)-7 b(o)20 b(obtain)j(actual)g(e)o(xperience)g(with)e(a)g(Ja)n(v)n(a-centric)k (approach)e(to)e(metacomput-)244 2535 y(ing,)27 b(we)f(ha)n(v)o(e)i(b)n (uilt)f(and)g(used)h(a)e(high-performance)31 b(wide-area)d(Ja)n(v)n(a)g (system,)f(called)h(Manta.)39 b(Manta)244 2648 y(implements)26 b(the)f(Ja)n(v)n(a)g(Remote)g(Method)g(In)l(v)n(ocation)j(\(RMI\))c (model)h(using)h(dif)n(ferent)g(communication)244 2761 y(protocols)31 b(\(acti)n(v)o(e)f(messages)g(and)f(TCP/IP\))e(for)i (dif)n(ferent)i(netw)o(orks.)46 b(The)28 b(paper)i(sho)n(ws)f(ho)n(w)f (wide-)244 2874 y(area)j(parallel)i(applications)i(can)c(be)g(e)o (xpressed)i(and)e(optimized)i(using)f(Ja)n(v)n(a)g(RMI.)d(Also,)k(it)d (presents)244 2987 y(performance)d(results)f(of)f(se)n(v)o(eral)g (applications)j(on)d(a)f(wide-area)i(system)g(consisting)h(of)e(four)g (Myrinet-)244 3100 y(based)e(clusters)h(connected)g(by)e(A)-10 b(TM)20 b(W)-11 b(ANs.)27 b(W)-7 b(e)21 b(\002nally)h(discuss)i (alternati)n(v)o(e)g(programming)g(models,)244 3213 y(namely)g(object)h (replication,)h(Ja)n(v)n(aSpaces,)g(and)e(MPI)e(for)i(Ja)n(v)n(a.)0 3552 y Fs(1)143 b(Intr)m(oduction)0 3775 y Fr(Metacomputing)37 b(is)h(an)h(interesting)f(research)i(area)f(that)g(tries)f(to)h(inte)o (grate)f(geographically)g(distrib)n(uted)0 3895 y(computing)28 b(resources)j(into)e(a)h(single)g(po)n(werful)f(system.)46 b(Man)o(y)29 b(applications)f(can)j(bene\002t)f(from)g(such)g(an)0 4016 y(inte)o(gration)d([14,)i(32)o(].)44 b(Metacomputing)27 b(systems)g(support)h(such)g(applications)g(by)h(addressing)f(issues)g (lik)o(e)0 4136 y(resource)f(allocation,)e(f)o(ault)h(tolerance,)h (security)-6 b(,)25 b(and)h(heterogeneity)-6 b(.)34 b(Most)25 b(metacomputing)g(systems)f(are)0 4257 y(language-neutral)38 b(and)h(support)e(a)i(v)n(ariety)f(of)g(programming)f(languages.)72 b(Recently)-6 b(,)41 b(interest)d(has)h(also)0 4377 y(arisen)29 b(in)f(metacomputing)f(architectures)i(that)f(are)i(centered)f(around)g (a)g(single)f(language.)43 b(This)28 b(approach)0 4497 y(admittedly)j(is)i(restricti)n(v)o(e)e(for)j(some)e(applications,)i(b) n(ut)e(also)h(has)g(man)o(y)f(adv)n(antages,)i(such)f(as)g(a)g(simpler) 0 4618 y(design)c(and)i(the)f(usage)g(of)g(a)h(single)e(type)h(system.) 46 b(In)31 b([36)o(],)h(the)e(adv)n(antages)g(of)g(a)h(Ja)n(v)n (a-centric)f(approach)0 4738 y(to)g(metacomputing)e(are)k(described,)f (including)e(support)h(for)g(code)h(mobility)-6 b(,)29 b(distrib)n(uted)g(polymorphism,)0 4858 y(distrib)n(uted)23 b(garbage)i(collection,)f(and)g(security)-6 b(.)146 4979 y(In)22 b(this)f(paper)l(,)h(we)g(describe)g(our)f(early)h(e)o (xperiences)g(in)f(b)n(uilding)f(and)h(using)g(a)h(high-performance)f (Ja)n(v)n(a-)0 5099 y(based)28 b(system)e(for)i(one)g(important)e (class)h(of)h(metacomputing)d(applications:)35 b(parallel)28 b(computing)e(on)h(geo-)0 5220 y(graphically)d(distrib)n(uted)g (resources.)32 b(Although)23 b(our)i(system)f(is)h(not)f(a)i(complete)e (metacomputing)f(en)l(viron-)0 5340 y(ment)i(yet,)h(it)g(is)f (interesting)g(for)h(se)n(v)o(eral)f(reasons.)34 b(The)26 b(system,)f(called)h Fq(Manta)p Fr(,)f(focuses)h(on)g(optimizations) 1925 5589 y(1)p eop %%Page: 2 2 2 1 bop 0 100 a Fr(to)21 b(achie)n(v)o(e)g(high)g(performance)h(with)f (Ja)n(v)n(a.)29 b(It)22 b(uses)f(a)h(nati)n(v)o(e)e(compiler)h(and)h (an)g(ef)n(\002cient,)g(light-weight)e(RMI)0 220 y(\(Remote)31 b(Method)e(In)l(v)n(ocation\))h(protocol)f(that)h(achie)n(v)o(es)g(a)g (performance)h(close)f(to)g(that)g(of)h(C-based)g(RPC)0 340 y(protocols)c([25)o(].)40 b(W)-8 b(e)28 b(ha)n(v)o(e)f(implemented) f(Manta)h(on)h(a)g(geographically)e(distrib)n(uted)g(system,)h(called)h Fq(D)m(AS)p Fr(,)0 461 y(consisting)20 b(of)h(four)h(Pentium)e (Pro/Myrinet)h(cluster)g(computers)g(connected)g(by)g(wide-area)i(A)-11 b(TM)21 b(links.)28 b(The)0 581 y(resulting)19 b(system)h(is)g(an)g (interesting)f(platform)h(for)h(studying)d(parallel)j(Ja)n(v)n(a)f (applications)f(on)h(geographically)0 702 y(distrib)n(uted)j(systems.) 146 822 y(The)f(Ja)n(v)n(a-centric)f(approach)h(achie)n(v)o(es)f(a)h (high)e(de)o(gree)i(of)g(transparenc)o(y)f(and)g(hides)g(man)o(y)g (details)g(of)g(the)0 942 y(underlying)32 b(system)h(\(e.g.,)i(dif)n (ferent)e(communication)f(substrates\))g(from)h(the)h(programmer)-5 b(.)55 b(F)o(or)34 b(se)n(v)o(eral)0 1063 y(high-performance)g (applications,)g(ho)n(we)n(v)o(er)l(,)h(the)f(huge)g(dif)n(ference)g (in)g(communication)d(speeds)j(between)0 1183 y(the)26 b(local)f(and)h(wide-area)g(netw)o(orks)f(is)h(a)g(problem.)32 b(In)26 b(our)g(D)l(AS)g(system,)f(for)h(e)o(xample,)f(a)h(Ja)n(v)n(a)f (RMI)h(o)o(v)o(er)0 1303 y(the)j(Myrinet)f(LAN)h(costs)g(about)f(40)h Fq(\265)p Fr(sec,)h(while)f(an)g(RMI)h(o)o(v)o(er)e(the)h(A)-11 b(TM)28 b(W)-12 b(AN)29 b(costs)g(se)n(v)o(eral)f(millisec-)0 1424 y(onds.)38 b(Our)28 b(Ja)n(v)n(a)f(system)f(therefore)i(e)o (xposes)f(the)g(structure)g(of)h(the)f(wide-area)i(system)d(to)h(the)g (application,)0 1544 y(so)d(applications)g(can)h(be)g(optimized)e(to)i (reduce)g(communication)e(o)o(v)o(er)h(the)h(wide-area)g(links.)146 1665 y(This)h(paper)h(is)f(based)g(on)g(our)h(earlier)g(w)o(ork)f(as)g (published)f(in)h([34].)36 b(W)-8 b(e)27 b(sho)n(w)e(ho)n(w)h (wide-area)h(parallel)0 1785 y(applications)h(can)j(be)f(e)o(xpressed)f (and)h(optimized)e(using)h(Ja)n(v)n(a)h(RMI)g(and)g(we)g(discuss)f(the) h(performance)g(of)0 1905 y(se)n(v)o(eral)i(parallel)g(Ja)n(v)n(a)h (applications)e(on)h(D)l(AS.)h(W)-8 b(e)33 b(also)f(discuss)g(some)g (shortcomings)e(of)j(the)g(Ja)n(v)n(a)f(RMI)0 2026 y(model)24 b(for)i(wide-area)g(parallel)f(computing)e(and)i(ho)n(w)f(this)h(may)f (be)i(o)o(v)o(ercome)e(by)g(adapting)h(features)g(from)0 2146 y(alternati)n(v)o(e)g(programming)g(models.)35 b(The)27 b(outline)f(of)g(the)h(paper)g(is)f(as)h(follo)n(ws.)34 b(In)27 b(Section)g(2)f(we)h(describe)0 2267 y(the)h(implementation)e (of)i(Manta)f(on)h(our)g(wide-area)h(system.)40 b(In)28 b(Section)g(3)g(we)g(describe)g(our)g(e)o(xperiences)0 2387 y(in)d(implementing)e(four)i(wide-area)i(parallel)e(applications)f (in)h(Ja)n(v)n(a)g(and)g(we)h(discuss)e(their)h(performance.)33 b(In)0 2507 y(Section)23 b(4)g(we)g(discuss)e(which)i(alternati)n(v)o (e)e(programming)g(models)h(may)h(contrib)n(ute)f(to)g(an)h(RMI-based)g (pro-)0 2628 y(gramming)g(model.)30 b(In)25 b(Section)g(5)g(we)g(look)f (at)h(related)g(w)o(ork)f(and)h(in)f(Section)h(6)g(we)g(gi)n(v)o(e)f (our)g(conclusions.)0 2967 y Fs(2)143 b(A)36 b(wide-ar)m(ea)d(parallel) i(J)n(a)l(v)o(a)f(system)0 3191 y Fr(In)21 b(this)e(section,)i(we)g (will)f(brie\003y)g(describe)h(the)f(D)l(AS)h(system)f(and)g(the)h (original)e(Manta)i(system)e(\(as)i(designed)0 3311 y(for)g(a)f(single) g(parallel)g(machine\).)29 b(Ne)o(xt,)20 b(we)h(discuss)e(ho)n(w)h(we)h (implemented)d(Manta)i(on)g(the)h(wide-area)g(D)l(AS)0 3431 y(system.)30 b(Finally)-6 b(,)23 b(we)i(compare)g(the)g (performance)g(of)g(Manta)g(and)f(the)h(Sun)g(JDK)f(on)h(the)g(D)l(AS)g (system.)0 3727 y Fn(2.1)119 b(The)30 b(wide-ar)n(ea)h(D)l(AS)f(system) 0 3914 y Fr(W)-8 b(e)25 b(belie)n(v)o(e)e(that)h(high-performance)h (metacomputing)d(applications)h(will)h(typically)f(run)i(on)f (collections)f(of)0 4035 y(parallel)h(machines)g(\(clusters)g(or)g (MPPs\),)h(rather)g(than)f(on)g(w)o(orkstations)e(at)j(random)e (geographic)h(locations.)0 4155 y(Hence,)31 b(metacomputing)d(systems)g (that)h(are)h(used)f(for)h(parallel)g(processing)e(will)h(be)h Fq(hier)o(ar)l(c)o(hically)d Fr(struc-)0 4275 y(tured.)36 b(The)26 b(D)l(AS)h(e)o(xperimentation)e(system)g(we)i(ha)n(v)o(e)f(b)n (uilt)f(re\003ects)j(this)d(basic)i(assumption,)e(as)h(sho)n(wn)f(in)0 4396 y(Figure)c(1.)29 b(It)21 b(consists)e(of)i(four)f(clusters,)h (located)f(at)h(dif)n(ferent)f(uni)n(v)o(ersities)e(in)j(The)f (Netherlands.)29 b(The)21 b(nodes)0 4516 y(within)26 b(the)h(same)g(cluster)g(are)h(connected)g(by)f(1)p Fo(:)p Fr(2)f(Gbit/sec)h(Myrinet)f([7].)39 b(The)27 b(clusters)g(are)h (connected)f(by)0 4637 y(dedicated)e(6)f(Mbit/s)g(wide-area)h(A)-11 b(TM)24 b(netw)o(orks.)146 4757 y(The)i(nodes)f(in)g(each)i(cluster)e (are)h(200)g(MHz/128)e(MByte)i(Pentium)f(Pros.)33 b(One)26 b(of)f(the)h(clusters)f(has)h(128)0 4877 y(processors,)d(the)f(other)h (clusters)f(ha)n(v)o(e)g(24)h(nodes)f(each.)31 b(The)23 b(machines)f(run)g(RedHat)i(Linux)d(v)o(ersion)h(2.0.36.)0 4998 y(The)f(Myrinet)f(netw)o(ork)g(is)h(a)g(2D)g(torus)f(and)h(the)g (wide)g(area)g(A)-11 b(TM)21 b(netw)o(ork)f(is)h(fully)f(connected.)29 b(The)21 b(system,)0 5118 y(called)k(D)l(AS,)g(is)f(more)h(fully)f (described)h(in)f([29])h(\(and)g(on)f Fq(http://www)-7 b(.cs.vu.nl/das/)11 b Fr(\).)1925 5589 y(2)p eop %%Page: 3 3 3 2 bop 1066 1654 a @beginspecial 0 @llx 0 @lly 294 @urx 275 @ury 1984 @rhi @setspecial %%BeginDocument: das.eps %Magnification: 0.50 /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -6.0 299.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit n 0 792 m 0 0 l 612 0 l 612 792 l cp clip 0.03000 0.03000 sc 7.500 slw % Polyline n 1500 6600 m 2400 6600 l 2400 9225 l 1500 9225 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 525 6600 m 1425 6600 l 1425 9225 l 525 9225 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 2475 6600 m 3375 6600 l 3375 9225 l 2475 9225 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 375 6750 m 1275 6750 l 1275 9375 l 375 9375 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 2325 6750 m 3225 6750 l 3225 9375 l 2325 9375 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 1350 6750 m 2250 6750 l 2250 9375 l 1350 9375 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 630 7200 m 525 7200 525 7320 105 arcto 4 {pop} repeat 525 7425 1020 7425 105 arcto 4 {pop} repeat 1125 7425 1125 7305 105 arcto 4 {pop} repeat 1125 7200 630 7200 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 630 6900 m 525 6900 525 7020 105 arcto 4 {pop} repeat 525 7125 1020 7125 105 arcto 4 {pop} repeat 1125 7125 1125 7005 105 arcto 4 {pop} repeat 1125 6900 630 6900 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 630 7500 m 525 7500 525 7620 105 arcto 4 {pop} repeat 525 7725 1020 7725 105 arcto 4 {pop} repeat 1125 7725 1125 7605 105 arcto 4 {pop} repeat 1125 7500 630 7500 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 630 7800 m 525 7800 525 7920 105 arcto 4 {pop} repeat 525 8025 1020 8025 105 arcto 4 {pop} repeat 1125 8025 1125 7905 105 arcto 4 {pop} repeat 1125 7800 630 7800 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 630 8100 m 525 8100 525 8220 105 arcto 4 {pop} repeat 525 8325 1020 8325 105 arcto 4 {pop} repeat 1125 8325 1125 8205 105 arcto 4 {pop} repeat 1125 8100 630 8100 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 630 8400 m 525 8400 525 8520 105 arcto 4 {pop} repeat 525 8625 1020 8625 105 arcto 4 {pop} repeat 1125 8625 1125 8505 105 arcto 4 {pop} repeat 1125 8400 630 8400 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 630 8700 m 525 8700 525 8820 105 arcto 4 {pop} repeat 525 8925 1020 8925 105 arcto 4 {pop} repeat 1125 8925 1125 8805 105 arcto 4 {pop} repeat 1125 8700 630 8700 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 630 9000 m 525 9000 525 9120 105 arcto 4 {pop} repeat 525 9225 1020 9225 105 arcto 4 {pop} repeat 1125 9225 1125 9105 105 arcto 4 {pop} repeat 1125 9000 630 9000 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2580 6900 m 2475 6900 2475 7020 105 arcto 4 {pop} repeat 2475 7125 2970 7125 105 arcto 4 {pop} repeat 3075 7125 3075 7005 105 arcto 4 {pop} repeat 3075 6900 2580 6900 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2580 7200 m 2475 7200 2475 7320 105 arcto 4 {pop} repeat 2475 7425 2970 7425 105 arcto 4 {pop} repeat 3075 7425 3075 7305 105 arcto 4 {pop} repeat 3075 7200 2580 7200 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2580 7500 m 2475 7500 2475 7620 105 arcto 4 {pop} repeat 2475 7725 2970 7725 105 arcto 4 {pop} repeat 3075 7725 3075 7605 105 arcto 4 {pop} repeat 3075 7500 2580 7500 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2580 8400 m 2475 8400 2475 8520 105 arcto 4 {pop} repeat 2475 8625 2970 8625 105 arcto 4 {pop} repeat 3075 8625 3075 8505 105 arcto 4 {pop} repeat 3075 8400 2580 8400 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2580 7800 m 2475 7800 2475 7920 105 arcto 4 {pop} repeat 2475 8025 2970 8025 105 arcto 4 {pop} repeat 3075 8025 3075 7905 105 arcto 4 {pop} repeat 3075 7800 2580 7800 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2580 8100 m 2475 8100 2475 8220 105 arcto 4 {pop} repeat 2475 8325 2970 8325 105 arcto 4 {pop} repeat 3075 8325 3075 8205 105 arcto 4 {pop} repeat 3075 8100 2580 8100 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1605 7500 m 1500 7500 1500 7620 105 arcto 4 {pop} repeat 1500 7725 1995 7725 105 arcto 4 {pop} repeat 2100 7725 2100 7605 105 arcto 4 {pop} repeat 2100 7500 1605 7500 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2580 8700 m 2475 8700 2475 8820 105 arcto 4 {pop} repeat 2475 8925 2970 8925 105 arcto 4 {pop} repeat 3075 8925 3075 8805 105 arcto 4 {pop} repeat 3075 8700 2580 8700 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2580 9000 m 2475 9000 2475 9120 105 arcto 4 {pop} repeat 2475 9225 2970 9225 105 arcto 4 {pop} repeat 3075 9225 3075 9105 105 arcto 4 {pop} repeat 3075 9000 2580 9000 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1605 6900 m 1500 6900 1500 7020 105 arcto 4 {pop} repeat 1500 7125 1995 7125 105 arcto 4 {pop} repeat 2100 7125 2100 7005 105 arcto 4 {pop} repeat 2100 6900 1605 6900 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1605 7200 m 1500 7200 1500 7320 105 arcto 4 {pop} repeat 1500 7425 1995 7425 105 arcto 4 {pop} repeat 2100 7425 2100 7305 105 arcto 4 {pop} repeat 2100 7200 1605 7200 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1605 7800 m 1500 7800 1500 7920 105 arcto 4 {pop} repeat 1500 8025 1995 8025 105 arcto 4 {pop} repeat 2100 8025 2100 7905 105 arcto 4 {pop} repeat 2100 7800 1605 7800 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1605 8100 m 1500 8100 1500 8220 105 arcto 4 {pop} repeat 1500 8325 1995 8325 105 arcto 4 {pop} repeat 2100 8325 2100 8205 105 arcto 4 {pop} repeat 2100 8100 1605 8100 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1605 8400 m 1500 8400 1500 8520 105 arcto 4 {pop} repeat 1500 8625 1995 8625 105 arcto 4 {pop} repeat 2100 8625 2100 8505 105 arcto 4 {pop} repeat 2100 8400 1605 8400 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1605 8700 m 1500 8700 1500 8820 105 arcto 4 {pop} repeat 1500 8925 1995 8925 105 arcto 4 {pop} repeat 2100 8925 2100 8805 105 arcto 4 {pop} repeat 2100 8700 1605 8700 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1605 9000 m 1500 9000 1500 9120 105 arcto 4 {pop} repeat 1500 9225 1995 9225 105 arcto 4 {pop} repeat 2100 9225 2100 9105 105 arcto 4 {pop} repeat 2100 9000 1605 9000 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 225 1200 m 1125 1200 l 1125 3825 l 225 3825 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 2175 1200 m 3075 1200 l 3075 3825 l 2175 3825 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 1200 1200 m 2100 1200 l 2100 3825 l 1200 3825 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 9075 6900 m 9975 6900 l 9975 9525 l 9075 9525 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 225 6900 m 1125 6900 l 1125 9525 l 225 9525 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 8100 1200 m 9000 1200 l 9000 3825 l 8100 3825 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 7125 6900 m 8025 6900 l 8025 9525 l 7125 9525 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 7125 1200 m 8025 1200 l 8025 3825 l 7125 3825 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 9075 1200 m 9975 1200 l 9975 3825 l 9075 3825 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 2175 6900 m 3075 6900 l 3075 9525 l 2175 9525 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 1200 6900 m 2100 6900 l 2100 9525 l 1200 9525 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 8100 6900 m 9000 6900 l 9000 9525 l 8100 9525 l cp gs col7 0.90 shd ef gr gs col-1 s gr % Polyline n 7380 2250 m 7275 2250 7275 2370 105 arcto 4 {pop} repeat 7275 2475 7770 2475 105 arcto 4 {pop} repeat 7875 2475 7875 2355 105 arcto 4 {pop} repeat 7875 2250 7380 2250 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 2550 m 7275 2550 7275 2670 105 arcto 4 {pop} repeat 7275 2775 7770 2775 105 arcto 4 {pop} repeat 7875 2775 7875 2655 105 arcto 4 {pop} repeat 7875 2550 7380 2550 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 2850 m 7275 2850 7275 2970 105 arcto 4 {pop} repeat 7275 3075 7770 3075 105 arcto 4 {pop} repeat 7875 3075 7875 2955 105 arcto 4 {pop} repeat 7875 2850 7380 2850 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 3150 m 7275 3150 7275 3270 105 arcto 4 {pop} repeat 7275 3375 7770 3375 105 arcto 4 {pop} repeat 7875 3375 7875 3255 105 arcto 4 {pop} repeat 7875 3150 7380 3150 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 1350 m 7275 1350 7275 1470 105 arcto 4 {pop} repeat 7275 1575 7770 1575 105 arcto 4 {pop} repeat 7875 1575 7875 1455 105 arcto 4 {pop} repeat 7875 1350 7380 1350 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 1650 m 7275 1650 7275 1770 105 arcto 4 {pop} repeat 7275 1875 7770 1875 105 arcto 4 {pop} repeat 7875 1875 7875 1755 105 arcto 4 {pop} repeat 7875 1650 7380 1650 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 1950 m 7275 1950 7275 2070 105 arcto 4 {pop} repeat 7275 2175 7770 2175 105 arcto 4 {pop} repeat 7875 2175 7875 2055 105 arcto 4 {pop} repeat 7875 1950 7380 1950 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 1650 m 9225 1650 9225 1770 105 arcto 4 {pop} repeat 9225 1875 9720 1875 105 arcto 4 {pop} repeat 9825 1875 9825 1755 105 arcto 4 {pop} repeat 9825 1650 9330 1650 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 2250 m 9225 2250 9225 2370 105 arcto 4 {pop} repeat 9225 2475 9720 2475 105 arcto 4 {pop} repeat 9825 2475 9825 2355 105 arcto 4 {pop} repeat 9825 2250 9330 2250 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 2850 m 9225 2850 9225 2970 105 arcto 4 {pop} repeat 9225 3075 9720 3075 105 arcto 4 {pop} repeat 9825 3075 9825 2955 105 arcto 4 {pop} repeat 9825 2850 9330 2850 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 3450 m 7275 3450 7275 3570 105 arcto 4 {pop} repeat 7275 3675 7770 3675 105 arcto 4 {pop} repeat 7875 3675 7875 3555 105 arcto 4 {pop} repeat 7875 3450 7380 3450 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 1350 m 9225 1350 9225 1470 105 arcto 4 {pop} repeat 9225 1575 9720 1575 105 arcto 4 {pop} repeat 9825 1575 9825 1455 105 arcto 4 {pop} repeat 9825 1350 9330 1350 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 7050 m 1350 7050 1350 7170 105 arcto 4 {pop} repeat 1350 7275 1845 7275 105 arcto 4 {pop} repeat 1950 7275 1950 7155 105 arcto 4 {pop} repeat 1950 7050 1455 7050 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 7350 m 1350 7350 1350 7470 105 arcto 4 {pop} repeat 1350 7575 1845 7575 105 arcto 4 {pop} repeat 1950 7575 1950 7455 105 arcto 4 {pop} repeat 1950 7350 1455 7350 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 3450 m 8250 3450 8250 3570 105 arcto 4 {pop} repeat 8250 3675 8745 3675 105 arcto 4 {pop} repeat 8850 3675 8850 3555 105 arcto 4 {pop} repeat 8850 3450 8355 3450 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 1950 m 9225 1950 9225 2070 105 arcto 4 {pop} repeat 9225 2175 9720 2175 105 arcto 4 {pop} repeat 9825 2175 9825 2055 105 arcto 4 {pop} repeat 9825 1950 9330 1950 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 8250 m 1350 8250 1350 8370 105 arcto 4 {pop} repeat 1350 8475 1845 8475 105 arcto 4 {pop} repeat 1950 8475 1950 8355 105 arcto 4 {pop} repeat 1950 8250 1455 8250 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 8550 m 1350 8550 1350 8670 105 arcto 4 {pop} repeat 1350 8775 1845 8775 105 arcto 4 {pop} repeat 1950 8775 1950 8655 105 arcto 4 {pop} repeat 1950 8550 1455 8550 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 8850 m 1350 8850 1350 8970 105 arcto 4 {pop} repeat 1350 9075 1845 9075 105 arcto 4 {pop} repeat 1950 9075 1950 8955 105 arcto 4 {pop} repeat 1950 8850 1455 8850 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 3450 m 9225 3450 9225 3570 105 arcto 4 {pop} repeat 9225 3675 9720 3675 105 arcto 4 {pop} repeat 9825 3675 9825 3555 105 arcto 4 {pop} repeat 9825 3450 9330 3450 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 2550 m 9225 2550 9225 2670 105 arcto 4 {pop} repeat 9225 2775 9720 2775 105 arcto 4 {pop} repeat 9825 2775 9825 2655 105 arcto 4 {pop} repeat 9825 2550 9330 2550 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 7050 m 375 7050 375 7170 105 arcto 4 {pop} repeat 375 7275 870 7275 105 arcto 4 {pop} repeat 975 7275 975 7155 105 arcto 4 {pop} repeat 975 7050 480 7050 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 7350 m 375 7350 375 7470 105 arcto 4 {pop} repeat 375 7575 870 7575 105 arcto 4 {pop} repeat 975 7575 975 7455 105 arcto 4 {pop} repeat 975 7350 480 7350 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 3150 m 9225 3150 9225 3270 105 arcto 4 {pop} repeat 9225 3375 9720 3375 105 arcto 4 {pop} repeat 9825 3375 9825 3255 105 arcto 4 {pop} repeat 9825 3150 9330 3150 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 7950 m 375 7950 375 8070 105 arcto 4 {pop} repeat 375 8175 870 8175 105 arcto 4 {pop} repeat 975 8175 975 8055 105 arcto 4 {pop} repeat 975 7950 480 7950 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 8250 m 375 8250 375 8370 105 arcto 4 {pop} repeat 375 8475 870 8475 105 arcto 4 {pop} repeat 975 8475 975 8355 105 arcto 4 {pop} repeat 975 8250 480 8250 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 3150 m 1350 3150 1350 3270 105 arcto 4 {pop} repeat 1350 3375 1845 3375 105 arcto 4 {pop} repeat 1950 3375 1950 3255 105 arcto 4 {pop} repeat 1950 3150 1455 3150 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 3450 m 1350 3450 1350 3570 105 arcto 4 {pop} repeat 1350 3675 1845 3675 105 arcto 4 {pop} repeat 1950 3675 1950 3555 105 arcto 4 {pop} repeat 1950 3450 1455 3450 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 3150 m 8250 3150 8250 3270 105 arcto 4 {pop} repeat 8250 3375 8745 3375 105 arcto 4 {pop} repeat 8850 3375 8850 3255 105 arcto 4 {pop} repeat 8850 3150 8355 3150 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 7650 m 1350 7650 1350 7770 105 arcto 4 {pop} repeat 1350 7875 1845 7875 105 arcto 4 {pop} repeat 1950 7875 1950 7755 105 arcto 4 {pop} repeat 1950 7650 1455 7650 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 7050 m 2325 7050 2325 7170 105 arcto 4 {pop} repeat 2325 7275 2820 7275 105 arcto 4 {pop} repeat 2925 7275 2925 7155 105 arcto 4 {pop} repeat 2925 7050 2430 7050 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 7350 m 2325 7350 2325 7470 105 arcto 4 {pop} repeat 2325 7575 2820 7575 105 arcto 4 {pop} repeat 2925 7575 2925 7455 105 arcto 4 {pop} repeat 2925 7350 2430 7350 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 7650 m 2325 7650 2325 7770 105 arcto 4 {pop} repeat 2325 7875 2820 7875 105 arcto 4 {pop} repeat 2925 7875 2925 7755 105 arcto 4 {pop} repeat 2925 7650 2430 7650 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 7950 m 2325 7950 2325 8070 105 arcto 4 {pop} repeat 2325 8175 2820 8175 105 arcto 4 {pop} repeat 2925 8175 2925 8055 105 arcto 4 {pop} repeat 2925 7950 2430 7950 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 1950 m 1350 1950 1350 2070 105 arcto 4 {pop} repeat 1350 2175 1845 2175 105 arcto 4 {pop} repeat 1950 2175 1950 2055 105 arcto 4 {pop} repeat 1950 1950 1455 1950 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 8550 m 2325 8550 2325 8670 105 arcto 4 {pop} repeat 2325 8775 2820 8775 105 arcto 4 {pop} repeat 2925 8775 2925 8655 105 arcto 4 {pop} repeat 2925 8550 2430 8550 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 8850 m 2325 8850 2325 8970 105 arcto 4 {pop} repeat 2325 9075 2820 9075 105 arcto 4 {pop} repeat 2925 9075 2925 8955 105 arcto 4 {pop} repeat 2925 8850 2430 8850 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 9150 m 2325 9150 2325 9270 105 arcto 4 {pop} repeat 2325 9375 2820 9375 105 arcto 4 {pop} repeat 2925 9375 2925 9255 105 arcto 4 {pop} repeat 2925 9150 2430 9150 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 7950 m 1350 7950 1350 8070 105 arcto 4 {pop} repeat 1350 8175 1845 8175 105 arcto 4 {pop} repeat 1950 8175 1950 8055 105 arcto 4 {pop} repeat 1950 7950 1455 7950 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 7050 m 8250 7050 8250 7170 105 arcto 4 {pop} repeat 8250 7275 8745 7275 105 arcto 4 {pop} repeat 8850 7275 8850 7155 105 arcto 4 {pop} repeat 8850 7050 8355 7050 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 9150 m 1350 9150 1350 9270 105 arcto 4 {pop} repeat 1350 9375 1845 9375 105 arcto 4 {pop} repeat 1950 9375 1950 9255 105 arcto 4 {pop} repeat 1950 9150 1455 9150 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 7650 m 8250 7650 8250 7770 105 arcto 4 {pop} repeat 8250 7875 8745 7875 105 arcto 4 {pop} repeat 8850 7875 8850 7755 105 arcto 4 {pop} repeat 8850 7650 8355 7650 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 7950 m 8250 7950 8250 8070 105 arcto 4 {pop} repeat 8250 8175 8745 8175 105 arcto 4 {pop} repeat 8850 8175 8850 8055 105 arcto 4 {pop} repeat 8850 7950 8355 7950 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 8250 m 8250 8250 8250 8370 105 arcto 4 {pop} repeat 8250 8475 8745 8475 105 arcto 4 {pop} repeat 8850 8475 8850 8355 105 arcto 4 {pop} repeat 8850 8250 8355 8250 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 8550 m 8250 8550 8250 8670 105 arcto 4 {pop} repeat 8250 8775 8745 8775 105 arcto 4 {pop} repeat 8850 8775 8850 8655 105 arcto 4 {pop} repeat 8850 8550 8355 8550 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 8850 m 8250 8850 8250 8970 105 arcto 4 {pop} repeat 8250 9075 8745 9075 105 arcto 4 {pop} repeat 8850 9075 8850 8955 105 arcto 4 {pop} repeat 8850 8850 8355 8850 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 9150 m 8250 9150 8250 9270 105 arcto 4 {pop} repeat 8250 9375 8745 9375 105 arcto 4 {pop} repeat 8850 9375 8850 9255 105 arcto 4 {pop} repeat 8850 9150 8355 9150 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 7650 m 375 7650 375 7770 105 arcto 4 {pop} repeat 375 7875 870 7875 105 arcto 4 {pop} repeat 975 7875 975 7755 105 arcto 4 {pop} repeat 975 7650 480 7650 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 7050 m 7275 7050 7275 7170 105 arcto 4 {pop} repeat 7275 7275 7770 7275 105 arcto 4 {pop} repeat 7875 7275 7875 7155 105 arcto 4 {pop} repeat 7875 7050 7380 7050 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 7350 m 7275 7350 7275 7470 105 arcto 4 {pop} repeat 7275 7575 7770 7575 105 arcto 4 {pop} repeat 7875 7575 7875 7455 105 arcto 4 {pop} repeat 7875 7350 7380 7350 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 7650 m 7275 7650 7275 7770 105 arcto 4 {pop} repeat 7275 7875 7770 7875 105 arcto 4 {pop} repeat 7875 7875 7875 7755 105 arcto 4 {pop} repeat 7875 7650 7380 7650 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 7950 m 7275 7950 7275 8070 105 arcto 4 {pop} repeat 7275 8175 7770 8175 105 arcto 4 {pop} repeat 7875 8175 7875 8055 105 arcto 4 {pop} repeat 7875 7950 7380 7950 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 8250 m 7275 8250 7275 8370 105 arcto 4 {pop} repeat 7275 8475 7770 8475 105 arcto 4 {pop} repeat 7875 8475 7875 8355 105 arcto 4 {pop} repeat 7875 8250 7380 8250 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 8550 m 7275 8550 7275 8670 105 arcto 4 {pop} repeat 7275 8775 7770 8775 105 arcto 4 {pop} repeat 7875 8775 7875 8655 105 arcto 4 {pop} repeat 7875 8550 7380 8550 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 8850 m 7275 8850 7275 8970 105 arcto 4 {pop} repeat 7275 9075 7770 9075 105 arcto 4 {pop} repeat 7875 9075 7875 8955 105 arcto 4 {pop} repeat 7875 8850 7380 8850 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 7380 9150 m 7275 9150 7275 9270 105 arcto 4 {pop} repeat 7275 9375 7770 9375 105 arcto 4 {pop} repeat 7875 9375 7875 9255 105 arcto 4 {pop} repeat 7875 9150 7380 9150 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 2850 m 8250 2850 8250 2970 105 arcto 4 {pop} repeat 8250 3075 8745 3075 105 arcto 4 {pop} repeat 8850 3075 8850 2955 105 arcto 4 {pop} repeat 8850 2850 8355 2850 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 7050 m 9225 7050 9225 7170 105 arcto 4 {pop} repeat 9225 7275 9720 7275 105 arcto 4 {pop} repeat 9825 7275 9825 7155 105 arcto 4 {pop} repeat 9825 7050 9330 7050 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 7350 m 9225 7350 9225 7470 105 arcto 4 {pop} repeat 9225 7575 9720 7575 105 arcto 4 {pop} repeat 9825 7575 9825 7455 105 arcto 4 {pop} repeat 9825 7350 9330 7350 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 7650 m 9225 7650 9225 7770 105 arcto 4 {pop} repeat 9225 7875 9720 7875 105 arcto 4 {pop} repeat 9825 7875 9825 7755 105 arcto 4 {pop} repeat 9825 7650 9330 7650 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 7950 m 9225 7950 9225 8070 105 arcto 4 {pop} repeat 9225 8175 9720 8175 105 arcto 4 {pop} repeat 9825 8175 9825 8055 105 arcto 4 {pop} repeat 9825 7950 9330 7950 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 8250 m 9225 8250 9225 8370 105 arcto 4 {pop} repeat 9225 8475 9720 8475 105 arcto 4 {pop} repeat 9825 8475 9825 8355 105 arcto 4 {pop} repeat 9825 8250 9330 8250 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 8550 m 9225 8550 9225 8670 105 arcto 4 {pop} repeat 9225 8775 9720 8775 105 arcto 4 {pop} repeat 9825 8775 9825 8655 105 arcto 4 {pop} repeat 9825 8550 9330 8550 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 8850 m 9225 8850 9225 8970 105 arcto 4 {pop} repeat 9225 9075 9720 9075 105 arcto 4 {pop} repeat 9825 9075 9825 8955 105 arcto 4 {pop} repeat 9825 8850 9330 8850 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 9330 9150 m 9225 9150 9225 9270 105 arcto 4 {pop} repeat 9225 9375 9720 9375 105 arcto 4 {pop} repeat 9825 9375 9825 9255 105 arcto 4 {pop} repeat 9825 9150 9330 9150 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 7350 m 8250 7350 8250 7470 105 arcto 4 {pop} repeat 8250 7575 8745 7575 105 arcto 4 {pop} repeat 8850 7575 8850 7455 105 arcto 4 {pop} repeat 8850 7350 8355 7350 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 2550 m 8250 2550 8250 2670 105 arcto 4 {pop} repeat 8250 2775 8745 2775 105 arcto 4 {pop} repeat 8850 2775 8850 2655 105 arcto 4 {pop} repeat 8850 2550 8355 2550 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 2250 m 8250 2250 8250 2370 105 arcto 4 {pop} repeat 8250 2475 8745 2475 105 arcto 4 {pop} repeat 8850 2475 8850 2355 105 arcto 4 {pop} repeat 8850 2250 8355 2250 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 1950 m 8250 1950 8250 2070 105 arcto 4 {pop} repeat 8250 2175 8745 2175 105 arcto 4 {pop} repeat 8850 2175 8850 2055 105 arcto 4 {pop} repeat 8850 1950 8355 1950 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 1650 m 8250 1650 8250 1770 105 arcto 4 {pop} repeat 8250 1875 8745 1875 105 arcto 4 {pop} repeat 8850 1875 8850 1755 105 arcto 4 {pop} repeat 8850 1650 8355 1650 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 8355 1350 m 8250 1350 8250 1470 105 arcto 4 {pop} repeat 8250 1575 8745 1575 105 arcto 4 {pop} repeat 8850 1575 8850 1455 105 arcto 4 {pop} repeat 8850 1350 8355 1350 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 3450 m 2325 3450 2325 3570 105 arcto 4 {pop} repeat 2325 3675 2820 3675 105 arcto 4 {pop} repeat 2925 3675 2925 3555 105 arcto 4 {pop} repeat 2925 3450 2430 3450 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 3150 m 2325 3150 2325 3270 105 arcto 4 {pop} repeat 2325 3375 2820 3375 105 arcto 4 {pop} repeat 2925 3375 2925 3255 105 arcto 4 {pop} repeat 2925 3150 2430 3150 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 2850 m 2325 2850 2325 2970 105 arcto 4 {pop} repeat 2325 3075 2820 3075 105 arcto 4 {pop} repeat 2925 3075 2925 2955 105 arcto 4 {pop} repeat 2925 2850 2430 2850 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 2850 m 1350 2850 1350 2970 105 arcto 4 {pop} repeat 1350 3075 1845 3075 105 arcto 4 {pop} repeat 1950 3075 1950 2955 105 arcto 4 {pop} repeat 1950 2850 1455 2850 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 2550 m 2325 2550 2325 2670 105 arcto 4 {pop} repeat 2325 2775 2820 2775 105 arcto 4 {pop} repeat 2925 2775 2925 2655 105 arcto 4 {pop} repeat 2925 2550 2430 2550 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 2250 m 2325 2250 2325 2370 105 arcto 4 {pop} repeat 2325 2475 2820 2475 105 arcto 4 {pop} repeat 2925 2475 2925 2355 105 arcto 4 {pop} repeat 2925 2250 2430 2250 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 1950 m 2325 1950 2325 2070 105 arcto 4 {pop} repeat 2325 2175 2820 2175 105 arcto 4 {pop} repeat 2925 2175 2925 2055 105 arcto 4 {pop} repeat 2925 1950 2430 1950 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 1650 m 2325 1650 2325 1770 105 arcto 4 {pop} repeat 2325 1875 2820 1875 105 arcto 4 {pop} repeat 2925 1875 2925 1755 105 arcto 4 {pop} repeat 2925 1650 2430 1650 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 1350 m 2325 1350 2325 1470 105 arcto 4 {pop} repeat 2325 1575 2820 1575 105 arcto 4 {pop} repeat 2925 1575 2925 1455 105 arcto 4 {pop} repeat 2925 1350 2430 1350 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 3450 m 375 3450 375 3570 105 arcto 4 {pop} repeat 375 3675 870 3675 105 arcto 4 {pop} repeat 975 3675 975 3555 105 arcto 4 {pop} repeat 975 3450 480 3450 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 3150 m 375 3150 375 3270 105 arcto 4 {pop} repeat 375 3375 870 3375 105 arcto 4 {pop} repeat 975 3375 975 3255 105 arcto 4 {pop} repeat 975 3150 480 3150 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 2850 m 375 2850 375 2970 105 arcto 4 {pop} repeat 375 3075 870 3075 105 arcto 4 {pop} repeat 975 3075 975 2955 105 arcto 4 {pop} repeat 975 2850 480 2850 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 2250 m 1350 2250 1350 2370 105 arcto 4 {pop} repeat 1350 2475 1845 2475 105 arcto 4 {pop} repeat 1950 2475 1950 2355 105 arcto 4 {pop} repeat 1950 2250 1455 2250 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 2550 m 375 2550 375 2670 105 arcto 4 {pop} repeat 375 2775 870 2775 105 arcto 4 {pop} repeat 975 2775 975 2655 105 arcto 4 {pop} repeat 975 2550 480 2550 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 2250 m 375 2250 375 2370 105 arcto 4 {pop} repeat 375 2475 870 2475 105 arcto 4 {pop} repeat 975 2475 975 2355 105 arcto 4 {pop} repeat 975 2250 480 2250 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 1950 m 375 1950 375 2070 105 arcto 4 {pop} repeat 375 2175 870 2175 105 arcto 4 {pop} repeat 975 2175 975 2055 105 arcto 4 {pop} repeat 975 1950 480 1950 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 1650 m 375 1650 375 1770 105 arcto 4 {pop} repeat 375 1875 870 1875 105 arcto 4 {pop} repeat 975 1875 975 1755 105 arcto 4 {pop} repeat 975 1650 480 1650 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 1350 m 375 1350 375 1470 105 arcto 4 {pop} repeat 375 1575 870 1575 105 arcto 4 {pop} repeat 975 1575 975 1455 105 arcto 4 {pop} repeat 975 1350 480 1350 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 9150 m 375 9150 375 9270 105 arcto 4 {pop} repeat 375 9375 870 9375 105 arcto 4 {pop} repeat 975 9375 975 9255 105 arcto 4 {pop} repeat 975 9150 480 9150 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 2550 m 1350 2550 1350 2670 105 arcto 4 {pop} repeat 1350 2775 1845 2775 105 arcto 4 {pop} repeat 1950 2775 1950 2655 105 arcto 4 {pop} repeat 1950 2550 1455 2550 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 8850 m 375 8850 375 8970 105 arcto 4 {pop} repeat 375 9075 870 9075 105 arcto 4 {pop} repeat 975 9075 975 8955 105 arcto 4 {pop} repeat 975 8850 480 8850 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 480 8550 m 375 8550 375 8670 105 arcto 4 {pop} repeat 375 8775 870 8775 105 arcto 4 {pop} repeat 975 8775 975 8655 105 arcto 4 {pop} repeat 975 8550 480 8550 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 1650 m 1350 1650 1350 1770 105 arcto 4 {pop} repeat 1350 1875 1845 1875 105 arcto 4 {pop} repeat 1950 1875 1950 1755 105 arcto 4 {pop} repeat 1950 1650 1455 1650 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 1455 1350 m 1350 1350 1350 1470 105 arcto 4 {pop} repeat 1350 1575 1845 1575 105 arcto 4 {pop} repeat 1950 1575 1950 1455 105 arcto 4 {pop} repeat 1950 1350 1455 1350 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr % Polyline n 2430 8250 m 2325 8250 2325 8370 105 arcto 4 {pop} repeat 2325 8475 2820 8475 105 arcto 4 {pop} repeat 2925 8475 2925 8355 105 arcto 4 {pop} repeat 2925 8250 2430 8250 105 arcto 4 {pop} repeat cp gs col10 0.90 shd ef gr gs col10 s gr 30.000 slw % Interp Spline gs n 3375 8400 m 4312.0 8528.1 4687.0 8453.1 4875 8100 curveto 5034.8 7799.9 4537.5 7434.0 4500 7200 curveto 4471.8 7024.0 4490.5 6780.3 4575 6225 curveto gs col17 s gr gr % Interp Spline gs n 7125 8400 m 6588.5 8395.1 6382.2 8320.1 6300 8100 curveto 6203.6 7841.8 6681.0 7659.7 6675 7425 curveto 6669.5 7209.9 6326.1 7019.1 6300 6825 curveto 6278.4 6663.9 6334.6 6476.4 6525 6075 curveto gs col17 s gr gr % Interp Spline gs n 7125 2700 m 6301.2 2714.5 5945.0 2789.5 5700 3000 curveto 5556.2 3123.5 5465.8 3424.9 5475 3600 curveto 5480.4 3703.1 5536.7 3815.6 5700 4050 curveto gs col17 s gr gr % Interp Spline gs n 3075 2700 m 3752.7 2632.2 4033.9 2707.2 4200 3000 curveto 4407.7 3366.1 3801.1 3720.7 3900 4050 curveto 3947.0 4206.4 4078.2 4318.9 4425 4500 curveto gs col17 s gr gr % Interp Spline gs n 4725 4275 m 4581.1 4313.2 4309.1 4481.6 4200 4575 curveto 4113.3 4649.1 3910.5 4793.7 3900 4950 curveto 3890.4 5092.4 4052.2 5248.7 4125 5325 curveto 4170.0 5372.2 4329.4 5371.9 4350 5475 curveto 4391.2 5681.2 4089.4 5794.9 4050 5925 curveto 4028.1 5997.2 4011.6 6148.3 4050 6225 curveto 4097.9 6320.9 4270.9 6410.1 4350 6450 curveto 4515.2 6533.4 4843.5 6785.8 5100 6675 curveto 5209.9 6627.5 5161.6 6429.7 5250 6375 curveto 5408.2 6277.2 5705.6 6331.3 5850 6375 curveto 5915.1 6394.7 5998.9 6514.8 6075 6525 curveto 6208.4 6542.9 6428.0 6451.4 6525 6375 curveto 6669.7 6261.1 6890.0 5985.7 6900 5775 curveto 6907.1 5625.2 6744.1 5420.9 6675 5325 curveto 6631.3 5264.4 6490.6 5165.6 6450 5100 curveto 6389.5 5002.1 6282.1 4783.4 6300 4650 curveto 6310.2 4573.9 6453.9 4515.2 6450 4425 curveto 6443.1 4264.8 6262.4 4112.9 6150 4050 curveto 6008.5 3970.8 5693.1 3966.4 5550 3975 curveto 5403.6 3983.8 5084.2 4017.4 4950 4125 curveto 4913.6 4154.2 4919.2 4247.7 4875 4275 curveto 4835.4 4299.4 4760.7 4265.5 4725 4275 curveto cp gs col17 0.50 shd ef gr gs col17 s gr gr /Times-Roman ff 450.00 scf sf 500 6450 m gs 1 -1 sc (VU Amsterdam) col-1 sh gr /Times-Roman ff 450.00 scf sf 7000 6675 m gs 1 -1 sc (UvA Amsterdam) col-1 sh gr /Times-Roman ff 450.00 scf sf 7950 1050 m gs 1 -1 sc (Leiden) col-1 sh gr /Times-Roman ff 450.00 scf sf 1200 1050 m gs 1 -1 sc (Delft) col-1 sh gr /Times-Roman ff 360.00 scf sf 1500 4200 m gs 1 -1 sc (24) col-1 sh gr /Times-Roman ff 360.00 scf sf 8400 4200 m gs 1 -1 sc (24) col-1 sh gr /Times-Roman ff 360.00 scf sf 8400 9900 m gs 1 -1 sc (24) col-1 sh gr /Times-Roman ff 360.00 scf sf %1500 9900 m 1350 9900 m gs 1 -1 sc (128) col-1 sh gr /Helvetica ff 450.00 scf sf 4650 5100 m gs 1 -1 sc (6 Mbit/s) col7 sh gr /Helvetica ff 450.00 scf sf 4875 5625 m gs 1 -1 sc (ATM) col7 sh gr $F2psEnd rs %%EndDocument @endspecial 1194 1857 a Fr(Figure)25 b(1:)30 b(The)25 b(wide-area)h(D)l(AS)f(system.)0 2252 y Fn(2.2)119 b(The)30 b(Manta)g(system)0 2440 y Fr(Manta)h(is)g(a)h(Ja)n(v)n(a)f(system)f (designed)h(for)h(high-performance)f(parallel)g(computing.)49 b(Lik)o(e)31 b(Ja)n(v)n(aP)o(arty)g([28],)0 2560 y(Manta)36 b(uses)f(a)i(separate)f Fl(remote)i Fr(k)o(e)o(yw)o(ord)d(to)h (indicate)f(which)h(classes)g(allo)n(w)f(their)h(methods)e(to)i(be)g (in-)0 2681 y(v)n(ok)o(ed)e(remotely)-6 b(.)57 b(This)33 b(method)g(is)g(some)n(what)g(more)h(\003e)o(xible)f(and)h(easier)h(to) e(use)h(than)g(inheriting)e(from)0 2801 y Fl (java.rmi.server.UnicastRemoteObject)37 b Fr(\(the)e(standard)g(RMI)g (mechanism\).)59 b(Ja)n(v)n(aP)o(arty)35 b(requires)f(a)i(pre-)0 2921 y(processor)31 b(for)g(implementing)e(this)h(language)h(e)o (xtension;)i(for)e(Manta,)i(we)e(ha)n(v)o(e)g(modi\002ed)f(our)h (compiler)-5 b(.)0 3042 y(Except)26 b(for)h(this)f(dif)n(ference,)h (the)g(programming)e(model)g(of)i(Manta)f(is)g(the)h(same)f(as)h(that)f (of)h(standard)f(RMI.)0 3162 y(Manta)f(uses)g(a)h(nati)n(v)o(e)e (compiler)h(and)g(an)g(optimized)f(RMI)i(protocol.)32 b(The)25 b(most)f(important)g(adv)n(antage)h(of)h(a)0 3282 y(nati)n(v)o(e)g(compiler)h(\(compared)h(to)f(a)h(JIT\))g(is)f (that)g(it)g(can)h(do)g(more)f(aggressi)n(v)o(e)g(optimizations)e(and)i (therefore)0 3403 y(generate)34 b(better)g(code.)58 b(The)34 b(compiler)f(also)h(generates)g(the)f(serialization)g(and)h (deserialization)f(routines,)0 3523 y(which)g(greatly)g(reduces)g(the)g (runtime)g(o)o(v)o(erhead)f(of)h(RMIs.)56 b(Manta)33 b(nodes)g(thus)f(contain)h(the)g(e)o(x)o(ecutable)0 3644 y(code)f(for)g(the)g(application)f(and)h(\(de\)serialization)g (routines.)51 b(The)32 b(nodes)g(communicate)e(with)i(each)g(other)0 3764 y(using)24 b(Manta')-5 b(s)24 b(o)n(wn)g(light-weight)f(RMI)i (protocol.)146 3884 y(The)36 b(most)e(dif)n(\002cult)g(problem)h (addressed)g(by)g(the)g(Manta)g(system)f(is)h(to)g(allo)n(w)f (interoperability)g(with)0 4005 y(other)27 b(JVMs.)36 b(One)27 b(problem)f(is)g(that)h(Manta)f(has)h(its)f(o)n(wn,)h (light-weight)e(RMI)i(protocol)f(that)h(is)f(incompat-)0 4125 y(ible)j(with)f(Sun')-5 b(s)29 b(JDK)g(protocol.)42 b(W)-8 b(e)30 b(solv)o(e)e(this)g(problem)h(by)f(letting)g(a)i(Manta)f (node)f(also)h(communicate)0 4245 y(through)f(a)h(JDK-compliant)f (protocol.)42 b(T)-8 b(w)o(o)28 b(Manta)h(nodes)f(thus)h(communicate)e (using)h(our)h(f)o(ast)g(protocol,)0 4366 y(while)24 b(Manta-to-JVM)g(RMIs)h(use)f(the)h(standard)f(RMI)i(protocol.)146 4486 y(Another)h(problem)f(concerning)g(interoperability)f(is)h(that)h (Manta)f(uses)g(a)i(nati)n(v)o(e)d(compiler)h(instead)g(of)h(a)0 4607 y(byte)22 b(code)g(interpreter)h(\(or)f(JIT\).)g(Since)h(Ja)n(v)n (a)f(RMIs)g(are)h(polymorphic)d([35],)j(Manta)f(nodes)g(must)f(be)h (able)g(to)0 4727 y(send)h(and)g(recei)n(v)o(e)g(byte)f(codes)h(to)g (interoperate)g(with)f(JVMs.)30 b(F)o(or)23 b(e)o(xample,)f(if)h(a)g (remote)g(method)f(e)o(xpects)h(a)0 4847 y(parameter)k(of)g(a)g (certain)g(class)f Fq(C)p Fr(,)h(the)g(in)l(v)n(ok)o(er)f(may)h(send)f (it)g(an)h(object)f(of)h(a)g(subclass)f(of)h(C.)g(This)f(subclass)0 4968 y(may)c(not)g(yet)h(be)f(a)n(v)n(ailable)g(at)h(the)f(recei)n (ving)g(Manta)g(node,)h(so)f(its)g(byte)g(code)h(may)f(ha)n(v)o(e)g(to) h(be)f(retrie)n(v)o(ed)g(and)0 5088 y(inte)o(grated)i(into)g(the)g (computation.)29 b(W)l(ith)c(Manta,)f(ho)n(we)n(v)o(er)l(,)f(the)i (computation)e(is)i(an)g(e)o(x)o(ecutable)f(program,)0 5209 y(not)k(a)h(JVM.)f(In)h(the)g(re)n(v)o(erse)f(situation,)g(if)h (Manta)f(does)h(a)g(remote)f(in)l(v)n(ocation)g(to)g(a)h(node)g (running)f(a)h(JVM,)0 5329 y(it)k(must)f(be)h(able)g(to)g(send)g(the)g (byte)g(codes)g(for)h(subclasses)e(that)h(the)g(recei)n(ving)f(JVM)h (does)g(not)f(yet)h(ha)n(v)o(e.)1925 5589 y(3)p eop %%Page: 4 4 4 3 bop 296 859 a @beginspecial 0 @llx 0 @lly 728 @urx 189 @ury 3968 @rwi @setspecial %%BeginDocument: panda-atm.eps /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -97.0 399.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit n -1000 7322 m -1000 -1000 l 14087 -1000 l 14087 7322 l cp clip 0.06299 0.06299 sc % Polyline 15.000 slw n 13065 3360 m 11940 3360 l 11940 3810 l 13065 3810 l cp gs col0 s gr % Polyline n 11040 4260 m 9915 4260 l 9915 4710 l 11040 4710 l cp gs col0 s gr % Polyline n 11040 3810 m 9915 3810 l 9915 4260 l 11040 4260 l cp gs col0 s gr % Polyline n 11040 3360 m 9915 3360 l 9915 3810 l 11040 3810 l cp gs col0 s gr % Polyline n 2700 4725 m 1575 4725 l 1575 5175 l 2700 5175 l cp gs col0 s gr % Polyline n 2700 4275 m 1575 4275 l 1575 4725 l 2700 4725 l cp gs col0 s gr % Polyline n 2700 3825 m 1575 3825 l 1575 4275 l 2700 4275 l cp gs col0 s gr % Polyline n 2700 3375 m 1575 3375 l 1575 3825 l 2700 3825 l cp gs col0 s gr % Polyline n 8325 4725 m 9450 4725 l 9450 5175 l 8325 5175 l cp gs col0 s gr % Polyline n 11040 4710 m 9915 4710 l 9915 5160 l 11040 5160 l cp gs col0 s gr % Polyline n 13065 3810 m 11940 3810 l 11940 4260 l 13065 4260 l cp gs col0 s gr % Polyline n 13065 4260 m 11940 4260 l 11940 4710 l 13065 4710 l cp gs col0 s gr % Polyline n 4740 4740 m 3615 4740 l 3615 5190 l 4740 5190 l cp gs col0 s gr % Polyline n 4740 4290 m 3615 4290 l 3615 4740 l 4740 4740 l cp gs col0 s gr % Polyline n 4740 3840 m 3615 3840 l 3615 4290 l 4740 4290 l cp gs col0 s gr % Polyline n 4740 3390 m 3615 3390 l 3615 3840 l 4740 3840 l cp gs col0 s gr % Polyline n 13065 4710 m 11940 4710 l 11940 5160 l 13065 5160 l cp gs col0 s gr % Polyline n 8325 4275 m 9450 4275 l 9450 4725 l 8325 4725 l cp gs col0 s gr % Polyline n 6300 4725 m 5175 4725 l 5175 5175 l 6300 5175 l cp gs col0 s gr % Polyline n 6300 4275 m 5175 4275 l 5175 4725 l 6300 4725 l cp gs col0 s gr /Helvetica-Bold ff 270.00 scf sf 4178 4598 m gs 1 -1 sc (Panda) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 4178 5062 m gs 1 -1 sc (LFC) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 180.00 scf sf 4178 3690 m gs 1 -1 sc (Application) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 4178 4155 m gs 1 -1 sc (Manta) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 3944 5744 m 4089 5744 l 4236 6181 l 4381 6181 l gs col0 s gr /Helvetica-Bold ff 270.00 scf sf 10478 4125 m gs 1 -1 sc (Manta) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 10478 5032 m gs 1 -1 sc (LFC) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 180.00 scf sf 10478 3660 m gs 1 -1 sc (Application) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 2138 5047 m gs 1 -1 sc (LFC) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 10681 5744 m 10536 5744 l 10389 6181 l 10244 6181 l gs col0 s gr /Helvetica-Bold ff 180.00 scf sf 2138 3675 m gs 1 -1 sc (Application) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 10244 5744 m 10389 5744 l 10536 6181 l 10681 6181 l gs col0 s gr /Helvetica-Bold ff 270.00 scf sf 12503 4125 m gs 1 -1 sc (Manta) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 12503 4568 m gs 1 -1 sc (Panda) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 12503 5032 m gs 1 -1 sc (LFC) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 180.00 scf sf 12503 3660 m gs 1 -1 sc (Application) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 2138 4583 m gs 1 -1 sc (Panda) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 10478 4568 m gs 1 -1 sc (Panda) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 5743 4728 m 5743 5178 l gs col0 s gr % Polyline n 4500 5625 m 3825 5625 l 3825 6300 l 4500 6300 l cp gs col0 s gr % Polyline n 5490 5175 m 5490 5985 l 4500 5985 l gs col0 s gr % Polyline gs clippath 6633 5790 m 6921 5850 l 6633 5910 l 7005 5910 l 7005 5790 l cp clip n 5985 5175 m 5985 5850 l 6975 5850 l gs col0 s gr gr % arrowhead n 6633 5790 m 6921 5850 l 6633 5910 l 6681 5850 l 6633 5790 l cp gs col7 1.00 shd ef gr col0 s /Helvetica-Bold ff 270.00 scf sf 2138 4140 m gs 1 -1 sc (Manta) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 4381 5744 m 4236 5744 l 4089 6181 l 3944 6181 l gs col0 s gr % Polyline n 8882 4728 m 8882 5178 l gs col0 s gr % Polyline n 10125 5625 m 10800 5625 l 10800 6300 l 10125 6300 l cp gs col0 s gr % Polyline n 9135 5175 m 9135 5985 l 10125 5985 l gs col0 s gr % Polyline gs clippath 7992 5910 m 7704 5850 l 7992 5790 l 7620 5790 l 7620 5910 l cp clip n 8640 5175 m 8640 5850 l 7650 5850 l gs col0 s gr gr % arrowhead n 7992 5910 m 7704 5850 l 7992 5790 l 7944 5850 l 7992 5910 l cp gs col7 1.00 shd ef gr col0 s % Polyline n 12495 5175 m 12495 5985 l 10800 5985 l gs col0 s gr % Polyline n 10460 5175 m 10460 5625 l gs col0 s gr % Polyline n 4165 5175 m 4165 5625 l gs col0 s gr % Polyline n 2135 5175 m 2135 5985 l 3825 5985 l gs col0 s gr /Helvetica-Bold ff 270.00 scf sf 7290 5715 m gs 1 -1 sc (ATM) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 5760 4590 m gs 1 -1 sc (Panda) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 180.00 scf sf 5490 5040 m gs 1 -1 sc (LFC) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 180.00 scf sf 6030 5040 m gs 1 -1 sc (TCP) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 8865 4590 m gs 1 -1 sc (Panda) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 180.00 scf sf 9135 5040 m gs 1 -1 sc (LFC) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 180.00 scf sf 8595 5040 m gs 1 -1 sc (TCP) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 225.00 scf sf 2250 5850 m gs 1 -1 sc (Myrinet) col0 sh gr /Helvetica-Bold ff 225.00 scf sf 12375 5850 m gs 1 -1 sc (Myrinet) dup sw pop neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 3150 4320 m gs 1 -1 sc (. . .) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 11475 4320 m gs 1 -1 sc (. . .) dup sw pop 2 div neg 0 rm col0 sh gr $F2psEnd rs %%EndDocument @endspecial 908 1062 a Fr(Figure)25 b(2:)30 b(W)l(ide)25 b(area)h(communication)d(based)h(on)h(P)o(anda)0 1457 y(Manta)f(solv)o(es)e(this)h(problem)g(as)h(follo)n(ws.)29 b(If)c(a)f(remote)g(JVM)f(node)h(sends)f(byte)h(code)g(to)g(a)g(Manta)f (node,)h(the)0 1578 y(byte)30 b(code)g(is)f(compiled)g(dynamically)g (to)g(object)h(code)g(and)g(this)f(object)g(code)i(is)e(link)o(ed)g (into)g(the)h(running)0 1698 y(application)d(using)g(the)h Fk(dlopen\(\))j Fr(dynamic)c(linking)g(interf)o(ace.)41 b(Also,)28 b(Manta)g(generates)h(byte)f(codes)g(for)0 1818 y(the)34 b(classes)h(it)f(compiles)f(\(in)i(addition)e(to)h(e)o(x) o(ecutable)g(code\).)60 b(These)35 b(byte)f(codes)g(are)i(stored)e(at)g (an)h(http)0 1939 y(daemon,)24 b(where)i(remote)e(JVM)g(nodes)h(can)g (retrie)n(v)o(e)f(them.)30 b(F)o(or)25 b(more)f(details,)g(we)h(refer)h (to)f([25].)146 2059 y(The)h(Manta)f(RMI)h(protocol)f(is)g(designed)g (to)g(minimize)f(serialization)h(and)g(dispatch)g(o)o(v)o(erhead,)g (such)g(as)0 2179 y(cop)o(ying,)31 b(b)n(uf)n(fer)f(management,)h (fragmentation,)g(thread)f(switching,)h(and)f(indirect)g(method)f (calls.)47 b(Manta)0 2300 y(a)n(v)n(oids)32 b(the)h(se)n(v)o(eral)g (stream)f(layers)h(used)g(for)g(serialization)g(by)f(the)h(JDK.)g (Instead,)i(RMI)e(parameters)g(are)0 2420 y(serialized)f(directly)f (into)g(a)h(communication)e(b)n(uf)n(fer)-5 b(.)51 b(Moreo)o(v)o(er)l (,)32 b(the)g(JDK)g(stream)f(layers)h(are)g(written)f(in)0 2541 y(Ja)n(v)n(a)20 b(and)h(their)f(o)o(v)o(erhead)g(thus)g(depends)g (on)g(the)h(quality)e(of)i(the)f(interpreter)h(or)g(JIT)-7 b(.)20 b(In)g(Manta,)h(all)g(layers)f(are)0 2661 y(either)h (implemented)e(as)i(compiled)f(C)i(code)f(or)g(compiler)n(-generated)f (nati)n(v)o(e)g(code.)30 b(Heterogeneity)20 b(between)0 2781 y(little-endian)29 b(and)h(big-endian)f(machines)h(is)g(achie)n(v) o(ed)f(by)h(sending)f(data)i(in)f(the)g(nati)n(v)o(e)f(byte)g(order)i (of)f(the)0 2902 y(sender)l(,)25 b(and)g(ha)n(ving)f(the)g(recei)n(v)o (er)h(do)g(the)f(con)l(v)o(ersion,)g(if)h(necessary)-6 b(.)2502 2866 y Fj(1)146 3022 y Fr(T)e(o)20 b(implement)e(distrib)n (uted)g(garbage)i(collection,)f(the)h(Manta)g(RMI)g(protocol)f(also)g (k)o(eeps)h(track)g(of)g(object)0 3142 y(references)30 b(that)e(cross)h(machine)f(boundaries.)42 b(Manta)29 b(uses)f(a)h(mark-and-sweep)g(algorithm)e(\(e)o(x)o(ecuted)h(by)0 3263 y(a)37 b(separate)g(thread\))g(for)f(local)h(garbage)f(collection) g(and)g(a)h(reference)h(counting)d(mechanism)h(for)g(remote)0 3383 y(objects.)146 3504 y(The)25 b(serialization)e(of)h(method)f(ar)n (guments)h(is)f(an)i(important)e(source)h(of)g(o)o(v)o(erhead)g(of)g(e) o(xisting)e(RMI)j(im-)0 3624 y(plementations.)i(Serialization)20 b(tak)o(es)g(Ja)n(v)n(a)f(objects)g(and)h(con)l(v)o(erts)g (\(serializes\))g(them)f(into)g(an)h(array)h(of)f(bytes.)0 3744 y(The)26 b(JDK)g(serialization)f(protocol)g(is)h(written)f(in)h (Ja)n(v)n(a)f(and)h(uses)g(re\003ection)h(to)e(determine)h(the)g(type)f (of)h(each)0 3865 y(object)i(during)g(run)h(time.)41 b(W)l(ith)28 b(Manta,)h(all)f(serialization)g(code)h(is)f(generated)h (by)f(the)h(compiler)l(,)f(a)n(v)n(oiding)0 3985 y(the)i(o)o(v)o (erhead)g(of)g(dynamic)f(type)h(inspection.)46 b(The)30 b(compiler)g(generates)g(a)h(specialized)f(serialization)f(and)0 4106 y(deserialization)i(routine)h(for)g(e)n(v)o(ery)g(class.)53 b(Pointers)31 b(to)h(these)g(routines)g(are)h(stored)e(in)h(the)g (method)f(table.)0 4226 y(The)f(Manta)g(serialization)f(protocol)g (optimizes)f(simple)h(cases.)46 b(F)o(or)30 b(e)o(xample,)g(an)h(array) f(whose)g(elements)0 4346 y(are)25 b(of)g(a)g(primiti)n(v)o(e)d(type)j (is)f(serialized)h(by)f(doing)g(a)h(direct)f(memory-cop)o(y)g(into)g (the)h(message)f(b)n(uf)n(fer)l(,)h(which)0 4467 y(sa)n(v)o(es)i(tra)n (v)o(ersing)f(the)h(array)-6 b(.)38 b(Compiler)27 b(generation)g(of)g (serialization)g(is)f(one)i(of)f(the)g(major)g(impro)o(v)o(ements)0 4587 y(of)e(Manta)f(o)o(v)o(er)g(the)h(JDK)f([25].)p 0 4671 1560 4 v 115 4734 a Fi(1)149 4764 y Fh(Manta)g(supports)f(the)h (serialization)f(and)g(deserialization)g(protocols)f(needed)h(to)h (support)f(heterogeneous)e(systems,)k(b)n(ut)f(the)0 4864 y(underlying)17 b(P)o(anda)j(library)f(does)h(not)g(yet)g(support) f(heterogeneity)-5 b(,)17 b(as)k(it)g(does)f(not)f(do)h(byte-con)m(v)o (ersions)d(on)i(its)j(headers)d(yet.)1925 5589 y Fr(4)p eop %%Page: 5 5 5 4 bop 0 100 a Fn(2.3)119 b(Manta)30 b(on)g(the)g(wide)h(ar)n(ea)e(D)l (AS)i(system)0 287 y Fr(T)-8 b(o)31 b(implement)f(Ja)n(v)n(a)h(on)g(a)g (wide-area)i(system)d(lik)o(e)h(D)l(AS,)g(the)g(most)f(important)g (problem)h(is)g(ho)n(w)f(to)h(deal)0 408 y(with)f(the)h(dif)n(ferent)f (communication)f(netw)o(orks)h(that)g(e)o(xist)g(within)f(and)i (between)g(clusters.)48 b(As)30 b(described)0 528 y(in)24 b(Section)h(2.1,)f(we)g(assume)g(that)g(wide-area)i(parallel)e(systems) f(are)i(hierarchically)g(structured)f(and)g(consist)0 648 y(of)34 b(multiple)f(parallel)h(machines)g(\(clusters\))g (connected)h(by)f(wide)g(area)h(netw)o(orks.)59 b(The)34 b(LANs)g(\(or)h(MPP)0 769 y(interconnects\))d(used)h(within)e(a)j (cluster)e(typically)g(are)h(v)o(ery)g(f)o(ast,)i(so)d(it)h(is)f (important)f(that)i(the)f(communi-)0 889 y(cation)37 b(protocols)e(used)i(for)g(intra-cluster)g(communication)e(are)i(as)g (ef)n(\002cient)g(as)g(possible.)66 b(Inter)n(-cluster)0 1010 y(communication)23 b(\(o)o(v)o(er)h(the)h(W)-12 b(AN\))25 b(necessarily)f(is)g(slo)n(wer)-5 b(.)146 1130 y(Most)27 b(Ja)n(v)n(a)g(RMI)h(implementations)d(are)j(b)n(uilt)e(on)h (top)g(of)h(TCP/IP)-11 b(.)28 b(Using)f(a)h(standard)f(communication)0 1250 y(protocol)36 b(eases)g(the)h(implementation)d(of)i(RMI,)h(b)n(ut) f(also)g(has)h(a)f(major)g(performance)h(penalty)-6 b(.)65 b(TCP/IP)0 1371 y(w)o(as)34 b(not)g(designed)f(for)i(parallel)f (processing,)i(and)e(therefore)h(has)f(a)h(v)o(ery)e(high)h(o)o(v)o (erhead)f(on)h(f)o(ast)h(LANs)0 1491 y(such)28 b(as)h(Myrinet.)40 b(F)o(or)28 b(the)h(Manta)f(system,)g(we)g(therefore)h(use)f(dif)n (ferent)g(protocols)g(for)g(intra-cluster)g(and)0 1611 y(inter)n(-cluster)c(communication.)146 1732 y(T)-8 b(o)21 b(obtain)g(a)h(modular)e(and)h(portable)g(system,)g(Manta)g(is)g (implemented)f(on)h(top)g(of)g(a)h(separate)f(communi-)0 1852 y(cation)i(library)-6 b(,)23 b(called)h(P)o(anda)g([3].)30 b(P)o(anda)24 b(pro)o(vides)e(communication)g(and)h(multithreading)f (primiti)n(v)o(es)f(that)0 1973 y(are)28 b(designed)f(to)g(be)h(used)f (for)h(implementing)d(runtime)i(systems)f(of)h(v)n(arious)g(parallel)g (languages.)39 b(P)o(anda')-5 b(s)0 2093 y(communication)20 b(primiti)n(v)o(es)g(include)h(point-to-point)f(message)i(passing,)g (RPC,)h(and)g(broadcast.)29 b(The)23 b(prim-)0 2213 y(iti)n(v)o(es)d (are)i(independent)f(of)h(the)f(operating)g(system)g(or)g(netw)o(ork,)h (which)f(eases)h(porting)f(of)h(languages)f(imple-)0 2334 y(mented)27 b(on)h(top)f(of)h(P)o(anda.)39 b(The)28 b(implementation)d(of)j(P)o(anda,)g(ho)n(we)n(v)o(er)l(,)f(is)h (structured)f(in)g(such)h(a)g(w)o(ay)g(that)0 2454 y(it)j(can)h(e)o (xploit)e(an)o(y)i(useful)f(functionality)f(pro)o(vided)g(by)i(the)f (underlying)g(system)f(\(e.g.,)k(reliable)d(message)0 2575 y(passing)24 b(or)h(broadcast\),)f(which)h(mak)o(es)f (communication)f(ef)n(\002cient)i([3].)146 2695 y(P)o(anda)i(has)g (been)h(implemented)d(on)i(a)g(v)n(ariety)f(of)h(machines,)g(operating) f(systems,)h(and)f(netw)o(orks.)37 b(The)0 2815 y(implementation)e(of)i (Manta)g(and)g(P)o(anda)h(on)f(the)g(wide-area)h(D)l(AS)g(system)e(is)h (sho)n(wn)f(in)h(Figure)g(2.)68 b(F)o(or)0 2936 y(intra-cluster)28 b(communication)e(o)o(v)o(er)h(Myrinet,)h(P)o(anda)g(internally)f(uses) g(the)h(LFC)h(communication)d(system)0 3056 y([6].)48 b(LFC)32 b(is)e(a)h(highly)e(ef)n(\002cient,)j(user)n(-space)f (communication)e(substrate)h(for)g(Myrinet,)h(similar)f(to)g(acti)n(v)o (e)0 3176 y(messages.)146 3297 y(F)o(or)g(inter)n(-cluster)f (communication)f(o)o(v)o(er)h(the)g(wide-area)i(A)-11 b(TM)29 b(netw)o(ork,)h(P)o(anda)g(uses)g(one)f(dedicated)0 3417 y Fq(gate)o(way)38 b Fr(machine)g(per)h(cluster)-5 b(.)70 b(The)39 b(gate)n(w)o(ays)e(also)h(implement)f(the)h(P)o(anda)g (primiti)n(v)o(es,)h(b)n(ut)f(support)0 3538 y(communication)29 b(o)o(v)o(er)h(both)g(Myrinet)g(and)g(A)-11 b(TM.)30 b(A)h(gate)n(w)o(ay)f(can)h(communicate)f(with)g(the)g(machines)g(in)0 3658 y(its)c(local)g(cluster)l(,)h(using)e(LFC)j(o)o(v)o(er)e(Myrinet.) 35 b(In)26 b(addition,)g(it)g(can)h(communicate)e(with)h(gate)n(w)o (ays)g(of)g(other)0 3778 y(clusters,)h(using)f(TCP/IP)i(o)o(v)o(er)e(A) -11 b(TM.)26 b(The)h(gate)n(w)o(ay)g(machines)f(thus)g(forw)o(ard)h (traf)n(\002c)h(to)f(and)g(from)f(remote)0 3899 y(clusters.)k(In)25 b(this)e(w)o(ay)-6 b(,)24 b(the)h(e)o(xistence)e(of)i(multiple)e (clusters)h(is)g(transparent)g(to)g(the)h(Manta)f(runtime)f(system.)0 4019 y(Manta')-5 b(s)31 b(RMI)h(protocol)g(simply)e(in)l(v)n(ok)o(es)h (P)o(anda')-5 b(s)32 b(communication)e(primiti)n(v)o(es,)h(which)g (internally)g(calls)0 4139 y(LFC)26 b(and/or)e(TCP/IP)-11 b(.)146 4260 y(The)35 b(resulting)e(Ja)n(v)n(a)h(system)f(thus)h(is)f (highly)h(transparent,)i(both)e(for)g(the)g(programmer)g(and)h(the)f (RMI)0 4380 y(implementor)-5 b(.)52 b(The)32 b(system)f(hides)h(se)n(v) o(eral)g(complicated)g(issues)f(from)h(the)h(programmer)-5 b(.)53 b(F)o(or)32 b(e)o(xample,)0 4501 y(it)g(uses)g(a)h(combination)d (of)j(acti)n(v)o(e)e(messages)h(and)h(TCP/IP)-11 b(,)33 b(b)n(ut)f(the)g(application)f(programmer)h(sees)h(only)0 4621 y(a)28 b(single)e(communication)g(primiti)n(v)o(e)f(\(RMI\).)j (Lik)o(e)n(wise,)f(Ja)n(v)n(a)g(hides)g(an)o(y)g(dif)n(ferences)h(in)f (processor)n(-types)0 4741 y(from)e(the)f(programmer)-5 b(.)146 4862 y(As)38 b(stated)f(before,)k(parallel)d(applications)e (often)i(ha)n(v)o(e)f(to)g(be)h(a)o(w)o(are)g(of)g(the)g(structure)f (of)h(the)f(wide-)0 4982 y(area)j(system,)g(so)f(the)o(y)e(can)i (minimize)e(communication)g(o)o(v)o(er)h(the)g(wide-area)i(links.)70 b(Manta)39 b(programs)0 5103 y(therefore)21 b(can)g(\002nd)g(out)e(ho)n (w)h(man)o(y)f(clusters)h(there)h(are)g(and)g(to)f(which)g(cluster)g(a) h(gi)n(v)o(en)e(machine)h(belongs.)28 b(In)0 5223 y(Section)20 b(3,)h(we)g(will)e(gi)n(v)o(e)g(se)n(v)o(eral)g(e)o(xamples)g(of)i(ho)n (w)e(this)g(information)g(can)i(be)f(used)g(to)g(optimize)f(programs.) 1925 5589 y(5)p eop %%Page: 6 6 6 5 bop 1292 100 4 100 v 1292 100 V 1588 70 a Fh(Myrinet)p 2149 100 V 635 w(A)-9 b(TM)p 1292 199 V 1343 169 a(Latenc)o(y)98 b(Throughput)p 2149 199 V 96 w(Latenc)o(y)f(Throughput)p 1292 299 V 1480 269 a(\()p Ff(\265s)p Fh(\))150 b(\(MByte/s\))p 2149 299 V 236 w(\()p Ff(\265s)p Fh(\))f(\(MByte/s\))p 892 302 2117 4 v 941 372 a(Manta)p 1292 402 4 100 v 310 w(42.3)345 b(38.0)p 2149 402 V 198 w(4350)f(0.55)941 472 y(Sun)20 b(JDK)p 1292 501 V 200 w(1228)345 b(4.66)p 2149 501 V 198 w(5570)f(0.55)612 661 y Fr(T)-8 b(able)25 b(1:)31 b(Latenc)o(y)24 b(and)h(maximum)e(throughput)g(of)i(Manta)f (and)h(Sun)g(JDK)0 1056 y Fn(2.4)119 b(P)n(erf)m(ormance)29 b(measur)n(ements)g(on)h(the)h(D)l(AS)f(system)0 1244 y Fr(T)-8 b(able)34 b(1)g(sho)n(ws)e(the)i(latenc)o(y)f(and)h (throughput)f(obtained)g(by)g(Manta)h(RMI)g(and)g(Sun)g(JDK)g(RMI)g(o)o (v)o(er)f(the)0 1364 y(Myrinet)i(LAN)g(and)h(the)g(A)-11 b(TM)35 b(W)-12 b(AN.)36 b(The)f(latencies)h(are)g(measured)g(for)g (null-RMIs,)h(which)f(tak)o(e)g(zero)0 1484 y(parameters)24 b(and)g(do)g(not)f(return)h(a)h(result.)k(The)24 b(maximum)f (throughputs)f(are)i(measured)g(for)g(RMIs)h(that)e(tak)o(e)0 1605 y(a)35 b(lar)n(ge)g(array)g(as)g(parameter)-5 b(.)59 b(The)35 b(Manta)f(measurements)g(were)h(run)f(on)g(the)h(Linux)e (operating)h(system.)0 1725 y(W)l(ith)27 b(Sun)g(JDK)g(o)o(v)o(er)g(A) -11 b(TM,)26 b(we)i(used)f(JDK)g(v)o(ersion)f(1.1.6)h(on)g(Linux.)37 b(The)28 b(performance)g(of)f(the)g(JDK)g(on)0 1845 y(Myrinet)c(w)o(as) i(measured)f(on)g(BSD/OS)h(\(using)f(the)g(JDK)g(1.1.4\),)g(because)h (we)f(do)g(not)g(ha)n(v)o(e)g(a)h(Linux)e(port)h(of)0 1966 y(the)h(JDK)f(on)h(Myrinet)f(yet.)146 2086 y(F)o(or)h (intra-cluster)e(communication)g(o)o(v)o(er)g(Myrinet,)g(Manta)h(is)g (much)g(f)o(aster)h(than)f(the)g(JDK,)g(which)f(uses)0 2207 y(a)g(slo)n(w)e(serialization)g(and)h(RMI)h(protocol,)e(e)o(x)o (ecuted)h(using)f(a)h(byte)g(code)h(interpreter)-5 b(.)29 b(Manta)22 b(uses)g(f)o(ast)g(seri-)0 2327 y(alization)f(routines)f (generated)i(by)f(the)h(compiler)l(,)f(a)h(light-weight)d(RMI)j (protocol,)f(and)h(an)f(ef)n(\002cient)h(commu-)0 2447 y(nication)i(protocol)f(\(P)o(anda\).)31 b(The)25 b(maximum)d (throughput)h(of)i(Manta)f(is)g(38.0)g(MByte/sec.)30 b(A)25 b(performance)0 2568 y(breakdo)n(wn)f(of)h(Manta)f(RMI)h(and)g (JDK)g(RMI)g(is)f(gi)n(v)o(en)g(in)g([25].)146 2688 y(F)o(or)g(inter)n (-cluster)f(communication)e(o)o(v)o(er)i(A)-11 b(TM,)23 b(we)h(used)f(the)g(wide)g(area)i(link)e(between)g(the)g(D)l(AS)h (clus-)0 2808 y(ters)34 b(at)h(VU)f(Amsterdam)f(and)h(TU)h(Delft)f (\(see)g(Figure)h(1\),)i(which)d(has)g(the)g(longest)f(latenc)o(y)h (\(and)g(lar)n(gest)0 2929 y(distance\))e(of)g(the)g(D)l(AS)h (wide-area)g(links.)52 b(The)32 b(dif)n(ference)h(in)f(wide-area)h(RMI) g(latenc)o(y)e(between)h(Manta)0 3049 y(and)d(the)f(JDK)g(is)h(1.2)f (msec.)42 b(Both)28 b(Manta)g(and)h(the)g(JDK)f(achie)n(v)o(e)g(a)h (maximum)e(wide-area)i(throughput)e(of)0 3170 y(0.55)d(MByte/sec,)h (which)f(is)g(almost)g(75\045)g(of)h(the)g(hardw)o(are)g(bandwidth)e (\(6)i(Mbit/sec\).)30 b(The)25 b(dif)n(ferences)f(in)0 3290 y(wide-area)j(latenc)o(y)e(between)h(Manta)f(and)h(the)g(JDK)f (are)i(due)e(to)h(Manta')-5 b(s)25 b(more)g(ef)n(\002cient)h (serialization)f(and)0 3410 y(RMI)g(protocols,)f(since)g(both)g (systems)g(use)h(the)f(same)h(communication)e(layer)i(\(TCP/IP\))h(o)o (v)o(er)e(A)-11 b(TM.)0 3750 y Fs(3)143 b(A)l(pplication)34 b(experience)0 3973 y Fr(W)-8 b(e)35 b(implemented)e(four)i(parallel)g (Ja)n(v)n(a)f(applications)g(that)g(communicate)g(via)h(RMI.)g (Initially)-6 b(,)35 b(the)g(appli-)0 4094 y(cations)f(were)g(designed) g(for)h(homogeneous)d(\(local)i(area\))i(netw)o(orks.)58 b(W)-8 b(e)35 b(adapted)f(these)g(single)f(cluster)0 4214 y(v)o(ersions)23 b(to)g(e)o(xploit)f(the)i(hierarchical)g (structure)g(of)g(the)f(wide-area)i(system)e(by)g(minimizing)f(the)h (communi-)0 4335 y(cation)h(o)o(v)o(erhead)g(o)o(v)o(er)g(the)h(wide)f (area)i(links,)e(using)f(optimizations)g(similar)g(to)h(those)h (described)f(in)h([4,)f(29].)0 4455 y(Belo)n(w)-6 b(,)32 b(we)f(brie\003y)g(discuss)f(the)h(original)f(\(single)g(cluster\))h (applications)e(as)j(well)e(as)h(the)g(wide-area)h(opti-)0 4575 y(mized)h(programs)h(and)g(we)g(gi)n(v)o(e)e(performance)j (measurements)e(on)g(the)h(D)l(AS)g(system.)57 b(W)-8 b(e)34 b(only)f(present)0 4696 y(results)26 b(for)i(Manta,)f(as)g (other)g(competiti)n(v)o(e)d(Ja)n(v)n(a)j(platforms)f(\(e.g.,)h(the)g (JDK)g(and)g(Kaf)n(fe\))h(are)f(not)g(yet)g(a)n(v)n(ail-)0 4816 y(able)e(on)f(the)h(D)l(AS)g(system)f(\(using)g(Myrinet)g(and)h (Linux\).)146 4937 y(F)o(or)g(each)h(of)f(the)g(four)h(programs,)e(we)h (will)g(analyze)g(its)f(performance)i(on)f(the)g(wide-area)h(D)l(AS)f (system,)0 5057 y(using)35 b(the)h(follo)n(wing)e(approach.)64 b(The)36 b(goal)f(of)h(wide-area)h(parallel)f(programming)e(is)i(to)f (obtain)g(higher)0 5177 y(speedups)25 b(on)h(multiple)e(clusters)i (than)f(on)h(a)g(single)f(cluster)-5 b(.)33 b(Therefore,)27 b(we)g(ha)n(v)o(e)e(measured)h(the)g(speedups)0 5298 y(of)33 b(each)h(program)f(on)g(a)g(single)g(D)l(AS)g(cluster)g(and)g (on)g(four)h(D)l(AS)f(clusters,)i(the)e(latter)g(with)f(and)i(without) 1925 5589 y(6)p eop %%Page: 7 7 7 6 bop 0 100 a Fr(wide-area)38 b(optimizations.)64 b(In)36 b(addition,)j(we)e(ha)n(v)o(e)f(measured)h(the)f(speedups)g(on)h(a)g (single)e(cluster)i(with)0 220 y(the)e(same)f(total)g(number)g(of)h (nodes,)h(to)f(determine)f(ho)n(w)g(much)g(performance)h(is)f(lost)g (by)g(using)g(multiple)0 340 y(distrib)n(uted)28 b(clusters)h(instead)g (of)g(one)h(big)f(centralized)g(cluster)-5 b(.)44 b(\(All)29 b(speedups)g(are)i(computed)d(relati)n(v)o(e)g(to)0 461 y(the)d(same)f(program)h(on)f(a)h(single)f(machine.\))146 581 y(The)e(results)f(are)h(sho)n(wn)e(in)h(Figure)h(7.)30 b(The)21 b(\002gure)h(contains)f(four)h(bars)f(for)h(each)g (application,)f(gi)n(ving)f(the)0 702 y(speedups)28 b(on)h(a)g(single)f (cluster)h(of)g(16)f(nodes,)i(four)f(clusters)f(of)h(16)g(nodes)f(each) i(\(with)e(and)h(without)e(wide-)0 822 y(area)j(a)o(w)o(are)g (optimizations\),)d(and)i(a)h(single)e(cluster)h(of)g(64)g(nodes.)43 b(The)29 b(dif)n(ference)g(between)g(the)g(\002rst)h(tw)o(o)0 942 y(bars)23 b(thus)f(indicates)h(the)f(performance)i(gain)e(by)h (using)f(multiple)f(16-node)i(clusters)f(\(at)h(dif)n(ferent)g (locations\))0 1063 y(instead)f(of)h(a)f(single)g(16-node)g(cluster)l (,)h(without)e(an)o(y)h(change)h(to)f(the)h(application)e(source.)30 b(The)23 b(performance)0 1183 y(gain)i(achie)n(v)o(ed)g(by)h(the)g (wide-area)h(optimizations)d(can)i(be)g(seen)g(from)g(the)g(dif)n (ference)g(between)g(the)g(second)0 1303 y(and)g(the)g(third)f(bar)h (of)g(each)g(application.)33 b(Comparing)25 b(the)h(second)g(and)g(the) f(third)h(bars)f(with)h(the)f(fourth)h(bar)0 1424 y(sho)n(ws)h(ho)n(w)g (much)g(performance)i(is)e(lost)g(\(without)g(and)h(with)f(wide-area)i (optimizations\))d(due)i(to)f(the)h(slo)n(w)0 1544 y(wide-area)e(netw)o (ork.)k(\(The)25 b(64-node)f(cluster)h(uses)f(the)h(f)o(ast)g(Myrinet)f (netw)o(ork)g(between)h(all)f(nodes.\))0 1839 y Fn(3.1)119 b(Successi)o(v)o(e)30 b(Ov)o(err)n(elaxation)0 2027 y Fr(Red/black)24 b(Successi)n(v)o(e)g(Ov)o(errelaxation)f(\(SOR\))j(is)e (an)g(iterati)n(v)o(e)f(method)g(for)i(solving)e(discretized)h(Laplace) 0 2147 y(equations)31 b(on)g(a)i(grid.)51 b(Here,)34 b(it)e(is)f(used)g(as)h(an)g(e)o(xample)f(of)h(nearest)g(neighbor)g (parallelization)e(methods.)0 2268 y(SOR)f(is)f(an)g(iterati)n(v)o(e)e (algorithm)h(that)h(performs)f(multiple)g(passes)g(o)o(v)o(er)h(a)g (rectangular)g(grid,)h(until)e(the)h(grid)0 2388 y(changes)d(less)g (than)f(a)i(certain)f(v)n(alue,)f(or)i(a)f(\002x)o(ed)g(number)f(of)i (iterations)d(has)i(been)h(reached.)32 b(The)25 b(ne)n(w)g(v)n(alue)0 2509 y(of)g(a)g(grid)f(point)g(is)g(computed)g(using)f(a)i(stencil)f (operation,)g(which)g(depends)h(only)f(on)g(the)h(pre)n(vious)e(v)n (alue)h(of)0 2629 y(the)h(point)e(itself)i(and)f(its)g(four)h (neighbors)f(on)h(the)f(grid.)146 2749 y(The)33 b(sk)o(eleton)f(code)g (for)h(the)g(single-cluster)e(parallel)h(Ja)n(v)n(a)h(program)f(for)h (SOR)g(is)f(gi)n(v)o(en)f(in)h(Figure)h(3.)0 2870 y(The)i(parallel)h (algorithm)e(we)h(use)h(distrib)n(utes)d(the)j(grid)f(ro)n(w-wise)f (among)h(the)g(a)n(v)n(ailable)g(processors,)i(so)0 2990 y(each)22 b(machine)e(is)h(assigned)f(se)n(v)o(eral)g(contiguous)f(ro)n (ws)i(of)g(the)g(grid,)g(denoted)f(by)h(the)g(interv)n(al)f Fq(LB)h Fr(to)g Fq(UB)g Fr(\(for)0 3110 y(lo)n(wer)e(bound)f(and)i (upper)f(bound\).)28 b(Each)20 b(processor)f(runs)g(a)h(Ja)n(v)n(a)f (thread)g(of)h(class)f Fq(SOR)p Fr(,)g(which)g(performs)g(the)0 3231 y(SOR)30 b(iterations)d(until)h(the)g(program)g(con)l(v)o(er)n (ges)h(\(see)g(the)f Fq(run)h Fr(method\).)41 b(Each)29 b(iteration)f(has)g(tw)o(o)g(phases,)0 3351 y(for)i(the)f(red)h(and)f (black)h(grid)f(points.)43 b(The)30 b(processes)f(are)h(logically)f(or) n(ganized)g(in)g(a)h(linear)f(array)-6 b(.)45 b(Due)29 b(to)0 3472 y(the)d(stencil)f(operations)g(and)g(the)h(ro)n(w-wise)f (distrib)n(ution,)f(e)n(v)o(ery)h(process)h(needs)f(one)h(ro)n(w)f(of)h (the)g(grid)f(from)0 3592 y(its)i(left)g(neighbor)f(\(ro)n(w)h Fq(LB)15 b Fe(\000)g Fr(1\))28 b(and)f(one)g(ro)n(w)g(from)g(its)g (right)f(neighbor)h(\(ro)n(w)22 b Fq(U)10 b(B)15 b Fm(+)g Fr(1\).)37 b(\(Exceptions)26 b(are)0 3712 y(made)f(for)g(the)f(\002rst) h(and)g(last)f(process,)h(b)n(ut)f(we)h(ha)n(v)o(e)g(omitted)e(this)h (from)h(our)f(sk)o(eleton)g(code.\))146 3833 y(At)30 b(the)g(be)o(ginning)e(of)j(e)n(v)o(ery)e(iteration,)i(each)f(sla)n(v)o (e)g(process)g(e)o(xchanges)g(ro)n(ws)f(with)g(its)h(left)g(and)g (right)0 3953 y(neighbors)23 b(and)h(then)g(updates)f(its)g(part)h(of)g (the)g(grid)f(using)g(this)g(boundary)h(information)e(from)i(its)f (neighbors.)0 4073 y(The)d(ro)n(w)g(e)o(xchange)g(is)f(implemented)g (using)g(a)h(remote)g(object)g(of)g(class)g Fq(Bin)f Fr(on)h(each)h(processor)-5 b(.)28 b(This)20 b(object)0 4194 y(is)k(a)h(b)n(uf)n(fer)g(that)g(can)g(contain)f(at)h(most)f(one)g (ro)n(w)-6 b(.)30 b(It)25 b(has)g(synchronized)f(methods)f(to)i(put)f (and)h(get)f(data.)146 4314 y(On)k(a)g(local)f(cluster)h(with)f(a)h(f)o (ast)g(switch-based)f(interconnect)g(\(lik)o(e)g(Myrinet\),)h(the)g(e)o (xchange)f(between)0 4435 y(neighbors)f(adds)i(little)e(o)o(v)o (erhead,)h(so)g(parallel)g(SOR)i(obtains)d(a)i(high)e(ef)n(\002cienc)o (y)-6 b(.)38 b(On)27 b(a)h(wide-area)g(system,)0 4555 y(ho)n(we)n(v)o(er)l(,)22 b(the)h(communication)e(o)o(v)o(erhead)h (between)h(neighbors)f(that)h(are)g(located)g(in)g(dif)n(ferent)g (clusters)f(will)0 4675 y(be)h(high,)f(as)h(such)f(communication)f (uses)i(the)f(W)-12 b(AN.)23 b(The)g(Ja)n(v)n(a)f(program)g(allocates)h (neighboring)e(processes)0 4796 y(to)29 b(the)g(same)h(cluster)f(as)g (much)g(as)h(possible,)f(b)n(ut)g(the)g(\002rst)g(and/or)g(last)g (process)h(in)f(each)h(cluster)f(will)f(ha)n(v)o(e)0 4916 y(a)36 b(neighbor)g(in)g(a)g(remote)g(cluster)-5 b(.)64 b(T)-8 b(o)36 b(hide)g(the)g(high)f(latenc)o(y)g(for)i(such)f (inter)n(-cluster)f(communication,)0 5037 y(the)e(wide-area)g (optimized)f(program)g(uses)h(split-phase)e(communication)g(for)i(e)o (xchanging)f(ro)n(ws)g(between)0 5157 y(clusters,)h(as)g(sho)n(wn)e(in) h(Figure)g(4.)53 b(It)32 b(\002rst)h(initiates)d(an)j(asynchronous)e (send)h(for)g(its)g(boundary)g(ro)n(ws)f(and)0 5277 y(then)j(computes)e (on)i(the)g(inner)g(ro)n(ws)f(of)h(the)f(matrix.)58 b(When)34 b(this)f(w)o(ork)g(is)h(\002nished,)h(a)g(blocking)d(recei)n(v)o(e)1925 5589 y(7)p eop %%Page: 8 8 8 7 bop 0 46 a Fd(public)37 b(remote)g(class)g(Bin)f({)141 125 y(public)h(synchronized)i(void)d(put\(double)i([])e(row\))h({)282 204 y(Wait)g(until)f(the)h(bin)f(is)g(empty)g(and)g(save)h(the)f(new)g (row.)141 283 y(})141 440 y(public)h(synchronized)i(double)e([])f (get\(\))g({)282 519 y(Wait)h(until)f(the)h(bin)f(is)g(full)g(and)g (return)h(the)f(row.)141 598 y(})0 677 y(})0 835 y(public)h(remote)g (class)g(SOR)f(extends)h(RemoteThread)i({)141 914 y(private)e(Bin)g (leftBin,)g(rightBin;)179 b(//)36 b(Remote)h(bins)f(of)g(left)h(and)f (right)h(neighbors.)141 993 y(private)g(Bin)g(myLeftBin,)h(myRightBin;) g(//)e(My)g(own)g(bin)g(objects.)141 1071 y(private)h(double[][])i (matrix;)319 b(//)36 b(The)g(matrix)h(we)f(are)g(calculating)j(on.)141 1229 y(public)e(void)g(sendRows\(\))h({)282 1308 y (leftBin.put\(matrix[LB])q(\);)77 b(//)36 b(synchronous)i(RMI)e (\(first)h(row)f(of)g(my)g(partition\))282 1387 y (rightBin.put\(matrix[UB)q(]\);)42 b(//)36 b(synchronous)i(RMI)e (\(last)h(row)f(of)g(my)g(partition\))141 1466 y(})141 1624 y(public)h(void)g(receiveRows\(\))i({)282 1702 y(matrix[LB-1])g(=) d(myLeftBin.get\(\);)282 1781 y(matrix[UB+1])j(=)d(myRightBin.get\(\);) 141 1860 y(})141 2018 y(public)h(void)g(run\(\))f({)282 2097 y(do)g({)142 b(//)35 b(do)h(red/black)i(SOR)e(on)g(the)g(interval) i(LB)e(..)g(UB)353 2176 y(sendRows\(\);)144 b(//)36 b(Send)g(rows)h(LB) f(and)g(UB)g(to)g(neighbors)353 2255 y(receiveRows\(\);)j(//)d(Receive) h(rows)g(LB-1)f(and)g(UB+1)353 2333 y(Calculate)i(red)e(fields)h(in)f (local)g(rows)h(LB)f(...)g(UB)353 2491 y(sendRows\(\);)144 b(//)36 b(Send)g(rows)h(LB)f(and)g(UB)g(to)g(neighbors)353 2570 y(receiveRows\(\);)j(//)d(Receive)h(rows)g(LB-1)f(and)g(UB+1)353 2649 y(Calculate)i(black)e(fields)h(in)f(local)h(rows)f(LB)g(...)g(UB) 282 2807 y(})g(while)h(\(....\))141 2885 y(})0 2964 y(})596 3276 y Fr(Figure)25 b(3:)30 b(Code)25 b(sk)o(eleton)f(for)h(SOR,)h (implementation)c(for)j(single)f(cluster)-5 b(.)0 3563 y(for)28 b(the)g(boundary)g(data)g(from)g(the)g(neighboring)f(machines) g(is)h(done,)h(after)g(which)e(the)h(boundary)g(ro)n(ws)f(are)0 3683 y(computed.)146 3804 y(The)32 b(optimization)e(is)i(a)o(wkw)o(ard) g(to)g(e)o(xpress)f(in)h(Ja)n(v)n(a,)h(since)f(Ja)n(v)n(a)g(lacks)g (asynchronous)f(communica-)0 3924 y(tion.)j(It)26 b(is)f(implemented)g (by)g(using)g(a)i(separate)f(thread)g(\(of)h(class)f Fq(SenderThr)l(ead)s Fr(\))f(for)i(sending)e(the)h(bound-)0 4044 y(ary)j(data.)41 b(T)-8 b(o)28 b(send)g(a)g(ro)n(w)g(to)g(a)g (process)h(on)f(a)g(remote)g(cluster)l(,)h(the)f(ro)n(w)g(is)g(\002rst) g(gi)n(v)o(en)f(to)g(a)i(ne)n(wly)e(created)0 4165 y(SenderThread;)g (this)e(thread)h(will)f(then)h(put)f(the)h(ro)n(w)g(into)f(the)g(Bin)i (object)e(of)h(the)g(destination)e(process)i(on)g(a)0 4285 y(remote)e(cluster)l(,)g(using)f(an)h(RMI.)h(During)e(the)h(RMI,)h (the)f(original)f(SOR)i(process)f(can)h(continue)e(computing,)0 4406 y(so)29 b(communication)e(o)o(v)o(er)h(the)h(wide-area)h(netw)o (ork)f(is)g(o)o(v)o(erlapped)f(with)g(computation.)42 b(F)o(or)29 b(communica-)0 4526 y(tion)23 b(within)g(a)h(cluster)l(,)g (the)g(o)o(v)o(erhead)g(of)g(e)o(xtra)g(thread-switches)f(slightly)f (outweighs)h(the)h(bene\002ts,)g(so)g(only)0 4646 y(inter)n(-cluster)g (communication)f(is)h(handled)h(in)f(this)g(w)o(ay)h(\(see)g(the)g (method)f Fq(sendRows)p Fr(\).)146 4767 y(The)35 b(performance)f(of)g (the)g(SOR)h(program)f(is)g(sho)n(wn)f(in)h(Figure)g(7.)59 b(W)-8 b(e)34 b(ran)h(a)f(problem)g(with)f(a)i(grid)0 4887 y(size)d(of)f(4096)16 b Fe(\002)g Fr(4096)31 b(and)h(a)g(\002x)o (ed)f(number)g(of)h(64)f(iterations.)50 b(The)32 b(program)f(obtains)f (a)i(high)f(ef)n(\002cienc)o(y)0 5008 y(on)g(a)h(single)e(cluster)i (\(a)g(speedup)f(of)g(61.1)g(on)g(64)g(processors\).)51 b(W)l(ithout)30 b(the)h(optimization,)g(SOR)h(on)f(the)0 5128 y(wide-area)f(system)d(achie)n(v)o(es)h(only)g(a)h(speedup)g(of)g (38)p Fo(:)p Fr(1)f(on)g(4)15 b Fe(\002)g Fr(16)30 b(processors.)42 b(W)l(ith)28 b(the)h(latenc)o(y-hiding)0 5248 y(optimization,)35 b(the)g(speedup)f(increases)h(to)g(59)p Fo(:)p Fr(7,)h(which)f(is)f (close)h(to)g(the)f(speedup)h(on)f(a)i(single)e(64-node)1925 5589 y(8)p eop %%Page: 9 9 9 8 bop 0 46 a Fd(public)37 b(class)g(SenderThread)h(implements)h (Runnable)e({)141 125 y(private)g(Bin)g(dest;)141 204 y(private)g(double[])h(row;)141 362 y(public)f(SenderThread\(Bin)j (dest,)d(double[])g(row\))g({)282 440 y(this.dest)h(=)e(dest;)282 519 y(this.row)i(=)d(row;)141 598 y(})141 756 y(public)i(void)g (run\(\))f({)282 835 y(dest.put\(row\);)141 914 y(})0 993 y(})0 1150 y(public)h(remote)g(class)g(Bin)f({)141 1229 y(//)g(same)g(as)g(in)g(single-cluster)j(implementation)0 1308 y(})0 1466 y(public)e(remote)g(class)g(SOR)f(extends)h (RemoteThread)i({)141 1545 y(private)e(Bin)g(leftBin,)g(rightBin;)h(//) e(Remote)h(bins)f(of)g(left)h(and)f(right)g(neighbors.)141 1624 y(private)h(Bin)g(myLeftBin,)h(myRightBin;)g(//)e(My)g(own)g(bin)g (objects.)141 1781 y(public)h(void)g(sendRows\(\))h({)282 1860 y(if)e(\(leftBoundary\))j({)71 b(//)36 b(Am)g(I)g(at)f(a)h (cluster)h(boundary?)423 1939 y(new)g(SenderThread\(leftBin,)k (matrix[LB]\).start\(\);)g(//)36 b(Asynchronous)i(send.)282 2018 y(})e(else)g({)423 2097 y(leftBin.put\(matrix[LB])q(\);)42 b(//)35 b(synchronous)k(RMI.)282 2176 y(})282 2333 y(Same)e(for)f(row)g (UB)g(to)g(right)g(neighbor)i(...)141 2412 y(})141 2570 y(public)f(void)g(receiveRows\(\))i({)282 2649 y(matrix[LB-1])g(=)d (myLeftBin.get\(\);)282 2728 y(matrix[UB+1])j(=)d(myRightBin.get\(\);) 141 2807 y(})141 2964 y(public)h(void)g(run\(\))f({)282 3043 y(do)g({)142 b(//)35 b(do)h(red/black)i(SOR)e(on)g(the)g(interval) i(LB)e(..)g(UB)353 3122 y(sendRows\(\);)144 b(//)36 b(Send)g(rows)h(LB) f(and)g(UB)g(to)g(neighbors)353 3201 y(Calculate)i(red)e(fields)h(in)f (local)g(rows)h(LB+1)f(...)g(UB-1)353 3280 y(receiveRows\(\);)j(//)d (Receive)h(rows)g(LB-1)f(and)g(UB+1)353 3359 y(Calculate)i(red)e (fields)h(in)f(local)g(rows)h(LB)f(and)g(UB)353 3516 y(sendRows\(\);)144 b(//)36 b(Send)g(rows)h(LB)f(and)g(UB)g(to)g (neighbors)353 3595 y(Calculate)i(black)e(fields)h(in)f(local)h(rows)f (LB+1)h(...)f(UB-1)353 3674 y(receiveRows\(\);)j(//)d(Receive)h(rows)g (LB-1)f(and)g(UB+1)353 3753 y(Calculate)i(black)e(fields)h(in)f(local)h (rows)f(LB)g(and)g(UB)282 3832 y(})g(while)h(\(....\))141 3911 y(})0 3990 y(})510 4301 y Fr(Figure)25 b(4:)30 b(Code)c(sk)o (eleton)e(for)h(SOR,)g(implementation)e(for)i(wide-area)g(system.)0 4588 y(cluster)-5 b(.)30 b(Latenc)o(y)24 b(hiding)g(thus)g(is)g(v)o (ery)h(ef)n(fecti)n(v)o(e)e(for)j(SOR.)0 4883 y Fn(3.2)119 b(All-pairs)31 b(Shortest)e(P)o(aths)h(Pr)n(oblem)0 5071 y Fr(The)g(All-pairs)e(Shortest)h(P)o(aths)h(\(ASP\))g(program)f (\002nds)h(the)f(shortest)g(path)g(between)g(an)o(y)g(pair)h(of)f (nodes)g(in)0 5191 y(a)f(graph,)f(using)g(a)g(parallel)g(v)o(ersion)f (of)i(Flo)o(yd')-5 b(s)26 b(algorithm.)37 b(The)27 b(program)g(uses)g (a)g(distance)g(matrix)g(that)g(is)0 5312 y(di)n(vided)i(ro)n(w-wise)h (among)g(the)g(a)n(v)n(ailable)g(processors.)48 b(At)30 b(the)g(be)o(ginning)f(of)i(iteration)e Fq(k)r Fr(,)j(all)e(processors) 1925 5589 y(9)p eop %%Page: 10 10 10 9 bop 0 100 a Fr(need)24 b(the)g(v)n(alue)g(of)g(the)g Fq(k)r Fr(th)g(ro)n(w)f(of)h(the)g(matrix.)30 b(The)24 b(most)f(ef)n(\002cient)h(method)g(for)g(e)o(xpressing)f(this)g(commu-) 0 220 y(nication)f(pattern)i(w)o(ould)e(be)i(to)f(let)g(the)g (processor)g(containing)f(this)h(ro)n(w)g(\(called)g(the)g(o)n(wner\))g (broadcast)h(it)e(to)0 340 y(all)i(the)g(others.)30 b(Unfortunately)-6 b(,)23 b(Ja)n(v)n(a)g(RMI)i(does)f(not)f(support)g(broadcasting,)h(so)f (this)h(cannot)f(be)i(e)o(xpressed)0 461 y(directly)30 b(in)g(Ja)n(v)n(a.)46 b(Instead,)32 b(we)e(simulate)f(the)h(broadcast)g (with)g(a)g(spanning)f(tree)i(algorithm)e(implemented)0 581 y(using)24 b(RMIs)h(and)f(threads.)146 702 y(The)29 b(sk)o(eleton)e(of)h(a)h(single-cluster)e(implementation)e(is)j(sho)n (wn)f(in)h(Figure)g(5.)41 b(Here,)29 b(all)f(processes)g(run)0 822 y(a)38 b(thread)h(of)f(class)g Fq(Asp)p Fr(.)70 b(F)o(or)38 b(broadcasting,)i(the)o(y)d(collecti)n(v)o(ely)f(call)i(their)g Fq(br)l(oadcast)g Fr(method.)70 b(Inside)0 942 y Fq(br)l(oadcast)p Fr(,)21 b(all)i(threads)g(e)o(xcept)f(the)h(ro)n(w)g(o)n(wner)f(w)o (ait)h(until)f(the)o(y)g(recei)n(v)o(e)g(the)h(ro)n(w)-6 b(.)29 b(The)23 b(o)n(wner)g(initiates)e(the)0 1063 y(broadcast)k(by)f (in)l(v)n(oking)f Fq(tr)o(ansfer)p Fr(,)g(which)h(arranges)h(all)g (processes)f(in)h(a)g(binary)f(tree)h(topology)-6 b(.)29 b(Such)c(a)g(tree)0 1183 y(broadcast)32 b(is)f(quite)g(ef)n(\002cient)h (inside)f(clusters)h(with)f(f)o(ast)h(local)f(netw)o(orks.)52 b Fq(tr)o(ansfer)32 b Fr(sends)f(the)h(ro)n(w)f(to)h(its)0 1303 y(left)d(and)h(right)f(children)g(in)g(the)g(tree,)i(using)e (daemon)g(threads)g(of)h(class)f Fq(Sender)p Fr(.)45 b(A)29 b Fq(Sender)j Fr(calls)d Fq(tr)o(ansfer)0 1424 y Fr(on)35 b(its)f(destination)g(node)h(which)f(recursi)n(v)o(ely)g (continues)g(the)h(broadcast.)62 b(F)o(or)35 b(high)f(ef)n(\002cienc)o (y)-6 b(,)37 b(sending)0 1544 y(inside)22 b(the)h(binary)f(tree)h(has)g (to)f(be)h(performed)g(asynchronously)e(\(via)i(daemon)g(threads\))f (because)i(otherwise)0 1665 y(all)i(intermediate)g(nodes)g(w)o(ould)g (ha)n(v)o(e)h(to)f(w)o(ait)g(until)g(the)h(RMIs)f(of)h(the)g(whole)f (successi)n(v)o(e)f(forw)o(arding)i(tree)0 1785 y(completed.)64 b(As)36 b(sho)n(wn)g(in)f(Figure)i(7,)i(ASP)e(using)e(the)i(binary)f (tree)g(broadcast)h(achie)n(v)o(es)e(almost)g(linear)0 1905 y(speedup)24 b(when)h(run)g(on)g(a)g(single)f(cluster)-5 b(.)30 b(W)l(ith)24 b(a)i(graph)f(of)f(2000)h(nodes,)f(it)h(obtains)e (a)j(speedup)e(of)h(59.3)f(on)0 2026 y(a)h(64-node)g(cluster)-5 b(.)146 2146 y(A)21 b(binary)f(tree)h(broadcast)g(obtains)e(poor)i (performance)g(on)f(the)h(wide-area)g(system,)f(causing)h(the)f (original)0 2267 y(ASP)j(program)e(to)h(run)g(much)f(slo)n(wer)g(on)h (four)g(clusters)f(than)h(on)g(a)g(single)f(\(16-node\))h(cluster)f (\(see)i(Figure)f(7\).)0 2387 y(The)27 b(reason)f(is)g(that)g(the)h (spanning)e(tree)i(algorithm)e(does)h(not)g(tak)o(e)h(the)f(topology)f (of)i(the)f(wide-area)h(system)0 2507 y(into)j(account,)i(and)f (therefore)g(sends)f(the)h(same)g(ro)n(w)f(multiple)f(times)h(o)o(v)o (er)g(the)g(same)h(wide-area)h(link.)47 b(T)-8 b(o)0 2628 y(o)o(v)o(ercome)26 b(this)g(problem,)h(we)g(implemented)e(a)j (wide-area)g(optimized)d(broadcast)i(similar)f(to)h(the)f(one)h(used)0 2748 y(in)f(our)h(MagPIe)g(collecti)n(v)o(e)f(communication)e(library)j ([20].)37 b(W)l(ith)26 b(the)g(optimized)g(program,)h(the)f(broadcast)0 2868 y(data)33 b(is)g(forw)o(arded)g(to)g(all)g(other)g(clusters)f(in)h (parallel,)i(o)o(v)o(er)d(dif)n(ferent)h(wide-area)h(links.)54 b(W)-8 b(e)34 b(implement)0 2989 y(this)k(scheme)h(by)g(designating)e (one)i(of)g(the)g Fq(Asp)f Fr(processes)h(in)g(each)h(cluster)e(as)h(a) h Fq(coor)l(dinator)f Fr(for)h(that)0 3109 y(cluster)-5 b(.)34 b(The)26 b(broadcast)g(o)n(wner)g(asynchronously)f(sends)g(the)h (ro)n(ws)g(to)g(each)g Fq(coor)l(dinator)h Fr(in)f(parallel.)35 b(This)0 3230 y(is)e(achie)n(v)o(ed)g(by)h(one)g(dedicated)f(thread)h (of)g(class)f Fq(Sender)j Fr(per)e(cluster)-5 b(.)57 b(Using)33 b(this)g(approach,)j(each)f(ro)n(w)0 3350 y(is)e(only)g(sent)h(once)g(to)f(each)i(cluster)-5 b(.)57 b(Due)34 b(to)f(the)h(asynchronous)f(send,)j(all)d(wide-area)i (connections)e(can)0 3470 y(be)h(utilized)f(simultaneously)-6 b(.)56 b(Inside)34 b(each)h(cluster)l(,)h(a)e(binary)g(tree)h(topology) d(is)i(used,)i(as)e(in)g(the)g(single-)0 3591 y(cluster)g(program.)58 b(The)34 b(code)h(sk)o(eleton)e(of)h(this)g(implementation)d(is)j(sho)n (wn)f(in)h(Figure)g(6.)59 b(As)34 b(sho)n(wn)e(in)0 3711 y(Figure)f(7,)h(this)e(optimization)f(signi\002cantly)h(impro)o(v)o(es) f(ASP')-5 b(s)31 b(application)e(performance)j(and)f(mak)o(es)f(the)0 3831 y(program)j(run)g(f)o(aster)g(on)g(four)h(16-node)e(clusters)h (than)g(on)g(a)g(single)g(16-node)f(cluster)-5 b(.)55 b(Ne)n(v)o(ertheless,)34 b(the)0 3952 y(speedup)24 b(on)g(four)h (16-node)f(clusters)g(lags)g(f)o(ar)h(behind)e(the)i(speedup)f(on)g(a)g (single)g(cluster)g(of)h(64)f(nodes.)30 b(This)0 4072 y(is)i(because)g(each)h(processor)f(performs)g(se)n(v)o(eral)g (broadcasts,)h(for)g(dif)n(ferent)f(iterations)f(of)h(the)g Fq(k)r Fr(-loop)g(\(see)0 4193 y(the)g Fq(run)g Fr(method\).)52 b(Subsequent)31 b(broadcasts)h(from)g(dif)n(ferent)g(iterations)f(w)o (ait)h(for)h(each)f(other)-5 b(.)53 b(A)32 b(further)0 4313 y(optimization)f(therefore)j(w)o(ould)e(be)i(to)f(pipeline)f(the)h (broadcasts)g(by)g(dynamically)f(creating)h(ne)n(w)g Fq(Sender)0 4433 y Fr(threads)27 b(\(one)g(per)g(cluster)f(per)h (broadcast\),)h(instead)e(of)h(using)f(dedicated)g(daemon)h(threads.)36 b(Ho)n(we)n(v)o(er)l(,)26 b(this)0 4554 y(w)o(ould)32 b(require)g(a)h(lar)n(ge)g(number)e(of)i(dynamically)e(created)i (threads,)h(e)n(v)o(en)d(increasing)h(with)g(the)g(problem)0 4674 y(size.)e(If)22 b(a)h(truly)e(asynchronous)g(RMI)i(w)o(ould)e(be)h (a)n(v)n(ailable,)g(the)g(e)o(xcessi)n(v)o(e)f(use)h(of)g(additional)f (threads)h(could)0 4795 y(be)h(completely)e(a)n(v)n(oided)h(and)h(the)f (o)o(v)o(erhead)g(related)g(to)h(thread)f(creation)h(and)f(thread)h (switching)e(w)o(ould)h(also)0 4915 y(disappear)-5 b(.)1900 5589 y(10)p eop %%Page: 11 11 11 10 bop 0 46 a Fd(class)37 b(Sender)g(extends)g(Thread)g({)141 125 y(Asp)f(dest;)141 204 y(int[])h(row;)141 283 y(int)f(k,)g(owner)141 362 y(boolean)h(filled)g(=)f(false;)141 519 y(synchronized)j(void)d (put\(Asp)i(dest,)e(int[])h(row,)f(int)h(k,)e(int)i(owner\))g({)282 598 y(while\(filled\))i(wait\(\);)282 677 y(this.dest)f(=)e(dest;)282 756 y(this.row)i(=)d(row;)282 835 y(this.k)i(=)f(k;)282 914 y(this.owner)i(=)e(owner;)282 993 y(filled)h(=)f(true;)282 1071 y(notifyAll\(\);)141 1150 y(})141 1308 y(synchronized)j(void)d (send\(\))h({)282 1387 y(while\(!filled\))j(wait\(\);)282 1466 y(dest.transfer\(row,)h(k,)36 b(owner\);)72 b(//)36 b(do)g(RMI)g(to)g(a)f(child)282 1545 y(filled)i(=)f(false;)282 1624 y(notifyAll\(\);)141 1702 y(})141 1860 y(public)h(void)g(run\(\))f ({)282 1939 y(while\(true\))j(send\(\);)141 2018 y(})0 2097 y(})0 2255 y(public)e(remote)g(class)g(Asp)f(extends)h (RemoteThread)i({)141 2333 y(private)e(int[][])h(tab;)177 b(//)36 b(The)g(distance)i(table.)141 2412 y(private)f(Asp)g(left,)f (right;)h(//)f(My)g(left)g(and)h(right)f(successors)i(\(children\))h (in)c(the)i(broadcast)g(tree.)141 2491 y(private)g(Sender)g (leftSender,)i(rightSender;)g(//)c(Threads)j(that)e(will)h(do)e(the)i (RMI)f(to)g(my)f(children.)141 2649 y(public)i(synchronized)i(void)d (transfer\(int[])k(row,)c(int)g(k,)g(int)g(owner\))h({)282 2728 y(if\(left)h(!=)d(null\))i(leftSender.put\(left,)k(row,)c(k,)e (owner\);)282 2807 y(if\(right)j(!=)e(null\))g(rightSender.put\(right,) 42 b(row,)36 b(k,)g(owner\);)282 2885 y(tab[k])h(=)f(row;)282 2964 y(notifyAll\(\);)74 b(//)36 b(wake)h(up)e(thread)i(waiting)h(for)e (row)g(to)g(arrive)141 3043 y(})141 3201 y(public)h(synchronized)i (void)d(broadcast\(int)j(k,)d(int)g(owner\))h({)282 3280 y(if\(this)h(cpu)e(is)g(the)g(owner\))h(transfer\(tab[k],)j(k,)35 b(owner\);)282 3359 y(else)i(while)f(\(tab[k])i(==)e(null\))g (wait\(\);)73 b(//)36 b(wait)g(until)h(the)f(row)g(has)g(arrived)141 3438 y(})141 3595 y(public)h(void)g(run\(\))f({)71 b(//)36 b(computation)i(part)282 3674 y(int)e(i,)g(j,)g(k;)282 3832 y(for)g(\(k)g(=)g(0;)g(k)f(?)h(n;)g(k++\))g({)423 3911 y(broadcast\(k,)j(owner\(k\)\);)423 3990 y(for)e(\(i)e(=)h(LB;)g (i)g(?)f(UB;)h(i++\))h(//)f(recompute)i(my)d(rows)565 4069 y(if)g(\(i)h(!=)g(k\))565 4147 y(for)g(\(j)g(=)f(0;)h(j)g(?)f(n;)h (j++\))706 4226 y(tab[i][j])i(=)d(minimum\(tab[i][j],)41 b(tab[i][k])c(+)f(tab[k][j]\);)282 4305 y(})141 4384 y(})0 4463 y(})607 4774 y Fr(Figure)25 b(5:)30 b(Code)25 b(sk)o(eleton)f(for)h(ASP)-11 b(,)26 b(implementation)c(for)j(single)f (cluster)-5 b(.)0 5032 y Fn(3.3)119 b(The)30 b(T)-9 b(ra)m(v)o(eling)30 b(Salesperson)h(Pr)n(oblem)0 5220 y Fr(The)k(T)m(ra)n(v)o(eling)f (Salesperson)h(Problem)g(\(TSP\))h(computes)f(the)g(shortest)f(path)h (for)g(a)h(salesperson)f(to)f(visit)0 5340 y(all)i(cities)f(in)h(a)h (gi)n(v)o(en)d(set)i(e)o(xactly)f(once,)40 b(starting)35 b(in)g(one)h(speci\002c)h(city)-6 b(.)64 b(W)-8 b(e)36 b(use)g(a)h(branch-and-bound)1900 5589 y(11)p eop %%Page: 12 12 12 11 bop 0 46 a Fd(class)37 b(Sender)g(extends)g(Thread)g({)282 125 y(//)f(Same)h(as)e(in)h(single-cluster)k(implementation.)0 204 y(})0 362 y(public)d(remote)g(class)g(Asp)f(extends)h(RemoteThread) i({)141 440 y(private)e(int[][])h(tab;)495 b(//)36 b(The)g(distance)h (table.)141 519 y(private)g(Asp[])g(coordinators;)251 b(//)36 b(The)g(remote)h(cluster)g(coordinators.)141 598 y(private)g(Sender[])h(waSenders;)250 b(//)36 b(Threads)h(that)f (will)h(do)f(the)g(wide-area)i(send.)141 756 y(public)f(synchronized)i (void)d(transfer\(int[])k(row,)c(int)g(k,)g(int)g(owner\))h({)282 835 y(//)f(Same)h(as)e(in)h(single-cluster)k(implementation.)141 914 y(})141 1071 y(public)d(synchronized)i(void)d(broadcast\(int)j(k,)d (int)g(owner\))h({)282 1150 y(if\(this)h(cpu)e(is)g(the)g(owner\))h({) 423 1229 y(//)f(Use)g(a)g(separate)i(daemon)f(thread)g(to)e(send)i(to)f (each)g(cluster)h(coordinator.)423 1308 y(for\(int)h(i=0;)e (i?nrClusters;)j(i++\))e({)706 1387 y(waSenders[i].put\(coordin)q(ator) q(s[i)q(],)k(row,)c(k,)f(owner\);)423 1466 y(})282 1545 y(})g(else)g({)423 1624 y(while)h(\(tab[k])g(==)f(null\))h(wait\(\);) 282 1702 y(})141 1781 y(})141 1939 y(public)g(void)g(run\(\))f({)71 b(//)36 b(computation)i(part)282 2018 y(//)e(Same)h(as)e(in)h (single-cluster)k(implementation.)141 2097 y(})0 2176 y(})521 2487 y Fr(Figure)25 b(6:)30 b(Code)c(sk)o(eleton)e(for)h(ASP) -11 b(,)25 b(implementation)e(for)i(wide-area)g(system.)0 2774 y(algorithm,)f(which)g(prunes)h(a)g(lar)n(ge)h(part)f(of)g(the)g (search)g(space)h(by)e(ignoring)g(partial)h(routes)f(that)h(are)h (already)0 2895 y(longer)g(than)h(the)f(current)h(best)g(solution.)34 b(The)27 b(program)f(is)h(parallelized)f(by)h(distrib)n(uting)d(the)i (search)i(space)0 3015 y(o)o(v)o(er)k(the)h(dif)n(ferent)f(processors.) 55 b(Because)34 b(the)e(algorithm)g(performs)g(pruning,)i(ho)n(we)n(v)o (er)l(,)f(the)g(amount)f(of)0 3135 y(computation)21 b(needed)i(for)g (each)g(sub-space)g(is)f(not)g(kno)n(wn)f(in)i(adv)n(ance)f(and)h(v)n (aries)f(between)h(dif)n(ferent)f(parts)0 3256 y(of)30 b(the)f(search)h(space.)46 b(Therefore,)31 b(load)e(balancing)h (becomes)f(an)h(issue.)44 b(In)30 b(single-cluster)e(systems,)h(load)0 3376 y(imbalance)36 b(can)h(easily)f(be)h(minimized)e(using)h(a)h (centralized)f(job)g(queue.)67 b(In)36 b(a)h(wide-area)h(system,)g (this)0 3497 y(w)o(ould)24 b(also)g(generate)h(much)f(wide-area)h (communication.)j(As)d(wide-area)g(optimization)d(we)j(implemented)0 3617 y(a)j(static)f(w)o(ork)h(distrib)n(ution)d(o)o(v)o(er)i(the)h(dif) n(ferent)f(clusters.)39 b(W)l(ithin)27 b(each)h(cluster)l(,)g(dynamic)f (load)h(balancing)0 3737 y(is)37 b(implemented)f(by)h(one)g(job)g (queue)h(per)f(cluster)-5 b(.)68 b(The)38 b(job)e(queues)i(are)g Fq(r)l(emote)f Fr(objects,)j(so)d(the)o(y)g(can)0 3858 y(be)32 b(accessed)g(o)o(v)o(er)f(the)g(netw)o(ork)g(using)g(RMI.)g (Each)h(job)f(contains)g(an)h(initial)e(path)h(of)h(a)g(\002x)o(ed)f (number)g(of)0 3978 y(cities;)23 b(a)g(processor)g(that)g(e)o(x)o (ecutes)f(the)h(job)f(computes)g(the)h(lengths)f(of)h(all)g(possible)f (continuations,)f(pruning)0 4098 y(paths)32 b(that)f(are)i(longer)f (than)g(the)g(current)g(best)g(solution.)50 b(Each)33 b(processor)f(runs)g(one)g Fq(work)o(er)i Fr(thread)f(that)0 4219 y(repeatedly)24 b(fetches)f(jobs)g(from)h(the)f(job)g(queue)h(of)f (its)g(cluster)g(\(using)g(RMI\))h(and)g(e)o(x)o(ecutes)e(the)i(job,)f (until)f(all)0 4339 y(w)o(ork)j(is)f(\002nished.)146 4460 y(The)j(TSP)g(program)e(k)o(eeps)i(track)f(of)g(the)g(current)h (best)f(solution)e(found)i(so)g(f)o(ar)l(,)h(which)f(is)f(used)h(to)g (prune)0 4580 y(part)34 b(of)h(the)f(search)h(space.)60 b(Each)34 b(w)o(ork)o(er)h(contains)f(a)g(cop)o(y)g(of)h(this)e(v)n (alue.)59 b(If)35 b(a)g(w)o(ork)o(er)f(\002nds)g(a)h(better)0 4700 y(complete)30 b(route,)j(the)e(program)g(does)g(an)g(RMI)g(to)g (all)g(other)g(w)o(ork)o(ers)g(to)g(update)g(their)g(copies.)49 b(\(T)-8 b(o)31 b(allo)n(w)0 4821 y(these)25 b(RMIs,)f(the)h(w)o(ork)o (ers)g(are)g(declared)h(as)f(remote)f(objects.\))146 4941 y(The)c(performance)f(for)h(the)f(TSP)h(program)f(on)f(the)h (wide-area)h(D)l(AS)g(system)e(is)h(sho)n(wn)f(in)h(Figure)g(7,)h (using)0 5061 y(a)31 b(17-city)e(problem.)47 b(As)30 b(can)g(be)h(seen,)h(the)e(speedup)g(of)g(TSP)h(on)f(the)g(wide-area)h (system)f(is)f(only)h(slightly)0 5182 y(inferior)38 b(than)g(on)f(a)i (single)e(64-node)g(cluster)-5 b(.)70 b(Our)38 b(wide-area)h(optimized) e(v)o(ersion)f(almost)h(completely)0 5302 y(closes)24 b(the)h(gap)f(and)h(tak)o(es)g(only)f(2)p Fo(:)p Fr(5\045)g(longer)g (than)h(the)f(single,)g(lar)n(ge)i(cluster)-5 b(.)1900 5589 y(12)p eop %%Page: 13 13 13 12 bop 1035 1654 a @beginspecial 166 @llx 269 @lly 446 @urx 522 @ury 1984 @rhi @setspecial %%BeginDocument: apps.eps 197.000000 293.500000 translate 1 setlinecap 1 setlinejoin 0.700 setlinewidth 0.00 setgray /Jrnd { exch cvi exch cvi dup 3 1 roll idiv mul } def /JDEdict 8 dict def JDEdict /mtrx matrix put /JDE { JDEdict begin /yrad exch def /xrad exch def /savematrix mtrx currentmatrix def xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /JSTR { gsave 1 eq { gsave 1 setgray fill grestore } if exch neg exch neg translate clip rotate 4 dict begin pathbbox /?top exch def /?right exch def /?bottom exch def ?right sub /?width exch def newpath currentlinewidth mul round dup ?bottom exch Jrnd exch ?top 4 -1 roll currentlinewidth mul setlinewidth { ?right exch moveto ?width 0 rlineto stroke } for end grestore newpath } bind def gsave /Helvetica findfont 9.000000 scalefont setfont 0.000000 0.000000 translate 0.700000 setlinewidth gsave newpath 0.000000 0.000000 moveto 216.000000 0.000000 lineto stroke grestore 0.700000 setlinewidth gsave newpath 0.000000 0.000000 moveto 0.000000 216.000000 lineto stroke newpath 0.000000 0.000000 moveto -5.000000 0.000000 lineto stroke newpath 0.000000 14.400001 moveto -2.000000 14.400001 lineto stroke newpath 0.000000 28.800001 moveto -5.000000 28.800001 lineto stroke newpath 0.000000 43.200001 moveto -2.000000 43.200001 lineto stroke newpath 0.000000 57.600002 moveto -5.000000 57.600002 lineto stroke newpath 0.000000 72.000000 moveto -2.000000 72.000000 lineto stroke newpath 0.000000 86.400002 moveto -5.000000 86.400002 lineto stroke newpath 0.000000 100.800003 moveto -2.000000 100.800003 lineto stroke newpath 0.000000 115.200005 moveto -5.000000 115.200005 lineto stroke newpath 0.000000 129.600006 moveto -2.000000 129.600006 lineto stroke newpath 0.000000 144.000000 moveto -5.000000 144.000000 lineto stroke newpath 0.000000 158.400009 moveto -2.000000 158.400009 lineto stroke newpath 0.000000 172.800003 moveto -5.000000 172.800003 lineto stroke newpath 0.000000 187.200012 moveto -2.000000 187.200012 lineto stroke newpath 0.000000 201.600006 moveto -5.000000 201.600006 lineto stroke newpath 0.000000 216.000015 moveto -2.000000 216.000015 lineto stroke gsave -8.000000 0.000000 translate 0.000000 rotate 0 -2.700000 translate (0) dup stringwidth pop neg 0 moveto show grestore gsave -8.000000 28.800001 translate 0.000000 rotate 0 -2.700000 translate (10) dup stringwidth pop neg 0 moveto show grestore gsave -8.000000 57.600002 translate 0.000000 rotate 0 -2.700000 translate (20) dup stringwidth pop neg 0 moveto show grestore gsave -8.000000 86.400002 translate 0.000000 rotate 0 -2.700000 translate (30) dup stringwidth pop neg 0 moveto show grestore gsave -8.000000 115.200005 translate 0.000000 rotate 0 -2.700000 translate (40) dup stringwidth pop neg 0 moveto show grestore gsave -8.000000 144.000000 translate 0.000000 rotate 0 -2.700000 translate (50) dup stringwidth pop neg 0 moveto show grestore gsave -8.000000 172.800003 translate 0.000000 rotate 0 -2.700000 translate (60) dup stringwidth pop neg 0 moveto show grestore gsave -8.000000 201.600006 translate 0.000000 rotate 0 -2.700000 translate (70) dup stringwidth pop neg 0 moveto show grestore /Helvetica findfont 10.000000 scalefont setfont gsave -24.639999 108.000000 translate 90.000000 rotate 0 0.000000 translate (speedup) dup stringwidth pop 2 div neg 0 moveto show grestore grestore gsave gsave 0.000000 setgray gsave 14.850001 43.660801 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -43.660801 lineto 3.847500 -43.660801 lineto closepath gsave 0.900000 setgray fill grestore stroke grestore gsave 68.849998 44.640003 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -44.640003 lineto 3.847500 -44.640003 lineto closepath gsave 0.900000 setgray fill grestore stroke grestore gsave 122.849998 45.792000 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -45.792000 lineto 3.847500 -45.792000 lineto closepath gsave 0.900000 setgray fill grestore stroke grestore gsave 176.850006 45.792000 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -45.792000 lineto 3.847500 -45.792000 lineto closepath gsave 0.900000 setgray fill grestore stroke grestore grestore gsave 0.000000 setgray gsave 22.950001 109.785599 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -109.785599 lineto 3.847500 -109.785599 lineto closepath gsave 0.700000 setgray fill grestore stroke grestore gsave 76.949997 6.912001 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -6.912001 lineto 3.847500 -6.912001 lineto closepath gsave 0.700000 setgray fill grestore stroke grestore gsave 130.949997 156.384003 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -156.384003 lineto 3.847500 -156.384003 lineto closepath gsave 0.700000 setgray fill grestore stroke grestore gsave 184.949997 145.152008 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -145.152008 lineto 3.847500 -145.152008 lineto closepath gsave 0.700000 setgray fill grestore stroke grestore grestore gsave 0.000000 setgray gsave 31.050003 171.849594 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -171.849594 lineto 3.847500 -171.849594 lineto closepath gsave 0.400000 setgray fill grestore stroke grestore gsave 85.050003 71.711998 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -71.711998 lineto 3.847500 -71.711998 lineto closepath gsave 0.400000 setgray fill grestore stroke grestore gsave 139.050003 167.904007 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -167.904007 lineto 3.847500 -167.904007 lineto closepath gsave 0.400000 setgray fill grestore stroke grestore gsave 193.050003 146.880005 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -146.880005 lineto 3.847500 -146.880005 lineto closepath gsave 0.400000 setgray fill grestore stroke grestore grestore gsave 0.000000 setgray gsave 39.150002 176.083206 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -176.083206 lineto 3.847500 -176.083206 lineto closepath gsave 0.000000 setgray fill grestore stroke grestore gsave 93.150002 170.784012 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -170.784012 lineto 3.847500 -170.784012 lineto closepath gsave 0.000000 setgray fill grestore stroke grestore gsave 147.149994 171.936005 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -171.936005 lineto 3.847500 -171.936005 lineto closepath gsave 0.000000 setgray fill grestore stroke grestore gsave 201.149994 154.080002 translate 0.000000 rotate newpath 3.847500 0.000000 moveto -3.847500 0.000000 lineto -3.847500 -154.080002 lineto 3.847500 -154.080002 lineto closepath gsave 0.000000 setgray fill grestore stroke grestore grestore grestore /Helvetica findfont 9.000000 scalefont setfont gsave 27.000002 -5.760000 translate 0.000000 rotate 0 -5.400000 translate (SOR) dup stringwidth pop 2 div neg 0 moveto show grestore gsave 81.000000 -5.760000 translate 0.000000 rotate 0 -5.400000 translate (ASP) dup stringwidth pop 2 div neg 0 moveto show grestore gsave 135.000000 -5.760000 translate 0.000000 rotate 0 -5.400000 translate (TSP) dup stringwidth pop 2 div neg 0 moveto show grestore gsave 189.000000 -5.760000 translate 0.000000 rotate 0 -5.400000 translate (IDA*) dup stringwidth pop 2 div neg 0 moveto show grestore -0.000000 -0.000000 translate 86.400002 144.000000 translate 0.700000 setlinewidth gsave grestore 0.700000 setlinewidth gsave grestore gsave gsave 0.000000 setgray gsave 6.120000 34.560001 translate 0.000000 rotate newpath 0.000000 1.900000 moveto 0.000000 -1.900000 lineto -6.120000 -1.900000 lineto -6.120000 1.900000 lineto closepath gsave 0.000000 setgray fill grestore stroke grestore grestore gsave 0.000000 setgray gsave 6.120000 46.080002 translate 0.000000 rotate newpath 0.000000 1.900000 moveto 0.000000 -1.900000 lineto -6.120000 -1.900000 lineto -6.120000 1.900000 lineto closepath gsave 0.400000 setgray fill grestore stroke grestore grestore gsave 0.000000 setgray gsave 6.120000 57.600002 translate 0.000000 rotate newpath 0.000000 1.900000 moveto 0.000000 -1.900000 lineto -6.120000 -1.900000 lineto -6.120000 1.900000 lineto closepath gsave 0.700000 setgray fill grestore stroke grestore grestore gsave 0.000000 setgray gsave 6.120000 69.120003 translate 0.000000 rotate newpath 0.000000 1.900000 moveto 0.000000 -1.900000 lineto -6.120000 -1.900000 lineto -6.120000 1.900000 lineto closepath gsave 0.900000 setgray fill grestore stroke grestore grestore grestore gsave 15.300000 69.120003 translate 0.000000 rotate 0 -2.700000 translate (16 nodes, 1 cluster) dup stringwidth pop pop 0 0 moveto show grestore gsave 15.300000 57.600002 translate 0.000000 rotate 0 -2.700000 translate (64 nodes, 4 clusters) dup stringwidth pop pop 0 0 moveto show grestore gsave 15.300000 46.080002 translate 0.000000 rotate 0 -2.700000 translate (64 nodes, 4 clusters \(optimized\)) dup stringwidth pop pop 0 0 moveto show grestore gsave 15.300000 34.560001 translate 0.000000 rotate 0 -2.700000 translate (64 nodes, 1 cluster) dup stringwidth pop pop 0 0 moveto show grestore -86.400002 -144.000000 translate grestore showpage %%EndDocument @endspecial 0 1857 a Fr(Figure)31 b(7:)42 b(Speedups)31 b(of)g(four)g(Ja)n(v)n(a)g(applications)e(on)h(a)i(single)e(cluster)g (of)h(16)g(nodes,)g(4)g(W)-12 b(AN-connected)0 1977 y(clusters)24 b(of)h(16)g(nodes)f(\(original)g(and)h(optimized)e(program\),)i(and)f (a)i(single)e(cluster)g(of)h(64)f(nodes.)0 2372 y Fn(3.4)119 b(Iterati)o(v)o(e)29 b(Deepening)j(A*)0 2560 y Fr(Iterati)n(v)o(e)g (Deepening)g(A*)g(is)g(another)g(combinatorial)f(search)i(algorithm,)g (based)f(on)g(repeated)h(depth-\002rst)0 2681 y(searches.)68 b(ID)l(A*)37 b(tries)g(to)f(\002nd)i(a)f(solution)e(to)i(a)g(gi)n(v)o (en)f(problem)g(by)h(doing)f(a)h(depth-\002rst)g(search)h(up)e(to)0 2801 y(a)g(certain)f(maximum)f(depth.)61 b(If)36 b(the)f(search)h(f)o (ails,)h(it)e(is)g(repeated)h(with)e(a)i(higher)f(search)g(depth,)j (until)c(a)0 2921 y(solution)26 b(is)h(found.)40 b(The)28 b(search)g(depth)f(is)h(initialized)e(to)i(a)g(lo)n(wer)f(bound)g(of)h (the)g(solution.)38 b(The)28 b(algorithm)0 3042 y(thus)g(performs)g (repeated)h(depth-\002rst)f(searches.)42 b(Lik)o(e)29 b(branch-and-bound,)f(ID)l(A*)h(uses)f(pruning)g(to)g(a)n(v)n(oid)0 3162 y(searching)d(useless)f(branches.)146 3282 y(W)-8 b(e)36 b(ha)n(v)o(e)e(written)h(a)g(parallel)g(ID)l(A*)g(program)f(in)h (Ja)n(v)n(a)f(for)h(solving)f(the)h(15-puzzle)f(\(the)h(sliding)f(tile) 0 3403 y(puzzle\).)65 b(ID)l(A*)36 b(is)f(parallelized)h(by)g (searching)g(dif)n(ferent)g(parts)f(of)i(the)e(search)i(tree)g (concurrently)-6 b(.)63 b(The)0 3523 y(program)23 b(uses)g(a)g(more)h (adv)n(anced)f(load)g(balancing)f(mechanism)g(than)h(TSP)-11 b(,)24 b(based)g(on)f(w)o(ork)g(stealing.)29 b(Each)0 3644 y(machine)d(maintains)f(its)g(o)n(wn)h(job)f(queue,)i(b)n(ut)f (machines)f(can)i(get)f(w)o(ork)g(from)g(other)g(machines)g(when)g(the) o(y)0 3764 y(run)33 b(out)f(of)h(jobs.)53 b(Each)33 b(job)g(represents) f(a)h(node)g(in)f(the)h(search)g(space.)55 b(When)33 b(a)g(machine)f(has)h(obtained)0 3884 y(a)d(job,)g(it)f(\002rst)g (checks)h(whether)f(it)g(can)h(prune)f(the)g(node.)45 b(If)30 b(not,)g(it)e(e)o(xpands)h(the)g(node)g(by)h(computing)d(the)0 4005 y(successor)j(states)f(\(children\))h(and)g(stores)g(these)g(in)f (its)g(local)h(job)g(queue.)46 b(T)-8 b(o)30 b(obtain)f(a)h(job,)h (each)f(machine)0 4125 y(\002rst)e(looks)g(in)f(its)h(o)n(wn)f(job)h (queue;)i(if)e(it)g(is)f(empty)h(it)g(tries)f(the)i(job)e(queues)h(of)h (some)e(other)h(machines.)41 b(W)-8 b(e)0 4245 y(implemented)32 b(one)h(wide-area)h(optimization:)46 b(to)33 b(a)n(v)n(oid)g(wide-area) h(communication)d(for)j(w)o(ork)f(stealing,)0 4366 y(each)28 b(machine)e(\002rst)i(tries)e(to)h(steal)g(jobs)f(from)h(machines)g(in) f(its)h(o)n(wn)f(cluster)-5 b(.)37 b(Only)26 b(if)h(that)g(f)o(ails,)g (the)g(w)o(ork)0 4486 y(queues)g(of)g(remote)f(clusters)g(are)i (accessed.)38 b(In)26 b(each)i(case,)g(the)e(same)h(mechanism)f (\(RMI\))h(is)g(used)f(to)h(fetch)0 4607 y(w)o(ork,)e(so)f(this)g (heuristic)g(is)g(easy)h(to)g(e)o(xpress)f(in)g(Ja)n(v)n(a.)146 4727 y(Figure)31 b(7)g(sho)n(ws)f(the)g(speedups)h(for)g(the)f(ID)l(A*) h(program.)49 b(The)31 b(program)f(tak)o(es)h(about)f(5\045)h(longer)f (on)0 4847 y(the)23 b(wide-area)h(D)l(AS)g(system)e(than)h(on)g(a)g (single)g(cluster)g(with)f(64)h(nodes.)30 b(The)23 b(communication)e(o) o(v)o(erhead)i(is)0 4968 y(due)28 b(to)f(w)o(ork-stealing)g(between)g (clusters)g(and)h(to)f(the)h(distrib)n(uted)e(termination)g(detection)h (algorithm)f(used)0 5088 y(by)f(the)f(program.)31 b(The)24 b(gain)g(of)h(the)g(wide-area)g(optimization)e(is)h(small)g(in)h(this)f (case.)1900 5589 y(13)p eop %%Page: 14 14 14 13 bop 0 100 a Fs(4)143 b(Alter)n(nati)o(v)o(e)32 b(pr)m(ogramming)h(models)0 323 y Fr(W)-8 b(e)35 b(ha)n(v)o(e)g (discussed)f(the)h(implementation)e(and)i(wide-area)h(optimization)c (of)j(four)h(parallel)f(applications)0 444 y(using)g(the)g(RMI)h (model.)63 b(RMI)36 b(supports)f(transparent)g(in)l(v)n(ocation)g(of)h (methods)e(on)i(remote)f(objects)g(and)0 564 y(thus)28 b(is)g(a)h(natural)f(e)o(xtension)f(of)i(Ja)n(v)n(a')-5 b(s)27 b(object)i(model)e(to)h(distrib)n(uted)f(memory)h(systems.)41 b(In)28 b(this)g(section,)0 684 y(we)36 b(discuss)g(alternati)n(v)o(e)e (programming)h(models)g(and)h(we)h(compare)f(them)f(to)h(RMI)h(in)e (terms)h(of)g(e)o(xpres-)0 805 y(si)n(v)o(eness)23 b(\(ease)j(of)f (programming\))f(and)h(implementation)e(ef)n(\002cienc)o(y)-6 b(.)31 b(W)-8 b(e)25 b(will)g(discuss)f(replicated)h(objects)0 925 y([3,)30 b(23,)g(26)o(,)h(33)o(],)h(Ja)n(v)n(aSpaces)e([15],)i(and) e(MPI)g(for)g(Ja)n(v)n(a)g([10].)47 b(These)30 b(alternati)n(v)o(e)f (models)g(ha)n(v)o(e)g(not)h(been)0 1045 y(implemented)f(in)h(the)g (Manta)g(system,)h(so)f(we)h(do)f(not)g(pro)o(vide)g(application)f (measurements.)47 b(Our)30 b(e)o(xperi-)0 1166 y(ences)k(in)f (wide-area)h(parallel)f(programming)f(using)h(replicated)g(objects)g (and)g(MPI)h(in)f(combination)f(with)0 1286 y(other)24 b(languages)g(\(Orca)h(and)f(C\))h(are)g(described)f(else)n(where[4,)h (20)o(,)g(29)o(].)31 b(W)-8 b(e)25 b(\002rst)f(brie\003y)h(describe)f (the)g(four)0 1407 y(programming)f(models.)0 1702 y Fn(4.1)119 b(The)30 b(pr)n(ogramming)g(models)0 1889 y Fc(RMI.)99 b Fr(W)l(ith)19 b(RMI,)h(parallel)f(applications)f(strictly)g(follo)n (w)g(Ja)n(v)n(a')-5 b(s)19 b(object-oriented)f(model)h(in)g(which)g (client)0 2010 y(objects)36 b(in)l(v)n(ok)o(e)g(methods)f(on)h(serv)o (er)g(objects)g(in)g(a)h(location-transparent)e(w)o(ay)-6 b(.)66 b(Each)36 b(remote)h(object)f(is)0 2130 y(physically)c(located)j (at)f(one)g(machine.)59 b(Although)33 b(the)h(RMI)h(model)e(hides)h (object)g(remoteness)f(from)h(the)0 2250 y(programmer)l(,)24 b(the)h(actual)g(object)f(location)g(strongly)g(impacts)f(application)h (performance.)0 2517 y Fc(Replication.)100 b Fr(From)25 b(the)h(client')-5 b(s)25 b(point)f(of)i(vie)n(w)-6 b(,)25 b(object)h(replication)f(is)g(conceptually)g(equi)n(v)n(alent)f(to)h (the)0 2637 y(RMI)36 b(model.)63 b(The)36 b(dif)n(ference)h(is)e(in)h (the)f(implementation:)51 b(objects)35 b(may)g(be)h(physically)f (replicated)g(on)0 2757 y(multiple)26 b(processes.)41 b(The)28 b(adv)n(antage)f(is)h(that)f(read-only)h(operations)f(can)i (be)f(performed)g(locally)-6 b(,)28 b(without)0 2878 y(an)o(y)d(communication.)31 b(The)26 b(disadv)n(antage)e(is)i(that)f (write)g(operations)g(become)h(more)f(comple)o(x)g(and)g(ha)n(v)o(e)g (to)0 2998 y(k)o(eep)g(object)f(replicas)h(consistent.)0 3264 y Fc(J)o(a)n(v)o(aSpaces.)99 b Fr(Ja)n(v)n(aSpaces)29 b(adapt)g(the)f(Linda)h(model)f([16])h(to)g(the)f(Ja)n(v)n(a)h (language.)43 b(Communication)27 b(oc-)0 3385 y(curs)h(via)g(shared)g (data)g Fq(spaces)g Fr(into)f(which)g Fq(entries)h Fr(\(typed)f (collections)g(of)h(Ja)n(v)n(a)g(objects\))f(may)h(be)g(written.)0 3505 y(Inside)22 b(a)g(space,)h(entries)f(may)g(not)g(be)g(modi\002ed,) g(b)n(ut)g(the)o(y)f(may)h(be)g(read)h(or)f(remo)o(v)o(ed)f(\(tak)o (en\))h(from)g(a)h(space.)0 3625 y(A)28 b(reader)h(of)g(an)f(entry)g (pro)o(vides)f(a)i Fq(template)e Fr(that)h(matches)g(the)g(desired)g (entry)g(type)g(and)g(also)g(desired)g(ob-)0 3746 y(ject)23 b(v)n(alues)g(stored)g(in)g(the)g(entry)-6 b(.)29 b(W)l(ildcards)23 b(may)g(be)g(used)h(for)f(object)g(v)n(alues.)29 b(Additionally)-6 b(,)21 b(a)j(space)f(may)0 3866 y(notify)31 b(an)h(object)f(whene)n(v)o (er)g(an)h(entry)f(matching)g(a)h(certain)g(template)f(has)g(been)h (written.)51 b Fq(Space)32 b Fr(objects)0 3986 y(may)26 b(be)h(seen)g(as)g(objects)f(that)g(are)i(remote)e(to)g(all)h (communicating)d(processes;)k(read)f(and)f(write)h(operations)0 4107 y(are)c(implemented)d(as)i(RMIs)f(to)h(space)g(objects.)29 b(Ja)n(v)n(aSpaces)22 b(also)g(supports)e(a)i(transaction)f(model,)h (allo)n(wing)0 4227 y(multiple)28 b(operations)g(on)h(space)h(objects)f (to)g(be)g(combined)g(in)g(a)g(transaction)g(that)g(either)g(succeeds)h (or)f(f)o(ails)0 4348 y(as)c(a)g(whole.)30 b(This)24 b(feature)i(is)e(especially)g(useful)h(for)g(f)o(ault-tolerant)f (programs.)0 4614 y Fc(MPI.)99 b Fr(W)l(ith)35 b(the)g(Message)g(P)o (assing)f(Interf)o(ace)i(\(MPI\))g(language)f(binding)f(to)h(Ja)n(v)n (a,)i(communication)d(is)0 4734 y(e)o(xpressed)i(using)g(message)g (passing)g(rather)h(than)g(remote)f(method)g(in)l(v)n(ocations.)65 b(Processes)37 b(send)f(mes-)0 4854 y(sages)31 b(\(arrays)h(of)f (objects\))f(to)h(each)g(other)-5 b(.)49 b(Additionally)-6 b(,)30 b(MPI)h(de\002nes)g(collecti)n(v)o(e)f(operations)g(in)h(which)0 4975 y(all)g(members)f(of)h(a)h(process)f(group)f(collecti)n(v)o(ely)f (participate;)34 b(e)o(xamples)c(are)i(broadcast)f(and)g(related)g (data)0 5095 y(redistrib)n(utions,)18 b(reduction)h(computations)e (\(e.g.,)j(computing)d(global)i(sums\),)g(and)h(barrier)g (synchronization.)1900 5589 y(14)p eop %%Page: 15 15 15 14 bop 0 100 a Fn(4.2)119 b(Comparison)30 b(of)f(the)i(models)0 287 y Fr(T)-8 b(o)27 b(compare)g(the)g(suitability)e(of)i(the)g(models) f(for)i(wide-area)g(parallel)f(computing,)f(we)h(study)f(three)i(impor) n(-)0 408 y(tant)d(aspects.)34 b(T)-8 b(able)26 b(2)g(summarizes)f (this)g(comparison.)32 b(In)26 b(general,)h(we)f(assume)f(that)h(the)f (underlying)g(pro-)0 528 y(gramming)20 b(system)h(\(lik)o(e)g(Manta\))h (e)o(xposes)e(the)i(physical)e(distrib)n(ution)f(of)j(the)f(clustered)h (wide-area)g(system.)0 648 y(This)i(information)g(may)h(be)g(used)g (either)g(by)g(application)f(programs)g(\(as)h(with)g(Manta\))g(or)g (by)g(programming)0 769 y(platforms)f(designed)g(for)h(wide-area)h (systems)d(\(e.g.,)i(the)f(MagPIe)i(library)e([20]\).)0 1035 y Fc(Synchr)n(onous)h(vs.)k(asynchr)n(onous)24 b(communication.) 101 b Fr(Remote)22 b(method)g(in)l(v)n(ocation)g(is)g(a)h(typical)g(e)o (xam-)0 1155 y(ple)g(of)f(synchronous)g(communication.)28 b(Here,)23 b(the)g(client)f(has)h(to)f(w)o(ait)g(until)g(the)g(serv)o (er)h(object)f(has)h(returned)0 1276 y(the)36 b(result)g(of)g(the)g(in) l(v)n(ok)o(ed)f(method.)64 b(This)36 b(enforces)g(rendezv)n(ous-style)g (synchronization)e(of)j(the)f(client)0 1396 y(with)26 b(another)l(,)h(possibly)e(remote)i(process.)37 b(W)l(ith)26 b(asynchronous)g(communication,)f(the)i(client)f(may)h(imme-)0 1516 y(diately)33 b(continue)g(its)f(operation)h(after)h(the)g (communication)d(has)j(been)f(initiated.)56 b(It)33 b(may)g(later)h (check)g(or)0 1637 y(w)o(ait)26 b(for)i(completion)d(of)i(the)f (communication)f(operation.)36 b(Asynchronous)25 b(communication)g(is)i (especially)0 1757 y(important)32 b(for)i(wide-area)g(computing,)g (where)g(it)f(can)g(be)h(used)f(to)g(hide)g(the)h(high)e(message)h (latencies)g(by)0 1878 y(o)o(v)o(erlapping)23 b(communication)g(and)h (computation.)146 1998 y(MPI)29 b(pro)o(vides)e(asynchronous)g(sending) h(and)g(recei)n(ving.)41 b(The)28 b(other)g(three)h(models,)f(ho)n(we)n (v)o(er)l(,)g(rely)g(on)0 2118 y(synchronous)21 b(method)g(in)l(v)n (ocation)g(so)h(applications)f(ha)n(v)o(e)h(to)g(simulate)f (asynchronous)g(communication)f(us-)0 2239 y(ing)j(multithreading.)29 b(F)o(or)23 b(local-area)i(communication,)d(the)i(corresponding)f(o)o (v)o(erhead)g(for)h(thread)g(creation)0 2359 y(and)i(conte)o(xt)e (switching)h(may)g(e)o(xceed)h(the)f(cost)h(of)g(a)g(synchronous)e (RMI.)i(T)-8 b(o)26 b(cope)f(with)g(this)g(problem,)g(the)0 2479 y(optimized)i(code)h(for)g(SOR)h(gets)f(rather)g(complicated,)g (as)g(has)g(been)g(sho)n(wn)f(in)h(the)g(pre)n(vious)e(section.)40 b(The)0 2600 y(broadcast)32 b(implementation)e(in)j(ASP)g(also)f (requires)h(asynchronous)e(communication,)h(both)g(in)g(the)h(origi-)0 2720 y(nal)26 b(\(single)g(cluster\))g(and)g(wide-area)h(optimized)e(v) o(ersion.)34 b(\(W)l(ith)26 b(synchronous)f(RMI,)h(a)h(broadcast)f (sender)0 2841 y(w)o(ould)31 b(ha)n(v)o(e)h(to)g(w)o(ait)g(for)h(the)f (whole)g(spanning)f(tree)i(to)f(complete.\))52 b(The)32 b(TSP)h(code)g(also)f(needs)g(to)g(treat)0 2961 y(local)g(and)h(remote) f(communication)f(dif)n(ferently)g(when)i(updating)e(the)h(v)n(alue)g (of)h(the)f(currently)h(best)f(solu-)0 3081 y(tion.)d(F)o(ortunately)-6 b(,)21 b(TSP)h(is)g(less)f(sensiti)n(v)o(e)f(to)h(this)g(problem)g (because)h(these)g(updates)f(occur)i(infrequently)-6 b(.)28 b(In)0 3202 y(ID)l(A*,)23 b(w)o(ork)g(stealing)e(is)i(al)o(w)o (ays)f(synchronous)f(b)n(ut)i(fortunately)f(infrequent.)29 b(So,)23 b(ID)l(A*)g(is)f(hardly)h(af)n(fected)0 3322 y(by)i(synchronous)e(RMI.)146 3443 y(In)34 b(conclusion,)g(for)g (wide-area)g(parallel)f(computing)f(on)h(hierarchical)h(systems,)g (directly)f(supporting)0 3563 y(asynchronous)41 b(communication)f(\(as) i(in)f(MPI\))i(is)e(easier)h(to)g(use)g(and)f(more)h(ef)n(\002cient)g (than)g(using)e(syn-)0 3683 y(chronous)24 b(communication)f(and)i (multithreading.)0 3949 y Fc(Explicit)35 b(vs.)60 b(implicit)35 b(r)n(eceipt.)101 b Fr(A)35 b(second)f(issue)g(is)h(the)f(w)o(ay)h(in)g (which)f(messages)g(are)i(recei)n(v)o(ed)e(and)0 4070 y(method)28 b(in)l(v)n(ocations)f(are)j(serv)o(ed.)43 b(W)l(ith)29 b(RMI)g(and)g(with)f(replicated)h(objects,)g(method)f(in)l (v)n(ocations)g(cause)0 4190 y(upcalls)c(on)g(the)h(serv)o(er)f(side,)g (which)h(is)f(a)h(form)f(of)h(implicit)e(message)h(receipt.)31 b(MPI)24 b(pro)o(vides)g(only)g(e)o(xplicit)0 4311 y(message)36 b(receipt,)j(making)c(the)h(implementations)e(of)i(TSP)h(and)f(ID)l(A*) g(much)g(harder)-5 b(.)65 b(Here,)40 b(incoming)0 4431 y(messages)26 b(\(for)h(updating)f(the)g(global)g(bound)g(or)h(for)g (job)f(requests\))h(ha)n(v)o(e)f(to)g(be)h(polled)f(for)h(by)g(the)f (applica-)0 4551 y(tions.)32 b(This)25 b(complicates)f(the)i(programs)f (and)g(mak)o(es)g(them)g(also)h(less)f(ef)n(\002cient,)g(because)h (\002nding)f(the)h(right)0 4672 y(polling)i(frequenc)o(y)h(\(and)g(the) g(best)g(places)g(in)g(the)g(applications)f(to)h(put)f(polling)g (statements)g(at\))h(is)g(dif)n(\002cult)0 4792 y([3].)60 b(W)l(ith)34 b(clustered)g(wide-area)i(systems,)f(polling)e(has)i(to)f (simultaneously)e(satisfy)i(the)g(needs)h(of)f(LAN)0 4912 y(and)24 b(W)-12 b(AN)25 b(communication,)e(making)g(the)h (problem)g(of)h(\002nding)f(the)g(right)g(polling)f(frequenc)o(y)h(e)n (v)o(en)g(harder)-5 b(.)0 5033 y(W)l(ith)28 b(programming)e(models)i (lik)o(e)g(RMI)g(that)g(support)f(implicit)g(receipt,)i(application-le) n(v)o(el)d(polling)h(is)h(not)0 5153 y(necessary)-6 b(.)1900 5589 y(15)p eop %%Page: 16 16 16 15 bop 1007 70 a Fh(RMI)362 b(replication)162 b(Ja)n(v)n(aSpaces)392 b(MPI)p 0 103 3900 4 v 50 173 a(send)804 b(synchronous)96 b(synchronous)g(synchronous)344 b(synchronous)18 b(and)h(asynchronous) 50 272 y(recei)n(v)o(e)719 b(implicit)260 b(implicit)g(e)o(xplicit)20 b(and)f(implicit)99 b(e)o(xplicit)50 372 y(collecti)n(v)o(e)19 b(communication)97 b(no)435 b(broadcast)199 b(no)683 b(yes)1122 561 y Fr(T)-8 b(able)25 b(2:)30 b(Aspects)25 b(of)g(programming)e(models)146 956 y(Ja)n(v)n(aSpaces)29 b(pro)o(vide)f(e)o(xplicit)f(operations)h(for)h(reading)f(and)h(remo)o (ving)e(entries)h(from)h(a)g(space,)g(result-)0 1077 y(ing)f(in)f(the)h(same)g(problems)f(as)i(with)e(MPI.)h(Additionally)-6 b(,)27 b(a)h(space)h(object)f(may)f(notify)h(a)g(potential)f(reader)0 1197 y(whene)n(v)o(er)g(an)i(entry)f(has)g(been)g(written)f(that)h (matches)g(the)g(reader')-5 b(s)28 b(interests.)40 b(Unfortunately)-6 b(,)27 b(this)g(noti\002-)0 1317 y(cation)22 b(simply)g(causes)h(an)f (upcall)h(at)g(the)f(recei)n(v)o(er)h(side)f(which)h(in)f(turn)h(has)f (to)h(actually)f(perform)h(the)g(read)g(or)0 1438 y(tak)o(e)i (operation.)32 b(This)24 b(causes)h(a)h(synchronous)e(RMI)h(back)h(to)f (the)g(space)g(object.)32 b(The)25 b(additional)f(o)o(v)o(erhead)0 1558 y(can)h(easily)g(outweigh)e(the)i(bene\002t)g(of)g(implicit)e (receipt,)i(especially)f(when)h(wide-area)g(netw)o(orks)f(are)i(used.)0 1824 y Fc(P)n(oint-to-point)40 b(vs.)74 b(collecti)o(v)o(e)39 b(communication.)101 b Fr(W)l(ide-area)40 b(parallel)f(programming)f (systems)g(can)0 1945 y(ease)23 b(the)f(task)g(of)h(the)f(programmer)g (by)g(of)n(fering)g(higher)n(-le)n(v)o(el)f(primiti)n(v)o(es)f(that)i (are)h(mapped)f(easily)g(onto)f(the)0 2065 y(hierarchical)e(structure)g (of)g(the)f(wide-area)i(system.)28 b(In)19 b(this)e(respect,)k(we)e (found)f(MPI')-5 b(s)19 b(collecti)n(v)o(e)e(operations)0 2185 y(\(e.g.,)39 b(broadcast)d(and)g(reduction\))g(to)f(be)i(of)f (great)g(v)n(alue.)64 b(The)36 b(MagPIe)h(library)f([20)o(])h (optimizes)d(MPI')-5 b(s)0 2306 y(collecti)n(v)o(e)27 b(operations)h(for)i(clustered)e(wide-area)i(systems)d(by)i(e)o (xploiting)e(kno)n(wledge)g(about)i(ho)n(w)f(groups)0 2426 y(of)e(processes)g(interact.)35 b(F)o(or)27 b(e)o(xample,)e(a)i (broadcast)f(operation)g(de\002nes)g(data)h(transfers)f(to)g(all)g (processes)g(of)0 2547 y(a)h(group.)35 b(MagPIe)27 b(uses)f(this)g (information)f(to)h(implement)f(a)i(broadcast)f(that)g(optimally)f (utilizes)g(wide-area)0 2667 y(links;)40 b(e.g.,)f(it)d(tak)o(es)g (care)h(that)e(data)i(is)e(sent)h(only)f(once)i(to)e(each)i(cluster)-5 b(.)64 b(Replicated)36 b(objects)g(that)f(are)0 2787 y(implemented)26 b(with)g(a)i(write-update)e(protocol)h([3])g(can)h (use)f(broadcasting)f(for)i(write)f(operations,)g(and)g(thus)0 2908 y(can)e(also)g(bene\002t)g(from)f(wide-area)i(optimized)d (broadcast.)146 3028 y(Programming)c(models)f(without)h(group)g (communication)e(\(lik)o(e)i(RMI)h(and)g(Ja)n(v)n(aSpaces\))g(cannot)f (pro)o(vide)0 3148 y(such)39 b(wide-area)h(optimizations)d(inside)i(a)g (runtime)g(system.)73 b(Here,)44 b(the)39 b(optimizations)e(are)j(left) f(to)g(the)0 3269 y(application)25 b(itself,)g(making)g(it)g(more)h (comple)o(x.)33 b(The)26 b(broadcast)f(implemented)g(for)h(ASP)h(is)e (an)h(e)o(xample)f(of)0 3389 y(such)31 b(an)h(application-le)n(v)o(el)d (optimization)g(that)i(could)g(be)h(a)n(v)n(oided)f(by)g(ha)n(ving)g (group)g(communication)e(in)0 3510 y(the)d(programming)e(model.)33 b(The)26 b(MagPIe)g(implementation)e(of)h(ASP)i([20],)f(for)g(e)o (xample,)f(is)h(much)f(simpler)0 3630 y(than)c(the)g(\(wide-area)h (optimized\))f(Ja)n(v)n(a)g(v)o(ersion.)28 b(Similarly)-6 b(,)20 b(TSP')-5 b(s)22 b(global)e(bound)h(could)g(be)g(updated)g (using)0 3750 y(a)k(pre-optimized)f(group)g(operation.)0 4046 y Fn(4.3)119 b(Summary)0 4233 y Fr(The)34 b(remote)g(method)f(in)l (v)n(ocation)g(model)g(pro)o(vides)f(a)j(good)e(starting)g(point)g(for) h(wide-area)h(parallel)f(pro-)0 4354 y(gramming,)c(because)g(it)f(inte) o(grates)g(communication)f(into)h(the)g(object)h(model.)45 b(Another)29 b(bene\002t)h(is)f(RMI')-5 b(s)0 4474 y(implicit)32 b(receipt)i(capability)f(by)h(which)f(RMIs)h(are)g(serv)o(ed)g(using)f (upcalls.)57 b(This)33 b(contrib)n(utes)g(to)g(e)o(xpres-)0 4594 y(si)n(v)o(eness)f(of)j(the)f(programming)e(model)i(as)g(well)g (as)g(to)g(program)f(ef)n(\002cienc)o(y)-6 b(,)36 b(especially)e(with)f (wide-area)0 4715 y(systems.)146 4835 y(T)-8 b(o)30 b(be)g(fully)g (suited)f(for)h(parallel)g(systems,)g(RMI)g(needs)g(tw)o(o)g (augmentations.)44 b(The)30 b(\002rst)h(one)f(is)f(asyn-)0 4955 y(chronous)e(method)f(in)l(v)n(ocation,)h(especially)g(important)f (with)h(wide-area)h(systems.)38 b(The)27 b(second)h(e)o(xtension)0 5076 y(is)j(the)f(implementation)f(of)i(collecti)n(v)o(e)e (communication)g(operations)i(that)f(transfer)h(the)g(bene\002ts)g(of)g (MPI')-5 b(s)0 5196 y(collecti)n(v)o(e)23 b(operations)h(into)g(Ja)n(v) n(a')-5 b(s)24 b(object)g(model.)1900 5589 y(16)p eop %%Page: 17 17 17 16 bop 146 100 a Fr(Although)32 b(promising)g(at)h(\002rst)g (glance,)j(Ja)n(v)n(aSpaces)d(does)h(not)e(really)h(mak)o(e)h (wide-area)g(parallel)f(pro-)0 220 y(gramming)24 b(easier)l(,)h (because)g(operations)f(on)h(space)g(objects)f(are)i(neither)e (asynchronous)g(nor)h(collecti)n(v)o(e.)k(As)0 340 y(f)o (ault-tolerance)22 b(becomes)f(more)g(important)g(in)g(wide-area)h (computing,)f(the)g(Ja)n(v)n(aSpaces)h(model)f(along)g(with)0 461 y(its)j(transaction)g(feature)i(may)e(recei)n(v)o(e)h(more)f (attention.)0 800 y Fs(5)143 b(Related)34 b(w)o(ork)0 1024 y Fr(W)-8 b(e)23 b(ha)n(v)o(e)g(discussed)f(a)h(Ja)n(v)n (a-centric)g(approach)g(to)g(writing)e(wide-area)j(parallel)f (\(metacomputing\))e(applica-)0 1144 y(tions.)30 b(Most)24 b(other)h(metacomputing)e(systems)h(\(e.g.,)h(Glob)n(us)f([13])h(and)g (Le)o(gion)f([17]\))h(support)f(a)i(v)n(ariety)e(of)0 1265 y(languages.)37 b(The)27 b(SuperW)-8 b(eb)28 b([1],)g(the)f(Gate)n (w)o(ay)g(system)f([18],)i(Ja)n(v)o(elin)e([11)o(],)i(Ja)n(v)o(elin++)f ([9],)g(and)h(Bayani-)0 1385 y(han)i([31])g(are)h(e)o(xamples)e(of)h (global)f(computing)g(infrastructures)g(that)h(support)f(Ja)n(v)n(a.)46 b(A)30 b(language-centric)0 1505 y(approach)g(mak)o(es)g(it)g(easier)h (to)f(deal)g(with)f(heterogeneous)h(systems,)g(since)g(the)g(data)h (types)e(that)h(are)h(trans-)0 1626 y(ferred)25 b(o)o(v)o(er)d(the)i (netw)o(orks)f(are)h(limited)f(to)g(the)g(ones)h(supported)e(in)i(the)f (language)h(\(thus)f(ob)o(viating)e(the)j(need)0 1746 y(for)h(a)g(separate)g(interf)o(ace)h(de\002nition)e(language\))g ([36].)146 1867 y(Most)i(w)o(ork)g(on)h(metacomputing)e(focuses)h(on)h (ho)n(w)e(to)i(b)n(uild)e(the)i(necessary)g(infrastructure)f([2,)h(13,) f(17,)0 1987 y(30].)36 b(In)26 b(addition,)g(research)h(on)f(parallel)h (algorithms)d(and)j(applications)e(is)h(required,)h(since)f(the)g (bandwidth)0 2107 y(and)33 b(latenc)o(y)f(dif)n(ferences)g(in)h(a)g (metacomputer)e(can)i(easily)f(e)o(xceed)h(three)g(orders)g(of)g (magnitude)e([12,)h(13,)0 2228 y(17,)39 b(29)o(].)74 b(Coping)38 b(with)h(such)f(a)i(lar)n(ge)f(non-uniformity)e(in)i(the)g (interconnect)f(complicates)g(application)0 2348 y(de)n(v)o(elopment.) 68 b(The)39 b(ECO)f(system)f(addresses)h(this)f(problem)g(by)h (automatically)f(generating)g(optimized)0 2468 y(communication)29 b(patterns)i(for)h(collecti)n(v)o(e)d(operations)i(on)g(heterogeneous)g (netw)o(orks)f([24].)51 b(The)31 b(AppLeS)0 2589 y(project)25 b(f)o(a)n(v)n(ors)f(the)h(inte)o(gration)e(of)i(w)o(orkload)f (scheduling)g(into)g(the)g(application)g(le)n(v)o(el)g([5].)146 2709 y(In)30 b(our)f(earlier)h(research,)h(we)f(e)o(xperimented)e(with) h(optimizing)e(parallel)j(programs)e(for)i(a)g(hierarchical)0 2830 y(interconnect,)37 b(by)e(changing)g(the)g(communication)f (structure)h([4].)62 b(Also,)37 b(we)f(studied)e(the)h(sensiti)n(vity)e (of)0 2950 y(such)38 b(optimized)f(programs)g(to)h(lar)n(ge)g(dif)n (ferences)h(in)f(latenc)o(y)f(and)h(bandwidth)f(between)h(the)g(LAN)g (and)0 3070 y(W)-12 b(AN)34 b([29].)59 b(Based)35 b(on)f(this)f(e)o (xperience,)j(we)f(implemented)d(collecti)n(v)o(e)h(communication)f (operations)h(as)0 3191 y(de\002ned)25 b(by)f(the)g(MPI)h(standard,)f (resulting)g(in)g(impro)o(v)o(ed)e(application)i(performance)h(on)f (wide)g(area)h(systems)0 3311 y([20].)31 b(Some)25 b(of)g(the)f(ideas)h (of)g(this)f(earlier)h(w)o(ork)g(ha)n(v)o(e)f(been)h(applied)f(in)h (our)f(wide-area)i(Ja)n(v)n(a)e(programs.)146 3431 y(There)37 b(are)g(man)o(y)e(other)h(research)h(projects)f(for)h(parallel)f (programming)f(in)g(Ja)n(v)n(a.)65 b(T)m(itanium)34 b([37])j(is)0 3552 y(a)30 b(Ja)n(v)n(a-based)f(language)g(for)h(high-performance)f (parallel)h(scienti\002c)f(computing.)43 b(The)29 b(Ja)n(v)n(aP)o(arty) g(system)0 3672 y([28])39 b(is)f(designed)f(to)i(ease)g(parallel)f (cluster)g(programming)f(in)h(Ja)n(v)n(a.)72 b(In)38 b(particular)l(,)k(its)c(goal)g(is)g(to)g(run)0 3793 y(multi-threaded)26 b(programs)g(with)g(as)h(little)f(change)h(as)g (possible)f(on)h(a)g(w)o(orkstation)e(cluster)-5 b(.)37 b(Hyperion)26 b([26])0 3913 y(also)31 b(uses)g(the)g(standard)g(Ja)n(v) n(a)g(thread)h(model)e(as)i(a)f(basis)g(for)h(parallel)f(programming.) 49 b(Unlik)o(e)30 b(Ja)n(v)n(aP)o(arty)-6 b(,)0 4033 y(Hyperion)35 b(caches)i(remote)f(objects)f(to)g(impro)o(v)o(e)g (performance.)64 b(The)36 b(Do!)64 b(project)36 b(tries)g(to)f(ease)i (paral-)0 4154 y(lel)29 b(programming)f(in)h(Ja)n(v)n(a)g(using)f (parallel)h(and)g(distrib)n(uted)f(frame)n(w)o(orks)h([22)o(].)45 b(Ajents)28 b([19])i(is)f(a)g(parallel)0 4274 y(programming)e(en)l (vironment)g(that)h(supports)f(object)g(migration.)40 b(Ja)n(v)n(a/DSM)27 b([38])i(implements)d(a)j(JVM)e(on)0 4395 y(top)j(of)h(a)h(distrib)n(uted)d(shared)i(memory)f(system.)48 b(Bre)o(g)31 b(et)g(al.)g([8])g(study)f(RMI)h(performance)h(and)f (interop-)0 4515 y(erability)-6 b(.)64 b(Krishnasw)o(amy)35 b(et)h(al.)g([21])h(impro)o(v)o(e)d(RMI)j(performance)g(some)n(what)d (with)i(caching)g(and)g(by)0 4635 y(using)23 b(UDP)i(instead)f(of)g (TCP)-11 b(.)25 b(Nester)g(et)f(al.)g([27])h(present)f(ne)n(w)g(RMI)g (and)h(serialization)e(packages)i(\(drop-in)0 4756 y(replacements\))31 b(designed)g(to)f(impro)o(v)o(e)g(RMI)h(performance.)50 b(The)32 b(abo)o(v)o(e)e(Ja)n(v)n(a)h(systems)e(are)j(designed)f(for)0 4876 y(single-le)n(v)o(el)j(\(\223\003at\224\))j(parallel)f(machines.) 63 b(The)36 b(Manta)g(system)f(described)g(in)h(this)f(paper)l(,)k(on)d (the)f(other)0 4996 y(hand,)g(is)e(designed)f(for)i(hierarchical)g (systems)d(and)j(uses)f(dif)n(ferent)f(communication)g(protocols)g(for) h(local)0 5117 y(and)h(wide)g(area)h(netw)o(orks.)57 b(It)34 b(uses)g(a)g(highly)f(optimized)g(RMI)h(implementation,)g (which)f(is)h(particularly)0 5237 y(ef)n(fecti)n(v)o(e)24 b(for)h(local)g(communication.)1900 5589 y(17)p eop %%Page: 18 18 18 17 bop 0 100 a Fs(6)143 b(Conclusions)0 323 y Fr(W)-8 b(e)37 b(ha)n(v)o(e)f(described)h(our)f(e)o(xperiences)h(in)f(b)n (uilding)f(and)i(using)e(a)i(high-performance)g(Ja)n(v)n(a)f(system)g (that)0 444 y(runs)22 b(on)g(a)h(geographically)e(distrib)n(uted)g (\(wide-area\))i(system.)29 b(The)22 b(goal)g(of)g(our)g(w)o(ork)h(w)o (as)f(to)g(obtain)f(actual)0 564 y(e)o(xperience)27 b(with)f(a)h(Ja)n (v)n(a-centric)g(approach)g(to)f(metacomputing.)35 b(Ja)n(v)n(a')-5 b(s)25 b(support)h(for)h(parallel)g(processing)0 684 y(and)32 b(heterogeneity)f(mak)o(e)h(it)f(an)h(attracti)n(v)o(e)f (candidate)g(for)h(metacomputing.)50 b(The)32 b(Ja)n(v)n(a)g(system)e (we)i(ha)n(v)o(e)0 805 y(b)n(uilt,)g(for)h(e)o(xample,)f(is)g(highly)f (transparent:)44 b(it)32 b(pro)o(vides)e(a)j(single)e(communication)f (primiti)n(v)o(e)f(\(RMI\))j(to)0 925 y(the)25 b(user)l(,)f(e)n(v)o(en) g(though)g(the)h(implementation)d(uses)j(se)n(v)o(eral)f(communication) e(netw)o(orks)j(and)f(protocols.)146 1045 y(Our)30 b(Manta)g (programming)f(system)f(is)i(designed)f(for)i(hierarchical)f(wide-area) h(systems,)f(for)g(e)o(xample)0 1166 y(clusters)g(or)g(MPPs)h (connected)g(by)f(wide-area)h(netw)o(orks.)47 b(Manta)30 b(uses)g(a)h(v)o(ery)f(ef)n(\002cient)h(\(acti)n(v)o(e)e(message)0 1286 y(lik)o(e\))c(communication)d(protocol)i(for)h(the)g(local)f (interconnect)h(\(Myrinet\))f(and)h(TCP/IP)h(for)f(wide-area)g(com-)0 1407 y(munication.)41 b(The)29 b(tw)o(o)f(communication)f(protocols)g (are)j(pro)o(vided)e(by)g(the)h(P)o(anda)f(library)-6 b(.)42 b(Manta')-5 b(s)28 b(light-)0 1527 y(weight)c(RMI)h(protocol)f (is)g(implemented)g(on)g(top)g(of)h(P)o(anda)g(and)g(is)f(v)o(ery)h(ef) n(\002cient.)146 1647 y(W)-8 b(e)23 b(ha)n(v)o(e)f(implemented)e(se)n (v)o(eral)i(parallel)g(applications)f(on)g(this)h(system,)f(using)g(Ja) n(v)n(a)h(RMI)h(for)f(commu-)0 1768 y(nication.)40 b(In)28 b(general,)h(the)f(RMI)h(model)e(w)o(as)h(easy)g(to)g(use.)41 b(T)-8 b(o)28 b(obtain)f(good)g(performance,)j(the)e(programs)0 1888 y(tak)o(e)j(the)f(hierarchical)h(structure)g(of)g(the)f(wide-area) i(system)d(into)h(account)h(and)g(minimize)e(the)h(amount)g(of)0 2008 y(communication)c(\(RMIs\))i(o)o(v)o(er)e(the)i(slo)n(w)e (wide-area)j(links.)38 b(W)l(ith)27 b(such)g(optimizations)f(in)h (place,)i(the)e(pro-)0 2129 y(grams)d(can)i(ef)n(fecti)n(v)o(ely)d(use) i(multiple)e(clusters,)h(e)n(v)o(en)g(though)g(the)o(y)g(are)h (connected)g(by)f(slo)n(w)g(links.)146 2249 y(W)-8 b(e)35 b(compared)e(RMI)h(with)f(other)h(programming)e(models,)j(namely)e (object)h(replication,)h(Ja)n(v)n(aSpaces,)0 2370 y(and)25 b(MPI)h(for)f(Ja)n(v)n(a.)32 b(W)-8 b(e)26 b(identi\002ed)f(se)n(v)o (eral)f(shortcomings)f(of)j(the)f(RMI)h(model.)31 b(In)25 b(particular)l(,)h(the)f(lack)g(of)0 2490 y(asynchronous)i (communication)f(and)i(broadcast)f(complicates)g(programming.)39 b(MPI)28 b(of)n(fers)g(both)f(features)0 2610 y(\(and)37 b(further)g(useful)g(collecti)n(v)o(e)f(operations\))g(b)n(ut)g(lacks)h (RMI')-5 b(s)37 b(clean)h(object-oriented)e(model.)66 b(Object)0 2731 y(replication)24 b(is)h(closer)g(to)f(pure)h(RMI)h(b)n (ut)e(of)n(fers)h(only)f(broadcast-lik)o(e)h(object)f(updating.)30 b(A)25 b(careful)h(inte)o(gra-)0 2851 y(tion)j(of)h(these)f(features)h (into)f(an)h(RMI-based)g(system)f(is)g(our)h(ne)o(xt)f(goal)g(for)h(a)g (Ja)n(v)n(a-centric)g(programming)0 2972 y(platform)24 b(for)h(wide-area)h(parallel)e(programming.)0 3297 y Fs(Ackno)o(wledgements)0 3512 y Fv(This)34 b(w)o(ork)h(is)g(supported)i (in)e(part)g(by)f(a)h(SION)d(grant)k(from)f(the)g(Dutch)g(research)h (council)h(NW)o(O,)32 b(and)j(by)g(a)f(USF)0 3632 y(grant)d(from)f(the) g(Vrije)f(Uni)n(v)o(ersiteit.)50 b(The)29 b(wide-area)j(D)l(AS)c (system)i(is)g(an)g(initiati)n(v)o(e)h(of)f(the)g(Adv)n(anced)h(School) g(for)0 3753 y(Computing)f(and)f(Imaging)h(\(ASCI\).)d(W)-7 b(e)28 b(thank)i(Ask)o(e)e(Plaat,)i(Raoul)f(Bhoedjang,)j(Rutger)d (Hofman,)h(Ceriel)f(Jacobs,)0 3873 y(and)h(Cees)g(V)-10 b(erstoep)31 b(for)f(their)h(contrib)n(utions)j(to)c(this)g(research.) 50 b(W)-7 b(e)29 b(thank)i(Cees)f(V)-10 b(erstoep)31 b(and)f(John)h(Romein)f(for)0 3993 y(k)o(eeping)c(the)f(D)l(AS)e(in)h (good)h(shape,)h(and)e(Cees)h(de)f(Laat)g(\(Uni)n(v)o(ersity)i(of)e (Utrecht\))i(for)e(getting)i(the)f(wide)f(area)h(links)g(of)0 4114 y(the)f(D)l(AS)e(up)h(and)h(running.)0 4440 y Fs(Refer)m(ences)45 4647 y Fv([1])50 b(A.)25 b(D.)f(Ale)o(xandro)o(v)-6 b(,)28 b(M.)d(Ibel,)i(K.)e(E.)f(Schauser)l(,)k(and)f(C.)d(J.)i(Scheiman.)42 b(SuperW)-7 b(eb:)35 b(Research)27 b(Issues)g(in)f(Ja)n(v)n(a-)200 4759 y(Based)e(Global)g(Computing.)35 b Fb(Concurr)m(ency:)d(Pr)o (actice)24 b(and)g(Experience)p Fv(,)h(9\(6\):535\226553,)j(June)c (1997.)45 4947 y([2])50 b(J.)36 b(Arabe,)k(A.)35 b(Be)o(guelin,)40 b(B.)35 b(Lo)n(wekamp,)k(E.)c(Seligman,)40 b(M.)c(Stark)o(e)o(y)-6 b(,)40 b(and)d(P)-10 b(.)34 b(Stephan.)76 b(Dome:)55 b(P)o(arallel)200 5060 y(programming)32 b(in)d(a)g(heterogeneous)34 b(multi-user)d(en)l(vironment.)56 b(In)29 b Fb(10th)i(International)i (P)-7 b(ar)o(allel)30 b(Pr)l(ocessing)200 5173 y(Symposium)p Fv(,)25 b(pages)f(218\226224,)i(Honolulu,)f(Ha)o(w)o(aii,)e(Apr)-5 b(.)23 b(1996.)1900 5589 y Fr(18)p eop %%Page: 19 19 19 18 bop 45 100 a Fv([3])50 b(H.)32 b(E.)g(Bal,)k(R.)c(Bhoedjang,)38 b(R.)32 b(Hofman,)k(C.)c(Jacobs,)38 b(K.)32 b(Langendoen,)38 b(T)-7 b(.)32 b(R)8 b(\250)-38 b(uhl,)36 b(and)e(F)-7 b(.)32 b(Kaashoek.)67 b(Per)n(-)200 213 y(formance)33 b(Ev)n(aluation)g(of)e(the)h(Orca)f(Shared)h(Object)g(System.)58 b Fb(A)m(CM)30 b(T)-5 b(r)o(ansactions)34 b(on)d(Computer)h(Systems)p Fv(,)200 325 y(16\(1\):1\22640,)27 b(Feb)l(.)c(1998.)45 505 y([4])50 b(H.)26 b(E.)h(Bal,)g(A.)g(Plaat,)h(M.)e(G.)h(Bakk)o(er)l (,)i(P)-10 b(.)26 b(Dozy)-6 b(,)29 b(and)f(R.)e(F)-7 b(.)26 b(Hofman.)46 b(Optimizing)29 b(P)o(arallel)g(Applications)h(for) 200 618 y(W)l(ide-Area)23 b(Clusters.)31 b(In)22 b Fb(12th)h (International)j(P)-7 b(ar)o(allel)22 b(Pr)l(ocessing)i(Symposium)f (\(IPPS'98\))p Fv(,)g(pages)g(784\226790,)200 731 y(Orlando,)i(FL,)c (April)j(1998.)45 910 y([5])50 b(F)-7 b(.)17 b(Berman,)j(R.)d(W)-7 b(olski,)20 b(S.)d(Figueira,)k(J.)d(Schopf,)i(and)g(G.)d(Shao.)23 b(Application-le)n(v)o(el)g(Scheduling)e(on)e(Distrib)n(uted)200 1023 y(Heterogeneous)27 b(Netw)o(orks.)34 b(In)24 b Fb(Super)m (computing)j(96)p Fv(,)c(Pittsb)n(ur)n(gh,)j(P)-8 b(A,)21 b(No)o(v)-6 b(.)23 b(1996.)45 1202 y([6])50 b(R.)21 b(A.)f(F)-7 b(.)21 b(Bhoedjang,)j(T)-7 b(.)20 b(R)8 b(\250)-38 b(uhl,)23 b(and)f(H.)f(E.)f(Bal.)30 b(User)n(-Le)n(v)o(el)22 b(Netw)o(ork)h (Interf)o(ace)h(Protocols.)32 b Fb(IEEE)20 b(Computer)p Fv(,)200 1315 y(31\(11\):53\22660,)28 b(No)o(v)-6 b(.)22 b(1998.)45 1494 y([7])50 b(N.)20 b(Boden,)j(D.)d(Cohen,)i(R.)e (Felderman,)j(A.)d(K)o(ula)o(wik,)h(C.)f(Seitz,)i(J.)f(Seizo)o(vic,)h (and)h(W)-8 b(.)19 b(Su.)29 b(Myrinet:)g(A)20 b(Gigabit-)200 1607 y(per)n(-second)27 b(Local)d(Area)f(Netw)o(ork.)34 b Fb(IEEE)21 b(Micr)l(o)p Fv(,)j(15\(1\):29\22636,)j(Feb)l(.)c(1995.)45 1787 y([8])50 b(F)-7 b(.)21 b(Bre)o(g,)h(S.)f(Diw)o(an,)h(J.)g(V)-5 b(illacis,)23 b(J.)f(Balasubramanian,)j(E.)c(Akman,)i(and)g(D.)e (Gannon.)32 b(Ja)n(v)n(a)23 b(RMI)f(Performance)200 1900 y(and)k(Object)f(Model)g(Interoperability:)37 b(Experiments)27 b(with)d(Ja)n(v)n(a/HPC++)h(Distrib)n(uted)j(Components.)39 b(In)25 b Fb(A)m(CM)200 2012 y(1998)g(W)-8 b(orkshop)25 b(on)e(J)m(ava)i(for)e(High-P)-7 b(erformance)27 b(Network)c(Computing) p Fv(,)i(Santa)f(Barbara,)g(CA,)e(Feb)l(.)h(1998.)45 2192 y([9])50 b(S.)27 b(Brydon,)j(P)-10 b(.)26 b(Kmiec,)j(M.)e(Neary)-6 b(,)29 b(S.)e(Rollins,)j(and)e(P)-10 b(.)27 b(Cappello.)49 b(Ja)n(v)o(elin++:)41 b(Scalability)30 b(Issues)f(in)g(Global)200 2305 y(Computing.)35 b(In)23 b Fb(A)m(CM)f(1999)j(J)m(ava)f(Gr)o(ande)g (Confer)m(ence)p Fv(,)h(pages)g(171\226180,)h(San)d(Francisco,)i(CA,)c (June)k(1999.)0 2484 y([10])50 b(B.)21 b(Carpenter)l(,)k(V)-12 b(.)21 b(Geto)o(v)-6 b(,)23 b(G.)e(Judd,)j(T)-7 b(.)21 b(Skjellum,)i(and)g(G.)e(F)o(ox.)31 b(MPI)21 b(for)i(Ja)n(v)n(a:)30 b(Position)24 b(Document)f(and)g(Draft)200 2597 y(API)f (Speci\002cation.)36 b(T)-6 b(echnical)24 b(Report)h(JGF-TR-03,)d(Ja)n (v)n(a)i(Grande)h(F)o(orum,)d(No)o(v)o(ember)i(1998.)0 2776 y([11])50 b(B.)19 b(Christiansen,)k(P)-10 b(.)18 b(Cappello,)k(M.)d(F)-7 b(.)18 b(Ionescu,)23 b(M.)c(O.)f(Neary)-6 b(,)21 b(K.)e(E.)f(Schauser)l(,)k(and)f(D.)d(W)-5 b(u.)26 b(Ja)n(v)o(elin:)j(Internet-)200 2889 y(Based)24 b(P)o(arallel)g (Computing)h(Using)f(Ja)n(v)n(a.)34 b Fb(Concurr)m(ency:)e(Pr)o(actice) 24 b(and)g(Experience)p Fv(,)h(1997.)0 3069 y([12])50 b(I.)32 b(F)o(oster)l(,)i(J.)d(Geisler)l(,)k(W)-8 b(.)31 b(Gropp,)j(N.)d(Karonis,)k(E.)c(Lusk,)j(G.)c(Thiruv)n(athukal,)37 b(and)c(S.)d(T)l(ueck)o(e.)62 b(W)l(ide-Area)200 3181 y(Implementation)27 b(of)c(the)h(Message)h(P)o(assing)f(Interf)o(ace.) 35 b Fb(P)-7 b(ar)o(allel)25 b(Computing)p Fv(,)f (24\(12\22613\):1735\2261)q(74)q(9,)29 b(1998.)0 3361 y([13])50 b(I.)25 b(F)o(oster)h(and)h(C.)d(K)n(esselman.)42 b(Glob)n(us:)36 b(A)24 b(Metacomputing)29 b(Infrastructure)h(T)-7 b(oolkit.)42 b Fb(Int.)26 b(J)n(ournal)i(of)d(Super)n(-)200 3474 y(computer)g(Applications)p Fv(,)h(11\(2\):115\226128,)i(Summer)23 b(1997.)0 3653 y([14])50 b(I.)18 b(F)o(oster)h(and)g(C.)e(K)n (esselman,)j(editors.)25 b Fb(The)18 b(GRID:)f(Blueprint)k(for)e(a)f (Ne)o(w)f(Computing)j(Infr)o(astructur)m(e)p Fv(.)26 b(Mor)n(gan)200 3766 y(Kaufmann,)e(1998.)0 3945 y([15])50 b(E.)34 b(Freeman,)j(S.)d(Hupfer)l(,)k(and)e(K.)d(Arnold.)70 b Fb(J)m(avaSpaces,)41 b(Principles,)e(P)-7 b(atterns,)39 b(and)c(Pr)o(actice)p Fv(.)71 b(Addison)200 4058 y(W)-7 b(esle)o(y)h(,)24 b(1999.)0 4237 y([16])50 b(D.)21 b(Gelernter)-5 b(.)31 b(Generati)n(v)o(e)23 b(Communication)i(in)c(Linda.)31 b Fb(A)m(CM)20 b(T)-5 b(r)o(ans.)22 b(Pr)l(o)o(g)o(.)f(Lang)o(.)g (Syst.)p Fv(,)i(7\(1\):80\226112,)i(1985.)0 4417 y([17])50 b(A.)27 b(Grimsha)o(w)g(and)i(W)-8 b(.)26 b(A.)g(W)-5 b(ulf.)48 b(The)28 b(Le)o(gion)g(V)-5 b(ision)28 b(of)g(a)g(W)-7 b(orldwide)28 b(V)-5 b(irtual)29 b(Computer.)48 b Fb(Comm.)26 b(A)m(CM)p Fv(,)200 4530 y(40\(1\):39\22645,)h(Jan.)d(1997.)0 4709 y([18])50 b(T)-7 b(.)33 b(Haupt,)k(E.)32 b(Akarsu,)37 b(G.)c(F)o(ox,)j(A.)c(Kalinichenk)o(o,)40 b(K.-S.)32 b(Kim,)j(P)-10 b(.)33 b(Sheethalnath,)39 b(and)34 b(C.-H.)f(Y)-10 b(oun.)67 b(The)200 4822 y(Gate)n(w)o(ay)35 b(System:)51 b(Uniform)35 b(W)-7 b(eb)34 b(Based)h(Access)g(to)f(Remote)h (Resources.)70 b(In)34 b Fb(A)m(CM)f(1999)j(J)m(ava)f(Gr)o(ande)200 4935 y(Confer)m(ence)p Fv(,)25 b(pages)g(1\2267,)f(San)f(Francisco,)i (CA,)d(June)i(1999.)0 5114 y([19])50 b(M.)21 b(Izatt,)i(P)-10 b(.)20 b(Chan,)i(and)h(T)-7 b(.)20 b(Brecht.)31 b(Ajents:)e(T)-7 b(o)n(w)o(ards)22 b(an)g(En)l(vironment)i(for)e(P)o(arallel,)h(Distrib) n(uted)h(and)e(Mobile)200 5227 y(Ja)n(v)n(a)33 b(Applications.)63 b(In)32 b Fb(A)m(CM)e(1999)j(J)m(ava)g(Gr)o(ande)f(Confer)m(ence)p Fv(,)k(pages)d(15\22624,)i(San)d(Francisco,)j(CA,)30 b(June)200 5340 y(1999.)1900 5589 y Fr(19)p eop %%Page: 20 20 20 19 bop 0 100 a Fv([20])50 b(T)-7 b(.)18 b(Kielmann,)i(R.)e(F)-7 b(.)17 b(H.)g(Hofman,)j(H.)d(E.)h(Bal,)h(A.)e(Plaat,)j(and)f(R.)e(A.)h (F)-7 b(.)17 b(Bhoedjang.)27 b(M)t Fa(A)q(G)t Fv(P)t(I)t Fa(E)r Fv(:)i(MPI')-5 b(s)18 b(Collecti)n(v)o(e)200 213 y(Communication)24 b(Operations)g(for)e(Clustered)i(W)l(ide)f(Area)e (Systems.)30 b(In)22 b Fb(Se)o(venth)i(A)m(CM)c(SIGPLAN)g(Symposium)200 325 y(on)26 b(Principles)i(and)f(Pr)o(actice)g(of)f(P)-7 b(ar)o(allel)26 b(Pr)l(o)o(gr)o(amming)h(\(PP)-7 b(oPP'99\))p Fv(,)26 b(pages)h(131\226140,)i(Atlanta,)e(GA,)d(May)200 438 y(1999.)0 626 y([21])50 b(V)-12 b(.)31 b(Krishnasw)o(amy)-6 b(,)36 b(D.)30 b(W)-7 b(alther)l(,)35 b(S.)c(Bhola,)j(E.)c(Bommaiah,)k (G.)d(Rile)o(y)-6 b(,)33 b(B.)e(T)-7 b(opol,)34 b(and)e(M.)f(Ahamad.)61 b(Ef)n(\002-)200 739 y(cient)23 b(Implementations)j(of)c(Ja)n(v)n(a)h (RMI.)30 b(In)22 b Fb(4th)h(USENIX)d(Confer)m(ence)k(on)f (Object-Oriented)i(T)-8 b(ec)o(hnolo)o(gies)25 b(and)200 852 y(Systems)g(\(COO)l(TS'98\))p Fv(,)e(Santa)h(Fe,)e(NM,)g(1998.)0 1039 y([22])50 b(P)-10 b(.)34 b(Launay)j(and)f(J.-L.)e(P)o(azat.)72 b(The)35 b(Do!)65 b(project:)56 b(Distrib)n(uted)38 b(Programming)f (Using)f(Ja)n(v)n(a.)72 b(In)36 b Fb(F)l(ir)o(st)g(UK)200 1152 y(W)-8 b(orkshop)25 b(J)m(ava)f(for)g(High)g(P)-7 b(erformance)25 b(Network)f(Computing)p Fv(,)g(Southampton,)i(Sept.)d (1998.)0 1340 y([23])50 b(S.)29 b(Y)-12 b(.)28 b(Lee.)53 b Fb(Supporting)34 b(Guar)m(ded)d(and)f(Nested)h(Atomic)e(Actions)i(in) f(Distrib)n(uted)i(Objects)p Fv(.)55 b(Master')-5 b(s)31 b(thesis,)200 1453 y(Uni)n(v)o(ersity)25 b(of)f(California)h(at)e (Santa)h(Barbara,)g(July)g(1998.)0 1641 y([24])50 b(B.)23 b(Lo)n(wekamp)h(and)h(A.)e(Be)o(guelin.)36 b(ECO:)23 b(Ef)n(\002cient)h(Collecti)n(v)o(e)i(Operations)g(for)f(Communication) h(on)e(Hetero-)200 1753 y(geneous)32 b(Netw)o(orks.)52 b(In)29 b Fb(International)34 b(P)-7 b(ar)o(allel)30 b(Pr)l(ocessing)h(Symposium)p Fv(,)h(pages)e(399\226405,)j(Honolulu,)f (HI,)200 1866 y(1996.)0 2054 y([25])50 b(J.)24 b(Maassen,)i(R.)d(v)n (an)i(Nieuwpoort,)h(R.)d(V)-10 b(eldema,)25 b(H.)e(E.)g(Bal,)h(and)h (A.)f(Plaat.)36 b(An)24 b(Ef)n(\002cient)h(Implementation)i(of)200 2167 y(Ja)n(v)n(a')-5 b(s)25 b(Remote)e(Method)h(In)l(v)n(ocation.)36 b(In)23 b Fb(Se)o(venth)i(A)m(CM)d(SIGPLAN)f(Symposium)j(on)f (Principles)j(and)d(Pr)o(actice)200 2280 y(of)h(P)-7 b(ar)o(allel)24 b(Pr)l(o)o(gr)o(amming)g(\(PP)-7 b(oPP'99\))p Fv(,)23 b(pages)h(173\226182,)i(Atlanta,)e(GA,)e(May)h(1999.)0 2467 y([26])50 b(M.)42 b(W)-8 b(.)41 b(Macbeth,)49 b(K.)41 b(A.)g(McGuigan,)48 b(and)43 b(P)-10 b(.)42 b(J.)g(Hatcher)-5 b(.)95 b(Ex)o(ecuting)45 b(Ja)n(v)n(a)e(Threads)h(in)f(P)o(arallel)g (in)g(a)200 2580 y(Distrib)n(uted-Memory)30 b(En)l(vironment.)45 b(In)26 b Fb(Pr)l(oc.)g(CASCON'98)p Fv(,)f(pages)j(40\22654,)g (Missisauga,)h(ON,)24 b(1998.)j(Pub-)200 2693 y(lished)e(by)f(IBM)e (Canada)j(and)f(the)f(National)i(Research)g(Council)g(of)e(Canada.)0 2881 y([27])50 b(C.)30 b(Nester)l(,)35 b(M.)30 b(Philippsen,)35 b(and)d(B.)f(Haumacher)-5 b(.)60 b(A)30 b(More)i(Ef)n(\002cient)f(RMI)g (for)h(Ja)n(v)n(a.)59 b(In)32 b Fb(A)m(CM)e(1999)j(J)m(ava)200 2994 y(Gr)o(ande)24 b(Confer)m(ence)p Fv(,)h(pages)g(153\226159,)h(San) d(Francisco,)i(CA,)d(June)i(1999.)0 3181 y([28])50 b(M.)18 b(Philippsen)i(and)f(M.)f(Zenger)-5 b(.)23 b(Ja)n(v)n(aP)o(arty\227T)m (ransparent)g(Remote)c(Objects)g(in)g(Ja)n(v)n(a.)k Fb(Concurr)m(ency:) 29 b(Pr)o(actice)200 3294 y(and)24 b(Experience)p Fv(,)i(pages)e (1225\2261242,)j(No)o(v)-6 b(.)23 b(1997.)0 3482 y([29])50 b(A.)29 b(Plaat,)i(H.)e(E.)f(Bal,)j(and)g(R.)d(F)-7 b(.)29 b(H.)f(Hofman.)54 b(Sensiti)n(vity)32 b(of)e(P)o(arallel)h (Applications)i(to)d(Lar)n(ge)g(Dif)n(ferences)200 3595 y(in)c(Bandwidth)h(and)f(Latenc)o(y)g(in)g(T)-7 b(w)o(o-Layer)25 b(Interconnects.)45 b(In)25 b Fb(High)h(P)-7 b(erformance)27 b(Computer)g(Ar)m(c)o(hitectur)m(e)200 3708 y(\(HPCA-5\))p Fv(,)22 b(pages)j(244\226253,)h(Orlando,)e(FL,)e(January)j(1999.)0 3895 y([30])50 b(A.)26 b(Reinefeld,)k(R.)c(Baraglia,)k(T)-7 b(.)26 b(Deck)o(er)l(,)j(J.)e(Gehring,)i(D.)d(Laforenza,)k(J.)d(Simon,) h(T)-7 b(.)26 b(R)8 b(\250)-38 b(umk)o(e,)28 b(and)g(F)-7 b(.)25 b(Ramme.)200 4008 y(The)44 b(MOL)f(Project:)71 b(An)44 b(Open)g(Extensible)i(Metacomputer)-5 b(.)102 b(In)45 b Fb(Heter)l(o)o(g)o(enous)i(computing)f(workshop)200 4121 y(HCW'97)23 b(at)h(IPPS'97)p Fv(,)f(Apr)-5 b(.)23 b(1997.)0 4309 y([31])50 b(L.)20 b(F)-7 b(.)19 b(G.)g(Sarmenta)i(and)h (S.)d(Hirano.)28 b(Bayanihan:)i(Building)22 b(and)g(Studying)g(W)-7 b(eb-Based)22 b(V)-12 b(olunteer)23 b(Computing)200 4422 y(Systems)h(Using)g(Ja)n(v)n(a.)34 b Fb(Futur)m(e)24 b(Gener)o(ation)h(Computer)f(Systems)p Fv(,)h(15\(5/6\),)g(1999.)0 4609 y([32])50 b(L.)22 b(Smarr)h(and)h(C.)e(Catlett.)34 b(Metacomputing.)i Fb(Communications)26 b(of)e(the)f(A)m(CM)p Fv(,)f(35\(6\):44\22652,)27 b(June)d(1992.)0 4797 y([33])50 b(B.)21 b(T)-7 b(opol,)23 b(M.)e(Ahamad,)h(and)h(J.)f(T)-7 b(.)21 b(Stask)o(o.)32 b(Rob)n(ust)23 b(State)g(Sharing)g(for)g(W)l (ide)g(Area)f(Distrib)n(uted)j(Applications.)200 4910 y(In)36 b Fb(18th)h(International)j(Confer)m(ence)f(on)d(Distrib)n (uted)j(Computing)e(Systems)g(\(ICDCS'98\))p Fv(,)j(pages)d (554\226561,)200 5023 y(Amsterdam,)24 b(The)f(Netherlands,)j(May)d (1998.)0 5210 y([34])50 b(R.)17 b(v)n(an)i(Nieuwpoort,)h(J.)e(Maassen,) i(H.)d(E.)g(Bal,)i(T)-7 b(.)17 b(Kielmann,)i(and)g(R.)e(V)-10 b(eldema.)22 b(W)l(ide-area)f(parallel)f(computing)200 5323 y(in)k(Ja)n(v)n(a.)34 b(In)23 b Fb(A)m(CM)f(1999)i(J)m(ava)h(Gr)o (ande)f(Confer)m(ence)p Fv(,)h(pages)g(8\22614,)f(San)f(Francisco,)i (CA,)d(June)i(1999.)1900 5589 y Fr(20)p eop %%Page: 21 21 21 20 bop 0 100 a Fv([35])50 b(J.)30 b(W)-7 b(aldo.)57 b(Remote)31 b(procedure)i(calls)f(and)f(Ja)n(v)n(a)g(Remote)g(Method)h (In)l(v)n(ocation.)59 b Fb(IEEE)29 b(Concurr)m(ency)p Fv(,)35 b(pages)200 213 y(5\2267,)24 b(July\226September)j(1998.)0 400 y([36])50 b(A.)23 b(W)-7 b(ollrath,)25 b(J.)e(W)-7 b(aldo,)25 b(and)f(R.)f(Riggs.)36 b(Ja)n(v)n(a-Centric)26 b(Distrib)n(uted)h(Computing.)36 b Fb(IEEE)23 b(Micr)l(o)p Fv(,)h(17\(3\):44\22653,)200 513 y(May/June)h(1997.)0 701 y([37])50 b(K.)22 b(Y)-9 b(elick,)23 b(L.)f(Semenzato,)i(G.)e(Pik)o (e,)h(C.)e(Miyamoto,)j(B.)e(Liblit,)h(A.)f(Krishnamurthy)-6 b(,)25 b(P)-10 b(.)22 b(Hil\002nger)l(,)i(S.)d(Graham,)200 814 y(D.)f(Gay)-6 b(,)20 b(P)-10 b(.)19 b(Colella,)j(and)g(A.)d(Aik)o (en.)28 b(T)m(itanium:)g(a)20 b(High-performance)25 b(Ja)n(v)n(a)c (Dialect.)28 b(In)21 b Fb(A)m(CM)e(1998)i(workshop)200 927 y(on)j(J)m(ava)g(for)g(High-performance)j(network)e(computing)p Fv(,)g(Feb)l(.)e(1998.)0 1114 y([38])50 b(W)-8 b(.)20 b(Y)-10 b(u)20 b(and)i(A.)e(Cox.)28 b(Ja)n(v)n(a/DSM:)22 b(A)e(Platform)i(for)f(Heterogeneous)k(Computing.)30 b Fb(Concurr)m(ency:)g(Pr)o(actice)23 b(and)200 1227 y(Experience)p Fv(,)j(pages)e(1213\2261224,)j(No)o(v)-6 b(.)23 b(1997.)1900 5589 y Fr(21)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF