%!PS-Adobe-2.0 %%Creator: dvips 5.526 Copyright 1986, 1994 Radical Eye Software %%Title: paper.dvi %%CreationDate: Sat Apr 29 13:47:19 1995 %%Pages: 20 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips paper -o paper.ps %DVIPSParameters: dpi=300, comments removed %DVIPSSource: TeX output 1995.04.29:1347 %%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 4 get round 4 exch put dup dup 5 get round 5 exch put 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 add]{ 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 showpage userdict /eop-hook known{eop-hook}if}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 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 %%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 false 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 40258431 52099146 1000 300 300 (/white/homes/dongarra/PAPERS/TEX/MPI-CACM/NEW/paper.dvi) @start /Fa 1 66 df<00000080000000018000000001C000000003C000000007C00000 0007C00000000BC00000000BC000000013C000000033C000000023C000000043E0000000 43E000000081E000000101E000000101E000000201E000000201E000000401E000000801 E000000801E000001001F000001FFFF000002000F000004000F000004000F000008000F0 00008000F000010000F000020000F000020000F80004000078000C000078001E0000F800 FF800FFF8021237EA225>65 D E /Fb 2 61 df<70F8F8F87005057C840D>58 D<000001C00000078000001E00000078000001E00000078000000E00000038000000F000 0003C000000F0000003C000000F0000000F00000003C0000000F00000003C0000000F000 0000380000000E0000000780000001E0000000780000001E0000000780000001C01A1A7C 9723>60 D E /Fc 1 34 df<70F8F8F8F8F8F8F870707070707070707070202020202000 0000000070F8F8F87005217CA00D>33 D E /Fd 2 104 df<000F0038006000E001C001 C001C001C001C001C001C001C001C001C001C001C001C001C001C0038007001E00F8001E 000700038001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C000 E000600038000F102D7DA117>102 DI E /Fe 64 123 df<4010E038F078E038E038E038E038E038E038E038E038E0 38E03860300D0E7B9C18>34 D<01C00007E0000FF0000E70001C38001C38001C38001C38 001C73F81CF3F81CE3F80FC1C00FC3800F83800F03801F07003F87007B8E0071CE00E1FC 00E0FC00E07C00E07870E0787070FE707FFFE03FC7E00F03C0151C7F9B18>38 D<387C7C7E3E0E0E0E1C1C38F8F0C0070E789B18>I<007000F001E003C007800F001E00 1C00380038007000700070007000E000E000E000E000E000E000E000E000700070007000 7000380038001C001E000F00078003C001F000F000700C24799F18>I<6000F00078003C 001E000F000780038001C001C000E000E000E000E0007000700070007000700070007000 7000E000E000E000E001C001C0038007800F001E003C007800F00060000C247C9F18>I< 01C00001C00001C00001C00041C100F1C780FDDF807FFF001FFC0007F00007F0001FFC00 7FFF00FDDF80F1C78041C10001C00001C00001C00001C00011147D9718>I<00600000F0 0000F00000F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F0 0000F00000F00000F00000F00000F00000600013147E9718>I<1C3E7E7F3F1F070E1E7C F860080C788518>I<7FFFC0FFFFE0FFFFE07FFFC013047E8F18>I<3078FCFC7830060677 8518>I<000300000780000780000F80000F00001F00001E00001E00003E00003C00007C 0000780000780000F80000F00001F00001E00003E00003C00003C00007C0000780000F80 000F00000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F000 0060000011247D9F18>I<01F00007FC000FFE001F1F001C07003803807803C07001C070 01C0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C070 01C07803C03803801C07001F1F000FFE0007FC0001F000131C7E9B18>I<018003800380 07800F803F80FF80FB804380038003800380038003800380038003800380038003800380 03800380038003807FFCFFFE7FFC0F1C7B9B18>I<03F0000FFE003FFF007C0F807003C0 E001C0F000E0F000E06000E00000E00000E00001C00001C00003C0000780000F00001E00 003C0000780000F00001E00007C0000F80001E00E03C00E07FFFE0FFFFE07FFFE0131C7E 9B18>I<03F0000FFC001FFE003C0F00780780700380E001C0E001C0E001C0E001E0E001 E07001E07803E03C0FE01FFFE00FFEE003F0E00000E00001C00001C00001C03003807807 80780F00783E003FFC001FF00007C000131C7E9B18>57 D<183C7E7E3C18000000000000 0000183C7E7E3E1E0E1C3C78F060071A789318>59 D<7FFFC0FFFFE0FFFFE0FFFFE00000 00000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>61 D<00700000F80000F80000D80000D80001DC0001DC0001DC00018C00038E00038E00038E 00038E000707000707000707000707000707000FFF800FFF800FFF800E03801C01C01C01 C01C01C07F07F0FF07F87F07F0151C7F9B18>65 D<7FFC00FFFF007FFF801C03C01C01C0 1C00E01C00E01C00E01C00E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C00E0 1C00F01C00701C00701C00701C00701C00F01C00E01C03E07FFFC0FFFF807FFE00141C7F 9B18>I<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000E07000E0700000E000 00E00000E00000E00000E00000E00000E00000E000007000007000E07000E03800E03C00 E01E01C00F07C007FF8003FE0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C 03C01C03C01C01E01C00E01C00E01C00F01C00701C00701C00701C00701C00701C00701C 00701C00701C00F01C00E01C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF80014 1C7F9B18>III<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C 01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C 01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>72 D<7FFF00FFFF807FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C0 0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 0001C0007FFF00FFFF807FFF00111C7D9B18>I<7F07F0FF87F87F07F01C03C01C07801C 07001C0E001C1E001C3C001C38001C70001CF0001DF0001DF0001FB8001FB8001F1C001E 1C001C0E001C0E001C07001C07001C03801C03801C01C07F03F0FF87F87F03F0151C7F9B 18>75 DII<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C0 1CE1C01CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC0 1C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<0FFE003FFF807FFFC07803 C07001C0F001E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000 E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07C07C07FFFC03FFF800FFE 00131C7E9B18>II<7FF800FFFE007FFF00 1C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE00 1C0F001C07001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F8 7F00F0161C7F9B18>82 D<03F1C01FFFC03FFFC07C0FC07003C0E001C0E001C0E001C0E0 00007000007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E060 00E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8 FFFFF8E07038E07038E07038E07038007000007000007000007000007000007000007000 00700000700000700000700000700000700000700000700000700000700000700007FF00 07FF0007FF00151C7F9B18>II87 D91 D93 D<061E3E387070E0E0E0F8FC7C7C38070E789E18>96 D<0FF0001FFC003FFE003C0F0018 070000038000038000FF8007FF801FFF807F0380780380E00380E00380E00380F0078078 0F803FFFF81FFDF807F0F815147E9318>I<7E0000FE00007E00000E00000E00000E0000 0E00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E0038 0E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18> I<01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000E000 00E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F8000 3F80001F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F8070 0780700380E00380E00380E00380E00380E00380E00380700780700780380F803C1F801F FFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F00380780700380700380 E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E07C01FFF8007FF00 01F80012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007FFF C0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 0001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80F FFF81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039 E0003800001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E0003878 00F07E03F01FFFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E0000 0E00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E0 0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC7FCFFE7FE7FC7FC171C80 9B18>I<038007C007C007C0038000000000000000007FC0FFC07FC001C001C001C001C0 01C001C001C001C001C001C001C001C001C001C0FFFFFFFFFFFF101D7C9C18>I<7E0000 FE00007E00000E00000E00000E00000E00000E00000E3FF00E3FF00E3FF00E07800E0F00 0E1E000E3C000E78000EF0000FF8000FFC000F9C000F0E000E0F000E07000E03800E03C0 7FC7F8FFC7F87FC7F8151C7F9B18>107 D II<7E3E00FE FF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E 00E00E00E00E00E00E00E07FC7FCFFE7FE7FC7FC1714809318>I<01F0000FFE001FFF00 3E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C0 3C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80 E00F00700E00700E00380E00380E00380E00380E00380E00380F00700F00700F80E00FC1 E00FFFC00EFF800E3E000E00000E00000E00000E00000E00000E00000E00007FC000FFE0 007FC000151E809318>I<01F38007FB801FFF803E1F80380F80700780700780E00380E0 0380E00380E00380E00380E00380700780700780380F803C1F801FFF800FFB8003E38000 0380000380000380000380000380000380000380001FF0003FF8001FF0151E7E9318>I< FF0FC0FF3FE0FF7FF007F0F007E06007C000078000078000070000070000070000070000 070000070000070000070000070000FFFC00FFFE00FFFC0014147E9318>I<07F7003FFF 007FFF00780F00E00700E00700E007007C00007FE0001FFC0003FE00001F00600780E003 80E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<01800003800003800003 80000380007FFFC0FFFFC0FFFFC003800003800003800003800003800003800003800003 80000380000380400380E00380E00380E001C1C001FFC000FF80003E0013197F9818>I< 7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0 0E00E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8F F87F8FF01C01C00E03800E03800E0380070700070700070700078F00038E00038E00038E 0001DC0001DC0001DC0000F80000F80000700015147F9318>II<7F8FF07F9FF07F8FF00F0700078E00 039E0001DC0001F80000F80000700000F00000F80001DC00039E00038E000707000E0780 7F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8FF00E01C00E03800E03800703 80070700070700038700038700038E0001CE0001CE0001CC0000CC0000DC000078000078 0000780000700000700000700000F00000E00079E0007BC0007F80003F00001E0000151E 7F9318>I<3FFFF07FFFF07FFFF07001E07003C0700780000F00001E00003C0000F80001 F00003C0000780000F00701E00703C0070780070FFFFF0FFFFF0FFFFF014147F9318>I E /Ff 23 120 df45 D<60F0F06004047C830C>I<003F800000 E0E0000380380007001C000E000E001C0007003C00078038000380780003C0780003C070 0001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E070 0001C0780003C0780003C0380003803C0007801C0007000E000E0007001C000380380000 E0E000003F80001B1E7E9C20>79 D<1FC000307000783800781C00301C00001C00001C00 01FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E 9115>97 DI<03F80C0C181E301E70 0C6000E000E000E000E000E000E00060007002300218040C1803E00F127F9112>I<001F 8000038000038000038000038000038000038000038000038000038000038003F3800E0B 80180780300380700380600380E00380E00380E00380E00380E00380E003806003807003 803003801807800E1B8003E3F0141D7F9C17>I<07E00C301818300C700E6006E006FFFE E000E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E 0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E 000E000E000E000E000E007FE00F1D809C0D>I<00038007C4C01C78C038388030180070 1C00701C00701C00701C003018003838001C700027C0002000002000003000003FF8001F FF001FFF802003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F92 15>II<18003C003C001800000000 0000000000000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C 001C001C001C001C00FF80091D7F9C0C>I107 DIII<03F0000E1C00180600300300700380600180E001C0E001 C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115 >II114 D<1F9020704030C010C010E010 F8007F803FE00FF000F880388018C018C018E010D0608FC00D127F9110>I<0400040004 0004000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C001C101C101C 101C101C100C100E2003C00C1A7F9910>II119 D E /Fg 1 50 df<0C001C00EC000C000C000C000C 000C000C000C000C000C000C000C000C000C000C000C00FFC00A137D9211>49 D E /Fh 2 50 df<07C018303018701C600C600CE00EE00EE00EE00EE00EE00EE00EE00E E00E600C600C701C30181C7007C00F157F9412>48 D<06000E00FE000E000E000E000E00 0E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B157D9412>I E /Fi 44 124 df<0C1E3F3F1D02020204040810204080080F75A20F>39 D<0E1E1E1E1E02020404080810204080070F7D840F>44 D I<07000F800F800F000E00000000000000000000000000000000000000000000007000F8 00F800F000E00009157A940F>58 D<0000030000000300000007000000070000000F0000 000F0000001F0000002F0000002F0000004F8000004F8000008780000087800001078000 020780000207800004078000040780000807800018078000100780002007800020078000 7FFFC0004003C0008003C0018003C0010003C0020003C0020003C0040003C0040003C00C 0003C03C0007E0FF003FFC1E237DA224>65 D<00007F00800003808100000E0063000038 0027000070001F0000E0000E0001C0000E000380000E000700000E000F000004000E0000 04001E000004003C000004003C00000800780000000078000000007800000000F0000000 00F000000000F000000000F000000000F000000000E000000000E000002000E000002000 E000004000E000004000F00000800070000080007000010000380002000018000400001C 0008000006003000000381C0000000FE000000212479A223>67 D<00FFFFF000000F003C 00000F000E00000F000700001E000380001E000380001E0001C0001E0001C0003C0001C0 003C0001E0003C0001E0003C0001E000780001E000780001E000780001E000780001E000 F00003C000F00003C000F00003C000F00003C001E000078001E000078001E000070001E0 000F0003C0000E0003C0001C0003C0003C0003C00038000780007000078000E000078003 800007800700000F801C0000FFFFF0000023227DA125>I<00FFFFFF80000F000780000F 000180000F000180001E000180001E000180001E000100001E000100003C000100003C00 0100003C010100003C01000000780200000078020000007806000000780E000000FFFC00 0000F00C000000F00C000000F00C000001E008000001E008000001E008040001E0000800 03C000080003C000080003C000100003C000100007800020000780006000078000C00007 8001C0000F0007C000FFFFFF800021227DA121>I<00FFFFFF000F000F000F0003000F00 03001E0003001E0003001E0002001E0002003C0002003C0002003C0102003C0100007802 00007802000078060000780E0000FFFC0000F00C0000F00C0000F00C0001E0080001E008 0001E0080001E0000003C0000003C0000003C0000003C000000780000007800000078000 00078000000F800000FFF8000020227DA120>I<00007F00800003808100000E00630000 380027000070001F0000E0000E0001C0000E000380000E000700000E000F000004000E00 0004001E000004003C000004003C00000800780000000078000000007800000000F00000 0000F000000000F000000000F000000000F0003FFC00E00001E000E00001E000E00001E0 00E00003C000E00003C000F00003C000700003C0007000078000380007800018000F8000 1C0013800006002300000381C1000000FE000000212479A226>I<00FFF87FFC000F0007 80000F000780000F000780001E000F00001E000F00001E000F00001E000F00003C001E00 003C001E00003C001E00003C001E000078003C000078003C000078003C000078003C0000 FFFFF80000F000780000F000780000F000780001E000F00001E000F00001E000F00001E0 00F00003C001E00003C001E00003C001E00003C001E000078003C000078003C000078003 C000078003C0000F8007C000FFF07FF80026227DA124>I<00FFF8000F00000F00000F00 001E00001E00001E00001E00003C00003C00003C00003C00007800007800007800007800 00F00000F00000F00000F00001E00001E00001E00001E00003C00003C00003C00003C000 0780000780000780000780000F8000FFF00015227DA113>I<0007FFC000003C0000003C 0000003C00000078000000780000007800000078000000F0000000F0000000F0000000F0 000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C000000780 00000780000007800000078000000F0000000F0000380F0000780F0000F81E0000F81E00 00F03C0000403800004070000021E000001F8000001A237CA11A>I<00FF800007FC000F 80000F80000F80001780000F80001780001780002F000013C0002F000013C0004F000013 C0008F000023C0009E000023C0011E000023C0011E000023C0021E000043C0043C000043 C0043C000043C0083C000041E0083C000081E01078000081E02078000081E02078000081 E04078000101E040F0000101E080F0000101E100F0000101E100F0000200F201E0000200 F201E0000200F401E0000200F801E0000400F803C0000400F003C0000400F003C0000C00 E003C0001E00C007C000FF80C07FF8002E227DA12C>77 D<00FF000FFC000F8001E0000F 800180000FC000800013C001000013C001000011E001000011E001000021E002000020F0 02000020F002000020F0020000407804000040780400004078040000403C040000803C08 0000803E080000801E080000801E080001001F100001000F100001000F10000100079000 020007A000020007A000020003E000020003E000040003C000040001C000040001C0000C 0001C0001E00008000FF8000800026227DA124>I<00FFFFE0000F0038000F001E000F00 0E001E0007001E0007001E0007001E0007003C000F003C000F003C000F003C001E007800 1E0078003C00780078007800E000F003C000FFFE0000F0000000F0000001E0000001E000 0001E0000001E0000003C0000003C0000003C0000003C000000780000007800000078000 00078000000F800000FFF0000020227DA121>80 D<0001F020000E0C40001802C0003001 C0006001C000E0018000C0018001C0018001C0018003C0010003C0010003C0000003C000 0003E0000001F8000001FF000000FFE000007FF000001FF8000003FC0000007C0000003C 0000001E0000001E0000001E0020001C0020001C0020001C002000180060003800600030 00700060007000C000C8018000C607000081FC00001B247DA21B>83 D<1FFFFFF81E03C0381803C0183003C01820078018200780184007801040078010400F00 10800F0010800F0010000F0000001E0000001E0000001E0000001E0000003C0000003C00 00003C0000003C00000078000000780000007800000078000000F0000000F0000000F000 0000F0000001E0000001E0000001E0000001E0000003E00000FFFF00001D2277A123>I< 3FFE03FF03C0007803C0006003C00020078000400780004007800040078000400F000080 0F0000800F0000800F0000801E0001001E0001001E0001001E0001003C0002003C000200 3C0002003C0002007800040078000400780004007800040070000800F0000800F0001000 7000100070002000700040003000400038018000180200000E0C000003F00000202377A1 24>II<00F8C00185C00705C00E03800E03801C03803C0380380700780700780700 780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C40308C400F078014157B 9419>97 D<03C01F8003800380038007000700070007000E000E000E000E001C001CF81D 0C1E0E3C0638073807380F700F700F700F700FE01EE01EE01EE03CE038E038607060E031 C01F0010237BA216>I<007E0001C1000301800703800E07801C07803C00003800007800 00780000780000F00000F00000F00000F00000F00100700100700200300C001830000FC0 0011157B9416>I<00003C0003F800003800003800003800007000007000007000007000 00E00000E00000E00000E00001C000F9C00185C00705C00E03800E03801C03803C038038 0700780700780700780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C4030 8C400F078016237BA219>I<00F803840E021C023C0238027804F018FFE0F000F000E000 E000E000E000E002E0026004701830600F800F157A9416>I<00003E0000470000CF0001 8F000186000380000380000380000700000700000700000700000700000E0000FFF0000E 00000E00000E00001C00001C00001C00001C00001C000038000038000038000038000038 0000700000700000700000700000700000E00000E00000E00000E00000C00001C00001C0 00718000F18000F300006200003C0000182D82A20F>I<001F180030B800E0B801C07001 C0700380700780700700E00F00E00F00E00F00E01E01C01E01C01E01C01E01C01E03800E 03800E0780060B8006170001E700000700000700000E00000E00000E00701C00F01800F0 300060E0003F8000151F7E9416>I<00F0000FE00000E00000E00000E00001C00001C000 01C00001C000038000038000038000038000070000071F0007218007C0C00F00E00F00E0 0E00E00E00E01C01C01C01C01C01C01C01C0380380380380380380380704700708700E08 700E10700610E006206003C016237DA219>I<00C001E001C001C0000000000000000000 000000000000001E002300430043008700870087000E000E001C001C001C003800380038 40708070807080710032001C000B217BA00F>I<00F00007E00000E00000E00000E00001 C00001C00001C00001C0000380000380000380000380000700000701E00702100704700E 08F00E10F00E20600E40001D80001E00001FC0001C7000383800383800381C00381C2070 3840703840703840701880E01880600F0014237DA216>107 D<01E00FC001C001C001C0 038003800380038007000700070007000E000E000E000E001C001C001C001C0038003800 380038007000700070007100E200E200E200E200640038000B237CA20C>I<1C0F80F800 2610C10C00476066060087807807008780780700870070070087007007000E00E00E000E 00E00E000E00E00E000E00E00E001C01C01C001C01C01C001C01C01C001C01C038203803 80384038038070403803807080380380308070070031003003001E0023157B9428>I<38 0F804C30C04E40608E80708F00708E00708E00701C00E01C00E01C00E01C00E03801C038 01C03801C0380384700388700308700708700310E003106001E016157B941B>I<007E00 01C3000381800701C00E01C01C01E03C01E03801E07801E07801E07801E0F003C0F003C0 F00380F00780700700700E00700C0030180018700007C00013157B9419>I<01C1F00262 1804741C08780C08700E08700E08701E00E01E00E01E00E01E00E01E01C03C01C03C01C0 3C01C07803807003807003C0E003C1C0072380071E000700000700000E00000E00000E00 000E00001C00001C00001C0000FFC000171F7F9419>I<00F8400184C00705C00E03800E 03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E00F01C0070 1C00703C00305C0030B8000F380000380000380000700000700000700000700000E00000 E00000E0000FFC00121F7B9416>I<1C1F002620804741C08783C08703C0870180870000 0E00000E00000E00000E00001C00001C00001C00001C0000380000380000380000380000 70000030000012157B9415>I<00FC000183000200800401800C03800C03000C00000F00 000FF00007FC0003FE00003E00000F00000700700700F00600F00600E004004008002030 001FC00011157D9414>I<00C001C001C001C001C003800380038003800700FFF8070007 000E000E000E000E001C001C001C001C003800380038003810702070207040708031001E 000D1F7C9E10>I<1E00602300E04380E04381C08381C08701C08701C00703800E03800E 03800E03801C07001C07001C07001C07081C0E10180E101C0E101C1E200C262007C3C015 157B941A>I<1E0060E02300E0F04380E1F04381C0F08381C0708701C0308701C0300703 80200E0380200E0380200E0380201C0700401C0700401C0700401C0700801C0700801C07 01001C0F01000C0B02000613840003E0F8001C157B9420>119 D<03C1E0046210083470 103CF02038F020386020380000700000700000700000700000E00000E00000E00000E020 61C040F1C040F1C080E2C100446200383C0014157D9416>I<1E00302300704380704380 E08380E08700E08700E00701C00E01C00E01C00E01C01C03801C03801C03801C03801C07 001C07001C07001C0F000C3E0003CE00000E00000E00001C00601C00F03800F03000E060 0080C0004380003E0000141F7B9418>I123 D E /Fj 44 122 df<0038007800F001E003C007800F000E001C001C0038003800700070 007000E000E000E000E000E000E000E000E000E000E000700070007000380038001C001C 000E000F00078003C001E000F8007800380D2878A21A>40 D<6000F00078003C001E000F 000780038001C001C000E000E00070007000700038003800380038003800380038003800 38003800700070007000E000E001C001C0038007800F001E003C007800F00060000D287C A21A>I<7FFFC0FFFFE0FFFFE07FFFC013047D901A>45 D<3078FCFC7830060676851A>I< 0000C00001E00001E00003E00003C00007C0000780000F80000F00000F00001F00001E00 003E00003C00007C0000780000780000F80000F00001F00001E00003E00003C00003C000 07C0000780000F80000F00001F00001E00001E00003E00003C00007C0000780000F80000 F00000F0000060000013277DA21A>I<03F8000FFE001FFF803C07C07801E07000E0E000 70F00070F000706000700000700000700000E00000E00001C00003C0000780000F00001E 00003C0000780000F00003E00007C0000F00001E00703C00707FFFF0FFFFF07FFFF0141E 7D9D1A>50 D<03FC000FFF003FFFC03C03E07800E07800707800700000700000700000E0 0001E00007C003FF8003FF0003FFC00003E00000E0000070000078000038000038600038 F00038F00078E000707000E07E03E03FFFC00FFF0001FC00151E7E9D1A>I<3078FCFC78 300000000000000000003078FCFC7830061576941A>58 D<003E0001FF8003FFC007C1E0 0F00E01E0F703C3FF0387FF07070F870E07870E078E1C038E1C038E1C038E1C038E1C038 E1C038E1C038E1C03870E07070E0707070E0387FE03C3FC01E0F000F003807C0F803FFF0 01FFE0003F00151E7E9D1A>64 D<003800007C00007C00006C0000EE0000EE0000EE0000 C60000C60001C70001C70001C7000183000383800383800383800383800701C00701C007 FFC007FFC00FFFE00E00E00E00E00E00E01E00F01C00707F01FCFF83FE7F01FC171E7F9D 1A>I<007C3801FF3807FFF80F83F81E00F81C0078380078380038700038700038700000 E00000E00000E00000E00000E00000E00000E00000E00000700000700038700038380038 3800381C00701E00F00F83E007FFC001FF80007C00151E7E9D1A>67 D<7FFE00FFFF007FFF801C07C01C01E01C00F01C00701C00781C00381C00381C003C1C00 1C1C001C1C001C1C001C1C001C1C001C1C001C1C001C1C003C1C00381C00381C00781C00 701C00F01C01E01C07C07FFFC0FFFF007FFE00161E7F9D1A>I72 D<7FFF00FFFF807FFF0001C00001C00001C00001C0 0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 0001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF807FFF00111E 7C9D1A>I<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E 00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E 001C0E001C0E001C0E001C0E001C7FFFFCFFFFFC7FFFFC161E7F9D1A>76 DI<0FFE003FFF807FFFC07C 07C07001C0F001E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E0 00E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E0F001E07001C07C07C07F FFC03FFF800FFE00131E7D9D1A>79 DI82 D87 D<3FFFF87FFFF87FFFF8 7000707000E07001E07001C0000380000780000700000E00001E00001C00003800007800 00F00000E00001C00003C0000380000700000F00000E00381C00383C0038380038700038 FFFFF8FFFFF8FFFFF8151E7E9D1A>90 D<1FF0003FFC007FFE00780F0030070000038000 0380007F8007FF801FFF803F8380780380700380E00380E00380E00380700780780F803F FFFC1FFDFC07F0FC16157D941A>97 D<7E0000FE00007E00000E00000E00000E00000E00 000E00000E00000E3E000EFF800FFFE00FC1F00F80700F00380E00380E001C0E001C0E00 1C0E001C0E001C0E001C0E001C0F00380F00780F80F00FC1E00FFFC00EFF80063E00161E 7F9D1A>I<00FF8003FFC00FFFE01F01E03C00C0780000700000700000E00000E00000E0 0000E00000E000007000007000007800703C00701F01F00FFFE003FFC000FE0014157D94 1A>I<000FC0001FC0000FC00001C00001C00001C00001C00001C00001C001F1C007FDC0 0FFFC01E0FC03C07C07803C07001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0 7003C07003C03807C03E0FC01FFFF807FDFC01F1F8161E7E9D1A>I<01F80007FF000FFF 801E07C03C01C07800E07000E0E00070E00070FFFFF0FFFFF0FFFFF0E000007000007000 007800703C00701F01F00FFFE003FF8000FE0014157D941A>I<0007E0001FF0003FF800 787800F03000E00000E00000E00000E0007FFFF0FFFFF0FFFFF000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0003F FF807FFFC03FFF80151E7F9D1A>I<01F87C07FFFE0FFFFE1E078C1C03803801C03801C0 3801C03801C03801C01C03801E07801FFF001FFE0039F8003800003800001C00001FFF80 1FFFE03FFFF878007C70001CE0000EE0000EE0000EE0000E70001C78003C3E00F81FFFF0 07FFC001FF0017217F941A>I<7E0000FE00007E00000E00000E00000E00000E00000E00 000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00 E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171E7F9D1A >I<00C00001E00001E00000C0000000000000000000000000000000000000007FE0007F E0007FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E0007FFF80FFFFC07FFF80121F7C9E1A>I107 D<7FE000FFE0007FE00000E00000E000 00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000 00E00000E00000E00000E00000E00000E00000E00000E00000E00000E0007FFFC0FFFFE0 7FFFC0131E7D9D1A>I<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C 1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C 1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F00191580941A>I<7E3E00FEFF807F FFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E 00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC17157F941A>I<01F00007FC001FFF00 3E0F803C07807803C07001C0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C0 7803C03C07803E0F801FFF0007FC0001F00013157D941A>I<7E3E00FEFF807FFFE00FC1 F00F80700F00380E00380E001C0E001C0E001C0E001C0E001C0E001C0E001C0F00380F00 780F80F00FC1E00FFFC00EFF800E3E000E00000E00000E00000E00000E00000E00000E00 000E00007FC000FFE0007FC00016207F941A>I<7F81F8FF8FFC7F9FFE03FE1E03F80C03 E00003E00003C00003800003800003800003800003800003800003800003800003800003 80007FFF00FFFF007FFF0017157F941A>114 D<07FB801FFF807FFF80780780E00380E0 0380E003807800007FC0001FFC0007FE00003F800007806001C0E001C0E001C0F003C0FC 0780FFFF00EFFE00E3F80012157C941A>I<018000038000038000038000038000038000 0380007FFFE0FFFFE0FFFFE0038000038000038000038000038000038000038000038000 03800003800003807003807003807003807001C1E001FFE000FF80003F00141C7F9B1A> I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00 E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03FFFE00FCFC17157F941A>I<7F 83FCFFC7FE7F83FC0E00E00E00E00E00E00701C00701C00701C003838003838003838001 C70001C70001C70000EE0000EE0000EE00007C00007C0000380017157F941A>II<7FC7F87FCF FC7FC7F80703C003838003C70001EF0000FE00007C00007800003800007C0000EE0001EE 0001C7000383800783C00F01C07FC7FCFFC7FE7FC7FC17157F941A>I<7F83FCFFC7FE7F 83FC0E00E00E00E00700E00701C00701C00381C003838003C38001C38001C70000E70000 E70000E600006600006E00003C00003C00003C0000380000380000380000700000700030 F00078E00071E0007FC0003F80001E000017207F941A>I E /Fk 3 81 df73 D77 D 80 D E /Fl 1 16 df<03F0000FFC001FFE003FFF007FFF807FFF80FFFFC0FFFFC0FFFF C0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC07FFF807FFF803FFF001FFE000FFC0003F0001214 7D9519>15 D E /Fm 5 81 df45 D<03F0000FFC001FFE00 3C1F003007807003C06003C0E003E0C001E04001E04001E00001E00001E00001E00003C0 0003C0000780000780000F00001E00003C0000780000F00001E00001C000038000070000 0E00001C0000380000700000FFFFE0FFFFE0FFFFE013227EA118>50 D73 D77 D80 D E /Fn 51 122 df<000FF83F00007FFDFFC001 F81FE3E003E03F87E007C03F87E00F803F07E00F803F03C00F801F00000F801F00000F80 1F00000F801F00000F801F00000F801F0000FFFFFFFC00FFFFFFFC000F801F00000F801F 00000F801F00000F801F00000F801F00000F801F00000F801F00000F801F00000F801F00 000F801F00000F801F00000F801F00000F801F00000F801F00000F801F00000F801F0000 0F801F00000F801F00007FF0FFF0007FF0FFF00023237FA221>11 D<000FF000007FFC0001F80E0003E01F0007C03F000F803F000F803F000F801E000F800C 000F8000000F8000000F8000000F800000FFFFFF00FFFFFF000F801F000F801F000F801F 000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F 000F801F000F801F000F801F000F801F000F801F000F801F007FF0FFE07FF0FFE01B237F A21F>I<387CFEFFFF7F3B03030306060C1C18702008117C8610>44 DI<00FE0007FFC00F83E01F01F03E00F83E00F87C00 7C7C007C7C007CFC007CFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC00 7EFC007EFC007EFC007EFC007E7C007C7C007C7C007C3E00F83E00F81F01F00F83E007FF C000FE0017207E9F1C>48 D<00180000780001F800FFF800FFF80001F80001F80001F800 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE0 13207C9F1C>I<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01 F83803F80003F80003F00003F00007E00007C0000F80001F00003E0000380000700000E0 1801C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F1C >I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F000 03E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF 00FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C>I<0000E0 0001E00003E00003E00007E0000FE0001FE0001FE00037E00077E000E7E001C7E00187E0 0307E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFFFFFFFF0007E00007E0 0007E00007E00007E00007E00007E000FFFF00FFFF18207E9F1C>I<3000203E01E03FFF C03FFF803FFF003FFE003FF80033C00030000030000030000030000031FC0037FF003E0F C03807E03003E00003F00003F00003F80003F83803F87C03F8FE03F8FE03F8FC03F0FC03 F07007E03007C03C1F800FFF0003F80015207D9F1C>I<001F8000FFE003E07007C0F00F 01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFFE0FD80F0FF00F8FE 007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C3E007C1E00F80F 00F00783E003FFC000FF0017207E9F1C>I<6000007800007FFFFE7FFFFE7FFFFC7FFFF8 7FFFF87FFFF0E00060E000C0C00180C00300C00300000600000C00001C00001800003800 00780000780000F00000F00000F00001F00001F00001F00003F00003F00003F00003F000 03F00003F00003F00001E00017227DA11C>I<00FE0003FFC00703E00E00F01C00F01C00 783C00783E00783F00783F80783FE0F01FF9E01FFFC00FFF8007FFC003FFE007FFF01E7F F83C1FFC7807FC7801FEF000FEF0003EF0001EF0001EF0001EF8001C7800383C00381F00 F00FFFC001FF0017207E9F1C>I<01FE0007FF800F83E01E01F03E00F07C00F87C0078FC 007CFC007CFC007CFC007EFC007EFC007EFC007E7C00FE7C00FE3E01FE1E037E0FFE7E07 FC7E00207E00007C00007C1E007C3F00F83F00F83F00F03F01E01E03C01C0F800FFE0003 F80017207E9F1C>I<387CFEFEFE7C380000000000000000387CFEFEFE7C3807167C9510> I<000070000000007000000000F800000000F800000000F800000001FC00000001FC0000 0003FE00000003FE00000003FE000000067F000000067F0000000C7F8000000C3F800000 0C3F800000181FC00000181FC00000301FE00000300FE00000700FF000006007F0000060 07F00000C007F80000FFFFF80001FFFFFC00018001FC00018001FC00030001FE00030000 FE00070000FF000600007F000600007F00FFE007FFF8FFE007FFF825227EA12A>65 DI<0003 FE0080001FFF818000FF01E38001F8003F8003E0001F8007C0000F800F800007801F8000 07803F000003803F000003807F000001807E000001807E00000180FE00000000FE000000 00FE00000000FE00000000FE00000000FE00000000FE00000000FE000000007E00000000 7E000001807F000001803F000001803F000003801F800003000F8000030007C000060003 F0000C0001F800380000FF00F000001FFFC0000003FE000021227DA128>II<0003FE0040001FFF C0C0007F00F1C001F8003FC003F0000FC007C00007C00FC00003C01F800003C03F000001 C03F000001C07F000000C07E000000C07E000000C0FE00000000FE00000000FE00000000 FE00000000FE00000000FE00000000FE00000000FE000FFFFC7E000FFFFC7F00001FC07F 00001FC03F00001FC03F00001FC01F80001FC00FC0001FC007E0001FC003F0001FC001FC 003FC0007F80E7C0001FFFC3C00003FF00C026227DA12C>71 D73 D76 DII<0007FC0000003F FF800000FC07E00003F001F80007E000FC000FC0007E001F80003F001F80003F003F0000 1F803F00001F807F00001FC07E00000FC07E00000FC0FE00000FE0FE00000FE0FE00000F E0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00000FC0 7F00001FC07F00001FC03F00001F803F80003F801F80003F000FC0007E0007E000FC0003 F001F80000FC07E000003FFF80000007FC000023227DA12A>II<01FE0207FF861F01FE3C00 7E7C001E78000E78000EF80006F80006FC0006FC0000FF0000FFE0007FFF007FFFC03FFF F01FFFF80FFFFC03FFFE003FFE0003FE00007F00003F00003FC0001FC0001FC0001FE000 1EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA11F>83 D85 D87 D<0FFC003FFF807E07C07E03E07E01E07E01 F03C01F00001F00001F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC01F0FC01F0FC01 F07E02F07E0CF81FF87F07E03F18167E951B>97 DI<00FF8007FFE00F83F01F03F0 3E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E0000 7E00003E00181F00300FC06007FFC000FF0015167E9519>I<0001FE000001FE0000003E 0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E 0000003E0001FC3E0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E 00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E 003E007E001F00FE000F83BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87 C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00 007C00007E00003E00181F00300FC07003FFC000FF0015167E951A>I<001FC0007FE000 F1F001E3F003E3F007C3F007C1E007C00007C00007C00007C00007C00007C000FFFE00FF FE0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007 C00007C00007C00007C00007C00007C00007C0003FFC003FFC00142380A211>I<01FE0F 0007FFBF800F87C7801F03E7801E01E0003E01F0003E01F0003E01F0003E01F0003E01F0 001E01E0001F03E0000F87C0000FFF800009FE000018000000180000001C0000001FFFE0 000FFFF80007FFFE001FFFFF003C003F0078000F80F0000780F0000780F0000780F00007 8078000F003C001E001F007C000FFFF80001FFC00019217F951C>II<1C003E007F 007F007F003E001C000000000000000000000000000000FF00FF001F001F001F001F001F 001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B247EA310 >I108 DII<00FE0007FFC00F83E0 1E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E 7C007C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C>II114 D<0FF3003FFF00781F00600700E003 00E00300F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E003 80E00380F00700FC0E00EFFC00C7F00011167E9516>I<01800001800001800001800003 80000380000780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F 80000F80000F80000F80000F80000F80000F80000F81800F81800F81800F81800F81800F 830007C30003FE0000F80011207F9F16>III III E /Fo 50 122 df<00001FFC00000001FFFF000000 07FFFF8000001FF807C000007FC003E00000FF0007F00000FE000FF00001FE000FF00003 FC000FF00003FC000FF00003FC000FF00003FC0007E00003FC0001800003FC0000000003 FC0000000003FC0000000003FC0000000003FC00FFF800FFFFFFFFF800FFFFFFFFF800FF FFFFFFF80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003 FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003 FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003 FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003 FC0007F80003FC0007F80003FC0007F8007FFFE0FFFFC07FFFE0FFFFC07FFFE0FFFFC02A 327FB12E>12 D<1F003F807FC0FFE0FFE0FFF0FFF0FFF07FF03FF01F700070007000E000 E000E001C001C00380038007000E001C00380010000C197A8A17>44 DI<0001E0000003E0 00000FE000007FE0001FFFE000FFFFE000FFBFE000E03FE000003FE000003FE000003FE0 00003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE0 00003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE0 00003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE0 00003FE000003FE000003FE000003FE000003FE0007FFFFFF07FFFFFF07FFFFFF01C2E7A AD29>49 D<003FF00001FFFE0007FFFF800FC07FE01E001FF03C000FF87F0007FC7F8007 FEFFC007FEFFC003FEFFC003FFFFC003FF7F8003FF7F8003FF3F0003FF000003FF000003 FE000003FE000007FC000007FC00000FF800000FF000001FE000001FC000003F8000007F 000000FE000001F8000001F0000003E00000078007000F0007001E0007003C000F007800 0E00F0000E01C0001E03FFFFFE07FFFFFE0FFFFFFE1FFFFFFE3FFFFFFE7FFFFFFCFFFFFF FCFFFFFFFCFFFFFFFC202E7CAD29>I<000FFC0000007FFF800001F01FE00003C00FF000 070007F8000FE007FC000FF007FC001FF007FE001FF807FE001FF807FE001FF807FE001F F807FE000FF007FC0007E007FC0001800FFC0000000FF80000000FF00000001FE0000000 3FC0000000FF8000003FFE0000003FFC0000003FFF800000001FF000000007F800000003 FC00000003FE00000003FF00000001FF80000001FF800E0001FFC03F8001FFC07FC001FF C07FC001FFC0FFE001FFC0FFE001FFC0FFE001FF80FFE001FF80FFC003FF007F8003FF00 3F0003FE001F0007FC000FE01FF80007FFFFE00001FFFF8000001FFC0000222E7DAD29> I<0000007800000000F800000001F800000003F800000007F800000007F80000000FF800 00001FF80000003FF80000007FF800000077F8000000F7F8000001E7F8000003C7F80000 0787F800000707F800000F07F800001E07F800003C07F800007807F800007007F80000F0 07F80001E007F80003C007F800078007F8000F0007F8000F0007F8001E0007F8003C0007 F800780007F800F00007F800FFFFFFFFF0FFFFFFFFF0FFFFFFFFF000000FF80000000FF8 0000000FF80000000FF80000000FF80000000FF80000000FF80000000FF80000000FF800 000FFFFFF0000FFFFFF0000FFFFFF0242E7EAD29>I<0C0000381FC003F81FFFFFF81FFF FFF01FFFFFE01FFFFFC01FFFFF801FFFFE001FFFFC001FFFF0001FFF00001E0000001E00 00001E0000001E0000001E0000001E0000001E0000001E1FF8001E7FFF001FFFFFC01FE0 1FE01F800FF01E0007F80C0007FC000003FC000003FE000003FE000003FF000003FF1E00 03FF3F0003FF7F8003FFFF8003FFFFC003FFFFC003FEFF8003FEFF8003FE7F0007FC7C00 07F83C000FF01E001FE00FC07FC007FFFF8001FFFE00003FE000202E7CAD29>I<00007F 80000007FFF000001FC07800007F001C0000FC001E0001F8007E0003F800FF0007F001FF 000FF001FF000FE001FF001FE001FF003FE000FE003FE0007C003FC00000007FC0000000 7FC00000007FC0000000FFC3FF8000FFC7FFE000FFCFBFF000FFDC03F800FFF801FC00FF F001FE00FFF000FF00FFE000FF80FFE000FF80FFE000FF80FFC000FFC0FFC000FFC0FFC0 00FFC07FC000FFC07FC000FFC07FC000FFC07FC000FFC03FC000FFC03FC000FF803FC000 FF801FE000FF801FE000FF000FE001FE0007F001FC0003F803F80001FC0FF00000FFFFE0 00003FFF80000007FC0000222E7DAD29>I<38000000003E000000003FFFFFFFE03FFFFF FFE03FFFFFFFE03FFFFFFFC07FFFFFFF807FFFFFFF007FFFFFFE007FFFFFFC007FFFFFF8 00780000F800700001F000700003E000F00007C000E000078000E0000F0000E0001F0000 00003E000000007C000000007800000000F800000001F000000001F000000003F0000000 03E000000007E000000007E00000000FE00000000FE00000001FE00000001FC00000001F C00000003FC00000003FC00000003FC00000003FC00000003FC00000007FC00000007FC0 0000007FC00000007FC00000007FC00000007FC00000007FC00000003F800000003F8000 00000E00000023307CAF29>I<0007FC0000003FFF800000F80FE00001E003F00003C001 F800078000FC000F8000FC000F80007E000F80007E001F80007E001FC0007E001FC0007E 001FF0007E001FF800FC001FFE00FC000FFF81F8000FFFE1F00007FFF7E00007FFFFC000 03FFFF000001FFFFC00000FFFFE000007FFFF80001FFFFFC0003F7FFFE000FE1FFFF001F 807FFF003F003FFF803F000FFF807E0003FFC07E0001FFC0FC00007FC0FC00001FC0FC00 001FC0FC00000FC0FC00000FC0FC00000F80FE00000F807E00000F007F00001F003F0000 1E001FC0007C000FF803F80003FFFFE00000FFFF8000001FFC0000222E7DAD29>I<000F FC0000007FFF000001FC0FC00003F003E00007E003F0000FE001F8001FE001FC003FC001 FE007FC000FE007FC000FF00FFC000FF00FFC000FF80FFC000FF80FFC000FF80FFC000FF 80FFC000FFC0FFC000FFC0FFC000FFC0FFC000FFC07FC001FFC07FC001FFC03FC001FFC0 3FC003FFC01FE003FFC00FE007FFC007F00EFFC003FF7CFFC001FFF8FFC0007FF0FF8000 0000FF80000000FF80000000FF80000000FF000F8001FF001FC001FF003FE001FE003FE0 01FE003FE003FC003FE003F8003FC007F0001F800FE0001E001FC0000F807F800007FFFE 000001FFF80000007FC00000222E7DAD29>I<1F003F807FC0FFE0FFE0FFE0FFE0FFE07F C03F801F0000000000000000000000000000000000000000001F003F807FC0FFE0FFE0FF E0FFE0FFE07FC03F801F000B207A9F17>I<0000007C0000000000007C000000000000FE 000000000000FE000000000000FE000000000001FF000000000001FF000000000003FF80 0000000003FF800000000007FFC00000000007FFC00000000007FFC0000000000FFFE000 0000000F7FE0000000001F7FF0000000001E3FF0000000001E3FF0000000003E3FF80000 00003C1FF8000000007C1FFC00000000780FFC00000000780FFC00000000F80FFE000000 00F007FE00000001F007FF00000001E003FF00000001E003FF00000003C003FF80000003 C001FF80000007C001FFC00000078000FFC00000078000FFC000000FFFFFFFE000000FFF FFFFE000001FFFFFFFF000001E00003FF000001E00003FF000003C00001FF800003C0000 1FF800007C00001FFC00007800000FFC0000F800000FFE0000F0000007FE0000F0000007 FE0001F0000007FF0003F8000003FF00FFFFC001FFFFFEFFFFC001FFFFFEFFFFC001FFFF FE37317DB03E>65 DI<00 0003FF80018000003FFFF003800001FFFFFC0F800007FF007F1F80001FF8000FBF80003F E00003FF8000FF800000FF8001FF0000007F8003FE0000003F8007FC0000003F8007FC00 00001F800FF80000001F801FF80000000F801FF00000000F803FF000000007803FF00000 0007807FF000000007807FE000000007807FE000000000007FE00000000000FFE0000000 0000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000000 00FFE00000000000FFE00000000000FFE000000000007FE000000000007FE00000000000 7FE000000000007FF000000003803FF000000003803FF000000003801FF000000003801F F800000007800FF8000000070007FC000000070007FC0000000E0003FE0000001E0001FF 0000003C0000FF8000007800003FE00000F000001FF80003E0000007FF003F80000001FF FFFE000000003FFFF80000000003FF80000031317BB03C>II<000003FF80018000003FFFF003800001FFFFFC0F80 0007FF007F1F80001FF8000FBF80003FE00003FF8000FF800000FF8001FF0000007F8003 FE0000003F8007FC0000003F8007FC0000001F800FF80000001F801FF80000000F801FF0 0000000F803FF000000007803FF000000007807FF000000007807FE000000007807FE000 000000007FE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000 000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00007FF FFFE7FE00007FFFFFE7FE00007FFFFFE7FE0000001FF807FF0000001FF803FF0000001FF 803FF0000001FF801FF0000001FF801FF8000001FF800FF8000001FF8007FC000001FF80 07FC000001FF8003FE000001FF8001FF000001FF8000FF800001FF80003FE00003FF8000 1FF80007FF800007FF803F3F800001FFFFFE1F8000003FFFF80780000003FFC001803731 7BB041>71 D73 D76 DII<00000FFE0000000000FFFFE000000007FFFFFC0000001FFC07 FF0000003FE000FF800000FF80003FE00001FF00001FF00003FE00000FF80007FC000007 FC0007FC000007FC000FF8000003FE001FF8000003FF001FF0000001FF003FF0000001FF 803FF0000001FF803FF0000001FF807FE0000000FFC07FE0000000FFC07FE0000000FFC0 FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FF E0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0 000000FFE07FE0000000FFC07FE0000000FFC07FF0000001FFC07FF0000001FFC03FF000 0001FF803FF0000001FF801FF8000003FF001FF8000003FF000FFC000007FE000FFC0000 07FE0007FE00000FFC0003FF00001FF80001FF80003FF00000FFC0007FE000003FE000FF 8000001FFC07FF00000007FFFFFC00000000FFFFE0000000000FFE00000033317BB03E> II82 D<001FF0018000FFFF038003FFFFC78007F00F FF800FC001FF801F00007F803F00001F803E00000F807E00000F807E00000780FE000007 80FE00000780FE00000380FF00000380FF00000380FF80000000FFE00000007FFC000000 7FFFE000007FFFFE00003FFFFFC0001FFFFFF0000FFFFFF80007FFFFFC0003FFFFFE0001 FFFFFF00007FFFFF80001FFFFF800000FFFFC0000007FFC0000000FFE00000007FE00000 003FE00000001FE06000001FE0E000000FE0E000000FE0E000000FE0E000000FC0F00000 0FC0F000000FC0F800001F80FC00001F80FF00003F00FFC0007E00FFFC01FC00F1FFFFF8 00E03FFFE000C007FF000023317BB02E>I85 D87 D<007FF8000003FFFF000007FFFFC0000FE01FE000 1FF007F0001FF003F8001FF003FC001FF001FE000FE001FE0007C001FE00010001FE0000 0001FE00000001FE000001FFFE00003FFFFE0001FFF1FE0007FE01FE000FF001FE001FC0 01FE003F8001FE007F8001FE00FF0001FE00FF0001FE00FF0001FE00FF0001FE00FF0003 FE007F8003FE007FC00EFE003FF03CFF000FFFF87FF807FFF03FF800FF800FF825207E9F 28>97 D<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F800000007F8 00000007F800000007F800000007F800000007F800000007F800000007F800000007F800 000007F800000007F800000007F800000007F800000007F80FF00007F87FFE0007F9FFFF 8007FFE03FC007FF000FE007FE0007F007F80003F807F80003FC07F80003FC07F80001FE 07F80001FE07F80001FE07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07 F80001FF07F80001FF07F80001FF07F80001FE07F80001FE07F80001FE07F80003FC07F8 0003FC07FC0007F807FE0007F007F7001FE007E3E07FC007C1FFFF0007807FFE0007001F E00028327EB12E>I<0007FF00007FFFE000FFFFF003FC03F807F007FC0FE007FC1FE007 FC3FC007FC3FC003F87FC001F07F8000407F800000FF800000FF800000FF800000FF8000 00FF800000FF800000FF800000FF8000007F8000007FC000007FC000003FC0000E3FE000 0E1FE0001C0FF0001C07F8007803FF01F000FFFFE0007FFF800007FC001F207D9F25>I< 00000007E0000003FFE0000003FFE0000003FFE00000003FE00000001FE00000001FE000 00001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000 001FE00000001FE00000001FE00000001FE0000FF81FE0007FFF1FE001FFFFDFE003FE03 FFE007F800FFE00FE0003FE01FE0001FE03FC0001FE03FC0001FE07F80001FE07F80001F E07F80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0 FF80001FE0FF80001FE07F80001FE07F80001FE07F80001FE03FC0001FE03FC0001FE01F C0003FE00FE0007FE007F001FFE003FC07DFF001FFFF9FFF007FFE1FFF000FF01FFF2832 7DB12E>I<0007FC0000003FFF800000FFFFE00003FC07F00007F801F8000FE000FC001F E0007E003FC0007E003FC0003F007FC0003F007F80003F007F80003F80FF80003F80FF80 003F80FFFFFFFF80FFFFFFFF80FFFFFFFF80FF80000000FF80000000FF800000007F8000 00007F800000003FC00000003FC00003801FC00003801FE00007800FF0000F0007F8001E 0003FE00FC0000FFFFF800003FFFE0000003FF000021207E9F26>I<0000FF000007FFC0 001FFFE0003FC7F0007F0FF800FE0FF801FE0FF801FC0FF803FC07F003FC03E003FC01C0 03FC000003FC000003FC000003FC000003FC000003FC000003FC0000FFFFFC00FFFFFC00 FFFFFC0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0000 03FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0000 03FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0000 7FFFF0007FFFF0007FFFF0001D327EB119>I<001FF803E000FFFF1FF001FFFFBFF807F8 1FF9F80FE007F1F80FE007F0F01FC003F8601FC003F8003FC003FC003FC003FC003FC003 FC003FC003FC003FC003FC001FC003F8001FC003F8000FE007F0000FE007F00007F81FE0 0007FFFF800006FFFF00000E1FF800000E000000001E000000001E000000001F00000000 1F800000001FFFFFC0000FFFFFF8000FFFFFFE0007FFFFFF0003FFFFFF8007FFFFFFC01F FFFFFFE03F00007FE07E00000FF0FC000007F0FC000003F0FC000003F0FC000003F0FC00 0003F07E000007E03F00000FC01FC0003F800FF801FF0007FFFFFE0000FFFFF000001FFF 8000252F7E9F29>I<01F800000000FFF800000000FFF800000000FFF8000000000FF800 00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800 00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800 00000007F80000000007F807F8000007F83FFF000007F87FFF800007F8F03FC00007F9C0 1FE00007FB000FE00007FE000FF00007FE000FF00007FC000FF00007FC000FF00007F800 0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800 0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800 0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800 0FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029327DB12E>I<01C00007F0000FF8 000FF8001FFC001FFC001FFC000FF8000FF80007F00001C0000000000000000000000000 0000000000000000000000000001F800FFF800FFF800FFF80007F80007F80007F80007F8 0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8 0007F80007F80007F80007F80007F80007F80007F80007F80007F800FFFF80FFFF80FFFF 8011337DB217>I<01F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007 F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007 F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007 F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007 F80007F800FFFFC0FFFFC0FFFFC012327DB117>108 D<03F007F8000FF000FFF03FFF00 7FFE00FFF07FFF80FFFF00FFF0F03FC1E07F800FF1C01FE3803FC007F3000FE6001FC007 F6000FFC001FE007FE000FFC001FE007FC000FF8001FE007FC000FF8001FE007F8000FF0 001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007 F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0 001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007 F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0 001FE0FFFFC1FFFF83FFFFFFFFC1FFFF83FFFFFFFFC1FFFF83FFFF40207D9F45>I<03F0 07F80000FFF03FFF0000FFF07FFF8000FFF0F03FC0000FF1C01FE00007F3000FE00007F6 000FF00007FE000FF00007FC000FF00007FC000FF00007F8000FF00007F8000FF00007F8 000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8 000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8 000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000FFFFC1FFFF80FFFF C1FFFF80FFFFC1FFFF8029207D9F2E>I<0007FE0000003FFFC00000FFFFF00003FC03FC 0007F000FE000FE0007F001FC0003F803FC0003FC03FC0003FC07F80001FE07F80001FE0 7F80001FE0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF 80001FF0FF80001FF07F80001FE07F80001FE07F80001FE03FC0003FC03FC0003FC01FE0 007F800FE0007F0007F801FE0003FE07FC0001FFFFF800003FFFC0000007FE000024207E 9F29>I<01F80FF000FFF87FFE00FFF9FFFF80FFFFE07FC00FFF001FE007FE000FF007F8 0007F807F80007FC07F80003FC07F80003FE07F80003FE07F80001FE07F80001FF07F800 01FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001 FE07F80003FE07F80003FE07F80003FC07F80007FC07FC0007F807FE000FF007FF001FE0 07FBE07FC007F9FFFF0007F87FFE0007F81FE00007F800000007F800000007F800000007 F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8 000000FFFFC00000FFFFC00000FFFFC00000282E7E9F2E>I<03F03F00FFF07FC0FFF1FF E0FFF1C7F00FF38FF807F70FF807F60FF807FE0FF807FC07F007FC03E007FC008007F800 0007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F800 0007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80000FFFFE0 00FFFFE000FFFFE0001D207E9F22>114 D<00FF870007FFEF001FFFFF003F007F003C00 1F0078000F00F8000700F8000700F8000700FC000700FF000000FFF800007FFFC0003FFF F0003FFFFC000FFFFE0007FFFF0001FFFF80001FFF800000FFC000001FC060000FC0E000 07C0E00007C0F00007C0F8000780F8000F80FE000F00FF803E00FFFFFC00F3FFF800C07F C0001A207D9F21>I<001C0000001C0000001C0000001C0000003C0000003C0000003C00 00007C0000007C000000FC000001FC000003FC000007FC00001FFC0000FFFFFF00FFFFFF 00FFFFFF0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00 0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC01 C003FC01C003FC01C003FC01C003FC01C003FC01C003FC01C001FC038001FE038000FF07 00007FFE00003FFC000007F0001A2E7FAD20>I<01F80003F000FFF801FFF000FFF801FF F000FFF801FFF0000FF8001FF00007F8000FF00007F8000FF00007F8000FF00007F8000F F00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000F F00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000F F00007F8000FF00007F8000FF00007F8000FF00007F8001FF00007F8001FF00003F8003F F00003F8006FF00001FE03CFF80000FFFF8FFF80007FFF0FFF80000FFC0FFF8029207D9F 2E>IIIII E /Fp 83 125 df<001FC1F00070371800C03E3C01807C 3C0380783C07003800070038000700380007003800070038000700380007003800070038 0007003800FFFFFFC0070038000700380007003800070038000700380007003800070038 000700380007003800070038000700380007003800070038000700380007003800070038 00070038000700380007003C007FE1FFC01E2380A21C>11 D<001FC0000070200000C010 000180380003807800070078000700300007000000070000000700000007000000070000 000700000007000000FFFFF8000700780007003800070038000700380007003800070038 000700380007003800070038000700380007003800070038000700380007003800070038 00070038000700380007003800070038007FE1FF80192380A21B>I<001FD80000703800 00C078000180780003807800070038000700380007003800070038000700380007003800 070038000700380007003800FFFFF8000700380007003800070038000700380007003800 070038000700380007003800070038000700380007003800070038000700380007003800 07003800070038000700380007003800070038007FF3FF80192380A21B>I<000FC07F00 007031C08000E00B004001801E00E003803E01E007003C01E007001C00C007001C000007 001C000007001C000007001C000007001C000007001C000007001C0000FFFFFFFFE00700 1C01E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C 00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00 E007001C00E007001C00E007001C00E007001C00E07FF1FFCFFE272380A229>I<7038F8 7CFC7EFC7E743A04020402040204020804080410081008201040200F0F7EA218>34 D<70F8FCFC7404040404080810102040060F7CA20E>39 D<002000400080010003000600 04000C000C00180018003000300030007000600060006000E000E000E000E000E000E000 E000E000E000E000E000E000E000E0006000600060007000300030003000180018000C00 0C0004000600030001000080004000200B327CA413>I<800040002000100018000C0004 00060006000300030001800180018001C000C000C000C000E000E000E000E000E000E000 E000E000E000E000E000E000E000E000C000C000C001C001800180018003000300060006 0004000C00180010002000400080000B327DA413>I<0001800000018000000180000001 800000018000000180000001800000018000000180000001800000018000000180000001 8000000180000001800000018000FFFFFFFEFFFFFFFE0001800000018000000180000001 800000018000000180000001800000018000000180000001800000018000000180000001 80000001800000018000000180001F227D9C26>43 D<70F8FCFC74040404040808101020 40060F7C840E>II<70F8F8F87005057C840E>I<000080000180 000180000300000300000300000600000600000600000C00000C00000C00001800001800 00180000300000300000300000600000600000600000C00000C00000C000018000018000 0180000180000300000300000300000600000600000600000C00000C00000C0000180000 180000180000300000300000300000600000600000600000C00000C00000C0000011317D A418>I<01F000071C000C06001803003803803803807001C07001C07001C07001C0F001 E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001 E0F001E07001C07001C07001C07803C03803803803801C07000C0600071C0001F0001322 7EA018>I<008003800F80F3800380038003800380038003800380038003800380038003 8003800380038003800380038003800380038003800380038003800380038007C0FFFE0F 217CA018>I<03F0000C1C001007002007804003C04003C08003E0F003E0F801E0F801E0 F801E02003E00003E00003C00003C0000780000700000E00001C00001800003000006000 00C0000180000100000200200400200800201800603000403FFFC07FFFC0FFFFC013217E A018>I<03F8000C1E00100F002007804007C07807C07803C07807C03807C00007800007 80000700000F00000C0000380003F000001C00000F000007800007800003C00003C00003 E02003E07003E0F803E0F803E0F003C04003C0400780200780100F000C1C0003F0001322 7EA018>I<000300000300000700000700000F0000170000170000270000670000470000 8700018700010700020700060700040700080700080700100700200700200700400700C0 0700FFFFF8000700000700000700000700000700000700000700000F80007FF015217FA0 18>I<1000801E07001FFF001FFE001FF80017E000100000100000100000100000100000 10000011F800120C001C07001803801003800001C00001C00001E00001E00001E00001E0 7001E0F001E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227E A018>I<007E0001C1000300800601C00C03C01C03C01801803800003800007800007000 00700000F0F800F30C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001 E0F001E07001E07001E07001E03801C03801C01803801C03000C0600070C0001F0001322 7EA018>I<4000006000007FFFE07FFFC07FFFC0400080C0010080010080020080020000 040000080000080000100000200000200000600000400000C00000C00001C00001C00001 800003800003800003800003800007800007800007800007800007800007800007800003 000013237DA118>I<01F800060E000803001001802001806000C06000C06000C07000C0 7000C07801803E01003F02001FC4000FF80003F80001FC00067E00083F00100F803007C0 6003C06000E0C000E0C00060C00060C00060C000606000406000C03000801803000E0E00 03F00013227EA018>I<01F000060C000C0600180700380380700380700380F001C0F001 C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619 E003E1E00001C00001C00001C0000380000380300380780700780600700C002018001030 000FC00013227EA018>I<70F8F8F870000000000000000000000070F8F8F87005157C94 0E>I<70F8F8F870000000000000000000000070F8F8F87808080808101010204040051F 7C940E>I<07E01838201C400E800FF00FF00FF00F000F000E001C00380030006000C000 C000800080018001000100010001000100010000000000000000000000038007C007C007 C0038010237DA217>63 D<0001800000018000000180000003C0000003C0000003C00000 05E0000005E0000009F0000008F0000008F00000107800001078000010780000203C0000 203C0000203C0000401E0000401E0000C01F0000800F0000800F0001FFFF800100078001 000780020003C0020003C0020003C0040001E0040001E0040001E0080000F01C0000F03E 0001F8FF800FFF20237EA225>65 DI<0007E0100038183000E0063001C00170038000F00700 00F00E0000701E0000701C0000303C0000303C0000307C0000107800001078000010F800 0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000780000007800 00107C0000103C0000103C0000101C0000201E0000200E000040070000400380008001C0 010000E0020000381C000007E0001C247DA223>IIII<0007F008003C0C1800E0021801C001B80380 00F8070000780F0000381E0000381E0000183C0000183C0000187C000008780000087800 0008F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8001FFF7800 00F8780000787C0000783C0000783C0000781E0000781E0000780F000078070000780380 00B801C000B800E00318003C0C080007F00020247DA226>III<03FFE0001F00000F00 000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00 000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00700F00 F80F00F80F00F80E00F01E00401C0020380018700007C00013237EA119>IIIII<000FE00000783C0000E00E 0003C00780078003C00F0001E00E0000E01E0000F03C0000783C0000787C00007C7C0000 7C7800003C7800003CF800003EF800003EF800003EF800003EF800003EF800003EF80000 3EF800003EF800003E7800003C7C00007C7C00007C3C0000783E0000F81E0000F00F0001 E00F0001E0078003C003C0078000E00E0000783C00000FE0001F247DA226>II<000FE00000 783C0000E00E0003C00780078003C00F0001E00E0000E01E0000F03E0000F83C0000787C 00007C7C00007C7800003C7800003CF800003EF800003EF800003EF800003EF800003EF8 00003EF800003EF800003EF800003E7800003C7C00007C7C00007C3C0000783C0000781E 0380F00E0420E00F0801E0078813C003C8178000E80E00007C3C02000FEC0200000C0200 000C0200000E0600000F0E000007FC000007FC000007F8000003F8000001E01F2D7DA226 >II<03F0200C0C601802603001E07000E0600060E00060E00060E00020E00020E000 20F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E00000 F00000F0000070800070800070800070800070C00060C00060E000C0F000C0C80180C607 0081FC0014247DA21B>I<7FFFFFF87807807860078018400780084007800840078008C0 07800C800780048007800480078004800780040007800000078000000780000007800000 078000000780000007800000078000000780000007800000078000000780000007800000 07800000078000000780000007800000078000000780000007800000078000000FC00001 FFFE001E227EA123>IIII<7FF803FF000FE001F80007C000E00003E000C000 01E000800001F001800000F80100000078020000007C040000003E040000001E08000000 1F100000000FB000000007A000000007C000000003E000000001E000000001F000000003 F80000000278000000047C0000000C3E000000081E000000101F000000200F8000002007 8000004007C000008003E000008001E000010001F000030000F800070000F8001F8000FC 00FFC003FFC022227FA125>II<7FFFFE7E003E78003C7000786000784000F0C000F0C001E08003 C08003C0800780000780000F00001F00001E00003C00003C0000780000780000F00001F0 0001E00103C00103C0010780010780030F00031E00021E00023C00063C000E78001EF800 7EFFFFFE18227DA11E>II<0804100820 102010402040208040804080408040B85CFC7EFC7E7C3E381C0F0F7AA218>II<1FE000303800780C00780E003007000007000007 0000070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F087817 083C23900FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E0000 0E00000E00000E00000E00000E00000E00000E00000E1F000E61C00E80600F00300E0038 0E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E0038 0F00700C80600C41C0083F0017237FA21B>I<01FE000703000C07801C07803803007800 00700000F00000F00000F00000F00000F00000F00000F000007000007800403800401C00 800C010007060001F80012157E9416>I<0000E0000FE00001E00000E00000E00000E000 00E00000E00000E00000E00000E00000E00000E00000E001F8E00704E00C02E01C01E038 00E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E038 00E01801E00C02E0070CF001F0FE17237EA21B>I<01FC000707000C03801C01C03801C0 7801E07000E0F000E0FFFFE0F00000F00000F00000F00000F00000700000780020380020 1C00400E008007030000FC0013157F9416>I<003E0000E30001C7800387800307800700 00070000070000070000070000070000070000070000070000FFF8000700000700000700 000700000700000700000700000700000700000700000700000700000700000700000700 000700000700000700000780007FF000112380A20F>I<00007003F1980E1E181C0E1838 07003807007807807807807807807807803807003807001C0E001E1C0033F00020000020 00003000003800003FFE001FFFC00FFFE03000F0600030C00018C00018C00018C0001860 00306000303800E00E038003FE0015217F9518>I<0E0000FE00001E00000E00000E0000 0E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F800E60C00E80E0 0F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070 0E00700E00700E00700E00700E0070FFE7FF18237FA21B>I<1C003E003E003E001C0000 0000000000000000000000000000000E007E001E000E000E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E00FFC00A227FA10E>I<00E001F001F001F0 00E000000000000000000000000000000000007007F000F0007000700070007000700070 007000700070007000700070007000700070007000700070007000700070007000706070 F0E0F0C061803F000C2C83A10F>I<0E0000FE00001E00000E00000E00000E00000E0000 0E00000E00000E00000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E0200 0E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E01C0 0E01E00E00F00E00F8FFE3FE17237FA21A>I<0E00FE001E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E000E000E000E000E00FFE00B237FA20E>I<0E1FC07F00FE60E183801E80 7201C00F003C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E0038 00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800 E00E003800E00E003800E00E003800E0FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80 E00F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00 700E00700E00700E00700E00700E0070FFE7FF18157F941B>I<01FC000707000C018018 00C03800E0700070700070F00078F00078F00078F00078F00078F00078F0007870007078 00F03800E01C01C00E038007070001FC0015157F9418>I<0E1F00FE61C00E80600F0070 0E00380E003C0E003C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C 0E00380F00700E80E00E41C00E3F000E00000E00000E00000E00000E00000E00000E0000 0E00000E0000FFE000171F7F941B>I<01F8200704600E02601C01603801E07800E07800 E0F000E0F000E0F000E0F000E0F000E0F000E0F000E07800E07800E03801E01C01E00C02 E0070CE001F0E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000F FE171F7E941A>I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E000E000E00 0E000E000E000E000E000F00FFF010157F9413>I<0F8830786018C018C008C008E008F0 007F003FE00FF001F8003C801C800C800CC00CC008E018D0308FC00E157E9413>I<0200 0200020002000600060006000E001E003E00FFFC0E000E000E000E000E000E000E000E00 0E000E000E000E040E040E040E040E040E040708030801F00E1F7F9E13>I<0E0070FE07 F01E00F00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00 700E00700E00700E00F00E00F006017003827800FC7F18157F941B>IIIII< 3FFFC0380380300780200700600E00401C00403C0040380000700000E00001E00001C000 0380400700400F00400E00C01C0080380080780180700780FFFF8012157F9416>III E /Fq 36 122 df<0001F0000000070C000E000C04001F001806001F003802001F007003000E00F00700 0600E01F000C01E01F000C01C03E001803C01E003803C008003003C000006007800000C0 0780000380078F00078007B0801D8007E0C038C003C0C060C00380C0C06007808180600F C18180601FE30300601E3C0300603E000370603C0003F8607C0003F8607C0001F0607C00 00E060F8000000C0F8000000C0F8000000C0F800000180F800000180F800000300780000 030078000006003800000C003C000018001C000030000E00006000038001800001E00E00 00003FF00000282C78AA2E>38 D<07000F801F801F801F800E8000800080010001000200 020004000800100030004000800009127C8512>44 D<387CFCFCF8700606798512>46 D<003FFFFFC0007FFFFFF00003F001F80003E0007C0003E0003E0003E0003E0003E0003F 0007C0003F0007C0003F0007C0003F0007C0003F000F80003E000F80007E000F80007C00 0F8000F8001F0001F8001F0003E0001F0007C0001F001F00003FFFFC00003E001F00003E 000780003E0007C0007C0003E0007C0003F0007C0003F0007C0003F000F80003F000F800 03F000F80003F000F80003F001F00007E001F00007E001F0000FC001F0000FC003E0001F 8003E0003F0003E0007E0007E001F800FFFFFFE000FFFFFF800028297CA82A>66 D<000007F80200003FFE060000FC070E0003F0019E0007C000FC000F0000FC003E00007C 007C00007C00F800007801F000003801F000003803E000003807C000003007C00000300F 800000301F800000301F800000003F000000003F000000003F000000007E000000007E00 0000007E000000007E000000007C00000000FC00000000FC00000000FC00000000FC0000 03007C000003007C000003007C000006007C000006007C00000C003E00000C003E000018 001F000030000F000060000F8000C00003C003800001F81E000000FFF80000001FE00000 272B77A92B>I<000007F80200003FFE060000FC070E0003F0019E0007C000FC000F0000 FC003E00007C007C00007C00F800007801F000003801F000003803E000003807C0000030 07C00000300F800000301F800000301F800000003F000000003F000000003F000000007E 000000007E000000007E000000007E000000007C00000000FC0007FFF8FC0007FFF8FC00 001F80FC00001F007C00001F007C00001F007C00001F007C00003E007C00003E003E0000 3E003E00003E001F00007C000F0000FC000F8001FC0003E0039C0001F80E180000FFFC08 00001FE00000272B77A92E>71 D<003FFFC0007FFF800003F0000003E0000003E0000003 E0000003E0000007C0000007C0000007C0000007C000000F8000000F8000000F8000000F 8000001F0000001F0000001F0000001F0000003E0000003E0000003E0000003E0000007C 0000007C0000007C0000007C000000F8000000F8000000F8000000F8000001F0000001F0 000001F0000001F0000003E0000003E0000003E0000007E00000FFFF0000FFFF00001A29 7CA817>73 D<0003FFFC0003FFFC00000FC000000F8000000F8000000F8000000F800000 1F0000001F0000001F0000001F0000003E0000003E0000003E0000003E0000007C000000 7C0000007C0000007C000000F8000000F8000000F8000000F8000001F0000001F0000001 F0000001F0000003E0000003E0000003E0000003E0003807C0007C07C000FC07C000FC0F 8000F80F8000F00F0000C01E0000C03C00004078000030F000001F8000001E2A7AA81F> I<003FFFE000007FFFE0000003F000000003E000000003E000000003E000000003E00000 0007C000000007C000000007C000000007C00000000F800000000F800000000F80000000 0F800000001F000000001F000000001F000000001F000000003E000000003E000000003E 000000003E000000007C000000007C000000007C000100007C00018000F800030000F800 030000F800030000F800060001F000060001F0000E0001F0000C0001F0001C0003E0003C 0003E000780003E000F80007E007F800FFFFFFF000FFFFFFF00021297CA825>76 D<003FF000001FFE007FF000003FFC0003F000003F8000037800007F0000037800007F00 0003780000DF0000037800019F000006780001BE0000067800033E0000067800033E0000 067800063E00000C7800067C00000C78000C7C00000C7800187C00000C7800187C000018 780030F80000183C0030F80000183C0060F80000183C0060F80000303C00C1F00000303C 0181F00000303C0181F00000303C0301F00000603C0303E00000603C0603E00000603C0C 03E00000603C0C03E00000C03C1807C00000C01E1807C00000C01E3007C00000C01E3007 C00001801E600F800001801EC00F800001801EC00F800001801F800F800003001F801F00 0003001F001F000007001F001F00000F801E003F0000FFF81C07FFF800FFF81C07FFF800 37297BA836>I<003FF0003FFE007FF8007FFC0001F80007C00003F800038000037C0003 0000037C00030000037C00030000063E00060000063E00060000063E00060000061F0006 00000C1F000C00000C1F000C00000C0F800C00000C0F800C0000180F801800001807C018 00001807C01800001807E01800003003E03000003003E03000003003F03000003001F030 00006001F06000006000F86000006000F86000006000F8600000C0007CC00000C0007CC0 0000C0007CC00000C0003EC0000180003F80000180003F80000180001F80000180001F80 000300001F00000300000F00000700000F00000F80000F0000FFF800060000FFF8000600 002F297CA82C>I<000007F0000000381E000000E007000003800380000F0001C0001E00 01E0003C0000F000780000F000F80000F801F00000F803E00000F803E000007C07C00000 7C0FC000007C0F800000FC1F800000FC1F800000FC3F000000FC3F000000FC3F000000FC 7E000001F87E000001F87E000001F87E000001F87C000003F0FC000003F0FC000003E0FC 000007E0FC000007C0FC00000FC0FC00000F807C00001F807C00001F007C00003E007C00 007C003E000078003E0000F0001E0001E0000F0003C000078007000003C01E000000E078 0000003FC00000262B77A92E>I<003FFFFC00007FFFFF800003F007E00003E003F00003 E001F00003E000F80003E000F80007C000FC0007C000FC0007C000FC0007C000FC000F80 01F8000F8001F8000F8001F0000F8003F0001F0003E0001F0007C0001F000F80001F001E 00003E00F800003FFFC000003E01C000003E00F000007C007800007C007800007C007C00 007C007C0000F8007C0000F8007C0000F8007C0000F8007C0001F000FC0001F000FC0001 F000FC0001F000FC0003E000FC0C03E000FC0C03E000FC0C07E000FC18FFFF007C10FFFF 003C200000000FC0262A7BA82C>82 D<00003F010001FFC30003C0E70007007F000E003E 001C001E0038001E0078001E0070001C00F0001C00F0001C00F0001C01F0001801F00018 01F0000001F8000000FC000000FF000000FFF000007FFE00003FFF00001FFF800003FFC0 00007FC000000FE0000003E0000003E0000003E0000001E0180001E0180001E0180001E0 380003C0380003C03800038038000780780007007C000E007C001C0077003800E3C0F000 C1FFE000807F0000202B7BA922>I<0FFFFFFFF80FFFFFFFF81F803E01F81E007C00781C 007C003038007C003038007C00303000F800303000F800306000F800306000F800606001 F00060C001F00060C001F000600001F000000003E000000003E000000003E000000003E0 00000007C000000007C000000007C000000007C00000000F800000000F800000000F8000 00000F800000001F000000001F000000001F000000001F000000003E000000003E000000 003E000000003E000000007C000000007C000000007C00000000FC0000007FFFF80000FF FFF80000252975A82B>I<3FFFC03FFE7FFF807FFC03F00007C003E000038003E0000300 03E000030003E000030007C000060007C000060007C000060007C00006000F80000C000F 80000C000F80000C000F80000C001F000018001F000018001F000018001F000018003E00 0030003E000030003E000030003E000030007C000060007C000060007C000060007C0000 6000F80000C000F80000C000F80000C000F800018000F800018000F800030000F8000300 00F80006000078000C000078001800003C003000001C00E000000F03C0000007FF000000 01FC000000272A74A82C>I87 D<003E000000E1180001C0 BC000380FC00070078000F0078001E0078001E0078003E00F0007C00F0007C00F0007C00 F000F801E000F801E000F801E000F801E000F003C000F003C180F003C180F003C180F007 8300700F8300700B86003833860018618C000F80F000191A79991F>97 D<01E0003FE0003FE00003E00003C00003C00003C00003C0000780000780000780000780 000F00000F00000F00000F00001E3E001E63801F81C01F01C03E01E03C00E03C01F03C01 F07801F07801F07801F07801F0F003E0F003E0F003E0F003C0E007C0E007C0E00780E00F 00E00F00E01E00701C0030380018E0000F8000142A79A91B>I<001F8000706001C03003 80700780F00F01F01E01F01E00E03E00003C00007C00007C0000F80000F80000F80000F8 0000F00000F00000F00000F00020F000607000C03801803807001C1C0007F000141A7999 1B>I<000003C000007FC000007FC0000007C00000078000000780000007800000078000 000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E00003E3C0000 E13C0001C0BC000380FC00070078000F0078001E0078001E0078003E00F0007C00F0007C 00F0007C00F000F801E000F801E000F801E000F801E000F003C000F003C180F003C180F0 03C180F0078300700F8300700B86003833860018618C000F80F0001A2A79A91F>I<001F 8000704001C0200380300700300F00301E00303E00603C00607C01C07C0F007FF800F800 00F80000F80000F80000F80000F00000F00000F000207000607800C03801801807000C1C 0007F000141A79991B>I<0000078000001C40000038E0000079E0000073E00000F3E000 00F1C00000F0000001E0000001E0000001E0000001E0000001E0000003C0000003C00000 03C000007FFF00007FFF000007800000078000000780000007800000078000000F000000 0F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0000001E000000 3C0000003C0000003C0000003C0000003C00000078000000780000007800000078000000 F0000000F0000000F0000000F0000000E0000031E0000079C00000F9C00000F9800000F3 800000630000003C0000001B3681A912>I<0003E000000E1180001C0BC000380FC00070 078000F0078001E0078001E0078003E00F0007C00F0007C00F0007C00F000F801E000F80 1E000F801E000F801E000F003C000F003C000F003C000F003C000F0078000700F8000700 F800038378000186F00000F8F0000000F0000000F0000001E0000001E0000001E0000001 C0007003C000F8078000F8070000F00E0000E03C00003FE000001A267D991B>I<003C00 0007FC000007FC0000007C00000078000000780000007800000078000000F0000000F000 0000F0000000F0000001E0000001E0000001E0000001E0000003C3E00003CC380003D01C 0003E01C0007E01E0007C01E0007801E0007801E000F003C000F003C000F003C000F003C 001E0078001E0078001E0078001E00F0003C00F0003C00F0603C01E0603C01E0407801E0 C07801C0807801C1807801C300F000C600600078001B2A7BA91F>I<001C003E003E003C 003800000000000000000000000000000000000003C00CE0186030F030F060F060F061E0 C1E001E003C003C00780078007800F000F000F0C1E0C1E081E181C181C301C200C400780 0F287BA712>I<003C000007FC000007FC0000007C000000780000007800000078000000 78000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0000003 C01F0003C0218003C0C38003C1078007820F8007820F8007840700078800000F1000000F 2000000FC000000FC000001E7800001E1E00001E0F00001E0780003C0780003C0783003C 0783003C07830078070600780706007807040078070C00F00318006001F000192A7CA91B >107 D<007807F80FF800F800F000F000F000F001E001E001E001E003C003C003C003C0 07800780078007800F000F000F000F001E001E001E001E003C003C003C003C0078007860 78607860F0C0F0C070C0718031001E000D2A7BA90F>I<07807C0008C1870018E2038030 F4038030FC03C060F803C060F003C060F003C0C1E0078001E0078001E0078001E0078003 C00F0003C00F0003C00F0003C01E0007801E0007801E0C07803C0C07803C080F003C180F 0038100F0038300F0038601E0018C00C000F001E1A7B9922>110 D<000FC000787000E03803C01C07801C0F001E1F001E1E001F3E001F3C001F7C001F7C00 1FF8003EF8003EF8003EF8003CF0007CF00078F000F8F000F07001E07801C03803801807 000E1C0003F000181A79991F>I<0F01FC19C70631CC0731F80F61F01F61F01F61E00E61 E000C3C00003C00003C00003C0000780000780000780000780000F00000F00000F00000F 00001E00001E00001E00001E00003C0000180000181A7B9919>114 D<001F8000706000C03001C0300180700380F00380F003806003C00003F00003FE0003FF 8001FFC000FFE0000FE00003E00001E03800E07C00E07C00C0F801C07001806003802007 00181C0007F000141A7C9918>I<00300078007800F000F000F000F001E001E001E001E0 FFFFFFFF03C003C007800780078007800F000F000F000F001E001E001E001E003C003C06 3C063C0C780C78183810382018400F8010257AA414>I<07C001800CE003C0186003C030 F003C030F0078060F0078060F0078061E00780C1E00F0001E00F0003C00F0003C00F0003 C01E0007801E0007801E0007801E000F003C000F003C300F003C300F003C300F0078600F 0078600700F8600701B8C00382188000FC0F001C1A7B9920>I<03C00C0CE01E18603F30 F03F30F01F60F00F60F00F61E007C1E00601E00603C00603C00603C00C07800C07800C07 80180F00180F00180F00300F00300F00600F00400700C003818001C30000FC00181A7B99 1B>I<07C001800CE003C0186003C030F003C030F0078060F0078060F0078061E00780C1 E00F0001E00F0003C00F0003C00F0003C01E0007801E0007801E0007801E000F003C000F 003C000F003C000F003C000F0078000F0078000700F8000701F8000382F00000FCF00000 00F0000000F0000001E0000801E0003C03C0003E0380007C0780007C070000300E000030 1C0000187000000FC000001A267B991D>121 D E /Fr 27 119 df<78FCFCFEFE7A0202 0202040404080810204007127B8511>44 D<78FCFCFCFC7806067B8511>46 D<00100000700000F00007F000FFF000F8F00000F00000F00000F00000F00000F00000F0 0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0 0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0 0000F00001F8007FFFE07FFFE013287BA71E>49 D<00FE0007FF800E07E01803F02001F8 2000F840007C40007CF8007EFC007EFC003EFC003EFC003E78007E00007E00007C00007C 0000F80000F80001F00001E00003C0000780000700000E00001C00003800007000006000 00C0000180020300020600040C000418000410000C3FFFFC7FFFF8FFFFF8FFFFF817287D A71E>I<1800181F00F01FFFE01FFFC01FFF801FFE0011F8001000001000001000001000 00100000100000100000100000107E001383801400C01800E010007000007800007C0000 3C00003C00003E00003E00003E70003EF8003EF8003EF8003EF8003C80003C40007C4000 782000783000F01801E00E07C007FF0001FC0017297DA71E>53 D<007F000001FFC00007 C1E0000F0070001E0038003C003C003C001C0078001E0078001E00F8000F00F8000F00F8 000F00F8000F00F8000F80F8000F80F8000F80F8000F8078000F8078001F803C001F803C 001F801C002F800E004F800700CF8003810F80007E0F8000000F0000000F0000000F0000 001E0000001E0000001E0000003C001C003C003E0078003E0070003C00E0001801C0001C 0780000FFF000003F8000019297EA71E>57 D<0000180000000018000000001800000000 3C000000003C000000007E000000007E000000007E00000000BF000000009F000000009F 000000010F800000010F800000010F8000000207C000000207C000000207C000000403E0 00000403E000000C03F000000801F000000801F000001001F800001000F800001000F800 0020007C00003FFFFC00003FFFFC000040003E000040003E000040003E000080001F0000 80001F000180001F800100000F800100000F800200000FC002000007C007000007C01F80 000FE0FFF000FFFFFFF000FFFF282A7EA92D>65 D68 D<01FFFF01FFFF0003F00001F00001F00001F0 0001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0 0001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0 0001F03001F07801F0FC01F0FC01F0FC01E0F803E04003C02007801007000C1E0003F000 182A7DA81F>74 D77 D<0001FF0000000F01E000003C0078000078003C0000 E0000E0001E0000F0003C000078007800003C00F800003E01F000001F01F000001F03E00 0000F83E000000F87E000000FC7E000000FC7C0000007C7C0000007CFC0000007EFC0000 007EFC0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC000000 7E7C0000007C7E000000FC7E000000FC7E000000FC3E000000F83F000001F81F000001F0 1F000001F00F800003E007800003C007C00007C003E0000F8000F0001E000078003C0000 3C007800000F01E0000001FF0000272B7DA92E>79 D<00FE010003FF83000F81E3001E00 37003C001F0038000F007800070070000700F0000300F0000300F0000300F0000100F800 0100F8000100FC0000007E0000007F0000003FF000001FFE00000FFFE00007FFF80003FF FC00007FFE000007FF0000007F0000001F8000000F80000007C0000007C0800003C08000 03C0800003C0800003C0C00003C0C0000380C0000380E0000780F0000700F8000E00EE00 1C00C3C07800C1FFF000803FC0001A2B7DA921>83 D87 D<01FC00000E0780001001C0003C00E0003E00F0003E0078001C0078000800 7800000078000000780000007800007FF80003E078000F8078001F0078003E0078007C00 780078007820F8007820F8007820F8007820F800F8207C00F8203C013C401F063FC007F8 0F001B1A7E991E>97 D<007F8001C0700780080F003C1E007C3C007C3C00387C00107800 00F80000F80000F80000F80000F80000F80000F80000F800007800007C00003C00043C00 041E00080F001007802001C0C0007F00161A7E991B>99 D<00000F000000FF000000FF00 00001F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00 00000F0000000F0000000F0000000F00003F0F0001C0CF0003802F000F001F001E001F00 1C000F003C000F007C000F0078000F0078000F00F8000F00F8000F00F8000F00F8000F00 F8000F00F8000F00F8000F0078000F0078000F003C000F003C000F001E001F000E002F00 07004F8001C18FF0007E0FF01C2A7EA921>I<007E0003C3800700E00E00F01C00703C00 783C003878003C78003CF8003CF8003CFFFFFCF80000F80000F80000F80000F800007800 007C00003C00043C00041E00080E001007002001C0C0007F00161A7E991B>I<00000780 00FC18400787A1C00E01C1C01E01E0803C00F0003C00F0007C00F8007C00F8007C00F800 7C00F8007C00F8003C00F0003C00F0001E01E0000E01C0001F87800010FC000010000000 3000000030000000380000001C0000001FFFC0000FFFF80007FFFC001C003E0030000F00 7000070060000380E0000380E0000380E0000380E0000380700007007000070038000E00 0C0018000780F00000FF80001A287E9A1E>103 D<1E003F003F003F003F001E00000000 0000000000000000000000000000000F00FF00FF001F000F000F000F000F000F000F000F 000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF0FFF00C297EA811 >105 D<07800000FF800000FF8000000F80000007800000078000000780000007800000 078000000780000007800000078000000780000007800000078000000780000007803FF0 07803FF007801F0007801C00078018000780200007804000078080000781000007820000 07870000079F800007A7800007C7C0000783E0000781E0000781F0000780F80007807800 07807C0007803E0007801E0007801F0007801F80FFFC7FF8FFFC7FF81D2A7FA920>107 D<0F00FF00FF001F000F000F000F000F000F000F000F000F000F000F000F000F000F000F 000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F 000F000F000F000F00FFF0FFF00C2A7EA911>I<0F07F000FF183800FF201C001F400E00 0F400F000F800F000F800F000F000F000F000F000F000F000F000F000F000F000F000F00 0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00 0F000F000F000F00FFF0FFF0FFF0FFF01C1A7E9921>110 D<007F000001C1C000070070 000E0038001C001C003C001E003C001E0078000F0078000F00F8000F80F8000F80F8000F 80F8000F80F8000F80F8000F80F8000F80F8000F8078000F0078000F003C001E003C001E 001E003C000E0038000700700001C1C000007F0000191A7E991E>I<0F07E000FF183800 FF601E000F800F000F8007800F0007C00F0003C00F0003E00F0003E00F0001F00F0001F0 0F0001F00F0001F00F0001F00F0001F00F0001F00F0001E00F0003E00F0003E00F0003C0 0F0007800F8007800F800F000F401C000F3078000F0FC0000F0000000F0000000F000000 0F0000000F0000000F0000000F0000000F0000000F0000000F000000FFF00000FFF00000 1C267E9921>I<0F0F80FF11C0FF23E01F43E00F83E00F81C00F80000F00000F00000F00 000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00 000F00000F8000FFF800FFF800131A7E9917>114 D<0080000080000080000080000180 000180000180000380000380000780000F80001FFF80FFFF800780000780000780000780 000780000780000780000780000780000780000780000780000780000780400780400780 4007804007804007804007804003C08001C08000E100003E0012257FA417>116 D118 D E /Fs 16 118 df<0000000C000000000000001E000000000000001E0000 00000000001E000000000000003F000000000000003F000000000000003F000000000000 007F800000000000007F800000000000007F80000000000000FFC0000000000000FFC000 0000000000FFC00000000000019FE00000000000019FE00000000000039FF00000000000 030FF00000000000030FF00000000000070FF800000000000607F800000000000607F800 000000000C07FC00000000000C03FC00000000000C03FC00000000001803FE0000000000 1801FE00000000001801FE00000000003000FF00000000003000FF00000000003000FF00 0000000060007F800000000060007F8000000000E0007FC000000000C0003FC000000000 C0003FC000000001C0003FE00000000180001FE00000000180001FE00000000300001FF0 00000003FFFFFFF000000003FFFFFFF000000007FFFFFFF800000006000007F800000006 000007F80000000C000003FC0000000C000003FC0000000C000003FC00000018000001FE 00000018000001FE00000038000001FF00000030000000FF00000030000000FF00000070 000000FF800000600000007F800000600000007F800000F00000007FC00003F80000007F C0000FFC000001FFE000FFFFC0003FFFFFC0FFFFC0003FFFFFC0FFFFC0003FFFFFC03A3D 7DBC41>65 D73 D77 D80 D<000FF80060003FFF0060 00FFFFC0E001F807E1E007E000F1E00F80003BE00F00001FE01F00000FE03E000007E03E 000003E07C000001E07C000001E0FC000001E0FC000000E0FC000000E0FC000000E0FC00 000060FE00000060FE00000060FF000000607F000000007F800000007FE00000003FF800 00003FFF8000001FFFF800000FFFFF800007FFFFE00003FFFFF80001FFFFFC0000FFFFFE 00003FFFFF000007FFFF8000007FFFC0000007FFE00000007FE00000001FF00000000FF0 00000007F000000007F800000003F840000003F8C0000003F8C0000001F8C0000001F8C0 000001F8E0000001F8E0000001F8E0000001F0F0000001F0F0000003F0F8000003E0F800 0003E0FC000007C0FF00000F80FB80000F00F1F0003E00F0FE00FC00E03FFFF800C00FFF E000C001FF8000253D7BBB30>83 D<001FF0000000FFFC000003E03F000007000F80000F 0007C0000FC003E0001FE001F0001FE001F8001FE001F8001FE000F8000FC000FC000780 00FC00000000FC00000000FC00000000FC00000000FC0000000FFC000003FFFC00001FF8 FC0000FF00FC0001FC00FC0007F000FC000FC000FC001F8000FC003F8000FC003F0000FC 007F0000FC007E0000FC06FE0000FC06FE0000FC06FE0000FC06FE0001FC06FE0001FC06 7E00037C067F00037C063F80063E0C1FC00C3F1C0FF0381FF803FFF00FF0007FC007C027 287DA62B>97 D<0003FE00001FFFC0003E01F000F8003801F0003C03E000FC07C001FE0F C001FE0F8001FE1F8001FE3F0000FC3F0000787F0000007F0000007E0000007E000000FE 000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E 0000007E0000007F0000003F0000033F0000031F8000031F8000060FC0000607C0000C03 E0001801F0003000F800E0007E03C0001FFF000003FC0020287DA626>99 D<00000007E000000003FFE000000003FFE000000003FFE0000000001FE00000000007E0 0000000007E00000000007E00000000007E00000000007E00000000007E00000000007E0 0000000007E00000000007E00000000007E00000000007E00000000007E00000000007E0 0000000007E00000000007E00000000007E00000000007E0000001FC07E000000FFF87E0 00003F03C7E000007C0067E00001F00037E00003E0001FE00007C0000FE0000FC0000FE0 000F800007E0001F800007E0003F000007E0003F000007E0007F000007E0007E000007E0 007E000007E000FE000007E000FE000007E000FE000007E000FE000007E000FE000007E0 00FE000007E000FE000007E000FE000007E000FE000007E0007E000007E0007E000007E0 007F000007E0003F000007E0003F000007E0001F000007E0001F80000FE0000F80000FE0 0007C0001FE00003E0001FE00001F00077F80000F800E7FFC0003E0387FFC0001FFF07FF C00003FC07E0002A3D7DBB30>I<0003FC0000001FFF0000007E07C00000F801E00001E0 00F00003E000780007C0007C000F80003E001F80003E001F00003F003F00001F003F0000 1F007F00001F007E00001F807E00001F80FE00001F80FE00001F80FFFFFFFF80FFFFFFFF 80FE00000000FE00000000FE00000000FE00000000FE000000007E000000007E00000000 7E000000007F000000003F000001803F000001801F800001800F800003000FC000030007 C000060003E0000C0001F00018000078007000003F01E000000FFF80000001FE00002128 7EA626>I<01F800000000FFF800000000FFF800000000FFF80000000007F80000000001 F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001 F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001 F80000000001F80000000001F80000000001F80000000001F80000000001F807F8000001 F81FFE000001F8781F000001F8E00F800001F98007C00001FB0007E00001FB0003E00001 FE0003F00001FC0003F00001FC0003F00001FC0003F00001F80003F00001F80003F00001 F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001 F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001 F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001 F80003F00001F80003F00001F80003F00003FC0007F800FFFFF1FFFFE0FFFFF1FFFFE0FF FFF1FFFFE02B3C7EBB30>104 D<03800007C0000FE0001FF0001FF0001FF0000FE00007 C00003800000000000000000000000000000000000000000000000000000000000000000 000003F000FFF000FFF000FFF0000FF00003F00003F00003F00003F00003F00003F00003 F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003 F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00007F800FF FFC0FFFFC0FFFFC0123A7EB917>I<01F807F80000FFF81FFE0000FFF8781F0000FFF8E0 0F800007F98007C00001FB0007E00001FB0003E00001FE0003F00001FC0003F00001FC00 03F00001FC0003F00001F80003F00001F80003F00001F80003F00001F80003F00001F800 03F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F800 03F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F800 03F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F800 03F00003FC0007F800FFFFF1FFFFE0FFFFF1FFFFE0FFFFF1FFFFE02B267EA530>110 D<0001FE0000000FFFC000003F03F00000F8007C0001F0003E0003E0001F0007C0000F80 0F800007C00F800007C01F000003E03F000003F03F000003F03F000003F07E000001F87E 000001F87E000001F8FE000001FCFE000001FCFE000001FCFE000001FCFE000001FCFE00 0001FCFE000001FCFE000001FCFE000001FC7E000001F87E000001F87F000003F83F0000 03F03F000003F01F000003E01F800007E00F800007C007C0000F8003E0001F0001F0003E 0000F8007C00003F03F000000FFFC0000001FE000026287EA62B>I<03F00F80FFF03FE0 FFF070F0FFF0C1F807F183F801F303F801F303F801F601F001F6004001FC000001FC0000 01FC000001FC000001F8000001F8000001F8000001F8000001F8000001F8000001F80000 01F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80000 01F8000001F8000001F8000001F8000001F8000003FC0000FFFFF800FFFFF800FFFFF800 1D267EA522>114 D<003000000030000000300000003000000030000000300000007000 0000700000007000000070000000F0000000F0000001F0000001F0000003F0000007F000 001FFFFF00FFFFFF00FFFFFF0003F0000003F0000003F0000003F0000003F0000003F000 0003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F000 0003F0000003F0000003F0000003F0018003F0018003F0018003F0018003F0018003F001 8003F0018003F0018003F0018001F0018001F8030001F8030000F80300007C0600003E0C 00001FF8000003F00019367EB421>116 D<01F80003F000FFF801FFF000FFF801FFF000 FFF801FFF00007F8000FF00001F80003F00001F80003F00001F80003F00001F80003F000 01F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F000 01F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F000 01F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F000 01F80003F00001F80007F00001F80007F00001F80007F00000F8000FF00000F8000FF000 00FC001BF000007C001BFC00003E0073FFE0001F81E3FFE0000FFF83FFE00001FE03F000 2B277EA530>I E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 255 517 a Fs(An)28 b(In)n(tro)r(duction)i(to)g(the)f(MPI)f (Standard)751 665 y Fr(Jac)n(k)19 b(J.)g(Dongarra)189 739 y Fq(University)k(of)f(T)-5 b(ennesse)m(e)23 b(and)d(Oak)i(R)n (idge)g(National)f(L)m(ab)m(or)m(atory)785 814 y Fr(Stev)n(e)f(W.)g (Otto)305 889 y Fq(Or)m(e)m(gon)h(Gr)m(aduate)g(Institute)h(of)f (Scienc)m(e)i(&)e(T)-5 b(e)m(chnolo)m(gy)845 964 y Fr(Marc)19 b(Snir)507 1038 y Fq(IBM,)j(T.J.)g(Watson)e(R)m(ese)m(ar)m(ch)i(Center) 796 1113 y Fr(Da)n(vid)e(W)-5 b(alk)n(er)568 1188 y Fq(Oak)21 b(R)n(idge)i(National)d(L)m(ab)m(or)m(atory)788 1305 y Fr(April)g(29,)f(1995)961 2607 y Fp(1)p eop %%Page: 2 2 2 1 bop 164 315 a Fo(Con)n(ten)n(ts)164 425 y Fn(1)45 b(In)n(tro)r(duction)1209 b(3)164 534 y(2)45 b(Ov)n(erview)1287 b(3)164 643 y(3)45 b(Goals)1381 b(4)164 752 y(4)45 b(What)19 b Fm(MPI)g Fn(Do)r(es)f(and)h(Do)r(es)f(Not)g(Sp)r(ecify)580 b(5)164 861 y(5)45 b(P)n(oin)n(t)19 b(to)g(P)n(oin)n(t)g(Comm)n (unication)760 b(6)164 970 y(6)45 b(User-de\014ned)18 b(Datat)n(yp)r(es)941 b(8)164 1079 y(7)45 b(Collectiv)n(e)17 b(Comm)n(unications)847 b(8)164 1188 y(8)45 b(Groups,)19 b(Con)n(texts,)f(and)h(Comm)n(unicators)528 b(10)164 1297 y(9)45 b(Conclusions)1200 b(12)164 1406 y(A)31 b(Sidebar:)24 b(Impleme)o(n)n(tations)16 b(of)j Fm(MPI)687 b Fn(15)164 1515 y(B)33 b(Sidebar:)24 b(More)19 b(Information)e(on)i Fm(MPI)p Fn(,)f(Assistance)354 b(16)164 1624 y(C)33 b(Sidebar:)24 b(Library)18 b(Comm)n(unicator)f(and)i(Cac)n(hing)377 b(17)961 2607 y Fp(2)p eop %%Page: 3 3 3 2 bop 164 315 a Fo(1)83 b(In)n(tro)r(duction)164 425 y Fp(The)23 b(Message)g(P)o(assing)h(In)o(terface)d(\()p Fm(MPI)p Fp(\))j(is)f(a)g(p)q(ortable)g(message-passing)h(stan-)164 485 y(dard)c(that)g(facilitates)f(the)h(dev)o(elopmen)o(t)c(of)k (parallel)f(applications)h(and)g(libraries.)164 545 y(The)d(standard)i (de\014nes)e(the)h(syn)o(tax)f(and)h(seman)o(tics)e(of)h(a)h(core)f(of) h(library)f(routines)164 606 y(useful)i(to)i(a)f(wide)f(range)h(of)h (users)f(writing)f(p)q(ortable)h(message-passing)h(programs)164 666 y(in)f(F)l(ortran)i(77)f(or)h(C.)e Fm(MPI)i Fp(also)f(forms)f(a)h (p)q(ossible)g(target)h(for)f(compilers)d(of)k(lan-)164 726 y(guages)c(suc)o(h)f(as)g(High)g(P)o(erformance)e(F)l(ortran)j ([8].)k(Commercial)14 b(and)k(free,)e(public-)164 786 y(domain)f(implem)o(en)n(tations)f(of)h Fm(MPI)i Fp(already)e(exist)g (\(see)g(sidebar)h(A\).)k(These)c(run)f(on)164 846 y(b)q(oth)i(tigh)o (tly-coupled,)e(massiv)o(ely-parallel)f(mac)o(hines)h(\(MPPs\),)h(and)h (on)g(net)o(w)o(orks)164 907 y(of)g(w)o(orkstations)g(\(NO)o(Ws\).)237 967 y(The)i Fm(MPI)g Fp(standard)i(w)o(as)e(dev)o(elop)q(ed)f(o)o(v)o (er)g(a)h(y)o(ear)f(of)h(in)o(tensiv)o(e)e(meetings)g(and)164 1027 y(in)o(v)o(olv)o(ed)g(o)o(v)o(er)i(80)i(p)q(eople)e(from)g(appro)o (ximately)f(40)i(organizations,)h(mainly)d(from)164 1087 y(the)e(United)f(States)h(and)g(Europ)q(e.)22 b(Man)o(y)16 b(v)o(endors)g(of)g(concurren)o(t)f(computers)g(w)o(ere)164 1147 y(in)o(v)o(olv)o(ed,)h(along)j(with)f(researc)o(hers)f(from)g (univ)o(ersities,)f(go)o(v)o(ernmen)o(t)f(lab)q(oratories,)164 1207 y(and)20 b(industry)l(.)29 b(This)19 b(e\013ort)h(culminated)d(in) i(the)f(publication)h(of)g(the)g Fm(MPI)h Fp(sp)q(eci\014-)164 1268 y(cation)f([5].)30 b(Other)19 b(sources)g(of)h(information)e(on)i Fm(MPI)f Fp(are)h(a)o(v)m(ailable)e(or)i(are)f(under)164 1328 y(dev)o(elopmen)o(t)13 b(\(see)j(sidebar)g(B\).)237 1388 y(Researc)o(hers)23 b(incorp)q(orated)h(in)o(to)g Fm(MPI)g Fp(the)f(most)g(useful)g(features)h(of)g(sev)o(eral)164 1448 y(systems,)13 b(rather)h(than)h(c)o(ho)q(osing)g(one)f(system)f (to)i(adopt)g(as)g(the)f(standard.)21 b Fm(MPI)15 b Fp(has)164 1508 y(ro)q(ots)j(in)f(PVM)g([3,)f(6)q(],)g(Express)h([9],)f(P4)i([1],) e(Zip)q(co)q(de)h([10)q(],)f(and)i(P)o(armacs)e([2],)g(and)164 1569 y(in)g(systems)f(sold)h(b)o(y)g(IBM,)f(In)o(tel,)f(Meik)o(o,)h (Cra)o(y)h(Researc)o(h,)f(and)i(Ncub)q(e.)164 1735 y Fo(2)83 b(Ov)n(erview)164 1845 y Fm(MPI)19 b Fp(is)f(used)g(to)h(sp)q (ecify)e(the)h(comm)o(unication)d(b)q(et)o(w)o(een)j(a)g(set)g(of)h (pro)q(cesses)g(form-)164 1905 y(ing)g(a)g(concurren)o(t)f(program.)28 b(The)19 b(message-passing)g(paradigm)f(is)h(attractiv)o(e)f(b)q(e-)164 1965 y(cause)23 b(of)g(its)g(wide)g(p)q(ortabilit)o(y)f(and)i (scalabilit)o(y)l(.)39 b(It)23 b(is)g(easily)f(compatible)f(with)164 2025 y(b)q(oth)f(distributed-memory)d(m)o(ulticom)o(puters)f(and)k (shared-memory)e(m)o(ultipro)q(ces-)164 2085 y(sors,)13 b(NO)o(Ws,)e(and)h(com)o(binations)f(of)g(these)g(elemen)o(ts.)17 b(Message)12 b(passing)g(will)f(not)h(b)q(e)164 2145 y(made)j(obsolete)h(b)o(y)g(increases)g(in)f(net)o(w)o(ork)h(sp)q(eeds) h(or)f(b)o(y)g(arc)o(hitectures)f(com)o(bining)164 2206 y(shared)i(and)g(distributed-mem)o(ory)c(comp)q(onen)o(ts.)237 2266 y(Though)24 b(m)o(uc)o(h)c(of)j Fm(MPI)g Fp(serv)o(es)f(to)h (standardize)g(the)f(\\common)f(practice")h(of)164 2326 y(existing)12 b(systems,)g Fm(MPI)h Fp(has)h(gone)g(further)e(and)i (de\014ned)e(adv)m(anced)i(features)f(suc)o(h)f(as)164 2386 y(user-de\014ned)18 b(datat)o(yp)q(es,)i(p)q(ersisten)o(t)e(comm)o (uni)o(cation)e(p)q(orts,)k(p)q(o)o(w)o(erful)e(collectiv)o(e)164 2446 y(comm)o(unic)o(ation)13 b(op)q(erations,)j(and)g(scoping)g(mec)o (hanisms)d(for)i(comm)o(unication.)j(No)961 2607 y(3)p eop %%Page: 4 4 4 3 bop 164 315 a Fp(previous)16 b(system)f(incorp)q(orated)i(all)e (these)h(features.)164 482 y Fo(3)83 b(Goals)164 591 y Fp(In)15 b(considering)h Fm(MPI)p Fp(,)g(it)f(is)h(imp)q(ortan)o(t)f (to)h(understand)g(the)g(goals)h(of)f(the)f(standard-)164 652 y(ization)22 b(e\013ort,)h(the)f(constrain)o(ts)g(suc)o(h)f(an)i (endea)o(v)o(or)e(implies,)f(and)j(the)f(practical)164 712 y(constrain)o(ts)e(under)g(whic)o(h)f(the)h(committe)o(e)d(op)q (erated.)32 b(Some)19 b(of)h(these)g(are)g(listed)164 772 y(b)q(elo)o(w.)237 874 y Fl(\017)k Fp(Timely)13 b(completion)h(of)i (a)h(standard.)22 b(This)16 b(mean)o(t)e(that)j(only)e(message)h(pass-) 286 934 y(ing)f(w)o(as)h(sp)q(eci\014ed,)e(while)h(other)g(asp)q(ects)h (of)f(parallel)g(programming,)e(suc)o(h)i(as)286 994 y(pro)q(cess)f(con)o(trol,)g(w)o(ere)f(p)q(ostp)q(oned)j(un)o(til)c (the)i(next)f(forum,)g Fm(MPI-2)p Fp(,)i(con)o(v)o(enes.)237 1096 y Fl(\017)24 b Fp(Design)19 b(a)g(p)q(ortable,)h(application)e (programming)f(in)o(terface,)h(usable)h(b)o(y)f(pro-)286 1156 y(grammers.)237 1258 y Fl(\017)24 b Fp(Allo)o(w)15 b(highly-e\016cien)o(t)f(comm)o(unic)o(ations,)g(on)j(man)o(y)d (platforms.)237 1359 y Fl(\017)24 b Fp(Allo)o(w)15 b(implem)o(en)o (tations)f(for)i(heterogeneous)h(systems.)237 1461 y Fl(\017)24 b Fp(Allo)o(w)15 b(con)o(v)o(enien)o(t)f(ANSI)h(C)i(and)g(F) l(ortran)f(77)h(bindings)g(of)f(the)g(in)o(terface.)237 1563 y Fl(\017)24 b Fp(Pro)o(vide)15 b(an)h(in)o(terface)e(that)i(is)f (consisten)o(t)g(with)g(a)h(wide)f(v)m(ariet)o(y)g(of)g(hardw)o(are)286 1623 y(organizations)i(and)g(op)q(erating)g(system)e(en)o(vironmen)o (ts.)237 1725 y Fl(\017)24 b Fp(Pro)o(vide)12 b(a)h(programming)e(in)o (terface)g(that)i(do)q(es)h(not)f(require)e(the)i(programmer)286 1785 y(to)k(deal)e(with)i(comm)o(uni)o(cation)d(failures.)237 1887 y Fl(\017)24 b Fp(De\014ne)16 b(an)h(in)o(terface)e(not)h(to)q(o)i (di\013eren)o(t)d(from)g(curren)o(t)g(practice.)237 1988 y Fl(\017)24 b Fp(The)16 b(seman)o(tics)f(of)h(the)g(in)o(terface)f(m)o (ust)g(b)q(e)h(language-indep)q(enden)o(t.)237 2090 y Fl(\017)24 b Fp(Allo)o(w)15 b(implem)o(en)o(tations)f(pro)o(viding)i(m) o(ultiple)d(threads)k(of)f(execution)f(within)286 2150 y(eac)o(h)h(pro)q(cess.)961 2607 y(4)p eop %%Page: 5 5 5 4 bop 164 315 a Fo(4)83 b(What)27 b Fk(MPI)g Fo(Do)r(es)h(and)f(Do)r (es)h(Not)f(Sp)r(ecify)164 425 y Fp(The)16 b(standard)i(sp)q(eci\014es) e(the)g(form)f(of)h(the)g(follo)o(wing.)237 522 y Fl(\017)24 b Fp(P)o(oin)o(t)14 b(to)g(p)q(oin)o(t)h(comm)o(unic)o(ations,)d(that)j (is,)f(messages)g(b)q(et)o(w)o(een)f(pairs)i(of)f(pro-)286 583 y(cesses.)237 683 y Fl(\017)24 b Fp(Collectiv)o(e)16 b(comm)o(uni)o(cations:)22 b(comm)o(unication)15 b(or)j(sync)o (hronization)g(op)q(era-)286 743 y(tions)e(that)h(in)o(v)o(olv)o(e)d (en)o(tire)h(groups)i(of)g(pro)q(cesses.)237 843 y Fl(\017)24 b Fp(Pro)q(cess)17 b(groups:)22 b(ho)o(w)17 b(they)f(are)g(used)g(and)h (manipulated.)237 944 y Fl(\017)24 b Fp(Comm)o(unicators:)j(a)20 b(mec)o(hanism)d(for)k(pro)o(viding)e(separate)i(comm)o(unicati)o(on) 286 1004 y(scop)q(es)i(for)g(mo)q(dules)f(or)g(libraries.)39 b(Eac)o(h)23 b(comm)o(unic)o(ator)e(sp)q(eci\014es)h(a)h(dis-)286 1064 y(tinct)c(name)f(space)i(for)g(pro)q(cesses,)h(a)f(distinct)f (comm)o(unicati)o(on)f(con)o(text)h(for)286 1124 y(messages)d(and)g(ma) o(y)f(carry)h(additional,)g(scop)q(e-sp)q(eci\014c)g(information.)237 1224 y Fl(\017)24 b Fp(Pro)q(cess)13 b(top)q(ologies:)20 b(functions)12 b(that)g(allo)o(w)g(the)g(con)o(v)o(enien)o(t)e (manipulation)h(of)286 1285 y(pro)q(cess)k(lab)q(els,)f(when)h(the)f (pro)q(cesses)h(are)g(regarded)g(as)g(forming)e(a)i(particular)286 1345 y(top)q(ology)l(,)i(suc)o(h)f(as)h(a)f(Cartesian)h(grid.)237 1445 y Fl(\017)24 b Fp(Bindings)12 b(for)h(F)l(ortran)g(77)g(and)g (ANSI)f(C:)g Fm(MPI)h Fp(w)o(as)g(designed)f(so)h(that)g(v)o(ersions) 286 1505 y(of)20 b(it)f(in)g(b)q(oth)h(C)g(and)g(F)l(ortran)g(had)g (straigh)o(tforw)o(ard)g(syn)o(tax.)31 b(In)19 b(fact,)h(the)286 1565 y(detailed)14 b(form)h(of)g(the)h(in)o(terface)e(in)h(these)g(t)o (w)o(o)g(languages)i(is)e(sp)q(eci\014ed)g(and)h(is)286 1626 y(part)h(of)f(the)g(standard.)237 1726 y Fl(\017)24 b Fp(Pro\014ling)19 b(in)o(terface:)26 b(the)18 b(in)o(terface)g(is)h (designed)g(so)h(that)f(run)o(time)e(pro\014ling)286 1786 y(or)g(p)q(erformance-monitoring)e(to)q(ols)j(can)e(b)q(e)h (joined)g(to)g(the)f(message-passing)286 1846 y(system.)j(It)d(is)f (not)i(necessary)e(to)h(ha)o(v)o(e)f(access)h(to)g(the)f Fm(MPI)i Fp(source)f(to)g(do)g(this)286 1906 y(and)h(hence,)e(p)q (ortable)i(pro\014ling)f(systems)f(can)h(b)q(e)h(easily)e(constructed.) 237 2007 y Fl(\017)24 b Fp(En)o(vironmen)o(tal)9 b(managemen)o(t)g(and) k(inquiry)d(functions:)19 b(these)11 b(functions)h(giv)o(e)286 2067 y(a)k(p)q(ortable)f(timer,)e(some)i(system-querying)e (capabilities,)h(and)i(the)f(abilit)o(y)f(to)286 2127 y(in\015uence)h(error)h(b)q(eha)o(vior)h(and)f(error-handling)h (functions.)164 2225 y(There)d(are)h(man)o(y)e(relev)m(an)o(t)h(asp)q (ects)h(of)g(parallel)f(programming)g(not)h(co)o(v)o(ered)e(b)o(y)h (the)164 2285 y(standard.)22 b(This)17 b(is)f(also)h(an)f(imp)q(ortan)o (t)g(list)f(and)i(w)o(e)f(giv)o(e)f(it)h(b)q(elo)o(w.)237 2382 y Fl(\017)24 b Fp(shared-memory)14 b(op)q(erations)237 2482 y Fl(\017)24 b Fp(in)o(terrupt-driv)o(en)14 b(messages,)i(remote)e (execution,)h(and)i(activ)o(e)e(messages)961 2607 y(5)p eop %%Page: 6 6 6 5 bop 237 315 a Fl(\017)24 b Fp(program)16 b(construction)g(to)q(ols) 237 417 y Fl(\017)24 b Fp(debugging)17 b(supp)q(ort)237 518 y Fl(\017)24 b Fp(thread)16 b(supp)q(ort)237 620 y Fl(\017)24 b Fp(pro)q(cess)17 b(or)f(task)h(managemen)o(t)237 721 y Fl(\017)24 b Fp(input)16 b(and)h(output)g(functions)164 822 y(The)e(main)e(reason)i(for)g(not)g(addressing)g(these)f(issues)h (w)o(as)g(the)f(time)f(constrain)o(t)h(self-)164 882 y(imp)q(osed)19 b(b)o(y)h(the)f(committee,)e(and)k(the)f(feeling)e (that)j(man)o(y)e(of)h(them)e(are)i(system)164 943 y(dep)q(enden)o(t.)g (A)12 b(next)h(set)g(of)h(meetings)d(fo)q(cused)j(on)f(extending)g Fm(MPI)g Fp(will)g(b)q(egin)g(so)q(on.)237 1003 y(The)k(remainder)f(of) h(this)g(article)f(discusses)h(some)f(of)i(the)f(more)f(in)o(teresting) g(fea-)164 1063 y(tures)g(of)h Fm(MPI)p Fp(.)164 1229 y Fo(5)83 b(P)n(oin)n(t)27 b(to)h(P)n(oin)n(t)f(Comm)n(unication)164 1339 y Fm(MPI)11 b Fp(pro)o(vides)g(a)g(set)g(of)g(send)g(and)g(receiv) o(e)e(functions)i(that)g(allo)o(w)f(the)h(comm)o(unicati)o(on)164 1399 y(of)20 b Fn(t)n(yp)r(ed)g Fp(data)g(with)g(an)h(asso)q(ciated)g Fn(tag)p Fp(.)32 b(T)o(yping)20 b(of)h(the)e(message)h(con)o(ten)o(ts)f (is)164 1459 y(necessary)i(for)h(heterogeneous)h(supp)q(ort)g(|)e(the)h (t)o(yp)q(e)f(information)g(is)g(needed)g(so)164 1519 y(that)j(correct)f(data)h(represen)o(tation)f(con)o(v)o(ersions)f(can)i (b)q(e)g(p)q(erformed)e(as)i(data)g(is)164 1579 y(sen)o(t)14 b(from)f(one)i(arc)o(hitecture)e(to)h(another.)21 b(The)15 b(tag)g(allo)o(ws)f(selectivit)o(y)e(of)i(messages)164 1640 y(at)20 b(the)f(receiving)e(end:)27 b(one)20 b(can)f(receiv)o(e)e (on)j(a)f(particular)g(tag,)i(or)e(one)h(can)f(wild-)164 1700 y(card)j(this)f(quan)o(tit)o(y)l(,)g(allo)o(wing)h(reception)e(of) i(messages)f(with)g(an)o(y)h(tag.)38 b(Message)164 1760 y(selectivit)o(y)13 b(on)k(the)f(source)g(pro)q(cess)h(of)g(the)f (message)f(is)h(also)h(pro)o(vided.)237 1820 y(A)d(fragmen)o(t)g(of)h (co)q(de)g(app)q(ears)h(in)e(\014gure)h(1)g(for)g(the)g(example)d(of)j (pro)q(cess)g(0)h(send-)164 1880 y(ing)d(a)h(message)f(to)g(pro)q(cess) h(1.)21 b(This)13 b(co)q(de)h(executes)e(on)i(b)q(oth)g(pro)q(cess)g(0) f(and)h(pro)q(cess)164 1941 y(1.)21 b(The)16 b(example)d(sends)j(a)g(c) o(haracter)f(string.)22 b Fj(MPI)p 1134 1941 16 2 v 17 w(COMM)p 1255 1941 V 17 w(WORLD)14 b Fp(is)h(a)h(default)g Fn(com-)164 2001 y(m)n(unicator)i Fp(pro)o(vided)f(up)q(on)j(start-up.) 30 b(Among)18 b(other)g(things,)i(a)f(comm)o(unic)o(ator)164 2061 y(serv)o(es)i(to)i(de\014ne)f(the)f(allo)o(w)o(ed)h(set)g(of)g (pro)q(cesses)h(in)o(v)o(olv)o(ed)d(in)i(a)g(comm)o(unicati)o(on)164 2121 y(op)q(eration.)27 b(Pro)q(cess)19 b(ranks)f(are)g(in)o(tegers,)f (serv)o(e)g(to)h(lab)q(el)g(pro)q(cesses,)g(and)h(are)f(dis-)164 2181 y(co)o(v)o(ered)i(b)o(y)i(inquiry)e(to)j(a)f(comm)o(unic)o(ator)e (\(see)h(the)h(call)f(to)h Fj(MPI)p 1461 2181 V 18 w(Comm)p 1583 2181 V 17 w(rank\(\))p Fp(\).)164 2242 y(The)14 b(t)o(yping)f(of)h(the)f(comm)o(unic)o(ation)e(is)j(eviden)o(t)e(b)o(y) h(the)g(sp)q(eci\014cation)h(of)f Fj(MPI)p 1652 2242 V 18 w(CHAR)p Fp(.)164 2302 y(The)18 b(receiving)f(pro)q(cess)i(sp)q (eci\014ed)f(that)h(the)f(incoming)f(data)i(w)o(as)g(to)g(b)q(e)f (placed)g(in)164 2362 y Fj(msg)e Fp(and)h(that)h(it)e(had)i(a)f(maxim)o (um)c(size)j(of)h(20)h(elemen)o(ts,)c(of)j(t)o(yp)q(e)f Fj(MPI)p 1551 2362 V 18 w(CHAR)p Fp(.)f(The)164 2422 y(v)m(ariable)f Fj(status)p Fp(,)e(set)j(b)o(y)f Fj(MPI)p 749 2422 V 17 w(Recv\(\))p Fp(,)f(giv)o(es)g(information)h(on)h(the)f (source)h(and)g(tag)164 2482 y(of)g(the)f(message)g(and)h(ho)o(w)g(man) o(y)f(elemen)o(ts)e(w)o(ere)h(actually)h(receiv)o(ed.)19 b(F)l(or)c(example,)961 2607 y(6)p eop %%Page: 7 7 7 6 bop 164 315 a Fp(the)20 b(receiv)o(er)e(can)i(examine)e(this)i(v)m (ariable)g(to)g(\014nd)h(out)g(the)e(actual)i(length)f(of)g(the)164 376 y(c)o(haracter)c(string)g(receiv)o(ed.)237 436 y(This)21 b(example)e(emplo)o(y)o(ed)g Fi(blo)n(cking)k Fp(send)e(and)h(receiv)o (e)d(functions.)36 b(The)21 b(send)164 496 y(call)13 b(blo)q(c)o(ks)g(un)o(til)g(the)g(send)h(bu\013er)g(can)g(b)q(e)g (reclaimed)c(\(i.e.,)i(after)i(the)f(send,)h(pro)q(cess)164 556 y(0)19 b(can)f(safely)g(o)o(v)o(er-write)e(the)i(con)o(ten)o(ts)g (of)g Fj(msg)p Fp(\).)26 b(Similarly)l(,)15 b(the)j(receiv)o(e)e (function)164 616 y(blo)q(c)o(ks)f(un)o(til)g(the)h(receiv)o(e)d (bu\013er)j(actually)f(con)o(tains)h(the)f(con)o(ten)o(ts)h(of)g(the)f (message.)164 677 y Fm(MPI)24 b Fp(also)g(pro)o(vides)e Fi(non-blo)n(cking)k Fp(send)e(and)g(receiv)o(e)c(functions)k(that)f (allo)o(w)g(the)164 737 y(p)q(ossible)g(o)o(v)o(erlap)f(of)h(message)g (transmittal)e(with)i(computation,)h(or)f(the)g(o)o(v)o(erlap)164 797 y(of)c(m)o(ultiple)c(message)j(transmittals)f(with)i(one-another.) 29 b(Non-blo)q(c)o(king)18 b(functions)164 857 y(alw)o(a)o(ys)f(come)e (in)i(t)o(w)o(o)f(parts:)24 b(the)16 b(p)q(osting)i(functions,)f(whic)o (h)f(b)q(egin)h(the)g(requested)164 917 y(op)q(eration;)e(and)f(the)f (test-for-completion)g(functions,)g(whic)o(h)g(allo)o(w)h(the)f (application)164 978 y(program)j(to)h(disco)o(v)o(er)e(whether)h(the)g (requested)f(op)q(eration)i(has)g(completed.)237 1038 y(This)c(seems)e(lik)o(e)g(rather)i(a)g(lot)f(to)h(sa)o(y)g(ab)q(out)h (a)f(simple)d(transmittal)i(of)h(data)g(from)164 1098 y(one)f(pro)q(cess)h(to)g(another,)g(but)g(there)e(is)h(ev)o(en)g (more.)18 b(T)l(o)13 b(understand)g(wh)o(y)l(,)f(w)o(e)g(exam-)164 1158 y(ine)17 b(t)o(w)o(o)g(asp)q(ects)h(of)f(the)g(comm)o(unicati)o (on:)k(the)c(seman)o(tics)f(of)h(the)g(comm)o(unicati)o(on)164 1218 y(primitiv)o(e)o(s,)12 b(and)j(the)f(underlying)g(proto)q(cols)h (that)g(impleme)o(n)o(t)c(them.)19 b(Consider)c(the)164 1279 y(previous)h(example,)e(on)j(pro)q(cess)g(0,)f(after)g(the)g(blo)q (c)o(king)g(send)h(has)g(completed.)i(The)164 1339 y(question)f (arises:)24 b(if)17 b(the)h(send)g(has)g(completed,)e(do)q(es)i(this)g (tell)f(us)h(an)o(ything)g(ab)q(out)164 1399 y(the)g(receiving)f(pro)q (cess?)29 b(Can)20 b(w)o(e)e(kno)o(w)g(that)h(the)g(receiv)o(e)d(has)j (\014nished,)g(or)g(ev)o(en,)164 1459 y(that)e(it)e(has)i(b)q(egun?)237 1519 y(Suc)o(h)i(questions)g(of)g(seman)o(tics)e(are)i(related)f(to)i (the)e(nature)i(of)f(the)g(underlying)164 1579 y(proto)q(col)c(implem)o (e)o(n)o(ting)c(the)j(op)q(erations.)21 b(If)13 b(one)h(wishes)g(to)h (implem)o(e)o(n)o(t)c(a)j(proto)q(col)164 1640 y(minim)o(izi)o(ng)k (the)j(cop)o(ying)f(and)h(bu\013ering)g(of)g(data,)h(the)f(most)f (natural)h(seman)o(tics)164 1700 y(migh)o(t)12 b(b)q(e)j(the)f (\\rendezv)o(ous")g(v)o(ersion,)f(where)h(completion)e(of)j(the)e(send) i(implies)c(the)164 1760 y(receiv)o(e)20 b(has)i(b)q(een)g(initiated)f (\(at)h(least\).)39 b(On)22 b(the)g(other)g(hand,)h(a)g(proto)q(col)f (that)164 1820 y(attempts)15 b(to)i(blo)q(c)o(k)f(pro)q(cesses)h(for)g (the)f(minimal)d(amoun)o(t)j(of)g(time)f(will)g(necessarily)164 1880 y(end)h(up)h(doing)f(more)f(bu\013ering)i(and)g(cop)o(ying)f(of)g (data.)237 1941 y(The)21 b(trouble)f(is,)h(one)g(c)o(hoice)e(of)i (seman)o(tics)d(is)j(not)g(b)q(est)g(for)f(all)g(applications,)164 2001 y(nor)h(is)f(it)h(b)q(est)g(for)f(all)h(arc)o(hitectures.)32 b(Because)20 b(the)h(primary)e(goal)i(of)g Fm(MPI)g Fp(is)g(to)164 2061 y(standardize)f(the)f(op)q(erations,)i(y)o(et)e(not)h(sacri\014ce) f(p)q(erformance,)g(the)g(decision)g(w)o(as)164 2121 y(made)h(to)i(include)e(all)h(the)h(ma)s(jor)e(c)o(hoices)h(for)g(p)q (oin)o(t)h(to)g(p)q(oin)o(t)f(seman)o(tics)f(in)h(the)164 2181 y(standard.)237 2242 y(An)c(additional,)g(complicating)e(factor)i (is)g(that)h(the)f(amoun)o(t)f(of)h(space)h(a)o(v)m(ailable)164 2302 y(for)c(bu\013ering)h(is)e(alw)o(a)o(ys)h(\014nite.)20 b(On)14 b(some)f(systems)g(the)h(amoun)o(t)f(of)i(space)f(a)o(v)m (ailable)164 2362 y(for)20 b(bu\013ering)h(ma)o(y)d(b)q(e)i(small)f(or) h(non-existen)o(t.)32 b(F)l(or)20 b(this)g(reason,)h Fm(MPI)g Fp(do)q(es)f(not)164 2422 y(mandate)g(a)i(minimal)c(amoun)o(t) i(of)i(bu\013ering,)g(and)g(the)f(standard)i(is)e(v)o(ery)f(careful)164 2482 y(ab)q(out)e(the)e(seman)o(tics)e(it)i(requires.)961 2607 y(7)p eop %%Page: 8 8 8 7 bop 237 315 a Fp(The)14 b(ab)q(o)o(v)o(e)g(complexiti)o(es)d(are)j (manifested)e(in)h Fm(MPI)i Fp(b)o(y)e(the)h(existence)e(of)i Fn(mo)r(des)164 376 y Fp(for)23 b(p)q(oin)o(t)g(to)f(p)q(oin)o(t)h (comm)o(unicati)o(on.)38 b(Both)23 b(blo)q(c)o(king)f(and)h(non-blo)q (c)o(king)g(com-)164 436 y(m)o(unications)18 b(ha)o(v)o(e)g(mo)q(des.) 30 b(The)19 b(mo)q(de)f(allo)o(ws)i(one)f(to)h(c)o(ho)q(ose)f(the)g (seman)o(tics)f(of)164 496 y(the)d(send)h(op)q(eration)h(and,)f(in)f (e\013ect,)g(to)h(in\015uence)f(the)h(underlying)f(proto)q(col)h(of)g (the)164 556 y(transfer)g(of)h(data.)237 616 y(In)e Fn(standard)g Fp(mo)q(de)f(the)h(completion)e(of)i(the)g(send)f(do)q(es)i(not)f (necessarily)f(mean)164 677 y(that)20 b(the)f(matc)o(hing)f(receiv)o(e) f(has)j(started,)g(and)g(no)g(assumption)f(should)h(b)q(e)f(made)164 737 y(in)d(the)h(application)f(program)g(ab)q(out)i(whether)e(the)h (out-going)h(data)f(is)g(bu\013ered)f(b)o(y)164 797 y Fm(MPI)p Fp(.)22 b(In)g Fn(bu\013ered)f Fp(mo)q(de)g(the)g(user)h(can)g (guaran)o(tee)h(that)f(a)g(certain)f(amoun)o(t)h(of)164 857 y(bu\013ering)d(space)g(is)f(a)o(v)m(ailable.)28 b(The)19 b(catc)o(h)f(is)h(that)g(the)g(space)g(m)o(ust)e(b)q(e)i (explicitly)164 917 y(pro)o(vided)e(b)o(y)g(the)h(application)g (program.)25 b(In)18 b Fn(sync)n(hronous)g Fp(mo)q(de)f(a)i(rendezv)o (ous)164 978 y(seman)o(tics)12 b(b)q(et)o(w)o(een)g(sender)i(and)g (receiv)o(er)d(is)j(used.)20 b(Finally)l(,)13 b(there)g(is)g Fn(ready)g Fp(mo)q(de.)164 1038 y(This)24 b(allo)o(ws)h(the)f(user)g (to)h(exploit)f(extra)g(kno)o(wledge)g(to)g(simplify)e(the)i(proto)q (col)164 1098 y(and)17 b(p)q(oten)o(tially)e(ac)o(hiev)o(e)f(higher)i (p)q(erformance.)k(In)c(a)h(ready-mo)q(de)e(send,)h(the)g(user)164 1158 y(asserts)h(that)g(the)f(matc)o(hing)e(receiv)o(e)g(already)i(has) h(b)q(een)f(p)q(osted.)164 1325 y Fo(6)83 b(User-de\014ned)26 b(Datat)n(yp)r(es)164 1434 y Fp(All)13 b Fm(MPI)h Fp(comm)o(unication)d (functions)j(tak)o(e)f(a)i(datat)o(yp)q(e)f(argumen)o(t.)20 b(In)13 b(the)h(simplest)164 1494 y(case)f(this)f(will)f(b)q(e)i(a)g (primitiv)o(e)c(t)o(yp)q(e,)j(suc)o(h)h(as)g(an)g(in)o(teger)e(or)i (\015oating-p)q(oin)o(t)h(n)o(um)o(b)q(er.)164 1554 y(An)20 b(imp)q(ortan)o(t)g(and)h(p)q(o)o(w)o(erful)g(generalization)f(results) g(b)o(y)g(allo)o(wing)h(user-de\014ned)164 1615 y(t)o(yp)q(es)c(wherev) o(er)f(the)i(primitiv)n(e)d(t)o(yp)q(es)i(can)g(o)q(ccur.)26 b(These)17 b(are)h(not)f(\\t)o(yp)q(es")i(as)f(far)164 1675 y(as)i(the)f(programming)e(language)j(is)f(concerned.)29 b(They)19 b(are)g(only)g(\\t)o(yp)q(es")h(in)e(that)164 1735 y Fm(MPI)12 b Fp(is)f(made)f(a)o(w)o(are)h(of)h(them)d(through)j (the)f(use)h(of)f(t)o(yp)q(e-constructor)h(functions,)f(and)164 1795 y(they)g(describ)q(e)h(the)g(la)o(y)o(out,)f(in)h(memory)l(,)e(of) i(sets)g(of)g(primitiv)o(e)d(t)o(yp)q(es.)19 b(Through)14 b(user-)164 1855 y(de\014ned)j(t)o(yp)q(es,)g Fm(MPI)i Fp(supp)q(orts)g(the)e(comm)o(unic)o(ation)e(of)j(complex)e(data)i (structures)164 1916 y(suc)o(h)i(as)h(arra)o(y)f(sections)g(and)g (structures)g(con)o(taining)g(com)o(binations)f(of)i(primitiv)n(e)164 1976 y(datat)o(yp)q(es.)31 b(Figure)19 b(2)h(giv)o(es)e(an)i(example)e (of)h(using)h(a)g(user-de\014ned)f(t)o(yp)q(e)g(to)h(send)164 2036 y(the)c(upp)q(er-triangular)h(part)g(of)f(a)h(matrix.)164 2202 y Fo(7)83 b(Collectiv)n(e)25 b(Comm)n(unications)164 2312 y Fp(Collectiv)o(e)17 b(comm)o(unic)o(ations)h(transmit)g(data)i (among)f(all)g(the)g(pro)q(cesses)h(sp)q(eci\014ed)164 2372 y(b)o(y)d(a)g(comm)o(unicator)e(ob)s(ject.)23 b(One)17 b(function,)g(the)g(barrier,)g(serv)o(es)f(to)i(sync)o(hronize)164 2432 y(pro)q(cesses)c(without)g(passing)g(data.)21 b(Brie\015y)l(,)12 b Fm(MPI)j Fp(pro)o(vides)d(the)i(follo)o(wing)f(collectiv)o(e)961 2607 y(8)p eop %%Page: 9 9 9 8 bop 164 315 a Fp(comm)o(unic)o(ation)14 b(functions.)237 410 y Fl(\017)24 b Fp(barrier)16 b(sync)o(hronization)g(across)h(all)f (pro)q(cesses)237 510 y Fl(\017)24 b Fp(broadcast)17 b(from)f(one)g(pro)q(cess)h(to)f(all)237 609 y Fl(\017)24 b Fp(gather)17 b(data)g(from)e(all)h(to)g(one)237 709 y Fl(\017)24 b Fp(scatter)16 b(data)h(from)e(one)i(to)f(all)237 808 y Fl(\017)24 b Fp(allgather:)d(lik)o(e)15 b(a)h(gather,)g(follo)o (w)o(ed)g(b)o(y)g(a)g(broadcast)i(of)e(the)g(gather)h(output)237 907 y Fl(\017)24 b Fp(alltoall:)h(lik)o(e)16 b(a)j(set)f(of)h(gathers)g (in)f(whic)o(h)f(eac)o(h)h(pro)q(cess)h(receiv)o(es)d(a)j(distinct)286 968 y(result)237 1067 y Fl(\017)24 b Fp(global)c(reduction)f(op)q (erations)h(suc)o(h)f(as)h(sum,)f(max,)g(min,)f(and)i(user-de\014ned) 286 1127 y(functions)237 1227 y Fl(\017)k Fp(scan)17 b(\(or)f(pre\014x\))g(across)h(pro)q(cesses)164 1322 y(Figure)k(3)h(giv)o(es)e(a)i(pictorial)f(represen)o(tation)f(of)i (broadcast,)h(scatter,)f(gather,)h(all-)164 1382 y(gather,)i(and)g (alltoall.)42 b(Man)o(y)23 b(of)h(the)g(collectiv)o(e)c(functions)k (also)g(ha)o(v)o(e)f(\\v)o(ector")164 1442 y(v)m(arian)o(ts,)17 b(whereb)o(y)f(di\013eren)o(t)g(amoun)o(ts)h(of)g(data)h(can)f(b)q(e)h (sen)o(t)e(to)i(or)f(receiv)o(ed)e(from)164 1502 y(di\013eren)o(t)j (pro)q(cesses.)31 b(F)l(or)19 b(these,)g(the)g(simple)e(picture)h(of)h (\014gure)h(3)f(b)q(ecomes)f(more)164 1562 y(complex.)237 1622 y(The)i(syn)o(tax)f(and)h(seman)o(tics)e(of)i(the)f Fm(MPI)i Fp(collectiv)o(e)16 b(functions)k(w)o(as)g(designed)164 1683 y(to)25 b(b)q(e)f(consisten)o(t)g(with)g(p)q(oin)o(t)g(to)h(p)q (oin)o(t)f(comm)o(unications.)42 b(Ho)o(w)o(ev)o(er,)24 b(to)h(k)o(eep)164 1743 y(the)d(n)o(um)o(b)q(er)e(of)j(functions)f(and) h(their)f(argumen)o(t)f(lists)h(to)g(a)h(reasonable)g(lev)o(el)d(of)164 1803 y(complexit)o(y)l(,)g(the)i Fm(MPI)h Fp(committee)c(made)i (collectiv)o(e)f(functions)i(more)f(restrictiv)o(e)164 1863 y(than)f(the)e(p)q(oin)o(t)i(to)f(p)q(oin)o(t)g(functions,)h(in)e (sev)o(eral)g(w)o(a)o(ys.)30 b(One)19 b(restriction)f(is)h(that,)164 1923 y(in)e(con)o(trast)g(to)h(p)q(oin)o(t)f(to)h(p)q(oin)o(t)f(comm)o (unic)o(ation,)e(the)i(amoun)o(t)f(of)h(data)h(sen)o(t)f(m)o(ust)164 1984 y(exactly)g(matc)o(h)f(the)i(amoun)o(t)f(of)h(data)h(sp)q (eci\014ed)e(b)o(y)h(the)f(receiv)o(er.)24 b(This)18 b(w)o(as)h(done)164 2044 y(to)k(a)o(v)o(oid)f(the)g(need)g(for)h(an)g (arra)o(y)g(of)g(status)g(v)m(ariables)g(as)g(an)g(argumen)o(t)e(to)i (the)164 2104 y(functions,)f(whic)o(h)e(w)o(ould)h(otherwise)f(b)q(e)h (necessary)g(for)g(the)g(receiv)o(er)d(to)j(disco)o(v)o(er)164 2164 y(the)16 b(amoun)o(t)f(of)i(data)g(actually)f(receiv)o(ed.)237 2224 y(A)i(ma)s(jor)f(simpli\014cation)e(is)j(that)g(collectiv)o(e)d (functions)j(come)f(in)g(blo)q(c)o(king)h(v)o(er-)164 2285 y(sions)k(only)l(.)35 b(Though)23 b(a)e(standing)h(jok)o(e)f(at)g (committee)c(meetings)j(concerned)g(the)164 2345 y(\\non-blo)q(c)o (king)f(barrier,")g(suc)o(h)f(functions)h(can)f(b)q(e)h(quite)f(useful) 1415 2327 y Fh(1)1452 2345 y Fp(and)h(ma)o(y)e(b)q(e)i(in-)164 2405 y(cluded)c(in)h(a)h(future)f(v)o(ersion)g(of)g Fm(MPI)p Fp(.)p 164 2437 648 2 v 220 2467 a Fg(1)239 2482 y Ff(Of)d(course)j (the)e(non-blo)q(c)o(king)f(barrier)h(w)o(ould)f(blo)q(c)o(k)h(at)g (the)g(test-for-completion)f(call.)961 2607 y Fp(9)p eop %%Page: 10 10 10 9 bop 237 315 a Fp(A)19 b(\014nal)g(simpli\014cation)e(of)j (collectiv)o(e)c(functions)k(concerns)f(mo)q(des.)29 b(Collectiv)o(e)164 376 y(functions)18 b(come)f(in)h(only)g(one)g(mo)q (de,)g(and)g(this)g(mo)q(de)g(ma)o(y)f(b)q(e)h(regarded)g(as)h(anal-) 164 436 y(ogous)j(to)g(the)e(standard)j(mo)q(de)d(of)h(p)q(oin)o(t)g (to)g(p)q(oin)o(t.)36 b(Sp)q(eci\014cally)l(,)20 b(the)h(seman)o(tics) 164 496 y(are)c(as)g(follo)o(ws.)22 b(A)16 b(collectiv)o(e)e(function)i (\(on)h(a)g(giv)o(en)f(pro)q(cess\))h(can)g(return)f(as)h(so)q(on)164 556 y(as)h(its)e(participation)h(in)g(the)f(o)o(v)o(erall)g(comm)o (unic)o(ation)f(is)h(complete.)21 b(As)c(usual,)g(the)164 616 y(completion)10 b(indicates)i(that)g(the)g(caller)f(is)h(no)o(w)h (free)e(to)i(access)f(and)g(mo)q(dify)f(lo)q(cations)164 677 y(in)16 b(the)h(comm)o(uni)o(cation)d(bu\013er.)23 b(It)16 b(do)q(es)i(not)f(indicate)f(that)h(other)f(pro)q(cesses)i(ha)o (v)o(e)164 737 y(completed,)12 b(or)j(ev)o(en)f(started,)h(the)g(op)q (eration.)21 b(Th)o(us,)15 b(a)g(collectiv)o(e)d(comm)o(unicati)o(on) 164 797 y(ma)o(y)l(,)j(or)j(ma)o(y)e(not,)h(ha)o(v)o(e)g(the)g (e\013ect)g(of)g(sync)o(hronizing)g(all)g(calling)f(pro)q(cesses.)25 b(The)164 857 y(barrier,)15 b(of)i(course,)f(is)g(the)g(exception)f(to) i(this)f(statemen)o(t.)237 917 y(The)f(c)o(hoice)f(of)i(seman)o(tics)d (w)o(as)j(done)f(so)h(as)g(to)f(allo)o(w)g(a)h(v)m(ariet)o(y)e(of)i (implem)o(en)n(ta-)164 978 y(tions.)237 1038 y(The)11 b(user)g(of)h Fm(MPI)g Fp(m)o(ust)d(k)o(eep)h(these)h(issues)g(in)g (mind.)18 b(F)l(or)11 b(example,)f(ev)o(en)g(though)164 1098 y(a)18 b(particular)f(implem)o(e)o(n)o(tation)e(of)j Fm(MPI)f Fp(ma)o(y)f(pro)o(vide)h(a)g(broadcast)i(with)e(the)g(side-) 164 1158 y(e\013ect)i(of)i(sync)o(hronization)e(\(the)h(standard)h (allo)o(ws)f(this\),)g(the)g(standard)h(do)q(es)f(not)164 1218 y Fi(r)n(e)n(quir)n(e)c Fp(this,)h(and)h(hence,)f(an)o(y)g (program)g(that)h(relies)e(on)i(the)f(sync)o(hronization)g(will)164 1279 y(b)q(e)h(non-p)q(ortable.)29 b(On)18 b(the)g(other)g(hand,)h(a)f (correct)g(and)h(p)q(ortable)f(program)g(m)o(ust)164 1339 y(allo)o(w)e(a)i(collectiv)o(e)13 b(function)k(to)g(b)q(e)g(sync)o (hronizing.)22 b(Though)c(one)f(should)g(not)g(rely)164 1399 y(on)g(sync)o(hronization)f(side-e\013ects,)f(one)h(m)o(ust)f (program)h(so)h(as)g(to)g(allo)o(w)f(for)g(it.)237 1459 y(Though)21 b(these)f(issues)g(and)g(statemen)o(ts)f(ma)o(y)f(seem)g (un)o(usually)i(obscure,)g(they)164 1519 y(are)c(merely)e(a)i (consequence)g(of)g(the)g(desire)g(of)g Fm(MPI)h Fp(to:)237 1621 y Fl(\017)24 b Fp(allo)o(w)16 b(e\016cien)o(t)e(implem)o(en)o (tations)g(on)i(a)h(v)m(ariet)o(y)e(of)i(arc)o(hitectures;)d(and,)237 1723 y Fl(\017)24 b Fp(b)q(e)e(clear)f(ab)q(out)i(exactly)e(what)h(is,) h(and)f(what)h(is)e(not,)j(guaran)o(teed)e(b)o(y)f(the)286 1783 y(standard.)164 1949 y Fo(8)83 b(Groups,)26 b(Con)n(texts,)g(and)h (Comm)n(unicators)164 2059 y Fp(A)18 b(k)o(ey)f(feature)h(needed)g(to)h (supp)q(ort)g(the)f(creation)g(of)h(robust,)g(parallel)f(libraries)f (is)164 2119 y(to)i(guaran)o(tee)f(that)h(comm)o(unic)o(ation)d(within) i(a)g(library)g(routine)g(do)q(es)h(not)f(con\015ict)164 2179 y(with)g(comm)o(unic)o(ation)e(extraneous)i(to)h(the)f(routine.)27 b(The)18 b(concepts)g(encapsulated)164 2239 y(b)o(y)e(an)g Fm(MPI)h Fp(comm)o(unicator)d(pro)o(vide)h(this)h(supp)q(ort.)237 2300 y(A)g Fn(comm)n(unicator)e Fp(is)j(a)g(data)h(ob)s(ject)e(that)h (sp)q(eci\014es)f(the)g(scop)q(e)i(of)e(a)i(comm)o(u-)164 2360 y(nication)e(op)q(eration,)h(that)g(is,)g(the)f(group)h(of)g(pro)q (cesses)h(in)o(v)o(olv)o(ed)c(and)j(the)g(comm)o(u-)164 2420 y(nication)f(con)o(text.)22 b Fn(Con)n(texts)16 b Fp(partition)h(the)f(comm)o(unic)o(ation)e(space.)23 b(A)16 b(message)164 2480 y(sen)o(t)e(in)h(one)g(con)o(text)f(cannot)h (b)q(e)g(receiv)o(ed)d(in)j(another)g(con)o(text.)20 b(Pro)q(cess)c(ranks)f(are)949 2607 y(10)p eop %%Page: 11 11 11 10 bop 164 315 a Fp(in)o(terpreted)13 b(with)h(resp)q(ect)f(to)i (the)f(pro)q(cess)h Fn(group)f Fp(asso)q(ciated)h(with)f(a)h(comm)o (unic)o(a-)164 376 y(tor.)24 b Fm(MPI)18 b Fp(applications)g(b)q(egin)f (with)g(a)h(default)f(comm)o(uni)o(cator,)e Fj(MPI)p 1506 376 16 2 v 17 w(COMM)p 1627 376 V 17 w(WORLD)p Fp(,)164 436 y(whic)o(h)i(has)h(as)h(pro)q(cess)f(group)h(the)e(en)o(tire)g(set) g(of)h(pro)q(cesses)h(\(of)f(this)f(parallel)g(job\).)164 496 y(New)i(comm)o(unic)o(ators)f(are)h(created)g(from)g(existing)f (comm)o(unicators)f(and)j(the)f(cre-)164 556 y(ation)e(of)f(a)h(comm)o (unic)o(ator)d(is)i(a)h(collectiv)o(e)c(op)q(eration.)237 616 y(Comm)o(unicators)c(are)i(esp)q(ecially)e(imp)q(ortan)o(t)h(for)h (the)g(design)g(of)g(parallel)f(soft)o(w)o(are)164 677 y(libraries.)41 b(Supp)q(ose)24 b(w)o(e)f(ha)o(v)o(e)g(a)g(parallel,)h (matrix)e(m)o(ultipli)o(cation)f(routine)i(as)h(a)164 737 y(mem)o(b)q(er)13 b(of)k(a)g(library)l(.)k(W)l(e)16 b(w)o(ould)h(lik)o(e)e(to)h(allo)o(w)h(distinct)e(subgroups)k(of)d(pro) q(cesses)164 797 y(to)21 b(p)q(erform)f(di\013eren)o(t)g(matrix)f(m)o (ultipli)o(cations)f(concurren)o(tly)l(.)33 b(A)21 b(comm)o(unic)o (ator)164 857 y(pro)o(vides)i(a)g(con)o(v)o(enien)o(t)f(mec)o(hanism)e (for)j(passing)h(in)o(to)f(the)h(library)e(routine)h(the)164 917 y(group)f(of)f(pro)q(cesses)h(in)o(v)o(olv)o(ed,)d(and)j(within)e (the)h(routine,)g(pro)q(cess)h(ranks)f(will)f(b)q(e)164 978 y(in)o(terpreted)f(relativ)o(e)g(to)i(this)f(group.)35 b(The)21 b(grouping)h(and)f(lab)q(eling)f(mec)o(hanisms)164 1038 y(pro)o(vided)c(b)o(y)g(comm)o(unicators)e(are)j(useful,)f(and)h (comm)o(unicators)e(will)g(t)o(ypically)g(b)q(e)164 1098 y(passed)i(in)o(to)f(library)f(routines)i(that)f(p)q(erform)g(in)o (ternal)f(comm)o(unic)o(ations.)237 1158 y(Suc)o(h)f(library)g (routines)h(can)g(also)g(create)f(their)g(o)o(wn,)h(unique)f(comm)o (unic)o(ator)f(for)164 1218 y(in)o(ternal)j(use.)25 b(F)l(or)18 b(example,)d(consider)i(an)h(application)g(in)f(whic)o(h)g(pro)q(cess)h (0)g(p)q(osts)164 1279 y(a)24 b(wildcarded,)g(non-blo)q(c)o(king)g (receiv)o(e)d(just)j(b)q(efore)g(en)o(try)f(to)h(a)g(library)f (routine.)164 1339 y(Suc)o(h)13 b(\\promiscuous")h(p)q(osting)h(of)f (receiv)o(es)e(is)h(a)i(common)c(tec)o(hnique)h(for)i(increasing)164 1399 y(p)q(erformance.)39 b(Here,)23 b(if)f(an)h(in)o(ternal)f(comm)o (unicator)e(is)i(not)i(created,)f(incorrect)164 1459 y(b)q(eha)o(vior)d(could)g(result)g(since)g(the)g(receiv)o(e)e(ma)o(y)h (b)q(e)h(satis\014ed)h(b)o(y)f(a)h(message)e(sen)o(t)164 1519 y(b)o(y)d(pro)q(cess)g(1)h(from)e(within)h(the)f(library)h (routine,)f(if)h(pro)q(cess)h(1)f(in)o(v)o(ok)o(es)f(the)h(library)164 1579 y(ahead)f(of)g(pro)q(cess)g(0.)21 b(Another)14 b(example)f(is)h (one)h(where)f(a)h(pro)q(cess)g(sends)g(a)g(message)164 1640 y(b)q(efore)g(en)o(try)f(in)o(to)g(a)h(library)f(routine,)h(but)f (the)h(destination)g(pro)q(cess)g(do)q(es)h(not)f(p)q(ost)164 1700 y(the)h(matc)o(hing)f(receiv)o(e)f(un)o(til)h(after)h(exiting)f (the)h(library)g(routine.)21 b(In)16 b(this)g(case,)g(the)164 1760 y(message)f(ma)o(y)g(b)q(e)i(receiv)o(ed,)c(incorrectly)l(,)h (within)i(the)g(library)f(routine.)237 1820 y(These)22 b(problems)f(are)h(a)o(v)o(oided)f(b)o(y)h(prop)q(er)g(design)g(and)h (usage)g(of)f(parallel)g(li-)164 1880 y(braries.)35 b(One)21 b(w)o(ork)m(able)g(design)g(is)f(for)i(the)e(application)h(program)g (to)g(pass)h(com-)164 1941 y(m)o(unicators)e(in)o(to)g(the)h(library)f (routine)h(that)g(sp)q(eci\014es)g(the)f(group)i(and)g(ensures)f(a)164 2001 y(safe)e(con)o(text.)27 b(Another)18 b(design)h(has)g(the)g (library)f(create)g(a)g(\\hidden")h(and)h(unique)164 2061 y(comm)o(unic)o(ator)c(that)h(is)h(set)f(up)g(in)h(a)f(library)g (initialization)f(call,)g(again)i(leading)g(to)164 2121 y(correct)e(partitioning)g(of)g(the)g(message)g(space)g(b)q(et)o(w)o (een)g(application)g(and)g(library)l(.)237 2181 y(Sidebar)21 b(C)h(sho)o(ws)g(ho)o(w)f(one)h(migh)o(t)d(implem)o(en)o(t)f(the)j (second)g(t)o(yp)q(e)g(of)g(design.)164 2242 y(Some)i(though)o(t)j(sho) o(ws)f(that,)i(as)e(one)g(creates)f(separate)i(comm)o(uni)o(cators)d (for)i(li-)164 2302 y(braries,)18 b(it)f(is)h(con)o(v)o(enien)o(t)e(to) i(asso)q(ciate)h(these)e(new)h(comm)o(unicators)d(with)j(the)g(old)164 2362 y(comm)o(unic)o(ators)12 b(from)h(whic)o(h)g(they)g(w)o(ere)g (deriv)o(ed.)19 b(The)14 b Fm(MPI)g Fn(cac)n(hing)g Fp(mec)o(hanism)164 2422 y(pro)o(vides)i(a)i(w)o(a)o(y)e(to)i(set)e(up)h(suc)o(h)g(an)h (asso)q(ciation.)24 b(Though)18 b(one)f(can)g(asso)q(ciate)h(ar-)164 2482 y(bitrary)f(ob)s(jects)f(with)h(comm)o(unic)o(ators)e(using)i(cac) o(hing,)f(the)h(abilit)o(y)e(to)j(do)f(this)g(for)949 2607 y(11)p eop %%Page: 12 12 12 11 bop 164 315 a Fp(library-in)o(ternal)13 b(comm)o(unic)o(ators)g (is)h(one)h(of)g(the)f(most)g(imp)q(ortan)o(t)g(uses)h(of)g(cac)o (hing.)164 482 y Fo(9)83 b(Conclusions)164 591 y Fp(A)23 b(pleasan)o(t)g(surprise)f(for)i(participan)o(ts)e(in)h(the)g Fm(MPI)g Fp(e\013ort)h(w)o(as)f(the)g(in)o(teresting)164 652 y(in)o(tellectual)13 b(issues)i(that)h(arose.)22 b(This)16 b(article)e(has)i(concen)o(trated)f(on)h(some)e(of)i(these) 164 712 y(in)o(teresting)j(and)h(di\016cult)f(issues,)h(but)g(for)h (most)e(cases,)h(programming)f(in)h Fm(MPI)g Fp(is)164 772 y(straigh)o(tforw)o(ard)h(and)f(is)g(similar)e(to)j(programming)d (with)i(other)g(message-passing)164 832 y(in)o(terfaces.)237 892 y Fm(MPI)e Fp(do)q(es)f(not)h(claim)d(to)i(b)q(e)g(the)g (de\014nitiv)o(e)e(answ)o(er)i(to)h(all)e(needs.)23 b(Indeed,)16 b(our)164 953 y(insistence)i(on)i(simplicit)o(y)c(and)k(timeliness)d (of)i(the)h(standard)g(precludes)f(that.)31 b(W)l(e)164 1013 y(b)q(eliev)o(e)13 b(the)i Fm(MPI)h Fp(in)o(terface)e(pro)o(vides) h(a)h(useful)f(basis)h(for)f(the)g(dev)o(elopmen)o(t)d(of)k(soft-)164 1073 y(w)o(are)e(for)g(message-passing)h(en)o(vironmen)o(ts.)j(Besides) 13 b(promoting)g(the)h(emergence)e(of)164 1133 y(parallel)h(soft)o(w)o (are,)g(a)h(message-passing)g(standard)g(pro)o(vides)f(v)o(endors)g (with)h(a)f(clearly)164 1193 y(de\014ned,)18 b(base)h(set)f(of)g (routines)h(that)f(they)g(can)h(implem)o(en)n(t)d(e\016cien)o(tly)l(.) 24 b(Hardw)o(are)164 1253 y(supp)q(ort)15 b(for)e(parts)h(of)g(the)f (system)f(is)h(also)h(p)q(ossible,)g(and)g(this)f(ma)o(y)f(greatly)h (enhance)164 1314 y(parallel)i(scalabilit)o(y)l(.)237 1374 y(A)o(t)k(the)g(\014nal)h Fm(MPI)g Fp(F)l(orum)e(meeting)g(in)h(F) l(ebruary)g(1994,)j(it)d(w)o(as)h(decided)e(that)164 1434 y(plans)j(for)f(extending)g Fm(MPI)h Fp(should)g(w)o(ait)f(for)h (more)e(exp)q(erience)f(with)j(the)f(curren)o(t)164 1494 y(v)o(ersion.)g(It)c(seems)e(clear,)h(ho)o(w)o(ev)o(er,)f(that)j Fm(MPI)f Fp(will)f(so)q(on)i(b)q(e)f(expanded)g(in)g(some)f(of)164 1554 y(the)h(directions)f(listed)h(b)q(elo)o(w.)237 1669 y Fl(\017)24 b Fp(P)o(arallel)15 b(I/O)237 1770 y Fl(\017)24 b Fp(Remote)14 b(store/access)237 1872 y Fl(\017)24 b Fp(Activ)o(e)14 b(messages)237 1974 y Fl(\017)24 b Fp(Pro)q(cess)17 b(startup)237 2075 y Fl(\017)24 b Fp(Dynamic)15 b(pro)q(cess)h(con)o (trol)237 2177 y Fl(\017)24 b Fp(Non-blo)q(c)o(king)16 b(collectiv)o(e)d(op)q(erations)237 2279 y Fl(\017)24 b Fp(F)l(ortran)17 b(90)g(and)g(C++)f(language)h(bindings)237 2381 y Fl(\017)24 b Fp(Graphics)237 2482 y Fl(\017)g Fp(Real-time)14 b(supp)q(ort)949 2607 y(12)p eop %%Page: 13 13 13 12 bop 237 315 a Fp(F)l(or)19 b(more)e(information,)g(an)i Fm(MPI)p Fp(-sp)q(eci\014c)g(newsgroup,)h Fj(comp.para)o(lle)o(l.)o (mpi)o Fp(,)164 376 y(no)o(w)13 b(exists.)19 b(The)13 b(o\016cial)e(v)o(ersion)h(of)h(the)f(sp)q(eci\014cation)g(do)q(cumen)o (t)f(can)i(b)q(e)g(obtained)164 436 y(from)e(netlib)g([4])h(b)o(y)g (sending)g(an)h(email)d(message)h(to)i Fj(netlib@ww)o(w.n)o(et)o(lib)o (.or)o(g)c Fp(with)164 496 y(the)k(message:)19 b(\\send)c(mpi-rep)q (ort.ps)d(from)h(mpi".)19 b(A)13 b(p)q(ostscript)h(\014le)f(will)f(b)q (e)i(mailed)164 556 y(bac)o(k)19 b(to)g(y)o(ou)g(b)o(y)g(the)g(netlib)f (serv)o(er.)29 b(The)19 b(do)q(cumen)o(t)f(ma)o(y)g(also)h(b)q(e)h (obtained)f(via)164 616 y(anon)o(ymous)13 b(ftp)f(from)g Fj(www.netlib)o(.or)o(g/m)o(pi)o(/mp)o(i-r)o(ep)o(ort)o(.ps)o Fp(,)e(and)k(a)f(h)o(yp)q(ertext)164 677 y(v)o(ersion)106 b(is)h(a)o(v)m(ailable)g(through)h(the)f(w)o(orld-wide-w)o(eb)g(at)164 737 y Fj(http://www)o(.mc)o(s.)o(anl)o(.go)o(v/m)o(pi)o(/mp)o(i-r)o(ep) o(ort)o(/mp)o(i-r)o(ep)o(ort)o(.ht)o(ml)p Fp(.)164 900 y Fo(References)188 1009 y Fp([1])24 b(R.)f(Butler)g(and)h(E.)f(Lusk.) 44 b(Monitors,)25 b(Messages,)h(and)e(Clusters:)36 b(The)23 b(P4)264 1069 y(P)o(arallel)f(Programming)f(System.)39 b Fi(Par)n(al)r(lel)25 b(Computing)p Fp(,)g(20:547{64,)h(April)264 1130 y(1994.)188 1225 y([2])e(R.)11 b(Calkin,)h(R.)f(Hemp)q(el,)f(H.)h (Hopp)q(e,)h(and)h(P)l(.)e(Wypior.)j(P)o(ortable)d(Programming)264 1285 y(with)g(the)g(P)l(ARMA)o(CS)f(Message{P)o(assing)j(Library)l(.)g Fi(Par)n(al)r(lel)h(Computing,)g(Sp)n(e-)264 1345 y(cial)k(issue)g(on)g (message{p)n(assing)g(interfac)n(es)p Fp(,)e(20:615{32,)j(April)c (1994.)188 1440 y([3])24 b(J.)14 b(Dongarra,)i(A.)d(Geist,)h(R.)g(Manc) o(hek,)f(and)i(V.)e(Sunderam.)k(In)o(tegrated)c(PVM)264 1500 y(F)l(ramew)o(ork)20 b(Supp)q(orts)j(Heterogeneous)e(Net)o(w)o (ork)f(Computing.)36 b Fi(Computers)264 1561 y(in)18 b(Physics)p Fp(,)e(7\(2\):166{75,)i(April)d(1993.)188 1656 y([4])24 b(J.)17 b(Dongarra)i(and)e(E.)g(Grosse.)24 b(Distribution)17 b(of)g(Mathematical)e(Soft)o(w)o(are)i(via)264 1716 y(Electronic)e(Mail.)21 b Fi(Communic)n(ations)c(of)g(the)h(A)o (CM)p Fp(,)e(30\(5\):403{7,)i(July)e(1987.)188 1811 y([5])24 b(Message)36 b(P)o(assing)f(In)o(terface)f(F)l(orum.)76 b(MPI:)34 b(A)h(Message-P)o(assing)h(In-)264 1871 y(terface)g(Standard) h(.)81 b Fi(International)38 b(Journal)d(of)h(Sup)n(er)n(c)n(omputer)f (Ap-)264 1931 y(plic)n(ations)e(and)g(High)g(Performanc)n(e)f (Computing)p Fp(,)37 b(8\(3/4\),)g(1994.)71 b(Sp)q(e-)264 1991 y(cial)49 b(issue)h(on)g(MPI.)f(Also)g(a)o(v)m(ailable)g (electronically)l(,)55 b(the)50 b(url)f(is)264 2052 y Fj(ftp://www.n)o(et)o(lib)o(.or)o(g/m)o(pi)o(/mp)o(i-r)o(ep)o(ort)o (.ps)o Fp(.)188 2147 y([6])24 b(A.)14 b(Geist,)f(A.)h(Beguelin,)e(J.)i (Dongarra,)i(W.)e(Jiang,)h(R.)e(Manc)o(hek,)g(and)i(V.)e(Sun-)264 2207 y(deram.)h Fi(PVM:)f(A)h(Users')g(Guide)g(and)g(T)l(utorial)g(for) f(Networke)n(d)i(Par)n(al)r(lel)g(Com-)264 2267 y(puting)p Fp(.)22 b(MIT)15 b(Press,)g(1994.)22 b(The)16 b(b)q(o)q(ok)h(is)f(a)o (v)m(ailable)f(electronically)l(,)d(the)k(url)f(is)264 2327 y Fj(ftp://www.n)o(et)o(lib)o(.or)o(g/p)o(vm)o(3/b)o(ook)o(/p)o (vm-)o(boo)o(k.p)o(s)p Fp(.)188 2422 y([7])24 b(W.)e(Gropp,)i(E.)e (Lusk,)i(and)f(A.)e(Skjellum.)37 b Fi(Using)23 b(MPI:)g(Portable)h(Par) n(al)r(lel)264 2482 y(Pr)n(o)n(gr)n(amming)12 b(with)j(the)f (Message-Passing)h(Interfac)n(e)p Fp(.)h(The)c(MIT)g(Press,)h(1994.)949 2607 y(13)p eop %%Page: 14 14 14 13 bop 188 315 a Fp([8])24 b(C.)15 b(Ko)q(elb)q(el,)g(D.)g(Lo)o(v)o (eman,)e(R.)i(Sc)o(hreib)q(er,)f(G.)h(Steele)f(Jr.,)g(and)i(M.)f (Zosel.)k Fi(The)264 376 y(High)f(Performanc)n(e)f(F)l(ortr)n(an)g (Handb)n(o)n(ok)p Fp(.)k(The)c(MIT)e(Press,)h(1994.)188 477 y([9])24 b(P)o(arasoft)31 b(Corp)q(oration,)k(Monro)o(via,)e(CA.)62 b Fi(Expr)n(ess)29 b(User's)i(Guide)p Fp(,)i(v)o(er-)264 538 y(sion)26 b(3.2.5)f(edition,)h(1992.)49 b(P)o(arasoft)26 b(can)f(b)q(e)g(reac)o(hed,)h(electronically)l(,)f(at)264 598 y Fj(parasoft@Pa)o(ra)o(sof)o(t.C)o(OM)p Fp(.)164 699 y([10])f(A.)12 b(Skjellum)e(and)j(A.)e(Leung.)16 b(Zip)q(co)q(de:)k(a)13 b(P)o(ortable)f(Multicomputer)e(Comm)o(u-)264 760 y(nication)17 b(Library)f(atop)i(the)e(Reactiv)o(e)f(Kernel.)21 b(In)c(D.)f(W.)g(W)l(alk)o(er)g(and)h(Q.)g(F.)264 820 y(Stout,)f(editors,)f Fi(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)h(the)h(Fifth) f(Distribute)n(d)f(Memory)h(Concurr)n(ent)264 880 y(Computing)h(Confer) n(enc)n(e)p Fp(,)f(pages)g(767{76.)h(IEEE)e(Press,)h(1990.)949 2607 y(14)p eop %%Page: 15 15 15 14 bop 164 315 a Fo(A)83 b(Sidebar:)36 b(Implemen)n(tations)26 b(of)i Fk(MPI)164 425 y Fm(MPI)23 b Fp(is)f(a)o(v)m(ailable)f(on)i (parallel)e(computers)g(from)h(IBM,)e(Meik)o(o,)i(In)o(tel,)g(Cra)o(y)g (Re-)164 485 y(searc)o(h,)15 b(and)i(Ncub)q(e.)237 545 y(A)h(n)o(um)o(b)q(er)f(of)i(public-domain)e Fm(MPI)i Fp(implem)o(en)n(tations)d(are)j(a)o(v)m(ailable)f(and)h(can)164 606 y(b)q(e)d(found)h(at)g(the)f(follo)o(wing)g(lo)q(cations.)237 720 y Fl(\017)24 b Fp(Argonne)18 b(National)f(Lab)q (oratory/Mississippi)j(State)e(Univ)o(ersit)o(y)d(implem)o(en-)286 780 y(tation.)34 b(Av)m(ailable)19 b(b)o(y)g(anon)o(ymous)h(ftp)h(at)f Fj(info.mcs.a)o(nl.)o(gov)o(/pu)o(b/)o(mpi)o Fp(.)286 840 y(This)c(v)o(ersion)g(is)g(la)o(y)o(ered)f(on)h(PVM)g(or)h(P4)f (and)h(can)g(b)q(e)f(run)g(on)h(all)f(systems.)237 942 y Fl(\017)24 b Fp(Edin)o(burgh)14 b(P)o(arallel)f(Computing)g(Cen)o (tre)g(CHIMP)g(implem)o(en)o(tation.)18 b(Av)m(ail-)286 1002 y(able)254 b(b)o(y)f(anon)o(ymous)h(ftp)g(at)286 1062 y Fj(ftp.epcc.e)o(d.a)o(c.)o(uk/)o(pub)o(/c)o(him)o(p/r)o(ele)o (as)o(e/c)o(him)o(p.)o(tar)o(.Z)p Fp(.)237 1164 y Fl(\017)24 b Fp(Mississippi)14 b(State)g(Univ)o(ersit)o(y)e(UNIFY)h(implem)o(en)o (tation.)18 b(The)d(UNIFY)d(sys-)286 1224 y(tem)18 b(pro)o(vides)g(a)i (subset)g(of)g Fm(MPI)g Fp(within)f(the)g(PVM)g(en)o(vironmen)o(t,)e (without)286 1284 y(sacri\014cing)i(the)h(PVM)f(calls)g(already)g(a)o (v)m(ailable.)31 b(Av)m(ailable)18 b(b)o(y)h(anon)o(ymous)286 1344 y(ftp)d(at)h Fj(ftp.erc.m)o(sst)o(ate)o(.ed)o(u/)o(uni)o(fy)p Fp(.)237 1446 y Fl(\017)24 b Fp(Ohio)c(Sup)q(ercomputer)f(Cen)o(ter)g (LAM)h(implem)o(e)o(n)o(tation.)30 b(A)19 b(full)g Fm(MPI)i Fp(stan-)286 1506 y(dard)12 b(implem)o(e)o(n)o(tation)d(for)i(LAM,)f(a) i(UNIX)d(cluster)h(computing)g(en)o(vironmen)o(t.)286 1567 y(Av)m(ailable)15 b(b)o(y)h(anon)o(ymous)g(ftp)g(at)h Fj(tbag.osc.)o(ed)o(u/p)o(ub/)o(lam)o Fp(.)949 2607 y(15)p eop %%Page: 16 16 16 15 bop 164 315 a Fo(B)82 b(Sidebar:)33 b(More)23 b(Information)f(on) g Fk(MPI)p Fo(,)g(Assis-)305 407 y(tance)164 516 y Fp(The)f(b)q(o)q(ok) h(b)o(y)e(W.)h(Gropp,)h(E.)f(Lusk,)h(and)f(A.)f(Skjellum)e(\([7]\))i (is)h(a)g(tutorial-lev)o(el)164 577 y(explanation)d(of)h Fm(MPI)p Fp(.)g(An)f(expanded)g(and)h(annotated)h(reference)c(man)o (ual)i(for)g Fm(MPI)164 637 y Fp(is)c(b)q(eing)h(written)f(b)o(y)g(the) g(authors)i(of)f(this)g(article)e(and)i(other)g(mem)n(b)q(ers)d(of)j (the)f(MPI)164 697 y(F)l(orum,)h(and)h(should)h(b)q(e)g(a)o(v)m (ailable)e(in)h(1995.)237 757 y(An)h Fm(MPI)p Fp(-sp)q(eci\014c)h (newsgroup,)h Fj(comp.paral)o(lel)o(.m)o(pi)p Fp(,)14 b(exists.)25 b(An)17 b(abundance)164 817 y(of)25 b(information)e(ab)q (out)j Fm(MPI)f Fp(is)f(a)o(v)m(ailable)f(through)j(the)e(w)o (orld-wide-w)o(eb.)45 b(The)164 877 y(follo)o(wing)16 b(is)g(a)h(list)e(of)i(URL's)f(con)o(taining)g Fm(MPI)p Fp(-related)g(information.)237 979 y Fl(\017)24 b Fp(Netlib)15 b(Rep)q(ository)i(at)g(Univ)o(ersit)o(y)d(of)j(T)l(ennessee)g(and)g (Oak)g(Ridge)f(National)286 1039 y(Lab)h(\()p Fj(http://www)o(.ne)o (tli)o(b.)o(org)o(/mp)o(i/i)o(nd)o(ex.)o(htm)o(l)p Fp(\).)237 1141 y Fl(\017)24 b Fp(Argonne)16 b(National)g(Lab)i(\()p Fj(http://ww)o(w.m)o(cs.)o(an)o(l.g)o(ov/)o(mpi)o Fp(\).)237 1243 y Fl(\017)24 b Fp(Mississippi)65 b(State)i(Univ)o(ersit)o(y)l(,)75 b(Engineering)66 b(Researc)o(h)g(Cen)o(ter)286 1303 y(\()p Fj(http://www)o(.e)o(rc.)o(mss)o(tat)o(e.)o(edu)o(/mp)o(i)p Fp(\).)237 1405 y Fl(\017)24 b Fp(Ohio)153 b(Sup)q(ercomputer)f(Cen)o (ter,)186 b(LAM)152 b(Pro)s(ject)286 1465 y(\()p Fj(http://www)o(.o)o (sc.)o(edu)o(/la)o(m.)o(htm)o(l)p Fp(\))237 1567 y Fl(\017)24 b Fp(Australian)436 b(National)g(Univ)o(ersit)o(y)286 1627 y(\()p Fj(file://dcs)o(so)o(ft.)o(anu)o(.ed)o(u.)o(au/)o(pub)o(/w) o(ww/)o(dcs)o(/ca)o(p/)o(mpi)o(/mp)o(i.h)o(tm)o(l)p Fp(\))237 1728 y(A)13 b(curren)o(t)g(v)o(ersion)g(of)h(errata)g(for)g(the)f(sp)q (eci\014cation)g(do)q(cumen)o(t)g(\([5]\))g(can)g(b)q(e)h(ob-)164 1789 y(tained)20 b(from)f Fj(ftp://www.)o(net)o(lib)o(.or)o(g/)o(mpi)o (/er)o(rat)o(a.)o(ps)p Fp(.)30 b(The)20 b(complete)e(email)164 1849 y(asso)q(ciated)g(with)f(the)g Fm(MPI)h Fp(F)l(orum)e(has)i(b)q (een)f(arc)o(hiv)o(ed.)22 b(They)17 b(are)h(a)o(v)m(ailable)e(from)164 1909 y(netlib.)24 b(Send)18 b(a)g(message)f(to)h Fj(netlib@or)o(nl.)o (gov)c Fp(with)j(the)h(message)f Fj(send)24 b(index)164 1969 y(from)g(mpi)p Fp(.)c(Y)l(ou)d(can)f(also)h(ftp)f(them)f(from)g Fj(netlib2.c)o(s.u)o(tk.)o(edu)o(/m)o(pi)p Fp(.)237 2029 y(So)h(far,)f(at)h(least)f(one)g(compan)o(y)f(is)h(o\013ering)h (professional)f(supp)q(ort)i(and)f(consult-)164 2090 y(ing)50 b(for)g Fm(MPI)p Fp(.)g(This)g(is)f(P)l(ALLAS,)h(and)g(they)f (ma)o(y)g(b)q(e)h(reac)o(hed)f(at)164 2150 y Fj(info@palla)o(s-g)o(mb)o (h.d)o(e)p Fp(.)949 2607 y(16)p eop %%Page: 17 17 17 16 bop 164 315 a Fo(C)82 b(Sidebar:)31 b(Library)18 b(Comm)n(unicator)f(and)h(Cac)n(hing)164 425 y Fp(W)l(e)24 b(wish)g(to)g(giv)o(e)f(a)i(parallel)e(library)g(its)h(o)o(wn)h(comm)o (uni)o(cator,)e(with)h(a)h(unique)164 485 y(con)o(text.)43 b(The)23 b(strategy)h(is)g(to)g(pass)h(in,)f(at)g(eac)o(h)g(in)o(v)o(o) q(cation)f(of)h(the)f(library)l(,)i(a)164 545 y(comm)o(unic)o(ator)d (that)j(describ)q(es)f(the)g(pro)q(cess)h(group)g(to)g(b)q(e)f(used.)45 b(The)25 b(library)164 606 y(function)e(\\duplicates")g(it,)i(getting)e (a)h(similar)d(comm)o(uni)o(cator,)h(but)i(one)f(with)h(a)164 666 y(unique)c(comm)o(uni)o(cation)e(con)o(text.)33 b(This)20 b(b)q(ecomes)g(the)g(priv)m(ate,)g(library-in)o(ternal)164 726 y(comm)o(unic)o(ator.)237 786 y(The)15 b Fm(MPI)h Fp(cac)o(hing)f(mec)o(hanism)d(is)j(used)h(to)f(mak)o(e)f(this)h(w)o (ork)g(w)o(ell.)20 b(The)15 b(priv)m(ate)164 846 y(comm)o(unic)o(ator)c (is)h(asso)q(ciated)h(\(cac)o(hed\))f(with)g(the)g(comm)o(unicator)e (passed)j(in)f(b)o(y)g(the)164 907 y(application.)21 b(This)c(means)e(that)i(the)f(priv)m(ate)g(comm)o(unicator)e(needs)i (to)h(b)q(e)f(created)164 967 y(only)11 b(the)h(\014rst)f(time)f(the)h (library)g(is)g(in)o(v)o(ok)o(ed)f(with)h(that)h(particular)g(comm)o (uni)o(cator)d(as)164 1027 y(argumen)o(t.)19 b(The)12 b(cac)o(hing)f(hides)h(the)f(in)o(ternal)g(comm)o(unicator)f(from)g (the)i(application)164 1087 y(and)17 b(the)e(application)h(need)g(not)g (explicitly)e(manage)h(the)h(in)o(ternal)f(comm)o(unic)o(ators.)164 1147 y(The)e(reader)h(is)f(referred)f(to)i(the)f(further)g(sources)h (discussed)f(in)g(sidebar)h(B)f(for)g(details)164 1207 y(concerning)j(the)g(cac)o(hing)g(mec)o(hanism)o(.)355 1433 y Fe(/*)23 b(static)h(variable)e(used)i(as)f(``key'')g(for)h (library)e(*/)355 1490 y(/*)h(Only)h(one)f(per)h(process)f(is)g (necessary,)g(even)g(if)h(multiple)e(*/)355 1546 y(/*)h(library)g (invocations)g(can)g(be)h(concurrently)e(active.)47 b(*/)212 1603 y(extern)23 b(int)g(lib)p 549 1603 15 2 v 17 w(key;)355 1716 y(/*)g(library)g(init.)47 b(Need)24 b(to)f(invoke)g(once)h(by)f (each)h(process,)e(*/)355 1772 y(/*)h(before)h(library)e(is)i(used.)47 b(*/)212 1828 y(void)23 b(lib)p 406 1828 V 17 w(init\(\))212 1885 y Fd(f)355 1941 y Fe(/*)g(allocate)g(a)h(process-unique)e(key)h (*/)259 1998 y(MPI)p 334 1998 V 17 w(Keyval)p 495 1998 V 17 w(create\(MPI)p 752 1998 V 15 w(NULL)p 863 1998 V 17 w(FN,)g(MPI)p 1047 1998 V 17 w(NULL)p 1160 1998 V 17 w(FN,)g(&lib)p 1368 1998 V 17 w(key,)g(\(void)g(*\)NULL\);)212 2054 y Fd(g)212 2167 y Fe(void)g(lib)p 406 2167 V 17 w(call\()g(MPI)p 638 2167 V 17 w(Comm)g(comm,)g(...)48 b(\))212 2224 y Fd(f)259 2280 y Fe(int)24 b(flag;)355 2337 y(/*)f(private)g(communicator)g(for)g(library-internal)f (communication)g(*/)259 2393 y(MPI)p 334 2393 V 17 w(Comm)i(*private)p 663 2393 V 16 w(comm;)949 2607 y Fp(17)p eop %%Page: 18 18 18 17 bop 355 315 a Fe(/*)23 b(retrieve)g(private)g(communicator)f(*/) 259 372 y(MPI)p 334 372 15 2 v 17 w(Attr)p 447 372 V 17 w(get\()h(comm,)g(lib)p 798 372 V 17 w(key,)g(&private)p 1126 372 V 17 w(comm,)g(&flag)g(\);)259 428 y(if)h(\()p Fc(!)p Fe(flag\))f Fd(f)355 485 y Fe(/*)g(get)h(failed;)f(this)g(is)h (first)f(call)g(and)h(private)p 1433 485 V 16 w(comm)f(*/)355 541 y(/*)g(has)h(not)f(yet)h(been)f(allocated.)47 b(So,)23 b(do)h(it.)47 b(*/)355 598 y(/*)23 b(Make)h(new)f(communicator,)f(with) i(same)f(process)g(group)g(as)h(comm.)47 b(*/)307 654 y(private)p 478 654 V 16 w(comm)24 b(=)f(\(MPI)p 757 654 V 17 w(Comm)g(*\)malloc\(sizeof\(MPI)p 1349 654 V 15 w(Comm\)\);)307 711 y(MPI)p 382 711 V 17 w(Comm)p 495 711 V 17 w(Dup\()g(comm,)g(private)p 942 711 V 16 w(comm)h(\);)355 767 y(/*)f(Cache)h(private)f(communicator)f(with)h (public)g(one.)47 b(*/)307 824 y(MPI)p 382 824 V 17 w(Attr)p 495 824 V 17 w(put\()23 b(comm,)g(lib)p 846 824 V 17 w(key,)g(\(void)g(*\)private)p 1341 824 V 16 w(comm)h(\);)259 880 y Fd(g)355 936 y Fe(/*)f(Execute)g(library)g(code,)g(using)h (private)p 1266 936 V 16 w(comm)f(for)h(*/)355 993 y(/*)f(internal)g (communication.)46 b(*/)259 1049 y(...)212 1106 y Fd(g)949 2607 y Fp(18)p eop %%Page: 19 19 19 18 bop 212 430 a Fe(char)23 b(msg[20];)212 486 y(int)g(myrank,)g (tag)h(=)f(99;)212 543 y(MPI)p 287 543 15 2 v 16 w(Status)h(status;)212 599 y Fb(:)8 b(:)g(:)212 656 y Fe(MPI)p 287 656 V 16 w(Comm)p 399 656 V 17 w(rank\()23 b(MPI)p 631 656 V 17 w(COMM)p 744 656 V 17 w(WORLD,)g(&myrank)g(\);)g(/*)h(find)f(my)h(rank) f(*/)212 712 y(if)g(\(myrank)g(==)h(0\))f Fd(f)259 769 y Fe(strcpy\()g(msg,)h("Hello)f(there"\);)259 825 y(MPI)p 334 825 V 17 w(Send\()g(msg,)h(strlen\(msg\)+1,)e(MPI)p 1044 825 V 16 w(CHAR,)i(1,)f(tag,)h(MPI)p 1467 825 V 16 w(COMM)p 1579 825 V 17 w(WORLD\);)212 882 y Fd(g)f Fe(else)h Fd(f)259 938 y Fe(MPI)p 334 938 V 17 w(Recv\()f(msg,)h(20,)f (MPI)p 781 938 V 17 w(CHAR,)g(0,)h(tag,)f(MPI)p 1204 938 V 17 w(COMM)p 1317 938 V 16 w(WORLD,)g(&status)g(\);)212 994 y Fd(g)354 1096 y Fp(Figure)16 b(1:)21 b(C)c(co)q(de.)k(Pro)q(cess) c(0)g(sends)f(a)h(message)f(to)g(pro)q(cess)h(1.)212 1444 y Fe(double)23 b(a[100][100];)212 1501 y(int)g (disp[100],blocklen[100],i;)212 1557 y(MPI)p 287 1557 V 16 w(Datatype)g(upper;)212 1614 y Fb(:)8 b(:)g(:)212 1670 y Fe(/*)23 b(compute)g(start)g(and)h(size)f(of)h(each)f(row)h(*/) 212 1726 y(for)f(\(i=0;)g(i)p Fb(<)p Fe(100;)h(++i\))f Fd(f)259 1783 y Fe(disp[i])g(=)h(100)g(*)f(i)h(+)g(i;)259 1839 y(blocklen[i])f(=)h(100)f(-)h(i;)212 1896 y Fd(g)212 1952 y Fe(/*)f(create)g(datatype)g(for)h(upper)f(triangular)f(part)i (*/)212 2009 y(MPI)p 287 2009 V 16 w(Type)p 399 2009 V 17 w(indexed\()f(100,)g(blocklen,)g(disp,)g(MPI)p 1204 2009 V 17 w(DOUBLE,)g(&upper\);)212 2065 y(MPI)p 287 2065 V 16 w(Type)p 399 2065 V 17 w(commit\()g(&upper)g(\);)212 2122 y(/*)g(..)48 b(and)23 b(send)h(it)f(*/)212 2178 y(MPI)p 287 2178 V 16 w(Send\()h(a,)f(1,)h(upper,)f(dest,)g(tag,)g(MPI) p 1091 2178 V 17 w(COMM)p 1204 2178 V 17 w(WORLD)g(\);)164 2280 y Fp(Figure)11 b(2:)20 b(A)12 b(single)f(send)h(transmits)f(the)h (upp)q(er-triangular)h(part)f(of)g(a)h(matrix,)e(using)164 2340 y(a)17 b(user-de\014ned)f(datat)o(yp)q(e.)949 2607 y(19)p eop %%Page: 20 20 20 19 bop 164 2666 a @beginspecial @setspecial %%BeginDocument: coll-fig1.ps % Cookbook Example Program from First Printing, Revised 7 Jan 1985 % Program: Drawing Arrows Number: 8 %----------------------------------------------------------------------------- % /arrowdict 13 dict def % Local storage for the procedure % ``arrow.'' /arrow % The procedure ``arrow'' adds an { arrowdict begin % arrow shape to the current path. /headlength exch def % It takes seven arguments: the x /halfheadthickness exch 2 div def % and y coordinates of the tail /halfthickness exch 2 div def % (imagine that a line has been /tipy exch def /tipx exch def % drawn down the center of the /taily exch def /tailx exch def % arrow from the tip to the tail, % then x and y lie on this line), % the x and y coordinates of the % tip of the arrow, the thickness % of the arrow in the tail % portion, the thickness of the % arrow at the widest part of the % arrowhead and the length of the % arrowhead. /dx tipx tailx sub def % Compute the differences in x and /dy tipy taily sub def % y for the tip and tail. These /arrowlength dx dx mul dy dy mul add % will be used to compute the sqrt def % length of the arrow and to /angle dy dx atan def % compute the angle of direction % that the arrow is facing with % respect to the current user % coordinate system origin. /base arrowlength headlength sub def % Compute where the base of the % arrowhead will be. /savematrix matrix currentmatrix def % Save the current user coordinate % system. We are using the same % strategy to localize the effect % of transformations as was used % in the program to draw an % ellipse. tailx taily translate % Translate to the starting point % of the tail. angle rotate % Rotate the x-axis to correspond % with the center line of the % arrow. 0 halfthickness neg moveto % Add the arrow shape to the % current path. base halfthickness neg lineto base halfheadthickness neg lineto arrowlength 0 lineto base halfheadthickness lineto base halfthickness lineto 0 halfthickness lineto closepath savematrix setmatrix % Restore the current user % coordinate system. end } def /Box { /height exch def /length exch def length 0 rlineto 0 height rlineto length neg 0 rlineto closepath } def /Gdict 200 dict def /Grid { Gdict begin /ny exch def /nx exch def /dely exch def /delx exch def /leny { ny dely mul} def /lenx { nx delx mul} def currentpoint /ypos exch def /xpos exch def /y ypos def /x xpos def 0 1 ny { pop x y moveto lenx 0 rlineto stroke /y y dely add def} for /y ypos def /x xpos def 0 1 nx { pop x y moveto 0 leny rlineto stroke /x x delx add def} for end } def /GLdict 300 dict def /GridLabels { GLdict begin /shift exch def /raise exch def /yoff exch def /xoff exch def /p1 exch def /p2 exch def /ny exch def /nx exch def /dely exch def /delx exch def /Darray exch def /leny { ny dely mul} def /lenx { nx delx mul} def currentpoint /ypos exch def /xpos exch def /y ypos def /x xpos def /dx3 delx 3 div def /dy3 dely 3 div def /ix -1 def /iy ny 1 sub def Darray{ aload pop /Subc exch def /Text exch def /ix ix 1 add def ix nx ge { /ix 0 def /iy iy 1 sub def} if /x xpos delx ix 0.5 add mul add /Helvetica findfont p1 scalefont setfont Text stringwidth pop /Helvetica findfont p2 scalefont setfont Subc stringwidth pop add xoff add 2 div sub shift add def /y ypos dely iy 0.5 add mul add raise add def x y moveto /Helvetica findfont p1 scalefont Text show xoff yoff rmoveto /Helvetica findfont p2 scalefont Subc show } forall end clear } def 2 setlinecap 6.5 72 mul 320 sub 2 div 0 translate 0 300 moveto 20 20 6 6 Grid 0 300 moveto [ [(A)(0)] [(A)(1)] [(A)(2)] [(A)(3)] [(A)(4)] [(A)(5)] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] ] 20 20 6 6 9 12 1 -5 -2 2 GridLabels 140 380 200 380 12 24 18 arrow stroke 200 330 140 330 12 24 18 arrow stroke /Helvetica findfont 12 scalefont setfont (scatter) dup stringwidth pop 170 exch 2 div sub 400 moveto show (gather) dup stringwidth pop 170 exch 2 div sub 350 moveto show 220 300 moveto 20 20 6 6 Grid 220 300 moveto [ [(A)(0)] [()()] [()()] [()()] [()()] [()()] [(A)(1)] [()()] [()()] [()()] [()()] [()()] [(A)(2)] [()()] [()()] [()()] [()()] [()()] [(A)(3)] [()()] [()()] [()()] [()()] [()()] [(A)(4)] [()()] [()()] [()()] [()()] [()()] [(A)(5)] [()()] [()()] [()()] [()()] [()()] ] 20 20 6 6 9 12 1 -5 -2 2 GridLabels 0 0 moveto 20 20 6 6 Grid 0 0 moveto [ [(A)(0)] [(A)(1)] [(A)(2)] [(A)(3)] [(A)(4)] [(A)(5)] [(B)(0)] [(B)(1)] [(B)(2)] [(B)(3)] [(B)(4)] [(B)(5)] [(C)(0)] [(C)(1)] [(C)(2)] [(C)(3)] [(C)(4)] [(C)(5)] [(D)(0)] [(D)(1)] [(D)(2)] [(D)(3)] [(D)(4)] [(D)(5)] [(E)(0)] [(E)(1)] [(E)(2)] [(E)(3)] [(E)(4)] [(E)(5)] [(F)(0)] [(F)(1)] [(F)(2)] [(F)(3)] [(F)(4)] [(F)(5)] ] 20 20 6 6 9 12 1 -5 -2 2 GridLabels 220 0 moveto 20 20 6 6 Grid 220 0 moveto [ [(A)(0)] [(B)(0)] [(C)(0)] [(D)(0)] [(E)(0)] [(F)(0)] [(A)(1)] [(B)(1)] [(C)(1)] [(D)(1)] [(E)(1)] [(F)(1)] [(A)(2)] [(B)(2)] [(C)(2)] [(D)(2)] [(E)(2)] [(F)(2)] [(A)(3)] [(B)(3)] [(C)(3)] [(D)(3)] [(E)(3)] [(F)(3)] [(A)(4)] [(B)(4)] [(C)(4)] [(D)(4)] [(E)(4)] [(F)(4)] [(A)(5)] [(B)(5)] [(C)(5)] [(D)(5)] [(E)(5)] [(F)(5)] ] 20 20 6 6 9 12 1 -5 -2 2 GridLabels 140 60 200 60 12 24 18 arrow stroke /Helvetica findfont 12 scalefont setfont (alltoall) dup stringwidth pop 170 exch 2 div sub 77 moveto show 0 150 moveto 20 20 6 6 Grid 0 150 moveto [ [(A)(0)] [()()] [()()] [()()] [()()] [()()] [(B)(0)] [()()] [()()] [()()] [()()] [()()] [(C)(0)] [()()] [()()] [()()] [()()] [()()] [(D)(0)] [()()] [()()] [()()] [()()] [()()] [(E)(0)] [()()] [()()] [()()] [()()] [()()] [(F)(0)] [()()] [()()] [()()] [()()] [()()] ] 20 20 6 6 9 12 1 -5 -2 2 GridLabels 140 200 200 200 12 24 18 arrow stroke /Helvetica findfont 12 scalefont setfont (allgather) dup stringwidth pop 170 exch 2 div sub 220 moveto show 220 150 moveto 20 20 6 6 Grid 220 150 moveto [ [(A)(0)] [(B)(0)] [(C)(0)] [(D)(0)] [(E)(0)] [(F)(0)] [(A)(0)] [(B)(0)] [(C)(0)] [(D)(0)] [(E)(0)] [(F)(0)] [(A)(0)] [(B)(0)] [(C)(0)] [(D)(0)] [(E)(0)] [(F)(0)] [(A)(0)] [(B)(0)] [(C)(0)] [(D)(0)] [(E)(0)] [(F)(0)] [(A)(0)] [(B)(0)] [(C)(0)] [(D)(0)] [(E)(0)] [(F)(0)] [(A)(0)] [(B)(0)] [(C)(0)] [(D)(0)] [(E)(0)] [(F)(0)] ] 20 20 6 6 9 12 1 -5 -2 2 GridLabels 0 450 moveto 20 20 6 6 Grid 0 450 moveto [ [(A)(0)] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] [()()] ] 20 20 6 6 9 12 1 -5 -2 2 GridLabels 140 510 200 510 12 24 18 arrow stroke /Helvetica findfont 12 scalefont setfont 0 575 moveto (data) show (data) stringwidth pop 4 add 575 4 add (data) stringwidth pop 33 add 575 4 add 1 4 5 arrow fill (broadcast) dup stringwidth pop 170 exch 2 div sub 527 moveto show gsave 0 570 (processes) stringwidth pop sub translate 90 rotate 0 5 moveto (processes) show -4 8 -33 8 1 4 5 arrow fill grestore 220 450 moveto 20 20 6 6 Grid 220 450 moveto [ [(A)(0)] [()()] [()()] [()()] [()()] [()()] [(A)(0)] [()()] [()()] [()()] [()()] [()()] [(A)(0)] [()()] [()()] [()()] [()()] [()()] [(A)(0)] [()()] [()()] [()()] [()()] [()()] [(A)(0)] [()()] [()()] [()()] [()()] [()()] [(A)(0)] [()()] [()()] [()()] [()()] [()()] ] 20 20 6 6 9 12 1 -5 -2 2 GridLabels showpage %%EndDocument @endspecial 101 x Fp(Figure)17 b(3:)25 b(Collectiv)o(e)16 b(mo)o(v)o(e)f(functions)j(illustrated)f(for)h(a)g(group)h(of)f(six)g (pro)q(cesses.)164 2828 y(In)k(eac)o(h)h(case,)g(eac)o(h)g(ro)o(w)g(of) g(b)q(o)o(xes)g(represen)o(ts)f(data)h(lo)q(cations)g(in)g(one)g(pro)q (cess.)164 2888 y(Th)o(us,)18 b(in)f(the)h(broadcast,)g(initially)e (just)i(the)f(\014rst)h(pro)q(cess)g(con)o(tains)g(the)g(data)g Fa(A)1750 2895 y Fh(0)1769 2888 y Fp(,)164 2948 y(but)e(after)h(the)f (broadcast)h(all)f(pro)q(cesses)h(con)o(tain)f(it.)949 2607 y(20)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF .