Bill
%!PS-Adobe-2.0
%%Creator: dvips, version 5.4 (C) 1986-90 Radical Eye Software
%%Title: temp.dvi
%%Pages: 31 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 4 112 df<03CC063C0C3C181C38383038703870
38E070E070E070E070E0E2C0E2C0E261E462643C380F127B9115>97 D<01F007080C08181C3838
300070007000E000E000E000E000E000E008E010602030C01F000E127B9113>99
D<1F800380038007000700070007000E000E000E000E001C001C001C001C003800380038003800
7000700070007000E400E400E400E40068003800091D7C9C0B>108 D<01E007180C0C180C380C
300E700E700EE01CE01CE01CE018E038E030E06060C031801E000F127B9115>111
D E /Fb 1 111 df<1E07802318C023A06043C0704380704380708700E00700E00700E00700E0
0E01C00E01C00E01C00E03821C03841C07041C07081C03083803101801E017147E931B>110
D E /Fc 14 119 df<1FE0007FF8007FFC00783C00301E00000E00000E0003FE001FFE007E0E00
F00E00E00E00E00E00F01E00F83E007FFFE03FE7E00F83E013127E9116>97
D<03F80FFE1FFE3C1E780C7000F000E000E000E000E000F000700778073E0F1FFE0FFC03F01012
7D9116>99 D<003F00007F00003F0000070000070000070000070003C7000FF7003FFF003C1F00
780F00F00700F00700E00700E00700E00700E00700F00700F00F00781F007C3F003FFFE01FF7F0
07C7E014197F9816>I<001F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF
0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0003FFE
007FFF003FFE0011197F9816>102 D<03E3C00FFFE01FFFE01E3CC03C1E00380E00380E00380E
003C1E001E3C001FFC001FF8003BE0003800003800001FFC001FFF003FFFC07803C0F001E0E000
E0E000E0E000E0F001E07C07C03FFF800FFE0003F800131C7F9116>I<7E0000FE00007E00000E
00000E00000E00000E00000E3C000EFF000FFF800F87800F03800F03800E03800E03800E03800E
03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816>I<018003C003C0
018000000000000000007FC07FC07FC001C001C001C001C001C001C001C001C001C001C001C001
C07FFFFFFF7FFF101A7D9916>I<F9C380FFEFC0FFFFE03E7CE03C78E03870E03870E03870E038
70E03870E03870E03870E03870E03870E03870E0FE7CF8FE7CF8FE3C781512809116>109
D<7E3C00FEFF007FFF800F87800F03800F03800E03800E03800E03800E03800E03800E03800E03
800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E0000FF8001FFC003C1E00780F0070
0700E00380E00380E00380E00380E00380F00780700700780F003C1E001FFC000FF80003E00011
127E9116>I<7E3E00FEFF807FFFC00F83E00F01E00E00F00E00F00E00700E00700E00700E0070
0E00F00F00E00F01E00F83C00FFFC00EFF000E3C000E00000E00000E00000E00000E00000E0000
7FC000FFE0007FC000141B809116>I<0FEC3FFC7FFCF03CE01CE01CF0007F801FF007FC003EE0
0EE00EF00EF81EFFFCFFF8C7E00F127D9116>115 D<0300000700000700000700000700007FFF
00FFFF00FFFF000700000700000700000700000700000700000700000701000703800703800707
8007878003FF0003FE0000F80011177F9616>I<7F1FC0FF1FE07F1FC01C07001E0F000E0E000E
0E000E0E00071C00071C00071C00071C0003B80003B80003B80001F00001F00000E00013127F91
16>118 D E /Fd 25 118 df<001C0000003E0000003E0000002E0000006700000067000000E7
800000C7800000C3800001C3C0000183C0000181C0000381E0000381E0000700F0000700F00006
00F0000E0078000FFFF8000FFFF8001C003C001C003C0018003C0038001E0038001E0070001F00
70000F0070000F00E0000780191D7F9C1C>65 D<003FC000FFF003C0F00780300F00001E00003C
00003C0000780000780000780000F00000F00000F00000F00000F00000F00000F00000F00000F0
00007800007800007800003C00003C00001E00000F000807801803C07800FFF0003F80151F7D9D
1B>67 D<FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000FFFFC0FFFFC0121D7C9C19>69 D<003F8001FFF003C0F80780380F00181E0000
3C00003C0000780000780000780000F00000F00000F00000F00000F00000F00000F007F8F007F8
F000387800387800387800383C00383C00381E00380F003807803803C0F801FFF0003F80151F7D
9D1C>71 D<F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0FFFFF0FFFFF0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0F000F0F000F0F000F0141D7C9C1D>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0041D7C9C0C>I<FC0007E0FC0007E0FC0007E0EE000DE0EE000DE0EE
000DE0E70019E0E70019E0E70019E0E78039E0E38031E0E3C071E0E3C071E0E1C061E0E1C061E0
E1E0E1E0E1E0E1E0E0E0C1E0E0F1C1E0E07181E0E07181E0E07181E0E03B01E0E03B01E0E03B01
E0E01E01E0E01E01E0E01E01E0E00001E01B1D7C9C24>77 D<003F000001FFE00003FFF00007C0
F8000F807C001E001E003E001F003C000F00780007807800078078000780F00003C0F00003C0F0
0003C0F00003C0F00003C0F00003C0F00003C0F00003C0F80007C078000780780007807C000F80
3C000F003E001F001F003E000F807C0007C0F80003FFF00001FFE000003F00001A1F7E9D1F>79
D<FFFC00FFFF00F00F80F003C0F001E0F000F0F000F0F000F0F000F0F000F0F000F0F001E0F003
E0F00FC0FFFF80FFFE00F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000141D7C9C1B>I<FFF800FFFF00F00F80F003C0F001E0F000F0F000F0F0
00F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFF00FFF800F03C00F01C00F01E00F00F00F0
0F00F00780F00780F003C0F003C0F001E0F000F0F000F0F00078151D7C9C1B>82
D<03F8000FFE001C0F00380700700300600000E00000E00000E00000E00000F000007800007F00
003FE0001FFC0007FE0001FF00001F800007800003C00003C00001C00001C00001C00001C0C001
80E00380F007007C0E001FFC0007F000121F7E9D17>I<FFFFFF80FFFFFF80001E0000001E0000
001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E0000191D7F9C1C>I<E000E000E000E000E000
E000E000E000E000E000E000E3E0EFF0FFF8F87CF01CE01EE00EE00EE00EE00EE00EE00EE01CF0
1CF87CFFF8EFF0E3C00F1D7D9C15>98 D<07E00FF81FFC3C1C70047000E000E000E000E000E000
E000700070043C1C1FFC0FF807E00E127E9112>I<07C01FE03FF078787018601CFFFCFFFCFFFC
E000E000E000700070043C1C3FFC1FF807E00E127E9112>101 D<F0F0F0F00000000000000070
7070707070707070707070707070707070041D7E9C0A>105 D<03C003C003C003C00000000000
00000000000000000001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C0
01C001C001C001C001C001C001C0C3C0FF80FF003E000A25839C0B>I<E3F03F00EFF8FF80FFFD
FFC0F81F81E0F00F00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E0
0E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E01B127D9122>109
D<E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C0E12
7D9115>I<03F0000FFC001FFE003C0F00780780700380E001C0E001C0E001C0E001C0E001C0F0
03C07003807807803C0F001FFE000FFC0003F00012127F9115>I<E3E0EFF0FFF8F87CF01CE01E
E00EE00EE00EE00EE00EE00EE01CF03CF87CFFF8EFF0E3C0E000E000E000E000E000E000E000E0
000F1A7D9115>I<E380E780EF80FC00F800F000F000E000E000E000E000E000E000E000E000E0
00E000E00009127D910E>114 D<1FC03FF07FF0F030E000E000F0007F003FC01FE000F0003800
388038F078FFF07FE01FC00D127F9110>I<1C001C001C001C001C001C00FFE0FFE01C001C001C
001C001C001C001C001C001C001C001C001C001C201FF00FF007C00C187F970F>I<E01CE01CE0
1CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE07CFFFC7FDC3F1C0E127D9115>I
E /Fe 67 123 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0
000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E01
C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E
01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E0000
0E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303
C00703C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCF
F8151D809C17>I<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E
00E000000E00E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C00
0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C
000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D80
9C23>I<6060F0F0F8F86868080808080808101010102020404080800D0C7F9C15>34
D<60F0F8680808081010204080050C7C9C0C>39 D<004000800100020006000C000C0018001800
300030007000600060006000E000E000E000E000E000E000E000E000E000E000E000E000600060
006000700030003000180018000C000C00060002000100008000400A2A7D9E10>I<8000400020
00100018000C000C000600060003000300038001800180018001C001C001C001C001C001C001C0
01C001C001C001C001C0018001800180038003000300060006000C000C00180010002000400080
000A2A7E9E10>I<60F0F0701010101020204080040C7C830C>44 D<FFE0FFE00B0280890E>I<60
F0F06004047C830C>I<00030003000700060006000E000C001C00180018003800300030007000
60006000E000C000C001C001800380030003000700060006000E000C000C001C00180018003800
3000700060006000E000C000C00010297E9E15>I<030007003F00C70007000700070007000700
070007000700070007000700070007000700070007000700070007000700070007000F80FFF80D
1C7C9B15>49 D<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C0038
0070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07E01830201C201C
781E780E781E381E001C001C00180030006007E00030001C001C000E000F000F700FF80FF80FF8
0FF00E401C201C183007E0101D7E9B15>I<300C3FF83FF03FC020002000200020002000200023
E024302818301C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D
7E9B15>53 D<60F0F0600000000000000000000060F0F06004127C910C>58
D<0FE03038401CE00EF00EF00EF00E000C001C0030006000C00080018001000100010001000100
01000000000000000000000003000780078003000F1D7E9C14>63 D<0006000000060000000600
00000F0000000F0000000F00000017800000178000001780000023C0000023C0000023C0000041
E0000041E0000041E0000080F0000080F0000180F8000100780001FFF80003007C0002003C0002
003C0006003E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65
D<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00780F01
F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F001E0F001E0F00
3C0F0078FFFFE0181C7E9B1D>I<001F808000E0618001801980070007800E0003801C0003801C
00018038000180780000807800008070000080F0000000F0000000F0000000F0000000F0000000
F0000000F0000000F0000000700000807800008078000080380000801C0001001C0001000E0002
00070004000180080000E03000001FC000191E7E9C1E>I<FFFFC0000F00F0000F003C000F000E
000F0007000F0007000F0003800F0003C00F0001C00F0001C00F0001E00F0001E00F0001E00F00
01E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C00F0003C00F0003800F0007800F
0007000F000E000F001C000F007000FFFFC0001B1C7E9B20>I<FFFFFC0F003C0F000C0F00040F
00040F00060F00020F00020F02020F02000F02000F02000F06000FFE000F06000F02000F02000F
02000F02010F00010F00020F00020F00020F00060F00060F000C0F003CFFFFFC181C7E9B1C>I<
FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02040F02000F02000F02000F0600
0FFE000F06000F02000F02000F02000F02000F00000F00000F00000F00000F00000F00000F0000
0F8000FFF800161C7E9B1B>I<001F808000E0618001801980070007800E0003801C0003801C00
018038000180780000807800008070000080F0000000F0000000F0000000F0000000F0000000F0
000000F000FFF0F0000F80700007807800078078000780380007801C0007801C0007800E000780
07000B800180118000E06080001F80001C1E7E9C21>I<FFF3FFC00F003C000F003C000F003C00
0F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC
000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F00
3C000F003C000F003C000F003C00FFF3FFC01A1C7E9B1F>I<FFF00F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
00FFF00C1C7F9B0F>I<FFF03FE00F000F000F000C000F0008000F0010000F0020000F0040000F
0080000F0100000F0200000F0400000F0E00000F1F00000F2F00000F2780000F4780000F83C000
0F01E0000F01E0000F00F0000F00F8000F0078000F003C000F003C000F001E000F001F000F001F
80FFF07FF01C1C7E9B20>75 D<FFF8000F80000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00080F00080F00080F00
180F00180F00100F00300F00700F01F0FFFFF0151C7E9B1A>I<FF8000FF800F8000F8000F8000
F8000BC00178000BC00178000BC001780009E002780009E002780008F004780008F004780008F0
047800087808780008780878000878087800083C107800083C107800083C107800081E20780008
1E207800081E207800080F407800080F4078000807807800080780780008078078000803007800
1C03007800FF8307FF80211C7E9B26>I<FF007FC00F800E000F8004000BC0040009E0040009E0
040008F0040008F8040008780400083C0400083C0400081E0400080F0400080F04000807840008
07C4000803C4000801E4000801E4000800F40008007C0008007C0008003C0008003C0008001C00
08000C001C000C00FF8004001A1C7E9B1F>I<003F800000E0E0000380380007001C000E000E00
1C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001
E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003803C0007801C00
07000E000E0007001C000380380000E0E000003F80001B1E7E9C20>I<FFFF800F00E00F00780F
003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00E00FFF800F00000F
00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000FFF000171C7E9B
1C>I<FFFF00000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E00
0F001C000F003C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F0078000F0078
000F0078000F0078000F0078000F0078000F0078100F0078100F0038100F003C20FFF01C200000
07C01C1D7E9B1F>82 D<07E0801C1980300580700380600180E00180E00080E00080E00080F000
00F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001
C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F
00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E>I<FFF07FC00F000E00
0F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F00
04000700080007800800038010000180100000C020000070C000001F00001A1D7E9B1F>I<FFE0
0FF01F0003C00F0001800F0001000F800300078002000780020003C0040003C0040003C0040001
E0080001E0080001F0080000F0100000F0100000F830000078200000782000003C4000003C4000
003C4000001E8000001E8000001F8000000F0000000F00000006000000060000000600001C1D7F
9B1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F001F001007801F0020
0780278020078027802003C027804003C043C04003C043C04003E043C04001E081E08001E081E0
8001E081E08000F100F10000F100F10000F100F100007900FA00007A007A00007A007A00003E00
7C00003C003C00003C003C00003C003C00001800180000180018000018001800281D7F9B2B>I<
08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>92
D<0810204040808080B0F87830050C7D9C0C>96 D<1FC000307000783800781C00301C00001C00
001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E
9115>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C
001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C00C01C01
C01C01801E030019060010F800131D7F9C17>I<07E00C301878307870306000E000E000E000E0
00E000E00060007004300418080C3007C00E127E9112>I<003F00000700000700000700000700
00070000070000070000070000070000070003E7000C1700180F00300700700700600700E00700
E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E0131D7E9C17>
I<03E00C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803E00F12
7F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C38
C01C3880181800381C00381C00381C00381C001818001C38000C300013C0001000003000001800
001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C
7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C
7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C00180000000000000000000000
00000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF
80091D7F9C0C>I<00C001E001E000C000000000000000000000000000000FE000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F1C0
61803E000B25839C0D>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C
00001C00001C3FC01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C
38001C3C001C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>I<FC001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C001C01C01C00
1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C
001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<FC7C001C8700
1D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C0380FF9FF014127F9117>I<03F0000E1C00180600300300700380600180E001C0E001
C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115>I<FC
7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C
01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00001C0000FF800013
1A7F9117>I<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700E00700
E00700600700700700300F00180F000C370007C700000700000700000700000700000700000700
000700003FE0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C001C00
1C001C001C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00FF000F8
80388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C00FFE0
1C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910
>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C01001C01000E0200
0E020007040007040007040003880003880003D80001D00001D00000E00000E00000E000004000
13127F9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E118200
0711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C0700001803000008020
001B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F00000700000780000
F800009C00010E00020E000607000403801E07C0FF0FF81512809116>I<FF07E03C03801C0100
1C01000E02000E020007040007040007040003880003880003D80001D00001D00000E00000E000
00E000004000004000008000008000F08000F10000F300006600003C0000131A7F9116>I<7FFC
70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F9112
>I E /Ff 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 /Fg 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 /Fh 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 /Fi 53 122 df<007000E001C00380078007000E001E001E003C003C003C00780078007800
78007000F000F000F000F000F000F000F000F000F000F000F000F000700078007800780078003C
003C003C001E001E000E0007000780038001C000E000700C2E7EA112>40
D<E000700038001C001E000E0007000780078003C003C003C001E001E001E001E000E000F000F0
00F000F000F000F000F000F000F000F000F000F000E001E001E001E001E003C003C003C0078007
8007000E001E001C0038007000E0000C2E7DA112>I<787878781830306060E0050A7D830D>44
D<FFC0FFC0FFC00A037F8B0F>I<F0F0F0F004047C830D>I<00030003000700060006000E000C00
0C001C0018001800380030003000700060006000E000C000C001C0018001800180038003000300
0700060006000E000C000C001C0018001800380030003000700060006000E000C000C000102D7D
A117>I<001F0000001F0000003F8000003B8000003B8000007BC0000073C0000071C00000F1E0
0000E1E00000E0E00001E0F00001E0F00001C0F00003C0780003C078000380780007803C000780
3C0007003C000FFFFE000FFFFE000FFFFE001E000F001E000F003C000F803C0007803C00078078
0007C0780003C0780003C0F00003E01B207F9F1E>65 D<FFF800FFFF00FFFF80F00FC0F003E0F0
01E0F000F0F000F0F000F0F000F0F000F0F001E0F003C0F01F80FFFF00FFFF00FFFF80F007E0F0
01E0F000F0F00078F00078F00078F00078F00078F00078F000F0F001F0F007E0FFFFC0FFFF80FF
FC0015207B9F1E>I<001FC000FFF801FFFC03E03C07800C0F00001E00003E00003C00007C0000
780000780000780000F00000F00000F00000F00000F00000F00000F00000F00000780000780000
7800007C00003C00003E00001E00000F000207800E03E03E01FFFC00FFF0001FC017227DA01D>
I<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<780007807C
000F003E001F001E001E000F003C000F807C000780780003C0F00003E1F00001F1E00000F3C000
007FC000007F8000003F0000001F0000001E0000003F0000007F8000007FC00000F3C00001F1E0
0001E0F00003C0F80007C0780007803C000F003E001F001E001E000F003C000F807C0007C07800
03C0F00003E01B207F9F1E>I<F80000F87C0001F03C0001E03E0003E01F0003C00F0007800F80
0F8007C00F0003C01F0003E01E0001F03C0000F07C00007878000078F000003CF000001CE00000
1FE000000FC0000007800000078000000780000007800000078000000780000007800000078000
0007800000078000000780000007800000078000000780001D20809F1E>I<07E03FF87FFC701E
401F000F000F000F003F07FF1FFF7E0FF80FF00FF00FF00FF83F7FFF3FEF1F8F10147E9316>97
D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F1F0
00F7FC00FFFE00FC3E00F80F00F00F00F00780F00780F00780F00780F00780F00780F00780F00F
00F00F00F81F00FC3E00FFFC00F7F800F1E00011207D9F17>I<03F00FFC1FFE3E0E3C02780078
00F000F000F000F000F000F000780078003C013E0F1FFF0FFE03F010147E9314>I<0007800007
8000078000078000078000078000078000078000078000078000078000078007C7800FF7801FFF
803E1F807C0780780780F80780F00780F00780F00780F00780F00780F00780F00780780780780F
803E1F801FFF800FF78007C78011207E9F17>I<03F0000FFC001FFE003E1F003C070078070070
0380FFFF80FFFF80FFFF80F00000F00000F000007000007800003C01003E07001FFF0007FE0001
F80011147F9314>I<007E01FE03FE078007000F000F000F000F000F000F000F00FFF0FFF0FFF0
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F20809F0E
>I<03E0F00FFFF01FFFF03E3E003C1E00780F00780F00780F00780F00780F003C1E003E3E001F
FC003FF80033E0003000003800003FFE003FFF801FFFC03FFFE07803F0F000F0F000F0F000F0F8
01F07E07E03FFFC00FFF0003FC00141E7F9317>I<F000F000F000F000F000F000F000F000F000
F000F000F000F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF00F10207D9F17>I<F0F0F0F00000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F004207D9F0B>I<01E001E001E001E00000000000000000000000000000000001
E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E0
01E001E001E001E001E0C3C0FFC0FF803F000B29839F0C>I<F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F01F00F01E00F03C00F07800F0F000F1E0
00F3C000F78000FFC000FFC000FFE000F9F000F8F000F0F800F07C00F07C00F03E00F01E00F01F
00F00F8011207D9F16>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F004207D9F0B>I<F0FC07E0F3FE1FF0F7FF3FF8FE0FF07CF807C03CF807C03CF007803C
F007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF00780
3CF007803CF007803CF007803C1E147D9325>I<F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10147D9317>I<01F80007FE001FFF803F0F
C03C03C07801E07801E0F000F0F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03F0F
C01FFF8007FE0001F80014147F9317>I<F1F000F7FC00FFFE00FC3E00F81F00F00F00F00F80F0
0780F00780F00780F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000111D7D9317>I<03C7800FF780
1FFF803E1F807C0F80780780780780F00780F00780F00780F00780F00780F00780F80780780780
7C0F803E1F801FFF800FF78007C780000780000780000780000780000780000780000780000780
000780111D7E9317>I<F0E0F3E0F7E0FF00FC00FC00F800F800F000F000F000F000F000F000F0
00F000F000F000F000F0000B147D9310>I<07F01FFC3FFC780C7800780078007C003FC01FF00F
F803F8007C003C003CC03CF07CFFF87FF00FC00E147F9311>I<1E001E001E001E001E001E00FF
F0FFF0FFF01E001E001E001E001E001E001E001E001E001E001E001E001E001E201FF00FF007C0
0C1A7F9910>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01F
F03FFFFF7FEF3F0F10147D9317>I<F003C0F003C07803807807807807803C0F003C0F003C0F00
1E0E001E1E001E1E000E1C000F3C000F3C0007380007380007380003B00003F00001E00012147F
9315>I<F01F00F0F01F80F0F01B80F0781B81E0783B81E0783BC1E07839C1E03C31C3C03C71C3
C03C71E3C01C70E3801E60E3801E60E7801EE0E7800EE077000EC077000EC0770006C0760007C0
3E0007803E001C147F931F>I<7801E07C03C03E07801E0F000F0F00079E0003FC0003F80001F8
0000F00001F00001F80003FC00079E000F0F000E0F001E07803C03C07801E0F801F01414809315
>I<F003C0F003C07807807807807C07803C0F003C0F001E0F001E1E000E1E000F1C000F1C0007
3C0007380003B80003B80003B00001B00001F00000E00000E00001C00001C00003C00003800007
80007F00007E00007C0000121D7F9315>I E /Fj 21 122 df<7FF0FFE07FE00C037D8A10>45
D<00F1800389C00707800E03801C03803C0380380700780700780700780700F00E00F00E00F00E
00F00E20F01C40F01C40703C40705C40308C800F070013147C9317>97 D<07803F800700070007
0007000E000E000E000E001C001C001CF01D0C3A0E3C0E380F380F700F700F700F700FE01EE01E
E01EE01CE03CE038607060E031C01F0010207B9F15>I<007E0001C1000300800E07801E07801C
07003C0200780000780000780000F00000F00000F00000F00000F0000070010070020030040018
380007C00011147C9315>I<0000780003F80000700000700000700000700000E00000E00000E0
0000E00001C00001C000F1C00389C00707800E03801C03803C0380380700780700780700780700
F00E00F00E00F00E00F00E20F01C40F01C40703C40705C40308C800F070015207C9F17>I<007C
01C207010E011C013C013802780C7BF07C00F000F000F000F0007000700170023804183807C010
147C9315>I<003C6000E27001C1E00380E00700E00F00E00E01C01E01C01E01C01E01C03C0380
3C03803C03803C03803C07003C07001C0F001C17000C2E0003CE00000E00000E00001C00001C00
301C00783800F0700060E0003F8000141D7E9315>103 D<00C001E001E001C000000000000000
000000000000000E003300230043804300470087000E000E000E001C001C001C00384038803080
7080310033001C000B1F7C9E0E>105 D<01E0000FE00001C00001C00001C00001C00003800003
80000380000380000700000700000703C00704200E08E00E11E00E21E00E40C01C80001D00001E
00001FC00038E000387000387000383840707080707080707080703100E03100601E0013207D9F
15>107 D<03C01FC0038003800380038007000700070007000E000E000E000E001C001C001C00
1C0038003800380038007000700070007100E200E200E200E200640038000A207C9F0C>I<1C0F
80F0002630C318004740640C004780680E004700700E004700700E008E00E01C000E00E01C000E
00E01C000E00E01C001C01C038001C01C038001C01C038001C01C0708038038071003803806100
380380E10038038062007007006600300300380021147C9325>I<1C0F802630C0474060478060
4700704700708E00E00E00E00E00E00E00E01C01C01C01C01C01C01C0384380388380308380708
3803107003303001C016147C931A>I<007C0001C3000301800E01C01E01C01C01E03C01E07801
E07801E07801E0F003C0F003C0F003C0F00780F00700700F00700E0030180018700007C0001314
7C9317>I<01C1E002621804741C04781C04701E04701E08E01E00E01E00E01E00E01E01C03C01
C03C01C03C01C0380380780380700380E003C1C0072380071E000700000700000E00000E00000E
00000E00001C00001C0000FFC000171D809317>I<00F0400388C00705800E03801C03803C0380
380700780700780700780700F00E00F00E00F00E00F00E00F01C00F01C00703C00705C0030B800
0F380000380000380000700000700000700000700000E00000E0000FFE00121D7C9315>I<1C1E
002661004783804787804707804703008E00000E00000E00000E00001C00001C00001C00001C00
0038000038000038000038000070000030000011147C9313>I<00FC030206010C030C070C060C
000F800FF007F803FC003E000E700EF00CF00CE008401020601F8010147D9313>I<018001C003
8003800380038007000700FFF007000E000E000E000E001C001C001C001C003800380038003820
704070407080708031001E000C1C7C9B0F>I<0E00C03300E02301C04381C04301C04701C08703
800E03800E03800E03801C07001C07001C07001C07101C0E20180E20180E201C1E200C264007C3
8014147C9318>I<0E03803307802307C04383C04301C04700C08700800E00800E00800E00801C
01001C01001C01001C02001C02001C04001C04001C08000E300003C00012147C9315>I<0E00C0
3300E02301C04381C04301C04701C08703800E03800E03800E03801C07001C07001C07001C0700
1C0E00180E00180E001C1E000C3C0007DC00001C00001C00003800F03800F07000E06000C0C000
4380003E0000131D7C9316>121 D E /Fk 46 122 df<000078007C7800FC7801FC7803C00003
8000078000078000078000078000078000078000078000078000FFFC78FFFC78FFFC7807807807
807807807807807807807807807807807807807807807807807807807807807807807807807807
8078078078078078078078078078152480A31A>12 D<787878781830306060E0050A7C830E>44
D<F0F0F0F004047B830E>46 D<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003C003C0
03C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0FFFFFF
FFFFFF10227CA118>49 D<03F0000FFC001FFE003C1F003007807007C06003C0E003E0C001E040
01E04001E00001E00001E00001E00003C00003C0000780000780000F00001E00003C0000780000
F00001E00001C0000380000700000E00001C0000380000700000FFFFE0FFFFE0FFFFE013227EA1
18>I<01F00007FC001FFF003E0F003807807003C02003C02003C00003C00003C00003C0000780
000780000F00001E0003FC0003F80003FE00000F000007800003C00003C00001E00001E00001E0
0001E00001E08001E0C003C0E003C07007803C0F801FFF000FFC0003F00013237EA118>I<001F
00001F00002F00002F00006F0000EF0000CF0001CF0001CF00038F00038F00078F00070F000F0F
000E0F001E0F003C0F003C0F00780F00780F00F00F00FFFFF8FFFFF8FFFFF8000F00000F00000F
00000F00000F00000F00000F00000F00000F0015217FA018>I<3FFF803FFF803FFF803C00003C
00003C00003C00003C00003C00003C00003C00003C00003CF8003FFE003FFF003F0F803E07803C
03C03803C00001E00001E00001E00001E00001E00001E00001E04003C04003C0E003C07007807C
1F003FFE000FFC0003F00013227EA018>I<007E0001FF0003FF0007C1000F00001E00001E0000
3C00003C000078000078000078F800F1FE00F7FF00FF0F80FC0780F803C0F803C0F801C0F001E0
F001E0F001E0F001E0F001E07001E07001E07801E07803C03803C03C03801C07801F0F000FFE00
07FC0001F00013237EA118>I<001F0000001F0000003F8000003F8000003B8000007BC0000073
C0000071C00000F1E00000F1E00000E0E00001E0F00001E0F00001C0F00003C0780003C0780003
80780007803C0007803C0007003C000F001E000F001E000FFFFE001FFFFF001FFFFF001C000F00
3C0007803C00078038000780780003C0780003C0700003C0F00001E0F00001E0E00001E01C237E
A220>65 D<000FF000007FFC0000FFFF0001F01F0003C00700078000000F0000001E0000003E00
00003C0000003C000000780000007800000078000000F0000000F0000000F0000000F0000000F0
000000F0000000F0000000F0000000F00000007800000078000000780000003C0000003C000000
3E0000001E0000000F0000000780008003C0038001F00F8000FFFF00007FFC00000FF00019257D
A31F>67 D<FFFE0000FFFFC000FFFFE000F003F000F000F800F0007C00F0003E00F0001E00F000
0F00F0000F00F0000780F0000780F0000780F00003C0F00003C0F00003C0F00003C0F00003C0F0
0003C0F00003C0F00003C0F00003C0F0000380F0000780F0000780F0000780F0000F00F0001F00
F0001E00F0003C00F000FC00F003F800FFFFE000FFFFC000FFFE00001A237BA223>I<FFFFF0FF
FFF0FFFFF0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000FFFFE0FFFFE0FFFFE0F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000FFFFF8FFFFF8FFFFF815237BA21D>I<F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237CA20D>73
D<FC00007EFE0000FEFE0000FEFE0000FEF70001DEF70001DEF70001DEF78003DEF380039EF380
039EF3C0079EF3C0079EF1C0071EF1C0071EF1E00F1EF0E00E1EF0E00E1EF0F01E1EF0F01E1EF0
701C1EF0783C1EF0783C1EF038381EF03C781EF03C781EF01C701EF01C701EF01EF01EF00EE01E
F00EE01EF00FE01EF007C01EF007C01EF007C01EF000001E1F237BA22A>77
D<FC001EFE001EFE001EFE001EF7001EF7001EF3801EF3801EF3C01EF1C01EF1C01EF1E01EF0E0
1EF0F01EF0F01EF0781EF0781EF0381EF03C1EF03C1EF01E1EF01E1EF00E1EF00F1EF0071EF007
1EF0079EF0039EF0039EF001DEF001DEF000FEF000FEF000FEF0007E17237BA222>I<001FC000
007FF00001FFFC0003F07E0007C01F000F800F801F0007C01E0003C03C0001E03C0001E0780000
F0780000F0780000F070000070F0000078F0000078F0000078F0000078F0000078F0000078F000
0078F0000078F0000078780000F0780000F0780000F07C0001F03C0001E03E0003E01E0003C01F
0007C00F800F8007C01F0003F07E0001FFFC00007FF000001FC0001D257DA324>I<FFFE00FFFF
80FFFFC0F003E0F000F0F00078F00078F0003CF0003CF0003CF0003CF0003CF0003CF00078F000
78F000F0F003E0FFFFC0FFFF80FFFE00F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F0000016237BA21F>I<FFFC00FFFF80FFFFC0F0
03E0F000F0F00078F00038F0003CF0003CF0003CF0003CF0003CF00038F00078F000F0F003E0FF
FFC0FFFF80FFFE00F01E00F00F00F00700F00780F00380F003C0F001E0F001E0F000F0F000F0F0
0078F00038F0003CF0001EF0001EF0000F18237BA21F>82 D<00FE0003FFC007FFE00F81E01E00
603C00003C00007800007800007800007800007800007C00003C00003F00001FC0000FFC0007FF
0001FF80003FC00007E00001F00000F00000F8000078000078000078000078000078000078C000
F0E000F0F801E07E07C03FFF800FFF0001FC0015257EA31B>I<FFFFFFF0FFFFFFF0FFFFFFF000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F00001C237EA221>I<F0003CF0003CF0003CF0003CF0003CF0003CF0003CF0
003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0
003CF0003CF0003CF0003CF0003CF0003CF0003C7800787800787800783C00F01E01E01F87E00F
FFC003FF0000FC0016247BA221>I<07E01FF83FFC381E201E000F000F000F000F00FF07FF1FFF
3E0F780FF00FF00FF00FF00FF83F7FFF3FEF1F8F10167E9517>97 D<F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F1F000F7FC00FFFE00FC1F
00F80F00F00780F00780F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F00780F007
80F80F00FC3E00FFFE00F7F800F1F00012237CA219>I<01FC0007FF000FFF801F03803C018078
0000780000700000F00000F00000F00000F00000F00000F000007800007800007800003C00401F
03C00FFFC007FF8001FC0012167E9516>I<0003C00003C00003C00003C00003C00003C00003C0
0003C00003C00003C00003C00003C00003C003E3C00FFBC01FFFC03F0FC03C07C07803C07803C0
F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C07803C07803C03C07C03E0FC01FFFC0
0FFBC003E3C012237EA219>I<03F00007FC001FFE003E0F003C0780780380780380F001C0FFFF
C0FFFFC0FFFFC0F00000F00000F000007000007800007800003C00801F07800FFF8007FF0001F8
0012167E9516>I<003F00FF01FF03C0038007800780078007800780078007800780FFF8FFF8FF
F80780078007800780078007800780078007800780078007800780078007800780078007800780
102380A20F>I<01F07807FFF80FFFF81F1F001E0F003C07803C07803C07803C07803C07801E0F
001F1F000FFE001FFC0019F0003800003800003C00001FFE001FFFC01FFFE03FFFF07801F07800
F8F00078F00078F00078F000787800F03E03E01FFFC00FFF8001FC0015217F9518>I<F000F000
F000F000F000F000F000F000F000F000F000F000F000F1F8F3FCF7FEFE1EF80FF80FF00FF00FF0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10237CA219>I<F0F0F0F000
0000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>I<00F0
00F000F000F000000000000000000000000000000000000000F000F000F000F000F000F000F000
F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F0
80F0E3E0FFE07FC01F000C2D83A20D>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>108 D<F0F807C0F3FE1FF0F7FF3FF8FE0F7078FC
0FE07CF807C03CF807C03CF007803CF007803CF007803CF007803CF007803CF007803CF007803C
F007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C1E167C9527>I<
F1F8F3FCF7FEFE1EF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00F10167C9519>I<01FC0007FF000FFF801F07C03C01E07800F07800F0700070F00078
F00078F00078F00078F00078F000787800F07800F07C01F03E03E01F07C00FFF8007FF0001FC00
15167F9518>I<F1F000F7FC00FFFE00FC3F00F80F00F00780F00780F007C0F003C0F003C0F003
C0F003C0F003C0F003C0F007C0F00780F00F80F80F00FC3E00FFFE00F7F800F1F000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F0000012207C9519>I<03E3C007FBC00F
FFC01F0FC03C07C07C03C07803C0F803C0F003C0F003C0F003C0F003C0F003C0F003C0F803C078
03C07803C03C07C03F0FC01FFFC00FFBC003E3C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C012207E9519>I<F0E0F3E0F7E0FF00FE00FC00F800F800F000F000F0
00F000F000F000F000F000F000F000F000F000F000F0000B167C9511>I<07F01FFC3FFE3C0E78
06780078007C003F003FF01FF80FFC01FE001F000F000F000FC00FF81EFFFE3FFC0FF010167F95
13>I<0F000F000F000F000F000F00FFF8FFF8FFF80F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F080F1C07FC07F803E00E1C7F9B12>I<F00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01FF83F7FFF7FCF1F0F10167C9519>I<
F001E0F001E07803C07803C07803C03C07803C07803C07801E07001E0F001E0F000E0E000F1E00
0F1E00071C00079C0007BC0003B80003B80003F80001F00001F00013167F9516>I<F007803CF0
0FC03CF00FC03C780DC078781DC078781DE078781CE0783C18E0F03C38E0F03C38F0F01C38F0E0
1E3871E01E3071E01E7079E00E7079C00E7039C00F603BC007603B8007601B8007C01F8007C01F
8003C01F001E167F9521>I<7801F07C01E03E03C01E07C00F0780078F0007DE0003FC0001FC00
00F80000700000F80001FC0003DC00039E00078F000F07801E07801E03C03C01E07800F0F800F8
1516809516>I<F001E0F001E07803C07803C07C03C03C07803C07801E07801E07001E0F000F0F
000F0E00070E00079E00039C00039C00039C0001980001D80000F80000F00000F00000F00000E0
0000E00001E00001C00001C0000380007F80007F00007E000013207F9516>I
E /Fl 28 90 df<FFC0FFC00B027D8A0F>45 D<3078F8787005057C840D>I<000C001C00FC0F38
0038003800380038003800700070007000700070007000E000E000E000E000E000E001C001C001
C001C001C001C0038003C0FFFE0F1E7C9D17>49 D<003F8000C1E00100F0020078040078040078
0F007C0F807C0F807C0F00780600780000F80000F00001E00001C0000380000700000E00001C00
00380000600000C0000180000300200600200800401000403FFFC07FFF80FFFF80161E7E9D17>
I<007F000183C00201E00400F00700F00F00F00F01F00F01F00001E00001E00003C00003800007
00000E0000F800000E000007000007800007C00003C00007C03007C07807C0F807C0F807C0F007
80800F00400E00201C0018780007E000141F7D9D17>I<0000600000600000E00001C00003C000
05C0000DC00009C00011C000238000438000C38000838001038002038004070008070018070010
0700200700400700FFFFF0000E00000E00000E00000E00000E00001C00001E0001FFE0141E7E9D
17>I<01803001FFE003FFC003FF0003FC00020000020000020000040000040000040000047C00
0587000603800C01800801C00001C00001E00001E00001E00001E07003C0F803C0F003C0E00380
800780400700400E00201C0018700007C000141F7D9D17>I<000F8000704000C0200180E00301
E00701E00E00C01E00001C00003C000038000078F800790E007A07007C0300F80380F80380F003
C0F003C0F003C0F003C0F00780E00780E00780E00700E00F00600E00701C0030180018700007C0
00131F7C9D17>I<2000003FFFE07FFFC07FFF80400100C0020080020080040000080000100000
20000040000040000080000180000300000300000700000600000E00000E00001E00001C00001C
00003C00003C00003C0000780000780000780000300000131F799D17>I<000010000000180000
0038000000380000007800000078000000FC000001BC0000013C0000033C0000023C0000063C00
00043E0000081E0000081E0000101E0000101E0000201E0000200F0000400F0000400F0000FFFF
0000800F0001000F8001000780020007800200078004000780040007800C0007C03E0007C0FF80
7FFC1E207E9F22>65 D<0001F808000E061800380138007000F801E0007803C000700780003007
8000300F0000301F0000301E0000303E0000203C0000007C0000007C0000007C0000007C000000
F8000000F8000000F8000000F8000000F80000007800004078000080780000803C0000803C0001
001C0002000E00020006000C000300100001C0E000003F00001D217B9F21>67
D<07FFFF00007C01E0003C00F0003C00780078003C0078003C0078001E0078001E0078001E0078
001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F01E0001E01E0003E01E0003E01
E0003E01E0003C01E0007C03C0007803C000F003C000F003C001E003C003C003C0078007800F00
07803C00FFFFE000201F7E9E23>I<07FFFFF8007C0078003C0038003C00180078001800780008
0078000800780008007800080078080800F0100000F0100000F0100000F0300000FFF00000F070
0001E0200001E0200001E0200001E0200001E0000801E0001003C0001003C0001003C0002003C0
002003C0006003C000C0078001C0078007C0FFFFFF801D1F7E9E1F>I<07FFFFF8007C0078003C
0038003C001800780018007800080078000800780008007800080078000800F0100000F0100000
F0100000F0300000F0700000FFF00001E0600001E0200001E0200001E0200001E0200001E00000
03C0000003C0000003C0000003C0000003C0000003C000000780000007C00000FFFE00001D1F7E
9E1E>I<0001FC04000F030C003C009C0070007C00E0003C01C0003803800018078000180F0000
181F0000181E0000183E0000103C0000007C0000007C0000007C0000007C000000F8000000F800
0000F8007FFCF80003E0780001E0780001E0780003C0780003C03C0003C03C0003C01C0003C00E
0007C007000B800380118001E06080003F80001E217B9F24>I<07FFC7FFC0007C00F800003C00
7800003C007800007800F000007800F000007800F000007800F000007800F000007800F00000F0
01E00000F001E00000F001E00000F001E00000FFFFE00000F001E00001E003C00001E003C00001
E003C00001E003C00001E003C00001E003C00003C007800003C007800003C007800003C0078000
03C007800003C007800007800F000007C00F8000FFF8FFF800221F7E9E22>I<07FFE0007C0000
3C00003C0000780000780000780000780000780000780000F00000F00000F00000F00000F00000
F00001E00001E00001E00001E00001E00001E00003C00003C00003C00003C00003C00003C00007
800007C000FFFC00131F7F9E10>I<07FFF000007E0000003C0000003C00000078000000780000
0078000000780000007800000078000000F0000000F0000000F0000000F0000000F0000000F000
0001E0000001E0000001E0000001E0000001E0008001E0010003C0010003C0010003C0030003C0
020003C0060003C0060007801E0007807C00FFFFFC00191F7E9E1C>76 D<07FC0000FFC0007C00
00F800003C00017800003C00017800004E0002F000004E0002F000004E0004F000004E0004F000
004E0008F000004E0008F00000870011E00000870011E00000870021E00000870021E000008700
41E00000838041E00001038083C00001038083C00001038103C00001038203C0000101C203C000
0101C403C0000201C40780000201C80780000201C80780000201D00780000200F00780000600E0
0780000600E00F00000F00C00F8000FFE0C1FFF8002A1F7E9E2A>I<07FC01FFC0003E003E0000
3E001800003E001800004F001000004F001000004780100000478010000043C010000043C01000
0083C020000081E020000081E020000080F020000080F020000080782000010078400001007C40
0001003C400001003C400001001E400001001E400002000F800002000F800002000F8000020007
80000200078000060003800006000300000F00010000FFE0010000221F7E9E22>I<0003F80000
1E0E000038070000E0038001C001C003C001E0078000E00F0000F00F0000F01E0000F01E0000F8
3E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8F80001F0F80001F0F80001F0F80001
F0F80003E0780003E0780003C0780007C07C0007803C000F003C001E001E001C000E0038000700
F00003C3C00000FE00001D217B9F23>I<07FFFF00007C03C0003C01E0003C00F0007800F00078
00F8007800F8007800F8007800F8007800F000F001F000F001E000F003C000F0078000F00F0000
FFF80001E0000001E0000001E0000001E0000001E0000001E0000003C0000003C0000003C00000
03C0000003C0000003C000000780000007C00000FFFC00001D1F7E9E1F>I<07FFFC00007C0700
003C03C0003C01E0007801E0007801F0007801F0007801F0007801F0007801E000F003E000F003
C000F0078000F00F0000F03C0000FFF00001E0300001E0380001E01C0001E01C0001E01C0001E0
1E0003C03E0003C03E0003C03E0003C03E0003C03E0003C03E0207803E0407C01F04FFFC0F1800
0003E01F207E9E21>82 D<003F040060CC01803C03801C03001C0700180600080E00080E00080E
00080E00000F00000F80000FE00007FE0003FF8001FFC0007FE00007E00001E00000E00000F000
00F04000E04000E04000E04000E06000C0600180E00380F80300C60C0081F80016217D9F19>I<
3FFFFFF03C0780F03007803060078030400F0010400F0010C00F0010800F0010800F0010800F00
10001E0000001E0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C
0000003C0000003C000000780000007800000078000000780000007800000078000000F0000001
F800007FFFE0001C1F7A9E21>I<FFFC3FF80F8007C007800300078003000F0002000F0002000F
0002000F0002000F0002000F0002001E0004001E0004001E0004001E0004001E0004001E000400
3C0008003C0008003C0008003C0008003C0008003C000800380010003800100038001000380020
003C0040001C0040001C0080000E0100000706000001F800001D20799E22>I<03FFC0FFC0007F
007E00003E003800001E003000001E002000000F004000000F008000000F810000000782000000
07C600000003C400000003E800000001F000000001F000000000F000000000F800000000F80000
00017C000000023C000000043C0000000C1E000000081E000000101F000000200F000000400F80
0000C0078000008007C000010003C000070003E0001F8007E000FFE01FFE00221F7F9E22>88
D<FFF003FF1F8000F80F0000600F8000400780008007C0018003C0010003E0020001E0040001F0
0C0001F0080000F0100000F8200000786000007C4000003C8000003F0000001F0000001E000000
1E0000001E0000001C0000003C0000003C0000003C0000003C0000003C00000038000000780000
007C00000FFFC000201F7A9E22>I E /Fm 1 16 df<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E010127D9317>15 D E /Fn
28 122 df<0000600000E00000E00001C00001C000038000038000038000070000070000070000
0E00000E00001C00001C00001C0000380000380000380000700000700000E00000E00000E00001
C00001C0000380000380000380000700000700000700000E00000E00001C00001C00001C000038
0000380000380000700000700000E00000E00000C00000132D7DA11A>47
D<07F8001FFE00381F80780F80FC0FC0FC0FC0FC0FC0780FC0301F80001F00003E00007C000070
0000E00000E00000C00000C00000C00000C00000C00000C00000000000000000000000000001C0
0007F00007F00007F00007F00007F00001C00012207D9F19>63 D<0000E000000000E000000001
F000000001F000000001F000000003F800000003F800000006FC00000006FC0000000EFE000000
0C7E0000000C7E000000183F000000183F000000303F800000301F800000701FC00000600FC000
00600FC00000C007E00000FFFFE00001FFFFF000018003F000018003F000030001F800030001F8
00060001FC00060000FC000E0000FE00FFE00FFFE0FFE00FFFE0231F7E9E28>65
D<FFFFFFE0FFFFFFE007E007E007E001E007E000E007E0006007E0007007E0003007E0003007E0
603007E0603007E0600007E0E00007E1E00007FFE00007FFE00007E1E00007E0E00007E0600007
E0600C07E0600C07E0000C07E0001807E0001807E0001807E0003807E0007807E000F807E003F0
FFFFFFF0FFFFFFF01E1F7E9E22>69 D<FFFFFFFF07E007E007E007E007E007E007E007E007E007
E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0FFFFFFFF
101F7E9E14>73 D<FFE000003FF8FFF000007FF807F000007F0006F80000DF0006F80000DF0006
F80000DF00067C00019F00067C00019F00063E00031F00063E00031F00061F00061F00061F0006
1F00060F800C1F00060F800C1F000607C0181F000607C0181F000607C0181F000603E0301F0006
03E0301F000601F0601F000601F0601F000600F8C01F000600F8C01F0006007D801F0006007D80
1F0006003F001F0006003F001F0006003F001F0006001E001F00FFF01E03FFF8FFF00C03FFF82D
1F7E9E32>77 D<FFFFFE00FFFFFF8007E00FE007E003F007E001F807E001F807E001FC07E001FC
07E001FC07E001FC07E001FC07E001F807E001F807E003F007E00FE007FFFF8007FFFE0007E000
0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0
000007E00000FFFF0000FFFF00001E1F7E9E24>80 D<03FC080FFF381E03F83800F87000787000
38F00038F00018F00018F80000FC00007FC0007FFE003FFF801FFFC00FFFF007FFF000FFF80007
F80000FC00007C00003CC0003CC0003CC0003CE00038E00078F80070FE01E0E7FFC081FF00161F
7D9E1D>83 D<07FC001FFF003F0F803F07C03F03E03F03E00C03E00003E0007FE007FBE01F03E0
3C03E07C03E0F803E0F803E0F803E0FC05E07E0DE03FF9FE0FE07E17147F9319>97
D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F1F
C01F7FF01FE0F81F807C1F007E1F003E1F003E1F003F1F003F1F003F1F003F1F003F1F003F1F00
3E1F003E1F007C1F807C1EC1F81C7FE0181F8018207E9F1D>I<01FE0007FF801F0FC03E0FC03E
0FC07C0FC07C0300FC0000FC0000FC0000FC0000FC0000FC00007C00007E00003E00603F00C01F
81C007FF0001FC0013147E9317>I<0007F80007F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F801F8F80FFEF81F83F83E01F87E00F87C00F87C00F8FC00F8FC00F8
FC00F8FC00F8FC00F8FC00F87C00F87C00F87E00F83E01F81F07F80FFEFF03F8FF18207E9F1D>
I<01FE0007FF801F83E03F01F07E00F07E00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00
007C00007E00003E00183F00380F807007FFE000FF8015147F9318>I<FF0000FF00001F00001F
00001F00001F00001F00001F00001F00001F00001F00001F00001F0FC01F3FE01F61F01FC0F81F
80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F8FFE3FFFFE3FF18207D9F1D>104 D<1C003F007F007F007F003F001C000000000000000000
00000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
00FFE0FFE00B217EA00E>I<FF0000FF00001F00001F00001F00001F00001F00001F00001F0000
1F00001F00001F00001F01FE1F01FE1F00F01F01C01F03801F07001F1E001F38001F7C001FFE00
1FFF001F1F001E0F801E07C01E07E01E03F01E01F01E00F8FFC3FFFFC3FF18207E9F1C>107
D<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B207E9F0E>I<FE0FE03F80FE
1FF07FC01E70F9C3E01E407D01F01E807E01F01F807E01F01F007C01F01F007C01F01F007C01F0
1F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01
F01F007C01F0FFE3FF8FFEFFE3FF8FFE27147D932E>I<FE0FC0FE3FE01E61F01EC0F81E80F81F
00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FF
E3FFFFE3FF18147D931D>I<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007E
FC007EFC007EFC007EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>
I<FF1FC0FF7FF01FE1F81F80FC1F007E1F007E1F003E1F003F1F003F1F003F1F003F1F003F1F00
3F1F003E1F007E1F007C1F80FC1FC1F81F7FE01F1F801F00001F00001F00001F00001F00001F00
001F0000FFE000FFE000181D7E931D>I<FE3E00FE7F801ECFC01E8FC01E8FC01F8FC01F03001F
00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0000FFF000FFF00012
147E9316>114 D<0FE63FFE701E600EE006E006F800FFC07FF83FFC1FFE03FE001FC007C007E0
07F006F81EFFFCC7F010147E9315>I<01800180018003800380038007800F803F80FFFCFFFC0F
800F800F800F800F800F800F800F800F800F800F860F860F860F860F8607CC03F801F00F1D7F9C
14>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8
1F00F81F00F81F00F81F01F81F01F80F06F807FCFF03F8FF18147D931D>I<FFE07F80FFE07F80
1F001C000F8018000F80180007C0300007C0300003E0600003E0600001F0C00001F0C00001F9C0
0000F9800000FF8000007F0000007F0000003E0000003E0000001C0000001C000019147F931C>
I<FFE7FE1FE0FFE7FE1FE01F00F007001F00F803000F80F806000F80F8060007C1BC0C0007C1BC
0C0007C1BE0C0003E31E180003E31E180001F60F300001F60F300001F60FB00000FC07E00000FC
07E000007803C000007803C000007803C000003001800023147F9326>I<FFE07F80FFE07F801F
001C000F8018000F80180007C0300007C0300003E0600003E0600001F0C00001F0C00001F9C000
00F9800000FF8000007F0000007F0000003E0000003E0000001C0000001C000000180000001800
0078300000FC300000FC600000C0E00000E1C000007F8000001E000000191D7F931C>121
D E /Fo 36 122 df<FFFEFFFEFFFE0F037F8E14>45 D<F8F8F8F8F805057A8411>I<00180000
380000F80007F800FFF800FFF800F8F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80000F80000F80000F80000F8007FFFF07FFFF07FFFF014
287BA71E>49 D<00FE0003FFC007FFE00FFFF01F03F83C00FC38007E78003E70003EF0001FF000
1F60001F20001F00001F00001F00001F00003E00003E00007C00007C0000F80001F00001E00003
C0000780000F00001E00003C0000780000F00001E00003C0000780000F00001E00003C00007FFF
FF7FFFFF7FFFFF7FFFFF18287EA71E>I<007F000001FFC00007FFF0000FFFF8001FC1F8003E00
7C003C003E0078003E0038003E0010003E0000003E0000003E0000003C0000007C000000FC0000
01F8000007F00000FFE00000FFC00000FFE00000FFF0000001FC0000007C0000003E0000001F00
00001F0000000F8000000F8000000F8000000F8000000F8040000F8060001F00F0001F00F8003F
007E007E003F81FC001FFFF8000FFFF00003FFE000007F000019297EA71E>I<0003F0000007F0
000005F000000DF000000DF000001DF0000039F0000039F0000079F0000079F00000F1F00000F1
F00001E1F00003E1F00003E1F00007C1F00007C1F0000F81F0000F81F0001F01F0001F01F0003E
01F0007C01F0007C01F000F801F000FFFFFF80FFFFFF80FFFFFF80FFFFFF800001F0000001F000
0001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00019277EA61E>I<
3FFFFC3FFFFC3FFFFC3FFFFC3E00003E00003E00003E00003E00003E00003E00003E00003E0000
3E00003E3F003EFFC03FFFE03FFFF03FE1F83F807C3F003E3E003E00003E00001F00001F00001F
00001F00001F00001F00001F20001F60003E70003EF8007C7C00FC3F03F81FFFF00FFFE007FF80
00FE0018287EA61E>I<000FF000003FFC0000FFFC0001FFFC0003F80C0007E000000FC000000F
8000001F0000001E0000003E0000003C0000007C0000007C0000007C3FE000F8FFF000F9FFF800
FBFFFC00FF807E00FF003E00FE003F00FC001F00FC001F00FC000F80F8000F80F8000F80F8000F
80F8000F8078000F807C000F807C000F807C000F003E001F003E001F001F003E001F807C000FC1
FC0007FFF80003FFF00001FFC000007F000019297EA71E>I<FFFFFF80FFFFFF80FFFFFF80FFFF
FF800000078000000F0000001E0000003C0000007C00000078000000F0000001F0000001E00000
03C0000007C00000078000000F8000000F0000001F0000001F0000001E0000003E0000003E0000
007C0000007C0000007C00000078000000F8000000F8000000F8000000F8000000F8000001F000
0001F0000001F0000001F0000001F0000001F0000001F0000019277EA61E>I<0001F000000003
F800000003F800000007FC00000007BC00000007BC0000000F3E0000000F1E0000000F1E000000
1F1F0000001E1F0000001E0F0000003E0F8000003C0F8000003C078000007C07C000007807C000
00F803E00000F803E00000F003E00001F001F00001F001F00001E001F00003E000F80003E000F8
0003C000F80007FFFFFC0007FFFFFC000FFFFFFE000F80003E000F80003E001F00003F001F0000
1F001E00001F003E00000F803E00000F803C00000F807C000007C07C000007C078000007C0F800
0003E0F8000003E0232A7EA928>65 D<FFFFF00000FFFFFC0000FFFFFF0000F8003FC000F80007
E000F80003F000F80001F800F80000FC00F800007C00F800003E00F800001E00F800001F00F800
000F00F800000F80F800000F80F800000780F8000007C0F8000007C0F8000007C0F8000007C0F8
000007C0F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0F800000780F800000F80
F800000F80F800000F80F800001F00F800001F00F800003E00F800007E00F800007C00F80000F8
00F80003F000F80007E000F8003FC000FFFFFF0000FFFFFE0000FFFFF00000222A7BA92B>68
D<FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000FFFFFF80FF
FFFF80FFFFFF80FFFFFF80F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000FFFFFF
F0FFFFFFF0FFFFFFF0FFFFFFF01C2A7BA924>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7AA911>73
D<FE0000007F80FE0000007F80FE0000007F80FF000000FF80FB000000EF80FB800001EF80FB80
0001EF80FB800001EF80F9C00003CF80F9C00003CF80F9C00003CF80F8E000078F80F8E000078F
80F8F0000F8F80F8F0000F8F80F870000F0F80F878001F0F80F878001F0F80F838001E0F80F83C
003E0F80F83C003E0F80F81E007C0F80F81E007C0F80F80E00780F80F80F00F80F80F80F00F80F
80F80700F00F80F80781F00F80F80781F00F80F80381E00F80F803C3E00F80F803C3E00F80F801
C3C00F80F801E7C00F80F800E7800F80F800E7800F80F800E7800F80F8007F000F80F8007F000F
80F8007F000F80F8003E000F80F80000000F80292A7BA934>77 D<FFFFE000FFFFFC00FFFFFF00
F8003F80F8000FC0F80007E0F80001E0F80001F0F80000F0F80000F8F80000F8F80000F8F80000
F8F80000F8F80000F8F80000F0F80001F0F80001F0F80003E0F8000FC0F8003F80FFFFFF00FFFF
FE00FFFFF000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
1D2A7BA926>80 D<FFFFE000FFFFFC00FFFFFF00F8003FC0F80007E0F80001F0F80000F8F80000
F8F800007CF800007CF800007CF800007CF800007CF800007CF80000F8F80000F8F80001F0F800
07F0F8003FE0FFFFFF80FFFFFF00FFFFFC00FFFFF000F801F000F800F800F8007800F8007C00F8
003C00F8003E00F8001F00F8001F00F8000F80F8000780F80007C0F80003E0F80003E0F80001F0
F80001F0F80000F8F800007CF800007CF800003E1F2A7BA927>82 D<FFFFFFFFF0FFFFFFFFF0FF
FFFFFFF0FFFFFFFFF00000F800000000F800000000F800000000F800000000F800000000F80000
0000F800000000F800000000F800000000F800000000F800000000F800000000F800000000F800
000000F800000000F800000000F800000000F800000000F800000000F800000000F800000000F8
00000000F800000000F800000000F800000000F800000000F800000000F800000000F800000000
F800000000F800000000F800000000F800000000F800000000F800000000F800000000F8000000
00F80000242A7EA929>84 D<01FE000FFF803FFFC03FFFE03C03F03001F00001F80000F80000F8
0000F80000F80000F8007FF807FFF81FFFF83FE0F87F00F8FC00F8F800F8F800F8F800F8FC01F8
7E07F87FFFF83FFFF81FFCF80FE0F8151B7E9A1D>97 D<007FC001FFF007FFFC0FFFFC1FC07C1F
00083E00007C00007C00007C0000F80000F80000F80000F80000F80000F80000F800007C00007C
00007E00003E00001F000C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>99
D<00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0000
3E00003E00003E00FC3E03FF3E07FFFE0FFFFE1FC1FE3F007E3E003E7C003E7C003EFC003EF800
3EF8003EF8003EF8003EF8003EF8003EF8003EFC003E7C003E7C003E3E007E3F00FE1FC1FE0FFF
FE07FFBE03FF3E00FC3E172A7EA91F>I<007E0003FF8007FFC00FFFE01F83F03F00F03E00787C
00787C003878003CFFFFFCFFFFFCFFFFFCFFFFFCF80000F80000F800007800007C00007C00003E
00003F000C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>I<001FC0007FC000FFC001FFC0
03F00003E00007C00007C00007C00007C00007C00007C00007C00007C00007C000FFFE00FFFE00
FFFE0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000
07C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000122A7F
A912>I<00F8078003FE7FC00FFFFFC01FFFFFC01F07C0003E03E0003E03E0007C01F0007C01F0
007C01F0007C01F0007C01F0007C01F0003E03E0003E03E0001F07C0001FFFC0003FFF80003BFE
000038F8000078000000780000003C0000003FFFC0003FFFF8001FFFFC001FFFFE003FFFFF007C
007F00F8001F80F8000F80F8000F80F8000F80FC001F807E003F003F80FE003FFFFE000FFFF800
07FFF00000FF80001A287E9A1E>I<F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80000F80000F83F00F8FF80FBFFC0FFFFE0FF07E0FE03F0
FC01F0FC01F0FC01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0
F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0142A7BA91F>I<F8F8F8F8F8000000
00000000000000F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E
>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8052A7CA90E>108 D<F83F003F00F8FFC0FFC0FBFFE3FFE0FFFFF7FFF0FF83F783F0
FE01FE01F8FC00FC00F8FC00FC00F8FC00FC00F8F800F800F8F800F800F8F800F800F8F800F800
F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F8
00F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8251B7B9A30>I<
F83F00F8FF80FBFFC0FFFFE0FF07E0FE03F0FC01F0FC01F0FC01F0F801F0F801F0F801F0F801F0
F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0
F801F0141B7B9A1F>I<007F000001FFC00007FFF0000FFFF8001FC1FC003F007E003E003E007C
001F007C001F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80
7C001F007C001F007E003F003E003E003F007E001FC1FC000FFFF80007FFF00001FFC000007F00
00191B7E9A1E>I<F83F00F9FFC0FBFFE0FFFFF0FF07F0FC01F8F800FCF800FCF8007CF8007EF8
003EF8003EF8003EF8003EF8003EF8003EF8003EF8007CF8007CF800FCFC00F8FC03F8FF07F0FF
FFE0FBFFC0F9FF80F87E00F80000F80000F80000F80000F80000F80000F80000F80000F80000F8
0000F80000F8000017277B9A1F>I<F838F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC00F800F800
F800F800F800F800F800F800F800F800F800F800F800F800F800F800F8000D1B7B9A14>114
D<03FC001FFF803FFFC07FFFC07C07C0F80080F80000F80000F80000FC00007F80007FF8003FFE
001FFF0007FF8000FFC0000FE00007E00003E00003E04003E0E007E0FC0FC0FFFFC07FFF801FFE
0003F800131B7E9A17>I<07C00007C00007C00007C00007C00007C00007C000FFFFC0FFFFC0FF
FFC007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C04007E1C003FFE003FFE001FF8000FC0013227FA1
16>I<F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0
F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F803F0F803F0FC0FF0FFFFF07FFDF0
3FF9F01FC1F0141B7B9A1F>I<7C000FC03E001F803F001F001F803E000F807C0007C0FC0003E0
F80001F1F00001FBE00000FFC000007FC000003F8000001F0000001F0000003F8000007FC00000
FBC00000F3E00001F1F00003E0F80007C07C000F807C000F803E001F001F003E000F807E000FC0
FC0007E01B1B809A1C>120 D<F8000F80FC000F807C001F007E001F003E003E003E003E001F00
3E001F007C001F007C000F807C000F80F80007C0F80007C0F00007C1F00003E1F00003E1E00001
E1E00001E3E00001F3C00000F3C00000F38000007380000073800000370000003F0000003E0000
001E0000001E0000003C0000003C0000003C0000007800000078000000F0000000F000007FE000
007FE000007FC000007F00000019277F9A1C>I E /Fp 12 122 df<FFFFFFFFFFFFC0000000FF
FFFFFFFFFFFE000000FFFFFFFFFFFFFFC00000FFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFC0000
001FFF800007FFFF0000001FFF8000007FFF8000001FFF8000000FFFE000001FFF80000007FFF0
00001FFF80000001FFF800001FFF80000000FFFC00001FFF800000007FFE00001FFF800000003F
FF00001FFF800000001FFF00001FFF800000000FFF80001FFF800000000FFFC0001FFF80000000
07FFC0001FFF8000000007FFE0001FFF8000000003FFE0001FFF8000000003FFF0001FFF800000
0003FFF0001FFF8000000003FFF8001FFF8000000001FFF8001FFF8000000001FFF8001FFF8000
000001FFFC001FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FFFC001FFF80
00000001FFFC001FFF8000000001FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF
8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001F
FF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE00
1FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000001FFFE001FFF8000000001FFFC
001FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FF
F8001FFF8000000001FFF8001FFF8000000001FFF8001FFF8000000003FFF0001FFF8000000003
FFF0001FFF8000000003FFF0001FFF8000000007FFE0001FFF8000000007FFE0001FFF80000000
0FFFC0001FFF800000000FFF80001FFF800000001FFF80001FFF800000003FFF00001FFF800000
003FFE00001FFF800000007FFC00001FFF80000001FFF800001FFF80000003FFF000001FFF8000
000FFFE000001FFF8000007FFFC000001FFF800003FFFF0000FFFFFFFFFFFFFFFE0000FFFFFFFF
FFFFFFF80000FFFFFFFFFFFFFFC00000FFFFFFFFFFFFFE000000FFFFFFFFFFFFC00000004F477C
C65B>68 D<FFFFFFFFFFFF800000FFFFFFFFFFFFFC0000FFFFFFFFFFFFFF0000FFFFFFFFFFFFFF
C000FFFFFFFFFFFFFFF000001FFF80000FFFFC00001FFF800001FFFE00001FFF8000007FFF0000
1FFF8000003FFF80001FFF8000001FFFC0001FFF8000000FFFC0001FFF8000000FFFE0001FFF80
00000FFFE0001FFF80000007FFF0001FFF80000007FFF0001FFF80000007FFF0001FFF80000007
FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF800
1FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF0001FFF80
000007FFF0001FFF80000007FFF0001FFF8000000FFFE0001FFF8000000FFFE0001FFF8000000F
FFC0001FFF8000001FFF80001FFF8000003FFF80001FFF8000007FFF00001FFF800001FFFE0000
1FFF80000FFFF800001FFFFFFFFFFFF000001FFFFFFFFFFFC000001FFFFFFFFFFE0000001FFFFF
FFFFF00000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC0000000
0000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC0000000000000
1FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC0
0000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC0000000
0000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC0000000000000
1FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC0
0000000000001FFFC00000000000FFFFFFFFF800000000FFFFFFFFF800000000FFFFFFFFF80000
0000FFFFFFFFF800000000FFFFFFFFF80000000045477CC651>80 D<0007FFFC000000007FFFFF
C0000001FFFFFFF8000003FFFFFFFE000007FE001FFF000007FF0003FFC0000FFF8001FFE0000F
FF8000FFF0000FFF80007FF0000FFF80007FF8000FFF80007FF80007FF00003FFC0007FF00003F
FC0003FE00003FFC0000F800003FFC00000000003FFC00000000003FFC00000000003FFC000000
00003FFC00000007FFFFFC000000FFFFFFFC000007FFFFFFFC00003FFFE03FFC0000FFFE003FFC
0003FFF0003FFC0007FFC0003FFC000FFF00003FFC001FFE00003FFC003FFC00003FFC007FF800
003FFC007FF800003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00
FFF000003FFC00FFF000007FFC007FF80000FFFC007FF80001EFFC003FFC0003EFFC003FFF0007
CFFF000FFFC03F8FFFF807FFFFFF07FFFC01FFFFFC03FFFC007FFFF001FFFC0003FF80007FF836
2E7DAD3A>97 D<00001FFFC0000000FFFFF8000007FFFFFE00001FFFFFFF80007FFC00FFC000FF
E001FFC001FFC003FFE003FF8003FFE007FF0003FFE00FFE0003FFE00FFE0003FFE01FFC0001FF
C01FFC0001FFC03FFC0000FF803FFC00003E007FF8000000007FF8000000007FF800000000FFF8
00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000
00FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000007FFC000000003FFC
000000003FFC000000001FFC000000F81FFE000000F80FFE000000F80FFF000001F007FF800003
F003FFC00007E001FFE0000FC000FFF0001F80007FFE00FF00001FFFFFFE000007FFFFF8000000
FFFFE00000001FFE00002D2E7CAD35>99 D<00001FFE00000001FFFFE0000007FFFFF800001FFF
FFFE00007FFC07FF0000FFE001FF8001FFC0007FC003FF80003FE007FF00003FF00FFE00001FF0
1FFE00000FF81FFC00000FF83FFC00000FFC3FFC000007FC7FFC000007FC7FF8000007FC7FF800
0007FE7FF8000007FEFFF8000007FEFFF8000007FEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFE
FFFFFFFFFFFCFFF800000000FFF800000000FFF800000000FFF8000000007FF8000000007FF800
0000007FFC000000003FFC000000003FFC000000003FFC0000001C1FFE0000003E0FFE0000003E
07FF0000007E07FF000000FC03FF800001F801FFC00003F0007FF0001FE0003FFE00FFC0001FFF
FFFF800007FFFFFE000000FFFFF80000000FFF80002F2E7DAD36>101 D<00FC0001FF0003FF80
07FFC00FFFC01FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFFC007FFC003FF8001FF0000FC00
000000000000000000000000000000000000000000000000000000000000000000007FC0FFFFC0
FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0
01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0
01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18497CC820>105 D<007FC001FFC00000FFE00000FFFFC0
0FFFF80007FFFC0000FFFFC03FFFFE001FFFFF0000FFFFC0FFFFFF007FFFFF8000FFFFC1FC07FF
80FE03FFC000FFFFC3E003FFC1F001FFE00003FFC7C001FFC3E000FFE00001FFCF0001FFE78000
FFF00001FFDE0000FFEF00007FF00001FFDC0000FFEE00007FF00001FFFC0000FFFE00007FF800
01FFF80000FFFC00007FF80001FFF00000FFF800007FF80001FFF00000FFF800007FF80001FFF0
0000FFF800007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FF
F000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF00000
7FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF800
01FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE0
0000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FF
F000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF00000
7FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF800
01FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE0
0000FFF000007FF800FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFF
FFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF05C2E7CAD65>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 /Fq 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 /Fr 81 124 df<001F83E000F06E3001C078780380F8780300F03007
007000070070000700700007007000070070000700700007007000FFFFFF800700700007007000
070070000700700007007000070070000700700007007000070070000700700007007000070070
000700700007007000070070000700700007007000070070007FE3FF001D20809F1B>11
D<003F0000E0C001C0C00381E00701E00701E0070000070000070000070000070000070000FFFF
E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000E0E001C1E00381E007
00E00700E00700E00700E00700E00700E00700E00700E0FFFFE00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
00E07FE7FE1720809F19>I<001F81F80000F04F040001C07C06000380F80F000300F00F000700
F00F00070070000007007000000700700000070070000007007000000700700000FFFFFFFF0007
007007000700700700070070070007007007000700700700070070070007007007000700700700
070070070007007007000700700700070070070007007007000700700700070070070007007007
00070070070007007007007FE3FE3FF02420809F26>I<7038F87CFC7EFC7E743A040204020402
0804080410081008201040200F0E7E9F17>34 D<70F8FCFC74040404080810102040060E7C9F0D
>39 D<0020004000800100020006000C000C00180018003000300030007000600060006000E000
E000E000E000E000E000E000E000E000E000E000E0006000600060007000300030003000180018
000C000C000600020001000080004000200B2E7DA112>I<800040002000100008000C00060006
000300030001800180018001C000C000C000C000E000E000E000E000E000E000E000E000E000E0
00E000E000C000C000C001C001800180018003000300060006000C00080010002000400080000B
2E7DA112>I<000600000006000000060000000600000006000000060000000600000006000000
060000000600000006000000060000000600000006000000060000FFFFFFF0FFFFFFF000060000
000600000006000000060000000600000006000000060000000600000006000000060000000600
00000600000006000000060000000600001C207D9A23>43 D<70F8FCFC74040404080810102040
060E7C840D>I<FFC0FFC00A027F8A0F>I<70F8F8F87005057C840D>I<00030003000700060006
000E000C000C001C0018001800380030003000700060006000E000C000C001C001800180018003
80030003000700060006000E000C000C001C0018001800380030003000700060006000E000C000
C000102D7DA117>I<03F0000E1C001C0E00180600380700700380700380700380700380F003C0
F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0700380
7003807003807807803807001806001C0E000E1C0003F000121F7E9D17>I<018003800F80F380
038003800380038003800380038003800380038003800380038003800380038003800380038003
80038003800380038007C0FFFE0F1E7C9D17>I<03F0000C1C00100E00200700400780800780F0
07C0F803C0F803C0F803C02007C00007C0000780000780000F00000E00001C0000380000700000
600000C0000180000300000600400C00401800401000803FFF807FFF80FFFF80121E7E9D17>I<
03F0000C1C00100E00200F00780F80780780780780380F80000F80000F00000F00000E00001C00
00380003F000003C00000E00000F000007800007800007C02007C0F807C0F807C0F807C0F00780
400780400F00200E001C3C0003F000121F7E9D17>I<000600000600000E00000E00001E00002E
00002E00004E00008E00008E00010E00020E00020E00040E00080E00080E00100E00200E00200E
00400E00C00E00FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE0141E7F9D17
>I<1803001FFE001FFC001FF8001FE00010000010000010000010000010000010000011F00016
1C00180E001007001007800003800003800003C00003C00003C07003C0F003C0F003C0E0038040
0380400700200600100E000C380003E000121F7E9D17>I<007C000182000701000E03800C0780
1C0780380300380000780000700000700000F1F000F21C00F40600F80700F80380F80380F003C0
F003C0F003C0F003C0F003C07003C07003C07003803803803807001807000C0E00061C0001F000
121F7E9D17>I<4000007FFFC07FFF807FFF804001008002008002008004000008000008000010
0000200000200000400000400000C00000C00001C0000180000380000380000380000380000780
00078000078000078000078000078000078000030000121F7D9D17>I<03F0000C0C0010060030
03002001806001806001806001807001807803003E03003F06001FC8000FF00003F80007FC000C
7E00103F00300F806003804001C0C001C0C000C0C000C0C000C0C000806001802001001002000C
0C0003F000121F7E9D17>I<03F0000E18001C0C00380600380700700700700380F00380F00380
F003C0F003C0F003C0F003C0F003C07007C07007C03807C0180BC00E13C003E3C0000380000380
000380000700300700780600780E00700C002018001070000FC000121F7E9D17>I<70F8F8F870
0000000000000000000070F8F8F87005147C930D>I<70F8F8F8700000000000000000000070F0
F8F878080808101010202040051D7C930D>I<7FFFFFE0FFFFFFF0000000000000000000000000
0000000000000000000000000000000000000000FFFFFFF07FFFFFE01C0C7D9023>61
D<0FC0307040384038E03CF03CF03C603C0038007000E000C00180018001000300020002000200
0200020002000000000000000000000007000F800F800F8007000E207D9F15>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<FFFE000FC00007800007800007800007800007800007800007800007800007
800007800007800007800007800007800007800007800007800007800007800207800207800207
800207800607800407800407800C07801C0F807CFFFFFC171F7E9E1C>76
D<FF80001FF80F80001F800780001F0005C0002F0005C0002F0005C0002F0004E0004F0004E000
4F000470008F000470008F000470008F000438010F000438010F000438010F00041C020F00041C
020F00041C020F00040E040F00040E040F00040E040F000407080F000407080F000407080F0004
03900F000403900F000401E00F000401E00F000401E00F000E00C00F001F00C01F80FFE0C1FFF8
251F7E9E2A>I<FF803FF807C007C007C0038005E0010005E0010004F001000478010004780100
043C0100043C0100041E0100040F0100040F010004078100040781000403C1000401E1000401E1
000400F1000400F1000400790004003D0004003D0004001F0004001F0004000F00040007000400
07000E0003001F000300FFE001001D1F7E9E22>I<001F800000F0F00001C0380007801E000F00
0F000E0007001E0007803C0003C03C0003C07C0003E0780001E0780001E0F80001F0F80001F0F8
0001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E0
3C0003C03C0003C01E0007800E0007000F000F0007801E0001C0380000F0F000001F80001C217D
9F23>I<FFFFE0000F80780007801C0007801E0007800F0007800F8007800F8007800F8007800F
8007800F8007800F8007800F0007801E0007801C000780780007FFE00007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
8000000FC00000FFFC0000191F7E9E1F>I<001F800000F0F00001C0380007801E000F000F000E
0007001E0007803C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F80001F0
F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E0780001E07C0003E03C0003
C03C0F03C01E1087800E2047000F204F0007A03E0001E0380000F0F010001FB010000030100000
38300000387000003FF000001FE000001FE000000FC0000007801C297D9F23>I<FFFF80000F80
F0000780780007803C0007801E0007801E0007801F0007801F0007801F0007801F0007801E0007
801E0007803C00078078000780F00007FF80000781C0000780E0000780F0000780700007807800
078078000780780007807C0007807C0007807C0007807C0407807E0407803E040FC01E08FFFC0F
10000003E01E207E9E21>I<07E0800C1980100780300380600180600180E00180E00080E00080
E00080F00000F000007800007F00003FF0001FFC000FFE0003FF00001F800007800003C00003C0
0001C08001C08001C08001C08001C0C00180C00380E00300F00600CE0C0081F80012217D9F19>
I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F0030800F0010800F0010800F0010800F
0010000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
001F800007FFFE001C1F7E9E21>I<FFFC3FF80FC007C007800380078001000780010007800100
078001000780010007800100078001000780010007800100078001000780010007800100078001
000780010007800100078001000780010007800100078001000780010007800100038002000380
020001C0020001C0040000E008000070180000382000000FC0001D207E9E22>I<FFF003FE1F80
00F80F0000600F800060078000400780004003C0008003C0008003C0008001E0010001E0010001
F0010000F0020000F0020000F806000078040000780400003C0800003C0800003C0800001E1000
001E1000001F3000000F2000000F20000007C0000007C0000007C0000003800000038000000380
00000100001F207F9E22>I<FFF07FF81FF01F800FC007C00F00078003800F00078001000F0007
C00100078007C00200078007C00200078007C0020003C009E0040003C009E0040003C009E00400
03E010F00C0001E010F0080001E010F0080001F02078080000F02078100000F02078100000F040
3C10000078403C20000078403C20000078C03E2000003C801E4000003C801E4000003C801E4000
001F000F8000001F000F8000001F000F8000001E00078000000E00070000000E00070000000C00
0300000004000200002C207F9E2F>I<7FF81FF80FE00FC007C0070003C0020001E0040001F00C
0000F0080000781000007C1000003C2000003E4000001E4000000F8000000F8000000780000003
C0000007E0000005E0000009F0000018F8000010780000207C0000603C0000401E0000801F0001
800F0001000780020007C0070003C01F8007E0FFE01FFE1F1F7F9E22>I<FFF003FF1F8000F80F
8000600780004007C0004003E0008001E0008001F0010000F0030000F80200007C0400003C0400
003E0800001E0800001F1000000FB0000007A0000007C0000003C0000003C0000003C0000003C0
000003C0000003C0000003C0000003C0000003C0000003C0000003C0000007C000007FFE00201F
7F9E22>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>91 D<080410082010201040204020804080408040B85C
FC7EFC7E7C3E381C0F0E7B9F17>I<FEFE06060606060606060606060606060606060606060606
06060606060606060606060606060606060606FEFE072D7FA10D>I<081020204040808080B8FC
FC7C38060E7D9F0D>96 D<1FE000303000781800781C00300E00000E00000E00000E0000FE0007
8E001E0E00380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>I<
0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E00
0EC3800F01C00F00E00E00E00E00700E00700E00780E00780E00780E00780E00780E00780E0070
0E00700E00E00F00E00D01C00CC300083E0015207F9F19>I<03F80E0C1C1E381E380C70007000
F000F000F000F000F000F00070007000380138011C020E0C03F010147E9314>I<000380003F80
00038000038000038000038000038000038000038000038000038000038003E380061B801C0780
380380380380700380700380F00380F00380F00380F00380F00380F00380700380700380380380
3807801C07800E1B8003E3F815207E9F19>I<03F0000E1C001C0E003807003807007007007003
80F00380F00380FFFF80F00000F00000F000007000007000003800801800800C010007060001F8
0011147F9314>I<007C00C6018F038F07060700070007000700070007000700FFF00700070007
000700070007000700070007000700070007000700070007000700070007007FF01020809F0E>
I<0000E003E3300E3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E38
0033E0002000002000003000003000003FFE001FFF800FFFC03001E0600070C00030C00030C000
30C000306000603000C01C038003FC00141F7F9417>I<0E0000FE00000E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E3E000E43000E81800F01C00F01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FF
E7FC16207F9F19>I<1C001E003E001E001C000000000000000000000000000E007E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>I<
00E001F001F001F000E0000000000000000000000000007007F000F00070007000700070007000
700070007000700070007000700070007000700070007000700070007000706070F060F0C06180
3F000C28829E0E>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E0FF00E03C00E03000E02000E04000E08000E10000E30000E70000EF8000F3800
0E1C000E1E000E0E000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E81
C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E
00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00
0E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E81800F01C00F01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16
147F9319>I<01F800070E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0
F000F0F000F07000E07000E03801C03801C01C0380070E0001F80014147F9317>I<0E3E00FEC3
800F01C00F00E00E00E00E00F00E00700E00780E00780E00780E00780E00780E00780E00700E00
F00E00E00F01E00F01C00EC3000E3E000E00000E00000E00000E00000E00000E00000E00000E00
00FFE000151D7F9319>I<03E0800619801C05803C0780380380780380700380F00380F00380F0
0380F00380F00380F003807003807803803803803807801C0B800E138003E38000038000038000
0380000380000380000380000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E00
0E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F903070
4030C010C010C010E00078007F803FE00FF00070803880188018C018C018E030D0608F800D147E
9312>I<020002000200060006000E000E003E00FFF80E000E000E000E000E000E000E000E000E
000E000E000E080E080E080E080E080610031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03
C00603C0030DC001F1FC16147F9319>I<FF83F81E01E01C00C00E00800E00800E008007010007
010003820003820003820001C40001C40001EC0000E80000E80000700000700000700000200015
147F9318>I<FF9FE1FC3C0780701C0300601C0380200E0380400E0380400E03C0400707C08007
04C0800704E080038861000388710003C8730001D0320001D03A0000F03C0000E01C0000E01C00
00601800004008001E147F9321>I<7FC3FC0F01E00701C007018003810001C20000E40000EC00
007800003800003C00007C00004E000087000107000303800201C00601E01E01E0FF07FE171480
9318>I<FF83F81E01E01C00C00E00800E00800E008007010007010003820003820003820001C4
0001C40001EC0000E80000E800007000007000007000002000002000004000004000004000F080
00F08000F100006200003C0000151D7F9318>I<3FFF380E200E201C40384078407000E001E001
C00380078007010E011E011C0338027006700EFFFE10147F9314>I<FFFFFC1601808C17>I
E /Fs 45 122 df<70F8FCFC7404040404080810102040060F7C840E>44
D<FFE0FFE00B027F8B10>I<70F8F8F87005057C840E>I<01F000071C000C060018030038038038
03807001C07001C07001C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F0
01E0F001E0F001E0F001E0F001E0F001E07001C07001C07001C07803C03803803803801C07000C
0600071C0001F00013227EA018>48 D<008003800F80F380038003800380038003800380038003
800380038003800380038003800380038003800380038003800380038003800380038003800380
07C0FFFE0F217CA018>I<03F8000C1E001007002007804007C07807C07803C07807C03807C000
0780000780000700000F00000E0000380003F000001C00000F000007800007800003C00003C000
03E02003E07003E0F803E0F803E0F003C04003C0400780200780100F000C1C0003F00013227EA0
18>51 D<000200000600000E00000E00001E00001E00002E00004E00004E00008E00008E00010E
00020E00020E00040E00040E00080E00100E00100E00200E00200E00400E00800E00FFFFF8000E
00000E00000E00000E00000E00000E00000E00001F0001FFF015217FA018>I<1000801E07001F
FF001FFE001FF80013E00010000010000010000010000010000010000010F800130E0014070018
03801003800001C00001C00001E00001E00001E00001E07001E0F001E0F001E0E001C08001C040
03C04003802007001006000C1C0003F00013227EA018>I<007E0001C1000300800601C00E03C0
1C03C0180180380000380000780000700000700000F0F800F30C00F40600F40300F80380F801C0
F001C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801C03801C01803801C0300
0C0600070C0001F00013227EA018>I<01F800060E000803001001802001802000C06000C06000
C06000C07000C07801803E01003F02001FC4000FF80003F80003FC00067F00083F80100F803007
C06001C06000E0C000E0C00060C00060C00060C000606000406000C03000801803000E0E0003F0
0013227EA018>56 D<01F000060C000C0600180700380380700380700380F001C0F001C0F001C0
F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E003E1E00001C0
0001C00001C0000380000380300300780700780600700C002018001030000FC00013227EA018>
I<0001800000018000000180000003C0000003C0000003C0000005E0000005E000000DF0000008
F0000008F0000010F800001078000010780000203C0000203C0000203C0000401E0000401E0000
401E0000800F0000800F0000FFFF000100078001000780030007C0020003C0020003C0040003E0
040001E0040001E00C0000F00C0000F03E0001F8FF800FFF20237EA225>65
D<0007E0100038183000E0063001C00170038000F0070000F00E0000701E0000701C0000303C00
00303C0000307C0000107800001078000010F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F800000078000000780000107C0000103C0000103C0000101C0000201E000020
0E000040070000400380008001C0010000E0020000381C000007E0001C247DA223>67
D<FFFFFFC00F8007C0078001C0078000C007800040078000400780006007800020078000200780
002007802020078020000780200007802000078060000780E00007FFE0000780E0000780600007
802000078020000780200007802008078000080780000807800010078000100780001007800030
0780003007800070078000E00F8003E0FFFFFFE01D227EA121>69 D<FFFFFFC00F8007C0078001
C0078000C007800040078000400780006007800020078000200780002007802020078020000780
200007802000078060000780E00007FFE0000780E0000780600007802000078020000780200007
802000078000000780000007800000078000000780000007800000078000000780000007800000
0FC00000FFFE00001B227EA120>I<FFFC0FC00780078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
800FC0FFFC0E227EA112>73 D<FFC00003FF0FC00003F007C00003E005E00005E005E00005E004
F00009E004F00009E004F00009E004780011E004780011E004780011E0043C0021E0043C0021E0
043C0021E0041E0041E0041E0041E0040F0081E0040F0081E0040F0081E004078101E004078101
E004078101E00403C201E00403C201E00401E401E00401E401E00401E401E00400F801E00400F8
01E00400F801E004007001E00E007001E01F007003F0FFE0203FFF28227EA12D>77
D<FF8007FF07C000F807C0007005E0002004F0002004F0002004780020047C0020043C0020041E
0020041F0020040F002004078020040780200403C0200401E0200401E0200400F0200400F82004
00782004003C2004003E2004001E2004000F2004000F20040007A0040003E0040003E0040001E0
040001E0040000E00E0000601F000060FFE0002020227EA125>I<FFFFF0000F803C0007800F00
07800780078007C0078003C0078003E0078003E0078003E0078003E0078003E0078003E0078003
C0078007C00780078007800F0007803C0007FFF000078000000780000007800000078000000780
00000780000007800000078000000780000007800000078000000780000007800000078000000F
C00000FFFC00001B227EA121>80 D<FFFFE000000F803C000007800E00000780078000078007C0
00078003C000078003E000078003E000078003E000078003E000078003E000078003C000078007
C000078007800007800E000007803C000007FFE000000780700000078038000007801C00000780
1E000007800E000007800F000007800F000007800F000007800F000007800F800007800F800007
800F800007800F808007800FC080078007C0800FC003C100FFFC01E2000000007C0021237EA124
>82 D<03F0200C0C601802603001E07000E0600060E00060E00060E00020E00020E00020F00000
F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E00000F00000F0000070
800070800070800070800070C00060C00060E000C0F000C0C80180C6070081FC0014247DA21B>
I<7FFFFFF87807807860078018400780084007800840078008C007800C80078004800780048007
800480078004000780000007800000078000000780000007800000078000000780000007800000
078000000780000007800000078000000780000007800000078000000780000007800000078000
000780000007800000078000000FC00003FFFF001E227EA123>I<0FE0001838003C0C003C0E00
18070000070000070000070000FF0007C7001E07003C0700780700700700F00708F00708F00708
F00F087817083C23900FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E
003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C
80600C41C0083F0017237FA21B>I<01FE000703000C07801C0780380300780000700000F00000
F00000F00000F00000F00000F00000F000007000007800403800401C00800C010007060001F800
12157E9416>I<0000E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E001F8E00704E00C02E01C01E03800E07800E07000E0F000E0F000E0F000
E0F000E0F000E0F000E0F000E07000E07800E03800E01801E00C02E0070CF001F0FE17237EA21B
>I<01FC000707000C03801C01C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F0
0000F000007000007800203800201C00400E008007030000FC0013157F9416>I<003C00C6018F
038F030F070007000700070007000700070007000700FFF8070007000700070007000700070007
00070007000700070007000700070007000700070007807FF8102380A20F>I<00007001F19807
1E180E0E181C07001C07003C07803C07803C07803C07801C07001C07000E0E000F1C0019F00010
00001000001800001800001FFE000FFFC00FFFE03800F0600030400018C00018C00018C0001860
00306000303800E00E038003FE0015217F9518>I<0E0000FE00001E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E1F800E60C00E80E00F00700F0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
0E00700E0070FFE7FF18237FA21B>I<1C001E003E001E001C0000000000000000000000000000
0000000E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E00FFC00A227FA10E>I<01C003E003E003E001C000000000000000000000000000000000
01E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E060E0F0C0F18061803E000B2C82A10F>I<0E0000FE00001E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E03FC0E01F0
0E01C00E01800E02000E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E0780
0E03C00E01C00E01E00E00F00E00F8FFE3FE17237FA21A>I<0E00FE001E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E00FFE00B237FA20E>I<0E1FC07F00FE60E183801E807201C0
0F003C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800
E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E0038
00E00E003800E0FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00700F00700E00700E00
700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
70FFE7FF18157F941B>I<01FC000707000C01801800C03800E0700070700070F00078F00078F0
0078F00078F00078F00078F000787000707800F03800E01C01C00E038007070001FC0015157F94
18>I<0E1F00FE61C00E80600F00700E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E
0E001E0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F000E00000E00000E00000E0000
0E00000E00000E00000E00000E0000FFE000171F7F941B>I<0E3CFE461E8F0F0F0F060F000E00
0E000E000E000E000E000E000E000E000E000E000E000E000F00FFF010157F9413>114
D<0F8830786018C018C008C008E008F0007F803FE00FF001F8003C801C800C800CC00CC008E018
D0308FC00E157E9413>I<02000200020002000600060006000E001E003E00FFF80E000E000E00
0E000E000E000E000E000E000E000E000E040E040E040E040E040E040708030801F00E1F7F9E13
>I<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E00700E00700E
00700E00700E00700E00700E00F00E00F006017003827800FC7F18157F941B>I<FFC1FE1E0078
0E00300E00200E002007004007004003808003808003808001C10001C10000E20000E20000E200
00740000740000380000380000380000100017157F941A>I<FF8FF8FF1E01E03C1C01C0180E01
C0180E01E0100E01E01007026020070270200702702003843040038438400384384001C8188001
C81C8001C81C8000F00D0000F00F0000F00F0000600600006006000060060020157F9423>I<FF
C1FE1E00780E00300E00200E002007004007004003808003808003808001C10001C10000E20000
E20000E200007400007400003800003800003800001000001000002000002000002000004000F0
4000F08000F180004300003C0000171F7F941A>121 D E /Ft 20 118 df<FFFF80FFFF80FFFF
8011037F9016>45 D<FFFFFFE00000FFFFFFFC000007E0007F000003E0000F800003E00003C000
03E00001E00003E00000F00003E00000780003E000003C0003E000001E0003E000001E0003E000
000F0003E000000F0003E000000F8003E00000078003E0000007C003E0000007C003E0000003C0
03E0000003C003E0000003E003E0000003E003E0000003E003E0000003E003E0000003E003E000
0003E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003C0
03E0000003C003E0000007C003E0000007C003E00000078003E00000078003E000000F8003E000
000F0003E000001F0003E000001E0003E000003C0003E00000780003E00000F80003E00001F000
03E00003E00003E0000F800007E0003F0000FFFFFFFC0000FFFFFFE000002B317CB033>68
D<FFFF80FFFF8007F00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00007F000FFFF80FFFF8011317DB017>73
D<FFF00000007FF8FFF00000007FF807F00000007F0002F8000000BE0002F8000000BE0002F800
0000BE00027C0000013E00027C0000013E00023E0000023E00023E0000023E00023E0000023E00
021F0000043E00021F0000043E00021F0000043E00020F8000083E00020F8000083E00020F8000
083E000207C000103E000207C000103E000207C000103E000203E000203E000203E000203E0002
01F000403E000201F000403E000201F000403E000200F800803E000200F800803E000200F80080
3E0002007C01003E0002007C01003E0002007C01003E0002003E02003E0002003E02003E000200
3E02003E0002001F04003E0002001F04003E0002000F88003E0002000F88003E0002000F88003E
00020007D0003E00020007D0003E00020007D0003E00020003E0003E00020003E0003E00020003
E0003E00070001C0003E000F8001C0007F00FFF801C00FFFF8FFF800800FFFF835317CB03D>77
D<FFFFFFC000FFFFFFF80007E0007E0003E0001F0003E000078003E00003C003E00001E003E000
01F003E00001F003E00000F003E00000F803E00000F803E00000F803E00000F803E00000F803E0
0000F803E00000F003E00001F003E00001E003E00003E003E00003C003E000078003E0001F0003
E0007C0003FFFFF00003E000000003E000000003E000000003E000000003E000000003E0000000
03E000000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000003E000000003E000000003E000000003E000000003E000000003E000000007F000
0000FFFF800000FFFF80000025317CB02D>80 D<007F802001FFE02007C078600F001C601E0006
E03C0003E0380001E0780000E0700000E070000060F0000060F0000060F0000020F0000020F000
0020F8000020F80000007C0000007E0000003F0000003FC000001FF800000FFF800007FFF80003
FFFC0000FFFF00000FFF800000FFC000001FE0000007E0000003F0000001F0000000F0000000F8
000000F88000007880000078800000788000007880000078C0000078C0000070E00000F0E00000
E0F00000E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D337CB125>83
D<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E001E000800
1E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F001E003E001E003C
001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478003E047C005E043E008F08
0F0307F003FC03E01E1F7D9E21>97 D<003F8000E0600380180700040F00041E001E1C003E3C00
3E7C003E7C0008780000F80000F80000F80000F80000F80000F80000F80000F80000F800007800
007C00007C00003C00011E00011E00020F000207000403801800E060003F80181F7D9E1D>99
D<000001E000003FE000003FE0000003E0000001E0000001E0000001E0000001E0000001E00000
01E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000
1F81E000F061E001C019E0078005E00F0003E00E0003E01E0001E03C0001E03C0001E07C0001E0
780001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001
E0780001E0780001E03C0001E03C0001E01C0001E01E0003E00E0005E0070009E0038011F000E0
61FF003F81FF20327DB125>I<003F800000E0E0000380380007003C000E001E001E001E001C00
0F003C000F007C000F0078000F8078000780F8000780F8000780FFFFFF80F8000000F8000000F8
000000F8000000F8000000F8000000780000007C0000003C0000003C0000801E0000800E000100
0F0002000780020001C00C0000F03000001FC000191F7E9E1D>I<0007E0001C1000383800707C
00E07C01E07C01C03803C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C000FFFFC0FFFFC003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00007E0007FFF007FFF0016327FB114>I<000000F0007F030801C1C4
1C0380E81C070070080F0078001E003C001E003C003E003E003E003E003E003E003E003E003E00
3E003E003E001E003C001E003C000F007800070070000780E00009C1C000087F00001800000018
0000001800000018000000180000001C0000000E0000000FFFF80007FFFF0003FFFF800E000FC0
180001E0300000F070000070E0000038E0000038E0000038E0000038E000003870000070700000
70380000E01C0001C00700070001C01C00003FE0001E2F7E9F21>I<07000F801F801F800F8007
00000000000000000000000000000000000000000000000780FF80FF800F800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
800FC0FFF8FFF80D307EAF12>105 D<0780FE001FC000FF83078060F000FF8C03C18078000F90
01E2003C0007A001E4003C0007A000F4001E0007C000F8001E0007C000F8001E00078000F0001E
00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00
078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF034
1F7E9E38>109 D<0780FE0000FF83078000FF8C03C0000F9001E00007A001E00007A000F00007
C000F00007C000F000078000F000078000F000078000F000078000F000078000F000078000F000
078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F000078000F0000FC001F800FFFC1F
FF80FFFC1FFF80211F7E9E25>I<001FC00000F0780001C01C00070007000F0007801E0003C01C
0001C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8
F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003
C00F00078007800F0001C01C0000F07800001FC0001D1F7E9E21>I<0783E0FF8C18FF907C0F90
7C07A07C07C03807C00007C00007C0000780000780000780000780000780000780000780000780
000780000780000780000780000780000780000780000780000780000780000780000FC000FFFE
00FFFE00161F7E9E19>114 D<01FC100E03301800F0300070600030E00030E00010E00010E000
10F00010F800007E00003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C8000
1CC0001CC0001CE0001CE00018F00038F00030CC0060C301C080FE00161F7E9E1A>I<00400000
400000400000400000400000C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FF
FFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C01003C01003C01003C01003C01003C01003C01003C01001C02001
E02000E0400078C0001F00142C7FAB19>I<078000F000FF801FF000FF801FF0000F8001F00007
8000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F000
078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078001F000078001F000078001F000038002F00003C004
F00001C008F800007030FF80001FC0FF80211F7E9E25>I E /Fu 5 85 df<0000000060000000
0000700000000000F00000000001F00000000001F00000000003F00000000003F00000000007F0
0000000007F0000000000FF0000000000FF0000000001BF00000000033F00000000033F0000000
0063F00000000063F800000000C1F800000000C1F80000000181F80000000381F80000000301F8
0000000601F80000000601F80000000C01F80000000C01F80000001801F80000001801F8000000
3001F80000006001F80000006001F8000000C001F8000000C001FC000001FFFFFC000001FFFFFC
0000030000FC0000070000FC0000060000FC00000C0000FC00000C0000FC0000180000FC000018
0000FC0000300000FC0000700000FC0000600000FC0000E00000FC0001E00000FC0003E00000FE
000FF00001FE00FFFE003FFFF0FFFE003FFFF02C327CB135>65 D<000FFFFFFF0000000FFFFFFF
C00000003F8007F00000003F8001F80000003F00007C0000003F00007E0000007F00003E000000
7F00001F0000007E00001F0000007E00001F800000FE00000F800000FE00000F800000FC00000F
C00000FC00000FC00001FC00000FC00001FC00000FC00001F800000FC00001F800000FC00003F8
00000FC00003F800001FC00003F000001FC00003F000001FC00007F000001FC00007F000001F80
0007E000003F800007E000003F80000FE000003F80000FE000003F00000FC000007F00000FC000
007F00001FC000007E00001FC00000FE00001F800000FC00001F800000FC00003F800001F80000
3F800001F000003F000003F000003F000007E000007F000007C000007F00000FC000007E00001F
8000007E00003F000000FE00007E000000FE0000F8000000FC0001F0000000FC0007E0000001FC
003F800000FFFFFFFE000000FFFFFFF000000032317CB036>68 D<000FFFFFFFFE000FFFFFFFFE
00003F8000FE00003F80003E00003F00001E00003F00001E00007F00000C00007F00000C00007E
00000C00007E00000C0000FE00000C0000FE00000C0000FC00000C0000FC00000C0001FC00001C
0001FC00C0180001F800C0000001F800C0000003F801C0000003F801C0000003F00180000003F0
0380000007F00F80000007FFFF80000007FFFF00000007E00F0000000FE0070000000FE0070000
000FC0060000000FC0060000001FC00E0000001FC00E0000001F800C0000001F80000000003F80
000000003F80000000003F00000000003F00000000007F00000000007F00000000007E00000000
007E0000000000FE0000000000FE0000000000FC0000000000FC0000000001FC00000000FFFFFC
000000FFFFFC0000002F317CB02F>70 D<000FFFFFF800000FFFFFFF0000003F801FC000003F80
07E000003F0003F000003F0001F800007F0000FC00007F0000FC00007E0000FC00007E0000FC00
00FE0000FC0000FE0001FC0000FC0001FC0000FC0001FC0001FC0001F80001FC0003F80001F800
03F00001F80007E00003F80007E00003F8000F800003F0003F000003F0007E000007F003F80000
07FFFFE0000007FFFF80000007E007C000000FE003F000000FE001F000000FC000F800000FC000
F800001FC000FC00001FC000FC00001F8000FC00001F8000FC00003F8001FC00003F8001FC0000
3F0001FC00003F0001FC00007F0003F800007F0003F800007E0003F800007E0003F80600FE0003
F80E00FE0003F80C00FC0003F80C00FC0003F81C01FC0001F838FFFFF000FC70FFFFF0007FE000
0000001F802F327CB034>82 D<07FFFFFFFFF807FFFFFFFFF80FE007F001F80F8007F000F80E00
07E000701E0007E000701C000FE0007018000FE0007038000FC0007038000FC0007030001FC000
6070001FC0006060001F80006060001F80006060003F8000E0E0003F8000C000003F0000000000
3F00000000007F00000000007F00000000007E00000000007E0000000000FE0000000000FE0000
000000FC0000000000FC0000000001FC0000000001FC0000000001F80000000001F80000000003
F80000000003F80000000003F00000000003F00000000007F00000000007F00000000007E00000
000007E0000000000FE0000000000FE0000000000FC0000000000FC0000000001FC0000000001F
C0000000001F80000000003F80000000007FC00000007FFFFFC000007FFFFFC000002D3174B033
>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 Fu(D)26 b(R)g(A)f(F)h(T)225 999 y Ft(Do)r(cumen)n(t)20
b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n(terface)621
1194 y Fs(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum)802
1320 y(August)i(31,)f(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 Fr(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 Fq(Chapter)32 b(1)75 564 y Fp(Dynamic)38 b(Pro)s(cesses)75
805 y Fo(1.1)59 b(Intro)r(duction)75 906 y Fr(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
Fn(?)p Fr(])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 Fm(\017)23 b Fr(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)13 b(capabilities)k(for)d(pro)q(cess)g(and)h
(resource)f(managemen)o(t.)19 b(While)d(relativ)o(ely)f(few)f(appli-)189
1577 y(cations)g(are)g(truly)h(dynamic)g(or)f(require)i(features)e(not)g(in)h
(MPI,)f(the)h(lac)o(k)g(of)f(these)g(features)g(is)189 1633
y(a)h(practical)h(stum)o(bling)g(blo)q(c)o(k)g(to)e(migration.)143
1727 y Fm(\017)23 b Fr(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 Fm(\017)23 b Fr(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 Fm(\017)23 b
Fr(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 Fm(\017)23 b Fr(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 Fr(2)951 b Fl(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)143 45 y Fm(\017)23 b Fr(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 Fm(\017)23 b Fr(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 Fm(\017)23 b Fr(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 Fm(\017)23 b Fr(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 Fo(1.2)59 b(The)19
b(MPI)h(Dynamic)f(Pro)r(cess)g(Mo)r(del)75 1401 y Fk(1.2.1)49
b(Comp)q(onents)75 1486 y Fr(The)13 b(MPI)g(dynamic)g(pro)q(cess)g(mo)q(del)h
(separates)e(the)h(functions)g(of)g Fj(r)n(esour)n(c)n(e)g(manager)p
Fr(,)g Fj(pr)n(o)n(c)n(ess)g(man-)75 1543 y(ager)i Fr(and)h
Fj(message-p)n(assing)e(libr)n(ary)p Fr(.)75 1663 y Fi(Resource)i(Manager)44
b Fr(The)15 b Fj(r)n(esour)n(c)n(e)g(manager)20 b Fr(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(.)75 2065 y Fi(Pro)q(cess)c(Manager)45
b Fr(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 2122 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 2178
y(m)o(ust)15 b(b)q(e)h(deliv)o(erable,)h(that)e Fh(stdin)p
Fr(,)f Fh(stdout)p Fr(,)g(and)h Fh(stderr)g Fr(m)o(ust)g(b)q(e)h(handled)g
(in)h(some)e(reasonable)75 2235 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 Fh(rsh)p Fr(,)f(whic)o(h)75 2291 y(starts)11 b(pro)q(cesses)i(and)g
(reroutes)f Fh(stdin)p Fr(,)g Fh(stdout)p Fr(,)g(and)h Fh(stderr)e
Fr(bac)o(k)i(to)f(the)g(originating)i(pro)q(cess.)19 b(A)75
2348 y(more)14 b(complex)i(example)g(is)f(giv)o(en)g(b)o(y)g
Fh(poe)f Fr(on)h(the)g(IBM)g(SP2)g(or)f Fh(prun)g Fr(on)h(the)g(Meik)o(o)g
(CS-2,)f(whic)o(h)75 2404 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 2460 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 2517 y(done)f(en)o(tirely)g(b)o(y)f(the)g(op)q(erating)h(system.)
166 2573 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
2630 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
2686 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)1967
46 y Fg(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 Fl(1.2.)34 b(THE)15 b(MPI)g(D)o(YNAMIC)g(PR)o(OCESS)h(MODEL)813
b Fr(3)75 45 y(con)o(v)o(enien)o(t)20 b(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
102 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 222 y Fi(Message-P)o(assing)g(Lib)o
(ra)o(ry)44 b Fr(By)17 b(the)g Fj(message-p)n(assing)f(libr)n(ary)k
Fr(w)o(e)d(mean)f(the)h(library)h(used)f(b)o(y)g(the)75 278
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 335 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 391
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
447 y(library)l(.)75 569 y Fk(1.2.2)49 b(Interaction)16 b(of)h(User,)d
(Application)k(and)f(Runtime)f(Environment)375 1407 y @beginspecial
71 @llx 464 @lly 494 @urx 728 @ury 2880 @rwi @setspecial
%%BeginDocument: figures/dynamic-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 1505 a Fr(Figure)f(1.1:)k(Structure)d(of)e(the)i(Run)o(time)
g(En)o(vironmen)o(t)75 1610 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 1667 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
1723 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
1780 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
1836 y(to)f(the)g(user)g(him/herself.)75 1956 y Fi(Acquiring)j(Resources)47
b Fr(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 2013 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 2069 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 2126 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
2182 y(the)c(resource)h(manager.)166 2238 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 2295 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 2351 y(an)d(application.)166
2408 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
2464 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
2521 y(on)10 b(a)g(subset)g(of)g(the)g(resources,)h(will)h
Fj(disc)n(over)d Fr(the)i(additional)g(resources)f(using)h
Fi(MPI)p 1545 2521 14 2 v 16 w(Resource)p 1729 2521 V 18 w(discover)p
Fr(,)75 2577 y(and)17 b(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
2634 y(plications)i Fj(quasi-static)e Fr(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.)-32
46 y Fg(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 Fr(4)951 b Fl(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fr(Applications)h(whic)o(h)e(disco)o(v)o(er)g(preallo)
q(cated)i(resources)d(but)h(do)g(not)g(allo)q(cate)g(new)g(ones)g(will)i
(gener-)75 102 y(ally)g(b)q(e)g(more)e(p)q(ortable)i(than)f(those)f(whic)o(h)
i(allo)q(cate)g(new)f(resources.)20 b(Resource)c(disco)o(v)o(ery)f(ma)o(y)f
(or)75 158 y(ma)o(y)f(not)h(require)h(comm)o(unication)f(with)h(an)e
(external)i(resource)f(manager,)f(dep)q(ending)j(on)e(the)g(MPI)75
214 y(implemen)o(tation.)22 b(Resource)16 b(disco)o(v)o(ery)g(can)g(b)q(e)g
(an)f(simple)i(op)q(eration,)f(so)f(that)f(it)i(can)g(b)q(e)g(used)g(b)o(y)75
271 y(a)f(naiv)o(e)h(user)f(to)f(mimic)j(PVM-st)o(yle)e(b)q(eha)o(vior.)166
327 y(T)l(ruly)j(dynamic)h(applications)g(will)g(allo)q(cate)f(new)g
(resources)g(while)h(running,)g(in)o(teracting)f(di-)75 384
y(rectly)c(with)g(the)g(resource)g(manager)f(through)g Fi(MPI)p
994 384 14 2 v 16 w(RESOURCE)p 1240 384 V 18 w(ALLOCA)l(TE)p
Fr(.)h(A)g(resource)g(request)75 440 y(ma)o(y)d(b)q(e)h(arbitrarily)g
(complicated,)h(but)f(the)f(details)i(of)e(the)g(request)h(are)f(in)o
(terpreted)h(b)o(y)f(the)h(resource)75 497 y(manager,)i(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 553 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
610 y(through)i Fi(MPI)p 332 610 V 16 w(Resource)p 516 610
V 17 w(free)p Fr(.)166 742 y Ff(Discussion:)61 b Fe(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 792 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
842 y(applications)d(\(including)h(most)f(new)i(ones)g(w)o(e)f(target)h(in)f
(MPI-2\))g(need)h(only)f(the)h(\014rst)g(phase)g(-)f(making)e(use)75
892 y(of)j(pre-allo)q(cated)h(resources.)29 b(An)17 b(application)e(usually)h
(do)q(es)h(not)g(actually)f(request)i(resources)h(nor)e(do)q(es)g(it)75
941 y(kno)o(w)d(what)g(it)h(w)o(an)o(ts.)20 b(It)14 b(only)g(w)o(an)o(ts)h
(to)f(\014nd)h(out)f(what)h(the)g(user)g(has)g(already)f(allo)q(cated.)20
b(Second,)15 b(it)f(w)o(as)75 991 y(di\016cult)g(to)g(come)g(up)h(with)f(a)g
(uni\014ed)h(seman)o(tics)f(that)g(w)o(ould)g(w)o(ork)g(w)o(ell)g(for)g(b)q
(oth)h(resource)h(disco)o(v)o(ery)f(and)75 1041 y(resource)i(allo)q(cation.)j
(They)c(are)f(therefore)i(separate,)f(although)e(they)i(b)q(oth)f(pro)q(duce)
h(the)g(same)e(result)i(-)f(an)75 1091 y Fd(MPI)p 152 1091
13 2 v 14 w(Resource)g Fe(ob)r(ject)g(\(or)e(ob)r(jects\).)20
b(The)14 b(separation)f(of)g(disco)o(v)o(ery)h(and)g(resource)h(allo)q
(cation)d(also)h(exists)h(in)75 1141 y(PVM.)g(It)g(is)g(the)g(di\013erence)i
(b)q(et)o(w)o(een)f Fc(pvm)p 771 1141 14 2 v 15 w(config)e
Fe(and)g Fc(pvm)p 1077 1141 V 15 w(addhosts)p Fe(.)166 1190
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
1240 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 1290 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 1340 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 1390 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 1440 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 1489 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 1539 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 1589 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 1639 y(programmers.)166 1689 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 1738 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 1788 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 1838 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 1888 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 1938 y(tailored)g(to)h(sp)q
(eci\014c)h(en)o(vironmen)o(ts.)166 1987 y(-)f(w)o(cs)166 2037
y(In)20 b(the)g(future,)h(true)g(dynamic)d(applications)h(will)f(b)q(e)i(the)
h(norm.)34 b(The)20 b(dynamic)e(qualities)h(will)f(b)q(e)75
2087 y(required)d(for)f(fault)f(tolerance,)h(task)h(migration)c(and)j(load)f
(balancing.)k(While)d(MPI-2)g(man)o(y)e(not)i(solv)o(e)g(these)75
2137 y(requiremen)o(ts,)g(w)o(e)g(need)h(to)e(b)q(e)i(sure)g(our)f(design)g
(do)q(es)h(not)e(preclude)j(their)e(solution)f(in)g(the)i(future.)j(-)c(A)o
(G)166 2276 y Fr(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
2332 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 2389 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 2445 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 2502 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 2558 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 Fg(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 Fl(1.2.)34 b(THE)15 b(MPI)g(D)o(YNAMIC)g(PR)o(OCESS)h(MODEL)813
b Fr(5)75 45 y Fi(Sta)o(rting)21 b(and)g(Managing)f(Pro)q(cesses)47
b Fr(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 Fh(rsh)g Fr(command)g(\(P4\).)166
497 y(There)e(are)f(t)o(w)o(o)f(w)o(a)o(ys)h(to)g(start)f(new)i(pro)q
(cesses.)19 b(Both)12 b(tak)o(e)g(as)g(input)i(an)e Fi(MPI)p
1545 497 14 2 v 16 w(Resource)i Fr(ob)s(ject,)75 553 y(represen)o(ting)f
(computational)f(resources)g(on)g(whic)o(h)h(a)f(job)g(can)g(run.)19
b(F)l(or)11 b(simple)j(applications,)g(there)75 610 y(is)i(a)f(simple)h(w)o
(a)o(y)e(to)h(obtain)g(this)h Fi(MPI)p 763 610 V 16 w(Resource)g
Fr(ob)s(ject.)166 666 y Fi(MPI)p 251 666 V 16 w(ST)l(ART)p
409 666 V 17 w(A)l(TT)l(A)o(CH)e Fr(starts)f(MPI)g(pro)q(cesses)h(and)g
(establishes)g(comm)o(unication)h(with)e(them,)75 723 y(returning)j(an)f(in)o
(tercomm)o(unicator.)166 779 y Fi(MPI)p 251 779 V 16 w(ST)l(ART)p
409 779 V 17 w(ABANDON)23 b Fr(starts)e(new)h(pro)q(cesses,)h(whic)o(h)g(ma)o
(y)e(or)g(ma)o(y)g(not)h(comm)o(unicate)75 835 y(amoung)13
b(eac)o(h)h(other,)g(but)f(don't)h(comm)o(unicate)g(with)g(their)g(paren)o
(t.)19 b(This)c(function)f(is)h(required)g(for)75 892 y(starting)g(non-MPI)g
(tasks)g(and)g(is)h(useful)g(for)e(starting)h(an)g(SPMD)g(application.)75
1014 y Fk(1.2.3)49 b(Examples)16 b(of)h(Runtime)f(Environments)75
1099 y Fr(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 1156 y(w)o(e)j(giv)o(e)g(here)h(some)f(examples.)75
1276 y Fi(Environments)22 b(with)f(explicit)h(Resource)g(Managers)45
b Fr(The)22 b(SP2)e(computers)h(at)g(Argonne)g(National)75
1332 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
1389 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
1445 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
1502 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 1558 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
1615 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 1671 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
1728 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
1784 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 1841 y(en)o(vironmen)o(t)d(soft)o(w)o(are.)166 1897 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 1953 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
2010 y(LoadLev)o(eler)d(\(from)d(IBM\),)h(DQS)h([)p Fn(?)p
Fr(])21 b(\(from)14 b(the)i(Sup)q(ercomputer)g(Researc)o(h)g(Institute)h(at)e
(Florida)75 2066 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 2123
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 2179 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 Fh(poe)d Fr(on)75 2236 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 2292 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 2349 y(\()p Fh(p4)j Fr(or)f Fh(pvm)p Fr(\))h(or)f(in)o(tegrated)
h(with)h(the)f(resource)g(manager)g(\(Condor)f(with)i Fh(pvm)p
Fr(\).)75 2469 y Fi(Net)o(w)o(o)o(rk)k(of)h(W)o(o)o(rkstations)g(with)g(PVM)
46 b Fr(One)21 b(reason)g(for)f(PVM's)g(p)q(opularit)o(y)h(is)g(that)f(it)h
(can)g(b)q(e)75 2525 y(view)o(ed)g(as)f(a)f(completely)j(self-con)o(tained)f
(system)f(that)f(supplies)j(its)f(o)o(wn)e(pro)q(cess)i(managemen)o(t)75
2582 y(and)c(can)g(b)q(e)h(used)g(to)e(implemen)o(t)j(a)d(resource)h(manager)
g(as)f(w)o(ell.)27 b(On)17 b(systems)g(that)f(ha)o(v)o(e)h(neither)75
2638 y(of)h(these)i(functions)f(pre-installed,)j(PVM)c(can)h(pro)o(vide)h(a)e
(complete)i(solution.)32 b(A)19 b(user)g(creates)f(a)75 2694
y(\\virtual)c(mac)o(hine")g(b)o(y)g(starting)f(\\daemons")g(on)h(an)f
(assortmen)o(t)g(of)g(mac)o(hines)h(and)g(then)g(sc)o(hedules)-32
46 y Fg(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 Fr(6)951 b Fl(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fr(jobs)k(to)g(run)h(on)f(it)h(and)f(manages)g(his)h
(pro)q(cesses)g(with)g(the)f(help)i(of)e(the)g(daemons.)33
b(The)19 b(virtual)75 102 y(mac)o(hine)d(itself)g(can)f(b)q(e)h
(recon\014gured)g(from)f(inside)i(the)e(user)g(program.)166
158 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
214 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
271 y(While)f(implemen)o(ted)g(within)f(MPI,)f(these)g(functions)h(w)o(ould)g
(b)q(e)g(logically)h(external)e(to)g(an)g(MPI)75 327 y(application,)j(allo)o
(wing)e(the)f(application)i(to)e(run)g(virtually)h(unc)o(hanged)g(in)g(the)g
(presence)g(of)f(real)75 384 y(resource)15 b(and)h(pro)q(cess)f(managers.)166
440 y(One)k(can)g(conceiv)o(e)h(of)f(a)f(system)h(in)g(whic)o(h)h(resource)f
(allo)q(cation)h(and)f(pro)q(cess)g(managemen)o(t)75 497 y(functions)13
b(w)o(ere)g(pro)o(vided)g(b)o(y)f(the)h(existing)h(PVM)e(daemon)g(structure,)
h(while)h(MPI)e(w)o(as)g(used)h(b)o(y)g(the)75 553 y(application)18
b(for)e(message)h(passing.)24 b(PVM)17 b(w)o(ould)g(b)q(e)g(used)g(as)g(the)f
(implemen)o(tation)i(la)o(y)o(er)f(for)f(the)75 610 y(functions)g(describ)q
(ed)h(in)f(this)g(c)o(hapter,)e(but)i(w)o(ould)f(not)g(b)q(e)h(visible)h(to)e
(the)g(application)i(program.)75 731 y Fk(1.2.4)49 b(Applications)18
b(Requiring)f(Direct)e(Communication)i(with)g(the)e(Runtime)h(System)75
817 y Fr(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
874 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 930
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 987 y(other)e(applications,)j
(ho)o(w)o(ev)o(er,)c(it)i(is)g(necessary)g(that)f(the)h Fj(user)g(level)j
Fr(of)c(the)h(application)h(comm)o(u-)75 1043 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 1099 y(classes)e(of)g(suc)o(h)g
(applications.)24 b(In)17 b(Section)f(1.7)f(w)o(e)h(will)i(giv)o(e)e
(concrete)g(examples)h(of)e(eac)o(h)h(of)g(these)75 1156 y(classes.)75
1276 y Fi(T)l(ask)c(F)o(a)o(rming)43 b Fr(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 1332 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
1389 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
1445 y(in)o(v)o(o)q(cation)14 b(of)e(the)i(sequen)o(tial)g(program)e(a)h
Fj(task)p Fr(.)19 b(It)13 b(is)h(often)f(simplest)h(to)f(\\parallelize")i
(the)e(existing)75 1502 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 1558 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 1615 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 1671 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
Fh(rsh)p Fr(,)g(to)g(start)f(the)i(new)75 1728 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 1784 y(scripting)k(language)f(lik)o(e)g
Fh(csh)g Fr(or)f Fh(perl)p Fr(,)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 1841 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 1897 y(non-MPI)h(pro)q(cesses.)75
2017 y Fi(Dynamic)f(numb)q(er)i(of)e(p)o(ro)q(cesses)j(in)e(pa)o(rallel)f
(job)46 b Fr(The)16 b(program)f(wishes)i(to)e(decide)j Fj(inside)g
Fr(the)e(pro-)75 2073 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 2130 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 2186 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 2243 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)75 2299 y(implemen)o(ted\))e(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 2356 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
2412 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
2469 y(group)j(of)g(pro)q(cesses)g(can)h(comm)o(unicate.)166
2525 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
2582 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
2638 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
2694 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)1967 46 y Fg(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 Fl(1.3.)34 b(RESOUR)o(CE)16 b(MANA)o(GEMENT)e(INTERF)-5
b(A)o(CE)15 b(-)h(PR)o(OPOSAL)g(1)432 b Fr(7)75 45 y(resources)22
b(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 102 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 218 y Fi(Client/Server)46
b Fr(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 274 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
331 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
387 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
444 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 500 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 556 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 613 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 669 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 726 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
782 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
839 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
895 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 1011 y Fi(Summa)o(ry)43
b Fr(Using)16 b(dynamic)g(pro)q(cesses)f(in)h(MPI)f(is)g(a)g(three)g(step)g
(pro)q(cess)g(as)g(sho)o(wn)f(in)i(Figure)f(1.2.)131 1085 y(1.)22
b Fn(Allo)q(cate)14 b(or)e(disco)o(v)o(er)f(resources)p Fr(,)f(obtaining)h
(one)g(or)g(more)f Fi(MPI)p 1403 1085 14 2 v 16 w(Resource)h
Fr(ob)s(jects,)g(whic)o(h)189 1141 y(represen)o(t)k(p)q(ermission)h(to)f
(start)f(additional)j(pro)q(cesses.)131 1227 y(2.)22 b Fn(Start)12
b(tasks)f(on)h(allo)q(cated/di)q(sco)o(v)o(ered)g(resources)p
Fr(,)e(obtaining)h(one)f(or)g(more)f Fi(MPI)p 1742 1227 V 16
w(Pro)q(cess)189 1283 y Fr(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
1369 y(3.)22 b Fn(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 Fr(b)o(y)189 1425
y(obtaining)k(a)f(comm)o(unicator)f(whose)h(group)g(con)o(tains)h(the)f(new)g
(pro)q(cesses.)375 2179 y @beginspecial 90 @llx 451 @lly 518
@urx 696 @ury 2880 @rwi @setspecial
%%BeginDocument: figures/dynamic-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
2.000000 setlinewidth
newpath
stroke
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 ( _Start) 67.2 S
setmatrix
grestore
gsave
gsave
matrix currentmatrix
[1 0 0 1 413 613] concat
newpath
0 0 M 0 14 L 86 14 L 86 0 L
closepath setmatrix
0 0 0 setrgbcolor
grestore
newpath
410.5 610.5 M 410.5 629.5 L 501.5 629.5 L 501.5 610.5 L
closepath clip newpath
0.560784 0.560784 0.87451 setrgbcolor
matrix currentmatrix
[1 0 0 1 413 613] concat
/Courier-Bold-SHOWISO findfont 14 scalefont setfont
0 0 0 setrgbcolor
0 3.5 M (MPI_Attach) 84 S
setmatrix
grestore
grestore
showpage
%%EndDocument
@endspecial 552 2277 a(Figure)g(1.2:)k(Dynamic)d(Pro)q(cess)f(Managemen)o(t)
75 2458 y Fo(1.3)59 b(Resource)18 b(Management)g(Interface)g(-)i(Prop)r(osal)
g(1)75 2561 y Fk(1.3.1)49 b(The)16 b(MPI)p 409 2561 15 2 v
18 w(Resource)g(Object)75 2647 y Fr(An)i Fi(MPI)p 237 2647
14 2 v 16 w(Resource)h Fr(ob)s(ject)f(iden)o(ti\014es)h(a)f(set)g(of)g
(computational)g(resources)g(on)g(whic)o(h)h(the)f(ob)s(ject's)75
2704 y(o)o(wner)e(ma)o(y)h(start)e(pro)q(cesses.)26 b(Dep)q(ending)18
b(on)f(the)g(request)g(that)f(generated)h(it,)g(an)g Fi(MPI)p
1693 2704 V 16 w(Resource)-32 46 y Fg(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 Fr(8)951 b Fl(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fr(ma)o(y)j(represen)o(t)h(a)g(ph)o(ysical)h(CPU,)f(a)
f(collection)j(of)e(CPUs,)g(or)g(ev)o(en)g(a)g(promise)g(from)f(a)h(resource)
75 102 y(manager)i(that)g(an)h(application)i(is)e(allo)o(w)o(ed)g(to)g(start)
e(one)i(or)g(more)f(pro)q(cesses)h(\(whose)g(ph)o(ysical)75
158 y(lo)q(cation)16 b(will)h(b)q(e)f(determined)g(dynamically\).)166
214 y(Eac)o(h)h(resource)g(ob)s(ject)f(is)i(o)o(wned)f(b)o(y)g(a)g(single)h
(pro)q(cess.)26 b(Initially)l(,)20 b(the)d(pro)q(cess)g(iden)o(ti\014ed)i(b)o
(y)75 271 y(\(MPI)p 185 271 14 2 v 16 w(COMM)p 353 271 V 16
w(W)o(ORLD,)c(0\))g(o)o(wns)g(all)h(pre-existing)h(resources)e(in)h(a)f
(single)i(ob)s(ject.)j(Resource)c(ob-)75 327 y(jects)d(can)g(b)q(e)h(split)g
(and)f(merged)g(in)o(to)g(other)g(resource)g(ob)s(jects)g(and)g(o)o(wnership)
g(of)g(un)o(used)h(resources)75 384 y(can)k(b)q(e)g(passed)g(to)g(a)f(pro)q
(cesses)h(c)o(hildren)i(when)e(they)g(are)g(started.)27 b(In)18
b(this)g(case,)g(the)g(c)o(hild)i(with)75 440 y(rank)15 b(0)g(obtains)g(o)o
(wnership.)166 497 y(An)o(y)f(pro)q(cess)h(ma)o(y)f(o)o(wn)g(a)g(resource)h
(giv)o(en)g(that)f(it)h(has)f(successfully)j(called)f Fi(MPI)p
1623 497 V 16 w(ALLOCA)l(TE)p Fr(.)75 553 y(Ownership)h(is)e(not)g(limited)i
(to)e(pro)q(cesses)g(with)h(rank)f(0.)166 692 y Ff(Discussion:)48
b Fe(The)18 b(de\014nitions)f(ab)q(o)o(v)o(e)g(assume)g(that)h(pro)q(cesses)i
(in)d(MPI-2)g(con)o(tin)o(ue)h(to)f(b)q(e)h(named)75 749 y(based)c(on)e
(\(COMM,)h(RANK\).)g(Later)h(in)e(this)h(c)o(hapter)h(w)o(e)g(describ)q(e)g
(an)f(alternate)h(naming)c(sc)o(heme)k(based)f(on)75 805 y(a)h(pro)q(cess)h
(ob)r(ject.)k(-A)o(G)166 944 y Fr(The)12 b(simplest)g(understanding)h(of)e(a)
h(resource)g(ob)s(ject)f(is)h(that)f(it)h(is)g(a)f(bag)g(of)g(pro)q(cess)h
(slots.)19 b(Ev)o(en)75 1001 y(so,)14 b(it)h(is)g(necessary)g(to)g
(distinguish)h(b)q(et)o(w)o(een)g(the)e(total)h(n)o(um)o(b)q(er)g(of)f(pro)q
(cess)h(slots)g(and)g(the)g(n)o(um)o(b)q(er)75 1057 y(of)h(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 1114
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
1170 y(the)18 b(other)g(hand,)g(for)f(b)q(est)i(results)f(it)g(should)h(run)f
(only)h(one)f(or)f(t)o(w)o(o)g(pro)q(cess)h(p)q(er)g(pro)q(cessor.)28
b(W)l(e)75 1227 y(could)18 b(giv)o(e)f(it)g(one)g(pro)q(cess)g(slot,)g(but)g
(some)f(applications)i(will)h(need)f(to)e(b)q(e)h(able)h(to)e(do)h(more.)24
b(W)l(e)75 1283 y(don't)17 b(w)o(an)o(t)g(to)g(tell)i(the)f(user,)h(ho)o(w)o
(ev)o(er,)e(that)g(there)h(are)g(100)f(slots)h(a)o(v)m(ailable)h(b)q(ecause)g
(there)f(will)75 1340 y(b)q(e)h(no)f(w)o(a)o(y)f(to)h(distinguish)i(this)e
(resource)h(from)e(one)h(with)h(100)e(CPUs.)29 b(W)l(e)18 b(ma)o(y)f(ha)o(v)o
(e)h(an)g(SMP)l(,)75 1396 y(but)c(our)g(MPI)g(pro)q(cesses)h(ma)o(y)e(b)q(e)i
(m)o(ultithreaded)g(pro)q(cesses,)f(so)g(that)f(w)o(e)h(ma)o(y)g(still)h(w)o
(an)o(t)e(only)i(one)75 1452 y(pro)q(cess)e(p)q(er)g(no)q(de.)20
b(Th)o(us)12 b(\\recommended)h(pro)q(cesses")g(do)q(esn't)g(alw)o(a)o(ys)e
(mean)i(\\n)o(um)o(b)q(er)g(of)f(CPUs.")75 1509 y(Most)k(applications)i(can)g
(lo)q(ok)f(at)f(recommended)i(pro)q(cesses)f(and)g(ignore)h(max)e(pro)q
(cesses.)26 b(Finally)l(,)75 1565 y(for)15 b(debugging,)g(a)g(user)h(migh)o
(t)f(w)o(an)o(t)f(to)g(start)g(m)o(ultiple)j(pro)q(cesses)f(on)f(a)g(single)h
(w)o(orkstation.)166 1622 y(The)j(notion)h(of)f Fj(r)n(esour)n(c)n(e)f
Fr(is)i(delib)q(erately)h(\015exible.)35 b(Most)18 b(applications)j(do)e(not)
g(care)g(where)75 1678 y(pro)q(cesses)g(are)g(started,)f(as)g(long)i(as)e
(there)h(is)g(one)g(pro)q(cess)g(p)q(er)g(CPU.)f(F)l(or)g(these)h
(applications,)i(a)75 1735 y(single)16 b(resource)e(ob)s(ject)g(con)o
(taining)h(sev)o(eral)g(CPUs)f(ma)o(y)g(b)q(e)h(appropriate.)k(Other)c
(appications)g(will)75 1791 y(w)o(an)o(t)20 b(explicit)k(con)o(trol)d(o)o(v)o
(er)f(whic)o(h)i(pro)q(cesses)g(go)e(on)i(whic)o(h)g(mac)o(hine.)39
b(In)22 b(this)f(case,)i(a)e(single)75 1848 y(resource)d(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 1904
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 1961 y(In)g(order)g(to)f
(giv)o(e)h(applications)i(explicit)g(con)o(trol)d(o)o(v)o(er)g(resources,)h
(and)g(still)h(hop)q(e)f(to)f(main)o(tain)75 2017 y(p)q(ortabilit)o(y)20
b(in)h(MPI,)e(w)o(e)g(need)h(to)f(de\014ne)h(a)f(resource)h(description.)34
b(This)20 b(description)h(w)o(ould)e(b)q(e)75 2073 y(used)14
b(in)f(the)h Fi(ALLOCA)l(TE)f Fr(function)h(to)e(sp)q(ecify)j(a)d(sp)q
(eci\014c)j(set)e(of)g(resources,)g(suc)o(h)g(as,)g("4)f(SUNs)i(with)75
2130 y(at)h(least)g(32)f(MB)h(eac)o(h".)20 b(The)c(follo)o(wing)g(general)f
(description)i(string)e(is)h(prop)q(osed:)166 2186 y Fh(attr)23
b(==)h(value)f(&&)h(attr)f(==)g(value)h(&)f(...)48 b(,)23 b(attr)h(==)f
(value)h(&)f(...)75 2243 y Fr(The)d(resource)f(description)j(string)d(is)h
(comp)q(osed)g(of)f(attributes)h(\\ANDed")f(together)g(and)h(logical)75
2299 y(blo)q(c)o(ks)14 b(of)e(attributes)h(separated)f(b)o(y)h(commas.)18
b(The)13 b(attribute)g(can)g(b)q(e)g(an)o(y)g(string)g(that)f(is)h(meaning-)
75 2356 y(ful)g(to)f(the)g(application)i(or)e(underlying)j(resource)d
(manager.)18 b(The)13 b(follo)o(wing)g(default)g(set)f(of)g(attribute)75
2412 y(strings)j(w)o(ould)h(b)q(e)g(de\014ned)g(in)g(MPI.)143
2506 y Fm(\017)23 b Fr(NSLOTS)16 b(-)f(recommended)h(n)o(um)o(b)q(er)g(of)f
(pro)q(cesses)g(to)g(run.)143 2600 y Fm(\017)23 b Fr(MAX)p
302 2600 V 16 w(SLOTS)143 2694 y Fm(\017)g Fr(HOSTNAME)15 b(-)g(string)h(as)e
(returned)i(b)o(y)f Fj(uname)p Fr(.)1967 46 y Fg(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 Fl(1.3.)34 b(RESOUR)o(CE)16 b(MANA)o(GEMENT)e(INTERF)-5
b(A)o(CE)15 b(-)h(PR)o(OPOSAL)g(1)432 b Fr(9)143 45 y Fm(\017)23
b Fr(AR)o(CH)15 b(-)g(string)g(as)g(returned)h(b)o(y)f Fj(uname)p
Fr(.)143 139 y Fm(\017)23 b Fr(MEMOR)l(Y)166 233 y(Using)15
b(the)g(ab)q(o)o(v)o(e)g(de\014nition)i(to)d(ask)h(for)f(a)h(net)o(w)o(ork)f
(of)g(4)h(SUN)g(and)g(5)g(IBM)g(w)o(orkstations,)e(w)o(e)75
289 y(get)i(the)g(simple)i(resource)e(description)i(string:)166
346 y Fh(NSLOTS)23 b(==)h(4)f(&&)h(ARCH)f(==)h("SUN")f(,)h(NSLOTS)f(==)g(5)h
(&&)g(ARCH)f(==)h("IBM")166 402 y Fr(Giv)o(en)19 b(a)f(resource)h(ob)s(ject)f
(it)g(w)o(ould)h(b)q(e)h(useful)f(to)f(extract)g(information)h(ab)q(out)f
(this)h(ob)s(ject.)75 459 y(Con)o(v)o(ersely)l(,)14 b(it)h(w)o(ould)f(b)q(e)h
(useful)g(to)e(b)q(e)i(able)g(to)f(set)f(an)o(y)h(unde\014ned)i(or)e
(user-de\014ned)i(attribute)e(of)f(a)75 515 y(resource)h(ob)s(ject.)k(The)c
(abilit)o(y)h(to)e(set)g(v)m(alues)i(is)f(v)o(ery)f(imp)q(ortan)o(t)h(when)g
(an)f(application)i(is)g(designed)75 571 y(to)h(exploit)i(a)e(particular)i
(attribute,)e(for)g(example,)i(\\A)l(TM)e(connected".)25 b(The)17
b(follo)o(wing)g(functions)75 628 y(get)e(and)g(set)g(resource)g(v)m(alues.)
75 779 y Fi(MPI)p 160 779 14 2 v 16 w(SET)p 259 779 V 17 w
(RESOURCE\(resource,)h(attr,)f(value\))117 856 y Fe(IN)155
b Fi(resource)432 b Fe(an)14 b Fd(MPI)p 1040 856 13 2 v 14
w(Resource)h Fe(ob)r(ject)117 931 y(IN)155 b Fi(attr)517 b
Fe(attribute)15 b(string)117 1006 y(IN)155 b Fi(value)490 b
Fe(v)n(alue)13 b(of)h(attribute)166 1131 y Fr(Other)k(examples)h(of)f
(information)g(that)g(could)h(b)q(e)g(set)f(in)h(the)f(resource)g
(description)i(include:)75 1187 y(authen)o(tication)e(information,)g(if)f
(required)i(b)o(y)e(the)g(resource)h(manager.)25 b(If)18 b(the)f(resource)h
(manager)75 1244 y(requires)d(some)f(sp)q(ecial)i(string,)e(the)g(user)h(can)
f(de\014ne)i(an)e(attribute)g(with)h(this)f(string)h(v)m(alue.)20
b(And)15 b(in)75 1300 y(the)h(case)g(where)g(a)f(host)h(has)f(m)o(ultiple)j
(comm)o(unication)f(in)o(terfaces)f(\(Ethernet,)f(HiPPI,)h(A)l(TM\),)f(an)75
1357 y(attribute)g(could)h(sp)q(ecify)h(so)e(that)f(the)h(desired)i(comm)o
(unication)f(infrastructure)f(w)o(ould)h(b)q(e)f(used.)75 1508
y Fi(MPI)p 160 1508 14 2 v 16 w(GET)p 264 1508 V 17 w(RESOURCE\(resource,)h
(attr,)f(value,)g(multiplicit)o(y\))117 1585 y Fe(IN)155 b
Fi(resource)432 b Fe(an)14 b Fd(MPI)p 1040 1585 13 2 v 14 w(Resource)h
Fe(ob)r(ject)117 1660 y(IN)155 b Fi(attr)517 b Fe(attribute)15
b(string)117 1735 y(OUT)108 b Fi(value)490 b Fe(v)n(alue)13
b(of)h(attribute)117 1810 y(OUT)108 b Fi(multipliciit)o(y)366
b Fe(returned)16 b(when)e(v)n(alue)f(can't)h(b)q(e)h(de\014ned)166
1935 y Fr(Multiplicit)o(y)g(is)e(necessary)g(to)f(help)i(the)f(user)g
(understand)g(complex)g(resource)g(ob)s(jects)f(of)g(whic)o(h)75
1991 y(he)k(has)f(no)g(kno)o(wledge.)21 b(F)l(or)15 b(example,)h(consider)g
(our)f(example)h(ab)q(o)o(v)o(e)f(with)h(the)g(net)o(w)o(ork)e(of)h(w)o(ork-)
75 2048 y(stations)j(as)g(a)f(resource)i(ob)s(ject.)28 b(Calling)20
b Fi(MPI)p 937 2048 14 2 v 15 w(GET)p 1040 2048 V 17 w(RESOURCE\()g
(resource,)f(ARCH,)g(value,)f(mul-)75 2104 y(tiplicit)o(y\))g
Fr(w)o(ould)g(return)g(unde\014ned)h(in)g(v)m(alue)g(and)e(2)h(in)g(m)o
(ultiplicit)o(y)i(letting)f(the)f(user)f(kno)o(w)h(that)75
2160 y(there)d(are)g(t)o(w)o(o)f(di\013eren)o(t)h(arc)o(hitectures)h(in)g
(this)g(resource)f(ob)s(ject.)166 2217 y(There)22 b(is)g(also)f(a)h(function)
g(that)f(returns)g(the)h(en)o(tire)g(resource)g(description)h(string)e(giv)o
(en)h(a)75 2273 y(resource)15 b(ob)s(ject.)-32 46 y Fg(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 Fr(10)928 b Fl(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fi(MPI)p 160 45 14 2 v 16 w(RESOURCE)p
406 45 V 18 w(DESCRIPTION\(resource,)g(description\))117 122
y Fe(IN)155 b Fi(resource)432 b Fe(an)14 b Fd(MPI)p 1040 122
13 2 v 14 w(Resource)h Fe(ob)r(ject)117 197 y(OUT)108 b Fi(description)384
b Fe(a)14 b(string)g(describing)g(the)h(resource)75 416 y Fi(MPI)p
160 416 14 2 v 16 w(RESOURCE)p 406 416 V 18 w(FREE\(resources\))117
494 y Fe(IN)155 b Fi(resources)415 b Fe(resource)16 b(to)e(b)q(e)g(returned)i
(to)e(resource)i(manager)75 618 y Fr(F)l(rees)k(resource)g(ob)s(ject)g(and)g
(releases)h(resources)f(to)g(resource)g(manager.)34 b(Pro)q(cesses)21
b(running)g(on)75 675 y(those)c(resources)g(are)g(lost)g(\(dealing)i(with)e
(this)h(case)f(is)h(di\016cult)h(and)e(should)i(b)q(e)e(addressed\).)27
b(The)75 731 y(resource)15 b(m)o(ust)g(b)q(e)h(o)o(wned)f(b)o(y)g(the)g
(caller)i(of)d(an)o(y)h(of)g(these)g(functions.)166 870 y Ff(Discussion:)34
b Fe(There)15 b(is)f(the)g(issue)h(of)e(what)h(happ)q(ens)h(to)e(resources)k
(that)d(expire)g(\(fail\).)75 1074 y Fk(1.3.2)49 b(Discovering,)17
b(Allo)q(cating,)h(and)f(Manipulating)h(Resources)75 1160 y
Fr(This)e(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 1217 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
1273 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
1330 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
1386 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 1443 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 1499 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 Fh(pvm)p
1503 1499 15 2 v 17 w(addhosts)g Fr(routine.)166 1555 y(Resource)18
b(disco)o(v)o(ery)f(is)h(exp)q(ected)g(to)f(b)q(e)h(a)f(fast)f(op)q(eration)i
(that)e(ma)o(y)h(b)q(e)h(p)q(ossible)h(to)d(imple-)75 1612
y(men)o(t)e(through)h(in)o(ternal)g(lo)q(okup)h(rather)e(than)g(external)i
(comm)o(unication)f(\(dep)q(ending)i(on)d(the)h(MPI)75 1668
y(implemen)o(tation\).)38 b(Resource)22 b(allo)q(cation,)i(on)d(the)g(other)f
(hand,)j(can)e(b)q(e)h(time-consuming.)39 b(W)l(e)75 1725 y(presen)o(t)16
b(the)g(blo)q(c)o(king)i(v)o(ersion)e Fi(ALLOCA)l(TE)g Fr(here)h(for)e
(simplicit)o(y)j(with)f(the)f(understanding)h(that)e(a)75 1781
y(non-blo)q(c)o(king)i(v)o(ersion,)e(whic)o(h)h(returns)f(a)g(request)g(to)g
(b)q(e)h(w)o(aited)f(on,)g(ma)o(y)f(b)q(e)i(added)g(later.)166
1838 y(Neither)11 b(function)g(starts)e(an)o(y)g(application-visi)q(ble)14
b(pro)q(cesses;)e(rather,)e(they)g(obtain)g(an)g(MPI)p 1804
1838 14 2 v 17 w(Resource)75 1894 y(ob)s(ject)g(for)g(use)i(b)o(y)e(other)h
(functions.)19 b(Ho)o(w)o(ev)o(er,)10 b(w)o(e)h(need)h(to)e(tak)o(e)g(in)o
(to)h(accoun)o(t)f(those)h(resource)g(man-)75 1951 y(agers)f(that)g(cannot)g
(allo)q(cate)i(resources)e(without)h(starting)f(pro)q(cesses,)i(suc)o(h)f(as)
f(LoadLev)o(eler)i(or)e(DQS.)75 2007 y(In)k(those)g(cases,)f(the)h
(executables)h(ma)o(y)e(not)g(b)q(e)h(the)g(application)h(executables,)g(but)
f(rather)f(in)o(terface)75 2064 y(pro)q(cesses)f(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 2120 y(functions.)166 2176 y(The)k(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 2233 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 2289 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(.)1967 46 y Fg(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 Fl(1.3.)34 b(RESOUR)o(CE)16 b(MANA)o(GEMENT)e(INTERF)-5
b(A)o(CE)15 b(-)h(PR)o(OPOSAL)g(1)410 b Fr(11)75 45 y Fi(Resource)16
b(Discovery)75 225 y(MPI)p 160 225 14 2 v 16 w(RESOURCE)p 406
225 V 18 w(DISCO)o(VER\()g(resource\))117 303 y Fe(OUT)108
b Fi(resource)432 b Fd(MPI)p 982 303 13 2 v 15 w(Resource)15
b(object)166 427 y Fr(MPI)p 258 427 14 2 v 16 w(RESOUR)o(CE)p
528 427 V 18 w(DISCO)o(VER)c(returns)f(the)g(resource)g(ob)s(ject)g(con)o
(taining)h(an)o(y)e(pre-allo)q(cated)75 484 y(resources)19
b(for)f(this)h(pro)q(cess.)31 b(In)19 b(most)f(cases)h(only)g(the)g(pro)q
(cess)g(with)g(rank)g(0)f(will)j(get)d(a)h(de\014ned)75 540
y(v)m(alue)14 b(due)f(to)f(the)h(default)g(rules)h(of)e(o)o(wnership.)19
b(If)13 b(a)g(pro)q(cess)g(has)f(no)h(pre-allo)q(cated)h(resources,)f(then)75
596 y(mpiargresource)i(is)h(NULL.)75 716 y Fi(Resource)g(Allo)q(cation)75
897 y(MPI)p 160 897 V 16 w(RESOURCE)p 406 897 V 18 w(ALLOCA)l(TE\()g
(resource)p 839 897 V 16 w(description,)h(resource\))117 974
y Fe(IN)155 b Fi(resource)p 476 974 V 17 w(description)212
b Fe(String)14 b(con)o(taining)f(description)h(of)f(resources)117
1049 y(OUT)108 b Fi(resource)432 b Fd(MPI)p 982 1049 13 2 v
15 w(Resource)15 b Fe(allo)q(cated)166 1174 y Fr(This)g(is)g(a)g(blo)q(c)o
(king)h(resource)f(allo)q(cation)h(routine)f(based)g(on)g(the)f(resource)h
(description)h(string,)75 1230 y(whic)o(h)g(w)o(as)e(presen)o(ted)i(earlier.)
75 1350 y Fi(Resource)g(Merge)f(and)h(Split)75 1530 y(MPI)p
160 1530 14 2 v 16 w(RESOURCE)p 406 1530 V 18 w(MERGE\()g(n,)f(a)o(rra)o(y)p
757 1530 V 15 w(of)p 809 1530 V 16 w(resources,)g(resource\))117
1608 y Fe(IN)155 b Fi(n)564 b Fe(The)15 b(n)o(um)o(b)q(er)e(of)g(ob)r(jects)i
(in)e(arra)o(y)117 1683 y(IN)155 b Fi(a)o(rra)o(y)p 416 1683
V 15 w(of)p 468 1683 V 16 w(resources)252 b Fe(con)o(taining)13
b(MPI)p 1190 1683 13 2 v 15 w(resources)117 1758 y(OUT)108
b Fi(resource)432 b Fd(MPI)p 982 1758 V 15 w(Resource)166 1882
y Fr(This)20 b(functions)f(merges)g(sev)o(eral)h(resource)f(ob)s(jects)f(in)o
(to)h(a)g(single)h(ob)s(ject.)31 b(When)20 b(resources)75 1939
y(are)15 b(merged)h(the)f(MPI)p 481 1939 14 2 v 16 w(resource)h(ob)s(jects)f
(describing)i(the)e(individual)k(mem)o(b)q(ers)c(are)h(automatically)75
1995 y(freed.)k(This)c(ensures)g(that)e(an)o(y)h(resource)g(has)g(only)h(one)
f(o)o(wner.)166 2052 y(There)k(is)g(also)g(a)g(function)h(to)e(split)i(a)e
(resource)h(ob)s(ject)g(in)o(to)g(m)o(ultiple)h(ob)s(jects)f(with)g(similar)
75 2108 y(attributes.)-32 46 y Fg(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 Fr(12)928 b Fl(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fi(MPI)p 160 45 14 2 v 16 w(RESOURCE)p
406 45 V 18 w(SPLIT\(attr,)f(resource,)h(n,)h(a)o(rra)o(y)p
992 45 V 14 w(of)p 1043 45 V 16 w(resources\))117 122 y Fe(IN)155
b Fi(attr)517 b Fe(Sp)q(eci\014es)16 b(attribute)e(to)g(split)f(across)117
197 y(IN)155 b Fi(resource)432 b Fd(MPI)p 982 197 13 2 v 15
w(Resource)117 273 y Fe(INOUT)62 b Fi(n)564 b Fe(The)15 b(n)o(um)o(b)q(er)e
(of)g(ob)r(jects)i(in)e(arra)o(y)117 348 y(OUT)108 b Fi(a)o(rra)o(y)p
416 348 14 2 v 15 w(of)p 468 348 V 16 w(resources)252 b Fe(con)o(taining)13
b(MPI)p 1190 348 13 2 v 15 w(resources)117 423 y(IN)155 b Fi(resource)p
476 423 14 2 v 17 w(description)212 b Fe(String)14 b(con)o(taining)f
(description)h(of)f(resources)166 547 y Fr(With)k(the)g(exception)i(of)d
(MEMOR)l(Y,)h(the)g(prede\014ned)i(default)f(attributes)f(used)g(for)g
(resource)75 604 y(description)g(ha)o(v)o(e)e(logical)h(meaning)g(in)g(the)f
(con)o(text)g(of)f(split.)21 b(These)16 b(meanings)g(are:)143
710 y Fm(\017)23 b Fr(NSLOT:)15 b(A)h(di\013eren)o(t)f(resource)g(ob)s(ject)g
(is)h(returned)f(for)g(eac)o(h)g(NSLOT.)143 804 y Fm(\017)23
b Fr(HOST:)15 b(A)g(di\013eren)o(t)h(resource)f(ob)s(ject)g(is)g(returned)h
(for)e(eac)o(h)i(HOST.)143 898 y Fm(\017)23 b Fr(AR)o(CH:)13
b(A)h(di\013eren)o(t)g(resource)g(ob)s(ject)f(is)h(returned)g(for)g(eac)o(h)f
(group)h(of)f(similar)i(arc)o(hitectures.)143 991 y Fm(\017)23
b Fr(user-de\014ned)14 b(attr:)j(A)12 b(di\013eren)o(t)h(resource)g(ob)s
(ject)e(is)i(returned)g(for)f(eac)o(h)g(group)g(with)h(the)f(giv)o(en)189
1048 y(attribute.)19 b(F)l(or)c(example,)h(all)g(w)o(orkstations)d(connected)
k(b)o(y)e(F)o(CS)f(net)o(w)o(ork.)75 1191 y Fo(1.4)59 b(Resource)18
b(Management)g(Interface)g(-)i(Prop)r(osal)g(2)75 1294 y Fk(1.4.1)49
b(The)16 b(MPI)p 409 1294 15 2 v 18 w(Resource)g(Object)75
1380 y Fr(An)i Fi(MPI)p 237 1380 14 2 v 16 w(Resource)h Fr(ob)s(ject)f(iden)o
(ti\014es)h(a)f(set)g(of)g(computational)g(resources)g(on)g(whic)o(h)h(the)f
(ob)s(ject's)75 1437 y(o)o(wner)e(ma)o(y)h(start)e(pro)q(cesses.)26
b(Dep)q(ending)18 b(on)f(the)g(request)g(that)f(generated)h(it,)g(an)g
Fi(MPI)p 1693 1437 V 16 w(Resource)75 1493 y Fr(ma)o(y)h(represen)o(t)h(a)g
(ph)o(ysical)h(CPU,)f(a)f(collection)j(of)e(CPUs,)g(or)g(ev)o(en)g(a)g
(promise)g(from)f(a)h(resource)75 1549 y(manager)i(that)g(an)h(application)i
(is)e(allo)o(w)o(ed)g(to)g(start)e(one)i(or)g(more)f(pro)q(cesses)h(\(whose)g
(ph)o(ysical)75 1606 y(lo)q(cation)16 b(will)h(b)q(e)f(determined)g
(dynamically\).)166 1662 y(Eac)o(h)h(resource)g(ob)s(ject)f(is)i(o)o(wned)f
(b)o(y)g(a)g(single)h(pro)q(cess.)26 b(Initially)l(,)20 b(the)d(pro)q(cess)g
(iden)o(ti\014ed)i(b)o(y)75 1719 y(\(MPI)p 185 1719 V 16 w(COMM)p
353 1719 V 16 w(W)o(ORLD,)c(0\))g(o)o(wns)g(all)h(pre-existing)h(resources)e
(in)h(a)f(single)i(ob)s(ject.)j(Resource)c(ob-)75 1775 y(jects)d(can)g(b)q(e)
h(split)g(and)f(merged)g(in)o(to)g(other)g(resource)g(ob)s(jects)g(and)g(o)o
(wnership)g(of)g(un)o(used)h(resources)75 1832 y(can)k(b)q(e)g(passed)g(to)g
(a)f(pro)q(cesses)h(c)o(hildren)i(when)e(they)g(are)g(started.)27
b(In)18 b(this)g(case,)g(the)g(c)o(hild)i(with)75 1888 y(rank)15
b(0)g(obtains)g(o)o(wnership.)166 1945 y(An)o(y)f(pro)q(cess)h(ma)o(y)f(o)o
(wn)g(a)g(resource)h(giv)o(en)g(that)f(it)h(has)f(successfully)j(called)f
Fi(MPI)p 1623 1945 V 16 w(ALLOCA)l(TE)p Fr(.)75 2001 y(Ownership)h(is)e(not)g
(limited)i(to)e(pro)q(cesses)g(with)h(rank)f(0.)166 2140 y
Ff(Discussion:)48 b Fe(The)18 b(de\014nitions)f(ab)q(o)o(v)o(e)g(assume)g
(that)h(pro)q(cesses)i(in)d(MPI-2)g(con)o(tin)o(ue)h(to)f(b)q(e)h(named)75
2197 y(based)c(on)e(\(COMM,)h(RANK\).)g(Later)h(in)e(this)h(c)o(hapter)h(w)o
(e)g(describ)q(e)g(an)f(alternate)h(naming)c(sc)o(heme)k(based)f(on)75
2253 y(a)h(pro)q(cess)h(ob)r(ject.)k(-A)o(G)166 2392 y Fr(The)12
b(simplest)g(understanding)h(of)e(a)h(resource)g(ob)s(ject)f(is)h(that)f(it)h
(is)g(a)f(bag)g(of)g(pro)q(cess)h(slots.)19 b(Ev)o(en)75 2449
y(so,)14 b(it)h(is)g(necessary)g(to)g(distinguish)h(b)q(et)o(w)o(een)g(the)e
(total)h(n)o(um)o(b)q(er)g(of)f(pro)q(cess)h(slots)g(and)g(the)g(n)o(um)o(b)q
(er)75 2505 y(of)h(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 2562 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 2618 y(the)18 b(other)g(hand,)g(for)f(b)q(est)i(results)f(it)g
(should)h(run)f(only)h(one)f(or)f(t)o(w)o(o)g(pro)q(cess)h(p)q(er)g(pro)q
(cessor.)28 b(W)l(e)75 2675 y(could)18 b(giv)o(e)f(it)g(one)g(pro)q(cess)g
(slot,)g(but)g(some)f(applications)i(will)h(need)f(to)e(b)q(e)h(able)h(to)e
(do)h(more.)24 b(W)l(e)1967 46 y Fg(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 Fl(1.4.)34 b(RESOUR)o(CE)16 b(MANA)o(GEMENT)e(INTERF)-5
b(A)o(CE)15 b(-)h(PR)o(OPOSAL)g(2)410 b Fr(13)75 45 y(don't)17
b(w)o(an)o(t)g(to)g(tell)i(the)f(user,)h(ho)o(w)o(ev)o(er,)e(that)g(there)h
(are)g(100)f(slots)h(a)o(v)m(ailable)h(b)q(ecause)g(there)f(will)75
102 y(b)q(e)h(no)f(w)o(a)o(y)f(to)h(distinguish)i(this)e(resource)h(from)e
(one)h(with)h(100)e(CPUs.)29 b(W)l(e)18 b(ma)o(y)f(ha)o(v)o(e)h(an)g(SMP)l(,)
75 158 y(but)c(our)g(MPI)g(pro)q(cesses)h(ma)o(y)e(b)q(e)i(m)o(ultithreaded)g
(pro)q(cesses,)f(so)g(that)f(w)o(e)h(ma)o(y)g(still)h(w)o(an)o(t)e(only)i
(one)75 214 y(pro)q(cess)e(p)q(er)g(no)q(de.)20 b(Th)o(us)12
b(\\recommended)h(pro)q(cesses")g(do)q(esn't)g(alw)o(a)o(ys)e(mean)i(\\n)o
(um)o(b)q(er)g(of)f(CPUs.")75 271 y(Most)k(applications)i(can)g(lo)q(ok)f(at)
f(recommended)i(pro)q(cesses)f(and)g(ignore)h(max)e(pro)q(cesses.)26
b(Finally)l(,)75 327 y(for)15 b(debugging,)g(a)g(user)h(migh)o(t)f(w)o(an)o
(t)f(to)g(start)g(m)o(ultiple)j(pro)q(cesses)f(on)f(a)g(single)h(w)o
(orkstation.)166 384 y(The)j(notion)h(of)f Fj(r)n(esour)n(c)n(e)f
Fr(is)i(delib)q(erately)h(\015exible.)35 b(Most)18 b(applications)j(do)e(not)
g(care)g(where)75 440 y(pro)q(cesses)g(are)g(started,)f(as)g(long)i(as)e
(there)h(is)g(one)g(pro)q(cess)g(p)q(er)g(CPU.)f(F)l(or)g(these)h
(applications,)i(a)75 497 y(single)16 b(resource)e(ob)s(ject)g(con)o(taining)
h(sev)o(eral)g(CPUs)f(ma)o(y)g(b)q(e)h(appropriate.)k(Other)c(appications)g
(will)75 553 y(w)o(an)o(t)20 b(explicit)k(con)o(trol)d(o)o(v)o(er)f(whic)o(h)
i(pro)q(cesses)g(go)e(on)i(whic)o(h)g(mac)o(hine.)39 b(In)22
b(this)f(case,)i(a)e(single)75 610 y(resource)d(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 666 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.)75 788 y Fk(1.4.2)49 b(Interfacing)16
b(to)h(the)e(Resource)g(Manager)75 874 y Fr(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 930 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 987 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 1043 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 1099 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 1156
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 1212 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 Fh(pvm)p
1503 1212 15 2 v 17 w(addhosts)g Fr(routine.)166 1269 y(It)k(w)o(ould)h(b)q
(e)g(p)q(ossible)i(to)c(treat)h(disco)o(v)o(ery)h(and)f(allo)q(cation)i(in)f
(the)g(same)f(w)o(a)o(y)l(,)f(using)i(a)g(single)75 1325 y
Fi(ALLOCA)l(TE)22 b Fr(function.)38 b(This)21 b(w)o(ould)g(require)h(in)g
(the)f(case)g(of)f(pre-allo)q(cated)j(resources)e(that)f(an)75
1382 y(application)12 b(kno)o(w)e(in)h(adv)m(ance)g(what)f(resources)g(are)g
(a)o(v)m(ailable)j(so)d(that)f(it)i(kno)o(ws)f(what)f(to)h(\\allo)q(cate".)75
1438 y(W)l(e)k(therefore)g(distinguish)j(b)q(et)o(w)o(een)d(allo)q(cation)i
(and)e(disco)o(v)o(ery)g(of)g(resources.)20 b(Resource)15 b(disco)o(v)o(ery)
75 1495 y(is)c(exp)q(ected)i(to)d(b)q(e)i(a)e(fast)g(op)q(eration)h(that)g
(ma)o(y)f(b)q(e)i(p)q(ossible)g(to)f(implemen)o(t)h(through)e(in)o(ternal)i
(lo)q(okup)75 1551 y(rather)19 b(than)g(external)h(comm)o(unication)g(\(dep)q
(ending)h(on)e(the)h(MPI)f(implemen)o(tation\).)33 b(Resource)75
1608 y(allo)q(cation,)16 b(on)e(the)h(other)g(hand,)g(can)g(b)q(e)g
(time-consuming,)h(it)f(is)g(exp)q(ected)h(that)e(the)h(non-blo)q(c)o(king)75
1664 y(v)o(ersion)g(will)i(usually)g(b)q(e)f(used.)166 1720
y(Neither)22 b(resource)f(disco)o(v)o(ery)h(nor)e(resource)i(allo)q(cation)g
(start)e(an)o(y)h(application-visibl)q(e)j(pro-)75 1777 y(cesses;)i(rather,)d
(they)g(obtain)g(resources)f(for)g(use)h(b)o(y)f(other)h(functions.)42
b(Ho)o(w)o(ev)o(er,)23 b(w)o(e)f(need)i(to)75 1833 y(tak)o(e)19
b(in)o(to)h(accoun)o(t)g(those)g(resource)g(managers)g(that)f(cannot)h(allo)q
(cate)h(resources)f(without)g(start-)75 1890 y(ing)f(pro)q(cesses.)31
b(In)20 b(those)e(cases,)i(the)f(pro)q(cesses)g(ma)o(y)f(not)g(b)q(e)i(the)f
(application)h(executables,)h(but)75 1946 y(rather)d(in)o(terface)h(pro)q
(cesses)f(that)g(will)i(create)e(the)h(application)h(pro)q(cesses)f(in)g
(resp)q(onse)g(to)f(one)g(of)75 2003 y(the)d(pro)q(cess-creation)h(functions)
g(describ)q(ed)h(here)f(\(lik)o(e)g Fi(MPI)p 1168 2003 14 2
v 16 w(SP)l(A)-5 b(WN)p Fr(\).)166 2059 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 2116 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 2172 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 2292 y Fi(Resource)i(Discovery)75
2472 y(MPI)p 160 2472 V 16 w(RESOURCE)p 406 2472 V 18 w(DISCO)o
(VER\(resource\))117 2550 y Fe(OUT)108 b Fi(resources)415 b
Fe(an)14 b Fd(MPI)p 1040 2550 13 2 v 14 w(Resource)166 2674
y Fr(Returns)i(a)f(single)h(resource)f(ob)s(ject)g(con)o(taining)h(all)g(pro)
q(cess)f(slots)h(preallo)q(cated)g(to)f(a)f(pro)q(cess.)-32
46 y Fg(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 Fr(14)928 b Fl(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fi(Resource)h(Allo)q(cation)75 225 y(MPI)p
160 225 14 2 v 16 w(RESOURCE)p 406 225 V 18 w(ALLOCA)l(TE\(np)o(ro)q(cs,)g
(resource)p 974 225 V 17 w(description,)g(resource\))117 303
y Fe(IN)155 b Fi(np)o(ro)q(cs)465 b Fe(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
378 y(IN)155 b Fi(resource)p 476 378 V 17 w(description)212
b Fe(String)14 b(con)o(taining)f(description)h(of)f(resources)117
453 y(OUT)108 b Fi(resource)432 b Fd(MPI)p 982 453 13 2 v 15
w(Resource)15 b Fe(allo)q(cated)166 577 y Fr(Requests)j(a)f(new)g(resource)g
(from)g(the)g(resource)g(manager.)26 b(The)17 b(resource)g(description)i
(string)75 634 y(is)d(opaque)f(to)g(MPI)g(and)g(is)h(passed)g(directly)g(to)f
(the)g(resource)g(manage.)20 b(The)15 b(minim)o(um)i(n)o(um)o(b)q(er)e(of)75
690 y(pro)q(cess)e(slots)f(is)g(also)h(passed)f(to)g(the)g(resource)g
(manager)g(and)g(ma)o(y)g(b)q(e)h(redundan)o(t)f(with)h(information)75
747 y(sp)q(eci\014ed)k(in)f(the)f(resource)g(description.)21
b Fi(np)o(ro)q(cs)16 b Fr(is)f(separate)f(from)h Fi(resource)p
1444 747 14 2 v 16 w(description)i Fr(b)q(ecause)f(it)75 803
y(is)g(the)f(one)g(part)g(of)g(a)g(resource)g(that)f(has)h(meaning)h(within)h
(MPI.)166 860 y(Neither)f Fi(MPI)p 414 860 V 16 w(RESOURCE)p
660 860 V 19 w(DISCO)o(VER)g Fr(nor)f Fi(MPI)p 1076 860 V 16
w(RESOURCE)p 1322 860 V 19 w(ALLOCA)l(TE)h Fr(tak)o(e)f(a)g(comm)o(u-)75
916 y(nicator)10 b(argumen)o(t)g(so)g(that)f(b)q(oth)i(are)f(lo)q(cal)h(to)f
(a)g(single)i(pro)q(cess.)18 b(This)11 b(means)f(that)g(an)g
Fi(MPI)p 1693 916 V 16 w(Resource)75 973 y Fr(ob)s(ject)15
b(has)g(a)g(single)h(o)o(wner.)75 1094 y Fk(1.4.3)49 b(Interaction)16
b(b)q(et)o(w)o(een)f(MPI)i(and)f(the)g(resource)e(manager)75
1180 y Fr(The)i(syn)o(tax)f(of)h Fi(MPI)p 453 1180 V 16 w(RESOURCE)p
699 1180 V 18 w(ALLOCA)l(TE)h Fr(is)f(delib)q(erately)j(minimal.)k(The)17
b(resource)f(descrip-)75 1237 y(tion)21 b(is,)h(in)g(principle,)i(completely)
e(opaque)f(to)f(MPI,)h(and)g(is)g(passed)g(to)f(the)h(resource)g(manager)75
1293 y(unc)o(hanged.)166 1349 y(Wh)o(y)15 b(this)g(strict)g(separation?)21
b(There)15 b(are)g(sev)o(eral)h(reasons.)131 1456 y(1.)22 b(Ha)o(ving)e(ac)o
(kno)o(wledged)g(that)g(MPI)g(m)o(ust)f(co)q(ordinate)h(with)h(a)f(logically)
h(external)g(resource)189 1512 y(manager,)d(w)o(e)h(w)o(an)o(t)e(to)h(limit)j
(as)d(m)o(uc)o(h)h(as)f(p)q(ossible)j(the)e(in)o(tert)o(wining)g(b)q(et)o(w)o
(een)g(these)g(t)o(w)o(o)189 1569 y(pieces)13 b(of)f(soft)o(w)o(are,)f(with)h
(the)h(goal)f(of)g(promoting)f(as)h(m)o(uc)o(h)h(p)q(ortabilit)o(y)g(and)f
(in)o(terop)q(erabilit)o(y)189 1625 y(as)e(p)q(ossible.)20
b(The)11 b(less)g(MPI)g(kno)o(ws)f(ab)q(out)g(a)h(sp)q(eci\014c)h(resource)f
(manager,)f(the)h(more)f(it)h(is)g(lik)o(ely)189 1682 y(to)h(b)q(e)h(able)h
(to)e(in)o(teract)h(with)g(more)g(than)f(one.)20 b(Moreo)o(v)o(er,)11
b(there)i(is)g(no)g(need)h(for)e(MPI)h(to)f(ha)o(v)o(e)189
1738 y(an)o(y)19 b(general)i(concept)f(of)g(resources.)34 b(Ev)o(en)20
b(a)g(complicated)h(resource)f(description)i(usually)189 1794
y(resolv)o(es)13 b(to)g(nothing)h(more)f(complicated)i(than)e(a)g(host)g
(name)g(or)g(ev)o(en)h(a)f(no)q(de)h(n)o(um)o(b)q(er.)20 b(Th)o(us)189
1851 y(the)f(in)o(teraction)h(b)q(et)o(w)o(een)g(the)f(resource)h(manager)e
(can)i(b)q(e)g(quite)g(simple)h(\(e.g.,)e(a)g(host\014le\))189
1907 y(ev)o(en)c(when)h(there)f(are)g(complicated)i(resources.)131
2001 y(2.)22 b(Explicit)d(allo)q(cation)g(\(through)e Fi(MPI)p
850 2001 V 16 w(RESOURCE)p 1096 2001 V 18 w(ALLOCA)l(TE)p Fr(\))h(is)h(lik)o
(ely)g(to)e(b)q(e)h(quite)h(rare.)189 2058 y(MPI)11 b(should)i(not)e(go)g(to)
g(great)f(lengths)i(to)f(handle)i(rare)e(ev)o(en)o(ts.)19 b(\(On)11
b(the)h(other)f(hand,)h(though,)189 2114 y(resource)j(disco)o(v)o(ery)g(migh)
o(t)g(b)q(e)h(common\).)131 2208 y(3.)22 b(Resource)13 b(requests)f(are)g
(often)g(most)g(easily)h(sp)q(eci\014ed)i(externally)e(to)f(an)g
(application,)i(b)q(oth)f(for)189 2264 y(p)q(ortabilit)o(y)i(\(an)e
(application)j(can)f(b)q(e)f(unc)o(hanged)h(except)g(for)f(a)f
(con\014guration)i(\014le\))g(and)f(ease)189 2321 y(of)e(use.)20
b(Complex)13 b(resource)g(requests)g(are)g(lik)o(ely)i(to)d(b)q(e)i(sp)q
(eci\014c)h(to)d(a)h(particular)h(en)o(vironmen)o(t)189 2377
y(and)h(should)h(not)f(b)q(e)h(hard-co)q(ded)g(in)o(to)f(a)g(program.)131
2471 y(4.)22 b(In)17 b(the)f(case)h(where)g(detailed)h(program)d(in)o
(teraction)i(with)g(a)g(resource)f(manager)g(is)h(required,)189
2527 y(it)k(is)h(exp)q(ected)g(that)f(an)g(MPI)g(program)g(will)i(use)e(a)g
(resource-manager)g(API)h(to)e(\014nd)i(out)189 2584 y(information)16
b(and)h(construct)f(requests.)24 b(F)l(or)16 b(in)o(teraction)h(with)g(MPI,)f
(the)h(API)f(can)h(b)q(e)g(used)189 2640 y(to)d(construct)h(a)g(resource)g
(description)i(string.)1967 46 y Fg(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 Fl(1.4.)34 b(RESOUR)o(CE)16 b(MANA)o(GEMENT)e(INTERF)-5
b(A)o(CE)15 b(-)h(PR)o(OPOSAL)g(2)410 b Fr(15)166 45 y(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 102 y(the)15 b Fi(resource)p 311 102
14 2 v 17 w(description)i Fr(string.)166 158 y(A)f(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 214 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 271 y(included)k(in)e(the)f Fi(resource)p
546 271 V 17 w(description)i Fr(string.)75 390 y Fk(1.4.4)49
b(Splitting)17 b(Resources)75 476 y Fr(By)f(design,)h(the)f(resource)h(ob)s
(ject)e(abstraction)h(con)o(tains)g(almost)g(no)g(visible)i(structure.)k(Rev)
o(ealing)75 532 y(only)c(a)f(n)o(um)o(b)q(er)h(of)g(pro)q(cess)f(slots)h
(allo)o(ws)g(clean)g(separation)g(of)f(resource)g(managemen)o(t)g(and)h(com-)
75 589 y(m)o(unication)e(functions)f(and)g(allo)o(ws)g(MPI)g(to)f(function)i
(in)g(a)e(wide)i(range)e(of)h(parallel)h(en)o(vironmen)o(ts.)166
645 y(Ho)o(w)o(ev)o(er,)k(a)h(single)h(monolithic)g(resource)e(ob)s(ject)g
(con)o(taining)i(a)e(n)o(um)o(b)q(er)h(of)f(heterogeneous)75
702 y(sub-resources)c(is)f(not)g(\015exible)j(enough)d(for)g(man)o(y)f
(applications.)22 b(F)l(or)15 b(instance)143 781 y Fm(\017)23
b Fr(An)15 b(application)i(ma)o(y)d(w)o(an)o(t)h(to)f(divide)j(a)e(resource)g
(among)g(its)g(c)o(hildren)143 869 y Fm(\017)23 b Fr(An)c(application)h(ma)o
(y)e(w)o(an)o(t)f(to)h(spa)o(wn)h(a)f(c)o(hild)i(on)f(a)f(sp)q(eci\014c)j
(sub-resource)e(\(for)f(instance,)189 926 y(the)d(no)q(de)h(named)f(\\dop)q
(ey",)g(or)g(the)g(no)q(de)h(with)g(the)f(HiPPI)h(in)o(terface\).)166
1005 y(MPI)d(therefore)h(pro)o(vides)g(limited)h(capabilit)o(y)g(to)e(split)h
(a)f(single)i(resource)f(ob)s(ject)f(in)o(to)g(m)o(ultiple)75
1062 y(subresources.)20 b(Since)14 b(MPI)f(itself)h(in)g(principle)i(kno)o
(ws)d(little)i(or)d(nothing)i(ab)q(out)f(resources,)g(logically)75
1118 y(suc)o(h)20 b(a)f(splitting)i(m)o(ust)e(b)q(e)h(sp)q(eci\014ed)h(or)e
(done)h(externally)l(.)34 b(Sp)q(eci\014cally)l(,)24 b(the)19
b(resource)h(manager)75 1174 y(ma)o(y)g(sp)q(ecify)h(a)f(splitting)i(to)e
(MPI)g(that)g(MPI)g(can)h(in)g(turn)f(rev)o(eal)h(to)f(a)g(user.)35
b(F)l(or)20 b(example,)i(a)75 1231 y(user)e(ma)o(y)f(request)i(\(at)e
(program)f(launc)o(h)j(or)f(in)h Fi(MPI)p 1061 1231 V 16 w(ALLOCA)l(TE)p
Fr(\))f(resources)g(describ)q(ed)i(b)o(y)e(the)75 1287 y(string)e
(\\2:bigmem+2:smallmem".)28 b(The)18 b(corresp)q(onding)h(resource)f(will)i
(ha)o(v)o(e)e(4)f(slots.)28 b(Ho)o(w)o(ev)o(er,)75 1344 y(the)19
b(resource)h(manager)e(ma)o(y)h(tell)h(MPI)f(\(when)g(it)h(hands)f(o)o(v)o
(er)g(the)g(resource\))g(that)g(the)g(resource)75 1400 y(splits)d(in)o(to)f
(t)o(w)o(o)f(subresources.)166 1457 y(In)h(practice,)f(relying)h(only)g(on)f
(external)g(splitting)i(ma)o(y)d(b)q(e)i(to)q(o)e(restrictiv)o(e.)20
b(Most)13 b(MPI)h(imple-)75 1513 y(men)o(tations)i(will)h(probably)g(ha)o(v)o
(e)e(an)h(in)o(ternal)h(concept)f(of)f(a)h(set)g(of)f(hostnames)h(and)g(arc)o
(hitectures)75 1570 y(asso)q(ciated)h(with)f(eac)o(h)h(resource.)23
b(In)17 b(this)g(case,)f(it)h(is)g(reasonable)g(to)e(exp)q(ect)j(MPI)e(to)g
(p)q(erform)g(the)75 1626 y(splitting)e(itself)g(\(although)f(not)f
(required\).)20 b(Ho)o(w)12 b(m)o(uc)o(h)h(should)h(MPI)e(b)q(e)i(able)f(to)g
(do)f(b)o(y)h(itself)t(?)20 b(This)75 1683 y(is)e(a)f(slipp)q(ery)i(slop)q
(e.)28 b(T)l(aking)17 b(guidance)i(from)e(PVM,)f(MPI)i(pro)o(vides)g(for)e
(automatic)h(splitting)i(b)o(y)75 1739 y(host)d(and)g(arc)o(hitecture.)24
b(Since)17 b(the)g(concept)f(of)g(\\pro)q(cess)g(slot")g(is)h(visible)h(and)f
(crucial,)g(MPI)g(ma)o(y)75 1795 y(also)e(split)h(resources)g(in)o(to)f
(individual)j(pro)q(cess)e(slots.)166 1852 y(These)f(considerations)i(motiv)m
(ate)e(the)g(follo)o(wing)h(function:)75 2003 y Fi(MPI)p 160
2003 V 16 w(RESOURCE)p 406 2003 V 18 w(SPLIT\(resource,)e(metho)q(d,)i(a)o
(rra)o(y)p 1014 2003 V 14 w(of)p 1065 2003 V 16 w(resources,)g(n\))117
2080 y Fe(INOUT)62 b Fi(resource)432 b Fe(An)14 b Fd(MPI)p
1050 2080 13 2 v 15 w(Resource)h Fe(ob)r(ject)g(to)e(b)q(e)i(split)117
2152 y(IN)155 b Fi(metho)q(d)444 b Fe(An)12 b(in)o(teger)g(describing)g(ho)o
(w)f(the)h(resource)i(should)d(b)q(e)h(split)117 2225 y(OUT)108
b Fi(a)o(rra)o(y)p 416 2225 14 2 v 15 w(of)p 468 2225 V 16
w(resources)252 b Fe(Arra)o(y)14 b(of)f Fd(MPI)p 1148 2225
13 2 v 15 w(Resource)i Fe(ob)r(jects)g(allo)q(cated)117 2297
y(OUT)108 b Fi(n)564 b Fe(Num)o(b)q(er)14 b(of)f(resources)j(in)e(arra)o(y)
166 2421 y Fi(resource)e Fr(is)g(the)g(resource)g(to)f(b)q(e)h(split.)20
b(It)12 b(is)g(in)o(v)m(alid)i(after)d(the)h(call)g(returns)g(\(ev)o(en)g(if)
g(no)g(splitting)75 2478 y(is)k(done\).)166 2534 y Fi(metho)q(d)f
Fr(determines)g(ho)o(w)f(resources)h(are)f(split)i(up)e(in)o(to)h(one)f(or)g
(more)g(MPI)p 1516 2534 14 2 v 17 w(Resource)h(ob)s(jects.)75
2591 y(It)g(is)g(a)g(suggestion,)f(not)g(a)h(requiremen)o(t,)g(as)f(certain)h
(concepts)h(ma)o(y)e(b)q(e)h(foreign)g(to)f(certain)h(parallel)75
2647 y(en)o(vironmen)o(ts.)28 b(An)18 b(implemen)o(tation)h(is)g(therefore)e
(allo)o(w)o(ed)h(to)g(return)f(the)h(original)h(resource.)28
b(It)75 2704 y(can)15 b(tak)o(e)g(the)g(follo)o(wing)h(prede\014ned)h(v)m
(alues.)-32 46 y Fg(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 Fr(16)928 b Fl(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)143 45 y Fm(\017)23 b Fi(MPI)p 274 45 14 2 v
15 w(RESOURCE)p 519 45 V 19 w(SPLITBY)p 721 45 V 16 w(EXTERNAL)p
Fr(:)f(Splitting)g(is)g(done)f(as)g(sp)q(eci\014ed)i(externally)l(,)g(in)189
102 y(the)15 b(original)h(resource)f(description.)143 195 y
Fm(\017)23 b Fi(MPI)p 274 195 V 15 w(RESOURCE)p 519 195 V 19
w(SPLITBY)p 721 195 V 16 w(HOST)p Fr(:)13 b(Eac)o(h)f(returned)g(resource)g
(corresp)q(onds)h(to)e(one)i(host.)18 b(A)189 252 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 Fi(MPI)p 1573 252 V 16 w(RESOURCE)p
1819 252 V 19 w(HOSTNAME)p Fr(.)189 308 y(If)18 b(the)f(pre-allo)q(cated)i
(resource)f(cannot)f(b)q(e)i(describ)q(ed)g(as)f(a)f(collection)i(of)f
(hosts,)f(\(e.g.,)g(it)g(is)189 365 y(a)e(promise)i(from)e(a)h(resource)g
(manager,)g(not)f(an)h(explicit)j(ph)o(ysical)e(resource\))f(no)g(splitting)h
(is)189 421 y(done.)143 515 y Fm(\017)23 b Fi(MPI)p 274 515
V 15 w(RESOURCE)p 519 515 V 19 w(SPLITBY)p 721 515 V 16 w(ARCH)p
Fr(:)15 b(Eac)o(h)f(returned)h(resource)f(corresp)q(onds)g(to)g(a)g(single)h
(ar-)189 571 y(c)o(hitecture.)25 b(An)18 b(arc)o(hitecture)f(is)g(a)g(class)g
(of)g(binary-compatible)h(computers.)25 b(The)17 b(name)g(of)189
628 y(the)e(arc)o(hitecture)g(ma)o(y)g(b)q(e)h(disco)o(v)o(ered)g(using)g
Fi(MPI)p 1102 628 V 15 w(RESOURCE)p 1347 628 V 19 w(ARCHNAME)p
Fr(.)143 722 y Fm(\017)23 b Fi(MPI)p 274 722 V 15 w(RESOURCE)p
519 722 V 19 w(SPLITBY)p 721 722 V 16 w(PROCESS)p Fr(:)c(Eac)o(h)e(returned)h
(resource)g(con)o(tains)f(a)g(single)i(pro-)189 778 y(cess)c(slot)g(\(of)g
(the)g(\\recommended")g(t)o(yp)q(e\).)166 884 y Fi(a)o(rra)o(y)p
264 884 V 14 w(of)p 315 884 V 16 w(resources)20 b Fr(con)o(tains)g(the)f(new)
h(resources.)32 b(The)20 b(arra)o(y)e(m)o(ust)h(b)q(e)h(of)e(length)j(equal)f
(to)75 941 y(or)f(greater)f(than)h(the)g(n)o(um)o(b)q(er)h(of)f
(\\recommended")g(pro)q(cess)h(slots)f(in)h(the)f(original)h(resource.)32
b(In)75 997 y(the)20 b(ev)o(en)o(t)g(that)f(no)h(splitting)h(is)g(actually)g
(done,)g(the)f(\014rst)f(elemen)o(t)i(of)f(this)g(arra)o(y)f(will)j(b)q(e)e
(a)g(re-)75 1054 y(source)f(ob)s(ject)f(con)o(taining)i(the)f(original)h
(resources)f(\(since)h(the)f(input)h(resource)f(ob)s(ject)f(is)i(alw)o(a)o
(ys)75 1110 y(in)o(v)m(alidated\).)166 1167 y(After)13 b(resources)g(ha)o(v)o
(e)g(b)q(een)h(split,)h(there)e(are)g(times)h(when)g(they)f(ma)o(y)f(need)j
(to)d(b)q(e)i(recom)o(bined.)75 1223 y(F)l(or)d(instance,)j(MPI)e(pro)o
(vides)g(that)f(a)h(single)h(resource)g(ob)s(ject)e(is)i(passed)f(to)f(c)o
(hildren.)21 b(A)12 b(paren)o(t)g(ma)o(y)75 1280 y(split)20
b(a)e(resource)h(in)o(to)g(hosts)f(\\happ)o(y",)h(\\dump)o(y",)g(\\frump)o
(y")f(and)h(\\w)o(easel")f(and)h(giv)o(e)g(\\happ)o(y")75 1336
y(and)c(\\dump)o(y")g(to)g(its)g(\014rst)g(c)o(hild.)75 1487
y Fi(MPI)p 160 1487 V 16 w(RESOURCE)p 406 1487 V 18 w(MERGE\(a)o(rra)o(y)p
690 1487 V 15 w(of)p 742 1487 V 16 w(resources,)h(n,)f(resource\))g(a)o(rra)o
(y)p 1293 1487 V 15 w(of)p 1345 1487 V 16 w(resources,)g(n\))117
1564 y Fe(INOUT)62 b Fi(a)o(rra)o(y)p 416 1564 V 15 w(of)p
468 1564 V 16 w(resources)252 b Fe(Set)15 b(of)e(resources)j(to)e(b)q(e)g
(merged)117 1639 y(IN)155 b Fi(n)564 b Fe(Num)o(b)q(er)14 b(of)f(resources)j
(in)e(arra)o(y)117 1715 y(OUT)108 b Fi(resource)432 b Fe(The)15
b(new)f(resource)166 1839 y Fr(It)h(is)h(not)f(required)h(that)e(it)i(b)q(e)g
(p)q(ossible)h(to)d(resplit)j(resources)e(whic)o(h)h(ha)o(v)o(e)f(b)q(een)h
(merged.)75 1961 y Fk(1.4.5)49 b(Utilit)o(y)17 b(routines)75
2047 y Fr(In)d(this)g(section)g(w)o(e)g(collect)g(routines)g(that)f(pro)o
(vide)h(access)g(to)f(the)g(data)g(con)o(tained)h(in)h(the)e(datat)o(yp)q(e)
75 2103 y Fi(MPI)p 160 2103 V 16 w(Resource)p Fr(.)75 2254
y Fi(MPI)p 160 2254 V 16 w(RESOURCE)p 406 2254 V 18 w(NSLOTS\(resource,)j
(nslots\))117 2331 y Fe(IN)155 b Fi(resource)432 b Fe(an)14
b Fd(MPI)p 1040 2331 13 2 v 14 w(Resource)h Fe(ob)r(ject)117
2406 y(OUT)108 b Fi(nslots)480 b Fe(n)o(um)o(b)q(er)13 b(of)h(slots)75
2531 y Fi(nslots)j Fr(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 2587 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\).)1967 46 y Fg(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 Fl(1.4.)34 b(RESOUR)o(CE)16 b(MANA)o(GEMENT)e(INTERF)-5
b(A)o(CE)15 b(-)h(PR)o(OPOSAL)g(2)410 b Fr(17)75 45 y Fi(MPI)p
160 45 14 2 v 16 w(RESOURCE)p 406 45 V 18 w(NSLOTS)p 595 45
V 17 w(TOT)l(AL\(resource,)15 b(nslots\))117 122 y Fe(IN)155
b Fi(resource)432 b Fe(an)14 b Fd(MPI)p 1040 122 13 2 v 14
w(Resource)h Fe(ob)r(ject)117 197 y(OUT)108 b Fi(nslots)480
b Fe(n)o(um)o(b)q(er)13 b(of)h(slots)75 322 y Fi(nslots)i Fr(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.)75
473 y Fi(MPI)p 160 473 14 2 v 16 w(RESOURCE)p 406 473 V 18
w(NPROCS)p 601 473 V 18 w(RUNNING\(resource,)i(np)o(ro)q(cs\))117
550 y Fe(IN)155 b Fi(resource)432 b Fe(an)14 b Fd(MPI)p 1040
550 13 2 v 14 w(Resource)h Fe(ob)r(ject)117 625 y(OUT)108 b
Fi(np)o(ro)q(cs)465 b Fe(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)i(curren)o
(tly)f(running)75 844 y Fi(MPI)p 160 844 14 2 v 16 w(RESOURCE)p
406 844 V 18 w(HOSTNAME\(resource,)h(name\))117 921 y Fe(IN)155
b Fi(resource)432 b Fe(an)14 b Fd(MPI)p 1040 921 13 2 v 14
w(Resource)h Fe(ob)r(ject)117 996 y(OUT)108 b Fi(name)485 b
Fe(a)14 b(string)g(iden)o(tifying)e(the)j(resource)75 1121
y Fr(If)g(the)h(resource)f(correp)q(onds)g(to)g(a)g(single)h(\\host")e
(\(implemen)o(tation)j(de\014ned\))f(this)f(routine)h(returns)75
1177 y(the)f(hostname)g(\(if)g(MPI)h(kno)o(ws)e(what)h(the)g(name)g(is\).)75
1328 y Fi(MPI)p 160 1328 14 2 v 16 w(RESOURCE)p 406 1328 V
18 w(ARCHNAME\(resource,)h(name\))117 1406 y Fe(IN)155 b Fi(resource)432
b Fe(an)14 b Fd(MPI)p 1040 1406 13 2 v 14 w(Resource)h Fe(ob)r(ject)117
1481 y(OUT)108 b Fi(name)485 b Fe(a)14 b(string)g(iden)o(tifying)e(the)j
(resource)75 1605 y Fr(If)d(the)g(resource)g(correp)q(onds)h(to)e(a)g(single)
j(arc)o(hitecture)e(this)g(routine)h(returns)f(the)g(arc)o(hitecture)g(name)
75 1662 y(\(if)j(MPI)h(kno)o(ws)e(what)h(the)g(name)g(is\).)75
1813 y Fi(MPI)p 160 1813 14 2 v 16 w(RESOURCE)p 406 1813 V
18 w(DESCRIPTION\(resource,)g(description\))117 1890 y Fe(IN)155
b Fi(resource)432 b Fe(an)14 b Fd(MPI)p 1040 1890 13 2 v 14
w(Resource)h Fe(ob)r(ject)117 1965 y(OUT)108 b Fi(description)384
b Fe(a)14 b(string)g(describing)g(the)h(resource)75 2089 y
Fr(The)i(v)m(alue)i(of)d Fi(description)j Fr(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
2146 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
2202 y(application.)21 b(Its)15 b(primary)f(use)h(is)g(in)g(conjunction)g
(with)g Fi(MPI)p 1174 2202 14 2 v 16 w(Resource)p 1358 2202
V 17 w(discover)g Fr(if)g(a)f(user)g(needs)i(to)75 2259 y(get)f(more)g
(detailed)h(information)g(ab)q(out)f(a)g(resource.)-32 46 y
Fg(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 Fr(18)928 b Fl(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fi(MPI)p 160 45 14 2 v 16 w(RESOURCE)p
406 45 V 18 w(PROCESSES\(resource,)i(n,)e(a)o(rra)o(y)p 1022
45 V 15 w(of)p 1074 45 V 16 w(p)o(ro)q(cesses\))117 122 y Fe(IN)155
b Fi(resource)432 b Fe(an)14 b Fd(MPI)p 1040 122 13 2 v 14
w(Resource)117 197 y Fe(OUT)108 b Fi(n)564 b Fe(n)o(um)o(b)q(er)13
b(of)h(pro)q(cesses)i(running)e(on)f(resource)117 273 y(OUT)108
b Fi(a)o(rra)o(y)p 416 273 14 2 v 15 w(of)p 468 273 V 16 w(p)o(ro)q(cesses)
251 b Fe(arra)o(y)14 b(of)f Fd(MPI)p 1138 273 13 2 v 14 w(Pro)q(cess)p
Fe(es)75 397 y Fr(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 Fb(n)g Fr(=)g(0)g(if)h(none)f(\(resource)g(is)h
(then)75 453 y(free)c(for)g(a)g(new)g(task\))166 593 y Ff(Discussion:)30
b Fe(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(?)75
883 y Fi(MPI)p 160 883 14 2 v 16 w(RESOURCE)p 406 883 V 18
w(FREE\(resources\))117 960 y Fe(IN)155 b Fi(resources)415
b Fe(resource)16 b(to)e(b)q(e)g(returned)i(to)e(resource)i(manager)75
1084 y Fr(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
1141 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
1197 y(b)q(e)f(o)o(wned)f(b)o(y)g(the)g(caller.)166 1336 y
Ff(Discussion:)50 b Fe(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
1393 y(information)11 b(ab)q(out)j(a)f(resource)j(in)e(a)f(single)h(call?)75
1619 y Fo(1.5)59 b(Pro)r(cess)19 b(Manager)h(Interface)75 1720
y Fr(Once)g(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
1777 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
1833 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.)166 1966 y Ff(Discussion:)45
b Fe(W)m(e)16 b(need)h(to)g(mak)o(e)e(a)h(decision)h(ab)q(out)f(ho)o(w)g(pro)
q(cesses)k(will)15 b(b)q(e)i(iden)o(ti\014ed)f(in)h(MPI-2.)75
2015 y(The)e(t)o(w)o(o)f(prop)q(osals)h(on)f(the)h(table)g(are)g(to)f(use)i
(only)d(the)j(\(comm,rank\))11 b(metho)q(d)j(that)h(is)f(used)i(in)e(MPI-1,)g
(or)75 2065 y(augmen)o(t)e(this)h(metho)q(d)g(b)o(y)g(in)o(tro)q(ducing)g(an)
g Fd(MPI)p 887 2065 13 2 v 14 w(Pro)q(cess)g Fe(Ob)r(ject.)20
b(One)14 b(problem)e(with)g(the)i(former)f(is)g(there)75 2115
y(is)h(no)f(comm)o(unicator)e(when)k(non-MPI)f(pro)q(cesses)i(are)f(started,)
f(so)g(ho)o(w)g(are)g(they)g(iden)o(ti\014ed?)166 2165 y(Historical)k
(reference:)31 b(PVM)19 b(had)g(to)g(mak)o(e)e(this)i(same)f(decision)h(5)g
(y)o(ears)h(ago.)32 b(PVM-2)19 b(used)h(only)75 2215 y(\(group,rank\))14
b(ids.)k(PVM-3)c(in)o(tro)q(duced)g(a)g(task)g(id)g(as)g(the)g(lo)o(w)o(est)g
(lev)o(el)g(id)f(with)h(\(group,rank\))f(as)h(the)h(id)e(for)75
2264 y(tasks)h(that)g(w)o(an)o(ted)g(it.)166 2321 y(A)o(t)j(the)g(last)f
(meeting,)g(man)o(y)e(w)o(ere)k(in)e(fa)o(v)o(or)f(of)h(just)h
(\(comm,rank\),)d(but)j(there)h(w)o(ere)f(a)f(few)h(who)f(felt)75
2377 y(strongly)d(ab)q(out)g(pro)q(cess)h(ob)r(jects.)19 b(The)14
b(presen)o(t)g(section)g(includes)f(the)h Fd(MPI)p 1326 2377
V 14 w(Pro)q(cess)g Fe(Ob)r(ject)g(material.)i(-A)o(G)1967
46 y Fg(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 Fl(1.5.)34 b(PR)o(OCESS)16 b(MANA)o(GER)f(INTERF)-5
b(A)o(CE)894 b Fr(19)75 45 y Fk(1.5.1)49 b(The)16 b(MPI)p 409
45 15 2 v 18 w(Pro)q(cess)g(Object)75 214 y Ff(Discussion:)38
b Fe(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
270 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 326 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 383 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 439 y Fd(MPI)p
152 439 13 2 v 14 w(Group)c Fe(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 496 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 Fd(MPI)p 1720 496 V 14 w(Pro)q(cess)p Fe(.)166
691 y Fr(An)25 b Fi(MPI)p 335 691 14 2 v 15 w(Pro)q(cess)h
Fr(represen)o(ts)e(a)g(pro)q(cess)h({)f(a)g(program)f(executing)j(on)e(a)g
(pro)q(cessor.)48 b(An)75 748 y Fi(MPI)p 160 748 V 16 w(Pro)q(cess)15
b Fr(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
804 y(and)h(don't)f(share)h(data)f(unless)i(they)f(tak)o(e)f(explicit)j
(action)f(to)e(do)h(so)f(\(outside)h(of)g(MPI\).)f(A)h(pro)q(cess)75
861 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 Fi(MPI)p 1491 861 V 16
w(INIT)p Fr(.)166 993 y Ff(Discussion:)44 b Fe(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 1043 y(that)d(an)g
Fd(MPI)p 300 1043 13 2 v 14 w(Pro)q(cess)g Fe(ma)o(y)e(not)i(b)q(e)g(an)g
(MPI)g(Pro)q(cess.)166 1100 y(I)g(w)o(ould)f(prefer)i(that)f(MPI-2)f(not)h
(sa)o(y)g(that)g(an)g Fd(MPI)p 1025 1100 V 14 w(Pro)q(cess)g
Fe(cannot)g(b)q(e)h(a)e(thread.)19 b(-A)o(G)166 1239 y Fr(Y)l(ou)c(can't)g
(comm)o(unicate)g(directly)i(with)e(an)g Fi(MPI)p 1066 1239
14 2 v 16 w(Pro)q(cess)h Fr(\(that)e(requires)i(a)f(comm)o(unicator\),)75
1295 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 1352 y(comm)o(unicator,)h(then)h(the)g Fi(MPI)p
656 1352 V 15 w(Pro)q(cess)h Fr(ob)s(ject)e(represen)o(ting)h(it)g(can)f(b)q
(e)i(retriev)o(ed)f(from)e(its)i(rank)75 1408 y(in)f(that)e(comm)o(unicator)h
(\(See)g Fi(MPI)p 706 1408 V 16 w(COMM)p 864 1408 V 16 w(PROCESS)i
Fr(b)q(elo)o(w\).)j(MPI)15 b(pro)o(vides)g(no)g(guaran)o(tees)f(on)75
1465 y(the)f(order)f(of)g(op)q(erations)h(b)q(et)o(w)o(een)g(messages)f(and)h
(signals.)20 b(If)13 b(a)f(meassage)g(and)h(a)f(signal)i(are)e(sen)o(t)h(to)
75 1521 y(a)g(pro)q(cess,)g(the)g(signal)g(ma)o(y)f(arriv)o(e)h(or)f(b)q(e)i
(pro)q(cessed)f(b)q(efore)g(the)g(message,)g(dep)q(ending)i(on)e(hardw)o(are)
75 1577 y(and)i(MPI)h(implemen)o(tation)g(details.)166 1717
y Ff(Discussion:)34 b Fe(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
1773 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 1829 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 2034 y Fk(1.5.2)49
b(Sta)o(rting)16 b(Pro)q(cesses)75 2120 y Fr(Starting)h(a)h(pro)q(cess)g
(using)g(MPI)g(requires)g(t)o(w)o(o)e(steps.)27 b(First,)18
b(one)g(or)f(more)g Fi(Pro)q(cess)p 1617 2120 V 17 w(init)i
Fr(calls)f(are)75 2176 y(made.)i(Eac)o(h)15 b(of)g(these)g(calls)h(sp)q
(eci\014es)i(an)d(executable)h(and)g(a)e(single)j(resource)e(ob)s(ject.)20
b(and)15 b(returns)75 2233 y(a)i(group)g(handle.)28 b(MPI-1)17
b(group)g(functions)h(can)g(b)q(e)g(used)g(to)e(join)i(groups)f(together.)26
b(The)17 b(second)75 2289 y(step)c(actually)h(starts)e(the)h(pro)q(cesses)g
(sp)q(eci\014ed)i(b)o(y)e(a)g(group)g(handle)h(and)f(places)h(them)f(all)h
(in)g(a)f(single)75 2346 y(MPI)p 167 2346 V 16 w(COMM)p 335
2346 V 16 w(W)o(ORLD.)166 2402 y(The)d(t)o(w)o(o)f(step)h(pro)q(cess)h(not)e
(only)i(allo)o(ws)f(for)g(all)h(the)f(c)o(hildren)i(to)e(ha)o(v)o(e)g(the)g
(same)g(MPI)p 1669 2402 V 16 w(COMM)p 1837 2402 V 16 w(W)o(ORLD,)75
2458 y(but)17 b(it)g(also)g(giv)o(es)g(the)h(user)f(the)g(\015exibilit)o(y)i
(needed)g(to)d(run)h(applications)i(across)d(a)h(net)o(w)o(ork.)24
b(The)75 2515 y(simple)14 b(example)g(is)f(w)o(ere)f(executables)i(m)o(ust)e
(b)q(e)h(matc)o(hed)g(with)g(particular)g(w)o(orkstations)e(\(resource)75
2571 y(ob)s(jects\),)i(but)g(the)h(user)g(also)g(w)o(an)o(ts)e(all)j(the)f
(pro)q(cesses)g(on)f(all)i(the)f(w)o(orkstations)e(w)o(orking)h(together.)166
2628 y(There)18 b(are)f(t)o(w)o(o)f(options)h(at)g(the)g(second)h(step.)26
b(If)18 b(the)g(paren)o(t)f(pro)q(cess)g(is)h(starting)f(MPI)g(pro-)75
2684 y(cesses)j(that)g(will)i(comm)o(unicate)e(bac)o(k)g(with)g(the)g(paren)o
(t)g(pro)q(cess)g(at)g(some)g(p)q(oin)o(t)g(in)h(the)f(future,)-32
46 y Fg(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 Fr(20)928 b Fl(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fr(then)k(the)g(application)i(should)f(call)g
Fi(Sta)o(rt)p 835 45 14 2 v 17 w(A)o(ttach)p Fr(.)32 b(This)20
b(function)g(blo)q(c)o(ks)g(un)o(til)g(the)f(c)o(hildren)i(es-)75
102 y(tablish)16 b(an)e(in)o(ter-comm)o(unicator)h(with)g(the)g(paren)o(t)g
(group.)k(The)c(syc)o(hronization)h(o)q(ccurs)f(when)g(the)75
158 y(c)o(hildren)i(call)f Fi(MPI)p 416 158 V 16 w(INIT)p Fr(.)d(When)j(MPI)p
769 158 V 16 w(INIT)f(is)h(called,)g(the)f(v)m(arables)g(MPI)p
1428 158 V 17 w(COMM)p 1597 158 V 16 w(W)o(ORLD)g(and)75 214
y(MPI)p 167 214 V 16 w(COMM)p 335 214 V 16 w(P)l(ARENT)h(\(in)o(ter-comm)o
(unicator\))f(are)f(set)h(in)h(the)g(c)o(hildren.)166 271 y(The)g(adv)m(an)o
(tage)f(of)g(using)h(MPI)p 738 271 V 17 w(INIT)g(in)g(this)g(w)o(a)o(y)f(is)h
(that)f(MPI-1)g(programs)g(can)g(b)q(e)i(started)75 327 y(with)f(the)f(new)g
(MPI-2)g(functions)h(without)f(mo)q(di\014cation)i(to)d(these)i(programs.)166
384 y(The)h(other)g(option)h(in)g(the)g(second)f(step)h(is)g(to)e(call)j
Fi(Sta)o(rt)p 1197 384 V 16 w(Abandon)p Fr(.)29 b(This)17 b(function)i(do)q
(es)e(not)75 440 y(w)o(ait)f(for)f(the)i(c)o(hildren)h(and)e(is)h(exp)q
(ected)g(to)f(b)q(e)g(used)h(when)g(the)f(c)o(hildren)i(are)e(non-MPI)h(pro)q
(cesses)75 497 y(or)i(when)h(the)g(c)o(hildren)h(only)f(comm)o(unicate)g
(among)f(themselv)o(es)h(and)g(not)f(bac)o(k)g(to)g(the)h(paren)o(ts.)75
553 y(In)d(the)g(latter)f(case,)g(the)g(MPI)p 619 553 V 17
w(COMM)p 788 553 V 16 w(P)l(ARENT)h(in)o(tercomm)o(unicator)f(is)h(not)f
(de\014ned)i(on)e(return)75 610 y(from)e(MPI)p 274 610 V 17
w(INIT.)75 761 y Fi(MPI)p 160 761 V 16 w(PROCESS)p 373 761
V 18 w(INIT\(executable,)h(a)o(rguments,)g(n,)g(resource,)g(inherit)p
1300 761 V 18 w(resource,)g(group\))117 838 y Fe(IN)155 b Fi(executable)391
b Fe(executable)15 b(\014le)f(con)o(taining)f(program)f(to)i(b)q(e)g(run)117
913 y(IN)155 b Fi(a)o(rguments)391 b Fe(argumen)o(ts)13 b(for)h(the)g
(program)117 988 y(IN)155 b Fi(n)564 b Fe(n)o(um)o(b)q(er)13
b(of)h(pro)q(cesses)i(to)e(start)117 1063 y(IN)155 b Fi(resource)432
b Fd(MPI)p 982 1063 13 2 v 15 w(Resource)15 b Fe(to)f(run)g(pro)q(cesses)i
(on)117 1138 y(IN)155 b Fi(inherit)p 441 1138 14 2 v 18 w(resource)294
b Fd(MPI)p 982 1138 13 2 v 15 w(Resource)15 b Fe(whic)o(h)f(c)o(hildren)g
(inherit)117 1213 y(OUT)108 b Fi(group)479 b Fe(iden)o(ti\014es)15
b(the)f(group)g(of)f(pro)q(cesses)75 1432 y Fi(MPI)p 160 1432
14 2 v 16 w(PROCESS)p 373 1432 V 18 w(ST)l(ART)p 533 1432 V
17 w(A)l(TT)l(A)o(CH\(mycomm,)g(group,)h(new)o(comm\))117 1510
y Fe(IN)155 b Fi(mycomm)412 b Fe(comm)o(unicator)11 b(of)j(paren)o(ts)g
(group)117 1585 y(IN)155 b Fi(group)479 b Fe(group)14 b(returned)i(b)o(y)d
(Pro)q(cess)p 1385 1585 13 2 v 17 w(Init)117 1660 y(OUT)108
b Fi(new)o(comm)397 b Fe(in)o(ter-comm)o(unicator)11 b(b)q(et)o(w)o(een)16
b(paren)o(t)e(and)g(c)o(hild)f(groups)75 1879 y Fi(MPI)p 160
1879 14 2 v 16 w(PROCESS)p 373 1879 V 18 w(ST)l(ART)p 533 1879
V 17 w(ABANDON\(group\))117 1956 y Fe(IN)155 b Fi(group)479
b Fe(group)14 b(returned)i(b)o(y)d(Pro)q(cess)p 1385 1956 13
2 v 17 w(Init)1967 46 y Fg(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 Fl(1.5.)34 b(PR)o(OCESS)16 b(MANA)o(GER)f(INTERF)-5
b(A)o(CE)894 b Fr(21)75 45 y Fk(1.5.3)49 b(Pro)q(cess)15 b(Utilities)75
225 y Fi(MPI)p 160 225 14 2 v 16 w(PROCESS)p 373 225 V 18 w
(RUNNING\(resource,)h(np)o(ro)q(cs\))117 303 y Fe(IN)155 b
Fi(resource)432 b Fe(an)14 b Fd(MPI)p 1040 303 13 2 v 14 w(Resource)h
Fe(ob)r(ject)117 375 y(OUT)108 b Fi(np)o(ro)q(cs)465 b Fe(n)o(um)o(b)q(er)13
b(of)h(pro)q(cesses)i(curren)o(tly)f(running)75 594 y Fi(MPI)p
160 594 14 2 v 16 w(RESOURCE)p 406 594 V 18 w(PROCESSES\(resource,)i(n,)e(a)o
(rra)o(y)p 1022 594 V 15 w(of)p 1074 594 V 16 w(p)o(ro)q(cesses\))117
671 y Fe(IN)155 b Fi(resource)432 b Fe(an)14 b Fd(MPI)p 1040
671 13 2 v 14 w(Resource)117 744 y Fe(OUT)108 b Fi(n)564 b
Fe(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)i(running)e(on)f(resource)117
817 y(OUT)108 b Fi(a)o(rra)o(y)p 416 817 14 2 v 15 w(of)p 468
817 V 16 w(p)o(ro)q(cesses)251 b Fe(arra)o(y)14 b(of)f Fd(MPI)p
1138 817 13 2 v 14 w(Pro)q(cess)p Fe(es)75 941 y Fr(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 Fb(n)g Fr(=)g(0)g(if)h(none)f(\(resource)g(is)h(then)75
998 y(free)c(for)g(a)g(new)g(task\))166 1137 y Ff(Discussion:)30
b Fe(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(?)75
1427 y Fi(MPI)p 160 1427 14 2 v 16 w(PROCESS)p 373 1427 V 18
w(RESOURCE\(p)o(ro)q(cess,)17 b(resource\))117 1504 y Fe(IN)155
b Fi(p)o(ro)q(cess)451 b Fe(an)14 b Fd(MPI)p 1040 1504 13 2
v 14 w(Pro)q(cess)117 1577 y Fe(OUT)108 b Fi(resource)432 b
Fe(the)15 b Fd(MPI)p 1054 1577 V 14 w(Resource)g Fe(on)f(whic)o(h)g(the)g
(pro)q(cess)i(is)e(run)g(ning)75 1701 y Fr(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 1758 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
Fi(MPI)p 1453 1758 14 2 v 16 w(RESOURCE)p 1699 1758 V 18 w(NULL)p
Fr(.)166 1897 y Ff(Discussion:)36 b Fe(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 1953 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 2010 y(whic)o(h)f(case)h(w)o(e)f(ha)o(v)o(e)f(another)i
(problem.)75 2244 y Fi(MPI)p 160 2244 V 16 w(PROCESS)p 373
2244 V 18 w(IN)p 436 2244 V 16 w(GROUP\(group,)h(rank,)f(p)o(ro)q(cess\))117
2321 y Fe(IN)155 b Fi(comm)470 b Fe(group)117 2393 y(IN)155
b Fi(rank)504 b Fe(rank)14 b(in)f(group)117 2466 y(OUT)108
b Fi(p)o(ro)q(cess)451 b Fd(MPI)p 982 2466 13 2 v 15 w(Pro)q(cess)14
b Fe(corresp)q(onding)h(to)e(rank)h(in)g(group)75 2591 y Fr(gets)h(the)g
Fi(MPI)p 332 2591 14 2 v 16 w(Pro)q(cess)h Fr(corresp)q(onding)g(to)e(a)h
(giv)o(en)h(group)f(and)g(rank.)166 2647 y(A)g(pro)q(cess)f(represen)o(ted)i
(b)o(y)e(an)h Fi(MPI)p 824 2647 V 16 w(Pro)q(cess)g Fr(cannot)f(b)q(e)i(comm)
o(unicated)f(with)g(directly)l(,)h(un)o(til)75 2704 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)-32 46 y Fg(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 Fr(22)928 b Fl(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fr(pro)q(cess")k(in)g(the)g(sense)g(that)f(it)i(migh)o
(t)e(not)h(call)g Fi(MPI)p 1059 45 14 2 v 16 w(INIT)p Fr(.)f(On)h(the)g
(other)g(hand,)g(it)g(allo)o(ws)g(out-)75 102 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 158 y(failures.)166 214 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)75 365 y Fi(MPI)p 160 365 V 16 w(PROCESS)p
373 365 V 18 w(SIGNAL\(signal,)g(num)p 782 365 V 16 w(p)o(ro)q(cesses,)i(a)o
(rra)o(y)p 1096 365 V 14 w(of)p 1147 365 V 16 w(p)o(ro)q(cesses\))117
443 y Fe(IN)155 b Fi(signal)480 b Fe(signal)13 b(t)o(yp)q(e)h(\(in)o(t\))117
518 y(IN)155 b Fi(num)p 404 518 V 17 w(p)o(ro)q(cesses)314
b Fe(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)i(in)e(arra)o(y)117
593 y(IN)155 b Fi(a)o(rra)o(y)p 416 593 V 15 w(of)p 468 593
V 16 w(p)o(ro)q(cesses)251 b Fd(MPI)p 982 593 13 2 v 15 w(Pro)q(cess)p
Fe(es)15 b(to)e(b)q(e)i(signalled)166 717 y Fr(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 774 y(w)o(ords,)17 b(a)h Fh(SIGINT)f
Fr(that)g(has)g(v)m(alue)i Fh(3)f Fr(on)g(system)f(A)h(m)o(ust)f(b)q(e)h
(deliv)o(ered)i(as)d(a)h Fh(SIGINT)f Fr(on)g(system)75 830
y(B,)e(ev)o(en)h(if)f(system)g(B)h(uses)f(the)g(v)m(alue)i
Fh(5)e Fr(for)g Fh(SIGINT)p Fr(.)f(If)h(the)h(signal)g(can)f(not)g(b)q(e)h
(deliv)o(ered)h(b)q(ecause)75 887 y(there)e(is)h(no)f(corresp)q(onding)h
(signal,)g(the)f(error)g(co)q(de)h(is)f Fi(MPI)p 1159 887 14
2 v 16 w(ERR)p 1260 887 V 17 w(INV)l(ALID)p 1449 887 V 16 w(SIGNAL)p
Fr(.)75 1008 y Fk(1.5.4)49 b(Noti\014cation)75 1094 y Fr(There)19
b(needs)g(to)f(b)q(e)h(some)g(w)o(a)o(y)e(of)h(\014nding)i(out)e(when)h(a)g
(pro)q(cess)f(\014nishes.)32 b(In)19 b(MPI)g(w)o(e)f(ha)o(v)o(e)g(no)75
1151 y(mec)o(hanism)g(for)g(async)o(hronous)f(noti\014cation.)29
b(Therefore)17 b(the)h(b)q(est)g(w)o(e)g(can)g(do)f(is)i(to)e(construct)g(a)
75 1207 y(request)f(that)g(can)h(b)q(e)g(tested)f(and)h(w)o(aited)f(on.)24
b(If)17 b(pro)q(cesses)g(w)o(ere)f(represen)o(ted)h(b)o(y)f(requests,)h(then)
75 1264 y(w)o(e)h(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
Fi(MPI)p 1636 1264 V 15 w(Pro)q(cess)p Fr(,)h(w)o(e)75 1320
y(can)c(explicitly)j(attac)o(h)c(a)h(request)h(to)e(it)i(in)g(order)f(to)f(w)
o(ait)h(on)g(it.)166 1377 y(PVM)i(users)h(ha)o(v)o(e)f(found)g(that)g(a)g
(\015exible)j(`notify')d(function)h(is)g(imp)q(ortan)o(t)f(to)g(building)j
(fault)75 1433 y(toleran)o(t)15 b(applications.)21 b(W)l(e)15
b(prop)q(ose)h(to)e(supply)j(similar)f(functionalit)o(y)g(in)g(MPI.)75
1584 y Fi(MPI)p 160 1584 V 16 w(NOTIFY\(what,)f(n,)h(a)o(rra)o(y)l(,)d
(request\))117 1661 y Fe(IN)155 b Fi(what)495 b Fe(a)12 b(\015ag)f(sp)q
(ecifying)h(what)f(to)h(b)q(e)g(noti\014ed)g(ab)q(out)g(\(see)h(b)q(elo)o
(w\))117 1736 y(IN)155 b Fi(n)564 b Fe(n)o(um)o(b)q(er)13 b(of)h(ob)r(jects)h
(in)e(follo)o(wing)e(arra)o(y)117 1811 y(IN)155 b Fi(a)o(rra)o(y)492
b Fe(arra)o(y)14 b(of)f(MPI)h(ob)r(jects)h(\(dep)q(ends)h(on)e(v)n(alue)f(of)
g(`what'\))117 1887 y(OUT)108 b Fi(request)452 b Fe(mpifuncMPI)p
1136 1887 13 2 v 14 w(Request)15 b(to)e(b)q(e)i(tested)g(and/or)f(w)o(aited)f
(on)166 2011 y Fr(Initially)l(,)25 b(w)o(e)c(prop)q(ose)g(that)g(the)g
Fi(what)h Fr(can)g(tak)o(e)e(on)h(t)o(w)o(o)f(v)m(alues:)34
b(MPI)p 1517 2011 14 2 v 16 w(Pro)q(cess)p 1682 2011 V 16 w(Exit)22
b(and)75 2067 y(MPI)p 167 2067 V 16 w(Resource)p 360 2067 V
18 w(F)l(ailure.)e(In)13 b(these)h(cases)f Fi(a)o(rra)o(y)e
Fr(con)o(tains)i(MPI)g(Pro)q(cess)g(ob)s(jects)g(and)g(MPI)g(resource)75
2124 y(ob)s(jects)i(resp)q(ectiv)o(ely)l(.)166 2263 y Ff(Discussion:)45
b Fe(These)18 b(are)g(the)f(t)o(w)o(o)f(most)g(ob)o(vious)g(v)n(alues)g(for)h
(`what'.)25 b(Are)18 b(there)g(other)f(v)n(alues)g(w)o(e)75
2319 y(w)o(an)o(t)d(to)g(consider?)19 b(PVM)c(con)o(tains)f(the)h(equiv)n
(alen)o(t)e(of)h(MPI)p 1089 2319 13 2 v 15 w(Resource)p 1265
2319 V 16 w(Add)h(case,)f(but)h(w)o(e)f(ha)o(v)o(e)g(restricted)75
2376 y(MPI)g(resource)i(o)o(wnership)e(suc)o(h)h(that)f(the)g(MPI)p
865 2376 V 16 w(Resource)p 1042 2376 V 16 w(Add)g(case)h(is)f(not)f(imp)q
(ortan)o(t)f(in)i(MPI.)g(-A)o(G)166 2515 y Fr(W)l(e)h(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 2572 y Fh(SIGCHILD)p Fr(.)e(The)i(exit)g(co)
q(de)g(from)f(the)g(pro)q(cess)h(\(from)f(a)g Fh(return)23
b(n)14 b Fr(or)g Fh(exit\(n\))g Fr(in)h(C)f(or)g Fh(STOP)24
b(n)14 b Fr(in)75 2628 y(F)l(ortran\))g(can)h(b)q(e)h(retriev)o(ed)g(from)e
(the)h Fi(MPI)p 863 2628 14 2 v 16 w(status)i Fr(\014lled)g(in)f(the)g
Fi(MPI)p 1332 2628 V 15 w(W)l(AIT)p Fr(.)1967 46 y Fg(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 Fl(1.6.)34 b(A)l(TT)l(A)o(CHING)15 b(INDEPENDENT)g(PR)o
(OCESSES)728 b Fr(23)166 45 y(Note)17 b(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 102 y(since)e(comm)o(unicators)f(are)g(not)g(in)o(v)o(olv)o(ed.)
75 245 y Fo(1.6)59 b(A)n(ttaching)19 b(Indep)r(endent)d(Pro)r(cesses)75
346 y Fr(So)i(far)f(w)o(e)g(ha)o(v)o(e)h(co)o(v)o(ered)f(the)h(case)g(of)f
(creating)h(new)g(pro)q(cesses.)28 b(F)l(or)17 b(clien)o(t-serv)o(er)i
(applications,)75 403 y(the)14 b(situation)g(is)g(di\013eren)o(t,)f(b)q
(ecause)i(the)e(pro)q(cesses)h(in)h(question)f(already)f(exist,)h(and)g(what)
f(w)o(e)g(need)75 459 y(is)g(a)g(comm)o(unicator)f(to)g(b)q(e)h(used)h(b)o(y)
e(them)h(to)f(comm)o(unicate)h(with)g(one)g(another.)18 b(Similar)d
(situations)75 516 y(arise)20 b(in)h(other)f(applications)h(as)f(w)o(ell.)35
b(F)l(or)19 b(example,)j(a)e(visualization)i(to)q(ol)e(ma)o(y)f(w)o(an)o(t)g
(to)g(start)75 572 y(up)e(and)f(attac)o(h)f(to)h(a)f(running)j(sim)o
(ulation,)f(or)e(t)o(w)o(o)g(parts)h(of)g(a)f(large)i(application)g(ma)o(y)f
(b)q(e)h(started)75 629 y(separatly)e(at)g(t)o(w)o(o)f(di\013eren)o(t)h
(sites)g(and)h(then)f(w)o(an)o(t)f(to)h(comm)o(unicate)h(with)f(eac)o(h)g
(other.)166 685 y(This)22 b(section)g(attempts)f(to)g(pro)o(vide)h(the)g
(functions)g(needed)h(to)e(solv)o(e)h(the)g(general)g(case)f(of)75
741 y(creating)12 b(an)f(in)o(tercomm)o(unicator)g(b)q(et)o(w)o(een)h(t)o(w)o
(o)e(MPI)h(pro)q(cesses)h(with)g(no)f(kno)o(wledge)h(of)f(eac)o(h)h(other.)75
863 y Fk(1.6.1)49 b(Registration)17 b(and)g(Connection)75 949
y Fr(The)e(follo)o(wing)h(four)f(functions)h(de\014ne)g(the)g(in)o(terface.)
75 1100 y Fi(MPI)p 160 1100 14 2 v 16 w(PROCESS)p 373 1100
V 18 w(REGISTER\()g(name,)e(handle\))117 1177 y Fe(IN)155 b
Fi(name)485 b Fe(string)14 b(used)h(for)e(con)o(tacting)117
1252 y(OUT)108 b Fi(handle)465 b Fe(asso)q(ciated)15 b(with)e(the)i(name)166
1377 y Fr(The)i(form)g(of)f(the)i Fi(name)f Fr(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 1433 y(the)c Fh(net-address:port-number)d Fr(format)h(that)h(curren)o(t)h
(systems)f(will)j(\014nd)e(most)f(straigh)o(tforw)o(ard.)75
1490 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(.)-32
46 y Fg(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 Fr(24)928 b Fl(CHAPTER)16 b(1.)34 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fi(MPI)p 160 45 14 2 v 16 w(PROCESS)p
373 45 V 18 w(A)o(CCEPT\(mycomm,)d(handle,)k(ro)q(ot,)e(new)o(comm\))117
122 y Fe(IN)155 b Fi(mycomm)412 b Fe(comm)o(unicator)11 b(o)o(v)o(er)j(whic)o
(h)g(this)g(call)f(is)h(collectiv)o(e)117 197 y(IN)155 b Fi(handle)465
b Fe(asso)q(ciated)15 b(with)e(registered)j(name)117 273 y(IN)155
b Fi(ro)q(ot)508 b Fe(the)15 b(pro)q(cess)g(that)f(registered)i(the)e(name)
117 348 y(OUT)108 b Fi(new)o(comm)397 b Fe(new)12 b(in)o(ter-comm)o
(unicator,)d(whic)o(h)i(includes)h(the)g(pro)q(cesses)905 404
y(of)h(the)i(remote)e(group)75 623 y Fi(MPI)p 160 623 V 16
w(PROCESS)p 373 623 V 18 w(CONT)l(A)o(CT\(mycomm,)f(name,)j(new)o(comm\))117
700 y Fe(IN)155 b Fi(mycomm)412 b Fe(comm)o(unicator)11 b(o)o(v)o(er)j(whic)o
(h)g(this)g(call)f(is)h(collectiv)o(e)117 775 y(IN)155 b Fi(name)485
b Fe(name)8 b(b)o(y)h(whic)o(h)h(remote)e(pro)q(cess)j(can)f(b)q(e)g(con)o
(tacted)g(\(string\))117 851 y(OUT)108 b Fi(new)o(comm)397
b Fe(new)12 b(in)o(ter-comm)o(unicator,)d(whic)o(h)i(includes)h(the)g(pro)q
(cesses)905 907 y(of)h(the)i(remote)e(group)75 1126 y Fi(MPI)p
160 1126 V 16 w(FREE)p 285 1126 V 17 w(NAME\()i(handle\))117
1203 y Fe(IN)155 b Fi(handle)465 b Fe(asso)q(ciated)15 b(with)e(registered)j
(name)166 1328 y Fr(W)l(e)h(will)h(illustrate)g(the)f(use)g(of)f(these)h
(functions)g(with)g(a)g(clien)o(t/serv)o(er)g(example.)25 b(The)17
b(serv)o(er)75 1384 y(w)o(ould)12 b(register)f(a)h(\\name")f(b)o(y)g(whic)o
(h)i(it)f(w)o(an)o(ts)e(to)h(b)q(e)h(kno)o(wn.)19 b(The)11
b(Register)i(function)f(w)o(ould)g(return)75 1441 y(an)k(error)g(if)g(there)g
(is)h(a)f(name)g(con\015ict.)24 b(The)16 b(serv)o(er)g(group)g(calls)h(MPI)p
1350 1441 V 16 w(PR)o(OCESS)p 1578 1441 V 17 w(A)o(CCEPT)f(and)75
1497 y(the)f(clien)o(t)h(group)f(calls)h(MPI)p 597 1497 V 16
w(PR)o(OCESS)p 825 1497 V 18 w(CONT)l(A)o(CT.)e(The)h(output)g(of)f(these)i
(t)o(w)o(o)d(collectiv)o(e)k(calls)75 1553 y(is)j(an)g(in)o(ter-comm)o
(unicator)g(b)q(et)o(w)o(een)g(the)f(t)o(w)o(o)g(groups.)33
b(No)o(w)19 b(an)o(y)g(pro)q(cess)h(in)h(the)e(clien)o(t)i(group)75
1610 y(can)g(comm)o(unicate)h(with)f(an)o(y)g(pro)q(cess)h(in)g(the)f(serv)o
(er)g(group)g(and)g(vice)i(v)o(ersa,)e(using)h(the)g(in)o(ter-)75
1666 y(comm)o(unicator.)166 1723 y(Disconnection)11 b(o)q(ccurs)g(when)g(pro)
q(cesses)f(call)h Fi(MPI)p 1057 1723 V 16 w(COMM)p 1215 1723
V 17 w(FREE)f Fr(on)g(the)h(in)o(ter-comm)o(unicator.)166 1862
y Ff(Discussion:)30 b Fe(I'm)9 b(not)h(clear)h(ho)o(w)f(the)h(serv)o(er)h
(can)f(con)o(tin)o(ue)g(to)f(service)i(clien)o(ts)f(it)f(is)g(already)g
(connected)75 1918 y(to,)17 b(and)g(still)f(A)o(CCEPT)h(new)h(clien)o(ts.)27
b(Do)17 b(w)o(e)g(need)h(to)f(mak)o(e)e(A)o(ttac)o(h)i(and)g(Con)o(tact)g
(non-blo)q(c)o(king)f(calls?)75 1975 y(-A)o(G)166 2190 y Ff(Discussion:)48
b Fe(A)o(G-)17 b(This)h(is)f(an)g(old)g(discussion)h(but)g(it)f(w)o(as)g
(left)h(in)f(b)q(ecause)i(W)o(CS)e(mak)o(es)f(sev)o(eral)75
2240 y(imp)q(ortan)o(t)c(observ)n(ations)i(in)g(it.)166 2290
y(After)h(going)e(through)h(the)g(exercise)i(of)e(replacing)g(connections)h
(with)f(pro)q(cesses,)i(I)e(think)g(I)g(understand)75 2339
y(wh)o(y)j(connections)h(w)o(ere)f(prop)q(osed)h(in)f(the)g(\014rst)h(place.)
27 b(The)17 b(problem)f(is)h(that)f(y)o(ou)h(ma)o(y)e(w)o(an)o(t)h(to)h(prev)
o(en)o(t)75 2389 y(the)g(serv)o(er)h(from)d(blo)q(c)o(king)h(no)g(matter)g
(what)g(the)h(clien)o(t)g(do)q(es.)27 b(As)17 b(prop)q(osed)g(here,)h(the)f
(serv)o(er)h(will)d(blo)q(c)o(k)75 2439 y(while)i(A)m(TT)m(A)o(CHing)f(if)g
(the)i(clien)o(t)f(do)q(esn't)h(do)f(a)g(matc)o(hing)e(A)m(TT)m(A)o(CH.)h(A)h
(\\connection")h(w)o(as)f(more)f(than)75 2489 y(a)j(simple)e(pro)q(cess)k(in)
e(that)g(establishing)g(an)g(in)o(tercomm)o(unicator)e(from)g(an)i
Fd(MPI)p 1447 2489 13 2 v 14 w(Connection)h Fe(\(using)f(RE-)75
2539 y(MOTE)p 205 2539 V 16 w(A)m(TT)m(A)o(CH\))13 b(w)o(as)h(a)f
Fa(lo)n(c)n(al)g Fe(op)q(eration,)h(not)g(requiring)f(sync)o(hronization)h
(with)g(the)g(remote)g(pro)q(cesses.)166 2589 y(I)f(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 2638 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 2688 y(tion.)19
b(REMOTE)p 367 2688 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.)
1967 46 y Fg(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 Fl(1.7.)29 b(EXAMPLES)1398 b Fr(25)75 45 y Fe(A)18
b(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 Fd(MPI)p 1495 45 13 2 v 14 w(PROCESS)p
1692 45 V 14 w(A)m(TT)m(A)o(CH)p Fe(.)75 95 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 145 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 195 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 244 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 294 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 344 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 394 y(non-blo)q(c)o(king)e(v)o(ersion)h(of)f
Fd(MPI)p 586 394 V 14 w(PROCESS)p 783 394 V 13 w(IA)m(TT)m(A)o(CH)g
Fe(\(i.e,)g(without)g(the)i Fd(comm)d Fe(and)h Fd(ro)q(ot)h
Fe(argumen)o(ts.)j(\).)166 444 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 493 y(are)i(o)o(v)o(erlapp)q
(ed.)k(Is)d(this)f(p)q(ossible?)75 550 y(w)o(cs)75 776 y Fo(1.7)59
b(Examples)75 877 y Fi(Manager-w)o(o)o(rk)o(er)13 b(example.)75
971 y Fh(/*)24 b(manager)e(*/)75 1028 y(#include)h(<mpi.h>)75
1084 y(#define)g(MAXPROC)g(128)75 1140 y(main\(int,)g(argc,)g(char)g
(*arg[]\))75 1197 y({)147 1253 y(MPI_Resource)f(resource;)147
1310 y(MPI_Status)g(status;)147 1366 y(int)h(count,)g(world_size;)147
1423 y(MPI_Comm)f(everyone;)75 1479 y(#ifndef)h(SPAWNEM)147
1536 y(MPI_Process)f(processes[MAXPROC];)147 1592 y(MPI_Comm)g(my_children;)
75 1649 y(#endif)147 1818 y(MPI_Init\(&argc,)f(&argv\);)147
1874 y(MPI_Comm_size\(MPI_COMM_)o(WORLD,)f(&world_size\);)147
1931 y(if)j(\(world_size)g(!=)g(1\))h(error\("Top)e(heavy)h(with)h
(management"\);)147 1987 y(MPI_Resource_discover\(M)o(PI_RESO)o(URCE_TYP)o
(E_DEFAU)o(LT,)d(NULL,)i(&resource\);)147 2100 y(MPI_Resource_nslots\(res)o
(ource,)d(&count\);)147 2157 y(if)j(\(count)g(<)h(1\))g(error\("No)e
(resources"\);)147 2213 y(if)h(\(count)g(>)h(MAXPROC\))f({)g(warning\("Too)g
(many)g(resources"\);)f(count)h(=)h(MAXPROC)f(};)75 2326 y(#ifdef)g(SPAWNEM)
147 2382 y(MPI_Spawn\(MPI_COMM_SELF)o(,)e(0,)j(count,)f("worker",)f(NULL,)i
(resource,)e(&everyone\);)75 2439 y(#else)147 2495 y
(MPI_Process_create\("wor)o(ker",)f(NULL,)i(count,)g(resource,)f
(processes\);)147 2552 y(MPI_Process_attach\(MPI_)o(COMM_SE)o(LF,)f(0,)j
(count,)f(processes,)f(&my_children\);)147 2608 y(MPI_Intercomm_merge\(my_)o
(childre)o(n,)f(FALSE,)i(&everyone\);)75 2665 y(#endif)-32
46 y Fg(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 Fr(26)933 b Fl(CHAPTER)16 b(1.)29 b(D)o(YNAMIC)15
b(PR)o(OCESSES)147 102 y Fh(/*)170 158 y(*)24 b(Parallel)f(code)g(here.)g
(The)h(communicator)e("everyone")h(can)g(be)h(used)170 214
y(*)g(to)g(communicate)e(with)h(the)h(spawned)f(processes)170
271 y(*/)147 384 y(MPI_Finalize\(\);)75 440 y(})75 553 y(/*)h(worker)f(*/)75
666 y(#include)g(<mpi.h>)75 723 y(main\(int,)g(argc,)g(char)g(*argv[]\))75
779 y({)147 835 y(MPI_Comm)f(parent;)95 b(/*)23 b(intercommunicator)f(*/)147
892 y(MPI_Comm)g(everyone;)47 b(/*)23 b(intracommunicator)f(*/)147
948 y(MPI_Init\(&argc,)f(&argv\);)147 1005 y(MPI_Parent\(&parent\);)147
1061 y(MPI_Intercomm_merge\(par)o(ent,)g(TRUE,)i(&everyone\))147
1174 y(/*)170 1231 y(*)h(Parallel)f(code)g(here.)170 1287 y(*/)147
1344 y(MPI_Finalize\(\);)75 1400 y(})75 1633 y Fi(T)l(ask)12
b(fa)o(rm)e(example.)45 b Fr(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
1689 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
1746 y(to)f(comm)o(unicate.)75 1852 y Fh(#include)23 b(<mpi.h>)75
1909 y(#define)g(MAXPROC)g(100)75 1965 y(main\(int)g(argc,)g(char)g
(*argv[]\))75 2022 y({)147 2078 y(MPI_Resource)f(resource;)147
2134 y(MPI_Process)g(processes[MAXPROC];)147 2191 y(MPI_Request)g
(obituaries[MAXPROC];)147 2247 y(MPI_Status)g(statuses[MAXPROC];)45
b(/*)24 b(see)f(comment)g(below)g(*/)147 2304 y(int)g(nslots,)g(i,)h
(deadone;)147 2360 y(char)f(**args;)147 2473 y(ThingToDo)f(*thingstodo;)147
2530 y(int)h(nthingstodo,)f(nthingsdone;)147 2643 y(MPI_Init\(&argc,)f
(&argv\);)147 2699 y(MPI_Resource_discover\(M)o(PI_RESO)o(URCE_TYP)o(E_DEFAU)
o(LT,)g(NULL,)i(&resource\);)1967 46 y Fg(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 Fl(1.7.)29 b(EXAMPLES)1398 b Fr(27)147 45 y Fh
(MPI_Resource_nslots\(res)o(ource,)20 b(&nslots\);)147 158
y(GetThingsToDo\(&thingsto)o(do,)h(nthingstodo\);)147 271 y(/*)i(need)g(to)h
(initialize)f(these)g(for)g(Waitany/all\(\))f(below)h(to)h(work)f(*/)147
327 y(for)g(\(i)h(=)f(0;)h(i)g(<)f(MAXPROC;)g(i++\))g(obituaries[i])g(=)g
(MPI_REQUEST_NULL;)147 440 y(/*)g(start)g(up)h(tasks)f(on)h(initial)f
(resources)f(*/)147 497 y(for)h(\(nthingsdone)f(=)i(0;)g(nthingsdone)e(<)i
(nslots)f(&&)g(nthingsdone)g(<)g(nthingstodo;)g(nthingsdone++\))f({)194
553 y(SetArgs\(thingstodo[nthingsdo)o(ne],)f(&args\);)194 610
y(MPI_Process_create\("cow",)g(args,)i(1,)h(MPI_PROCESS_TYPE_NONMPI)o(,)648
666 y(resource,)e(&processes[nthingsdone]\);)194 723 y
(MPI_Process_notify_when_done)o(\(nthings)o(done,)648 779 y
(&processes[nthingsdone],)648 835 y(&obnthingsdonetuaries[nt)o(hingsdo)o
(ne]\);)147 892 y(})147 1005 y(/*)h(spawn)g(new)h(ones)f(as)h(old)f(ones)g
(finish)h(*/)147 1061 y(while\(nthingsdone)d(<)j(nthingstodo\))e({)194
1118 y(/*)i(perhaps)f(could)g(have)g(some)h(element)f(of)g(status)g(=)h
(return)218 1174 y(*)g(code)f(so)h(we)f(could)h(check)f(for)g(error)g(?)h(*/)
194 1231 y(MPI_Waitany\(nslots,)e(obituaries,)g(&deadone,)h(&status[0]\);)194
1287 y(SetArgs\(thingstodo[nthingsdo)o(ne],)e(&args\);)194
1344 y(/*)j(it)f(would)h(probably)e(be)i(more)f(efficient)g(to)h(use)218
1400 y(*)g(MPI_Process_icreate)d(here)i(*/)194 1456 y
(MPI_Process_create\("cow",)e(args,)i(1,)h(MPI_PROCESS_TYPE_NONMPI)o(,)648
1513 y(resource,)e(&processes[nthingsdone]\);)194 1569 y
(MPI_Process_notify_when_done)o(\(nthings)o(done,)886 1626
y(&processes[nthingsdone],)886 1682 y(&obituaries[nthingsdone]\);)147
1795 y(})147 1852 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 1908 y(*)h(statusptr)f(=)h(NULL)170
1965 y(*/)147 2021 y(MPI_Waitall\(nslots,)d(obituaries,)h(statuses\);)147
2134 y(MPI_Finalize\(\);)75 2190 y(})75 2423 y Fi(PVM-st)o(yle)16
b(SPMD)f(example)45 b Fr(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 2480 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 2536 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 2643 y Fh(#include)23 b(<mpi.h>)75 2699 y(#define)g(MAXPROC)g
(128)-32 46 y Fg(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 Fr(28)933 b Fl(CHAPTER)16 b(1.)29 b(D)o(YNAMIC)15
b(PR)o(OCESSES)75 45 y Fh(main\(int,)23 b(argc,)g(char)g(*argv[]\))75
102 y({)147 158 y(MPI_Resource)f(resource;)147 214 y(MPI_Status)g(status;)147
271 y(int)h(count,)g(world_size;)147 327 y(MPI_Comm)f(everyone;)147
384 y(MPI_Process)g(processes[MAXPROC];)147 440 y(MPI_Comm)g(my_children,)h
(my_parent;)147 610 y(MPI_Init\(&argc,)e(&argv\);)147 666 y
(MPI_Comm_parent\(&my_par)o(ent\);)147 723 y(if)i(\(my_parent)g(==)g
(MPI_COMM_NULL\))f({)i(/*)g(I'm)f(the)g(parent)g(*/)218 779
y(MPI_Resource_discover\(MPI_R)o(ESOURCE_)o(TYPE_DE)o(FAULT,)d(NULL,)k
(&resource\);)218 835 y(MPI_Resource_nslots\(resourc)o(e,)d(&count\);)218
892 y(if)j(\(count)f(<)h(1\))f(error\("No)g(resources"\);)218
948 y(if)h(\(count)f(>)h(MAXPROC\))e({)i(warning\("Too)e(many)i
(resources"\);)e(nprocs)h(=)h(MAXPROC)e(};)218 1005 y
(MPI_Process_create\(&argv[0])o(,)f(NULL,)i(count,)g(resource,)g
(processes\);)218 1061 y(MPI_Process_attach\(MPI_COMM)o(_SELF,)e(0,)i(count,)
g(processes,)g(&my_children\);)218 1118 y(MPI_Intercomm_merge\(my_chil)o
(dren,)e(FALSE,)i(&everyone\);)170 1174 y(})h(else)f({)218
1231 y(MPI_Intercomm_merge\(my_pare)o(nt,)e(TRUE,)i(&everyone\);)170
1287 y(})170 1400 y(/*)h(SPMD)f(parallel)g(code)g(here,)h(using)f(everyone)g
(instead)f(of)i(MPI_COMM_WORLD)e(*/)170 1513 y(MPI_Finalize\(\);)75
1569 y(})75 1746 y Fi(Client-server)14 b(example.)44 b Fr(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 1802 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
1859 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
1915 y(receiv)o(es)16 b(a)f(message)g(with)g(tag)f Fh(1)p Fr(.)20
b(A)15 b(message)g(with)h(tag)e Fh(0)h Fr(tells)h(the)g(serv)o(er)e(to)h
(exit.)75 2009 y Fh(#include)23 b("mpi.h")75 2066 y(main\()g(int)h(argc,)f
(char)g(**argv)g(\))75 2122 y({)75 2178 y(MPI_Comm)g(client;)75
2235 y(MPI_Status)f(status;)75 2291 y(double)h(buf[MAX_DATA];)75
2348 y(int)95 b(again;)75 2461 y(MPI_Init\()23 b(&argc,)g(&argv)g(\);)75
2517 y(while)g(\(1\))h({)170 2574 y(MPI_Server_connect\()e(MPI_COMM_WORLD,)g
("cave:1234",)g(&client)h(\);)170 2630 y(again)h(=)f(1;)170
2687 y(while)h(\(again\))f({)1967 46 y Fg(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 Fl(1.7.)34 b(EXAMPLES)1393 b Fr(29)266 45 y Fh(MPI_Recv\()23
b(buf,)g(MAX_DATA,)f(MPI_DOUBLE,)h(0,)g(MPI_ANY_TAG,)505 102
y(client,)f(&status)h(\);)266 158 y(switch)g(\(status.tag\))f({)361
214 y(case)i(0:)f(MPI_Comm_free\()f(&client)h(\);)552 271 y
(MPI_Finalize\(\);)552 327 y(return)g(0;)361 384 y(case)h(1:)f
(MPI_Comm_free\()f(&client)h(\);)552 440 y(again)g(=)h(0;)552
497 y(break;)361 553 y(case)g(2:)f(/*)h(do)f(something)g(*/)361
610 y(...)361 666 y(default:)552 723 y(MPI_Abort\()g(MPI_COMM_WORLD,)f
("Unexpected)g(message)h(type")g(\);)361 779 y(})266 835 y(})170
892 y(})75 948 y(})166 1042 y Fr(Here)15 b(is)h(the)f(clien)o(t.)75
1148 y Fh(#include)23 b("mpi.h")75 1205 y(main\()g(int)h(argc,)f(char)g
(**argv)g(\))75 1261 y({)75 1318 y(MPI_Comm)g(server;)75 1374
y(double)g(buf[MAX_DATA];)75 1487 y(MPI_Init\()g(&argc,)g(&argv)g(\);)75
1544 y(MPI_Client_connect\()e(MPI_COMM_WORLD,)h("cave:1234",)g(&server)h(\);)
75 1600 y(while)g(\(!done\))g({)170 1657 y(tag)h(=)g(2;)f(/*)h(Action)f(to)g
(perform)g(*/)170 1713 y(MPI_Send\()g(buf,)g(n,)h(MPI_DOUBLE,)e(0,)i(tag,)f
(server)g(\);)170 1769 y(/*)h(etc)f(*/)170 1826 y(})75 1882
y(MPI_Send\()g(buf,)g(0,)h(MPI_DOUBLE,)e(0,)h(1,)h(server)f(\);)75
1939 y(MPI_Comm_free\()f(&client)h(\);)75 1995 y(MPI_Finalize\(\);)75
2052 y(})166 2158 y Fr(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 Fi(MPI)p
1675 2158 14 2 v 16 w(IA)o(CCEPT)75 2214 y Fr(instead.)j(The)c(clien)o(t)g
(need)g(not)f(b)q(e)h(c)o(hanged.)-32 46 y Fg(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
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF