Bill
%!PS-Adobe-2.0
%%Creator: dvips, version 5.4 (C) 1986-90 Radical Eye Software
%%Title: temp.dvi
%%Pages: 32 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR}B /@letter{/vsize 10 N}B /@landscape{
/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{/vsize 15.5531 N
}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 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 /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 /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 /E{pop nn dup definefont setfont}B /ch-image{ch-data dup type /stringtype
ne{ctr get /ctr ctr 1 add N}if}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 /ctr 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}B /eop{clear SI restore showpage userdict /eop-hook
known{eop-hook}if}B /@start{userdict /start-hook known{start-hook}if
/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}B /p /show load N /RMat[1 0 0 -1 0 0]N
/BDot 8 string N /v{/ruley X /rulex X V}B /V{gsave TR -.1 -.1 TR rulex ruley
scale 1 1 false RMat{BDot}imagemask 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 /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 /w{0 rmoveto}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
/eos{clear 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 false N /BBcalc false N
/p 3 def}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{
@scaleunit div /vsc X}B /@hsize{/hs X /CLIP true N}B /@vsize{/vs X /CLIP true
N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X}
B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X /BBcalc true N}B
/magscale true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{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}N /psfts{S 65536 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 @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}B /@setspecial{CLIP{newpath 0 0 moveto hs 0
rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}{initclip}ifelse ho vo TR
hsc vsc scale ang rotate BBcalc{rwi urx llx sub div dup scale llx neg lly neg
TR}if /showpage{}N /erasepage{}N /copypage{}N newpath}B /@endspecial{grestore
clear SpecialSave restore end}B /@defspecial{SDict begin}B /@fedspecial{end}B
/li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1
setlinecap newpath}B /st{stroke SaveX SaveY moveto}B /fil{fill SaveX SaveY
moveto}B /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}B end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 1 111 df<1E07802318C023A06043C070438070
4380708700E00700E00700E00700E00E01C00E01C00E01C00E03821C03841C07041C07081C0308
3803101801E017147E931B>110 D E /Fb 7 112 df<FFC0FFC0FFC00A037D890F>45
D<03CC063C0C3C181C3838303870387038E070E070E070E070E0E2C0E2C0E261E462643C380F12
7B9115>97 D<01F007080C08181C3838300070007000E000E000E000E000E000E008E010602030
C01F000E127B9113>99 D<1F800380038007000700070007000E000E000E000E001C001C001C00
1C0038003800380038007000700070007000E400E400E400E40068003800091D7C9C0B>108
D<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C07
01C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01C01D127C9122
>I<3C3C002646004687004707008E07008E07000E07000E07001C0E001C0E001C0E001C1C0038
1C40381C40383840383880701900300E0012127C9117>I<01E007180C0C180C380C300E700E70
0EE01CE01CE01CE018E038E030E06060C031801E000F127B9115>I E /Fc
1 16 df<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E010107E
9115>15 D E /Fd 18 119 df<70F8F8F8700505788416>46 D<1FE0007FF8007FFC00783C0030
1E00000E00000E0003FE001FFE007E0E00F00E00E00E00E00E00F01E00F83E007FFFE03FE7E00F
83E013127E9116>97 D<03F80FFE1FFE3C1E780C7000F000E000E000E000E000F000700778073E
0F1FFE0FFC03F010127D9116>99 D<003F00007F00003F0000070000070000070000070003C700
0FF7003FFF003C1F00780F00F00700F00700E00700E00700E00700E00700F00700F00F00781F00
7C3F003FFFE01FF7F007C7E014197F9816>I<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFF
E000E000700778073C0F1FFE0FFC03F010127D9116>I<001F00007F8000FF8001E78001C30001
C00001C0007FFF00FFFF00FFFF0001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C0003FFE007FFF003FFE0011197F9816>I<03E3C00FFFE01FFFE01E3CC0
3C1E00380E00380E00380E003C1E001E3C001FFC001FF8003BE0003800003800001FFC001FFF00
3FFFC07803C0F001E0E000E0E000E0E000E0F001E07C07C03FFF800FFE0003F800131C7F9116>
I<7E0000FE00007E00000E00000E00000E00000E00000E3C000EFF000FFF800F87800F03800F03
800E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01519
809816>I<018003C003C0018000000000000000007FC07FC07FC001C001C001C001C001C001C0
01C001C001C001C001C001C07FFFFFFF7FFF101A7D9916>I<F9C380FFEFC0FFFFE03E7CE03C78
E03870E03870E03870E03870E03870E03870E03870E03870E03870E03870E0FE7CF8FE7CF8FE3C
781512809116>109 D<7E3C00FEFF007FFF800F87800F03800F03800E03800E03800E03800E03
800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E0000FF8001F
FC003C1E00780F00700700E00380E00380E00380E00380E00380F00780700700780F003C1E001F
FC000FF80003E00011127E9116>I<7E3E00FEFF807FFFC00F83E00F01E00E00F00E00F00E0070
0E00700E00700E00700E00F00F00E00F01E00F83C00FFFC00EFF000E3C000E00000E00000E0000
0E00000E00000E00007FC000FFE0007FC000141B809116>I<FF0FC0FF3FE0FF7FE007F04007E0
0007C000078000078000070000070000070000070000070000070000070000FFFC00FFFC00FFFC
0013127F9116>114 D<0FEC3FFC7FFCF03CE01CE01CF0007F801FF007FC003EE00EE00EF00EF8
1EFFFCFFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF0007
000007000007000007000007000007000007000007010007038007038007078007878003FF0003
FE0000F80011177F9616>I<7E1F80FE3F807E1F800E03800E03800E03800E03800E03800E0380
0E03800E03800E03800E03800E07800F0F800FFFF007FFF803E3F01512809116>I<7F1FC0FF1F
E07F1FC01C07001E0F000E0E000E0E000E0E00071C00071C00071C00071C0003B80003B80003B8
0001F00001F00000E00013127F9116>I E /Fe 35 122 df<001C0000003E0000003E0000002E
0000006700000067000000E7800000C7800000C3800001C3C0000183C0000181C0000381E00003
81E0000700F0000700F0000600F0000E0078000FFFF8000FFFF8001C003C001C003C0018003C00
38001E0038001E0070001F0070000F0070000F00E0000780191D7F9C1C>65
D<003FC000FFF003C0F00780300F00001E00003C00003C0000780000780000780000F00000F000
00F00000F00000F00000F00000F00000F00000F000007800007800007800003C00003C00001E00
000F000807801803C07800FFF0003F80151F7D9D1B>67 D<FFFC00FFFF00F00F80F003E0F001F0
F000F0F00078F00038F0003CF0003CF0001CF0001EF0001EF0001EF0001EF0001EF0001EF0001E
F0001EF0003CF0003CF0003CF00078F000F0F000F0F003E0F00FC0FFFF00FFFC00171D7C9C1E>
I<FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000FFFFC0FFFFC0121D7C9C19>I<FFFF80FFFF80F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000FFFF00FFFF00F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000111D7C9C18>I<003F8001FFF0
03C0F80780380F00181E00003C00003C0000780000780000780000F00000F00000F00000F00000
F00000F00000F007F8F007F8F000387800387800387800383C00383C00381E00380F0038078038
03C0F801FFF0003F80151F7D9D1C>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000
F0F000F0F000F0F000F0F000F0F000F0FFFFF0FFFFF0F000F0F000F0F000F0F000F0F000F0F000
F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0141D7C9C1D>I<F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0041D7C9C0C>I<F000F000F000F000F000
F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F0
00F000F000FFFEFFFE0F1D7C9C16>76 D<FC0007E0FC0007E0FC0007E0EE000DE0EE000DE0EE00
0DE0E70019E0E70019E0E70019E0E78039E0E38031E0E3C071E0E3C071E0E1C061E0E1C061E0E1
E0E1E0E1E0E1E0E0E0C1E0E0F1C1E0E07181E0E07181E0E07181E0E03B01E0E03B01E0E03B01E0
E01E01E0E01E01E0E01E01E0E00001E01B1D7C9C24>I<FC0070FC0070FE0070EE0070EF0070E7
0070E70070E78070E38070E3C070E3C070E1E070E1E070E0E070E0F070E07070E07870E07870E0
3C70E03C70E01C70E01E70E00E70E00E70E00F70E00770E007F0E003F0E003F0141D7C9C1D>I<
003F000001FFE00003FFF00007C0F8000F807C001E001E003E001F003C000F0078000780780007
8078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F800
07C078000780780007807C000F803C000F003E001F001F003E000F807C0007C0F80003FFF00001
FFE000003F00001A1F7E9D1F>I<FFFC00FFFF00F00F80F003C0F001E0F000F0F000F0F000F0F0
00F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFE00F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000141D7C9C1B>I<FFF800FFFF00F00F80
F003C0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFF00FFF800
F03C00F01C00F01E00F00F00F00F00F00780F00780F003C0F003C0F001E0F000F0F000F0F00078
151D7C9C1B>82 D<03F8000FFE001C0F00380700700300600000E00000E00000E00000E00000F0
00007800007F00003FE0001FFC0007FE0001FF00001F800007800003C00003C00001C00001C000
01C00001C0C00180E00380F007007C0E001FFC0007F000121F7E9D17>I<FFFFFF80FFFFFF8000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000
001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000191D7F9C1C>I<F00070
F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070
F00070F00070F00070F00070F00070F00070F00070F00070F000707800E07800E03C01C01E0380
0F078007FE0001F800141E7C9C1D>I<F0000380F00003807800070078000700780007003C000E
003C000E003E000E001E001C001E001C000F0038000F0038000F003800078070000780700003C0
600003C0E00003C0E00001E0C00001E1C00001E1C00000F1800000F38000007300000073000000
7B0000003E0000003E0000001C0000191D7F9C1C>I<F000F00070F000F80070F000F800707800
B8006078019C00E078019C00E078019C00E03C039C01C03C031E01C03C030E01C01E030E01801E
070F03801E070F03801E060703800F060703000F0E0787000F0C078700070C038600070C038600
078C038E00079803CE00039801CC00039801CC00039801CC0001D001C80001D000D80001F000F8
0001E000F80000E0007000241D7F9C27>I<F80001E07C0001C03E0003801E0007801F0007000F
800E0007801E0007C01C0003E03C0001E0380001F0700000F0F0000078E000007DC000003DC000
001F8000001F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F00001B1D809C1C>89 D<0FC03FF07FF87038401C001C001C
00FC0FFC3FFC781CE01CE01CE01CF07C7FFC7FDC3F1C0E127E9114>97 D<07E00FF81FFC3C1C70
047000E000E000E000E000E000E000700070043C1C1FFC0FF807E00E127E9112>99
D<07C01FE03FF078787018601CFFFCFFFCFFFCE000E000E000700070043C1C3FFC1FF807E00E12
7E9112>101 D<00FC01FC03FC07000E000E000E000E000E000E000E00FFE0FFE00E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E1D809C0D>I<F0F0F0F00000
0000000000707070707070707070707070707070707070041D7E9C0A>105
D<E3F03F00EFF8FF80FFFDFFC0F81F81E0F00F00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E
00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E01B127D9122
>109 D<E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE0
1C0E127D9115>I<03F0000FFC001FFE003C0F00780780700380E001C0E001C0E001C0E001C0E0
01C0F003C07003807807803C0F001FFE000FFC0003F00012127F9115>I<E3E0EFF0FFF8F87CF0
1CE01EE00EE00EE00EE00EE00EE00EE01CF03CF87CFFF8EFF0E3C0E000E000E000E000E000E000
E000E0000F1A7D9115>I<078E1FEE3FFE7C3E781E700EE00EE00EE00EE00EE00EE00EF00E701E
7C3E3FFE1FEE0F8E000E000E000E000E000E000E000E000E0F1A7E9115>I<E380E780EF80FC00
F800F000F000E000E000E000E000E000E000E000E000E000E000E00009127D910E>I<1FC03FF0
7FF0F030E000E000F0007F003FC01FE000F0003800388038F078FFF07FE01FC00D127F9110>I<
1C001C001C001C001C001C00FFE0FFE01C001C001C001C001C001C001C001C001C001C001C001C
001C201FF00FF007C00C187F970F>I<E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE0
1CE01CE01CE07CFFFC7FDC3F1C0E127D9115>I<E007E007700E700E780E381C381C1C181C380C
380E300E70067007600360034001C001C001800180030003000700FE00FC00F800101A7F9113>
121 D E /Ff 67 124 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C000
0E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0
000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01
C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E0000
0E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1
C00303C00703C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C07FCFF8151D809C17>I<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E0
18000E00E000000E00E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00
E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E
00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80
211D809C23>I<60F0F0F0F0F0F0F060606060606060606060606060000000000060F0F060041E
7C9D0C>33 D<6060F0F0F8F86868080808080808101010102020404080800D0C7F9C15>I<60F0
F8680808081010204080050C7C9C0C>39 D<004000800100020006000C000C0018001800300030
007000600060006000E000E000E000E000E000E000E000E000E000E000E000E000600060006000
700030003000180018000C000C00060002000100008000400A2A7D9E10>I<8000400020001000
18000C000C000600060003000300038001800180018001C001C001C001C001C001C001C001C001
C001C001C001C0018001800180038003000300060006000C000C00180010002000400080000A2A
7E9E10>I<01800180018001804182F18F399C0FF003C003C00FF0399CF18F4182018001800180
018010127E9E15>I<60F0F0701010101020204080040C7C830C>44 D<FFE0FFE00B0280890E>I<
60F0F06004047C830C>I<00030003000700060006000E000C001C001800180038003000300070
0060006000E000C000C001C001800380030003000700060006000E000C000C001C001800180038
003000700060006000E000C000C00010297E9E15>I<030007003F00C700070007000700070007
00070007000700070007000700070007000700070007000700070007000700070007000F80FFF8
0D1C7C9B15>49 D<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C00
380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07E01830201C20
1C781E780E781E381E001C001C00180030006007E00030001C001C000E000F000F700FF80FF80F
F80FF00E401C201C183007E0101D7E9B15>I<60F0F0600000000000000000000060F0F0600412
7C910C>58 D<0FE03038401CE00EF00EF00EF00E000C001C0030006000C0008001800100010001
000100010001000000000000000000000003000780078003000F1D7E9C14>63
D<000600000006000000060000000F0000000F0000000F00000017800000178000001780000023
C0000023C0000023C0000041E0000041E0000041E0000080F0000080F0000180F8000100780001
FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F001E001F00FF80FFF0
1C1D7F9C1F>65 D<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F
003C0F00780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F
001E0F001E0F003C0F0078FFFFE0181C7E9B1D>I<001F808000E0618001801980070007800E00
03801C0003801C00018038000180780000807800008070000080F0000000F0000000F0000000F0
000000F0000000F0000000F0000000F0000000700000807800008078000080380000801C000100
1C0001000E000200070004000180080000E03000001FC000191E7E9C1E>I<FFFFC0000F00F000
0F003C000F000E000F0007000F0007000F0003800F0003C00F0001C00F0001C00F0001E00F0001
E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C00F0003C00F00
03800F0007800F0007000F000E000F001C000F007000FFFFC0001B1C7E9B20>I<FFFFFC0F003C
0F000C0F00040F00040F00060F00020F00020F02020F02000F02000F02000F06000FFE000F0600
0F02000F02000F02000F02010F00010F00020F00020F00020F00060F00060F000C0F003CFFFFFC
181C7E9B1C>I<FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02040F02000F02
000F02000F06000FFE000F06000F02000F02000F02000F02000F00000F00000F00000F00000F00
000F00000F00000F8000FFF800161C7E9B1B>I<001F808000E0618001801980070007800E0003
801C0003801C00018038000180780000807800008070000080F0000000F0000000F0000000F000
0000F0000000F0000000F000FFF0F0000F80700007807800078078000780380007801C0007801C
0007800E00078007000B800180118000E06080001F80001C1E7E9C21>I<FFF3FFC00F003C000F
003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00
0F003C000FFFFC000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
000F003C000F003C000F003C000F003C000F003C00FFF3FFC01A1C7E9B1F>I<FFF00F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F00FFF00C1C7F9B0F>I<FFF8000F80000F00000F00000F00000F00000F00000F
00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00080F00080F
00080F00180F00180F00100F00300F00700F01F0FFFFF0151C7E9B1A>76
D<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC001780009E002780009E002
780008F004780008F004780008F0047800087808780008780878000878087800083C107800083C
107800083C107800081E207800081E207800081E207800080F407800080F407800080780780008
07807800080780780008030078001C03007800FF8307FF80211C7E9B26>I<FF007FC00F800E00
0F8004000BC0040009E0040009E0040008F0040008F8040008780400083C0400083C0400081E04
00080F0400080F0400080784000807C4000803C4000801E4000801E4000800F40008007C000800
7C0008003C0008003C0008001C0008000C001C000C00FF8004001A1C7E9B1F>I<003F800000E0
E0000380380007001C000E000E001C0007003C00078038000380780003C0780003C0700001C0F0
0001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0
780003C0380003803C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E
9C20>I<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F00
3C0F00780F00E00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F0000FFF000171C7E9B1C>I<FFFF00000F01E0000F0078000F003C000F001C000F00
1E000F001E000F001E000F001E000F001C000F003C000F0078000F01E0000FFF00000F03C0000F
00E0000F00F0000F0078000F0078000F0078000F0078000F0078000F0078000F0078100F007810
0F0038100F003C20FFF01C20000007C01C1D7E9B1F>82 D<07E0801C1980300580700380600180
E00180E00080E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F80
0007C00003C00001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E
9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F00
20000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC001B
1C7F9B1E>I<FFF07FC00F000E000F0004000F0004000F0004000F0004000F0004000F0004000F
0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F000400
0F0004000F0004000F0004000F0004000700080007800800038010000180100000C020000070C0
00001F00001A1D7E9B1F>I<FFE00FF01F0003C00F0001800F0001000F80030007800200078002
0003C0040003C0040003C0040001E0080001E0080001F0080000F0100000F0100000F830000078
200000782000003C4000003C4000003C4000001E8000001E8000001F8000000F0000000F000000
06000000060000000600001C1D7F9B1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F
001F00100F001F001007801F00200780278020078027802003C027804003C043C04003C043C040
03E043C04001E081E08001E081E08001E081E08000F100F10000F100F10000F100F100007900FA
00007A007A00007A007A00003E007C00003C003C00003C003C00003C003C000018001800001800
18000018001800281D7F9B2B>I<08081010202040404040808080808080B0B0F8F8787830300D
0C7A9C15>92 D<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C
00601C00E01C40E01C40E01C40603C40304E801F870012127E9115>97 D<FC00001C00001C0000
1C00001C00001C00001C00001C00001C00001C00001C00001C7C001D86001E03001C01801C01C0
1C00C01C00E01C00E01C00E01C00E01C00E01C00E01C00C01C01C01C01801E030019060010F800
131D7F9C17>I<07E00C301878307870306000E000E000E000E000E000E0006000700430041808
0C3007C00E127E9112>I<003F0000070000070000070000070000070000070000070000070000
070000070003E7000C1700180F00300700700700600700E00700E00700E00700E00700E00700E0
0700600700700700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006
E006FFFEE000E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E
0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C00
381C00381C001818001C38000C300013C0001000003000001800001FF8001FFF001FFF80300380
6001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215>I<FC00001C00001C00
001C00001C00001C00001C00001C00001C00001C00001C00001C7C001C87001D03001E03801C03
801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9F
F0141D7F9C17>I<18003C003C0018000000000000000000000000000000FC001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<00C001E001
E000C000000000000000000000000000000FE000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>I<FC00
001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C3FC01C0F001C0C
001C08001C10001C20001C40001CE0001DE0001E70001C78001C38001C3C001C1C001C0E001C0F
001C0F80FF9FE0131D7F9C16>I<FC001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>
I<FC7E07E0001C838838001D019018001E01E01C001C01C01C001C01C01C001C01C01C001C01C0
1C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01
C01C001C01C01C00FF8FF8FF8021127F9124>I<FC7C001C87001D03001E03801C03801C03801C
03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF014127F91
17>I<03F0000E1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001C0
6001807003803003001806000E1C0003F00012127F9115>I<FC7C001D86001E03001C01801C01
C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C01801E03001D06001CF8
001C00001C00001C00001C00001C00001C00001C0000FF8000131A7F9117>I<03C1000C330018
0B00300F00700700700700E00700E00700E00700E00700E00700E00700600700700700300F0018
0F000C370007C700000700000700000700000700000700000700000700003FE0131A7E9116>I<
FCE01D301E781E781C301C001C001C001C001C001C001C001C001C001C001C001C00FFC00D127F
9110>I<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608F
C00D127F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C
001C001C001C101C101C101C101C100C100E2003C00C1A7F9910>I<FC1F801C03801C03801C03
801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C07800C07800E1B
8003E3F014127F9117>I<FF07E03C03801C01001C01000E02000E020007040007040007040003
880003880003D80001D00001D00000E00000E00000E00000400013127F9116>I<FF3FCFE03C0F
03801C0701801C0701001C0B01000E0B82000E0B82000E1182000711C4000711C4000720C40003
A0E80003A0E80003C0680001C0700001C0700001803000008020001B127F911E>I<7F8FF00F03
800F030007020003840001C80001D80000F00000700000780000F800009C00010E00020E000607
000403801E07C0FF0FF81512809116>I<FF07E03C03801C01001C01000E02000E020007040007
040007040003880003880003D80001D00001D00000E00000E00000E00000400000400000800000
8000F08000F10000F300006600003C0000131A7F9116>I<7FFC70386038407040F040E041C003
C0038007000F040E041C043C0C380870087038FFF80E127F9112>I<FFFFF01401808B15>I
E /Fg 8 118 df<78FCFCFCFC7800000000000078FCFCFCFC7806127D910D>58
D<FFFFF800FFFFFF000FC01FC00FC007E00FC001F00FC001F80FC000F80FC000FC0FC0007C0FC0
007C0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007C0F
C0007C0FC0007C0FC000F80FC000F80FC001F00FC007E00FC01FC0FFFFFF00FFFFF8001F1C7E9B
25>68 D<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000F800
007800007801803C01801C03000E0E0003F80011127E9115>99 D<1E003F003F003F003F001E00
000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F
001F001F00FFE0FFE00B1E7F9D0E>105 D<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00F8
1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>
110 D<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800F8
7800F07800F03C01E01E03C00F078001FC0015127F9118>I<1FD830786018E018E018F000FF80
7FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>115
D<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F01F80F01F80786FF01F8FF18127F911B>117 D E /Fh 10 58
df<1F00318060C04040C060C060C060C060C060C060C060C060404060C031801F000B107F8F0F>
48 D<0C003C00CC000C000C000C000C000C000C000C000C000C000C000C000C00FF8009107E8F
0F>I<1F00618040C08060C0600060006000C00180030006000C00102020207FC0FFC00B107F8F
0F>I<1F00218060C060C000C0008001800F00008000400060C060C060804060801F000B107F8F
0F>I<0300030007000F000B001300330023004300C300FFE003000300030003001FE00B107F8F
0F>I<20803F002C002000200020002F0030802040006000600060C06080C061801F000B107F8F
0F>I<0780184030C060C06000C000CF00F080E040C060C060C060406060C030801F000B107F8F
0F>I<40007FE07FC08080808001000200040004000C0008000800180018001800180018000B11
7E900F>I<1F00318060C060C060C071803F000F00338061C0C060C060C060404060801F000B10
7F8F0F>I<1F00318060C0C040C060C060C06040E021E01E600060004060C0608043003E000B10
7F8F0F>I E /Fi 78 126 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8F8
F870051C779B18>33 D<4010E038F078E038E038E038E038E038E038E038E038E038E03860300D
0E7B9C18>I<030600078F00078F00078F00078F00078F00078F007FFFC0FFFFE0FFFFE07FFFC0
0F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07FFFC01E3C001E3C001E3C00
1E3C001E3C001E3C000C1800131C7E9B18>I<01C00007E0000FF0000E70001C38001C38001C38
001C38001C73F01C73F01CE3F00FE3800FC7000F87000F07001F0E003F0E007B8E0073DC00E1DC
00E0F800E0F800E07070E0787070FC707FFFE03FCFE00F03C0141C7F9B18>38
D<387C7C7E3E0E0E0E1C1C38F8F0C0070E789B18>I<007000F001E003C007800F001E001C0038
0038007000700070007000E000E000E000E000E000E000E000E000700070007000700038003800
1C001E000F00078003C001F000F000700C24799F18>I<6000F00078003C001E000F0007800380
01C001C000E000E000E000E00070007000700070007000700070007000E000E000E000E001C001
C0038007800F001E003C007800F00060000C247C9F18>I<01C00001C00001C00001C000C1C180
F1C780F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C000
01C00001C00011147D9718>I<00600000F00000F00000F00000F00000F00000F00000F0007FFF
C0FFFFE0FFFFE07FFFC000F00000F00000F00000F00000F00000F00000F00000600013147E9718
>I<1C3E7E7F3F1F070E1E7CF860080C788518>I<7FFF00FFFF80FFFF807FFF0011047D8F18>I<
3078FCFC78300606778518>I<000300000780000780000F80000F00001F00001E00001E00003E
00003C00007C0000780000780000F80000F00001F00001E00003E00003C00003C00007C0000780
000F80000F00000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F000
0060000011247D9F18>I<01F00007FC000FFE001F1F001C07003803807803C07001C07001C0E0
00E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C038
03801C07001F1F000FFE0007FC0001F000131C7E9B18>I<01800380038007800F803F80FF80FB
80438003800380038003800380038003800380038003800380038003800380038003807FFCFFFE
7FFC0F1C7B9B18>I<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E0
0000E00001C00001C00003C0000780000F00001E00003C0000780000F00001E00007C0000F8000
1E00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C07801
C03001C00001C00003C0000380000F0003FF0003FE0003FF000007800003C00001C00000E00000
E00000E0F000E0F000E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B18>I<001F0000
3F0000770000770000E70001E70001C7000387000787000707000E07001E07003C070038070078
0700F00700FFFFF8FFFFF8FFFFF8000700000700000700000700000700000700007FF000FFF800
7FF0151C7F9B18>I<1FFF803FFF803FFF80380000380000380000380000380000380000380000
3800003BF8003FFE003FFF003C07801803C00001C00000E00000E06000E0F000E0F000E0E001C0
7003C07C0F803FFF001FFC0003F000131C7E9B18>I<03F8000FFE001FFF003E0F803803807001
C07001C07001C07001C03803803C07801FFF0007FC000FFE001F1F003C07807001C0F001E0E000
E0E000E0E000E0E000E07001C07803C03E0F801FFF000FFE0003F800131C7E9B18>56
D<3078FCFC783000000000000000003078FCFC78300614779318>58 D<183C7E7E3C1800000000
00000000183C7E7E3E1E0E1C3C78F060071A789318>I<000300000780001F80003F00007E0001
FC0003F00007E0001FC0003F00007E0000FC0000FC00007E00003F00001FC00007E00003F00001
FC00007E00003F00001F8000078000030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000
000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<600000F00000FC00007E00
003F00001FC00007E00003F00001FC00007E00003F00001F80001F80003F00007E0001FC0003F0
0007E0001FC0003F00007E0000FC0000F0000060000011187D9918>I<0FF0003FFC007FFF0070
0F00F00380F00380600780000F00003E00007C0001F00001E00003C00003C00003C00003C00003
C00003800000000000000000000000000000000003800007C00007C00007C000038000111C7D9B
18>I<00700000F80000F80000D80000D80001DC0001DC0001DC00018C00038E00038E00038E00
038E000306000707000707000707000707000FFF800FFF800FFF800E03800E03801C01C01C01C0
7F07F0FF8FF87F07F0151C7F9B18>65 D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C
00E01C00E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C
00701C00701C00F01C00E01C03E0FFFFC0FFFF80FFFE00141C7F9B18>I<00F8E003FEE007FFE0
0F07E01E03E03C01E03800E07000E07000E0700000E00000E00000E00000E00000E00000E00000
E00000E000007000007000E07000E03800E03C00E01E01C00F07C007FF8003FE0000F800131C7E
9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E01C00E01C00F01C00701C00
701C00701C00701C00701C00701C00701C00701C00F01C00E01C00E01C01E01C01C01C03C01C0F
807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C00701C00701C00701C00701C
00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E001C0E001C00001C00001C
00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18>I<FFFFE0FFFFE0FFFFE0
1C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001C1C001FFC001FFC001FFC001C1C00
1C1C001C1C001C00001C00001C00001C00001C00001C00001C0000FFC000FFC000FFC000131C7E
9B18>I<01F1C003FDC00FFFC01F0FC01C03C03803C03801C07001C07001C0700000E00000E000
00E00000E00000E00000E00FF0E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0F
C00FFFC003FDC001F1C0141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C
01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C
01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF00
01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF807FFF00111C7D
9B18>I<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00700E00
707FFFF0FFFFF07FFFF0141C7F9B18>76 D<FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E0
3B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E03870E03870E03800E0
3800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07
F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31
C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C
7F9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E0
0380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F0078070070078
0F007FFF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C0070
1C00701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C0000
1C00001C00001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<0FF8003FFE007FFF
00780F00700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E003
80E00380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE000FFC00001C
00001E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF001C0F801C03801C
03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F001C07001C03801C
03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F87F00F0161C7F9B18>I<03F380
1FFF803FFF807C0F80700780E00380E00380E00380E000007000007800003F00001FF00007FE00
00FF00000F800003C00001C00000E00000E06000E0E000E0E001E0F001C0F80780FFFF80FFFE00
E7F800131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E070380070000070000070
000070000070000070000070000070000070000070000070000070000070000070000070000070
0000700000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C
00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C
00701C00701C00701C00700E00E00F01E00783C003FF8001FF00007C00171C809B18>I<FE03F8
FE03F8FE03F87000707000707000703800E03800E03800E03800E03800E038F8E038F8E039DCE0
39DCE019DCC019DCC019DCC0198CC01D8DC01D8DC01D8DC01D8DC00D8D800D05800F07800F0780
0E0380151C7F9B18>87 D<7F8FE07F9FE07F8FE00E07000F0700070E00078E00039C0003DC0001
F80001F80000F00000F00000700000F00000F80001F80001DC00039E00038E00070F000707000E
07800E03801E03C07F07F0FF8FF87F07F0151C7F9B18>I<FF07F8FF07F8FF07F81C01C01E03C0
0E03800F0780070700070700038E00038E0001DC0001DC0001DC0000F80000F800007000007000
00700000700000700000700000700000700000700001FC0003FE0001FC00151C7F9B18>I<FFF8
FFF8FFF8E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000FFF8FFF8FFF80D24779F18>91
D<FFF8FFF8FFF80038003800380038003800380038003800380038003800380038003800380038
00380038003800380038003800380038003800380038003800380038FFF8FFF8FFF80D247F9F18
>93 D<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00781E00300E0000
070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F003FFFF01F
FBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E
000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F00
700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E078038
0300700000700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03C01F
FF8007FF0001FC0012147D9318>I<001F80003F80001F80000380000380000380000380000380
03E3800FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380E00380E00380
700780700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F
00380780700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03
C01FFF8007FF0001FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001
C0007FFFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFFF8
1E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E000380000
1C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800F07E03F01FFFC0
0FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E
000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C00003
80000000000000000000000000007FC000FFC0007FC00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FFFF00111D7C9C
18>I<FE0000FE0000FE00000E00000E00000E00000E00000E00000E3FF00E7FF00E3FF00E0780
0E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F0E000E0F000E07000E03800E03C0
FFC7F8FFC7F8FFC7F8151C7F9B18>107 D<7FE000FFE0007FE00000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000FFFBF800
7FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C
001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F001914819318>
I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0000FFE001FFF003E
0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E
0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E0070
0E00380E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF800E3E00
0E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318>I<01E3
8007FB801FFF803E1F80380F80700780700780E00380E00380E00380E00380E00380E003807007
80700780380F803C1F801FFF800FFB8003E3800003800003800003800003800003800003800003
80003FF8003FF8003FF8151E7E9318>I<7F87E0FF9FF07FBFF803F87803F03003E00003C00003
C0000380000380000380000380000380000380000380000380000380007FFE00FFFF007FFE0015
147F9318>I<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC0003FE00
001F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<0180000380
000380000380000380007FFFC0FFFFC0FFFFC00380000380000380000380000380000380000380
000380000380000380400380E00380E00380E001C1C001FFC000FF80003E0013197F9818>I<7E
07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E
00E00E00E00E01E00F03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E03C0
0E03800E03800E0380070700070700070700038E00038E00038E00038E0001DC0001DC0001DC00
00F80000F80000700015147F9318>I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01
C01C71C01CF9C01CF9C01CD9C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F800707001514
7F9318>I<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F80000F80000700000F00000
F80001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF8
7F8FF00E01C00E03800E0380070380070700070700038700038600038E0001CE0001CE0000CC00
00CC0000DC0000780000780000780000700000700000700000F00000E00079E0007BC0007F8000
3F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C0700780000F00001E00003C
0000F80001F00003C0000780000F00701E00703C0070780070FFFFF0FFFFF0FFFFF014147F9318
>I<0007E0001FE0007FE000780000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00001E0007FC000FF8000FF80007FC00001E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E000007800007FE0001FE00007E013247E9F18>I<
7C0000FF0000FFC00003C00000E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00000E00000F000007FC0003FE0003FE0007FC000F00000E00000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E00003C000FFC000FF00007C000013247E9F18>125
D E /Fj 52 122 df<007000E001C00380078007000E001E001E003C003C003C00780078007800
78007000F000F000F000F000F000F000F000F000F000F000F000F000700078007800780078003C
003C003C001E001E000E0007000780038001C000E000700C2E7EA112>40
D<E000700038001C001E000E0007000780078003C003C003C001E001E001E001E000E000F000F0
00F000F000F000F000F000F000F000F000F000F000E001E001E001E001E003C003C003C0078007
8007000E001E001C0038007000E0000C2E7DA112>I<787878781830306060E0050A7D830D>44
D<FFC0FFC0FFC00A037F8B0F>I<F0F0F0F004047C830D>I<00030003000700060006000E000C00
0C001C0018001800380030003000700060006000E000C000C001C0018001800180038003000300
0700060006000E000C000C001C0018001800380030003000700060006000E000C000C000102D7D
A117>I<003E00003E00005E00005E0000DE0001DE00019E00039E00039E00079E00071E000F1E
000E1E001E1E003C1E003C1E00781E00781E00F01E00FFFFF0FFFFF0FFFFF0001E00001E00001E
00001E00001E00001E00001E00001E00141E7F9D17>52 D<001F0000001F0000003F8000003B80
00003B8000007BC0000073C0000071C00000F1E00000E1E00000E0E00001E0F00001E0F00001C0
F00003C0780003C078000380780007803C0007803C0007003C000FFFFE000FFFFE000FFFFE001E
000F001E000F003C000F803C0007803C000780780007C0780003C0780003C0F00003E01B207F9F
1E>65 D<001FC000FFF801FFFC03E03C07800C0F00001E00003E00003C00007C00007800007800
00780000F00000F00000F00000F00000F00000F00000F00000F000007800007800007800007C00
003C00003E00001E00000F000207800E03E03E01FFFC00FFF0001FC017227DA01D>67
D<FFFC00FFFF80FFFFC0F007E0F001F0F000F8F00078F0003CF0003CF0001EF0001EF0000EF000
0FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0001EF0001EF0001EF0003CF000
7CF000F8F001F0F007E0FFFFC0FFFF80FFFC0018207B9F21>I<FFFFC0FFFFC0FFFFC0F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80FFFF80F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFE0FF
FFE0FFFFE013207B9F1B>I<FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000FFFF00FFFF00FFFF00F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000012207B9F1A>I<001F
E000FFF801FFFE03E03E07800E0F00001E00003E00003C00007C0000780000780000780000F000
00F00000F00000F00000F00000F00000F003FEF003FE7803FE78001E78001E7C001E3C001E3E00
1E1E001E0F001E07801E03E03E01FFFE00FFF8001FC017227DA01E>I<F00078F00078F00078F0
0078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078FFFFF8FFFFF8FF
FFF8F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F0
0078F00078F0007815207B9F20>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F004207C9F0D>I<F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80FFFF8011207B9F19>
76 D<F80001F8FC0003F8FC0003F8F4000378F6000778F6000778F6000778F3000E78F3000E78
F3000E78F3801E78F3801E78F1801C78F1C03C78F1C03C78F0C03878F0C03878F0E07878F0E078
78F0607078F070F078F070F078F030E078F039E078F039E078F019C078F019C078F019C078F00F
8078F00F8078F00F8078F00000781D207B9F28>I<FC0078FE0078FE0078F60078F70078F70078
F38078F38078F38078F3C078F1C078F1E078F1E078F0E078F0F078F07078F07078F07878F03878
F03C78F03C78F01C78F01E78F00E78F00E78F00E78F00778F00778F00378F003F8F003F8F001F8
15207B9F20>I<003F000000FFC00003FFF00007E1F8000F807C001F003E001E001E003C000F00
3C000F00780007807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003
C0F00003C0F00003C0F00003C0F80007C07800078078000780780007803C000F003C000F001E00
1E001F003E000F807C0007E1F80003FFF00000FFC000003F00001A227DA021>I<FFF800FFFF00
FFFF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F001E0F003E0
F00FC0FFFF80FFFF00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F0000014207B9F1D>I<FFF800FFFF00FFFF80F007C0F003E0F001E0F000
F0F000F0F000F0F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFF800F03C00F01E00F01E
00F00F00F00F00F00780F00780F003C0F001C0F001E0F000F0F000F0F00078F00078F0003C1620
7B9F1D>82 D<01FC0007FF800FFFC01F03C03C00C03C0000780000780000780000780000780000
7C00003C00003F00001FE0000FFC0007FE0001FF00003F800007C00003C00003E00001E00001E0
0001E00001E00001E00001C0C003C0F007C0FC0F807FFF001FFE0003F80013227EA019>I<FFFF
FFC0FFFFFFC0FFFFFFC0001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000
001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E00001A207E9F1F>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000
F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000
F0F000F0F000F0F000F0F000F07801E07801E03C03C03C03C01F0F800FFF0007FE0001F8001421
7B9F1F>I<F00001E0F00001E0780003C0780003C0780003C03C0007803C0007803C0007801E00
0F001E000F001F000F000F001E000F001E0007801C0007803C0007803C0003C0380003C0780003
C0780001E0700001E0F00001E0F00000F0E00000F1E00000F1E0000071C000007BC000003B8000
003B8000003F8000001F0000001F00001B207F9F1E>I<F0007C000FF0007E000FF0007E000F78
006E000E7800EE001E7800E7001E7800E7001E3C00E7003C3C01E7803C3C01C7803C3C01C3803C
1E01C380781E03C3C0781E0383C0780E0381C0700F0381C0F00F0781E0F00F0701E0F0070700E0
E0078700E1E0078F00E1E0078E00F1E0038E0071C0038E0071C003CE0073C001DC00738001DC00
3B8001DC003B8001DC003B8000F8003F0000F8001F0000F8001F0028207F9F2B>I<F80000F87C
0001F03C0001E03E0003E01F0003C00F0007800F800F8007C00F0003C01F0003E01E0001F03C00
00F07C00007878000078F000003CF000001CE000001FE000000FC0000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
8000000780001D20809F1E>89 D<07E03FF87FFC701E401F000F000F000F003F07FF1FFF7E0FF8
0FF00FF00FF00FF83F7FFF3FEF1F8F10147E9316>97 D<F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F1F000F7FC00FFFE00FC3E00F80F00F00F00F0
0780F00780F00780F00780F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1
E00011207D9F17>I<03F00FFC1FFE3E0E3C0278007800F000F000F000F000F000F00078007800
3C013E0F1FFF0FFE03F010147E9314>I<00078000078000078000078000078000078000078000
078000078000078000078000078007C7800FF7801FFF803E1F807C0780780780F80780F00780F0
0780F00780F00780F00780F00780F00780780780780F803E1F801FFF800FF78007C78011207E9F
17>I<03F0000FFC001FFE003E1F003C0700780700700380FFFF80FFFF80FFFF80F00000F00000
F000007000007800003C01003E07001FFF0007FE0001F80011147F9314>I<007E01FE03FE0780
07000F000F000F000F000F000F000F00FFF0FFF0FFF00F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F20809F0E>I<03E0F00FFFF01FFFF03E3E003C1E00
780F00780F00780F00780F00780F003C1E003E3E001FFC003FF80033E0003000003800003FFE00
3FFF801FFFC03FFFE07803F0F000F0F000F0F000F0F801F07E07E03FFFC00FFF0003FC00141E7F
9317>I<F000F000F000F000F000F000F000F000F000F000F000F000F1F8F3FCF7FEFC1FF80FF8
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10207D9F17>I<F0F0F0
F00000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<01E001
E001E001E00000000000000000000000000000000001E001E001E001E001E001E001E001E001E0
01E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E0C3C0FFC0FF803F
000B29839F0C>I<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F01F00F01E00F03C00F07800F0F000F1E000F3C000F78000FFC000FFC000FFE000F9
F000F8F000F0F800F07C00F07C00F03E00F01E00F01F00F00F8011207D9F16>I<F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F0FC07E0F3FE
1FF0F7FF3FF8FE0FF07CF807C03CF807C03CF007803CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C1E147D93
25>I<F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00F10147D9317>I<01F80007FE001FFF803F0FC03C03C07801E07801E0F000F0F000F0F0
00F0F000F0F000F0F000F07801E07801E03C03C03F0FC01FFF8007FE0001F80014147F9317>I<
F1F000F7FC00FFFE00FC3E00F81F00F00F00F00F80F00780F00780F00780F00780F00780F00780
F00F00F00F00F81F00FC3E00FFFC00F7F800F1E000F00000F00000F00000F00000F00000F00000
F00000F00000F00000111D7D9317>I<03C7800FF7801FFF803E1F807C0F80780780780780F007
80F00780F00780F00780F00780F00780F807807807807C0F803E1F801FFF800FF78007C7800007
80000780000780000780000780000780000780000780000780111D7E9317>I<F0E0F3E0F7E0FF
00FC00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F0000B147D9310>
I<07F01FFC3FFC780C7800780078007C003FC01FF00FF803F8007C003C003CC03CF07CFFF87FF0
0FC00E147F9311>I<1E001E001E001E001E001E00FFF0FFF0FFF01E001E001E001E001E001E00
1E001E001E001E001E001E001E001E201FF00FF007C00C1A7F9910>I<F00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01FF03FFFFF7FEF3F0F10147D9317>I<F003
C0F003C07803807807807807803C0F003C0F003C0F001E0E001E1E001E1E000E1C000F3C000F3C
0007380007380007380003B00003F00001E00012147F9315>I<F01F00F0F01F80F0F01B80F078
1B81E0783B81E0783BC1E07839C1E03C31C3C03C71C3C03C71E3C01C70E3801E60E3801E60E780
1EE0E7800EE077000EC077000EC0770006C0760007C03E0007803E001C147F931F>I<7801E07C
03C03E07801E0F000F0F00079E0003FC0003F80001F80000F00001F00001F80003FC00079E000F
0F000E0F001E07803C03C07801E0F801F01414809315>I<F003C0F003C07807807807807C0780
3C0F003C0F001E0F001E1E000E1E000F1C000F1C00073C0007380003B80003B80003B00001B000
01F00000E00000E00001C00001C00003C0000380000780007F00007E00007C0000121D7F9315>
I E /Fk 21 122 df<7FF0FFE07FE00C037D8A10>45 D<00F1800389C00707800E03801C03803C
0380380700780700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C4030
8C800F070013147C9317>97 D<07803F8007000700070007000E000E000E000E001C001C001CF0
1D0C3A0E3C0E380F380F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010
207B9F15>I<007E0001C1000300800E07801E07801C07003C0200780000780000780000F00000
F00000F00000F00000F0000070010070020030040018380007C00011147C9315>I<0000780003
F80000700000700000700000700000E00000E00000E00000E00001C00001C000F1C00389C00707
800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E20F01C40F01C
40703C40705C40308C800F070015207C9F17>I<007C01C207010E011C013C013802780C7BF07C
00F000F000F000F0007000700170023804183807C010147C9315>I<003C6000E27001C1E00380
E00700E00F00E00E01C01E01C01E01C01E01C03C03803C03803C03803C03803C07003C07001C0F
001C17000C2E0003CE00000E00000E00001C00001C00301C00783800F0700060E0003F8000141D
7E9315>103 D<00C001E001E001C000000000000000000000000000000E003300230043804300
470087000E000E000E001C001C001C003840388030807080310033001C000B1F7C9E0E>105
D<01E0000FE00001C00001C00001C00001C0000380000380000380000380000700000700000703
C00704200E08E00E11E00E21E00E40C01C80001D00001E00001FC00038E0003870003870003838
40707080707080707080703100E03100601E0013207D9F15>107 D<03C01FC003800380038003
8007000700070007000E000E000E000E001C001C001C001C003800380038003800700070007000
7100E200E200E200E200640038000A207C9F0C>I<1C0F80F0002630C318004740640C00478068
0E004700700E004700700E008E00E01C000E00E01C000E00E01C000E00E01C001C01C038001C01
C038001C01C038001C01C0708038038071003803806100380380E1003803806200700700660030
0300380021147C9325>I<1C0F802630C04740604780604700704700708E00E00E00E00E00E00E
00E01C01C01C01C01C01C01C03843803883803083807083803107003303001C016147C931A>I<
007C0001C3000301800E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0
F00780F00700700F00700E0030180018700007C00013147C9317>I<01C1E002621804741C0478
1C04701E04701E08E01E00E01E00E01E00E01E01C03C01C03C01C03C01C0380380780380700380
E003C1C0072380071E000700000700000E00000E00000E00000E00001C00001C0000FFC000171D
809317>I<00F0400388C00705800E03801C03803C0380380700780700780700780700F00E00F0
0E00F00E00F00E00F01C00F01C00703C00705C0030B8000F380000380000380000700000700000
700000700000E00000E0000FFE00121D7C9315>I<1C1E00266100478380478780470780470300
8E00000E00000E00000E00001C00001C00001C00001C0000380000380000380000380000700000
30000011147C9313>I<00FC030206010C030C070C060C000F800FF007F803FC003E000E700EF0
0CF00CE008401020601F8010147D9313>I<018001C0038003800380038007000700FFF007000E
000E000E000E001C001C001C001C003800380038003820704070407080708031001E000C1C7C9B
0F>I<0E00C03300E02301C04381C04301C04701C08703800E03800E03800E03801C07001C0700
1C07001C07101C0E20180E20180E201C1E200C264007C38014147C9318>I<0E03803307802307
C04383C04301C04700C08700800E00800E00800E00801C01001C01001C01001C02001C02001C04
001C04001C08000E300003C00012147C9315>I<0E00C03300E02301C04381C04301C04701C087
03800E03800E03800E03801C07001C07001C07001C07001C0E00180E00180E001C1E000C3C0007
DC00001C00001C00003800F03800F07000E06000C0C0004380003E0000131D7C9316>121
D E /Fl 42 122 df<787878781830306060E0050A7C830E>44 D<F0F0F0F004047B830E>46
D<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003C003C003C003C003C003C003C003C0
03C003C003C003C003C003C003C003C003C003C003C003C0FFFFFFFFFFFF10227CA118>49
D<03F0000FFC001FFE003C1F003007807007C06003C0E003E0C001E04001E04001E00001E00001
E00001E00003C00003C0000780000780000F00001E00003C0000780000F00001E00001C0000380
000700000E00001C0000380000700000FFFFE0FFFFE0FFFFE013227EA118>I<01F00007FC001F
FF003E0F003807807003C02003C02003C00003C00003C00003C0000780000780000F00001E0003
FC0003F80003FE00000F000007800003C00003C00001E00001E00001E00001E00001E08001E0C0
03C0E003C07007803C0F801FFF000FFC0003F00013237EA118>I<001F00001F00002F00002F00
006F0000EF0000CF0001CF0001CF00038F00038F00078F00070F000F0F000E0F001E0F003C0F00
3C0F00780F00780F00F00F00FFFFF8FFFFF8FFFFF8000F00000F00000F00000F00000F00000F00
000F00000F00000F0015217FA018>I<001F0000001F0000003F8000003F8000003B8000007BC0
000073C0000071C00000F1E00000F1E00000E0E00001E0F00001E0F00001C0F00003C0780003C0
78000380780007803C0007803C0007003C000F001E000F001E000FFFFE001FFFFF001FFFFF001C
000F003C0007803C00078038000780780003C0780003C0700003C0F00001E0F00001E0E00001E0
1C237EA220>65 D<000FF000007FFC0000FFFF0001F01F0003C00700078000000F0000001E0000
003E0000003C0000003C000000780000007800000078000000F0000000F0000000F0000000F000
0000F0000000F0000000F0000000F0000000F00000007800000078000000780000003C0000003C
0000003E0000001E0000000F0000000780008003C0038001F00F8000FFFF00007FFC00000FF000
19257DA31F>67 D<FFFE0000FFFFC000FFFFE000F003F000F000F800F0007C00F0003E00F0001E
00F0000F00F0000F00F0000780F0000780F0000780F00003C0F00003C0F00003C0F00003C0F000
03C0F00003C0F00003C0F00003C0F00003C0F0000380F0000780F0000780F0000780F0000F00F0
001F00F0001E00F0003C00F000FC00F003F800FFFFE000FFFFC000FFFE00001A237BA223>I<FF
FFF0FFFFF0FFFFF0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000FFFFE0FFFFE0FFFFE0F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000FFFFF8FFFFF8FFFFF815237BA21D>I<F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237CA20D>73
D<FC00007EFE0000FEFE0000FEFE0000FEF70001DEF70001DEF70001DEF78003DEF380039EF380
039EF3C0079EF3C0079EF1C0071EF1C0071EF1E00F1EF0E00E1EF0E00E1EF0F01E1EF0F01E1EF0
701C1EF0783C1EF0783C1EF038381EF03C781EF03C781EF01C701EF01C701EF01EF01EF00EE01E
F00EE01EF00FE01EF007C01EF007C01EF007C01EF000001E1F237BA22A>77
D<001FC000007FF00001FFFC0003F07E0007C01F000F800F801F0007C01E0003C03C0001E03C00
01E0780000F0780000F0780000F070000070F0000078F0000078F0000078F0000078F0000078F0
000078F0000078F0000078F0000078780000F0780000F0780000F07C0001F03C0001E03E0003E0
1E0003C01F0007C00F800F8007C01F0003F07E0001FFFC00007FF000001FC0001D257DA324>79
D<FFFE00FFFF80FFFFC0F003E0F000F0F00078F00078F0003CF0003CF0003CF0003CF0003CF000
3CF00078F00078F000F0F003E0FFFFC0FFFF80FFFE00F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F0000016237BA21F>I<FFFC00FF
FF80FFFFC0F003E0F000F0F00078F00038F0003CF0003CF0003CF0003CF0003CF00038F00078F0
00F0F003E0FFFFC0FFFF80FFFE00F01E00F00F00F00700F00780F00380F003C0F001E0F001E0F0
00F0F000F0F00078F00038F0003CF0001EF0001EF0000F18237BA21F>82
D<00FE0003FFC007FFE00F81E01E00603C00003C00007800007800007800007800007800007C00
003C00003F00001FC0000FFC0007FF0001FF80003FC00007E00001F00000F00000F80000780000
78000078000078000078000078C000F0E000F0F801E07E07C03FFF800FFF0001FC0015257EA31B
>I<FFFFFFF0FFFFFFF0FFFFFFF0000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F00001C237EA221>I<F0003CF0003CF0
003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0
003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003C78007878
00787800783C00F01E01E01F87E00FFFC003FF0000FC0016247BA221>I<07E01FF83FFC381E20
1E000F000F000F000F00FF07FF1FFF3E0F780FF00FF00FF00FF00FF83F7FFF3FEF1F8F10167E95
17>97 D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F1F000F7FC00FFFE00FC1F00F80F00F00780F00780F003C0F003C0F003C0F003C0F003
C0F003C0F003C0F003C0F00780F00780F80F00FC3E00FFFE00F7F800F1F00012237CA219>I<01
FC0007FF000FFF801F03803C0180780000780000700000F00000F00000F00000F00000F00000F0
00007800007800007800003C00401F03C00FFFC007FF8001FC0012167E9516>I<0003C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C003E3C00FFBC0
1FFFC03F0FC03C07C07803C07803C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0
7803C07803C03C07C03E0FC01FFFC00FFBC003E3C012237EA219>I<03F00007FC001FFE003E0F
003C0780780380780380F001C0FFFFC0FFFFC0FFFFC0F00000F00000F000007000007800007800
003C00801F07800FFF8007FF0001F80012167E9516>I<003F00FF01FF03C00380078007800780
07800780078007800780FFF8FFF8FFF80780078007800780078007800780078007800780078007
800780078007800780078007800780102380A20F>I<01F07807FFF80FFFF81F1F001E0F003C07
803C07803C07803C07803C07801E0F001F1F000FFE001FFC0019F0003800003800003C00001FFE
001FFFC01FFFE03FFFF07801F07800F8F00078F00078F00078F000787800F03E03E01FFFC00FFF
8001FC0015217F9518>I<F000F000F000F000F000F000F000F000F000F000F000F000F000F1F8
F3FCF7FEFE1EF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
0FF00F10237CA219>I<F0F0F0F0000000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F004237DA20B>I<00F000F000F000F0000000000000000000000000000000000000
00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
F000F000F000F000F000F000F000F080F0E3E0FFE07FC01F000C2D83A20D>I<F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>108
D<F0F807C0F3FE1FF0F7FF3FF8FE0F7078FC0FE07CF807C03CF807C03CF007803CF007803CF007
803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803C1E167C9527>I<F1F8F3FCF7FEFE1EF80FF80FF00FF00FF00FF00FF0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10167C9519>I<01FC0007FF000FFF80
1F07C03C01E07800F07800F0700070F00078F00078F00078F00078F00078F000787800F07800F0
7C01F03E03E01F07C00FFF8007FF0001FC0015167F9518>I<F1F000F7FC00FFFE00FC3F00F80F
00F00780F00780F007C0F003C0F003C0F003C0F003C0F003C0F003C0F007C0F00780F00F80F80F
00FC3E00FFFE00F7F800F1F000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F0000012207C9519>I<03E3C007FBC00FFFC01F0FC03C07C07C03C07803C0F803C0F003C0F0
03C0F003C0F003C0F003C0F003C0F803C07803C07803C03C07C03F0FC01FFFC00FFBC003E3C000
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C012207E9519>I<F0E0F3
E0F7E0FF00FE00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F000F000
F0000B167C9511>I<07F01FFC3FFE3C0E7806780078007C003F003FF01FF80FFC01FE001F000F
000F000FC00FF81EFFFE3FFC0FF010167F9513>I<0F000F000F000F000F000F00FFF8FFF8FFF8
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F080F1C07FC07F803E00E
1C7F9B12>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
0FF01FF83F7FFF7FCF1F0F10167C9519>I<F001E0F001E07803C07803C07803C03C07803C0780
3C07801E07001E0F001E0F000E0E000F1E000F1E00071C00079C0007BC0003B80003B80003F800
01F00001F00013167F9516>I<F007803CF00FC03CF00FC03C780DC078781DC078781DE078781C
E0783C18E0F03C38E0F03C38F0F01C38F0E01E3871E01E3071E01E7079E00E7079C00E7039C00F
603BC007603B8007601B8007C01F8007C01F8003C01F001E167F9521>I<7801F07C01E03E03C0
1E07C00F0780078F0007DE0003FC0001FC0000F80000700000F80001FC0003DC00039E00078F00
0F07801E07801E03C03C01E07800F0F800F81516809516>I<F001E0F001E07803C07803C07C03
C03C07803C07801E07801E07001E0F000F0F000F0E00070E00079E00039C00039C00039C000198
0001D80000F80000F00000F00000F00000E00000E00001E00001C00001C0000380007F80007F00
007E000013207F9516>I E /Fm 27 90 df<3078F8787005057C840D>46
D<000C001C00FC0F380038003800380038003800700070007000700070007000E000E000E000E0
00E000E001C001C001C001C001C001C0038003C0FFFE0F1E7C9D17>49 D<003F8000C1E00100F0
0200780400780400780F007C0F807C0F807C0F00780600780000F80000F00001E00001C0000380
000700000E00001C0000380000600000C0000180000300200600200800401000403FFFC07FFF80
FFFF80161E7E9D17>I<007F000183C00201E00400F00700F00F00F00F01F00F01F00001E00001
E00003C0000380000700000E0000F800000E000007000007800007C00003C00007C03007C07807
C0F807C0F807C0F00780800F00400E00201C0018780007E000141F7D9D17>I<00006000006000
00E00001C00003C00005C0000DC00009C00011C000238000438000C38000838001038002038004
0700080700180700100700200700400700FFFFF0000E00000E00000E00000E00000E00001C0000
1E0001FFE0141E7E9D17>I<01803001FFE003FFC003FF0003FC00020000020000020000040000
040000040000047C000587000603800C01800801C00001C00001E00001E00001E00001E07003C0
F803C0F003C0E00380800780400700400E00201C0018700007C000141F7D9D17>I<0000100000
001800000038000000380000007800000078000000FC000001BC0000013C0000033C0000023C00
00063C0000043E0000081E0000081E0000101E0000101E0000201E0000200F0000400F0000400F
0000FFFF0000800F0001000F8001000780020007800200078004000780040007800C0007C03E00
07C0FF807FFC1E207E9F22>65 D<07FFFF00007C01C0003C01E0003C00F0007800F8007800F800
7800F8007800F8007800F8007800F000F001F000F001E000F003C000F00F8000FFFE0000F00F00
01E007C001E003C001E003E001E001E001E001E001E001E003C001E003C003E003C003E003C003
C003C007C003C00F8007800F0007803E00FFFFF0001D1F7E9E20>I<0001F808000E0618003801
38007000F801E0007803C0007007800030078000300F0000301F0000301E0000303E0000203C00
00007C0000007C0000007C0000007C000000F8000000F8000000F8000000F8000000F800000078
00004078000080780000803C0000803C0001001C0002000E00020006000C000300100001C0E000
003F00001D217B9F21>I<07FFFF00007C01E0003C00F0003C00780078003C0078003C0078001E
0078001E0078001E0078001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F01E000
1E01E0003E01E0003E01E0003E01E0003C01E0007C03C0007803C000F003C000F003C001E003C0
03C003C0078007800F0007803C00FFFFE000201F7E9E23>I<07FFFFF8007C0078003C0038003C
001800780018007800080078000800780008007800080078080800F0100000F0100000F0100000
F0300000FFF00000F0700001E0200001E0200001E0200001E0200001E0000801E0001003C00010
03C0001003C0002003C0002003C0006003C000C0078001C0078007C0FFFFFF801D1F7E9E1F>I<
07FFFFF8007C0078003C0038003C00180078001800780008007800080078000800780008007800
0800F0100000F0100000F0100000F0300000F0700000FFF00001E0600001E0200001E0200001E0
200001E0200001E0000003C0000003C0000003C0000003C0000003C0000003C000000780000007
C00000FFFE00001D1F7E9E1E>I<0001FC04000F030C003C009C0070007C00E0003C01C0003803
800018078000180F0000181F0000181E0000183E0000103C0000007C0000007C0000007C000000
7C000000F8000000F8000000F8007FFCF80003E0780001E0780001E0780003C0780003C03C0003
C03C0003C01C0003C00E0007C007000B800380118001E06080003F80001E217B9F24>I<07FFC7
FFC0007C00F800003C007800003C007800007800F000007800F000007800F000007800F0000078
00F000007800F00000F001E00000F001E00000F001E00000F001E00000FFFFE00000F001E00001
E003C00001E003C00001E003C00001E003C00001E003C00001E003C00003C007800003C0078000
03C007800003C007800003C007800003C007800007800F000007C00F8000FFF8FFF800221F7E9E
22>I<07FFE0007C00003C00003C0000780000780000780000780000780000780000F00000F000
00F00000F00000F00000F00001E00001E00001E00001E00001E00001E00003C00003C00003C000
03C00003C00003C00007800007C000FFFC00131F7F9E10>I<00FFFC0007C00003C00003C00007
80000780000780000780000780000780000F00000F00000F00000F00000F00000F00001E00001E
00001E00001E00001E00001E00003C00303C00783C00F83C00F83800F0780080700040E00021C0
001F000016207D9E17>I<07FFF000007E0000003C0000003C0000007800000078000000780000
00780000007800000078000000F0000000F0000000F0000000F0000000F0000000F0000001E000
0001E0000001E0000001E0000001E0008001E0010003C0010003C0010003C0030003C0020003C0
060003C0060007801E0007807C00FFFFFC00191F7E9E1C>76 D<07FC0000FFC0007C0000F80000
3C00017800003C00017800004E0002F000004E0002F000004E0004F000004E0004F000004E0008
F000004E0008F00000870011E00000870011E00000870021E00000870021E00000870041E00000
838041E00001038083C00001038083C00001038103C00001038203C0000101C203C0000101C403
C0000201C40780000201C80780000201C80780000201D00780000200F00780000600E007800006
00E00F00000F00C00F8000FFE0C1FFF8002A1F7E9E2A>I<07FC01FFC0003E003E00003E001800
003E001800004F001000004F001000004780100000478010000043C010000043C010000083C020
000081E020000081E020000080F020000080F020000080782000010078400001007C400001003C
400001003C400001001E400001001E400002000F800002000F800002000F800002000780000200
078000060003800006000300000F00010000FFE0010000221F7E9E22>I<0003F800001E0E0000
38070000E0038001C001C003C001E0078000E00F0000F00F0000F01E0000F01E0000F83E0000F8
3C0000F87C0000F87C0000F87C0000F87C0000F8F80001F0F80001F0F80001F0F80001F0F80003
E0780003E0780003C0780007C07C0007803C000F003C001E001E001C000E0038000700F00003C3
C00000FE00001D217B9F23>I<07FFFF00007C03C0003C01E0003C00F0007800F0007800F80078
00F8007800F8007800F8007800F000F001F000F001E000F003C000F0078000F00F0000FFF80001
E0000001E0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C00000
03C0000003C000000780000007C00000FFFC00001D1F7E9E1F>I<07FFFC00007C0700003C03C0
003C01E0007801E0007801F0007801F0007801F0007801F0007801E000F003E000F003C000F007
8000F00F0000F03C0000FFF00001E0300001E0380001E01C0001E01C0001E01C0001E01E0003C0
3E0003C03E0003C03E0003C03E0003C03E0003C03E0207803E0407C01F04FFFC0F18000003E01F
207E9E21>82 D<003F040060CC01803C03801C03001C0700180600080E00080E00080E00080E00
000F00000F80000FE00007FE0003FF8001FFC0007FE00007E00001E00000E00000F00000F04000
E04000E04000E04000E06000C0600180E00380F80300C60C0081F80016217D9F19>I<3FFFFFF0
3C0780F03007803060078030400F0010400F0010C00F0010800F0010800F0010800F0010001E00
00001E0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000003C
0000003C000000780000007800000078000000780000007800000078000000F0000001F800007F
FFE0001C1F7A9E21>I<FFF07FF81FF01F000FC007C01F00078003000F00078003000F00078002
000F000F8002000F000F8004000F001F8004000F0017C008000F8013C00800078023C010000780
23C01000078043C02000078043C02000078083C04000078083E0400007C101E0800003C101E080
0003C201E1000003C201E1000003C401E2000003C401E2000003C801F4000003E800F4000001F0
00FC000001F000F8000001E000F8000001E000F0000001C000F0000001C00060000000C0006000
000080004000002C207A9E2F>87 D<03FFC0FFC0007F007E00003E003800001E003000001E0020
00000F004000000F008000000F81000000078200000007C600000003C400000003E800000001F0
00000001F000000000F000000000F800000000F8000000017C000000023C000000043C0000000C
1E000000081E000000101F000000200F000000400F800000C0078000008007C000010003C00007
0003E0001F8007E000FFE01FFE00221F7F9E22>I<FFF003FF1F8000F80F0000600F8000400780
008007C0018003C0010003E0020001E0040001F00C0001F0080000F0100000F820000078600000
7C4000003C8000003F0000001F0000001E0000001E0000001E0000001C0000003C0000003C0000
003C0000003C0000003C00000038000000780000007C00000FFFC000201F7A9E22>I
E /Fn 1 16 df<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC
1FF807E010127D9317>15 D E /Fo 28 122 df<0000600000E00000E00001C00001C000038000
0380000380000700000700000700000E00000E00001C00001C00001C0000380000380000380000
700000700000E00000E00000E00001C00001C0000380000380000380000700000700000700000E
00000E00001C00001C00001C0000380000380000380000700000700000E00000E00000C0000013
2D7DA11A>47 D<07F8001FFE00381F80780F80FC0FC0FC0FC0FC0FC0780FC0301F80001F00003E
00007C0000700000E00000E00000C00000C00000C00000C00000C00000C0000000000000000000
0000000001C00007F00007F00007F00007F00007F00001C00012207D9F19>63
D<0000E000000000E000000001F000000001F000000001F000000003F800000003F800000006FC
00000006FC0000000EFE0000000C7E0000000C7E000000183F000000183F000000303F80000030
1F800000701FC00000600FC00000600FC00000C007E00000FFFFE00001FFFFF000018003F00001
8003F000030001F800030001F800060001FC00060000FC000E0000FE00FFE00FFFE0FFE00FFFE0
231F7E9E28>65 D<FFFFFFE0FFFFFFE007E007E007E001E007E000E007E0006007E0007007E000
3007E0003007E0603007E0603007E0600007E0E00007E1E00007FFE00007FFE00007E1E00007E0
E00007E0600007E0600C07E0600C07E0000C07E0001807E0001807E0001807E0003807E0007807
E000F807E003F0FFFFFFF0FFFFFFF01E1F7E9E22>69 D<FFFFFFFF07E007E007E007E007E007E0
07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007
E007E0FFFFFFFF101F7E9E14>73 D<FFE000003FF8FFF000007FF807F000007F0006F80000DF00
06F80000DF0006F80000DF00067C00019F00067C00019F00063E00031F00063E00031F00061F00
061F00061F00061F00060F800C1F00060F800C1F000607C0181F000607C0181F000607C0181F00
0603E0301F000603E0301F000601F0601F000601F0601F000600F8C01F000600F8C01F0006007D
801F0006007D801F0006003F001F0006003F001F0006003F001F0006001E001F00FFF01E03FFF8
FFF00C03FFF82D1F7E9E32>77 D<FFFFFE00FFFFFF8007E00FE007E003F007E001F807E001F807
E001FC07E001FC07E001FC07E001FC07E001FC07E001F807E001F807E003F007E00FE007FFFF80
07FFFE0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
0007E0000007E0000007E00000FFFF0000FFFF00001E1F7E9E24>80 D<03FC080FFF381E03F838
00F8700078700038F00038F00018F00018F80000FC00007FC0007FFE003FFF801FFFC00FFFF007
FFF000FFF80007F80000FC00007C00003CC0003CC0003CC0003CE00038E00078F80070FE01E0E7
FFC081FF00161F7D9E1D>83 D<07FC001FFF003F0F803F07C03F03E03F03E00C03E00003E0007F
E007FBE01F03E03C03E07C03E0F803E0F803E0F803E0FC05E07E0DE03FF9FE0FE07E17147F9319
>97 D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0000
1F1FC01F7FF01FE0F81F807C1F007E1F003E1F003E1F003F1F003F1F003F1F003F1F003F1F003F
1F003E1F003E1F007C1F807C1EC1F81C7FE0181F8018207E9F1D>I<01FE0007FF801F0FC03E0F
C03E0FC07C0FC07C0300FC0000FC0000FC0000FC0000FC0000FC00007C00007E00003E00603F00
C01F81C007FF0001FC0013147E9317>I<0007F80007F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F801F8F80FFEF81F83F83E01F87E00F87C00F87C00F8FC00F8FC
00F8FC00F8FC00F8FC00F8FC00F87C00F87C00F87E00F83E01F81F07F80FFEFF03F8FF18207E9F
1D>I<01FE0007FF801F83E03F01F07E00F07E00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000
FC00007C00007E00003E00183F00380F807007FFE000FF8015147F9318>I<FF0000FF00001F00
001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FC01F3FE01F61F01FC0
F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F8FFE3FFFFE3FF18207D9F1D>104 D<1C003F007F007F007F003F001C00000000000000
000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F00FFE0FFE00B217EA00E>I<FF0000FF00001F00001F00001F00001F00001F00001F00001F
00001F00001F00001F00001F01FE1F01FE1F00F01F01C01F03801F07001F1E001F38001F7C001F
FE001FFF001F1F001E0F801E07C01E07E01E03F01E01F01E00F8FFC3FFFFC3FF18207E9F1C>
107 D<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B207E9F0E>I<FE0FE03F
80FE1FF07FC01E70F9C3E01E407D01F01E807E01F01F807E01F01F007C01F01F007C01F01F007C
01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F00
7C01F01F007C01F0FFE3FF8FFEFFE3FF8FFE27147D932E>I<FE0FC0FE3FE01E61F01EC0F81E80
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F8FFE3FFFFE3FF18147D931D>I<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC
007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F93
1A>I<FF1FC0FF7FF01FE1F81F80FC1F007E1F007E1F003E1F003F1F003F1F003F1F003F1F003F
1F003F1F003E1F007E1F007C1F80FC1FC1F81F7FE01F1F801F00001F00001F00001F00001F0000
1F00001F0000FFE000FFE000181D7E931D>I<FE3E00FE7F801ECFC01E8FC01E8FC01F8FC01F03
001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0000FFF000FFF0
0012147E9316>114 D<0FE63FFE701E600EE006E006F800FFC07FF83FFC1FFE03FE001FC007C0
07E007F006F81EFFFCC7F010147E9315>I<01800180018003800380038007800F803F80FFFCFF
FC0F800F800F800F800F800F800F800F800F800F800F860F860F860F860F8607CC03F801F00F1D
7F9C14>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F01F81F01F80F06F807FCFF03F8FF18147D931D>I<FFE07F80FFE0
7F801F001C000F8018000F80180007C0300007C0300003E0600003E0600001F0C00001F0C00001
F9C00000F9800000FF8000007F0000007F0000003E0000003E0000001C0000001C000019147F93
1C>I<FFE7FE1FE0FFE7FE1FE01F00F007001F00F803000F80F806000F80F8060007C1BC0C0007
C1BC0C0007C1BE0C0003E31E180003E31E180001F60F300001F60F300001F60FB00000FC07E000
00FC07E000007803C000007803C000007803C000003001800023147F9326>I<FFE07F80FFE07F
801F001C000F8018000F80180007C0300007C0300003E0600003E0600001F0C00001F0C00001F9
C00000F9800000FF8000007F0000007F0000003E0000003E0000001C0000001C00000018000000
18000078300000FC300000FC600000C0E00000E1C000007F8000001E000000191D7F931C>121
D E /Fp 37 122 df<F8F8F8F8F805057A8411>46 D<00180000380000F80007F800FFF800FFF8
00F8F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F8007FFFF07FFFF07FFFF014287BA71E>49
D<00FE0003FFC007FFE00FFFF01F03F83C00FC38007E78003E70003EF0001FF0001F60001F2000
1F00001F00001F00001F00003E00003E00007C00007C0000F80001F00001E00003C0000780000F
00001E00003C0000780000F00001E00003C0000780000F00001E00003C00007FFFFF7FFFFF7FFF
FF7FFFFF18287EA71E>I<007F000001FFC00007FFF0000FFFF8001FC1F8003E007C003C003E00
78003E0038003E0010003E0000003E0000003E0000003C0000007C000000FC000001F8000007F0
0000FFE00000FFC00000FFE00000FFF0000001FC0000007C0000003E0000001F0000001F000000
0F8000000F8000000F8000000F8000000F8040000F8060001F00F0001F00F8003F007E007E003F
81FC001FFFF8000FFFF00003FFE000007F000019297EA71E>I<0003F0000007F0000005F00000
0DF000000DF000001DF0000039F0000039F0000079F0000079F00000F1F00000F1F00001E1F000
03E1F00003E1F00007C1F00007C1F0000F81F0000F81F0001F01F0001F01F0003E01F0007C01F0
007C01F000F801F000FFFFFF80FFFFFF80FFFFFF80FFFFFF800001F0000001F0000001F0000001
F0000001F0000001F0000001F0000001F0000001F0000001F00019277EA61E>I<3FFFFC3FFFFC
3FFFFC3FFFFC3E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E3F00
3EFFC03FFFE03FFFF03FE1F83F807C3F003E3E003E00003E00001F00001F00001F00001F00001F
00001F00001F20001F60003E70003EF8007C7C00FC3F03F81FFFF00FFFE007FF8000FE0018287E
A61E>I<FFFFF00000FFFFFC0000FFFFFF0000F8003FC000F80007E000F80003F000F80001F800
F80000FC00F800007C00F800003E00F800001E00F800001F00F800000F00F800000F80F800000F
80F800000780F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0F80000
07C0F8000007C0F8000007C0F8000007C0F800000780F800000F80F800000F80F800000F80F800
001F00F800001F00F800003E00F800007E00F800007C00F80000F800F80003F000F80007E000F8
003FC000FFFFFF0000FFFFFE0000FFFFF00000222A7BA92B>68 D<FFFFFFE0FFFFFFE0FFFFFFE0
FFFFFFE0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000FFFFFF80FFFFFF80FFFFFF80FFFFFF80F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F8000000FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF0
1C2A7BA924>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8052A7AA911>73 D<FE0000007F80FE0000007F80FE0000007F80FF0000
00FF80FB000000EF80FB800001EF80FB800001EF80FB800001EF80F9C00003CF80F9C00003CF80
F9C00003CF80F8E000078F80F8E000078F80F8F0000F8F80F8F0000F8F80F870000F0F80F87800
1F0F80F878001F0F80F838001E0F80F83C003E0F80F83C003E0F80F81E007C0F80F81E007C0F80
F80E00780F80F80F00F80F80F80F00F80F80F80700F00F80F80781F00F80F80781F00F80F80381
E00F80F803C3E00F80F803C3E00F80F801C3C00F80F801E7C00F80F800E7800F80F800E7800F80
F800E7800F80F8007F000F80F8007F000F80F8007F000F80F8003E000F80F80000000F80292A7B
A934>77 D<FF00003EFF00003EFF80003EFF80003EFBC0003EFBC0003EF9E0003EF9E0003EF9F0
003EF8F0003EF8F8003EF878003EF87C003EF83C003EF83E003EF81E003EF81F003EF81F003EF8
0F803EF80F803EF807C03EF807C03EF803E03EF803E03EF801F03EF801F03EF800F03EF800F83E
F800783EF8007C3EF8003C3EF8003E3EF8001E3EF8001F3EF8000F3EF8000F3EF80007BEF80007
BEF80003FEF80003FEF80001FEF80001FE1F2A7BA92A>I<0001FC0000000FFF8000003FFFE000
007FFFF00001FE03FC0003F800FE0007E0003F0007C0001F000F80000F801F000007C01F000007
C03E000003E03E000003E07C000001F07C000001F07C000001F078000000F0F8000000F8F80000
00F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F800
0000F87C000001F07C000001F07C000001F07E000003F03E000003E03F000007E01F000007C01F
80000FC00FC0001F8007E0003F0007F0007F0003F800FE0001FE03FC0000FFFFF800003FFFE000
000FFF80000001FC0000252C7DAA2C>I<FFFFE000FFFFFC00FFFFFF00F8003F80F8000FC0F800
07E0F80001E0F80001F0F80000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F8
0000F0F80001F0F80001F0F80003E0F8000FC0F8003F80FFFFFF00FFFFFE00FFFFF000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F80000001D2A7BA926>I<007FC0
0001FFF80007FFFE000FFFFF001FC07F003F000F007E0006007C0000007C000000F8000000F800
0000F8000000F8000000F8000000FC0000007E0000007F0000003F8000001FF800000FFF800007
FFE00003FFF80000FFFC00000FFE000000FF0000003F0000001F8000000F8000000FC0000007C0
000007C0000007C0000007C0000007C0000007C000000F8060000F80F0001F00FC003F00FF80FE
007FFFFC001FFFF80007FFE00000FF80001A2C7DAA21>83 D<FFFFFFFFF0FFFFFFFFF0FFFFFFFF
F0FFFFFFFFF00000F800000000F800000000F800000000F800000000F800000000F800000000F8
00000000F800000000F800000000F800000000F800000000F800000000F800000000F800000000
F800000000F800000000F800000000F800000000F800000000F800000000F800000000F8000000
00F800000000F800000000F800000000F800000000F800000000F800000000F800000000F80000
0000F800000000F800000000F800000000F800000000F800000000F800000000F800000000F800
00242A7EA929>I<01FE000FFF803FFFC03FFFE03C03F03001F00001F80000F80000F80000F800
00F80000F8007FF807FFF81FFFF83FE0F87F00F8FC00F8F800F8F800F8F800F8FC01F87E07F87F
FFF83FFFF81FFCF80FE0F8151B7E9A1D>97 D<F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F83F00F9FFC0FBFFE0FFFFF0FF07
F0FC01F8F800FCF8007CF8007CF8007EF8003EF8003EF8003EF8003EF8003EF8003EF8003EF800
7CF8007CF8007CFC00F8FC01F8FF07F0FFFFE0FBFFC0F9FF80F87E00172A7BA91F>I<007FC001
FFF007FFFC0FFFFC1FC07C1F00083E00007C00007C00007C0000F80000F80000F80000F80000F8
0000F80000F800007C00007C00007E00003E00001F000C1FC07C0FFFFC07FFFC01FFF0007F8016
1B7E9A1B>I<00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E
00003E00003E00003E00003E00FC3E03FF3E07FFFE0FFFFE1FC1FE3F007E3E003E7C003E7C003E
FC003EF8003EF8003EF8003EF8003EF8003EF8003EF8003EFC003E7C003E7C003E3E007E3F00FE
1FC1FE0FFFFE07FFBE03FF3E00FC3E172A7EA91F>I<007E0003FF8007FFC00FFFE01F83F03F00
F03E00787C00787C003878003CFFFFFCFFFFFCFFFFFCFFFFFCF80000F80000F800007800007C00
007C00003E00003F000C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>I<001FC0007FC000
FFC001FFC003F00003E00007C00007C00007C00007C00007C00007C00007C00007C00007C000FF
FE00FFFE00FFFE0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C000122A7FA912>I<00F8078003FE7FC00FFFFFC01FFFFFC01F07C0003E03E0003E03E0007C01
F0007C01F0007C01F0007C01F0007C01F0007C01F0003E03E0003E03E0001F07C0001FFFC0003F
FF80003BFE000038F8000078000000780000003C0000003FFFC0003FFFF8001FFFFC001FFFFE00
3FFFFF007C007F00F8001F80F8000F80F8000F80F8000F80FC001F807E003F003F80FE003FFFFE
000FFFF80007FFF00000FF80001A287E9A1E>I<F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F83F00F8FF80FBFFC0FFFFE0FF
07E0FE03F0FC01F0FC01F0FC01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F8
01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0142A7BA91F>I<F8F8F8
F8F800000000000000000000F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
052A7CA90E>I<007C007C007C007C007C0000000000000000000000000000000000000000007C
007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C00
7C007C007C007C007C007C007C007C007C007C007C007C007C40FCF1F8FFF8FFF07FE00F800E36
83A910>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8052A7CA90E>108 D<F83F003F00F8FFC0FFC0FBFFE3FFE0FFFFF7FFF0FF83
F783F0FE01FE01F8FC00FC00F8FC00FC00F8FC00FC00F8F800F800F8F800F800F8F800F800F8F8
00F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8
F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8251B7B9A
30>I<F83F00F8FF80FBFFC0FFFFE0FF07E0FE03F0FC01F0FC01F0FC01F0F801F0F801F0F801F0
F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0
F801F0F801F0141B7B9A1F>I<007F000001FFC00007FFF0000FFFF8001FC1FC003F007E003E00
3E007C001F007C001F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8
000F807C001F007C001F007E003F003E003E003F007E001FC1FC000FFFF80007FFF00001FFC000
007F0000191B7E9A1E>I<F83F00F9FFC0FBFFE0FFFFF0FF07F0FC01F8F800FCF800FCF8007CF8
007EF8003EF8003EF8003EF8003EF8003EF8003EF8003EF8007CF8007CF800FCFC00F8FC03F8FF
07F0FFFFE0FBFFC0F9FF80F87E00F80000F80000F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F8000017277B9A1F>I<F838F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC00F8
00F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F8000D1B7B9A14>
114 D<03FC001FFF803FFFC07FFFC07C07C0F80080F80000F80000F80000FC00007F80007FF800
3FFE001FFF0007FF8000FFC0000FE00007E00003E00003E04003E0E007E0FC0FC0FFFFC07FFF80
1FFE0003F800131B7E9A17>I<07C00007C00007C00007C00007C00007C00007C000FFFFC0FFFF
C0FFFFC007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0
0007C00007C00007C00007C00007C00007C00007C04007E1C003FFE003FFE001FF8000FC001322
7FA116>I<F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F8
01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F803F0F803F0FC0FF0FFFFF07F
FDF03FF9F01FC1F0141B7B9A1F>I<F800FC007CF801FC007C7C01FE00787C01DE00F87C01DE00
F87C03DE00F83E03CF00F03E03CF01F03E038F01F03E078F01F01F078F83E01F078783E01F0707
83E00F0F0783C00F8F07C7C00F8F03C7C00F8E03C7C0078E03C780079E01C780079E01E78003DC
01EF0003DC01EF0003DC00EF0003D800EF0001F800FE0001F800FE0001F8007E00261B7F9A29>
119 D<7C000FC03E001F803F001F001F803E000F807C0007C0FC0003E0F80001F1F00001FBE000
00FFC000007FC000003F8000001F0000001F0000003F8000007FC00000FBC00000F3E00001F1F0
0003E0F80007C07C000F807C000F803E001F001F003E000F807E000FC0FC0007E01B1B809A1C>
I<F8000F80FC000F807C001F007E001F003E003E003E003E001F003E001F007C001F007C000F80
7C000F80F80007C0F80007C0F00007C1F00003E1F00003E1E00001E1E00001E3E00001F3C00000
F3C00000F38000007380000073800000370000003F0000003E0000001E0000001E0000003C0000
003C0000003C0000007800000078000000F0000000F000007FE000007FE000007FC000007F0000
0019277F9A1C>I E /Fq 12 122 df<FFFFFFFFFFFFC0000000FFFFFFFFFFFFFE000000FFFFFF
FFFFFFFFC00000FFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFC0000001FFF800007FFFF0000001F
FF8000007FFF8000001FFF8000000FFFE000001FFF80000007FFF000001FFF80000001FFF80000
1FFF80000000FFFC00001FFF800000007FFE00001FFF800000003FFF00001FFF800000001FFF00
001FFF800000000FFF80001FFF800000000FFFC0001FFF8000000007FFC0001FFF8000000007FF
E0001FFF8000000003FFE0001FFF8000000003FFF0001FFF8000000003FFF0001FFF8000000003
FFF8001FFF8000000001FFF8001FFF8000000001FFF8001FFF8000000001FFFC001FFF80000000
01FFFC001FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FFFC001FFF800000
0001FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000
000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF80
00000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF
8000000000FFFE001FFF8000000001FFFE001FFF8000000001FFFC001FFF8000000001FFFC001F
FF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FFF8001FFF8000000001FFF800
1FFF8000000001FFF8001FFF8000000003FFF0001FFF8000000003FFF0001FFF8000000003FFF0
001FFF8000000007FFE0001FFF8000000007FFE0001FFF800000000FFFC0001FFF800000000FFF
80001FFF800000001FFF80001FFF800000003FFF00001FFF800000003FFE00001FFF800000007F
FC00001FFF80000001FFF800001FFF80000003FFF000001FFF8000000FFFE000001FFF8000007F
FFC000001FFF800003FFFF0000FFFFFFFFFFFFFFFE0000FFFFFFFFFFFFFFF80000FFFFFFFFFFFF
FFC00000FFFFFFFFFFFFFE000000FFFFFFFFFFFFC00000004F477CC65B>68
D<FFFFFFFFFFFF800000FFFFFFFFFFFFFC0000FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFC000FFFF
FFFFFFFFFFF000001FFF80000FFFFC00001FFF800001FFFE00001FFF8000007FFF00001FFF8000
003FFF80001FFF8000001FFFC0001FFF8000000FFFC0001FFF8000000FFFE0001FFF8000000FFF
E0001FFF80000007FFF0001FFF80000007FFF0001FFF80000007FFF0001FFF80000007FFF8001F
FF80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF8000
0007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF0001FFF80000007FF
F0001FFF80000007FFF0001FFF8000000FFFE0001FFF8000000FFFE0001FFF8000000FFFC0001F
FF8000001FFF80001FFF8000003FFF80001FFF8000007FFF00001FFF800001FFFE00001FFF8000
0FFFF800001FFFFFFFFFFFF000001FFFFFFFFFFFC000001FFFFFFFFFFE0000001FFFFFFFFFF000
00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001F
FFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000
00000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
00001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001F
FFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000
00000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000000000
00001FFFC00000000000FFFFFFFFF800000000FFFFFFFFF800000000FFFFFFFFF800000000FFFF
FFFFF800000000FFFFFFFFF80000000045477CC651>80 D<0007FFFC000000007FFFFFC0000001
FFFFFFF8000003FFFFFFFE000007FE001FFF000007FF0003FFC0000FFF8001FFE0000FFF8000FF
F0000FFF80007FF0000FFF80007FF8000FFF80007FF80007FF00003FFC0007FF00003FFC0003FE
00003FFC0000F800003FFC00000000003FFC00000000003FFC00000000003FFC00000000003FFC
00000007FFFFFC000000FFFFFFFC000007FFFFFFFC00003FFFE03FFC0000FFFE003FFC0003FFF0
003FFC0007FFC0003FFC000FFF00003FFC001FFE00003FFC003FFC00003FFC007FF800003FFC00
7FF800003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF00000
3FFC00FFF000007FFC007FF80000FFFC007FF80001EFFC003FFC0003EFFC003FFF0007CFFF000F
FFC03F8FFFF807FFFFFF07FFFC01FFFFFC03FFFC007FFFF001FFFC0003FF80007FF8362E7DAD3A
>97 D<00001FFFC0000000FFFFF8000007FFFFFE00001FFFFFFF80007FFC00FFC000FFE001FFC0
01FFC003FFE003FF8003FFE007FF0003FFE00FFE0003FFE00FFE0003FFE01FFC0001FFC01FFC00
01FFC03FFC0000FF803FFC00003E007FF8000000007FF8000000007FF800000000FFF800000000
FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800
000000FFF800000000FFF8000000007FF8000000007FF8000000007FFC000000003FFC00000000
3FFC000000001FFC000000F81FFE000000F80FFE000000F80FFF000001F007FF800003F003FFC0
0007E001FFE0000FC000FFF0001F80007FFE00FF00001FFFFFFE000007FFFFF8000000FFFFE000
00001FFE00002D2E7CAD35>99 D<00001FFE00000001FFFFE0000007FFFFF800001FFFFFFE0000
7FFC07FF0000FFE001FF8001FFC0007FC003FF80003FE007FF00003FF00FFE00001FF01FFE0000
0FF81FFC00000FF83FFC00000FFC3FFC000007FC7FFC000007FC7FF8000007FC7FF8000007FE7F
F8000007FEFFF8000007FEFFF8000007FEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFF
FFFCFFF800000000FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000007F
FC000000003FFC000000003FFC000000003FFC0000001C1FFE0000003E0FFE0000003E07FF0000
007E07FF000000FC03FF800001F801FFC00003F0007FF0001FE0003FFE00FFC0001FFFFFFF8000
07FFFFFE000000FFFFF80000000FFF80002F2E7DAD36>101 D<00FC0001FF0003FF8007FFC00F
FFC01FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFFC007FFC003FF8001FF0000FC0000000000
0000000000000000000000000000000000000000000000000000000000007FC0FFFFC0FFFFC0FF
FFC0FFFFC0FFFFC003FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001
FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001
FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFF
FFFFFFFFFFFFFFFFFFFFFF18497CC820>105 D<007FC001FFC00000FFE00000FFFFC00FFFF800
07FFFC0000FFFFC03FFFFE001FFFFF0000FFFFC0FFFFFF007FFFFF8000FFFFC1FC07FF80FE03FF
C000FFFFC3E003FFC1F001FFE00003FFC7C001FFC3E000FFE00001FFCF0001FFE78000FFF00001
FFDE0000FFEF00007FF00001FFDC0000FFEE00007FF00001FFFC0000FFFE00007FF80001FFF800
00FFFC00007FF80001FFF00000FFF800007FF80001FFF00000FFF800007FF80001FFF00000FFF8
00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007F
F80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001
FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE000
00FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0
00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007F
F80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001
FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE000
00FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0
00007FF800FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFF
FFF0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF05C2E7CAD65>109
D<007FC001FFC00000FFFFC00FFFF80000FFFFC03FFFFE0000FFFFC0FFFFFF0000FFFFC1FC07FF
8000FFFFC3E003FFC00003FFC7C001FFC00001FFCF0001FFE00001FFDE0000FFE00001FFDC0000
FFE00001FFFC0000FFF00001FFF80000FFF00001FFF00000FFF00001FFF00000FFF00001FFF000
00FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0
0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF
E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001
FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000
01FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
0001FFE00000FFF00001FFE00000FFF000FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFF
FFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE03B2E7CAD42>I<00000FFF0000000000FFFFF00000
0007FFFFFE0000001FFFFFFF8000003FFC03FFC00000FFE0007FF00001FF80001FF80003FF0000
0FFC0007FE000007FE000FFE000007FF000FFC000003FF001FFC000003FF803FFC000003FFC03F
F8000001FFC03FF8000001FFC07FF8000001FFE07FF8000001FFE07FF8000001FFE0FFF8000001
FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8
000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF07FF8000001FFE07FF8000001FF
E07FF8000001FFE07FF8000001FFE03FFC000003FFC03FFC000003FFC01FFC000003FF801FFE00
0007FF800FFE000007FF0007FF00000FFE0003FF80001FFC0001FFC0003FF80000FFE0007FF000
007FFC03FFE000001FFFFFFF80000007FFFFFE00000000FFFFF0000000000FFF000000342E7DAD
3B>I<00FF803F8000FFFF80FFF000FFFF83FFFC00FFFF87FFFE00FFFF8FC3FF00FFFF8F07FF00
03FF9E0FFF8001FFBC0FFF8001FFB80FFF8001FFF80FFF8001FFF00FFF8001FFF007FF0001FFF0
07FF0001FFE003FE0001FFE000F80001FFE000000001FFE000000001FFC000000001FFC0000000
01FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0
00000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000000
01FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0
00000001FFC000000001FFC0000000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000
FFFFFFE00000292E7CAD31>114 D<000FFF00E0007FFFF3E001FFFFFFE007FFFFFFE00FF800FF
E01FC0001FE03F80000FE03F000007E07F000003E07F000003E0FF000003E0FF000003E0FF8000
03E0FFC0000000FFF0000000FFFE000000FFFFF800007FFFFFC0007FFFFFF0003FFFFFFC001FFF
FFFF000FFFFFFF8007FFFFFFC003FFFFFFE000FFFFFFF0003FFFFFF00003FFFFF800001FFFF800
0000FFFC0000001FFC7800000FFCF8000007FCF8000003FCFC000003FCFC000003FCFE000003F8
FE000003F8FF000003F8FF800007F0FFC0000FF0FFF0001FE0FFFC00FFC0FFFFFFFF80FC7FFFFE
00F81FFFF800E003FF8000262E7CAD2F>I<7FFFFFC000FFFF807FFFFFC000FFFF807FFFFFC000
FFFF807FFFFFC000FFFF807FFFFFC000FFFF8000FFF000000FE00000FFF800000FC00000FFF800
000FC000007FFC00000F8000007FFC00001F8000003FFC00001F0000003FFE00003F0000001FFE
00003E0000001FFF00007E0000000FFF00007C0000000FFF8000FC00000007FF8000F800000007
FFC001F800000003FFC001F000000003FFE003F000000003FFE003F000000001FFF003E0000000
01FFF007E000000000FFF007C000000000FFF80FC0000000007FF80F80000000007FFC1F800000
00003FFC1F00000000003FFE3F00000000001FFE3E00000000001FFF7E00000000000FFF7C0000
0000000FFFFC00000000000FFFFC000000000007FFF8000000000007FFF8000000000003FFF000
0000000003FFF0000000000001FFE0000000000001FFE0000000000000FFC0000000000000FFC0
0000000000007F800000000000007F800000000000003F000000000000003F000000000000003F
000000000000003E000000000000007E000000000000007C00000000000000FC000000001F8000
F8000000003FC001F8000000007FE001F000000000FFF003F000000000FFF003E000000000FFF0
07E000000000FFF00FC000000000FFF01F8000000000FFF03F80000000007FE07F00000000007F
43FE00000000003FFFF800000000001FFFF0000000000007FFC0000000000001FE000000000000
39427EAD3F>121 D E /Fr 8 117 df<00000F000000001F000000007F00000003FF0000001FFF
0000FFFFFF0000FFFFFF0000FFFFFF0000FFE7FF00000007FF00000007FF00000007FF00000007
FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF000000
07FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF0000
0007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00
000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF
00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007
FF00007FFFFFFFE07FFFFFFFE07FFFFFFFE07FFFFFFFE0233879B732>49
D<0000001FFE0000E0000003FFFFC001E000001FFFFFF803E000007FFFFFFE07E00001FFFC00FF
0FE00007FFC0001FDFE0000FFF000007FFE0003FFC000003FFE0007FF8000001FFE000FFF00000
00FFE001FFE00000007FE003FFC00000003FE007FF800000001FE007FF800000001FE00FFF0000
00000FE00FFF000000000FE01FFE0000000007E01FFE0000000007E03FFC0000000007E03FFC00
00000007E07FFC0000000003E07FFC0000000003E07FFC0000000003E07FF8000000000000FFF8
000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FF
F8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000
FFF8000000000000FFF8000000000000FFF80000000000007FF80000000000007FFC0000000000
007FFC0000000001E07FFC0000000001E03FFC0000000001E03FFC0000000001E01FFE00000000
01E01FFE0000000003E00FFF0000000003C00FFF0000000007C007FF8000000007C007FF800000
000F8003FFC00000000F8001FFE00000001F0000FFF00000003E00007FF80000007C00003FFC00
0000F800000FFF000003F0000007FFE0000FE0000001FFFC007FC00000007FFFFFFF000000001F
FFFFFC0000000003FFFFE000000000001FFE0000003B3D7ABB48>67 D<001FFF00000001FFFFF0
000007FFFFFC00000FF807FF00001FF801FF80001FFC00FFC0001FFC007FE0001FFC007FE0001F
FC007FF0001FFC003FF0000FF8003FF00007F0003FF00001C0003FF0000000003FF0000000003F
F0000000003FF0000000FFFFF000000FFFFFF000007FF83FF00003FF803FF00007FE003FF0001F
FC003FF0003FF8003FF0007FF0003FF0007FE0003FF000FFE0003FF000FFC0003FF000FFC0003F
F000FFC0003FF000FFC0007FF000FFC0007FF000FFE000FFF0007FF001DFF0003FF803DFF8001F
FC0F8FFFF00FFFFE0FFFF001FFFC07FFF0003FE000FFF02C267DA530>97
D<0001FFC000000FFFF800003FFFFE0000FF80FF0001FE003F8007FC001FC00FF8000FE00FF800
0FF01FF00007F03FF00007F83FF00007F87FE00007F87FE00003FC7FE00003FC7FE00003FCFFE0
0003FCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFE0000000FFE0000000FFE0000000FFE00000007F
E00000007FE00000007FE00000003FE00000003FF000003C1FF000003C1FF000003C0FF8000078
07FC0000F803FE0001F001FF0007E000FFC03FC0003FFFFF000007FFFC000000FFE00026267DA5
2D>101 D<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF0000
000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003
FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000
000003FF0000000003FF0000000003FF0000000003FF007FC00003FF01FFF80003FF07FFFE0003
FF1F03FF0003FF3C01FF0003FF7801FF8003FF7000FF8003FFE000FFC003FFC000FFC003FFC000
FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000
FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3F
FFFFFFFFFC3FFFFFFFFFFC3FFFFF303C7CBB37>104 D<00FF01FF8000FFFF0FFFF000FFFF3FFF
FC00FFFFFE03FF00FFFFF001FFC003FFE0007FE003FF80007FF003FF80003FF803FF00001FF803
FF00001FFC03FF00000FFC03FF00000FFE03FF00000FFE03FF00000FFE03FF000007FF03FF0000
07FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03
FF000007FF03FF000007FF03FF00000FFE03FF00000FFE03FF00000FFE03FF00001FFC03FF0000
1FFC03FF00001FF803FF80003FF003FFC0007FF003FFE000FFE003FFF001FF8003FFFC07FF0003
FF3FFFFC0003FF0FFFF00003FF01FF000003FF0000000003FF0000000003FF0000000003FF0000
000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003
FF0000000003FF0000000003FF00000000FFFFFC000000FFFFFC000000FFFFFC000000FFFFFC00
000030377DA537>112 D<00FE03F000FFFE0FFE00FFFE3FFF80FFFE3C7FC0FFFE707FC007FEF0
FFE003FEE0FFE003FEC0FFE003FFC0FFE003FF80FFE003FF807FC003FF803F8003FF800E0003FF
00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003
FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000
03FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE0000FFFFFE00
00FFFFFE000023267DA529>114 D<0007800000078000000780000007800000078000000F8000
000F8000000F8000000F8000001F8000001F8000003F8000003F8000007F800000FF800001FF80
0007FF80001FFFFFF8FFFFFFF8FFFFFFF8FFFFFFF801FF800001FF800001FF800001FF800001FF
800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001
FF800001FF800001FF800001FF800001FF800001FF803C01FF803C01FF803C01FF803C01FF803C
01FF803C01FF803C01FF803C00FF807800FFC078007FC0F8007FE1F0001FFFE00007FFC00001FF
001E377EB627>116 D E /Fs 82 124 df<07FFF800003F0000001E0000001E0000001E000000
1E0000007F800003DEF0000F1E3C001E1E1E003C1E0F007C1E0F80781E0780F81E07C0F81E07C0
F81E07C0F81E07C0F81E07C0781E07807C1E0F803C1E0F001E1E1E000F1E3C0003DEF000007F80
00001E0000001E0000001E0000001E0000003F000007FFF8001A1F7D9E21>8
D<001F83E000F06E3001C078780380F8780300F030070070000700700007007000070070000700
70000700700007007000FFFFFF8007007000070070000700700007007000070070000700700007
007000070070000700700007007000070070000700700007007000070070000700700007007000
07007000070070007FE3FF001D20809F1B>11 D<003F0000E0C001C0C00381E00701E00701E007
0000070000070000070000070000070000FFFFE00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E07FC3FE17
20809F19>I<003FE000E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700E0
0700E0FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0
0700E00700E00700E00700E00700E00700E00700E07FE7FE1720809F19>I<001F81F80000F04F
040001C07C06000380F80F000300F00F000700F00F000700700000070070000007007000000700
70000007007000000700700000FFFFFFFF00070070070007007007000700700700070070070007
007007000700700700070070070007007007000700700700070070070007007007000700700700
0700700700070070070007007007000700700700070070070007007007007FE3FE3FF02420809F
26>I<7038F87CFC7EFC7E743A0402040204020804080410081008201040200F0E7E9F17>34
D<70F8FCFC74040404080810102040060E7C9F0D>39 D<0020004000800100020006000C000C00
180018003000300030007000600060006000E000E000E000E000E000E000E000E000E000E000E0
00E0006000600060007000300030003000180018000C000C000600020001000080004000200B2E
7DA112>I<800040002000100008000C00060006000300030001800180018001C000C000C000C0
00E000E000E000E000E000E000E000E000E000E000E000E000C000C000C001C001800180018003
000300060006000C00080010002000400080000B2E7DA112>I<01800180018001800180C183F1
8F399C0FF003C003C00FF0399CF18FC1830180018001800180018010147DA117>I<70F8FCFC74
040404080810102040060E7C840D>44 D<FFC0FFC00A027F8A0F>I<70F8F8F87005057C840D>I<
00030003000700060006000E000C000C001C0018001800380030003000700060006000E000C000
C001C00180018001800380030003000700060006000E000C000C001C0018001800380030003000
700060006000E000C000C000102D7DA117>I<03F0000E1C001C0E001806003807007003807003
80700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003
C0F003C0F003C07003807003807003807807803807001806001C0E000E1C0003F000121F7E9D17
>I<018003800F80F3800380038003800380038003800380038003800380038003800380038003
8003800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C1C00100E00
200700400780800780F007C0F803C0F803C0F803C02007C00007C0000780000780000F00000E00
001C0000380000700000600000C0000180000300000600400C00401800401000803FFF807FFF80
FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F80780780780780380F80000F80000F
00000F00000E00001C0000380003F000003C00000E00000F000007800007800007C02007C0F807
C0F807C0F807C0F00780400780400F00200E001C3C0003F000121F7E9D17>I<00060000060000
0E00000E00001E00002E00002E00004E00008E00008E00010E00020E00020E00040E00080E0008
0E00100E00200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00000E00000E0000
0E0000FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE000100000100000100000100000
10000010000011F000161C00180E001007001007800003800003800003C00003C00003C07003C0
F003C0F003C0E00380400380400700200600100E000C380003E000121F7E9D17>I<007C000182
000701000E03800C07801C0780380300380000780000700000700000F1F000F21C00F40600F807
00F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C07003803803803807001807
000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF8040010080020080020080
040000080000080000100000200000200000400000400000C00000C00001C00001800003800003
8000038000038000078000078000078000078000078000078000078000030000121F7D9D17>I<
03F0000C0C001006003003002001806001806001806001807001807803003E03003F06001FC800
0FF00003F80007FC000C7E00103F00300F806003804001C0C001C0C000C0C000C0C000C0C00080
6001802001001002000C0C0003F000121F7E9D17>I<03F0000E18001C0C003806003807007007
00700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C0180BC00E13
C003E3C0000380000380000380000700300700780600780E00700C002018001070000FC000121F
7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<70F8F8F870000000
0000000000000070F0F8F878080808101010202040051D7C930D>I<7FFFFFE0FFFFFFF0000000
0000000000000000000000000000000000000000000000000000000000FFFFFFF07FFFFFE01C0C
7D9023>61 D<0FC0307040384038E03CF03CF03C603C0038007000E000C0018001800100030002
00020002000200020002000000000000000000000007000F800F800F8007000E207D9F15>63
D<000100000003800000038000000380000007C0000007C0000007C0000009E0000009E0000009
E0000010F0000010F0000010F00000207800002078000020780000403C0000403C0000403C0000
801E0000801E0000FFFE0001000F0001000F0001000F00020007800200078002000780040003C0
0E0003C01F0007E0FFC03FFE1F207F9F22>65 D<FFFFE0000F80380007801E0007801F0007800F
0007800F8007800F8007800F8007800F8007800F8007800F0007801F0007801E0007803C0007FF
F00007803C0007801E0007800F0007800F8007800780078007C0078007C0078007C0078007C007
8007C00780078007800F8007800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC04000
7030C001C009C0038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C000040
78000040F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00780000007C0000407C0000403C0000401C0000401E0000800E000080070001000380020001C0
040000703800000FC0001A217D9F21>I<FFFFE0000F803C0007801E0007800700078003800780
03C0078001E0078001E0078001F0078000F0078000F0078000F8078000F8078000F8078000F807
8000F8078000F8078000F8078000F8078000F8078000F0078000F0078000F0078001E0078001E0
078003C0078003800780070007800E000F803C00FFFFE0001D1F7E9E23>I<FFFFFF000F800F00
078003000780030007800100078001800780008007800080078000800780808007808000078080
00078080000781800007FF80000781800007808000078080000780800007808000078000200780
002007800020078000400780004007800040078000C0078000C0078001800F800F80FFFFFF801B
1F7E9E1F>I<FFFFFF000F800F0007800300078003000780010007800180078000800780008007
80008007800080078080000780800007808000078080000781800007FF80000781800007808000
078080000780800007808000078000000780000007800000078000000780000007800000078000
00078000000FC00000FFFE0000191F7E9E1E>I<000FE0200078186000E004E0038002E0070001
E00F0000E01E0000601E0000603C0000603C0000207C00002078000020F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8007FFCF80003E0780001E07C0001E03C0001E03C
0001E01E0001E01E0001E00F0001E0070001E0038002E000E0046000781820000FE0001E217D9F
24>I<FFF8FFF80F800F8007800F0007800F0007800F0007800F0007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007FFFF0007800F0007800F0007800F0007800F
0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000780
0F000F800F80FFF8FFF81D1F7E9E22>I<FFFC0FC0078007800780078007800780078007800780
0780078007800780078007800780078007800780078007800780078007800780078007800FC0FF
FC0E1F7F9E10>I<0FFFC0007C00003C00003C00003C00003C00003C00003C00003C00003C0000
3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0020
3C00F83C00F83C00F83C00F0380040780040700030E0000F800012207E9E17>I<FFFE000FC000
078000078000078000078000078000078000078000078000078000078000078000078000078000
07800007800007800007800007800007800207800207800207800207800607800407800407800C
07801C0F807CFFFFFC171F7E9E1C>76 D<FF80001FF80F80001F800780001F0005C0002F0005C0
002F0005C0002F0004E0004F0004E0004F000470008F000470008F000470008F000438010F0004
38010F000438010F00041C020F00041C020F00041C020F00040E040F00040E040F00040E040F00
0407080F000407080F000407080F000403900F000403900F000401E00F000401E00F000401E00F
000E00C00F001F00C01F80FFE0C1FFF8251F7E9E2A>I<FF803FF807C007C007C0038005E00100
05E0010004F001000478010004780100043C0100043C0100041E0100040F0100040F0100040781
00040781000403C1000401E1000401E1000400F1000400F1000400790004003D0004003D000400
1F0004001F0004000F0004000700040007000E0003001F000300FFE001001D1F7E9E22>I<001F
800000F0F00001C0380007801E000F000F000E0007001E0007803C0003C03C0003C07C0003E078
0001E0780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0
F80001F0780001E07C0003E07C0003E03C0003C03C0003C01E0007800E0007000F000F0007801E
0001C0380000F0F000001F80001C217D9F23>I<FFFFE0000F80780007801C0007801E0007800F
0007800F8007800F8007800F8007800F8007800F8007800F8007800F0007801E0007801C000780
780007FFE000078000000780000007800000078000000780000007800000078000000780000007
800000078000000780000007800000078000000FC00000FFFC0000191F7E9E1F>I<001F800000
F0F00001C0380007801E000F000F000E0007001E0007803C0003C03C0003C07C0003E07C0003E0
780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001
F0780001E0780001E07C0003E03C0003C03C0F03C01E1087800E2047000F204F0007A03E0001E0
380000F0F010001FB01000003010000038300000387000003FF000001FE000001FE000000FC000
0007801C297D9F23>I<FFFF80000F80F0000780780007803C0007801E0007801E0007801F0007
801F0007801F0007801F0007801E0007801E0007803C00078078000780F00007FF80000781C000
0780E0000780F0000780700007807800078078000780780007807C0007807C0007807C0007807C
0407807E0407803E040FC01E08FFFC0F10000003E01E207E9E21>I<07E0800C19801007803003
80600180600180E00180E00080E00080E00080F00000F000007800007F00003FF0001FFC000FFE
0003FF00001F800007800003C00003C00001C08001C08001C08001C08001C0C00180C00380E003
00F00600CE0C0081F80012217D9F19>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F
0030800F0010800F0010800F0010800F0010000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000001F800007FFFE001C1F7E9E21>I<FFFC3FF80FC007C0
078003800780010007800100078001000780010007800100078001000780010007800100078001
000780010007800100078001000780010007800100078001000780010007800100078001000780
01000780010007800100038002000380020001C0020001C0040000E00800007018000038200000
0FC0001D207E9E22>I<FFF003FE1F8000F80F0000600F800060078000400780004003C0008003
C0008003C0008001E0010001E0010001F0010000F0020000F0020000F806000078040000780400
003C0800003C0800003C0800001E1000001E1000001F3000000F2000000F20000007C0000007C0
000007C000000380000003800000038000000100001F207F9E22>I<FFF07FF81FF01F800FC007
C00F00078003800F00078001000F0007C00100078007C00200078007C00200078007C0020003C0
09E0040003C009E0040003C009E0040003E010F00C0001E010F0080001E010F0080001F0207808
0000F02078100000F02078100000F0403C10000078403C20000078403C20000078C03E2000003C
801E4000003C801E4000003C801E4000001F000F8000001F000F8000001F000F8000001E000780
00000E00070000000E00070000000C000300000004000200002C207F9E2F>I<7FF81FF80FE00F
C007C0070003C0020001E0040001F00C0000F0080000781000007C1000003C2000003E4000001E
4000000F8000000F8000000780000003C0000007E0000005E0000009F0000018F8000010780000
207C0000603C0000401E0000801F0001800F0001000780020007C0070003C01F8007E0FFE01FFE
1F1F7F9E22>I<FFF003FF1F8000F80F8000600780004007C0004003E0008001E0008001F00100
00F0030000F80200007C0400003C0400003E0800001E0800001F1000000FB0000007A0000007C0
000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003
C0000003C0000007C000007FFE00201F7F9E22>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>91
D<080410082010201040204020804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17>I<FEFE06
060606060606060606060606060606060606060606060606060606060606060606060606060606
06FEFE072D7FA10D>I<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E
001E0E00380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>97
D<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E
000EC3800F01C00F00E00E00E00E00700E00700E00780E00780E00780E00780E00780E00780E00
700E00700E00E00F00E00D01C00CC300083E0015207F9F19>I<03F80E0C1C1E381E380C700070
00F000F000F000F000F000F00070007000380138011C020E0C03F010147E9314>I<000380003F
8000038000038000038000038000038000038000038000038000038000038003E380061B801C07
80380380380380700380700380F00380F00380F00380F00380F00380F003807003807003803803
803807801C07800E1B8003E3F815207E9F19>I<03F0000E1C001C0E0038070038070070070070
0380F00380F00380FFFF80F00000F00000F000007000007000003800801800800C010007060001
F80011147F9314>I<007C00C6018F038F07060700070007000700070007000700FFF007000700
07000700070007000700070007000700070007000700070007000700070007007FF01020809F0E
>I<0000E003E3300E3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E
380033E0002000002000003000003000003FFE001FFF800FFFC03001E0600070C00030C00030C0
0030C000306000603000C01C038003FC00141F7F9417>I<0E0000FE00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E3E000E43000E81800F01C00F01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
FFE7FC16207F9F19>I<1C001E003E001E001C000000000000000000000000000E007E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>
I<00E001F001F001F000E0000000000000000000000000007007F000F000700070007000700070
00700070007000700070007000700070007000700070007000700070007000706070F060F0C061
803F000C28829E0E>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E0FF00E03C00E03000E02000E04000E08000E10000E30000E70000EF8000F38
000E1C000E1E000E0E000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E
81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00
0E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E
000E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E81800F01C00F01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC
16147F9319>I<01F800070E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000
F0F000F0F000F07000E07000E03801C03801C01C0380070E0001F80014147F9317>I<0E3E00FE
C3800F01C00F00E00E00E00E00F00E00700E00780E00780E00780E00780E00780E00780E00700E
00F00E00E00F01E00F01C00EC3000E3E000E00000E00000E00000E00000E00000E00000E00000E
0000FFE000151D7F9319>I<03E0800619801C05803C0780380380780380700380F00380F00380
F00380F00380F00380F003807003807803803803803807801C0B800E138003E380000380000380
000380000380000380000380000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E
000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030
704030C010C010C010E00078007F803FE00FF00070803880188018C018C018E030D0608F800D14
7E9312>I<020002000200060006000E000E003E00FFF80E000E000E000E000E000E000E000E00
0E000E000E000E080E080E080E080E080610031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
03C00603C0030DC001F1FC16147F9319>I<FF83F81E01E01C00C00E00800E00800E0080070100
07010003820003820003820001C40001C40001EC0000E80000E800007000007000007000002000
15147F9318>I<FF9FE1FC3C0780701C0300601C0380200E0380400E0380400E03C0400707C080
0704C0800704E080038861000388710003C8730001D0320001D03A0000F03C0000E01C0000E01C
0000601800004008001E147F9321>I<7FC3FC0F01E00701C007018003810001C20000E40000EC
00007800003800003C00007C00004E000087000107000303800201C00601E01E01E0FF07FE1714
809318>I<FF83F81E01E01C00C00E00800E00800E008007010007010003820003820003820001
C40001C40001EC0000E80000E800007000007000007000002000002000004000004000004000F0
8000F08000F100006200003C0000151D7F9318>I<3FFF380E200E201C40384078407000E001E0
01C00380078007010E011E011C0338027006700EFFFE10147F9314>I<FFFFFC1601808C17>I
E /Ft 47 122 df<70F8FCFC7404040404080810102040060F7C840E>44
D<FFE0FFE00B027F8B10>I<70F8F8F87005057C840E>I<01F000071C000C060018030038038038
03807001C07001C07001C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F0
01E0F001E0F001E0F001E0F001E0F001E07001C07001C07001C07803C03803803803801C07000C
0600071C0001F00013227EA018>48 D<008003800F80F380038003800380038003800380038003
800380038003800380038003800380038003800380038003800380038003800380038003800380
07C0FFFE0F217CA018>I<03F0000C1C001007002007804003C04003C08003E0F003E0F801E0F8
01E0F801E02003E00003E00003C00003C0000780000700000E00001C0000180000300000600000
C0000180000100000200200400200800201800603000403FFFC07FFFC0FFFFC013217EA018>I<
03F8000C1E001007002007804007C07807C07803C07807C03807C0000780000780000700000F00
000E0000380003F000001C00000F000007800007800003C00003C00003E02003E07003E0F803E0
F803E0F003C04003C0400780200780100F000C1C0003F00013227EA018>I<000200000600000E
00000E00001E00001E00002E00004E00004E00008E00008E00010E00020E00020E00040E00040E
00080E00100E00100E00200E00200E00400E00800E00FFFFF8000E00000E00000E00000E00000E
00000E00000E00001F0001FFF015217FA018>I<1000801E07001FFF001FFE001FF80013E00010
000010000010000010000010000010000010F800130E001407001803801003800001C00001C000
01E00001E00001E00001E07001E0F001E0F001E0E001C08001C04003C04003802007001006000C
1C0003F00013227EA018>I<007E0001C1000300800601C00E03C01C03C0180180380000380000
780000700000700000F0F800F30C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0
F001E0F001E07001E07001E07001E03801C03801C01803801C03000C0600070C0001F00013227E
A018>I<01F800060E000803001001802001802000C06000C06000C06000C07000C07801803E01
003F02001FC4000FF80003F80003FC00067F00083F80100F803007C06001C06000E0C000E0C000
60C00060C00060C000606000406000C03000801803000E0E0003F00013227EA018>56
D<01F000060C000C0600180700380380700380700380F001C0F001C0F001C0F001E0F001E0F001
E0F001E0F001E07001E07003E03803E01805E00C05E00619E003E1E00001C00001C00001C00003
80000380300300780700780600700C002018001030000FC00013227EA018>I<00018000000180
00000180000003C0000003C0000003C0000005E0000005E000000DF0000008F0000008F0000010
F800001078000010780000203C0000203C0000203C0000401E0000401E0000401E0000800F0000
800F0000FFFF000100078001000780030007C0020003C0020003C0040003E0040001E0040001E0
0C0000F00C0000F03E0001F8FF800FFF20237EA225>65 D<0007E0100038183000E0063001C001
70038000F0070000F00E0000701E0000701C0000303C0000303C0000307C000010780000107800
0010F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007800000078
0000107C0000103C0000103C0000101C0000201E0000200E000040070000400380008001C00100
00E0020000381C000007E0001C247DA223>67 D<FFFFFFC00F8007C0078001C0078000C0078000
400780004007800060078000200780002007800020078020200780200007802000078020000780
60000780E00007FFE0000780E00007806000078020000780200007802000078020080780000807
800008078000100780001007800010078000300780003007800070078000E00F8003E0FFFFFFE0
1D227EA121>69 D<FFFFFFC00F8007C0078001C0078000C0078000400780004007800060078000
20078000200780002007802020078020000780200007802000078060000780E00007FFE0000780
E00007806000078020000780200007802000078020000780000007800000078000000780000007
800000078000000780000007800000078000000FC00000FFFE00001B227EA120>I<FFFC0FC007
800780078007800780078007800780078007800780078007800780078007800780078007800780
07800780078007800780078007800780078007800FC0FFFC0E227EA112>73
D<03FFF0001F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
00700F00F80F00F80F00F80E00F01E00401C0020380018700007C00014237EA119>I<FFC00003
FF0FC00003F007C00003E005E00005E005E00005E004F00009E004F00009E004F00009E0047800
11E004780011E004780011E0043C0021E0043C0021E0043C0021E0041E0041E0041E0041E0040F
0081E0040F0081E0040F0081E004078101E004078101E004078101E00403C201E00403C201E004
01E401E00401E401E00401E401E00400F801E00400F801E00400F801E004007001E00E007001E0
1F007003F0FFE0203FFF28227EA12D>77 D<FF8007FF07C000F807C0007005E0002004F0002004
F0002004780020047C0020043C0020041E0020041F0020040F002004078020040780200403C020
0401E0200401E0200400F0200400F8200400782004003C2004003E2004001E2004000F2004000F
20040007A0040003E0040003E0040001E0040001E0040000E00E0000601F000060FFE000202022
7EA125>I<FFFFF0000F803C0007800F0007800780078007C0078003C0078003E0078003E00780
03E0078003E0078003E0078003E0078003C0078007C00780078007800F0007803C0007FFF00007
800000078000000780000007800000078000000780000007800000078000000780000007800000
078000000780000007800000078000000FC00000FFFC00001B227EA121>80
D<FFFFE000000F803C000007800E00000780078000078007C000078003C000078003E000078003
E000078003E000078003E000078003E000078003C000078007C000078007800007800E00000780
3C000007FFE000000780700000078038000007801C000007801E000007800E000007800F000007
800F000007800F000007800F000007800F800007800F800007800F800007800F808007800FC080
078007C0800FC003C100FFFC01E2000000007C0021237EA124>82 D<03F0200C0C601802603001
E07000E0600060E00060E00060E00020E00020E00020F00000F000007800007F00003FF0001FFE
000FFF0003FF80003FC00007E00001E00000F00000F0000070800070800070800070800070C000
60C00060E000C0F000C0C80180C6070081FC0014247DA21B>I<7FFFFFF8780780786007801840
0780084007800840078008C007800C800780048007800480078004800780040007800000078000
000780000007800000078000000780000007800000078000000780000007800000078000000780
00000780000007800000078000000780000007800000078000000780000007800000078000000F
C00003FFFF001E227EA123>I<0FE0001838003C0C003C0E0018070000070000070000070000FF
0007C7001E07003C0700780700700700F00708F00708F00708F00F087817083C23900FC1E01515
7E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E1F000E61C00E80600F00300E00380E003C0E001C0E001E0E001E0E001E
0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C80600C41C0083F0017237FA21B>
I<01FE000703000C07801C0780380300780000700000F00000F00000F00000F00000F00000F000
00F000007000007800403800401C00800C010007060001F80012157E9416>I<0000E0000FE000
01E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E001F8E007
04E00C02E01C01E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000E070
00E07800E03800E01801E00C02E0070CF001F0FE17237EA21B>I<01FC000707000C03801C01C0
3801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000F00000700000780020380020
1C00400E008007030000FC0013157F9416>I<003C00C6018F038F030F07000700070007000700
0700070007000700FFF80700070007000700070007000700070007000700070007000700070007
0007000700070007807FF8102380A20F>I<00007001F198071E180E0E181C07001C07003C0780
3C07803C07803C07801C07001C07000E0E000F1C0019F0001000001000001800001800001FFE00
0FFFC00FFFE03800F0600030400018C00018C00018C000186000306000303800E00E038003FE00
15217F9518>I<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00700E00700E00700E00700E00
700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18237FA21B
>I<1C001E003E001E001C00000000000000000000000000000000000E00FE001E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A227FA10E>I<01
C003E003E003E001C00000000000000000000000000000000001E00FE001E000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060
E0F0C0F18061803E000B2C82A10F>I<0E0000FE00001E00000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E02000E04000E08
000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E01C00E01E00E00F00E00
F8FFE3FE17237FA21A>I<0E00FE001E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
00FFE00B237FA20E>I<0E1FC07F00FE60E183801E807201C00F003C00E00F003C00E00E003800
E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E0038
00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0FFE3FF8FFE2715
7F942A>I<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E00700E00700E00700E
00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18157F941B>I<01FC00
0707000C01801800C03800E0700070700070F00078F00078F00078F00078F00078F00078F00078
7000707800F03800E01C01C00E038007070001FC0015157F9418>I<0E1F00FE61C00E80600F00
700E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E00
380F00700E80E00E41C00E3F000E00000E00000E00000E00000E00000E00000E00000E00000E00
00FFE000171F7F941B>I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E000E000E00
0E000E000E000E000E000F00FFF010157F9413>114 D<0F8830786018C018C008C008E008F000
7F803FE00FF001F8003C801C800C800CC00CC008E018D0308FC00E157E9413>I<020002000200
02000600060006000E001E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E
040E040E040E040E040E040708030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F0
06017003827800FC7F18157F941B>I<FFC1FE1E00780E00300E00200E00200700400700400380
8003808003808001C10001C10000E20000E20000E2000074000074000038000038000038000010
0017157F941A>I<FF8FF8FF1E01E03C1C01C0180E01C0180E01E0100E01E01007026020070270
200702702003843040038438400384384001C8188001C81C8001C81C8000F00D0000F00F0000F0
0F0000600600006006000060060020157F9423>I<FFC1FE1E00780E00300E00200E0020070040
07004003808003808003808001C10001C10000E20000E20000E200007400007400003800003800
003800001000001000002000002000002000004000F04000F08000F180004300003C0000171F7F
941A>121 D E /Fu 20 118 df<FFFF80FFFF80FFFF8011037F9016>45
D<FFFFFFE00000FFFFFFFC000007E0007F000003E0000F800003E00003C00003E00001E00003E0
0000F00003E00000780003E000003C0003E000001E0003E000001E0003E000000F0003E000000F
0003E000000F8003E00000078003E0000007C003E0000007C003E0000003C003E0000003C003E0
000003E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003
E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003C003E0000003C003E0
000007C003E0000007C003E00000078003E00000078003E000000F8003E000000F0003E000001F
0003E000001E0003E000003C0003E00000780003E00000F80003E00001F00003E00003E00003E0
000F800007E0003F0000FFFFFFFC0000FFFFFFE000002B317CB033>68 D<FFFF80FFFF8007F000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00007F000FFFF80FFFF8011317DB017>73 D<FFF00000007FF8FFF000
00007FF807F00000007F0002F8000000BE0002F8000000BE0002F8000000BE00027C0000013E00
027C0000013E00023E0000023E00023E0000023E00023E0000023E00021F0000043E00021F0000
043E00021F0000043E00020F8000083E00020F8000083E00020F8000083E000207C000103E0002
07C000103E000207C000103E000203E000203E000203E000203E000201F000403E000201F00040
3E000201F000403E000200F800803E000200F800803E000200F800803E0002007C01003E000200
7C01003E0002007C01003E0002003E02003E0002003E02003E0002003E02003E0002001F04003E
0002001F04003E0002000F88003E0002000F88003E0002000F88003E00020007D0003E00020007
D0003E00020007D0003E00020003E0003E00020003E0003E00020003E0003E00070001C0003E00
0F8001C0007F00FFF801C00FFFF8FFF800800FFFF835317CB03D>77 D<FFFFFFC000FFFFFFF800
07E0007E0003E0001F0003E000078003E00003C003E00001E003E00001F003E00001F003E00000
F003E00000F803E00000F803E00000F803E00000F803E00000F803E00000F803E00000F003E000
01F003E00001E003E00003E003E00003C003E000078003E0001F0003E0007C0003FFFFF00003E0
00000003E000000003E000000003E000000003E000000003E000000003E000000003E000000003
E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
03E000000003E000000003E000000003E000000003E000000007F0000000FFFF800000FFFF8000
0025317CB02D>80 D<007F802001FFE02007C078600F001C601E0006E03C0003E0380001E07800
00E0700000E070000060F0000060F0000060F0000020F0000020F0000020F8000020F80000007C
0000007E0000003F0000003FC000001FF800000FFF800007FFF80003FFFC0000FFFF00000FFF80
0000FFC000001FE0000007E0000003F0000001F0000000F0000000F8000000F880000078800000
78800000788000007880000078C0000078C0000070E00000F0E00000E0F00000E0F80001C0EC00
0380C7000700C1F01E00807FFC00800FF0001D337CB125>83 D<00FE00000303C0000C00E00010
007000100038003C003C003E001C003E001E003E001E0008001E0000001E0000001E0000001E00
000FFE0000FC1E0003E01E000F801E001F001E003E001E003C001E007C001E00F8001E04F8001E
04F8001E04F8003E04F8003E0478003E047C005E043E008F080F0307F003FC03E01E1F7D9E21>
97 D<003F8000E0600380180700040F00041E001E1C003E3C003E7C003E7C0008780000F80000
F80000F80000F80000F80000F80000F80000F80000F800007800007C00007C00003C00011E0001
1E00020F000207000403801800E060003F80181F7D9E1D>99 D<000001E000003FE000003FE000
0003E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0
000001E0000001E0000001E0000001E0000001E0000001E0001F81E000F061E001C019E0078005
E00F0003E00E0003E01E0001E03C0001E03C0001E07C0001E0780001E0F80001E0F80001E0F800
01E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0780001E0780001E03C0001E03C
0001E01C0001E01E0003E00E0005E0070009E0038011F000E061FF003F81FF20327DB125>I<00
3F800000E0E0000380380007003C000E001E001E001E001C000F003C000F007C000F0078000F80
78000780F8000780F8000780FFFFFF80F8000000F8000000F8000000F8000000F8000000F80000
00780000007C0000003C0000003C0000801E0000800E0001000F0002000780020001C00C0000F0
3000001FC000191F7E9E1D>I<0007E0001C1000383800707C00E07C01E07C01C03803C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00007E0
007FFF007FFF0016327FB114>I<000000F0007F030801C1C41C0380E81C070070080F0078001E
003C001E003C003E003E003E003E003E003E003E003E003E003E003E003E001E003C001E003C00
0F007800070070000780E00009C1C000087F000018000000180000001800000018000000180000
001C0000000E0000000FFFF80007FFFF0003FFFF800E000FC0180001E0300000F070000070E000
0038E0000038E0000038E0000038E00000387000007070000070380000E01C0001C00700070001
C01C00003FE0001E2F7E9F21>I<07000F801F801F800F80070000000000000000000000000000
0000000000000000000780FF80FF800F8007800780078007800780078007800780078007800780
07800780078007800780078007800780078007800780078007800FC0FFF8FFF80D307EAF12>
105 D<0780FE001FC000FF83078060F000FF8C03C18078000F9001E2003C0007A001E4003C0007
A000F4001E0007C000F8001E0007C000F8001E00078000F0001E00078000F0001E00078000F000
1E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780
00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E
00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>109
D<0780FE0000FF83078000FF8C03C0000F9001E00007A001E00007A000F00007C000F00007C000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078000F000078000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF80
211F7E9E25>I<001FC00000F0780001C01C00070007000F0007801E0003C01C0001C03C0001E0
3C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000
F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003C00F0007800780
0F0001C01C0000F07800001FC0001D1F7E9E21>I<0783E0FF8C18FF907C0F907C07A07C07C038
07C00007C00007C000078000078000078000078000078000078000078000078000078000078000
0780000780000780000780000780000780000780000780000780000FC000FFFE00FFFE00161F7E
9E19>114 D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F80000
7E00003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC0001C
E0001CE00018F00038F00030CC0060C301C080FE00161F7E9E1A>I<0040000040000040000040
0000400000C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FFFFE003C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0
0003C00003C01003C01003C01003C01003C01003C01003C01003C01001C02001E02000E0400078
C0001F00142C7FAB19>I<078000F000FF801FF000FF801FF0000F8001F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078000F000078001F000078001F000078001F000038002F00003C004F00001C008F800
007030FF80001FC0FF80211F7E9E25>I E /Fv 5 85 df<000000006000000000007000000000
00F00000000001F00000000001F00000000003F00000000003F00000000007F00000000007F000
0000000FF0000000000FF0000000001BF00000000033F00000000033F00000000063F000000000
63F800000000C1F800000000C1F80000000181F80000000381F80000000301F80000000601F800
00000601F80000000C01F80000000C01F80000001801F80000001801F80000003001F800000060
01F80000006001F8000000C001F8000000C001FC000001FFFFFC000001FFFFFC0000030000FC00
00070000FC0000060000FC00000C0000FC00000C0000FC0000180000FC0000180000FC00003000
00FC0000700000FC0000600000FC0000E00000FC0001E00000FC0003E00000FE000FF00001FE00
FFFE003FFFF0FFFE003FFFF02C327CB135>65 D<000FFFFFFF0000000FFFFFFFC00000003F8007
F00000003F8001F80000003F00007C0000003F00007E0000007F00003E0000007F00001F000000
7E00001F0000007E00001F800000FE00000F800000FE00000F800000FC00000FC00000FC00000F
C00001FC00000FC00001FC00000FC00001F800000FC00001F800000FC00003F800000FC00003F8
00001FC00003F000001FC00003F000001FC00007F000001FC00007F000001F800007E000003F80
0007E000003F80000FE000003F80000FE000003F00000FC000007F00000FC000007F00001FC000
007E00001FC00000FE00001F800000FC00001F800000FC00003F800001F800003F800001F00000
3F000003F000003F000007E000007F000007C000007F00000FC000007E00001F8000007E00003F
000000FE00007E000000FE0000F8000000FC0001F0000000FC0007E0000001FC003F800000FFFF
FFFE000000FFFFFFF000000032317CB036>68 D<000FFFFFFFFE000FFFFFFFFE00003F8000FE00
003F80003E00003F00001E00003F00001E00007F00000C00007F00000C00007E00000C00007E00
000C0000FE00000C0000FE00000C0000FC00000C0000FC00000C0001FC00001C0001FC00C01800
01F800C0000001F800C0000003F801C0000003F801C0000003F00180000003F00380000007F00F
80000007FFFF80000007FFFF00000007E00F0000000FE0070000000FE0070000000FC006000000
0FC0060000001FC00E0000001FC00E0000001F800C0000001F80000000003F80000000003F8000
0000003F00000000003F00000000007F00000000007F00000000007E00000000007E0000000000
FE0000000000FE0000000000FC0000000000FC0000000001FC00000000FFFFFC000000FFFFFC00
00002F317CB02F>70 D<000FFFFFF800000FFFFFFF0000003F801FC000003F8007E000003F0003
F000003F0001F800007F0000FC00007F0000FC00007E0000FC00007E0000FC0000FE0000FC0000
FE0001FC0000FC0001FC0000FC0001FC0001FC0001F80001FC0003F80001F80003F00001F80007
E00003F80007E00003F8000F800003F0003F000003F0007E000007F003F8000007FFFFE0000007
FFFF80000007E007C000000FE003F000000FE001F000000FC000F800000FC000F800001FC000FC
00001FC000FC00001F8000FC00001F8000FC00003F8001FC00003F8001FC00003F0001FC00003F
0001FC00007F0003F800007F0003F800007E0003F800007E0003F80600FE0003F80E00FE0003F8
0C00FC0003F80C00FC0003F81C01FC0001F838FFFFF000FC70FFFFF0007FE0000000001F802F32
7CB034>82 D<07FFFFFFFFF807FFFFFFFFF80FE007F001F80F8007F000F80E0007E000701E0007
E000701C000FE0007018000FE0007038000FC0007038000FC0007030001FC0006070001FC00060
60001F80006060001F80006060003F8000E0E0003F8000C000003F00000000003F00000000007F
00000000007F00000000007E00000000007E0000000000FE0000000000FE0000000000FC000000
0000FC0000000001FC0000000001FC0000000001F80000000001F80000000003F80000000003F8
0000000003F00000000003F00000000007F00000000007F00000000007E00000000007E0000000
000FE0000000000FE0000000000FC0000000000FC0000000001FC0000000001FC0000000001F80
000000003F80000000007FC00000007FFFFFC000007FFFFFC000002D3174B033>84
D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin @letter /letter where {pop letter} if
%%EndSetup
%%Page: 0 1
bop 795 908 a Fv(D)26 b(R)g(A)f(F)h(T)225 999 y Fu(Do)r(cumen)n(t)20
b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n(terface)621
1194 y Ft(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum)833
1320 y(July)h(24,)g(1995)77 1378 y(This)h(w)o(ork)f(w)o(as)h(supp)q(orted)g
(in)f(part)h(b)o(y)e(ARP)l(A)h(and)h(NSF)e(under)h(gran)o(t)h(ASC-9310330,)i
(the)192 1436 y(National)d(Science)f(F)l(oundation)i(Science)e(and)i(T)l(ec)o
(hnology)f(Cen)o(ter)f(Co)q(op)q(erativ)o(e)76 1494 y(Agreemen)o(t)e(No.)22
b(CCR-8809615,)d(and)e(b)o(y)e(the)h(Commission)e(of)j(the)f(Europ)q(ean)i
(Comm)o(unit)n(y)654 1552 y(through)f(Esprit)f(pro)s(ject)g(P6643.)p
eop
%%Page: 1 2
bop 166 45 a Fs(This)20 b(is)h(the)f(result)g(of)f(a)h(LaT)l(eX)g(run)g(of)g
(a)f(draft)g(of)h(a)f(single)j(c)o(hapter)d(of)h(the)g(MPIF)f(Final)75
102 y(Rep)q(ort)d(do)q(cumen)o(t.)969 2828 y(i)p eop
%%Page: 1 3
bop 75 356 a Fr(Chapter)32 b(1)75 564 y Fq(Dynamic)38 b(Pro)s(cesses)75
805 y Fp(1.1)59 b(Intro)r(duction)75 906 y Fs(The)15 b(MPI-1)g(message)g
(passing)g(library)h(allo)o(ws)f(pro)q(cesses)h(in)g(a)f(parallel)h(program)e
(to)h(comm)o(unicate)75 963 y(with)21 b(one)f(another.)34 b(MPI-1)20
b(sp)q(eci\014es)i(neither)g(ho)o(w)d(the)i(pro)q(cesses)f(are)g(created,)h
(nor)f(ho)o(w)g(they)75 1019 y(establish)f(comm)o(unication.)30
b(Moreo)o(v)o(er,)17 b(an)i(MPI-1)f(application)i(is)e(static,)h(that)e(is,)i
(no)g(pro)q(cesses)75 1076 y(can)c(b)q(e)h(added)g(to)f(or)f(deleted)j(from)d
(an)h(application)i(while)g(it)e(is)h(running.)166 1132 y(MPI)d(users)g(ha)o
(v)o(e)g(ask)o(ed)g(that)g(the)g(MPI-1)g(mo)q(del)h(b)q(e)g(relaxed)g(to)f
(allo)o(w)g(dynamic)h(pro)q(cess)g(man-)75 1188 y(agemen)o(t.)22
b(The)17 b(main)g(imp)q(etus)g(comes)f(from)f(the)i(PVM)f([)p
Fo(?)p Fs(])22 b(researc)o(h)16 b(e\013ort,)f(whic)o(h)i(has)f(pro)o(vided)75
1245 y(a)g(w)o(ealth)h(of)f(exp)q(erience)j(with)e(dynamic)h(pro)q(cess)f
(managemen)o(t)f(that)g(illustrates)h(its)g(b)q(ene\014ts)h(and)75
1301 y(p)q(oten)o(tial)e(pitfalls.)22 b(The)15 b(reasons)g(for)g(adding)h
(dynamic)g(pro)q(cess)g(managemen)o(t)e(are)h(b)q(oth)g(tec)o(hnical)75
1358 y(and)g(practical.)143 1464 y Fn(\017)23 b Fs(W)l(orkstation)d(net)o(w)o
(ork)f(users)i(migrating)g(from)g(PVM)f(to)g(MPI)h(are)g(accustomed)g(to)f
(using)189 1521 y(PVM's)14 b(capabilities)j(for)e(pro)q(cess)g(and)g
(resource)h(managemen)o(t.)j(While)d(relativ)o(ely)g(few)f(PVM)189
1577 y(applications)d(are)e(truly)h(dynamic)h(or)e(require)h(features)g(not)f
(in)h(MPI,)g(the)f(lac)o(k)h(of)f(these)h(features)189 1633
y(is)k(a)g(practical)h(stum)o(bling)g(blo)q(c)o(k)g(to)f(migration.)143
1727 y Fn(\017)23 b Fs(Imp)q(ortan)o(t)16 b(classes)h(of)g(message)f(passing)
h(applications,)i(suc)o(h)e(as)f(clien)o(t-serv)o(er)i(systems)f(and)189
1784 y(task)d(farming)h(jobs,)g(require)h(dynamic)g(pro)q(cess)f(con)o(trol.)
143 1878 y Fn(\017)23 b Fs(With)16 b(dynamic)h(resource)g(and)f(pro)q(cess)h
(managemen)o(t)e(extensions,)i(it)g(w)o(ould)g(b)q(e)g(p)q(ossible)h(to)189
1934 y(write)d(ma)s(jor)f(parts)g(of)h(the)g(parallel)i(programming)e(en)o
(vironmen)o(t)g(in)h(MPI)f(itself.)143 2028 y Fn(\017)23 b
Fs(The)14 b(abilit)o(y)i(to)d(write)h(fault)h(toleran)o(t)e(applications)j
(is)f(imp)q(ortan)o(t)f(in)h(unstable)g(en)o(vironmen)o(ts)189
2084 y(and)23 b(for)f(commercial)i(applications.)45 b(MPI-1)23
b(do)q(es)g(not)f(pro)o(vide)i(mec)o(hanisms)f(for)g(build-)189
2141 y(ing)18 b(fault-toleran)o(t)f(applications.)30 b(The)18
b(mec)o(hanisms)g(required)h(to)e(supp)q(ort)h(fault)g(tolerance)189
2197 y(largely)d(o)o(v)o(erlap)g(with)h(those)f(needed)h(to)f(supp)q(ort)g
(dynamic)h(pro)q(cess)g(managemen)o(t.)166 2303 y(While)e(dynamic)g(pro)q
(cess)f(managemen)o(t)f(is)i(essen)o(tial,)g(it)f(is)g(imp)q(ortan)o(t)g(not)
f(to)h(compromise)g(the)75 2360 y(p)q(ortabilit)o(y)j(or)f(p)q(erformance)g
(of)g(MPI.)g(In)h(particular:)143 2454 y Fn(\017)23 b Fs(The)f(MPI-2)f
(dynamic)i(pro)q(cess)e(managemen)o(t)g(mo)q(del)i(m)o(ust)e(apply)h(to)f
(the)h(v)m(ast)f(ma)s(jorit)o(y)189 2510 y(of)e(curren)o(t)h(parallel)h(en)o
(vironmen)o(ts.)34 b(These)20 b(include)j(ev)o(erything)d(from)f(tigh)o(tly)h
(in)o(tegrated)189 2567 y(MPPs)d(suc)o(h)i(as)f(the)g(In)o(tel)h(P)o(aragon)e
(and)h(the)g(Meik)o(o)g(CS-2)h(to)e(heterogeneous)h(net)o(w)o(orks)f(of)189
2623 y(w)o(orkstations.)964 2828 y(1)p eop
%%Page: 2 4
bop 75 -100 a Fs(2)951 b Fm(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)143 45 y Fn(\017)23 b Fs(MPI)16 b(m)o(ust)g(not)g(tak)o(e)g(o)
o(v)o(er)f(op)q(erating)i(system)f(resp)q(onsibiliti)q(es.)26
b(It)17 b(should)g(instead)g(pro)o(vide)189 102 y(a)e(clean)h(in)o(terface)f
(b)q(et)o(w)o(een)h(an)f(application)i(and)e(system)g(soft)o(w)o(are.)143
195 y Fn(\017)23 b Fs(MPI)17 b(m)o(ust)g(con)o(tin)o(ue)h(to)f(guaran)o(tee)g
(comm)o(unication)h(determinism,)h(i.e.,)e(dynamic)i(pro)q(cess)189
252 y(managemen)o(t)14 b(m)o(ust)h(not)f(in)o(tro)q(duce)j(una)o(v)o(oidable)
f(race)f(conditions.)143 346 y Fn(\017)23 b Fs(MPI)15 b(m)o(ust)f(not)h(con)o
(tain)h(features)e(that)h(compromise)g(p)q(erformance.)143
439 y Fn(\017)23 b Fs(MPI-1)16 b(programs)f(m)o(ust)h(w)o(ork)g(under)h
(MPI-2,)f(i.e.,)g(the)h(MPI-1)f(static)g(pro)q(cess)h(mo)q(del)h(m)o(ust)189
496 y(b)q(e)e(a)e(sp)q(ecial)j(case)f(of)e(the)i(MPI-2)f(dynamic)h(mo)q(del.)
166 590 y(The)e(MPI)g(dynamic)h(pro)q(cess)g(managemen)o(t)e(mo)q(del)i
(address)f(these)h(issues)g(in)f(t)o(w)o(o)f(w)o(a)o(ys.)19
b(First,)75 646 y(it)13 b(separates)f(the)g(run)o(time)h(en)o(vironmen)o(t)g
(of)f(a)h(parallel)h(program)d(in)o(to)i(three)f(logical)i(parts:)k(resource)
75 703 y(managemen)o(t,)c(pro)q(cess)i(managemen)o(t,)e(and)h(comm)o
(unication.)21 b(MPI-1)15 b(addresses)h(the)f(comm)o(unica-)75
759 y(tion)20 b(comp)q(onen)o(t.)33 b(MPI-2)20 b(pro)o(vides)g(an)g(in)o
(terface)g(b)q(et)o(w)o(een)g(an)f(MPI)h(application)h(and)f(logically)75
816 y(external)c(resource)f(and)g(pro)q(cess)g(managers.)k(The)d(resource)f
(and)g(pro)q(cess)g(managers)g(ma)o(y)f(b)q(e)i(sepa-)75 872
y(rate)g(programs,)f(the)i(same)g(program,)e(part)h(of)g(the)h(op)q(erating)g
(system,)f(or)g(ev)o(en)h(con)o(tained)h(within)75 928 y(the)i(MPI)f
(implemen)o(tation)i(itself,)h(but)d(their)h(functionalit)o(y)h(is)f(w)o
(ell-de\014ned)j(and)c(exists)h(in)h(most)75 985 y(curren)o(t)15
b(message)g(passing)g(en)o(vironmen)o(ts,)g(includin)q(g)i(PVM.)166
1041 y(Second,)g(MPI-2)g(do)q(es)g(not)f(c)o(hange)h(the)g(concept)g(of)f
(comm)o(unicator.)24 b(Once)18 b(a)e(comm)o(unicator)75 1098
y(is)h(built,)g(it)g(b)q(eha)o(v)o(es)f(as)g(sp)q(eci\014ed)j(in)e(MPI-1.)23
b(A)16 b(comm)o(unicator)g(is)h(nev)o(er)f(c)o(hanged)h(once)f(created,)75
1154 y(and)f(it)h(is)g(alw)o(a)o(ys)e(created)h(using)h(deterministic)h
(collectiv)o(e)g(seman)o(tics.)75 1297 y Fp(1.2)59 b(The)19
b(MPI)h(Dynamic)f(Pro)r(cess)g(Mo)r(del)75 1401 y Fl(1.2.1)49
b(Comp)q(onents)75 1486 y Fs(The)13 b(MPI)g(dynamic)g(pro)q(cess)g(mo)q(del)h
(separates)e(the)h(functions)g(of)g Fk(r)n(esour)n(c)n(e)g(manager)p
Fs(,)g Fk(pr)n(o)n(c)n(ess)g(man-)75 1543 y(ager)i Fs(and)h
Fk(message-p)n(assing)e(libr)n(ary)p Fs(.)75 1663 y Fj(Resource)i(Manager)44
b Fs(The)15 b Fk(r)n(esour)n(c)n(e)g(manager)20 b Fs(is)15
b(the)f(part)g(of)g(the)h(system)f(that)g(con)o(trols)g(resources)75
1719 y(and)i(allo)q(cates)g(them)g(to)f(an)h(application.)23
b(It)16 b(decides)h(when)f(a)g(job)f(will)j(run)e(and)g(whic)o(h)g(pro)q
(cessors)75 1776 y(will)21 b(b)q(e)f(allo)q(cated)g(to)f(it)g(when)h(it)g(do)
q(es)f(run.)33 b(In)20 b(some)f(en)o(vironmen)o(ts)g(the)h(resource)f
(manager)f(is)75 1832 y(a)f(sophisticated)h(batc)o(h)f(queueing)h(system;)f
(in)h(others)f(it)g(is)g(the)h(user)f(him/herself,)h(who)f(can)g(start)75
1889 y(jobs)f(on)g(a)f(net)o(w)o(ork)g(whenev)o(er)i(and)f(wherev)o(er)g
(he/she)g(lik)o(es.)23 b(Logically)l(,)18 b(the)e(resource)g(manager)f(is)75
1945 y(external)h(to)e(an)h(application)i(ev)o(en)f(if)f(it)h(is)g(implemen)o
(ted)g(in)o(ternally)l(.)166 2002 y(In)g(con)o(trast,)f(the)h(PVM)f(mo)q(del)
i(of)e(a)h(resource)f(manager)g(is)i(in)o(ternal)f(to)g(an)f(application,)j
(ev)o(en)75 2058 y(though)g(it)g(ma)o(y)g(b)q(e)h(implemen)o(ted)g
(externally)h(through)d(the)h(hoster)g(and)g(task)o(er)g(in)o(terfaces.)28
b(This)75 2115 y(mak)o(es)15 b(it)g(di\016cult)i(for)d(PVM)h(applications)i
(to)d(in)o(teract)i(w)o(ell)g(with)f(external)h(resource)f(managers.)75
2235 y Fj(Pro)q(cess)d(Manager)45 b Fs(Once)12 b(pro)q(cessors)f(ha)o(v)o(e)f
(b)q(een)i(allo)q(cated)g(to)f(a)g(program,)f(user)h(pro)q(cesses)h(m)o(ust)e
(b)q(e)75 2291 y(started)g(on)g(those)g(pro)q(cessors,)h(and)f(managed)h
(after)e(startup.)18 b(By)10 b(\\managed")g(w)o(e)g(mean)g(that)g(signals)75
2348 y(m)o(ust)15 b(b)q(e)h(deliv)o(erable,)h(that)e Fi(stdin)p
Fs(,)f Fi(stdout)p Fs(,)g(and)h Fi(stderr)g Fs(m)o(ust)g(b)q(e)h(handled)g
(in)h(some)e(reasonable)75 2404 y(w)o(a)o(y)l(,)j(and)g(that)g(orderly)h
(termination)f(can)h(b)q(e)g(guaran)o(teed.)29 b(A)18 b(minimal)i(example)f
(is)g Fi(rsh)p Fs(,)f(whic)o(h)75 2460 y(starts)11 b(pro)q(cesses)i(and)g
(reroutes)f Fi(stdin)p Fs(,)g Fi(stdout)p Fs(,)g(and)h Fi(stderr)e
Fs(bac)o(k)i(to)f(the)g(originating)i(pro)q(cess.)19 b(A)75
2517 y(more)14 b(complex)i(example)g(is)f(giv)o(en)g(b)o(y)g
Fi(poe)f Fs(on)h(the)g(IBM)g(SP2)g(or)f Fi(prun)g Fs(on)h(the)g(Meik)o(o)g
(CS-2,)f(whic)o(h)75 2573 y(start)j(pro)q(cesses)i(on)f(pro)q(cessors)g(giv)o
(en)h(to)f(them)g(b)o(y)g(the)g(job)h(sc)o(heduler)g(and)g(manage)f(them)g
(un)o(til)75 2630 y(they)g(are)f(\014nished.)28 b(In)19 b(a)e(tigh)o(tly)h
(in)o(tegrated)f(parallel)i(computer,)f(pro)q(cess)g(managemen)o(t)e(ma)o(y)h
(b)q(e)75 2686 y(done)f(en)o(tirely)g(b)o(y)f(the)g(op)q(erating)h(system.)
1967 46 y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959
554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780
y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 3 5
bop 75 -100 a Fm(1.2.)34 b(THE)15 b(MPI)g(D)o(YNAMIC)g(PR)o(OCESS)h(MODEL)813
b Fs(3)166 45 y(In)21 b(some)f(cases)g(the)h(situation)g(is)g(m)o(uddied)h(b)
q(ecause)f(a)f(single)i(piece)g(of)e(soft)o(w)o(are)e(com)o(bines)75
102 y(the)i(functions)g(of)f(resource)g(manager)g(and)h(pro)q(cess)f
(manager.)32 b(Examples)20 b(of)f(this)h(approac)o(h)f(are)75
158 y(the)i(batc)o(h)f(queueing)j(systems)d(suc)o(h)h(as)g(Condor,)g(DQS,)g
(and)g(LoadLev)o(eler.)38 b(Nonetheless,)22 b(it)f(is)75 214
y(con)o(v)o(enien)o(t)f(to)e(consider)i(resource)f(and)g(pro)q(cess)g
(managemen)o(t)g(separately)l(,)h(since)g(although)f(they)75
271 y(in)o(teract,)c(they)g(are)g(separate)g(functions)g(that)g(can)g(b)q(e)h
(indep)q(enden)o(tly)i(mo)q(di\014ed.)75 391 y Fj(Message-P)o(assing)g(Lib)o
(ra)o(ry)44 b Fs(By)17 b(the)g Fk(message-p)n(assing)f(libr)n(ary)k
Fs(w)o(e)d(mean)f(the)h(library)h(used)f(b)o(y)g(the)75 447
y(application)f(program)e(for)g(its)h(in)o(terpro)q(cess)h(comm)o(unication.)
k(Programs)14 b(con)o(taining)h(only)h(calls)g(to)75 504 y(a)i
(message-passing)h(library)g(can)f(b)q(e)h(extremely)g(p)q(ortable,)g(since)h
(they)e(\014t)g(cleanly)i(in)o(to)f(a)f(v)m(ariet)o(y)75 560
y(of)13 b(job)h(sc)o(heduler{pro)q(cess)h(manager)e(en)o(vironmen)o(ts.)20
b(MPI-1)14 b(de\014nes)g(a)g(standard)f(message)h(passing)75
617 y(library)l(.)75 739 y Fl(1.2.2)49 b(Interaction)16 b(of)h(User,)d
(Application)k(and)f(Runtime)f(Environment)375 1576 y @beginspecial
71 @llx 464 @lly 494 @urx 728 @ury 2880 @rwi @setspecial
%%BeginDocument: fig1.eps
1 setlinejoin
/M { moveto } bind def /S { show } bind def
/R { rmoveto } bind def /L { lineto } bind def
/B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def
/CS { closepath stroke } bind def
/S {
/fixwidth exch def
dup length /nchars exch def
dup stringwidth pop
fixwidth exch sub nchars div
exch 0 exch ashow
} def
/bwproc {
rgbproc
dup length 3 idiv string 0 3 0
5 -1 roll {
add 2 1 roll 1 sub dup 0 eq
{ pop 3 idiv 3 -1 roll dup 4 -1 roll dup
3 1 roll 5 -1 roll put 1 add 3 0 }
{ 2 1 roll } ifelse
} forall
pop pop pop
} def
systemdict /colorimage known not {
/colorimage {
pop
pop
/rgbproc exch def
{ bwproc } image
} def
} if
1 1 scale
0 setlinewidth
/drawtri {
/y3 exch def
/x3 exch def
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
0 setgray
newpath
x1 y1 moveto
x2 y2 lineto
x3 y3 lineto
closepath
stroke
} bind def
/filltri {
/y3 exch def
/x3 exch def
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
newpath
x1 y1 moveto
x2 y2 lineto
x3 y3 lineto
closepath
fill
} bind def
/cliptri {
/y3 exch def
/x3 exch def
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
0 setgray
newpath
x1 y1 moveto
x2 y2 lineto
x3 y3 lineto
closepath
clip
} bind def
/imgscanrgb {
gsave
translate
/scandy exch def
/scandx exch def
/istr scandx 3 mul string def
scandx scandy scale
scandx scandy 8
[scandx 0 0 scandy neg 0 scandy]
{currentfile istr readhexstring pop}
false 3
colorimage
grestore
} bind def
/imgscanbw {
gsave
translate
/scandy exch def
/scandx exch def
/istr scandx string def
scandx scandy scale
scandx scandy 8
[scandx 0 0 scandy neg 0 scandy]
{currentfile istr readhexstring pop}
image
grestore
} bind def
/showcaseisoencoding [
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/space /exclam /quotedbl /numbersign
/dollar /percent /ampersand /quoteright
/parenleft /parenright /asterisk /plus
/comma /minus /period /slash
/zero /one /two /three /four /five /six /seven
/eight /nine /colon /semicolon
/less /equal /greater /question
/at /A /B /C /D /E /F /G
/H /I /J /K /L /M /N /O
/P /Q /R /S /T /U /V /W
/X /Y /Z /bracketleft
/backslash /bracketright /asciicircum /underscore
/quoteleft /a /b /c /d /e /f /g
/h /i /j /k /l /m /n /o
/p /q /r /s /t /u /v /w
/x /y /z /braceleft
/bar /braceright /asciitilde /guilsinglright
/fraction /florin /quotesingle /quotedblleft
/guilsinglleft /fi /fl /endash
/dagger /daggerdbl /bullet /quotesinglbase
/quotedblbase /quotedblright /ellipsis /trademark
/dotlessi /grave /acute /circumflex
/tilde /macron /breve /dotaccent
/dieresis /perthousand /ring /cedilla
/Ydieresis /hungarumlaut /ogonek /caron
/emdash /exclamdown /cent /sterling
/currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft
/logicalnot /hyphen /registered /macron
/degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright
/onequarter /onehalf /threequarters /questiondown
/Agrave /Aacute /Acircumflex /Atilde
/Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis
/Igrave /Iacute /Icircumflex /Idieresis
/Eth /Ntilde /Ograve /Oacute
/Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls
/agrave /aacute /acircumflex /atilde
/adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis
/igrave /iacute /icircumflex /idieresis
/eth /ntilde /ograve /oacute
/ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex
/udieresis /yacute /thorn /ydieresis ] def
/showcasedingbatencoding [
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117
/a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19
/a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7
/a8 /a9 /a10 /a29
/a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39
/a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49
/a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59
/a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69
/a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78
/a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef
/a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93
/a94 /a95 /a96
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108
/a112 /a111 /a110 /a109
/a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129
/a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139
/a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149
/a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159
/a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168
/a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177
/a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef
/a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187
/a188 /a189 /a190 /a191 /.notdef
] def
/Courier-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding showcaseisoencoding def
currentdict
end
/Courier-Bold-SHOWISO exch definefont pop
/newfont 10 dict def
newfont begin
/FontType 3 def
/FontMatrix [1 0 0 1 0 0] def
/FontBBox [0 0 1 1] def
/Encoding 256 array def
0 1 255 {Encoding exch /.notdef put} for
/CharProcs 1 dict def
CharProcs begin
/.notdef {} def
end
/BuildChar {
1 0
0 0 1 1
setcachedevice
exch begin
Encoding exch get
CharProcs exch get
end
exec
} def
end
/PatternFont newfont definefont pop
/#copies 1 def
gsave
gsave
0 0 0 setrgbcolor
1.000000 setlinewidth
newpath
214 599.5 M
208.75 600.25 L
205 602.5 L
202.75 606.25 L
202 611.5 L
202 611.5 L
202 612.373 L
202 614.496 L
202 617.692 L
202 621.781 L
202 626.585 L
202 631.926 L
202 637.624 L
202 643.5 L
202 649.376 L
202 655.074 L
202 660.415 L
202 665.219 L
202 669.308 L
202 672.504 L
202 674.627 L
202 675.5 L
202 675.5 L
202.75 680.75 L
205 684.5 L
208.75 686.75 L
214 687.5 L
214 687.5 L
215.535 687.5 L
219.527 687.5 L
225.624 687.5 L
233.469 687.5 L
242.708 687.5 L
252.988 687.5 L
263.954 687.5 L
275.25 687.5 L
286.523 687.5 L
297.418 687.5 L
307.581 687.5 L
316.656 687.5 L
324.291 687.5 L
330.129 687.5 L
333.817 687.5 L
335 687.5 L
335 687.5 L
340.25 686.75 L
344 684.5 L
346.25 680.75 L
347 675.5 L
347 675.5 L
347 674.627 L
347 672.504 L
347 669.308 L
347 665.219 L
347 660.415 L
347 655.074 L
347 649.376 L
347 643.5 L
347 637.624 L
347 631.926 L
347 626.585 L
347 621.781 L
347 617.692 L
347 614.496 L
347 612.373 L
347 611.5 L
347 611.5 L
346.25 606.25 L
344 602.5 L
340.25 600.25 L
335 599.5 L
335 599.5 L
333.487 599.5 L
329.555 599.5 L
323.548 599.5 L
315.812 599.5 L
306.694 599.5 L
296.539 599.5 L
285.692 599.5 L
274.5 599.5 L
263.308 599.5 L
252.461 599.5 L
242.306 599.5 L
233.187 599.5 L
225.452 599.5 L
219.445 599.5 L
215.513 599.5 L
214 599.5 L
closepath
stroke
grestore
gsave
gsave
matrix currentmatrix
[1 0 0 1 239.9 629.5] concat
newpath
0 0 M 0 28 L 69.2 28 L 69.2 0 L
closepath setmatrix
0 0 0 setrgbcolor
grestore
newpath
237.9 627.5 M 237.9 659.5 L 311.1 659.5 L 311.1 627.5 L
closepath clip newpath
0 0 0 setrgbcolor
matrix currentmatrix
[1 0 0 1 239.9 629.5] concat
/Courier-Bold-SHOWISO findfont 14 scalefont setfont
0 0 0 setrgbcolor
0 17.5 M (Resource) 67.2 S
0 3.5 M (Manager) 58.8 S
setmatrix
grestore
gsave
0 0 0 setrgbcolor
1.000000 setlinewidth
newpath
83.5 464.5 M
78.25 465.25 L
74.5 467.5 L
72.25 471.25 L
71.5 476.5 L
71.5 476.5 L
71.5 477.373 L
71.5 479.496 L
71.5 482.692 L
71.5 486.781 L
71.5 491.585 L
71.5 496.926 L
71.5 502.624 L
71.5 508.5 L
71.5 514.376 L
71.5 520.074 L
71.5 525.415 L
71.5 530.219 L
71.5 534.308 L
71.5 537.504 L
71.5 539.627 L
71.5 540.5 L
71.5 540.5 L
72.25 545.75 L
74.5 549.5 L
78.25 551.75 L
83.5 552.5 L
83.5 552.5 L
85.0347 552.5 L
89.0273 552.5 L
95.1235 552.5 L
102.969 552.5 L
112.208 552.5 L
122.488 552.5 L
133.454 552.5 L
144.75 552.5 L
156.023 552.5 L
166.918 552.5 L
177.081 552.5 L
186.156 552.5 L
193.791 552.5 L
199.629 552.5 L
203.317 552.5 L
204.5 552.5 L
204.5 552.5 L
209.75 551.75 L
213.5 549.5 L
215.75 545.75 L
216.5 540.5 L
216.5 540.5 L
216.5 539.627 L
216.5 537.504 L
216.5 534.308 L
216.5 530.219 L
216.5 525.415 L
216.5 520.074 L
216.5 514.376 L
216.5 508.5 L
216.5 502.624 L
216.5 496.926 L
216.5 491.585 L
216.5 486.781 L
216.5 482.692 L
216.5 479.496 L
216.5 477.373 L
216.5 476.5 L
216.5 476.5 L
215.75 471.25 L
213.5 467.5 L
209.75 465.25 L
204.5 464.5 L
204.5 464.5 L
202.987 464.5 L
199.055 464.5 L
193.048 464.5 L
185.312 464.5 L
176.194 464.5 L
166.039 464.5 L
155.192 464.5 L
144 464.5 L
132.808 464.5 L
121.961 464.5 L
111.806 464.5 L
102.688 464.5 L
94.9521 464.5 L
88.9453 464.5 L
85.0127 464.5 L
83.5 464.5 L
closepath
stroke
grestore
gsave
gsave
matrix currentmatrix
[1 0 0 1 109.4 494.5] concat
newpath
0 0 M 0 28 L 69.2 28 L 69.2 0 L
closepath setmatrix
0 0 0 setrgbcolor
grestore
newpath
107.4 492.5 M 107.4 524.5 L 180.6 524.5 L 180.6 492.5 L
closepath clip newpath
0 0 0 setrgbcolor
matrix currentmatrix
[1 0 0 1 109.4 494.5] concat
/Courier-Bold-SHOWISO findfont 14 scalefont setfont
0 0 0 setrgbcolor
0 17.5 M (Process ) 67.2 S
0 3.5 M (Manager) 58.8 S
setmatrix
grestore
gsave
0 0 0 setrgbcolor
1.000000 setlinewidth
newpath
340 464.5 M
334.75 465.25 L
331 467.5 L
328.75 471.25 L
328 476.5 L
328 476.5 L
328 477.373 L
328 479.496 L
328 482.692 L
328 486.781 L
328 491.585 L
328 496.926 L
328 502.624 L
328 508.5 L
328 514.376 L
328 520.074 L
328 525.415 L
328 530.219 L
328 534.308 L
328 537.504 L
328 539.627 L
328 540.5 L
328 540.5 L
328.75 545.75 L
331 549.5 L
334.75 551.75 L
340 552.5 L
340 552.5 L
341.535 552.5 L
345.527 552.5 L
351.624 552.5 L
359.469 552.5 L
368.708 552.5 L
378.988 552.5 L
389.954 552.5 L
401.25 552.5 L
412.523 552.5 L
423.418 552.5 L
433.581 552.5 L
442.656 552.5 L
450.291 552.5 L
456.129 552.5 L
459.817 552.5 L
461 552.5 L
461 552.5 L
466.25 551.75 L
470 549.5 L
472.25 545.75 L
473 540.5 L
473 540.5 L
473 539.627 L
473 537.504 L
473 534.308 L
473 530.219 L
473 525.415 L
473 520.074 L
473 514.376 L
473 508.5 L
473 502.624 L
473 496.926 L
473 491.585 L
473 486.781 L
473 482.692 L
473 479.496 L
473 477.373 L
473 476.5 L
473 476.5 L
472.25 471.25 L
470 467.5 L
466.25 465.25 L
461 464.5 L
461 464.5 L
459.487 464.5 L
455.555 464.5 L
449.548 464.5 L
441.812 464.5 L
432.694 464.5 L
422.539 464.5 L
411.692 464.5 L
400.5 464.5 L
389.308 464.5 L
378.461 464.5 L
368.306 464.5 L
359.187 464.5 L
351.452 464.5 L
345.445 464.5 L
341.513 464.5 L
340 464.5 L
closepath
stroke
grestore
gsave
gsave
matrix currentmatrix
[1 0 0 1 352.3 486.5] concat
newpath
0 0 M 0 42 L 94.4 42 L 94.4 0 L
closepath setmatrix
0 0 0 setrgbcolor
grestore
newpath
350.3 484.5 M 350.3 530.5 L 448.7 530.5 L 448.7 484.5 L
closepath clip newpath
0 0 0 setrgbcolor
matrix currentmatrix
[1 0 0 1 352.3 486.5] concat
/Courier-Bold-SHOWISO findfont 14 scalefont setfont
0 0 0 setrgbcolor
0 31.5 M (Application) 92.4 S
0 17.5 M (\(Message) 67.2 S
0 3.5 M ( Passing\)) 75.6 S
setmatrix
grestore
gsave
1.000000 setlinewidth
matrix currentmatrix
[92.7699 0 0 92.7699 135 576] concat
0 0 0 setrgbcolor
newpath
0 0 1 116.565 116.565 arc
setmatrix stroke
grestore
gsave
1.000000 setlinewidth
matrix currentmatrix
[62.516 0 0 62.516 135 630] concat
0 0 0 setrgbcolor
newpath
0 0 1 331.699 331.699 arc
setmatrix stroke
grestore
gsave
0 0 0 setrgbcolor
1.000000 setlinewidth
newpath
488.024 707.855 M
486.739 709.928 L
485.304 711.944 L
483.721 713.889 L
481.997 715.747 L
480.138 717.503 L
478.154 719.143 L
476.055 720.654 L
473.855 722.024 L
471.569 723.244 L
469.211 724.306 L
466.799 725.205 L
464.348 725.937 L
461.877 726.501 L
459.401 726.899 L
456.937 727.134 L
454.5 727.21 L
454.5 727.21 L
452.063 727.134 L
449.599 726.899 L
447.123 726.501 L
444.652 725.937 L
442.201 725.205 L
439.789 724.306 L
437.431 723.244 L
435.145 722.024 L
432.945 720.654 L
430.846 719.143 L
428.862 717.503 L
427.003 715.747 L
425.279 713.889 L
423.696 711.944 L
422.261 709.928 L
420.976 707.855 L
420.976 707.855 L
419.824 705.706 L
418.795 703.455 L
417.902 701.112 L
417.155 698.69 L
416.563 696.202 L
416.135 693.663 L
415.876 691.09 L
415.79 688.5 L
415.876 685.91 L
416.135 683.337 L
416.563 680.798 L
417.155 678.31 L
417.902 675.888 L
418.795 673.545 L
419.824 671.294 L
420.976 669.145 L
420.976 669.145 L
422.261 667.072 L
423.696 665.056 L
425.279 663.111 L
427.003 661.253 L
428.862 659.497 L
430.846 657.857 L
432.945 656.346 L
435.145 654.976 L
437.431 653.756 L
439.789 652.694 L
442.201 651.795 L
444.652 651.063 L
447.123 650.499 L
449.599 650.101 L
452.063 649.866 L
454.5 649.79 L
454.5 649.79 L
456.937 649.866 L
459.401 650.101 L
461.877 650.499 L
464.348 651.063 L
466.799 651.795 L
469.211 652.694 L
471.569 653.756 L
473.855 654.976 L
476.055 656.346 L
478.154 657.857 L
480.138 659.497 L
481.997 661.253 L
483.721 663.111 L
485.304 665.056 L
486.739 667.072 L
488.024 669.145 L
488.024 669.145 L
489.176 671.294 L
490.205 673.545 L
491.098 675.888 L
491.845 678.311 L
492.437 680.798 L
492.865 683.337 L
493.124 685.91 L
493.21 688.5 L
493.124 691.09 L
492.865 693.663 L
492.437 696.202 L
491.845 698.69 L
491.098 701.112 L
490.205 703.455 L
489.176 705.706 L
488.024 707.855 L
closepath
stroke
grestore
gsave
gsave
matrix currentmatrix
[1 0 0 1 436.7 681.5] concat
newpath
0 0 M 0 14 L 35.6 14 L 35.6 0 L
closepath setmatrix
0 0 0 setrgbcolor
grestore
newpath
434.7 679.5 M 434.7 697.5 L 474.3 697.5 L 474.3 679.5 L
closepath clip newpath
0 0 0 setrgbcolor
matrix currentmatrix
[1 0 0 1 436.7 681.5] concat
/Courier-Bold-SHOWISO findfont 14 scalefont setfont
0 0 0 setrgbcolor
0 3.5 M (User) 33.6 S
setmatrix
grestore
gsave
0 0 0 setrgbcolor
gsave
0 setlinejoin
350.058 661.164 translate
-160.346 rotate
1.2 1.2 scale
newpath 0 0 M -20 -5 L -20 5 L closepath fill
grestore
2.000000 setlinewidth
newpath
414 684 M
367.951 667.554 L
stroke
grestore
gsave
0 0 0 setrgbcolor
gsave
0 setlinejoin
219.5 517.5 translate
180 rotate
1.2 1.2 scale
newpath 0 0 M -20 -5 L -20 5 L closepath fill
grestore
gsave
0 setlinejoin
325 517.5 translate
0 rotate
1.2 1.2 scale
newpath 0 0 M -20 -5 L -20 5 L closepath fill
grestore
2.000000 setlinewidth
newpath
238.5 517.5 M
306 517.5 L
stroke
grestore
gsave
0 0 0 setrgbcolor
gsave
0 setlinejoin
138.567 553.141 translate
-158.962 rotate
1.2 1.2 scale
newpath 0 0 M -20 -5 L -20 5 L closepath fill
grestore
gsave
0 setlinejoin
257.433 598.859 translate
21.0375 rotate
1.2 1.2 scale
newpath 0 0 M -20 -5 L -20 5 L closepath fill
grestore
2.000000 setlinewidth
newpath
156.3 559.962 M
239.7 592.038 L
stroke
grestore
gsave
0 0 0 setrgbcolor
gsave
0 setlinejoin
396.923 553.115 translate
-22.6199 rotate
1.2 1.2 scale
newpath 0 0 M -20 -5 L -20 5 L closepath fill
grestore
gsave
0 setlinejoin
287.077 598.885 translate
157.38 rotate
1.2 1.2 scale
newpath 0 0 M -20 -5 L -20 5 L closepath fill
grestore
2.000000 setlinewidth
newpath
379.385 560.423 M
304.615 591.577 L
stroke
grestore
grestore
showpage
%%EndDocument
@endspecial 470 1674 a Fs(Figure)f(1.1:)k(Structure)d(of)e(the)i(Run)o(time)
g(En)o(vironmen)o(t)75 1780 y(The)f(starting)f(p)q(oin)o(t)h(for)f(dynamic)h
(resource)g(and)f(pro)q(cess)h(managemen)o(t)f(is)h(the)f(resource)h
(manager.)75 1836 y(It)k(is)h(the)g(resource)f(manager)g(that)g(allo)q
(cates,)h(implicitly)j(or)c(explicitly)l(,)k(resources)c(necessary)h(for)75
1893 y(running)f(pro)q(cesses.)29 b(The)18 b(\\resource)g(manager")f(ma)o(y)h
(b)q(e)h(an)o(ything)f(from)f(a)h(sophisticated)h(batc)o(h)75
1949 y(sc)o(heduling)f(system,)d(to)g(a)h(\014le)h(con)o(taining)g(a)e(list)i
(of)e(mac)o(hines)i(on)f(whic)o(h)h(an)e(application)j(can)e(run,)75
2006 y(to)f(the)g(user)g(him/herself.)75 2126 y Fj(Acquiring)j(Resources)47
b Fs(In)18 b(a)f(generic)h(application,)h(there)f(are)f(t)o(w)o(o)f(distinct)
i(phases)g(of)e(in)o(teraction)75 2182 y(with)k(the)f(resource)g(manager.)32
b(In)20 b(the)f(\014rst)g(phase,)i(the)e(user)h(requests)f(the)g(initial)j
(resources)d(on)75 2238 y(whic)o(h)g(an)f(application)i(will)g(run.)29
b(This)19 b(phase)f(is)h(implicit)h(but)f(not)e(sp)q(eci\014ed)k(in)e(the)f
(static)g(MPI)75 2295 y(mo)q(del.)30 b(In)19 b(the)f(second)h(phase,)g(the)g
(application)h(itself)f(ma)o(y)e(request)i(additional)g(resources)g(from)75
2351 y(the)c(resource)h(manager.)166 2408 y(While)21 b(it)f(seems)g(at)g
(\014rst)f(that)g(MPI)h(need)h(only)f(b)q(e)h(concerned)g(with)f(the)g
(second)h(phase,)g(it)75 2464 y(m)o(ust)16 b(b)q(e)i(a)o(w)o(are)d(of)i(the)g
(\014rst)f(as)h(w)o(ell.)25 b(The)18 b(reason)e(is)h(that)g(resources)f(ma)o
(y)h(b)q(e)g(\\preallo)q(cated")h(to)75 2521 y(an)d(application.)166
2577 y(W)l(e)g(exp)q(ect)h(the)f(most)f(common)h(t)o(yp)q(e)g(of)g
(\\dynamic")g(application)i(to)d(b)q(e)i(one)f(in)h(whic)o(h)g(all)g(re-)75
2634 y(sources)e(are)h(actually)g(allo)q(cated)g(b)q(efore)g(the)f
(application)i(starts.)j(The)14 b(application)j(will)f(b)q(e)f(started)75
2690 y(on)10 b(a)g(subset)g(of)g(the)g(resources,)h(will)h
Fk(disc)n(over)d Fs(the)i(additional)g(resources)f(using)h
Fj(MPI)p 1545 2690 14 2 v 16 w(Resource)p 1729 2690 V 18 w(discover)p
Fs(,)-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 4 6
bop 75 -100 a Fs(4)951 b Fm(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fs(and)i(will)h(start)d(the)i(rest)f(of)g(the)g
(application)i(on)f(those)f(additonal)h(resources.)24 b(W)l(e)16
b(term)g(these)h(ap-)75 102 y(plications)i Fk(quasi-static)e
Fs(b)q(ecause)i(they)e(use)h(static)f(resources)h(but)f(ma)o(y)g(ha)o(v)o(e)g
(dynamic)h(pro)q(cesses.)75 158 y(Applications)h(whic)o(h)f(disco)o(v)o(er)f
(preallo)q(cated)h(resources)f(but)g(do)g(not)g(allo)q(cate)h(new)f(ones)g
(will)i(gen-)75 214 y(erally)e(b)q(e)g(more)f(p)q(ortable)h(than)f(those)g
(whic)o(h)h(allo)q(cate)g(new)g(resources.)23 b(Resource)17
b(disco)o(v)o(ery)g(ma)o(y)75 271 y(or)g(ma)o(y)h(not)f(require)i(comm)o
(unication)g(with)f(an)g(external)g(resource)g(manager,)g(dep)q(ending)i(on)e
(the)75 327 y(MPI)d(implemen)o(tation.)22 b(Resource)16 b(disco)o(v)o(ery)g
(can)f(b)q(e)i(an)e(extremely)h(simple)h(op)q(eration,)e(so)g(that)g(it)75
384 y(can)i(b)q(e)g(used)g(b)o(y)f(a)g(naiv)o(e)h(user)g(in)g(conjunction)h
(with)f Fj(MPI)p 1141 384 14 2 v 15 w(SP)l(A)-5 b(WN)18 b Fs(to)e(simply)h
(mimic)h(PVM-st)o(yle)75 440 y(b)q(eha)o(vior.)166 497 y(T)l(ruly)g(dynamic)h
(applications)g(will)g(allo)q(cate)f(new)g(resources)g(while)h(running,)g(in)
o(teracting)f(di-)75 553 y(rectly)g(with)f(the)h(resource)f(manager)f
(through)h Fj(MPI)p 1015 553 V 16 w(RESOURCE)p 1261 553 V 18
w(IALLOCA)l(TE)p Fs(.)g(Because)h(this)g(op-)75 610 y(eration)g(is)h(p)q
(oten)o(tially)h(\(and)e(usually\))i(exp)q(ensiv)o(e,)g(it)f(is)g(non)o(blo)q
(c)o(king.)30 b(A)19 b(resource)f(request)h(ma)o(y)75 666 y(b)q(e)g
(arbitrarily)h(complicated,)g(but)f(the)g(details)h(of)e(the)h(request)g(are)
f(in)o(terpreted)h(b)o(y)g(the)g(resource)75 723 y(manager,)14
b(not)h(MPI.)g(The)g(request)g(itself)h(it)g(therefore)f(a)g(string)g(whic)o
(h)h(has)f(no)g(meaning)h(to)e(MPI.)166 779 y(Regardless)g(of)f(ho)o(w)g(an)h
(application)h(acquires)f(resources,)g(it)f(ma)o(y)g(release)h(them)g(to)f
(the)g(system)75 835 y(through)i Fj(MPI)p 332 835 V 16 w(Resource)p
516 835 V 17 w(free)p Fs(.)166 968 y Fg(Discussion:)61 b Ff(The)21
b(description)h(ab)q(o)o(v)o(e)e(is)h(sligh)o(tly)e(di\013eren)o(t)j(from)d
(earlier)i(descriptions)h(in)e(that)75 1018 y(it)f(con)o(tains)g(the)h
(concept)h(of)e(resource)i(disco)o(v)o(ery)m(.)34 b(There)21
b(are)e(t)o(w)o(o)g(reasons)i(for)e(this.)34 b(First,)21 b(almost)c(all)75
1068 y(applications)11 b(\(including)h(most)f(new)i(ones)g(w)o(e)g(target)g
(in)f(MPI-2\))g(need)i(only)e(the)h(\014rst)g(phase)g(-)f(making)e(use)k(of)
75 1117 y(pre-allo)q(cated)f(resources.)19 b(An)13 b(application)e(usually)g
(do)q(es)j(not)e(actually)f(request)j(resources)h(nor)d(do)q(es)h(it)f(kno)o
(w)75 1167 y(what)f(it)g(w)o(an)o(ts)g(\(nor)g(should)g(it!\).)16
b(It)c(only)e(w)o(an)o(ts)h(to)g(\014nd)g(out)g(what)g(the)h(user)g(has)f
(already)g(allo)q(cated.)17 b(Second,)75 1217 y(it)12 b(w)o(as)g(di\016cult)f
(to)h(come)f(up)i(with)e(a)h(uni\014ed)g(seman)o(tics)g(that)g(w)o(ould)f(w)o
(ork)h(w)o(ell)g(for)f(b)q(oth)i(resource)h(disco)o(v)o(ery)75
1267 y(and)h(resource)j(allo)q(cation.)j(They)16 b(are)g(therefore)h
(separate,)f(although)f(they)h(b)q(oth)g(pro)q(duce)g(the)h(same)d(result)75
1317 y(-)i(an)h Fe(MPI)p 243 1317 13 2 v 14 w(Resource)h Ff(ob)r(ject)g(\(or)
e(ob)r(jects\).)28 b(This)16 b(distinction)h(actually)e(exists)j(in)e(PVM,)g
(sort)i(of.)25 b(It)17 b(is)f(the)75 1366 y(di\013erence)g(b)q(et)o(w)o(een)f
Fd(pvm)p 490 1366 14 2 v 15 w(config)e Ff(and)g Fd(pvm)p 796
1366 V 15 w(addhosts)p Ff(.)166 1416 y(It)22 b(w)o(ould)f(b)q(e)i(p)q
(ossible)f(to)f(treat)i(b)q(oth)f(resource)i(allo)q(cation)c(and)i(resource)i
(disco)o(v)o(ery)e(through)g(an)75 1466 y(allo)q(cation-based)16
b(in)o(terface.)29 b(An)18 b(application)e(w)o(ould)g(\\allo)q(cate")h(the)h
(resources)h(it)e(knew)h(to)f(b)q(e)h(a)o(v)n(ailable)75 1516
y(and)e(the)h(allo)q(cation)d(routine)i(w)o(ould)f(return)j(quic)o(kly)m(.)23
b(This)16 b(approac)o(h)g(is)g(undesirable)g(for)g(sev)o(eral)g(reasons.)75
1566 y(First,)e(in)g(the)h(allo)q(cation-based)e(approac)o(h,)h(an)g
(application)f(m)o(ust)g(\014nd)h(out)g(through)h(some)e(external)i(means)75
1616 y(\(suc)o(h)h(as)f(a)g(con\014guration)g(\014le\))g(what)g(resources)j
(it)d(should)f(ask)i(for.)21 b(This)15 b(is)g(cum)o(b)q(ersome)f(and)h
(redundan)o(t)75 1665 y(with)e(the)i(initial)d(resource)j(request.)20
b(Second,)14 b(it)f(requires)i(ev)o(en)g(simple)d(applications)h(to)g(form)o
(ulate)f(a)i(p)q(oten-)75 1715 y(tially)e(complicated)h(resource)i(request.)
20 b(Resource)15 b(sp)q(eci\014cation)f(will)f(v)n(ary)g(widely)g(with)g
(resource)j(managers)75 1765 y(and)g(should)g(remain)e(outside)i(an)g
(application)f(as)h(m)o(uc)o(h)e(as)i(p)q(ossible,)h(for)e(p)q(ortabilit)o(y)
m(.)23 b(Third,)16 b(it)f(w)o(ould)g(b)q(e)75 1815 y(a)g(lie,)h(as)g
(resources)i(ha)o(v)o(e)d(already)h(b)q(een)h(allo)q(cated.)23
b(This)16 b(is)f(alw)o(a)o(ys)g(a)h(dangerous)g(thing)f(and)h(can)g(mislead)
75 1865 y(programmers.)166 1914 y(I)i(exp)q(ect)i(that)f(true)g(dynamic)e
(applications)g(are)i(rare.)32 b(A)18 b(lot)g(of)g(the)h(true)g(dynamicism)c
(ma)o(y)i(come)75 1964 y(in)e(parallel)g(en)o(vironmen)o(ts)g(whic)o(h)h(are)
g(written)g(in)g(MPI.)f(F)m(or)h(instance,)g(with)g(the)g(dynamic)e(in)o
(terface,)j(it)e(is)75 2014 y(p)q(ossible)e(to)g(imagine)d(writing)j(an)f
(MPI)h(console)h(similar)c(to)j(the)g(PVM)h(console)f(that)g(puts)g(together)
h(a)f(virtual)75 2064 y(mac)o(hine)g(and)g(spa)o(wns)i(MPI)f(applications)f
(on)g(that)h(virtual)f(mac)o(hine.)166 2114 y(I)i(also)g(exp)q(ect)i(that)f
(resource)i(disco)o(v)o(ery)e(will)e(b)q(e)i(quite)f(p)q(ortable,)h(while)f
(resource)j(allo)q(cation)c(ma)o(y)f(b)q(e)75 2163 y(tailored)g(to)h(sp)q
(eci\014c)h(en)o(vironmen)o(ts.)166 2213 y(-)f(w)o(cs)166 2352
y Fs(MPI)22 b(do)q(es)g(not)g(address)g(the)g(issue)h(of)f(\014nding)h(out)f
(what)g(additional)h(\(not)f(y)o(et)f(allo)q(cated\))75 2409
y(resources)11 b(ma)o(y)f(b)q(e)h(a)o(v)m(ailable.)20 b(F)l(or)10
b(instance,)i(an)e(application)j(migh)o(t)d(w)o(an)o(t)g(to)g(kno)o(w)g(what)
g(is)h(p)q(ossible)75 2465 y(to)f(request)h(b)q(efore)g(it)h(requests)e
(resources.)19 b(This)11 b(issue)h(is)g(quite)f(complex)h(and)f(not)g
(directly)h(necessary)75 2522 y(for)19 b(MPI,)g(in)h(con)o(trast)e(to)g
(resource)i(allo)q(cation)g(itself,)h(in)f(whic)o(h)g(an)f(application)i
(obtains)e(simple)75 2578 y(MPI-de\014ned)c(ob)s(jects)d(necessary)i(for)e
(starting)h(pro)q(cesses.)19 b(It)14 b(is)f(exp)q(ected)i(that)d(an)h
(application)i(will)75 2635 y(use)h(a)e(resource)i(manager-sp)q(eci\014c)g
(API)g(to)e(inquire)j(ab)q(out)e(resource)h(a)o(v)m(ailabilit)o(y)l(.)1967
46 y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 5 7
bop 75 -100 a Fm(1.2.)34 b(THE)15 b(MPI)g(D)o(YNAMIC)g(PR)o(OCESS)h(MODEL)813
b Fs(5)75 45 y Fj(Sta)o(rting)21 b(and)g(Managing)f(Pro)q(cesses)47
b Fs(As)20 b(with)h(resource)g(managemen)o(t,)f(there)h(are)f(t)o(w)o(o)f(t)o
(yp)q(es)h(of)75 102 y(pro)q(cess)e(creation.)27 b(The)18 b(\014rst)f(is)h
(the)f(creation)h(of)f(the)h(original)h(MPI)e(application.)29
b(The)17 b(second)h(is)75 158 y(creation)g(of)g(pro)q(cesses)g(from)f(within)
i(an)f(MPI)g(application.)29 b(F)l(ortunately)18 b(MPI)g(need)h(only)f(w)o
(orry)75 214 y(ab)q(out)d(the)g(second)h(t)o(yp)q(e.)166 271
y(MPI)h(applications)h(ma)o(y)e(start)f(new)i(pro)q(cesses)h(\(including)h
(non-MPI)e(pro)q(cesses\),)g(send)g(them)75 327 y(signals,)24
b(and)e(\014nd)h(out)e(when)i(they)f(die)h(or)e(b)q(ecome)i(unreac)o(hable.)
41 b(They)22 b(do)g(this)g(through)g(an)75 384 y(in)o(terface)16
b(to)f(the)h(pro)q(cess)g(manager,)f(whic)o(h)i(range)e(from)g(a)h(parallel)h
(op)q(erating)f(system)g(\(CMOST\))75 440 y(to)f(la)o(y)o(ered)g(soft)o(w)o
(are)e(\(POE\))i(to)g(an)g Fi(rsh)g Fs(command)g(\(P4\).)166
497 y(There)f(are)f(t)o(w)o(o)g(w)o(a)o(ys)f(to)h(start)g(new)h(pro)q
(cesses.)20 b Fj(MPI)p 1116 497 14 2 v 16 w(SP)l(A)-5 b(WN)14
b Fs(is)g(a)g(simple)h(in)o(terface)f(adequate)75 553 y(or)22
b(most)f(applications.)43 b Fj(MPI)p 633 553 V 15 w(PROCESS)p
845 553 V 18 w(CREA)l(TE)24 b Fs(pro)o(vides)e(more)g(\015exibilit)o(y)j(and)
d(the)h(abilit)o(y)75 610 y(to)18 b(manage)g(non-MPI)h(pro)q(cesses.)31
b(Both)18 b(tak)o(e)g(as)g(input)i(an)e Fj(MPI)p 1278 610 V
16 w(Resource)i Fs(ob)s(ject,)e(represen)o(ting)75 666 y(computational)d
(resources)g(on)g(whic)o(h)h(a)f(job)f(can)h(run.)20 b(F)l(or)15
b(simple)h(applications,)g(there)f(is)h(a)e(simple)75 723 y(w)o(a)o(y)g(to)h
(obtain)g(this)h Fj(MPI)p 538 723 V 16 w(Resource)g Fs(ob)s(ject.)166
779 y Fj(MPI)p 251 779 V 16 w(SP)l(A)-5 b(WN)12 b Fs(starts)f(MPI)h(pro)q
(cesses)g(and)g(establishes)h(comm)o(unication)f(with)g(them,)g(returning)75
835 y(a)j(comm)o(unicator.)166 892 y Fj(MPI)p 251 892 V 16
w(PROCESS)p 464 892 V 18 w(CREA)l(TE)21 b Fs(merely)f(starts)f(new)i(pro)q
(cesses.)34 b(An)21 b(application)g(ma)o(y)f(establish)75 948
y(comm)o(unication)c(with)f(these)h(new)f(pro)q(cesses)h(through)f
Fj(MPI)p 1159 948 V 16 w(PROCESS)p 1372 948 V 17 w(A)l(TT)l(A)o(CH)p
Fs(.)75 1070 y Fl(1.2.3)49 b(Examples)16 b(of)h(Runtime)f(Environments)75
1156 y Fs(T)l(o)11 b(illustrate)h(ho)o(w)f(the)h(ab)q(o)o(v)o(e)e(framew)o
(ork)g(allo)o(ws)i(us)f(to)g(describ)q(e)i(a)e(wide)h(v)m(ariet)o(y)g(of)e
(actual)i(systems,)75 1212 y(w)o(e)j(giv)o(e)g(here)h(some)f(examples.)75
1332 y Fj(Environments)22 b(with)f(explicit)h(Resource)g(Managers)45
b Fs(The)22 b(SP2)e(computers)h(at)g(Argonne)g(National)75
1389 y(Lab)q(oratory)e(and)g(the)h(NAS)g(facilit)o(y)g(at)f(NASA)h(Ames)f
(Researc)o(h)h(Cen)o(ter)f(use)h(\(di\013eren)o(t\))f(lo)q(cally)75
1445 y(written)f(job)f(sc)o(hedulers)i(to)e(manage)g(the)h(SP2.)27
b(The)18 b(sc)o(hedulers)h(ensure)f(that)f(only)h(one)g(user)g(has)75
1502 y(access)g(to)e(an)o(y)i(SP)f(no)q(de)h(at)f(a)g(time)h(and)g(manage)f
(resources)g(in)i(a)e(\\fair")g(w)o(a)o(y)f(to)h(ensure)h(that)f(all)75
1558 y(users)g(can)g(get)g(access)g(to)g(the)g(mac)o(hines.)26
b(They)17 b(require)h(users)f(to)g(pro)o(vide)g(times)h(limits)g(for)e(their)
75 1615 y(jobs)h(so)f(that)h(the)g(mac)o(hine)h(can)f(b)q(e)h(tigh)o(tly)f
(sc)o(heduled.)27 b(Users)17 b(submit)h(scripts)f(to)g(the)g(sc)o(heduler,)75
1671 y(whic)o(h)i(allo)q(cates)g(resources)f(and)g(runs)g(jobs)g(using)g
(IBM's)g(P)o(arallel)h(En)o(vironmen)o(t)f(soft)o(w)o(are.)27
b(The)75 1728 y(systems)15 b(in)o(teract)g(with)g(a)g(v)m(ariet)o(y)h(of)e
(message-passing)i(libraries,)g(including)i(t)o(w)o(o)c(based)h(on)g(MPI.)166
1784 y(The)j(corresp)q(ondence)h(with)f(the)f(mo)q(del)i(ab)q(o)o(v)o(e)e(is)
h(straigh)o(tforw)o(ard.)25 b(The)18 b(resource)g(manager)75
1841 y(is)h(the)g(lo)q(cally)i(written)e(job)g(sc)o(heduler.)32
b(The)20 b(pro)q(cess)f(manager)f(is)h(con)o(tained)h(in)g(IBM's)e(parallel)
75 1897 y(en)o(vironmen)o(t)d(soft)o(w)o(are.)166 1953 y(There)23
b(are)g(n)o(umerous)f(examples)i(of)e(job)h(managemen)o(t)f(systems)h(that)f
(allo)q(cate)h(resources.)75 2010 y(These)f(include)i(PBS)e(\(from)e(NAS\),)i
(EASY)f(\(from)g(ANL\),)g(LSF)h(\(from)f(Platform)f(Computing\),)75
2066 y(LoadLev)o(eler)d(\(from)d(IBM\),)h(DQS)h([)p Fo(?)p
Fs(])21 b(\(from)14 b(the)i(Sup)q(ercomputer)g(Researc)o(h)g(Institute)h(at)e
(Florida)75 2123 y(State)g(Univ)o(ersit)o(y\),)g(Condor)g(\(from)f(the)h
(Univ)o(ersit)o(y)h(of)f(Wisconsin\),)g(and)h(NQS.)166 2179
y(Eac)o(h)k(one)h(of)f(these)h(resource)g(managers)e(can)i(b)q(e)g(used)h(in)
f(conjunction)h(with)f(one)f(or)g(more)75 2236 y(pro)q(cess)c(managers.)22
b(Pro)q(cess)16 b(managers)g(ma)o(y)f(b)q(e)i(programs)e(external)h(to)g(an)g
(application)i(\()p Fi(poe)d Fs(on)75 2292 y(the)k(IBM)g(SP2\),)g(part)f(of)g
(the)h(op)q(erating)g(system)f(\(the)h(usual)g(case)g(on)g(tigh)o(tly)g(in)o
(tegrated)g(MPPs)75 2349 y(suc)o(h)12 b(as)g(the)g(In)o(tel)h(P)o(aragon,)e
(Meik)o(o)h(CS-2)g(and)h(TMC)e(CM-5\),)h(part)f(of)h(the)g(message)g(passing)
g(library)75 2405 y(\()p Fi(p4)j Fs(or)f Fi(pvm)p Fs(\))h(or)f(in)o(tegrated)
h(with)h(the)f(resource)g(manager)g(\(Condor)f(with)i Fi(pvm)p
Fs(\).)75 2525 y Fj(Net)o(w)o(o)o(rk)c(of)f(W)o(o)o(rkstations)i(with)f(PVM)h
(o)o(r)e(P4)45 b Fs(One)13 b(reason)e(for)h(PVM's)f(p)q(opularit)o(y)i(is)f
(that)g(it)g(can)g(b)q(e)75 2582 y(view)o(ed)h(as)f(a)g(completely)i
(self-con)o(tained)f(system)f(that)g(supplies)i(its)f(o)o(wn)f(pro)q(cess)g
(managemen)o(t)g(and)75 2638 y(can)g(b)q(e)h(used)g(to)e(implemen)o(t)i(a)f
(resource)g(manager)f(as)h(w)o(ell.)20 b(On)13 b(systems)e(that)g(ha)o(v)o(e)
h(neither)h(of)f(these)75 2694 y(functions)20 b(pre-installed,)i(PVM)c(can)h
(pro)o(vide)h(a)e(complete)i(solution.)32 b(A)19 b(user)g(creates)g(a)g
(\\virtual)-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 6 8
bop 75 -100 a Fs(6)951 b Fm(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fs(mac)o(hine")h(b)o(y)f(starting)g(\\daemons")g(on)g
(an)g(assortmen)o(t)f(of)h(mac)o(hines)h(and)g(then)g(sc)o(hedules)g(jobs)g
(to)75 102 y(run)i(on)g(it)h(and)f(manages)f(his)i(pro)q(cesses)f(with)h(the)
f(help)h(of)f(the)g(daemons.)28 b(The)18 b(virtual)h(mac)o(hine)75
158 y(itself)h(can)g(b)q(e)g(recon\014gured)g(from)f(inside)i(the)f(user)g
(program.)31 b(A)20 b(di\016cult)o(y)h(with)e(this)h(approac)o(h)75
214 y(is)g(that)e(the)h(user)g(is)h(assumed)f(to)f(ha)o(v)o(e)h(the)g
(necessary)h(p)q(ermissions)g(to)e(execute)i(suc)o(h)g(functions.)75
271 y(This)15 b(ma)o(y)f(b)q(e)h(the)f(case)h(on)f(a)g(w)o(orkstation)f(net)o
(w)o(ork,)g(but)i(seldom)f(on)h(an)f(MPP)l(.)g(Con\015icts)h(b)q(et)o(w)o
(een)75 327 y(existing)e(pro)q(cess)g(managers)e(and)h(PVM)g(can)h(inhibit)h
(the)e(p)q(ortabilit)o(y)i(\(to)d(MPP's\))g(of)h(self-con)o(tained)75
384 y(programs)i(that)g(assume)i(all)g(functionalit)o(y)g(will)h(b)q(e)f(pro)
o(vided)g(b)o(y)f(PVM.)166 440 y(Equiv)m(alen)o(t)h(MPI)f(functionalit)o(y)h
(requires)g(an)f(MPI)f(implemen)o(tation)i(in)g(whic)o(h)g(b)q(oth)f
(resource)75 497 y(managemen)o(t)22 b(and)i(pro)q(cess)f(managemen)o(t)g(are)
f(pro)o(vided)i(b)o(y)g(the)f(MPI)g(implemen)o(tation)h(itself.)75
553 y(While)12 b(implemen)o(ted)h(within)f(MPI,)e(these)h(functions)h(w)o
(ould)f(b)q(e)h(logically)g(external)g(to)e(an)h(MPI)f(appli-)75
610 y(cation,)15 b(allo)o(wing)g(the)g(application)i(to)d(run)h(virtually)h
(unc)o(hanged)f(in)h(the)f(presence)g(of)g(real)g(resource)75
666 y(and)21 b(pro)q(cess)g(managers.)35 b(In)21 b(suc)o(h)g(an)g(implemen)o
(tation,)h(requests)f(to)f(the)h(\\resource)f(manager")75 723
y(w)o(ould)c(alw)o(a)o(ys)e(succeed,)i(assuming)g(the)f(user)g(had)h
(appropriate)f(p)q(ermission)h(to)f(start)f(pro)q(cesses.)75
843 y Fj(PVM)d(p)o(ro)q(cess)h(management)e(with)i(MPI)e(message-passing.)47
b Fs(One)11 b(can)h(conceiv)o(e)g(of)e(a)h(system)f(in)i(whic)o(h)75
899 y(resource)j(allo)q(cation)h(and)f(pro)q(cess)g(managemen)o(t)f
(functions)i(w)o(ere)f(pro)o(vided)h(b)o(y)e(the)h(existing)h(PVM)75
956 y(daemon)d(structure,)g(while)h(MPI)f(w)o(as)f(used)h(b)o(y)g(the)g
(application)i(for)d(message)h(passing.)19 b(PVM)13 b(w)o(ould)75
1012 y(b)q(e)j(used)g(as)f(the)h(implemen)o(tation)g(la)o(y)o(er)f(for)g(the)
h(functions)g(describ)q(ed)h(in)f(this)g(c)o(hapter,)f(but)h(w)o(ould)75
1068 y(not)f(b)q(e)h(visible)h(to)e(the)g(application)i(program.)75
1190 y Fl(1.2.4)49 b(Applications)18 b(Requiring)f(Direct)e(Communication)i
(with)g(the)e(Runtime)h(System)75 1276 y Fs(The)i(existing)h(MPI)f(sp)q
(eci\014cation)h(is)g(adequate)e(for)g(most)g(parallel)j(applications.)29
b(In)18 b(these)g(appli-)75 1332 y(cations,)e(the)h(resource)f(manager)g(and)
g(pro)q(cess)h(manager,)f(whether)g(simple)i(or)e(elab)q(orate,)g(allo)q
(cate)75 1389 y(resources)f(and)h(manage)e(user)i(pro)q(cesses)g(without)f
(in)o(teracting)h(with)f(the)g(application)i(program.)i(In)75
1445 y(other)e(applications,)j(ho)o(w)o(ev)o(er,)c(it)i(is)g(necessary)g
(that)f(the)h Fk(user)g(level)j Fs(of)c(the)h(application)h(comm)o(u-)75
1502 y(nicate)f(with)g(the)g(job)g(sc)o(heduler)h(and/or)e(the)h(pro)q(cess)g
(manager.)27 b(Here)18 b(w)o(e)f(describ)q(e)i(three)f(broad)75
1558 y(classes)f(of)e(suc)o(h)i(applications.)24 b(In)16 b(Section)h
Fo(??)22 b Fs(w)o(e)16 b(will)i(giv)o(e)e(concrete)h(examples)f(of)g(eac)o(h)
g(of)g(these)75 1615 y(classes.)75 1735 y Fj(T)l(ask)c(F)o(a)o(rming)43
b Fs(By)11 b(a)g(\\task)f(farm")g(application)i(w)o(e)f(mean)g(a)f(program)g
(that)g(manages)h(the)g(execution)75 1791 y(of)j(a)g(set)g(of)g(other,)g(p)q
(ossibly)i(sequen)o(tial,)g(programs.)i(This)d(situation)g(often)f(arises)h
(when)g(one)f(w)o(an)o(ts)75 1848 y(to)19 b(run)h(the)g(same)f(sequen)o(tial)
i(program)e(man)o(y)g(times)h(with)g(v)m(arying)h(input)f(data.)33
b(W)l(e)20 b(call)h(eac)o(h)75 1904 y(in)o(v)o(o)q(cation)14
b(of)e(the)i(sequen)o(tial)g(program)e(a)h Fk(task)p Fs(.)19
b(It)13 b(is)h(often)f(simplest)h(to)f(\\parallelize")i(the)e(existing)75
1961 y(sequen)o(tial)h(program)d(b)o(y)i(writing)g(a)f(parallel)j(\\harness")
d(program)f(that)h(in)i(turn)e(dev)o(otes)h(a)f(separate,)75
2017 y(transien)o(t)j(pro)q(cess)g(to)g(eac)o(h)g(task.)k(When)d(one)f(task)f
(\014nishes,)i(a)f(new)g(pro)q(cess)h(is)f(started)g(to)f(execute)75
2073 y(the)19 b(next)f(one.)30 b(Ev)o(en)19 b(if)g(the)f(resources)h(allo)q
(cated)g(to)f(the)h(job)f(are)g(\014xed,)i(the)f(\\harness")f(pro)q(cess)75
2130 y(m)o(ust)13 b(in)o(teract)g(frequen)o(tly)h(with)g(the)f(pro)q(cess)h
(manager)f(\(ev)o(en)g(if)h(this)g(is)g(just)f Fi(rsh)p Fs(,)g(to)g(start)f
(the)i(new)75 2186 y(pro)q(cesses)i(with)f(the)h(new)f(input)h(data\).)j(In)d
(man)o(y)f(cases)g(this)h(harness)f(can)g(b)q(e)h(written)g(in)g(a)e(simple)
75 2243 y(scripting)k(language)f(lik)o(e)g Fi(csh)g Fs(or)f
Fi(perl)p Fs(,)g(but)h(some)f(users)h(prefer)g(to)f(use)h(F)l(ortran)e(or)h
(C.)g(Note)h(that)75 2299 y(it)f(is)g(an)g(explicit)i(goal)d(of)h(the)f(MPI)h
(dynamic)h(pro)q(cess)f(arc)o(hitecture)g(to)f(allo)o(w)h(the)f(managemen)o
(t)g(of)75 2356 y(non-MPI)h(pro)q(cesses.)75 2476 y Fj(Dynamic)f(numb)q(er)i
(of)e(p)o(ro)q(cesses)j(in)e(pa)o(rallel)f(job)46 b Fs(The)16
b(program)f(wishes)i(to)e(decide)j Fk(inside)g Fs(the)e(pro-)75
2532 y(gram)e(to)g(adjust)g(the)g(n)o(um)o(b)q(er)h(of)f(pro)q(cesses)h(to)f
(\014t)h(the)f(size)i(of)e(the)h(problem.)20 b(F)l(urthermore,)14
b(it)h(ma)o(y)75 2589 y(con)o(tin)o(ue)k(to)g(add)g(and)g(subtract)f(pro)q
(cesses)h(during)h(the)f(computation)g(to)f(\014t)h(separate)f(phases)h(of)75
2645 y(the)g(computation,)h(some)f(of)g(whic)o(h)h(ma)o(y)f(b)q(e)h(more)f
(parallel)i(than)e(others.)32 b(In)20 b(order)f(to)g(do)g(this,)75
2702 y(the)i(application)i(program)d(will)j(ha)o(v)o(e)e(to)g(in)o(teract)g
(with)h(the)f(resource)g(manager)g(\(ho)o(w)o(ev)o(er)f(it)h(is)1967
46 y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 7 9
bop 75 -100 a Fm(1.3.)33 b(NEW)15 b(OBJECTS)g(F)o(OR)g(IMPLEMENTING)g(D)o
(YNAMIC)f(PR)o(OCESS)h(MANA)o(GEMENT)p Fs(7)75 45 y(implemen)o(ted\))k(to)d
(request)i(and)f(acquire)h(or)f(return)g(computational)h(resources.)26
b(It)17 b(will)i(also)e(ha)o(v)o(e)75 102 y(to)f(in)o(teract)h(with)g(the)g
(pro)q(cess)g(manager)g(to)f(request)h(that)f(pro)q(cesses)h(b)q(e)h(started)
e(and)h(in)h(order)f(to)75 158 y(mak)o(e)12 b(the)g(new)h(pro)q(cesses)f(kno)
o(wn)g(to)g(the)g(message-passing)g(library)h(so)f(that)g(the)g(larger)g
(\(or)g(smaller\))75 214 y(group)j(of)g(pro)q(cesses)g(can)h(comm)o(unicate.)
166 271 y(An)21 b(imp)q(ortan)o(t)f(t)o(yp)q(e)h(of)f(dynamic)h(application)i
(is)e(a)f(sca)o(v)o(enger)g(application.)38 b(A)20 b(sca)o(v)o(enger)75
327 y(application)j(is)g(\\em)o(barassingly)f(parallel")h(in)f(the)g(sense)g
(that)f(it)h(p)q(erforms)g(a)f(large)h(n)o(um)o(b)q(er)g(of)75
384 y(completely)17 b(indep)q(enden)o(t)i(tasks.)i(If)c(the)f(n)o(um)o(b)q
(er)g(of)g(tasks)f(is)i(large)f(enough,)g(suc)o(h)g(an)g(application)75
440 y(can)k(mak)o(e)g(use)h(of)f(an)o(y)g(resources)g(that)g(b)q(ecome)h(a)o
(v)m(ailable.)37 b(Con)o(v)o(ersely)l(,)21 b(it)g(can)g(easily)g(giv)o(e)f
(up)75 497 y(resources)i(to)g(another)g(application.)42 b(Sca)o(v)o(enger)22
b(applications)i(are)e(excellen)o(t)i(for)e(\014lling)i(in)f(the)75
553 y(\\holes")15 b(on)g(a)g(space-shared)h(parallel)h(mac)o(hine,)f(allo)o
(wing)g(it)f(to)g(ac)o(hiev)o(e)g(v)o(ery)g(high)h(utilization.)75
673 y Fj(Client/Server)46 b Fs(This)15 b(situation)h(is)f(the)g(opp)q(osite)h
(of)e(the)h(situations)g(ab)q(o)o(v)o(e,)g(where)g(pro)q(cesses)g(come)75
730 y(and)21 b(go)f(up)q(on)h(request.)37 b(In)21 b(the)g(clien)o(t/serv)o
(er)g(mo)q(del,)i(one)e(set)f(of)g(pro)q(cesses)h(is)g(relativ)o(ely)h(p)q
(er-)75 786 y(manen)o(t)17 b(\(the)g(serv)o(er,)g(whic)o(h)h(w)o(e)f(assume)g
(here)h(ma)o(y)e(b)q(e)i(a)f(parallel)i(program\).)24 b(A)o(t)17
b(unpredictable)75 843 y(times,)e(another)f(\(p)q(ossibly)h(parallel\))h
(program)d(\(the)i(clien)o(t\))g(b)q(egins)h(execution)f(and)g(m)o(ust)f
(establish)75 899 y(comm)o(unication)k(with)f(the)g(serv)o(er.)26
b(In)17 b(this)h(case)f(the)g(pro)q(cess)g(manager)g(m)o(ust)f(pro)o(vide)i
(a)f(w)o(a)o(y)f(for)75 956 y(the)e(clien)o(t)h(to)e(lo)q(cate)h(the)g(serv)o
(er)f(and)h(comm)o(unicate)g(to)f(the)g(message-passing)h(library)h(that)e
(it)h(m)o(ust)75 1012 y(no)o(w)h(supp)q(ort)g(comm)o(unications)h(with)f(a)g
(new)h(collection)h(of)d(pro)q(cesses.)166 1068 y(It)19 b(is)g(curren)o(tly)h
(p)q(ossible)g(to)f(write)g(the)g(parallel)h(clien)o(ts)g(and)f(serv)o(ers)g
(in)g(MPI,)g(but)g(b)q(ecause)75 1125 y(MPI)g(do)q(es)g(not)g(pro)o(vide)h
(the)f(necessary)g(in)o(terfaces)g(b)q(et)o(w)o(een)h(the)f(application)i
(program)d(and)h(the)75 1181 y(resource)f(manager)g(or)g(pro)q(cess)h
(manager,)f(other)g(nonp)q(ortable,)h(mac)o(hine)g(sp)q(eci\014c)i(libraries)
f(m)o(ust)75 1238 y(b)q(e)15 b(called)h(in)f(order)f(for)g(the)g(clien)o(t)h
(and)g(serv)o(er)f(to)f(comm)o(unicate)i(with)g(one)f(another.)19
b(On)c(the)f(other)75 1294 y(hand,)g(MPI)g(do)q(es)g(con)o(tain)g(sev)o(eral)
f(features)h(that)f(mak)o(e)g(it)h(relativ)o(ely)h(easy)e(to)g(add)h(suc)o(h)
g(in)o(terfaces,)75 1351 y(and)h(w)o(e)g(prop)q(ose)h(b)q(oth)f(a)g(simple)h
(in)o(terface)g(and)f(a)g(more)g(complex)h(but)f(\015exible)j(one.)75
1494 y Fp(1.3)59 b(New)20 b(Objects)e(fo)n(r)j(Implementing)c(Dynamic)i(Pro)r
(cess)g(Management)75 1595 y Fs(Using)d(dynamic)g(pro)q(cesses)f(in)h(MPI)g
(is)f(a)g(three)h(step)f(pro)q(cess)g(sho)o(wn)g(in)h(Figure)g
Fo(??)p Fs(.)131 1689 y(1.)22 b Fo(Allo)q(cate)14 b(or)e(disco)o(v)o(er)f
(resources)p Fs(,)f(obtaining)h(one)g(or)g(more)f Fj(MPI)p
1403 1689 14 2 v 16 w(Resource)h Fs(ob)s(jects,)g(whic)o(h)189
1746 y(represen)o(t)k(p)q(ermission)h(to)f(start)f(additional)j(pro)q
(cesses.)131 1839 y(2.)22 b Fo(Start)12 b(tasks)f(on)h(allo)q(cated/di)q(sco)
o(v)o(ered)g(resources)p Fs(,)e(obtaining)h(one)f(or)g(more)f
Fj(MPI)p 1742 1839 V 16 w(Pro)q(cess)189 1896 y Fs(ob)s(jects,)14
b(whic)o(h)i(represen)o(t)f(running)h(pro)q(cesses)g(but)f(don't)g(allo)o(w)g
(comm)o(unication.)131 1990 y(3.)22 b Fo(Establish)16 b(MPI)e(comm)m
(unication)g(with)h(or)g(b)q(et)o(w)o(een)f(newly)h(created)g(pro)q(cesses)d
Fs(b)o(y)189 2046 y(obtaining)k(a)f(comm)o(unicator)f(whose)h(group)g(con)o
(tains)h(the)f(new)g(pro)q(cesses.)75 2205 y Fl(1.3.1)49 b(The)16
b(MPI)p 409 2205 15 2 v 18 w(Resource)g(Object)75 2291 y Fs(A)23
b(request)g(to)f(the)g(resource)h(manager)f(returns)h(an)g
Fj(MPI)p 1144 2291 14 2 v 15 w(Resource)h Fs(ob)s(ject.)42
b(An)23 b Fj(MPI)p 1693 2291 V 16 w(Resource)75 2348 y Fs(represen)o(ts)18
b(a)g(set)g(of)g(computational)h(resources)f(on)g(whic)o(h)h(an)f
(application)i(ma)o(y)e(start)f(pro)q(cesses.)75 2404 y(Dep)q(ending)23
b(on)e(the)g(request)g(that)f(generated)h(it,)i(an)e Fj(MPI)p
1163 2404 V 15 w(Resource)i Fs(ma)o(y)d(represen)o(t)h(a)g(ph)o(ysical)75
2460 y(CPU,)14 b(a)f(collection)j(of)e(CPUs,)g(or)f(ev)o(en)i(a)f(promise)g
(from)f(a)h(resource)g(manager)g(that)f(an)h(application)75
2517 y(is)22 b(allo)o(w)o(ed)g(to)e(spa)o(wn)i(one)f(or)g(more)g(pro)q
(cesses)h(\(whose)f(ph)o(ysical)h(lo)q(cation)h(will)g(b)q(e)f(determined)75
2573 y(dynamically\).)166 2630 y(Within)15 b(MPI,)e(an)g Fj(MPI)p
581 2630 V 16 w(Resource)i Fs(is)f(simply)h(a)e(con)o(tainer)h(of)f(pro)q
(cess)h(slots.)20 b(Pro)q(cess)13 b(slots)h(ma)o(y)75 2686
y(either)i(b)q(e)f(\014lled)i(\(b)o(y)d(a)h(single)h(running)g(pro)q(cess\))e
(or)h(empt)o(y)l(.)k(The)c(con)o(tainer)g(should)h(b)q(e)f(though)o(t)f(of)
-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 8 10
bop 75 -100 a Fs(8)951 b Fm(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)375 691 y @beginspecial 90 @llx 451 @lly 518
@urx 696 @ury 2880 @rwi @setspecial
%%BeginDocument: fig2.eps
1 setlinejoin
/M { moveto } bind def /S { show } bind def
/R { rmoveto } bind def /L { lineto } bind def
/B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def
/CS { closepath stroke } bind def
/S {
/fixwidth exch def
dup length /nchars exch def
dup stringwidth pop
fixwidth exch sub nchars div
exch 0 exch ashow
} def
/bwproc {
rgbproc
dup length 3 idiv string 0 3 0
5 -1 roll {
add 2 1 roll 1 sub dup 0 eq
{ pop 3 idiv 3 -1 roll dup 4 -1 roll dup
3 1 roll 5 -1 roll put 1 add 3 0 }
{ 2 1 roll } ifelse
} forall
pop pop pop
} def
systemdict /colorimage known not {
/colorimage {
pop
pop
/rgbproc exch def
{ bwproc } image
} def
} if
1 1 scale
0 setlinewidth
/drawtri {
/y3 exch def
/x3 exch def
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
0 setgray
newpath
x1 y1 moveto
x2 y2 lineto
x3 y3 lineto
closepath
stroke
} bind def
/filltri {
/y3 exch def
/x3 exch def
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
newpath
x1 y1 moveto
x2 y2 lineto
x3 y3 lineto
closepath
fill
} bind def
/cliptri {
/y3 exch def
/x3 exch def
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
0 setgray
newpath
x1 y1 moveto
x2 y2 lineto
x3 y3 lineto
closepath
clip
} bind def
/imgscanrgb {
gsave
translate
/scandy exch def
/scandx exch def
/istr scandx 3 mul string def
scandx scandy scale
scandx scandy 8
[scandx 0 0 scandy neg 0 scandy]
{currentfile istr readhexstring pop}
false 3
colorimage
grestore
} bind def
/imgscanbw {
gsave
translate
/scandy exch def
/scandx exch def
/istr scandx string def
scandx scandy scale
scandx scandy 8
[scandx 0 0 scandy neg 0 scandy]
{currentfile istr readhexstring pop}
image
grestore
} bind def
/showcaseisoencoding [
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/space /exclam /quotedbl /numbersign
/dollar /percent /ampersand /quoteright
/parenleft /parenright /asterisk /plus
/comma /minus /period /slash
/zero /one /two /three /four /five /six /seven
/eight /nine /colon /semicolon
/less /equal /greater /question
/at /A /B /C /D /E /F /G
/H /I /J /K /L /M /N /O
/P /Q /R /S /T /U /V /W
/X /Y /Z /bracketleft
/backslash /bracketright /asciicircum /underscore
/quoteleft /a /b /c /d /e /f /g
/h /i /j /k /l /m /n /o
/p /q /r /s /t /u /v /w
/x /y /z /braceleft
/bar /braceright /asciitilde /guilsinglright
/fraction /florin /quotesingle /quotedblleft
/guilsinglleft /fi /fl /endash
/dagger /daggerdbl /bullet /quotesinglbase
/quotedblbase /quotedblright /ellipsis /trademark
/dotlessi /grave /acute /circumflex
/tilde /macron /breve /dotaccent
/dieresis /perthousand /ring /cedilla
/Ydieresis /hungarumlaut /ogonek /caron
/emdash /exclamdown /cent /sterling
/currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft
/logicalnot /hyphen /registered /macron
/degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright
/onequarter /onehalf /threequarters /questiondown
/Agrave /Aacute /Acircumflex /Atilde
/Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis
/Igrave /Iacute /Icircumflex /Idieresis
/Eth /Ntilde /Ograve /Oacute
/Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls
/agrave /aacute /acircumflex /atilde
/adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis
/igrave /iacute /icircumflex /idieresis
/eth /ntilde /ograve /oacute
/ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex
/udieresis /yacute /thorn /ydieresis ] def
/showcasedingbatencoding [
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /a1 /a2 /a202 /a3 /a4 /a5 /a119 /a118 /a117
/a11 /a12 /a13 /a14 /a15 /a16 /a105 /a17 /a18 /a19
/a20 /a21 /a22 /a23 /a24 /a25 /a26 /a27 /a28 /a6 /a7
/a8 /a9 /a10 /a29
/a30 /a31 /a32 /a33 /a34 /a35 /a36 /a37 /a38 /a39
/a40 /a41 /a42 /a43 /a44 /a45 /a46 /a47 /a48 /a49
/a50 /a51 /a52 /a53 /a54 /a55 /a56 /a57 /a58 /a59
/a60 /a61 /a62 /a63 /a64 /a65 /a66 /a67 /a68 /a69
/a70 /a71 /a72 /a73 /a74 /a203 /a75 /a204 /a76 /a77 /a78
/a79 /a81 /a82 /a83 /a84 /a97 /a98 /a99 /a100 /.notdef
/a205 /a85 /a206 /a86 /a87 /a88 /a89 /a90 /a91 /a92 /a93
/a94 /a95 /a96
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /a101 /a102 /a103 /a104 /a106 /a107 /a108
/a112 /a111 /a110 /a109
/a120 /a121 /a122 /a123 /a124 /a125 /a126 /a127 /a128 /a129
/a130 /a131 /a132 /a133 /a134 /a135 /a136 /a137 /a138 /a139
/a140 /a141 /a142 /a143 /a144 /a145 /a146 /a147 /a148 /a149
/a150 /a151 /a152 /a153 /a154 /a155 /a156 /a157 /a158 /a159
/a160 /a161 /a163 /a164 /a196 /a165 /a192 /a166 /a167 /a168
/a169 /a170 /a171 /a172 /a173 /a162 /a174 /a175 /a176 /a177
/a178 /a179 /a193 /a180 /a199 /a181 /a200 /a182 /.notdef
/a201 /a183 /a184 /a197 /a185 /a194 /a198 /a186 /a195 /a187
/a188 /a189 /a190 /a191 /.notdef
] def
/Courier-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding showcaseisoencoding def
currentdict
end
/Courier-Bold-SHOWISO exch definefont pop
/pmask10 {
<18182424424281811818242442428181
18182424424281811818242442428181>
} def
/newfont 10 dict def
newfont begin
/FontType 3 def
/FontMatrix [1 0 0 1 0 0] def
/FontBBox [0 0 1 1] def
/Encoding 256 array def
0 1 255 {Encoding exch /.notdef put} for
Encoding 42 /patchar10 put
/CharProcs 2 dict def
CharProcs begin
/.notdef {} def
/patchar10 {
16 16 true [16.08 0 0 -16.08 0 16.08] pmask10 imagemask
} def
end
/BuildChar {
1 0
0 0 1 1
setcachedevice
exch begin
Encoding exch get
CharProcs exch get
end
exec
} def
end
/PatternFont newfont definefont pop
/#copies 1 def
gsave
gsave
matrix currentmatrix
[117 0 0 -126 90 648] concat
B
setmatrix
0 0 0 setrgbcolor
2.000000 setlinewidth
gsave stroke grestore
grestore
gsave
gsave
matrix currentmatrix
[1 0 0 1 91.7 654] concat
newpath
0 0 M 0 42 L 77.6 42 L 77.6 0 L
closepath setmatrix
0 0 0 setrgbcolor
grestore
newpath
89.2 651.5 M 89.2 698.5 L 171.8 698.5 L 171.8 651.5 L
closepath clip newpath
0 0 0 setrgbcolor
matrix currentmatrix
[1 0 0 1 91.7 654] concat
/Courier-Bold-SHOWISO findfont 14 scalefont setfont
0 0 0 setrgbcolor
0 31.5 M (Allocate/) 75.6 S
0 17.5 M (Discover) 67.2 S
0 3.5 M (Resources) 75.6 S
setmatrix
grestore
gsave
matrix currentmatrix
[117 0 0 -126 247.5 648] concat
B
setmatrix
0 0 0 setrgbcolor
2.000000 setlinewidth
gsave stroke grestore
grestore
gsave
gsave
matrix currentmatrix
[1 0 0 1 249.2 654.5] concat
newpath
0 0 M 0 28 L 77.6 28 L 77.6 0 L
closepath setmatrix
0 0 0 setrgbcolor
grestore
newpath
246.7 652 M 246.7 685 L 329.3 685 L 329.3 652 L
closepath clip newpath
0 0 0 setrgbcolor
matrix currentmatrix
[1 0 0 1 249.2 654.5] concat
/Courier-Bold-SHOWISO findfont 14 scalefont setfont
0 0 0 setrgbcolor
0 17.5 M (Start) 42 S
0 3.5 M (Processes) 75.6 S
setmatrix
grestore
gsave
matrix currentmatrix
[117 0 0 -126 400.5 648] concat
B
setmatrix
0 0 0 setrgbcolor
2.000000 setlinewidth
gsave stroke grestore
grestore
gsave
gsave
matrix currentmatrix
[1 0 0 1 402.2 654.5] concat
newpath
0 0 M 0 28 L 111.2 28 L 111.2 0 L
closepath setmatrix
0 0 0 setrgbcolor
grestore
newpath
399.7 652 M 399.7 685 L 515.9 685 L 515.9 652 L
closepath clip newpath
0 0 0 setrgbcolor
matrix currentmatrix
[1 0 0 1 402.2 654.5] concat
/Courier-Bold-SHOWISO findfont 14 scalefont setfont
0 0 0 setrgbcolor
0 17.5 M (Establish ) 84 S
0 3.5 M (Communication) 109.2 S
setmatrix
grestore
gsave
0 0 0 setrgbcolor
gsave
0 setlinejoin
274.5 523 translate
90 rotate
1.2 1.2 scale
newpath 0 0 M -20 -5 L -20 5 L closepath fill
grestore
2.000000 setlinewidth
newpath
180 522 M
180 468 L
274.5 468 L
274.5 504 L
stroke
grestore
gsave
0 0 0 setrgbcolor
gsave
0 setlinejoin
441 523 translate
90 rotate
1.2 1.2 scale
newpath 0 0 M -20 -5 L -20 5 L closepath fill
grestore
2.000000 setlinewidth
newpath
337.5 522 M
337.5 495 L
337.5 468 L
441 468 L
441 504 L
stroke
grestore
gsave
gsave
matrix currentmatrix
[1 0 0 1 179 451] concat
newpath
0 0 M 0 14 L 102.8 14 L 102.8 0 L
closepath setmatrix
0 0 0 setrgbcolor
grestore
newpath
176.5 448.5 M 176.5 467.5 L 284.3 467.5 L 284.3 448.5 L
closepath clip newpath
0.560784 0.560784 0.87451 setrgbcolor
matrix currentmatrix
[1 0 0 1 179 451] concat
/Courier-Bold-SHOWISO findfont 14 scalefont setfont
0 0 0 setrgbcolor
0 3.5 M (MPI_Resource) 100.8 S
setmatrix
grestore
gsave
gsave
matrix currentmatrix
[1 0 0 1 341 451] concat
newpath
0 0 M 0 14 L 94.4 14 L 94.4 0 L
closepath setmatrix
0 0 0 setrgbcolor
grestore
newpath
338.5 448.5 M 338.5 467.5 L 437.9 467.5 L 437.9 448.5 L
closepath clip newpath
0.560784 0.560784 0.87451 setrgbcolor
matrix currentmatrix
[1 0 0 1 341 451] concat
/Courier-Bold-SHOWISO findfont 14 scalefont setfont
0 0 0 setrgbcolor
0 3.5 M (MPI_Process) 92.4 S
setmatrix
grestore
gsave
gsave
matrix currentmatrix
[1 0 0 1 98 585] concat
newpath
0 0 M 0 42 L 102.8 42 L 102.8 0 L
closepath setmatrix
0 0 0 setrgbcolor
grestore
newpath
95.5 582.5 M 95.5 629.5 L 203.3 629.5 L 203.3 582.5 L
closepath clip newpath
0.560784 0.560784 0.87451 setrgbcolor
matrix currentmatrix
[1 0 0 1 98 585] concat
/Courier-Bold-SHOWISO findfont 14 scalefont setfont
0 0 0 setrgbcolor
0 31.5 M (MPI_Resource) 100.8 S
0 17.5 M ( _Discover) 92.4 S
0 3.5 M ( _Allocate) 92.4 S
setmatrix
grestore
gsave
gsave
matrix currentmatrix
[1 0 0 1 255.5 599] concat
newpath
0 0 M 0 28 L 94.4 28 L 94.4 0 L
closepath setmatrix
0 0 0 setrgbcolor
grestore
newpath
253 596.5 M 253 629.5 L 352.4 629.5 L 352.4 596.5 L
closepath clip newpath
0.560784 0.560784 0.87451 setrgbcolor
matrix currentmatrix
[1 0 0 1 255.5 599] concat
/Courier-Bold-SHOWISO findfont 14 scalefont setfont
0 0 0 setrgbcolor
0 17.5 M (MPI_Process) 92.4 S
0 3.5 M ( _Create) 75.6 S
setmatrix
grestore
gsave
gsave
matrix currentmatrix
[1 0 0 1 413 599] concat
newpath
0 0 M 0 28 L 94.4 28 L 94.4 0 L
closepath setmatrix
0 0 0 setrgbcolor
grestore
newpath
410.5 596.5 M 410.5 629.5 L 509.9 629.5 L 509.9 596.5 L
closepath clip newpath
0.560784 0.560784 0.87451 setrgbcolor
matrix currentmatrix
[1 0 0 1 413 599] concat
/Courier-Bold-SHOWISO findfont 14 scalefont setfont
0 0 0 setrgbcolor
0 17.5 M (MPI_Process) 92.4 S
0 3.5 M ( _Attach) 67.2 S
setmatrix
grestore
grestore
showpage
%%EndDocument
@endspecial 552 788 a Fs(Figure)g(1.2:)k(Dynamic)d(Pro)q(cess)f(Managemen)o
(t)75 922 y(as)f(a)f(bag)h(b)q(ecause)h(there)f(is)g(no)g(in)o(ternal)h
(structure)f(visible)i(to)d(an)h(application)i(\(i.e.,)d(if)i(it)f(represen)o
(ts)75 978 y(m)o(ultiple)i(CPUs,)e(there)g(is)h(no)f(w)o(a)o(y)f(for)h(an)g
(application)i(to)d(tell)j(on)e(whic)o(h)h(of)f(those)g(CPUs)g(a)g(pro)q
(cess)75 1035 y(is)k(running\).)29 b(An)18 b Fj(MPI)p 498 1035
14 2 v 16 w(Resource)h Fs(is)f(generally)h(reusable,)g(as)e(it)h(represen)o
(ts)g(a)g(committmen)o(t)f(from)75 1091 y(an)e(external)h(resource)f(manager)
g(that)f(resources)h(are)g(a)o(v)m(ailable.)166 1148 y(The)k(notion)h(of)f
Fk(r)n(esour)n(c)n(e)f Fs(is)i(delib)q(erately)h(\015exible.)35
b(Most)18 b(applications)j(do)e(not)g(care)g(where)75 1204
y(pro)q(cesses)h(are)f(spa)o(wned,)i(as)e(long)h(as)g(there)f(is)i(one)e(pro)
q(cess)h(p)q(er)h(CPU.)e(F)l(or)g(these)h(applications,)75
1261 y(a)e(single)i(resource)e(ob)s(ject)g(con)o(taining)h(sev)o(eral)f(CPUs)
g(ma)o(y)g(b)q(e)g(appropriate.)30 b(Other)18 b(appications)75
1317 y(will)g(w)o(an)o(t)c(explicit)19 b(con)o(trol)c(o)o(v)o(er)g(whic)o(h)i
(pro)q(cesses)f(go)g(on)g(whic)o(h)g(mac)o(hine.)23 b(In)17
b(this)f(case,)g(a)g(single)75 1373 y(resource)i(ob)s(ject)e(ma)o(y)h
(corresp)q(ond)h(to)f(a)g(single)i(mac)o(hine.)27 b(Similarly)l(,)20
b(it)e(migh)o(t)f(b)q(e)i(con)o(v)o(enien)o(t)f(to)75 1430
y(think)e(of)f(an)g(SMP)g(as)g(a)g(single)h(\\no)q(de")f(or)g(as)g(a)g
(collection)i(of)e(\(virtual\))g(pro)q(cessors.)166 1486 y(Within)c(MPI,)f
(ho)o(w)o(ev)o(er,)g(a)g(resource)h(is)g(nothing)f(more)g(than)h(a)f(bag)g
(of)f(pro)q(cess)i(slots.)18 b(Additional)75 1543 y(information)13
b(ab)q(out)f(what)g(ph)o(ysical)i(resources)f(the)g(pro)q(cesses)g(will)h
(use)f(ma)o(y)f(b)q(e)h(kno)o(wn)g(to)f(and)g(used)75 1599
y(b)o(y)j(the)g(application,)i(but)e(is)h(not)f(imp)q(ortan)o(t)g(to)f(MPI.)
166 1656 y(Three)h(n)o(um)o(b)q(ers)h(c)o(haracterize)f(an)g
Fj(MPI)p 880 1656 V 16 w(Resource)p Fs(.)131 1750 y(1.)22 b(Num)o(b)q(er)15
b(of)g(running)h(pro)q(cesses)131 1843 y(2.)22 b(Num)o(b)q(er)15
b(of)g(pro)q(cess)g(slots)h(\(\014lled)g(and)g(empt)o(y\))e(recommended)131
1937 y(3.)22 b(Num)o(b)q(er)15 b(of)g(pro)q(cess)g(slots)h(\(\014lled)g(and)g
(empt)o(y\))e(total)166 2031 y(It)f(is)g(necessary)g(to)g(distinguish)i(b)q
(et)o(w)o(een)e(the)g(total)f(n)o(um)o(b)q(er)h(of)g(pro)q(cess)g(slots)g
(and)g(the)g(n)o(um)o(b)q(er)75 2087 y(of)j(pro)q(cesses)i(recommended)f(for)
f(a)h(giv)o(en)g(resource.)25 b(F)l(or)16 b(instance,)i(if)f(a)g(resource)f
(corresp)q(onds)i(to)75 2144 y(a)f(Unix)i(w)o(orkstation,)e(it)h(ma)o(y)f
(theoreticaly)h(run)g(as)g(man)o(y)f(pro)q(cesses)h(as)f(Unix)i(can)f(supp)q
(ort.)27 b(On)75 2200 y(the)17 b(other)g(hand,)g(it)g(should)h(probably)g
(run)f(at)f(most)g(one)h(pro)q(cess)g(p)q(er)h(pro)q(cessor.)25
b(W)l(e)17 b(could)h(giv)o(e)75 2257 y(it)e(one)g(pro)q(cess)h(slot,)e(but)i
(some)e(applications)j(will)g(need)e(to)g(b)q(e)g(able)h(to)f(do)g(more.)21
b(W)l(e)c(don't)e(w)o(an)o(t)75 2313 y(to)j(tell)h(the)g(user,)g(ho)o(w)o(ev)
o(er,)f(that)g(there)h(are)f(100)g(slots)g(a)o(v)m(ailable)i(b)q(ecause)g
(there)e(will)i(b)q(e)g(no)e(w)o(a)o(y)75 2370 y(to)d(distinguish)i(this)f
(resource)f(from)g(one)g(with)h(100)e(CPUs.)20 b(W)l(e)c(ma)o(y)e(ha)o(v)o(e)
h(an)h(SMP)l(,)e(but)i(our)f(MPI)75 2426 y(pro)q(cesses)g(ma)o(y)f(b)q(e)h(m)
o(ultithreaded)g(pro)q(cesses,)g(so)f(that)g(w)o(e)g(still)i(w)o(an)o(t)d
(only)i(one)g(pro)q(cess)g(p)q(er)g(no)q(de.)75 2483 y(Th)o(us)c
(\\recommended)i(pro)q(cesses")e(do)q(esn't)h(alw)o(a)o(ys)e(mean)i(\\n)o(um)
o(b)q(er)g(of)f(CPUs.")18 b(Most)10 b(applications)75 2539
y(can)19 b(lo)q(ok)g(at)f(recommended)i(pro)q(cesses)f(and)h(ignore)f(max)f
(pro)q(cesses.)31 b(Finally)l(,)22 b(for)c(debugging,)i(a)75
2596 y(user)d(migh)o(t)f(w)o(an)o(t)f(to)h(\\fo)q(ol")g(an)g(application)i(b)
o(y)e(suggesting)h(that)e(it)i(start)e(m)o(ultiple)j(pro)q(cesses)f(on)75
2652 y(a)e(single)h(w)o(orkstation.)1967 46 y Fh(1)1967 103
y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967
385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959
667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119
y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345
y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570
y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796
y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022
y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248
y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474
y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699
y(48)p eop
%%Page: 9 11
bop 75 -100 a Fm(1.3.)33 b(NEW)15 b(OBJECTS)g(F)o(OR)g(IMPLEMENTING)g(D)o
(YNAMIC)f(PR)o(OCESS)h(MANA)o(GEMENT)p Fs(9)166 45 y Fg(Discussion:)32
b Ff(Suggestions)13 b(for)f(an)h(alternativ)o(e)f(name)f(to)i(\\recommended")
e(are)i(w)o(elcome.)j(Thanks)d(to)75 102 y(Ian)f(F)m(oster)g(for)g(making)d
(clear)j(the)h(need)f(to)g(distinguish)f(b)q(et)o(w)o(een)j(max/recomm)o
(ended)c(\(hop)q(e)i(I)g(got)f(it)h(righ)o(t!\))75 158 y(-)i(w)o(cs)166
297 y Fs(MPI)i(resources)h(are)f(o)o(wned)h(b)o(y)f(a)g(single)i(MPI)e(pro)q
(cess.)24 b(Ownership)18 b(cannot)f(b)q(e)g(transferred.)75
354 y(The)22 b(resources)f(used)h(b)o(y)f(pro)q(cesses)h(constituting)g
Fj(MPI)p 1102 354 14 2 v 15 w(COMM)p 1259 354 V 17 w(W)o(ORLD)f
Fs(cannot)g(b)q(e)h(reused)g(b)o(y)75 410 y(those)d(pro)q(cesses)g(\(but)g
(ma)o(y)g(b)q(e)h(reused)f(b)o(y)g(their)h(paren)o(ts\).)31
b(Preallo)q(cated)20 b(resources)f(are)g(o)o(wned)75 467 y(b)o(y)14
b(pro)q(cess)h(0)f(of)h Fj(MPI)p 469 467 V 15 w(COMM)p 626
467 V 17 w(W)o(ORLD)f Fs(unless)i(sp)q(eci\014ed)h(otherwise)d(\(externally)l
(,)h(when)g(the)g(job)f(is)75 523 y(launc)o(hed\).)166 655
y Fg(Discussion:)53 b Ff(Resource)19 b(o)o(wnership)g(can)g(b)q(ecome)f(a)h
(thorn)o(y)f(issue.)33 b(The)19 b(ab)q(o)o(v)o(e)f(approac)o(h)h(is)f(the)75
705 y(simplest)13 b(but)h(also)f(the)i(least)f(\015exible.)k(W)m(e)13
b(ma)o(y)f(w)o(an)o(t)i(to)f(in)o(tro)q(duce)i(mec)o(hanisms)d(to)i(allo)o(w)
145 779 y Fc(\017)23 b Ff(T)m(ransfer)14 b(of)f(resource)j(o)o(wnership,)e
(esp)q(ecially)g(to)g(c)o(hildren.)145 852 y Fc(\017)23 b Ff(Reuse)14
b(of)g(resources)i(used)f(b)o(y)e Fe(MPI)p 764 852 13 2 v 15
w(COMM)p 909 852 V 14 w(W)o(ORLD)p Ff(.)166 926 y(Collectiv)o(e)g(o)o
(wnership)i(app)q(ears)f(to)g(b)q(e)g(a)g(mess)g(without)f(an)o(y)h
(redeeming)f(features.)166 982 y(Another)f(issue)g(is)f(what)h(happ)q(ens)g
(to)f(resources)j(that)e(expire.)17 b(Needs)c(to)e(b)q(e)h(nailed)f(do)o(wn,)
g(but)h(hop)q(efully)75 1039 y(isn't)h(to)q(o)h(m)o(uc)o(h)f(of)g(a)h
(problem,)e(esp.)19 b(if)13 b(resources)j(aren't)e(collectiv)o(e.)75
1243 y Fl(1.3.2)49 b(The)16 b(MPI)p 409 1243 15 2 v 18 w(Pro)q(cess)g(Object)
75 1404 y Fg(Discussion:)38 b Ff(In)15 b(MPI-1,)g(pro)q(cesses)j(can)d(b)q(e)
h(iden)o(ti\014ed)f(b)o(y)g(their)g(rank)g(in)g(a)f(group)h(or)g(comm)o
(unicator.)k(It)75 1454 y(migh)o(t)12 b(b)q(e)k(p)q(ossible)f(to)f(con)o(tin)
o(ue)h(to)f(use)i(a)e(\(group,rank\))g(pair)g(to)h(iden)o(tify)f(a)g(pro)q
(cess)i(as)f(required)h(for)e(MPI-)75 1504 y(2.)29 b(While)17
b(con)o(v)o(enien)o(t)h(for)g(some)f(op)q(erations)h(\(e.g.,)f(spa)o(wning)h
(a)f(group)h(of)f(pro)q(cesses\),)k(the)d(\(group,rank\))75
1554 y(iden)o(ti\014cation)d(w)o(ould)g(b)q(e)h(incon)o(v)o(enien)o(t)f(or)h
(unnatural)f(for)g(others)h(\(e.g.,)f(sending)h(a)f(signal\).)22
b(Moreo)o(v)o(er,)16 b(an)75 1604 y Fe(MPI)p 152 1604 13 2
v 14 w(Group)c Ff(ob)r(ject)h(pro)o(vides)e(an)h(abstraction)f(for)g(a)h
(collection)f(of)g(pro)q(cesses)j(whic)o(h)d(is)h(an)f(unnatural)g(starting)
75 1653 y(p)q(oin)o(t)h(to)g(de\014ne)i(a)e(single)g(pro)q(cess.)19
b(Therefore,)14 b(in)e(the)h(follo)o(wing)d(w)o(e)j(in)o(tro)q(duce)g(a)f
(new)h(ob)r(ject,)g Fe(MPI)p 1720 1653 V 14 w(Pro)q(cess)p
Ff(.)75 1703 y(When)f(the)g(b)q(eha)o(vior)f(of)f(this)i(ob)r(ject)g(is)f
(agreed)h(up)q(on)g(and)f(understo)q(o)q(d,)i(w)o(e)e(can)h(decide)g(among)e
(three)i(options)134 1777 y(1.)22 b(Absorb)14 b Fe(MPI)p 410
1777 V 14 w(Pro)q(cess)h Ff(in)o(to)e Fe(MPI)p 729 1777 V 14
w(Group)134 1850 y Ff(2.)22 b(Ha)o(v)o(e)13 b(t)o(w)o(o)h(separate)h(ob)r
(jects)g(\(with)f(p)q(erhaps)h(additional)d(accessor/creation)k(functions\))
134 1924 y(3.)22 b(Go)13 b(with)g Fe(MPI)p 427 1924 V 15 w(Pro)q(cess)h
Ff(and)g(deprecate)h Fe(MPI)p 929 1924 V 15 w(Group)166 2087
y Fs(An)k Fj(MPI)p 329 2087 14 2 v 16 w(Pro)q(cess)g Fs(represen)o(ts)g(a)g
(pro)q(cess)g({)f(a)h(program)f(executing)i(on)e(a)h(pro)q(cessor.)31
b(An)19 b(An)75 2143 y Fj(MPI)p 160 2143 V 16 w(Pro)q(cess)c
Fs(is)g(a)g(\\pro)q(cess",)f(not)g(a)g(\\thread")g(in)i(that)e(pro)q(cesses)h
(ha)o(v)o(e)f(their)h(o)o(wn)f(address)h(spaces)75 2200 y(and)h(don't)g
(share)g(date)f(unless)j(they)e(tak)o(e)f(explicit)j(action)e(to)g(do)g(so)f
(\(outside)i(of)e(MPI\).)h(A)g(pro)q(cess)75 2256 y(ma)o(y)e(or)h(ma)o(y)g
(not)f(b)q(e)i(\\registered")f(with)h(MPI;)f(it)g(ma)o(y)g(or)f(ma)o(y)h(not)
g(call)h Fj(MPI)p 1491 2256 V 16 w(INIT)p Fs(.)166 2395 y Fg(Discussion:)44
b Ff(P)o(eople)17 b(ha)o(v)o(e)f(b)q(een)h(confused)h(b)o(y)e(the)h(pro)q
(cess)h(vs.)26 b(thread)17 b(distinction)f(and)g(the)h(fact)75
2452 y(that)d(an)g Fe(MPI)p 300 2452 13 2 v 14 w(Pro)q(cess)g
Ff(ma)o(y)e(not)i(b)q(e)g(an)g(MPI)g(Pro)q(cess.)166 2591 y
Fs(Y)l(ou)h(can't)g(comm)o(unicate)g(directly)i(with)e(an)g
Fj(MPI)p 1066 2591 14 2 v 16 w(Pro)q(cess)h Fs(\(that)e(requires)i(a)f(comm)o
(unicator\),)75 2647 y(but)g(y)o(ou)f(can)h(send)g(signals)g(to)f(one.)20
b(If)15 b(it)f(is)h(an)g(MPI)f(pro)q(cess)h(in)h(the)e(sense)h(that)f(it)h
(has)f(a)h(rank)f(in)h(a)75 2704 y(comm)o(unicator,)d(then)h(the)f
Fj(MPI)p 643 2704 V 16 w(Pro)q(cess)h Fs(ob)s(ject)f(represen)o(ting)h(it)g
(can)f(b)q(e)h(retriev)o(ed)g(from)f(its)g(rank)g(in)-32 46
y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 10 12
bop 75 -100 a Fs(10)933 b Fm(CHAPTER)16 b(1.)29 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fs(that)d(comm)o(unicator)f(\(See)i
Fj(MPI)p 645 45 14 2 v 16 w(COMM)p 803 45 V 16 w(PROCESS)h
Fs(b)q(elo)o(w\).)19 b(MPI)12 b(pro)o(vides)h(no)f(guaran)o(tees)g(on)g(the)
75 102 y(order)e(of)g(op)q(erations)h(with)g(resp)q(ect)g(to)f(an)g
Fj(MPI)p 897 102 V 16 w(Pro)q(cess)i Fs(and)e(pro)o(vides)h(none)g(of)f(the)h
(safet)o(y)f(asso)q(ciated)75 158 y(with)18 b(comm)o(unicators.)28
b(In)18 b(particular,)h(there)f(is)h(no)f(guaran)o(tee)f(of)g(order)h(b)q(et)
o(w)o(een)g(messages)g(and)75 214 y(signals.)166 354 y Fg(Discussion:)34
b Ff(A)14 b(bad)g(programming)d(practice)k(that)f(has)g(b)q(een)h(seen)g(b)o
(y)f(naiv)o(e)g(users)h(of)f(systems)g(that)75 410 y(pro)o(vide)f(b)q(oth)g
(messages)h(and)f(signals)f(is)i(to)f(send)h(a)f(pro)q(cess)i(a)e(message)g
(and)g(then)h(signal)e(it)h(to)g(w)o(ak)o(e)g(up)g(and)75 467
y(receiv)o(e)i(the)g(message.)i(This)d(needs)h(to)f(b)q(e)h(plainly)d
(forbidden.)18 b(-)13 b(A)o(G.)75 692 y Fp(1.4)59 b(Simple)20
b(Interface)75 870 y Fg(Discussion:)39 b Ff(\(w)o(cs\))17 b
Fe(MPI)p 537 870 13 2 v 14 w(SP)m(A)-5 b(WN)p Ff(,)14 b(as)i(presen)o(ted)h
(earlier,)e(b)q(oth)h(allo)q(cated)f(resources)i(and)e(spa)o(wned)h(pro-)75
920 y(cesses.)33 b(This)18 b(w)o(as)g(problematic)e(b)q(ecause)k(\(1\))e
(almost)e(alw)o(a)o(ys,)h(y)o(ou)h(w)o(an)o(t)g(to)f(spa)o(wn)h(on)g(preallo)
q(cated)g(re-)75 970 y(sources,)j(not)d(allo)q(cate)g(new)g(ones)h(and)f
(\(2\))h(the)g(syn)o(tax)f(required)h(y)o(ou)f(to)g(kno)o(w)g(ho)o(w)g(man)o
(y)e(pro)q(cesses)21 b(to)75 1019 y(spa)o(wn,)13 b(whic)o(h)h(y)o(ou)f(had)h
(no)f(w)o(a)o(y)g(of)h(\014nding)f(out.)18 b(\(These)d(are)f(the)h(same)d
(issues)j(that)f(motiv)n(ated)e(separating)75 1069 y(resource)k(disco)o(v)o
(ery)e(and)g(resource)i(allo)q(cation.)g(\))166 1119 y(The)j(new)g
Fe(MPI)p 423 1119 V 14 w(SP)m(A)-5 b(WN)19 b Ff(tak)o(es)g(a)f(resource)j
(argumen)o(t)c(to)i(a)o(v)o(oid)e(these)j(problems.)31 b(This)19
b(mak)o(es)e(the)75 1169 y(\\simple")12 b(in)o(terface)i(a)g(t)o(w)o(o)f
(stage)i(pro)q(cess:)134 1244 y(1.)22 b(Disco)o(v)o(er)12 b(existing)g
(resources)i(with)e Fe(MPI)p 852 1244 V 15 w(RESOURCE)p 1081
1244 V 12 w(DISCO)o(VER)e Ff(\(using)i(a)g(simple)f(form)f(of)i(the)h(sub-)
189 1293 y(routine)h(to)f(get)i(a)e(single)h(resource\))134
1368 y(2.)22 b(Spa)o(wn)17 b(on)o(to)h(this)g(resource)i(with)e
Fe(MPI)p 850 1368 V 14 w(SP)m(A)-5 b(WN)p Ff(.)18 b(This)f(will)g(b)q(e)i(a)e
(single)h(call)f(that)i(will)d(b)q(oth)i(start)189 1418 y(pro)q(cesses)e(and)
e(attac)o(h)g(to)g(them.)166 1493 y(The)g(alternativ)o(e)g(is)g(an)f
Fe(MPI)p 635 1493 V 15 w(SP)m(A)-5 b(WN)13 b Ff(with)h(the)g(follo)o(wing)e
(prop)q(erties:)145 1567 y Fc(\017)23 b Ff(Automatically)15
b(starts)k(pro)q(cesses)i(on)d(preallo)q(cated)g(resources,)j(in)d(a)f
(roundrobin)h(fasion)g(similar)d(to)189 1617 y(PVM)145 1692
y Fc(\017)23 b Ff(The)13 b(user)g(m)o(ust)e(\014nd)i(out)f(through)h(some)e
(external)i(mec)o(hanism)d(ho)o(w)i(man)o(y)f(pro)q(cesses)k(to)d(spa)o(wn)h
(\(this)189 1742 y(will)g(probably)h(b)q(e)i(hardco)q(ded)g(or)e(in)h(a)f
(con\014g)h(\014le,)g(and)g(is)f(redundan)o(t)i(with)e(information)e(that)j
(could)189 1791 y(b)q(e)f(obtained)g(from)e Fe(MPI)p 591 1791
V 14 w(RESOURCE)p 819 1791 V 13 w(DISCO)o(VER)p Ff(.)75 1866
y(\).)166 1916 y(The)17 b(new)h(approac)o(h)f(also)g(has)g(an)g(adv)n(an)o
(tage)f(of)h(eliminating)d(the)j(\\other)h(args")f(a)o(wkw)o(ardness)h(from)
75 1966 y Fe(MPI)p 152 1966 V 14 w(SP)m(A)-5 b(WN)p Ff(.)19
b(Normally)f(these)j(w)o(ouldn't)e(b)q(e)h(used.)37 b(If)19
b(the)i(user)f(w)o(an)o(ts)g(the)h(extra)f(functionalit)o(y)e(\(e.g.,)75
2016 y(to)h(spa)o(wn)f(on)h(sp)q(eci\014c)h(hosts)g(or)f(arc)o(hitectures\))i
(he/she)f(can)f(use)g(a)g(sligh)o(tly)e(more)h(complicated)g(form)f(of)75
2065 y Fe(MPI)p 152 2065 V 14 w(RESOURCE)p 380 2065 V 13 w(DISCO)o(VER)p
Ff(.)166 2115 y(Another)23 b(problem)e(with)h Fe(MPI)p 687
2115 V 14 w(SP)m(A)-5 b(WN)22 b Ff(is)g(that)h(to)f(b)q(e)h(simple)e(it)g
(should)i(return)g(a)f(regular)g(com-)75 2165 y(m)o(unicator,)d(not)h(an)g
(in)o(tercomm)o(unicator.)33 b(With)20 b(the)g(curren)o(t)h(b)q(eha)o(vior)f
(of)f Fe(MPI)p 1471 2165 V 15 w(COMM)p 1616 2165 V 14 w(P)m(ARENT)g
Ff(and)75 2215 y Fe(MPI)p 152 2215 V 14 w(PROCESS)p 349 2215
V 14 w(A)m(TT)m(A)o(CH)10 b Ff(this)h(w)o(ould)g(require)i(the)f(c)o(hild)f
(to)g(do)h(an)f Fe(MPI)p 1270 2215 V 14 w(INTERCOMM)p 1535
2215 V 15 w(MERGE)p Ff(.)f(Since)i(the)75 2265 y(user)18 b(has)g(to)f(deal)f
(with)h Fe(MPI)p 563 2265 V 15 w(INTERCOMM)p 829 2265 V 14
w(MERGE)f Ff(in)h(an)o(y)g(case,)h Fe(MPI)p 1312 2265 V 15
w(SP)m(A)-5 b(WN)17 b Ff(no)o(w)f(returns)j(an)e(in)o(ter-)75
2314 y(comm)o(unicator.)166 2371 y(P)o(erhaps)e(w)o(e)f(should)g(consider)g
(eliminating)d Fe(MPI)p 973 2371 V 14 w(SP)m(A)-5 b(WN)14 b
Ff(altogether?)75 2560 y Fi(MPI_Spawn\(oldcomm,)21 b(root,)j(count,)f
(executable,)f(args,)h(resource,)g(newcomm\);)166 2666 y Fs(can)15
b(b)q(e)h(implemen)o(ted)h(as:)1967 46 y Fh(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 11 13
bop 75 -100 a Fm(1.4.)34 b(SIMPLE)16 b(INTERF)-5 b(A)o(CE)1191
b Fs(11)75 45 y Fi(MPI_Process)22 b(*processes)h(=)h(NULL;)75
102 y(if)g(\(myid)f(==)g(0\))h({)123 158 y(processes)e(=)i
(malloc\(sizeof\(MPI_Process\)*)o(count\);)123 214 y
(MPI_Process_create\(execu)o(table,)c(args,)k(count,)f
(MPI_PROCESS_TYPE_CHILD,)576 271 y(resource,)g(processes\);)75
327 y(})75 384 y(MPI_Process_attach\(comm,)e(0,)i(count,)g(processes,)g
(newcomm\);)75 440 y(if)h(\(myid)f(==)g(0\))h(free\(processes\);)166
603 y Fs(In)f(this)f(section)h(w)o(e)f(pro)o(vide)h(high-lev)o(el)h
(functions)f(b)q(oth)g(for)e(resource)i(disco)o(v)o(ery)l(,)h(pro)q(cess)75
659 y(creation)d(and)f(for)g(clien)o(t-serv)o(er)h(requiremen)o(ts)g(that)f
(are)g(the)g(easiest)h(to)f(use.)36 b(These)20 b(pro)o(vide)h(a)75
716 y(useful)16 b(subset)e(of)g(op)q(erations;)h(routines)g(that)f(pro)o
(vide)h(more)f(con)o(trol)g(and)h(\015exibilit)o(y)i(are)d(describ)q(ed)75
772 y(later.)27 b(Indeed,)19 b(the)f(functions)g(in)h(this)f(section)g(can)g
(b)q(e)g(la)o(y)o(ered)g(on)f(those)g(routines,)i(describ)q(ed)g(in)75
829 y(Sections)d Fo(??)p Fs(,)e Fo(??)p Fs(,)g(and)i Fo(??)p
Fs(.)75 949 y Fj(Spa)o(wning)h(p)o(ro)q(cesses)47 b Fs(In)16
b(the)g(most)e(common)i(case,)f(an)g(application)j(will)f(simply)g(spa)o(wn)e
(new)h(pro-)75 1005 y(cesses)f(on)f(preallo)q(cated)i(resources.)k(This)15
b(is)g(a)f(t)o(w)o(o)f(step)i(pro)q(cess.)20 b(First)14 b(the)h(application)h
(disco)o(v)o(ers)75 1062 y(its)f(resources,)g(then)h(it)f(spa)o(wns)g(a)g
(program.)166 1118 y(Detailed)21 b(mec)o(hanisms)f(for)f(obtaining)i
(resources)f(are)f(describ)q(ed)j(in)f(Section)f Fo(??)p Fs(.)34
b(F)l(or)19 b(most)75 1175 y(applications,)d(the)g(follo)o(wing)g(is)f
(su\016cien)o(t:)147 1281 y Fi(MPI_Resource_discover\(M)o(PI_RESO)o(URCE_TYP)
o(E_DEFAU)o(LT,)21 b(NULL,)i(&resource\))147 1337 y(MPI_Resource_nslots\(res)
o(ource,)d(&nslots\))166 1444 y Fs(This)15 b(pro)q(duces)h(a)f(resource)g(ob)
s(ject)f(on)h(whic)o(h)g(to)g(spa)o(wn)f(pro)q(cesses)h(and)g(tells)h(the)f
(application)75 1500 y(ho)o(w)g(man)o(y)f(pro)q(cesses)i(it)f(ma)o(y)g(spa)o
(wn.)166 1557 y(The)g(follo)o(wing)h(function)g(is)g(the)g(easiest)f(w)o(a)o
(y)f(to)h(create)g(new)h(pro)q(cesses,)f(and)g(is)h(most)e(lik)o(e)j(the)75
1613 y(PVM)g(routine)g Fi(pvm)p 432 1613 15 2 v 17 w(spawn)p
Fs(.)24 b(It)17 b(starts)f(the)h(same)f(executable)j(with)e(the)g(same)g
(argumen)o(t)f(list)h(on)g(a)75 1670 y(set)c(of)g(pro)q(cessors.)19
b(It)13 b(is)h(a)f(collectiv)o(e)i(op)q(eration)e(o)o(v)o(er)g(the)g(pro)q
(cesses)h(in)g(the)f(group)g(asso)q(ciated)h(with)75 1726 y
Fj(oldcomm)p Fs(,)d(and)i(returns)g(an)g(in)o(ter-comm)o(unicator)f
Fj(new)o(comm)p Fs(,)g(whic)o(h)i(has)e(the)h(new)g(pro)q(cesses)g(as)g(the)
75 1782 y(remote)18 b(group.)30 b(If)19 b(an)f(expanded)i(comm)o(unicator)e
(is)i(desired,)g(an)f(ordinary)f(in)o(tra-comm)o(unicator)75
1839 y(con)o(taining)12 b(all)f(pro)q(cesses)g(can)g(then)g(b)q(e)h
(constructed)f(using)g Fj(MPI)p 1218 1839 14 2 v 16 w(INTERCOMM)p
1508 1839 V 17 w(MERGE)p Fs(.)g(Only)h(one)75 1895 y(of)17
b(the)h(pro)q(cesses)h(in)f Fj(oldcomm)f Fs(m)o(ust)g(supply)i(the)f(argumen)
o(ts)f(that)g(describ)q(e)j(the)e(new)g(pro)q(cesses;)75 1952
y(that)c(pro)q(cess)i(is)g(designated)g(b)o(y)f Fj(ro)q(ot)p
Fs(.)-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 12 14
bop 75 -100 a Fs(12)928 b Fm(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fj(MPI)p 160 45 14 2 v 16 w(SP)l(A)-5
b(WN\(oldcomm,)13 b(ro)q(ot,)i(count,)h(executable,)h(a)o(rgs,)d(resource,)h
(new)o(comm\))117 122 y Ff(IN)155 b Fj(oldcomm)413 b Ff(comm)o(unicator)11
b(of)j(spa)o(wning)f(group)117 197 y(IN)155 b Fj(ro)q(ot)508
b Ff(o)o(wner)14 b(of)g(resource)117 273 y(IN)155 b Fj(count)482
b Ff(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)i(to)e(spa)o(wn)g(\(in)o(t\))117
348 y(IN)155 b Fj(executable)391 b Ff(executable)15 b(\014le)f(for)g(new)g
(pro)q(cesses)j(to)c(execute)j(\(string\))117 423 y(IN)155
b Fj(a)o(rgs)510 b Ff(argumen)o(ts)13 b(for)h(the)g(spa)o(wned)h(pro)q
(cesses)117 498 y(IN)155 b Fj(resource)432 b Ff(resource)16
b(to)e(spa)o(wn)g(on)o(to.)j(Signi\014can)o(t)c(only)g(at)h
Fe(ro)q(ot)117 573 y Ff(OUT)108 b Fj(new)o(comm)397 b Ff(new)21
b(in)o(ter-comm)o(unicator)d(including)i(new)h(pro)q(cesses)i(as)905
630 y(the)15 b(remote)e(group)166 830 y Fg(Discussion:)i Ff(F)m(or)f(ease)g
(of)f(use,)h(w)o(e)g(ma)o(y)e(w)o(an)o(t)h(to)h(create)h(a)e(regular)h(comm)o
(unicator,)c(con)o(taining)j(b)q(oth)75 880 y(new)j(and)f(old)g(pro)q
(cesses,)j(so)e(that)g(casual)f(users)i(don't)e(ha)o(v)o(e)g(to)h(w)o(orry)f
(ab)q(out)h(in)o(tercomm)o(unicators,)d(whic)o(h)75 930 y(can)h(b)q(e)h
(confusing.)166 986 y(This)h(ma)o(y)d(not)j(w)o(ork)f(b)q(ecause)j(there)f
(is)f(no)f(ob)o(vious)g(w)o(a)o(y)g(to)h(create)h(a)e(regular)h(comm)o
(unicator)d(in)i(the)75 1043 y(c)o(hildren.)166 1182 y Fs(The)20
b(spa)o(wned)f(pro)q(cesses)h(are)f(created)h(with)g Fj(MPI)p
1089 1182 V 15 w(COMM)p 1246 1182 V 17 w(W)o(ORLD)f Fs(consisting)h(of)g(the)
f(pro-)75 1238 y(cesses)g(spa)o(wned)g(with)f(this)h(call.)31
b(The)19 b(call)h(blo)q(c)o(ks)f(un)o(til)h(all)f(pro)q(cesses)g(in)h
Fj(oldcomm)c Fs(ha)o(v)o(e)i(called)75 1295 y Fj(MPI)p 160
1295 V 16 w(SP)l(A)-5 b(WN)12 b Fs(and)f(all)h(the)f(spa)o(wned)h(pro)q
(cesses)f(ha)o(v)o(e)g(called)h Fj(MPI)p 1234 1295 V 16 w(INIT)f
Fs(and)g Fj(MPI)p 1516 1295 V 16 w(COMM)p 1674 1295 V 16 w(P)l(ARENT)p
Fs(,)75 1351 y(after)k(whic)o(h)i(comm)o(unication)g(is)g(p)q(ossible.)25
b(Note)15 b(that)h(this)h(means)f(that)f Fj(MPI)p 1495 1351
V 16 w(COMM)p 1653 1351 V 16 w(W)o(ORLD)h Fs(is)75 1408 y(di\013eren)o(t)c
(on)h(the)f(spa)o(wners)g(and)g(spa)o(wnees.)19 b(Also)12 b(note)g(that)g(b)o
(y)g(using)h Fj(MPI)p 1430 1408 V 16 w(COMM)p 1588 1408 V 16
w(SELF)p Fs(,)f(a)g(single)75 1464 y(pro)q(cess)17 b(can)h(create)f(man)o(y)f
(others;)h(this)h(is)g(useful)g(b)q(oth)f(for)g(master-sla)o(v)o(e)f
(programs)g(and)h(for)g(dy-)75 1520 y(namic)d(sizing)h(of)e(parallel)i(jobs)e
(from)g(a)g(single)i(initial)g(pro)q(cess.)20 b(This)14 b(function)g(is)g
(similar)h(to)d(the)i(one)75 1577 y(describ)q(ed)k(in)g([)p
Fo(?)p Fs(],)d(but)i(here)f(the)h(argumen)o(ts)e(are)i(made)f(explicit)j
(instead)e(of)f(b)q(eing)h(com)o(bined)h(in)f(a)75 1633 y(single)g(string.)k
(In)16 b(the)f(case)h(where)f(job-sc)o(heduler-dep)q(end)q(en)o(t)j
(information)e(m)o(ust)f(b)q(e)h(supplied,)h(w)o(e)75 1690
y(do)e(use)h(a)f(string,)f(in)i(the)g(more)e(\015exible)k Fj(MPI)p
882 1690 V 16 w(RESOURCE)p 1128 1690 V 18 w(IALLOCA)l(TE)d
Fs(describ)q(ed)i(in)f(Section)h Fo(??)p Fs(.)75 1810 y Fj(Client-Server)11
b(Applications)48 b Fs(The)11 b(ab)q(o)o(v)o(e)f(paragraphs)g(co)o(v)o(ered)g
(the)h(case)g(of)f(creating)h(new)g(pro)q(cesses.)75 1866 y(F)l(or)17
b(clien)o(t-serv)o(er)i(applications,)h(the)e(situation)g(is)h(di\013eren)o
(t,)f(b)q(ecause)h(the)f(pro)q(cesses)h(in)f(question)75 1923
y(already)h(exist,)g(and)f(what)g(w)o(e)g(need)h(is)f(a)g(comm)o(unicator)g
(to)g(b)q(e)h(used)g(b)o(y)f(them)g(to)g(comm)o(unicate)75
1979 y(with)e(one)f(another.)166 2036 y(The)f(follo)o(wing)g(are)f(the)h
(simplest,)h(blo)q(c)o(king)f(calls.)21 b(The)14 b(non-blo)q(c)o(king)h(v)o
(ersions)f(are)f(describ)q(ed)75 2092 y(in)j(Section)g Fo(??)p
Fs(.)1967 46 y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959
554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780
y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 13 15
bop 75 -100 a Fm(1.4.)34 b(SIMPLE)16 b(INTERF)-5 b(A)o(CE)1191
b Fs(13)75 45 y Fj(MPI)p 160 45 14 2 v 16 w(CLIENT)p 333 45
V 16 w(CONNECT\(mycomm,)12 b(name,)j(new)o(comm\))117 122 y
Ff(IN)155 b Fj(mycomm)412 b Ff(comm)o(unicator)10 b(of)h(the)i(clien)o(t,)f
(o)o(v)o(er)g(whic)o(h)h(this)f(call)f(is)h(col-)905 179 y(lectiv)o(e)117
254 y(IN)155 b Fj(name)485 b Ff(w)o(ell-kno)o(wn)9 b(name)g(b)o(y)g(whic)o(h)
h(the)h(serv)o(er)g(can)f(b)q(e)h(con)o(tacted)905 310 y(\(string\))117
385 y(OUT)108 b Fj(new)o(comm)397 b Ff(new)10 b(in)o(ter-comm)o(unicator,)d
(whic)o(h)i(includes)h(the)g(serv)o(er)h(pro-)905 442 y(cesses)17
b(as)c(the)i(remote)e(group)75 661 y Fj(MPI)p 160 661 V 16
w(SERVER)p 343 661 V 18 w(CONNECT\(mycomm,)f(name,)j(new)o(comm\))117
738 y Ff(IN)155 b Fj(mycomm)412 b Ff(comm)o(unicator)18 b(of)i(the)h(serv)o
(er,)j(o)o(v)o(er)c(whic)o(h)h(this)f(call)g(is)905 795 y(collectiv)o(e)117
870 y(IN)155 b Fj(name)485 b Ff(w)o(ell-kno)o(wn)9 b(name)g(b)o(y)g(whic)o(h)
h(the)h(serv)o(er)g(can)f(b)q(e)h(con)o(tacted)905 926 y(\(string\))117
1001 y(OUT)108 b Fj(new)o(comm)397 b Ff(new)10 b(in)o(ter-comm)o(unicator,)d
(whic)o(h)i(includes)h(the)g(clien)o(t)f(pro-)905 1058 y(cesses)17
b(as)c(the)i(remote)e(group)166 1182 y Fs(Then)j(an)o(y)g(pro)q(cess)g(in)g
(the)g(clien)o(t)h(group)e(can)h(comm)o(unicate)g(with)h(an)o(y)e(pro)q(cess)
h(in)h(the)e(serv)o(er)75 1239 y(group)g(and)g(vice)h(v)o(ersa,)f(using)h
(the)f(in)o(ter-comm)o(unicator.)166 1295 y(Disconnection)c(o)q(ccurs)g(when)
g(pro)q(cesses)f(call)h Fj(MPI)p 1057 1295 V 16 w(COMM)p 1215
1295 V 17 w(FREE)f Fs(on)g(the)h(in)o(ter-comm)o(unicator.)166
1352 y(The)17 b(form)g(of)f(the)i Fj(name)f Fs(argumen)o(t)f(has)h(sev)o
(eral)g(p)q(ossibilitie)q(s.)28 b(The)18 b(most)e(ob)o(vious)h(is)h(to)f(use)
75 1408 y(the)c Fi(net-address:port-number)d Fs(format)h(that)h(curren)o(t)h
(systems)f(will)j(\014nd)e(most)f(straigh)o(tforw)o(ard.)75
1464 y(Ho)o(w)o(ev)o(er,)i(in)i(the)f(long)h(run,)f(name)g(serv)o(ers)g(of)f
(v)m(arious)i(kinds)g(ma)o(y)f(require)h(more)f(\015exibilit)o(y)l(.)75
1586 y Fl(1.4.1)49 b(Interfacing)16 b(to)h(the)e(Resource)g(Manager)75
1672 y Fs(This)h(section)g(describ)q(es)g(an)g(in)o(terface)f(for)g
(obtaining)h(resources)f(from)f(a)h(resource)g(manager.)166
1728 y(There)c(are)f(t)o(w)o(o)f(w)o(a)o(ys)g(that)h(applications)i(t)o
(ypically)f(use)g(new)g(resources.)18 b(In)11 b(the)f(\014rst,)h(they)f(mak)o
(e)75 1785 y(use)16 b(of)f(existing,)i(pre-allo)q(cated)g(resources.)k(F)l
(or)15 b(instance,)i(in)f(PVM,)f(a)h(user)f(ma)o(y)g(create)h(a)f(virtual)75
1841 y(mac)o(hine,)g(and)f(than)g(start)f(a)h(master)f(pro)q(cess)h(on)g
(that)g(mac)o(hine.)20 b(The)14 b(master)g(pro)q(cess)g(determines)75
1898 y(ho)o(w)i(man)o(y)h(hosts)f(are)h(a)o(v)m(ailable)i(and)e(spa)o(wns)g
(sla)o(v)o(e)f(pro)q(cesses)i(on)f(the)g(un)o(used)h(hosts.)24
b(Resources)75 1954 y(are)15 b(disco)o(v)o(ered,)i(not)e(allo)q(cated,)h(b)o
(y)g(the)g(master)f(pro)q(cess.)21 b(The)16 b(second)h(w)o(a)o(y)d(is)j(for)e
(an)g(application)75 2011 y(to)d(obtain)h(new)g(resources)g(explicitly)l(.)22
b(In)13 b(PVM,)f(this)i(is)f(done)g(through)g(the)f Fi(pvm)p
1503 2011 15 2 v 17 w(addhosts)g Fs(routine.)166 2067 y(It)e(is)h(p)q
(ossible)h(to)d(treat)h(disco)o(v)o(ery)g(and)g(allo)q(cation)i(in)f(the)f
(same)g(w)o(a)o(y)l(,)g(using)h(a)f(single)h Fj(ALLOCA)l(TE)75
2124 y Fs(function.)27 b(This)18 b(requires)g(in)g(the)f(case)g(of)g
(pre-allo)q(cated)i(resources)e(that)f(an)i(application)g(kno)o(w)f(in)75
2180 y(adv)m(ance)j(what)f(resources)h(are)f(a)o(v)m(ailable)i(so)e(that)g
(it)h(kno)o(ws)f(what)g(to)g(\\allo)q(cate".)33 b(W)l(e)19
b(therefore)75 2237 y(distinguish)g(b)q(et)o(w)o(een)f(allo)q(cation)g(and)g
(disco)o(v)o(ery)f(of)g(resources.)26 b(Resource)18 b(disco)o(v)o(ery)g(is)g
(exp)q(ected)75 2293 y(to)f(b)q(e)h(a)g(fast)f(op)q(eration)g(that)g(ma)o(y)g
(b)q(e)i(p)q(ossible)g(to)e(implemen)o(t)i(through)f(in)o(ternal)g(lo)q(okup)
h(rather)75 2349 y(than)10 b(external)h(comm)o(unication)h(\(dep)q(ending)g
(on)f(the)f(MPI)h(implemen)o(tation\).)19 b(Resource)11 b(allo)q(cation,)75
2406 y(on)i(the)h(other)f(hand,)h(can)f(b)q(e)h(time-consuming,)h(and)e(is)h
(therefore)f(a)g(non-blo)q(c)o(king)j(op)q(eration)d(whic)o(h)75
2462 y(returns)i(a)g(request)g(to)g(b)q(e)h(w)o(aited)f(on)g(later.)166
2519 y(Neither)h(function)f(starts)f(an)o(y)h(application-visibl)q(e)j(pro)q
(cesses;)d(rather,)f(they)h(obtain)g(resources)75 2575 y(for)f(use)h(b)o(y)f
(other)g(functions.)20 b(Ho)o(w)o(ev)o(er,)14 b(w)o(e)g(need)h(to)f(tak)o(e)g
(in)o(to)g(accoun)o(t)g(those)g(resource)h(managers)75 2632
y(that)g(cannot)g(allo)q(cate)i(resources)f(without)f(starting)g(pro)q
(cesses,)h(suc)o(h)g(as)g(LoadLev)o(eler)h(or)e(DQS.)g(In)75
2688 y(those)j(cases,)g(the)h(executables)g(ma)o(y)e(not)h(b)q(e)h(the)f
(application)i(executables,)g(but)e(rather)g(in)o(terface)-32
46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 14 16
bop 75 -100 a Fs(14)928 b Fm(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fs(pro)q(cesses)d(that)f(will)i(create)e(the)h
(application)h(pro)q(cesses)f(in)g(resp)q(onse)g(to)f(one)h(of)f(the)g(pro)q
(cess-creation)75 102 y(functions)16 b(describ)q(ed)h(here)f(\(lik)o(e)g
Fj(MPI)p 757 102 14 2 v 16 w(SP)l(A)-5 b(WN)p Fs(\).)166 158
y(The)15 b(in)o(terface)g(to)f(an)h(external)g(resource)g(manager)f(could)i
(b)q(e)f(arbitrarily)g(complex.)21 b(The)15 b(MPI)75 214 y(in)o(terface)20
b(sp)q(eci\014es)i(the)e(absolute)g(minim)o(um)i(amoun)o(t)d(of)g
(information)h(that)g(m)o(ust)f(b)q(e)i(kno)o(wn)f(to)75 271
y(MPI)15 b(and)h(tries)f(to)f(mak)o(e)h(common)g(cases)g(v)o(ery)g(simple)i
(to)d(sp)q(ecify)l(.)75 391 y Fj(Resource)i(Discovery)75 571
y(MPI)p 160 571 V 16 w(RESOURCE)p 406 571 V 18 w(DISCO)o(VER\(resource)p
815 571 V 17 w(t)o(yp)q(e,)g(nresources,)g(a)o(rra)o(y)p 1260
571 V 15 w(of)p 1312 571 V 16 w(resources\))117 648 y Ff(IN)155
b Fj(resource)p 476 648 V 17 w(t)o(yp)q(e)335 b Ff(explained)14
b(b)q(elo)o(w)117 724 y(INOUT)62 b Fj(nresources)392 b Ff(On)19
b(en)o(trance,)h(size)f(of)f(arra)o(y)m(.)31 b(On)18 b(exit,)h(n)o(um)o(b)q
(er)f(of)g(ele-)905 780 y(men)o(ts)c(returned)h(in)f(arra)o(y)117
855 y(OUT)108 b Fj(a)o(rra)o(y)p 416 855 V 15 w(of)p 468 855
V 16 w(resources)252 b Ff(arra)o(y)14 b(of)f Fe(MPI)p 1138
855 13 2 v 14 w(Resource)j Ff(ob)r(jects)166 980 y Fj(resource)p
324 980 14 2 v 17 w(t)o(yp)q(e)d Fs(determines)h(ho)o(w)f(resources)g(are)f
(split)i(up)f(in)o(to)g(one)g(or)f(more)h(MPI)p 1608 980 V
16 w(Resource)h(ob-)75 1036 y(jects.)19 b(It)14 b(is)g(a)f(suggestion,)h(not)
f(a)g(requiremen)o(t)h(\(exept)g(for)f Fj(TYPE)p 1250 1036
V 16 w(DEF)l(A)o(UL)l(T)p Fs(\),)g(as)h(certain)g(concepts)75
1093 y(ma)o(y)e(b)q(e)h(foreign)g(to)f(certain)h(parallel)i(en)o(vironmen)o
(ts.)k(It)13 b(can)g(tak)o(e)f(the)g(follo)o(wing)i(prede\014ned)g(v)m
(alues.)143 1199 y Fn(\017)23 b Fj(MPI)p 274 1199 V 15 w(RESOURCE)p
519 1199 V 19 w(TYPE)p 655 1199 V 17 w(DEF)l(A)o(UL)l(T)p Fs(:)12
b(A)h(single)h(resource)f(ob)s(ject)f(is)h(returned,)g(with)g(all)h(a)o(v)m
(ail-)189 1255 y(able)f(resources)g(in)h(that)f(ob)s(ject.)18
b(The)c Fj(nresources)g Fs(argumen)o(t)e(is)h(ignored,)h(and)f(ma)o(y)g(b)q
(e)g(NULL.)143 1349 y Fn(\017)23 b Fj(MPI)p 274 1349 V 15 w(RESOURCE)p
519 1349 V 19 w(TYPE)p 655 1349 V 17 w(HOST)p Fs(:)d(Eac)o(h)f(returned)h
(resource)f(corresp)q(onds)h(to)f(one)h(host.)32 b(A)189 1406
y(host)9 b(can)i(b)q(e)f(an)h(SMP)l(.)e(The)i(name)f(of)g(the)g(host)f(ma)o
(y)h(b)q(e)h(disco)o(v)o(ered)f(using)h Fj(MPI)p 1573 1406
V 16 w(RESOURCE)p 1819 1406 V 19 w(NAME)p Fs(.)189 1462 y(If)21
b(the)g(pre-allo)q(cated)h(resources)f(cannot)f(b)q(e)i(describ)q(ed)h(as)d
(a)h(host,)g(\(e.g.,)g(it)g(is)g(a)g(promise)189 1518 y(from)j(a)g(resource)h
(manager,)h(not)e(an)h(explicit)h(ph)o(ysical)g(resource\))f(this)g(is)g(the)
g(same)f(as)189 1575 y Fj(MPI)p 274 1575 V 15 w(RESOURCE)p
519 1575 V 19 w(TYPE)p 655 1575 V 17 w(DEF)l(A)o(UL)l(T)p Fs(.)143
1669 y Fn(\017)f Fj(MPI)p 274 1669 V 15 w(RESOURCE)p 519 1669
V 19 w(TYPE)p 655 1669 V 17 w(ARCH)p Fs(:)15 b(Eac)o(h)h(returned)f(resource)
h(corresp)q(onds)f(to)g(a)g(single)i(arc)o(hi-)189 1725 y(tecture.)j(An)c
(arc)o(hitecture)g(is)g(a)f(class)h(of)f(binary-compatible)i(computers.)k
(The)15 b(name)h(of)f(the)189 1782 y(arc)o(hitecture)g(ma)o(y)g(b)q(e)h
(disco)o(v)o(ered)f(using)h Fj(MPI)p 1023 1782 V 16 w(RESOURCE)p
1269 1782 V 18 w(NAME)p Fs(.)143 1875 y Fn(\017)23 b Fj(MPI)p
274 1875 V 15 w(RESOURCE)p 519 1875 V 19 w(TYPE)p 655 1875
V 17 w(PROCESSOR)p Fs(:)15 b(Eac)o(h)e(returned)h(resource)g(corresp)q(onds)g
(to)e(a)i(single)189 1932 y(pro)q(cessor.)25 b(These)18 b(ma)o(y)e(b)q(e)i
(virtual)g(pro)q(cessors.)26 b(F)l(or)16 b(instance)i(in)g(an)g(SMP)l(,)e
(the)i(op)q(erating)189 1988 y(system)c(ma)o(y)h(not)g(ha)o(v)o(e)f(con)o
(trol)h(o)o(v)o(er)g(whic)o(h)h(ph)o(ysical)g(pro)q(cessor)f(is)h(used)g(b)o
(y)f(a)g(pro)q(cess.)143 2082 y Fn(\017)23 b Fj(MPI)p 274 2082
V 15 w(RESOURCE)p 519 2082 V 19 w(TYPE)p 655 2082 V 17 w(SPECIAL)p
Fs(:)15 b(Resource)i(splitting)g(done)f(in)h(some)e(sp)q(ecial)j(w)o(a)o(y)l
(.)j(Usu-)189 2139 y(ally)16 b(this)g(will)h(b)q(e)g(sp)q(eci\014ed)g
(externally)l(,)g(b)o(y)e(the)h(user,)g(when)g(he/she)g(starts)e(the)i
(application.)189 2195 y(The)h(order)f(of)g(resources)h(can)g(b)q(e)g(coun)o
(ted)g(on)f(b)o(y)h(the)g(application.)26 b(F)l(or)16 b(instance,)h(the)g
(user)189 2252 y(ma)o(y)d(ha)o(v)o(e)g(requested)i(an)e(HP)h(no)q(de)h(with)f
(a)f(HiPPI)i(connection,)g(an)e(HP)h(no)q(de)h(with)f(a)f(FDDI)189
2308 y(connection,)i(8)e(pro)q(cessors)h(of)g(an)g(SP2,)g(etc.)166
2497 y Fg(Discussion:)36 b Ff(Suggestions)14 b(for)g(additional)f(allo)q
(cation)f(strategies)k(are)f(encouraged.)20 b(Are)15 b(there)h
Fb(c)n(om-)75 2553 y(mon)e Ff(things)g(y)o(ou)g(migh)o(t)d(w)o(an)o(t)j(to)f
(do)h(that)g(y)o(ou)f(can't)h(do)g(with)f(the)i(ab)q(o)o(v)o(e?)1967
46 y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 15 17
bop 75 -100 a Fm(1.4.)34 b(SIMPLE)16 b(INTERF)-5 b(A)o(CE)1191
b Fs(15)75 45 y Fj(Resource)16 b(Allo)q(cation)75 225 y(MPI)p
160 225 14 2 v 16 w(RESOURCE)p 406 225 V 18 w(IALLOCA)l(TE\(resource)p
836 225 V 17 w(t)o(yp)q(e,)22 b(np)o(ro)q(cs,)f(resource)p
1279 225 V 17 w(description,)h(resource,)g(request\))117 359
y Ff(IN)155 b Fj(resource)p 476 359 V 17 w(t)o(yp)q(e)335 b
Ff(See)15 b(description)g(b)q(elo)o(w)117 431 y(IN)155 b Fj(np)o(ro)q(cs)465
b Ff(The)15 b(minim)n(um)9 b(n)o(um)o(b)q(er)k(of)h(pro)q(cess)h(slots)f
(requested)117 504 y(IN)155 b Fj(resource)p 476 504 V 17 w(description)212
b Ff(String)14 b(con)o(taining)f(description)h(of)f(resources)117
576 y(OUT)108 b Fj(resource)432 b Fe(MPI)p 982 576 13 2 v 15
w(Resource)15 b Ff(allo)q(cated)117 649 y(OUT)108 b Fj(request)452
b Ff(an)14 b Fe(MPI)p 1040 649 V 14 w(Request)166 773 y Fj(resource)h
Fs(is)h(set)f(async)o(hronously)h(b)o(y)f(MPI)g(\(as)g(with)g(other)g(MPI)p
1326 773 14 2 v 17 w(I*)g(routines\).)20 b(It)c(is)f(not)g(v)m(alid)75
829 y(un)o(til)23 b(the)g(request)f(has)g(b)q(een)h(completed.)42
b(One)23 b(can)f(w)o(ait)g(for)g(the)g(request)g(to)g(complete)h(with)75
886 y Fj(MPI)p 160 886 V 16 w(W)l(AIT)p Fs(,)15 b(test)f(with)i
Fj(MPI)p 591 886 V 16 w(TEST)p Fs(,)f(etc.)166 942 y Fj(resource)p
324 942 V 17 w(t)o(yp)q(e)k Fs(is)f(a)g(general)g(category)f(of)g(resource)h
(request,)h(used)f(to)f(mak)o(e)h(it)g(easy)g(to)f(sp)q(ec-)75
999 y(ify)22 b(simple)h(requests.)40 b(The)22 b(categories)f(are)h(the)g
(same)f(as)g(for)g(the)h Fj(resource)p 1494 999 V 17 w(t)o(yp)q(e)h
Fs(argumen)o(t)e(for)75 1055 y Fj(MPI)p 160 1055 V 16 w(RESOURCE)p
406 1055 V 18 w(DISCO)o(VER)p Fs(.)16 b(In)g(this)f(con)o(text,)f(they)i
(mean:)143 1142 y Fn(\017)23 b Fj(MPI)p 274 1142 V 15 w(RESOURCE)p
519 1142 V 19 w(TYPE)p 655 1142 V 17 w(DEF)l(A)o(UL)l(T)p Fs(:)15
b(The)h(string)g(in)h Fj(resource)p 1327 1142 V 17 w(description)g
Fs(describ)q(es)h(an)d(ar-)189 1199 y(bitrary)g(set)g(of)f(resources.)20
b(String)c(ma)o(y)e(b)q(e)i(empt)o(y)l(.)143 1287 y Fn(\017)23
b Fj(MPI)p 274 1287 V 15 w(RESOURCE)p 519 1287 V 19 w(TYPE)p
655 1287 V 17 w(HOST)p Fs(:)15 b(The)h(string)f(in)h Fj(resource)p
1252 1287 V 17 w(description)g Fs(is)g(a)f(hostname.)143 1375
y Fn(\017)23 b Fj(MPI)p 274 1375 V 15 w(RESOURCE)p 519 1375
V 19 w(TYPE)p 655 1375 V 17 w(ARCH)p Fs(:)d(The)g(string)g(in)h
Fj(resource)p 1270 1375 V 16 w(description)h Fs(is)e(an)g(arc)o(hitecture.)
189 1432 y(Note)14 b(that)h(arc)o(hitecture)g(names)h(are)f(not)f(sp)q
(eci\014ed)k(b)o(y)d(MPI)g(itself.)143 1520 y Fn(\017)23 b
Fj(MPI)p 274 1520 V 15 w(RESOURCE)p 519 1520 V 19 w(TYPE)p
655 1520 V 17 w(PROCESSOR)p Fs(:)f(The)f(string)g(in)h Fj(resource)p
1414 1520 V 16 w(description)h Fs(describ)q(es)f(a)189 1577
y(single)15 b(pro)q(cessor.)k(The)13 b(recommended)i(approac)o(h)e(is)h(that)
f(the)h(name)f(should)i(b)q(e)f(the)g(name)f(of)189 1633 y(the)i(host)g(in)h
(whic)o(h)g(the)f(pro)q(cessor)g(resides.)143 1721 y Fn(\017)23
b Fj(MPI)p 274 1721 V 15 w(RESOURCE)p 519 1721 V 19 w(TYPE)p
655 1721 V 17 w(SPECIAL)p Fs(:)17 b(The)i(string)f(in)h Fj(resource)p
1320 1721 V 17 w(description)g Fs(describ)q(es)h(an)e(ar-)189
1778 y(bitrary)d(set)g(of)f(resources.)166 1947 y Fg(Discussion:)30
b Ff(Note)11 b(that)f Fe(MPI)p 690 1947 13 2 v 15 w(RESOURCE)p
919 1947 V 12 w(IALLOCA)m(TE)f Ff(do)q(es)i(not)f(tak)o(e)h(a)f(comm)o(uni)o
(cator)e(argumen)o(t)75 2004 y(and)k(is)f(called)h(in)f(a)g(single)h(pro)q
(cess.)19 b(This)11 b(means)g(that)h(an)g Fe(MPI)p 1099 2004
V 14 w(Resource)h Ff(ob)r(ject)g(has)f(a)f(single)g(o)o(wner.)18
b(T)m(rying)75 2060 y(to)d(mak)o(e)f(this)h(op)q(eration)h(collectiv)o(e)f(w)
o(ould)g(force)h(us)f(to)h(in)o(tro)q(duce)g(collectiv)o(e)f(ob)r(jects)h
(\(collectiv)o(e)g(requests)75 2117 y(and)e(collectiv)o(e)g
Fe(MPI)p 413 2117 V 14 w(Resource)h Ff(ob)r(jects\))g(and)f(pro)o(vide)g(no)f
(b)q(ene\014t.)166 2256 y Fj(MPI)p 251 2256 14 2 v 16 w(W)l(AIT)i
Fs(or)g Fj(MPI)p 533 2256 V 15 w(TEST)h Fs(can)f(b)q(e)h(used)g(to)e(c)o(hec)
o(k)i(for)e(completion.)166 2395 y Fg(Discussion:)45 b Ff(This)16
b(is)h(the)g(\014rst)g(case)h(of)e(man)o(y)f(where)i(w)o(e)g(m)o(ust)f
(address)i(the)f(question)g(of)f(what)g(is)75 2452 y(in)e(the)i(status)f(ob)r
(ject.)22 b(Do)14 b(w)o(e)h(assine)g(meaning)e(to)i Fd(status.tag)e
Ff(and)h Fd(status.source)e Ff(Do)j(w)o(e)g(replace)g(the)75
2508 y(status)g(argumen)o(t)d(with)i(a)g(\(v)o(oid)f(*\))g(and)h(do)g
(di\013eren)o(t)h(things)e(dep)q(ending)i(on)f(the)g(t)o(yp)q(e)g(of)g
(request?)166 2647 y Fs(Authen)o(tication)19 b(information,)h(if)f(required)g
(b)o(y)g(the)f(resource)h(manager,)f(can)h(b)q(e)g(supplied)i(in)75
2704 y(the)15 b Fj(resource)p 311 2704 V 17 w(description)i
Fs(string.)-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 16 18
bop 75 -100 a Fs(16)928 b Fm(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)166 45 y Fs(A)h(no)q(de)h(ma)o(y)e(ha)o(v)o(e)h(m)o(ultiple)i
(comm)o(unication)f(in)o(terfaces)f(\(Ethernet,)g(HiPPI,)g(A)l(TM\).)g(These)
75 102 y(ha)o(v)o(e)e(to)f(sp)q(eci\014ed)j(so)e(that)g(the)g(desired)h(comm)
o(unication)g(infrastructure)f(can)g(b)q(e)h(used,)g(and)f(can)g(b)q(e)75
158 y(included)k(in)e(the)f Fj(resource)p 546 158 14 2 v 17
w(description)i Fs(string.)166 214 y(When)e(m)o(ultiple)h(resources)e(are)g
(required)i(at)e(the)g(same)g(time,)h(it)f(is)h(b)q(est)g(to)f(ask)g(for)f
(them)i(with)75 271 y(a)g(single)i(request)f(-)f(for)g(e\016ciency)l(,)i(and)
f(b)q(ecause)g(the)g(user)f(ma)o(y)g(need)i(to)d(sp)q(ecify)j(global)f
(resources,)75 327 y(suc)o(h)g(as)e(gang)h(sc)o(heduling,)i(whic)o(h)f
(extend)g(b)q(ey)o(ond)f(a)g(single)i(resource)e(ob)s(ject.)166
384 y(The)g(follo)o(wing)h(routine)g(pro)o(vides)g(this)f(functionalit)o(y)l
(.)75 535 y Fj(MPI)p 160 535 V 16 w(RESOURCES)p 431 535 V 18
w(IALLOCA)l(TE\(global)p 819 535 V 16 w(resource)p 990 535
V 17 w(description,)d(a)o(rra)o(y)p 1330 535 V 15 w(of)p 1382
535 V 16 w(resource)p 1553 535 V 17 w(t)o(yp)q(es,)g(a)o(rra)o(y)p
1787 535 V 14 w(of)p 1838 535 V 16 w(np)o(ro)q(cs,)75 591 y(a)o(rra)o(y)p
173 591 V 15 w(of)p 225 591 V 16 w(resource)p 396 591 V 16
w(descriptions,)17 b(a)o(rra)o(y)p 757 591 V 15 w(of)p 809
591 V 16 w(resources,)e(request\))117 668 y Ff(IN)155 b Fj(global)p
434 668 V 16 w(resource)p 605 668 V 17 w(description)83 b Ff(string)14
b(describing)h(resources)h(common)11 b(to)j(all)e(requests)117
744 y(IN)155 b Fj(a)o(rra)o(y)p 416 744 V 15 w(of)p 468 744
V 16 w(resource)p 639 744 V 17 w(t)o(yp)q(e)172 b Ff(Arra)o(y)15
b(of)f(in)o(tegers)h(eac)o(h)g(of)f(whic)o(h)g(categorizes)i(the)f(corre-)905
800 y(sp)q(onding)i(resource)h(description)g(as)e(describ)q(ed)j(ab)q(o)o(v)o
(e)d(for)905 856 y Fe(MPI)p 982 856 13 2 v 15 w(RESOURCE)p
1211 856 V 12 w(IALLOCA)m(TE)117 932 y Ff(IN)155 b Fj(a)o(rra)o(y)p
416 932 14 2 v 15 w(of)p 468 932 V 16 w(np)o(ro)q(cs)302 b
Ff(The)18 b(minim)n(um)13 b(n)o(um)o(b)q(er)k(of)g(pro)q(cess)i(slots)f
(requested)h(for)905 988 y(eac)o(h)c(resource)h(ob)r(ject.)117
1063 y(IN)155 b Fj(a)o(rra)o(y)p 416 1063 V 15 w(of)p 468 1063
V 16 w(resource)p 639 1063 V 17 w(descriptions)43 b Ff(Strings)14
b(con)o(taining)f(description)i(of)e(resources)117 1138 y(OUT)108
b Fj(a)o(rra)o(y)p 416 1138 V 15 w(of)p 468 1138 V 16 w(resources)252
b Fe(MPI)p 982 1138 13 2 v 15 w(Resource)15 b Ff(ob)r(jects)g(allo)q(cated)
117 1213 y(OUT)108 b Fj(request)452 b Ff(an)14 b Fe(MPI)p 1040
1213 V 14 w(Request)166 1421 y Fg(Discussion:)34 b Ff(Suggestions)14
b(for)g(a)f(b)q(etter)j(name)c(are)j(encouraged.)75 1623 y
Fj(Interfacing)g(to)h(the)g(Pro)q(cess)g(Manager)75 1709 y
Fs(Once)k(an)e(application)j(has)d(obtained)i(resources)e(through)h(allo)q
(cation)g(or)g(disco)o(v)o(ery)l(,)g(it)g(ma)o(y)f(start)75
1766 y(pro)q(cesses)f(on)f(those)g(resources)g(using)h(the)f(routines)h
(presen)o(ted)g(in)g(this)f(section.)24 b(More)16 b(abstractly)l(,)75
1822 y(it)f(can)h(request)f(that)f(the)i(pro)q(cess)f(manager)g(start)f(pro)q
(cesses)h(on)g(those)g(resources.)75 1973 y Fj(MPI)p 160 1973
14 2 v 16 w(PROCESS)p 373 1973 V 18 w(CREA)l(TE\(executable,)i(a)o(rguments,)
d(n,)h(p)o(ro)q(cess)p 1214 1973 V 18 w(t)o(yp)q(e,)g(resource,)g(a)o(rra)o
(y)p 1618 1973 V 15 w(of)p 1670 1973 V 16 w(p)o(ro)q(cesses\))117
2107 y Ff(IN)155 b Fj(executable)391 b Ff(executable)15 b(\014le)f(con)o
(taining)f(program)f(to)i(b)q(e)g(run)117 2182 y(IN)155 b Fj(a)o(rguments)391
b Ff(argumen)o(ts)13 b(for)h(the)g(program)117 2257 y(IN)155
b Fj(n)564 b Ff(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)i(to)e(start)117
2332 y(IN)155 b Fj(p)o(ro)q(cess)p 457 2332 V 18 w(t)o(yp)q(e)353
b Ff(see)15 b(b)q(elo)o(w)117 2407 y(IN)155 b Fj(resource)432
b Fe(MPI)p 982 2407 13 2 v 15 w(Resource)15 b Ff(to)f(run)g(pro)q(cesses)i
(on)117 2482 y(OUT)108 b Fj(a)o(rra)o(y)p 416 2482 14 2 v 15
w(of)p 468 2482 V 16 w(p)o(ro)q(cesses)251 b Fe(MPI)p 982 2482
13 2 v 15 w(Pro)q(cess)14 b Ff(ob)r(jects)h(returned)166 2607
y Fs(This)g(is)g(a)g(blo)q(c)o(king)h(call;)g(when)f(it)g(returns)f(the)h
(pro)q(cesses)g(ha)o(v)o(e)g(b)q(een)h(started.)i(Note)d(that)f(the)75
2663 y(resources)k(ha)o(v)o(e)g(already)g(b)q(een)i(allo)q(cated.)29
b(Unless)19 b(there)g(is)f(an)g(error)g(in)h(argumen)o(ts)e(\(executable)1967
46 y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 17 19
bop 75 -100 a Fm(1.4.)34 b(SIMPLE)16 b(INTERF)-5 b(A)o(CE)1191
b Fs(17)75 45 y(do)q(es)17 b(not)g(exist,)h(for)e(example\))h
Fj(MPI)p 738 45 14 2 v 16 w(PROCESS)p 951 45 V 18 w(CREA)l(TE)h
Fs(normally)g(should)g(w)o(ork.)24 b(\(The)17 b(system)75 102
y(ma)o(y)11 b(ha)o(v)o(e)g(to)f(con)o(tact)h(the)g(resource)h(manager,)f(but)
g(the)h(resources)f(ha)o(v)o(e)g(b)q(een)h(promised)g(and)g(should)75
158 y(b)q(e)h(a)o(v)m(ailable)g(immediately\).)20 b(There)12
b(is)h(one)f(executable)h(name)f(and)g(one)g(set)f(of)h(argumen)o(ts.)18
b(T)l(o)11 b(start)75 214 y(pro)q(cesses)16 b(with)f(m)o(ultiple)i
(executables)g(or)d(di\013eren)o(t)i(argumen)o(ts,)e(call)i(this)g(t)o(wice.)
166 271 y Fj(p)o(ro)q(cess)p 305 271 V 17 w(t)o(yp)q(e)g Fs(can)g(tak)o(e)e
(one)i(of)e(the)i(follo)o(wing)g(v)m(alues:)143 365 y Fn(\017)23
b Fj(MPI)p 274 365 V 15 w(PROCESS)p 486 365 V 18 w(TYPE)p 621
365 V 17 w(MPI)p 720 365 V 16 w(CHILD)p Fs(:)17 b(The)h(new)g(pro)q(cesses)h
(are)e(MPI)h(pro)q(cesses)g(whic)o(h)h(will)189 421 y(call)d
Fj(MPI)p 357 421 V 16 w(Comm)p 499 421 V 14 w(pa)o(rent)p Fs(.)143
515 y Fn(\017)23 b Fj(MPI)p 274 515 V 15 w(PROCESS)p 486 515
V 18 w(TYPE)p 621 515 V 17 w(MPI)p 720 515 V 16 w(ORPHAN)p
Fs(:)12 b(The)f(new)h(pro)q(cesses)f(are)g(MPI)g(pro)q(cesses)g(whic)o(h)h
(will)189 571 y(not)i(call)j Fj(MPI)p 438 571 V 16 w(Comm)p
580 571 V 14 w(pa)o(rent)p Fs(.)143 665 y Fn(\017)23 b Fj(MPI)p
274 665 V 15 w(PROCESS)p 486 665 V 18 w(TYPE)p 621 665 V 17
w(NONMPI)p Fs(:)15 b(The)h(new)f(pro)q(cesses)h(are)f(not)f(MPI)i(pro)q
(cesses.)166 835 y Fg(Discussion:)53 b Ff(It)19 b(is)g(not)f(completely)g
(clear)h(whether)h(w)o(e)f(need)h(the)f Fe(p)o(ro)q(cess)p
1480 835 13 2 v 16 w(t)o(yp)q(e)h Ff(argumen)o(t.)32 b(The)75
885 y(argumen)o(ts)13 b(in)h(fa)o(v)o(or)e(are:)145 960 y Fc(\017)23
b Ff(W)m(e)11 b(need)j(to)e(distinguish)f(b)q(et)o(w)o(een)j(orphans)f(and)f
(c)o(hildren)g(to)g(allo)o(w)f Fe(MPI)p 1393 960 V 14 w(COMM)p
1537 960 V 15 w(P)m(ARENT)g Ff(to)h(either)189 1009 y(blo)q(c)o(k)h(or)h
(return)h Fe(MPI)p 553 1009 V 14 w(COMM)p 697 1009 V 15 w(NULL)p
Ff(.)145 1084 y Fc(\017)23 b Ff(W)m(e)9 b(need)h(to)f(distinguish)g(b)q(et)o
(w)o(een)i(MPI)e(and)g(non-MPI)h(b)q(ecause)h(MPI)e(pro)q(cesses)j(ma)o(y)c
(need)i(command-)189 1134 y(line)j(argumen)o(ts.)75 1209 y(The)h(argumen)o
(ts)f(against)h(are:)145 1283 y Fc(\017)23 b Ff(Children)9
b(should)g(only)f(call)h Fe(MPI)p 717 1283 V 14 w(COMM)p 861
1283 V 15 w(P)m(ARENT)f Ff(if)g(they)i(kno)o(w)f(the)h(paren)o(t)g(will)e
(call)g Fe(MPI)p 1684 1283 V 14 w(PROCESS)p 1881 1283 V 14
w(A)m(TT)m(A)o(CH)p Ff(.)145 1358 y Fc(\017)23 b Ff(There)17
b(are)g(other)g(w)o(a)o(ys)f(to)g(pass)h(information)c(to)j(MPI)h(pro)q
(cesses,)i(suc)o(h)e(as)f(en)o(vironmen)o(t)f(v)n(ariables,)189
1408 y(whic)o(h)e(can)i(b)q(e)f(ignored)g(if)f(a)g(pro)q(cess)j(do)q(esn't)e
(need)h(them.)166 1572 y Fs(All)i(tasks)e(initiated)j(with)e(one)g(call)h(to)
f Fj(MPI)p 954 1572 14 2 v 15 w(PROCESS)p 1166 1572 V 18 w(CREA)l(TE)h
Fs(ha)o(v)o(e)f(the)g(same)g(executable)75 1628 y(and)10 b(same)g(argumen)o
(ts,)g(and)g(execute)h(on)f(the)h(same)e(resource.)19 b(One)11
b(can)f(use)g(m)o(ultiple)i Fj(MPI)p 1672 1628 V 16 w(PROCESS)p
1885 1628 V 18 w(CREA)l(TE)75 1685 y Fs(calls)18 b(to)f(spa)o(wn)f(m)o
(ultiple)j(executables,)g(to)d(pass)h(di\013eren)o(t)g(argumen)o(t)f(lists)i
(to)f(eac)o(h)g(executatable,)75 1741 y(or)c(to)h(run)g(di\013eren)o(t)g(pro)
q(cesses)h(on)f(di\013eren)o(t)g(resources.)19 b(It)14 b(will)i(generally)f
(b)q(e)g(more)f(e\016cien)o(t)g(to)g(use)75 1798 y(the)h(non-blo)q(c)o(king)i
(v)o(ersion)f(\(b)q(elo)o(w\))f(in)h(this)f(case.)166 1930
y Fg(Discussion:)50 b Ff(Note)19 b(that)f(a)g(single)f(resource)j(migh)o(t)c
(b)q(e)j(\\a)f(P)o(aragon",)f(so)h(it)g(mak)o(es)f(sense)j(to)e(run)75
1980 y(m)o(ultiple)12 b(pro)q(cesses)18 b(on)c(a)h(single)f(resource.)23
b(If)14 b(w)o(e)h(allo)o(w)f(construction)h(of)g(a)f(\\virtual)g(mac)o(hine")
f(as)i(a)f(single)75 2030 y(resource,)f(then)d(it)g(again)g(mak)o(es)f(sense)
j(and)e(is)g(con)o(v)o(enien)o(t)h(to)f(use)h(a)f(single)g(call)f(to)h(start)
h(m)o(ultiple)d(pro)q(cesses)13 b(on)75 2080 y(a)g(single)h(resource.)20
b(On)14 b(the)g(other)h(hand,)e(one)h(migh)o(t)d(conceiv)o(e)k(of)e
(situation)g(where)i(it)e(w)o(ould)g(b)q(e)i(con)o(v)o(enien)o(t)75
2130 y(to)f(replace)h(the)f Fe(resource)i Ff(argumen)o(t)c(ab)q(o)o(v)o(e)i
(with)g(an)f(arra)o(y)h(of)f(resources.)166 2186 y(Is)18 b(it)f(su\016cien)o
(t)h(to)f(call)f(the)i(non-blo)q(c)o(king)f(v)o(ersion)g(m)o(ultiple)e(times)
i(or)g(do)g(w)o(e)h(need)g(a)f(single)g(call)g(to)75 2242 y(spa)o(wn)d(man)o
(y)e(things)i(at)f(once?)166 2382 y Fs(The)i(non)o(blo)q(c)o(king)i(v)o
(ersion)e(returns)g(a)g(request)g(that)g(can)g(b)q(e)h(tested)f(and)h(w)o
(aited)f(on.)-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215
y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498
y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40
780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40
1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796
y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304
y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 18 20
bop 75 -100 a Fs(18)928 b Fm(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fj(MPI)p 160 45 14 2 v 16 w(PROCESS)p
373 45 V 18 w(ICREA)l(TE\(executable,)e(a)o(rguments,)d(n,)i(p)o(ro)q(cess)p
1216 45 V 17 w(t)o(yp)q(e,)g(resource,)f(a)o(rra)o(y)p 1612
45 V 14 w(of)p 1663 45 V 16 w(p)o(ro)q(cesses,request\))117
179 y Ff(IN)155 b Fj(executable)391 b Ff(executable)15 b(\014le)f(con)o
(taining)f(program)f(to)i(b)q(e)g(run)117 254 y(IN)155 b Fj(a)o(rguments)391
b Ff(argumen)o(ts)13 b(for)h(the)g(program)117 329 y(IN)155
b Fj(n)564 b Ff(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)117
404 y(IN)155 b Fj(p)o(ro)q(cess)p 457 404 V 18 w(t)o(yp)q(e)353
b Ff(as)14 b(describ)q(ed)i(ab)q(o)o(v)o(e)117 479 y(IN)155
b Fj(resource)432 b Fe(MPI)p 982 479 13 2 v 15 w(Resource)p
Ff(s)15 b(to)f(run)g(pro)q(cesses)j(on)117 554 y(OUT)108 b
Fj(a)o(rra)o(y)p 416 554 14 2 v 15 w(of)p 468 554 V 16 w(p)o(ro)q(cesses)251
b Fe(MPI)p 982 554 13 2 v 15 w(Pro)q(cess)14 b Ff(ob)r(jects)h(returned)117
630 y(OUT)108 b Fj(request)452 b Fe(MPI)p 982 630 V 15 w(Request)15
b Ff(ob)r(ject)g(returned,)g(to)e(w)o(ait)h(on)166 837 y Fg(Discussion:)32
b Ff(A)12 b(more)g(detailed)g(v)o(ersion)g(w)o(ould)g(return)h(an)f(arra)o(y)
g(of)g(requests,)i(so)e(that)g(startup)h(could)75 893 y(b)q(e)j(w)o(aited)f
(on)g(one)g(pro)q(cess)i(at)e(a)g(time.)20 b(This)15 b(functionalit)o(y)f
(could)h(b)q(e)h(pro)o(vided)f(with)g(the)g(ab)q(o)o(v)o(e)g(prop)q(osal)75
950 y(b)o(y)f(using)f Fe(MPI)p 318 950 V 15 w(PROCESS)p 516
950 V 13 w(ICREA)m(TE)f Ff(on)h(one)h(pro)q(cess)i(at)e(a)f(time.)166
1171 y Fg(Discussion:)22 b Ff(W)m(e)16 b(ma)o(y)g(w)o(an)o(t)g(to)h(consider)
h(routines)g(that)f(build)f(a)h(resource,)i(corresp)q(onding)f(to)f(the)75
1228 y(w)o(a)o(y)d(PVM)h(users)h(build)d(a)i(virtual)e(mac)o(hine.)19
b(In)c(this)f(w)o(a)o(y)g(m)o(ultiple)e(resources)17 b(can)e(b)q(e)g(com)o
(bined)e(in)o(to)h(one,)75 1284 y(handy)i(for)f(constructing)i(a)f(sp)q
(eci\014c)h(set)g(of)e(w)o(orkstations,)h(for)g(example.)22
b(This)16 b(w)o(ould)f(mak)o(e)g(it)g(ev)o(en)i(more)75 1341
y(unnecessary)f(to)e(mak)o(e)e(m)o(ultiple)g Fe(MPI)p 704 1341
V 14 w(PROCESS)p 901 1341 V 13 w(CREA)m(TE)h Ff(calls.)75 1544
y Fj(Communicating)i(with)g(Dynamically)f(Created)i(MPI)f(Pro)q(cesses)75
1629 y Fs(Once)g(the)f(pro)q(cesses)g(ha)o(v)o(e)f(b)q(een)i(started,)e(w)o
(e)h(ma)o(y)f(or)g(ma)o(y)g(not)h(wish)g(to)f(establish)i(comm)o(unication)75
1686 y(with)k(them.)31 b(Note)19 b(that)f(the)h Fj(MPI)p 710
1686 14 2 v 16 w(RESOURCE)p 956 1686 V 18 w(IALLOCA)l(TE)p
Fs(/)p Fj(MPI)p 1318 1686 V 16 w(PROCESS)p 1531 1686 V 18 w(CREA)l(TE)h
Fs(mec)o(ha-)75 1742 y(nism)e(can)f(b)q(e)h(used)g(b)o(y)f(a)g(pro)q(cess)g
(manager)g(written)g(in)h(MPI)f(to)g(manage)f(non-MPI)i(pro)q(cesses)f(as)75
1799 y(w)o(ell)g(as)e(MPI)g(pro)q(cesses.)22 b(If)16 b(the)g(application)h
(program)d(is)j(creating)e(new)h(pro)q(cesses,)g(ho)o(w)o(ev)o(er,)f(it)g(is)
75 1855 y(lik)o(ely)g(that)d(it)i(will)h(w)o(an)o(t)d(to)g(comm)o(unicate)i
(with)f(them,)g(via)h(an)f(in)o(ter-comm)o(unicator.)19 b(The)14
b(compli-)75 1912 y(cation)f(is)h(that)f(creation)g(of)g(this)h(in)o
(ter-comm)o(unicator)f(is)h(a)f(collectiv)o(e)i(op)q(eration)e(o)o(v)o(er)f
(all)j(pro)q(cesses)75 1968 y(in)o(v)o(olv)o(ed,)g(y)o(et)f(w)o(e)h(don't)f
(w)o(an)o(t)f(the)i(spa)o(wning)g(pro)q(cess\(es\))f(to)g(blo)q(c)o(k)i(if)f
(the)f(spa)o(wned)h(pro)q(cesses)g(are)75 2025 y(not)k(ev)o(en)h(going)g(to)e
(call)j Fj(MPI)p 626 2025 V 16 w(INIT)p Fs(.)d(Our)i(solution)h(is)f(to)f
(create)g(this)h(comm)o(unicator)f(through)g(a)75 2081 y(collectiv)o(e)e
(function)f(separate)f(from)f Fj(MPI)p 822 2081 V 16 w(PROCESS)p
1035 2081 V 18 w(CREA)l(TE)p Fs(.)1967 46 y Fh(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 19 21
bop 75 -100 a Fm(1.4.)34 b(SIMPLE)16 b(INTERF)-5 b(A)o(CE)1191
b Fs(19)75 45 y Fj(MPI)p 160 45 14 2 v 16 w(PROCESS)p 373 45
V 18 w(A)l(TT)l(A)o(CH\(comm,)13 b(ro)q(ot,)i(n,)g(a)o(rra)o(y)p
979 45 V 14 w(of)p 1030 45 V 16 w(p)o(ro)q(cesses,)i(intercomm\))117
122 y Ff(IN)155 b Fj(comm)470 b Ff(comm)o(unicator)11 b(o)o(v)o(er)j(whic)o
(h)g(this)g(op)q(eration)g(is)f(collectiv)o(e)117 197 y(IN)155
b Fj(ro)q(ot)508 b Ff(pro)q(cess)16 b(where)f Fe(n)f Ff(and)g
Fe(a)o(rra)o(y)p 1373 197 13 2 v 15 w(of)p 1422 197 V 14 w(p)o(ro)q(cesses)i
Ff(are)e(v)n(alid)117 273 y(IN)155 b Fj(n)564 b Ff(n)o(um)o(b)q(er)13
b(of)h(pro)q(cesses)i(in)e(follo)o(wing)d(arra)o(y)117 348
y(IN)155 b Fj(a)o(rra)o(y)p 416 348 14 2 v 15 w(of)p 468 348
V 16 w(p)o(ro)q(cesses)251 b Ff(the)15 b(spa)o(wned)f(pro)q(cesses)j(to)c(b)q
(e)i(connected)h(to)117 423 y(OUT)108 b Fj(intercomm)384 b
Ff(in)o(tercomm)o(unicator)7 b(in)i(whic)o(h)g(spa)o(wned)h(pro)q(cesses)i
(are)e(the)905 479 y(remote)k(group)166 604 y Fj(MPI)p 251
604 V 16 w(PROCESS)p 464 604 V 18 w(A)l(TT)l(A)o(CH)j Fs(is)g(collectiv)o(e)h
(among)d(the)i(pro)q(cesses)f(in)h Fj(comm)e Fs(and)h(the)h(pro)q(cesses)75
660 y(b)q(eing)11 b(\\attac)o(hed".)17 b(In)11 b(the)f(case)h(of)e(a)h(paren)
o(t)g(comm)o(unicating)h(with)f(its)h(c)o(hildren,)h Fj(MPI)p
1608 660 V 16 w(PROCESS)p 1821 660 V 18 w(A)l(TT)l(A)o(CH)75
717 y Fs(is)20 b(collectiv)o(e)h(with)e(with)g(the)h(routine)f
Fj(MPI)p 868 717 V 16 w(COMM)p 1026 717 V 16 w(P)l(ARENT)i
Fs(in)f(the)f(c)o(hildren.)33 b(More)19 b(generally)75 773
y(\(see)g(the)g(clien)o(t/serv)o(er)h(section\))f Fj(MPI)p
776 773 V 16 w(PROCESS)p 989 773 V 18 w(A)l(TT)l(A)o(CH)h Fs(is)g(collectiv)o
(e)h(with)e(a)g(corresp)q(onding)75 830 y Fj(MPI)p 160 830
V 16 w(PROCESS)p 373 830 V 18 w(A)l(TT)l(A)o(CH)d Fs(in)g(the)f(pro)q(cesses)
h(b)q(eing)g(attac)o(hed.)166 886 y Fj(MPI)p 251 886 V 16 w(INIT)10
b Fs(creates)i(an)f Fj(MPI)p 656 886 V 16 w(COMM)p 814 886
V 16 w(W)o(ORLD)g Fs(con)o(taining)i(all)f(one's)f(sibling)i(pro)q(cesses,)g
(de\014ned)75 942 y(as)i(all)h(the)f(other)g(pro)q(cesses)h(spa)o(wned)f(in)h
(the)f(same)g Fj(MPI)p 1101 942 V 16 w(PROCESS)p 1314 942 V
18 w(CREA)l(TE)h Fs(op)q(eration.)166 1082 y Fg(Discussion:)45
b Ff(Note)17 b(that)g Fe(MPI)p 718 1082 13 2 v 14 w(COMM)p
862 1082 V 15 w(W)o(ORLD)f Ff(ma)o(y)f(not)h(b)q(e)i(as)e(big)g(as)h(w)o(e)g
(w)o(an)o(t)f(it)g(to)h(b)q(e)g(if,)f(for)75 1138 y(some)d(reason,)h(w)o(e)g
(ha)o(v)o(e)g(to)g(use)g(m)o(ultiple)e Fe(MPI)p 839 1138 V
14 w(PROCESS)p 1036 1138 V 13 w(CREA)m(TE)h Ff(calls)g(for)h(related)g(pro)q
(cesses.)166 1277 y Fs(The)k(\\other)f(side")h(of)g Fj(intercomm)e
Fs(is)i Fj(MPI)p 929 1277 14 2 v 16 w(COMM)p 1087 1277 V 16
w(P)l(ARENT)h Fs(in)g(the)f(c)o(hildren.)29 b(In)18 b(MPI)g(pro-)75
1334 y(cesses)i(whic)o(h)g(w)o(ere)f(not)g(created)g(b)o(y)h
Fj(MPI)p 853 1334 V 15 w(PROCESS)p 1065 1334 V 18 w(CREA)l(TE)p
Fs(,)g Fj(MPI)p 1367 1334 V 16 w(COMM)p 1525 1334 V 17 w(P)l(ARENT)g
Fs(returns)75 1390 y Fj(MPI)p 160 1390 V 16 w(COMM)p 318 1390
V 16 w(NULL)p Fs(.)75 1541 y Fj(MPI)p 160 1541 V 16 w(COMM)p
318 1541 V 16 w(P)l(ARENT\(intercomm\))117 1618 y Ff(OUT)108
b Fj(intercomm)384 b Ff(in)o(tercomm)o(unicator)8 b(in)h(whic)o(h)h(the)h(lo)
q(cal)e(group)h(consists)i(of)905 1675 y(one's)f(siblings)f(\(MPI)p
1250 1675 13 2 v 15 w(COMM)p 1403 1675 V 15 w(W)o(ORLD\))g(and)g(the)h
(remote)905 1731 y(group)e(consists)i(of)d(the)i(pro)q(cess)h(that)f(did)e
(the)i Fe(MPI)p 1712 1731 V 15 w(PROCESS)p 1910 1731 V 13 w(A)m(TT)m(A)o(CH)
166 1938 y Fg(Discussion:)33 b Ff(The)13 b(goal)e(is)i(to)f(establish)h(some)
f(metho)q(d)g(of)g(comm)o(unicating)d(with)j(the)i(new)f(pro)q(cesses.)75
1995 y(The)g(alternativ)o(es)g(are)g(to)f(create)i(an)e(in)o(tercomm)o
(unicator,)e(to)i(create)i(a)f(con)o(taining)e(comm)o(unicator,)f(or)i(to)g
(re-)75 2051 y(size)g(an)e(existing)h(comm)o(unicator.)j(Resizing)d(an)g
(existing)f(comm)o(unicator)e(seems)k(a)e(bad)h(idea.)17 b(Giv)o(en)10
b(an)h(in)o(ter-)75 2108 y(comm)o(unicator,)f(it)i(is)h(easy)g(to)g(create)i
(a)d(con)o(taining)g(comm)o(unicator)e(b)o(y)j(using)f Fe(MPI)p
1445 2108 V 15 w(INTERCOMM)p 1711 2108 V 14 w(MERGE)p Ff(.)75
2164 y(Therefore)j(w)o(e)f(c)o(ho)q(ose)h(to)f(create)h(an)f(in)o(tercomm)o
(unicator.)166 2303 y Fs(The)c Fj(MPI)p 339 2303 14 2 v 16
w(COMM)p 497 2303 V 17 w(P)l(ARENT)p Fs(/)p Fj(MPI)p 793 2303
V 16 w(PROCESS)p 1006 2303 V 18 w(A)l(TT)l(A)o(CH)h Fs(scenario)g(allo)o(ws)f
(one)g(to)g(manage)f(spa)o(wned)75 2360 y(pro)q(cesses)18 b(that)e(comm)o
(unicate)i(with)g(their)f(paren)o(ts)g(\(b)o(y)g(calling)i
Fj(MPI)p 1346 2360 V 16 w(COMM)p 1504 2360 V 16 w(P)l(ARENT)p
Fs(\),)f(as)f(w)o(ell)75 2416 y(as)22 b(spa)o(wned)g(MPI)g(pro)q(cesses)g
(that)f(nev)o(er)i(call)g Fj(MPI)p 1051 2416 V 16 w(COMM)p
1209 2416 V 16 w(P)l(ARENT)g Fs(or)f(non-MPI)g(pro)q(cesses.)75
2473 y(The)e(last)f(t)o(w)o(o)f(t)o(yp)q(es)i(cannot)f(b)q(e)i(comm)o
(unicated)f(with,)g(although)g(they)g(can)f(b)q(e)i(signalled)g(using)75
2529 y Fj(MPI)p 160 2529 V 16 w(PROCESS)p 373 2529 V 18 w(SIGNAL)p
Fs(.)-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 20 22
bop 75 -100 a Fs(20)928 b Fm(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)166 45 y Fg(Discussion:)44 b Ff(A)o(t)16 b(this)h(p)q(oin)o
(t,)f Fe(MPI)p 790 45 13 2 v 14 w(PROCESS)p 987 45 V 13 w(A)m(TT)m(A)o(CH)f
Ff(do)q(es)i(not)g(lo)q(ok)e(to)q(o)h(useful.)26 b(The)16 b(curren)o(t)75
102 y(v)o(ersion)11 b(of)f Fe(MPI)p 334 102 V 14 w(PROCESS)p
531 102 V 14 w(CREA)m(TE)f Ff(already)h(sp)q(eci\014es)j(whether)f(w)o(e)f
(are)g(spa)o(wning)f(an)g(MPI)h(pro)q(cess)i(or)e(not,)75 158
y(and)g(whether)i(w)o(e)f(will)e(comm)o(unicate)f(with)j(it.)k(I)c(b)q(eliev)
o(e)g Fe(MPI)p 1083 158 V 14 w(PROCESS)p 1280 158 V 13 w(A)m(TT)m(A)o(CH)f
Ff(will)f(sho)o(w)h(its)h(v)o(ersatilit)o(y)75 214 y(in)h(clien)o(t/serv)o
(er)j(connection)e(\(and)g(p)q(ossibly)g(later)g(on)f(for)h(fault)f
(tolerance\).)19 b(-)13 b(w)o(cs)75 419 y Fl(1.4.2)49 b(Clients)16
b(and)h(Servers)75 505 y Fs(In)22 b(a)e(previous)i(section)g(w)o(e)f(describ)
q(ed)i(simpli\014ed,)i(blo)q(c)o(king)d(calls)g(for)f(a)f(clien)o(t)j(and)e
(serv)o(er.)37 b(In)75 561 y(general,)15 b(just)f(as)g(MPI)g(needs)i(non-blo)
q(c)o(king)g(message-passing)e(op)q(erations,)h(w)o(e)f(need)h(non-blo)q(c)o
(king)75 618 y(connection)h(op)q(erations.)166 674 y(The)g(new)g(functions)g
(needed)h(for)e(clien)o(t-serv)o(er)i(applications)g(b)q(egin)g(with)f
(routines)g(needed)h(so)75 730 y(that)11 b(the)i(clien)o(ts)g(can)g(\014nd)f
(the)h(serv)o(er.)18 b(The)13 b(\014rst)e(one)i(is)g(called)g(b)o(y)f(the)h
(serv)o(er)f(in)h(order)f(to)f(announce)75 787 y(that)j(it)i(is)f(ready)g(to)
g(accept)g(connections.)21 b(It)15 b(pro)o(vides)g(an)g(arra)o(y)f(of)h
(requests)g(that)f(it)h(can)g(test)g(and)75 843 y(w)o(ait)j(on)g(to)f(tell)i
(whether)f(a)g(clien)o(t)h(wishes)g(to)f(connect.)28 b(W)l(e)19
b(assume)e(here)i(that)e(b)q(oth)h(clien)o(t)i(and)75 900 y(serv)o(er)h(are)g
(MPI)g(programs,)g(whose)g(pro)q(cesses)h(are)e(already)i(in)g(in)o(ternal)g
(comm)o(unication)g(via)f(a)75 956 y(comm)o(unicator.)166 1095
y Fg(Discussion:)33 b Ff(In)12 b(the)h(follo)o(wing,)d(I)j(ha)o(v)o(e)f(tak)o
(en)h(the)g(lib)q(ert)o(y)f(of)g(replacing)h(the)g Fe(MPI)p
1544 1095 V 14 w(Connection)h Ff(ob)r(ject)75 1152 y(with)k(an)h
Fe(MPI)p 314 1152 V 14 w(Pro)q(cess)g Ff(argumen)o(t.)32 b(I)19
b(ha)o(v)o(en't)f(heard)i(an)o(y)e(ob)r(jections,)i(but)f(of)f(course)i(it's)
f(dangerous)g(to)75 1208 y(remo)o(v)o(e)13 b(something)g(y)o(ou)g(don't)g
(understand)i(-)f(w)o(cs)166 1347 y Fs(The)21 b(follo)o(wing)g(non)o(blo)q(c)
o(king)g(functions)g(are)g(called)g(in)h(a)e(single)h(pro)q(cess.)36
b(They)21 b(return)f(an)75 1404 y Fj(MPI)p 160 1404 14 2 v
16 w(Pro)q(cess)c Fs(ob)s(ject)e(whic)o(h)i(can)g(b)q(e)g(used)f(to)g
(establish)h(comm)o(unication.)166 1460 y(The)f(\014rst)g(routine)h(is)g
(called)g(b)o(y)f(the)h(serv)o(er)f(to)f(get)h(accept)g(a)g(connection)h
(from)f(a)g(clien)o(t.)75 1611 y Fj(MPI)p 160 1611 V 16 w(IA)o(CCEPT\(name,)f
(p)o(ro)q(cesses,)i(requests\))117 1689 y Ff(IN)155 b Fj(name)485
b Ff(w)o(ell-kno)o(wn)9 b(name)g(b)o(y)g(whic)o(h)h(the)h(serv)o(er)g(can)f
(b)q(e)h(con)o(tacted)905 1745 y(\(string\))117 1820 y(OUT)108
b Fj(p)o(ro)q(cess)451 b Ff(arra)o(y)19 b(of)f Fe(MPI)p 1148
1820 13 2 v 15 w(Pro)q(cess)h Ff(ob)r(ject)h(represen)o(ting)g(connecting)905
1877 y(clien)o(ts)117 1952 y(OUT)108 b Fj(requests)435 b Ff(one)12
b(of)g(these)h(requests)h(is)d(satis\014ed)i(when)f(a)g(clien)o(t)g(success-)
905 2008 y(fully)h(establishes)i(con)o(tact)166 2215 y Fg(Discussion:)g
Ff(The)e(original)e(syn)o(tax)i(included)f(an)h(arra)o(y)f(of)h
Fe(MPI)p 1232 2215 V 14 w(Connection)h Ff(ob)r(jects.)19 b(I)12
b(didn't)g(under-)75 2272 y(stand)e(at)f(\014rst)h(wh)o(y)f(an)g(arra)o(y)g
(w)o(as)g(required)h(\(esp.)18 b(when)10 b(compared)e(to)h(the)h(syn)o(tax)f
(for)g Fe(MPI)p 1552 2272 V 15 w(REMOTE)p 1739 2272 V 14 w(A)m(TT)m(A)o(CH)p
Ff(\),)75 2328 y(but)15 b(left)g(it)g(in)g(with)g(the)h(follo)o(wing)c
(rationalization:)19 b(One)d(can)f(imagine)e(ha)o(ving)h(only)g(a)h(single)g
(pro)q(cess)i(and)75 2385 y(request)d(argumen)o(t)d(\(rather)j(than)e(arra)o
(ys\).)18 b(After)13 b(a)f(request)i(w)o(ere)f(satis\014ed,)g(ho)o(w)o(ev)o
(er,)f(there)i(w)o(ould)e(b)q(e)h(none)75 2441 y(p)q(ending,)g(and)g(sim)o
(ultaneous)e(connection)j(requests)h(w)o(ould)d(fail.)k(This)d(allo)o(ws)f(a)
h(serv)o(er)h(to)f(k)o(eep)h(a)e(n)o(um)o(b)q(er)h(of)75 2498
y(\\p)q(orts")h(op)q(en)g(at)g(all)f(times.)k(-)d(w)o(cs)166
2637 y Fs(The)h(next)h(routine)f(is)h(called)h(b)o(y)e(the)g(clien)o(t)i(in)f
(order)f(to)f(mak)o(e)h(con)o(tact)f(with)i(the)f(serv)o(er.)1967
46 y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 21 23
bop 75 -100 a Fm(1.4.)34 b(SIMPLE)16 b(INTERF)-5 b(A)o(CE)1191
b Fs(21)75 45 y Fj(MPI)p 160 45 14 2 v 16 w(ICONT)l(A)o(CT\(name,)14
b(p)o(ro)q(cess,)i(request\))117 122 y Ff(IN)155 b Fj(name)485
b Ff(w)o(ell-kno)o(wn)9 b(name)g(b)o(y)g(whic)o(h)h(the)h(serv)o(er)g(can)f
(b)q(e)h(con)o(tacted)905 179 y(\(string\))117 253 y(OUT)108
b Fj(p)o(ro)q(cess)451 b Fe(MPI)p 982 253 13 2 v 15 w(Pro)q(cess)14
b Ff(represen)o(ting)h(the)g(serv)o(er)117 327 y(OUT)108 b
Fj(request)452 b Ff(request)13 b(that)f(is)f(satis\014ed)h(when)g(a)f(serv)o
(er)i(accepts)g(the)f(con-)905 384 y(nection)166 584 y Fg(Discussion:)31
b Ff(Building)10 b(a)h(certain)h(lev)o(el)e(of)h(securit)o(y)h(in)o(to)e(the)
i(clien)o(t-serv)o(er)g(connection)g(pro)q(cess)h(could)75
634 y(b)q(e)i(done)g(in)f(the)h(follo)o(wing)d(w)o(a)o(y)m(.)19
b(An)14 b(extra)h(argumen)o(t)f(to)g Fe(MPI)p 1119 634 V 14
w(IA)o(CCEPT)e Ff(w)o(ould)i(consist)h(of)f(the)h(name)e(of)h(a)75
684 y(function)g(to)h(b)q(e)g(called)g(to)f(pro)o(vide)h(v)n(alidation)d(for)
i(the)i(clien)o(t)e(that)h(is)g(attempting)e(to)i(connect.)21
b(The)15 b(clien)o(t,)75 734 y(in)d(an)h(extra)h(argumen)o(t)d(on)i(the)h
(call)e(to)h Fe(MPI)p 800 734 V 14 w(ICONT)m(A)o(CT)p Ff(,)d(w)o(ould)j(pro)o
(vide)f(a)h(k)o(ey)g(that)g(w)o(as)g(v)n(alidated)f(b)o(y)g(the)75
784 y(routine)j(passed)h(to)e Fe(MPI)p 480 784 V 15 w(IA)o(CCEPT)p
Ff(.)d(If)k(the)g(k)o(ey)g(w)o(as)f(not)h(v)n(alidated,)e(the)j(request)g(w)o
(ould)e(ha)o(v)o(e)g(no)h(e\013ect)h(on)75 833 y(the)e(requests)i(supplied)e
(to)g Fe(MPI)p 599 833 V 14 w(IA)o(CCEPT)p Ff(.)166 883 y(Note)d(that)g(pro)o
(viding)e(a)i Fe(MPI)p 640 883 V 14 w(Pro)q(cess)g Ff(ob)r(ject)h(to)e(the)i
(clien)o(t)f(is)f(not)h(a)f(securit)o(y)i(problem)e(in)g(itself)g(b)q(ecause)
75 933 y(a)i(pro)q(cess)j(ob)r(ject)e(itself)f(do)q(es)h(not)g(confer)g(the)g
(authorit)o(y)f(to)g(send)i(signals)d(-)i(only)e(the)i(mec)o(hanism.)j(If)c
(a)g(clien)o(t)75 983 y(do)q(es)j(not)e(ha)o(v)o(e)h(the)h(correct)g
(priviliges,)e(it)g(has)h(no)g(con)o(trol)f(o)o(v)o(er)h(the)h(serv)o(er.)166
1122 y Fs(It)j(is)g(useful)g(if)g(it)g(is)g(not)f(required)i(that)e(the)h
Fj(name)f Fs(argumen)o(t)g(to)g(the)g(ab)q(o)o(v)o(e)g(calls)i(b)q(e)f(kno)o
(wn)75 1178 y(un)o(til)e(execution)g(time.)k(The)c(follo)o(wing)f(routine)h
(pro)o(vides)f(a)g(w)o(a)o(y)f(for)g(the)h(application)i(to)d(request)h(a)75
1235 y Fj(name)p Fs(,)f(but)i(b)q(e)g(giv)o(en)f(a)g(di\013eren)o(t)h(one)f
(if)h(the)f(system)g(prefers)g(it)g(that)g(w)o(a)o(y)l(.)75
1386 y Fj(MPI)p 160 1386 14 2 v 16 w(GET)p 264 1386 V 17 w(SERVER)p
448 1386 V 17 w(NAME\(requested)p 790 1386 V 19 w(name,)g(given)p
1037 1386 V 16 w(name\))117 1463 y Ff(IN)155 b Fj(requested)p
499 1463 V 19 w(name)288 b Ff(name)13 b(that)h(the)g(serv)o(er)i(w)o(ould)d
(lik)o(e)g(to)h(b)q(e)g(kno)o(wn)g(b)o(y)117 1537 y(OUT)108
b Fj(given)p 419 1537 V 17 w(name)370 b Ff(name)13 b(supplied)h(b)o(y)g(the)g
(system)166 1745 y Fg(Discussion:)33 b Ff(I'm)11 b(not)i(sure)g(I)g
(understand)h(the)g(p)q(oin)o(t)e(of)g(this)h(function.)18
b(If)12 b(the)i(system)e(can)i(translate)75 1801 y(b)q(et)o(w)o(een)22
b(names)d(at)h(run)h(time,)f(wh)o(y)g(not)g(just)g(alw)o(a)o(ys)g(use)h(the)g
(\\w)o(ell-kno)o(wn")d(name?)36 b(I'm)18 b(not)j(sure)g(I)75
1857 y(understand)14 b(the)f(di\013erence)i(b)q(et)o(w)o(een)f(the)f
(requested)h(name)e(and)g(the)i(giv)o(en)e(name)f(in)h(the)h(\014rst)h
(place.)k(-)12 b(w)o(cs)166 1997 y Fs(In)23 b(order)f(for)f(comm)o(unication)
i(to)e(tak)o(e)h(place,)i(an)e(in)o(ter-comm)o(unicator)h(m)o(ust)e(b)q(e)i
(created)75 2053 y(connecting)17 b(the)g(clien)o(t)h(and)e(serv)o(er.)23
b(This)17 b(is)g(done)g(using)g Fj(MPI)p 1216 2053 V 16 w(PROCESS)p
1429 2053 V 18 w(A)l(TT)l(A)o(CH)g Fs(describ)q(ed)h(in)75
2109 y(the)f(previous)g(section.)24 b Fj(MPI)p 595 2109 V 16
w(PROCESS)p 808 2109 V 18 w(A)l(TT)l(A)o(CH)17 b Fs(is)g(collectiv)o(e)i(at)c
(b)q(oth)i(ends)g(of)f(the)h(connection)75 2166 y(and)f(allo)o(ws)f(clien)o
(t)i(and)e(serv)o(er)g(to)g(form)f(an)i(arbitrary)e(in)o(tercomm)o(unicator)i
(from)e(a)h(p)q(oin)o(t-to-p)q(oin)o(t)75 2222 y(connection.)166
2355 y Fg(Discussion:)54 b Ff(This)19 b(brings)g(up)g(an)g(in)o(teresting)g
(subtle)h(p)q(oin)o(t.)32 b(In)19 b(paren)o(t/c)o(hild)g(in)o(teractions,)h
(all)75 2405 y(remote)10 b(pro)q(cesses)j(are)e(giv)o(en)f(to)g
Fe(MPI)p 681 2405 13 2 v 15 w(PROCESS)p 879 2405 V 13 w(A)m(TT)m(A)o(CH)p
Ff(.)f(In)h(clien)o(t/serv)o(er)i(in)o(teractions,)f(only)f(one)g(remote)75
2455 y(pro)q(cess)20 b(is)f(giv)o(en)f(to)g Fe(MPI)p 516 2455
V 15 w(PROCESS)p 714 2455 V 13 w(A)m(TT)m(A)o(CH)p Ff(.)f(This)h(isn't)g
(consisten)o(t,)j(but)d(can)h(b)q(e)g(resolv)o(ed)h(if)d(w)o(e)i(sa)o(y)75
2504 y(that)e(in)f(general)g Fe(MPI)p 441 2504 V 15 w(PROCESS)p
639 2504 V 13 w(A)m(TT)m(A)o(CH)f Ff(ma)o(y)g(sp)q(ecify)i(an)o(y)f
(arbitrary)h(collection)f(of)g(remote)g(pro)q(cesses.)75 2554
y(It)i(will)e(succeed)k(as)e(long)f(as)h(all)f(of)g(those)h(remote)g(pro)q
(cesses)i(are)f(participating)d(in)i(a)f(matc)o(hing)f Fe(A)m(TT)m(A)o(CH)75
2604 y Ff(op)q(eration)f(\(either)h Fe(MPI)p 474 2604 V 14
w(PROCESS)p 671 2604 V 13 w(A)m(TT)m(A)o(CH)e Ff(or)h Fe(MPI)p
986 2604 V 14 w(COMM)p 1130 2604 V 15 w(P)m(ARENT)p Ff(\).)f(The)h(only)f
(requiremen)o(t)h(is)g(that)75 2654 y(the)c(pro)q(cesses)i(\\matc)o(h)c(up".)
17 b(In)11 b(order)g(for)f(this)h(to)f(w)o(ork,)h(w)o(e)f(need)i(to)e
(\014ddle)h(sligh)o(tly)e(\(?\))17 b(with)11 b(the)g(argumen)o(ts)75
2704 y(to)j Fe(MPI)p 203 2704 V 14 w(PROCESS)p 400 2704 V 13
w(A)m(TT)m(A)o(CH)p Ff(.)-32 46 y Fh(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441
y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 22 24
bop 75 -100 a Fs(22)928 b Fm(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)166 45 y Fg(Discussion:)32 b Ff(After)13 b(going)e(through)h
(the)h(exercise)h(of)e(replacing)g(connections)h(with)f(pro)q(cesses,)j(I)d
(think)75 95 y(I)i(understand)i(wh)o(y)e(connections)h(w)o(ere)g(prop)q(osed)
h(in)d(the)i(\014rst)g(place.)20 b(The)15 b(problem)e(is)h(that)g(y)o(ou)g
(ma)o(y)e(w)o(an)o(t)75 145 y(to)k(prev)o(en)o(t)h(the)f(serv)o(er)i(from)c
(blo)q(c)o(king)h(no)g(matter)h(what)f(the)i(clien)o(t)f(do)q(es.)25
b(As)16 b(prop)q(osed)h(here,)g(the)f(serv)o(er)75 195 y(will)h(blo)q(c)o(k)g
(while)h(A)m(TT)m(A)o(CHing)f(if)g(the)i(clien)o(t)f(do)q(esn't)h(do)e(a)h
(matc)o(hing)f(A)m(TT)m(A)o(CH.)g(A)h(\\connection")g(w)o(as)75
244 y(more)h(than)h(a)g(simple)e(pro)q(cess)k(in)e(that)g(establishing)f(an)h
(in)o(tercomm)o(unicator)d(from)i(an)h Fe(MPI)p 1669 244 13
2 v 14 w(Connection)75 294 y Ff(\(using)c(REMOTE)p 391 294
V 15 w(A)m(TT)m(A)o(CH\))g(w)o(as)g(a)f Fb(lo)n(c)n(al)h Ff(op)q(eration,)g
(not)g(requiring)g(sync)o(hronization)g(with)g(the)g(remote)75
344 y(pro)q(cesses.)166 394 y(I)d(main)o(tain)d(that)j(this)g(only)f(sw)o
(ept)i(the)g(problem)d(under)j(the)g(rug.)k(In)13 b(e\013ect,)h(establishing)
f(a)f(connection)75 444 y(with)g(ICONNECT/IA)o(CCEPT)h(w)o(as)g(a)f(a)g(non)o
(blo)q(c)o(king)f(collectiv)o(e)i(op)q(eration)f(that)h(established)g(comm)o
(unica-)75 493 y(tion.)19 b(REMOTE)p 367 493 V 15 w(A)m(TT)m(A)o(CH)14
b(w)o(as)g(really)g(only)g(a)g(lo)q(cal)f(lo)q(okup)h(of)g(the)h
(already-established)f(comm)o(unicator.)75 543 y(A)k(more)f(direct)i
(solution)e(is)g(\(IMHO\))i(to)f(pro)o(vide)g(a)f(non-blo)q(c)o(king)g(v)o
(ersion)h(of)f Fe(MPI)p 1495 543 V 14 w(PROCESS)p 1692 543
V 14 w(A)m(TT)m(A)o(CH)p Ff(.)75 593 y(This)d(has)g(all)e(the)j(same)e(asso)q
(ciated)i(issues)g(of)e(non)o(blo)q(c)o(king)f(collectiv)o(e)i(op)q
(erations,)g(but)g(seems)g(cleaner.)166 643 y(More)21 b(generally)m(,)g(a)f
(serv)o(er)i(m)o(ust)e(alw)o(a)o(ys)f(a)o(v)o(oid)g(collectiv)o(e)i(comm)o
(unicatio)o(n)d(with)i(a)g(clien)o(t)h(\(unless)75 693 y(non)o(blo)q(c)o
(king)11 b(collectiv)o(e)h(is)g(a)o(v)n(ailable\))f(and)h(m)o(ust)f(alw)o(a)o
(ys)g(use)i(non-blo)q(c)o(king)e(p)q(oin)o(t-to-p)q(oin)o(t)g(comm)o
(unication)75 742 y(if)f(it)h(wishes)h(to)g(a)o(v)o(oid)e(deadlo)q(c)o(k)h
(due)h(to)f(an)g(unco)q(op)q(erativ)o(e/incorrect)i(clien)o(t.)k(Because)c
(there)g(are)f(\(curren)o(tly\))75 792 y(no)f(non-blo)q(c)o(king)e(collectiv)
o(e)i(op)q(erations,)g(and)f(b)q(ecause)j(these)f(w)o(ould)e(probably)g(not)h
(b)q(e)g(to)q(o)g(useful)f(to)h(a)f(serv)o(er)75 842 y(in)16
b(an)o(y)f(case)i(\(?\))25 b(W)m(e)15 b(ma)o(y)f(w)o(an)o(t)i(to)f(a)o(v)o
(oid)g(the)i(issue)f(en)o(tirely)g(and)g(pro)o(vide)g(only)f(a)h(lo)q(cal)f
(\(non-collectiv)o(e\))75 892 y(non-blo)q(c)o(king)e(v)o(ersion)h(of)f
Fe(MPI)p 586 892 V 14 w(PROCESS)p 783 892 V 13 w(IA)m(TT)m(A)o(CH)g
Ff(\(i.e,)g(without)g(the)i Fe(comm)d Ff(and)h Fe(ro)q(ot)h
Ff(argumen)o(ts.)j(\).)166 942 y(If)12 b(w)o(e)h(do)f(ha)o(v)o(e)g(a)g(non)o
(blo)q(c)o(king)f(collectiv)o(e)h(op)q(eration,)g(it)g(will)f(need)j(to)e
(function)g(correctly)i(when)e(sev)o(eral)75 992 y(are)i(o)o(v)o(erlapp)q
(ed.)k(Is)d(this)f(p)q(ossible?)75 1048 y(w)o(cs)166 1187 y
Fs(Just)21 b(as)f(MPI)g(allo)o(ws)h(a)f(non)o(blo)q(c)o(king)i(send)f(to)f(b)
q(e)i(matc)o(hed)e(with)h(a)f(blo)q(c)o(king)i(receiv)o(e)g(and)75
1244 y(vice)16 b(v)o(ersa,)e(the)h(ab)q(o)o(v)o(e)g(non-blo)q(c)o(king)i(op)q
(erations)e(ma)o(y)f(b)q(e)i(matc)o(hed)f(with)g(their)h(simpli\014ed)h
(forms,)75 1300 y Fj(MPI)p 160 1300 14 2 v 16 w(CLIENT)p 333
1300 V 16 w(CONNECT)f Fs(and)f Fj(MPI)p 748 1300 V 16 w(SERVER)p
931 1300 V 18 w(CONNECT)p Fs(.)75 1420 y Fj(Utilit)o(y)h(routines)75
1506 y Fs(In)d(this)g(section)g(w)o(e)f(collect)h(routines)g(that)f(pro)o
(vide)h(access)f(to)g(the)g(data)g(con)o(tained)h(in)g(the)g(datat)o(yp)q(es)
75 1562 y Fj(MPI)p 160 1562 V 16 w(Pro)q(cess)j Fs(and)f Fj(MPI)p
505 1562 V 16 w(Resource)p Fs(.)75 1713 y Fj(MPI)p 160 1713
V 16 w(RESOURCE)p 406 1713 V 18 w(NSLOTS\(resource,)h(nslots\))117
1791 y Ff(IN)155 b Fj(resource)432 b Ff(an)14 b Fe(MPI)p 1040
1791 13 2 v 14 w(Resource)h Ff(ob)r(ject)117 1866 y(OUT)108
b Fj(nslots)480 b Ff(n)o(um)o(b)q(er)13 b(of)h(slots)75 1990
y Fj(nslots)j Fs(giv)o(es)g(the)f(n)o(um)o(b)q(er)g(of)g(recommended)h(pro)q
(cesses)f(in)h(a)f(resource.)23 b(This)16 b(n)o(um)o(b)q(er)h(will)h(alw)o(a)
o(ys)75 2047 y(b)q(e)e(a)f(\014nite)h(non-negativ)o(e)g(in)o(teger)f(\(it)g
(ma)o(y)g(b)q(e)g(zero,)g(for)g(instance,)g(if)h(resources)f(ha)o(v)o(e)g
(expired\).)75 2198 y Fj(MPI)p 160 2198 14 2 v 16 w(RESOURCE)p
406 2198 V 18 w(NSLOTS)p 595 2198 V 17 w(TOT)l(AL\(resource,)g(nslots\))117
2275 y Ff(IN)155 b Fj(resource)432 b Ff(an)14 b Fe(MPI)p 1040
2275 13 2 v 14 w(Resource)h Ff(ob)r(ject)117 2350 y(OUT)108
b Fj(nslots)480 b Ff(n)o(um)o(b)q(er)13 b(of)h(slots)75 2474
y Fj(nslots)i Fs(giv)o(es)g(the)f(total)g(n)o(um)o(b)q(er)g(of)g(pro)q(cess)g
(slots)h(in)g(a)e(resource.)1967 46 y Fh(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 23 25
bop 75 -100 a Fm(1.4.)34 b(SIMPLE)16 b(INTERF)-5 b(A)o(CE)1191
b Fs(23)75 45 y Fj(MPI)p 160 45 14 2 v 16 w(RESOURCE)p 406
45 V 18 w(NPROCS)p 601 45 V 18 w(RUNNING\(resource,)16 b(np)o(ro)q(cs\))117
122 y Ff(IN)155 b Fj(resource)432 b Ff(an)14 b Fe(MPI)p 1040
122 13 2 v 14 w(Resource)h Ff(ob)r(ject)117 197 y(OUT)108 b
Fj(np)o(ro)q(cs)465 b Ff(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)i(curren)o
(tly)f(running)75 416 y Fj(MPI)p 160 416 14 2 v 16 w(RESOURCE)p
406 416 V 18 w(NAME\(resource,)g(name\))117 494 y Ff(IN)155
b Fj(resource)432 b Ff(an)14 b Fe(MPI)p 1040 494 13 2 v 14
w(Resource)h Ff(ob)r(ject)117 569 y(OUT)108 b Fj(name)485 b
Ff(a)14 b(string)g(iden)o(tifying)e(the)j(resource)75 693 y
Fs(The)g(v)m(alue)g(of)f Fj(name)g Fs(is)h(only)g(suggested)g(b)o(y)f(the)g
(MPI)h(standard.)k(If)c(the)f(resource)h(corresp)q(onds)f(to)g(a)75
750 y(particular)j(host,)f Fj(name)g Fs(should)i(b)q(e)f(the)f(name)h(of)f
(that)g(host.)23 b(If)17 b(the)f(resource)h(w)o(as)f(obtained)h(from)75
806 y(a)f(request)g(for)f(m)o(ultiple)j(hosts)d(of)h(a)f(giv)o(en)i(arc)o
(hitecture,)f Fj(name)f Fs(should)i(con)o(tain)f(the)g(name)g(of)g(that)75
863 y(arc)o(hitecture.)28 b(If)18 b(the)g(resource)g(w)o(as)f(obtained)h
(from)f(a)h(complicated)h(resource)f(description)h(string)75
919 y(\(opaque)14 b(to)g(MPI)h(but)g(sen)o(t)f(to)g(an)g(external)h(resource)
g(manager\))f Fj(name)g Fs(ma)o(y)g(b)q(e)h(that)f(string.)19
b Fj(name)75 975 y Fs(is)d(primarily)g(useful)g(when)g(disco)o(v)o(ering)g
(pre-allo)q(cated)h(resources.)75 1126 y Fj(MPI)p 160 1126
14 2 v 16 w(RESOURCE)p 406 1126 V 18 w(DESCRIPTION\(resource,)e
(description\))117 1204 y Ff(IN)155 b Fj(resource)432 b Ff(an)14
b Fe(MPI)p 1040 1204 13 2 v 14 w(Resource)h Ff(ob)r(ject)117
1279 y(OUT)108 b Fj(description)384 b Ff(a)14 b(string)g(describing)g(the)h
(resource)75 1403 y Fs(The)i(v)m(alue)i(of)d Fj(description)j
Fs(is)f(only)f(suggested)g(b)o(y)g(the)h(MPI)f(standard.)25
b(It)17 b(describ)q(es)i(the)e(resource)75 1460 y(in)g(a)e(w)o(a)o(y)g(that)g
(is)h(opaque)g(to)f(MPI)h(itself,)g(but)g(ma)o(y)f(b)q(e)i(understo)q(o)q(d)f
(b)o(y)g(the)g(resource)f(manager)g(or)75 1516 y(application.)21
b(Its)15 b(primary)f(use)h(is)g(in)g(conjunction)g(with)g Fj(MPI)p
1174 1516 14 2 v 16 w(Resource)p 1358 1516 V 17 w(discover)g
Fs(if)g(a)f(user)g(needs)i(to)75 1573 y(get)f(more)g(detailed)h(information)g
(ab)q(out)f(a)g(resource.)75 1724 y Fj(MPI)p 160 1724 V 16
w(RESOURCE)p 406 1724 V 18 w(PROCESSES\(resource,)i(n,)e(a)o(rra)o(y)p
1022 1724 V 15 w(of)p 1074 1724 V 16 w(p)o(ro)q(cesses\))117
1801 y Ff(IN)155 b Fj(resource)432 b Ff(an)14 b Fe(MPI)p 1040
1801 13 2 v 14 w(Resource)117 1876 y Ff(OUT)108 b Fj(n)564
b Ff(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)i(running)e(on)f(resource)117
1951 y(OUT)108 b Fj(a)o(rra)o(y)p 416 1951 14 2 v 15 w(of)p
468 1951 V 16 w(p)o(ro)q(cesses)251 b Ff(arra)o(y)14 b(of)f
Fe(MPI)p 1138 1951 13 2 v 14 w(Pro)q(cess)p Ff(es)75 2075 y
Fs(Gets)18 b(the)g(pro)q(cesses)g(running)i(on)e(a)f(giv)o(en)i(resource.)29
b(Returns)18 b Fa(n)g Fs(=)g(0)g(if)h(none)f(\(resource)g(is)h(then)75
2132 y(free)c(for)g(a)g(new)g(task\))166 2271 y Fg(Discussion:)30
b Ff(Do)9 b(w)o(e)i(need)g(to)f(sp)q(ecify)g(the)h(size)g(of)e(the)i(arra)o
(y)f(or)g(do)g(w)o(e)g(let)g(the)h(user)g(hang)e(him/herself)s(?)-32
46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 24 26
bop 75 -100 a Fs(24)928 b Fm(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fj(MPI)p 160 45 14 2 v 16 w(RESOURCE)p
406 45 V 18 w(FREE\(resources\))117 122 y Ff(IN)155 b Fj(resources)415
b Ff(resource)16 b(to)e(b)q(e)g(returned)i(to)e(resource)i(manager)75
247 y Fs(Releases)24 b(resources)e(to)g(resource)g(manager.)41
b(Pro)q(cesses)23 b(running)g(on)f(those)h(resources)f(are)g(lost)75
303 y(\(killed?\).)k(\(dealing)17 b(with)g(this)g(case)g(is)g(di\016cult)h
(and)e(should)i(b)q(e)f(addressed\).)24 b(The)17 b(resource)g(m)o(ust)75
360 y(b)q(e)f(o)o(wned)f(b)o(y)g(the)g(caller.)166 499 y Fg(Discussion:)50
b Ff(Should)17 b(sev)o(eral)i(of)e(these)i(routines)g(b)q(e)f(com)o(bined)f
(in)o(to)g(one,)i(whic)o(h)e(returns)j(lots)e(of)75 555 y(information)11
b(ab)q(out)j(a)f(resource)j(in)e(a)f(single)h(call?)75 789
y Fj(MPI)p 160 789 V 16 w(PROCESS)p 373 789 V 18 w(RESOURCE\(p)o(ro)q(cess,)j
(resource\))117 866 y Ff(IN)155 b Fj(p)o(ro)q(cess)451 b Ff(an)14
b Fe(MPI)p 1040 866 13 2 v 14 w(Pro)q(cess)117 941 y Ff(OUT)108
b Fj(resource)432 b Ff(the)15 b Fe(MPI)p 1054 941 V 14 w(Resource)g
Ff(on)f(whic)o(h)g(the)g(pro)q(cess)i(is)e(running)75 1066
y Fs(Gets)k(the)g(resource)g(on)h(whic)o(h)g(a)f(pro)q(cess)g(is)h(running.)
30 b(This)19 b(routine)g(can)f(only)h(b)q(e)g(called)h(on)e(the)75
1122 y(pro)q(cess)d(whic)o(h)i(o)o(wns)d(the)h(resource.)20
b(On)c(all)g(other)f(pro)q(cess)h(it)f(returns)g Fj(MPI)p 1453
1122 14 2 v 16 w(RESOURCE)p 1699 1122 V 18 w(NULL)p Fs(.)166
1261 y Fg(Discussion:)36 b Ff(Allo)o(wing)13 b(other)i(pro)q(cesses)i(to)d
(retriev)o(e)i(the)f(corresp)q(onding)g(resource)i(causes)f(all)d(sorts)75
1318 y(of)h(problems.)19 b(The)c(curren)o(t)h(de\014nition)e(is)h(probably)e
(\014ne)i(un)o(til)f(w)o(e)h(start)g(talking)e(ab)q(out)i(fault)e(tolerance,)
i(in)75 1374 y(whic)o(h)f(case)h(w)o(e)f(ha)o(v)o(e)f(another)i(problem.)75
1608 y Fj(MPI)p 160 1608 V 16 w(PROCESS)p 373 1608 V 18 w(IN)p
436 1608 V 16 w(GROUP\(group,)h(rank,)f(p)o(ro)q(cess\))117
1685 y Ff(IN)155 b Fj(comm)470 b Ff(group)117 1760 y(IN)155
b Fj(rank)504 b Ff(rank)14 b(in)f(group)117 1835 y(OUT)108
b Fj(p)o(ro)q(cess)451 b Fe(MPI)p 982 1835 13 2 v 15 w(Pro)q(cess)14
b Ff(corresp)q(onding)h(to)e(rank)h(in)g(group)75 1960 y Fs(gets)h(the)g
Fj(MPI)p 332 1960 14 2 v 16 w(Pro)q(cess)h Fs(corresp)q(onding)g(to)e(a)h
(giv)o(en)h(group)f(and)g(rank.)166 2016 y(A)g(pro)q(cess)f(represen)o(ted)i
(b)o(y)e(an)h Fj(MPI)p 824 2016 V 16 w(Pro)q(cess)g Fs(cannot)f(b)q(e)i(comm)
o(unicated)f(with)g(directly)l(,)h(un)o(til)75 2073 y(a)i(comm)o(unicator)h
(is)g(constructed)f(con)o(taining)i(it)f(\(see)f(next)h(section\).)30
b(It)19 b(need)g(not)f(b)q(e)i(an)e(\\MPI)75 2129 y(pro)q(cess")h(in)g(the)g
(sense)g(that)f(it)i(migh)o(t)e(not)h(call)g Fj(MPI)p 1059
2129 V 16 w(INIT)p Fs(.)f(On)h(the)g(other)g(hand,)g(it)g(allo)o(ws)g(out-)75
2186 y(of-band)h(comm)o(unication,)h(suc)o(h)e(as)g(signals,)i(and)f(migh)o
(t)f(b)q(e)h(a)f(useful)i(concept)f(for)f(dealing)i(with)75
2242 y(failures.)166 2298 y(T)l(o)15 b(ask)g(the)g(pro)q(cess)g(manager)g(to)
f(deliv)o(er)j(signals)f(to)f(pro)q(cesses,)g(w)o(e)g(use)1967
46 y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 25 27
bop 75 -100 a Fm(1.4.)34 b(SIMPLE)16 b(INTERF)-5 b(A)o(CE)1191
b Fs(25)75 45 y Fj(MPI)p 160 45 14 2 v 16 w(PROCESS)p 373 45
V 18 w(SIGNAL\(signal,)15 b(num)p 782 45 V 16 w(p)o(ro)q(cesses,)i(a)o(rra)o
(y)p 1096 45 V 14 w(of)p 1147 45 V 16 w(p)o(ro)q(cesses\))117
122 y Ff(IN)155 b Fj(signal)480 b Ff(signal)13 b(t)o(yp)q(e)h(\(in)o(t\))117
197 y(IN)155 b Fj(num)p 404 197 V 17 w(p)o(ro)q(cesses)314
b Ff(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)i(in)e(arra)o(y)117
273 y(IN)155 b Fj(a)o(rra)o(y)p 416 273 V 15 w(of)p 468 273
V 16 w(p)o(ro)q(cesses)251 b Fe(MPI)p 982 273 13 2 v 15 w(Pro)q(cess)p
Ff(es)15 b(to)e(b)q(e)i(signalled)166 397 y Fs(It)22 b(is)g(the)f(resp)q
(onsibilit)o(y)j(of)d(an)h(implemen)o(tation)h(to)e(translate)g(b)q(et)o(w)o
(een)h(signals;)j(in)d(other)75 453 y(w)o(ords,)17 b(a)h Fi(SIGINT)f
Fs(that)g(has)g(v)m(alue)i Fi(3)f Fs(on)g(system)f(A)h(m)o(ust)f(b)q(e)h
(deliv)o(ered)i(as)d(a)h Fi(SIGINT)f Fs(on)g(system)75 510
y(B,)e(ev)o(en)h(if)f(system)g(B)h(uses)f(the)g(v)m(alue)i
Fi(5)e Fs(for)g Fi(SIGINT)p Fs(.)f(If)h(the)h(signal)g(can)f(not)g(b)q(e)h
(deliv)o(ered)h(b)q(ecause)75 566 y(there)e(is)h(no)f(corresp)q(onding)h
(signal,)g(the)f(error)g(co)q(de)h(is)f Fj(MPI)p 1159 566 14
2 v 16 w(ERR)p 1260 566 V 17 w(INV)l(ALID)p 1449 566 V 16 w(SIGNAL)p
Fs(.)166 699 y Fg(Discussion:)29 b Ff(Should)9 b(there)i(b)q(e)e(a)g
(single-request)i(v)o(ersion)e(of)g(this,)h(and)f(the)h(ab)q(o)o(v)o(e)f
(renamed)g Fe(MPI)p 1767 699 13 2 v 14 w(PROCESS)p 1964 699
V 13 w(SIGNAL)p 2119 699 V 15 w(ALL)p Ff(?)75 749 y(Is)14 b(the)h(notion)e
(of)g(signals)g(to)q(o)h(Unix-cen)o(tric?)166 799 y(Nah.)21
b(The)15 b(notion)f(of)g(signals)g(is)h(not)f(Unix-cen)o(tric)i({)e(ANSI)h(C)
g(requires)h(the)f(C)g(library)f(to)h(implem)o(en)o(t)75 848
y(\\signal\(\)")10 b(and)h(\\raise\(\)")h(\(presumably)m(,)e(to)h(the)h(b)q
(est)g(of)f(the)h(underlying)f(system's)g(abilit)o(y\))f(and)h(to)g(deal)g
(with)75 898 y(\(at)j(least\))g(a)g(small)d(set)k(of)e(signals,)g(one)h(of)g
(whic)o(h)f(is)h(SIGINT)166 1037 y Fs(There)j(needs)h(to)f(b)q(e)h(some)f(w)o
(a)o(y)f(of)h(\014nding)h(out)f(when)h(a)f(pro)q(cess)g(\014nishes.)27
b(In)18 b(MPI)f(w)o(e)g(ha)o(v)o(e)75 1094 y(no)f(mec)o(hanism)h(for)e(async)
o(hronous)h(noti\014cation.)23 b(Therefore)16 b(the)h(b)q(est)f(w)o(e)g(can)g
(do)g(is)h(to)e(construct)75 1150 y(a)f(request)g(that)f(can)h(b)q(e)h
(tested)f(and)g(w)o(aited)g(on.)19 b(If)14 b(pro)q(cesses)h(w)o(ere)e
(represen)o(ted)i(b)o(y)f(requests,)g(then)75 1207 y(w)o(e)k(could)g(w)o(ait)
g(on)g(them)f(directly)l(.)30 b(Since)19 b(w)o(e)f(ha)o(v)o(e)f(in)o(tro)q
(duced)i(the)f(notion)g(of)g Fj(MPI)p 1636 1207 14 2 v 15 w(Pro)q(cess)p
Fs(,)h(w)o(e)75 1263 y(explicitly)f(attac)o(h)c(a)h(request)g(to)g(it)g(in)h
(order)f(to)g(w)o(ait)f(on)i(it.)75 1414 y Fj(MPI)p 160 1414
V 16 w(NOTIFY)p 341 1414 V 17 w(WHEN)p 492 1414 V 16 w(DONE\(n,)g(a)o(rra)o
(y)p 798 1414 V 15 w(of)p 850 1414 V 16 w(p)o(ro)q(cesses,)g(request\))117
1491 y Ff(IN)155 b Fj(n)564 b Ff(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)i(in)
e(follo)o(wing)d(arra)o(y)117 1566 y(IN)155 b Fj(a)o(rra)o(y)p
416 1566 V 15 w(of)p 468 1566 V 16 w(p)o(ro)q(cesses)251 b
Ff(arra)o(y)14 b(of)f Fe(MPI)p 1138 1566 13 2 v 14 w(Pro)q(cess)i
Ff(ob)r(jects)117 1642 y(OUT)108 b Fj(request)452 b Ff(mpifuncMPI)p
1136 1642 V 14 w(Request)15 b(to)e(b)q(e)i(tested)g(and/or)f(w)o(aited)f(on)
166 1849 y Fg(Discussion:)40 b Ff(Should)15 b Fe(MPI)p 657
1849 V 15 w(NOTIFY)p 824 1849 V 14 w(WHEN)p 960 1849 V 15 w(DONE)g
Ff(return)i(an)e(arra)o(y)h(of)f(requests)i(instead)f(of)f(just)75
1905 y(one?)166 2044 y Fs(W)l(e)g(can)g(think)g(of)g(this)g(as)g(MPI)g(in)o
(terface)g(to)f(the)h(Pro)q(cess)g(Manager's)e(handling)k(of)d(the)h(signal)
75 2101 y Fi(SIGCHILD)p Fs(.)e(The)i(exit)g(co)q(de)g(from)f(the)g(pro)q
(cess)h(\(from)f(a)g Fi(return)23 b(n)14 b Fs(or)g Fi(exit\(n\))g
Fs(in)h(C)f(or)g Fi(STOP)24 b(n)14 b Fs(in)75 2157 y(F)l(ortran\))g(can)h(b)q
(e)h(retriev)o(ed)g(from)e(the)h Fj(MPI)p 863 2157 14 2 v 16
w(status)i Fs(\014lled)g(in)f(the)g Fj(MPI)p 1332 2157 V 15
w(W)l(AIT)p Fs(.)166 2214 y(Note)h(that)g(this)h(lev)o(el)h(of)e(pro)q(cess)h
(managemen)o(t)f(allo)o(ws)h(us)g(to)f(manage)g(non-MPI)h(pro)q(cesses,)75
2270 y(since)e(comm)o(unicators)f(are)g(not)g(in)o(v)o(olv)o(ed.)166
2327 y(If)22 b(the)g(started)g(pro)q(cesses)g(are)g(MPI)g(pro)q(cesses)g
(\(that)f(is,)j(if)f(they)f(call)h Fj(MPI)p 1588 2327 V 16
w(INIT)p Fs(\),)e(then)h(a)75 2383 y(comm)o(unicator)f(that)f(includes)k
(them)d(can)g(b)q(e)h(constructed)g(with)f(the)g Fj(MPI)p 1472
2383 V 16 w(PROCESS)p 1685 2383 V 18 w(A)l(TT)l(A)o(CH)75 2439
y Fs(function)h(describ)q(ed)g(b)q(elo)o(w.)38 b(In)21 b(either)h(case,)g(at)
e(this)h(stage)f(w)o(e)h(ha)o(v)o(e)f(allo)q(cated)i(resources)f(and)75
2496 y(the)c(pro)q(cesses)h(ha)o(v)o(e)f(b)q(een)h(started.)25
b(The)18 b(third)g(comp)q(onen)o(t)f(of)g(the)g(run)o(time)h(en)o(vironmen)o
(t)f(is)h(the)75 2552 y(message-passing)f(library)l(.)25 b(In)17
b(order)f(to)g(comm)o(unicate)h(with)g(these)g(pro)q(cesses,)f(w)o(e)h(m)o
(ust)f(in)o(terface)75 2609 y(with)g(the)f(message-passing)g(library)l(.)21
b(In)16 b(MPI)f(terms,)f(this)i(means)f(setting)g(up)h(comm)o(unicators.)-32
46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 26 28
bop 75 -100 a Fs(26)933 b Fm(CHAPTER)16 b(1.)29 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fp(1.5)59 b(Examples)75 147 y Fj(Manager-w)o(o)o(rk)o
(er)13 b(example.)75 240 y Fi(/*)24 b(manager)e(*/)75 297 y(#include)h
(<mpi.h>)75 353 y(#define)g(MAXPROC)g(128)75 410 y(main\(int,)g(argc,)g(char)
g(*arg[]\))75 466 y({)147 523 y(MPI_Resource)f(resource;)147
579 y(MPI_Status)g(status;)147 636 y(int)h(count,)g(world_size;)147
692 y(MPI_Comm)f(everyone;)75 748 y(#ifndef)h(SPAWNEM)147 805
y(MPI_Process)f(processes[MAXPROC];)147 861 y(MPI_Comm)g(my_children;)75
918 y(#endif)147 1087 y(MPI_Init\(&argc,)f(&argv\);)147 1144
y(MPI_Comm_size\(MPI_COMM_)o(WORLD,)f(&world_size\);)147 1200
y(if)j(\(world_size)g(!=)g(1\))h(error\("Top)e(heavy)h(with)h(management"\);)
147 1257 y(MPI_Resource_discover\(M)o(PI_RESO)o(URCE_TYP)o(E_DEFAU)o(LT,)d
(NULL,)i(&resource\);)147 1369 y(MPI_Resource_nslots\(res)o(ource,)d
(&count\);)147 1426 y(if)j(\(count)g(<)h(1\))g(error\("No)e(resources"\);)147
1482 y(if)h(\(count)g(>)h(MAXPROC\))f({)g(warning\("Too)g(many)g
(resources"\);)f(count)h(=)h(MAXPROC)f(};)75 1595 y(#ifdef)g(SPAWNEM)147
1652 y(MPI_Spawn\(MPI_COMM_SELF)o(,)e(0,)j(count,)f("worker",)f(NULL,)i
(resource,)e(&everyone\);)75 1708 y(#else)147 1765 y
(MPI_Process_create\("wor)o(ker",)f(NULL,)i(count,)g(resource,)f
(processes\);)147 1821 y(MPI_Process_attach\(MPI_)o(COMM_SE)o(LF,)f(0,)j
(count,)f(processes,)f(&my_children\);)147 1878 y(MPI_Intercomm_merge\(my_)o
(childre)o(n,)f(FALSE,)i(&everyone\);)75 1934 y(#endif)147
2047 y(/*)170 2103 y(*)h(Parallel)f(code)g(here.)g(The)h(communicator)e
("everyone")h(can)g(be)h(used)170 2160 y(*)g(to)g(communicate)e(with)h(the)h
(spawned)f(processes)170 2216 y(*/)147 2329 y(MPI_Finalize\(\);)75
2386 y(})75 2499 y(/*)h(worker)f(*/)75 2611 y(#include)g(<mpi.h>)75
2668 y(main\(int,)g(argc,)g(char)g(*argv[]\))1967 46 y Fh(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967
385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959
667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119
y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345
y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570
y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796
y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022
y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248
y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474
y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699
y(48)p eop
%%Page: 27 29
bop 75 -100 a Fm(1.5.)29 b(EXAMPLES)1398 b Fs(27)75 45 y Fi({)147
102 y(MPI_Comm)22 b(parent;)95 b(/*)23 b(intercommunicator)f(*/)147
158 y(MPI_Comm)g(everyone;)47 b(/*)23 b(intracommunicator)f(*/)147
214 y(MPI_Init\(&argc,)f(&argv\);)147 271 y(MPI_Parent\(&parent\);)147
327 y(MPI_Intercomm_merge\(par)o(ent,)g(TRUE,)i(&everyone\))147
440 y(/*)170 497 y(*)h(Parallel)f(code)g(here.)170 553 y(*/)147
610 y(MPI_Finalize\(\);)75 666 y(})75 899 y Fj(T)l(ask)12 b(fa)o(rm)e
(example.)45 b Fs(The)12 b(nice)h(thing)g(here)f(is)g(that)f(y)o(ou)h(need)h
(allo)q(cate)f(resources)g(only)g(once.)19 b(Then)75 956 y(y)o(ou)c(can)g
(reuse)g(them.)20 b(It)15 b(also)g(sho)o(ws)f(that)g(y)o(ou)h(can)g(in)o
(teract)g(with)g(pro)q(cesses)g(without)g(using)h(MPI)75 1012
y(to)f(comm)o(unicate.)75 1118 y Fi(#include)23 b(<mpi.h>)75
1175 y(#define)g(MAXPROC)g(100)75 1231 y(main\(int)g(argc,)g(char)g
(*argv[]\))75 1288 y({)147 1344 y(MPI_Resource)f(resource;)147
1401 y(MPI_Process)g(processes[MAXPROC];)147 1457 y(MPI_Request)g
(obituaries[MAXPROC];)147 1513 y(MPI_Status)g(statuses[MAXPROC];)45
b(/*)24 b(see)f(comment)g(below)g(*/)147 1570 y(int)g(nslots,)g(i,)h
(deadone;)147 1626 y(char)f(**args;)147 1739 y(ThingToDo)f(*thingstodo;)147
1796 y(int)h(nthingstodo,)f(nthingsdone;)147 1909 y(MPI_Init\(&argc,)f
(&argv\);)147 1965 y(MPI_Resource_discover\(M)o(PI_RESO)o(URCE_TYP)o(E_DEFAU)
o(LT,)g(NULL,)i(&resource\);)147 2022 y(MPI_Resource_nslots\(res)o(ource,)d
(&nslots\);)147 2134 y(GetThingsToDo\(&thingsto)o(do,)h(nthingstodo\);)147
2247 y(/*)i(need)g(to)h(initialize)f(these)g(for)g(Waitany/all\(\))f(below)h
(to)h(work)f(*/)147 2304 y(for)g(\(i)h(=)f(0;)h(i)g(<)f(MAXPROC;)g(i++\))g
(obituaries[i])g(=)g(MPI_REQUEST_NULL;)147 2417 y(/*)g(start)g(up)h(tasks)f
(on)h(initial)f(resources)f(*/)147 2473 y(for)h(\(nthingsdone)f(=)i(0;)g
(nthingsdone)e(<)i(nslots)f(&&)g(nthingsdone)g(<)g(nthingstodo;)g
(nthingsdone++\))f({)194 2530 y(SetArgs\(thingstodo[nthingsdo)o(ne],)f
(&args\);)194 2586 y(MPI_Process_create\("cow",)g(args,)i(1,)h
(MPI_PROCESS_TYPE_NONMPI)o(,)648 2643 y(resource,)e
(&processes[nthingsdone]\);)194 2699 y(MPI_Process_notify_when_done)o
(\(nthings)o(done,)-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32
215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40
780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40
1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796
y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304
y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 28 30
bop 75 -100 a Fs(28)933 b Fm(CHAPTER)16 b(1.)29 b(D)o(YNAMIC)15
b(PR)o(OCESSES)648 45 y Fi(&processes[nthingsdone],)648 102
y(&obnthingsdonetuaries[nt)o(hingsdo)o(ne]\);)147 158 y(})147
271 y(/*)23 b(spawn)g(new)h(ones)f(as)h(old)f(ones)g(finish)h(*/)147
327 y(while\(nthingsdone)d(<)j(nthingstodo\))e({)194 384 y(/*)i(perhaps)f
(could)g(have)g(some)h(element)f(of)g(status)g(=)h(return)218
440 y(*)g(code)f(so)h(we)f(could)h(check)f(for)g(error)g(?)h(*/)194
497 y(MPI_Waitany\(nslots,)e(obituaries,)g(&deadone,)h(&status[0]\);)194
553 y(SetArgs\(thingstodo[nthingsdo)o(ne],)e(&args\);)194 610
y(/*)j(it)f(would)h(probably)e(be)i(more)f(efficient)g(to)h(use)218
666 y(*)g(MPI_Process_icreate)d(here)i(*/)194 723 y
(MPI_Process_create\("cow",)e(args,)i(1,)h(MPI_PROCESS_TYPE_NONMPI)o(,)648
779 y(resource,)e(&processes[nthingsdone]\);)194 835 y
(MPI_Process_notify_when_done)o(\(nthings)o(done,)886 892 y
(&processes[nthingsdone],)886 948 y(&obituaries[nthingsdone]\);)147
1061 y(})147 1118 y(/*)h(this)g(is)h(a)g(good)f(reason)g(why)h(MPI)f(should)g
(allow)g(you)h(to)f(pass)170 1174 y(*)h(statusptr)f(=)h(NULL)170
1231 y(*/)147 1287 y(MPI_Waitall\(nslots,)d(obituaries,)h(statuses\);)147
1400 y(MPI_Finalize\(\);)75 1456 y(})75 1689 y Fj(PVM-st)o(yle)16
b(SPMD)f(example)45 b Fs(This)16 b(is)g(ho)o(w)f(man)o(y)f(PVM)h(programs)f
(are)h(t)o(ypically)i(written.)j(There)75 1746 y(is)h(no)g(reason)g(they)g
(can't)f(b)q(e)i(done)f(with)g(MPI-1,)h(but)f(in)h(case)f(users)g(w)o(an)o(t)
f(the)h(app)q(earance)g(of)75 1802 y(minimal)c(c)o(hange,)e(here)g(is)h(is.)k
(\(V)l(ery)15 b(similar)i(to)d(the)i(manager-w)o(ork)o(er)d(example)j(ab)q(o)
o(v)o(e.\))75 1909 y Fi(#include)23 b(<mpi.h>)75 1965 y(#define)g(MAXPROC)g
(128)75 2022 y(main\(int,)g(argc,)g(char)g(*argv[]\))75 2078
y({)147 2134 y(MPI_Resource)f(resource;)147 2191 y(MPI_Status)g(status;)147
2247 y(int)h(count,)g(world_size;)147 2304 y(MPI_Comm)f(everyone;)147
2360 y(MPI_Process)g(processes[MAXPROC];)147 2417 y(MPI_Comm)g(my_children,)h
(my_parent;)147 2586 y(MPI_Init\(&argc,)e(&argv\);)147 2643
y(MPI_Comm_parent\(&my_par)o(ent\);)147 2699 y(if)i(\(my_parent)g(==)g
(MPI_COMM_NULL\))f({)i(/*)g(I'm)f(the)g(parent)g(*/)1967 46
y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 29 31
bop 75 -100 a Fm(1.5.)29 b(EXAMPLES)1398 b Fs(29)218 45 y Fi
(MPI_Resource_discover\(MPI_R)o(ESOURCE_)o(TYPE_DE)o(FAULT,)20
b(NULL,)k(&resource\);)218 102 y(MPI_Resource_nslots\(resourc)o(e,)d
(&count\);)218 158 y(if)j(\(count)f(<)h(1\))f(error\("No)g(resources"\);)218
214 y(if)h(\(count)f(>)h(MAXPROC\))e({)i(warning\("Too)e(many)i
(resources"\);)e(nprocs)h(=)h(MAXPROC)e(};)218 271 y
(MPI_Process_create\(&argv[0])o(,)f(NULL,)i(count,)g(resource,)g
(processes\);)218 327 y(MPI_Process_attach\(MPI_COMM)o(_SELF,)e(0,)i(count,)g
(processes,)g(&my_children\);)218 384 y(MPI_Intercomm_merge\(my_chil)o(dren,)
e(FALSE,)i(&everyone\);)170 440 y(})h(else)f({)218 497 y
(MPI_Intercomm_merge\(my_pare)o(nt,)e(TRUE,)i(&everyone\);)170
553 y(})170 666 y(/*)h(SPMD)f(parallel)g(code)g(here,)h(using)f(everyone)g
(instead)f(of)i(MPI_COMM_WORLD)e(*/)170 779 y(MPI_Finalize\(\);)75
835 y(})75 1012 y Fj(Client-server)14 b(example.)44 b Fs(This)14
b(is)f(a)f(simple)j(example;)f(the)f(serv)o(er)f(accepts)h(only)g(a)g(single)
h(connection)75 1068 y(at)h(a)f(time)i(and)f(serv)o(es)g(that)g(connection)h
(un)o(til)g(the)g(clien)o(t)g(requests)f(to)g(b)q(e)h(disconnected.)166
1125 y(Here)21 b(is)h(the)g(serv)o(er.)38 b(It)21 b(accepts)h(a)f(single)h
(connection)h(and)e(then)h(pro)q(cesses)g(data)e(un)o(til)j(it)75
1181 y(receiv)o(es)16 b(a)f(message)g(with)g(tag)f Fi(1)p Fs(.)20
b(A)15 b(message)g(with)h(tag)e Fi(0)h Fs(tells)h(the)g(serv)o(er)e(to)h
(exit.)75 1275 y Fi(#include)23 b("mpi.h")75 1332 y(main\()g(int)h(argc,)f
(char)g(**argv)g(\))75 1388 y({)75 1445 y(MPI_Comm)g(client;)75
1501 y(MPI_Status)f(status;)75 1557 y(double)h(buf[MAX_DATA];)75
1614 y(int)95 b(again;)75 1727 y(MPI_Init\()23 b(&argc,)g(&argv)g(\);)75
1783 y(while)g(\(1\))h({)170 1840 y(MPI_Server_connect\()e(MPI_COMM_WORLD,)g
("cave:1234",)g(&client)h(\);)170 1896 y(again)h(=)f(1;)170
1953 y(while)h(\(again\))f({)266 2009 y(MPI_Recv\()g(buf,)g(MAX_DATA,)f
(MPI_DOUBLE,)h(0,)g(MPI_ANY_TAG,)505 2066 y(client,)f(&status)h(\);)266
2122 y(switch)g(\(status.tag\))f({)361 2178 y(case)i(0:)f(MPI_Comm_free\()f
(&client)h(\);)552 2235 y(MPI_Finalize\(\);)552 2291 y(return)g(0;)361
2348 y(case)h(1:)f(MPI_Comm_free\()f(&client)h(\);)552 2404
y(again)g(=)h(0;)552 2461 y(break;)361 2517 y(case)g(2:)f(/*)h(do)f
(something)g(*/)361 2574 y(...)361 2630 y(default:)552 2687
y(MPI_Abort\()g(MPI_COMM_WORLD,)f("Unexpected)g(message)h(type")g(\);)-32
46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 30 32
bop 75 -100 a Fs(30)928 b Fm(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)361 45 y Fi(})266 102 y(})170 158 y(})75 214
y(})166 308 y Fs(Here)g(is)h(the)f(clien)o(t.)75 415 y Fi(#include)23
b("mpi.h")75 471 y(main\()g(int)h(argc,)f(char)g(**argv)g(\))75
527 y({)75 584 y(MPI_Comm)g(server;)75 640 y(double)g(buf[MAX_DATA];)75
753 y(MPI_Init\()g(&argc,)g(&argv)g(\);)75 810 y(MPI_Client_connect\()e
(MPI_COMM_WORLD,)h("cave:1234",)g(&server)h(\);)75 866 y(while)g(\(!done\))g
({)170 923 y(tag)h(=)g(2;)f(/*)h(Action)f(to)g(perform)g(*/)170
979 y(MPI_Send\()g(buf,)g(n,)h(MPI_DOUBLE,)e(0,)i(tag,)f(server)g(\);)170
1036 y(/*)h(etc)f(*/)170 1092 y(})75 1148 y(MPI_Send\()g(buf,)g(0,)h
(MPI_DOUBLE,)e(0,)h(1,)h(server)f(\);)75 1205 y(MPI_Comm_free\()f(&client)h
(\);)75 1261 y(MPI_Finalize\(\);)75 1318 y(})166 1424 y Fs(If)17
b(the)g(serv)o(er)f(needs)i(to)e(manage)g(m)o(ultiple)i(connections)g(at)e
(once,)h(it)g(can)g(use)g Fj(MPI)p 1675 1424 14 2 v 16 w(IA)o(CCEPT)75
1481 y Fs(instead.)j(The)c(clien)o(t)g(need)g(not)f(b)q(e)h(c)o(hanged.)166
1537 y(\010ibliograph)o(yst)o(yleplain)i(\010ibliograph)o(yrefs)1967
46 y Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF