%!PS-Adobe-2.0 %%Creator: dvips 5.528 Copyright 1986, 1994 Radical Eye Software %%Title: note.dvi %%CreationDate: Wed Mar 6 11:10:39 1996 %%Pages: 8 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips note %DVIPSParameters: dpi=300, comments removed %DVIPSSource: TeX output 1996.03.06:1110 %%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 (/tmp_mnt/Net/alriga/alriga9/MPI/notes/adi2impl/note.dvi) @start /Fa 3 30 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC 1FF80FF003C010107E9115>15 D<07C000201FE000203FF80020783C0060E01F00E0C007 83C08003FF808000FF0080007C000000000007C000201FE000203FF80020783C0060E01F 00E0C00783C08003FF808000FF0080007C001B137E9320>25 D29 D E /Fb 30 123 df<387CFEFEFE7C3807077C8610>46 D<00180000780001F800FFF800 FFF80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 01F80001F8007FFFE07FFFE013207C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE 03F0FE03F8FE03F8FE01F87C01F83803F80003F80003F00003F00007E00007C0000F8000 1F00003E0000380000700000E01801C0180380180700180E00380FFFF01FFFF03FFFF07F FFF0FFFFF0FFFFF015207D9F1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F8 3F81F81F03F81F03F00003F00003E00007C0001F8001FE0001FF000007C00001F00001F8 0000FC0000FC3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC0 01FE0017207E9F1C>I<0000E00001E00003E00003E00007E0000FE0001FE0001FE00037 E00077E000E7E001C7E00187E00307E00707E00E07E00C07E01807E03807E07007E0E007 E0FFFFFEFFFFFE0007E00007E00007E00007E00007E00007E00007E000FFFE00FFFE1720 7E9F1C>I<1000201E01E01FFFC01FFF801FFF001FFE001FF8001BC00018000018000018 000018000019FC001FFF001E0FC01807E01803E00003F00003F00003F80003F83803F87C 03F8FE03F8FE03F8FC03F0FC03F07007E03007C01C1F800FFF0003F80015207D9F1C>I< 001F8000FFE003F07007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800 FC7FC0FCFFE0FD80F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E 7C007E3C007C3E007C1E00F80F00F00783E003FFC000FF0017207E9F1C>I70 D82 D<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC000CFC0000FF00 00FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F00003F0000 3FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA11F >I<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01F C1F03F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E95 1B>97 D<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC00 00FC0000FC0000FC00007C00007E00007E00003E00301F00600FC0E007FF8000FE001416 7E9519>99 D<0001FE000001FE0000003E0000003E0000003E0000003E0000003E000000 3E0000003E0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F00 7E003E003E007E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC00 3E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83BE0007FF3FC001FC 3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8 FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003FFC0 00FF0015167E951A>I<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03 E07C03E03C03C03E07C01F0F801FFF0013FC003000003000003800003FFF801FFFF00FFF F81FFFFC3800FC70003EF0001EF0001EF0001EF0001E78003C7C007C3F01F80FFFE001FF 0018217E951C>103 DI<1C003E007F007F007F003E001C00000000000000000000 0000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F001F001F001F00FFE0FFE00B247EA310>I108 DII<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007E FC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC0 00FE0017167E951C>I I<00FE030007FF87000FC1C7001F006F003F003F007E003F007E001F007C001F00FC001F 00FC001F00FC001F00FC001F00FC001F00FC001F00FC001F007E001F007E001F003E003F 001F007F000FC1DF0007FF9F0001FC1F0000001F0000001F0000001F0000001F0000001F 0000001F0000001F0000001F000000FFE00000FFE01B207E951E>II<0FF3003FFF0078 1F00600700E00300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C0 0780C00380E00380E00380F00700FC0E00EFFC00C7F00011167E9516>I<018000018000 0180000180000380000380000780000780000F80003F8000FFFF00FFFF000F80000F8000 0F80000F80000F80000F80000F80000F80000F80000F80000F80000F81800F81800F8180 0F81800F81800F830007C30003FE0000F80011207F9F16>III121 D<7FFFF07FFFF07C03E07007C0600FC0E01F80C01F00C03E00C07E0000FC0000F80001F0 0003F03007E03007C0300F80701F80703F00603E00E07C03E0FFFFE0FFFFE014167E9519 >I E /Fc 16 118 df<60F0F06004047D830A>46 D<0FC4302C601C400CC004C004C004 E00070007F003FE00FF801FC001C000E0006800680068006C004E008D81087E00F177E96 14>83 D<1FC0386038301038003803F81E3830387038E039E039E07970FF1F1E100E7F8D 12>97 D<07F01838303870106000E000E000E000E000600070083008183007C00D0E7F8D 10>99 D<0FC0186030307038E018FFF8E000E000E000600070083010183007C00D0E7F8D 10>101 D104 D<183C3C1800000000007C1C1C1C1C1C1C1C1C1C1C1C1CFF0817 80960A>I108 DII<07C018303018600C 600CE00EE00EE00EE00EE00E701C3018183007C00F0E7F8D12>II114 D<1F4060C0C040C040E000FF007F 801FC001E080608060C060E0C09F000B0E7F8D0E>I<080008000800180018003800FF80 380038003800380038003800380038403840384038401C800F000A147F930E>II E /Fd 1 50 df<0C003C00CC000C000C000C000C000C000C000C 000C000C000C000C000C00FF8009107E8F0F>49 D E /Fe 9 116 df<60F0F06004047C830C>58 D<00010003000600060006000C000C000C001800180018 0030003000300060006000C000C000C0018001800180030003000300060006000C000C00 0C00180018001800300030003000600060006000C000C00010297E9E15>61 D<01F0030C0E0C1C1E383C301870007000E000E000E000E000E000E0046008601030601F 800F127E9112>99 D<0007E00000E00000E00001C00001C00001C00001C0000380000380 00038000038001E7000717000C0F00180F00380E00300E00700E00700E00E01C00E01C00 E01C00E01C00E03880E03880E038806078803199001E0E00131D7E9C16>I<0001E00006 30000E78000CF0001C60001C00001C00001C00003C0000380000380003FFC00038000038 0000700000700000700000700000700000E00000E00000E00000E00000E00001C00001C0 0001C00001C00001C000018000038000038000630000F30000F60000E400007800001525 7E9C14>102 D<0FC00001C00001C0000380000380000380000380000700000700000700 000700000E3E000EC3000F03800E03801E03801C03801C03801C03803807003807003807 00380E00700E20700E20701C20701C40E00C80600700131D7E9C18>104 D<381F004E61804681C04701C08F01C08E01C00E01C00E01C01C03801C03801C03801C07 00380710380710380E10380E2070064030038014127E9119>110 D<383C4E424687470F8E1E8E0C0E000E001C001C001C001C003800380038003800700030 0010127E9113>114 D<01F0060C04040C0E180C1C001F000FE00FF003F80038201C7018 F018F010803060601F800F127E9113>I E /Ff 61 126 df<03800007E0000FE0001E70 001C70001C70001C70001C77E01CE7E01DE7E00FC7000F8E000F0E001E0E003F1C007F1C 00739C00E3F800E1F800E0F1C0E0F1C071F9C07FFFC03F9F801E070013197F9816>38 D<00E001E0038007000E001C001C0038003800700070007000E000E000E000E000E000E0 00E000E000E000700070007000380038001C001C000E000700038001E000E00B217A9C16 >40 DI<01C00001C00001C00001C00071C700F9CF807FFF001FFC0007F00007F0001FFC 007FFF00F9CF8071C70001C00001C00001C00001C00011127E9516>I<387C7E7E3E0E1E 1C78F060070B798416>44 DI<70F8F8F870050578 8416>I<000180000380000380000700000700000E00000E00001C00001C000038000038 0000700000700000E00000E00001C00001C0000380000380000700000700000E00000E00 001C00001C0000380000380000700000700000E00000E00000C0000011207E9C16>I<03 E0000FF8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E00380E0 0380E00380E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF80003 E00011197E9816>I<01800380038007800F807F80FF8073800380038003800380038003 80038003800380038003800380038003807FF87FFC7FF80E197C9816>I<70F8F8F87000 0000000000000070F8F8F8700512789116>58 D<387C7C7C38000000000000000038787C 7C3C1C1C3870E0400618799116>I<000180000780001F80003E0000F80001F00007C000 0F80003E0000FC0000F00000FC00003E00000F800007C00001F00000F800003E00001F80 00078000018011157E9616>I<7FFF00FFFF80FFFF800000000000000000000000000000 00FFFF80FFFF807FFF00110B7E9116>II<0FE03FF87FFCF01EF00EF00E601E003C007800F001 C0038003800380038003800300000000000000000003000780078003000F197D9816>I< 00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00071C00 071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007F1FC0FF1FE0 7F1FC013197F9816>65 D<01F18007FB800FFF801F0F803C0780380380700380700380F0 0000E00000E00000E00000E00000E00000E00000E00000F000007003807003803803803C 07001F0F000FFE0007FC0001F00011197E9816>67 D<7FF800FFFE007FFF001C0F001C07 801C03C01C01C01C01C01C01E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00 E01C01C01C01C01C03C01C07801C0F807FFF00FFFE007FF8001319809816>I<7FFFC0FF FFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C001C1C001FFC001FFC001F FC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E07FFFE0FFFFE07FFFE013 197F9816>I<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C07001C07001C0700 1FFF001FFF001FFF001C07001C07001C07001C07001C07001C07001C07001C07001C0700 7F1FC0FFBFE07F1FC013197F9816>72 DI76 DI<7E1FC0FF3FE07F1FC01D07001D 87001D87001D87001DC7001DC7001CC7001CC7001CE7001CE7001CE7001C67001C67001C 77001C77001C37001C37001C37001C17007F1F00FF9F007F0F0013197F9816>I<1FFC00 3FFE007FFF00780F00F00780E00380E00380E00380E00380E00380E00380E00380E00380 E00380E00380E00380E00380E00380E00380F00780F00780780F007FFF003FFE001FFC00 11197E9816>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03 C01C03801C0F801FFF001FFE001FF8001C00001C00001C00001C00001C00001C00001C00 007F0000FF80007F000012197F9816>I<7FE000FFF8007FFC001C1E001C0F001C07001C 07001C07001C07001C0F001C1E001FFC001FF8001FFC001C1C001C0E001C0E001C0E001C 0E001C0E201C0E701C0E707F07E0FF87E07F03C014197F9816>82 D<07E3001FFF003FFF00781F00F00700E00700E00700E00000F000007800003F80001FF0 0007FC0000FE00000F00000700000380000380600380E00380E00700F80F00FFFE00FFFC 00C7F00011197E9816>I87 D89 D91 D93 D95 D<1FE0003FF0007FF800783C00300E00000E00 000E0003FE001FFE003E0E00700E00E00E00E00E00E00E00783E007FFFE03FE7E00F83E0 13127E9116>97 D<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF000F FF800F83C00F00E00E00E00E00700E00700E00700E00700E00700E00700E00E00F01E00F 83C00FFF800EFF00063C001419809816>I<03F80FFC1FFE3C1E780C7000E000E000E000 E000E000F000700778073E0E1FFC0FF803F010127D9116>I<003F00007F00003F000007 0000070000070000070003C7000FF7001FFF003C1F00780F00700700E00700E00700E007 00E00700E00700E00700700F00700F003C1F001FFFE00FE7F007C7E014197F9816>I<03 E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03F010 127D9116>I<001F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF00 01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 3FFE007FFF003FFE0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E00380E00380E 00380E00380E001C1C000FF8001FF0001BE0003800001800001FFC001FFF003FFF807803 C0E000E0E000E0E000E0E000E07001C07C07C03FFF800FFE0003F800131C7F9116>I<7E 0000FE00007E00000E00000E00000E00000E00000E3C000EFE000FFF000F87800F03800E 03800E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87F C7F01519809816>I<018003C003C0018000000000000000007FC07FC07FC001C001C001 C001C001C001C001C001C001C001C001C001C07FFFFFFF7FFF101A7D9916>I<7E0000FE 00007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E 78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCFF07F87F014 19809816>107 DII<7E3C00FEFE007FFF000F87800F03800E03800E03800E03800E03800E03 800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E0000F F8001FFC003C1E00780F00700700E00380E00380E00380E00380E00380F0078070070078 0F003C1E001FFC000FF80003E00011127E9116>I<7E3E00FEFF007FFF800F83C00F00E0 0E00E00E00700E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF00 0E3C000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000141B809116> I<07C7000FE7001FF7003C1F00700F00700F00E00700E00700E00700E00700E00700E007 00700F00700F003C3F003FF7001FE70007C7000007000007000007000007000007000007 00003FE0007FF0003FE0141B7E9116>II<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00EF00EF81E FFFCFFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF 000700000700000700000700000700000700000700000701000703800703800703800787 0003FE0001FC0000F80011177F9616>I<7E1F80FE3F807E1F800E03800E03800E03800E 03800E03800E03800E03800E03800E03800E03800E03800E0F800FFFF007FBF803E3F015 12809116>I<7F1FC0FF1FE07F1FC01C07001E0F000E0E000E0E000E0E00071C00071C00 071C00071C0003B80003B80003B80001F00001F00000E00013127F9116>II<7F1FC07F3FC07F1FC00F1C00073C0003 B80003F00001F00000E00001E00001F00003B800073C00071C000E0E007F1FC0FF3FE07F 1FC013127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C00 071C00039C00039C0003980001B80001B80000F00000F00000F00000E00000E00000E000 01C00079C0007BC0007F80003F00003C0000131B7F9116>I<3FFFC07FFFC07FFFC07007 80700F00701E00003C0000780001F00003E0000780000F00001E01C03C01C07801C0FFFF C0FFFFC0FFFFC012127F9116>I<001F80007F8000FF8001E00001C00001C00001C00001 C00001C00001C00001C00001C00001C00003C0007F8000FF0000FF00007F800003C00001 C00001C00001C00001C00001C00001C00001C00001C00001C00001E00000FF80007F8000 1F8011207E9C16>I<7C0000FF0000FF800003C00001C00001C00001C00001C00001C000 01C00001C00001C00001C00001E00000FF00007F80007F8000FF0001E00001C00001C000 01C00001C00001C00001C00001C00001C00001C00003C000FF8000FF00007C000011207E 9C16>125 D E /Fg 27 123 df<0FF0303C601EF01FF81FF81F701F003E003C007000E0 01C00180018003000300030003000300000000000000000007800FC00FC00FC00FC00780 101D7D9C17>63 D68 DI<000FF00800 7FFE3801FC07F807E001F80F8000781F0000783F0000383E0000387E0000187C000018FC 000000FC000000FC000000FC000000FC000000FC000000FC007FFFFC007FFF7C0001F87E 0001F83E0001F83F0001F81F0001F80F8001F807E001F801FC07F8007FFE78000FF81820 1C7D9B26>71 D73 D77 D80 D82 D<07F8201FFEE03C07E07801E07000E0 F000E0F00060F00060F80000FE0000FFE0007FFE003FFF003FFF800FFFC007FFE0007FE0 0003F00001F00000F0C000F0C000F0C000E0E000E0F001C0FC03C0EFFF0083FC00141C7D 9B1B>I<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07 C07C07C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 D<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000F800 007800007801803C01801C03000E0E0003F80011127E9115>99 D<000FF0000FF00001F0 0001F00001F00001F00001F00001F00001F00001F00001F001F9F00F07F01C03F03C01F0 7801F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801F07801F03C01F01C03F0 0F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C01C07801C07801E0F801E0F801 E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F038001FC0013127F9116 >I<03F8F00E0F381E0F381C07303C07803C07803C07803C07801C07001E0F000E0E001B F8001000001800001800001FFF001FFFC00FFFE01FFFF07801F8F00078F00078F0007870 00707800F01E03C007FF00151B7F9118>103 DI<1E003F003F003F003F001E00000000000000000000000000FF00FF001F00 1F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E> I110 D<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800 F87800F07800F03C01E01E03C00F078001FC0015127F9118>II<03F0600F0CE01E07E03C03E07C03E07803E0F803E0F803E0F803E0F803E0F803E0 F803E07803E07C03E03C03E01C07E00E0FE003F3E00003E00003E00003E00003E00003E0 0003E0001FFC001FFC161A7E9119>II<1FD830786018E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CE0 18F830CFC00E127E9113>I<0300030003000300070007000F000F003FFCFFFC1F001F00 1F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F08079803F00E1A7F9913>III120 D<3FFF803C1F00303F00303E00607C0060FC0060F80001F00003F00007E00007C1 800F81801F81801F03803E03007E07007C0F00FFFF0011127F9115>122 D E /Fh 1 50 df<0C001C00EC000C000C000C000C000C000C000C000C000C000C000C00 0C000C000C000C00FFC00A137D9211>49 D E /Fi 22 121 df<03CC063C0C3C181C3838 303870387038E070E070E070E070E0E2C0E2C0E261E462643C380F127B9115>97 D<3F00070007000E000E000E000E001C001C001C001C0039C03E60383038307038703870 387038E070E070E070E060E0E0C0C0C1C0618063003C000D1D7B9C13>I<01F007080C08 181C3838300070007000E000E000E000E000E000E008E010602030C01F000E127B9113> I<001F80000380000380000700000700000700000700000E00000E00000E00000E0003DC 00063C000C3C00181C00383800303800703800703800E07000E07000E07000E07000E0E2 00C0E200C0E20061E4006264003C3800111D7B9C15>I<01E007100C1018083810701070 607F80E000E000E000E000E000E0086010602030C01F000D127B9113>I<0003C0000670 000C70001C60001C00001C0000380000380000380000380000380003FF80007000007000 00700000700000700000E00000E00000E00000E00000E00001C00001C00001C00001C000 01C000038000038000038000030000030000070000C60000E60000CC0000780000142581 9C0D>I<00F3018F030F06070E0E0C0E1C0E1C0E381C381C381C381C3838303830381878 18F00F700070007000E000E0C0C0E1C0C3007E00101A7D9113>I<0FC00001C00001C000 0380000380000380000380000700000700000700000700000E78000E8C000F0E000E0E00 1C0E001C0E001C0E001C0E00381C00381C00381C00383800703880703880707080707100 E03200601C00111D7D9C15>I<01800380010000000000000000000000000000001C0026 00470047008E008E000E001C001C001C0038003800710071007100720072003C00091C7C 9B0D>I<0FC00001C00001C0000380000380000380000380000700000700000700000700 000E0F000E11000E23800E43801C83001C80001D00001E00003F800039C00038E00038E0 0070E20070E20070E20070E400E06400603800111D7D9C13>107 D<1F800380038007000700070007000E000E000E000E001C001C001C001C003800380038 0038007000700070007000E400E400E400E40068003800091D7C9C0B>I<3C1E07802663 18C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C0701C01C07 01C01C070380380E0388380E0388380E0708380E0710701C0320300C01C01D127C9122> I<3C3C002646004687004707008E07008E07000E07000E07001C0E001C0E001C0E001C1C 00381C40381C40383840383880701900300E0012127C9117>I<01E007180C0C180C380C 300E700E700EE01CE01CE01CE018E038E030E06060C031801E000F127B9115>I<078700 04D98008E0C008E0C011C0E011C0E001C0E001C0E00381C00381C00381C0038180070380 0703000707000706000E8C000E70000E00000E00001C00001C00001C00001C00003C0000 FF8000131A7F9115>I<3C3C26C2468747078E068E000E000E001C001C001C001C003800 3800380038007000300010127C9112>114 D<01F006080C080C1C18181C001F001FC00F F007F0007800386030E030C030806060C01F000E127D9111>I<00C001C001C001C00380 038003800380FFE00700070007000E000E000E000E001C001C001C001C00384038403840 388019000E000B1A7D990E>I<1E0300270700470700470700870E00870E000E0E000E0E 001C1C001C1C001C1C001C1C003838803838801838801839001C5900078E0011127C9116 >I<1E06270E470E4706870287020E020E021C041C041C041C0818083808181018200C40 07800F127C9113>I<1E01832703874703874703838707018707010E07010E07011C0E02 1C0E021C0E021C0E04180C04181C04181C081C1C100C263007C3C018127C911C>I<070E 0019910010E38020E38041C30041C00001C00001C0000380000380000380000380000702 00670200E70400CB04008B080070F00011127D9113>I E /Fj 12 119 df<03CC0E2E181C381C301C701CE038E038E038E038C072C072C07260F261341E18 0F107C8F14>97 D<7E000E000E000E001C001C001C001C00380038003BC03C3078307018 70187018E038E038E038E038C070C060C0E060C063801E000D1A7C9912>I<01F006080C 181838301070006000E000E000E000E000E008E010602030C01F000D107C8F12>I<001F 80000380000380000380000700000700000700000700000E00000E0003CE000E2E00181C 00381C00301C00701C00E03800E03800E03800E03800C07200C07200C0720060F2006134 001E1800111A7C9914>I<01E006181C08380870087010FFE0E000E000E000E000E00860 10602030C01F000D107C8F12>I<000700001980001B80003B0000300000300000700000 700000700000700007FF0000E00000E00000E00000E00000E00001C00001C00001C00001 C00001C000038000038000038000038000038000070000070000070000660000E40000CC 0000700000112181990C>I<030706000000000000384C4E8E9C9C1C3838707272E2E464 3808197C980C>105 D<307C005986009E07009E07009C07009C0700380E00380E00380E 00381C00701C80701C80703880703900E01900600E0011107C8F16>110 D<30F059189E389C189C009C0038003800380038007000700070007000E00060000D107C 8F10>114 D<03E004300830187018601C001F801FC00FE000E00060E060E06080C04180 3E000C107D8F10>I<06000E000E000E000E001C001C00FFC01C00380038003800380070 00700070007000E100E100E100E200640038000A177C960D>I<38184C1C4E1C8E0C9C0C 9C0C1C08380838083808701070107020304018C00F000E107C8F12>118 D E /Fk 37 122 df<00FF000387000707000607000E07000E07000E07000E07000E0700 0E0700FFFF000E07000E07000E07000E07000E07000E07000E07000E07000E07000E0700 0E07000E07000E07000E07007F9FE0131A809915>13 D<007E1F8001C170400703C06006 0380E00E0380400E0380000E0380000E0380000E0380000E038000FFFFFFE00E0380E00E 0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E 0380E00E0380E00E0380E00E0380E07F8FE3FC1E1A809920>I<00800100020004000C00 080018003000300030006000600060006000E000E000E000E000E000E000E000E000E000 E0006000600060006000300030003000180008000C00040002000100008009267D9B0F> 40 D<8000400020001000180008000C0006000600060003000300030003000380038003 80038003800380038003800380038003000300030003000600060006000C000800180010 0020004000800009267E9B0F>I<60F0F07010101020204080040B7D830B>44 D<60F0F06004047D830B>46 D<0004000C00180018001800300030003000600060006000 C000C000C00180018001800300030003000600060006000C000C000C0018001800180030 0030003000600060006000C000C0000E257E9B13>I<003F0201C0C603002E0E001E1C00 0E1C0006380006780002700002700002F00000F00000F00000F00000F00000F000007000 027000027800023800041C00041C00080E000803003001C0C0003F00171A7E991C>67 D72 DI77 D80 D<7FFFFF00701C0700401C0100401C0100 C01C0180801C0080801C0080801C0080001C0000001C0000001C0000001C0000001C0000 001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000 001C0000001C0000001C000003FFE000191A7F991C>84 D<3F8070C070E0207000700070 07F01C7030707070E070E071E071E0F171FB1E3C10107E8F13>97 DI<07F80C1C381C30087000E000E000E000E000E000E000 7000300438080C1807E00E107F8F11>I<007E00000E00000E00000E00000E00000E0000 0E00000E00000E00000E0003CE000C3E00380E00300E00700E00E00E00E00E00E00E00E0 0E00E00E00E00E00600E00700E00381E001C2E0007CFC0121A7F9915>I<07C01C303018 7018600CE00CFFFCE000E000E000E0006000300438080C1807E00E107F8F11>I<01F003 1807380E100E000E000E000E000E000E00FFC00E000E000E000E000E000E000E000E000E 000E000E000E000E000E007FE00D1A80990C>I<0FCE1873303070387038703870383030 18602FC02000600070003FF03FFC1FFE600FC003C003C003C0036006381C07E010187F8F 13>II<18003C003C001800000000000000000000000000 FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091A8099 0A>I<018003C003C001800000000000000000000000000FC001C001C001C001C001C001 C001C001C001C001C001C001C001C001C001C001C001C001C041C0E180E3007E000A2182 990C>IIIII<07E01C38300C700E6006E007E007 E007E007E007E0076006700E381C1C3807E010107F8F13>II114 D<1F2060E04020C020C020F0007F003FC01FE000F080708030C030C020F0408F800C107F 8F0F>I<0400040004000C000C001C003C00FFC01C001C001C001C001C001C001C001C00 1C201C201C201C201C200E4003800B177F960F>IIIIII E /Fl 7 117 df<00030000000780000007800000078000000FC000 000FC000001BE000001BE000001BE0000031F0000031F0000060F8000060F80000E0FC00 00C07C0000C07C0001803E0001FFFE0003FFFF0003001F0003001F0006000F8006000F80 0E000FC0FFC07FFCFFC07FFC1E1A7F9921>65 D<0FF0001C3C003E1E003E0E003E0F001C 0F00000F0000FF000FCF003E0F007C0F00F80F00F80F00F80F00F817007C27E01FC3E013 117F9015>97 DI<03FC000F0E001C1F003C1F00781F0078 0E00F80000F80000F80000F80000F800007800007800003C01801C03000F060003FC0011 117F9014>I114 D<1FB020704030C030C030F000FF807FE03FF807F8003CC0 0CC00CE00CE008F830CFE00E117F9011>I<06000600060006000E000E001E003FF0FFF0 1E001E001E001E001E001E001E001E001E181E181E181E181E180F3003E00D187F9711> I E /Fm 17 120 df69 D<0007F008003C0C1800E0021801C001B8038000F8070000780F0000 381E0000381E0000183C0000183C0000187C0000087800000878000008F8000000F80000 00F8000000F8000000F8000000F8000000F8000000F8001FFF780000F8780000787C0000 783C0000783C0000781E0000781E0000780F00007807000078038000B801C000B800E003 18003C0C080007F00020247DA226>71 D76 D87 D<0FE0001838003C0C003C0E001807000007 0000070000070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F 087817083C23900FC1E015157E9418>97 D<00007001F198071E180E0E181C07001C0700 3C07803C07803C07803C07801C07001C07000E0E000F1C0019F000100000100000180000 1800001FFE000FFFC00FFFE03800F0600030400018C00018C00018C00018600030600030 3800E00E038003FE0015217F9518>103 D<1C001E003E001E001C000000000000000000 00000000000000000E00FE001E000E000E000E000E000E000E000E000E000E000E000E00 0E000E000E000E000E000E00FFC00A227FA10E>105 D<0E0000FE00001E00000E00000E 00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E03FC0E01F00E 01C00E01800E02000E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E 07800E03C00E01C00E01E00E00F00E00F8FFE3FE17237FA21A>107 D<0E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B 237FA20E>I<0E1FC07F00FE60E183801E807201C00F003C00E00F003C00E00E003800E0 0E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E 003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0FFE3 FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E00 700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7 FF18157F941B>I<01FC000707000C01801800C03800E0700070700070F00078F00078F0 0078F00078F00078F00078F000787000707800F03800E01C01C00E038007070001FC0015 157F9418>I<0E1F00FE61C00E80600F00700E00380E003C0E001C0E001E0E001E0E001E 0E001E0E001E0E001E0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F000E0000 0E00000E00000E00000E00000E00000E00000E00000E0000FFE000171F7F941B>I<0E3C FE461E8F0F0F0F060F000E000E000E000E000E000E000E000E000E000E000E000E000E00 0F00FFF010157F9413>114 D<0F8830786018C018C008C008E008F0007F803FE00FF001 F8003C801C800C800CC00CC008E018D0308FC00E157E9413>I<0E0070FE07F01E00F00E 00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E 00700E00F00E00F006017003827800FC7F18157F941B>117 D119 D E /Fn 72 123 df<007E1F0001C1B1800303E3C00703C3C00E 03C1800E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E 01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E 01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E00000E0000FFFF C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C00703C00E 01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F CFF8151D809C17>I<6060F0F0F8F86868080808080808101010102020404080800D0C7F 9C15>34 D<60F0F8680808081010204080050C7C9C0C>39 D<004000800100020006000C 000C0018001800300030007000600060006000E000E000E000E000E000E000E000E000E0 00E000E000E000600060006000700030003000180018000C000C00060002000100008000 400A2A7D9E10>I<800040002000100018000C000C000600060003000300038001800180 018001C001C001C001C001C001C001C001C001C001C001C001C001800180018003800300 0300060006000C000C00180010002000400080000A2A7E9E10>I<000600000006000000 060000000600000006000000060000000600000006000000060000000600000006000000 06000000060000FFFFFFE0FFFFFFE0000600000006000000060000000600000006000000 060000000600000006000000060000000600000006000000060000000600001B1C7E9720 >43 D<60F0F0701010101020204080040C7C830C>II<60F0F060 04047C830C>I<00010003000600060006000C000C000C00180018001800300030003000 60006000C000C000C0018001800180030003000300060006000C000C000C001800180018 00300030003000600060006000C000C00010297E9E15>I<03C00C301818300C300C700E 60066006E007E007E007E007E007E007E007E007E007E007E007E007E00760066006700E 300C300C18180C3007E0101D7E9B15>I<030007003F00C7000700070007000700070007 0007000700070007000700070007000700070007000700070007000700070007000F80FF F80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C 001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07 E01830201C201C781E780E781E381E001C001C00180030006007E00030001C001C000E00 0F000F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15>I<000C00000C00001C 00003C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C 00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C00001C 0001FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E0243028 18301C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D7E 9B15>I<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006 E007E007E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<400000 7FFF807FFF007FFF00400200800400800400800800001000001000002000006000004000 00C00000C00001C000018000018000038000038000038000038000078000078000078000 078000078000078000030000111D7E9B15>I<03E00C301008200C200660066006600670 06780C3E083FB01FE007F007F818FC307E601E600FC007C003C003C003C0036002600430 0C1C1007E0101D7E9B15>I<60F0F0600000000000000000000060F0F06004127C910C> 58 D<60F0F0600000000000000000000060F0F0701010101020204080041A7C910C>I<7F FFFFC0FFFFFFE00000000000000000000000000000000000000000000000000000000000 000000FFFFFFE07FFFFFC01B0C7E8F20>61 D<0FE03038401CE00EF00EF00EF00E000C00 1C0030006000C00080018001000100010001000100010000000000000000000000030007 80078003000F1D7E9C14>63 D<000600000006000000060000000F0000000F0000000F00 000017800000178000001780000023C0000023C0000023C0000041E0000041E0000041E0 000080F0000080F0000180F8000100780001FFF80003007C0002003C0002003C0006003E 0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65 DI<001F808000E061800180198007000780 0E0003801C0003801C00018038000180780000807800008070000080F0000000F0000000 F0000000F0000000F0000000F0000000F0000000F0000000700000807800008078000080 380000801C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C 1E>II70 D72 DI76 DII<003F800000E0E0000380380007001C000E000E001C0007003C000780380003807800 03C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F000 01E0F00001E0700001C0780003C0780003C0380003803C0007801C0007000E000E000700 1C000380380000E0E000003F80001B1E7E9C20>II82 D<07E0801C1980300580700380600180E0 0180E00080E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF8000 0F800007C00003C00001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083 F800121E7E9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F00 20800F0020800F0020000F0000000F0000000F0000000F0000000F0000000F0000000F00 00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00 00000F0000001F800003FFFC001B1C7F9B1E>II87 D89 D91 D<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>II<1FC000307000783800781C00301C00001C00001C0001FC000F1C0038 1C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E9115>97 DI<07E00C301878307870306000E0 00E000E000E000E000E00060007004300418080C3007C00E127E9112>I<003F00000700 00070000070000070000070000070000070000070000070000070003E7000C1700180F00 300700700700600700E00700E00700E00700E00700E00700E00700600700700700300700 180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000 E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E 000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C 00381C00381C001818001C38000C300013C0001000003000001800001FF8001FFF001FFF 803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215>II<18003C003C00180000000000000000 00000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C 001C001C00FF80091D7F9C0C>I<00C001E001E000C00000000000000000000000000000 0FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0 00E000E000E060E0F0C0F1C061803E000B25839C0D>IIIII<03F0000E1C00180600300300700380600180E001 C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F0001212 7F9115>II<03C1000C3300180B00300F00700700700700 E00700E00700E00700E00700E00700E00700600700700700300F00180F000C370007C700 000700000700000700000700000700000700000700003FE0131A7E9116>II<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D060 8FC00D127F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C 001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910>IIII<7F8FF00F03800F030007020003840001C80001 D80000F00000700000780000F800009C00010E00020E000607000403801E07C0FF0FF815 12809116>II<7FFC70386038407040F040E041C003C003 8007000F040E041C043C0C380870087038FFF80E127F9112>I E /Fo 40 119 df<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE007FFFFE7FFFFE7FFFFE17277BA622>49 D<00FF800003FFF0000FFFFC00 1F03FE003800FF007C007F80FE003FC0FF003FC0FF003FE0FF001FE0FF001FE07E001FE0 3C003FE000003FE000003FC000003FC000007F8000007F000000FE000000FC000001F800 0003F0000003E00000078000000F0000001E0000003C00E0007000E000E000E001C001C0 038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF80 1B277DA622>I<007F800003FFF00007FFFC000F81FE001F00FF003F80FF003F807F803F 807F803F807F801F807F800F007F800000FF000000FF000000FE000001FC000001F80000 07F00000FFC00000FFF0000001FC0000007E0000007F0000007F8000003FC000003FC000 003FE000003FE03C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC07E007F807C 007F003F01FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E0000001E000000 3E0000007E000000FE000000FE000001FE000003FE0000077E00000E7E00000E7E00001C 7E0000387E0000707E0000E07E0000E07E0001C07E0003807E0007007E000E007E000E00 7E001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000 FE000000FE000000FE000000FE000000FE000000FE000000FE00007FFFF8007FFFF8007F FFF81D277EA622>I<0C0003000F803F000FFFFE000FFFFC000FFFF8000FFFF0000FFFE0 000FFFC0000FFE00000E0000000E0000000E0000000E0000000E0000000E0000000E7FC0 000FFFF8000F80FC000E003E000C003F0000001F8000001FC000001FC000001FE000001F E018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC001FC078003F8078003F 803C007F001F01FE000FFFF80003FFF00000FF80001B277DA622>I<0007F000003FFC00 00FFFE0001FC0F0003F01F8007E03F800FC03F801FC03F801F803F803F801F003F800000 7F0000007F0000007F000000FF000000FF0FC000FF3FF800FF707C00FFC03E00FFC03F00 FF801F80FF801FC0FF001FC0FF001FE0FF001FE0FF001FE07F001FE07F001FE07F001FE0 7F001FE03F001FE03F001FC01F801FC01F803F800FC03F0007E07E0003FFFC0000FFF000 003FC0001B277DA622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07F FFFFC07FFFFF807FFFFF0070000E0070000E0070001C00E0003800E0007000E000E00000 00E0000001C000000380000007800000078000000F0000000F0000001F0000001F000000 3F0000003E0000003E0000007E0000007E0000007E0000007E000000FE000000FE000000 FE000000FE000000FE000000FE000000FE000000FE0000007C0000003800001C297CA822 >I<003FC00001FFF00003FFFC0007C07E000F003F001E001F001E000F803E000F803E00 0F803F000F803F000F803FC00F003FF01F001FFC1E001FFE3C000FFFF80007FFE00003FF F80001FFFC0001FFFE0007FFFF000F0FFF801E03FFC03C01FFC07C007FE078001FE0F800 07E0F80007E0F80003E0F80003E0F80003E0F80003C07C0003C07C0007803F000F001FC0 3E000FFFFC0003FFF800007FC0001B277DA622>I<1C003E007F00FF80FF80FF807F003E 001C000000000000000000000000000000000000001C003E007F00FF80FF80FF807F003E 001C00091B7B9A13>58 D<000003800000000007C00000000007C0000000000FE0000000 000FE0000000000FE0000000001FF0000000001FF0000000003FF8000000003FF8000000 003FF80000000073FC0000000073FC00000000F3FE00000000E1FE00000000E1FE000000 01C0FF00000001C0FF00000003C0FF80000003807F80000007807FC0000007003FC00000 07003FC000000E003FE000000E001FE000001E001FF000001C000FF000001FFFFFF00000 3FFFFFF800003FFFFFF80000780007FC0000700003FC0000700003FC0000E00001FE0000 E00001FE0001E00001FF0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFF FE001FFFFE2F297EA834>65 D<00003FF001800003FFFE0380000FFFFF8780003FF007DF 8000FF8001FF8001FE00007F8003FC00003F8007F000001F800FF000000F801FE0000007 801FE0000007803FC0000007803FC0000003807FC0000003807F80000003807F80000000 00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000 00FF8000000000FF8000000000FF80000000007F80000000007F80000000007FC0000003 803FC0000003803FC0000003801FE0000003801FE0000007000FF00000070007F000000E 0003FC00001E0001FE00003C0000FF8000F800003FF007E000000FFFFFC0000003FFFF00 0000003FF8000029297CA832>67 DI72 DI77 DI80 D82 D<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC07F80 3FC03FC07E003FC007C078003FC003C078003FC003C070003FC001C0F0003FC001E0F000 3FC001E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E00000 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 3FC0000000003FC0000000003FC0000000003FC00000007FFFFFE000007FFFFFE000007F FFFFE0002B287EA730>84 D87 D<01FF800007FFF0000F81F8001FC07E001FC07E001FC03F000F803F8007003F8000003F 8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F803F803F803F003F807F003F 80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC03 FC1E1B7E9A21>97 D<001FF80000FFFE0003F01F0007E03F800FC03F801F803F803F801F 007F800E007F0000007F000000FF000000FF000000FF000000FF000000FF000000FF0000 00FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003F01E 0000FFFC00001FE0001A1B7E9A1F>99 D<00003FF80000003FF80000003FF800000003F8 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800 000003F800000003F800000003F800000003F800001FE3F80000FFFBF80003F03FF80007 E00FF8000FC007F8001F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF00 03F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003 F8007F0003F8007F0003F8003F8003F8001F8003F8000F8007F80007C00FF80003F03BFF 8000FFF3FF80003FC3FF80212A7EA926>I<003FE00001FFF80003F07E0007C01F000F80 1F801F800F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFF FFE0FF000000FF000000FF0000007F0000007F0000007F0000003F8000E01F8000E00FC0 01C007E0038003F81F0000FFFE00001FF0001B1B7E9A20>I<0007F0003FFC00FE3E01F8 7F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFF C0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0 0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF 807FFF807FFF80182A7EA915>I<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C383F00 7E107F007F007F007F007F007F007F007F007F007F007F007F003F007E001F007C001F80 FC000FC1F8001FFFE00018FF800038000000380000003C0000003E0000003FFFF8001FFF FF001FFFFF800FFFFFC007FFFFE01FFFFFF03E0007F07C0001F8F80000F8F80000F8F800 00F8F80000F87C0001F03C0001E01F0007C00FC01F8003FFFE00007FF0001E287E9A22> II<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0 FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 0FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I107 DIII<003FE00001FFFC0003F07E000FC01F801F800F C03F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007 F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800F C00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>II<001FC0380000FFF0780003F838F80007E00DF8000FC007F8001F C007F8003F8003F8007F8003F8007F8003F8007F0003F800FF0003F800FF0003F800FF00 03F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F8003 F8003F8003F8001F8007F8000FC007F80007E01FF80003F07BF80000FFF3F800003FC3F8 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800 000003F800000003F80000003FFF8000003FFF8000003FFF8021277E9A24>II<03FE300FFFF01E03F03800F0700070F00070F00070F80070 FC0000FFE0007FFE007FFF803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003C F0003CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B>I<0070000070000070 0000700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F0 0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0 0007F03807F03807F03807F03807F03807F03803F03803F87001F86000FFC0001F801526 7FA51B>II I E /Fp 24 118 df45 D<00000600000E00000E00001C00 001C00001C0000380000380000380000700000700000E00000E00000E00001C00001C000 01C0000380000380000380000700000700000700000E00000E00000E00001C00001C0000 1C0000380000380000700000700000700000E00000E00000E00001C00001C00001C00003 80000380000380000700000700000700000E00000E00000E00001C00001C000038000038 0000380000700000700000700000E00000E00000C00000173C7DAC1E>47 D<00001800000000180000000018000000003C000000003C000000003C000000007E0000 00007E00000000FF000000009F000000009F000000011F800000010F800000010F800000 0207C000000207C000000207C000000403E000000403E000000403E000000801F0000008 01F000001801F800001000F800001000F800002000FC000020007C00003FFFFC00007FFF FE000040003E000040003E000080001F000080001F000080001F000100000F800100000F 800100000F8002000007C007000007C01F80000FE0FFF000FFFFFFF000FFFF282A7EA92D >65 D<0000FF00100007FFE030001FC07830003E000C7000F80006F001F00003F003E000 01F007C00000F00F800000700F800000701F000000303F000000303E000000303E000000 107E000000107E000000107C00000000FC00000000FC00000000FC00000000FC00000000 FC00000000FC00000000FC00000000FC00000000FC000000007C000000007E000000007E 000000103E000000103E000000103F000000101F000000200F800000200F8000006007C0 00004003E000008001F000018000F8000300003E000E00001FC038000007FFE0000000FF 8000242B7DA92B>67 DII72 DI76 DII<0001FF0000000F01E000003C0078000078003C 0000E0000E0001E0000F0003C000078007800003C00F800003E01F000001F01F000001F0 3E000000F83E000000F87E000000FC7E000000FC7C0000007C7C0000007CFC0000007EFC 0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC00 00007E7C0000007C7E000000FC7E000000FC7E000000FC3E000000F83F000001F81F0000 01F01F000001F00F800003E007800003C007C00007C003E0000F8000F0001E000078003C 00003C007800000F01E0000001FF0000272B7DA92E>II82 D<00FE010003FF83000F 81E3001E0037003C001F0038000F007800070070000700F0000300F0000300F0000300F0 000100F8000100F8000100FC0000007C0000007F0000003FE000001FFF00000FFFE00007 FFF80003FFFC00007FFE000007FF0000007F0000001F8000000F80000007C0000007C080 0003C0800003C0800003C0800003C0C00003C0C0000380C0000380E0000780F0000700F8 000E00EE001C00C3C07800C1FFF000803FC0001A2B7DA921>I<7FFFFFFFF87FFFFFFFF8 7C007C00F870007C003860007C001840007C000840007C0008C0007C000CC0007C000C80 007C000480007C000480007C000480007C000480007C000400007C000000007C00000000 7C000000007C000000007C000000007C000000007C000000007C000000007C000000007C 000000007C000000007C000000007C000000007C000000007C000000007C000000007C00 0000007C000000007C000000007C000000007C000000007C000000007C000000007C0000 0000FE000000FFFFFE0000FFFFFE0026297EA82B>III<07800000FF80 0000FF8000000F8000000780000007800000078000000780000007800000078000000780 000007800000078000000780000007800000078000000783F000078C1C0007B0070007A0 038007C003C0078001E0078001E0078000F0078000F0078000F8078000F8078000F80780 00F8078000F8078000F8078000F8078000F0078000F0078001F0078001E0078001C007C0 03C00740078007200E0006181C000407E0001D2A7FA921>98 D<007E0003C3800700E00E 00F01C00703C00783C003878003C78003CF8003CF8003CFFFFFCF80000F80000F80000F8 0000F800007800007C00003C00043C00041E00080E001007002001C0C0007F00161A7E99 1B>101 D<0781F800FC00FF860E030700FF98070C03800FA0079003C007A003D001E007 C003E001E007C003E001E0078003C001E0078003C001E0078003C001E0078003C001E007 8003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E007 8003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E007 8003C001E0FFFC7FFE3FFFFFFC7FFE3FFF301A7F9933>109 D<0783F800FF8C1C00FF90 0E000FA0070007A0078007C0078007C00780078007800780078007800780078007800780 078007800780078007800780078007800780078007800780078007800780078007800780 0780078007800780078007800780FFFCFFFCFFFCFFFC1E1A7F9921>I<0787C0FF98E0FF 91F00FA1F007C1F007C0E007C00007800007800007800007800007800007800007800007 800007800007800007800007800007800007800007800007800007C000FFFE00FFFE0014 1A7F9917>114 D<07800780FF80FF80FF80FF800F800F80078007800780078007800780 078007800780078007800780078007800780078007800780078007800780078007800780 0780078007800780078007800780078007800F8007800F800380178001C027C000E047FC 003F87FC1E1A7F9921>117 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 0 1 0 0 bop 1326 -102 a Fp(ANL/MCS-TM-n)n(um)n(b)r(er)620 391 y Fo(MPICH)23 b(W)-6 b(orking)24 b(Note:)82 465 y(The)e(impleme)o (n)n(tati)o(on)f(of)i(the)f(second)h(generation)g(MPICH)g(ADI)953 598 y Fn(b)o(y)814 739 y Fm(William)14 b(Gropp)849 789 y(Ewing)j(Lusk)0 2719 y @beginspecial 240 @llx 380 @lly 370 @urx 520 @ury 720 @rwi @setspecial %%BeginDocument: /home/gropp/tools.n/tex/argonne.ps % see page 167 of the blue book (PostScript Language Tutorial and Cookbook) % for detailed comments describing how to make circular text /circtextdict 16 dict def circtextdict begin % return half the angle spanned by a string /findhalfangle { % string => angle stringwidth pop 2 div 2 xradius mul pi mul div 360 mul } def % draw one character and then rotate to next position (text reads cw) /cwplacechar { % char => - /char exch def /halfangle char findhalfangle def gsave halfangle neg rotate radius 0 translate -90 rotate char stringwidth pop 2 div neg 0 moveto char show grestore halfangle 2 mul neg rotate } def % draw one character and then rotate to next position (text reads ccw) /ccwplacechar { % char => - /char exch def /halfangle char findhalfangle def gsave halfangle rotate radius ptsize fudge sub add 0 translate 90 rotate char stringwidth pop 2 div neg 0 moveto char show grestore halfangle 2 mul rotate } def /pi 3.1415923 def end % draw a string on a circular path in the clockwise direction /cwcircletext { % string fontsize centerangle radius => - circtextdict begin /radius exch def /centerangle exch def /ptsize exch def /str exch def /xradius radius ptsize 4 div add def gsave centerangle str findhalfangle add rotate str { /charcode exch def ( ) dup 0 charcode put cwplacechar } forall grestore end } def % draw a string on a circular path in the counter-clockwise direction /ccwcircletext { % string fontsize fudge centerangle radius => - circtextdict begin /radius exch def /centerangle exch def /fudge exch def % fudge factor; set to zero and then adjust /ptsize exch def /str exch def /xradius radius ptsize 4 div add def gsave centerangle str findhalfangle sub rotate str { /charcode exch def ( ) dup 0 charcode put ccwplacechar } forall grestore end } def % draw the interior of the ANL logo (arrow + circle) /drawcenter { % side width outsider insider circrad circdy => - gsave 30 dict begin /circdy exch def % vertical offset for circle /circrad exch def % radius of circle /insider exch def % radius of turn for inside line (in arrow) /outsider exch def % radius of turn for outside line (in arrow) /width exch def % distance between inside and outside lines /side exch def % length of one (out)side of the arrow /root3 3 sqrt def /y0 root3 6 div side mul neg def /y1 y0 width add def /y2 y1 2 mul neg def /y3 y2 width 3 mul 4 div add def /y4 y0 2 mul neg def /dx0 root3 4 div width mul def /dx1 side 2 div width root3 mul sub def /dx2 dx1 width root3 div add def /dx3 side width root3 mul sub 2 div def /dx4 side 2 div def % inside line width 2 div neg y1 moveto dx1 neg y1 0 y2 insider arcto pop pop pop pop 0 y2 dx1 y1 insider arcto pop pop pop pop dx1 y1 width 2 div y1 insider arcto pop pop pop pop width 2 div y1 lineto % outside line width 2 div y0 lineto dx4 y0 0 y4 outsider arcto pop pop pop pop 0 y4 dx3 neg y1 outsider arcto pop pop pop pop dx4 neg y0 dx2 y0 outsider arcto pop pop pop pop width 2 div neg y0 lineto closepath stroke % circle 0 circdy circrad 0 360 arc closepath stroke end grestore } def /Helvetica-Bold findfont 10 scalefont setfont 306 448 translate (ARGONNE NATIONAL LABORATORY) 10 90 55 cwcircletext (UNIVERSITY OF CHICAGO) 10 3 -90 55 ccwcircletext /Symbol findfont 10 scalefont setfont (\267 \267) 10 3 -90 55 ccwcircletext 104 18 10 1 10 -2 drawcenter %%EndDocument @endspecial 1336 2513 a Fp(MA)-5 b(THEMA)g(TICS)19 b(AND)1305 2587 y(COMPUTER)h(SCIENCE)1670 2662 y(DIVISION)p eop %%Page: 1 2 1 1 bop 890 45 a Fl(Abstract)161 110 y Fk(The)18 b(MPICH)f(implemen)o (tation)j(of)e(the)f(MPI)h(standard)g(is)h(built)g(on)f(a)f(lo)o(w)o (er)h(lev)o(el)h(comm)o(unications)h(la)o(y)o(er)104 156 y(called)15 b(the)e Fj(abstr)n(act)f(devic)n(e)f(interfac)n(e)p Fk(.)k(The)e(purp)q(ose)i(of)d(this)i(in)o(terface)g(is)g(to)f(mak)o(e) h(it)f(easy)h(to)f(p)q(ort)g(the)h(MPICH)104 201 y(implemen)o(tation)h (b)o(y)e(separating)h(in)o(to)g(a)e(separate)h(mo)q(dule)h(that)f (handles)h(just)e(the)h(comm)o(unication)i(b)q(et)o(w)o(een)d(t)o(w)o (o)104 247 y(pro)q(cesses.)32 b(This)19 b(note)f(describ)q(es)i(an)e (implemen)o(tation)j(for)d(this)h(in)o(terface)f(that)g(is)h (\015exible)h(and)f(e\016cien)o(t.)32 b(In)104 293 y(addition,)16 b(this)f(implemen)o(tation)h(supp)q(orts)g(m)o(ultiple)g(devices)f (\(e.g.,)e(TCP/IP)g(and)i(shared)f(memory)h(or)e(TCP/IP)104 338 y(and)g(propritary)i(in)o(terconnect\))g(in)f(a)f(single)i(MPI)e (application.)0 476 y Fo(1)69 b(In)n(tro)r(duction)0 567 y Fn(The)20 b(goals)e(are)i(to)f(allo)o(w)f(for)h(m)o(ulti-device,) g(m)o(ulti-m)o(essage-proto)q(col)e(implemen)o(tatio)o(ns)g(of)i(the)h (Abstract)h(Device)0 616 y(without)14 b(\(signi\014can)o(tly\))f (impacting)e(p)q(erformance.)62 666 y(Remem)o(b)q(er)i(to)g(di\013eren) o(tiate)i(b)q(et)o(w)o(een)g(the)g(ADI)e Fi(design)i Fn(and)e(an)o(y)h(one)g(of)f(its)h Fi(implementations)p Fn(.)62 716 y(Outline)g(of)f(pap)q(er...)0 853 y Fo(2)69 b(Proto)r(cols)0 944 y Fn(The)17 b(MPI)g(standard)g(is)f(designed)h(to) g(giv)o(e)f(an)g(MPI)h(implemen)o(tatio)o(n)d(freedom)i(in)g(c)o (hosing)g(exactly)h(ho)o(w)f(and)g(when)0 994 y(data)e(is)f(mo)o(v)o (ed)g(from)f(one)i(pro)q(cess)i(to)d(another.)62 1044 y(In)20 b(this)f(implemen)o(tation,)e(the)k(information)16 b(is)k(divided)f(in)o(to)g(t)o(w)o(o)g(parts:)30 b(the)20 b(message)f Fi(envelop)n(e)p Fn(,)i(con)o(taining)0 1094 y(information)15 b(ab)q(out)j(the)g(message)g(\(suc)o(h)h(as)f(tag,)g (comm)o(unicator,)e(and)i(length\),)g(and)g(the)h Fi(data)p Fn(.)30 b(The)19 b(en)o(v)o(elop)q(e)f(is)0 1144 y(relativ)o(ely)13 b(small,)e(and)i(is)g(deliv)o(ered)h(to)f(the)h(destination)g(imm)o (ediately)m(.)1166 1128 y Fh(1)1200 1144 y Fn(The)g(data)f(ma)o(y)f(or) h(ma)o(y)f(not)h(b)q(e)h(deliv)o(ered)g(at)0 1193 y(once.)19 b(In)14 b(fact,)f(there)i(are)f(four)g(p)q(ossibilities)f(that)h(w)o(e) g(will)f(allo)o(w)f(for)i(in)f(our)h(implemenatio)o(n:)0 1276 y Fg(Short)19 b Fn(The)14 b(data)g(is)g(deliv)o(ered)g(within)f (the)i(message)e(en)o(v)o(elop)q(e.)0 1359 y Fg(Eager)21 b Fn(The)14 b(data)g(is)f(deliv)o(ered)i(without)e(w)o(aiting)g(for)g (the)i(receiv)o(er)g(to)f(request)h(it)0 1442 y Fg(Rendezv)o(ous)k Fn(The)14 b(data)g(is)f(not)h(deliv)o(ered)g(un)o(til)f(the)i(receiv)o (er)g(requests)h(it)0 1525 y Fg(Get)k Fn(The)14 b(data)g(is)f(copied)i (b)o(y)e(the)i(receiv)o(er)g(using)f(shared)h(memory)c(or)j(remote)f (memory)f(op)q(erations.)0 1608 y(There)21 b(are)f(other)h(approac)o (hes)f(p)q(ossible,)h(but)f(these)i(four)d Fi(pr)n(oto)n(c)n(ols)h Fn(are)g(the)g(only)f(ones)i(considered)g(in)e(this)h(ADI)0 1658 y(implemen)o(tatio)o(n.)62 1708 y(Within)10 b(the)g(eager)h(and)f (rendezv)o(ous)i(proto)q(cols,)f(the)g(metho)q(d)e(b)o(y)i(whic)o(h)f (the)h(data)f(is)g(deliv)o(ered)h(once)f(requested)j(ma)o(y)0 1758 y(b)q(e)f Fi(blo)n(cking)f Fn(or)g Fi(nonblo)n(cking)p Fn(.)18 b(In)11 b(a)g(non)o(blo)q(c)o(king)f(transfer,)i(once)g(the)f (data)g(is)g(requested,)i(the)f(sender)h(can)e(call)f(a)h(system)0 1808 y(service)j(routine)e(to)g(b)q(egin)g(the)h(transfer)g(and)f(then) h(return)g(to)f(the)h(user)g(without)f(w)o(aiting)f(for)h(the)g (transfer)i(to)e(complete)0 1858 y(\(un)o(til)h(a)h(later)g Fi(wait)f Fn(call\).)k(This)d(is)g(similar)d(to)j(the)g(MPI)h(non)o (blo)q(c)o(king)d(op)q(erations)i(\()p Ff(MPI_Isend\(\))p Fe(:)7 b(:)g(:)m Ff(MPI_Wait\(\))p Fn(\).)62 1907 y(No)14 b(single)f(c)o(hoice)g(of)g(proto)q(col)g(is)h(optimal.)h(In)e(man)o(y) f(applications,)g(a)h(com)o(bination)e(of)i(these)h(proto)q(cols)g(is)f (appro-)0 1957 y(priate.)18 b(F)m(or)13 b(example,)e(for)i(messages)g (of)g(in)o(termediate)f(length,)h(the)h(eager)f(proto)q(col)g(ma)o(y)f (o\013er)h(the)h(b)q(est)g(com)o(bination)0 2007 y(of)j(p)q(erformance) h(and)g(reliabilit)o(y)m(,)e(while)i(for)f(v)o(ery)h(long)g(data,)g (only)f(the)h(rendezv)o(ous)i(\(or)e(get\))h(proto)q(cols)f(main)o (tain)0 2057 y(correctness.)j(The)14 b(ADI)g(implemen)o(tatio)o(n)d (design)j(here)h(supp)q(orts)h(using)d(m)o(ultiple)f(proto)q(cols.)62 2107 y(T)m(o)d(simplify)e(the)j(implemen)o(tation,)d(only)i(con)o (tiguous)g(data)h(areas)g(are)g(handled.)17 b(The)10 b(more)e(general)i(MPI)g(datat)o(yp)q(es)0 2156 y(are)k(handled)g(b)o (y)g(pac)o(king)f(and)h(unpac)o(king)f(data)h(in)o(to)f(con)o(tiguous)g (bu\013ers,)i(as)f(describ)q(ed)i(in)d([)p Fg(?)p Fn(].)0 2294 y Fo(3)69 b(Devices)0 2385 y Fn(stu\013)15 b(ab)q(out)e(supp)q (orting)h(m)o(ultiple)e(devices)62 2434 y(Most)i(ob)o(vious)g(com)o (binations:)i(TCP)e(plus)g(propritary)m(.)j(Also)d(TCP)g(+)g(shared)h (memory)m(.)g(Others)h(include)e(TCP)g(+)0 2484 y(A)m(TM)g(+)g(Shared)g (memory)e(+)i(propritary)m(.)62 2534 y(Note)h(that)f(in)f(some)g(cases) j(in)o(v)o(olving)11 b(shared)k(memory)d(and)h(other)i(proto)q(cols,)f (it)f(ma)o(y)f(b)q(e)j(b)q(etter)h(to)d(use)i(an)f(agen)o(t)0 2584 y(to)g(mo)o(v)o(e)e(messages.)p 0 2619 780 2 v 46 2645 a Fd(1)64 2657 y Fc(See)e(the)h(commen)o(ts)e(on)i(resource)e (restrictions)g(later)h(in)i(this)e(pap)q(er.)965 2828 y Fn(1)p eop %%Page: 2 3 2 2 bop 0 45 a Fo(4)69 b(Design)0 136 y Fn(W)m(e)17 b(describ)q(e)i (the)f(design)g(b)o(y)f(describing)h(the)g(steps)h(that)e(the)h (implemen)o(tation)c(carries)19 b(out)e(to)g(p)q(erform)g(the)h(basic)0 186 y(op)q(erations)c(of)f(sending)i(and)e(receiving)h(a)g(message.)0 302 y Fb(4.1)56 b(Sending)0 379 y Fn(First,)13 b(w)o(e)h(determine)f (the)h(device)g(to)f(use,)h(based)g(on)f(the)h(destination)f(\(if)f (there)j(are)e(m)o(ultiple)e(devices,)k(this)e(can)g(b)q(e)h(an)0 428 y(arra)o(y)g(of)f(p)q(oin)o(ters)h(to)g(structures,)i(indexed)e(b)o (y)g(global)e(rank\).)62 478 y(Next,)i(w)o(e)g(determine)f(whic)o(h)h (proto)q(col)f(to)g(use)i(\(short,)e(eager,)h(rendezv)o(ous,)h(get\).)j (This)c(is)f(probably)g(based)h(on)f(the)0 528 y(size)f(of)f(the)h (message,)f(but)h(could)f(b)q(e)h(based)h(on)e(something)f(else,)i(lik) o(e)f(the)h(n)o(um)o(b)q(er)f(of)f(p)q(ending)i(completions,)e(datat)o (yp)q(e,)0 578 y(etc.)62 628 y(W)m(e)k(then)g(start)h(the)f(send)h (with)f(the)g(appropriate)g(op)q(eration,)f(c)o(hosen)i(from)d(the)j (proto)q(col.)62 678 y(No)o(w,)f(if)g(the)i(op)q(eration)e(is)h Fi(not)g Fn(already)f(complete)h(\(e.g.,)e(non)o(blo)q(c)o(king)h(or)h (rendezv)o(ous)h(or)f(get)g(send\),)g(w)o(e)g(need)h(to)0 727 y(kno)o(w)d(ho)o(w)h(to)62 819 y Fa(\017)21 b Fn(test)15 b(for)e(completion)62 902 y Fa(\017)21 b Fn(w)o(ait)13 b(for)g(completion)62 985 y Fa(\017)21 b Fn(cancel)62 1068 y Fa(\017)g Fn(push)62 1159 y(The)15 b(p)q(olling)f(design)h(of)f (the)h(MPICH)g(implemen)o(tation)d(puts)j(the)g(\\push")g(partly)g(in)o (to)f(the)h(test)h(call,)e(so)h(that)f(the)0 1209 y(MPICH)g(usage)g(is) g(really)62 1300 y Fa(\017)21 b Fn(test)15 b(for)e(completion)62 1383 y Fa(\017)21 b Fn(push-and-then-test)15 b(for)f(completion)62 1475 y(There)h(is)f(also)f(a)h(common)d(push-device,)k(but)f(it)f(do)q (esn't)i(k)o(eep)f(trac)o(k)g(of)g(eac)o(h)g(individual)e(item.)62 1524 y(The)j(most)e(general)h(w)o(a)o(y)f(to)h(handle)g(this)g(case)h (is)f(to)g(store)g(the)h Fi(functions)f Fn(in)g(the)h(request.)20 b(An)14 b(alternate)g(metho)q(d,)0 1574 y(in)g(use)h(in)e(the)i (\014rst)g(generation)f(system,)g(is)g(to)g(store)h(an)f(in)o(teger)g (that)g(selects)i(the)f(function.)k(This)14 b(limits)d(the)k(c)o (hoices)0 1624 y(and)f(mak)o(es)e(it)i(hard)g(to)g(add)f(new)i(approac) o(hes)f(\(see)i(b)q(elo)o(w\).)62 1674 y(Note)g(that)g(w)o(e)g(can)g (com)o(bine)f(the)h(test)h(and)f(push-test)h(with)e(the)i(c)o(hoice)f (that)g(a)f(n)o(ull)g(push-test)i(function)f(means)0 1724 y(that)e(the)g(request)i(is)e(complete.)62 1773 y(Finally)m(,)e(for)i(reasons)i(the)f(will)e(b)q(e)i(clear)g(when)f (discussing)h(the)g(noncon)o(tiguous)f(op)q(erations,)h(it)f(is)g (helpful)g(to)g(ha)o(v)o(e)0 1823 y(a)h(routine)g(to)f(call)g(to)h (\014nish)g(the)g(request)i(lo)q(cally)m(.)h(This)d(can)g(b)q(e)h (used,)f(for)g(example,)e(to)h(free)i(an)o(y)e(lo)q(cal)g(bu\013ers.)23 b(The)0 1873 y(name)13 b(of)g(this)h(function)g(is)f Ff(finish)p Fn(.)0 1989 y Fb(4.2)56 b(Receiving)0 2066 y Fn(This)14 b(is)g(a)g(little)g(harder,)h(b)q(ecause)h(to)e(start)h (with)f(w)o(e)g(don't)g(kno)o(w)g(ev)o(en)h(kno)o(w)f(the)h(device)g (that)f(a)g(message)g(is)g(ariving)0 2116 y(on.)31 b(There)19 b(are)g(t)o(w)o(o)f(ob)o(vious)f(w)o(a)o(ys)h(to)g(approac)o(h)g(this:) 27 b(either)19 b(determine)f(whic)o(h)g(device)h(a)f(message)g(is)g(a)o (v)n(ailable)0 2166 y(on)e(and)f(then)i(receiv)o(e)g(that)f(message,)g (or)g(for)f(eac)o(h)i(device,)g(try)f(to)g(receiv)o(e)h(a)e(message)h (\(without)g(blo)q(c)o(king)f(when)h(no)0 2215 y(message)d(is)h(a)o(v)n (ailable\).)h(So)f(w)o(e)f(start)i(could)e(start)h(with)f(commands)e (to)j(c)o(hec)o(k)g(to)g(see)g(if)f(a)g(message)g(is)h(a)o(v)n (ailable,)d(or)i(to)0 2265 y(w)o(ait)f(for)g(one.)17 b(But)c(this)g(lea)o(v)o(es)f(us)h(with)f(the)h(problem)e(of)h(what)g (to)g(do)g(with)g(the)h(message)f(if)g(c)o(hec)o(king)g(for)g(the)h (message)0 2315 y(migh)o(t)g(receiv)o(e)j(the)g(en)o(v)o(elop)q(e.)22 b(So,)15 b(instead)g(of)f(c)o(hec)o(king)i(for)e(a)h(whether)i(a)d (message)h(is)g(a)o(v)n(ailable,)e(it)h(is)h(b)q(etter)i(to)e(try)0 2365 y(and)f(receiv)o(e)h(a)e(message)h(with)62 2448 y Fa(\017)21 b Fn(c)o(hec)o(k-device)0 2531 y(whic)o(h)14 b(has)g(blo)q(c)o(king)f(and)g(non-blo)q(c)o(king)g(v)o(ersions)h Fi(for)h(e)n(ach)g(devic)n(e)p Fn(.)62 2581 y(The)e(m)o(ulti-device)e (v)o(ersion)i(just)f(calls)h(the)g Ff(check_device)d Fn(for)i(eac)o(h)h(of)f(the)h(devices.)19 b(A)12 b Ff(wait)g Fn(ma)o(y)e(then)k(turn)f(in)o(to)0 2630 y(a)h(p)q(oll.)k(Note)c(that)g (the)h(m)o(ulti-device)d(co)q(de)j(could)f(optimize)f(for)h(the)g(case) h(of)f(a)g(single)f Fi(active)i Fn(device,)f(and)g(use)h(a)f(w)o(ait)0 2680 y(when)g(a)g(blo)q(c)o(king)f(c)o(hec)o(k-device)i(is)f(needed.) 965 2828 y(2)p eop %%Page: 3 4 3 3 bop 62 45 a Fn(This)11 b(requires)h(eac)o(h)f(device)g(to)g(pro)o (vide)f(its)h(o)o(wn)f Ff(check_device)p Fn(;)f(this)i(really)f(isn't)g (so)h(bad)f(as)h(the)g(message-c)o(hannel)0 95 y(\(eager/rendezv)o (ous\))16 b(v)o(ersions)f(really)e(need)i(di\013eren)o(t)g(co)q(de)f (from)e(the)j(shared-memory)d(\(get\))j(v)o(ersions.)62 145 y(Note)g(that)f(this)f(solv)o(es)i(a)e(n)o(um)o(b)q(er)g(of)h (problems:)51 228 y(1.)20 b(It)12 b(do)q(esn't)i(matter)e(whether)h(to) g(lo)o(w-lev)o(el)e(co)q(de)j(w)o(an)o(ts)e(to)h(receiv)o(e)h(a)e Fi(p)n(ointer)g Fn(to)h(a)f(con)o(trol)g(pac)o(k)o(et)h(or)g(the)g (actual)104 278 y(pac)o(k)o(et.)51 361 y(2.)20 b(The)c(pac)o(k)o(ets)g (are)g(lik)o(ely)e(di\013eren)o(t)i(in)f(detail,)g(though)g(w)o(e)g (can)h(probably)f(restrict)i(a)e(few)g(\014elds.)23 b(Note)16 b(that)f(for)104 410 y(shared)f(memory)m(,)d(w)o(e)i(usually)g(w)o(an)o (t)g(the)i(address)g(of)e(the)h(data,)f(whereas)i(for)e(\\stream/c)o (hannel")g(in)o(terfaces,)h(w)o(e)104 460 y(receiv)o(e)h(the)f(data)g (in)o(to)f(lo)q(cal)g(data)51 543 y(3.)20 b(Heterogenit)o(y)14 b(information)d(will)i(b)q(e)h(needed)i(b)o(y)d(only)g(some)h(of)f(the) h(pac)o(k)o(ets.)51 626 y(4.)20 b(Note)14 b(that)g(w)o(e)h(ma)o(y)d (receiv)o(e)j(forw)o(arding)e(pac)o(k)o(ets)i(that)f(are)h(in)o(tended) f(to)g(send)h(data)f(to)g(another)g(no)q(de.)19 b(This)14 b(is)104 676 y(just)g(a)f(data)h(pac)o(k)o(et,)g(so)g(again)f(the)h (actual)g(form)e(is)h(unimp)q(ortan)o(t.)62 759 y(The)g(c)o(hec)o(k)g (device)g(co)q(de)g(itself)f(could)h(use)g(either)g(a)f(lo)q(okup)f (table)h(based)h(on)f(the)h(pac)o(k)o(et)g(t)o(yp)q(e)g(\014eld)f (\(small)e(in)o(teger\))0 809 y(or)j(a)g Ff(switch)f Fn(statemen)o(t.)18 b(In)13 b(the)h(lo)q(okup)f(table)g(case,)h(this)f (selects)i(the)f(routine)g(that)f(matc)o(hes)g(the)h(kind)f(of)g(send)h (that)0 859 y(w)o(as)j(used.)30 b(The)18 b(table)g(is)f(initialized)f (when)i(the)g(device)h(starts)f(up.)29 b(Using)17 b(a)h Ff(switch)e Fn(is)h(simpler)g(but)g(a)g(little)g(less)0 909 y(\015exible.)g(Still,)11 b(since)i(the)g Ff(check_device)d Fn(co)q(de)j(itself)f(is)g(accessed)i(through)f(a)f(function)g(p)q(oin) o(ter,)g(w)o(e)g(could)h(ev)o(en)o(tually)0 958 y(add)h(a)f(more)g (complex)g(v)o(ersion.)62 1008 y(No)o(w)k(the)h(situation)e(is)h(m)o (uc)o(h)f(lik)o(e)g(the)h(send)h(case.)29 b(If)16 b(the)i(op)q(eration) f(is)g(not)g(complete,)f(w)o(e)i(set)f(up)h(p)q(oin)o(ters)f(to)0 1058 y(functions)d(to)62 1141 y Fa(\017)21 b Fn(test)15 b(for)e(completion)62 1224 y Fa(\017)21 b Fn(w)o(ait)13 b(for)g(completion)62 1307 y Fa(\017)21 b Fn(cancel)62 1390 y Fa(\017)g Fn(push)0 1473 y(Note)14 b(that)g(the)g Ff(push)f Fn(op)q(eration)h(can)g(c)o(hange)g(the)g(others)h(as)e(a)h (w)o(a)o(y)f(to)g(implemen)o(t)e(a)j(\014nite-state-mac)o(hine)f (approac)o(h)0 1523 y(to)h(message)f(deliv)o(ery)m(.)62 1573 y(No)o(w,)f(for)g(receiv)o(es,)i(there)f(are)g(t)o(w)o(o)f (situations:)17 b(the)c(message)e(is)i(exp)q(ected,)h(and)e(the)h (message)f(is)g(unexp)q(ected.)20 b(The)0 1623 y(ab)q(o)o(v)o(e)14 b(handles)g(the)g(case)h(of)e(an)h(exp)q(ected)i(message.)i(In)c(the)g (unexp)q(ected)i(case,)f(w)o(e)f(also)f(need)i(another)f(action:)62 1706 y Fa(\017)21 b Fn(accept)15 b(unexp)q(ected)h(message)62 1789 y(This)g(can)g(start)g(the)g(pro)q(cess)h(of)e(receiving)h(the)h (data)e(for)g(an)h(unexp)q(ected)h(message)f(that)f(is)h(no)o(w)f(exp)q (ected.)25 b(One)0 1838 y(question)14 b(is)h(whether)g(this)f(should)g (b)q(e)h(a)f(separate)i(function)e(or)g(just)g(another)h(case)g(of)f Ff(push)p Fn(.)k(W)m(e)c(ha)o(v)o(e)g(c)o(hosen)h(to)f(use)0 1888 y(the)f Ff(push)e Fn(function)i(in)e(order)j(to)e(reduce)i(the)f (n)o(um)o(b)q(er)e(of)h(function)g(p)q(oin)o(ters)h(in)f(the)h (request,)h(and)e(b)q(ecause)i(it)e(is)g(a)g(push)0 1938 y(op)q(eration.)25 b(Note)17 b(that)f(the)h Ff(push)e Fn(for)h(an)g(unexp)q(ected)i(message)e(do)q(es)h(not)g(need)g(to)f (complete)f(immediately;)f(it)i(can)0 1988 y(start)f(the)f(receiv)o(e)h (and)f(return,)g(setting)h(the)f Ff(test)p Fn(,)f Ff(wait)g Fn(etc.)19 b(functions)14 b(appropriately)m(.)0 2104 y Fb(4.3)56 b(Sync)n(hronous)19 b(sends)0 2181 y Fn(Rather)11 b(than)g(supp)q(ort)h(a)f(completely)e(separate)k(op)q(eration,)e(this) g(will)e(just)i(use)h(a)f(transfer)h(with)e(a)h(rendezv)o(ous)i(seman)o (tic)0 2230 y(\(rendezv)o(ous)k(or)d(get\).)22 b(In)15 b(order)g(to)g(ensure)h(that)f Ff(MPI_Ssend\()20 b(..,)h(cnt)g(=)h(0,)f (..)44 b(\))21 b Fn(w)o(orks,)14 b(w)o(e)i(m)o(ust)d(b)q(e)j(careful)0 2280 y(ab)q(out)e(handling)e(0-length)i(messages.)62 2330 y(The)h(rest)g(of)e(this)h(applies)f(to)h(the)h(the)f(implemen)o (tation)d(of)i(the)h(rendezv)o(ous)i(proto)q(col.)62 2380 y(Details:)h(F)m(or)c(heterogenit)o(y)m(,)g(there)i(needs)f(to)f (b)q(e)h(a)f(agreed)h(form)d(of)i Ff(send_id)e Fn(that)i(can)h(b)q(e)g (mapp)q(ed)e(bac)o(k)h(in)o(to)f(the)0 2430 y(sender's)j(request.)20 b(An)13 b(easy)i(solution)d(w)o(ould)h(b)q(e)h(to)g(use)g(8)g(b)o(ytes) g(for)f(the)h(id,)f(and)h(transmit)e(it)h(without)h(mo)q(di\014cation.) 0 2480 y(Another)h(is)e(to)h(use)h(4)e(b)o(ytes,)i(and)e(to)h(con)o(v)o (ert)h(longer)e(address)i(as)f(in)g(the)g(F)m(ortran)g(v)o(ersion.)62 2529 y(This)g(is)g(really)f(a)h(device)g(c)o(hoice,)g(and)g(w)o(e)g (can)g(limit)d(the)k(8-b)o(yte)f(v)o(ersion)g(to)f(the)i(heterogeneous) h(systems.)62 2579 y(Details:)i(A)13 b(sp)q(ecial)h(form)e(of)h(the)h (eager)g(message,)f(the)h(\\within)f(the)h(pac)o(k)o(et")g(form,)d(is)j (also)f(used.)18 b(There)d(needs)g(to)0 2629 y(b)q(e)g(a)e Ff(get)g Fn(and)h Ff(channel)e Fn(v)o(ersion)i(of)g(this.)965 2828 y(3)p eop %%Page: 4 5 4 4 bop 0 45 a Fb(4.4)56 b(F)-5 b(reeing)18 b(requests)0 122 y Fn(The)c(MPI)g(standard)h(allo)o(ws)174 205 y Ff(MPI_Isend\()20 b(...,)h(&request)f(\))174 255 y(MPI_Request_free\()f(&request)h(\))0 338 y Fn(and)174 421 y Ff(MPI_Irecv\()g(...,)h(&request)f(\))174 470 y(MPI_Request_free\()f(&request)h(\))62 553 y Fn(In)15 b(order)g(for)f(us)g(to)g(prop)q(erly)h(complete)f(this,)g(w)o(e)g (need)i(to)e(con)o(tin)o(ue)g(to)h Fi(push)g Fn(the)f(requests)j(un)o (til)c(they)i(complete.)0 603 y(F)m(or)i(this)g(to)g(w)o(ork,)g(w)o(e)g (need)i(to)d(put)i(the)g(request)g(on)f(a)g(global)e(list)i(of)g(these) h(requests,)i(and)d(run)g(through)g(this)g(list)0 653 y(frequen)o(tly)m(.)g(A)o(t)c(the)h(v)o(ery)f(least,)g(the)g Fi(devic)n(e)h(push)g Fn(should)e(pro)q(cess)j(this)e(list.)k(F)m(or)c (this,)f(w)o(e)h(need)h(a)f(list)f Fi(next)h Fn(p)q(oin)o(ter)g(in)0 703 y(the)h(request.)0 819 y Fb(4.5)56 b(Single)17 b(device)g (optimizations)0 896 y Fn(Muc)o(h)d(of)g(the)g(function)g(p)q(oin)o (ter)g(in)o(terface)g(can)g(b)q(e)h(remo)o(v)o(ed)e(in)g(the)i(single)e (device)i(case:)62 979 y Fa(\017)21 b Fn(No)14 b(lo)q(okup)f(on)g(send) i(or)f(on)g(receiv)o(e)62 1062 y Fa(\017)21 b Fn(Switc)o(h)14 b(statemen)o(ts)g(can)g(replace)h(function)e(p)q(oin)o(ters)i(for)e (test/w)o(ait/push)62 1145 y(The)h(\014rst)f(of)g(these)h(is)f(fairly)f (easy)h(and)g(ma)o(y)e(help)i(on)g(fast)g(systems.)18 b(The)13 b(second)h(ma)o(y)d(not)i(b)q(e)h(w)o(orth)f(the)g(trouble,)0 1195 y(since)i(if)e(there)i(is)f(a)f(function)h(to)g(call,)e(the)j(o)o (v)o(erhead)f(is)g(already)f(relativ)o(ely)g(high.)0 1311 y Fb(4.6)56 b(Requests)0 1387 y Fn(Ho)o(w)12 b(are)h(requests)i (represen)o(ted?)20 b(A)o(t)13 b(the)g(MPI)g(lev)o(el,)f(they)h(are)g (opaque)f(\(p)q(oin)o(ters)i(in)e(the)h(MPICH)g(implemen)o(tatio)o (n\).)0 1437 y(But)j(ev)o(en)o(tually)m(,)e(the)i(request)h(needs)f(to) f(b)q(e)h(de\014ned)h(as)e(a)g(structure)i(con)o(taining)d(some)h (data.)22 b(There)16 b(is)f(clearly)g(data)0 1487 y(common)c(to)j(the)g (MPI)g(implemen)o(tation,)c(but)k(eac)o(h)h(device)f(ma)o(y)e(ha)o(v)o (e)i(its)g(o)o(wn)f(needs)j(for)d(sp)q(ecial)h(data.)62 1537 y(Should)k(w)o(e)g(de\014ne)g(a)g(common)d(form?)28 b(This)17 b(is)h(prett)o(y)h(m)o(uc)o(h)d(true)j(no)o(w,)f(with)f(the)i (p)q(ossible)f(exception)g(of)f(the)0 1587 y(\\non)o(blo)q(c)o(king)h (id",)i(whic)o(h)g(ma)o(y)e(b)q(e)j(an)e(in)o(t)h(\(for)f(nx\),)i(a)f (small)d(structure)22 b(\(IBM)f(MPL)f(or)f(aioread/aio)o(write\),)h(or) 0 1636 y(something)13 b(else.)18 b(The)d Ff(send_id)d Fn(ma)o(y)g(b)q(e)j(4)e(or)h(8)g(b)o(ytes,)g(dep)q(ending)g(on)g(the)g (system.)62 1686 y(One)h(approac)o(h)f(is)g(to)f(pro)o(vide)h(the)h (basics)f(in)g(the)g(structure)i(\(and)e(mak)o(e)e(them)i(part)g(of)f (the)i(MPIR)e(handle)h(rather)0 1736 y(than)e(MPID)f(handle\))h(and)f (use)i(a)e(p)q(oin)o(ter)h(for)g(an)o(y)f(other)h(data.)17 b(This)12 b(is)f(the)h(most)f(\015exible)g(but)h(p)q(oten)o(tially)f (in)o(tro)q(duces)0 1786 y(an)g(additional)e(memory)g(allo)q(cation.)15 b(Again,)c(the)h(single)e(device)i(and)f(m)o(ulti-device)f(could)h(use) h(sligh)o(tly)e(di\013eren)o(t)i(forms,)0 1836 y(though)i(I)g(don't)f (w)o(an)o(t)g(to)h(main)o(tain)d(that.)62 1886 y(What)j(to)f(do?)62 1935 y(Cho)q(ose)g(common)c(form)h(with)i(4)f(in)o(t)h(area)g(for)g(an) o(y)f(sp)q(ecial)h(device)h(needs.)19 b(Device)12 b(can)g(put)h(a)e(p)q (oin)o(ter)h(to)g(more)f(data)0 1985 y(there)k(if)e(needed.)62 2035 y(Rather)i(than)f(ha)o(v)o(e)h(separate)g(device)h(and)e(MPIR)g (parts)h(of)f(the)h(request,)h(there)g(is)e(just)h(a)f(single)g (request)i(t)o(yp)q(e)f(for)0 2085 y(eac)o(h)f(op)q(eration.)k(That)13 b(is,)g(there)i(is)e(an)h Ff(MPIR_RHANDLE)d Fn(for)i(receiv)o(e)i (requests,)g(an)e Ff(MPIR_SHANDLE)e Fn(for)i(send)h(requests,)0 2135 y(and)f(similar)e(structures)16 b(for)d(p)q(ersisten)o(t)i(and)e (user)h(op)q(erations.)k(An)c Ff(MPI_Request)d Fn(is)i(simply)e(a)i (union)g(of)g(these)i(t)o(yp)q(es.)0 2272 y Fo(5)69 b(Implemen)n(tati)o (on)21 b(sk)n(etc)n(h)0 2363 y Fn(There)e(is)e(an)g(MPI)h(to)f(c)o (hannel)h(la)o(y)o(er)f(that)g(selects)i(the)f(proto)q(col)g(based)g (on)f(message)g(size.)29 b(This)18 b(could)f(ev)o(en)h(b)q(e)g(a)0 2413 y(macro,)12 b(using)i(a)f(global)g(\(or)h(device)g(sp)q (eci\014c?\))20 b(v)n(alue.)62 2462 y(The)15 b Ff(check_incoming)c Fn(routine)j(remains)e(ab)q(out)i(the)h(same,)d(with)i(unexp)q(ected)i (message)e(pro)q(cessing)h(doing)e(this:)174 2545 y Ff(save)21 b(information)f(on)h(the)g(incoming)g(message)f(\(tag,)h(lrank,)f(len,) h(context\))174 2595 y(based)g(on)g(device/packet)f(type,)g(save)h (additional)f(information)262 2645 y(\(e.g.,)g(data)h(for)g(eager)g (send,)g(send_id)f(for)h(get/rendezvous.)41 b(Careful)283 2695 y(of)22 b(rendezvous)d(for)j(Ssend\).)965 2828 y Fn(4)p eop %%Page: 5 6 5 5 bop 62 45 a Fn(So,)13 b(a)h(send)h(lo)q(oks)e(something)g(lik)o(e)g (this)0 127 y Ff(send\()21 b(...,)g(dest,)f(...)i(\))87 226 y({)g(MPID_Device)d(*dev)i(=)h(devset->dev[dest])o(;)131 276 y(if)f(\(len)g(<)h(dev->long_len\))174 326 y(\(*\(dev->short->send) o(\)\)\()d(...)i(\);)131 376 y(else)g(if)g(\(len)g(<)h (dev->vlong_len\))174 426 y(\(*\(dev->long->send\))o(\)\()d(...)i(\);) 131 475 y(else)174 525 y(\(*\(dev->vlong->send)o(\)\)\()e(...)i(\);)109 575 y(})62 657 y Fn(The)c(single)g(device)g(case)g(can)g(use)h(just)e (the)i(if-else)e(list)g(\(dev)h(is)g(\014xed,)g(use)g Ff(MPID_dev)p Fn(\),)f(and)g(the)h(\014xed)g(proto)q(col)0 706 y(case)e(can)f(use)h(the)f(explicit)g(routines.)k(The)d (shared-memory)d(v)o(ersion)i(will)e(use)j(a)f(sligh)o(tly)e (di\013eren)o(t)j(v)o(ersion.)62 756 y(A)f(receiv)o(e)i(is)d(more)g (complex,)g(since)h(MPI)h(guaren)o(tees)g(that)f(a)g(blo)q(c)o(king)f (receiv)o(e)i(on)f(one)g(comm)o(unicator)d(do)q(es)k(not)0 806 y(a\013ect)g(an)o(y)e(other)i(comm)o(unicatio)o(n.)g(So)f(a)g(m)o (ulti-device)e(blo)q(c)o(king)h(receiv)o(e)i(lo)q(oks)e(something)g (lik)o(e)109 887 y Ff(Is)21 b(message)g(already)f(available?)109 937 y(Yes)h(->)174 987 y(Call)g(recv_unexpected)e(code)i(\(see)g (below\))109 1037 y(No)g(->)174 1087 y(\(test)g(has)g(already)g(added)f (message)h(to)g(list)g(of)g(posted)g(receives)f(\(for)196 1137 y(thread)h(safety\)\))109 1186 y(\(a)g(nonblocking)f(receive)g (exits)h(here\))109 1236 y(while)g(\(message)f(not)h(received\))174 1286 y(if)h(\(req->push\))d(\(req->push\)\()h(req)h(\))174 1336 y(for)h(each)e(device)240 1386 y(check_device\()f(\(ndev)i(>)g (1\))h(?)f(non-blocking)e(:)j(blocking)e(\))62 1467 y Fn(This)15 b(assumes)g(that,)g(at)f(least)i(in)e(the)i(single)e(device) i(case,)f(y)o(ou)g(can)g(blo)q(c)o(k)g(in)f(c)o(hec)o(k)i(device)g(to)e (a)o(w)o(ait)g(a)h(message.)0 1517 y(If)f(this)f(is)h Fi(not)g Fn(true,)h(then)f(the)h Ff(check_device)c Fn(routine)j(should) g(return.)62 1567 y(In)g(the)h(case)g(of)e(\014nding)g(an)h(unexp)q (ected)i(message,)0 1648 y Ff(recv_unexpected)87 1698 y(Save)21 b(matched)f(data)h(\(tag,)g(source\))87 1748 y(Check)g(for)g(message)f(data)h(available)f(\(short)h(or)g(eager)g (delivery\))87 1798 y(Save)g(functions)f(\(test,wait,push\))87 1848 y(if)i(\(req->push\))d(\(req->push\)\()g(req)j(\))62 1929 y Fn(Note)16 b(that)f(this)h(do)q(es)g Fi(not)g Fn(necessarily)g(complete)f(the)h(message;)f(this)h(allo)o(ws)e (non-blo)q(c)o(king)g(receiv)o(es)j(that)e(matc)o(h)0 1979 y(an)f(unexp)q(ected)i(message)d(to)h(act)g(as)g(non-blo)q(c)o (king)f(op)q(erations.)62 2029 y(Remaining)e(concerns:)62 2079 y(If)16 b(the)g(lo)o(w)o(est)g(lev)o(els)g(send)h(a)e(message)h (with)f(a)h(non-blo)q(c)o(king)e(op)q(eration,)i(is)g(it)f(ev)o(er)i (safe)f(to)g Ff(wait)f Fn(on)g(it?)24 b(Or)16 b(do)0 2128 y(w)o(e)g(ha)o(v)o(e)f(to)g(spin)g(in)g(a)g(test)h(lo)q(op?)22 b(Should)14 b(the)i(w)o(ait)f(en)o(try)h(b)q(e)g(de\014ned)g(ONL)m(Y)f (when)h(it)f(can)g(b)q(e)h(safely)f(called?)22 b(F)m(or)0 2178 y(example,)16 b(in)h(a)g(rendezv)o(ous)i(system,)e(the)h(non-blo)q (c)o(king)e(op)q(eration)h(will)f(b)q(e)i(started)h(only)d(in)h(resp)q (onse)i(to)e(a)g(direct)0 2228 y(request;)e(could)f(y)o(ou)f(w)o(ait)g (then?)19 b(Do)13 b(w)o(e)h(lea)o(v)o(e)g(this)g(to)g(the)g(device?)19 b(Implemen)o(tation)11 b(of)i(push?)62 2278 y(MPI-2)h(dynamic)e(pro)q (cess)k(managemen)o(t.)62 2328 y(The)g(biggest)f(issue)h(here)h(is)e (the)h(supp)q(ort)g(of)e(dynamically)e(resized)17 b(\\global")c(lists.) 22 b(Mostly)m(,)15 b(the)g(implemen)o(tation)0 2377 y(needs)e(to)e (remem)o(b)q(er)g(that)g(\\grank")g(is)g(not)h(in)f Ff(MPI_COMM_WORLD)d Fn(but)k(is)f(the)h(result)h(of)e(the)h Ff(lrank_to_grank)c Fn(mapping)0 2427 y(in)13 b(the)i(comm)o(unicator.)0 2563 y Fo(6)69 b(Noncon)n(tiguous)24 b(and)f(Heterogeneous)0 2654 y Fn(The)17 b(simplest)f(implemen)o(tatio)o(n)e(for)j(the)g (noncon)o(tiguous)f(and)h(the)g(heterogeneous)i(cases)f(is)f(to)f (simply)f(to)i(cop)o(y)f(the)0 2704 y(message)f(in)o(to)f(and)h(out)g (of)f(a)h(temp)q(orary)f(bu\013er.)22 b(A)15 b(re\014nmen)o(t)g(of)f (this)i(dela)o(ys)e(the)i(allo)q(cation)d(of)i(the)g(bu\013er)h(un)o (til)e(it)965 2828 y(5)p eop %%Page: 6 7 6 6 bop 0 45 a Fn(is)16 b(needed.)28 b(F)m(or)16 b(example,)f(in)h(a)h (rendezv)o(ous)h(send,)f(the)g(allo)q(cation)e(of)h(the)h(bu\013er)h (need)f(not)g(happ)q(en)g(un)o(til)e(the)j(\\ok)0 95 y(to)c(send")h(message)g(is)f(receiv)o(ed.)21 b(This)14 b(is)h(easily)f(handled)g(b)o(y)g(mo)q(difying)e(the)j(routines)g(in)f (the)h(send)g(request)h(that)f(are)0 145 y(called)f(when)g(the)g(\\ok)g (to)f(send")i(is)f(receiv)o(ed.)19 b(The)14 b(same)f(can)i(b)q(e)f (done)g(on)g(the)g(receiv)o(e)i(side.)62 195 y(T)m(o)d(simplify)d(the)k (handling)e(of)h(heterogeneous)i(systems,)e(the)h(implemen)o(tation)c (includes)k(a)f Ff(msgrep)f Fn(\014eld,)h(whic)o(h)g(is)0 244 y(a)e(\(v)o(ery)g(small\))e(in)o(teger)j(that)f(ma)o(y)e(b)q(e)j (sen)o(t)g(b)q(et)o(w)o(een)h(heterogeneous)g(pro)q(cessors.)19 b(Completely)10 b(homogeneous)g(systems)0 294 y(can)k(ignore)g(this)g (\(through)g(the)g(use)h(of)e(macros,)g(they)h(could)g(ev)o(en)g (eliminate)e(the)j(argumen)o(t\).)62 344 y(The)f Ff(finish)e Fn(function)i(ma)o(y)d(b)q(e)j(used)h(to)e(handle)g(an)o(y)g(lo)q(cal)g (op)q(erations)h(once)g(the)g(message)f(is)g(sen)o(t/receiv)o(ed.)20 b(F)m(or)0 394 y(example,)e(in)h(a)f(simple)g(implem)o(en)o(tation)e (of)i(heterogeneous/non-con)o(tiguous)i(non)o(blo)q(c)o(king)e(receiv)o (e,)j(a)d(con)o(tiguous)0 444 y(bu\013er)g(is)g(allo)q(cated)e(and)i (passed)g(to)f Ff(MPID_IrecvContig)d Fn(to)j(start)h(the)g(receiv)o(e;) i(once)e(the)g(receiv)o(e)h(completes,)e(the)0 493 y Ff(finish)c Fn(function)g(can)h(b)q(e)h(called)e(to)h(unpac)o(k)g(the)h (data)e(and)h(to)g(free)g(the)h(temp)q(orary)e(bu\013er.)0 631 y Fo(7)69 b(Message)23 b(queue)g(managemen)n(t)0 722 y Fn(A)14 b(n)o(um)o(b)q(er)f(of)62 771 y(The)i(ma)r(jor)d(in)o (terfaces)j(used)f(are)0 854 y Fg(MPID)p 136 854 15 2 v 17 w(Searc)o(h)p 292 854 V 16 w(unexp)q(ected)p 548 854 V 15 w(queue)20 b Fn(Lo)q(ok)15 b(for)g(a)g(message)h(that)f(matc)o (hes)g(the)i Ff(\(tag,context_id,)o(sour)o(ce\))12 b Fn(in)104 904 y(the)i(unexp)q(ected)i(queue.)j(This)14 b(is)g(used)h(for)e(prob)q(e)i(op)q(erations.)0 987 y Fg(MPID)p 136 987 V 17 w(Searc)o(h)p 292 987 V 16 w(unexp)q(ected)p 548 987 V 15 w(queue)p 686 987 V 16 w(and)p 779 987 V 17 w(p)q(ost)k Fn(If)d(not)h(found)e(in)h(the)h(unexp)q(ected)i(queue,) e(add)f(to)g(the)h(p)q(osted)104 1037 y(receiv)o(e)e(queue)0 1120 y Fg(MPID)p 136 1120 V 17 w(Msg)p 241 1120 V 17 w(arriv)o(ed)k Fn(Chec)o(k)14 b(the)h(p)q(osted)g(receiv)o(e)g(queue;)f (if)f(not)h(found,)f(add)h(to)f(unexp)q(ected)k(queue)62 1203 y(These)h(in)o(terfaces)e(ha)o(v)o(e)g(b)q(een)h(designed)g(to)f (simplify)d(a)j(thread-safe)g(implemen)o(tation.)21 b(F)m(or)16 b(example,)e(the)0 1253 y Ff(MPID_Search_unexp)o(ected)o(_queu)o(e_and) o(_post)8 b Fn(needs)13 b(to)e(b)q(e)h(an)f(atomic)f(op)q(eration;)h (if)g(it)g(is)g(not)h(and)f(is)g(implemen)o(ted)0 1302 y(as)65 1385 y Ff(MPID_Search_unexpec)o(ted_q)o(ueue)65 1435 y(if)22 b(\(not)f(found\))131 1485 y(MPID_Enqueue\()e (posted_receive_qu)o(eue)g(...)i(\))0 1568 y Fn(then)c(if)f(another)h (thread)h(deliv)o(ers)f(the)g(message)f(after)h(the)h(unexp)q(ected)g (queue)g(is)f(c)o(hec)o(k)o(ed)h(but)e(b)q(efore)i(the)0 1618 y Ff(MPID_Enqueue)10 b Fn(is)j(called,)f(the)i(message)e(will)g(b) q(e)h(lost)g(\(inserted)h(b)o(y)f(the)g(second)h(thread)g(in)o(to)e (the)h(unexp)q(ected)i(queue\).)0 1668 y(The)f Ff(MPID_Msg_arrived)d Fn(is)j(essen)o(tially)f(the)i(rev)o(erse)h(of)d Ff(MPID_Search_unexp)o (ected)o(_queu)o(e_and)o(_post)o Fn(.)0 1805 y Fo(8)69 b(Miscelle)o(ous)21 b(Routines)0 1896 y Fn(common)11 b(argumen)o(t)i(pro)q(cessing)0 2033 y Fo(A)69 b(Rationale)21 b(for)j(three)e(mo)r(des)0 2124 y Fn(In)d(this)f(section)i(w)o(e)f (presen)o(t)h(a)e(p)q(erformance-based)h(rationale)f(for)g(ha)o(ving)g (three)i(mo)q(des)e(\(short,)i(eager,)g(and)e(ren-)0 2174 y(dezv)o(ous\))d(in)e(a)h(message-passing)f(send.)62 2224 y(F)m(or)f(this)f(analysis,)g(w)o(e)h(will)e(assume)h(that)h(the)g (cost)h(of)e(sending)h(a)f(single)h(message)f(of)g Fe(n)g Fn(b)o(ytes)i(is)e Fe(s)5 b Fn(+)g Fe(r)q(n)p Fn(.)18 b(W)m(e)11 b(further)0 2273 y(assume)i(that)h(the)g(size)h(of)e(the)h (\\con)o(trol")f(pac)o(k)o(et)h(\(or)g(header\))h(is)f(a)f(\014xed)h Fe(h)g Fn(b)o(ytes,)g(and)f(that)h(the)h(cost)f(to)f(cop)o(y)h(a)g(b)o (yte)0 2323 y(within)i(a)f(pro)q(cess)k(is)d Fe(c)p Fn(.)25 b(Finally)m(,)14 b(let)i Fe(f)21 b Fn(b)q(e)c(the)g(fraction)f(of)f (messages)i(that)f(arriv)o(e)g(b)q(efore)h(the)g(matc)o(hing)e(receiv)o (e)i(is)0 2373 y(p)q(osted.)i(Then)14 b(the)h(cost)f(of)g(the)g(three)h (proto)q(cols)f(can)h(b)q(e)f(summarized)e(as)615 2462 y(short)287 b(eager)168 b(rendezv)o(ous)p 461 2478 1028 2 v 486 2513 a(s+r\(n+h\)+\(1+f)s(\)cn)53 b(2s+r\(n+h\))15 b(+)f(fcn)50 b(3s+r\(n+2h\))p 461 2530 V 62 2604 a(The)13 b(v)n(arious)f Fe(cn)g Fn(terms)g(represen)o(t)i(the)f(cost)g(of)f(mo)o (ving)d(the)k(data)f(within)g(the)h(receiving)f(pro)q(cess.)20 b(F)m(or)12 b(example,)e(in)0 2654 y(the)k(short)g(proto)q(col)g(case,) g(the)g(data)g(is)f(receiv)o(ed)i(in)e(the)i(con)o(trol)e(pac)o(k)o(et) h(and)g(m)o(ust)e(b)q(e)j(copied)f(in)o(to)e(the)j(user's)f(bu\013er.)0 2704 y(If)g(the)g(message)g(w)o(as)f(unexp)q(ected,)j(it)e(needs)h(to)e (b)q(e)i(copied)f(t)o(wice.)965 2828 y(6)p eop %%Page: 7 8 7 7 bop 62 45 a Fn(With)11 b(the)h(v)n(alues)f(here,)h(w)o(e)g(can)f (compute)g(the)h(message)f(size)h(where)h(eac)o(h)f(proto)q(col)f (should)g(b)q(e)h(used.)18 b(F)m(or)11 b(example,)0 95 y(the)j(switc)o(h)h(b)q(et)o(w)o(een)g(the)f(short)h(and)f(eager)g (proto)q(col)g(should)g(happ)q(en)g(when)515 186 y Fe(s)9 b Fn(+)h Fe(r)q Fn(\()p Fe(n)f Fn(+)h Fe(h)p Fn(\))f(+)g(\(1)h(+)f Fe(f)t Fn(\))p Fe(cn)42 b Fn(=)g(2)p Fe(s)10 b Fn(+)f Fe(r)q Fn(\()p Fe(n)g Fn(+)h Fe(h)p Fn(\))f(+)h Fe(f)t(cn)462 b Fn(\(1\))787 249 y(\(1)10 b(+)f Fe(f)t Fn(\))p Fe(cn)42 b Fn(=)g Fe(s)10 b Fn(+)f Fe(f)t(cn)686 b Fn(\(2\))916 311 y Fe(cn)41 b Fn(=)h Fe(s)804 b Fn(\(3\))934 373 y Fe(n)41 b Fn(=)h Fe(s=c)765 b Fn(\(4\))0 464 y(In)14 b(other)g(w)o(ords,)f(when)h(the)h(co)q(de)f(of)f(the)h(extra)g(data)f (cop)o(y)h(equals)g(the)g(latency)g(to)f(send)i(a)e(separate)i (message,)e(switc)o(h)0 514 y(to)h(the)g(eager)h(proto)q(col.)62 564 y(W)m(e)f(can)g(do)g(the)g(same)f(thing)g(for)h(eager)g(to)g (rendezv)o(ous.)605 655 y(2)p Fe(s)c Fn(+)f Fe(r)q Fn(\()p Fe(n)g Fn(+)h Fe(h)p Fn(\))f(+)g Fe(f)t(cn)43 b Fn(=)e(3)p Fe(s)10 b Fn(+)f Fe(r)q Fn(\()p Fe(n)h Fn(+)f(2)p Fe(h)p Fn(\))552 b(\(5\))898 718 y Fe(f)t(cn)43 b Fn(=)e Fe(s)10 b Fn(+)g Fe(r)q(h)701 b Fn(\(6\))941 801 y Fe(n)42 b Fn(=)1086 773 y Fe(s)10 b Fn(+)g Fe(r)q(h)p 1086 792 114 2 v 1122 830 a(f)t(c)1897 801 y Fn(\(7\))0 915 y(Again,)15 b(when)h(the)g(cost)g(of)f(sending)g(an)g(additional)f(con)o(trol)h (message)g(\()p Fe(s)c Fn(+)g Fe(r)q(h)p Fn(\))k(is)g(the)i(same)d(as)i (the)g(cost)g(of)f(cop)o(ying)0 965 y(the)f(data)f(\()p Fe(f)t(cn)p Fn(\),)h(switc)o(h)f(to)h(the)f(rendezv)o(ous)i(proto)q (col.)j(W)m(e)13 b(can)g(appro)o(ximate)f(this)h(in)g(the)h(case)g (that)g Fe(s)e Fa(\035)f Fe(r)q(h)i Fn(to)g(just)893 1056 y Fe(n)f Fa(\031)g Fe(s=f)t(c)0 1147 y Fn(whic)o(h)i(is)g(just)g (\(1)p Fe(=f)t Fn(\))g(times)f(the)h(size)h(for)f(the)g(switc)o(h)g (from)e(short)j(to)f(eager.)62 1197 y(An)j(imp)q(ortan)o(t)f(e\013ect)i (not)f(included)g(here)i(is)d(the)i(cost)g(in)e(a)h(rendezv)o(ous)i (send)f(of)e(the)i(receiv)o(er)g(w)o(aiting)e(for)g(the)0 1247 y(sender)g(to)e(resp)q(ond)h(to)f(the)h(\\go)e(ahead")h(message.) 19 b(The)c(e\013ect)g(of)f(this)g(is)g(to)g(mo)o(v)o(e)f(the)i(p)q(oin) o(t)e(where)j(the)e(rendezv)o(ous)0 1297 y(proto)q(col)g(should)g(b)q (e)h(used)g Fi(for)f(p)n(erformanc)n(e)h(r)n(e)n(asons)f Fn(to)g(larger)g(message)g(sizes.)20 b(F)m(or)13 b(example,)g(if)g (there)i(migh)o(t)d(b)q(e)j(an)0 1347 y(a)o(v)o(erage)f(dela)o(y)f Fe(d)p Fn(,)g(the)i(form)o(ula)c(for)j(switc)o(hing)f(b)q(et)o(w)o(een) i(eager)g(and)f(rendezv)o(ous)h(b)q(ecomes)878 1457 y Fe(n)d Fa(\031)963 1429 y Fe(s)e Fn(+)g Fe(d)p 963 1448 92 2 v 988 1486 a(f)t(c)1060 1457 y(:)0 1571 y Fn(if)15 b Fe(d)f Fa(\035)g Fe(s)i Fn(\(for)f(example,)f(a)i(timer)e(in)o (terrupt)i(ev)o(ery)h(few)e(h)o(undred)i(milliseconds\),)d(then)i Fe(n)f Fn(can)h(b)q(e)g(v)o(ery)g(large;)g(larger)0 1620 y(p)q(erhaps)f(than)f(an)o(y)f(message)h(that)g(is)g(lik)o(ely)e(to)i (b)q(e)g(sen)o(t.)62 1670 y(The)h(analysis)e(could)h(b)q(e)h(in)o(v)o (erted)f(to)g(solv)o(e)g(for)g Fe(d)g Fn(instead)g(of)f Fe(n)p Fn(,)h(if)f(the)i(largest)f(allo)o(w)o(ed)f Fe(n)h Fn(for)g(the)g(eager)h(proto)q(col)0 1720 y(\(b)q(ecause)e(of)d(system) h(bu\013er)g(limitations,)d(for)j(example\))e(is)i(already)g(kno)o(wn.) 16 b(In)11 b(this)g(case,)h(if)e(the)h(time)f Fe(d)g Fn(do)q(es)i(represen)o(t)0 1770 y(an)h(o)q(ccasional)f(timer)g(in)o (terrupt,)h(then)h(the)f(cost)h(of)e(this)h(in)o(terrupt)h(itself)e (\(particularly)g(when)i(it)e(disco)o(v)o(ers)i(nothing)e(to)0 1820 y(do\))i(needs)h(to)f(b)q(e)g(included)g(as)g(w)o(ell.)k(Suc)o(h)c (implemen)o(tatio)o(n-sp)q(eci\014c)f(analysis)g(are)h(left)g(to)f(the) i(reader.)965 2828 y(7)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF .