Sophie

Sophie

distrib > Mandriva > 10.2 > x86_64 > by-pkgid > 7e2425944fcb6713a27a8f0748a3860e > files > 6

pvm-3.4.5-1mdk.src.rpm

%!PS-Adobe-2.0
%%Creator: dvips 5.526 Copyright 1986, 1994 Radical Eye Software
%%Title: book.dvi
%%CreationDate: Fri Nov 11 10:57:38 1994
%%Pages: 298
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips book -o book.ps
%DVIPSParameters: dpi=300, comments removed
%DVIPSSource:  TeX output 1994.11.11:1055
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get
round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0
0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn
begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X
array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo
setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx
FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{
pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}
B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup
length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B
/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp
0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2
index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff
ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{
ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn
/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1
sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D
}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0
moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley
false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley
scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave
transform round exch round exch itransform moveto rulex 0 rlineto 0
ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta
0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{
3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p
-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{
3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end
%%EndProcSet
%%BeginProcSet: special.pro
TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N
/vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen
false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B
/@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit
div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{
/CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{
10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B
/@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale
true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup
length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{}
N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath
clippath mark{transform{itransform moveto}}{transform{itransform lineto}
}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{
itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{
closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39
0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N
/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1
scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get
ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0
TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR
pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1
-1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg
TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg
sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr
0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add
2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp
{pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72
div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray}
N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict
maxlength dict begin /magscale false def normalscale currentpoint TR
/psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx
psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy
scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR
/showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{
psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict
begin /SpecialSave save N gsave normalscale currentpoint TR
@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial
{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath
}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{
end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin}
N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{
/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX
SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X
/startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad
yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end
%%EndProcSet
TeXDict begin 40258431 52099146 1000 300 300
(/white/homes/dongarra/PVM/PVM_BOOK/book.dvi) @start
/Fa 1 43 df<003000007800007800007800007800007800F0783CF8787CFE79FC7F7BF8
1FFFE007FF8001FE0001FE0007FF801FFFE07F7BF8FE79FCF8787CF0783C007800007800
007800007800007800003000161A7C9E1F>42 D E /Fb 1 124 df<FFFFF81501808A16>
123 D E /Fc 1 104 df<7C000000FFC0000007F0000001F80000007C0000003E000000
1F0000001F8000001F8000000FC000000FC000000FC000000FC000000FC000000FC00000
0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
0FC000000FC000000FC0000007E0000007E0000003F0000001F8000000FC0000007F0000
001FF8000003FC00001FF800007F000000FC000001F8000003F0000007E0000007E00000
0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
1F8000001F8000001F0000003E0000007C000001F8000007F00000FFC000007C0000001E
577AC02B>103 D E /Fd 33 122 df<0003FB80000E0F80001C1F8000181B8000380700
00380700003807000070070000700E0000700E0007FFFE0000700E0000E01C0000E01C00
00E01C0000E01C0000E0380001C0380001C0380001C0380001C0720001C0720003807200
03807200038034000380180003000000070000000700000066000000E6000000CC000000
780000001921819917>13 D<1838783808101020204080050B7D830C>44
D<3078F06005047C830C>46 D<001F80006060018010020008040004081E0410610410C0
822180E22380E24700E24700E28E01C48E01C48E01C48E01C48E03888E0388860790831B
9081E1E04000002000003000700807C007FC00171A7A991D>64 D<0000200000600000E0
0000E00001E00001F0000270000270000470000870000870001070001070002070004070
00407000803800FFF8010038020038020038040038040038080038180038FE01FF181A7E
991D>I<03FFF800700E00700600700700E00700E00700E00700E00701C00E01C01C01C0
3801C07003FFE003807803803803801C07001C07001C07001C07001C0E00380E00380E00
700E00E01C03C0FFFF00181A7D991B>I<000F8200706200C01603801E07000C0E000C1C
000C18000C380008300008700000700000E00000E00000E00000E00000E00020E00020E0
0020E000406000406000803001001006000C180003E000171A7A991B>I<03FFFF007007
00700300700100E00100E00100E00100E00101C08001C08001C08001C18003FF00038100
0381000381000702000700040700040700080E00080E00180E00100E00301C00E0FFFFE0
181A7D991A>69 D<03FF1FF800700380007003800070038000E0070000E0070000E00700
00E0070001C00E0001C00E0001C00E0001C00E0003FFFC0003801C0003801C0003801C00
070038000700380007003800070038000E0070000E0070000E0070000E0070001C00E000
FF87FC001D1A7D991D>72 D<001F8000706001C03003001806001C0E000C1C000C18000E
38000E30000E70000E70000EE0001CE0001CE0001CE00038E00038E00030E00070E000E0
E000C06001807003003806001C1C0007E000171A7A991D>79 D<03FFF000701C00700E00
700700E00700E00700E00700E00701C00E01C01C01C03801C0E003FF800380C003806003
80700700700700700700700700700E00E00E00E00E00E10E00E21C0062FF803C181A7D99
1C>82 D<003F1000609001807001007003002006002006002006002006000007000007C0
0003F80001FE00007F00000F800003800001800001802001802001806003006003006006
00700C00C8180087E000141A7D9916>I<03CC0E2E181C381C301C701CE038E038E038E0
38C072C072C07260F261341E180F107C8F14>97 D<7E000E000E000E001C001C001C001C
00380038003BC03C307830701870187018E038E038E038E038C070C060C0E060C063801E
000D1A7C9912>I<001F80000380000380000380000700000700000700000700000E0000
0E0003CE000E2E00181C00381C00301C00701C00E03800E03800E03800E03800C07200C0
7200C0720060F2006134001E1800111A7C9914>100 D<01E00E181C08380870087010FF
E0E000E000E000E000E0086010602030C01F000D107C8F12>I<00F300038B800607000E
07000C07001C0700380E00380E00380E00380E00301C00301C00301C00183C0018780007
B800003800003800007000607000E0E000C1C0007F000011177E8F12>103
D<1F80000380000380000380000700000700000700000700000E00000E00000E7C000F86
001E07001E07001C07001C0700380E00380E00380E00381C00701C80701C807038807039
00E01900600E00111A7E9914>I<030706000000000000384C4E8E9C9C1C3838707272E2
E4643808197C980C>I<1F8003800380038007000700070007000E000E000E0E0E131C27
1C431C801F003C003F8039C038E070E270E270E270E4E0646038101A7E9912>107
D<1F0707070E0E0E0E1C1C1C1C3838383870707070E4E4E4E4E830081A7D990A>I<307C
1E00598663009E0783809E0703809C0703809C070380380E0700380E0700380E0700380E
0E00701C0E40701C0E40701C1C40701C1C80E0380C80601807001A107C8F1F>I<307C00
5986009E07009E07009C07009C0700380E00380E00380E00381C00701C80701C80703880
703900E01900600E0011107C8F16>I<01F006180C0C180E300E700E600EE00EE00EE00C
E01CE018E030606030C01F000F107C8F14>I<030F000590C009E0C009C06009C06009C0
600380E00380E00380E00380E00701C00701800703800703000E8E000E78000E00000E00
001C00001C00001C00001C0000FF00001317808F14>I<30F05D189E389C189C009C0038
003800380038007000700070007000E00060000D107C8F10>114
D<03E004300830187018601C001F801FC00FE000E00060E060E06080C041803E000C107D
8F10>I<06000E000E000E000E001C001C00FFC01C003800380038003800700070007000
7000E100E100E100E200E40038000A177C960D>I<38064C074E0E8E0E9C0E9C0E1C1C38
1C381C381C7039703970393079389A0F0C10107C8F15>I<38184C1C4E1C8E0C9C0C9C0C
1C08380838083810701070107020304018C00F000E107C8F12>I<380C104C0E384E1C38
8E1C189C1C189C1C181C381038381038381038381070702070702070704030704018B880
0F0F0015107C8F19>I<078F0008D18010F38020E18020E00020E00001C00001C00001C0
0001C000038200038200C38200E78400C5880078F00011107E8F12>I<38064C074E0E8E
0E9C0E9C0E1C1C381C381C381C703870387038307838F00F700070006060E0E1C0C18047
003C0010177C8F13>I E /Fe 26 123 df<03F7000E1D80181800181800181800181800
FFFF001818001818001818001818001818001818001818001818001818007E7E00111180
9012>11 D<0408103020606040C0C0C0C0C0C0C0C0C0C04060602030100804061A7D920C
>40 D<80402030101818080C0C0C0C0C0C0C0C0C0C0818181030204080061A7F920C>I<
FEFE070280850A>45 D<187898181818181818181818181818FF08107D8F0F>49
D<1F00618040C08060C0600060006000C00180030006000C00102020207FC0FFC00B107F
8F0F>I<FFF800180C001803001801001801801800801800C01800C01800C01800C01800
C01800C0180180180100180300180E00FFF80012117F9017>68 D<FFFE18061802180318
011821182018601FE01860182018201800180018001800FF0010117F9014>70
D<3E006300018001800F8031804180C190C19063903DE00C0B7F8A0F>97
D<F0003000300030003000300037C038603030301830183018301830183030386027800D
117F9011>I<1F8030C06000C000C000C000C000C000604030801F000A0B7F8A0E>I<01E0
006000600060006000600F6030E06060C060C060C060C060C060606030E01F780D117F90
11>I<1F00318060C0C0C0FFC0C000C000C000604030801F000A0B7F8A0E>I<1EF0331061
806180618033003E00400060003F803FC060E0C060C060C06060C01F000C117F8A0F>
103 D<20702000000000F0303030303030303030FC0612809108>105
D<F0003000300030003000300031F030C03080330036003F003300318031C030C0FDF00C
117F9010>107 D<F3C3C03C2C2038383030303030303030303030303030303030303030
3030FCFCFC160B7F8A1A>109 D<F3C03C6030603060306030603060306030603060FCF8
0D0B7F8A11>I<F7C0386030303018301830183018301830303860378030003000300030
00FC000D107F8A11>112 D<F700398038003000300030003000300030003000FC00090B
7F8A0C>114 D<3D038181783E038181C2BC080B7F8A0C>I<0800080018003800FF001800
180018001800180018801880188018800F00090F808E0C>I<F1E0306030603060306030
6030603060306030E00F780D0B7F8A11>I<F8F0706030403040188018800D000D000D00
060006000C0B7F8A10>I<F8F030C0188019000E0006000F00198011C020C0F1F00C0B7F
8A10>120 D<FFC0C1808380830006000C0018403040704060C0FFC00A0B7F8A0E>122
D E /Ff 4 121 df<00000180000000018000000000C000000000C00000000060000000
006000000000300000000018000000000C00FFFFFFFF80FFFFFFFF800000000C00000000
1800000000300000000060000000006000000000C000000000C000000001800000000180
0021147E9226>33 D<003C00E001C0038003800380038003800380038003800380038003
800380038007001E00F8001E000700038003800380038003800380038003800380038003
800380038001C000E0003C0E257E9B13>102 D<F8001E00070003800380038003800380
0380038003800380038003800380038001C000E0003C00E001C003800380038003800380
0380038003800380038003800380038007001E00F8000E257E9B13>I<0F0030C07040E0
60E0E0E040E000E000700030000C001F00318070C0E060E070E070E070607030E018C00F
80030000C000E00070007020707070607020E030C00F000C217E9911>120
D E /Fg 89 127 df<C060E0E0E0E0E0E0E0E0C060C060C060C060C06040400B0B7C9614
>34 D<00800180018007E01FF039BC619CC18EC18EC18EE18471807F801FE00FF001F801
9C018E4186E186E186E186718C39B81FF00FC00180018000800F1D7E9914>36
D<3806007C0E006C0E00EE1C00EE1C00EE3800EE38006C38007C700038700000700000E0
0000E00001C00001C00001C000038000038000070000070E00071F000E1B000E3B800E3B
801C3B801C3B80381B00381F00180E00111D7F9914>I<0700000F800018C00038E00038
E00038E00038C00039CF80398F801F1C001E1C001E1C000E38001E3800377000677000E3
F000E3E000E1C380E1E38063F3803F3F001E1E0011177F9614>I<60F0F8781818183030
60C080050C789614>I<0180038006000C001C0018003800700070007000E000E000E000
E000E000E000E000E000E000700070007000380018001C000C00060003800180091D7999
14>I<80C0603038181C0E0E0E0707070707070707070E0E0E1C18383060C080081D7C99
14>I<038003800380638CF39E7FFC3FF80FE00FE03FF87FFCF39E638C0380038003800F
107E9214>I<70F8FCFC7C0C1830E0C0060A798414>44 D<FFFEFFFEFFFE0F037E8C14>I<
70F8F8F8700505798414>I<0006000E000E001C001C003800380070007000E000E001C0
01C0038003800380070007000E000E001C001C003800380070007000E000E000C0000F1D
7E9914>I<07C00FE01C7038383018701C701CE00EE00EE00EE00EE00EE00EE00EE00EE0
0E701C701C383838381C700FE007C00F177E9614>I<0300030007000F003F00F7004700
070007000700070007000700070007000700070007000700070007007FF07FF00C177C96
14>I<0FC01FF03838701CE00EE00EE00E400E000E001C001C00380030007000E001C003
0006000C00180E300E7FFE7FFE0F177E9614>I<0FC01FF03838701C701C201C001C0018
003800700FE00FF00038001C000E000E400EE00EE00E701C78383FF00FC00F177E9614>
I<00780000F80001B80001B8000338000338000638000E38000C38001C38003838003038
00703800E03800FFFF80FFFF8000380000380000380000380000380001FF0001FF001117
7F9614>I<7FFC7FFC700070007000700070007000700077C07FF07838601C000C000E00
0E400EE00EE01C601C78783FF00FC00F177E9614>I<01F007F80E1C1C1C381C30007000
7000E000E7C0EFF0F838F01CF00CE00EE00E600E700E700C381C1C380FF007C00F177E96
14>I<E000FFFEFFFEE01CE0380030007000E000C001C001800380038007000700070007
000E000E000E000E000E000E0004000F187E9714>I<0FE03FF8783C701CE00EE00EE00E
E00E701C1EF003801FF03838701CE00EE00EE00EE00EF01E701C38381FF007C00F177E96
14>I<07C01FE038307038601CE01CE00CE00EE00E601E701E383E1FEE07CE000E001C00
1C001C7038703070E03FC01F000F177E9614>I<70F8F8F87000000000000070F8F8F870
0510798F14>I<70F8F8F87000000000000060F0F8F878183070E0800515798F14>I<000E
003E007C00F003E007C01F003E00F800F000F8003E001F0007C003E000F0007C003E000E
0F137E9414>I<FFFF80FFFF807FFF800000000000000000007FFF80FFFF80FFFF801109
7F8F14>I<4000E000F8007C001E000F8007C001F000F8003E001E003E00F801F007C00F
801E007C00F800E00040000F157E9514>I<1FE03FF8701CE00EE00E400E003C007000E0
01C003800380038003800300000000000000000003000780078003000F177E9614>I<01
E007F00E38181C38FC71FC731E771EEE0EEE0EEE0EEE0EEE0EEE0EEE0E771C731871F038
E018060E1E07F801F00F177E9614>I<01C00003E00003E0000360000360000770000770
000770000770000630000E38000E38000E38000E38001C1C001FFC001FFC001C1C001C1C
00380E00380E00FE3F80FE3F8011177F9614>I<FFF0FFFC381E380E3807380738073807
380E381E3FFC3FFC381E380E38073807380738073807380E381EFFFCFFF810177F9614>
I<01F18007FF800E1F801C0780380780700380700380700380E00000E00000E00000E000
00E00000E00000E000007003807003807003803807001C07000E0E0007FC0001F0001117
7F9614>I<FFE000FFF800383C00381E00380E0038070038070038070038038038038038
0380380380380380380380380380380380380700380700380E00381E00383C00FFF800FF
E00011177F9614>I<FFFF00FFFF00380700380700380700380700380000380000383800
3838003FF8003FF800383800383800380000380000380000380380380380380380380380
FFFF80FFFF8011177F9614>I<FFFF80FFFF803803803803803803803803803800003800
003838003838003FF8003FF8003838003838003800003800003800003800003800003800
00380000FF0000FF000011177F9614>I<03C60FFE1C3E181E381E700E700E600EE000E0
00E000E000E07FE07FE00E600E700E700E381E181E1C3E0FFE03CE10177F9614>I<FE3F
80FE3F80380E00380E00380E00380E00380E00380E00380E00380E003FFE003FFE00380E
00380E00380E00380E00380E00380E00380E00380E00380E00FE3F80FE3F8011177F9614
>I<FFF8FFF8070007000700070007000700070007000700070007000700070007000700
0700070007000700FFF8FFF80D177D9614>I<FE3F00FE3F00381C003838003878003870
0038E00039E00039C0003B80003FC0003FE0003EE0003CF0003C7000387800383800381C
00381C00380E00380E00FE1F80FE1F8011177F9614>75 D<FF00FF003800380038003800
380038003800380038003800380038003800380038003807380738073807FFFFFFFF1017
7E9614>I<FC1F80FC1F807C1F0076370076370076370076370077770077770073670073
670073670073E70071C70071C700700700700700700700700700700700700700F80F80F8
0F8011177F9614>I<FE3F80FE3F803E0E003B0E003B0E003B0E003B0E003B8E00398E00
398E0039CE0039CE0039CE0038CE0038CE0038EE00386E00386E00386E00386E00383E00
FE3E00FE3E0011177F9614>I<1FF07FFC783C701CE00EE00EE00EE00EE00EE00EE00EE0
0EE00EE00EE00EE00EE00EE00EE00E701C783C7FFC1FF00F177E9614>I<FFF0FFFC381E
380E38073807380738073807380E381E3FFC3FF038003800380038003800380038003800
FE00FE0010177F9614>I<1FF07FFC783C701CE00EE00EE00EE00EE00EE00EE00EE00EE0
0EE00EE00EE00EE00EE38EE1CE71DC78FC7FFC1FF000780038003C001C001E0F1C7E9614
>I<FFE000FFF800383C00381C00380E00380E00380E00380E00381C00383C003FF8003F
F000383800381C00381C00381C00381C00381C00381C80381DC0381DC0FE0F80FE070012
177F9614>I<0FCC1FFC307C603CE01CE01CE01CE00070007E003FE00FF001F8001C001E
000E600EE00EE00EF01CF838FFF0C7E00F177E9614>I<7FFF80FFFF80E1C380E1C380E1
C380E1C38001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C0000FF8000FF80011177F9614>I<FE0FE0FE0FE0380380
380380380380380380380380380380380380380380380380380380380380380380380380
3803803803803803801C07001C07000E0E0007FC0001F0001317809614>I<FC1F80FC1F
80380E00380E00380E003C1E001C1C001C1C001C1C001C1C000E38000E38000E38000E38
0006300007700007700007700003600003600003E00003E00001C00011177F9614>I<FC
1F80FC1F8070070070070070070070070070070070070070070031C60033E6003BEE003B
6E003B6E003B6E003B6E003B6E001B6C001B6C001A2C001E3C001E3C001E3C0011177F96
14>I<7E3E007E3E001C3C001E38000E78000F700007700007E00003E00003C00001C000
03C00003E00003E0000770000770000E78000E38001C3C001C1C003C1E00FE3F80FE3F80
11177F9614>I<FC1F80FC1F80380E003C1E001C1C001E3C000E38000E38000770000770
0003600003E00003E00001C00001C00001C00001C00001C00001C00001C00001C00007F0
0007F00011177F9614>I<7FFEFFFEE01CE01CE038E038007000E000E001C001C0038007
0007000E000E001C00380E380E700E700EFFFEFFFE0F177E9614>I<FFE0FFE0E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000FFE0FFE00B1D799914>I<C000E000E00070007000380038001C
001C000E000E000700070003800380038001C001C000E000E00070007000380038001C00
1C000E000E00060F1D7E9914>I<FFE0FFE000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0FFE0FFE0
0B1D7F9914>I<04001F007FC0F1E0E0E00B057C9614>I<FFFEFFFEFFFE0F037E7E14>I<
0818306060C0C0C0F0F87830050C799914>I<1FC0007FF000707800201800001C00001C
0007FC001FFC003C1C00701C00E01C00E01C00E01C00707C003FFF800F8F8011107E8F14
>I<FC0000FC00001C00001C00001C00001C00001C00001CF8001DFE001F07001E03001C
03801C01C01C01C01C01C01C01C01C01C01C01C01C03801E03001F0E001DFC000CF80012
17809614>I<03F80FFE1C0E380470006000E000E000E000E00060007000380E1C1E0FFC
03F00F107E8F14>I<007E00007E00000E00000E00000E00000E00000E0007CE000FFE00
1C3E00301E00700E00E00E00E00E00E00E00E00E00E00E00E00E00700E00301E00383E00
1FEFC007CFC012177F9614>I<07E00FF01C38301C700CE00EE00EFFFEFFFEE000600070
00380E1C1E0FFC03F00F107E8F14>I<00FC01FE038E07040700070007007FFEFFFE0700
07000700070007000700070007000700070007000700FFF8FFF80F177F9614>I<07CF00
1FFF80383B80301800701C00701C00701C003018003838003FF00037C000700000700000
3FF8001FFC003FFE00700F00E00380E00380E00380E003807007003C1E001FFC0007F000
11197F8F14>I<FC0000FC00001C00001C00001C00001C00001C00001C78001DFE001F86
001E07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF8F
E0FF8FE01317809614>I<06000F000F0006000000000000000000FF00FF000700070007
00070007000700070007000700070007000700FFF8FFF80D187C9714>I<FC0000FC0000
1C00001C00001C00001C00001C00001CFF801CFF801C1C001C38001C70001CE0001DC000
1FE0001FE0001E70001C38001C3C001C1C001C0E00FF1F80FF1F801117809614>107
D<FF80FF8003800380038003800380038003800380038003800380038003800380038003
80038003800380FFFEFFFE0F177E9614>I<FB8E00FFDF003CF3803CF38038E38038E380
38E38038E38038E38038E38038E38038E38038E38038E380FEFBE0FE79E01310808F14>
I<FC7800FDFE001F86001E07001C07001C07001C07001C07001C07001C07001C07001C07
001C07001C0700FF8FE0FF8FE01310808F14>I<07C01FF03C78701C701CE00EE00EE00E
E00EE00EE00E701C783C3C781FF007C00F107E8F14>I<FCF800FDFE001F07001E03001C
03801C01C01C01C01C01C01C01C01C01C01C01C01C03801E03001F0E001DFC001CF8001C
00001C00001C00001C00001C00001C0000FF8000FF80001218808F14>I<03E7000FF700
1C1F00300F00700F00E00700E00700E00700E00700E00700E00700700F00300F001C3F00
0FF70007C700000700000700000700000700000700000700003FE0003FE013187F8F14>
I<FE1F00FE7F800EE3800F81000F00000F00000E00000E00000E00000E00000E00000E00
000E00000E0000FFF000FFF00011107F8F14>I<0FD83FF86038C038C038F0007F803FF0
07F8001C6006E006F006F81CFFF8CFE00F107E8F14>I<06000E000E000E000E007FFCFF
FC0E000E000E000E000E000E000E000E000E0E0E0E0E0E0E1C07F801F00F157F9414>I<
FC3F00FC3F001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700
1C07001C1F000FFFE003E7E01310808F14>I<FE3F80FE3F803C1E001C1C001C1C001C1C
000E38000E38000E380006300007700007700007700003E00003E00003E00011107F8F14
>I<FE3F80FE3F80700700380E00380E00380E0039CE0039CE0039CE001B6C001A6C001A
6C001A6C001E7C001E7C000E380011107F8F14>I<7E3F007E3F001E3C000E7800077000
07E00003E00001C00003C00003E0000770000E78000E38001C1C00FE3F80FE3F8011107F
8F14>I<FE3F80FE3F801C0E001C1C001C1C000E1C000E38000E38000738000730000730
0003700003700003E00001E00001E00001C00001C00001C0000380007380007700007E00
003C000011187F8F14>I<3FFF7FFF700E701C7038007000E001C0038007000E001C0738
077007FFFFFFFF10107F8F14>I<003E00FE01E003800380038003800380038003800380
038003807F00FE007F00038003800380038003800380038003800380038001E000FE003E
0F1D7E9914>I<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
031D789914>I<7800FE000F00038003800380038003800380038003800380038001FC00
FE01FC03800380038003800380038003800380038003800F00FE0078000F1D7E9914>I<
1C103F38E7E041C00D047D9614>I E /Fh 3 121 df<072018E0306060606060C0C0C0C0
C0C841C862D03C600D0B7E8A11>97 D<71F1F09A1A189C1C189818181818183030303030
30303032303062606064606038170B7E8A1B>109 D<0F381144218C2180018003000300
03084310C73079C00E0B7F8A11>120 D E /Fi 3 77 df<60F0F06004047D830B>58
D<03FF07FE007000E0007000E0007000E000E001C000E001C000E001C000E001C001C003
8001C0038001C0038001C0038003FFFF0003800700038007000380070007000E0007000E
0007000E0007000E000E001C000E001C000E001C000E001C001C003800FFC1FF801F1A7E
9920>72 D<03FF8000700000700000700000E00000E00000E00000E00001C00001C00001
C00001C0000380000380000380000380000700000700040700040700080E00080E00180E
00300E00701C01E0FFFFE0161A7E991A>76 D E /Fj 1 1 df<FFFFC0FFFFC012027D87
1A>0 D E /Fk 8 111 df<40E06020202040408003097D820A>59
D<000100000300000700000780000B80001B800013800023800023800043800083800083
C00101C003FFC00201C00401C00C01C00801C01801E0FE07F815147F9319>65
D<07FFE000E03801C01801C01C01C01C01C01C0380380380700380E003FFC00700E00700
700700300700380E00700E00700E00E00E00E01C0380FFFE0016147F9319>I<07FC7FC0
00E00E0001C01C0001C01C0001C01C0001C01C0003803800038038000380380003FFF800
070070000700700007007000070070000E00E0000E00E0000E00E0000E00E0001C01C000
FF8FF8001A147F931B>72 D<06070600000000384C4C8C98181830323264643808147F93
0C>105 D<003000380030000000000000000001C002600430046008600060006000C000
C000C000C001800180018001806300E300C60078000D1A81930E>I<30F87C00590C8600
4E0D06009C0E0600980C0600180C0600180C060030180C0030180C803018188030181880
6030190060300E00190D7F8C1D>109 D<30F8590C4E0C9C0C980C180C180C3018301930
3130316032601C100D7F8C15>I E /Fl 7 57 df<02040818103020604040C0C0C0C0C0
C0C0C0C0C040406020301018080402071E7D950D>40 D<804020301018080C0404060606
0606060606060604040C08181030204080071E7E950D>I<006000006000006000006000
006000006000006000006000006000006000FFFFF0FFFFF0006000006000006000006000
00600000600000600000600000600000600014167E9119>43 D<0F0030C0606060604020
C030C030C030C030C030C030C030C030C03040206060606030C00F000C137E9211>48
D<0C001C00EC000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C
00FFC00A137D9211>I<1F0060C06060F070F030603000700070006000C001C001800200
04000810101020207FE0FFE00C137E9211>I<0FC0107020186018601870183C303F600F
800FE031F06078C01CC00CC00CC00C601830300FC00E137F9211>56
D E /Fm 38 122 df<FFFE08027D870D>45 D<3078F06005047D830B>I<004000C000C0
03801D8001800180030003000300030006000600060006000C000C000C000C001800FF80
0A157C9412>49 D<00F00308040C0904090611061106220C240C18180030006000C00300
040018002004200C7C18C7F081E00F157D9412>I<00E0031006080C0818081808181830
1830183038103818F00730003000600060E0C0E0808100860078000D157C9412>57
D<000180000180000380000380000780000780000B800013800013800021C00021C00041
C00081C00081C00101C001FFC00201C00201C00401C00801C00801C01801E0FE07F81517
7E961A>65 D<003F0400E0880380580600380C00381C0010380010300010700010600000
E00000E00000E00000C00000C00040C00040C00080E00080E00100600200300400181800
07E00016177A961A>67 D<03FFF000E01800E00C00E00600E00701C00301C00301C00301
C00303800703800703800703800707000E07000E07000C07001C0E00180E00300E00600E
00C01C0380FFFC0018177E961B>I<03FFFE00E00E00E00400E00400E00401C00401C004
01C08001C08003810003830003FF000383000702000702080702080700100E00100E0030
0E00200E00601C01C0FFFFC017177E9618>I<07FE00E000E000E000E001C001C001C001
C0038003800380038007000700070007000E000E000E000E001C00FF800F177E960E>73
D<03F0003F8000F000780000B800780000B800B80000B801380001380170000138027000
01380270000138047000023808E000021C08E000021C10E000021C10E000041C21C00004
1C41C000041C41C000041C81C000081D038000081D038000080E038000080E038000180C
070000FE083FE00021177E9620>77 D<03FFE000E03800E01C00E00C00E00C01C01C01C0
1C01C01C01C0380380700380E003FF800380000700000700000700000700000E00000E00
000E00000E00001C0000FF800016177E9618>80 D<03FFE000E03800E01C00E01C00E01C
01C01C01C01C01C01C01C0380380700381C003FF000381800700C00700E00700E00700E0
0E01C00E01C00E01C20E01C21C00C4FF807817177E961A>82 D<007C4001828003018006
01800601800C01000C01000E00000E00000FC00007F80003FC00007C00000E00000E0000
0600200600400C00400C00600800601000D8600087C00012177D9614>I<1FFFFC38381C
20380860380840380840700880700800700000700000E00000E00000E00000E00001C000
01C00001C00001C0000380000380000380000380000700007FF00016177A961A>I<0390
0C70187030303060606060606060C0C0C0C840C841C862D01C700D0E7C8D12>97
D<7C0018001800180018003000300030003000678068C070406060C060C060C060C06080
C080C08180C10046003C000B177C9610>I<07C00C6030E020E06000C000C000C0008000
8000C020C04061803E000B0E7C8D10>I<003E000C000C000C000C001800180018001803
B00C70187030303060606060606060C0C0C0C840C841C862D01C700F177C9612>I<0780
1840302060206040FF80C000C000C000C000C020C04061803E000B0E7C8D10>I<001C00
36003E006C00600060006000C000C007F800C000C000C001800180018001800180030003
00030003000200060006006600E400C80070000F1D81960B>I<01C4063C0C1C181C1818
301830183018203020302030307011E00E600060006060C0E0C0C3807E000E147E8D10>
I<1F0006000600060006000C000C000C000C0019E01A301C101810303030303030303060
60606460C460C8C048C0700E177D9612>I<030706000000000000182C4C4C8C18181830
326264243808177D960B>I<1F0006000600060006000C000C000C000C001838184C189C
191832003C003F00318060C060C860C860C8C0D0C0600E177E9610>107
D<3E0C0C0C0C181818183030303060606060C0C8C8C8D06007177D9609>I<30783C0049
8CC6004E0502004C0602009C0E0600180C0600180C0600180C060030180C0030180C8030
181880301818806030090060300E00190E7D8D1D>I<3078498C4E044C049C0C180C180C
180C30183019303130316012601C100E7D8D14>I<078018C0304060606060C060C060C0
6080C080C08180C10046003C000B0E7B8D12>I<0C3812C4130613062606060606060606
0C0C0C0C0C180C101A2019C018001800300030003000FC000F147F8D12>I<30F04B184E
384C3098001800180018003000300030003000600060000D0E7D8D0F>114
D<07800C4018E018E038001E001F8007C000C060C0E0C0C180C3003E000B0E7D8D0F>I<
060006000C000C000C000C00FF8018001800180030003000300030006000610061006200
6400380009147D930C>I<38042C0C4C0C4C0C8C18181818181818303030323032307218
B40F1C0F0E7D8D13>I<38102C184C184C188C1018101810181030203020304030401880
0F000D0E7D8D10>I<3804104C0C184C0C184C0C188C1810181810181810181810303020
303020303020103040185880078F00150E7D8D18>I<0E3C1346218E218C430003000300
030006000608C608E610CA2071C00F0E7E8D10>I<38042C0C4C0C4C0C8C181818181818
18303030303030307018E00F60006000C0E0C0E18043003C000E147D8D11>I
E /Fn 37 123 df<0FFFF81FFFF83FFFF8608400418400810400010400030C00030C0002
0C00060C00060C000E0C000C0C001C0E001C0E00380E0018060015127E9118>25
D<60F0F06004047C830C>58 D<60F0F0701010101020204080040C7C830C>I<00000380
00000F0000003C000000F0000003C000000F0000003C000000F0000003C000000F000000
3C000000F0000000F00000003C0000000F00000003C0000000F00000003C0000000F0000
0003C0000000F00000003C0000000F000000038019187D9520>I<000100030006000600
06000C000C000C0018001800180030003000300060006000C000C000C001800180018003
0003000300060006000C000C000C00180018001800300030003000600060006000C000C0
0010297E9E15>I<E0000000780000001E0000000780000001E0000000780000001E0000
000780000001E0000000780000001E00000007800000078000001E00000078000001E000
00078000001E00000078000001E00000078000001E00000078000000E000000019187D95
20>I<003E0000C3000100C00200C0030060078060078070030030000030000030000030
00FC700382700601700C01701800F03800E03000E07000E07001C0E001C0E001C0E00180
E00380E00300E00600E00600600C003018001860000F8000141F7E9D16>64
D<00000C0000000C0000001C0000001C0000003C0000005C0000005C0000009E0000008E
0000010E0000020E0000020E0000040E0000040E0000080E0000100E0000100E00002007
00003FFF0000400700008007000080070001000700010007000200070004000700040007
001C000780FF803FF01C1D7F9C1F>I<01FFFF00003C01C0003800E0003800F000380070
0038007000700070007000F0007000F0007001E000E003C000E0078000E01F0000FFFC00
01C00F0001C0078001C003C001C003C0038003C0038003C0038003C0038003C007000780
0700070007000E0007001C000E007800FFFFC0001C1C7E9B1F>I<0001F808000E061800
380138006000F001C0007003800070070000300F0000200E0000201C0000203C0000203C
000000780000007800000078000000F0000000F0000000F0000000F0000000F0000100F0
000100F0000100700002007000020030000400380008001C0010000E0060000701800000
FE00001D1E7E9C1E>I<01FE0000FF003E0000F0002E0001E0002E0002E0002E0002E000
2E0004E0004E0009C0004E0009C000470011C000470011C0008700238000870043800087
004380008700838001070107000107010700010382070001038207000203840E00020388
0E000203880E000203900E000403A01C000403A01C000401C01C000C01C01C001C01803C
00FF8103FF80281C7E9B28>77 D<01FC00FF80001C001C00002E001800002E001000002E
001000002700100000470020000043002000004380200000438020000081C040000081C0
40000081C040000080E040000100E0800001007080000100708000010070800002003900
000200390000020039000002001D000004001E000004000E000004000E00000C000E0000
1C00040000FF80040000211C7E9B21>I<01FFFF00003C03C0003800E0003800F0003800
7000380070007000F0007000F0007000F0007000E000E001E000E003C000E0070000E01E
0001FFF00001C0000001C0000001C0000003800000038000000380000003800000070000
000700000007000000070000000F000000FFE000001C1C7E9B1B>80
D<1FFFFFF01C03807030070030200700206007002040070020400E0020800E0020800E00
20000E0000001C0000001C0000001C0000001C0000003800000038000000380000003800
000070000000700000007000000070000000E0000000E0000000E0000000E0000001E000
007FFF00001C1C7F9B18>84 D<FFC00FF01C0003801C0003001C0002001C0002001C0004
001C0008001E0008000E0010000E0030000E0020000E0040000E0040000E0080000E0100
000F0100000702000007040000070400000708000007080000071000000720000003A000
0003C00000038000000380000003000000030000001C1D7D9B18>86
D<01E3000717000C0F00180F00380E00300E00700E00700E00E01C00E01C00E01C00E01C
00E03880E03880E038806078803199001E0E0011127E9116>97 D<3F00070007000E000E
000E000E001C001C001C001C0039E03A303C1838187018701C701C701CE038E038E038E0
30E070E060E0C061C023001E000E1D7E9C12>I<01F0030C0C0C1C1E383C301870007000
E000E000E000E000E000E0046008601030601F800F127E9112>I<0007E00000E00000E0
0001C00001C00001C00001C000038000038000038000038001E7000717000C0F00180F00
380E00300E00700E00700E00E01C00E01C00E01C00E01C00E03880E03880E03880607880
3199001E0E00131D7E9C16>I<01F007080C0818043808300870307FC0E000E000E000E0
00E000E0046008601030600F800E127E9113>I<0038C000C5C00183C00303C007038006
03800E03800E03801C07001C07001C07001C07001C0E001C0E001C0E000C1E00047C0003
9C00001C00001C00003800603800F03000F07000E0C0007F0000121A809114>103
D<0FC00001C00001C0000380000380000380000380000700000700000700000700000E3E
000EC3000F03800E03801E03801C03801C03801C0380380700380700380700380E00700E
20700E20701C20701C40E00C80600700131D7E9C18>I<01C003C003C001800000000000
000000000000001C00270047004700870087000E000E001C001C001C0038003880388070
80710032001C000A1C7E9B0E>I<0007000F000F00060000000000000000000000000078
009C010C020C021C041C001C001C0038003800380038007000700070007000E000E000E0
00E001C061C0F180F300E6007C001024809B11>I<0FC00001C00001C000038000038000
0380000380000700000700000700000700000E07000E08800E11C00E23C01C47801C8300
1D00001E00003FC00038E000387000387000707100707100707100707200E03200601C00
121D7E9C16>I<1F800380038007000700070007000E000E000E000E001C001C001C001C
0038003800380038007000700070007000E200E200E200E40064003800091D7F9C0C>I<
381F81F04E20C6184640E81C4680F01C8F00F01C8E00E01C0E00E01C0E00E01C1C01C038
1C01C0381C01C0381C01C0703803807138038071380380E1380380E27007006430030038
20127E9124>I<3C1F004E61804681C04701C08F01C08E01C00E01C00E01C01C03801C03
801C03801C0700380710380710380E10380E2070064030038014127E9119>I<00F80003
0C000E06001C0300180300300300700380700380E00700E00700E00700E00E00E00E00E0
1C0060180060300030E0000F800011127E9114>I<07878009C86008D03008E03011C030
11C03801C03801C0380380700380700380700380600700E00700C00701800783000E8600
0E78000E00000E00001C00001C00001C00001C00003C0000FF0000151A819115>I<3C3C
4E424687470F8E1E8E0C0E000E001C001C001C001C003800380038003800700030001012
7E9113>114 D<01F0060C0C040C0E180C1C001F000FE00FF003F80038201C7018F018F0
10803060601F800F127E9113>I<00C001C001C001C00380038003800380FFF007000700
07000E000E000E000E001C001C001C001C00382038203840384018800F000C1A80990F>
I<1C00C02701C04701C04701C08703808703800E03800E03801C07001C07001C07001C07
00180E20180E20180E201C1E200C264007C38013127E9118>I<07878008C84010F0C020
F1E020E3C040E18000E00000E00001C00001C00001C00001C000638080F38080F38100E5
810084C60078780013127E9118>120 D<1C00C02701C04701C04701C08703808703800E
03800E03801C07001C07001C07001C0700180E00180E00180E001C1E000C3C0007DC0000
1C00001800603800F03000F06000E0C0004180003E0000121A7E9114>I<038107C10FF6
081C10080010002000400080010002000400080410043C1867F843F081E010127E9113>
I E /Fo 21 118 df<70F8F8F87005057D840B>46 D<07F0001C1C00380E00780F007007
00700700F00780F00780F00780F00780F00780F00780F00780F00780F007807007007007
00780F00380E001C1C0007F00011157F9414>48 D<01800780FF80FF8007800780078007
8007800780078007800780078007800780078007800780FFF8FFF80D157D9414>I<0FC0
3FF870FCF83CF83EF81E701E003E003C0038007000E001C0038006060C06180E3FFC7FFC
FFFCFFFC0F157E9414>I<0FC01FF03078787C783C783C107C007800E00FE00078003C00
3C003E703EF83EF83EF83C70783FF00FC00F157E9414>I<000C00001C00003C00007C00
00FC0001BC00033C00063C000C3C00183C00303C00603C00C03C00FFFF80FFFF80003C00
003C00003C00003C0003FF8003FF8011157F9414>I<700C7FF87FF07FE07F8060006000
600067E07870603C003C003E003E703EF03EF03EE03C70783FF00FC00F157E9414>I<03
F00FF81E1C383C383C70187000F000F3E0F438F81CF01CF01EF01EF01E701E701E781C3C
381FF007E00F157E9414>I<60007FFF7FFF7FFE7FFCE018C030C030006000C001C00180
03800780070007000F000F000F000F000F00060010167E9514>I<07E01FF03838701C70
1C781C7E1C7FB83FE01FF00FF83BFC70FEE07EE01EE00EE00EF00C781C3FF00FE00F157E
9414>I<0FC01FF03838703CF01CF01CF01EF01EF01E701E703E385E0F9E001E001C301C
783C783870F03FE01F800F157E9414>I<FFFFF0FFFFF01F00F01F00701F00381F00181F
06181F06181F06001F0E001FFE001FFE001F0E001F06001F06001F06001F00001F00001F
00001F00001F0000FFF000FFF00015177E961A>70 D<7FFFFF007FFFFF00783E0F00603E
0300E03E0380C03E0180C03E0180C03E0180003E0000003E0000003E0000003E0000003E
0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E000007FF
F00007FFF00019177F961C>84 D<0FE0003838003C1C003C1E00181E00001E0000FE000F
9E003C1E00781E00F01E00F01E00F01E00786FC01F87C0120F7F8E14>97
D<FC0000FC00003C00003C00003C00003C00003C00003C00003DFC003F0F003C03803C03
C03C01C03C01E03C01E03C01E03C01E03C01E03C01C03C03C03C03803B0F0031F8001317
7E9617>I<07F01C18380C78067007F007F007FFFFF000F0007000780038031E0603FC10
0F7F8E13>101 D<0FE700183B80301B80701C00701C00701C00701C003018001830002F
E0002000003000003FF8003FFE003FFF00700780E00380E00380E00380700700380E000F
F80011167F8E14>103 D<387C7C7C3800000000FCFC3C3C3C3C3C3C3C3C3C3C3CFFFF08
187F970B>105 D<FCFC3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3CFFFF08177F960B>
108 D<F870F99C3A3C3A3C3C183C003C003C003C003C003C003C003C00FF80FF800E0F7F
8E11>114 D<FC3F00FC3F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F00
3C0F003C0F003C1F001C2FC00FCFC0120F7E8E17>117 D E /Fp
11 67 df<000000003E000000000000007F00000000000001FF00000000000007FF0000
000000000FFF0000000000007FFF000000000001FFFF00000000001FFFFF0000000001FF
FFFF00000007FFFFFFFF000000FFFFFFFFFF000000FFFFFFFFFF000000FFFFFFFFFF0000
00FFFFFFFFFF000000FFFFE3FFFF000000FFFE03FFFF000000F80003FFFF000000000003
FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF0000
00000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003
FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF0000
00000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003
FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF0000
00000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003
FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF0000
00000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003
FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF0000
00000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003
FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF0000
00000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003
FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF0000
00000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003
FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF0000
00000003FFFF000000000003FFFF000000000003FFFF000000000003FFFF000000000003
FFFF0000007FFFFFFFFFFFFFF07FFFFFFFFFFFFFF07FFFFFFFFFFFFFF07FFFFFFFFFFFFF
F07FFFFFFFFFFFFFF07FFFFFFFFFFFFFF07FFFFFFFFFFFFFF03C6173E056>49
D<0000007FFF0000000000000FFFFFFC0000000000FFFFFFFF8000000003FFFFFFFFF000
00000FFFFFFFFFFC0000003FFFFFFFFFFF0000007FFFFFFFFFFF800001FFFE007FFFFFE0
0003FFE0000FFFFFF00007FF800003FFFFF8000FFE000000FFFFFC001FFE0000003FFFFE
001FFF8000001FFFFF003FFFC000000FFFFF803FFFE000000FFFFF807FFFF0000007FFFF
C07FFFF8000003FFFFC0FFFFF8000003FFFFE0FFFFFC000001FFFFE0FFFFFC000001FFFF
F0FFFFFC000001FFFFF0FFFFFC000000FFFFF0FFFFFC000000FFFFF8FFFFFC000000FFFF
F8FFFFFC000000FFFFF8FFFFFC000000FFFFF87FFFF8000000FFFFF87FFFF8000000FFFF
F83FFFF0000000FFFFF81FFFE0000000FFFFF80FFFC0000000FFFFF807FF80000000FFFF
F801FE00000000FFFFF8000000000000FFFFF0000000000001FFFFF0000000000001FFFF
F0000000000001FFFFE0000000000001FFFFE0000000000003FFFFC0000000000003FFFF
C0000000000007FFFF80000000000007FFFF8000000000000FFFFF0000000000000FFFFE
0000000000001FFFFC0000000000001FFFF80000000000003FFFF00000000000003FFFE0
0000000000007FFFC0000000000000FFFF80000000000001FFFF00000000000001FFFE00
000000000003FFFC00000000000007FFF00000000000000FFFE00000000000001FFFC000
00000000001FFF000000000000003FFE000000000000007FF800000000000000FFF00000
0000000001FFE000000000000003FF8000000000000007FF000000000000000FFE000003
F80000001FF8000003F80000003FF0000003F80000007FE0000007F0000000FFC0000007
F0000001FF00000007F0000003FE00000007F0000007FC00000007F000000FF80000000F
F000001FE00000000FF000003FC00000000FE000007F800000000FE00000FF000000001F
E00001FC000000001FE00003F800000000FFE00007FFFFFFFFFFFFE0000FFFFFFFFFFFFF
E0001FFFFFFFFFFFFFC0003FFFFFFFFFFFFFC0007FFFFFFFFFFFFFC000FFFFFFFFFFFFFF
C001FFFFFFFFFFFFFFC003FFFFFFFFFFFFFFC007FFFFFFFFFFFFFFC00FFFFFFFFFFFFFFF
801FFFFFFFFFFFFFFF803FFFFFFFFFFFFFFF807FFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF
80FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF
00FFFFFFFFFFFFFFFF00456178E056>I<0000001FFFC0000000000003FFFFFE00000000
001FFFFFFFE0000000007FFFFFFFF800000001FFFFFFFFFE00000003FFFFFFFFFF800000
07FFF007FFFFC000000FFF0000FFFFE000001FF800003FFFF000003FE000001FFFF80000
7FC000001FFFFC0000FFF000000FFFFE0001FFFC00000FFFFF0001FFFE000007FFFF0003
FFFF000007FFFF8003FFFF000007FFFF8003FFFF800007FFFFC007FFFFC00007FFFFC007
FFFFC00007FFFFC007FFFFC00007FFFFC007FFFFC00007FFFFC007FFFFC00007FFFFC007
FFFFC00007FFFFC007FFFFC00007FFFFC007FFFFC00007FFFFC003FFFF800007FFFFC003
FFFF800007FFFF8001FFFF000007FFFF8000FFFE00000FFFFF80007FFC00000FFFFF0000
1FF000000FFFFF0000038000000FFFFE0000000000001FFFFC0000000000001FFFFC0000
000000003FFFF80000000000003FFFF00000000000007FFFE0000000000000FFFFC00000
00000000FFFF80000000000003FFFE00000000000007FFFC0000000000001FFFF0000000
000003FFFFE00000000003FFFFFF000000000007FFFFFC000000000007FFFFFF00000000
0007FFFFFFE00000000003FFFFFFFC00000000000007FFFF00000000000000FFFFC00000
000000003FFFF00000000000001FFFF80000000000000FFFFC00000000000007FFFE0000
0000000007FFFF00000000000003FFFF80000000000003FFFFC0000000000001FFFFE000
0000000001FFFFF0000000000001FFFFF0000000000001FFFFF8000000000001FFFFF800
0000000000FFFFFC000000000000FFFFFC003800000000FFFFFC03FF80000000FFFFFE07
FFC0000000FFFFFE0FFFE0000000FFFFFE1FFFF0000000FFFFFE3FFFF8000000FFFFFE7F
FFFC000000FFFFFE7FFFFC000000FFFFFEFFFFFE000000FFFFFEFFFFFE000000FFFFFEFF
FFFE000000FFFFFEFFFFFE000000FFFFFCFFFFFE000000FFFFFCFFFFFE000000FFFFFCFF
FFFE000001FFFFFCFFFFFE000001FFFFF87FFFFC000001FFFFF87FFFFC000001FFFFF07F
FFF8000001FFFFF03FFFF0000003FFFFE03FFFE0000003FFFFC01FFFC0000007FFFF800F
FF00000007FFFF800FFE0000000FFFFF0007FF8000001FFFFE0003FFE000003FFFFC0000
FFFC0000FFFFF000007FFFE007FFFFE000003FFFFFFFFFFF8000000FFFFFFFFFFF000000
03FFFFFFFFF8000000007FFFFFFFE0000000000FFFFFFE0000000000007FFFC000000047
6279E056>I<00000000000007F000000000000000000FF800000000000000000FF80000
0000000000001FF800000000000000003FF800000000000000007FF80000000000000000
FFF80000000000000001FFF80000000000000001FFF80000000000000003FFF800000000
00000007FFF8000000000000000FFFF8000000000000001FFFF8000000000000001FFFF8
000000000000003FFFF8000000000000007FFFF800000000000000FFFFF8000000000000
01FFFFF800000000000001FFFFF800000000000003FFFFF800000000000007FFFFF80000
000000000FFFFFF80000000000001FEFFFF80000000000003FCFFFF80000000000003F8F
FFF80000000000007F0FFFF8000000000000FF0FFFF8000000000001FE0FFFF800000000
0003FC0FFFF8000000000003F80FFFF8000000000007F00FFFF800000000000FE00FFFF8
00000000001FE00FFFF800000000003FC00FFFF800000000003F800FFFF800000000007F
000FFFF80000000000FE000FFFF80000000001FE000FFFF80000000003FC000FFFF80000
000007F8000FFFF80000000007F0000FFFF8000000000FE0000FFFF8000000001FE0000F
FFF8000000003FC0000FFFF8000000007F80000FFFF8000000007F00000FFFF800000000
FE00000FFFF800000001FC00000FFFF800000003FC00000FFFF800000007F800000FFFF8
00000007F000000FFFF80000000FE000000FFFF80000001FC000000FFFF80000003FC000
000FFFF80000007F8000000FFFF80000007F0000000FFFF8000000FE0000000FFFF80000
01FC0000000FFFF8000003FC0000000FFFF8000007F80000000FFFF800000FF00000000F
FFF800000FE00000000FFFF800001FC00000000FFFF800003F800000000FFFF800007F80
0000000FFFF80000FF000000000FFFF80000FFFFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFF
FFE0FFFFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFFFE0FFFFFFFF
FFFFFFFFFFE0FFFFFFFFFFFFFFFFFFE000000000003FFFF8000000000000003FFFF80000
00000000003FFFF8000000000000003FFFF8000000000000003FFFF8000000000000003F
FFF8000000000000003FFFF8000000000000003FFFF8000000000000003FFFF800000000
0000003FFFF8000000000000003FFFF8000000000000003FFFF8000000000000003FFFF8
000000000000003FFFF8000000000000003FFFF8000000000000003FFFF8000000000000
003FFFF800000000007FFFFFFFFFFFE00000007FFFFFFFFFFFE00000007FFFFFFFFFFFE0
0000007FFFFFFFFFFFE00000007FFFFFFFFFFFE00000007FFFFFFFFFFFE00000007FFFFF
FFFFFFE04B617BE056>I<00700000000000380000FC0000000000FC0000FFC00000000F
FC0000FFF8000000FFFC0000FFFFE0003FFFF80000FFFFFFFFFFFFF80000FFFFFFFFFFFF
F00000FFFFFFFFFFFFE00000FFFFFFFFFFFFC00000FFFFFFFFFFFF800000FFFFFFFFFFFF
000000FFFFFFFFFFFE000000FFFFFFFFFFFC000000FFFFFFFFFFF8000000FFFFFFFFFFF0
000000FFFFFFFFFFE0000000FFFFFFFFFFC0000000FFFFFFFFFF00000000FFFFFFFFFC00
000000FFFFFFFFF000000000FFFFFFFFC000000000FFFFFFFE0000000000FFFFFFF00000
000000FF0070000000000000FF0000000000000000FF0000000000000000FF0000000000
000000FF0000000000000000FF0000000000000000FF0000000000000000FF0000000000
000000FF0000000000000000FF0000000000000000FF0000000000000000FF0000000000
000000FF0000000000000000FF0000000000000000FF000FFFE000000000FF00FFFFFE00
000000FF07FFFFFFC0000000FF3FFFFFFFF0000000FFFFFFFFFFFC000000FFFFF003FFFF
000000FFFF00007FFF800000FFF800001FFFE00000FFE000000FFFF00000FFC0000007FF
F80000FF00000007FFFC0000FE00000003FFFE0000FC00000003FFFE00007800000001FF
FF00000000000001FFFF80000000000001FFFF80000000000001FFFFC0000000000001FF
FFC0000000000000FFFFE0000000000000FFFFE0000000000000FFFFF0000000000000FF
FFF0000000000000FFFFF0000000000000FFFFF0000000000000FFFFF8000000000000FF
FFF803FE00000000FFFFF80FFF00000000FFFFF81FFF80000000FFFFF83FFFC0000000FF
FFF87FFFE0000000FFFFF87FFFF0000000FFFFF8FFFFF0000000FFFFF8FFFFF0000000FF
FFF8FFFFF0000000FFFFF8FFFFF0000000FFFFF8FFFFF0000000FFFFF0FFFFF0000000FF
FFF0FFFFF0000000FFFFF0FFFFF0000000FFFFF0FFFFE0000001FFFFE07FFFE0000001FF
FFE07FFFC0000001FFFFC07FFF80000001FFFFC03FFE00000001FFFF803FF800000003FF
FF801FE000000003FFFF001FE000000007FFFE000FF000000007FFFC0007FC0000000FFF
F80003FE0000001FFFF00001FF8000003FFFE00000FFE00000FFFFC000007FF80003FFFF
8000003FFF801FFFFF0000001FFFFFFFFFFC00000007FFFFFFFFF000000001FFFFFFFFC0
000000007FFFFFFE00000000000FFFFFF0000000000000FFFE00000000456278E056>I<
0000000007FFE0000000000000FFFFFE000000000007FFFFFF80000000001FFFFFFFE000
000000FFFFFFFFF000000003FFFFFFFFF800000007FFFF007FFC0000001FFFF80007FE00
00003FFFC00001FF0000007FFF000000FF800000FFFE000007FF800003FFF800000FFFC0
0007FFF000001FFFC0000FFFE000003FFFC0000FFFE000007FFFE0001FFFC000007FFFE0
003FFF800000FFFFE0007FFF800000FFFFE000FFFF000000FFFFE000FFFF000000FFFFE0
01FFFE000000FFFFE003FFFE000000FFFFE003FFFE0000007FFFC007FFFC0000007FFFC0
07FFFC0000003FFF800FFFFC0000001FFF000FFFFC0000000FFE000FFFF800000007FC00
1FFFF80000000000001FFFF80000000000001FFFF80000000000003FFFF8000000000000
3FFFF80000000000003FFFF00000000000003FFFF00000000000007FFFF0000C00000000
7FFFF001FFFF0000007FFFF007FFFFE000007FFFF01FFFFFFC00007FFFF03FFFFFFF0000
FFFFF07FFFFFFF8000FFFFF0FE001FFFE000FFFFF1F80007FFF000FFFFF3F00003FFF800
FFFFF3E00001FFFC00FFFFF7C00000FFFE00FFFFFF8000007FFF00FFFFFF8000007FFF80
FFFFFF0000003FFFC0FFFFFF0000003FFFC0FFFFFE0000003FFFE0FFFFFE0000003FFFF0
FFFFFC0000003FFFF0FFFFFC0000001FFFF8FFFFFC0000001FFFF8FFFFF80000001FFFFC
FFFFF80000001FFFFCFFFFF80000001FFFFCFFFFF80000001FFFFCFFFFF80000001FFFFE
FFFFF00000001FFFFE7FFFF00000001FFFFE7FFFF00000001FFFFE7FFFF00000001FFFFE
7FFFF00000001FFFFE7FFFF00000001FFFFE7FFFF00000001FFFFE7FFFF00000001FFFFE
3FFFF00000001FFFFE3FFFF00000001FFFFE3FFFF00000001FFFFE3FFFF00000001FFFFE
1FFFF80000001FFFFE1FFFF80000001FFFFC1FFFF80000001FFFFC0FFFF80000001FFFFC
0FFFF80000001FFFFC0FFFF80000001FFFF807FFF80000001FFFF807FFF80000003FFFF8
03FFFC0000003FFFF003FFFC0000003FFFF001FFFC0000003FFFE000FFFE0000003FFFC0
00FFFE0000007FFFC0007FFF0000007FFF80003FFF000000FFFF00001FFF800000FFFE00
000FFFC00001FFFC000007FFF00007FFF8000003FFF8001FFFF0000001FFFF00FFFFC000
0000FFFFFFFFFF800000003FFFFFFFFF000000000FFFFFFFFC0000000003FFFFFFF00000
0000007FFFFF80000000000007FFF0000000476279E056>I<03F8000000000000000003
F8000000000000000007FC000000000000000007FF000000000000000007FFFFC0000000
00000007FFFFFFFFFFFFFFFFC007FFFFFFFFFFFFFFFFC007FFFFFFFFFFFFFFFFC00FFFFF
FFFFFFFFFFFFC00FFFFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFFF
800FFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFE000FFFFFFFFFFFFFFFFC001FFFFFFFFF
FFFFFFFC001FFFFFFFFFFFFFFFF8001FFFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFE0001F
FFFFFFFFFFFFFFC0001FFFFFFFFFFFFFFF80001FFFFFFFFFFFFFFF00003FFFFFFFFFFFFF
FE00003FFFFFFFFFFFFFFE00003FF8000000000FFC00003FE0000000001FF800003FC000
0000001FF000003FC0000000003FE000003F80000000007FC000007F8000000000FF8000
007F8000000001FF8000007F0000000003FF0000007F0000000007FE0000007F00000000
0FFC0000007F000000000FF80000007F000000001FF0000000FE000000003FE0000000FE
000000007FC0000000FE00000000FFC00000000000000001FF800000000000000001FF00
0000000000000003FE000000000000000007FE00000000000000000FFC00000000000000
000FF800000000000000001FF800000000000000003FF000000000000000003FF0000000
00000000007FE00000000000000000FFE00000000000000000FFE00000000000000001FF
C00000000000000001FFC00000000000000003FFC00000000000000007FF800000000000
000007FF80000000000000000FFF80000000000000000FFF80000000000000001FFF0000
0000000000001FFF00000000000000003FFF00000000000000003FFF0000000000000000
7FFF00000000000000007FFE00000000000000007FFE0000000000000000FFFE00000000
00000000FFFE0000000000000001FFFE0000000000000001FFFE0000000000000001FFFE
0000000000000003FFFE0000000000000003FFFE0000000000000003FFFC000000000000
0003FFFC0000000000000007FFFC0000000000000007FFFC0000000000000007FFFC0000
000000000007FFFC000000000000000FFFFC000000000000000FFFFC000000000000000F
FFFC000000000000000FFFFC000000000000000FFFFC000000000000000FFFFC00000000
0000001FFFFC000000000000001FFFFC000000000000001FFFFC000000000000001FFFFC
000000000000001FFFFC000000000000001FFFFC000000000000001FFFFC000000000000
001FFFFC000000000000001FFFFC000000000000001FFFFC000000000000001FFFFC0000
00000000001FFFFC000000000000000FFFF8000000000000000FFFF80000000000000007
FFF00000000000000003FFE00000000000000001FFC000000000000000003E0000000000
004A6677E456>I<0000000FFFF0000000000000FFFFFF800000000007FFFFFFF0000000
001FFFFFFFFC000000007FFFFFFFFF00000001FFFFFFFFFFC0000003FFF8007FFFE00000
07FF000007FFF000000FFC000001FFF800001FF00000007FFC00003FC00000003FFE0000
7FC00000001FFE00007F800000000FFF0000FF8000000007FF0001FF0000000007FF8001
FF0000000003FF8001FF0000000003FF8003FF0000000003FFC003FF0000000001FFC003
FF0000000001FFC007FF8000000001FFC007FF8000000001FFC007FFC000000001FFC007
FFE000000001FFC007FFF000000001FFC007FFFC00000001FFC007FFFF00000003FF8007
FFFFC0000003FF8007FFFFE0000003FF8007FFFFF8000007FF0007FFFFFE000007FF0003
FFFFFF80000FFE0003FFFFFFC0001FFE0003FFFFFFF0001FFC0001FFFFFFFC003FF80001
FFFFFFFF007FF00000FFFFFFFF81FFE00000FFFFFFFFE3FFC000007FFFFFFFFFFF000000
3FFFFFFFFFFE0000003FFFFFFFFFF80000001FFFFFFFFFE00000000FFFFFFFFFF0000000
07FFFFFFFFFC00000003FFFFFFFFFF00000001FFFFFFFFFF800000007FFFFFFFFFE00000
003FFFFFFFFFF00000003FFFFFFFFFF8000000FFFFFFFFFFFC000003FFFFFFFFFFFE0000
07FFFFFFFFFFFF00001FFF9FFFFFFFFF80003FFE07FFFFFFFFC0007FFC01FFFFFFFFC000
FFF800FFFFFFFFE001FFE0003FFFFFFFF003FFE0000FFFFFFFF007FFC00003FFFFFFF80F
FF800000FFFFFFF81FFF0000007FFFFFFC1FFF0000001FFFFFFC3FFE00000007FFFFFC3F
FE00000001FFFFFE7FFE00000000FFFFFE7FFC000000003FFFFE7FFC000000000FFFFEFF
FC0000000007FFFEFFF80000000003FFFEFFF80000000001FFFEFFF80000000000FFFEFF
F80000000000FFFEFFF800000000007FFEFFF800000000007FFEFFF800000000003FFEFF
F800000000003FFCFFF800000000003FFCFFFC00000000003FFC7FFC00000000003FF87F
FC00000000003FF87FFC00000000003FF87FFE00000000007FF03FFE00000000007FF03F
FF0000000000FFE01FFF8000000000FFC00FFF8000000001FFC00FFFC000000003FF8007
FFF000000007FF0003FFF80000000FFE0001FFFE0000007FFC0000FFFFC00001FFF80000
3FFFFC003FFFE000001FFFFFFFFFFFC0000007FFFFFFFFFF00000001FFFFFFFFFC000000
003FFFFFFFF00000000007FFFFFF0000000000001FFFE0000000476279E056>I<000000
0FFFE0000000000001FFFFFE00000000000FFFFFFFC0000000003FFFFFFFF000000000FF
FFFFFFFC00000003FFFFFFFFFE00000007FFFE00FFFF0000000FFFF0003FFFC000003FFF
C0000FFFE000007FFF800007FFF00000FFFF000003FFF80001FFFE000001FFF80003FFFC
000000FFFC0007FFFC000000FFFE0007FFFC0000007FFF000FFFF80000007FFF001FFFF8
0000007FFF801FFFF80000003FFF803FFFF80000003FFFC03FFFF00000003FFFC03FFFF0
0000003FFFE07FFFF00000003FFFE07FFFF00000003FFFE07FFFF00000003FFFF07FFFF0
0000003FFFF0FFFFF00000001FFFF0FFFFF00000001FFFF8FFFFF00000001FFFF8FFFFF0
0000001FFFF8FFFFF00000001FFFF8FFFFF00000001FFFFCFFFFF00000001FFFFCFFFFF0
0000001FFFFCFFFFF00000001FFFFCFFFFF00000001FFFFCFFFFF00000001FFFFCFFFFF0
0000001FFFFCFFFFF00000001FFFFEFFFFF00000003FFFFE7FFFF00000003FFFFE7FFFF0
0000003FFFFE7FFFF00000003FFFFE7FFFF00000003FFFFE3FFFF00000007FFFFE3FFFF0
0000007FFFFE1FFFF80000007FFFFE1FFFF8000000FFFFFE0FFFF8000000FFFFFE07FFF8
000001FFFFFE07FFF8000001FFFFFE03FFFC000003FFFFFE01FFFC000003FFFFFE00FFFE
000007DFFFFE007FFF00000F9FFFFE003FFF80001F9FFFFE001FFFC0003F1FFFFE000FFF
F000FE1FFFFE0003FFFFFFFC1FFFFE0001FFFFFFF81FFFFC00007FFFFFF01FFFFC00000F
FFFFC01FFFFC000001FFFF001FFFFC0000000060001FFFFC0000000000001FFFFC000000
0000001FFFF80000000000003FFFF80000000000003FFFF80000000000003FFFF8000000
0000003FFFF00000000000003FFFF0007FC00000003FFFF000FFE00000003FFFE001FFF0
0000003FFFE003FFF80000007FFFC007FFFC0000007FFFC007FFFC0000007FFF800FFFFE
0000007FFF800FFFFE000000FFFF000FFFFE000000FFFF000FFFFE000001FFFE000FFFFE
000001FFFC000FFFFE000003FFFC000FFFFC000003FFF8000FFFFC000007FFF00007FFF8
000007FFE00007FFF000000FFFC00007FFE000001FFF800003FFC000007FFF000001FE00
0000FFFE000001FF800003FFFC000000FFE0000FFFF80000007FFE007FFFE00000003FFF
FFFFFFC00000001FFFFFFFFF0000000007FFFFFFFC0000000001FFFFFFE000000000007F
FFFF00000000000007FFE000000000476279E056>I<00000000000001FC000000000000
0000000000000003FE0000000000000000000000000007FF000000000000000000000000
0007FF000000000000000000000000000FFF800000000000000000000000000FFF800000
000000000000000000000FFF800000000000000000000000001FFFC00000000000000000
000000001FFFC00000000000000000000000003FFFE00000000000000000000000003FFF
E00000000000000000000000007FFFF00000000000000000000000007FFFF00000000000
000000000000007FFFF0000000000000000000000000FFFFF80000000000000000000000
00FFFFF8000000000000000000000001FFFFFC000000000000000000000001FFFFFC0000
00000000000000000001FFFFFC000000000000000000000003FFFFFE0000000000000000
00000003FFFFFE000000000000000000000007FFFFFF000000000000000000000007FFFF
FF000000000000000000000007FFFFFF00000000000000000000000FFFFFFF8000000000
0000000000000FFFFFFF80000000000000000000001FFFFFFFC000000000000000000000
1FFFFFFFC0000000000000000000003FE7FFFFC0000000000000000000003FE7FFFFE000
0000000000000000003FC3FFFFE0000000000000000000007FC3FFFFF000000000000000
0000007FC3FFFFF000000000000000000000FF81FFFFF800000000000000000000FF81FF
FFF800000000000000000000FF00FFFFF800000000000000000001FF00FFFFFC00000000
000000000001FE00FFFFFC00000000000000000003FE007FFFFE00000000000000000003
FE007FFFFE00000000000000000003FC003FFFFE00000000000000000007FC003FFFFF00
000000000000000007F8003FFFFF0000000000000000000FF8001FFFFF80000000000000
00000FF8001FFFFF8000000000000000000FF0000FFFFF8000000000000000001FF0000F
FFFFC000000000000000001FE0000FFFFFC000000000000000003FE00007FFFFE0000000
00000000003FE00007FFFFE000000000000000007FC00003FFFFF000000000000000007F
C00003FFFFF000000000000000007F800001FFFFF00000000000000000FF800001FFFFF8
0000000000000000FF000001FFFFF80000000000000001FF000000FFFFFC000000000000
0001FF000000FFFFFC0000000000000001FE0000007FFFFC0000000000000003FE000000
7FFFFE0000000000000003FC0000007FFFFE0000000000000007FC0000003FFFFF000000
0000000007FC0000003FFFFF0000000000000007F80000001FFFFF000000000000000FF8
0000001FFFFF800000000000000FF00000001FFFFF800000000000001FF00000000FFFFF
C00000000000001FF00000000FFFFFC00000000000001FE000000007FFFFC00000000000
003FFFFFFFFFFFFFFFE00000000000003FFFFFFFFFFFFFFFE00000000000007FFFFFFFFF
FFFFFFF00000000000007FFFFFFFFFFFFFFFF0000000000000FFFFFFFFFFFFFFFFF80000
00000000FFFFFFFFFFFFFFFFF8000000000000FFFFFFFFFFFFFFFFF8000000000001FF00
00000000FFFFFC000000000001FE0000000000FFFFFC000000000003FE00000000007FFF
FE000000000003FE00000000007FFFFE000000000003FC00000000003FFFFE0000000000
07FC00000000003FFFFF000000000007F800000000003FFFFF00000000000FF800000000
001FFFFF80000000000FF800000000001FFFFF80000000000FF000000000000FFFFF8000
0000001FF000000000000FFFFFC0000000001FE000000000000FFFFFC0000000003FE000
0000000007FFFFE0000000003FE0000000000007FFFFE0000000003FC0000000000003FF
FFE0000000007FC0000000000003FFFFF0000000007F80000000000001FFFFF000000000
FF80000000000001FFFFF800000000FF80000000000001FFFFF800000001FF0000000000
0000FFFFFC00000001FF00000000000000FFFFFC0000000FFFF00000000000007FFFFC00
00FFFFFFFFF80000001FFFFFFFFFFFF8FFFFFFFFF80000001FFFFFFFFFFFF8FFFFFFFFF8
0000001FFFFFFFFFFFF8FFFFFFFFF80000001FFFFFFFFFFFF8FFFFFFFFF80000001FFFFF
FFFFFFF8FFFFFFFFF80000001FFFFFFFFFFFF8FFFFFFFFF80000001FFFFFFFFFFFF87568
7AE782>65 D<FFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFC00000000FFFF
FFFFFFFFFFFFFFFF80000000FFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFFFFF
FC000000FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFC000000000FFFF
E00000001FFFFFE000000000FFFFE000000003FFFFF800000000FFFFE000000000FFFFFC
00000000FFFFE0000000007FFFFE00000000FFFFE0000000001FFFFF00000000FFFFE000
0000001FFFFF00000000FFFFE0000000000FFFFF80000000FFFFE00000000007FFFFC000
0000FFFFE00000000007FFFFC0000000FFFFE00000000003FFFFE0000000FFFFE0000000
0003FFFFE0000000FFFFE00000000001FFFFF0000000FFFFE00000000001FFFFF0000000
FFFFE00000000001FFFFF0000000FFFFE00000000001FFFFF8000000FFFFE00000000001
FFFFF8000000FFFFE00000000000FFFFF8000000FFFFE00000000000FFFFF8000000FFFF
E00000000000FFFFF8000000FFFFE00000000000FFFFF8000000FFFFE00000000000FFFF
F8000000FFFFE00000000000FFFFF8000000FFFFE00000000001FFFFF8000000FFFFE000
00000001FFFFF0000000FFFFE00000000001FFFFF0000000FFFFE00000000001FFFFF000
0000FFFFE00000000001FFFFF0000000FFFFE00000000003FFFFE0000000FFFFE0000000
0003FFFFE0000000FFFFE00000000007FFFFC0000000FFFFE00000000007FFFF80000000
FFFFE0000000000FFFFF80000000FFFFE0000000001FFFFF00000000FFFFE0000000001F
FFFE00000000FFFFE0000000003FFFFC00000000FFFFE000000000FFFFF800000000FFFF
E000000001FFFFE000000000FFFFE000000007FFFFC000000000FFFFE00000001FFFFF00
00000000FFFFE0000001FFFFFC0000000000FFFFFFFFFFFFFFFFE00000000000FFFFFFFF
FFFFFFFF000000000000FFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFF8000000
0000FFFFFFFFFFFFFFFFFF0000000000FFFFE000000003FFFFC000000000FFFFE0000000
007FFFF000000000FFFFE0000000001FFFFC00000000FFFFE0000000000FFFFE00000000
FFFFE00000000007FFFF80000000FFFFE00000000003FFFFC0000000FFFFE00000000001
FFFFE0000000FFFFE00000000000FFFFF0000000FFFFE00000000000FFFFF8000000FFFF
E000000000007FFFFC000000FFFFE000000000007FFFFC000000FFFFE000000000003FFF
FE000000FFFFE000000000003FFFFE000000FFFFE000000000001FFFFF000000FFFFE000
000000001FFFFF000000FFFFE000000000001FFFFF800000FFFFE000000000001FFFFF80
0000FFFFE000000000001FFFFF800000FFFFE000000000000FFFFFC00000FFFFE0000000
00000FFFFFC00000FFFFE000000000000FFFFFC00000FFFFE000000000000FFFFFC00000
FFFFE000000000000FFFFFC00000FFFFE000000000000FFFFFC00000FFFFE00000000000
0FFFFFC00000FFFFE000000000000FFFFFC00000FFFFE000000000000FFFFFC00000FFFF
E000000000001FFFFFC00000FFFFE000000000001FFFFF800000FFFFE000000000001FFF
FF800000FFFFE000000000001FFFFF800000FFFFE000000000003FFFFF000000FFFFE000
000000003FFFFF000000FFFFE000000000003FFFFF000000FFFFE000000000007FFFFE00
0000FFFFE00000000000FFFFFE000000FFFFE00000000000FFFFFC000000FFFFE0000000
0001FFFFF8000000FFFFE00000000003FFFFF8000000FFFFE00000000007FFFFF0000000
FFFFE0000000001FFFFFE0000000FFFFE0000000003FFFFFC0000000FFFFE000000000FF
FFFF80000000FFFFE00000000FFFFFFE0000FFFFFFFFFFFFFFFFFFFFFFFC0000FFFFFFFF
FFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFFFFFC00000FFFFFFFFFFFFFFFFFFFFFF00
0000FFFFFFFFFFFFFFFFFFFFF8000000FFFFFFFFFFFFFFFFFFFFC0000000FFFFFFFFFFFF
FFFFFFF0000000006A677AE67A>I E /Fq 24 122 df<70F8F8F8700000000000000000
00000070F8F8F87005157C940E>58 D<FFFC001F80000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00010F00010F00010F00010F00030F00030F00020F00060F00
060F001E1F007EFFFFFE18227DA11E>76 D<FFC00003FF0FC00003F007C00003E005E000
05E005E00005E004F00009E004F00009E004F00009E004780011E004780011E004780011
E0043C0021E0043C0021E0043C0021E0041E0041E0041E0041E0040F0081E0040F0081E0
040F0081E004078101E004078101E004078101E00403C201E00403C201E00401E401E004
01E401E00401E401E00400F801E00400F801E00400F801E004007001E00E007001E01F00
7003F0FFE0203FFF28227EA12D>I<FFFFF0000F803C0007800F0007800780078007C007
8003C0078003E0078003E0078003E0078003E0078003E0078003E0078003C0078007C007
80078007800F0007803C0007FFF000078000000780000007800000078000000780000007
80000007800000078000000780000007800000078000000780000007800000078000000F
C00000FFFC00001B227EA121>80 D<FFF0007FC01F80001F000F00000C000F80000C0007
80000800078000080003C000100003C000100003C000100001E000200001E000200001F0
00600000F000400000F000400000780080000078008000007C008000003C010000003C01
0000001E020000001E020000001E020000000F040000000F040000000F8C000000078800
0000078800000003D000000003D000000003F000000001E000000001E000000000C00000
0000C000000000C0000022237FA125>86 D<1FE000303800780C00780E00300700000700
00070000070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F08
7817083C23900FC1E015157E9418>97 D<01FE000703000C07801C078038030078000070
0000F00000F00000F00000F00000F00000F00000F000007000007800403800401C00800C
010007060001F80012157E9416>99 D<0000E0000FE00001E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E001F8E00704E00C02E01C01E03800
E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03800
E01801E00C02E0070CF001F0FE17237EA21B>I<01FC000707000C03801C01C03801C078
01E07000E0F000E0FFFFE0F00000F00000F00000F00000F000007000007800203800201C
00400E008007030000FC0013157F9416>I<003E0000E30001C780038780030780070000
070000070000070000070000070000070000070000070000FFF800070000070000070000
070000070000070000070000070000070000070000070000070000070000070000070000
0700000700000700000780007FF000112380A20F>I<00007003F1980E1E181C0E183807
003807007807807807807807807807803807003807001C0E001E1C0033F0002000002000
003000003800003FFE001FFFC00FFFE03000F0600030C00018C00018C00018C000186000
306000303800E00E038003FE0015217F9518>I<0E0000FE00001E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E00000E00000E1F800E60C00E80E00F
00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E
00700E00700E00700E00700E0070FFE7FF18237FA21B>I<1C003E003E003E001C000000
00000000000000000000000000000E007E001E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E00FFC00A227FA10E>I<0E0000FE00001E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E03FC
0E01F00E01C00E01800E02000E04000E08000E10000E38000EF8000F1C000E1E000E0E00
0E07000E07800E03C00E01C00E01E00E00F00E00F8FFE3FE17237FA21A>107
D<0E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B
237FA20E>I<0E1FC07F00FE60E183801E807201C00F003C00E00F003C00E00E003800E0
0E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E
003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0FFE3
FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E00
700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7
FF18157F941B>I<01FC000707000C01801800C03800E0700070700070F00078F00078F0
0078F00078F00078F00078F000787000707800F03800E01C01C00E038007070001FC0015
157F9418>I<0E1F00FE61C00E80600F00700E00380E003C0E003C0E001E0E001E0E001E
0E001E0E001E0E001E0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F000E0000
0E00000E00000E00000E00000E00000E00000E00000E0000FFE000171F7F941B>I<0E3C
FE461E8F0F0F0F060F000E000E000E000E000E000E000E000E000E000E000E000E000E00
0F00FFF010157F9413>114 D<0F8830786018C018C008C008E008F0007F003FE00FF001
F8003C801C800C800CC00CC008E018D0308FC00E157E9413>I<02000200020002000600
060006000E001E003E00FFFC0E000E000E000E000E000E000E000E000E000E000E000E04
0E040E040E040E040E040708030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E
00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E
00F00E00F006017003827800FC7F18157F941B>I<FF80FE1E00781E00300E00200E0020
0700400700400780C003808003808001C10001C10000E20000E20000E200007400007400
003800003800003800001000001000002000002000002000004000F04000F08000F18000
4300003C0000171F7F941A>121 D E /Fr 69 124 df<003FE3F801F03F1C03C03E3E07
C07C3E0F807C3E0F807C1C0F807C000F807C000F807C000F807C000F807C00FFFFFFC0FF
FFFFC00F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F
807C000F807C000F807C000F807C000F807C000F807C007FE1FF807FE1FF801F1D809C1C
>11 D<003FC00001F0300003C0380007C07C000F807C000F807C000F8038000F8000000F
8000000F8000000F800000FFFFFC00FFFFFC000F807C000F807C000F807C000F807C000F
807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F
807C007FE1FF807FE1FF80191D809C1B>I<003FC1FE0001F03F818003C03E01C007C07E
03E00F807C03E00F807C03E00F807C01C00F807C00000F807C00000F807C00000F807C00
00FFFFFFFFE0FFFFFFFFE00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E0
0F807C03E00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E00F
807C03E00F807C03E07FE1FF0FFC7FE1FF0FFC261D809C28>14 D<78FCFCFEFE7A020204
0408081060070E7D9C0D>39 D<FFF8FFF8FFF8FFF80D04808A10>45
D<78FCFCFCFC7806067D850D>I<000180000380000380000700000700000700000E0000
0E00001C00001C00001C0000380000380000380000700000700000E00000E00000E00001
C00001C00001C0000380000380000380000700000700000E00000E00000E00001C00001C
00001C0000380000380000700000700000700000E00000E00000C0000011297D9E18>I<
03F8000F1E001C07003C07803803807803C07803C07803C0F803E0F803E0F803E0F803E0
F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E07803C07803C03803803C0780
1C07000F1E0003F800131B7E9A18>I<00600001E0000FE000FFE000F3E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E0007FFF807FFF80111B7D9A18>I<07F8001F
FE00383F80780FC0FC07C0FC07E0FC03E0FC03E07803E00007E00007C00007C0000F8000
1F00001E0000380000700000E0000180600300600600600800E01FFFC03FFFC07FFFC0FF
FFC0FFFFC0131B7E9A18>I<07F8001FFE003C1F003C0F807C07C07E07C07C07C03807C0
000F80000F80001E00003C0003F800001E00000F800007C00007C00007E03007E07807E0
FC07E0FC07E0FC07C0780F80781F001FFE0007F800131B7E9A18>I<0001800003800007
80000F80001F80003F80006F8000CF80008F80018F80030F80060F800C0F80180F80300F
80600F80C00F80FFFFF8FFFFF8000F80000F80000F80000F80000F80000F8000FFF800FF
F8151B7F9A18>I<3801803FFF003FFE003FFC003FF8003FC00030000030000030000030
000031F800361E00380F803007800007C00007E00007E00007E07807E0F807E0F807E0F8
07C0F007C0600F80381F001FFE0007F000131B7E9A18>I<007E0003FF000781800F03C0
1E07C03C07C07C0380780000780000F80000F8F800FB0E00FA0780FC0380FC03C0F803E0
F803E0F803E0F803E07803E07803E07803C03C03C03C07801E0F0007FE0003F800131B7E
9A18>I<6000007FFFE07FFFE07FFFC07FFF807FFF80E00300C00600C00C00C018000030
0000300000600000E00000E00001E00001C00003C00003C00003C00003C00007C00007C0
0007C00007C00007C00007C000038000131C7D9B18>I<03F8000FFE001E0F8038078038
03C07803C07C03C07E03C07F83803FC7003FFE001FFC000FFE0007FF001DFF80387FC078
1FE0700FE0F003E0F001E0F001E0F001E07801C07803803E07801FFE0003F800131B7E9A
18>I<03F8000FFE001E0F003C07807807807803C0F803C0F803C0F803E0F803E0F803E0
F803E07807E03807E03C0BE00E1BE003E3E00003E00003C00003C03807C07C07807C0700
780F00383C001FF8000FE000131B7E9A18>I<78FCFCFCFC7800000000000078FCFCFCFC
7806127D910D>I<FFFFFFFCFFFFFFFC7FFFFFFC00000000000000000000000000000000
0000000000000000000000007FFFFFFCFFFFFFFCFFFFFFFC1E0D7D9025>61
D<0FF0303C601EF01FF81FF81F701F003E003C007000E001C00180018003000300030003
000300000000000000000007800FC00FC00FC00FC00780101D7D9C17>63
D<001FE00000E01C0003000300060001800C0000C018000060300FC0302038601060F010
1860F01F18C1E01F0CC1E01F0CC3E01F0CC3E01F0CC3E01F0CC3E01F0CC3E01F0CC1E01F
0CC1E01F0C60F01F0860F01F1820386F10300FC7E0180000000C00000006000000030000
3C00E007F0001FFC001E1D7D9C25>I<00038000000380000007C0000007C0000007C000
000FE000000FE000001FF000001BF000003BF8000031F8000031F8000060FC000060FC00
00E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF8003001F8007001FC006000FC0
06000FC00C0007E00C0007E0FF803FFEFF803FFE1F1C7E9B24>I<FFFFF800FFFFFF000F
C01F800FC00FC00FC007C00FC007E00FC007E00FC007E00FC007E00FC007E00FC007C00F
C00F800FC03F000FFFFE000FC00F800FC007C00FC003E00FC003E00FC003F00FC003F00F
C003F00FC003F00FC003F00FC007E00FC007E00FC01FC0FFFFFF00FFFFFC001C1C7E9B22
>I<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E0000607E00
00607C000060FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00
00007C0000607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E0000FF
FC00001FE0001B1C7D9B22>I<FFFFF800FFFFFF000FC01FC00FC007E00FC001F00FC001
F80FC000F80FC000FC0FC0007C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC000
7E0FC0007E0FC0007E0FC0007E0FC0007C0FC0007C0FC0007C0FC000F80FC000F80FC001
F00FC007E00FC01FC0FFFFFF00FFFFF8001F1C7E9B25>I<FFFFFF00FFFFFF000FC01F00
0FC007000FC003000FC003800FC003800FC0C1800FC0C1800FC0C1800FC1C0000FC3C000
0FFFC0000FFFC0000FC3C0000FC1C0000FC0C0000FC0C0600FC0C0600FC000E00FC000C0
0FC000C00FC001C00FC001C00FC003C00FC00F80FFFFFF80FFFFFF801B1C7E9B1F>I<FF
FFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003800FC001800FC0C1800F
C0C1800FC0C0000FC1C0000FC3C0000FFFC0000FFFC0000FC3C0000FC1C0000FC0C0000F
C0C0000FC0C0000FC000000FC000000FC000000FC000000FC000000FC00000FFFE0000FF
FE0000191C7E9B1E>I<000FF008007FFE3801FC07F807E001F80F8000781F0000783F00
00383E0000387E0000187C000018FC000000FC000000FC000000FC000000FC000000FC00
0000FC007FFFFC007FFF7C0001F87E0001F83E0001F83F0001F81F0001F80F8001F807E0
01F801FC07F8007FFE78000FF818201C7D9B26>I<FFFC3FFFFFFC3FFF0FC003F00FC003
F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FFFFF
F00FFFFFF00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003
F00FC003F00FC003F00FC003F00FC003F0FFFC3FFFFFFC3FFF201C7E9B25>I<FFFCFFFC
0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0
0FC00FC00FC00FC00FC00FC0FFFCFFFC0E1C7E9B12>I<FFFE00FFFE000FC0000FC0000F
C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F
C0000FC0030FC0030FC0030FC0070FC0070FC0060FC00E0FC01E0FC07EFFFFFEFFFFFE18
1C7E9B1D>76 D<FFC00003FFFFE00007FF0FE00007F00DF0000DF00DF0000DF00DF0000D
F00CF80019F00CF80019F00C7C0031F00C7C0031F00C3E0061F00C3E0061F00C1F00C1F0
0C1F00C1F00C1F00C1F00C0F8181F00C0F8181F00C07C301F00C07C301F00C03E601F00C
03E601F00C01FC01F00C01FC01F00C01FC01F00C00F801F00C00F801F0FFC0701FFFFFC0
701FFF281C7E9B2D>I<FFE003FFFFE003FF0FF000300FF800300DFC00300CFE00300C7E
00300C3F00300C1F80300C1FC0300C0FE0300C07F0300C03F0300C01F8300C01FC300C00
FE300C007F300C003F300C001FB00C001FF00C000FF00C0007F00C0003F00C0001F00C00
00F00C0000F0FFC00070FFC00030201C7E9B25>I<003FE00001F07C0003C01E000F800F
801F0007C01E0003C03E0003E07E0003F07C0001F07C0001F0FC0001F8FC0001F8FC0001
F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F87C0001F07E0003F07E0003F03E0003
E03F0007E01F0007C00F800F8003C01E0001F07C00003FE0001D1C7D9B24>I<FFFFF800
FFFFFE000FC03F800FC00F800FC007C00FC007E00FC007E00FC007E00FC007E00FC007E0
0FC007C00FC007C00FC00F800FC03F000FFFFC000FC000000FC000000FC000000FC00000
0FC000000FC000000FC000000FC000000FC000000FC000000FC00000FFFC0000FFFC0000
1B1C7E9B21>I<FFFFF00000FFFFFE00000FC03F00000FC00F80000FC007C0000FC007E0
000FC007E0000FC007E0000FC007E0000FC007E0000FC007C0000FC00F80000FC03E0000
0FFFF000000FC07C00000FC03E00000FC03F00000FC01F80000FC01F80000FC01F80000F
C01F80000FC01F80000FC01F80000FC01F81800FC01F81800FC00FC180FFFC07C300FFFC
01FE00211C7E9B24>82 D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F8
0000FE0000FFE0007FFE003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C0
00F0C000F0C000E0E000E0F001C0FC03C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFF
FFE0781F81E0701F80E0601F8060E01F8070C01F8030C01F8030C01F8030C01F8030001F
8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
8000001F8000001F8000001F8000001F8000001F8000001F800007FFFE0007FFFE001C1C
7E9B21>I<FFFC03FFFFFC03FF0FC000300FC000300FC000300FC000300FC000300FC000
300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000
300FC000300FC000300FC000300FC0003007C0003007C0006003E000E001F001C000FC07
80007FFE00000FF800201C7E9B25>I<FFFC01FF80FFFC01FF800FC00018000FE0003800
07E000300007F000700003F000600003F800600001F800C00001F800C00000FC01800000
FC01800000FE038000007E030000007F070000003F060000003F860000001F8C0000001F
8C0000000FD80000000FD80000000FF800000007F000000007F000000003E000000003E0
00000001C000000001C00000211C7F9B24>I<FFF87FFE0FFCFFF87FFE0FFC0FC007E000
C00FC007F000C00FE003F001C007E003F0018007E007F8018007F007F8038003F00FFC03
0003F00CFC030001F80CFC060001F81CFE060001FC187E0E0000FC187E0C0000FC303F0C
0000FE303F1C00007E703F9800007E601F9800003F601FB000003FE01FF000003FC00FF0
00001FC00FE000001F8007E000001F8007E000000F8007C000000F0003C0000007000380
000007000380002E1C7F9B31>I<7FFE1FFE007FFE1FFE0007F001800003F803800001F8
07000001FC06000000FE0C0000007F1C0000003F380000003FB00000001FE00000000FE0
0000000FE000000007F000000003F800000007F80000000FFC0000000CFE000000187E00
0000387F000000703F800000601FC00000C01FC00001C00FE000038007F000030003F000
FFF01FFF80FFF01FFF80211C7F9B24>I<0FF8001C1E003E0F803E07803E07C01C07C000
07C0007FC007E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F80FE1F815
127F9117>97 D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00
001F00001F3F801FE1E01F80701F00781F003C1F003C1F003E1F003E1F003E1F003E1F00
3E1F003E1F003C1F003C1F00781F80701EC1E01C3F00171D7F9C1B>I<03FC000E0E001C
1F003C1F00781F00780E00F80000F80000F80000F80000F80000F800007800007801803C
01801C03000E0E0003F80011127E9115>I<000FF0000FF00001F00001F00001F00001F0
0001F00001F00001F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F801F0
F801F0F801F0F801F0F801F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E
9C1B>I<03FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F800
00F800007800007800603C00601E00C00F038001FC0013127F9116>I<007F0001E38003
C7C00787C00F87C00F83800F80000F80000F80000F80000F8000FFF800FFF8000F80000F
80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F
80007FF0007FF000121D809C0F>I<03F0F00E1F383C0F38380730780780780780780780
7807803807003C0F001E1C0033F0003000003000003000003FFF003FFFC01FFFE01FFFF0
7801F8F00078F00078F000787000707800F01E03C007FF00151B7F9118>I<FF0000FF00
001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FC01F31E01F40
F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F8FFE7FFFFE7FF181D7F9C1B>I<1E003F003F003F003F001E0000000000000000
00000000007F007F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
00FFC0FFC00A1E7F9D0E>I<007800FC00FC00FC00FC0078000000000000000000000000
03FC03FC007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C
007C007C707CF87CF878F8F070E01F800E26839D0F>I<FF0000FF00001F00001F00001F
00001F00001F00001F00001F00001F00001F00001F03FC1F03FC1F01C01F03001F0E001F
1C001F38001F78001FFC001FBE001F1F001F0F001F0F801F07C01F03E01F01E0FFE7FEFF
E7FE171D7F9C19>I<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1D7F9C0E
>I<FF0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C01F00F807
C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C0
1F00F807C01F00F807C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF0FC0FF31E01F40F0
1F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8
1F00F8FFE7FFFFE7FF18127F911B>I<01FC000F07801C01C03C01E07800F07800F0F800
F8F800F8F800F8F800F8F800F8F800F87800F07800F03C01E01E03C00F078001FC001512
7F9118>I<FF3F80FFE1E01F80F01F00781F007C1F003C1F003E1F003E1F003E1F003E1F
003E1F003E1F003C1F007C1F00781F80F01FC1E01F3F001F00001F00001F00001F00001F
00001F0000FFE000FFE000171A7F911B>I<03F0600F0CE01E07E03C03E07C03E07803E0
F803E0F803E0F803E0F803E0F803E0F803E07803E07C03E03C03E01C07E00E0FE003F3E0
0003E00003E00003E00003E00003E00003E0001FFC001FFC161A7E9119>I<FE3E00FE47
001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F00001F00
001F00001F0000FFE000FFE00011127F9114>I<1FD830786018E018E018F000FF807FE0
7FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<030003000300030007
0007000F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F
0C0F08079803F00E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F00F81F01F80F01F80786FF01F8FF18127F91
1B>I<FFC1FCFFC1FC1F00601F80600F80C00F80C007C18007C18003E30003E30003F700
01F60001FE0000FC0000FC0000780000780000300016127F9119>I<FF8FF8FEFF8FF8FE
1F03E0301F03E0301F03E0300F87F0600F86F0600FC6F8E007CC78C007CC78C003FC7D80
03F83D8003F83F8001F01F0001F01F0000F01E0000E00E0000E00E001F127F9122>I<FF
C7FCFFC7FC1F81C00F838007C70003EE0001FC0001F80000F800007C0000FE0001DF0003
9F80070F800607C00C03E0FF07FCFF07FC16127F9119>I<FFC1FCFFC1FC1F00601F8060
0F80C00F80C007C18007C18003E30003E30003F70001F60001FE0000FC0000FC00007800
007800003000003000006000706000F8E000F8C000F980007300003E0000161A7F9119>
I<7FFF80781F00703F00603E00607C0060FC0060F80001F00003F00007E00007C1800F81
801F81801F03803E03007E07007C0F00FFFF0011127F9115>I<FFFFFE1701808B18>I
E /Fs 93 127 df<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600000000060F0F060041977
9816>33 D<E038F078F078F078F078F078F078F078E038E03860300D0B7C9816>I<0387
000387000387000387000387000387007FFFC0FFFFE0FFFFE0070E00070E00070E000E1C
000E1C000E1C000E1C00FFFFE0FFFFE07FFFC01C38001C38001C38001C38001C38001C38
0013197F9816>I<00C00001C00001C00001C00007F0001FFC003FFE007DCF0071C780E1
C380E1C780E1C780F1C30079C0003FC0001FF00007FC0001FE0001CF0001C70061C380F1
C380F1C380E1C38071C70079DF003FFE001FF80007E00001C00001C00000C00011207E9C
16>I<3801807C03807C0380EE0700EE0700EE0E00EE0E00EE0E00EE1C007C1C007C3800
38380000700000700000700000E00000E00001C00001C00001C0000380000383800707C0
0707C00E0EE00E0EE00E0EE01C0EE01C0EE03807C03807C018038013207F9C16>I<0380
0007E0000FE0001E70001C70001C70001C70001CF7E01CE7E01DC7E00FC7000F8E000F0E
001F0E003F1C007B9C00739C00E1F800E1F800E0F0E0E0F0E071F8E07FFFC03F9FC01E07
0013197F9816>I<30787C3C1C1C1C1C3878F0E040060D789816>I<00E001E0038007000E
001C001C0038003800700070007000E000E000E000E000E000E000E000E000E000700070
007000380038001C001C000E000700038001E000E00B217A9C16>I<C000E00070003800
1C000E000E000700070003800380038001C001C001C001C001C001C001C001C001C00380
03800380070007000E000E001C0038007000E000C0000A217B9C16>I<03800380038003
80E38EF39EFFFE3FF80FE00FE03FF8FFFEF39EE38E03800380038003800F127D9516>I<
00E00000E00000E00000E00000E00000E00000E00000E000FFFFE0FFFFE0FFFFE000E000
00E00000E00000E00000E00000E00000E00000E00013137F9516>I<387C7E7E3E0E1E1C
78F060070B798416>I<FFFF80FFFF80FFFF8011037E8D16>I<70F8F8F8700505788416>
I<000180000380000380000700000700000E00000E00001C00001C000038000038000070
0000700000E00000E00001C00001C0000380000380000700000700000E00000E00001C00
001C0000380000380000700000700000E00000E00000C0000011207E9C16>I<03E0000F
F8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E00380E00380E0
0380E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF80003E00011
197E9816>I<0300070007000F001F00FF00FF00E7000700070007000700070007000700
0700070007000700070007000700FFF8FFF8FFF80D197B9816>I<07E0001FF8003FFC00
783E00E00700F00780F00380600380000380000380000700000700000E00001C00003800
00700000E00001C0000380000F00001E03803803807FFF80FFFF807FFF8011197E9816>
I<07E0001FF8003FFC00781E00780700300700000700000700000E00003E0007FC0007F0
0007FC00001E00000700000300000380000380600380F00380E00700781E003FFC001FF8
0007E00011197E9816>I<007C0000FC0000DC0001DC00039C00039C00071C000F1C000E
1C001E1C003C1C00381C00781C00F01C00FFFFE0FFFFE0FFFFE0001C00001C00001C0000
1C00001C0001FFC001FFC001FFC013197F9816>I<3FFE007FFE007FFE00700000700000
70000070000070000070000070000077F0007FFC007FFE00780F00300700000380000380
600380F00380F00380E00700781E003FFC001FF80007E00011197E9816>I<00F80003FC
0007FE000F07001C0F00380F00780600700000700000E3F800EFFC00FFFE00F80F00F007
00F00380E00380E003807003807003807007803807003C1E001FFC000FF80003E0001119
7E9816>I<E00000FFFF80FFFF80FFFF80E00F00E01E00001C0000380000780000700000
E00000E00001C00001C00001C00003800003800003800003800007000007000007000007
0000070000070000070000111A7E9916>I<07F0001FFC003FFE007C1F00F00780E00380
E00380E003807007007C1F001FFC0007F0001FFC003C1E00700700F00780E00380E00380
E00380F007807007007C1F003FFE001FFC0007F00011197E9816>I<03E0000FF8001FFC
003C1E00700E00700700E00700E00780E00380E00380E00780700780780F803FFF801FFB
800FE380000700000700300700780E00781C00707C003FF8001FE0000F800011197E9816
>I<70F8F8F870000000000000000070F8F8F8700512789116>I<387C7C7C380000000000
00000038787C7C3C1C1C3870F0400618799116>I<000180000780001F80003E0000F800
01F00007C0000F80003E0000FC0000F00000FC00003E00000F800007C00001F00000F800
003E00001F8000078000018011157E9616>I<7FFFC0FFFFE0FFFFE00000000000000000
00000000000000FFFFE0FFFFE07FFFC0130B7F9116>I<C00000F00000FC00003E00000F
800007C00001F00000F800003E00001F80000780001F80003E0000F80001F00007C0000F
80003E0000FC0000F00000C0000011157E9616>I<0FF0003FFE007FFF00F00F80F00380
F00380600780001F00003E0000780000F00001C00001C00001C00001C00001C000018000
00000000000000000000000001800003C00003C00001800011197E9816>I<00F80003FC
0007FE000F07001C3B8038FF8079FF8073C7C07383C0E701C0E701C0E701C0E701C0E701
C0E701C0E701C073838073C78079FF0038FE001C38000F03C007FFC003FF0000FC001219
7E9816>I<00E00001F00001F00001B00001B00003B80003B80003B800031800071C0007
1C00071C00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007E
0FC0FF1FE07E0FC013197F9816>I<7FF800FFFE007FFF001C07001C07801C03801C0380
1C03801C03801C07001FFF001FFE001FFE001C1F001C03801C03C01C01C01C01C01C01C0
1C01C01C03C01C07807FFF80FFFF007FFC0012197F9816>I<01F18007FB800FFF801F0F
803C0780380380700380700380F00000E00000E00000E00000E00000E00000E00000E000
00F000007003807003803803803C07001F0F000FFE0007FC0001F00011197E9816>I<7F
F800FFFE007FFF001C0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00E01C
00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C0F807FFF00FFFE007F
F8001319809816>I<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C0000
1C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E0
1C00E07FFFE0FFFFE07FFFE013197F9816>I<7FFFE0FFFFE07FFFE01C00E01C00E01C00
E01C00E01C00001C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00
001C00001C00001C00001C00007F8000FFC0007F800013197F9816>I<01F18007FB800F
FF801F0F803C0780380380700380700380F00000E00000E00000E00000E00000E01FC0E0
1FE0E01FC0F003807003807007803807803C07801E0F800FFF8007FB8001F38013197F98
16>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC0
1FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0
FF8FF87F07F01519809816>I<7FFCFFFE7FFC0380038003800380038003800380038003
8003800380038003800380038003800380038003807FFCFFFE7FFC0F197D9816>I<01FF
0003FF8001FF00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C
00001C00001C00001C00001C00001C00001C00601C00F01C00F038007FF8007FF0001FC0
0011197E9816>I<7F0FE0FF8FF07F0FE01C07801C0F001C0E001C1C001C3C001C78001C
F0001CE0001DF0001FF0001FF8001F38001E1C001C1C001C0E001C0E001C07001C07001C
03807F07E0FF8FF07F07E01419809816>I<FF8000FFC000FF80001C00001C00001C0000
1C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0040
1C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE013197F9816>I<FC07E0FE0FE0FE0F
E03A0B803B1B803B1B803B1B803B1B803B1B803BBB8039B38039B38039B38039B38039F3
8038E38038E380380380380380380380380380380380FE0FE0FE0FE0FE0FE013197F9816
>I<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CE1C01CE1C01C61C01C
71C01C71C01C71C01C31C01C39C01C39C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF
87C07F03C01519809816>I<1FFC003FFE007FFF00780F00F00780E00380E00380E00380
E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780
F00780780F007FFF003FFE001FFC0011197E9816>I<7FF800FFFE007FFF001C0F801C03
801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FF8001C00001C00
001C00001C00001C00001C00001C00007F0000FF80007F000012197F9816>I<1FFC003F
FE007FFF00780F00F00780E00380E00380E00380E00380E00380E00380E00380E00380E0
0380E00380E00380E00380E00380E0E380E1E380F0F780787F007FFF003FFE001FFC0000
1C00001E00000E00000F00000700000700111F7E9816>I<7FF000FFFC007FFE001C0F00
1C07801C03801C03801C03801C03801C07801C0F001FFE001FFC001FFE001C0E001C0700
1C07001C07001C07001C07101C07381C07387F03F0FF83F07F01E01519809816>I<07E3
001FFF003FFF00781F00F00700E00700E00700E00000F000007800003F80001FF00007FC
0000FE00000F00000700000380000380600380E00380E00700F80F00FFFE00FFFC00C7F0
0011197E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00007FC000FFE0007FC0013197F9816>I<7F07F0FF8FF87F07F01C01C01C01C01C01C0
1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C0
1C01C00E03800E038007070007FF0003FE0000F8001519809816>I<FE0FE0FE0FE0FE0F
E03803803C07801C07001C07001C07001E0F000E0E000E0E000E0E000E0E00071C00071C
00071C00071C0003180003B80003B80003B80001B00001F00001F00000E00013197F9816
>I<7E03F0FF07F87E03F03800E03800E03800E03800E01C01C01C01C01C01C01C71C01C
F9C01CF9C01CD9C01CD9C00CD9800CD9800CD9800DDD800D8D800D8D800D8D80078F0007
8F000707001519809816>I<7F1F807F3FC07F1F800E1E000E1C00071C0007380003B800
03F00001F00001E00000E00001E00001F00003F00003B80007B800071C000F1C000E0E00
0E0E001C07007E0FC0FF1FE07E0FC013197F9816>I<FE0FE0FF1FE0FE0FE01C07001C07
000E0E000E0E00071C00071C00071C0003B80003B80001F00001F00000E00000E00000E0
0000E00000E00000E00000E00000E00003F80007FC0003F80013197F9816>I<7FFF80FF
FF80FFFF80E00700E00F00E01E00E01C00003C0000780000700000F00001E00001C00003
C0000780000700000F00001E03801C03803C0380780380700380FFFF80FFFF80FFFF8011
197E9816>I<FFF0FFF0FFF0E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFF0FFF0FFF00C20
789C16>I<C00000E00000E000007000007000003800003800001C00001C00000E00000E
000007000007000003800003800001C00001C00000E00000E00000700000700000380000
3800001C00001C00000E00000E0000070000070000038000038000018011207E9C16>I<
FFF0FFF0FFF0007000700070007000700070007000700070007000700070007000700070
00700070007000700070007000700070007000700070FFF0FFF0FFF00C207F9C16>I<03
000F803FE0FDF8F07840100D067C9816>I<FFFF80FFFF80FFFF8011037E7E16>I<1FE000
3FF0007FF800783C00300E00000E00000E0003FE001FFE003E0E00700E00E00E00E00E00
E00E00783E007FFFE03FE7E00F83E013127E9116>97 D<FC0000FC0000FC00001C00001C
00001C00001C00001C7C001DFE001FFF001F07801E03C01C01C01C00E01C00E01C00E01C
00E01C00E01C00E01C01C01E03C01F07801FFF001DFE000C780013197F9816>I<03F80F
FC1FFE3C1E780C7000E000E000E000E000E000F000700778073E0E1FFC0FF803F010127D
9116>I<003F00003F00003F0000070000070000070000070003C7000FF7001FFF003C1F
00780F00700700E00700E00700E00700E00700E00700E00700700F00780F003C1F001FFF
E00FF7E007C7E013197F9816>I<03F0000FFC001FFE003C0F00780700700380E00380FF
FF80FFFF80FFFF80E00000E000007003807803803E07801FFF0007FE0001F80011127E91
16>I<001E00007F0001FF8001C7800383000380000380007FFF00FFFF00FFFF00038000
0380000380000380000380000380000380000380000380000380000380000380007FFC00
FFFE007FFC0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E00380E00380E00380E
00380E001C1C000FF8001FF0001BE0003800001800001FFC001FFF003FFF807003C0E000
E0E000E0E000E0E000E07001C07C07C03FFF800FFE0003F800131C7F9116>I<FC0000FC
0000FC00001C00001C00001C00001C00001C78001DFC001FFE001F0F001E07001C07001C
07001C07001C07001C07001C07001C07001C07001C07001C0700FF8FE0FF9FE0FF8FE013
197F9816>I<03000780078003000000000000000000FF80FF80FF800380038003800380
03800380038003800380038003800380FFFCFFFEFFFC0F1A7C9916>I<00300078007800
3000000000000000000FF81FF80FF8003800380038003800380038003800380038003800
38003800380038003800380038003800386070F0F0FFE07FC03F800D237E9916>I<7E00
00FE00007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C
000E78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCFF07F87
F01419809816>I<7FC000FFC0007FC00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C0007FFF00FFFF807FFF0011197E9816>I<F9C380FFEFC0FFFFE03C78E03C78E03870E0
3870E03870E03870E03870E03870E03870E03870E03870E03870E0FE7CF8FE7CF8FE7CF8
1512809116>I<FC7800FDFC00FFFE001F0F001E07001C07001C07001C07001C07001C07
001C07001C07001C07001C07001C0700FF8FE0FF9FE0FF8FE013127F9116>I<03E0000F
F8001FFC003C1E00780F00700700E00380E00380E00380E00380E00380F0078070070078
0F003C1E001FFC000FF80003E00011127E9116>I<FC7C00FDFE00FFFF001F07801E03C0
1C01C01C00E01C00E01C00E01C00E01C00E01C00E01C01C01E03C01F07801FFF001DFE00
1C78001C00001C00001C00001C00001C00001C0000FF8000FF8000FF8000131B7F9116>
I<03E3800FF3801FFB803E0F80780780700780E00380E00380E00380E00380E00380E003
807007807807803C1F801FFB800FF38003E3800003800003800003800003800003800003
80001FF0003FF8001FF0151B7F9116>I<7F0FC0FF3FE07F7FE007F04007C00007800007
80000700000700000700000700000700000700000700000700007FFC00FFFC007FFC0013
127F9116>I<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00EF00EF81E
FFFCFFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF
000700000700000700000700000700000700000700000701000703800703800703800787
0003FE0001FC0000F80011177F9616>I<FC3F00FC3F00FC3F001C07001C07001C07001C
07001C07001C07001C07001C07001C07001C07001C07001C1F001FFFE00FF7E007C7E013
127F9116>I<7F1FC0FF9FE07F1FC01C07001C07000E0E000E0E000E0E00071C00071C00
071C00071C0003B80003B80003B80001F00001F00000E00013127F9116>I<FF1FE0FF1F
E0FF1FE038038038038038038038038039F38039F38019F30019B30019B30019B3001DB7
001D17001F1F000F1E000E0E0013127F9116>I<7F1FC07F3FC07F1FC00F1E00073C0003
B80003F00001F00000E00001E00001F00003B800073C00071C000E0E007F1FC0FF3FE07F
1FC013127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C00
071C00039C00039C0003980001B80001B80000F00000F00000F00000E00000E00000E000
01C00079C0007BC0007F80007F00003C0000131B7F9116>I<3FFFC07FFFC07FFFC07007
80700F00701E00003C0000780001F00003E0000780000F00001E01C03C01C07801C0FFFF
C0FFFFC0FFFFC012127F9116>I<001F80007F8000FF8001E00001C00001C00001C00001
C00001C00001C00001C00001C00001C00003C0007F8000FF0000FF00007F800003C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001E00000FF80007F8000
1F8011207E9C16>I<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
E0E0E0E0E00320779C16>I<7C0000FF0000FF800003C00001C00001C00001C00001C000
01C00001C00001C00001C00001C00001E00000FF00007F80007F8000FF0001E00001C000
01C00001C00001C00001C00001C00001C00001C00001C00003C000FF8000FF00007C0000
11207E9C16>I<1C303F78FFF8F7E061C00D057C9816>I E /Ft 12
125 df<FFFFFF80FFFFFF8019027D8A20>0 D<400020C000606000C03001801803000C06
00060C0003180001B00000E00000E00001B000031800060C000C06001803003001806000
C0C0006040002013147A9320>2 D<0300030003000300C30CE31C73381FE0078007801F
E07338E31CC30C03000300030003000E127D9215>I<03C00FF01FF83FFC7FFE7FFEFFFF
FFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C010107E9115>15 D<00000180000007800000
1E00000078000001E00000078000001E00000078000001E00000078000001E0000007800
0000E0000000780000001E0000000780000001E0000000780000001E0000000780000001
E0000000780000001E000000078000000180000000000000000000000000000000000000
000000000000000000007FFFFF00FFFFFF8019227D9920>20 D<C0000000F00000003C00
00000F00000003C0000000F00000003C0000000F00000003C0000000F00000003C000000
0F000000038000000F0000003C000000F0000003C000000F0000003C000000F0000003C0
00000F0000003C00000070000000C0000000000000000000000000000000000000000000
000000000000000000007FFFFF00FFFFFF8019227D9920>I<0000003000000000180000
0000180000000018000000000C000000000C000000000600000000030000000003800000
0000C0FFFFFFFFF8FFFFFFFFF800000000C0000000038000000003000000000600000000
0C000000000C00000000180000000018000000001800000000300025167E942A>33
D<00018000000180000003C0000003C0000006600000066000000C3000000C3000001818
0000300C0000300C00006006000060060000C0030000C003000180018001800180030000
C0030000C006000060060000600C00003018000018180000183000000C3000000C600000
0660000006FFFFFFFF7FFFFFFF201E7E9D25>52 D<003C00E001C0018003800380038003
80038003800380038003800380038003800380030007001C00F0001C0007000300038003
8003800380038003800380038003800380038003800380018001C000E0003C0E297D9E15
>102 D<F0001C0007000300038003800380038003800380038003800380038003800380
0380018001C000E0003C00E001C001800380038003800380038003800380038003800380
038003800380030007001C00F0000E297D9E15>I<1F00308070406060E0E0E0E0E040E0
0060007000300018001C003300718061C0E0C0E0E0E0E0E0E060E070C031C01980070003
00018001C000C000E040E0E0E0E0E0C0C041C021801F000B257D9C12>120
D<000FC000001FE000003FF000007FF800007FF80000FFFC0000FFFC0000FFFC0000FFFC
0000FFFC0000FFFC00007FF800007FF800003FF000001FE0000F3FF3C01FFFFFE03FFFFF
F07FFFFFF87FFFFFF8FFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC7FF13F
F87FF33FF83FF33FF01FE31FE00FC30FC0000300000007800000078000000780001E237F
9D21>124 D E /Fu 72 124 df<00FE7C0381C60603CE0E03841C03801C03801C03801C
03801C03801C0380FFFFF01C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C03801C03801C0380FF8FF0171A809916>11
D<00FE000381000601800E03801C01001C00001C00001C00001C00001C0000FFFF801C03
801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03
801C0380FF8FF0141A809915>I<00FF800383800603800E03801C03801C03801C03801C
03801C03801C0380FFFF801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C03801C03801C0380FF9FF0141A809915>I<60F0F8680808081010
2040050B7D990B>39 D<00800100020004000C0008001800300030003000600060006000
6000E000E000E000E000E000E000E000E000E000E0006000600060006000300030003000
180008000C00040002000100008009267D9B0F>I<8000400020001000180008000C0006
000600060003000300030003000380038003800380038003800380038003800380030003
00030003000600060006000C0008001800100020004000800009267E9B0F>I<60F0F070
10101020204040040B7D830B>44 D<FFC0FFC00A0280880D>I<60F0F06004047D830B>I<
0004000C00180018001800300030003000600060006000C000C000C00180018001800300
030003000600060006000C000C000C00180018001800300030003000600060006000C000
C0000E257E9B13>I<07E01C38381C300C700E60066006E007E007E007E007E007E007E0
07E007E007E00760066006700E300C381C1C3807E010187F9713>I<03000700FF000700
070007000700070007000700070007000700070007000700070007000700070007000700
07007FF80D187D9713>I<0F80106020304038803CC01CE01C401C003C00380038007000
6000C001800100020004040804100430083FF87FF8FFF80E187E9713>I<07E01838201C
601E700E201E001E001C001C0038007007E00038001C000E000F000FE00FE00FC00F400E
601C183807E010187F9713>I<001800180038007800F800B80138023802380438083818
38103820384038C038FFFF00380038003800380038003803FF10187F9713>I<30183FF0
3FE03F80200020002000200020002FC03060203000380018001C001C401CE01CE01C8018
4038403030E00F800E187E9713>I<01F807040C06180E300E300070006000E000E3E0E4
18E80CF00EE006E007E007E007600760077006300E180C0C3807E010187F9713>I<4000
7FFF7FFE7FFE400480088010801000200040004000800180010003000300070006000600
0E000E000E000E000E00040010197E9813>I<07E01818300C2006600660067006780C3E
181F3007C003E00CF8307C601E600FC007C003C003C00360022004181807E010187F9713
>I<07E01C303018700C600EE006E006E007E007E0076007700F3017182707C700070006
000E000C700C7018603030600F8010187F9713>I<60F0F060000000000000000060F0F0
6004107D8F0B>I<60F0F060000000000000000060F0F0701010102020404004177D8F0B>
I<000C0000000C0000000C0000001E0000001E0000002F00000027000000270000004380
0000438000004380000081C0000081C0000181E0000100E0000100E00003FFF000020070
000200700004003800040038000400380008001C0008001C003C001E00FF00FFC01A1A7F
991D>65 D<FFFF800E00E00E00700E00380E003C0E003C0E003C0E003C0E003C0E00780E
00700E01E00FFFC00E00F00E00780E003C0E001C0E001E0E001E0E001E0E001E0E001C0E
003C0E00780E00F0FFFFC0171A7F991B>I<003F0201C0C603002E0E001E1C000E1C0006
380006780002700002700002F00000F00000F00000F00000F00000F00000700002700002
7800023800041C00041C00080E000803003001C0C0003F00171A7E991C>I<FFFF80000E
00E0000E0070000E0038000E001C000E000E000E000E000E0007000E0007000E0007800E
0007800E0007800E0007800E0007800E0007800E0007800E0007800E0007000E0007000E
000F000E000E000E001C000E001C000E0078000E00E000FFFF8000191A7F991D>I<FFFF
F80E00380E00180E00080E000C0E00040E00040E00040E01000E01000E01000E03000FFF
000E03000E01000E01000E01000E00020E00020E00020E00060E00040E00040E000C0E00
3CFFFFFC171A7F991A>I<FFFFF80E00380E00180E00080E000C0E00040E00040E00040E
01000E01000E01000E03000FFF000E03000E01000E01000E01000E00000E00000E00000E
00000E00000E00000E00000E0000FFE000161A7F9919>I<003F020001C0C60003002E00
0E001E001C000E001C00060038000600780002007000020070000200F0000000F0000000
F0000000F0000000F0000000F001FFC070000E0070000E0078000E0038000E001C000E00
1C000E000E000E000300160001C06600003F82001A1A7E991E>I<FFE1FFC00E001C000E
001C000E001C000E001C000E001C000E001C000E001C000E001C000E001C000E001C000E
001C000FFFFC000E001C000E001C000E001C000E001C000E001C000E001C000E001C000E
001C000E001C000E001C000E001C000E001C00FFE1FFC01A1A7F991D>I<FF801C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C00FF80091A7E990E>I<FFE0000E00000E00000E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00080E
00080E00080E00180E00100E00300E00700E00F0FFFFF0151A7F9918>76
D<FF0000FF0F0000F00F0000F00B8001700B80017009C0027009C0027009C0027008E004
7008E00470087008700870087008700870083810700838107008381070081C2070081C20
70080E4070080E4070080E40700807807008078070080300701C030070FF8307FF201A7F
9923>I<FE007FC00F000E000F0004000B80040009C0040009C0040008E0040008700400
0870040008380400081C0400081C0400080E04000807040008038400080384000801C400
0800E4000800E4000800740008003C0008003C0008001C0008000C001C000C00FF800400
1A1A7F991D>I<007F000001C1C000070070000E0038001C001C003C001E0038000E0078
000F0070000700F0000780F0000780F0000780F0000780F0000780F0000780F0000780F0
00078078000F0078000F0038000E003C001E001C001C000E0038000700700001C1C00000
7F0000191A7E991E>I<FFFF800E01E00E00700E00780E00380E003C0E003C0E003C0E00
3C0E00380E00780E00700E01E00FFF800E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00000E0000FFE000161A7F991A>I<007F000001C1C000070070000E
0038001C001C003C001E0038000E0078000F0070000700F0000780F0000780F0000780F0
000780F0000780F0000780F0000780F00007807000070078000F0038000E003C1C1E001C
221C000E4138000741F00001E1C000007F80800000C0800000C0800000E18000007F0000
007F0000003E0000001C0019217E991E>I<FFFF00000E01C0000E0070000E0078000E00
3C000E003C000E003C000E003C000E003C000E0078000E0070000E01C0000FFF00000E03
80000E00C0000E00E0000E0070000E0070000E0070000E0078000E0078000E0078000E00
78400E003C400E001C80FFE00F001A1A7F991C>I<0FC21836200E6006C006C002C002C0
02E00070007E003FE01FF803FC007E000E00070003800380038003C002C006E004D81887
E0101A7E9915>I<7FFFFF00701C0700401C0100401C0100C01C0180801C0080801C0080
801C0080001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000
001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000
03FFE000191A7F991C>I<FFE07FC00E000E000E0004000E0004000E0004000E0004000E
0004000E0004000E0004000E0004000E0004000E0004000E0004000E0004000E0004000E
0004000E0004000E0004000E0004000E0004000600080007000800030010000180200000
E0C000003F00001A1A7F991D>I<FF801FC01C0007001C0006000E0004000E0004000E00
0400070008000700080003801000038010000380100001C0200001C0200000E0400000E0
400000E040000070800000708000007980000039000000390000001E0000001E0000001E
0000000C0000000C00001A1A7F991D>I<FF81FF07F03C007801C01C007800801C007800
801C007800800E009C01000E009C01000E009C010007010E020007010E020007010E0200
03830F0400038207040003820704000382070C0001C403880001C403880001C403880000
E801D00000E801D00000E801D000007000E000007000E000007000E000003000C0000020
004000241A7F9927>I<FFC0FF800F003C000F001000070020000380200003C0400001C0
800000E1800000F10000007A0000003E0000001C0000001E0000001E0000001700000027
8000004380000041C0000081E0000100E0000300700002007800040038000C001C001E00
3E00FF007FC01A1A7F991D>I<FF801FE01E0007001E0006000F00040007000C00078008
000380100001C0100001E0200000E06000007040000078800000388000001D0000001F00
00000E0000000E0000000E0000000E0000000E0000000E0000000E0000000E0000000E00
00000E000000FFC0001B1A7F991D>I<1FC000387000383800101C00001C00001C0003FC
001E1C00381C00701C00E01C00E01C80E01C80E03C80705F801F8F0011107F8F13>97
D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001CFC001D07
001E03801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01801E03
0019060010F800131A809915>I<07F81C1C381C70087000E000E000E000E000E000E000
7000700438081C1807E00E107F8F11>I<003F0000070000070000070000070000070000
070000070000070000070003E7000C1700180F00300700700700E00700E00700E00700E0
0700E00700E00700600700700700380F001C370007C7E0131A7F9915>I<07C01C303018
7018600CE00CFFFCE000E000E000E0006000700438081C1807E00E107F8F11>I<01F007
180E381C101C001C001C001C001C001C00FFC01C001C001C001C001C001C001C001C001C
001C001C001C001C001C00FF800D1A80990C>I<0FCF0018718030300070380070380070
38007038003030001860002FC0006000006000007000003FF0003FFC001FFE00600F00C0
0300C00300C00300C00300600600381C0007E00011187F8F13>I<FC00001C00001C0000
1C00001C00001C00001C00001C00001C00001C00001C7C001D87001E03801E03801C0380
1C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0141A80
9915>I<183C3C18000000000000FC1C1C1C1C1C1C1C1C1C1C1C1C1C1CFF081A80990A>I<
018003C003C001800000000000000000000000000FC001C001C001C001C001C001C001C0
01C001C001C001C001C001C001C001C001C001C001C041C0E180E3007E000A2182990C>
I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C1FC01C0F
001C0C001C18001C20001C40001CE0001DE0001E70001C78001C38001C1C001C1E001C0F
001C0F80FF9FE0131A809914>I<FC001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091A80990A>
I<FC7C1F001D8E63801E0781C01E0781C01C0701C01C0701C01C0701C01C0701C01C0701
C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F81D107F8F20>I<
FC7C001D87001E03801E03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C0380FF9FF01410808F15>I<07E01C38300C700E6006E007E007E007E0
07E007E0076006700E381C1C3807E010107F8F13>I<FCFC001D07001E03801C01C01C01
C01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01801E03001D06001CF8001C00
001C00001C00001C00001C00001C0000FF80001317808F15>I<03E1000C1300180B0030
0F00700700E00700E00700E00700E00700E00700E00700700700700700380F001C370007
C700000700000700000700000700000700000700003FE013177F8F14>I<FC781D9C1E1C
1E081C001C001C001C001C001C001C001C001C001C001C00FF800E10808F0F>I<1F2060
E04020C020C020F0007F003FC01FE000F080708030C030C020F0408F800C107F8F0F>I<
0800080008000800180018003800FFC03800380038003800380038003800380038203820
3820382018201C4007800B177F960F>I<FC1F801C03801C03801C03801C03801C03801C
03801C03801C03801C03801C03801C03801C07800C07800E0B8003F3F01410808F15>I<
FF0F803C07001C06001C04001C04000E08000E080007100007100007100003A00003A000
01C00001C00001C00000800011107F8F14>I<FE7F1F80381C07003C1C06001C0C04001C
0E04000E1608000E1708000E170800072310000723900007A3900003C1A00003C1E00001
80C0000180C0000180C00019107F8F1C>I<FE3F803C1E001C08000E10000F3000076000
03C00001C00001E00003E000027000043800083800181C00381E00FC3FC012107F8F14>
I<FF0F803C07001C06001C04001C04000E08000E080007100007100007100003A00003A0
0001C00001C00001C000008000008000010000010000E10000E20000E400007800001117
7F8F14>I<FFF8E070C07080E081C081C00380070007000E041C041C04380870087038FF
F80E107F8F11>I<FFFFC01201808913>I E /Fv 29 120 df<FFF8FFF8FFF80D037E8B12
>45 D<60F0F0600404798312>I<0018003800380070007000E000E001C001C001C00380
0380070007000E000E001C001C001C003800380070007000E000E000C0000D1A7E9612>
I<0F803FC070E0E070E038E038403800380030007000E000C00180030006000C00183830
387FF87FF80D147E9312>50 D<0FC03FF07838701C201C001C0038007007E007F0003800
1C000E000E400EE00EE01C78383FF00FC00F147F9312>I<60F0F06000000000000060F0
F060040E798D12>58 D<03E007F01E18381C30FC71FE739EE30EE70EE70EE70EE70EE30C
739C71F830F038001E0E07FE03F80F147F9312>64 D<1FC0003FF000383800101C00001C
0007FC003FFC00781C00E01C00E01C00E01C00703C003FFF801FCF80110E7F8D12>97
D<F800F80038003800380038003BE03FF03C38381C380C380E380E380E380E380C381C3C
383FF01BC00F147F9312>I<07F01FF8383870106000E000E000E000E000600070383838
1FF007E00D0E7E8D12>I<00F800F8003800380038003807B81FF8387870386038E038E0
38E038E0386038707838781FFE0FBE0F147F9312>I<07801FE0387070706038E038FFF8
FFF8E0006000703838381FF007C00D0E7E8D12>I<007E00FF01C70382038003807FFEFF
FE03800380038003800380038003800380038003803FF83FF81014809312>I<0F9E1FFF
38E7707070707070707038E03FC03F8070003FE03FF83FFC701EE00EE00EE00E600C783C
1FF00FE010167F8D12>I<F800F800380038003800380039E03FF03E383C383838383838
3838383838383838383838FE3EFE3E0F147F9312>I<06000F000F000600000000000000
7F007F000700070007000700070007000700070007000700FFF0FFF00C157D9412>I<F8
00F80038003800380038003BFC3BFC38F039E03BC03F803F803FC03DE038E038703838FC
7EFC7E0F147F9312>107 D<FF00FF000700070007000700070007000700070007000700
070007000700070007000700FFF8FFF80D147E9312>I<F71C00FFBE0079E70079E70071
C70071C70071C70071C70071C70071C70071C70071C700F9E780F8E380110E808D12>I<
F9E0FFF03E383C3838383838383838383838383838383838FE3EFE3E0F0E7F8D12>I<0F
803FE038E07070E038E038E038E038E038F078707038E03FE00F800D0E7E8D12>I<FBE0
FFF03C38381C380C380E380E380E380E380C381C3C383FF03BC038003800380038003800
FE00FE000F157F8D12>I<079C1FFC387C703C601CE01CE01CE01CE01C601C703C387C1F
FC079C001C001C001C001C001C007F007F10157F8D12>I<FC78FDFC1F9C1E081E001C00
1C001C001C001C001C001C00FFC0FFC00E0E7E8D12>I<1FF03FF06070C070E0007F003F
E00FF000786018E018F030FFE0DFC00D0E7E8D12>I<06000E000E000E007FF8FFF80E00
0E000E000E000E000E000E000E1C0E1C0E1C07F801E00E127F9112>I<F8F8F8F8383838
38383838383838383838383838383838781FFE0FBE0F0E7F8D12>I<FC7EFC7E38383838
1C701C701C700EE00EE00EE00EE007C007C003800F0E7F8D12>I<FEFEFEFE701C701C70
1C30183BB83FF83FF83AB838B81CF01CF01CF00F0E7F8D12>I E
/Fw 1 98 df<00200000700000700000700000B80000B80000B800011C00011C00031E00
020E00020E0004070007FF000407000803800803801803C01801C03801C0FC07F815157F
9419>97 D E /Fx 2 16 df<000FC000007FF80001F03E0003800700060001800C0000C0
1800006030000030300000306000001860000018C000000CC000000CC000000CC000000C
C000000CC000000CC000000C60000018600000183000003030000030180000600C0000C0
060001800380070001F03E00007FF800000FC0001E1D7E9623>13
D<0F801FC03FE07FF07FF0FFF8FFF8FFF8FFF87FF07FF03FE01FC00F800D0E7E8E12>15
D E /Fy 79 124 df<00FCF807839C0E079C1C07081C07001C07001C07001C07001C0700
FFFFE01C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700
1C07007F1FE01617809615>11 D<00FC000782000E07001C07001C02001C00001C00001C
00001C0000FFFF001C07001C07001C07001C07001C07001C07001C07001C07001C07001C
07001C07001C07007F1FC01217809614>I<00FF000707000E07001C07001C07001C0700
1C07001C07001C0700FFFF001C07001C07001C07001C07001C07001C07001C07001C0700
1C07001C07001C07001C07007F1FC01217809614>I<60C0F1E0F1E070E0102010202040
2040408040800B0A7F9612>34 D<00183000183000183000306000306000306000306000
30600060C00060C0FFFFFFFFFFFF00C18000C18000C180018300018300018300FFFFFFFF
FFFF030600060C00060C00060C00060C00060C000C18000C18000C1800181D7E961D>I<
60F0F070101020204040040A7D960A>39 D<0102040C1818303070606060E0E0E0E0E0E0
E0E0E0E060606070303018180C04020108227D980E>I<8040203018180C0C0E06060607
0707070707070707070606060E0C0C18183020408008227E980E>I<0030000030000030
00003000003000003000003000003000003000003000003000FFFFFCFFFFFC0030000030
0000300000300000300000300000300000300000300000300000300016187E931B>43
D<60F0F070101020204040040A7D830A>I<FF80FF80090280870C>I<60F0F06004047D83
0A>I<0008001800300030003000600060006000C000C000C00180018001800300030006
00060006000C000C000C00180018001800300030003000600060006000C000C0000D217E
9812>I<07C018303018701C600C600CE00EE00EE00EE00EE00EE00EE00EE00EE00E600C
600C701C30181C7007C00F157F9412>I<06000E00FE000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E00FFE00B157D9412>I<0F8030E04070
8030C038E0384038003800700070006000C00180030006000C08080810183FF07FF0FFF0
0D157E9412>I<0FE030306018701C701C001C00180038006007E000300018000C000E00
0EE00EE00EC00C401830300FE00F157F9412>I<00300030007000F001F0017002700470
08701870107020704070C070FFFE0070007000700070007003FE0F157F9412>I<60307F
E07FC0440040004000400040004F8070E040700030003800384038E038E0388030406020
C01F000D157E9412>I<01F00608080C181C301C70006000E000E3E0EC30F018F00CE00E
E00EE00E600E600E300C3018183007C00F157F9412>I<40007FFE7FFC7FF8C008801080
200040008000800100030003000200060006000E000E000E000E000E0004000F167E9512
>I<07E018302018600C600C700C78183E101F6007C00FF018F8607C601EC00EC006C006
C004600C38300FE00F157F9412>I<07C0183030186018E00CE00CE00EE00EE00E601E30
1E186E0F8E000E000C001C70187018603020E01F800F157F9412>I<60F0F06000000000
000060F0F060040E7D8D0A>I<001000003800003800003800005C00005C00005C00008E
00008E00008E0001070001070002038002038002038007FFC00401C00401C00800E00800
E01800F03800F0FE03FE17177F961A>65 D<FFFE001C03801C00E01C00601C00701C0070
1C00701C00701C00E01C01C01FFF801FFFC01C00E01C00701C00301C00381C00381C0038
1C00381C00701C00E01C01C0FFFF0015177F9619>I<00FC100383300E00B01C00703800
30300030700010600010E00010E00000E00000E00000E00000E00000E000106000107000
103000203800201C00400E008003830000FC0014177E9619>I<FFFF001C01C01C00E01C
00301C00381C00181C001C1C000C1C000E1C000E1C000E1C000E1C000E1C000E1C000E1C
000C1C001C1C001C1C00381C00301C00601C01C0FFFF0017177F961B>I<FFFFE01C00E0
1C00601C00201C00101C00101C00101C04001C04001C04001C0C001FFC001C0C001C0400
1C04081C04081C00081C00181C00101C00101C00301C00F0FFFFF015177F9618>I<FFFF
E01C00E01C00601C00201C00101C00101C00101C04001C04001C04001C0C001FFC001C0C
001C04001C04001C04001C00001C00001C00001C00001C00001C0000FFC00014177F9617
>I<007E080381980600580C0038180018300018700008700008E00008E00000E00000E0
0000E00000E003FEE000387000387000383000381800380C00380600380380D8007F0817
177E961C>I<FF83FE1C00701C00701C00701C00701C00701C00701C00701C00701C0070
1C00701FFFF01C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070
FF83FE17177F961A>I<FFE00E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E00FFE00B177F960D>I<0FF800E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E0E0E0E0E0C1C061801F
000D177E9612>I<FF80FE1C00781C00601C00401C00801C01001C06001C08001C10001C
38001C78001C9C001D0E001E0E001C07001C03801C01C01C01C01C00E01C00701C00781C
007CFF80FF18177F961B>I<FFC0001C00001C00001C00001C00001C00001C00001C0000
1C00001C00001C00001C00001C00001C00001C00201C00201C00201C00601C00601C0040
1C00C01C03C0FFFFC013177F9616>I<FE0003F81E0003C0170005C0170005C0170005C0
138009C0138009C011C011C011C011C011C011C010E021C010E021C0107041C0107041C0
107041C0103881C0103881C0101D01C0101D01C0100E01C0100E01C0380E01C0FE040FF8
1D177F9620>I<FC00FE1E00381F001017001013801011C01011C01010E0101070101038
10103810101C10100E10100F101007101003901001D01001D01000F01000701000303800
30FE001017177F961A>I<00FC000303000E01C01C00E0380070300030700038600018E0
001CE0001CE0001CE0001CE0001CE0001CE0001C7000387000383000303800701C00E00E
01C003030000FC0016177E961B>I<FFFE001C03801C00C01C00601C00701C00701C0070
1C00701C00601C00C01C03801FFE001C00001C00001C00001C00001C00001C00001C0000
1C00001C00001C0000FF800014177F9618>I<00FC000303000E01C01C00E03800703000
30700038700038E0001CE0001CE0001CE0001CE0001CE0001CE0001C6000187000383000
303878701C84E00E85C003830000FE0400020400030400038C0001F80001F80000F0161D
7E961B>I<FFFC001C03801C00C01C00E01C00701C00701C00701C00701C00E01C00C01C
03801FFE001C07801C01C01C00E01C00E01C00E01C00E01C00E01C00E11C00E11C0072FF
803C18177F961A>I<0FC4302C601C400CC004C004C004E00070007F003FE00FF801FC00
1C000E0006800680068006C004E008D81087E00F177E9614>I<7FFFF860381840380840
380880380480380480380400380000380000380000380000380000380000380000380000
380000380000380000380000380000380000380003FF8016177F9619>I<FF80FE1C0038
1C00101C00101C00101C00101C00101C00101C00101C00101C00101C00101C00101C0010
1C00101C00101C00101C00100E0020060020030040018180007E0017177F961A>I<FF00
7E3C00381C00101C00100E00200E00200F006007004007004003808003808003C18001C1
0001C10000E20000E20000F20000740000740000380000380000380000100017177F961A
>I<FF07FC3F803C00E00E001C00E004001C00E004001C017004000E017008000E017008
000E023808000702381000070238100007041C100003841C200003841C200003880E2000
01C80E400001C80E400001D007400000F007800000F007800000F007800000E003800000
60030000006003000021177F9624>I<FF83FC1F01E00E008007008007810003820001C2
0001E40000E800007800007800003800007C00005E00008E000187000107800203800601
C00401E00C00E01C00F0FF03FE17177F961A>I<FF803F801E001C000E00080007001000
078030000380200001C0400001E0400000E0800000F1800000710000003A0000003E0000
001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000
00FF8000191780961A>I<FCFCC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0FCFC06217D980A>91 D<204020404080408081008100E1C0F1E0F1E060C0
0B0A7B9612>I<FCFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C
0C0CFCFC062180980A>I<3FC0706070302038003803F81E3830387038E039E039E07970
FF1F1E100E7F8D12>97 D<F8000038000038000038000038000038000038000038000038
000039F0003E0C0038060038070038030038038038038038038038038038030038070038
0600361C0021F00011177F9614>I<07F01838303870106000E000E000E000E000600070
083008183007C00D0E7F8D10>I<003E00000E00000E00000E00000E00000E00000E0000
0E00000E0007CE001C3E00300E00700E00600E00E00E00E00E00E00E00E00E00600E0070
0E00301E00182E0007CF8011177F9614>I<0FC0186030307038E018FFF8E000E000E000
600070083010183007C00D0E7F8D10>I<03E006700E701C201C001C001C001C001C00FF
801C001C001C001C001C001C001C001C001C001C001C001C007F800C1780960B>I<0F9E
18E33060707070707070306018C02F80200060003FE03FF83FFC600EC006C006C006600C
38380FE010157F8D12>I<F8000038000038000038000038000038000038000038000038
000038F8003B1C003C0E00380E00380E00380E00380E00380E00380E00380E00380E0038
0E00380E00FE3F8011177F9614>I<307878300000000000F83838383838383838383838
38FE07177F960A>I<0300078007800300000000000000000000001F8003800380038003
80038003800380038003800380038003800380038003804380E300E7007C00091D82960B
>I<F80038003800380038003800380038003800383E383838303840388039803FC039E0
38E038F03878383C383CFE7F10177F9613>I<F838383838383838383838383838383838
3838383838FE07177F960A>I<F8F83E003B1CC7003C0F0380380E0380380E0380380E03
80380E0380380E0380380E0380380E0380380E0380380E0380380E0380FE3F8FE01B0E7F
8D1E>I<F8F8003B1C003C0E00380E00380E00380E00380E00380E00380E00380E00380E
00380E00380E00FE3F80110E7F8D14>I<07C018303018600C600CE00EE00EE00EE00EE0
0E701C3018183007C00F0E7F8D12>I<F9F0003E1C003806003807003803003803803803
80380380380380380300380700380E003E1C0039F0003800003800003800003800003800
00FE000011147F8D14>I<07C2001C2600381E00700E00600E00E00E00E00E00E00E00E0
0E00600E00700E00301E001C2E0007CE00000E00000E00000E00000E00000E00003F8011
147F8D13>I<F9E03A703C703820380038003800380038003800380038003800FF000C0E
7F8D0E>I<1F4060C0C040C040E000FF007F801FC001E080608060C060E0C09F000B0E7F
8D0E>I<080008000800180018003800FFC0380038003800380038003800380038403840
384038401C800F000A147F930E>I<F83E00380E00380E00380E00380E00380E00380E00
380E00380E00380E00380E00381E001C2E0007CF80110E7F8D14>I<FE1F380E3C0C1C08
1C080E100E100720072007E003C003C001800180100E7F8D13>I<FEFE7C383838383810
383C101C3C201C4C201E4E600ECE400E8740078780070380070380030300020100160E7F
8D19>I<FE3F3C1C1C100E20074007C0038001C002E004F008701838383CFC7F100E7F8D
13>I<FE1F380E3C0C1C081C080E100E100720072007E003C003C00180018001000100E2
00E200A400780010147F8D13>I<FFF0C0E080E081C08380878007000E001E081C083818
70107030FFF00D0E7F8D10>I<FFFF801101808812>I E /Fz 30
120 df<3C007E00FF00FF00FF80FF807F803D800180018003000300070006000C001C00
3800200009127CA210>39 D<3C7EFFFFFFFF7E3C0000000000003C7EFFFFFFFF7E3C0816
7C9510>58 D<0000300000000078000000007800000000FC00000000FC00000000FC0000
0001FE00000001FE00000003FF000000037F000000037F000000063F800000063F800000
0C3FC000000C1FC000001C1FE00000180FE00000180FE000003007F000003007F0000070
07F800006003F800007FFFF80000FFFFFC0000C001FC00018001FE00018000FE00038000
FF000300007F000300007F000600003F800F00003F80FFE007FFFCFFE007FFFC26227EA1
2B>65 D<0001FF0040001FFFC1C0007F80F3C001FC001FC003F0000FC007E00007C00FC0
0003C01FC00003C03F800001C03F800001C07F800000C07F000000C07F000000C0FF0000
0000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000
007F000000007F000000C07F800000C03F800000C03F800001C01FC00001800FC0000180
07E000030003F000060001FC001C00007F807800001FFFE0000001FF000022227DA129>
67 D<0001FF0020001FFFE0E0007F8079E001FC001FE003F80007E007E00003E00FC000
01E01FC00001E03F800000E03F800000E07F800000607F000000607F00000060FF000000
00FF00000000FF00000000FF00000000FF00000000FF00000000FF0007FFFEFF0007FFFE
7F00000FE07F00000FE07F80000FE03F80000FE03F80000FE01FC0000FE00FE0000FE007
E0000FE003F8000FE001FC001FE0007F8073E0001FFFE1E00001FF806027227DA12D>71
D<FFF0000007FF80FFF800000FFF8007F800000FF00006FC00001BF00006FC00001BF000
067E000033F000067E000033F000067E000033F000063F000063F000063F000063F00006
1F8000C3F000061F8000C3F000060FC00183F000060FC00183F0000607E00303F0000607
E00303F0000603F00603F0000603F00603F0000603F00603F0000601F80C03F0000601F8
0C03F0000600FC1803F0000600FC1803F00006007E3003F00006007E3003F00006003F60
03F00006003F6003F00006001FC003F00006001FC003F00006001FC003F00006000F8003
F00006000F8003F000FFF007007FFF80FFF007007FFF8031227EA136>77
D<FFF0000FFFFFF8000FFF07FC00006007FE00006006FF000060067F000060063F800060
061FC00060060FE00060060FF000600607F800600603FC00600601FE00600600FE006006
007F006006003F806006001FC06006001FE06006000FF060060007F860060003FC600600
01FC60060000FE600600007F600600003FE00600003FE00600001FE00600000FE0060000
07E006000003E006000001E006000000E0FFF0000060FFF000006028227EA12D>I<FFFF
FF8000FFFFFFF00007F003F80007F001FC0007F000FE0007F0007F0007F0007F0007F000
7F8007F0007F8007F0007F8007F0007F8007F0007F8007F0007F0007F0007F0007F000FE
0007F001FC0007F003F80007FFFFF00007FFFF800007F000000007F000000007F0000000
07F000000007F000000007F000000007F000000007F000000007F000000007F000000007
F000000007F000000007F0000000FFFF800000FFFF80000021227EA127>80
D<7FFFFFFFC07FFFFFFFC07E03F80FC07803F803C07003F801C06003F800C0E003F800E0
E003F800E0C003F80060C003F80060C003F80060C003F800600003F800000003F8000000
03F800000003F800000003F800000003F800000003F800000003F800000003F800000003
F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
00000003F800000003F8000001FFFFF00001FFFFF00023217EA028>84
D<FFFF801FFEFFFF801FFE07F00000C007F00000C007F00000C007F00000C007F00000C0
07F00000C007F00000C007F00000C007F00000C007F00000C007F00000C007F00000C007
F00000C007F00000C007F00000C007F00000C007F00000C007F00000C007F00000C007F0
0000C007F00000C007F00000C007F00000C007F00000C003F000018003F800018001F800
030000FC000600007E000C00003F807800000FFFF0000000FF800027227EA12C>I<FFFF
8007FFFFFF8007FF07F00000E007F800006003F80000C003FC0000C001FC00018001FC00
018001FE00038000FE00030000FF000700007F000600007F800600003F800C00003FC00C
00001FC01800001FC01800000FE03000000FE03000000FF070000007F060000007F86000
0003F8C0000003FCC0000001FD80000001FD80000000FF00000000FF00000000FF000000
007E000000007E000000003C000000003C0000000018000028227FA12B>I<07FE00001F
FF80003F07E0003F03F0003F01F0003F01F8001E01F8000001F8000001F800003FF80003
FDF8001F81F8003E01F8007C01F800F801F800F801F800F801F800F801F8007C02F8007E
0CF8001FF87F8007E03F8019167E951C>97 D<00FF8007FFE00F83F01F03F03E03F07E03
F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00007E00003E00
181F00300FC06007FFC000FF0015167E9519>99 D<0001FF000001FF0000003F0000003F
0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F
0000FE3F0007FFBF000FC1FF001F007F003E003F007E003F007C003F007C003F00FC003F
00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F007C003F007E003F003E003F
001F007F000F81FF0007FF3FE001FC3FE01B237EA220>I<00FE0007FF800F83C01E01E0
3E00F07E00F07C00F87C0078FC0078FFFFF8FFFFF8FC0000FC0000FC00007C00007C0000
3E00183E00181F00300F80E003FFC000FF0015167E951A>I<001F8000FFE001F1F003E3
F007E3F00FC3F00FC1E00FC0000FC0000FC0000FC0000FC0000FC000FFFE00FFFE000FC0
000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
000FC0000FC0000FC0000FC0000FC0007FFC007FFC0014237EA212>I<00FE0F8003FF9F
C00F83E3C01F01F3C01E00F0003E00F8003E00F8003E00F8003E00F8003E00F8001E00F0
001F01F0000F83E0000BFF800008FE000018000000180000001C0000001FFFE0001FFFFC
000FFFFF0007FFFF001FFFFF807C001FC078000FC0F80007C0F80007C0F80007C07C000F
803E001F001F807E000FFFFC0001FFE0001A217F951D>I<FF800000FF8000001F800000
1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000
1F8000001F83F0001F8FFC001F987E001FA03E001FC03F001FC03F001F803F001F803F00
1F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F00
1F803F001F803F001F803F00FFF1FFE0FFF1FFE01B237DA220>I<1E003F007F807F807F
807F803F001E00000000000000000000000000FF80FF801F801F801F801F801F801F801F
801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF00C247EA30F>I<FF80
0000FF8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80
00001F8000001F8000001F8000001F80FF801F80FF801F803C001F8030001F80E0001F81
C0001F8300001F8600001F9E00001FBE00001FFF00001FDF80001F8FC0001F07C0001F07
E0001F03F0001F01F8001F00F8001F00FC001F007E00FFE1FFC0FFE1FFC01A237EA21E>
107 D<FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FF
F00C237EA20F>I<FF03F803F800FF0FFE0FFE001F183F183F001F201F201F001F401FC0
1F801F401FC01F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
1F801F801F801F801F801F801F801F801F801F80FFF0FFF0FFF0FFF0FFF0FFF02C167D95
31>I<FF03F000FF0FFC001F187E001F203E001F403F001F403F001F803F001F803F001F
803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F
803F001F803F001F803F00FFF1FFE0FFF1FFE01B167D9520>I<00FF0007FFE00F81F01F
00F83E007C7C003E7C003E7C003EFC003FFC003FFC003FFC003FFC003FFC003FFC003F7C
003E7E007E3E007C1F00F80F81F007FFE000FF0018167E951D>I<FF87F000FFBFFC001F
F07E001FC01F001F800F801F800FC01F800FC01F8007E01F8007E01F8007E01F8007E01F
8007E01F8007E01F8007E01F8007C01F800FC01F800FC01F801F801FC01F001FF07E001F
BFFC001F8FE0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
800000FFF00000FFF000001B207E9520>I<FF0F80FF1FE01F33F01F63F01F43F01F43F0
1FC1E01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8000
1F80001F8000FFF800FFF80014167E9518>114 D<07F9801FFF80380780700380F00180
F00180F80000FF0000FFF8007FFE003FFF001FFF8007FF80003FC0C007C0C003C0E003C0
E003C0F00380FC0F00EFFE00C3F80012167E9517>I<0180000180000180000180000380
000380000780000780000F80003F8000FFFF00FFFF001F80001F80001F80001F80001F80
001F80001F80001F80001F80001F80001F80001F81801F81801F81801F81801F81800F83
000FC30007FE0001F80011207F9F16>I<FF81FF00FF81FF001F803F001F803F001F803F
001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F
001F803F001F803F001F803F001F807F001F80FF000FC1BF0007FF3FE001FC3FE01B167D
9520>I<FFF3FF83FCFFF3FF83FC1F807C00E00FC07C00C00FC03E00C00FE03E01C007E0
7F018007E07F018003F07F030003F0CF830003F8CF870001F9CFC60001F987C60000FD87
EC0000FF03EC0000FF03FC00007F03F800007E01F800003E01F000003C00F000003C00F0
00001800600026167F9529>119 D E /FA 90 125 df<00030000000300000007800000
078000000FC000000BC0000013E0000011E0000021F0000020F0000040F8000040780000
807C0000803C0001003E0001001E0002001F0002000F0004000F8004000780080007C008
0003C0100001E0300001F0200000F0600000F87FFFFFF8FFFFFFFCFFFFFFFC1E1D7E9C23
>1 D<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0000E
01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E
01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E
01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01
800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F8151D
809C17>I<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<003F07E00001C09C18
000380F018000701F03C000E01E03C000E00E018000E00E000000E00E000000E00E00000
0E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E00E01C000E
00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00
E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>I<00
3F07FC0001C0DC1C000381F03C000701F03C000E01E01C000E00E01C000E00E01C000E00
E01C000E00E01C000E00E01C000E00E01C00FFFFFFFC000E00E01C000E00E01C000E00E0
1C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C
000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80
211D809C23>I<6060F0F0F8F86868080808080808101010102020404080800D0C7F9C15>
34 D<000301800003018000030180000603000006030000060300000603000006030000
0C0600000C0600000C0600000C060000180C007FFFFFF8FFFFFFFC003018000030180000
3018000030180000603000006030000060300000603000FFFFFFFC7FFFFFF800C0600001
80C0000180C0000180C0000180C000030180000301800003018000030180000603000006
030000060300001E257E9C23>I<0080008007E01898308460824081C087C08FC08FC086
E08070807E803FC01FF00FF803FC00BE008E00876087F083F083E0838082408240842088
189007E00080008010217E9E15>I<00E000000310000006080000060800000E0800000E
0800000E0800000E0800000E1000000E1000000E2000000740000007403FE007800F8007
800600038004000780040009C0080011C0100030E0100020F0200060702000E0384000E0
3C8000E01C8000E00F0020E0070020700780403009C0401830E1800FC03F001B1F7E9D20
>38 D<60F0F8680808081010204080050C7C9C0C>I<00800100020006000C000C001800
18003000300030006000600060006000E000E000E000E000E000E000E000E000E000E000
E000E0006000600060006000300030003000180018000C000C000600020001000080092A
7C9E10>I<8000400020003000180018000C000C00060006000600030003000300030003
800380038003800380038003800380038003800380038003000300030003000600060006
000C000C00180018003000200040008000092A7E9E10>I<0300030003000300C30CE31C
73381FE0078007801FE07338E31CC30C03000300030003000E127D9E15>I<0006000000
060000000600000006000000060000000600000006000000060000000600000006000000
0600000006000000060000FFFFFFE0FFFFFFE00006000000060000000600000006000000
06000000060000000600000006000000060000000600000006000000060000000600001B
1C7E9720>I<60F0F0701010101020204080040C7C830C>I<FFE0FFE00B0280890E>I<60
F0F06004047C830C>I<00010003000600060006000C000C000C00180018001800300030
00300060006000C000C000C0018001800180030003000300060006000C000C000C001800
18001800300030003000600060006000C000C00010297E9E15>I<03C00C301818300C30
0C700E60066006E007E007E007E007E007E007E007E007E007E007E007E007E007600660
06700E300C300C18180C3007E0101D7E9B15>I<010007003F00C7000700070007000700
070007000700070007000700070007000700070007000700070007000700070007000700
0700FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E00
0E001C001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15
>I<07E01830201C201C781E780E781E381E001C001C00180030006007C00030001C001C
000E000F000F700FF80FF80FF80FF00E401C201C183007C0101D7E9B15>I<000C00000C
00001C00003C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C
00101C00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C
00001C0001FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E0
2C303018301C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0
101D7E9B15>I<00F0030C04040C0E181E301E300C700070006000E3E0E430E818F00CF0
0EE006E007E007E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<
4000007FFF807FFF007FFF00400200800400800400800800001000001000002000006000
00400000C00000C00001C000018000018000038000038000038000038000078000078000
078000078000078000078000030000111D7E9B15>I<03E00C301008200C200660066006
700670067C0C3E183FB01FE007F007F818FC307E601E600FC007C003C003C003C0036002
6004300C1C1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E0
07E007E0076007700F300F18170C2707C700060006000E300C780C78187018203010C00F
80101D7E9B15>I<60F0F0600000000000000000000060F0F06004127C910C>I<60F0F060
0000000000000000000060F0F0701010101020204080041A7C910C>I<7FFFFFC0FFFFFF
E00000000000000000000000000000000000000000000000000000000000000000FFFFFF
E07FFFFFC01B0C7E8F20>61 D<0FE03038401CE00EF00EF00EF00E000C001C0030006000
C0008001800100010001000100010001000000000000000000000003000780078003000F
1D7E9C14>63 D<000600000006000000060000000F0000000F0000000F00000017800000
1780000037C0000023C0000023C0000043E0000041E0000041E0000080F0000080F00000
80F000010078000100780001FFF80002003C0002003C0002003C0004001E0004001E000C
001F000C000F001E001F00FF00FFF01C1D7F9C1F>65 D<FFFFC0000F0078000F003C000F
001E000F000E000F000F000F000F000F000F000F000F000F000E000F001E000F003C000F
00F8000FFFF0000F003C000F001E000F000F000F0007000F0007800F0007800F0007800F
0007800F0007800F000F000F000F000F001E000F007800FFFFE000191C7F9B1D>I<001F
808000E0618001801980070007800E0003801C0003801C00018038000180780000807800
008070000080F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000
0000700000807800008078000080380000801C0001001C0001000E000200070004000180
080000E03000001FC000191E7E9C1E>I<FFFFC0000F00F0000F003C000F000E000F0007
000F0007000F0003800F0003C00F0001C00F0001C00F0001E00F0001E00F0001E00F0001
E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C00F0003C00F0003800F0007
800F0007000F000E000F001C000F007000FFFFC0001B1C7E9B20>I<FFFFFC0F003C0F00
0C0F00040F00040F00060F00020F00020F01020F01000F01000F01000F03000FFF000F03
000F01000F01000F01000F01010F00010F00020F00020F00020F00060F00060F000C0F00
3CFFFFFC181C7E9B1C>I<FFFFF80F00780F00180F00080F00080F000C0F00040F00040F
01040F01000F01000F01000F03000FFF000F03000F01000F01000F01000F01000F00000F
00000F00000F00000F00000F00000F00000F0000FFF800161C7E9B1B>I<001F808000E0
618001801980070007800E0003801C0003801C0001803800018078000080780000807000
0080F0000000F0000000F0000000F0000000F0000000F0000000F000FFF0F0000F807000
07807800078078000780380007801C0007801C0007800E00078007000B800180118000E0
6080001F80001C1E7E9C21>I<FFF0FFF00F000F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F000F000FFFFF000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F00FFF0FFF01C1C7F9B1F>I<FFF00F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F00FFF00C1C7F9B0F>I<07FF80007C00003C00003C00003C00003C00003C00
003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00
003C00003C00703C00F83C00F83C00F8380070780040700030E0000F8000111D7F9B15>
I<FFF01FE00F0007800F0006000F0004000F0008000F0010000F0020000F0040000F0080
000F0100000F0200000F0600000F0F00000F1780000F2780000F43C0000F81E0000F01E0
000F00F0000F0078000F0078000F003C000F003E000F001E000F000F000F000F800F000F
C0FFF03FF01C1C7F9B20>I<FFF8000F80000F00000F00000F00000F00000F00000F0000
0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00080F0008
0F00080F00180F00180F00100F00300F00700F01F0FFFFF0151C7E9B1A>I<FF8000FF80
0F8000F8000F8000F8000BC00178000BC00178000BC001780009E002780009E002780008
F004780008F004780008F0047800087808780008780878000878087800083C107800083C
107800083C107800081E207800081E207800081E207800080F407800080F407800080780
78000807807800080780780008030078001C03007800FF8307FF80211C7E9B26>I<FF00
1FF00F8003800FC001000BC0010009E0010008F0010008F0010008780100083C0100083E
0100081E0100080F0100080F8100080781000803C1000801E1000801F1000800F1000800
790008007D0008003D0008001F0008001F0008000F0008000700080003001C000300FF80
01001C1C7F9B1F>I<003F800000E0E0000380380007001C000E000E001C0007003C0007
8038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001
E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003803C0007801C0007
000E000E0007001C000380380000E0E000003F80001B1E7E9C20>I<FFFF800F00E00F00
780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00E00FFF
800F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
00FFF000171C7E9B1C>I<003F800000E0E0000380380007001C000E000E001C0007003C
00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F0
0001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003803C0E07801C
1107000E208E0007205C0003A0780000F0E020003FE0200000602000003060000038E000
003FC000003FC000001F8000000F001B257E9C20>I<FFFF00000F01E0000F0078000F00
3C000F001C000F001E000F001E000F001E000F001E000F001C000F003C000F0078000F01
E0000FFF00000F01E0000F0070000F0078000F003C000F003C000F003C000F003C000F00
3C000F003C000F003C100F003C100F001C100F001C10FFF00E20000003C01C1D7E9B1F>
I<07E0801C1980300580300380600180E00180E00080E00080E00080F00000F800007C00
007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001
C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F
00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E>
I<FFF01FF00F0003800F0001000F0001000F0001000F0001000F0001000F0001000F0001
000F0001000F0001000F0001000F0001000F0001000F0001000F0001000F0001000F0001
000F0001000F0001000F0001000F00010007000200078002000380040001C0040000E018
0000706000000F80001C1D7F9B1F>I<FFE00FF01F0003C01F0001800F0001000F000100
078002000780020007C0020003C0040003C0040003E00C0001E0080001E0080000F01000
00F0100000F810000078200000782000003C4000003C4000003C4000001E8000001E8000
001F8000000F0000000F00000006000000060000000600001C1D7F9B1F>I<FFE1FFC0FF
1F003E003C1E003C00180F001E00100F001E00100F001E001007801F002007801F002007
801F002003C027804003C027804003C027804001E043C08001E043C08001E043C08000F0
81E10000F081E10000F081E10000F900F300007900F200007900F200007E007E00003E00
7C00003E007C00003C003C00001C003800001C00380000180018000008001000281D7F9B
2B>I<FFF07FC00FC01E0007800C0007C0080003C0100001E0200001F0200000F0400000
788000007C8000003D0000003E0000001F0000000F0000000F8000000F80000013C00000
23E0000021E0000040F0000080F8000080780001007C0002003E0002001E0006001F001F
001F80FF807FF01C1C7F9B1F>I<FFF003FC0F8001E0078000C007C0008003C0010003E0
030001E0020000F0040000F8040000780800007C1800003C1000003E2000001F2000000F
4000000FC000000780000007800000078000000780000007800000078000000780000007
8000000780000007800000078000007FF8001E1C809B1F>I<7FFFF07C01F07001E06003
C06003C0400780400F80400F00401E00001E00003C00007C0000780000F00000F00001E0
0003E00003C0100780100780100F00101F00301E00203C00203C00607800E0F803E0FFFF
E0141C7E9B19>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0FEFE07297C9E0C>I<08081010202040404040808080808080
B0B0F8F8787830300D0C7A9C15>I<FEFE06060606060606060606060606060606060606
060606060606060606060606060606060606FEFE0729809E0C>I<1FC000307000783800
781C00301C00001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40
603C40304E801F870012127E9115>97 D<FC00001C00001C00001C00001C00001C00001C
00001C00001C00001C00001C00001C7C001D87001E01801C00C01C00E01C00601C00701C
00701C00701C00701C00701C00701C00601C00E01C00C01E018019070010FC00141D7F9C
17>I<03F80C0C181E301E700C6000E000E000E000E000E000E00060007002300218040C
1803E00F127F9112>I<001F800003800003800003800003800003800003800003800003
8000038000038003F3800E0B80180780300380700380600380E00380E00380E00380E003
80E00380E003806003807003803003801807800E1B8003E3F0141D7F9C17>I<07E00C30
1818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803E00F127F91
12>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038007
C4C01C78C0383880301800701C00701C00701C00701C003018003838001C700027C00020
00002000003000003FF8001FFF001FFF802003806001C0C000C0C000C0C000C060018030
03001C0E0007F800121C7F9215>I<FC00001C00001C00001C00001C00001C00001C0000
1C00001C00001C00001C00001C7C001C87001D03001E03801C03801C03801C03801C0380
1C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17>
I<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<00C001E001E0
00C0000000000000000000000000000007E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E060E0F0C0F1C061803E000B25839C
0D>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0000
1C0FE01C07801C06001C0C001C10001C20001C40001CE0001DE0001E70001C78001C3800
1C3C001C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>I<FC001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E0
1C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C
001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF80
21127F9124>I<FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03
801C03801C03801C03801C03801C03801C03801C0380FF9FF014127F9117>I<03F0000E
1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001C060018070
03803003001806000E1C0003F00012127F9115>I<FC7C001D87001E01801C01C01C00E0
1C00E01C00701C00701C00701C00701C00701C00701C00E01C00E01C01C01E01801D0700
1CFC001C00001C00001C00001C00001C00001C00001C0000FF8000141A7F9117>I<03E0
800E1980180580380780700380700380E00380E00380E00380E00380E00380E003807003
807003803807801807800E1B8003E3800003800003800003800003800003800003800003
80001FF0141A7F9116>I<FCE01D381E781E781C301C001C001C001C001C001C001C001C
001C001C001C001C00FFC00D127F9110>I<1F9020704030C010C010E010F8007F803FE0
0FF000F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C
001C003C00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C
100E2003C00C1A7F9910>I<FC1F801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C03801C03801C03801C03801C07800C07800E1B8003E3F014127F9117>
I<FF07E03C03801C01001C01000E02000E02000F060007040007040003880003880003C8
0001D00001D00000E00000E00000E00000400013127F9116>I<FF3FC7E03C0703C01C07
01801C0701001C0B01000E0B82000E0B82000E1182000711C4000711C4000720C40003A0
E80003A0E80003C0680001C0700001C0700001803000008020001B127F911E>I<FF0FE0
1E07001C06000E040007080003900003B00001E00000E00000F00001F000013800021C00
041C000C0E001807003C0780FE1FF014127F9116>I<FF07E03C03801C01001C01000E02
000E02000F060007040007040003880003880003C80001D00001D00000E00000E00000E0
00004000004000008000008000F08000F10000F30000660000380000131A7F9116>I<7F
FC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E
127F9112>I<FFFFF01401808B15>I<FFFFFFFFFF802901808B2A>I
E /FB 58 124 df<0000FE000003018000060180000C0380001C0180001C000000180000
0038000000380000003800000038000003FFFE0000700E0000700E0000700E0000701C00
00701C0000E01C0000E01C0000E0380000E0380000E0380001C0380001C0720001C07200
01C0720001C07200038034000380180003800000030000000300000007000000C6000000
E6000000CC000000780000001925819C17>12 D<0000FE0FF0000307380C000607700C00
0E06601C001C00E00C001C00C000001C01C000001C01C000003801C000003801C0000038
03800003FFFFFFF000380380700070038070007003807000700700E000700700E0007007
00E000E00700E000E00701C000E00701C000E00E01C000E00E01C001C00E038801C00E03
8801C00E038801C01C039001C01C019001801C00E003801C000003803800000300380000
0300300000C730300000E638600000CC30C00000781F0000002625819C25>14
D<183C3C3C0404080810204080060C779C0D>39 D<00030006000800180030006000C000
C0018003000300060006000C000C001C0018001800380030003000700070006000600060
006000E000E000E000E000E0006000600060006000600020003000100008000800102A7B
9E11>I<001000100008000C000400060006000600060006000700070007000700070006
000600060006000E000E000C000C001C001800180038003000300060006000C000C00180
0300030006000C00180010006000C000102A809E11>I<18387838080810102040408005
0C7D830D>44 D<FFC0FFC0FFC00A037D890F>I<3078F06005047C830D>I<001F000060C0
0080C00100600200600240600440E00440E00440E00481C00301C000038000070000FC00
001C00000600000600000700000700000700000700700700E00E00800E00801C00401800
40300020E0001F8000131D7D9B15>51 D<060F0F06000000000000000000003078F06008
127C910D>58 D<0FFFFFE01FFFFFF0000000000000000000000000000000000000000000
0000000000000000000000FFFFFF807FFFFF001C0C7C8F20>61 D<000018000000180000
0038000000380000007800000078000000B800000138000001380000023C0000021C0000
041C00000C1C0000081C0000101C0000101C0000201C0000201C00007FFC0000C01C0000
801C0001001C0001001E0002000E0002000E0004000E000C000E001C001E00FF00FFC01A
1D7E9C1F>65 D<01FFFF00003C0380003801C0003800E0003800E0003800E0007000E000
7001E0007001E0007003C000E0038000E00F0000E01E0000FFFC0001C00E0001C0070001
C0078001C007800380078003800780038007800380078007000F0007000E0007001E0007
003C000E00F000FFFFC0001B1C7E9B1D>I<0003F020001E0C60003002E000E003C001C0
01C0038001C0070000C00E0000801E0000801C0000803C0000803C000000780000007800
000078000000F0000000F0000000F0000000F0000000F0000400F0000400F0000400F000
0800700008007000100038002000180040000C0180000706000001F800001B1E7A9C1E>
I<01FFFF00003C03C0003800E0003800E000380070003800700070007800700038007000
380070007800E0007800E0007800E0007800E0007801C000F001C000F001C000F001C000
E0038001E0038001C0038003C0038003800700070007000E0007001C00070038000E00E0
00FFFF80001D1C7E9B1F>I<01FFFFF0003C00F000380030003800200038002000380020
0070002000700020007008200070080000E0100000E0100000E0300000FFF00001C02000
01C0200001C0200001C02000038040800380008003800080038001000700010007000300
07000200070006000E003C00FFFFFC001C1C7E9B1C>I<01FFFFF0003C00F00038003000
38002000380020003800200070002000700020007008200070080000E0100000E0100000
E0300000FFF00001C0200001C0200001C0200001C0200003804000038000000380000003
800000070000000700000007000000070000000F000000FFF000001C1C7E9B1B>I<0003
F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000801E0000801C00
00803C0000803C000000780000007800000078000000F0000000F0000000F001FF80F000
1E00F0001C00F0001C00F0001C00F0001C00700038007000380038003800180078000C00
90000707100001F800001B1E7A9C20>I<01FFC3FF80003C007800003800700000380070
0000380070000038007000007000E000007000E000007000E000007000E00000E001C000
00E001C00000E001C00000FFFFC00001C003800001C003800001C003800001C003800003
8007000003800700000380070000038007000007000E000007000E000007000E00000700
0E00000F001E0000FFE1FFC000211C7E9B1F>I<03FF0078007000700070007000E000E0
00E000E001C001C001C001C0038003800380038007000700070007000E000E000E000E00
1E00FFC0101C7D9B10>I<01FFC07F80003C001E00003800180000380020000038004000
0038008000007002000000700400000070080000007010000000E040000000E0C0000000
E1C0000000E2E0000001C4E0000001D070000001E070000001C070000003803800000380
380000038018000003801C000007001C000007000E000007000E000007000E00000F000F
0000FFE07FC000211C7E9B20>75 D<01FE0001FE003E0001E0002E0003C0002E0005C000
2E0005C0002E0009C0004E000B80004E001380004E002380004700238000870047000087
004700008700870000870107000107010E000107020E000107040E000107040E00020708
1C000203881C000203901C000203A01C000403A038000403C038000403C038000C038038
001C03007800FF8307FF00271C7E9B25>77 D<01FC00FF80001C001C00002E001800002E
001000002E001000002700100000470020000043002000004380200000438020000081C0
40000081C040000081C040000080E040000100E080000100708000010070800001007080
0002003900000200390000020039000002001D000004001E000004000E000004000E0000
0C000E00001C00040000FF80040000211C7E9B1F>I<0007F000001C1C0000700E0000E0
070001C0038003800380070003800E0003C01E0003C01C0003C03C0003C03C0003C07800
03C0780003C0780003C0F0000780F0000780F0000780F0000F00F0000F00F0000E00F000
1E00F0003C0070003800700070007800E0003801C0001C0380000E0E000003F800001A1E
7A9C20>I<01FFFE00003C0380003801C0003800E0003800E0003800E0007001E0007001
E0007001E0007001C000E003C000E0038000E0070000E01C0001FFF00001C0000001C000
0001C0000003800000038000000380000003800000070000000700000007000000070000
000F000000FFE000001B1C7E9B1C>I<0007F000001C1C0000700E0000E0070001C00780
03800380070003800E0003C01E0003C01C0003C03C0003C03C0003C0780003C0780003C0
780003C0F0000780F0000780F0000780F0000F00F0000F00F0000E00F0001E00F0001C00
70783800708070007104E0003905C0001D0780000F0E040003FC040000040C0000060800
000E1800000FF0000007F0000007E000000380001A257A9C20>I<01FFFE00003C078000
3801C0003801E0003800E0003800E0007001E0007001E0007001E0007003C000E0038000
E0070000E01C0000FFE00001C0300001C0180001C01C0001C01C0003801C0003801C0003
801C0003801C0007003C0007003C2007003C2007003C200F003C40FFE01E8000000F001B
1D7E9B1E>I<000F8400304C00403C008018010018030018030018060010060010060000
07000007000003E00003FC0001FF00007F800007C00001C00001C00000C00000C02000C0
2000C0600180600180600300600200F00400CC180083E000161E7D9C17>I<1FFFFFC01C
0701C0300E00C0200E0080600E0080400E0080401C0080801C0080801C0080001C000000
3800000038000000380000003800000070000000700000007000000070000000E0000000
E0000000E0000000E0000001C0000001C0000001C0000001C0000003C000007FFE00001A
1C799B1E>I<7FF03FE00F0007000E0006000E0004000E0004000E0004001C0008001C00
08001C0008001C0008003800100038001000380010003800100070002000700020007000
200070002000E0004000E0004000E0004000E0008000E0008000E0010000600200006004
0000300800001830000007C000001B1D789B1F>I<FF801FC03C0007001C0004001C0004
001C0008001C0010001C0010001C0020001C0020001C0040001C0080001C0080000E0100
000E0100000E0200000E0400000E0400000E0800000E0800000E1000000E2000000F2000
00074000000740000007800000070000000700000006000000060000001A1D779B1F>I<
FF83FF07F03C007001C038007001803800F001003800F001003801700200380170040038
027004003802700800380470080038047010003808701000380870200038107020003830
70400038207040001C407080001C407080001C807100001C807100001D007200001D0072
00001E007400001E007400001C003800001C003800001800300000180020000010002000
00241D779B29>I<01FF81FE003E0078001C0060001C00C0001E0080000E0100000F0200
0007040000070800000790000003A0000003E0000001C0000001C0000001E0000002E000
0004E0000008F00000107000002070000060380000C0380000803C0001001C0002001C00
06001E001E001E00FF007FC01F1C7E9B1F>I<01E307170C0F180F380E300E700E700EE0
1CE01CE01CE01CE039E039E0396079319A1E0C10127C9115>97 D<3F00070007000E000E
000E000E001C001C001C001C0039E03A183C0C380C700C700E700E700EE01CE01CE01CE0
18E038E030E06060C031801E000F1D7C9C13>I<00F803040E041C0E181C300070007000
E000E000E000E000E000E0046008601030600F800F127C9113>I<0007E00000E00000E0
0001C00001C00001C00001C000038000038000038000038001E7000717000C0F00180F00
380E00300E00700E00700E00E01C00E01C00E01C00E01C00E03900E03900E03900607900
319A001E0C00131D7C9C15>I<00F807040C0418023804300470087FF0E000E000E000E0
00E00060046008301030600F800F127C9113>I<0003C0000670000C70001C60001C0000
1C0000380000380000380000380000380003FF8000700000700000700000700000700000
E00000E00000E00000E00000E00001C00001C00001C00001C00001C00003800003800003
8000030000030000070000C60000E60000CC00007800001425819C0D>I<0078C001C5C0
0303C00603C00E03800C03801C03801C0380380700380700380700380700380E00380E00
380E00181E000C7C00079C00001C00001C00003800003800C03000E07000C1C0007F0000
121A7E9113>I<0FC00001C00001C0000380000380000380000380000700000700000700
000700000E3E000EC3000F03800E03801E03801C03801C03801C03803807003807003807
00380E00700E40700E40701C40701C80E00C80600700121D7E9C15>I<01800380010000
000000000000000000000000001C002600470047008E008E000E001C001C001C00380038
00710071007100720072003C00091C7C9B0D>I<00030007000300000000000000000000
000000000078008C010C020C021C041C001C001C00380038003800380070007000700070
00E000E000E000E001C001C0C180E300C60078001024819B0D>I<0FC00001C00001C000
0380000380000380000380000700000700000700000700000E07800E08800E11C00E21C0
1C41801C80001D00001E00003FC00038E000387000387000707100707100707100707200
E03200601C00121D7E9C13>I<1F800380038007000700070007000E000E000E000E001C
001C001C001C0038003800380038007000700070007000E200E200E200E4006400380009
1D7D9C0B>I<1C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E03
80E01C0701C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C
0320300C01C01D127C9122>I<383E004CC3004D03804E03809E03809C03801C03801C03
80380700380700380700380E00700E40700E40701C40701C80E00C8060070012127C9117
>I<00F800030C000E06001C0300180300300300700380700380E00700E00700E00700E0
0E00E00E00E01C0060180060300030E0000F800011127C9115>I<03878004C86004D030
04E03009C03009C03801C03801C0380380700380700380700380600700E00700C0070180
0783000E86000E78000E00000E00001C00001C00001C00001C0000380000FF0000151A80
9115>I<1C3C2642468747078E068E000E000E001C001C001C001C003800380038003800
7000300010127C9112>114 D<01F006080C080C1C18181C001F001FC00FF007F0007800
386030E030C030806060C01F000E127D9111>I<03000700070007000E000E000E000E00
FFE01C001C001C0038003800380038007000700070007000E080E080E100E10066003800
0B1A7C990E>I<1C01802E03804E03804E03808E07008E07001C07001C0700380E00380E
00380E00380E00301C80301C80301C80383C80184D000F860011127C9116>I<1C062E0E
4E064E068E028E021C021C023804380438043808300830083010382018400F800F127C91
13>I<1E01832703874703874703838707018707010E07010E07011C0E021C0E021C0E02
1C0E04180C04181C04181C081C1E080C263007C3C018127C911C>I<0387800CC8400870
E01070E020E0C020E00000E00000E00001C00001C00001C00001C000038100638100E382
00C5820085840078780013127E9113>I<1C01802E03804E03804E03808E07008E07001C
07001C0700380E00380E00380E00380E00301C00301C00301C00383C001878000FB80000
3800003000007000E06000E0C0008180004300003C0000111A7C9114>I<FFFFC012017C
8B15>123 D E /FC 44 123 df<001F83E000F06E3001C078780380F8780300F0300700
7000070070000700700007007000070070000700700007007000FFFFFF80070070000700
700007007000070070000700700007007000070070000700700007007000070070000700
7000070070000700700007007000070070000700700007007000070070003FE3FF001D20
809F1B>11 D<70F0F8F878080808101010202040050E7C840D>44
D<FFF0FFF00C02808A0F>I<70F8F8F87005057C840D>I<00010000000380000003800000
0380000007C0000007C0000007C0000009E0000009E0000009E0000010F0000010F00000
10F00000207800002078000020780000403C0000403C0000C03E0000801E0000801E0001
FFFF0001000F0001000F00020007800200078002000780040003C0040003C00C0003C01E
0003E0FF801FFE1F207F9F22>65 D<FFFFE0000F0078000F001E000F001E000F000F000F
000F800F000F800F000F800F000F800F000F800F000F000F001F000F001E000F007C000F
FFF0000F007C000F001F000F000F800F0007C00F0003C00F0003E00F0003E00F0003E00F
0003E00F0003E00F0003C00F0007C00F0007800F000F000F003E00FFFFF0001B1F7E9E20
>I<000FE01000381C3000E0027003C00170078000F00F0000701E0000701E0000303C00
00303C0000107C00001078000010F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000780000007C0000103C0000103C0000101E0000201E00
00200F0000200780004003C0008000E0030000380C00000FF0001C217E9F21>I<FFFFF8
0007801E0007800780078003C0078001E0078000F0078000700780007807800078078000
3C0780003C0780003C0780003E0780003E0780003E0780003E0780003E0780003E078000
3E0780003E0780003C0780003C0780007C0780007807800078078000F0078001E0078003
C00780078007801E00FFFFF8001F1F7F9E23>I<FFFFFF800F000F800F0003800F000180
0F0000800F0000C00F0000400F0000400F0000400F0040400F0040000F0040000F00C000
0F01C0000FFFC0000F01C0000F00C0000F0040000F0040000F0040000F0000200F000020
0F0000200F0000400F0000400F0000400F0000C00F0001C00F0003800F000F80FFFFFF80
1B1F7E9E1F>I<000FE01000381C3000E0027003C00170078000F00F0000701E0000701E
0000303C0000303C0000107C00001078000010F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8003FFEF80001F0780000F07C0000F03C0000F03C0000F01E
0000F01E0000F00F0000F0078000F003C0017000E0023000380C10000FF0001F217E9F24
>71 D<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF00C1F7E9E10>73
D<07FFC0003E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E
00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00201E
00F81E00F81E00F81E00F01C00403C006038001070000FC00012207F9E17>I<FFF007FC
0F0003E00F0001800F0001000F0002000F0004000F0008000F0010000F0020000F004000
0F0080000F0100000F0300000F0780000F0F80000F13C0000F21E0000F41E0000F80F000
0F0078000F0078000F003C000F001E000F001E000F000F000F0007800F0007800F0003C0
0F0003E00F0003F0FFF01FFE1F1F7E9E23>I<FFF8000F80000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00020F00020F00020F00020F00060F00040F00040F000C0F001C0F00
7CFFFFFC171F7E9E1C>I<FF800007FE07800007C007800007C005C0000BC005C0000BC0
04E00013C004E00013C004E00013C004700023C004700023C004380043C004380043C004
380043C0041C0083C0041C0083C0040E0103C0040E0103C0040E0103C004070203C00407
0203C004070203C004038403C004038403C00401C803C00401C803C00401C803C00400F0
03C00400F003C004006003C01F006003C0FFE0607FFE271F7F9E2A>I<FFFFE0000F007C
000F001E000F000F000F0007800F0007800F0007C00F0007C00F0007C00F0007C00F0007
800F0007800F000F000F001E000F007C000FFFE0000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F000000FFF000001A1F7E9E1F>80 D<FFFF80000F00F0000F003C000F001E000F000F
000F000F000F000F800F000F800F000F800F000F800F000F000F000F000F001E000F003C
000F00F0000FFF80000F01C0000F0070000F0070000F0038000F003C000F003C000F003C
000F003E000F003E000F003E000F003E040F003F040F001F040F000F08FFF00788000001
F01E207E9E21>82 D<03F0400C0CC01803C03001C06000C06000C0E000C0E00040E00040
E00040F00000F800007C00007F80003FF8001FFF0007FF8000FFC0001FE00003E00001E0
0000F0000070800070800070800070800070C00060C000E0E000C0F80180C6030081FC00
14217E9F19>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F0030800F001080
0F0010800F0010800F0010000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000001F800003FFFC001C1F7E9E21>I<FFF003FE1F80
00F80F0000600F00002007800040078000400780004003C0008003C0008003E0018001E0
010001E0010000F0020000F0020000F802000078040000780400003C0800003C0800003C
0800001E1000001E1000001F1000000F2000000F20000007C0000007C0000007C0000003
80000003800000038000000100001F207F9E22>86 D<FFF07FF81FF01F000FC007C00F00
078001800F00078001000F0007C001000F8007C00300078007C00200078009E0020007C0
09E0020003C009E0040003C019F0040003C010F0040001E010F0080001E010F0080001E0
2078080000F02078100000F02078100000F0403C10000078403C20000078403C20000078
801E2000007C801E6000003C801E4000003D000F4000003F000F4000001F000F8000001F
000F8000001E00078000000E00070000000E00070000000C000300000004000200002C20
7F9E2F>I<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E001E
0E00380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>97
D<1C0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00
001C7C001D87001E01801E00C01C00E01C00701C00701C00781C00781C00781C00781C00
781C00781C00701C00F01C00E01E00C01A0180198700107C0015207E9F19>I<01FC0007
06001C0F00380F00380600780000700000F00000F00000F00000F00000F00000F0000070
00007800003800803800801C010007060001F80011147F9314>I<0001C0000FC00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C001F1C0070DC00C03C0
1801C03801C07801C07001C0F001C0F001C0F001C0F001C0F001C0F001C07001C07001C0
3801C01803C00C03C0070DC001F1F815207F9F19>I<03F0000E1C001C0E003807003807
00700700700380F00380F00380FFFF80F00000F00000F000007000007000003800803800
801C010007060001F80011147F9314>I<0000E003E3300E3C301C1C30380E00780F0078
0F00780F00780F00780F00380E001C1C001E380033E0002000002000003000003000003F
FE001FFF801FFFC03001E0600070C00030C00030C00030C000306000603000C01C038003
FC00141F7F9417>103 D<1C0000FC00001C00001C00001C00001C00001C00001C00001C
00001C00001C00001C00001C7C001C86001D03001E03801E03801C03801C03801C03801C
03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF8FF014
207E9F19>I<38007C007C007C0038000000000000000000000000001C00FC001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091F7F9E
0C>I<1C0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C0000
1C00001C1FE01C07801C06001C04001C08001C10001C20001C60001CE0001DF0001E7000
1C38001C3C001C1C001C0E001C0F001C07001C07801C07C0FF9FF014207E9F18>107
D<1C00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C00FF8009207F9F0C>I<
1C3E03E000FCC30C30001D039038001E01E01C001E01E01C001C01C01C001C01C01C001C
01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01
C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021147E9326>I<1C
7C00FC86001D03001E03801E03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C03801C03801C03801C0380FF8FF014147E9319>I<01F800070E00
1C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E0
7000E03801C03801C01C0380070E0001F80014147F9317>I<1C7C00FD87001E01801E01
C01C00E01C00F01C00701C00781C00781C00781C00781C00781C00781C00701C00F01C00
E01E01C01E03801D87001C7C001C00001C00001C00001C00001C00001C00001C00001C00
00FF8000151D7E9319>I<1CF0FD181E3C1E3C1E181C001C001C001C001C001C001C001C
001C001C001C001C001C001C00FFC00E147E9312>114 D<0FC830386018C008C008C008
E0007C003FE01FF007F8003C800E8006C006C006C004E00CD81887E00F147F9312>I<02
0002000200060006000E000E003E00FFF80E000E000E000E000E000E000E000E000E000E
000E000E040E040E040E040E040708030801F00E1C7F9B12>I<1C0380FC1F801C03801C
03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C07800C0780061B8003E3F014147E9319>I<FF83F83E00E01C00C00E00800E0080
0E008007010007010007830003820003820001C40001C40001E40000E80000E800007000
00700000700000200015147F9318>I<FF9FE1FC3C0780701C0300601C0380200E038040
0E0380400E03C0400704C0800704E0800704E08003886100038871000388710001D03200
01D03A0001D03E0000E01C0000E01C0000601800004008001E147F9321>I<FF87F81E03
C00E01800E030007020003840001C80001D80000F00000700000780000F800009C00010E
00020E000607000403800C03C03C03E0FE07FC16147F9318>I<FF83F83E00E01C00C00E
00800E00800E008007010007010007830003820003820001C40001C40001E40000E80000
E800007000007000007000002000002000004000004000004000F08000F08000F1000062
00003C0000151D7F9318>I<7FFF700E600E401C40384078407000E001E001C003800780
07010E011E011C0338027006700EFFFE10147F9314>I E /FD 62
122 df<000FE000007FF80000F81C0001E07C0003E07C0007C07C0007C07C0007C03800
07C0000007C0000007C0000007C1FE00FFFFFE00FFFFFE0007C03E0007C03E0007C03E00
07C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E00
07C03E0007C03E0007C03E0007C03E003FF9FFC03FF9FFC01A20809F1D>12
D<FFF0FFF0FFF0FFF00C047F8B11>45 D<387CFEFEFE7C3807077C860F>I<01FC0007FF
001F07C01E03C03E03E07C01F07C01F07C01F0FC01F8FC01F8FC01F8FC01F8FC01F8FC01
F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F87C01F07C01F07C01F03E03E01E03
C01F8FC007FF0001FC00151D7E9C1A>48 D<00700000F00007F000FFF000F9F00001F000
01F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F000
01F00001F00001F00001F00001F00001F00001F00001F00001F0007FFFC07FFFC0121D7D
9C1A>I<03FC001FFF80381FC07C07E0FE03F0FE03F0FE03F8FE01F87C01F83801F80003
F80003F00003F00007E0000FC0000F00001E00003C0000700000E00001C0180380180600
180C00381FFFF03FFFF07FFFF0FFFFF0FFFFF0151D7E9C1A>I<03FC000FFF801C0FC03C
07E07E03F07E03F07E03F07E07F03C07E00007E0000FC0003F8003FE0003FC00000F8000
07C00003E00003F00003F83803F87C03F8FE03F8FE03F8FE03F0FC03F07807E03C0FC01F
FF8003FC00151D7E9C1A>I<0001C00003C00007C00007C0000FC0001FC0003BC00073C0
0063C000C3C00183C00383C00703C00E03C00C03C01803C03803C07003C0E003C0FFFFFE
FFFFFE0007C00007C00007C00007C00007C00007C000FFFE00FFFE171D7F9C1A>I<1C00
E01FFFE01FFFC01FFF801FFF001FFC001FC00018000018000018000018000019FE001FFF
801E07C01803E01001F00001F00001F80001F87801F8FC01F8FC01F8FC01F8FC01F07803
F07003E03C0FC00FFF0003FC00151D7E9C1A>I<003F0001FFC007C0E00F81E01F03F01E
03F03E03F07C03F07C01E07C0000FC1000FCFF00FDFFC0FD03E0FE01F0FE01F0FC01F8FC
01F8FC01F8FC01F87C01F87C01F87C01F83C01F03E01F01E03E00F07C007FF8001FE0015
1D7E9C1A>I<6000007FFFF87FFFF87FFFF07FFFE07FFFC0E00180C00300C00300C00600
000C0000180000380000300000700000F00000F00001E00001E00003E00003E00003E000
03E00007E00007E00007E00007E00007E00003C000018000151E7D9D1A>I<01FE000FFF
801E07C03801E03800F07800F07800F07C00F07F00F07FC1E03FE3C01FFF800FFE0007FF
8007FFC01FFFE03C3FF0780FF07803F8F001F8F000F8F00078F00078F000707800707C00
E03E03C00FFF8003FC00151D7E9C1A>I<01FC000FFF001F07803E03C07C03E07C01E0FC
01F0FC01F0FC01F0FC01F8FC01F8FC01F8FC01F87C03F87C03F83E05F81FFDF807F9F800
41F80001F03C01F07E01F07E03E07E03E07E03C03C0780381F001FFC0007F000151D7E9C
1A>I<387CFEFEFE7C38000000000000387CFEFEFE7C3807147C930F>I<07F8001FFE0038
1F80780F80FC0FC0FC0FC0FC0FC0780FC0301F80001F00003E00007C0000700000E00000
E00000C00000C00000C00000C00000C00000C00000000000000000000000000001C00003
E00007F00007F00007F00003E00001C00012207D9F19>63 D<0000E000000000E0000000
01F000000001F000000001F000000003F800000003F800000006FC00000006FC0000000E
FE0000000C7E0000000C7E000000183F000000183F000000303F800000301F800000701F
C00000600FC00000600FC00000C007E00000FFFFE00001FFFFF000018003F000038003F8
00030001F800030001F800060000FC00060000FC000E0000FE00FFE00FFFE0FFE00FFFE0
231F7E9E28>65 D<FFFFFE00FFFFFFC007C007E007C003F007C001F807C001FC07C001FC
07C001FC07C001FC07C001FC07C001F807C003F807C003F007C00FE007FFFF8007FFFFC0
07C003F007C001F807C001FC07C000FC07C000FE07C000FE07C000FE07C000FE07C000FE
07C000FC07C001FC07C003F807C007F0FFFFFFE0FFFFFF001F1F7E9E25>I<0007FC0200
3FFF0E00FE03DE03F000FE07E0003E0FC0001E1F80001E3F00000E3F00000E7F0000067E
0000067E000006FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E
0000007E0000067F0000063F0000063F00000C1F80000C0FC0001807E0003803F0007000
FE01C0003FFF800007FC001F1F7D9E26>I<FFFFFE0000FFFFFFC00007E007F00007E001
F80007E000FC0007E0007E0007E0003F0007E0003F0007E0001F8007E0001F8007E0001F
8007E0001FC007E0001FC007E0001FC007E0001FC007E0001FC007E0001FC007E0001FC0
07E0001FC007E0001FC007E0001F8007E0001F8007E0001F8007E0003F0007E0003F0007
E0007E0007E000FC0007E001F80007E007F000FFFFFFC000FFFFFE0000221F7E9E28>I<
FFFFFFE0FFFFFFE007E007E007E001E007E000E007E0006007E0007007E0003007E00030
07E0303007E0303007E0300007E0700007E0F00007FFF00007FFF00007E0F00007E07000
07E0300007E0300C07E0300C07E0000C07E0001807E0001807E0001807E0003807E00078
07E000F807E003F0FFFFFFF0FFFFFFF01E1F7E9E22>I<FFFFFFE0FFFFFFE007E007E007
E001E007E000E007E0006007E0007007E0003007E0003007E0303007E0303007E0300007
E0700007E0F00007FFF00007FFF00007E0F00007E0700007E0300007E0300007E0300007
E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000FFFF8000FF
FF80001C1F7E9E21>I<0007FC0200003FFF0E0000FE03DE0003F000FE0007E0003E000F
C0001E001F80001E003F00000E003F00000E007F000006007E000006007E00000600FE00
000000FE00000000FE00000000FE00000000FE00000000FE001FFFE0FE001FFFE07E0000
7E007E00007E007F00007E003F00007E003F00007E001F80007E000FC0007E0007E0007E
0003F000FE0000FE01FE00003FFF8E000007FC0600231F7D9E29>I<FFFF0FFFF0FFFF0F
FFF007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E
0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007FFFFFE0007FFFFFE00
07E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007
E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E00FFFF0FFFF0FFFF
0FFFF0241F7E9E29>I<FFFFFFFF07E007E007E007E007E007E007E007E007E007E007E0
07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0FFFFFFFF
101F7E9E14>I<03FFFC03FFFC000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F
C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F
C0100FC07C0FC0FE0FC0FE0FC0FE0F80FC1F80783F003FFE000FF000161F7F9E1B>I<FF
FF8000FFFF800007E0000007E0000007E0000007E0000007E0000007E0000007E0000007
E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007
E0000007E000C007E000C007E000C007E001C007E001C007E001C007E0038007E0038007
E00F8007E01F80FFFFFF80FFFFFF801A1F7E9E1F>76 D<FFE000003FF8FFF000007FF807
F000007F0006F80000DF0006F80000DF0006F80000DF00067C00019F00067C00019F0006
3E00031F00063E00031F00061F00061F00061F00061F00060F800C1F00060F800C1F0006
07C0181F000607C0181F000607C0181F000603E0301F000603E0301F000601F0601F0006
01F0601F000600F8C01F000600F8C01F0006007D801F0006007D801F0006003F001F0006
003F001F0006003F001F0006001E001F00FFF01E03FFF8FFF00C03FFF82D1F7E9E32>I<
FFE000FFF0FFF000FFF007F000060007F800060006FC000600067E000600063F00060006
3F800600061F800600060FC006000607E006000603F006000601F806000601FC06000600
FC060006007E060006003F060006001F860006001FC60006000FE600060007E600060003
F600060001FE00060000FE00060000FE000600007E000600003E000600001E000600000E
00FFF0000600FFF0000600241F7E9E29>I<001FF80000FFFF0001F81F8007E007E00FC0
03F01F8001F81F0000F83F0000FC7F0000FE7E00007E7E00007EFE00007FFE00007FFE00
007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F7E00007E7F0000FE7F00
00FE3F0000FC3F8001FC1F8001F80FC003F007E007E001F81F8000FFFF00001FF800201F
7D9E27>I<FFFFFE00FFFFFF8007E00FE007E003F007E001F807E001F807E001FC07E001
FC07E001FC07E001FC07E001FC07E001F807E001F807E003F007E00FE007FFFF8007FFFE
0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
0007E0000007E0000007E00000FFFF0000FFFF00001E1F7E9E24>I<001FF80000FFFF00
01F81F8007E007E00FC003F01F8001F81F8001F83F0000FC7F0000FE7F0000FE7E00007E
FE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F
7E00007E7E00007E7F0000FE3F0000FC3F87C1FC1F8FE1F80FD833F007F81FE001F81F80
00FFFF00001FFE0300000E0300000F0700000FFF000007FF000007FE000007FE000003FC
000001F8000000F020287D9E27>I<FFFFFC0000FFFFFF800007E00FE00007E003F00007
E003F80007E001F80007E001FC0007E001FC0007E001FC0007E001FC0007E001F80007E0
03F80007E003F00007E00FE00007FFFF800007FFFC000007E03F000007E00F800007E00F
C00007E007C00007E007E00007E007E00007E007E00007E007F00007E007F00007E007F0
0007E007F03007E003F83007E001F860FFFF00FFC0FFFF003F80241F7E9E27>I<03FC08
0FFF381E03F83800F8700078700038F00038F00018F00018F80000FC00007FC0007FFE00
3FFF801FFFC00FFFE007FFF000FFF80007F80000FC00007C00003CC0003CC0003CC0003C
E00038E00078F80070FE01E0EFFFC081FF00161F7D9E1D>I<7FFFFFFC7FFFFFFC7C07E0
7C7007E01C6007E00C6007E00CE007E00EC007E006C007E006C007E006C007E0060007E0
000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0
000007E0000007E0000007E0000007E0000007E0000007E0000007E00003FFFFC003FFFF
C01F1E7E9D24>I<FFFF01FFE0FFFF01FFE007E0000C0007E0000C0007E0000C0007E000
0C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C
0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C00
07E0000C0007E0000C0007E0000C0007E0000C0003E000180001F000180001F000300000
F8006000007E03C000001FFF80000003FC0000231F7E9E28>I<FFFE003FF8FFFE003FF8
0FE000038007E000030007F000070003F000060003F800060001F8000C0001FC000C0000
FC00180000FC001800007E003000007E003000007F007000003F006000003F80E000001F
80C000001FC0C000000FC18000000FC180000007E300000007E300000003F600000003F6
00000003FE00000001FC00000001FC00000000F800000000F80000000070000000007000
00251F7F9E28>I<FFFC0FFFC0FFE0FFFC0FFFC0FFE00FC000FC000E000FE000FC000E00
07E000FE000C0007E000FE000C0007F000FE001C0003F001BF00180003F001BF00180001
F801BF00300001F8031F80300001F8031F80300000FC071FC0600000FC060FC0600000FE
060FC0E000007E0C07E0C000007E0C07E0C000003F0C07E18000003F1803F18000003F18
03F18000001FB803FB0000001FB001FB0000001FF001FF0000000FE000FE0000000FE000
FE00000007E000FC00000007C0007C00000007C0007C00000003C0007800000003800038
000000018000300000331F7F9E36>I<FFFE07FF80FFFE07FF8007F000700003F000E000
03F800C00001FC01800000FE038000007E070000007F060000003F8C0000001FDC000000
0FF80000000FF000000007F000000003F800000003F800000003FC00000003FE00000006
7E0000000E7F0000001C3F800000181FC00000300FC00000700FE00000E007F00001C003
F800018001F800030001FC00070000FE00FFF007FFE0FFF007FFE0231F7E9E28>I<07FC
001FFF803F07C03F03E03F01F03F01F00C01F00001F0003FF007FDF01F81F03E01F07C01
F0F801F0F801F0F801F0FC02F07E0CF03FF87E0FE03E17147F9319>97
D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00
001F1FC01F7FF01FE0F81F807C1F007E1F003E1F003E1F003F1F003F1F003F1F003F1F00
3F1F003F1F003E1F003E1F007C1F807C1EC1F81C7FE0181F8018207E9F1D>I<01FE0007
FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC0000FC0000FC0000FC0000FC00007C
00007E00003E00603F00C01F81C007FF0001FC0013147E9317>I<0007F80007F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F801F8F807FEF81F83F8
3E01F87E00F87C00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87C00F8
7E00F83E01F81F07F80FFEFF03F8FF18207E9F1D>I<01FE0007FF800F83C01E01E03E00
F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00003E00181E00
180F807007FFE000FF8015147F9318>I<003F8000FFC003E3E007C7E00787E00F87E00F
83C00F80000F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80000F
80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007F
F8007FF80013207F9F10>I<03FC3C0FFFFE1E079E3C03DE7C03E07C03E07C03E07C03E0
7C03E03C03C01E07801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC
78007C70003EF0001EF0001EF0001E78003C78003C3F01F80FFFE001FF00171E7F931A>
I<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00
001F0FC01F3FE01F61F01FC0F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18207D9F1D>I<1C003E00
7F007F007F003E001C00000000000000000000000000FF00FF001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B217EA00E>I<FF0000
FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F01FE
1F01FE1F00F01F00C01F03801F07001F0C001F18001F7C001FFC001F9E001F0F001E0F80
1E07C01E03C01E01E01E01F01E00F8FFC3FFFFC3FF18207E9F1C>107
D<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B207E9F0E>I<
FE0FE03F80FE1FF07FC01E70F9C3E01E407D01F01E807E01F01F807E01F01F007C01F01F
007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F00
7C01F01F007C01F01F007C01F01F007C01F0FFE3FF8FFEFFE3FF8FFE27147D932C>I<FE
0FC0FE3FE01E61F01EC0F81E80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18147D931D>I<01FF0007FFC0
1F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007E7C007C
7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>I<FF1FC0FF7FF01FE1F81F80
FC1F007E1F007E1F003E1F003F1F003F1F003F1F003F1F003F1F003F1F003E1F007E1F00
7C1F80FC1FC1F81F7FE01F1F801F00001F00001F00001F00001F00001F00001F0000FFE0
00FFE000181D7E931D>I<01F81807FE381F87783F01F83E01F87E00F87C00F8FC00F8FC
00F8FC00F8FC00F8FC00F8FC00F87C00F87E00F87E00F83F01F81F87F80FFEF803F8F800
00F80000F80000F80000F80000F80000F80000F80007FF0007FF181D7E931C>I<FE3E00
FE7F801ECFC01E8FC01E8FC01F8FC01F03001F00001F00001F00001F00001F00001F0000
1F00001F00001F00001F00001F0000FFF000FFF00012147E9316>I<0FE63FFE701E600E
E006E006F800FFC07FF83FFC1FFE03FE001FC007C007E007F006F81EFFFCC7F010147E93
15>I<0300030003000300070007000F000F003F00FFFCFFFC1F001F001F001F001F001F
001F001F001F001F001F061F061F061F061F060F8C07F803F00F1D7F9C14>I<FF07F8FF
07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F01F81F01F80F06F807FCFF03F8FF18147D931D>I<FFE07F80FFE07F801F
001C000F8018000F80180007C0300007C0300003E0600003E0600003F0E00001F0C00001
F9C00000F9800000FF8000007F0000007F0000003E0000003E0000001C0000001C000019
147F931C>I<FFC7FE1FE0FFC7FE1FE01F00F003001F00F803000F80F806000F80F80600
0FC1BC0E0007C1BC0C0007C3BE0C0003E31E180003E31E180003F60F380001F60F300001
FE0FB00000FC07E00000FC07E00000F803E000007803C000007803C00000300180002314
7F9326>I<FFC0FF00FFC0FF000F80700007C0600007E0C00003E1800001F3800000FF00
00007E0000003E0000003F0000007F8000006F800000C7C0000183E0000381F0000700F8
000E00FC00FF81FF80FF81FF8019147F931C>I<FFE07F80FFE07F801F001C000F801800
0F80180007C0300007C0300003E0600003E0600003F0E00001F0C00001F9C00000F98000
00FF8000007F0000007F0000003E0000003E0000001C0000001C00000018000000180000
78300000FC300000FC600000C0E00000E1C000007F8000001E000000191D7F931C>I
E /FE 36 125 df<0001FF81FE00001FFFEFFF80007F80FF87C000FC00FE0FE001F801FE
0FE003F801FC0FE007F001FC0FE007F001FC07C007F001FC000007F001FC000007F001FC
000007F001FC000007F001FC000007F001FC000007F001FC0000FFFFFFFFF800FFFFFFFF
F800FFFFFFFFF80007F001FC000007F001FC000007F001FC000007F001FC000007F001FC
000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC
000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC
000007F001FC000007F001FC000007F001FC000007F001FC00007FFF1FFFE0007FFF1FFF
E0007FFF1FFFE0002B2A7FA928>11 D<0001FF0000001FFFC000007F80F00000FC00F800
01F801F80003F803FC0007F003FC0007F003FC0007F003FC0007F001F80007F000F00007
F000000007F000000007F000000007F0000000FFFFFFFC00FFFFFFFC00FFFFFFFC0007F0
01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001
FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC
0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC007FFF1FFFC0
7FFF1FFFC07FFF1FFFC0222A7FA926>I<0001FFFC00001FFFFC00007F81FC0000FC01FC
0001F801FC0003F801FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC00
07F001FC0007F001FC0007F001FC0007F001FC00FFFFFFFC00FFFFFFFC00FFFFFFFC0007
F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F0
01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001
FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC007FFF1FFF
C07FFF1FFFC07FFF1FFFC0222A7FA926>I<00030007000E001C0038007000F001E003C0
03C007C007800F800F001F001F003F003E003E007E007E007E007C007C00FC00FC00FC00
FC00FC00FC00FC00FC00FC00FC00FC00FC007C007C007E007E007E003E003E003F001F00
1F000F000F80078007C003C003C001E000F000700038001C000E00070003103C7AAC1B>
40 D<8000C000E000700038001C001E000F000780078007C003C003E001E001F001F001
F800F800F800FC00FC00FC007C007C007E007E007E007E007E007E007E007E007E007E00
7E007E007C007C00FC00FC00FC00F800F801F801F001F001E003E003C007C0078007800F
001E001C0038007000E000C00080000F3C7BAC1B>I<1C003E007F00FF80FF80FF807F00
3E001C000000000000000000000000000000000000001C003E007F00FF80FF80FF807F00
3E001C00091B7B9A13>58 D<FFFE0000001FFFC0FFFE0000001FFFC0FFFF0000003FFFC0
03FF0000003FF00003FF0000003FF00003BF80000077F00003BF80000077F000039FC000
00E7F000039FC00000E7F000038FE00001C7F000038FE00001C7F0000387F0000387F000
0387F0000387F0000387F0000387F0000383F8000707F0000383F8000707F0000381FC00
0E07F0000381FC000E07F0000380FE001C07F0000380FE001C07F0000380FF003807F000
03807F003807F00003807F003807F00003803F807007F00003803F807007F00003801FC0
E007F00003801FC0E007F00003800FE1C007F00003800FE1C007F00003800FE1C007F000
038007F38007F000038007F38007F000038003FF0007F000038003FF0007F000038001FE
0007F000038001FE0007F000038000FC0007F000038000FC0007F000FFFE00FC01FFFFC0
FFFE007801FFFFC0FFFE007801FFFFC03A297DA841>77 D<FFFFFFF800FFFFFFFF00FFFF
FFFFC003FC003FE003FC000FF003FC0007F803FC0007FC03FC0003FC03FC0003FE03FC00
03FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FC03FC0007
FC03FC0007F803FC000FF003FC003FE003FFFFFF8003FFFFFE0003FC00000003FC000000
03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003
FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000FFFF
F00000FFFFF00000FFFFF0000027297DA82F>80 D<FFFFF0003FFF80FFFFF0003FFF80FF
FFF0003FFF8003FE000001E00001FE000001C00001FF000001C00000FF000003800000FF
000003800000FF8000078000007F8000070000007FC0000F0000003FC0000E0000003FE0
001E0000001FE0001C0000001FF0001C0000000FF000380000000FF000380000000FF800
7800000007F8007000000007FC00F000000003FC00E000000003FE01E000000001FE01C0
00000001FF01C000000000FF038000000000FF038000000000FF8780000000007F870000
0000007FCF00000000003FCE00000000003FEE00000000001FFC00000000001FFC000000
00000FF800000000000FF800000000000FF8000000000007F0000000000007F000000000
0003E0000000000003E0000000000001C000000031297FA834>86
D<03FF80000FFFF0001F01F8003F807E003F807E003F803F001F003F800E003F8000003F
8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F803F803F803F003F807F003F
80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC03
FC1E1B7E9A21>97 D<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE0
0000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000
00000FE00000000FE00000000FE1FE00000FE7FF80000FFE07E0000FF801F0000FF000F8
000FE000FC000FE000FE000FE0007F000FE0007F000FE0007F000FE0007F800FE0007F80
0FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F000FE0007F000F
E0007F000FE000FE000FE000FC000FF001F8000FF803F0000F9E0FE0000F0FFF80000E01
FC0000212A7EA926>I<003FF80000FFFE0003F01F0007E03F800FC03F801F803F803F80
1F007F000E007F0000007F000000FF000000FF000000FF000000FF000000FF000000FF00
0000FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003F0
1E0000FFFC00003FE0001A1B7E9A1F>I<00003FF80000003FF80000003FF800000003F8
00000003F800000003F800000003F800000003F800000003F800000003F800000003F800
000003F800000003F800000003F800000003F800001FE3F80000FFFBF80003F83FF80007
E00FF8000FC007F8001F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF00
03F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003
F8007F0003F8007F0003F8003F8003F8001F8003F8000F8007F80007C00FF80003F03FFF
8000FFF3FF80003FC3FF80212A7EA926>I<003FE00001FFF80003F07E0007C01F000F80
1F801F800F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFF
FFE0FF000000FF000000FF0000007F0000007F0000007F0000003F8000E01F8000E00FC0
01C007E0038003F81F0000FFFE00001FF0001B1B7E9A20>I<0007F0003FFC00FE3E01F8
7F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFF
C0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF
807FFF807FFF80182A7EA915>I<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C383F00
7E107F007F007F007F007F007F007F007F007F007F007F007F003F007E001F007C001F80
FC000FC1F8001FFFE00018FF800038000000380000003C0000003E0000003FFFF8001FFF
FF001FFFFF800FFFFFC007FFFFE01FFFFFF03C0007F07C0001F8F80000F8F80000F8F800
00F8F80000F87C0001F03C0001E01F0007C00FC01F8003FFFE00007FF0001E287E9A22>
I<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE0000000
0FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
E00000000FE07F00000FE1FFC0000FE787E0000FEE03F0000FF803F0000FF803F8000FF0
03F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80212A7DA926
>I<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0
FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I<000700000F80001FC0003FE000
3FE0003FE0001FC0000F8000070000000000000000000000000000000000000000000000
FFE000FFE000FFE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
0FE0000FE0000FE0000FE0000FE0000FE0000FE07C0FE0FE0FE0FE0FC0FE1F80FE1F007C
3E003FFC000FF000133784AA15>I<FFE00000FFE00000FFE000000FE000000FE000000F
E000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000F
E000000FE01FFC0FE01FFC0FE01FFC0FE007800FE00F000FE01E000FE03C000FE078000F
E0E0000FE3C0000FE7C0000FEFE0000FFFE0000FFFF0000FF3F8000FE3F8000FC1FC000F
C0FE000FC07F000FC07F000FC03F800FC01FC00FC00FC00FC00FE0FFFC3FFEFFFC3FFEFF
FC3FFE1F2A7EA924>I<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7DA914>I<FFC07F800FF000
FFC1FFE03FFC00FFC383F0707E000FC603F8C07F000FCC01F9803F000FD801FF003F800F
F001FE003F800FF001FE003F800FE001FC003F800FE001FC003F800FE001FC003F800FE0
01FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001
FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC
003F800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3
FFF8351B7D9A3A>I<FFC07F0000FFC1FFC000FFC787E0000FCE03F0000FD803F0000FD8
03F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80
211B7D9A26>I<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F
0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF
0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001
FFFC00003FE0001D1B7E9A22>I<FFE1FE0000FFE7FF8000FFFE07E0000FF803F0000FF0
01F8000FE000FC000FE000FE000FE000FF000FE0007F000FE0007F000FE0007F800FE000
7F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F000FE000FF
000FE000FF000FE000FE000FE001FC000FF001F8000FF803F0000FFE0FE0000FEFFF8000
0FE1FC00000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
E00000000FE00000000FE0000000FFFE000000FFFE000000FFFE00000021277E9A26>I<
FFC1F0FFC7FCFFCE3E0FD87F0FD87F0FF07F0FF03E0FF01C0FE0000FE0000FE0000FE000
0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
FFFF00FFFF00FFFF00181B7E9A1C>114 D<03FE300FFFF01E03F03800F0700070F00070
F00070F80070FE0000FFE0007FFE007FFF803FFFE01FFFF007FFF800FFF80007FC6000FC
E0007CE0003CF0003CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B>I<0070
0000700000700000700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFF
F0FFFFF007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
0007F00007F00007F03807F03807F03807F03807F03807F03803F03803F87001F86000FF
C0001F8015267FA51B>I<FFE03FF800FFE03FF800FFE03FF8000FE003F8000FE003F800
0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
03F8000FE003F8000FE007F80007E007F80007E00FF80003F03BFF8001FFF3FF80003FC3
FF80211B7D9A26>I<FFFE03FF80FFFE03FF80FFFE03FF800FF000780007F000700007F8
00F00003F800E00003FC01E00001FC01C00001FC01C00000FE03800000FE03800000FF07
8000007F070000007F8F0000003F8E0000003FCE0000001FDC0000001FDC0000000FF800
00000FF80000000FF800000007F000000007F000000003E000000003E000000001C00000
211B7F9A24>I<FFFC3FFC0FFEFFFC3FFC0FFEFFFC3FFC0FFE0FE007E000E007F003F001
C007F003F001C007F807F803C003F807F8038003F807F8038001FC0EFC070001FC0EFC07
0001FC1EFE0F0000FE1C7E0E0000FE1C7E0E0000FF383F1E00007F383F1C00007F783F1C
00003FF01FB800003FF01FB800003FE00FF800001FE00FF000001FE00FF000000FC007E0
00000FC007E000000FC007E00000078003C00000078003C0002F1B7F9A32>I<FFFC0FFF
00FFFC0FFF00FFFC0FFF0007F003C00003F803800001FC07800000FE0F000000FF1E0000
007F3C0000003FF80000001FF00000001FF00000000FF000000007F000000007F8000000
0FFC0000001FFE0000001EFE0000003C7F000000783F800000F01FC00001E01FE00003C0
0FE00003C007F000FFF01FFF80FFF01FFF80FFF01FFF80211B7F9A24>I<FFFE03FF80FF
FE03FF80FFFE03FF800FF000780007F000700007F800F00003F800E00003FC01E00001FC
01C00001FC01C00000FE03800000FE03800000FF078000007F070000007F8F0000003F8E
0000003FCE0000001FDC0000001FDC0000000FF80000000FF80000000FF800000007F000
000007F000000003E000000003E000000001C000000001C0000000038000000003800000
38078000007C07000000FE0F000000FE0E000000FE1C000000FE3C0000007C780000003F
E00000000F8000000021277F9A24>I<3FFFFF803FFFFF803F007F003C00FE003801FE00
7803FC007803F8007007F800700FF000700FE000001FC000003FC000007F8000007F0000
00FF000001FE038001FC038003F8038007F803800FF007800FE007801FE007003FC00F00
3F801F007F007F00FFFFFF00FFFFFF00191B7E9A1F>I<FFFFFFFF80FFFFFFFF80210280
9122>I<FFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFF04402809145>I
E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin

%%EndSetup
%%Page: 1 1
1 0 bop 291 507 a FE(PVM:)23 b(P)n(arallel)e(Virtual)g(Mac)n(hine)p
eop
%%Page: 2 2
2 1 bop 249 507 a FD(Scien)o(ti\014c)19 b(and)f(Engineering)h
(Computation)249 561 y FC(Jan)o(usz)d(Ko)o(w)o(alik,)f(Editor)249
669 y FB(Data-Par)n(al)r(lel)f(Pr)n(o)n(gr)n(amming)h(on)g(MIMD)h
(Computers)249 723 y FA(b)o(y)e(Philip)f(J.)g(Hatc)o(her)i(and)f(Mic)o
(hael)f(J.)h(Quinn,)f(1991)249 835 y FB(Unstructur)n(e)n(d)h
(Scienti\014c)i(Computation)f(on)g(Sc)n(alable)g(Multipr)n(o)n(c)n
(essors)249 889 y FA(edited)g(b)o(y)e(Piyush)h(Mehrotra,)g(Jo)q(el)g
(Saltz,)g(and)f(Rob)q(ert)i(V)m(oigt,)d(1991)249 1001
y FB(Par)n(al)r(lel)i(Computational)h(Fluid)g(Dynamics:)k
(Implementations)d(and)f(R)n(esults)249 1055 y FA(edited)g(b)o(y)e
(Horst)i(D.)e(Simon,)e(1992)249 1167 y FB(Enterprise)j(Inte)n(gr)n
(ation)h(Mo)n(deling:)k(Pr)n(o)n(c)n(e)n(e)n(dings)c(of)g(the)g(First)f
(International)h(Confer)n(enc)n(e)249 1221 y FA(edited)g(b)o(y)e
(Charles)i(J.)e(P)o(etrie,)h(Jr.,)g(1992)249 1333 y FB(The)h(High)g
(Performanc)n(e)f(F)m(ortr)n(an)h(Handb)n(o)n(ok)249
1387 y FA(b)o(y)g(Charles)g(H.)f(Ko)q(elb)q(el,)h(Da)o(vid)f(B.)h(Lo)o
(v)o(eman,)d(Rob)q(ert)k(S.)e(Sc)o(hreib)q(er,)i(Guy)e(L.)h(Steele)h
(Jr.,)e(and)249 1441 y(Mary)g(E.)f(Zosel,)h(1994)249
1547 y FB(Using)h(MPI:)g(Portable)f(Par)n(al)r(lel)g(Pr)n(o)n(gr)n
(amming)h(with)f(the)h(Message-Passing)g(Interfac)n(e)249
1601 y FA(b)o(y)f(William)c(Gropp,)j(Ewing)g(Lusk,)h(and)g(An)o(thon)o
(y)f(Skjellum,)e(1994)249 1713 y FB(PVM:)17 b(Par)n(al)r(lel)e(Virtual)
h(Machine)i({)f(A)f(Users')g(Guide)h(and)g(T)m(utorial)f(for)g
(Networke)n(d)g(Par)n(al)r(lel)249 1767 y(Computing)249
1819 y FA(b)o(y)j(Al)f(Geist,)i(Adam)d(Beguelin,)j(Jac)o(k)f(Dongarra,)
g(W)m(eic)o(heng)f(Jiang,)h(Rob)q(ert)g(Manc)o(hek,)h(and)249
1873 y(V)m(aidy)13 b(Sunderam,)g(1994)p eop
%%Page: 3 3
3 2 bop 249 263 a Fz(PVM:)20 b(P)n(arallel)i(Virtual)f(Mac)n(hine)249
321 y(A)d(Users')f(Guide)h(and)f(T)-5 b(utorial)19 b(for)d(Net)n(w)n
(ork)n(ed)k(P)n(arallel)g(Computing)249 571 y FC(Al)c(Geist)249
625 y(Adam)f(Beguelin)249 679 y(Jac)o(k)g(Dongarra)249
733 y(W)l(eic)o(heng)h(Jiang)249 787 y(Rob)q(ert)g(Manc)o(hek)249
841 y(V)l(aidy)g(Sunderam)249 2391 y(The)g(MIT)f(Press)249
2445 y(Cam)o(bridge,)g(Massac)o(h)o(usetts)249 2499 y(London,)g
(England)p eop
%%Page: 4 4
4 3 bop 259 506 a Fy(c)249 507 y Fx(\015)12 b Fy(1994)e(Massac)o(h)o
(usetts)g(Institute)f(of)i(T)m(ec)o(hnology)249 582 y(All)h(righ)o(ts)e
(reserv)o(ed.)j(No)f(part)f(of)g(this)g(b)q(o)q(ok)f(ma)o(y)g(b)q(e)h
(repro)q(duced)e(in)i(an)o(y)f(form)h(b)o(y)g(an)o(y)f(electronic)f(or)
249 619 y(mec)o(hanical)f(means)i(\(including)f(photo)q(cop)o(yin)o(g,)
f(recording,)h(or)i(information)d(storage)i(and)h(retriev)n(al\))e
(without)249 657 y(p)q(ermission)g(in)i(writing)g(from)f(the)h
(publisher.)249 731 y(This)g(b)q(o)q(ok)e(w)o(as)h(set)g(in)g(L)584
727 y Fw(a)605 731 y Fy(T)624 741 y(E)644 731 y(X)h(b)o(y)f(the)g
(authors)e(and)i(w)o(as)g(prin)o(ted)f(and)g(b)q(ound)g(in)h(the)f
(United)h(States)f(of)h(America.)249 806 y(Library)g(of)h(Congress)g
(Cataloging-in)o(-Pub)o(lica)o(tio)o(n)e(Data)249 1144
y(This)j(b)q(o)q(ok)e(is)h(also)g(a)o(v)n(ailable)e(in)i(p)q(ostscript)
e(and)i(h)o(tml)f(forms)h(o)o(v)o(er)f(the)h(In)o(ternet.)249
1181 y(T)m(o)h(retriev)o(e)d(the)i(p)q(ostscript)e(\014le)i(y)o(ou)g
(can)g(use)g(one)f(of)h(the)g(follo)o(wing)f(metho)q(ds:)211
1260 y Fx(\017)20 b Fy(anon)o(ymous)9 b(ftp)292 1304
y Fv(ftp)16 b(netlib2.cs.)o(utk)o(.e)o(du)292 1349 y(cd)h(pvm3/book)292
1395 y(get)f(pvm-book.ps)292 1441 y(quit)211 1497 y Fx(\017)k
Fy(from)10 b(an)o(y)h(mac)o(hine)e(on)i(the)g(In)o(ternet)e(t)o(yp)q
(e:)292 1541 y Fv(rcp)16 b(anon@netlib)o(2.c)o(s.)o(utk)o(.ed)o(u:p)o
(vm3)o(/b)o(ook)o(/pv)o(m-b)o(ook)o(.p)o(s)f(pvm-book.p)o(s)211
1597 y Fx(\017)20 b Fy(sending)10 b(email)g(to)29 b Fv(netlib@or)o(nl.)
o(gov)8 b Fy(and)j(in)g(the)f(message)g(t)o(yp)q(e:)267
1634 y Fv(send)16 b(pvm-book.p)o(s)f(from)h(pvm3/book)211
1688 y Fx(\017)k Fy(use)11 b(Xnetlib)f(and)h(clic)o(k)f(\\library",)f
(clic)o(k)i(\\p)o(vm3",)e(clic)o(k)h(\\b)q(o)q(ok",)f(clic)o(k)i(\\p)o
(vm3/p)o(vm)o(-bo)q(ok)o(.ps")o(,)e(clic)o(k)249 1726
y(\\do)o(wnload",)g(clic)o(k)h(\\Get)h(Files)g(No)o(w".)k(\(Xnetlib)c
(is)g(an)g(X-windo)o(w)h(in)o(terface)d(to)i(the)g(netlib)f(soft)o(w)o
(are)g(based)g(on)249 1763 y(a)h(clien)o(t-serv)o(er)e(mo)q(del.)k(The)
f(soft)o(w)o(are)e(can)h(b)q(e)g(found)f(in)h(netlib,)f(\\send)g(index)
g(from)h(xnetlib"\).)249 1842 y(T)m(o)h(view)f(the)g(h)o(tml)f(\014le)h
(use)g(the)g(URL:)211 1921 y Fx(\017)20 b Fv(http://www)o(.ne)o(tli)o
(b.o)o(rg/)o(pv)o(m3/)o(boo)o(k/p)o(vm-)o(bo)o(ok.)o(htm)o(l)p
eop
%%Page: 5 5
5 4 bop 249 260 a FD(Con)o(ten)o(ts)399 514 y FA(Series)14
b(F)m(orew)o(ord)1126 b(xi)399 580 y(Preface)1256 b(xiii)249
680 y FD(1)124 b(In)o(tro)q(duction)1136 b FA(1)249 755
y(1.1)96 b(Heterogeneous)15 b(Net)o(w)o(ork)g(Computing)776
b(2)249 821 y(1.2)96 b(T)m(rends)14 b(in)f(Distributed)i(Computing)811
b(3)249 888 y(1.3)96 b(PVM)14 b(Ov)o(erview)1143 b(5)249
954 y(1.4)96 b(Other)15 b(P)o(ac)o(k)n(ages)1142 b(6)399
1025 y(1.4.1)62 b(The)14 b(p4)g(System)1000 b(6)399 1083
y(1.4.2)62 b(Express)1135 b(7)399 1141 y(1.4.3)62 b(MPI)1193
b(7)399 1199 y(1.4.4)62 b(The)14 b(Linda)f(System)940
b(8)249 1298 y FD(2)124 b(The)17 b(PVM)g(System)988 b
FA(11)249 1419 y FD(3)124 b(Using)17 b(PVM)1130 b FA(19)249
1494 y(3.1)96 b(Ho)o(w)13 b(to)h(Obtain)f(the)i(PVM)f(Soft)o(w)o(are)
779 b(19)249 1560 y(3.2)96 b(Setup)14 b(to)g(Use)h(PVM)1058
b(19)249 1626 y(3.3)96 b(Setup)14 b(Summary)1109 b(20)249
1693 y(3.4)96 b(Starting)13 b(PVM)1145 b(22)249 1759
y(3.5)96 b(Comm)o(on)11 b(Startup)j(Problems)904 b(24)249
1826 y(3.6)96 b(Running)12 b(PVM)j(Programs)948 b(25)249
1892 y(3.7)96 b(PVM)14 b(Console)g(Details)1010 b(27)249
1958 y(3.8)96 b(Host)14 b(File)f(Options)1080 b(29)249
2071 y FD(4)124 b(Basic)18 b(Programming)f(T)l(ec)o(hniques)682
b FA(33)249 2145 y(4.1)96 b(Comm)o(on)11 b(P)o(arallel)i(Programming)d
(P)o(aradigms)620 b(33)399 2216 y(4.1.1)62 b(Cro)o(wd)14
b(Computations)863 b(34)399 2274 y(4.1.2)62 b(T)m(ree)14
b(Computations)903 b(37)249 2340 y(4.2)96 b(W)m(orkload)12
b(Allo)q(cation)1027 b(39)399 2411 y(4.2.1)62 b(Data)13
b(Decomp)q(osition)881 b(40)399 2469 y(4.2.2)62 b(F)m(unction)13
b(Decomp)q(osition)811 b(41)p eop
%%Page: 6 6
6 5 bop 249 251 a Fu(vi)1415 b(Con)o(ten)o(ts)249 507
y FA(4.3)96 b(P)o(orting)13 b(Existing)g(Applications)h(to)f(PVM)702
b(43)249 619 y FD(5)124 b(PVM)16 b(User)h(In)o(terface)935
b FA(45)249 694 y(5.1)96 b(Pro)q(cess)15 b(Con)o(trol)1116
b(46)249 760 y(5.2)96 b(Information)1186 b(49)249 827
y(5.3)96 b(Dynamic)11 b(Con\014guration)978 b(50)249
893 y(5.4)96 b(Signaling)1235 b(51)249 960 y(5.5)96 b(Setting)13
b(and)h(Getting)g(Options)884 b(52)249 1026 y(5.6)96
b(Message)15 b(P)o(assing)1104 b(53)399 1097 y(5.6.1)62
b(Message)15 b(Bu\013ers)965 b(53)399 1155 y(5.6.2)62
b(P)o(ac)o(king)13 b(Data)1008 b(55)399 1213 y(5.6.3)62
b(Sending)14 b(and)f(Receiving)h(Data)738 b(57)399 1271
y(5.6.4)62 b(Unpac)o(king)13 b(Data)958 b(59)249 1337
y(5.7)96 b(Dynamic)11 b(Pro)q(cess)16 b(Groups)946 b(60)249
1450 y FD(6)124 b(Program)16 b(Examples)967 b FA(63)249
1524 y(6.1)96 b(F)m(ork-Join)1229 b(63)249 1591 y(6.2)96
b(Dot)13 b(Pro)q(duct)1175 b(68)249 1657 y(6.3)96 b(F)m(ailure)1277
b(73)249 1724 y(6.4)96 b(Matrix)13 b(Multiply)1107 b(76)249
1790 y(6.5)96 b(One-Dimensional)11 b(Heat)k(Equation)812
b(83)399 1861 y(6.5.1)62 b(Di\013eren)o(t)14 b(St)o(yles)h(of)e(Comm)o
(uni)o(cation)624 b(91)249 1960 y FD(7)124 b(Ho)o(w)16
b(PVM)h(W)l(orks)993 b FA(93)249 2035 y(7.1)96 b(Comp)q(onen)o(ts)1176
b(93)399 2105 y(7.1.1)62 b(T)m(ask)13 b(Iden)o(ti\014ers)976
b(93)399 2164 y(7.1.2)62 b(Arc)o(hitecture)16 b(Classes)885
b(95)399 2222 y(7.1.3)62 b(Message)15 b(Mo)q(del)978
b(95)399 2280 y(7.1.4)62 b(Async)o(hronous)15 b(Noti\014cation)773
b(96)399 2338 y(7.1.5)62 b(PVM)14 b(Daemon)e(and)i(Programming)d
(Library)501 b(96)249 2404 y(7.2)96 b(Messages)1239 b(97)399
2475 y(7.2.1)62 b(F)m(ragmen)o(ts)13 b(and)g(Databufs)806
b(97)p eop
%%Page: 7 7
7 6 bop 249 251 a Fu(Con)o(ten)o(ts)1403 b(vii)399 507
y FA(7.2.2)62 b(Messages)15 b(in)f(Libp)o(vm)885 b(97)399
565 y(7.2.3)62 b(Messages)15 b(in)f(the)g(Pvmd)846 b(98)399
624 y(7.2.4)62 b(Pvmd)13 b(En)o(try)h(P)o(oin)o(ts)900
b(98)399 682 y(7.2.5)62 b(Con)o(trol)13 b(Messages)918
b(101)249 748 y(7.3)96 b(PVM)14 b(Daemon)1120 b(101)399
819 y(7.3.1)62 b(Startup)1095 b(101)399 877 y(7.3.2)62
b(Sh)o(utdo)o(wn)1053 b(102)399 935 y(7.3.3)62 b(Host)14
b(T)m(able)f(and)h(Mac)o(hine)g(Con\014guration)524 b(102)399
993 y(7.3.4)62 b(T)m(asks)1131 b(104)399 1051 y(7.3.5)62
b(W)m(ait)12 b(Con)o(texts)971 b(105)399 1109 y(7.3.6)62
b(F)m(ault)13 b(Detection)h(and)g(Reco)o(v)o(ery)691
b(106)399 1167 y(7.3.7)62 b(Pvmd')1112 b(106)399 1225
y(7.3.8)62 b(Starting)13 b(Sla)o(v)o(e)h(Pvmds)839 b(107)399
1284 y(7.3.9)62 b(Resource)15 b(Manager)899 b(109)249
1350 y(7.4)96 b(Libp)o(vm)11 b(Library)1094 b(111)399
1421 y(7.4.1)62 b(Language)13 b(Supp)q(ort)900 b(111)399
1479 y(7.4.2)62 b(Connecting)14 b(to)g(the)g(Pvmd)783
b(111)249 1545 y(7.5)96 b(Proto)q(cols)1212 b(112)399
1616 y(7.5.1)62 b(Messages)1069 b(112)399 1674 y(7.5.2)62
b(Pvmd-Pvmd)1001 b(112)399 1732 y(7.5.3)62 b(Pvmd-T)m(ask)12
b(and)i(T)m(ask-T)m(ask)745 b(116)249 1798 y(7.6)96 b(Message)15
b(Routing)1072 b(117)399 1869 y(7.6.1)62 b(Pvmd)1124
b(117)399 1927 y(7.6.2)62 b(Pvmd)13 b(and)g(F)m(oreign)h(T)m(asks)780
b(118)399 1985 y(7.6.3)62 b(Libp)o(vm)1092 b(119)399
2043 y(7.6.4)62 b(Multicasting)1005 b(120)249 2110 y(7.7)96
b(T)m(ask)13 b(En)o(vironmen)o(t)1047 b(121)399 2180
y(7.7.1)62 b(En)o(vironmen)o(t)13 b(V)m(ariables)817
b(121)399 2238 y(7.7.2)62 b(Standard)14 b(Input)g(and)g(Output)725
b(122)399 2296 y(7.7.3)62 b(T)m(racing)1095 b(124)399
2355 y(7.7.4)62 b(Debugging)1039 b(124)249 2421 y(7.8)96
b(Console)13 b(Program)1069 b(124)249 2487 y(7.9)96 b(Resource)15
b(Limitations)995 b(125)p eop
%%Page: 8 8
8 7 bop 249 251 a Fu(viii)1395 b(Con)o(ten)o(ts)399 507
y FA(7.9.1)62 b(In)14 b(the)g(PVM)h(Daemon)847 b(125)399
565 y(7.9.2)62 b(In)14 b(the)g(T)m(ask)1024 b(126)249
632 y(7.10)75 b(Multipro)q(cessor)15 b(Systems)953 b(126)399
702 y(7.10.1)41 b(Message-P)o(assing)15 b(Arc)o(hitectures)680
b(127)399 760 y(7.10.2)41 b(Shared-Memory)13 b(Arc)o(hitectures)691
b(130)399 819 y(7.10.3)41 b(Optimized)13 b(Send)h(and)g(Receiv)o(e)h
(on)e(MPP)546 b(132)249 918 y FD(8)124 b(Adv)m(anced)17
b(T)l(opics)996 b FA(135)249 993 y(8.1)96 b(XPVM)1254
b(135)399 1064 y(8.1.1)62 b(Net)o(w)o(ork)14 b(View)976
b(137)399 1122 y(8.1.2)62 b(Space-Time)13 b(View)916
b(138)399 1180 y(8.1.3)62 b(Other)15 b(Views)1006 b(139)249
1246 y(8.2)96 b(P)o(orting)13 b(PVM)h(to)g(New)g(Arc)o(hitectures)738
b(139)399 1317 y(8.2.1)62 b(Unix)13 b(W)m(orkstations)892
b(140)399 1375 y(8.2.2)62 b(Multipro)q(cessors)950 b(142)249
1474 y FD(9)124 b(T)l(roublesho)q(oting)1014 b FA(147)249
1549 y(9.1)96 b(Getting)13 b(PVM)h(Installed)963 b(147)399
1620 y(9.1.1)62 b(Set)14 b(PVM)p 718 1620 13 2 v 16 w(R)o(OOT)925
b(147)399 1678 y(9.1.2)62 b(On-Line)14 b(Man)o(ual)f(P)o(ages)818
b(148)399 1736 y(9.1.3)62 b(Building)13 b(the)h(Release)860
b(148)399 1794 y(9.1.4)62 b(Errors)15 b(During)e(Build)866
b(148)399 1852 y(9.1.5)62 b(Compatible)12 b(V)m(ersions)859
b(149)249 1919 y(9.2)96 b(Getting)13 b(PVM)h(Running)963
b(149)399 1989 y(9.2.1)62 b(Pvmd)13 b(Log)g(File)961
b(149)399 2047 y(9.2.2)62 b(Pvmd)13 b(So)q(c)o(k)o(et)h(Address)i(File)
752 b(150)399 2105 y(9.2.3)62 b(Starting)13 b(PVM)i(from)d(the)i
(Console)650 b(150)399 2164 y(9.2.4)62 b(Starting)13
b(the)i(Pvmd)e(b)o(y)g(Hand)723 b(151)399 2222 y(9.2.5)62
b(Adding)13 b(Hosts)i(to)f(the)g(Virtual)f(Mac)o(hine)554
b(151)399 2280 y(9.2.6)62 b(PVM)14 b(Host)g(File)955
b(152)399 2338 y(9.2.7)62 b(Sh)o(utting)13 b(Do)o(wn)959
b(152)249 2404 y(9.3)96 b(Compili)o(ng)11 b(Applications)954
b(153)399 2475 y(9.3.1)62 b(Header)15 b(Files)1006 b(153)p
eop
%%Page: 9 9
9 8 bop 249 251 a Fu(Con)o(ten)o(ts)1414 b(ix)399 507
y FA(9.3.2)62 b(Linking)1094 b(153)249 574 y(9.4)96 b(Running)12
b(Applications)986 b(154)399 644 y(9.4.1)62 b(Spa)o(wn)14
b(Can't)f(Find)g(Executables)672 b(154)399 702 y(9.4.2)62
b(Group)13 b(F)m(unctions)928 b(154)399 760 y(9.4.3)62
b(Memory)13 b(Use)1004 b(154)399 819 y(9.4.4)62 b(Input)14
b(and)g(Output)905 b(155)399 877 y(9.4.5)62 b(Sc)o(heduling)14
b(Priorit)o(y)882 b(156)399 935 y(9.4.6)62 b(Resource)15
b(Limitations)846 b(157)249 1001 y(9.5)96 b(Debugging)12
b(and)i(T)m(racing)957 b(157)249 1068 y(9.6)96 b(Debugging)12
b(the)j(System)973 b(158)399 1138 y(9.6.1)62 b(Run)o(time)12
b(Debug)i(Masks)819 b(159)399 1196 y(9.6.2)62 b(Tic)o(kle)13
b(the)i(Pvmd)928 b(159)399 1254 y(9.6.3)62 b(Starting)13
b(Pvmd)g(under)i(a)e(Debugger)626 b(160)399 1313 y(9.6.4)62
b(Sane)14 b(Heap)1041 b(160)399 1371 y(9.6.5)62 b(Statistics)1067
b(161)399 1437 y(Glossary)1225 b(163)249 1537 y FD(A)110
b(History)17 b(of)g(PVM)f(V)l(ersions)799 b FA(175)249
1657 y FD(B)113 b(PVM)16 b(3)h(Routines)995 b FA(181)399
1744 y(Bibliograph)o(y)1148 b(275)399 1811 y(Index)1281
b(277)p eop
%%Page: 10 10
10 9 bop eop
%%Page: 11 11
11 10 bop 249 260 a FD(Series)17 b(F)l(orew)o(ord)249
561 y FA(The)g(w)o(orld)g(of)f(mo)q(dern)g(computing)f(p)q(oten)o
(tially)h(o\013ers)i(man)o(y)d(helpful)h(metho)q(ds)h(and)g(to)q(ols)f
(to)249 615 y(scien)o(tists)d(and)e(engineers,)i(but)f(the)g(fast)f
(pace)i(of)e(c)o(hange)g(in)g(computer)h(hardw)o(are,)g(soft)o(w)o
(are,)f(and)249 669 y(algorithms)h(often)j(mak)o(es)f(practical)g(use)i
(of)e(the)h(new)o(est)h(computing)d(tec)o(hnology)h(di\016cult.)20
b(The)249 723 y(Scien)o(ti\014c)d(and)e(Engineering)i(Computation)c
(series)18 b(fo)q(cuses)f(on)f(rapid)g(adv)n(ances)g(in)g(computing)249
777 y(tec)o(hnologies)k(and)f(attempts)h(to)f(facilitate)g
(transferring)h(these)h(tec)o(hnologies)f(to)f(applications)249
831 y(in)g(science)j(and)e(engineering.)36 b(It)19 b(will)g(include)h
(b)q(o)q(oks)g(on)f(theories,)j(metho)q(ds,)e(and)g(original)249
885 y(applications)10 b(in)h(suc)o(h)g(areas)h(as)f(parallelism,)d
(large-scale)j(sim)o(ulations,)e(time-critical)g(computing,)249
939 y(computer-aided)i(design)g(and)g(engineering,)g(use)h(of)f
(computers)g(in)g(man)o(ufacturing,)e(visualization)249
993 y(of)k(scien)o(ti\014c)i(data,)e(and)h(h)o(uman-ma)o(c)o(hine)e(in)
o(terface)i(tec)o(hnology)m(.)291 1047 y(The)j(series)i(will)d(help)i
(scien)o(tists)h(and)e(engineers)i(to)e(understand)i(the)f(curren)o(t)h
(w)o(orld)e(of)f(ad-)249 1101 y(v)n(anced)g(computation)d(and)j(to)f
(an)o(ticipate)g(future)h(dev)o(elopmen)o(ts)f(that)g(will)f(impact)g
(their)h(com-)249 1155 y(puting)f(en)o(vironmen)o(ts)f(and)g(op)q(en)i
(up)f(new)g(capabilities)f(and)h(mo)q(des)f(of)g(computation.)291
1209 y(This)i(v)o(olume)e(presen)o(ts)k(a)e(soft)o(w)o(are)g(pac)o(k)n
(age)g(for)f(dev)o(eloping)h(parallel)f(programs)g(executable)249
1263 y(on)h(net)o(w)o(ork)o(ed)h(Unix)f(computers.)22
b(The)15 b(to)q(ol)g(called)g(P)o(arallel)f(Virtual)g(Mac)o(hine)h
(\(PVM\))h(allo)o(ws)249 1317 y(a)h(heterogeneous)i(collection)e(of)g
(w)o(orkstations)g(and)g(sup)q(ercomputers)h(to)f(function)g(as)g(a)g
(single)249 1371 y(high-p)q(erformance)i(parallel)g(mac)o(hine.)35
b(PVM)21 b(is)f(p)q(ortable)g(and)g(runs)h(on)e(a)h(wide)g(v)n(ariet)o
(y)g(of)249 1425 y(mo)q(dern)15 b(platforms.)23 b(It)16
b(has)g(b)q(een)h(w)o(ell)f(accepted)h(b)o(y)f(the)h(global)d
(computing)g(comm)o(unit)o(y)f(and)249 1479 y(used)i(successfully)g
(for)e(solving)g(large-scale)h(problems)f(in)h(science,)h(industry)m(,)
e(and)h(business.)249 1632 y(Jan)o(usz)h(S.)e(Ko)o(w)o(alik)p
eop
%%Page: 12 12
12 11 bop eop
%%Page: 13 13
13 12 bop 249 260 a FD(Preface)249 561 y FA(In)12 b(this)f(b)q(o)q(ok)h
(w)o(e)g(describ)q(e)h(the)f(P)o(arallel)f(Virtual)g(Mac)o(hine)g
(\(PVM\))i(system)e(and)g(ho)o(w)h(to)f(dev)o(elop)249
615 y(programs)g(using)h(PVM.)f(PVM)i(is)f(a)f(soft)o(w)o(are)h(system)
g(that)g(p)q(ermits)g(a)f(heterogeneous)j(collection)249
669 y(of)19 b(Unix)g(computers)g(net)o(w)o(ork)o(ed)h(together)h(to)e
(b)q(e)h(view)o(ed)f(b)o(y)h(a)f(user's)h(program)e(as)h(a)g(single)249
723 y(parallel)g(computer.)38 b(PVM)21 b(is)f(the)h(mainsta)o(y)e(of)h
(the)h(Heterogeneous)h(Net)o(w)o(ork)f(Computing)249
777 y(researc)o(h)e(pro)r(ject,)f(a)e(collab)q(orativ)o(e)g(v)o(en)o
(ture)i(b)q(et)o(w)o(een)g(Oak)f(Ridge)f(National)f(Lab)q(oratory)m(,)h
(the)249 831 y(Univ)o(ersit)o(y)e(of)f(T)m(ennessee,)j(Emory)c(Univ)o
(ersit)o(y)m(,)h(and)h(Carnegie)g(Mellon)f(Univ)o(ersit)o(y)m(.)291
885 y(The)k(PVM)h(system)f(has)g(ev)o(olv)o(ed)g(in)g(the)h(past)f(sev)
o(eral)h(y)o(ears)g(in)o(to)e(a)h(viable)g(tec)o(hnology)f(for)249
939 y(distributed)f(and)e(parallel)g(pro)q(cessing)i(in)f(a)f(v)n
(ariet)o(y)h(of)f(disciplines.)18 b(PVM)d(supp)q(orts)g(a)e(straigh)o
(t-)249 993 y(forw)o(ard)h(but)g(functionally)e(complete)h
(message-passing)h(mo)q(del.)291 1047 y(PVM)c(is)g(designed)g(to)g
(link)f(computing)g(resources)j(and)e(pro)o(vide)g(users)h(with)f(a)f
(parallel)g(platform)249 1101 y(for)h(running)g(their)h(computer)f
(applications,)f(irresp)q(ectiv)o(e)j(of)e(the)h(n)o(um)o(b)q(er)e(of)h
(di\013eren)o(t)h(computers)249 1155 y(they)19 b(use)h(and)f(where)g
(the)h(computers)f(are)g(lo)q(cated.)33 b(When)19 b(PVM)g(is)g
(correctly)h(installed,)e(it)249 1209 y(is)h(capable)f(of)g(harnessing)
h(the)g(com)o(bined)f(resources)j(of)d(t)o(ypically)f(heterogeneous)j
(net)o(w)o(ork)o(ed)249 1263 y(computing)12 b(platforms)g(to)i(deliv)o
(er)g(high)f(lev)o(els)h(of)f(p)q(erformance)h(and)g(functionalit)o(y)m
(.)291 1317 y(In)c(this)g(b)q(o)q(ok,)g(w)o(e)g(describ)q(e)h(the)g
(arc)o(hitecture)h(of)d(the)i(PVM)f(system)g(and)g(discuss)h(its)f
(computing)249 1371 y(mo)q(del;)21 b(the)f(programming)c(in)o(terface)k
(it)g(supp)q(orts;)j(auxiliary)18 b(facilities)g(for)i(pro)q(cess)h
(groups;)249 1425 y(the)c(use)h(of)e(PVM)h(on)g(highly)e(parallel)h
(systems)h(suc)o(h)g(as)g(the)g(In)o(tel)g(P)o(aragon,)f(Cra)o(y)h
(T3D,)e(and)249 1479 y(Thinking)9 b(Mac)o(hines)i(CM-5;)g(and)g(some)e
(of)h(the)h(in)o(ternal)f(implemen)o(tation)d(tec)o(hniques)12
b(emplo)o(y)o(ed.)249 1533 y(P)o(erformance)h(issues,)h(dealing)f
(primarily)e(with)i(comm)o(unicatio)o(n)e(o)o(v)o(erheads,)i(are)h
(analyzed,)f(and)249 1587 y(recen)o(t)k(\014ndings)f(as)g(w)o(ell)f(as)
g(enhancemen)o(ts)i(are)f(presen)o(ted.)25 b(T)m(o)15
b(demonstrate)h(the)g(viabilit)o(y)e(of)249 1641 y(PVM)g(for)f
(large-scale)g(scien)o(ti\014c)h(sup)q(ercomputing,)f(w)o(e)g(also)g
(pro)o(vide)g(some)g(example)f(programs.)291 1694 y(This)g(b)q(o)q(ok)f
(is)h(not)g(a)g(textb)q(o)q(ok;)h(rather,)f(it)g(is)g(mean)o(t)f(to)h
(pro)o(vide)g(a)g(fast)g(en)o(trance)h(to)f(the)h(w)o(orld)249
1748 y(of)k(heterogeneous)j(net)o(w)o(ork)e(computing.)28
b(W)m(e)17 b(in)o(tend)h(this)g(b)q(o)q(ok)f(to)h(b)q(e)g(used)h(b)o(y)
f(t)o(w)o(o)f(groups)249 1802 y(of)e(readers:)23 b(studen)o(ts)17
b(and)e(researc)o(hers)k(w)o(orking)14 b(with)h(net)o(w)o(orks)i(of)e
(computers.)23 b(As)16 b(suc)o(h,)g(w)o(e)249 1856 y(hop)q(e)f(this)f
(b)q(o)q(ok)g(can)g(serv)o(e)i(b)q(oth)e(as)g(a)g(reference)j(and)d(as)
g(a)g(supplemen)o(t)f(to)h(a)g(teac)o(hing)h(text)f(on)249
1910 y(asp)q(ects)i(of)d(net)o(w)o(ork)h(computing.)291
1964 y(This)h(guide)h(will)e(familiarize)f(readers)18
b(with)d(the)i(basics)f(of)g(PVM)g(and)g(the)g(concepts)i(used)e(in)249
2018 y(programming)11 b(on)j(a)f(net)o(w)o(ork.)20 b(The)14
b(information)e(pro)o(vided)i(here)h(will)e(help)h(with)g(the)h(follo)o
(wing)249 2072 y(PVM)f(tasks:)208 2213 y Ft(\017)20 b
FA(W)m(riting)12 b(a)i(program)e(in)i(PVM)208 2284 y
Ft(\017)20 b FA(Building)13 b(PVM)h(on)g(a)f(system)208
2355 y Ft(\017)20 b FA(Starting)14 b(PVM)g(on)g(a)f(set)i(of)e(mac)o
(hines)208 2425 y Ft(\017)20 b FA(Debugging)13 b(a)h(PVM)g(application)
p eop
%%Page: 14 14
14 13 bop 249 251 a Fu(xiv)1421 b(Preface)249 507 y FD(A)17
b(Bit)h(of)g(History)249 615 y FA(The)13 b(PVM)g(pro)r(ject)h(b)q(egan)
f(in)f(the)h(summer)e(of)i(1989)e(at)i(Oak)f(Ridge)g(National)g(Lab)q
(oratory)m(.)17 b(The)249 669 y(protot)o(yp)q(e)i(system,)h(PVM)f(1.0,)
f(w)o(as)h(constructed)i(b)o(y)e(V)m(aidy)e(Sunderam)h(and)h(Al)f
(Geist;)j(this)249 723 y(v)o(ersion)13 b(of)e(the)i(system)f(w)o(as)g
(used)i(in)o(ternally)d(at)h(the)h(Lab)f(and)g(w)o(as)g(not)h(released)
g(to)f(the)h(outside.)249 777 y(V)m(ersion)19 b(2)f(of)g(PVM)g(w)o(as)h
(written)g(at)f(the)h(Univ)o(ersit)o(y)f(of)g(T)m(ennessee)j(and)d
(released)i(in)e(Marc)o(h)249 831 y(1991.)f(During)c(the)h(follo)o
(wing)e(y)o(ear,)h(PVM)h(b)q(egan)g(to)g(b)q(e)g(used)h(in)e(man)o(y)f
(scien)o(ti\014c)j(applications.)249 885 y(After)h(user)h(feedbac)o(k)f
(and)g(a)f(n)o(um)o(b)q(er)g(of)g(c)o(hanges)i(\(PVM)f(2.1)f(-)g
(2.4\),)g(a)g(complete)g(rewrite)i(w)o(as)249 939 y(undertak)o(en,)e
(and)g(v)o(ersion)f(3)h(w)o(as)f(completed)g(in)g(F)m(ebruary)h(1993.)k
(It)14 b(is)h(PVM)g(v)o(ersion)f(3.3)g(that)249 993 y(w)o(e)k(describ)q
(e)h(in)e(this)h(b)q(o)q(ok)g(\(and)f(refer)i(to)e(simply)f(as)i
(PVM\).)f(The)h(PVM)g(soft)o(w)o(are)g(has)g(b)q(een)249
1047 y(distributed)d(freely)f(and)f(is)h(b)q(eing)g(used)h(in)e
(computational)f(applications)g(around)i(the)h(w)o(orld.)249
1167 y FD(Who)j(Should)g(Read)g(This)g(Bo)q(ok?)249 1275
y FA(T)m(o)g(successfully)h(use)g(this)g(b)q(o)q(ok,)g(one)f(should)g
(b)q(e)h(exp)q(erienced)i(with)d(common)e(programmi)o(ng)249
1329 y(tec)o(hniques)i(and)e(understand)i(some)d(basic)h(parallel)g
(pro)q(cessing)h(concepts.)27 b(In)17 b(particular,)f(this)249
1383 y(guide)21 b(assumes)f(that)h(the)g(user)h(kno)o(ws)f(ho)o(w)f(to)
h(write,)h(execute,)i(and)d(debug)g(F)m(ortran)f(or)h(C)249
1437 y(programs)13 b(and)g(is)h(familiar)d(with)i(Unix.)249
1558 y FD(T)o(yp)q(ographical)19 b(Con)o(v)o(en)o(tions)249
1665 y FA(W)m(e)14 b(use)g(the)h(follo)o(wing)c(con)o(v)o(en)o(tions)j
(in)f(this)h(b)q(o)q(ok:)208 1739 y Ft(\017)20 b FA(T)m(erms)14
b(used)i(for)e(the)i(\014rst)f(time,)e(v)n(ariables,)h(and)h(b)q(o)q
(ok)f(titles)h(are)g(in)g FB(italic)g(typ)n(e)p FA(.)20
b(F)m(or)15 b(example:)249 1793 y(F)m(or)h(further)h(information)c(on)j
FB(PVM)h(daemon)g FA(see)g(the)g(description)g(in)e FB(PVM:)i(Par)n(al)
r(lel)f(Virtual)249 1847 y(Machine)g({)f(A)g(Users')f(Guide)h(and)g(T)m
(utorial)f(for)h(Networke)n(d)f(Par)n(al)r(lel)g(Computing)p
FA(.)208 1910 y Ft(\017)20 b FA(T)m(ext)14 b(that)g(the)g(user)h(t)o
(yp)q(es)g(is)f(in)f Fs(Courier)21 b(bold)g(font)p FA(.)c(F)m(or)c
(example:)k Fs($)22 b(pvm)249 2031 y FD(The)c(Map)249
2139 y FA(This)e(guide)h(is)f(divided)g(in)o(to)f(three)j(ma)r(jor)d
(parts;)i(it)f(includes)h(nine)g(c)o(hapters,)h(a)e(glossary)m(,)g(t)o
(w)o(o)249 2193 y(app)q(endixes)f(and)e(a)h(bibliograph)o(y)m(.)208
2266 y Ft(\017)20 b FA(P)o(art)10 b(I)f({)g(Basics)h(\(Chapters)h
(1{6\).)16 b(This)9 b(part)h(pro)o(vides)f(the)h(facts,)g(as)g(w)o(ell)
f(as)g(some)g(in)o(terpretation)249 2320 y(of)15 b(the)h(underlying)g
(system.)23 b(It)16 b(describ)q(es)h(the)g(o)o(v)o(erall)d(concepts,)k
(system,)d(and)g(tec)o(hniques)i(for)249 2374 y(making)12
b(PVM)i(w)o(ork)f(for)h(applications.)225 2454 y Fr({)21
b FA(In)o(tro)q(duction)15 b(to)f(PVM)h({)f(in)o(tro)q(duction)g(to)h
(net)o(w)o(ork)g(computing)d(and)j(PVM;)f(terms)h(and)f(con-)249
2508 y(cepts,)h(including)e(an)g(o)o(v)o(erview)h(of)f(the)i(system)p
eop
%%Page: 15 15
15 14 bop 249 251 a Fu(Preface)1431 b(xv)225 507 y Fr({)21
b FA(Ov)o(erview)14 b(of)g(PVM)285 577 y Ft(\003)21 b
FA(C,)13 b(C++,)h(and)g(F)m(ortran)285 638 y Ft(\003)21
b FA(basic)14 b(principles)285 700 y Ft(\003)21 b FA(\\hello.c")12
b(example)285 762 y Ft(\003)21 b FA(other)14 b(systems)g(\(e.g.,)f
(MPI\))225 831 y Fr({)21 b FA(PVM)14 b(T)m(utorial)285
901 y Ft(\003)21 b FA(setting)14 b(up)g(PVM)285 963 y
Ft(\003)21 b FA(running)13 b(an)h(existing)g(program)285
1024 y Ft(\003)21 b FA(console)285 1086 y Ft(\003)g FA(XPVM)225
1155 y Fr({)g FA(Programming)285 1225 y Ft(\003)g FA(basic)14
b(programmi)o(ng)d(tec)o(hniques)285 1287 y Ft(\003)21
b FA(data)13 b(decomp)q(osition)g(/)g(partitioning)285
1348 y Ft(\003)21 b FA(function)13 b(decomp)q(osition)285
1410 y Ft(\003)21 b FA(putting)13 b(PVM)i(in)e(existing)h(co)q(de)225
1480 y Fr({)21 b FA(User)15 b(In)o(terface)285 1549 y
Ft(\003)21 b FA(functions)285 1611 y Ft(\003)g FA(host\014le)225
1680 y Fr({)g FA(Program)12 b(Examples)285 1750 y Ft(\003)21
b FA(PVM)14 b(programs)208 1835 y Ft(\017)20 b FA(P)o(art)14
b(2)g({)f(Details)h(\(Chapters)h(7{9\).)i(This)d(part)g(describ)q(es)i
(the)e(in)o(ternals)g(of)g(PVM.)225 1921 y Fr({)21 b
FA(Ho)o(w)13 b(PVM)i(W)m(orks)285 1991 y Ft(\003)21 b
FA(Unix)13 b(ho)q(oks)h(to)g(PVM)g(in)o(terfaces)285
2052 y Ft(\003)21 b FA(m)o(ultipro)q(cessors)13 b(-)h(shared)h(and)f
(distributed)g(memory)225 2122 y Fr({)21 b FA(Adv)n(anced)14
b(T)m(opics)285 2191 y Ft(\003)21 b FA(p)q(ortabilit)o(y)285
2253 y Ft(\003)g FA(debugging)285 2315 y Ft(\003)g FA(tracing)285
2377 y Ft(\003)g FA(XPVM)14 b(details)225 2446 y Fr({)21
b FA(T)m(roublesho)q(oting;)k(in)o(teresting)e(tidbits)e(and)h
(information)e(on)i(PVM,)g(including)f(frequen)o(tly)249
2500 y(ask)o(ed)14 b(questions.)p eop
%%Page: 16 16
16 15 bop 249 251 a Fu(xvi)1421 b(Preface)208 507 y Ft(\017)20
b FA(P)o(art)e(3)f({)f(The)i(Remains.)27 b(This)17 b(part)g(pro)o
(vides)h(some)e(useful)h(information)e(on)i(the)h(use)g(of)e(the)249
561 y(PVM)e(in)o(terface.)225 646 y Fr({)21 b FA(Glossary)13
b(of)g(T)m(erms:)18 b(giv)o(es)13 b(a)h(short)g(description)h(for)e
(terms)h(used)h(in)e(the)i(PVM)f(con)o(text.)225 714
y Fr({)21 b FA(App)q(endix)15 b(A,)f(History)h(of)g(PVM)g(v)o(ersions:)
20 b(list)14 b(of)h(all)e(the)j(v)o(ersions)f(of)f(PVM)h(that)g(ha)o(v)
o(e)g(b)q(een)249 768 y(released)f(from)d(the)j(\014rst)f(one)g(in)f(F)
m(ebruary)h(1991)f(through)h(July)g(1994.)j(Along)c(with)h(eac)o(h)g(v)
o(ersion)249 822 y(w)o(e)h(include)g(a)g(brief)g(synopsis)g(of)f(the)i
(impro)o(v)o(em)o(en)o(ts)d(made)h(in)g(v)o(ersion)h(3.)225
890 y Fr({)21 b FA(App)q(endix)c(B,)f(Man)h(P)o(ages:)24
b(pro)o(vides)17 b(an)f(alphab)q(etical)g(listing)g(of)g(all)f(the)i
(PVM)h(3)e(routines.)249 944 y(Eac)o(h)e(routine)g(is)g(describ)q(ed)h
(in)f(detail)f(for)g(b)q(oth)h(C)g(and)g(F)m(ortran)f(use.)19
b(There)c(are)f(examples)f(and)249 998 y(diagnostics)h(for)f(eac)o(h)i
(routine.)225 1066 y Fr({)21 b FA(Quic)o(k)15 b(Reference)h(Card)f(for)
f(PVM:)h(pro)o(vides)g(the)g(name)f(and)h(calling)e(sequence)k(for)d
(the)i(PVM)249 1120 y(routines)i(in)g(b)q(oth)g(C)g(and)f(F)m(ortran.)
30 b(\(If)18 b(this)g(card)g(is)g(missing)e(from)g(the)i(text)g(a)g
(replacemen)o(t)249 1174 y(can)13 b(b)q(e)f(do)o(wnloaded)g(o)o(v)o(er)
g(the)h(net)o(w)o(ork)f(b)o(y)g(ftp'ing)f(to)h Fs(netlib2.cs.utk.edu)p
FA(;)d Fs(cd)21 b(pvm3/book)p FA(;)249 1228 y Fs(get)g(refcard.ps)p
FA(.\))225 1296 y Fr({)g FA(Bibliograph)o(y)249 1416
y FD(Commen)o(ts)16 b(and)i(Questions)249 1524 y FA(PVM)c(is)g(an)g
(ongoing)f(researc)o(h)i(pro)r(ject.)20 b(As)14 b(suc)o(h,)h(w)o(e)f
(pro)o(vide)g(limited)d(supp)q(ort.)19 b(W)m(e)14 b(w)o(elcome)249
1578 y(feedbac)o(k)f(on)e(this)h(b)q(o)q(ok)g(and)g(other)h(asp)q(ects)
g(of)f(the)g(system)g(to)g(help)g(in)f(enhancing)h(PVM.)g(Please)249
1632 y(send)k(commen)o(ts)e(and)h(questions)32 b(to)15
b Fs(pvm@msr.epm.ornl.go)o(v)p FA(.)20 b(b)o(y)15 b(e-mail.)20
b(While)15 b(w)o(e)h(w)o(ould)249 1686 y(lik)o(e)e(to)h(resp)q(ond)h
(to)f(all)e(the)j(electronic)g(mail)c(receiv)o(ed,)k(this)f(ma)o(y)e
(not)i(b)q(e)g(alw)o(a)o(ys)f(p)q(ossible.)21 b(W)m(e)249
1740 y(therefore)13 b(recommend)e(also)g(p)q(osting)h(messages)g(to)f
(the)i(newsgroup)f Fs(comp.parallel.pvm)p FA(.)i(This)249
1794 y(unmo)q(derated)e(newsgroup)h(w)o(as)f(established)g(on)g(the)h
(In)o(ternet)g(in)f(Ma)o(y)f(1993)g(to)h(pro)o(vide)g(a)g(forum)249
1848 y(for)17 b(discussing)g(issues)h(related)g(to)e(the)i(use)g(of)e
(PVM.)h(Questions)h(\(from)d(b)q(eginner)i(to)g(the)h(v)o(ery)249
1902 y(exp)q(erienced\),)j(advice,)d(exc)o(hange)g(of)g(public-domain)d
(extensions)j(to)g(PVM,)g(and)f(bug)h(rep)q(orts)249
1956 y(can)c(b)q(e)h(p)q(osted)g(to)e(the)i(newsgroup.)249
2076 y FD(Ac)o(kno)o(wledgmen)o(ts)249 2184 y FA(W)m(e)d(gratefully)g
(ac)o(kno)o(wledge)h(the)g(v)n(aluable)f(assistance)i(of)e(man)o(y)f(p)
q(eople)i(who)g(ha)o(v)o(e)f(con)o(tributed)249 2238
y(to)k(the)h(PVM)g(pro)r(ject.)26 b(In)16 b(particular,)g(w)o(e)h
(thank)f(P)o(eter)i(Rigsb)q(ee)e(and)g(Neil)g(Lincoln)g(for)g(their)249
2292 y(help)d(and)g(insigh)o(tful)f(commen)o(ts.)k(W)m(e)d(thank)g(the)
g(PVM)h(group)f(at)g(the)g(Univ)o(ersit)o(y)g(of)g(T)m(ennessee)249
2346 y(and)g(Oak)f(Ridge)g(National)g(Lab)q(oratory|Carolyn)f(Aebisc)o
(her,)j(Martin)e(Do,)g(June)i(Donato,)e(Jim)249 2400
y(Kohl,)i(Keith)g(Mo)q(ore,)h(Phil)e(P)o(apadop)q(oulos,)g(and)h(Hon)o
(b)q(o)h(Zhou|for)e(their)i(assistance)g(with)f(the)249
2454 y(dev)o(elopmen)o(t)h(of)h(v)n(arious)f(pieces)j(and)e(comp)q
(onen)o(ts)g(of)f(PVM.)h(In)g(addition)f(w)o(e)i(express)h(appre-)249
2508 y(ciation)f(to)g(all)f(those)i(who)f(help)q(ed)h(in)f(the)h
(preparation)g(of)f(this)g(w)o(ork,)h(in)f(particular)g(to)g(Clin)o(t)p
eop
%%Page: 17 17
17 16 bop 249 251 a Fu(Preface)1409 b(xvii)249 507 y
FA(Whaley)13 b(and)g(Rob)q(ert)g(Seccom)o(b)g(for)g(help)g(on)g(the)h
(examples,)e(Ken)i(Ha)o(wic)o(k)f(for)g(con)o(tributions)g(to)249
561 y(the)i(glossary)m(,)d(and)i(Gail)e(Piep)q(er)j(for)f(helping)f
(with)g(the)i(task)f(of)f(editing)h(the)g(man)o(uscript.)291
615 y(A)k(n)o(um)o(b)q(er)f(of)g(computer)h(v)o(endors)h(ha)o(v)o(e)f
(encouraged)h(and)f(pro)o(vided)g(v)n(aluable)e(suggestions)249
669 y(during)j(the)h(dev)o(elopmen)o(t)e(of)h(PVM.)g(W)m(e)g(thank)g
(Cra)o(y)g(Researc)o(h)h(Inc.,)g(IBM,)f(Con)o(v)o(ex)g(Com-)249
723 y(puter,)e(Silicon)e(Graphics,)h(Sequen)o(t)h(Computer,)e(and)h
(Sun)g(Microsystems)g(for)f(their)i(assistance)249 777
y(in)c(p)q(orting)h(the)h(soft)o(w)o(are)e(to)h(their)g(platforms.)291
831 y(This)e(w)o(ork)h(w)o(ould)f(not)h(ha)o(v)o(e)f(b)q(een)i(p)q
(ossible)f(without)g(the)g(supp)q(ort)h(of)e(the)i(O\016ce)f(of)g
(Scien)o(ti\014c)249 885 y(Computing,)e(U.S.)h(Departmen)o(t)h(of)f
(Energy)m(,)h(under)h(Con)o(tract)g(DE-A)o(C05-84OR21400;)c(the)j(Na-)
249 939 y(tional)j(Science)i(F)m(oundation)d(Science)k(and)d(T)m(ec)o
(hnology)g(Cen)o(ter)i(Co)q(op)q(erativ)o(e)f(Agreemen)o(t)g(No.)249
993 y(CCR-8809615;)11 b(and)i(the)h(Science)h(Alliance,)e(a)g
(state-supp)q(orted)j(program)c(at)h(the)h(Univ)o(ersit)o(y)g(of)249
1047 y(T)m(ennessee.)p eop
%%Page: 18 18
18 17 bop eop
%%Page: 19 19
19 18 bop 249 507 a Fq(PVM:)15 b(P)o(arallel)g(Virtual)h(Mac)o(hine)p
eop
%%Page: 1 20
1 19 bop 249 325 a Fp(1)25 b FD(In)o(tro)q(duction)249
561 y FA(P)o(arallel)18 b(pro)q(cessing,)j(the)e(metho)q(d)f(of)h(ha)o
(ving)e(man)o(y)g(small)g(tasks)i(solv)o(e)g(one)g(large)g(problem,)249
615 y(has)14 b(emerged)f(as)h(a)f(k)o(ey)h(enabling)f(tec)o(hnology)g
(in)g(mo)q(dern)g(computing.)j(The)e(past)g(sev)o(eral)g(y)o(ears)249
669 y(ha)o(v)o(e)h(witnessed)i(an)f(ev)o(er-increasing)g(acceptance)i
(and)d(adoption)g(of)g(parallel)f(pro)q(cessing,)j(b)q(oth)249
723 y(for)e(high-p)q(erformance)f(scien)o(ti\014c)h(computing)f(and)g
(for)h(more)f(\\general-purp)q(ose")i(applications,)249
777 y(w)o(as)d(a)g(result)h(of)e(the)i(demand)e(for)h(higher)g(p)q
(erformance,)g(lo)o(w)o(er)g(cost,)g(and)g(sustained)h(pro)q(ductiv-)
249 831 y(it)o(y)m(.)k(The)d(acceptance)h(has)f(b)q(een)g(facilitated)f
(b)o(y)g(t)o(w)o(o)g(ma)r(jor)e(dev)o(elopmen)o(ts:)19
b(massiv)o(ely)12 b(parallel)249 885 y(pro)q(cessors)k(\(MPPs\))f(and)f
(the)g(widespread)h(use)g(of)e(distributed)i(computing.)291
939 y(MPPs)i(are)f(no)o(w)g(the)h(most)d(p)q(o)o(w)o(erful)i(computers)
g(in)g(the)h(w)o(orld.)24 b(These)17 b(mac)o(hines)e(com)o(bine)249
993 y(a)f(few)h(h)o(undred)g(to)f(a)g(few)g(thousand)h(CPUs)g(in)f(a)g
(single)g(large)g(cabinet)h(connected)h(to)e(h)o(undreds)249
1047 y(of)k(gigab)o(ytes)g(of)f(memory)m(.)28 b(MPPs)19
b(o\013er)g(enormous)f(computational)e(p)q(o)o(w)o(er)i(and)g(are)h
(used)g(to)249 1101 y(solv)o(e)h(computational)d(Grand)j(Challenge)g
(problems)f(suc)o(h)h(as)h(global)d(climate)g(mo)q(deling)g(and)249
1155 y(drug)13 b(design.)18 b(As)13 b(sim)o(ulations)d(b)q(ecome)j
(more)e(realistic,)i(the)g(computational)e(p)q(o)o(w)o(er)i(required)g
(to)249 1209 y(pro)q(duce)k(them)e(gro)o(ws)h(rapidly)m(.)22
b(Th)o(us,)16 b(researc)o(hers)j(on)c(the)h(cutting)g(edge)h(turn)f(to)
g(MPPs)g(and)249 1263 y(parallel)d(pro)q(cessing)i(in)e(order)i(to)f
(get)g(the)g(most)f(computational)e(p)q(o)o(w)o(er)k(p)q(ossible.)291
1317 y(The)f(second)h(ma)r(jor)d(dev)o(elopmen)o(t)h(a\013ecting)i
(scien)o(ti\014c)g(problem)d(solving)h(is)h FB(distribute)n(d)g(c)n
(om-)249 1371 y(puting)p FA(.)30 b(Distributed)18 b(computing)f(is)g(a)
h(pro)q(cess)h(whereb)o(y)g(a)f(set)g(of)g(computers)g(connected)h(b)o
(y)249 1425 y(a)d(net)o(w)o(ork)h(are)f(used)i(collectiv)o(ely)d(to)h
(solv)o(e)h(a)f(single)g(large)g(problem.)24 b(As)16
b(more)g(and)g(more)f(or-)249 1479 y(ganizations)h(ha)o(v)o(e)g
(high-sp)q(eed)i(lo)q(cal)d(area)i(net)o(w)o(orks)g(in)o(terconnecting)
h(man)o(y)d(general-purp)q(ose)249 1533 y(w)o(orkstations,)i(the)g(com)
o(bined)e(computational)g(resources)k(ma)o(y)14 b(exceed)19
b(the)e(p)q(o)o(w)o(er)g(of)f(a)g(single)249 1587 y(high-p)q
(erformance)i(computer.)31 b(In)19 b(some)e(cases,)k(sev)o(eral)e(MPPs)
g(ha)o(v)o(e)f(b)q(een)i(com)o(bined)d(using)249 1641
y(distributed)e(computing)d(to)i(pro)q(duce)h(unequaled)f
(computational)d(p)q(o)o(w)o(er.)291 1694 y(The)f(most)f(imp)q(ortan)o
(t)g(factor)h(in)g(distributed)h(computing)d(is)j(cost.)17
b(Large)10 b(MPPs)h(t)o(ypically)e(cost)249 1748 y(more)14
b(than)i($10)e(million.)20 b(In)15 b(con)o(trast,)h(users)h(see)g(v)o
(ery)e(little)g(cost)h(in)f(running)g(their)h(problems)249
1802 y(on)e(a)f(lo)q(cal)g(set)i(of)e(existing)h(computers.)k(It)c(is)g
(uncommon)d(for)i(distributed-computing)g(users)i(to)249
1856 y(realize)e(the)f(ra)o(w)h(computational)c(p)q(o)o(w)o(er)k(of)e
(a)h(large)g(MPP)m(,)g(but)h(they)f(are)h(able)f(to)g(solv)o(e)g
(problems)249 1910 y(sev)o(eral)i(times)f(larger)h(than)g(they)h(could)
e(using)h(one)g(of)f(their)h(lo)q(cal)f(computers.)291
1964 y(Comm)o(on)g(b)q(et)o(w)o(een)j(distributed)g(computing)e(and)h
(MPP)h(is)f(the)h(notion)e(of)h(message)g(passing.)249
2018 y(In)h(all)g(parallel)f(pro)q(cessing,)j(data)e(m)o(ust)f(b)q(e)i
(exc)o(hanged)g(b)q(et)o(w)o(een)h(co)q(op)q(erating)f(tasks.)26
b(Sev)o(eral)249 2072 y(paradigms)15 b(ha)o(v)o(e)h(b)q(een)h(tried)g
(including)f(shared)h(memory)m(,)d(parallelizing)g(compilers,)i(and)g
(mes-)249 2126 y(sage)f(passing.)20 b(The)15 b(message-passing)f(mo)q
(del)g(has)g(b)q(ecome)h(the)g(paradigm)e(of)h(c)o(hoice,)h(from)d(the)
249 2180 y(p)q(ersp)q(ectiv)o(e)18 b(of)e(the)g(n)o(um)o(b)q(er)g(and)g
(v)n(ariet)o(y)f(of)g(m)o(ultipro)q(cessors)h(that)g(supp)q(ort)h(it,)f
(as)g(w)o(ell)f(as)h(in)249 2234 y(terms)e(of)f(applications,)f
(languages,)h(and)h(soft)o(w)o(are)g(systems)g(that)g(use)h(it.)291
2288 y(The)e(P)o(arallel)f(Virtual)g(Mac)o(hine)h(\(PVM\))h(system)f
(describ)q(ed)h(in)f(this)g(b)q(o)q(ok)g(uses)h(the)g(message-)249
2342 y(passing)20 b(mo)q(del)f(to)h(allo)o(w)e(programmers)g(to)i
(exploit)g(distributed)h(computing)d(across)j(a)f(wide)249
2396 y(v)n(ariet)o(y)15 b(of)g(computer)h(t)o(yp)q(es,)h(including)d
(MPPs.)25 b(A)16 b(k)o(ey)f(concept)i(in)f(PVM)g(is)g(that)f(it)h(mak)o
(es)e(a)249 2450 y(collection)g(of)f(computers)h(app)q(ear)g(as)g(one)g
(large)g FB(virtual)f FA(mac)o(hine,)f(hence)j(its)f(name.)p
eop
%%Page: 2 21
2 20 bop 249 251 a Fu(2)1394 b(Chapter)13 b(1)249 507
y FD(1.1)52 b(Heterogeneous)17 b(Net)o(w)o(ork)f(Computing)249
615 y FA(In)e(an)f(MPP)m(,)h(ev)o(ery)h(pro)q(cessor)g(is)f(exactly)g
(lik)o(e)f(ev)o(ery)h(other)h(in)e(capabilit)o(y)m(,)f(resources,)j
(soft)o(w)o(are,)249 669 y(and)f(comm)o(unicatio)o(n)d(sp)q(eed.)20
b(Not)14 b(so)g(on)f(a)h(net)o(w)o(ork.)k(The)d(computers)f(a)o(v)n
(ailable)e(on)h(a)h(net)o(w)o(ork)249 723 y(ma)o(y)e(b)q(e)i(made)e(b)o
(y)h(di\013eren)o(t)i(v)o(endors)f(or)g(ha)o(v)o(e)f(di\013eren)o(t)i
(compilers.)h(Indeed,)f(when)f(a)f(program-)249 777 y(mer)f(wishes)i
(to)f(exploit)f(a)h(collection)g(of)f(net)o(w)o(ork)o(ed)i(computers,)e
(he)i(ma)o(y)d(ha)o(v)o(e)i(to)g(con)o(tend)g(with)249
831 y(sev)o(eral)h(di\013eren)o(t)h(t)o(yp)q(es)g(of)e(heterogeneit)o
(y:)208 918 y Ft(\017)20 b FA(arc)o(hitecture,)208 989
y Ft(\017)g FA(data)14 b(format,)208 1059 y Ft(\017)20
b FA(computational)12 b(sp)q(eed,)208 1130 y Ft(\017)20
b FA(mac)o(hine)13 b(load,)f(and)208 1201 y Ft(\017)20
b FA(net)o(w)o(ork)14 b(load.)291 1288 y(The)g(set)h(of)e(computers)i
(a)o(v)n(ailable)c(can)k(include)f(a)g(wide)g(range)g(of)f(arc)o
(hitecture)j(t)o(yp)q(es)f(suc)o(h)g(as)249 1342 y(386/486)h(PC)i
(class)g(mac)o(hines,)f(high-p)q(erformance)g(w)o(orkstations,)h
(shared-memory)e(m)o(ultipro-)249 1396 y(cessors,)k(v)o(ector)e(sup)q
(ercomputers,)h(and)f(ev)o(en)g(large)f(MPPs.)30 b(Eac)o(h)17
b(arc)o(hitecture)j(t)o(yp)q(e)d(has)h(its)249 1450 y(o)o(wn)13
b(optimal)f(programmi)o(ng)f(metho)q(d.)17 b(In)d(addition,)e(a)h(user)
i(can)f(b)q(e)g(faced)h(with)e(a)g(hierarc)o(h)o(y)i(of)249
1504 y(programming)10 b(decisions.)19 b(The)14 b(parallel)f(virtual)f
(mac)o(hine)h(ma)o(y)f(itself)h(b)q(e)i(comp)q(osed)e(of)g(parallel)249
1558 y(computers.)26 b(Ev)o(en)17 b(when)g(the)g(arc)o(hitectures)i
(are)d(only)g(serial)g(w)o(orkstations,)h(there)h(is)e(still)f(the)249
1611 y(problem)d(of)h(incompatible)f(binary)h(formats)f(and)h(the)i
(need)f(to)g(compile)e(a)h(parallel)f(task)i(on)g(eac)o(h)249
1665 y(di\013eren)o(t)h(mac)o(hine.)291 1719 y(Data)k(formats)g(on)h
(di\013eren)o(t)h(computers)f(are)h(often)f(incompatible.)35
b(This)20 b(incompatibili)o(t)o(y)249 1773 y(is)d(an)h(imp)q(ortan)o(t)
e(p)q(oin)o(t)h(in)g(distributed)h(computing)e(b)q(ecause)j(data)e(sen)
o(t)i(from)d(one)h(computer)249 1827 y(ma)o(y)c(b)q(e)i(unreadable)g
(on)g(the)g(receiving)g(computer.)20 b(Message-passing)15
b(pac)o(k)n(ages)g(dev)o(elop)q(ed)g(for)249 1881 y(heterogeneous)e(en)
o(vironmen)o(ts)c(m)o(ust)h(mak)o(e)f(sure)i(all)f(the)h(computers)f
(understand)i(the)f(exc)o(hanged)249 1935 y(data.)17
b(Unfortunately)m(,)c(the)g(early)g(message-passing)g(systems)g(dev)o
(elop)q(ed)h(for)e(sp)q(eci\014c)j(MPPs)f(are)249 1989
y(not)f(amenable)f(to)h(distributed)h(computing)d(b)q(ecause)k(they)f
(do)e(not)i(include)f(enough)g(information)249 2043 y(in)g(the)i
(message)f(to)f(enco)q(de)j(or)d(deco)q(de)j(it)d(for)h(an)o(y)f(other)
i(computer.)291 2097 y(Ev)o(en)g(if)e(the)j(set)f(of)f(computers)h(are)
g(all)e(w)o(orkstations)h(with)h(the)g(same)f(data)g(format,)e(there)k
(is)249 2151 y(still)10 b(heterogeneit)o(y)j(due)e(to)g(di\013eren)o(t)
h(computational)d(sp)q(eeds.)19 b(As)12 b(an)f(simple)e(example,)h
(consider)249 2205 y(the)i(problem)e(of)g(running)h(parallel)f(tasks)h
(on)g(a)g(virtual)f(mac)o(hine)g(that)h(is)g(comp)q(osed)g(of)g(one)g
(sup)q(er-)249 2259 y(computer)f(and)g(one)h(w)o(orkstation.)16
b(The)11 b(programmer)d(m)o(ust)i(b)q(e)h(careful)f(that)h(the)g(sup)q
(ercomputer)249 2313 y(do)q(esn't)17 b(sit)f(idle)f(w)o(aiting)g(for)h
(the)g(next)h(data)f(from)e(the)j(w)o(orkstation)e(b)q(efore)i(con)o
(tin)o(uing.)24 b(The)249 2367 y(problem)14 b(of)g(computational)e(sp)q
(eeds)17 b(can)e(b)q(e)g(v)o(ery)h(subtle.)21 b(The)15
b(virtual)f(mac)o(hine)g(can)h(b)q(e)g(com-)249 2421
y(p)q(osed)e(of)f(a)g(set)h(of)e(iden)o(tical)h(w)o(orkstations.)17
b(But)c(since)g(net)o(w)o(ork)o(ed)g(computers)f(can)g(ha)o(v)o(e)h
(sev)o(eral)249 2475 y(other)j(users)g(on)f(them)g(running)f(a)h(v)n
(ariet)o(y)g(of)f(jobs,)h(the)h(mac)o(hine)e(load)g(can)h(v)n(ary)g
(dramatically)m(.)p eop
%%Page: 3 22
3 21 bop 249 251 a Fu(In)o(tro)q(duction)1367 b(3)249
507 y FA(The)18 b(result)g(is)f(that)h(the)g(e\013ectiv)o(e)h
(computational)c(p)q(o)o(w)o(er)i(across)i(iden)o(tical)e(w)o
(orkstations)g(can)249 561 y(v)n(ary)c(b)o(y)h(an)g(order)g(of)g
(magnitude.)291 615 y(Lik)o(e)k(mac)o(hine)f(load,)h(the)i(time)d(it)h
(tak)o(es)h(to)f(send)i(a)e(message)g(o)o(v)o(er)h(the)g(net)o(w)o(ork)
g(can)g(v)n(ary)249 669 y(dep)q(ending)f(on)f(the)h(net)o(w)o(ork)f
(load)f(imp)q(osed)h(b)o(y)g(all)f(the)h(other)h(net)o(w)o(ork)g
(users,)h(who)e(ma)o(y)e(not)249 723 y(ev)o(en)g(b)q(e)h(using)e(an)o
(y)g(of)g(the)h(computers)g(in)f(the)h(virtual)f(mac)o(hine.)19
b(This)c(sending)g(time)e(b)q(ecomes)249 777 y(imp)q(ortan)o(t)c(when)j
(a)f(task)g(is)g(sitting)g(idle)f(w)o(aiting)g(for)h(a)f(message,)h
(and)g(it)g(is)g(ev)o(en)h(more)e(imp)q(ortan)o(t)249
831 y(when)18 b(the)g(parallel)f(algorithm)e(is)i(sensitiv)o(e)i(to)e
(message)h(arriv)n(al)e(time.)28 b(Th)o(us,)18 b(in)f(distributed)249
885 y(computing,)12 b(heterogeneit)o(y)j(can)f(app)q(ear)g(dynamically)
d(in)j(ev)o(en)g(simple)f(setups.)291 939 y(Despite)20
b(these)i(n)o(umerous)d(di\016culties)h(caused)h(b)o(y)e(heterogeneit)o
(y)m(,)j(distributed)f(computing)249 993 y(o\013ers)15
b(man)o(y)d(adv)n(an)o(tages:)208 1065 y Ft(\017)20 b
FA(By)14 b(using)g(existing)f(hardw)o(are,)h(the)h(cost)f(of)g(this)f
(computing)g(can)h(b)q(e)g(v)o(ery)h(lo)o(w.)208 1128
y Ft(\017)20 b FA(P)o(erformance)12 b(can)h(b)q(e)g(optimized)e(b)o(y)h
(assigning)g(eac)o(h)h(individual)d(task)i(to)h(the)g(most)e
(appropriate)249 1182 y(arc)o(hitecture.)208 1245 y Ft(\017)20
b FA(One)g(can)f(exploit)f(the)i(heterogeneous)h(nature)f(of)e(a)h
(computation.)32 b(Heterogeneous)21 b(net)o(w)o(ork)249
1299 y(computing)12 b(is)h(not)h(just)g(a)f(lo)q(cal)f(area)i(net)o(w)o
(ork)g(connecting)g(w)o(orkstations)g(together.)k(F)m(or)c(exam-)249
1353 y(ple,)h(it)g(pro)o(vides)h(access)h(to)e(di\013eren)o(t)i(data)e
(bases)h(or)f(to)g(sp)q(ecial)h(pro)q(cessors)i(for)d(those)h(parts)g
(of)249 1407 y(an)e(application)e(that)i(can)g(run)g(only)g(on)f(a)h
(certain)g(platform.)208 1470 y Ft(\017)20 b FA(The)g(virtual)f
(computer)h(resources)i(can)f(gro)o(w)e(in)g(stages)i(and)f(tak)o(e)g
(adv)n(an)o(tage)f(of)g(the)i(latest)249 1524 y(computational)12
b(and)h(net)o(w)o(ork)h(tec)o(hnologies.)208 1587 y Ft(\017)20
b FA(Program)14 b(dev)o(elopmen)o(t)g(can)h(b)q(e)h(enhanced)g(b)o(y)f
(using)g(a)g(famili)o(ar)d(en)o(vironmen)o(t.)21 b(Programmers)249
1641 y(can)14 b(use)h(editors,)f(compilers,)e(and)i(debuggers)h(that)f
(are)g(a)o(v)n(ailable)e(on)i(individual)d(mac)o(hines.)208
1704 y Ft(\017)20 b FA(The)14 b(individual)d(computers)i(and)g(w)o
(orkstations)g(are)g(usually)g(stable,)g(and)g(substan)o(tial)f(exp)q
(ertise)249 1758 y(in)h(their)i(use)f(is)g(readily)g(a)o(v)n(ailable.)
208 1821 y Ft(\017)20 b FA(User-lev)o(el)13 b(or)g(program-lev)o(el)d
(fault)h(tolerance)j(can)e(b)q(e)h(implemen)o(ted)d(with)i(little)g
(e\013ort)h(either)g(in)249 1875 y(the)i(application)d(or)i(in)f(the)i
(underlying)e(op)q(erating)h(system.)208 1938 y Ft(\017)20
b FA(Distributed)14 b(computing)e(can)j(facilitate)d(collab)q(orativ)o
(e)h(w)o(ork.)249 2010 y(All)h(these)j(factors)f(translate)f(in)o(to)g
(reduced)i(dev)o(elopmen)o(t)d(and)h(debugging)g(time,)f(reduced)j
(con-)249 2064 y(ten)o(tion)f(for)f(resources,)k(reduced)e(costs,)g
(and)f(p)q(ossibly)f(more)g(e\013ectiv)o(e)i(implemen)o(tations)c(of)i
(an)249 2118 y(application.)g(It)c(is)f(these)i(b)q(ene\014ts)g(that)e
(PVM)h(seeks)g(to)f(exploit.)17 b(F)m(rom)8 b(the)j(b)q(eginning,)f
(the)h(PVM)249 2172 y(soft)o(w)o(are)17 b(pac)o(k)n(age)f(w)o(as)g
(designed)h(to)g(mak)o(e)e(programmi)o(ng)f(for)i(a)g(heterogeneous)j
(collection)d(of)249 2226 y(mac)o(hines)d(straigh)o(tforw)o(ard.)249
2346 y FD(1.2)52 b(T)l(rends)17 b(in)h(Distributed)g(Computing)249
2454 y FA(Stand-alone)13 b(w)o(orkstations)g(deliv)o(ering)g(sev)o
(eral)h(tens)h(of)e(milli)o(ons)e(of)i(op)q(erations)h(p)q(er)g(second)
h(are)249 2508 y(commonplace,)f(and)i(con)o(tin)o(uing)g(increases)i
(in)e(p)q(o)o(w)o(er)h(are)g(predicted.)27 b(When)16
b(these)i(computer)p eop
%%Page: 4 23
4 22 bop 249 251 a Fu(4)1394 b(Chapter)13 b(1)249 507
y FA(systems)i(are)f(in)o(terconnected)j(b)o(y)d(an)g(appropriate)g
(high-sp)q(eed)h(net)o(w)o(ork,)g(their)f(com)o(bined)f(com-)249
561 y(putational)g(p)q(o)o(w)o(er)h(can)g(b)q(e)g(applied)g(to)f(solv)o
(e)h(a)g(v)n(ariet)o(y)f(of)g(computationally)e(in)o(tensiv)o(e)j
(applica-)249 615 y(tions.)k(Indeed,)c(net)o(w)o(ork)f(computing)f(ma)o
(y)f(ev)o(en)j(pro)o(vide)g(sup)q(ercomputer-lev)o(el)f(computational)
249 669 y(p)q(o)o(w)o(er.)18 b(F)m(urther,)12 b(under)h(the)f(righ)o(t)
f(circumstances,)h(the)h(net)o(w)o(ork-based)f(approac)o(h)g(can)f(b)q
(e)i(e\013ec-)249 723 y(tiv)o(e)j(in)f(coupling)g(sev)o(eral)h(similar)
d(m)o(ultipro)q(cessors,)j(resulting)f(in)h(a)f(con\014guration)g(that)
h(migh)o(t)249 777 y(b)q(e)f(economically)c(and)j(tec)o(hnically)f
(di\016cult)h(to)f(ac)o(hiev)o(e)i(with)e(sup)q(ercomputer)i(hardw)o
(are.)291 831 y(T)m(o)i(b)q(e)i(e\013ectiv)o(e,)h(distributed)e
(computing)f(requires)i(high)e(comm)o(unication)e(sp)q(eeds.)32
b(In)18 b(the)249 885 y(past)f(\014fteen)g(y)o(ears)g(or)g(so,)g(net)o
(w)o(ork)g(sp)q(eeds)h(ha)o(v)o(e)f(increased)h(b)o(y)e(sev)o(eral)h
(orders)h(of)e(magnitude)249 939 y(\(see)f(Figure)f(1.1\).)409
1598 y @beginspecial 113 @llx 297 @lly 471 @urx 488 @ury
3060 @rwi 1440 @rhi @setspecial
%%BeginDocument: fig1.ps

/arrowHeight 10 def
/arrowWidth 5 def

/IdrawDict 52 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Times-Bold reencodeISO def
/Helvetica-Oblique reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l b translate w h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def


/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.799705 0 0 0.799705 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Line
%I b 65535
2 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 -0 -0 1 150 218 ] concat
%I
81 200 437 200 Line
%I 1
End

Begin %I Line
%I b 65535
2 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 -0 -0 1 150 218 ] concat
%I
82 200 82 360 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-times-bold-r-*-140-*
Times-Bold 14 SetF
%I t
[ 1 0 0 1 195 455 ] concat
%I
[
(10)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-times-bold-r-*-140-*
Times-Bold 14 SetF
%I t
[ 1 0 0 1 188 507 ] concat
%I
[
(100)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-times-bold-r-*-140-*
Times-Bold 14 SetF
%I t
[ 1 0 0 1 181 558 ] concat
%I
[
(1000)
] Text
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f *-times-bold-r-*-140-*
Times-Bold 14 SetF
%I p u
%I t
[ 1 0 0 1 0 -26 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-times-bold-r-*-140-*
Times-Bold 14 SetF
%I t
[ 1 0 0 1 144 632 ] concat
%I
[
(Bandwidth)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-times-bold-r-*-140-*
Times-Bold 14 SetF
%I t
[ 1 0 0 1 169 618 ] concat
%I
[
(Mbit/s)
] Text
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-times-bold-r-*-140-*
Times-Bold 14 SetF
%I t
[ 1 0 0 1 261 408 ] concat
%I
[
(1980)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-times-bold-r-*-140-*
Times-Bold 14 SetF
%I t
[ 1 0 0 1 335 408 ] concat
%I
[
(1985)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-times-bold-r-*-140-*
Times-Bold 14 SetF
%I t
[ 1 0 0 1 403 408 ] concat
%I
[
(1990)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-times-bold-r-*-140-*
Times-Bold 14 SetF
%I t
[ 1 0 0 1 478 408 ] concat
%I
[
(1995)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-medium-o-*-140-*
Helvetica-Oblique 14 SetF
%I t
[ 1 0 0 1 319 480 ] concat
%I
[
(Token ring)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-medium-o-*-140-*
Helvetica-Oblique 14 SetF
%I t
[ 1 0 0 1 400 508 ] concat
%I
[
(FDDI)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-medium-o-*-140-*
Helvetica-Oblique 14 SetF
%I t
[ 1 0 0 1 467 549 ] concat
%I
[
(Gigabit )
(Networks)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-helvetica-medium-o-*-140-*
Helvetica-Oblique 14 SetF
%I t
[ 1 0 0 1 253 454 ] concat
%I
[
(Ethernet)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f *-times-bold-r-*-140-*
Times-Bold 14 SetF
%I t
[ 1 0 0 1 368 387 ] concat
%I
[
(Year)
] Text
End

End %I eop

showpage


end
%%EndDocument
 @endspecial 249 1661 a Fo(Figure)f(1.1)249 1698 y Fy(Net)o(w)o(orking)
d(sp)q(eeds)291 1797 y FA(Among)i(the)i(most)e(notable)i(adv)n(ances)g
(in)f(computer)h(net)o(w)o(orking)f(tec)o(hnology)h(are)g(the)g(follo)o
(w-)249 1851 y(ing:)208 1937 y Ft(\017)20 b FA(Ethernet)14
b({)e(the)h(name)e(giv)o(en)g(to)h(the)h(p)q(opular)f(lo)q(cal)f(area)i
(pac)o(k)o(et-switc)o(hed)g(net)o(w)o(ork)f(tec)o(hnology)249
1991 y(in)o(v)o(en)o(ted)k(b)o(y)f(Xero)o(x)h(P)m(AR)o(C.)f(The)h
(Ethernet)i(is)d(a)h(10)f(Mbit/s)g(broadcast)i(bus)f(tec)o(hnology)f
(with)249 2045 y(distributed)g(access)g(con)o(trol.)208
2115 y Ft(\017)20 b FA(FDDI)10 b({)h(the)g(Fib)q(er)h(Distributed)f
(Data)f(In)o(terface.)18 b(FDDI)11 b(is)f(a)h(100-Mbit/sec)g(tok)o
(en-passing)f(ring)249 2168 y(that)16 b(uses)h(optical)f(\014b)q(er)g
(for)g(transmission)f(b)q(et)o(w)o(een)i(stations)f(and)g(has)g(dual)g
(coun)o(ter-rotating)249 2222 y(rings)e(to)g(pro)o(vide)f(redundan)o(t)
i(data)e(paths)i(for)e(reliabilit)o(y)m(.)208 2292 y
Ft(\017)20 b FA(HiPPI)14 b({)g(the)h(high-p)q(erformance)e(parallel)g
(in)o(terface.)20 b(HiPPI)14 b(is)g(a)g(copp)q(er-based)i(data)e(comm)o
(u-)249 2346 y(nications)k(standard)g(capable)h(of)e(transferring)i
(data)f(at)g(800)f(Mbit/sec)i(o)o(v)o(er)f(32)g(parallel)f(lines)249
2400 y(or)i(1.6)e(Gbit/sec)i(o)o(v)o(er)g(64)f(parallel)g(lines.)32
b(Most)19 b(commercially)c(a)o(v)n(ailable)i(high-p)q(erformance)249
2454 y(computers)e(o\013er)g(a)g(HIPPI)g(in)o(terface.)21
b(It)14 b(is)h(a)f(p)q(oin)o(t-to-p)q(oin)o(t)g(c)o(hannel)g(that)h(do)
q(es)h(not)e(supp)q(ort)249 2508 y(m)o(ultidrop)e(con\014gurations.)p
eop
%%Page: 5 24
5 23 bop 249 251 a Fu(In)o(tro)q(duction)1367 b(5)208
507 y Ft(\017)20 b FA(SONET)h({)f(Sync)o(hronous)h(Optical)f(Net)o(w)o
(ork.)37 b(SONET)21 b(is)f(a)g(series)h(of)f(optical)f(signals)h(that)
249 561 y(are)e(m)o(ultiples)d(of)h(a)h(basic)h(signal)e(rate)h(of)g
(51.84)f(Mbit/sec)i(called)e(OC-1.)28 b(The)18 b(OC-3)f(\(155.52)249
615 y(Mbit/sec\))i(and)e(OC-12)h(\(622.08)e(Mbit/sec\))i(ha)o(v)o(e)g
(b)q(een)h(designated)f(as)g(the)g(customer)g(access)249
669 y(rates)11 b(in)f(future)h(B-ISDN)g(net)o(w)o(orks,)g(and)f(signal)
f(rates)i(of)f(OC-192)g(\(9.952)f(Gbit/sec\))i(are)f(de\014ned.)208
738 y Ft(\017)20 b FA(A)m(TM)12 b({)g(Async)o(hronous)h(T)m(ransfer)f
(Mo)q(de.)18 b(A)m(TM)12 b(is)f(the)i(tec)o(hnique)g(for)f(transp)q
(ort,)h(m)o(ultiplexing,)249 792 y(and)j(switc)o(hing)f(that)h(pro)o
(vides)g(a)g(high)f(degree)i(of)e(\015exibilit)o(y)f(required)j(b)o(y)f
(B-ISDN.)f(A)m(TM)h(is)f(a)249 846 y(connection-orien)o(ted)j(proto)q
(col)e(emplo)o(ying)e(\014xed-size)k(pac)o(k)o(ets)f(with)g(a)f(5-b)o
(yte)h(header)g(and)g(48)249 900 y(b)o(ytes)e(of)e(information.)291
985 y(These)k(adv)n(ances)g(in)f(high-sp)q(eed)g(net)o(w)o(orking)g
(promise)f(high)h(throughput)h(with)e(lo)o(w)h(latency)249
1039 y(and)f(mak)o(e)f(it)h(p)q(ossible)g(to)h(utilize)f(distributed)g
(computing)f(for)h(y)o(ears)h(to)f(come.)21 b(Consequen)o(tly)m(,)249
1093 y(increasing)13 b(n)o(um)o(b)q(ers)g(of)f(univ)o(ersities,)i(go)o
(v)o(ernmen)o(t)d(and)i(industrial)g(lab)q(oratories,)f(and)h
(\014nancial)249 1147 y(\014rms)h(are)h(turning)g(to)g(distributed)g
(computing)f(to)g(solv)o(e)h(their)g(computational)e(problems.)20
b(The)249 1201 y(ob)r(jectiv)o(e)13 b(of)f(PVM)h(is)f(to)h(enable)g
(these)h(institutions)e(to)g(use)i(distributed)f(computing)e
FB(e\016ciently.)249 1321 y FD(1.3)52 b(PVM)16 b(Ov)o(erview)249
1429 y FA(The)j(PVM)h(soft)o(w)o(are)f(pro)o(vides)g(a)f(uni\014ed)h
(framew)o(ork)f(within)g(whic)o(h)g(parallel)g(programs)g(can)249
1483 y(b)q(e)d(dev)o(elop)q(ed)g(in)f(an)g(e\016cien)o(t)h(and)f
(straigh)o(tforw)o(ard)g(manner)f(using)h(existing)g(hardw)o(are.)20
b(PVM)249 1537 y(enables)14 b(a)g(collection)f(of)g(heterogeneous)j
(computer)d(systems)h(to)g(b)q(e)g(view)o(ed)g(as)f(a)h(single)f
(parallel)249 1591 y(virtual)h(mac)o(hine.)20 b(PVM)15
b(transparen)o(tly)h(handles)f(all)f(message)g(routing,)h(data)f(con)o
(v)o(ersion,)h(and)249 1645 y(task)f(sc)o(heduling)g(across)h(a)f(net)o
(w)o(ork)g(of)f(incompatible)f(computer)h(arc)o(hitectures.)291
1699 y(The)19 b(PVM)h(computing)d(mo)q(del)h(is)h(simple)f(y)o(et)h(v)o
(ery)h(general,)g(and)f(accommo)q(dates)e(a)i(wide)249
1753 y(v)n(ariet)o(y)f(of)h(application)e(program)g(structures.)35
b(The)20 b(programmi)o(ng)c(in)o(terface)j(is)g(delib)q(erately)249
1807 y(straigh)o(tforw)o(ard,)13 b(th)o(us)g(p)q(ermitting)f(simple)g
(program)g(structures)k(to)d(b)q(e)h(implemen)o(ted)e(in)g(an)i(in-)249
1861 y(tuitiv)o(e)c(manner.)16 b(The)11 b(user)g(writes)g(his)f
(application)f(as)h(a)g(collection)g(of)g(co)q(op)q(erating)g
FB(tasks)p FA(.)17 b(T)m(asks)249 1914 y(access)h(PVM)e(resources)i
(through)e(a)f(library)g(of)h(standard)g(in)o(terface)g(routines.)24
b(These)17 b(routines)249 1968 y(allo)o(w)9 b(the)j(initiation)d(and)i
(termination)e(of)h(tasks)i(across)f(the)h(net)o(w)o(ork)f(as)g(w)o
(ell)f(as)i(comm)o(uni)o(cation)249 2022 y(and)k(sync)o(hronization)g
(b)q(et)o(w)o(een)h(tasks.)24 b(The)17 b(PVM)f(message-passing)f
(primitiv)o(es)f(are)j(orien)o(ted)249 2076 y(to)o(w)o(ards)f
(heterogeneous)h(op)q(eration,)f(in)o(v)o(olving)d(strongly)i(t)o(yp)q
(ed)h(constructs)i(for)d(bu\013ering)h(and)249 2130 y(transmission.)27
b(Comm)o(uni)o(cation)14 b(constructs)19 b(include)f(those)g(for)e
(sending)i(and)f(receiving)g(data)249 2184 y(structures)d(as)e(w)o(ell)
e(as)i(high-lev)o(el)e(primitiv)o(es)g(suc)o(h)i(as)g(broadcast,)g
(barrier)g(sync)o(hronization,)f(and)249 2238 y(global)h(sum.)291
2292 y(PVM)h(tasks)h(ma)o(y)d(p)q(ossess)k(arbitrary)e(con)o(trol)g
(and)g(dep)q(endency)i(structures.)20 b(In)14 b(other)f(w)o(ords,)249
2346 y(at)19 b(an)o(y)f(p)q(oin)o(t)g(in)g(the)h(execution)h(of)e(a)g
(concurren)o(t)i(application,)e(an)o(y)h(task)f(in)h(existence)h(ma)o
(y)249 2400 y(start)f(or)g(stop)g(other)h(tasks)f(or)g(add)f(or)h
(delete)h(computers)f(from)e(the)i(virtual)f(mac)o(hine.)31
b(An)o(y)249 2454 y(pro)q(cess)16 b(ma)o(y)d(comm)o(unicate)f(and/or)i
(sync)o(hronize)h(with)g(an)o(y)f(other.)20 b(An)o(y)14
b(sp)q(eci\014c)i(con)o(trol)e(and)249 2508 y(dep)q(endency)k
(structure)g(ma)o(y)c(b)q(e)i(implemen)o(ted)d(under)k(the)f(PVM)g
(system)g(b)o(y)f(appropriate)h(use)p eop
%%Page: 6 25
6 24 bop 249 251 a Fu(6)1394 b(Chapter)13 b(1)249 507
y FA(of)g(PVM)i(constructs)h(and)d(host)h(language)f(con)o(trol-\015o)o
(w)g(statemen)o(ts.)291 561 y(Owing)18 b(to)g(its)h(ubiquitous)f
(nature)i(\(sp)q(eci\014cally)m(,)f(the)h(virtual)d(mac)o(hine)h
(concept\))i(and)f(also)249 615 y(b)q(ecause)d(of)e(its)g(simple)f(but)
i(complete)f(programmi)o(ng)d(in)o(terface,)k(the)g(PVM)g(system)f(has)
g(gained)249 669 y(widespread)h(acceptance)h(in)d(the)i(high-p)q
(erformance)e(scien)o(ti\014c)h(computing)f(comm)o(unit)o(y)l(.)249
790 y FD(1.4)52 b(Other)18 b(P)o(ac)o(k)m(ages)249 897
y FA(Sev)o(eral)12 b(researc)o(h)i(groups)e(ha)o(v)o(e)g(dev)o(elop)q
(ed)h(soft)o(w)o(are)f(pac)o(k)n(ages)g(that)g(lik)o(e)f(PVM)h(assist)h
(program-)249 951 y(mers)k(in)h(using)f(distributed)h(computing.)28
b(Among)16 b(the)i(most)f(w)o(ell)g(kno)o(wn)g(e\013orts)i(are)f(P4)g
([1)o(],)249 1005 y(Express)f([6)o(],)d(MPI)h([7],)f(and)h(Linda)f([3)o
(].)21 b(V)m(arious)15 b(other)g(systems)g(with)g(similar)e
(capabilities)h(are)249 1059 y(also)f(in)h(existence;)h(a)f(reasonably)
f(comprehensiv)o(e)h(listing)f(ma)o(y)f(b)q(e)j(found)e(in)g([17)o(].)
249 1142 y Fr(1.4.1)48 b(The)15 b(p4)h(System)249 1225
y FA(P4)d([1)o(])g(is)f(a)h(library)f(of)g(macros)g(and)h(subroutines)h
(dev)o(elop)q(ed)g(at)e(Argonne)i(National)d(Lab)q(oratory)249
1279 y(for)f(programming)d(a)k(v)n(ariet)o(y)f(of)g(parallel)f(mac)o
(hines.)16 b(The)c(p4)e(system)g(supp)q(orts)i(b)q(oth)f(the)g(shared-)
249 1333 y(memory)g(mo)q(del)i(\(based)h(on)g(monitors\))e(and)i(the)g
(distributed-memory)e(mo)q(del)g(\(using)i(message-)249
1387 y(passing\).)29 b(F)m(or)17 b(the)h(shared-memory)e(mo)q(del)g(of)
h(parallel)f(computation,)g(p4)h(pro)o(vides)h(a)f(set)i(of)249
1441 y(useful)d(monitors)f(as)h(w)o(ell)f(as)h(a)g(set)h(of)e(primitiv)
o(es)g(from)f(whic)o(h)i(monitors)e(can)j(b)q(e)f(constructed.)249
1495 y(F)m(or)f(the)i(distributed-memory)d(mo)q(del,)g(p4)h(pro)o
(vides)h(t)o(yp)q(ed)h(send)f(and)g(receiv)o(e)h(op)q(erations)f(and)
249 1549 y(creation)e(of)g(pro)q(cesses)i(according)e(to)g(a)f(text)i
(\014le)f(describing)g(group)g(and)g(pro)q(cess)h(structure.)291
1603 y FB(Pr)n(o)n(c)n(ess)i(management)h FA(in)f(the)h(p4)f(system)g
(is)g(based)h(on)f(a)g(con\014guration)g(\014le)g(that)g(sp)q
(eci\014es)249 1657 y(the)f(host)g(p)q(o)q(ol,)f(the)h(ob)r(ject)g
(\014le)g(to)f(b)q(e)h(executed)h(on)f(eac)o(h)g(mac)o(hine,)e(the)i(n)
o(um)o(b)q(er)f(of)f(pro)q(cesses)249 1711 y(to)j(b)q(e)h(started)g(on)
f(eac)o(h)h(host)f(\(in)o(tended)h(primarily)c(for)j(m)o(ultipro)q
(cessor)g(systems\),)g(and)g(other)249 1765 y(auxiliary)12
b(information.)j(An)f(example)f(of)g(a)h(con\014guration)f(\014le)h(is)
336 1861 y Fs(#)22 b(start)f(one)g(slave)g(on)g(each)g(of)g(sun2)g(and)
g(sun3)336 1914 y(local)g(0)336 1968 y(sun2)43 b(1)g
(/home/mylogin/p4pgm)o(s/sr_)o(test)336 2022 y(sun3)g(1)g
(/home/mylogin/p4pgm)o(s/sr_)o(test)291 2118 y FA(Tw)o(o)17
b(issues)i(are)g(notew)o(orth)o(y)f(in)g(regard)g(to)g(the)h(pro)q
(cess)h(managemen)o(t)15 b(mec)o(hanism)h(in)i(p4.)249
2172 y(First,)g(there)g(is)f(the)h(notion)e(a)h(\\master")f(pro)q(cess)
i(and)f(\\sla)o(v)o(e")f(pro)q(cesses,)k(and)d(m)o(ultilev)o(el)e(hi-)
249 2226 y(erarc)o(hies)i(ma)o(y)c(b)q(e)j(formed)d(to)i(implemen)o(t)e
(what)i(is)g(termed)g(a)g FB(cluster)f FA(mo)q(del)g(of)g(computation.)
249 2280 y(Second,)19 b(the)f(primary)f(mo)q(de)f(of)h(pro)q(cess)j
(creation)e(is)g(static,)g(via)f(the)i(con\014guration)e(\014le;)i(dy-)
249 2334 y(namic)13 b(pro)q(cess)k(creation)e(is)f(p)q(ossible)h(only)f
(b)o(y)h(a)f(statically)g(created)i(pro)q(cess)h(that)d(m)o(ust)g(in)o
(v)o(ok)o(e)249 2388 y(a)k(sp)q(ecial)f(o4)h(function)f(that)h(spa)o
(wns)g(a)f(new)i(pro)q(cess)g(on)f(the)g(lo)q(cal)f(mac)o(hine.)28
b(Despite)19 b(these)249 2442 y(restrictions,)14 b(a)f(v)n(ariet)o(y)g
(of)f(application)g(paradigms)f(ma)o(y)g(b)q(e)j(implemen)o(ted)d(in)i
(the)h(p4)f(system)f(in)249 2496 y(a)i(fairly)e(straigh)o(tforw)o(ard)h
(manner.)p eop
%%Page: 7 26
7 25 bop 249 251 a Fu(In)o(tro)q(duction)1367 b(7)291
507 y FB(Message)15 b(p)n(assing)f FA(in)g(the)g(p4)g(system)g(is)f(ac)
o(hiev)o(ed)h(through)g(the)h(use)g(of)e(traditional)f
Fs(send)h FA(and)249 561 y Fs(recv)d FA(primitiv)o(es,)f(parameterized)
j(almost)d(exactly)i(as)g(other)g(message-passing)g(systems.)17
b(Sev)o(eral)249 615 y(v)n(arian)o(ts)i(are)g(pro)o(vided)g(for)g
(seman)o(tics,)h(suc)o(h)g(as)f(heterogeneous)j(exc)o(hange)e(and)f
(blo)q(c)o(king)f(or)249 669 y(non)o(blo)q(c)o(king)f(transfer.)34
b(A)18 b(signi\014can)o(t)g(prop)q(ortion)h(of)f(the)h(burden)h(of)e
(bu\013er)h(allo)q(cation)e(and)249 723 y(managemen)o(t,)f(ho)o(w)o(ev)
o(er,)i(is)g(left)f(to)h(the)g(user.)31 b(Apart)18 b(from)e(basic)i
(message)f(passing,)h(p4)g(also)249 777 y(o\013ers)g(a)f(v)n(ariet)o(y)
g(of)g(global)f(op)q(erations,)i(including)e(broadcast,)i(global)e
(maxim)o(a)e(and)j(minima,)249 831 y(and)d(barrier)g(sync)o
(hronization.)249 914 y Fr(1.4.2)48 b(Express)249 997
y FA(In)13 b(con)o(trast)h(to)e(the)i(other)f(parallel)f(pro)q(cessing)
i(systems)f(describ)q(ed)i(in)d(this)h(section,)h(Express)g([6])249
1051 y(to)q(olkit)c(is)g(a)g(collection)g(of)g(to)q(ols)h(that)f
(individually)e(address)k(v)n(arious)e(asp)q(ects)i(of)e(concurren)o(t)
i(com-)249 1105 y(putation.)17 b(The)12 b(to)q(olkit)f(is)g(dev)o(elop)
q(ed)h(and)g(mark)o(eted)f(commercially)d(b)o(y)k(P)o(araSoft)f(Corp)q
(oration,)249 1159 y(a)16 b(compan)o(y)f(that)i(w)o(as)f(started)i(b)o
(y)e(some)g(mem)o(b)q(ers)f(of)h(the)h(Caltec)o(h)g(concurren)o(t)h
(computation)249 1213 y(pro)r(ject.)291 1267 y(The)10
b(philosoph)o(y)f(b)q(ehind)h(computing)f(with)g(Express)j(is)e(based)g
(on)g(b)q(eginning)g(with)f(a)h(sequen)o(tial)249 1321
y(v)o(ersion)k(of)f(an)g(application)f(and)h(follo)o(wing)e(a)i
(recommended)g(dev)o(elopmen)o(t)f(life)h(cycle)h(culminat-)249
1375 y(ing)h(in)f(a)h(parallel)f(v)o(ersion)h(that)h(is)f(tuned)g(for)g
(optimalit)o(y)m(.)j(T)o(ypical)d(dev)o(elopmen)o(t)f(cycles)i(b)q
(egin)249 1429 y(with)f(the)g(use)h(of)f(VTOOL,)g(a)g(graphical)f
(program)f(that)j(allo)o(ws)d(the)j(progress)g(of)f(sequen)o(tial)g
(al-)249 1483 y(gorithms)h(to)h(b)q(e)h(displa)o(y)o(ed)f(in)g(a)g
(dynamic)e(manner.)28 b(Up)q(dates)18 b(and)g(references)i(to)d
(individual)249 1537 y(data)d(structures)i(can)e(b)q(e)h(displa)o(y)o
(ed)e(to)h(explicitly)f(demonstrate)h(algorithm)d(structure)16
b(and)e(pro-)249 1591 y(vide)19 b(the)g(detailed)g(kno)o(wledge)g
(necessary)h(for)f(parallelization.)31 b(Related)18 b(to)h(this)g
(program)e(is)249 1645 y(FTOOL,)h(whic)o(h)h(pro)o(vides)f(in-depth)h
(analysis)e(of)h(a)g(program)f(including)g(v)n(ariable)g(use)i(analy-)
249 1699 y(sis,)f(\015o)o(w)f(structure,)j(and)d(feedbac)o(k)h
(regarding)f(p)q(oten)o(tial)g(parallelization.)26 b(FTOOL)18
b(op)q(erates)249 1753 y(on)e(b)q(oth)g(sequen)o(tial)g(and)g(parallel)
f(v)o(ersions)h(of)g(an)f(application.)23 b(A)16 b(third)g(to)q(ol)g
(called)f(ASP)m(AR)249 1807 y(is)i(then)h(used;)h(this)e(is)g(an)g
(automated)e(parallelizer)i(that)g(con)o(v)o(erts)h(sequen)o(tial)f(C)g
(and)g(F)m(ortran)249 1861 y(programs)c(for)g(parallel)g(or)h
(distributed)g(execution)h(using)f(the)g(Express)i(programmi)o(ng)11
b(mo)q(dels.)291 1914 y(The)f(core)i(of)d(the)i(Express)h(system)f(is)f
(a)g(set)h(of)f(libraries)g(for)g(comm)o(unication,)d(I/O,)j(and)g
(parallel)249 1968 y(graphics.)17 b(The)11 b(comm)o(uni)o(cation)c
(primitiv)o(es)h(are)j(akin)e(to)h(those)h(found)e(in)h(other)h
(message-passing)249 2022 y(systems)j(and)f(include)h(a)f(v)n(ariet)o
(y)g(of)g(global)f(op)q(erations)i(and)g(data)f(distribution)g
(primitiv)o(es.)j(Ex-)249 2076 y(tended)h(I/O)e(routines)h(enable)g
(parallel)e(input)h(and)h(output,)f(and)g(a)g(similar)e(set)k(of)e
(routines)h(are)249 2130 y(pro)o(vided)i(for)f(graphical)g(displa)o(ys)
g(from)f(m)o(ultiple)f(concurren)o(t)20 b(pro)q(cesses.)32
b(Express)19 b(also)e(con-)249 2184 y(tains)12 b(the)g(NDB)g(to)q(ol,)f
(a)g(parallel)f(debugger)j(that)e(uses)i(commands)d(based)i(on)f(the)h
(p)q(opular)g(\\db)o(x")249 2238 y(in)o(terface.)249
2321 y Fr(1.4.3)48 b(MPI)249 2404 y FA(The)17 b(Message)h(P)o(assing)f
(In)o(terface)h(\(MPI\))g([7)o(])e(standard,)i(whose)f(sp)q
(eci\014cation)h(w)o(as)f(completed)249 2458 y(in)h(April)f(1994,)g(is)
h(the)h(outcome)e(of)g(a)h(comm)o(uni)o(t)o(y)d(e\013ort)k(to)f(try)g
(to)g(de\014ne)h(b)q(oth)f(the)g(syn)o(tax)p eop
%%Page: 8 27
8 26 bop 249 251 a Fu(8)1394 b(Chapter)13 b(1)249 507
y FA(and)k(seman)o(tics)g(of)g(a)g(core)i(of)e(message-passing)f
(library)h(routines)h(that)g(w)o(ould)e(b)q(e)i(useful)g(to)f(a)249
561 y(wide)e(range)h(of)e(users)j(and)e(e\016cien)o(tly)g(implemen)o
(table)d(on)j(a)g(wide)h(range)f(of)g(MPPs.)22 b(The)16
b(main)249 615 y(adv)n(an)o(tage)e(of)f(establishing)h(a)g
(message-passing)g(standard)h(is)f(p)q(ortabilit)o(y)m(.)j(One)f(of)d
(the)i(goals)f(of)249 669 y(dev)o(eloping)c(MPI)g(is)h(to)f(pro)o(vide)
g(MPP)h(v)o(endors)g(with)f(a)g(clearly)g(de\014ned)i(base)f(set)g(of)f
(routines)h(that)249 723 y(they)k(can)g(implemen)o(t)d(e\016cien)o(tly)
i(or,)h(in)f(some)f(cases,)j(pro)o(vide)f(hardw)o(are)g(supp)q(ort)g
(for,)f(thereb)o(y)249 777 y(enhancing)g(scalabilit)o(y)m(.)291
831 y(MPI)h(is)g(not)f(in)o(tended)i(to)f(b)q(e)g(a)g(complete)f(and)h
(self-con)o(tained)g(soft)o(w)o(are)g(infrastructure)h(that)249
885 y(can)d(b)q(e)h(used)g(for)e(distributed)i(computing.)i(MPI)d(do)q
(es)h(not)f(include)g(necessities)i(suc)o(h)f(as)f(pro)q(cess)249
939 y(managemen)o(t)i(\(the)j(abilit)o(y)e(to)h(start)h(tasks\),)h
(\(virtual\))d(mac)o(hine)h(con\014guration,)g(and)g(supp)q(ort)249
993 y(for)j(input)h(and)f(output.)38 b(As)21 b(a)f(result,)j(it)d(is)g
(an)o(ticipated)g(that)h(MPI)g(will)e(b)q(e)i(realized)g(as)f(a)249
1047 y(comm)o(unications)10 b(in)o(terface)k(la)o(y)o(er)f(that)g(will)
f(b)q(e)h(built)g(up)q(on)g(nativ)o(e)g(facilities)f(of)h(the)g
(underlying)249 1101 y(hardw)o(are)h(platform,)c(with)j(the)h
(exception)g(of)f(certain)g(data)g(transfer)i(op)q(erations)e(that)g
(migh)o(t)e(b)q(e)249 1155 y(implemen)o(ted)g(at)i(a)g(lev)o(el)g
(close)h(to)f(hardw)o(are.)19 b(This)13 b(scenario)h(p)q(ermits)f(the)h
(pro)o(vision)e(of)h(PVM's)249 1209 y(b)q(eing)h(p)q(orted)h(to)e(MPI)i
(to)e(exploit)g(an)o(y)h(comm)o(unicatio)o(n)d(p)q(erformance)j(a)g(v)o
(endor)g(supplies.)249 1292 y Fr(1.4.4)48 b(The)15 b(Linda)g(System)249
1375 y FA(Linda)c([3)o(])h(is)f(a)h(concurren)o(t)h(programming)c(mo)q
(del)h(that)i(has)g(ev)o(olv)o(ed)f(from)f(a)i(Y)m(ale)f(Univ)o(ersit)o
(y)h(re-)249 1429 y(searc)o(h)j(pro)r(ject.)20 b(The)14
b(primary)f(concept)i(in)f(Linda)f(is)h(that)g(of)g(a)g
(\\tuple-space",)g(an)g(abstraction)249 1483 y(via)j(whic)o(h)h(co)q
(op)q(erating)g(pro)q(cesses)j(comm)o(unicate.)28 b(This)17
b(cen)o(tral)i(theme)e(of)h(Linda)f(has)h(b)q(een)249
1537 y(prop)q(osed)d(as)f(an)g(alternativ)o(e)g(paradigm)e(to)i(the)h
(t)o(w)o(o)f(traditional)e(metho)q(ds)i(of)f(parallel)g(pro)q(cess-)249
1591 y(ing:)k(that)c(based)h(on)f(shared)h(memory)m(,)c(and)j(that)g
(based)h(on)f(message)g(passing.)k(The)d(tuple-space)249
1645 y(concept)i(is)f(essen)o(tially)g(an)g(abstraction)h(of)e
(distributed)i(shared)g(memory)m(,)c(with)i(one)i(imp)q(ortan)o(t)249
1699 y(di\013erence)g(\(tuple-spaces)f(are)g(asso)q(ciativ)o(e\),)e
(and)h(sev)o(eral)h(minor)d(distinctions)i(\(destructiv)o(e)h(and)249
1753 y(nondestructiv)o(e)j(reads)e(and)g(di\013eren)o(t)h(coherency)h
(seman)o(tics)e(are)g(p)q(ossible\).)25 b(Applications)15
b(use)249 1807 y(the)g(Linda)f(mo)q(del)f(b)o(y)h(em)o(b)q(edding)f
(explicitly)m(,)g(within)h(co)q(op)q(erating)h(sequen)o(tial)f
(programs,)f(con-)249 1861 y(structs)j(that)e(manipulate)d
(\(insert/retriev)o(e)16 b(tuples\))f(the)f(tuple)g(space.)291
1914 y(F)m(rom)i(the)j(application)e(p)q(oin)o(t)h(of)g(view)g(Linda)g
(is)g(a)g(set)h(of)f(programming)d(language)i(exten-)249
1968 y(sions)d(for)f(facilitating)e(parallel)i(programmi)o(ng.)i(It)f
(pro)o(vides)f(a)h(shared-memory)e(abstraction)h(for)249
2022 y(pro)q(cess)19 b(comm)o(unication)14 b(without)j(requiring)g(the)
h(underlying)f(hardw)o(are)h(to)f(ph)o(ysically)f(share)249
2076 y(memory)m(.)291 2130 y(The)c(Linda)f(system)g(usually)g(refers)j
(to)d(a)h(sp)q(eci\014c)h(implemen)o(tatio)o(n)c(of)i(soft)o(w)o(are)h
(that)g(supp)q(orts)249 2184 y(the)j(Linda)f(programming)d(mo)q(del.)18
b(System)c(soft)o(w)o(are)h(is)f(pro)o(vided)h(that)f(establishes)i
(and)e(main-)249 2238 y(tains)g(tuple)h(spaces)h(and)f(is)f(used)i(in)e
(conjunction)h(with)f(libraries)g(that)h(appropriately)f(in)o(terpret)
249 2292 y(and)e(execute)h(Linda)e(primitiv)o(es.)16
b(Dep)q(ending)c(on)f(the)i(en)o(vironmen)o(t)d(\(shared-memory)g(m)o
(ultipro-)249 2346 y(cessors,)20 b(message-passing)d(parallel)f
(computers,)h(net)o(w)o(orks)h(of)f(w)o(orkstations,)h(etc.\),)g(the)g
(tuple)249 2400 y(space)d(mec)o(hanism)d(is)j(implem)o(en)o(ted)e
(using)h(di\013eren)o(t)h(tec)o(hniques)g(and)g(with)e(v)n(arying)h
(degrees)i(of)249 2454 y(e\016ciency)m(.)j(Recen)o(tly)m(,)13
b(a)h(new)g FB(system)g FA(sc)o(heme)g(has)g(b)q(een)h(prop)q(osed,)g
(at)f(least)g(nominally)c(related)249 2508 y(to)j(the)g(Linda)f(pro)r
(ject.)19 b(This)13 b(sc)o(heme,)g(termed)f(\\Pirhana")g([9],)g(prop)q
(oses)i(a)e(proactiv)o(e)h(approac)o(h)p eop
%%Page: 9 28
9 27 bop 249 251 a Fu(In)o(tro)q(duction)1367 b(9)249
507 y FA(to)15 b(concurren)o(t)h(computing:)j(computational)12
b(resources)17 b(\(view)o(ed)e(as)g(activ)o(e)g(agen)o(ts\))g(seize)h
(com-)249 561 y(putational)f(tasks)h(from)e(a)i(w)o(ell-kno)o(wn)e(lo)q
(cation)h(based)i(on)e(a)o(v)n(ailabilit)o(y)e(and)i(suitabilit)o(y)m
(.)22 b(This)249 615 y(sc)o(heme)10 b(ma)o(y)f(b)q(e)h(implemen)o(ted)e
(on)i(m)o(ultiple)e(platforms)h(and)h(manifested)f(as)h(a)g(\\Pirhana)f
(system")249 669 y(or)14 b(\\Linda-Pirhana)e(system.")p
eop
%%Page: 10 29
10 28 bop eop
%%Page: 11 30
11 29 bop 249 325 a Fp(2)25 b FD(The)18 b(PVM)e(System)249
561 y FA(PVM)i(\(P)o(arallel)f(Virtual)g(Mac)o(hine\))h(is)f(a)g(b)o
(ypro)q(duct)i(of)e(an)g(ongoing)f(heterogeneous)k(net)o(w)o(ork)249
615 y(computing)d(researc)o(h)j(pro)r(ject)g(in)o(v)o(olving)c(the)k
(authors)f(and)f(their)h(institutions.)32 b(The)19 b(general)249
669 y(goals)12 b(of)g(this)h(pro)r(ject)g(are)g(to)g(in)o(v)o(estigate)
f(issues)i(in,)e(and)g(dev)o(elop)h(solutions)f(for,)g(heterogeneous)
249 723 y(concurren)o(t)20 b(computing.)31 b(PVM)19 b(is)f(an)h(in)o
(tegrated)g(set)g(of)f(soft)o(w)o(are)h(to)q(ols)f(and)h(libraries)f
(that)249 777 y(em)o(ulates)13 b(a)g(general-purp)q(ose,)h(\015exible,)
f(heterogeneous)i(concurren)o(t)g(computing)d(framew)o(ork)f(on)249
831 y(in)o(terconnected)16 b(computers)f(of)f(v)n(aried)f(arc)o
(hitecture.)22 b(The)14 b(o)o(v)o(erall)f(ob)r(jectiv)o(e)i(of)f(the)h
(PVM)g(sys-)249 885 y(tem)c(is)g(to)g(to)h(enable)g(suc)o(h)g(a)f
(collection)g(of)g(computers)h(to)f(b)q(e)h(used)h(co)q(op)q(erativ)o
(ely)e(for)g(concurren)o(t)249 939 y(or)j(parallel)e(computation.)k
(Detailed)d(descriptions)i(and)f(discussions)g(of)f(the)h(concepts,)h
(logistics,)249 993 y(and)i(metho)q(dologies)f(in)o(v)o(olv)o(ed)g(in)h
(this)g(net)o(w)o(ork-based)h(computing)e(pro)q(cess)j(are)f(con)o
(tained)f(in)249 1047 y(the)d(remainder)f(of)g(the)h(b)q(o)q(ok.)k
(Brie\015y)m(,)13 b(the)h(principles)g(up)q(on)f(whic)o(h)h(PVM)f(is)h
(based)g(include)f(the)249 1101 y(follo)o(wing:)208 1196
y Ft(\017)20 b FA(User-con\014gured)g(host)f(p)q(o)q(ol:)26
b(The)18 b(application's)f(computational)f(tasks)j(execute)h(on)e(a)g
(set)h(of)249 1250 y(mac)o(hines)11 b(that)h(are)g(selected)i(b)o(y)e
(the)g(user)h(for)f(a)g(giv)o(en)f(run)h(of)g(the)g(PVM)h(program.)i
(Both)e(single-)249 1304 y(CPU)e(mac)o(hines)f(and)g(hardw)o(are)i(m)o
(ultipro)q(cessors)e(\(including)g(shared-memory)f(and)i(distributed-)
249 1358 y(memory)c(computers\))i(ma)o(y)f(b)q(e)i(part)f(of)g(the)h
(host)g(p)q(o)q(ol.)15 b(The)10 b(host)g(p)q(o)q(ol)f(ma)o(y)e(b)q(e)j
(altered)g(b)o(y)f(adding)249 1412 y(and)14 b(deleting)g(mac)o(hines)f
(during)g(op)q(eration)h(\(an)g(imp)q(ortan)o(t)e(feature)i(for)g
(fault)f(tolerance\).)208 1483 y Ft(\017)20 b FA(T)m(ranslucen)o(t)f
(access)h(to)e(hardw)o(are:)27 b(Application)17 b(programs)g(either)i
(ma)o(y)d(view)i(the)h(hardw)o(are)249 1537 y(en)o(vironmen)o(t)14
b(as)h(an)g(attributeless)h(collection)f(of)g(virtual)f(pro)q(cessing)i
(elemen)o(ts)f(or)g(ma)o(y)e(c)o(ho)q(ose)249 1591 y(to)18
b(exploit)f(the)h(capabilities)f(of)g(sp)q(eci\014c)i(mac)o(hines)d(in)
i(the)g(host)g(p)q(o)q(ol)f(b)o(y)g(p)q(ositioning)f(certain)249
1645 y(computational)c(tasks)i(on)g(the)g(most)f(appropriate)h
(computers.)208 1715 y Ft(\017)20 b FA(Pro)q(cess-based)h(computation:)
j(The)19 b(unit)e(of)h(parallelism)d(in)j(PVM)g(is)g(a)g(task)g
(\(often)g(but)g(not)249 1769 y(alw)o(a)o(ys)c(a)g(Unix)g(pro)q
(cess\),)j(an)d(indep)q(enden)o(t)i(sequen)o(tial)f(thread)g(of)f(con)o
(trol)g(that)h(alternates)h(b)q(e-)249 1823 y(t)o(w)o(een)f(comm)o
(unication)d(and)i(computation.)19 b(No)14 b(pro)q(cess-to-pro)q
(cessor)k(mapping)12 b(is)j(implied)d(or)249 1877 y(enforced)j(b)o(y)f
(PVM;)g(in)f(particular,)g(m)o(ultiple)f(tasks)i(ma)o(y)e(execute)k(on)
d(a)h(single)g(pro)q(cessor.)208 1948 y Ft(\017)20 b
FA(Explicit)f(message-passing)f(mo)q(del:)28 b(Collections)19
b(of)f(computational)f(tasks,)k(eac)o(h)f(p)q(erforming)249
2002 y(a)d(part)h(of)f(an)g(application's)f(w)o(orkload)h(using)g
(data-,)g(functional-,)g(or)h(h)o(ybrid)f(decomp)q(osition,)249
2056 y(co)q(op)q(erate)g(b)o(y)e(explicitly)f(sending)i(and)f
(receiving)h(messages)g(to)f(one)g(another.)23 b(Message)17
b(size)f(is)249 2110 y(limited)c(only)h(b)o(y)g(the)i(amoun)o(t)d(of)h
(a)o(v)n(ailable)f(memory)m(.)208 2180 y Ft(\017)20 b
FA(Heterogeneit)o(y)c(supp)q(ort:)21 b(The)16 b(PVM)f(system)g(supp)q
(orts)h(heterogeneit)o(y)g(in)e(terms)h(of)f(mac)o(hines,)249
2234 y(net)o(w)o(orks,)19 b(and)f(applications.)29 b(With)18
b(regard)g(to)g(message)g(passing,)g(PVM)g(p)q(ermits)g(messages)249
2288 y(con)o(taining)c(more)g(than)g(one)h(datat)o(yp)q(e)h(to)e(b)q(e)
i(exc)o(hanged)f(b)q(et)o(w)o(een)h(mac)o(hines)e(ha)o(ving)g
(di\013eren)o(t)249 2342 y(data)g(represen)o(tations.)208
2413 y Ft(\017)20 b FA(Multipro)q(cessor)g(supp)q(ort:)29
b(PVM)20 b(uses)g(the)g(nativ)o(e)e(message-passing)h(facilities)f(on)g
(m)o(ultipro-)249 2467 y(cessors)g(to)e(tak)o(e)g(adv)n(an)o(tage)f(of)
g(the)i(underlying)e(hardw)o(are.)25 b(V)m(endors)16
b(often)g(supply)g(their)g(o)o(wn)p eop
%%Page: 12 31
12 30 bop 249 251 a Fu(12)1375 b(Chapter)13 b(2)249 507
y FA(optimized)j(PVM)i(for)g(their)g(systems,)g(whic)o(h)g(can)g(still)
e(comm)o(unicate)g(with)h(the)h(public)g(PVM)249 561
y(v)o(ersion.)291 657 y(The)c(PVM)g(system)g(is)g(comp)q(osed)f(of)g(t)
o(w)o(o)h(parts.)k(The)d(\014rst)f(part)g(is)g(a)g(daemon,)e(called)h
FB(pvmd3)249 711 y FA(and)d(sometimes)f(abbreviated)h
FB(pvmd)p FA(,)h(that)f(resides)i(on)e(all)f(the)i(computers)f(making)e
(up)i(the)h(virtual)249 765 y(mac)o(hine.)37 b(\(An)20
b(example)g(of)f(a)i(daemon)e(program)g(is)h(the)h(mail)d(program)h
(that)h(runs)h(in)f(the)249 819 y(bac)o(kground)15 b(and)f(handles)i
(all)d(the)j(incoming)c(and)j(outgoing)e(electronic)j(mail)c(on)j(a)g
(computer.\))249 873 y(Pvmd3)e(is)h(designed)h(so)f(an)o(y)f(user)j
(with)e(a)f(v)n(alid)g(login)g(can)h(install)f(this)h(daemon)f(on)h(a)g
(mac)o(hine.)249 927 y(When)k(a)g(user)i(wishes)f(to)f(run)g(a)g(PVM)h
(application,)e(he)i(\014rst)g(creates)h(a)e(virtual)f(mac)o(hine)g(b)o
(y)249 981 y(starting)10 b(up)h(PVM.)f(\(Chapter)h(3)f(details)g(ho)o
(w)f(this)i(is)f(done.\))17 b(The)11 b(PVM)f(application)f(can)i(then)f
(b)q(e)249 1034 y(started)i(from)d(a)i(Unix)f(prompt)g(on)g(an)o(y)h
(of)f(the)h(hosts.)18 b(Multiple)10 b(users)j(can)e(con\014gure)g(o)o
(v)o(erlapping)249 1088 y(virtual)i(mac)o(hines,)g(and)g(eac)o(h)i
(user)g(can)f(execute)i(sev)o(eral)e(PVM)g(applications)f(sim)o
(ultaneously)m(.)291 1142 y(The)j(second)i(part)f(of)f(the)h(system)f
(is)g(a)g(library)g(of)g(PVM)h(in)o(terface)g(routines.)26
b(It)17 b(con)o(tains)f(a)249 1196 y(functionally)f(complete)h(rep)q
(ertoire)i(of)d(primitiv)o(es)g(that)h(are)h(needed)h(for)e(co)q(op)q
(eration)h(b)q(et)o(w)o(een)249 1250 y(tasks)d(of)f(an)g(application.)k
(This)c(library)g(con)o(tains)h(user-callable)f(routines)h(for)f
(message)h(passing,)249 1304 y(spa)o(wning)f(pro)q(cesses,)j(co)q
(ordinating)e(tasks,)f(and)h(mo)q(difying)d(the)k(virtual)e(mac)o
(hine.)291 1358 y(The)19 b(PVM)g(computing)e(mo)q(del)g(is)i(based)g
(on)g(the)g(notion)f(that)h(an)g(application)e(consists)j(of)249
1412 y(sev)o(eral)g(tasks.)35 b(Eac)o(h)20 b(task)g(is)f(resp)q
(onsible)i(for)e(a)g(part)h(of)e(the)j(application's)c(computational)
249 1466 y(w)o(orkload.)g(Sometimes)10 b(an)j(application)e(is)i
(parallelized)f(along)g(its)h(functions;)f(that)h(is,)g(eac)o(h)g(task)
249 1520 y(p)q(erforms)i(a)g(di\013eren)o(t)i(function,)e(for)g
(example,)g(input,)g(problem)f(setup,)j(solution,)e(output,)g(and)249
1574 y(displa)o(y)m(.)29 b(This)18 b(pro)q(cess)i(is)e(often)g(called)g
(functional)f(parallelism.)28 b(A)18 b(more)g(common)d(metho)q(d)249
1628 y(of)i(parallelizing)f(an)h(application)g(is)g(called)h(data)f
(parallelism.)27 b(In)17 b(this)h(metho)q(d)f(all)f(the)j(tasks)249
1682 y(are)g(the)g(same,)g(but)g(eac)o(h)g(one)g(only)f(kno)o(ws)g(and)
h(solv)o(es)g(a)f(small)e(part)j(of)f(the)i(data.)32
b(This)18 b(is)249 1736 y(also)12 b(referred)j(to)d(as)h(the)h(SPMD)e
(\(single-program)f(m)o(ultiple-data\))f(mo)q(del)i(of)g(computing.)k
(PVM)249 1790 y(supp)q(orts)e(either)g(or)f(a)g(mixture)f(of)h(these)h
(metho)q(ds.)k(Dep)q(ending)13 b(on)g(their)g(functions,)g(tasks)h(ma)o
(y)249 1844 y(execute)j(in)e(parallel)e(and)i(ma)o(y)e(need)k(to)d
(sync)o(hronize)j(or)e(exc)o(hange)g(data,)g(although)f(this)h(is)g
(not)249 1898 y(alw)o(a)o(ys)10 b(the)i(case.)18 b(An)11
b(exemplary)f(diagram)f(of)i(the)g(PVM)h(computing)d(mo)q(del)h(is)h
(sho)o(wn)g(in)g(Figure)249 1952 y(2.1.)17 b(and)c(an)g(arc)o
(hitectural)h(view)f(of)g(the)g(PVM)h(system,)f(highligh)o(ting)e(the)i
(heterogeneit)o(y)i(of)d(the)249 2006 y(computing)g(platforms)g(supp)q
(orted)k(b)o(y)d(PVM,)h(is)g(sho)o(wn)g(in)f(Figure)h(2.2.)291
2060 y(The)k(PVM)h(system)g(curren)o(tly)g(supp)q(orts)h(C,)e(C++,)h
(and)f(F)m(ortran)h(languages.)31 b(This)18 b(set)i(of)249
2114 y(language)15 b(in)o(terfaces)i(ha)o(v)o(e)e(b)q(een)i(included)f
(based)g(on)g(the)g(observ)n(ation)f(that)h(the)h(predominan)o(t)249
2168 y(ma)r(jorit)o(y)12 b(of)h(target)h(applications)f(are)h(written)g
(in)g(C)f(and)h(F)m(ortran,)f(with)h(an)f(emerging)g(trend)h(in)249
2222 y(exp)q(erimen)o(ting)f(with)h(ob)r(ject-based)h(languages)e(and)h
(metho)q(dologies.)291 2276 y(The)c(C)f(and)h(C++)g(language)f
(bindings)19 b(for)9 b(the)i(PVM)f(user)h(in)o(terface)f(library)f(are)
h(implemen)o(ted)249 2330 y(as)k(functions,)f(follo)o(wing)d(the)k
(general)g(con)o(v)o(en)o(tions)f(used)i(b)o(y)e(most)f(C)h(systems,)g
(including)g(Unix-)249 2384 y(lik)o(e)18 b(op)q(erating)g(systems.)33
b(T)m(o)18 b(elab)q(orate,)h(function)f(argumen)o(ts)g(are)h(a)g(com)o
(bination)d(of)i(v)n(alue)249 2438 y(parameters)13 b(and)g(p)q(oin)o
(ters)g(as)g(appropriate,)g(and)g(function)f(result)i(v)n(alues)f
(indicate)f(the)i(outcome)249 2492 y(of)19 b(the)g(call.)33
b(In)19 b(addition,)g(macro)f(de\014nitions)h(are)g(used)h(for)f
(system)g(constan)o(ts,)i(and)e(global)p eop
%%Page: 13 32
13 31 bop 249 251 a Fu(The)13 b(PVM)g(System)1254 b(13)446
1666 y @beginspecial 0 @llx 0 @lly 248 @urx 360 @ury
2880 @rwi 2880 @rhi @setspecial
%%BeginDocument: fig2.1.a.ps
/$F2psDict 200 dict def 
$F2psDict begin
$F2psDict /mtrx matrix put
/l {lineto} bind def
/m {moveto} bind def
/s {stroke} bind def
/n {newpath} bind def
/gs {gsave} bind def
/gr {grestore} bind def
/clp {closepath} bind def
/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
4 -2 roll mul setrgbcolor} bind def
/col-1 {} def
/col0 {0 0 0 setrgbcolor} bind def
/col1 {0 0 1 setrgbcolor} bind def
/col2 {0 1 0 setrgbcolor} bind def
/col3 {0 1 1 setrgbcolor} bind def
/col4 {1 0 0 setrgbcolor} bind def
/col5 {1 0 1 setrgbcolor} bind def
/col6 {1 1 0 setrgbcolor} bind def
/col7 {1 1 1 setrgbcolor} bind def
 /DrawEllipse {
	/endangle exch def
	/startangle exch def
	/yrad exch def
	/xrad exch def
	/y exch def
	/x exch def
	/savematrix mtrx currentmatrix def
	x y translate xrad yrad scale 0 0 1 startangle endangle arc
	savematrix setmatrix
	} def

	end
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def

$F2psBegin
0 setlinecap 0 setlinejoin
-238.0 396.0 translate 0.900 -0.900 scale
0.500 setlinewidth
% Ellipse
n 336 206 50 50 0 360 DrawEllipse gs col-1 s gr
% Ellipse
n 406 96 31 31 0 360 DrawEllipse gs col-1 s gr
% Ellipse
n 406 326 31 31 0 360 DrawEllipse gs col-1 s gr
% Ellipse
n 476 206 50 50 0 360 DrawEllipse gs col-1 s gr
% Polyline
n 539 414 m 539 39 l  264 39 l  264 414 l 
 clp gs col-1 s gr
% Polyline
n 311 184 m 304 184 304 192 7 arcto 4 {pop} repeat 304 199 322 199 7 arcto 4 {pop} repeat 329 199 329 191 7 arcto 4 {pop} repeat 329 184 311 184 7 arcto 4 {pop} repeat clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 351 184 m 344 184 344 192 7 arcto 4 {pop} repeat 344 199 362 199 7 arcto 4 {pop} repeat 369 199 369 191 7 arcto 4 {pop} repeat 369 184 351 184 7 arcto 4 {pop} repeat clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 351 209 m 344 209 344 217 7 arcto 4 {pop} repeat 344 224 362 224 7 arcto 4 {pop} repeat 369 224 369 216 7 arcto 4 {pop} repeat 369 209 351 209 7 arcto 4 {pop} repeat clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 311 209 m 304 209 304 217 7 arcto 4 {pop} repeat 304 224 322 224 7 arcto 4 {pop} repeat 329 224 329 216 7 arcto 4 {pop} repeat 329 209 311 209 7 arcto 4 {pop} repeat clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 491 209 m 484 209 484 217 7 arcto 4 {pop} repeat 484 224 502 224 7 arcto 4 {pop} repeat 509 224 509 216 7 arcto 4 {pop} repeat 509 209 491 209 7 arcto 4 {pop} repeat clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 401 74 m 394 74 394 82 7 arcto 4 {pop} repeat 394 89 412 89 7 arcto 4 {pop} repeat 419 89 419 81 7 arcto 4 {pop} repeat 419 74 401 74 7 arcto 4 {pop} repeat clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 401 99 m 394 99 394 107 7 arcto 4 {pop} repeat 394 114 412 114 7 arcto 4 {pop} repeat 419 114 419 106 7 arcto 4 {pop} repeat 419 99 401 99 7 arcto 4 {pop} repeat clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 401 314 m 394 314 394 322 7 arcto 4 {pop} repeat 394 329 412 329 7 arcto 4 {pop} repeat 419 329 419 321 7 arcto 4 {pop} repeat 419 314 401 314 7 arcto 4 {pop} repeat clp gs 0.90 setgray fill gr
gs col-1 s gr
1.000 setlinewidth
% Polyline
n 409 89 m 409 99 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 329 194 m 344 214 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 324 209 m 344 194 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 329 189 m 344 189 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 329 214 m 344 214 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 314 199 m 314 209 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 354 199 m 354 209 l gs 0.90 setgray fill gr
gs col-1 s gr
	[6.000000] 0 setdash
% Polyline
n 394 124 m 364 164 l gs 0.90 setgray fill gr
gs col-1 s gr
	[] 0 setdash
n 376.800 153.600 m 364.000 164.000 l 370.400 148.800 l gs 2 setlinejoin col-1 s gr
	[6.000000] 0 setdash
% Polyline
n 419 124 m 444 164 l gs 0.90 setgray fill gr
gs col-1 s gr
	[] 0 setdash
n 438.912 148.312 m 444.000 164.000 l 432.128 152.552 l gs 2 setlinejoin col-1 s gr
	[6.000000] 0 setdash
% Polyline
n 359 249 m 394 294 l gs 0.90 setgray fill gr
gs col-1 s gr
	[] 0 setdash
n 387.334 278.915 m 394.000 294.000 l 381.020 283.826 l gs 2 setlinejoin col-1 s gr
	[6.000000] 0 setdash
% Polyline
n 449 249 m 414 294 l gs 0.90 setgray fill gr
gs col-1 s gr
	[] 0 setdash
n 426.980 283.826 m 414.000 294.000 l 420.666 278.915 l gs 2 setlinejoin col-1 s gr
	[6.000000] 0 setdash
% Polyline
n 279 369 m 299 369 l gs 0.90 setgray fill gr
gs col-1 s gr
	[] 0 setdash
% Polyline
n 279 384 m 299 384 l gs 0.90 setgray fill gr
gs col-1 s gr
0.500 setlinewidth
% Polyline
n 451 184 m 444 184 444 192 7 arcto 4 {pop} repeat 444 199 462 199 7 arcto 4 {pop} repeat 469 199 469 191 7 arcto 4 {pop} repeat 469 184 451 184 7 arcto 4 {pop} repeat clp gs 0.90 setgray fill gr
gs col-1 s gr
1.000 setlinewidth
% Polyline
n 469 197 m 487 215 l gs col-1 s gr
/Times-Roman findfont 12.00 scalefont setfont
444 84 m 
gs 1 -1 scale (Input &) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
444 104 m 
gs 1 -1 scale (Partitioning) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
459 149 m 
gs 1 -1 scale (Comp 2) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
304 154 m 
gs 1 -1 scale (Comp 1) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
444 329 m 
gs 1 -1 scale (Output &) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
444 344 m 
gs 1 -1 scale (Display) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
479 184 m 
gs 1 -1 scale (SPMD) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
309 369 m 
gs 1 -1 scale (Inter-component comm & sync) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
309 384 m 
gs 1 -1 scale (Inter-instance comm & sync) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
318 175 m 
gs 1 -1 scale (SPMD) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
319 439 m 
gs 1 -1 scale (\(a\) PVM Computation Model) col-1 show gr
$F2psEnd
%%EndDocument
 @endspecial 249 1728 a Fo(Figure)13 b(2.1)249 1765 y
Fy(PVM)g(system)d(o)o(v)o(erview)249 1888 y FA(v)n(ariables)16
b(suc)o(h)i(as)f Fs(errno)f FA(and)g Fs(pvm)p 853 1888
14 2 v 15 w(errno)g FA(are)i(the)f(mec)o(hanism)e(for)h(discriminating)
f(b)q(et)o(w)o(een)249 1942 y(m)o(ultiple)e(p)q(ossible)j(outcomes.)23
b(Application)15 b(programs)f(written)i(in)f(C)h(and)f(C++)h(access)i
(PVM)249 1996 y(library)d(functions)h(b)o(y)g(linking)e(against)h(an)h
(arc)o(hiv)n(al)e(library)h(\()p Fs(libpvm3.a)p FA(\))g(that)g(is)h
(part)g(of)f(the)249 2050 y(standard)f(distribution.)291
2104 y(F)m(ortran)i(language)f(bindings)h(are)h(implemen)o(ted)d(as)j
(subroutines)g(rather)h(than)e(as)g(functions.)249 2158
y(This)f(approac)o(h)f(w)o(as)h(tak)o(en)f(b)q(ecause)i(some)e
(compilers)g(on)g(the)h(supp)q(orted)h(arc)o(hitectures)h(w)o(ould)249
2212 y(not)d(reliably)f(in)o(terface)h(F)m(ortran)f(functions)h(with)g
(C)g(functions.)k(One)c(immediate)d(implication)g(of)249
2266 y(this)k(is)h(that)f(an)g(additional)f(argumen)o(t)g(is)h(in)o
(tro)q(duced)h(in)o(to)f(eac)o(h)g(PVM)h(library)f(call)f(for)h(status)
249 2320 y(results)g(to)e(b)q(e)i(returned)g(to)f(the)g(in)o(v)o(oking)
e(program.)k(Also,)d(library)g(routines)h(for)f(the)i(placemen)o(t)249
2374 y(and)f(retriev)n(al)f(of)h(t)o(yp)q(ed)g(data)g(in)f(message)g
(bu\013ers)j(are)e(uni\014ed,)f(with)h(an)f(additional)f(parameter)249
2428 y(indicating)f(the)i(datat)o(yp)q(e.)18 b(Apart)13
b(from)d(these)k(di\013erences)g(\(and)f(the)g(standard)f(naming)f
(pre\014xes)249 2482 y(|)f FB(pvm)p 378 2482 13 2 v 26
w FA(for)g(C,)h(and)f FB(pvmf)g FA(for)h(F)m(ortran\),)f(a)h
(one-to-one)f(corresp)q(ondence)k(exists)d(b)q(et)o(w)o(een)h(the)g(t)o
(w)o(o)p eop
%%Page: 14 33
14 32 bop 249 251 a Fu(14)1375 b(Chapter)13 b(2)446 1666
y @beginspecial 0 @llx 0 @lly 247 @urx 369 @ury 2880
@rwi 2880 @rhi @setspecial
%%BeginDocument: fig2.1.b.ps
/$F2psDict 200 dict def 
$F2psDict begin
$F2psDict /mtrx matrix put
/l {lineto} bind def
/m {moveto} bind def
/s {stroke} bind def
/n {newpath} bind def
/gs {gsave} bind def
/gr {grestore} bind def
/clp {closepath} bind def
/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
4 -2 roll mul setrgbcolor} bind def
/col-1 {} def
/col0 {0 0 0 setrgbcolor} bind def
/col1 {0 0 1 setrgbcolor} bind def
/col2 {0 1 0 setrgbcolor} bind def
/col3 {0 1 1 setrgbcolor} bind def
/col4 {1 0 0 setrgbcolor} bind def
/col5 {1 0 1 setrgbcolor} bind def
/col6 {1 1 0 setrgbcolor} bind def
/col7 {1 1 1 setrgbcolor} bind def
 /DrawEllipse {
	/endangle exch def
	/startangle exch def
	/yrad exch def
	/xrad exch def
	/y exch def
	/x exch def
	/savematrix mtrx currentmatrix def
	x y translate xrad yrad scale 0 0 1 startangle endangle arc
	savematrix setmatrix
	} def

	end
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def

$F2psBegin
0 setlinecap 0 setlinejoin
-234.0 432.0 translate 0.900 -0.900 scale
0.500 setlinewidth
% Ellipse
n 329 164 10 10 0 360 DrawEllipse gs 0.95 setgray fill gr
gs col-1 s gr
% Ellipse
n 329 194 10 10 0 360 DrawEllipse gs 0.95 setgray fill gr
gs col-1 s gr
% Ellipse
n 329 229 10 10 0 360 DrawEllipse gs 0.95 setgray fill gr
gs col-1 s gr
% Ellipse
n 329 259 10 10 0 360 DrawEllipse gs 0.95 setgray fill gr
gs col-1 s gr
1.000 setlinewidth
% Polyline
n 294 134 m 449 134 l  449 134 l  444 134 l gs 0.90 setgray fill gr
gs col-1 s gr
0.500 setlinewidth
% Polyline
n 304 134 m 304 114 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 329 134 m 329 114 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 354 134 m 354 114 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 379 134 m 379 114 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 404 134 m 404 114 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 424 134 m 424 114 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 314 114 m 314 99 l  299 99 l  299 114 l 
 clp gs 0.95 setgray fill gr
gs col-1 s gr
% Polyline
n 339 114 m 339 99 l  324 99 l  324 114 l 
 clp gs 0.95 setgray fill gr
gs col-1 s gr
% Polyline
n 364 114 m 364 99 l  349 99 l  349 114 l 
 clp gs 0.95 setgray fill gr
gs col-1 s gr
% Polyline
n 389 114 m 389 99 l  374 99 l  374 114 l 
 clp gs 0.95 setgray fill gr
gs col-1 s gr
% Polyline
n 414 114 m 414 99 l  399 99 l  399 114 l 
 clp gs 0.95 setgray fill gr
gs col-1 s gr
% Polyline
n 434 114 m 434 99 l  419 99 l  419 114 l 
 clp gs 0.95 setgray fill gr
gs col-1 s gr
1.000 setlinewidth
% Polyline
n 294 134 m 294 279 l gs 0.95 setgray fill gr
gs col-1 s gr
0.500 setlinewidth
% Polyline
n 294 164 m 319 164 l gs 0.95 setgray fill gr
gs col-1 s gr
% Polyline
n 294 194 m 319 194 l gs 0.95 setgray fill gr
gs col-1 s gr
% Polyline
n 294 229 m 319 229 l gs 0.95 setgray fill gr
gs col-1 s gr
% Polyline
n 294 259 m 319 259 l gs 0.95 setgray fill gr
gs col-1 s gr
% Polyline
n 446 124 m 439 124 439 157 7 arcto 4 {pop} repeat 439 164 447 164 7 arcto 4 {pop} repeat 454 164 454 131 7 arcto 4 {pop} repeat 454 124 446 124 7 arcto 4 {pop} repeat clp gs 0.65 setgray fill gr
gs col-1 s gr
1.000 setlinewidth
	1 setlinecap [1 4.500000] 4.500000 setdash
% Polyline
n 439 159 m 409 214 l gs 0.65 setgray fill gr
gs col-1 s gr
	[] 0 setdash 0 setlinecap
	[6.000000] 0 setdash
% Polyline
n 449 164 m 449 274 l  469 249 l  469 329 l gs col-1 s gr
	[] 0 setdash
0.500 setlinewidth
% Polyline
n 434 264 m 434 214 l  394 214 l  394 264 l 
 clp gs col-1 s gr
1.000 setlinewidth
% Polyline
n 329 334 m 484 334 l  484 334 l  479 334 l gs 0.90 setgray fill gr
gs col-1 s gr
0.500 setlinewidth
% Polyline
n 364 369 m 364 354 l  349 354 l  349 369 l 
 clp gs 0.95 setgray fill gr
gs col-1 s gr
% Polyline
n 354 354 m 354 334 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 394 354 m 394 334 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 424 354 m 424 334 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 404 369 m 404 354 l  389 354 l  389 369 l 
 clp gs 0.95 setgray fill gr
gs col-1 s gr
% Polyline
n 434 369 m 434 354 l  419 354 l  419 369 l 
 clp gs 0.95 setgray fill gr
gs col-1 s gr
1.000 setlinewidth
	1 setlinecap [1 4.500000] 4.500000 setdash
% Polyline
n 482 333 m 452 388 l gs 0.65 setgray fill gr
gs col-1 s gr
	[] 0 setdash 0 setlinecap
0.500 setlinewidth
% Polyline
n 509 419 m 509 389 l  444 389 l  444 419 l 
 clp gs col-1 s gr
% Polyline
n 259 319 m 404 444 l  404 444 l  409 444 l gs col-1 s gr
% Polyline
n 259 314 m 409 444 l gs col-1 s gr
% Polyline
n 284 359 m 294 349 l gs col-1 s gr
n 286.929 353.243 m 294.000 349.000 l 289.757 356.071 l gs 2 setlinejoin col-1 s gr
% Polyline
n 294 369 m 304 359 l gs col-1 s gr
n 296.929 363.243 m 304.000 359.000 l 299.757 366.071 l gs 2 setlinejoin col-1 s gr
% Polyline
n 304 379 m 314 369 l gs col-1 s gr
n 306.929 373.243 m 314.000 369.000 l 309.757 376.071 l gs 2 setlinejoin col-1 s gr
% Polyline
n 314 389 m 324 379 l gs col-1 s gr
n 316.929 383.243 m 324.000 379.000 l 319.757 386.071 l gs 2 setlinejoin col-1 s gr
% Polyline
n 324 399 m 334 389 l gs col-1 s gr
n 326.929 393.243 m 334.000 389.000 l 329.757 396.071 l gs 2 setlinejoin col-1 s gr
% Polyline
n 334 404 m 344 394 l gs col-1 s gr
n 336.929 398.243 m 344.000 394.000 l 339.757 401.071 l gs 2 setlinejoin col-1 s gr
% Polyline
n 534 444 m 534 69 l  259 69 l  259 444 l 
 clp gs col-1 s gr
/Times-Roman findfont 12.00 scalefont setfont
299 94 m 
gs 1 -1 scale (Cluster 1) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
269 294 m 
gs 1 -1 scale (Cluster 2) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
399 244 m 
gs 1 -1 scale (MPP) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
459 149 m 
gs 1 -1 scale (Bridge/) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
459 164 m 
gs 1 -1 scale (Router) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
359 324 m 
gs 1 -1 scale (Cluster 3) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
449 409 m 
gs 1 -1 scale (Vector SC) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
264 374 m 
gs 1 -1 scale (PVM:) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
264 389 m 
gs 1 -1 scale (Uniform) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
264 404 m 
gs 1 -1 scale (View of) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
264 419 m 
gs 1 -1 scale (Multiprogrammed) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
264 434 m 
gs 1 -1 scale (Virtual Machine) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
319 479 m 
gs 1 -1 scale (\(b\) PVM Architectural Overview) col-1 show gr
$F2psEnd
%%EndDocument
 @endspecial 249 1728 a Fo(Figure)g(2.2)249 1765 y Fy(PVM)g(system)d(o)
o(v)o(erview)249 1888 y FA(language)k(bindings.)k(F)m(ortran)d(in)o
(terfaces)g(to)f(PVM)h(are)g(implem)o(en)o(ted)e(as)h(library)g(stubs)h
(that)f(in)249 1942 y(turn)h(in)o(v)o(ok)o(e)e(the)h(corresp)q(onding)h
(C)g(routines,)f(after)g(casting)g(and/or)g(dereferencing)i(argumen)o
(ts)249 1996 y(as)e(appropriate.)k(Th)o(us,)13 b(F)m(ortran)g
(applications)g(are)g(required)i(to)e(link)g(against)f(the)i(stubs)h
(library)249 2050 y(\()p Fs(libfpvm3.a)p FA(\))d(as)i(w)o(ell)f(as)h
(the)h(C)f(library)m(.)291 2104 y(All)h(PVM)i(tasks)f(are)h(iden)o
(ti\014ed)f(b)o(y)g(an)g(in)o(teger)h FB(task)g(identi\014er)f
FA(\(TID\))g(.)g(Messages)i(are)e(sen)o(t)249 2158 y(to)f(and)g(receiv)
o(ed)h(from)d(tids.)22 b(Since)16 b(tids)f(m)o(ust)f(b)q(e)h(unique)g
(across)h(the)g(en)o(tire)g(virtual)e(mac)o(hine,)249
2212 y(they)i(are)g(supplied)g(b)o(y)g(the)g(lo)q(cal)f(p)o(vmd)f(and)i
(are)g(not)g(user)g(c)o(hosen.)25 b(Although)15 b(PVM)h(enco)q(des)249
2266 y(information)d(in)o(to)i(eac)o(h)h(TID)f(\(see)i(Chapter)f(7)g
(for)f(details\))h(the)g(user)g(is)g(exp)q(ected)i(to)d(treat)h(the)249
2320 y(tids)d(as)g(opaque)g(in)o(teger)g(iden)o(ti\014ers.)19
b(PVM)13 b(con)o(tains)g(sev)o(eral)g(routines)h(that)f(return)h(TID)e
(v)n(alues)249 2374 y(so)i(that)g(the)g(user)h(application)e(can)h
(iden)o(tify)f(other)i(tasks)f(in)f(the)i(system.)291
2428 y(There)f(are)g(applications)f(where)h(it)f(is)h(natural)f(to)g
(think)g(of)g(a)h FB(gr)n(oup)g(of)h(tasks)e FA(.)18
b(And)c(there)h(are)249 2482 y(cases)f(where)g(a)f(user)h(w)o(ould)e
(lik)o(e)g(to)h(iden)o(tify)f(his)h(tasks)g(b)o(y)g(the)h(n)o(um)o(b)q
(ers)e(0)7 b Ft(\000)h FA(\()p Fn(p)f Ft(\000)h FA(1\),)k(where)i
Fn(p)f FA(is)p eop
%%Page: 15 34
15 33 bop 249 251 a Fu(The)13 b(PVM)g(System)1254 b(15)249
507 y FA(the)12 b(n)o(um)o(b)q(er)e(of)g(tasks.)18 b(PVM)11
b(includes)h(the)f(concept)h(of)f(user)h(named)e(groups.)17
b(When)11 b(a)g(task)g(joins)249 561 y(a)g(group,)h(it)f(is)g(assigned)
h(a)f(unique)g(\\instance")h(n)o(um)o(b)q(er)f(in)g(that)h(group.)17
b(Instance)12 b(n)o(um)o(b)q(ers)f(start)249 615 y(at)f(0)g(and)h(coun)
o(t)f(up.)17 b(In)11 b(k)o(eeping)f(with)g(the)h(PVM)g(philosoph)o(y)m
(,)e(the)i(group)f(functions)h(are)f(designed)249 669
y(to)17 b(b)q(e)g(v)o(ery)g(general)g(and)g(transparen)o(t)h(to)f(the)g
(user.)28 b(F)m(or)17 b(example,)e(an)o(y)i(PVM)g(task)g(can)g(join)249
723 y(or)e(lea)o(v)o(e)f(an)o(y)h(group)f(at)h(an)o(y)f(time)f(without)
i(ha)o(ving)e(to)i(inform)d(an)o(y)j(other)g(task)g(in)f(the)i
(a\013ected)249 777 y(groups.)k(Also,)14 b(groups)g(can)h(o)o(v)o
(erlap,)e(and)i(tasks)f(can)h(broadcast)g(messages)g(to)f(groups)g(of)g
(whic)o(h)249 831 y(they)h(are)f(not)g(a)f(mem)o(b)q(er.)k(Details)c
(of)h(the)g(a)o(v)n(ailable)e(group)i(functions)g(are)g(giv)o(en)g(in)f
(Chapter)i(5.)249 885 y(T)m(o)e(use)i(an)o(y)e(of)h(the)g(group)g
(functions,)f(a)h(program)e(m)o(ust)h(b)q(e)i(link)o(ed)e(with)g
Fs(libgpvm3.a)p FA(.)291 939 y(The)j(general)h(paradigm)d(for)i
(application)f(programming)e(with)j(PVM)h(is)f(as)g(follo)o(ws.)24
b(A)17 b(user)249 993 y(writes)j(one)g(or)f(more)g(sequen)o(tial)h
(programs)e(in)h(C,)g(C++,)i(or)e(F)m(ortran)h(77)f(that)g(con)o(tain)g
(em-)249 1047 y(b)q(edded)f(calls)e(to)g(the)h(PVM)g(library)m(.)24
b(Eac)o(h)17 b(program)e(corresp)q(onds)j(to)e(a)g(task)h(making)d(up)i
(the)249 1101 y(application.)27 b(These)18 b(programs)f(are)g(compiled)
f(for)h(eac)o(h)h(arc)o(hitecture)h(in)e(the)h(host)f(p)q(o)q(ol,)g
(and)249 1155 y(the)g(resulting)g(ob)r(ject)h(\014les)f(are)g(placed)g
(at)g(a)f(lo)q(cation)g(accessible)i(from)d(mac)o(hines)h(in)g(the)i
(host)249 1209 y(p)q(o)q(ol.)f(T)m(o)12 b(execute)i(an)f(application,)e
(a)h(user)i(t)o(ypically)d(starts)j(one)f(cop)o(y)g(of)f(one)h(task)f
(\(usually)g(the)249 1263 y(\\master")e(or)g(\\initiating")f(task\))i
(b)o(y)f(hand)h(from)d(a)j(mac)o(hine)e(within)h(the)h(host)g(p)q(o)q
(ol.)17 b(This)10 b(pro)q(cess)249 1317 y(subsequen)o(tly)15
b(starts)g(other)f(PVM)h(tasks,)f(ev)o(en)o(tually)f(resulting)h(in)f
(a)h(collection)f(of)h(activ)o(e)g(tasks)249 1371 y(that)g(then)g
(compute)f(lo)q(cally)f(and)h(exc)o(hange)i(messages)e(with)h(eac)o(h)g
(other)g(to)f(solv)o(e)h(the)g(problem.)249 1425 y(Note)j(that)g(while)
g(the)g(ab)q(o)o(v)o(e)g(is)g(a)f(t)o(ypical)g(scenario,)i(as)f(man)o
(y)e(tasks)j(as)f(appropriate)f(ma)o(y)f(b)q(e)249 1479
y(started)f(man)o(ually)m(.)h(As)e(men)o(tioned)f(earlier,)h(tasks)h
(in)o(teract)g(through)f(explicit)g(message)g(passing,)249
1533 y(iden)o(tifying)f(eac)o(h)j(other)f(with)g(a)g(system-assigned,)f
(opaque)h(TID.)291 1587 y(Sho)o(wn)i(in)h(Figure)g(2.3)f(is)g(the)i(b)q
(o)q(dy)f(of)f(the)i(PVM)f(program)e FB(hel)r(lo)p FA(,)i(a)g(simple)e
(example)h(that)249 1641 y(illustrates)i(the)h(basic)g(concepts)h(of)d
(PVM)i(programming)o(.)28 b(This)19 b(program)d(is)i(in)o(tended)h(to)f
(b)q(e)249 1694 y(in)o(v)o(ok)o(ed)d(man)o(ually;)e(after)j(prin)o
(ting)e(its)i(task)g(id)f(\(obtained)g(with)h Fs(pvm)p
1410 1694 14 2 v 15 w(mytid\(\))p FA(\),)e(it)h(initiates)g(a)249
1748 y(cop)o(y)d(of)f(another)i(program)d(called)i FB(hel)r(lo)p
908 1748 13 2 v 15 w(other)g FA(using)g(the)g Fs(pvm)p
1270 1748 14 2 v 16 w(spawn\(\))e FA(function.)17 b(A)12
b(successful)249 1802 y(spa)o(wn)h(causes)i(the)f(program)d(to)i
(execute)i(a)e(blo)q(c)o(king)f(receiv)o(e)j(using)e
Fs(pvm)p 1446 1802 V 15 w(recv)p FA(.)k(After)d(receiving)249
1856 y(the)k(message,)g(the)h(program)d(prin)o(ts)i(the)g(message)g
(sen)o(t)g(b)o(y)g(its)g(coun)o(terpart,)h(as)f(w)o(ell)f(its)h(task)
249 1910 y(id;)d(the)g(bu\013er)h(is)f(extracted)i(from)c(the)i
(message)g(using)g Fs(pvm)p 1242 1910 V 15 w(upkstr)p
FA(.)20 b(The)15 b(\014nal)g Fs(pvm)p 1667 1910 V 15
w(exit)f FA(call)249 1964 y(disso)q(ciates)h(the)f(program)f(from)f
(the)i(PVM)h(system.)291 2018 y(Figure)k(2.4)g(is)g(a)h(listing)e(of)h
(the)i(\\sla)o(v)o(e")d(or)i(spa)o(wned)g(program;)h(its)e(\014rst)i
(PVM)f(action)f(is)249 2072 y(to)f(obtain)g(the)g(task)h(id)e(of)h(the)
h(\\master")e(using)h(the)h Fs(pvm)p 1227 2072 V 15 w(parent)e
FA(call.)30 b(This)18 b(program)e(then)249 2126 y(obtains)i(its)h
(hostname)f(and)g(transmits)g(it)g(to)h(the)g(master)f(using)h(the)g
(three-call)g(sequence)i(|)249 2180 y Fs(pvm)p 318 2180
V 15 w(initsend)8 b FA(to)h(initialize)f(the)h(send)i(bu\013er;)g
Fs(pvm)p 1077 2180 V 15 w(pkstr)d FA(to)h(place)h(a)f(string,)h(in)e(a)
h(strongly)g(t)o(yp)q(ed)249 2234 y(and)k(arc)o(hitecture-indep)q
(endent)j(manner,)c(in)o(to)h(the)h(send)h(bu\013er;)f(and)f
Fs(pvm)p 1484 2234 V 15 w(send)g FA(to)g(transmit)f(it)249
2288 y(to)i(the)g(destination)g(pro)q(cess)i(sp)q(eci\014ed)f(b)o(y)f
FB(ptid)p FA(,)f(\\tagging")f(the)j(message)e(with)h(the)g(n)o(um)o(b)q
(er)g(1.)p eop
%%Page: 16 35
16 34 bop 249 251 a Fu(16)1375 b(Chapter)13 b(2)249 907
y Fs(#include)20 b("pvm3.h")249 1015 y(main\(\))249 1069
y({)249 1123 y(int)h(cc,)g(tid,)g(msgtag;)249 1177 y(char)g(buf[100];)
249 1285 y(printf\("i'm)f(t\045x\\n",)g(pvm_mytid\(\)\);)249
1393 y(cc)h(=)h(pvm_spawn\("hello_o)o(ther)o(",)d(\(char**\)0,)h(0,)h
("",)g(1,)h(&tid\);)249 1501 y(if)f(\(cc)h(==)f(1\))g({)423
1555 y(msgtag)g(=)h(1;)249 1608 y(pvm_recv\(tid,)d(msgtag\);)249
1662 y(pvm_upkstr\(buf\);)249 1716 y(printf\("from)g(t\045x:)i
(\045s\\n",)g(tid,)g(buf\);)249 1770 y(})h(else)249 1824
y(printf\("can't)d(start)i(hello_other\\n"\);)249 1932
y(pvm_exit\(\);)249 1986 y(})249 2090 y Fo(Figure)13
b(2.3)249 2127 y Fy(PVM)g(program)c Fm(hel)r(lo.c)p eop
%%Page: 17 36
17 35 bop 249 251 a Fu(The)13 b(PVM)g(System)1254 b(17)249
988 y Fs(#include)20 b("pvm3.h")249 1096 y(main\(\))249
1150 y({)249 1204 y(int)h(ptid,)g(msgtag;)249 1258 y(char)g(buf[100];)
249 1366 y(ptid)g(=)h(pvm_parent\(\);)249 1474 y(strcpy\(buf,)e
("hello,)g(world)h(from)g("\);)249 1528 y(gethostname\(buf)e(+)i
(strlen\(buf\),)f(64\);)336 1581 y(msgtag)h(=)g(1;)249
1635 y(pvm_initsend\(PvmDa)o(taDef)o(ault)o(\);)249 1689
y(pvm_pkstr\(buf\);)249 1743 y(pvm_send\(ptid,)e(msgtag\);)249
1851 y(pvm_exit\(\);)249 1905 y(})249 2009 y Fo(Figure)13
b(2.4)249 2046 y Fy(PVM)g(program)c Fm(hel)r(lo)p 559
2046 11 2 v 14 w(other.c)p eop
%%Page: 18 37
18 36 bop eop
%%Page: 19 38
19 37 bop 249 325 a Fp(3)25 b FD(Using)18 b(PVM)249 561
y FA(This)g(c)o(hapter)i(describ)q(es)g(ho)o(w)e(to)g(set)i(up)e(the)h
(PVM)g(soft)o(w)o(are)f(pac)o(k)n(age,)h(ho)o(w)f(to)g(con\014gure)h(a)
249 615 y(simple)e(virtual)i(mac)o(hine,)f(and)h(ho)o(w)f(to)h(compile)
e(and)i(run)g(the)h(example)d(programs)h(supplied)249
669 y(with)c(PVM.)f(The)i(c)o(hapter)g(is)e(written)i(as)f(a)f
(tutorial,)g(so)h(the)g(reader)h(can)f(follo)o(w)e(along)h(with)g(the)
249 723 y(b)q(o)q(ok)f(b)q(eside)i(the)f(terminal.)j(The)d(\014rst)h
(part)e(of)g(the)i(c)o(hapter)f(describ)q(es)i(the)e(straigh)o(tforw)o
(ard)f(use)249 777 y(of)j(PVM)h(and)g(the)g(most)e(common)f(errors)k
(and)e(problems)g(in)g(set)i(up)e(and)h(running.)23 b(The)16
b(latter)249 831 y(part)f(of)e(the)i(c)o(hapter)h(describ)q(es)g(some)e
(of)g(the)h(more)e(adv)n(anced)i(options)f(a)o(v)n(ailable)e(to)i
(customize)249 885 y(the)h(reader's)g(PVM)f(en)o(vironmen)o(t.)249
1005 y FD(3.1)52 b(Ho)o(w)17 b(to)h(Obtain)h(the)f(PVM)e(Soft)o(w)o
(are)249 1113 y FA(The)10 b(latest)h(v)o(ersion)f(of)f(the)i(PVM)f
(source)h(co)q(de)g(and)f(do)q(cumen)o(tation)f(is)g(alw)o(a)o(ys)g(a)o
(v)n(ailable)f(through)249 1167 y FB(netlib)p FA(.)27
b(Netlib)17 b(is)g(a)g(soft)o(w)o(are)g(distribution)g(service)i(set)f
(up)f(on)g(the)h(In)o(ternet)g(that)f(con)o(tains)g(a)249
1221 y(wide)d(range)h(of)f(computer)g(soft)o(w)o(are.)19
b(Soft)o(w)o(are)c(can)f(b)q(e)h(retriev)o(ed)h(from)c(netlib)j(b)o(y)f
(ftp,)g(WWW,)249 1275 y(xnetlib,)f(or)h(email.)291 1329
y(PVM)f(\014les)g(can)g(b)q(e)g(obtained)g(b)o(y)f(anon)o(ymous)f(ftp)i
(to)f Fs(netlib2.cs.utk.edu)o FA(.)j(Lo)q(ok)d(in)h(direc-)249
1383 y(tory)h(p)o(vm3.)i(The)e(\014le)g Fs(index)f FA(describ)q(es)j
(the)f(\014les)f(in)f(this)h(directory)h(and)f(its)f(sub)q
(directories.)291 1437 y(Using)k(a)g(w)o(orld)g(wide)h(w)o(eb)f(to)q
(ol)g(lik)o(e)g(Xmosaic)f(the)i(PVM)g(\014les)g(are)g(accessed)i(b)o(y)
d(using)g(the)249 1491 y(address)e Fs(http://www.netlib.o)o(rg/p)o
(vm3/i)o(ndex.)o(html)p FA(.)291 1545 y(Xnetlib)d(is)h(a)f(X-Windo)o(w)
f(in)o(terface)j(that)e(allo)o(ws)g(a)g(user)i(to)e(bro)o(wse)i(or)e
(query)i(netlib)e(for)g(a)o(v)n(ail-)249 1599 y(able)h(soft)o(w)o(are)f
(and)h(to)g(automatically)c(transfer)14 b(the)f(selected)i(soft)o(w)o
(are)e(to)g(the)g(user's)h(computer.)249 1653 y(T)m(o)i(get)i(xnetlib)e
(send)i(email)d(to)i Fs(netlib@ornl.gov)d FA(with)i(the)i(message)f
Fs(send)k(xnetlib.shar)249 1707 y(from)g(xnetlib)12 b
FA(or)i(anon)o(ymous)e(ftp)i(from)e Fs(cs.utk.edu)20
b(pub/xnetlib)p FA(.)291 1761 y(The)14 b(PVM)h(soft)o(w)o(are)f(can)h
(b)q(e)g(requested)h(b)o(y)e(email.)j(T)m(o)d(receiv)o(e)h(this)g(soft)
o(w)o(are)f(send)h(email)d(to)249 1815 y Fs(netlib@ornl.gov)g
FA(with)i(the)h(message:)20 b Fs(send)g(index)h(from)g(pvm3)p
FA(.)f(An)15 b(automatic)d(mail)g(han-)249 1869 y(dler)i(will)f(return)
i(a)f(list)f(of)g(a)o(v)n(ailable)f(\014les)i(and)g(further)h
(instructions)g(b)o(y)e(email.)k(The)d(adv)n(an)o(tage)249
1923 y(of)f(this)h(metho)q(d)f(is)h(that)g(an)o(y)o(one)g(with)f(email)
f(access)j(to)f(In)o(ternet)h(can)g(obtain)e(the)h(soft)o(w)o(are.)291
1977 y(The)k(PVM)h(soft)o(w)o(are)f(is)g(distributed)h(as)g(a)f(uuenco)
q(ded,)i(compressed,)g(tar)e(\014le.)31 b(T)m(o)18 b(unpac)o(k)249
2031 y(the)e(distribution)f(the)h(\014le)g(m)o(ust)f(b)q(e)h(uudeco)q
(ded,)h(uncompressed,)f(and)g(tar)f(xvf)g(\014lename.)22
b(This)249 2085 y(will)12 b(create)k(a)d(directory)i(called)e(p)o(vm3)f
(wherev)o(er)j(it)f(is)f(un)o(tarred.)19 b(The)14 b(PVM)h(do)q(cumen)o
(tation)d(is)249 2139 y(distributed)k(as)f(p)q(ostscript)h(\014les)f
(and)g(includes)g(a)g(User's)h(Guide,)e(reference)j(man)o(ual,)c(and)h
(quic)o(k)249 2193 y(reference)i(card.)249 2313 y FD(3.2)52
b(Setup)18 b(to)g(Use)f(PVM)249 2421 y FA(One)g(of)f(the)i(reasons)f
(for)f(PVM's)h(p)q(opularit)o(y)f(is)g(that)h(it)f(is)h(simple)e(to)h
(set)i(up)e(and)h(use.)27 b(PVM)249 2475 y(do)q(es)13
b(not)f(require)h(sp)q(ecial)g(privileges)f(to)g(b)q(e)g(installed.)17
b(An)o(y)o(one)12 b(with)g(a)g(v)n(alid)f(login)g(on)h(the)g(hosts)p
eop
%%Page: 20 39
20 38 bop 249 251 a Fu(20)1375 b(Chapter)13 b(3)249 507
y FA(can)g(do)g(so.)k(In)c(addition,)f(only)g(one)h(p)q(erson)h(at)e
(an)h(organization)e(needs)k(to)d(get)h(and)g(install)f(PVM)249
561 y(for)i(ev)o(ery)o(one)g(at)g(that)g(organization)f(to)g(use)i(it.)
291 615 y(PVM)j(uses)i(t)o(w)o(o)e(en)o(vironmen)o(t)g(v)n(ariables)g
(when)h(starting)f(and)g(running.)32 b(Eac)o(h)19 b(PVM)g(user)249
669 y(needs)14 b(to)f(set)h(these)g(t)o(w)o(o)f(v)n(ariables)f(to)h
(use)h(PVM.)f(The)g(\014rst)h(v)n(ariable)e(is)h(PVM)p
1536 669 13 2 v 15 w(R)o(OOT,)f(whic)o(h)h(is)249 723
y(set)j(to)e(the)h(lo)q(cation)f(of)g(the)h(installed)f
Fs(pvm3)g FA(directory)m(.)21 b(The)15 b(second)h(v)n(ariable)d(is)i
(PVM)p 1697 723 V 15 w(AR)o(CH,)249 777 y(whic)o(h)i(tells)f(PVM)h(the)
g(arc)o(hitecture)i(of)d(this)g(host)h(and)f(th)o(us)h(what)g
(executables)h(to)e(pic)o(k)h(from)249 831 y(the)e(PVM)p
420 831 V 15 w(R)o(OOT)f(directory)m(.)291 885 y(The)d(easiest)g(metho)
q(d)f(is)h(to)f(set)i(these)g(t)o(w)o(o)e(v)n(ariables)g(in)g(y)o(our)h
Fs(.cshrc)e FA(\014le.)17 b(W)m(e)10 b(assume)g(y)o(ou)h(are)249
939 y(using)j FB(csh)g FA(as)g(y)o(ou)f(follo)o(w)f(along)h(this)g
(tutorial.)18 b(Here)d(is)e(an)h(example)e(for)i(setting)g(PVM)p
1694 939 V 16 w(R)o(OOT:)249 1026 y Fs(setenv)21 b(PVM_ROOT)f
($HOME/pvm3)249 1113 y FA(It)c(is)g(recommended)f(that)h(the)h(user)g
(set)g(PVM)p 1027 1113 V 15 w(AR)o(CH)f(b)o(y)g(concatenating)g(to)g
(the)h(\014le)f Fs(.cshrc)p FA(,)249 1167 y(the)f(con)o(ten)o(t)g(of)f
(\014le)g Fs($PVM)p 675 1167 14 2 v 15 w(ROOT/lib/cshrc.stub)o
FA(.)j(The)e(stub)g(should)f(b)q(e)h(placed)g(after)g(P)m(A)m(TH)249
1221 y(and)f(PVM)p 429 1221 13 2 v 16 w(R)o(OOT)g(are)h(de\014ned.)21
b(This)14 b(stub)h(automatically)c(determines)k(the)g(PVM)p
1644 1221 V 15 w(AR)o(CH)f(for)249 1275 y(this)h(host)g(and)f(is)h
(particularly)e(useful)i(when)g(the)h(user)f(shares)h(a)f(common)c
(\014le)k(system)f(\(suc)o(h)i(as)249 1329 y(NFS\))e(across)h(sev)o
(eral)g(di\013eren)o(t)f(arc)o(hitectures.)291 1383 y(T)m(able)g(1)g
(lists)h(the)g(PVM)p 699 1383 V 15 w(AR)o(CH)g(names)f(and)g(their)h
(corresp)q(onding)h(arc)o(hitecture)g(t)o(yp)q(es)g(that)249
1437 y(are)e(supp)q(orted)i(in)d(PVM)h(3.3.)291 1491
y(The)g(PVM)h(source)h(comes)e(with)g(directories)i(and)e(mak)o
(e\014les)g(for)g(most)f(arc)o(hitectures)k(y)o(ou)d(are)249
1545 y(lik)o(ely)c(to)g(ha)o(v)o(e.)17 b(Chapter)12 b(8)f(describ)q(es)
i(ho)o(w)d(to)h(p)q(ort)g(the)h(PVM)f(source)h(to)f(an)g(unsupp)q
(orted)h(arc)o(hi-)249 1599 y(tecture.)19 b(Building)9
b(for)h(eac)o(h)h(arc)o(hitecture)i(t)o(yp)q(e)e(is)f(done)h
(automatically)c(b)o(y)k(logging)d(on)j(to)f(a)g(host,)249
1653 y(going)i(in)o(to)g(the)i(PVM)p 612 1653 V 16 w(R)o(OOT)f
(directory)m(,)g(and)g(t)o(yping)f Fs(make)p FA(.)17
b(The)d(mak)o(e\014le)d(will)h(automatically)249 1707
y(determine)j(whic)o(h)f(arc)o(hitecture)i(it)f(is)f(b)q(eing)h
(executed)h(on,)e(create)i(appropriate)f(sub)q(directories,)249
1761 y(and)g(build)g Fs(pvm)p FA(,)f Fs(pvmd3)p FA(,)g
Fs(libpvm3.a)p FA(,)g(and)h Fs(libfpvm3.a)p FA(,)e Fs(pvmgs)p
FA(,)h(and)h Fs(libgpvm3.a)p FA(.)20 b(It)15 b(places)249
1815 y(all)e(these)i(\014les)g(in)e Fs($PVM)p 636 1815
14 2 v 15 w(ROOT/lib/PVM)p 915 1815 V 13 w(ARCH)p FA(,)g(with)h(the)g
(exception)h(of)e(p)o(vmgs)g(whic)o(h)h(is)g(placed)249
1869 y(in)f Fs($PVM)p 388 1869 V 15 w(ROOT/bin/PVM)p
667 1869 V 14 w(ARCH)p FA(.)249 1989 y FD(3.3)52 b(Setup)18
b(Summary)208 2097 y Ft(\017)i FA(Set)15 b(PVM)p 420
2097 13 2 v 15 w(R)o(OOT)f(and)f(PVM)p 750 2097 V 16
w(AR)o(CH)g(in)h(y)o(our)f(.cshrc)i(\014le)208 2168 y
Ft(\017)20 b FA(Build)13 b(PVM)i(for)e(eac)o(h)i(arc)o(hitecture)g(t)o
(yp)q(e)208 2238 y Ft(\017)20 b FA(Create)15 b(a)f(.rhosts)g(\014le)g
(on)f(eac)o(h)i(host)f(listing)f(all)f(the)j(hosts)f(y)o(ou)g(wish)g
(to)f(use)208 2309 y Ft(\017)20 b FA(Create)c(a)g Fs($HOME/.xpvm)p
666 2309 14 2 v 13 w(hosts)e FA(\014le)i(listing)e(all)g(the)i(hosts)g
(y)o(ou)f(wish)g(to)g(use)i(prep)q(ended)g(b)o(y)e(an)249
2363 y(\\&".)p eop
%%Page: 21 40
21 39 bop 249 251 a Fu(Using)14 b(PVM)1358 b(21)p 376
788 1330 2 v 375 821 2 34 v 401 811 a Fy(PVM)p 485 811
11 2 v 13 w(AR)o(CH)p 623 821 2 34 v 51 w(Mac)o(hine)p
1161 821 V 407 w(Notes)p 1704 821 V 376 823 1330 2 v
375 858 2 35 v 401 848 a(AFX8)p 623 858 V 155 w(Allian)o(t)11
b(FX/8)p 1161 858 V 1704 858 V 375 891 2 34 v 401 881
a(ALPHA)p 623 891 V 124 w(DEC)h(Alpha)p 1161 891 V 356
w(DEC)g(OSF-1)p 1704 891 V 375 924 V 401 914 a(BAL)p
623 924 V 175 w(Sequen)o(t)d(Balance)p 1161 924 V 282
w(D)o(YNIX)p 1704 924 V 375 957 V 401 947 a(BFL)m(Y)p
623 957 V 155 w(BBN)j(Butter\015y)e(TC2000)p 1161 957
V 1704 957 V 375 992 2 35 v 401 982 a(BSD386)p 623 992
V 122 w(80386/486)f(PC)j(runnning)d(Unix)p 1161 992 V
80 w(BSDI,)i(386BSD,)f(NetBSD)p 1704 992 V 375 1025 2
34 v 401 1015 a(CM2)p 623 1025 V 173 w(Thinking)g(Mac)o(hines)g(CM2)p
1161 1025 V 156 w(Sun)h(fron)o(t-end)p 1704 1025 V 375
1059 V 401 1049 a(CM5)p 623 1059 V 173 w(Thinking)f(Mac)o(hines)g(CM5)p
1161 1059 V 156 w(Uses)i(nativ)o(e)e(messages)p 1704
1059 V 375 1092 V 401 1082 a(CNVX)p 623 1092 V 145 w(Con)o(v)o(ex)h
(C-series)p 1161 1092 V 291 w(IEEE)g(f.p.)p 1704 1092
V 375 1125 V 401 1115 a(CNVXN)p 623 1125 V 119 w(Con)o(v)o(ex)g
(C-series)p 1161 1125 V 291 w(nativ)o(e)f(f.p.)p 1704
1125 V 375 1158 V 401 1148 a(CRA)m(Y)p 623 1158 V 148
w(C-90,)h(YMP)m(,)i(T3D)e(p)q(ort)g(a)o(v)n(ailable)p
1161 1158 V 47 w(UNICOS)p 1704 1158 V 375 1191 V 401
1181 a(CRA)m(Y2)p 623 1191 V 130 w(Cra)o(y-2)p 1161 1191
V 1704 1191 V 375 1225 V 401 1215 a(CRA)m(YSMP)p 623
1225 V 72 w(Cra)o(y)g(S-MP)p 1161 1225 V 1704 1225 V
375 1258 V 401 1248 a(DGA)l(V)p 623 1258 V 145 w(Data)g(General)e
(Aviion)p 1161 1258 V 1704 1258 V 375 1291 V 401 1281
a(E88K)p 623 1291 V 161 w(Encore)h(88000)p 1161 1291
V 1704 1291 V 375 1324 V 401 1314 a(HP300)p 623 1324
V 144 w(HP-9000)h(mo)q(del)f(300)p 1161 1324 V 234 w(HPUX)p
1704 1324 V 375 1357 V 401 1347 a(HPP)m(A)p 623 1357
V 151 w(HP-9000)h(P)m(A-RISC)p 1161 1357 V 1704 1357
V 375 1392 2 35 v 401 1382 a(I860)p 623 1392 V 181 w(In)o(tel)f
(iPSC/860)p 1161 1392 V 305 w(Uses)i(nativ)o(e)e(messages)p
1704 1392 V 375 1427 V 401 1417 a(IPSC2)p 623 1427 V
148 w(In)o(tel)g(iPSC/2)h(386)g(host)p 1161 1427 V 199
w(SysV,)g(Uses)h(nativ)o(e)e(messages)p 1704 1427 V 375
1460 2 34 v 401 1450 a(KSR1)p 623 1460 V 157 w(Kendall)g(Square)g
(KSR-1)p 1161 1460 V 187 w(OSF-1,)h(uses)g(shared)f(memory)p
1704 1460 V 375 1495 2 35 v 401 1485 a(LINUX)p 623 1495
V 135 w(80386/486)f(PC)j(running)d(Unix)p 1161 1495 V
100 w(LINUX)p 1704 1495 V 375 1528 2 34 v 401 1518 a(MASP)m(AR)p
623 1528 V 97 w(Maspar)p 1161 1528 V 422 w(DEC)j(fron)o(t-end)p
1704 1528 V 375 1562 V 401 1552 a(MIPS)p 623 1562 V 159
w(MIPS)f(4680)p 1161 1562 V 1704 1562 V 375 1595 V 401
1585 a(NEXT)p 623 1595 V 147 w(NeXT)p 1161 1595 V 1704
1595 V 375 1628 V 401 1618 a(PGON)p 623 1628 V 143 w(In)o(tel)f(P)o
(aragon)p 1161 1628 V 327 w(Uses)i(nativ)o(e)e(messages)p
1704 1628 V 375 1661 V 401 1651 a(PMAX)p 623 1661 V 140
w(DECstation)g(3100,)g(5100)p 1161 1661 V 180 w(Ultrix)p
1704 1661 V 375 1696 2 35 v 401 1686 a(RS6K)p 623 1696
V 157 w(IBM/RS6000)p 1161 1696 V 332 w(AIX)i(3.2)p 1704
1696 V 375 1729 2 34 v 401 1719 a(R)m(T)p 623 1729 V
200 w(IBM)g(R)m(T)p 1161 1729 V 1704 1729 V 375 1763
V 401 1753 a(SGI)p 623 1763 V 187 w(Silicon)e(Graphics)f(IRIS)p
1161 1763 V 203 w(IRIX)j(4.x)p 1704 1763 V 375 1796 V
401 1786 a(SGI5)p 623 1796 V 169 w(Silicon)e(Graphics)f(IRIS)p
1161 1796 V 203 w(IRIX)j(5.x)p 1704 1796 V 375 1829 V
401 1819 a(SGIMP)p 623 1829 V 131 w(SGI)f(m)o(ultipro)q(ces)o(sor)p
1161 1829 V 239 w(Uses)h(shared)e(memory)p 1704 1829
V 375 1862 V 401 1852 a(SUN3)p 623 1862 V 158 w(Sun)h(3)p
1161 1862 V 449 w(SunOS)g(4.2)p 1704 1862 V 375 1895
V 401 1885 a(SUN4)p 623 1895 V 158 w(Sun)g(4,)g(SP)m(AR)o(Cstation)p
1161 1895 V 203 w(SunOS)g(4.2)p 1704 1895 V 375 1929
V 401 1919 a(SUN4SOL2)p 623 1929 V 71 w(Sun)g(4,)g(SP)m(AR)o(Cstation)p
1161 1929 V 203 w(Solaris)f(2.x)p 1704 1929 V 375 1962
V 401 1952 a(SUNMP)p 623 1962 V 120 w(SP)m(AR)o(C)i(m)o(ultipro)q
(cessor)p 1161 1962 V 181 w(Solaris)e(2.x,)h(uses)f(shared)g(memory)p
1704 1962 V 375 1995 V 401 1985 a(SYMM)p 623 1995 V 138
w(Sequen)o(t)f(Symmetry)p 1161 1995 V 1704 1995 V 375
2028 V 401 2018 a(TITN)p 623 2028 V 159 w(Starden)o(t)g(Titan)p
1161 2028 V 1704 2028 V 375 2061 V 401 2051 a(U370)p
623 2061 V 168 w(IBM)j(370)p 1161 2061 V 402 w(AIX)p
1704 2061 V 375 2095 V 401 2085 a(UV)l(AX)p 623 2095
V 148 w(DEC)g(MicroV)l(AX)p 1161 2095 V 1704 2095 V 376
2096 1330 2 v 249 2192 a Fo(T)m(able)h(3.1)249 2229 y
Fy(PVM)p 333 2229 11 2 v 14 w(AR)o(CH)g(names)d(used)g(in)h(PVM)i(3)p
eop
%%Page: 22 41
22 40 bop 249 251 a Fu(22)1375 b(Chapter)13 b(3)249 507
y FD(3.4)52 b(Starting)19 b(PVM)249 615 y FA(Before)d(w)o(e)f(go)g(o)o
(v)o(er)g(the)g(steps)i(to)e(compile)e(and)i(run)g(parallel)f(PVM)h
(programs,)f(y)o(ou)h(should)f(b)q(e)249 669 y(sure)f(y)o(ou)e(can)g
(start)h(up)g(PVM)g(and)f(con\014gure)h(a)f(virtual)g(mac)o(hine.)16
b(On)11 b(an)o(y)g(host)h(on)f(whic)o(h)h(PVM)249 723
y(has)i(b)q(een)h(installed)e(y)o(ou)h(can)g(t)o(yp)q(e)249
810 y Fs(\045)22 b(pvm)249 897 y FA(and)13 b(y)o(ou)f(should)h(get)g
(bac)o(k)g(a)g(PVM)g(console)g(prompt)f(signifying)f(that)i(PVM)g(is)g
(no)o(w)g(running)f(on)249 951 y(this)i(host.)k(Y)m(ou)c(can)g(add)f
(hosts)i(to)f(y)o(our)f(virtual)g(mac)o(hine)g(b)o(y)h(t)o(yping)f(at)h
(the)g(console)g(prompt)249 1039 y Fs(pvm>)21 b(add)g(hostname)249
1126 y FA(And)e(y)o(ou)f(can)h(delete)h(hosts)f(\(except)h(the)g(one)f
(y)o(ou)f(are)h(on\))g(from)e(y)o(our)h(virtual)g(mac)o(hine)f(b)o(y)
249 1180 y(t)o(yping)249 1267 y Fs(pvm>)k(delete)g(hostname)249
1354 y FA(If)16 b(y)o(ou)g(get)g(the)h(message)f(\\Can't)f(Start)i(p)o
(vmd,")d(then)j(c)o(hec)o(k)g(the)g(common)c(startup)k(problems)249
1408 y(section)e(and)e(try)i(again.)291 1462 y(T)m(o)e(see)i(what)f
(the)g(presen)o(t)i(virtual)d(mac)o(hine)f(lo)q(oks)h(lik)o(e,)g(y)o
(ou)h(can)g(t)o(yp)q(e)249 1549 y Fs(pvm>)21 b(conf)249
1636 y FA(T)m(o)13 b(see)i(what)f(PVM)g(tasks)h(are)f(running)g(on)f
(the)i(virtual)e(mac)o(hine,)f(y)o(ou)h(t)o(yp)q(e)249
1724 y Fs(pvm>)21 b(ps)g(-a)249 1811 y FA(Of)15 b(course)h(y)o(ou)f
(don't)f(ha)o(v)o(e)h(an)o(y)g(tasks)g(running)g(y)o(et;)g(that's)g(in)
g(the)h(next)f(section.)22 b(If)15 b(y)o(ou)g(t)o(yp)q(e)249
1865 y(\\quit")g(at)g(the)h(console)f(prompt,)g(the)g(console)h(will)e
(quit)h(but)h(y)o(our)f(virtual)f(mac)o(hine)g(and)i(tasks)249
1919 y(will)e(con)o(tin)o(ue)h(to)g(run.)22 b(A)o(t)15
b(an)o(y)g(Unix)g(prompt)f(on)h(an)o(y)f(host)i(in)e(the)i(virtual)e
(mac)o(hine,)g(y)o(ou)h(can)249 1973 y(t)o(yp)q(e)249
2060 y Fs(\045)22 b(pvm)249 2147 y FA(and)12 b(y)o(ou)g(will)e(get)j
(the)f(message)g(\\p)o(vm)e(already)i(running")g(and)g(the)h(console)f
(prompt.)k(When)d(y)o(ou)249 2201 y(are)h(\014nished)h(with)e(the)i
(virtual)e(mac)o(hine,)f(y)o(ou)h(should)h(t)o(yp)q(e)249
2288 y Fs(pvm>)21 b(halt)249 2375 y FA(This)f(command)d(kills)i(an)o(y)
g(PVM)i(tasks,)g(sh)o(uts)g(do)o(wn)f(the)g(virtual)g(mac)o(hine,)f
(and)h(exits)g(the)249 2429 y(console.)f(This)14 b(is)g(the)h
(recommended)f(metho)q(d)f(to)h(stop)h(PVM)f(b)q(ecause)i(it)e(mak)o
(es)f(sure)i(that)f(the)249 2483 y(virtual)f(mac)o(hine)g(sh)o(uts)h
(do)o(wn)g(cleanly)m(.)p eop
%%Page: 23 42
23 41 bop 249 251 a Fu(Using)14 b(PVM)1358 b(23)291 507
y FA(Y)m(ou)17 b(should)h(practice)i(starting)e(and)g(stopping)g(and)g
(adding)g(hosts)h(to)f(PVM)g(un)o(til)g(y)o(ou)g(are)249
561 y(comfortable)12 b(with)g(the)i(PVM)f(console.)18
b(A)c(full)d(description)j(of)e(the)i(PVM)g(console)f(and)g(its)g(man)o
(y)249 615 y(command)e(options)j(is)f(giv)o(en)h(at)g(the)g(end)g(of)g
(this)g(c)o(hapter.)291 669 y(If)d(y)o(ou)g(don't)f(w)o(an)o(t)h(to)h
(t)o(yp)q(e)g(in)e(a)i(bunc)o(h)f(of)g(host)h(names)e(eac)o(h)i(time,)e
(there)j(is)e(a)h(host\014le)f(option.)249 723 y(Y)m(ou)i(can)h(list)g
(the)g(hostnames)g(in)f(a)h(\014le)g(one)g(p)q(er)h(line)e(and)h(then)g
(t)o(yp)q(e)249 810 y Fs(\045)22 b(pvm)f(hostfile)249
897 y FA(PVM)11 b(will)f(then)i(add)e(all)g(the)i(listed)f(hosts)g(sim)
o(ultaneously)e(b)q(efore)j(the)g(console)f(prompt)f(app)q(ears.)249
951 y(Sev)o(eral)15 b(options)f(can)h(b)q(e)g(sp)q(eci\014ed)h(on)e(a)g
(p)q(er-host)i(basis)e(in)g(the)h(host\014le.)21 b(These)15
b(are)g(describ)q(ed)249 1005 y(at)e(the)h(end)f(of)g(this)g(c)o
(hapter)h(for)f(the)h(user)g(who)f(wishes)h(to)f(customize)f(his)h
(virtual)g(mac)o(hine)f(for)g(a)249 1059 y(particular)i(application)e
(or)i(en)o(vironmen)o(t.)291 1113 y(There)e(are)f(other)h(w)o(a)o(ys)e
(to)h(start)g(up)g(PVM.)g(The)h(functions)f(of)f(the)i(console)f(and)g
(a)f(p)q(erformance)249 1167 y(monitor)e(ha)o(v)o(e)i(b)q(een)h(com)o
(bined)e(in)g(a)h(graphical)f(user)i(in)o(terface)g(called)f(XPVM,)g
(whic)o(h)f(is)h(a)o(v)n(ailable)249 1221 y(precompiled)h(on)h(netlib)g
(\(see)i(Chapter)f(8)f(for)f(XPVM)i(details\).)k(If)12
b(XPVM)h(has)f(b)q(een)i(installed)d(at)249 1275 y(y)o(our)h(site,)g
(then)g(it)g(can)g(b)q(e)g(used)h(to)f(start)g(PVM.)g(T)m(o)f(start)h
(PVM)h(with)e(this)h(X)g(windo)o(w)f(in)o(terface,)249
1329 y(t)o(yp)q(e)249 1416 y Fs(\045)22 b(xpvm)249 1504
y FA(The)15 b(men)o(u)e(button)i(labled)f(\\hosts")g(will)f(pull)h(do)o
(wn)g(a)g(list)g(of)f(hosts)j(y)o(ou)d(can)i(add.)k(If)14
b(y)o(ou)g(clic)o(k)249 1558 y(on)h(a)h(hostname,)e(it)i(is)f(added)h
(and)g(an)f(icon)g(of)g(the)h(mac)o(hine)f(app)q(ears)h(in)f(an)h
(animation)c(of)j(the)249 1611 y(virtual)10 b(mac)o(hine.)16
b(A)11 b(host)g(is)g(deleted)h(if)e(y)o(ou)g(clic)o(k)h(on)f(a)h
(hostname)f(that)h(is)f(already)h(in)f(the)i(virtual)249
1665 y(mac)o(hine)i(\(see)j(Figure)e(3.1\).)22 b(On)15
b(startup)h(XPVM)g(reads)g(the)g(\014le)g Fs($HOME/.xpvm)p
1592 1665 14 2 v 13 w(hosts)p FA(,)e(whic)o(h)249 1719
y(is)e(a)f(list)h(of)f(hosts)i(to)e(displa)o(y)g(in)h(this)g(men)o(u.)k
(Hosts)c(without)g(leading)f(\\&")h(are)g(added)g(all)f(at)g(once)249
1773 y(at)j(startup.)291 1827 y(The)j(quit)f(and)g(halt)g(buttons)h(w)o
(ork)f(just)h(lik)o(e)f(the)h(PVM)g(console.)26 b(If)16
b(y)o(ou)g(quit)g(XPVM)h(and)249 1881 y(then)12 b(restart)h(it,)d(XPVM)
i(will)e(automatically)e(displa)o(y)i(what)h(the)h(running)f(virtual)g
(mac)o(hine)f(lo)q(oks)249 1935 y(lik)o(e.)23 b(Practice)18
b(starting)e(and)f(stopping)h(and)g(adding)f(hosts)h(with)g(XPVM.)g(If)
g(there)h(are)f(errors,)249 1989 y(they)e(should)g(app)q(ear)g(in)g
(the)g(windo)o(w)f(where)i(y)o(ou)f(started)h(XPVM.)p
eop
%%Page: 24 43
24 42 bop 249 251 a Fu(24)1375 b(Chapter)13 b(3)249 507
y FD(3.5)52 b(Common)17 b(Startup)h(Problems)249 615
y FA(If)f(PVM)g(has)g(a)g(problem)f(starting)h(up,)h(it)e(will)g(prin)o
(t)h(an)g(error)h(message)e(either)i(to)f(the)h(screen)249
669 y(or)g(in)f(the)h(log)e(\014le)i Fs(/tmp/pvml.<uid>)p
FA(.)26 b(This)17 b(section)h(describ)q(es)i(the)e(most)f(common)d
(startup)249 723 y(problems)g(and)h(ho)o(w)g(to)g(solv)o(e)g(them.)22
b(Chapter)15 b(9)g(con)o(tains)g(a)g(more)g(complete)f(troublesho)q
(oting)249 777 y(guide.)291 831 y(If)f(the)i(message)e(sa)o(ys)249
906 y Fs([t80040000])20 b(Can't)g(start)h(pvmd)249 981
y FA(\014rst)14 b(c)o(hec)o(k)f(that)g(y)o(our)g Fs(.rhosts)e
FA(\014le)i(on)g(the)g(remote)f(host)h(con)o(tains)g(the)h(name)d(of)h
(the)i(host)f(from)249 1034 y(whic)o(h)g(y)o(ou)f(are)i(starting)e
(PVM.)h(An)g(external)h(c)o(hec)o(k)g(that)f(y)o(our)f
Fs(.rhosts)g FA(\014le)h(is)f(set)i(correctly)g(is)249
1088 y(to)g(t)o(yp)q(e)249 1163 y Fs(\045)22 b(rsh)f(remote_host)e(ls)
249 1238 y FA(If)13 b(y)o(our)g Fs(.rhosts)f FA(is)h(set)h(up)f
(correctly)m(,)h(then)g(y)o(ou)e(will)g(see)i(a)f(listing)f(of)h(y)o
(our)g(\014les)h(on)f(the)g(remote)249 1292 y(host.)291
1346 y(Other)i(reasons)g(to)f(get)h(this)f(message)g(include)g(not)g
(ha)o(ving)f(PVM)i(installed)f(on)g(a)f(host)i(or)f(not)249
1400 y(ha)o(ving)f(PVM)p 482 1400 13 2 v 15 w(R)o(OOT)h(set)h
(correctly)g(on)e(some)h(host.)k(Y)m(ou)13 b(can)h(c)o(hec)o(k)h(these)
g(b)o(y)f(t)o(yping)249 1474 y Fs(\045)22 b(rsh)f(remote_host)e
($PVM_ROOT/lib/pvmd)249 1549 y FA(Some)d(Unix)i(shells,)g(for)f
(example)g(ksh,)h(do)f(not)h(set)g(en)o(vironmen)o(t)f(v)n(ariables)g
(on)g(remote)g(hosts)249 1603 y(when)c(using)g(rsh.)18
b(In)13 b(PVM)g(3.3)f(there)i(are)g(t)o(w)o(o)e(w)o(ork)h(arounds)g
(for)f(suc)o(h)i(shells.)k(First,)13 b(if)f(y)o(ou)g(set)249
1657 y(the)18 b(en)o(vironmen)o(t)f(v)n(ariable,)f(PVM)p
837 1657 V 16 w(DP)m(A)m(TH,)g(on)h(the)h(master)f(host)h(to)f
Fs(pvm3/lib/pvmd)p FA(,)e(then)249 1711 y(this)e(will)e(o)o(v)o(erride)
j(the)f(default)g(dx)g(path.)k(The)d(second)g(metho)q(d)e(is)h(to)f
(tell)h(PVM)g(explicitly)f(w)o(ere)249 1765 y(to)i(\014nd)g(the)g
(remote)g(p)o(vmd)e(executable)j(b)o(y)f(using)f(the)i
Fs(dx=)e FA(option)g(in)h(the)g(host\014le.)291 1819
y(If)d(PVM)g(is)h(man)o(ually)c(killed,)j(or)g(stopp)q(ed)h(abnormally)
d(\(e.g.,)i(b)o(y)g(a)g(system)h(crash\),)g(then)g(c)o(hec)o(k)249
1873 y(for)k(the)h(existence)h(of)e(the)g(\014le)h Fs(/tmp/pvmd.<uid>)p
FA(.)22 b(This)16 b(\014le)g(is)g(used)h(for)f(authen)o(tication)g(and)
249 1927 y(should)d(exist)g(only)f(while)h(PVM)g(is)g(running.)k(If)c
(this)g(\014le)g(is)g(left)g(b)q(ehind,)g(it)f(prev)o(en)o(ts)i(PVM)g
(from)249 1981 y(starting.)k(Simply)12 b(delete)j(this)e(\014le.)291
2035 y(If)g(the)i(message)e(sa)o(ys)249 2110 y Fs([t80040000])20
b(Login)g(incorrect)249 2184 y FA(it)c(probably)f(means)g(that)h(no)f
(accoun)o(t)i(is)e(on)h(the)g(remote)g(mac)o(hine)e(with)i(y)o(our)f
(login)g(name.)22 b(If)249 2238 y(y)o(our)15 b(login)g(name)f(is)i
(di\013eren)o(t)g(on)f(the)i(remote)e(mac)o(hine,)f(then)i(y)o(ou)g(m)o
(ust)e(use)j(the)f Fs(lo=)f FA(option)249 2292 y(in)e(the)i(host\014le)
f(\(see)h(Section)g(3.7\).)291 2346 y(If)h(y)o(ou)g(get)h(an)o(y)f
(other)i(strange)f(messages,)g(then)g(c)o(hec)o(k)h(y)o(our)f
Fs(.cshrc)e FA(\014le.)26 b(It)17 b(is)g(imp)q(ortan)o(t)249
2400 y(that)c(y)o(ou)g(not)g(ha)o(v)o(e)g(an)o(y)g(I/O)g(in)g(the)h
Fs(.cshrc)e FA(\014le)h(b)q(ecause)i(this)e(will)f(in)o(terfere)j(with)
d(the)i(startup)249 2454 y(of)f(PVM.)h(If)g(y)o(ou)f(wish)h(to)g(prin)o
(t)g(out)g(information)d(\(suc)o(h)k(as)f(who)f(or)h(uptime\))f(when)i
(y)o(ou)e(log)g(in,)249 2508 y(y)o(ou)f(should)h(do)f(it)g(in)h(y)o
(our)f Fs(.login)f FA(script,)j(not)e(when)h(y)o(ou're)g(running)f(a)g
(csh)i(command)c(script.)p eop
%%Page: 25 44
25 43 bop 249 251 a Fu(Using)14 b(PVM)1358 b(25)249 507
y FD(3.6)52 b(Running)19 b(PVM)d(Programs)249 615 y FA(In)g(this)h
(section)g(y)o(ou'll)d(learn)j(ho)o(w)f(to)g(compile)e(and)j(run)f(PVM)
h(programs.)24 b(Later)17 b(c)o(hapters)h(of)249 669
y(this)f(b)q(o)q(ok)g(describ)q(e)i(ho)o(w)d(to)h(write)g(parallel)f
(PVM)i(programs.)26 b(In)17 b(this)g(section)h(w)o(e)f(will)e(w)o(ork)
249 723 y(with)f(the)i(example)d(programs)h(supplied)g(with)h(the)g
(PVM)g(soft)o(w)o(are.)21 b(These)16 b(example)d(programs)249
777 y(mak)o(e)f(useful)i(templates)g(on)f(whic)o(h)h(to)g(base)g(y)o
(our)g(o)o(wn)g(PVM)g(programs.)291 831 y(The)g(\014rst)h(step)f(is)g
(to)g(cop)o(y)g(the)g(example)f(programs)g(in)o(to)g(y)o(our)g(o)o(wn)h
(area:)249 918 y Fs(\045)22 b(cp)f(-r)g($PVM_ROOT/examples)d
($HOME/pvm3/examples)249 972 y(\045)k(cd)f($HOME/pvm3/example)o(s)249
1059 y FA(The)g(examples)e(directory)h(con)o(tains)g(a)g
FB(Make\014le.aimk)g FA(and)g FB(R)n(e)n(adme)h FA(\014le)f(that)g
(describ)q(e)h(ho)o(w)249 1113 y(to)e(build)g(the)h(examples.)35
b(PVM)19 b(supplies)h(an)g(arc)o(hitecture-indep)q(enden)o(t)i(mak)o
(e,)d Fs(aimk)p FA(,)h(that)249 1167 y(automatically)11
b(determines)k(PVM)p 821 1167 13 2 v 15 w(AR)o(CH)f(and)g(links)g(an)o
(y)f(op)q(erating)i(system)f(sp)q(eci\014c)h(libraries)249
1221 y(to)e(y)o(our)f(application.)k Fs(aimk)c FA(w)o(as)h
(automatically)d(added)j(to)f(y)o(our)h($P)m(A)m(TH)f(when)h(y)o(ou)f
(placed)h(the)249 1275 y Fs(cshrc.stub)i FA(in)i(y)o(our)h
Fs(.cshrc)e FA(\014le.)29 b(Using)17 b Fs(aimk)f FA(allo)o(ws)h(y)o(ou)
g(to)g(lea)o(v)o(e)g(the)h(source)h(co)q(de)f(and)249
1329 y(mak)o(e\014le)12 b(unc)o(hanged)j(as)f(y)o(ou)f(compile)f
(across)j(di\013eren)o(t)g(arc)o(hitectures.)291 1383
y(The)g(master/sla)o(v)o(e)f(programmi)o(ng)e(mo)q(del)h(is)i(the)g
(most)f(p)q(opular)g(mo)q(del)f(used)j(in)e(distributed)249
1437 y(computing.)j(\(In)e(the)f(general)h(parallel)e(programmi)o(ng)e
(arena,)j(the)h(SPMD)f(mo)q(del)f(is)h(more)f(p)q(op-)249
1491 y(ular.\))18 b(T)m(o)13 b(compile)f(the)j(master/sla)o(v)o(e)d(C)i
(example,)e(t)o(yp)q(e)249 1578 y Fs(\045)22 b(aimk)f(master)f(slave)
249 1665 y FA(If)14 b(y)o(ou)f(prefer)i(to)f(w)o(ork)f(with)h(F)m
(ortran,)f(compile)f(the)j(F)m(ortran)f(v)o(ersion)g(with)249
1753 y Fs(\045)22 b(aimk)f(fmaster)f(fslave)249 1840
y FA(Dep)q(ending)f(on)f(the)h(lo)q(cation)e(of)h(PVM)p
913 1840 V 15 w(R)o(OOT,)g(the)h Fs(INCLUDE)e FA(statemen)o(t)h(at)g
(the)h(top)g(of)e(the)249 1894 y(F)m(ortran)f(examples)f(ma)o(y)f(need)
j(to)f(b)q(e)h(c)o(hanged.)25 b(If)15 b(PVM)p 1211 1894
V 16 w(R)o(OOT)h(is)g(not)g(HOME/p)o(vm3,)e(then)249
1948 y(c)o(hange)g(the)g(include)f(to)h(p)q(oin)o(t)e(to)i
Fs($PVM)p 899 1948 14 2 v 15 w(ROOT/include/fp)o(vm3.h)o
FA(.)h(Note)f(that)g(PVM)p 1665 1948 13 2 v 15 w(R)o(OOT)f(is)249
2002 y(not)h(expanded)h(inside)e(the)i(F)m(ortran,)e(so)h(y)o(ou)f(m)o
(ust)g(insert)i(the)f(actual)g(path.)291 2056 y(The)c(mak)o(e\014le)f
(mo)o(v)o(es)f(the)j(executables)h(to)d Fs($HOME/pvm3/bin/PVM)p
1378 2056 14 2 v 12 w(ARCH)p FA(,)g(whic)o(h)h(is)g(the)g(default)249
2110 y(lo)q(cation)k(PVM)h(will)f(lo)q(ok)g(for)g(them)g(on)h(all)e
(hosts.)22 b(If)14 b(y)o(our)h(\014le)g(system)g(is)f(not)h(common)d
(across)249 2164 y(all)f(y)o(our)g(PVM)h(hosts,)g(then)h(y)o(ou)e(will)
f(ha)o(v)o(e)i(to)f(build)g(or)h(cop)o(y)g(\(dep)q(ending)g(on)f(the)i
(arc)o(hitectures\))249 2218 y(these)i(executables)h(on)e(all)e(y)o
(our)i(PVM)g(hosts.)291 2271 y(No)o(w,)k(from)e(one)i(windo)o(w,)g
(start)g(PVM)h(and)f(con\014gure)g(some)f(hosts.)31 b(These)20
b(examples)d(are)249 2325 y(designed)22 b(to)g(run)g(on)f(an)o(y)g(n)o
(um)o(b)q(er)g(of)g(hosts,)i(including)e(one.)41 b(In)21
b(another)h(windo)o(w)f Fs(cd)g FA(to)249 2379 y Fs($HOME/pvm3/bin/PVM)
p 647 2379 V 12 w(ARCH)13 b FA(and)h(t)o(yp)q(e)249 2467
y Fs(\045)22 b(master)p eop
%%Page: 26 45
26 44 bop 249 251 a Fu(26)1375 b(Chapter)13 b(3)249 507
y FA(The)g(program)f(will)f(ask)i(ho)o(w)f(man)o(y)f(tasks.)18
b(The)c(n)o(um)o(b)q(er)e(of)g(tasks)h(do)q(es)h(not)e(ha)o(v)o(e)h(to)
g(matc)o(h)e(the)249 561 y(n)o(um)o(b)q(er)i(of)h(hosts)g(in)f(these)j
(examples.)h(T)m(ry)c(sev)o(eral)i(com)o(binations.)291
615 y(The)c(\014rst)h(example)e(illustrates)i(the)g(abilit)o(y)d(to)j
(run)f(a)g(PVM)h(program)e(from)f(a)i(Unix)g(prompt)f(on)249
669 y(an)o(y)k(host)h(in)f(the)h(virtual)f(mac)o(hine.)19
b(This)14 b(is)h(just)g(lik)o(e)e(the)j(w)o(a)o(y)e(y)o(ou)g(w)o(ould)f
(run)i(a)g(serial)f Fs(a.out)249 723 y FA(program)j(on)h(a)g(w)o
(orkstation.)32 b(In)18 b(the)h(next)g(example,)f(whic)o(h)h(is)f(also)
g(a)g(master/sla)o(v)o(e)g(mo)q(del)249 777 y(called)c
Fs(hitc)p FA(,)f(y)o(ou)h(will)f(see)i(ho)o(w)f(to)g(spa)o(wn)h(PVM)f
(jobs)g(from)f(the)i(PVM)f(console)h(and)f(also)g(from)249
831 y(XPVM.)291 885 y Fs(hitc)d FA(illustrates)i(dynamic)e(load)h
(balancing)g(using)g(the)h(p)q(o)q(ol-of-tasks)f(paradigm.)k(In)c(the)i
(p)q(o)q(ol)249 939 y(of)g(tasks)i(paradigm,)c(the)k(master)e(program)g
(manages)f(a)i(large)g(queue)g(of)g(tasks,)g(alw)o(a)o(ys)f(sending)249
993 y(idle)e(sla)o(v)o(e)g(programs)g(more)f(w)o(ork)i(to)f(do)g(un)o
(til)g(the)h(queue)h(is)e(empt)o(y)m(.)k(This)d(paradigm)d(is)j
(e\013ectiv)o(e)249 1047 y(in)e(situations)h(where)h(the)f(hosts)h(ha)o
(v)o(e)e(v)o(ery)h(di\013eren)o(t)h(computational)d(p)q(o)o(w)o(ers,)i
(b)q(ecause)h(the)g(least)249 1101 y(loaded)g(or)h(more)e(p)q(o)o(w)o
(erful)h(hosts)h(do)f(more)g(of)g(the)h(w)o(ork)f(and)g(all)f(the)i
(hosts)h(sta)o(y)e(busy)h(un)o(til)e(the)249 1155 y(end)i(of)g(the)g
(problem.)j(T)m(o)c(compile)f Fs(hitc)p FA(,)h(t)o(yp)q(e)249
1237 y Fs(\045)22 b(aimk)f(hitc)g(hitc_slave)291 1319
y FA(Since)13 b Fs(hitc)f FA(do)q(es)i(not)f(require)h(an)o(y)f(user)h
(input,)e(it)h(can)g(b)q(e)h(spa)o(wned)f(directly)h(from)d(the)j(PVM)
249 1373 y(console.)23 b(Start)16 b(up)f(the)h(PVM)g(console)g(and)f
(add)g(a)g(few)h(hosts.)23 b(A)o(t)16 b(the)g(PVM)f(console)h(prompt)
249 1427 y(t)o(yp)q(e)249 1509 y Fs(pvm>)21 b(spawn)g(->)g(hitc)249
1591 y FA(The)11 b(\\-)p Fn(>)p FA(")f(spa)o(wn)g(option)g(causes)h
(all)e(the)i(prin)o(t)f(statemen)o(ts)h(in)f Fs(hitc)f
FA(and)h(in)g(the)h(sla)o(v)o(es)f(to)h(app)q(ear)249
1645 y(in)k(the)g(console)h(windo)o(w.)k(This)15 b(feature)h(can)f(b)q
(e)h(useful)f(when)g(debugging)g(y)o(our)g(\014rst)h(few)f(PVM)249
1699 y(programs.)j(Y)m(ou)c(ma)o(y)e(wish)j(to)f(exp)q(erimen)o(t)g
(with)g(this)g(option)g(b)o(y)g(placing)g(prin)o(t)g(statemen)o(ts)g
(in)249 1753 y(hitc.f)f(and)h(hitc)p 508 1753 13 2 v
15 w(sla)o(v)o(e.f)f(and)h(recompiling.)291 1807 y Fs(hitc)k
FA(can)i(b)q(e)f(used)i(to)e(illustrate)g(XPVM's)h(real-time)d
(animation)g(capabilities.)33 b(Start)20 b(up)249 1861
y(XPVM)d(and)g(build)e(a)i(virtual)f(mac)o(hine)f(with)h(four)g(hosts.)
27 b(Clic)o(k)16 b(on)h(the)g(\\tasks")f(button)h(and)249
1914 y(select)g(\\spa)o(wn")f(from)e(the)i(men)o(u.)23
b(T)o(yp)q(e)16 b(\\hitc")g(where)h(XPVM)f(asks)g(for)g(the)g(command,)
d(and)249 1968 y(clic)o(k)h(on)f(\\start".)18 b(Y)m(ou)c(will)e(see)j
(the)g(host)f(icons)g(ligh)o(t)f(up)h(as)f(the)i(mac)o(hines)e(b)q
(ecome)h(busy)m(.)k(Y)m(ou)249 2022 y(will)e(see)i(the)g(hitc)p
547 2022 V 15 w(sla)o(v)o(e)e(tasks)i(get)f(spa)o(wned)h(and)f(see)h
(all)e(the)i(messages)f(that)g(tra)o(v)o(el)g(b)q(et)o(w)o(een)249
2076 y(the)e(tasks)f(in)g(the)g FB(Sp)n(ac)n(e)i(Time)d
FA(displa)o(y)m(.)k(Sev)o(eral)d(other)h(views)f(are)h(selectable)g
(from)d(the)j(XPVM)249 2130 y(\\views")i(men)o(u.)28
b(The)17 b(\\task)h(output")f(view)g(is)g(equiv)n(alen)o(t)g(to)g(the)h
(\\-)p Fn(>)p FA(")f(option)g(in)g(the)h(PVM)249 2184
y(console.)g(It)13 b(causes)i(the)e(standard)h(output)f(from)e(all)h
(tasks)h(to)g(app)q(ear)g(in)g(the)h(windo)o(w)e(that)h(p)q(ops)249
2238 y(up.)291 2292 y(There)18 b(is)f(one)g(restriction)h(on)f
(programs)f(that)h(are)h(spa)o(wned)g(from)d(XPVM)j(\(and)f(the)h(PVM)
249 2346 y(console\).)j(The)15 b(programs)f(m)o(ust)g(not)g(con)o(tain)
h(an)o(y)f(in)o(teractiv)o(e)h(input,)g(suc)o(h)g(as)g(asking)f(for)g
(ho)o(w)249 2400 y(man)o(y)e(sla)o(v)o(es)i(to)g(start)h(up)f(or)g(ho)o
(w)g(big)f(a)h(problem)f(to)h(solv)o(e.)k(This)c(t)o(yp)q(e)h(of)e
(information)e(can)j(b)q(e)249 2454 y(read)g(from)e(a)i(\014le)f(or)h
(put)g(on)f(the)i(command)c(line)i(as)h(argumen)o(ts,)e(but)i(there)h
(is)f(nothing)f(in)g(place)249 2508 y(to)h(get)g(user)h(input)f(from)e
(the)i(k)o(eyb)q(oard)g(to)g(a)g(p)q(oten)o(tially)e(remote)i(task.)p
eop
%%Page: 27 46
27 45 bop 249 251 a Fu(Using)14 b(PVM)1358 b(27)249 507
y FD(3.7)52 b(PVM)16 b(Console)i(Details)249 615 y FA(The)d(PVM)g
(console,)g(called)g Fs(pvm)p FA(,)f(is)g(a)h(stand-alone)g(PVM)g(task)
g(that)f(allo)o(ws)g(the)h(user)h(to)f(in)o(ter-)249
669 y(activ)o(ely)g(start,)g(query)m(,)g(and)g(mo)q(dify)e(the)i
(virtual)f(mac)o(hine.)20 b(The)c(console)f(ma)o(y)e(b)q(e)j(started)g
(and)249 723 y(stopp)q(ed)d(m)o(ultiple)c(times)h(on)i(an)o(y)f(of)f
(the)j(hosts)f(in)f(the)h(virtual)f(mac)o(hine)f(without)h(a\013ecting)
h(PVM)249 777 y(or)i(an)o(y)f(applications)g(that)h(ma)o(y)e(b)q(e)j
(running.)291 831 y(When)20 b(started,)j Fs(pvm)d FA(determines)h
(whether)h(PVM)e(is)h(already)f(running;)j(if)d(it)g(is)g(not,)i
Fs(pvm)249 885 y FA(automatically)11 b(executes)16 b(p)o(vmd)c(on)i
(this)f(host,)h(passing)g(p)o(vmd)e(the)i(command)d(line)j(options)f
(and)249 939 y(host\014le.)18 b(Th)o(us)d(PVM)f(need)h(not)f(b)q(e)g
(running)g(to)f(start)i(the)f(console.)423 1026 y Fs(pvm)22
b([-n<hostname>])c([hostfile])291 1113 y FA(The)12 b(-n)f(option)h(is)f
(useful)h(for)g(sp)q(ecifying)f(an)h(alternativ)o(e)g(name)e(for)i(the)
g(master)f(p)o(vmd)g(\(in)g(case)249 1167 y(hostname)k(do)q(esn't)i
(matc)o(h)e(the)i(IP)f(address)i(y)o(ou)e(w)o(an)o(t\).)24
b(Once)18 b(PVM)e(is)g(started,)i(the)f(console)249 1221
y(prin)o(ts)d(the)h(prompt)249 1308 y Fs(pvm>)249 1396
y FA(and)f(accepts)h(commands)d(from)g(standard)i(input.)k(The)c(a)o(v)
n(ailable)e(commands)g(are)249 1462 y Fr(add)20 b FA(follo)o(w)o(ed)12
b(b)o(y)i(one)g(or)g(more)f(host)h(names,)f(adds)h(these)h(hosts)g(to)e
(the)i(virtual)e(mac)o(hine.)249 1533 y Fr(alias)20 b
FA(de\014nes)15 b(or)f(lists)g(command)d(aliases.)249
1603 y Fr(conf)20 b FA(lists)c(the)g(con\014guration)f(of)g(the)i
(virtual)e(mac)o(hine)f(including)h(hostname,)g(p)o(vmd)f(task)i(ID,)
249 1657 y(arc)o(hitecture)g(t)o(yp)q(e,)e(and)f(a)h(relativ)o(e)g(sp)q
(eed)h(rating.)249 1728 y Fr(delete)k FA(follo)o(w)o(ed)9
b(b)o(y)h(one)h(or)f(more)g(host)h(names,)f(deletes)i(these)g(hosts)f
(from)e(the)i(virtual)f(mac)o(hine.)249 1782 y(PVM)k(pro)q(cesses)j
(still)c(running)g(on)h(these)h(hosts)g(are)f(lost.)249
1852 y Fr(ec)o(ho)20 b FA(ec)o(ho)14 b(argumen)o(ts.)249
1923 y Fr(halt)19 b FA(kills)12 b(all)f(PVM)h(pro)q(cesses)j(including)
d(console,)g(and)g(then)h(sh)o(uts)g(do)o(wn)f(PVM.)h(All)e(daemons)249
1977 y(exit.)249 2047 y Fr(help)19 b FA(can)14 b(b)q(e)g(used)h(to)e
(get)h(information)d(ab)q(out)i(an)o(y)g(of)g(the)i(in)o(teractiv)o(e)f
(commands.)h(Help)f(ma)o(y)249 2101 y(b)q(e)g(follo)o(w)o(ed)d(b)o(y)i
(a)f(command)e(name)i(that)h(lists)g(options)f(and)h(\015ags)g(a)o(v)n
(ailable)e(for)h(this)h(command.)249 2172 y Fr(id)20
b FA(prin)o(ts)14 b(the)g(console)g(task)g(id.)249 2242
y Fr(jobs)20 b FA(lists)13 b(running)h(jobs.)249 2313
y Fr(kill)19 b FA(can)14 b(b)q(e)g(used)h(to)f(terminate)f(an)o(y)h
(PVM)g(pro)q(cess.)249 2384 y Fr(mstat)20 b FA(sho)o(ws)14
b(the)g(status)h(of)e(sp)q(eci\014ed)j(hosts.)249 2454
y Fr(ps)f(-a)21 b FA(lists)13 b(all)e(pro)q(cesses)16
b(curren)o(tly)d(on)g(the)g(virtual)f(mac)o(hine,)f(their)i(lo)q
(cations,)f(their)h(task)g(id's,)249 2508 y(and)h(their)g(paren)o(ts')g
(task)g(id's.)p eop
%%Page: 28 47
28 46 bop 249 251 a Fu(28)1375 b(Chapter)13 b(3)249 507
y Fr(pstat)20 b FA(sho)o(ws)14 b(the)g(status)h(of)e(a)h(single)f(PVM)i
(pro)q(cess.)249 576 y Fr(quit)k FA(exits)c(the)f(console,)g(lea)o
(ving)f(daemons)f(and)i(PVM)g(jobs)g(running.)249 644
y Fr(reset)20 b FA(kills)c(all)f(PVM)j(pro)q(cesses)i(except)e
(consoles,)g(and)f(resets)i(all)d(the)i(in)o(ternal)e(PVM)i(tables)249
698 y(and)c(message)f(queues.)20 b(The)14 b(daemons)f(are)h(left)g(in)f
(an)h(idle)f(state.)249 766 y Fr(seten)o(v)19 b FA(displa)o(ys)14
b(or)f(sets)j(en)o(vironmen)o(t)c(v)n(ariables.)249 834
y Fr(sig)20 b FA(follo)o(w)o(ed)12 b(b)o(y)i(a)f(signal)g(n)o(um)o(b)q
(er)g(and)h(TID,)f(sends)i(the)g(signal)e(to)g(the)i(task.)249
902 y Fr(spa)o(wn)20 b FA(starts)15 b(a)f(PVM)g(application.)i(Options)
e(include)g(the)h(follo)o(wing:)249 979 y Fr(-coun)o(t)k
FA(n)o(um)o(b)q(er)13 b(of)h(tasks;)f(default)h(is)g(1.)249
1047 y Fr(-host)20 b FA(spa)o(wn)13 b(on)h(host;)g(default)f(is)h(an)o
(y)m(.)249 1116 y Fr(-AR)o(CH)21 b FA(spa)o(wn)14 b(of)f(hosts)i(of)e
(t)o(yp)q(e)i(AR)o(CH.)249 1184 y Fr(-?)20 b FA(enable)14
b(debugging.)249 1252 y Fr(-)p Fn(>)21 b FA(redirect)15
b(task)f(output)h(to)e(console.)249 1320 y Fr(-)p Fn(>)p
Fr(\014le)20 b FA(redirect)15 b(task)f(output)g(to)g(\014le.)249
1389 y Fr(-)p Fn(>>)p Fr(\014le)20 b FA(redirect)15 b(task)f(output)g
(app)q(end)h(to)f(\014le.)249 1457 y Fr(-@)21 b FA(trace)15
b(job,)e(displa)o(y)g(output)h(on)f(console)249 1525
y Fr(-@\014le)20 b FA(trace)14 b(job,)f(output)h(to)g(\014le)249
1602 y Fr(trace)20 b FA(sets)c(or)d(displa)o(ys)h(the)g(trace)h(ev)o
(en)o(t)g(mask.)249 1670 y Fr(unalias)k FA(unde\014nes)c(command)c
(alias.)249 1738 y Fr(v)o(ersion)19 b FA(prin)o(ts)14
b(v)o(ersion)g(of)f(PVM)h(b)q(eing)g(used.)291 1803 y(The)i(console)g
(reads)h Fs($HOME/.pvmrc)d FA(b)q(efore)i(reading)g(commands)e(from)g
(the)j(tt)o(y)m(,)e(so)h(y)o(ou)g(can)249 1857 y(do)e(things)f(lik)o(e)
336 1940 y Fs(alias)21 b(?)h(help)336 1994 y(alias)f(h)h(help)336
2048 y(alias)f(j)h(jobs)336 2102 y(setenv)f(PVM_EXPORT)f(DISPLAY)336
2156 y(#)i(print)f(my)g(id)336 2210 y(echo)g(new)g(pvm)h(shell)336
2264 y(id)249 2346 y FA(PVM)16 b(supp)q(orts)g(the)g(use)g(of)f(m)o
(ultiple)d(consoles.)23 b(It)15 b(is)h(p)q(ossible)f(to)g(run)h(a)e
(console)i(on)f(an)o(y)g(host)249 2400 y(in)i(an)g(existing)g(virtual)f
(mac)o(hine)g(and)i(ev)o(en)f(m)o(ultiple)e(consoles)j(on)g(the)f(same)
g(mac)o(hine.)27 b(It)17 b(is)249 2454 y(also)d(p)q(ossible)g(to)h
(start)g(up)f(a)g(console)h(in)f(the)h(middle)e(of)g(a)h(PVM)h
(application)e(and)i(c)o(hec)o(k)g(on)f(its)249 2508
y(progress.)p eop
%%Page: 29 48
29 47 bop 249 251 a Fu(Using)14 b(PVM)1358 b(29)249 507
y FD(3.8)52 b(Host)18 b(File)g(Options)249 615 y FA(As)13
b(w)o(e)g(stated)h(earlier,)e(only)g(one)h(p)q(erson)h(at)e(a)h(site)g
(needs)h(to)f(install)e(PVM,)i(but)g(eac)o(h)g(PVM)g(user)249
669 y(can)h(ha)o(v)o(e)g(his)g(o)o(wn)f(host\014le,)h(whic)o(h)g
(describ)q(es)i(his)d(o)o(wn)h(p)q(ersonal)g(virtual)f(mac)o(hine.)291
723 y(The)f FB(host\014le)g FA(de\014nes)h(the)g(initial)d
(con\014guration)h(of)g(hosts)i(that)f(PVM)g(com)o(bines)f(in)o(to)g(a)
h(virtual)249 777 y(mac)o(hine.)32 b(It)19 b(also)f(con)o(tains)h
(information)d(ab)q(out)j(hosts)h(that)f(y)o(ou)f(ma)o(y)f(wish)i(to)g
(add)g(to)f(the)249 831 y(con\014guration)c(later.)291
885 y(The)20 b(host\014le)h(in)f(its)g(simplest)g(form)e(is)i(just)h(a)
f(list)g(of)g(hostnames)g(one)g(to)g(a)g(line.)37 b(Blank)249
939 y(lines)15 b(are)h(ignored,)f(and)g(lines)g(that)g(b)q(egin)g(with)
g(a)g(#)f(are)i(commen)o(t)d(lines.)22 b(This)15 b(allo)o(ws)f(y)o(ou)g
(to)249 993 y(do)q(cumen)o(t)f(the)h(host\014le)g(and)g(also)f(pro)o
(vides)g(a)h(handy)f(w)o(a)o(y)g(to)g(mo)q(dify)f(the)i(initial)d
(con\014guration)249 1047 y(b)o(y)j(commen)o(ting)d(out)j(v)n(arious)f
(hostnames)g(\(see)i(Figure)f(3.2\).)291 1101 y(Sev)o(eral)19
b(options)f(can)h(b)q(e)h(sp)q(eci\014ed)g(on)f(eac)o(h)g(line)g(after)
g(the)h(hostname.)32 b(The)19 b(options)g(are)249 1155
y(separated)c(b)o(y)f(white)g(space.)249 1221 y Fr(lo=)h(userid)k
FA(allo)o(ws)9 b(y)o(ou)i(to)f(sp)q(ecify)i(an)e(alternativ)o(e)h
(login)f(name)f(for)i(this)g(host;)g(otherwise,)h(y)o(our)249
1275 y(login)h(name)f(on)i(the)g(start-up)h(mac)o(hine)d(is)i(used.)249
1346 y Fr(so=p)o(w)20 b FA(will)11 b(cause)i(PVM)g(to)e(prompt)g(y)o
(ou)h(for)g(a)f(passw)o(ord)i(on)f(this)g(host.)18 b(This)12
b(is)g(useful)g(in)f(the)249 1400 y(cases)j(where)f(y)o(ou)f(ha)o(v)o
(e)f(a)h(di\013eren)o(t)h(userid)g(and)f(passw)o(ord)h(on)f(a)g(remote)
f(system.)18 b(PVM)12 b(uses)h(rsh)249 1454 y(b)o(y)j(default)g(to)g
(start)h(up)f(remote)g(p)o(vmd's,)e(but)j(when)f(p)o(w)g(is)g(sp)q
(eci\014ed,)i(PVM)f(will)d(use)j(rexec\(\))249 1508 y(instead.)249
1578 y Fr(dx=)f(lo)q(cation)e(of)h(p)o(vmd)20 b FA(allo)o(ws)11
b(y)o(ou)h(to)h(sp)q(ecify)g(a)f(lo)q(cation)g(other)h(than)g(the)g
(default)g(for)f(this)249 1632 y(host.)18 b(This)c(is)g(useful)g(if)f
(y)o(ou)g(w)o(an)o(t)h(to)g(use)g(y)o(our)g(o)o(wn)f(p)q(ersonal)i(cop)
o(y)f(of)f(p)o(vmd,)249 1703 y Fr(ep=)j(paths)e(to)h(user)g
(executables)k FA(allo)o(ws)10 b(y)o(ou)h(to)g(sp)q(ecify)g(a)g(series)
i(of)d(paths)i(to)f(searc)o(h)h(do)o(wn)249 1757 y(to)f(\014nd)h(the)g
(requested)i(\014les)d(to)h(spa)o(wn)f(on)g(this)h(host.)17
b(Multiple)11 b(paths)h(are)g(separated)h(b)o(y)e(a)g(colon.)249
1811 y(If)g Fs(ep=)g FA(is)h(not)f(sp)q(eci\014ed,)j(then)e(PVM)g(lo)q
(oks)f(in)g Fs($HOME/pvm3/bin/PVM)p 1403 1811 14 2 v
12 w(ARCH)g FA(for)g(the)h(application)249 1865 y(tasks.)249
1935 y Fr(sp=)j(v)m(alue)21 b FA(sp)q(eci\014es)16 b(the)g(relativ)o(e)
f(computational)e(sp)q(eed)j(of)e(the)i(host)f(compared)g(with)f(other)
249 1989 y(hosts)g(in)f(the)g(con\014guration.)18 b(The)13
b(range)h(of)e(p)q(ossible)h(v)n(alues)g(is)g(1)g(to)g(1000000)e(with)i
(1000)f(as)h(the)249 2043 y(default.)249 2114 y Fr(b)o(x=)i(lo)q
(cation)g(of)g(debugger)j FA(sp)q(eci\014es)i(whic)o(h)f(debugger)g
(script)g(to)f(in)o(v)o(ok)o(e)f(on)h(this)g(host)h(if)249
2168 y(debugging)13 b(is)h(requested)i(in)e(the)g(spa)o(wn)g(routine.)
249 2222 y Fr(Note:)23 b FA(The)17 b(en)o(vironmen)o(t)e(v)n(ariable)g
(PVM)p 973 2222 13 2 v 16 w(DEBUGGER)g(can)i(also)e(b)q(e)i(set.)26
b(The)17 b(default)f(de-)249 2276 y(bugger)e(is)g Fs(pvm3/lib/debugger)
o FA(.)249 2346 y Fr(wd=)i(w)o(orking)p 533 2346 15 2
v 16 w(directory)i FA(sp)q(eci\014es)g(a)d(w)o(orking)g(directory)i(in)
e(whic)o(h)g(all)g(spa)o(wned)h(tasks)g(on)249 2400 y(this)e(host)g
(will)f(execute.)19 b(The)c(default)e(is)h Fs($HOME)p
FA(.)249 2471 y Fr(ip=)h(hostname)k FA(sp)q(eci\014es)d(an)d(alternate)
i(name)d(to)i(resolv)o(e)g(to)g(the)h(host)f(IP)g(address.)p
eop
%%Page: 30 49
30 48 bop 249 251 a Fu(30)1375 b(Chapter)13 b(3)249 507
y Fr(so=ms)20 b FA(sp)q(eci\014es)15 b(that)f(a)f(sla)o(v)o(e)f(p)o
(vmd)g(will)g(b)q(e)i(started)g(man)o(ually)c(on)j(this)h(host.)k(This)
13 b(is)g(useful)249 561 y(if)j(rsh)h(and)g(rexec)h(net)o(w)o(ork)f
(services)i(are)e(disabled)g(but)g(IP)g(connectivit)o(y)g(exists.)27
b(When)17 b(using)249 615 y(this)d(option)f(y)o(ou)h(will)e(see)j(in)f
(the)g(tt)o(y)g(of)f(the)i(p)o(vmd3)423 690 y Fs([t80040000])20
b(ready)64 b(Fri)21 b(Aug)h(27)f(18:47:47)f(1993)423
744 y(***)i(Manual)e(startup)g(***)423 798 y(Login)h(to)h("honk")e(and)
h(type:)423 852 y(pvm3/lib/pvmd)f(-S)h(-d0)g(-nhonk)g(1)g
(80a9ca95:0cb6)e(4096)i(2)h(80a95c43:0000)423 906 y(Type)f(response:)
249 981 y FA(On)14 b(honk,)f(after)i(t)o(yping)e(the)h(giv)o(en)g
(line,)f(y)o(ou)g(should)h(see)423 1055 y Fs(ddpro<2312>)20
b(arch<ALPHA>)f(ip<80a95c43:0a8e>)g(mtu<4096>)249 1130
y FA(whic)o(h)14 b(y)o(ou)f(should)h(rela)o(y)g(bac)o(k)f(to)h(the)h
(master)e(p)o(vmd.)j(A)o(t)e(that)g(p)q(oin)o(t,)f(y)o(ou)h(will)e(see)
423 1205 y Fs(Thanks)249 1279 y FA(and)i(the)g(t)o(w)o(o)g(p)o(vmds)e
(should)i(b)q(e)h(able)e(to)h(comm)o(unicate.)291 1346
y(If)h(y)o(ou)g(w)o(an)o(t)g(to)h(set)h(an)o(y)e(of)g(the)h(ab)q(o)o(v)
o(e)g(options)f(as)h(defaults)f(for)h(a)f(series)i(of)e(hosts,)i(y)o
(ou)e(can)249 1400 y(place)f(these)h(options)e(on)h(a)f(single)g(line)g
(with)h(a)f(*)g(for)h(the)g(hostname)f(\014eld.)18 b(The)c(defaults)f
(will)f(b)q(e)249 1454 y(in)h(e\013ect)i(for)d(all)g(the)i(follo)o
(wing)d(hosts)i(un)o(til)g(they)g(are)h(o)o(v)o(erridden)g(b)o(y)e
(another)i(set-defaults)g(line.)291 1508 y(Hosts)c(that)g(y)o(ou)f
(don't)h(w)o(an)o(t)f(in)g(the)i(initial)c(con\014guration)j(but)g(ma)o
(y)e(add)h(later)h(can)g(b)q(e)g(sp)q(eci\014ed)249 1562
y(in)k(the)h(host\014le)g(b)o(y)f(b)q(eginning)f(those)i(lines)g(with)f
(an)g(&.)19 b(An)c(example)e(host\014le)i(displa)o(ying)d(most)249
1616 y(of)h(these)j(options)d(is)h(sho)o(wn)g(in)f(Figure)h(3.3.)p
eop
%%Page: 31 50
31 49 bop 249 251 a Fu(Using)14 b(PVM)1358 b(31)249 538
y
 18945146 18945146 0 0 33285570 39271710 startTexFig
 249 538 a
%%BeginDocument: fig3-xpvm2.ps

/bitdump % stk: width, height, iscale
% dump a bit image with lower left corner at current origin,
% scaling by iscale (iscale=1 means 1/300 inch per pixel)
{
	% read arguments
	/iscale exch def
	/height exch def
	/width exch def

	% scale appropriately
	width iscale mul height iscale mul scale

	% allocate space for one scanline of input
	/picstr % picstr holds one scan line
		width 7 add 8 idiv % width of image in bytes = ceiling(width/8)
		string
		def

	% read and dump the image
	width height 1 [width 0 0 height neg 0 height]
	{ currentfile picstr readhexstring pop }
	image
} def
72 300 div dup scale
219 405 translate
704 830 3 bitdump
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafffffc
3800ffffffffff555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555ff001c
3bfeffffffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaff76dc
3bfeffffffffff555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555ff76dc
3b8effffffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaff76dc
3b06ff74374bff555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555ff06dc
3b06ffadd755ffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaff7edc
3b06ffddd755ff555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555ff7edc
3b8effdddad5ffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaff00dc
3bfeffac3ad5ff555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555ff7fdc
3bfeff75fdddffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaff7fdc
3800fffdffffff555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555ff001c
3ffffffdffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffcf3e07cf3e7cffe7f867e1fff302793e7e1fc3f867e1c39ffe00260ff0fff9870e1c31ffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffcf3e73cf3e7cff87f327ccffe738793e7ccf99f327cc99cffe79e667e67ff13264c999ffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffe67e73e67e38ffe7f324ccffe739331c7fcff9f324ccf9cffe79e673e64ce93264cf99ffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffffffffffffffffffffffffffffffffffffff0fe73e67e38ffe7f3224cffcf39331c7f1fe3f3224ce3e7fe79e673e64ce93264cf39ffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffffffffffffffffffffffffffffffffffffff9fe07e67e10ffe7f3264cffcf0333087fcff9f3264cf9e7fe79e673e661d93264ce79ffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffffffffffffffffffffffffffffffffffffff0fe7ff6fe54ffe7f3264cffcf3fb72a7fcff9f3264cf9e7fe79e673e673b93264ccf9ffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffe67e7ff0fe44ffe7f3264cffcf3f87227fcff9f3264cf9e7fe79e673e661803264c9f9ffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffcf3e7ff9fe6cffe793224cffcf3fcf367ccc9993224c99e7fe79e667e64cf93264c9f9ffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffcf3e7ff9fe6cffe79864e1ffcf3fcf367e1cc39864e1c3e7fe79e60ff0ccf9870e1819ffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffcffe7ffffffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffcffe7ffffffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffff9ffe3ffffffffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fff333f9fffffffff9fff3c813c9f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fff333f9fffffffff9fff3c9c3c9f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fff33219870d11c3f0c3f999c998e3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffb34c93264cc99f999fc39c998e3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fff924c93e64cc99f999fe78199843ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fff924093e64cc81f999fc39fdb953ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffcccf93e64cc9ff999f999fc3913ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffcccc93264cc99f919f3c9fe79b3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffcce19870cccc3fcc3f3c9fe79b3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffaaaaaaaaaaffffffffffffffffd5555555555fffffffffffffffeaaaaaaaaaaffffffffffffffff55555555ffffffffffffffffffaaaaaaabffffffffffffffffffd55555557fffffffffffffffffc
3fffffffffffffffff55555555557fffffffffffffffaaaaaaaaaaafffffffffffffffd5555555554fffffffffffffffeaaaaaaa9ffffffffffffffffff55555555ffffffffffffffffffaaaaaaaa7fffffffffffffffffc
3fffffffffffffffffbffffffffe7fffffffffffffffdfffffffffcfffffffffffffffefffffffffcffffffffffffffff7ffffff9ffffffffffffffffffbffffff9ffffffffffffffffffdffffffe7fffffffffffffffffc
3fffffffffffffffff7ffffffffe7fffffffffffffffbfffffffffcfffffffffffffffdfffffffffcfffffffffffffffefffffff9ffffffffffffffffff7ffffff9ffffffffffffffffffbffffffe7fffffffffffffffffc
3fffffffffffffffffbffffffffe7fffffffffffffffdfffffffffcfffffffffffffffefffffffffcffffffffffffffff7ffffff9ffffffffffffffffffbffffff9ffffffffffffffffffdffffffe7fffffffffffffffffc
3fffffffffffffffff673fffcffe7fffffffffffffffb00fffcfffcfffffffffffffffd81fffffe7cfffffffffffffffef0ffccf9ffffffffffffffffff673fccf9ffffffffffffffffffb39fe7fe7fffffffffffffffffc
3fffffffffffffffffa73fffcffe7fffffffffffffffde7fffcfffcfffffffffffffffe9cfffffe7cffffffffffffffff667ffcf9ffffffffffffffffffa73fccf9ffffffffffffffffffd39fe7fe7fffffffffffffffffc
3fffffffffffffffff6730e1861e7fffffffffffffffbe7870ccc3cfffffffffffffffd9cc3870c3cfffffffffffffffecf264879ffffffffffffffffff6730c879ffffffffffffffffffb398649e7fffffffffffffffffc
3fffffffffffffffffa7264cccce7fffffffffffffffde73264999cfffffffffffffffe9c9932667cffffffffffffffff4f264cf9ffffffffffffffffffa7264cf9ffffffffffffffffffd393244e7fffffffffffffffffc
3fffffffffffffffff602647cc7e7fffffffffffffffbe7f23c38fcfffffffffffffffd81991e667cfffffffffffffffecf264cf9ffffffffffffffffff603e4cf9ffffffffffffffffffb01324ce7fffffffffffffffffc
3fffffffffffffffffa72671cf1e7fffffffffffffffde7838c3e3cfffffffffffffffe9981c6067cffffffffffffffff4d264cf9ffffffffffffffffffa7304cf9ffffffffffffffffffd39024ce7fffffffffffffffffc
3fffffffffffffffff672678cf8e7fffffffffffffffbe733c49f1cfffffffffffffffd9c9fe27e7cfffffffffffffffecc264cf9ffffffffffffffffff67264cf9ffffffffffffffffffb393e4ce7fffffffffffffffffc
3fffffffffffffffffa7264cc8ce7fffffffffffffffde73264c99cfffffffffffffffe9c9932665cffffffffffffffff66644cb9ffffffffffffffffffa7264cb9ffffffffffffffffffd393244e7fffffffffffffffffc
3fffffffffffffffff6730e1e61e7fffffffffffffffbe7890ce43cfffffffffffffffd9cc3870f3cfffffffffffffffef0324e79ffffffffffffffffff67310e79ffffffffffffffffffb398649e7fffffffffffffffffc
3fffffffffffffffffbffffffffe7fffffffffffffffdfffffffffcfffffffffffffffefffffffffcffffffffffffffff7ffffff9ffffffffffffffffffbffffff9ffffffffffffffffffdffffcfe7fffffffffffffffffc
3fffffffffffffffff7ffffffffe7fffffffffffffffbfffffffffcfffffffffffffffdfffffffffcfffffffffffffffefffffff9ffffffffffffffffff7ffffff9ffffffffffffffffffbffffcfe7fffffffffffffffffc
3fffffffffffffffffbffffffffe7fffffffffffffffdfffffffffcfffffffffffffffefffffffffcffffffffffffffff7ffffff9ffffffffffffffffffbffffff9ffffffffffffffffffdffffcfe7fffffffffffffffffc
3fffffffffffffffff7ffffffffe7fffffffffffffffbfffffffffcfffffffffffffffdfffffffffcfffffffffffffffefffffff9ffffffffffffffffff7ffffff9ffffffffffffffffffbffffffe7fffffffffffffffffc
3fffffffffffffffffbffffffffe7fffffffffffffffdfffffffffcfffffffffffffffefffffffffcffffffffffffffff7ffffff9ffffffffffffffffffbffffff9ffffffffffffffffffdffffffe7fffffffffffffffffc
3fffffffffffffffff7ffffffffe7fffffffffffffffbfffffffffcfffffffffffffffdfffffffffcfffffffffffffffefffffff9ffffffffffffffffff7ffffff9ffffffffffffffffffbffffffe7fffffffffffffffffc
3fffffffffffffffff80000000007fffffffffffffffc0000000000fffffffffffffffe0000000000ffffffffffffffff00000001ffffffffffffffffff80000001ffffffffffffffffffc00000007fffffffffffffffffc
3fffffffffffffffff00000000007fffffffffffffff80000000000fffffffffffffffc0000000000fffffffffffffffe00000001ffffffffffffffffff00000001ffffffffffffffffff800000007fffffffffffffffffc
3fffffffffffffffffaaaaaaaaaaaaaaaaaaaaaaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff55555555555555555555554ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbfffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff7fffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbaaaaaaaaaaaaaaaaaaaaacffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff77fffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbffffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff77fffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbf9fcf9fe727e73fffcffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff770fcf9fc327e73fffcffecffffffffffffffffffffffffffffffff9cff9ffffff3fe787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbf6e4c9fdb27e730e1861ecffffffffffffffffffffffffffffffff8cff9ffffff3fe79ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff7664891f9927e7264ccccecffffffffffffffffffffffffffffffff8cc3099986433f3261999fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbe64c99f9927e02647cc7ecffffffffffffffffffffffffffffffff9499999932027f324c999fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff7604c99f8127e72671cf1ecffffffffffffffffffffffffffffffff94999c933230ff324cc93fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbcf0c99f3c27e72678cf8ecffffffffffffffffffffffffffffffff98819c933270ffb640c93fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff74f0891f3c27e7264cc8cecffffffffffffffffffffffffffffffff989f9c9332727f864fc93fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbcf24c9f3c27e730e1e61ecffffffffffffffffffffffffffffffff9c99966732733fce4ce67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff77fffffffffffffffffffecffffffffffffffffffffffffffffffff9cc3ce6786739fce61e67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbffffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff77fffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbffffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff77fffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbffffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ff0000000000000007000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffc
3ff000010000000000bfffffffffffffffffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffc
3ff3fdfe3fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fcfd3fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3f8fe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3f47d3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ea7e3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3f73d3fffffffffbc007f3e7f9f3fe1fffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ef3e3fffffffff74007f3fff9f3fccfffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3df9d3fffffffffbc00ff266493264cfffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3bf9e3fffffffff74007f124889264cfffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fcd3fffffffffbc00ff324c99264cfffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3bfce3fffffffff74007f324c99264cfffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbc00ff324c99264cfffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff200063fffffffff74007f124889244cfffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff000013fffffffffbc00ff2664933261fffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007ffffcfffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbcaaffffccfffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77ffffffe1fffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7000000000000000000000cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbfffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc007fff3ff3fffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7fffffc3fffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff3930f3fffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f392673fffffffffecfffffffffffffffffffffffff00000000000000000ffc00000000000000003ff00000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff9323f3fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f9338f3fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffffc73c73fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffe000000000001fbff7ff8000000000007effffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7fc72673fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffdfffffffffffafbff7ff7ffffffffffebeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffffef30f3fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffbfffffffffff6fbff7fefffffffffffdbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7ffffffffffffffffecfffffffffffffffffffffffff7ffe0200f07f07ffeffdff000000000000efbff7fc000000000003beffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbcaafffffffffffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdfe7ffffffffffe6fbff7f9fffffffffff9beffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7ffe0200303e07ffeffdfeffffffffffff6fbff7fbfffffffffffdbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdfeffffffffffff6fbff7fbfffffffffffdbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fff8f8e1c1c1fffeffdfef0000000000f6fbff7fbc0000000003dbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdfee7ffffffcfe76fbff7fb9fffffff3f9dbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7000000000000000000000cfffffffffffffffffffffffff7fff8f803c081fffeffdfeefffffff8ff76fbff7fbbffffffe3fddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbfffffffffffffffffffffcfffffffffffffffffffffffff7fffffffffffffffeffdfeefffffff1ff76fbff7fbbffffffc7fddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffff7fff8f803c411fffeffdfeeffffffe3ff76fbff7fbbffffff8ffddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffff7fffffffffffffffeffdfeeffffffe3ff76fbff7fbbffffff8ffddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fff8f8e1c631fffeffdfeefffffc71ff76fbff7fbbfffff1c7fddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdfeefffff838ff76fbff7fbbffffe0e3fddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7ffe0200307707ffeffdfeefffff11c7f76fbff7fbbffffc471fddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc007fff3fe1fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdfeeffffe38e3976fbff7fbbffff8e38e5dbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7fffffccfffffffffecfffffffffffffffffffffffff7ffe0200f07f07ffeffdfeefffff1cf1176fbff7fbbffffc73c45dbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff3930fcfffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdfeefffef8cf8376fbff7fbbfffbe33e0ddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f392679fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdfeefffc3c47c776fbff7fbbfff0f11f1ddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff9323f3fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdfeefffe0e01ff76fbff7fbbfff83807fddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f9338e7fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdfeefffe03187f76fbff7fbbfff80c61fddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffffc73c4ffffffffffecfffffffffffffffffffffffff7fffff000000ffffeffdfeeffc7318e7f76fbff7fbbff1cc639fddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7fc7264ffffffffffecfffffffffffffffffffffffff7ffff8ffffe2ffffeffdfeeff8338c7ff76fbff7fbbfe0ce31ffddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffffef30c0fffffffffecfffffffffffffffffffffffff7fffc7ffff14ffffeffdfeeff119863ff76fbff7fbbfc46618ffddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7ffffffffffffffffecfffffffffffffffffffffffff7ffe3ffffcaaffffeffdfeefe388233ff76fbff7fbbf8e208cffddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbcaafffffffffffffffffecfffffffffffffffffffffffff7ff9ffffe154fe1feffdfeeff1cc71fff76fbff7fbbfc731c7ffddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fe000000aaafeefeffdfeef189e3bfff76fbff7fbbc6278efffddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fefffffd554feefeffdfeee1c3f1ffff76fbff7fbb870fc7fffddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7feffc00caaafe1feffdfeec7e3f8ffff76fbff7fbb1f8fe3fffddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7feffcfed554febfeffdfeecff1fdffff76fbff7fbb3fc7f7fffddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7000000000000000000000cfffffffffffffffffffffffff7feffcfecaaafedfeffdfeec038ffffff76fbff7fbb00e3fffffddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbfffffffffffffffffffffcfffffffffffffffffffffffff7fe80400d554feefeffdfeee01c7fffff76fbff7fbb8071fffffddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffff7fe804fecaaaffffeffdfeeff8e3fffff76fbff7fbbfe38fffffddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffff7feffcfed554ff1feffdfeeffcf7fffff76fbff7fbbff3dfffffddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fe80400caaafeefeffdfeefdcfffffff76fbff7fbbf73ffffffddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fe804fed554feffeffdfeefc8fffffff76fbff7fbbf23ffffffddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7feffcfecaaaff1feffdfeefc1fffffff76fbff7fbbf07ffffffddbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc007fffffff9ffffffffecfffffffffffffffffffffffff7fe80400d554ffefeffdfeefe3fffffff76fbff7fbbf8fffffffddbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7fffffff1ffffffffecfffffffffffffffffffffffff7fe80482caaafeefeffdfee7ffffffffe76fbff7fb9fffffffff9dbeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff86649e9ffffffffecfffffffffffffffffffffffff7feffcf6d554ff1feffdfef0000000000f6fbff7fbc0000000003dbeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f32644e9ffffffffecfffffffffffffffffffffffff7fe80400caaaffffeffdfeffffffffffff5fbff7fbfffffffffffd7effffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff1e64cd9ffffffffecfffffffffffffffffffffffff7fe804ead554ff1feffdfeffffffffffff3fbff7fbfffffffffffcfeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7fc664cb9ffffffffecfffffffffffffffffffffffff7feffdaacaaafeefeffdfe7ffffffffffe7fbff7f9fffffffffff9feffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffffe264c80ffffffffecfffffffffffffffffffffffff7feffc00d554feffeffdff000000000000ffbff7fc000000000003feffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f3244cf9ffffffffecfffffffffffffffffffffffff7feffcb2caaafe1feffdfffff7fffff7ffffbff7ffffdfffffdffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff8724cf9ffffffffecfffffffffffffffffffffffff7feffdb2d554feefeffdfffffbffffefffffbff7ffffefffffbffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7ffffffffffffffffecfffffffffffffffffffffffff7feffc00caaafeefeffdf00005ffffd00000bff7c00017ffff400002ffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbcaafffffffffffffffffecfffffffffffffffffffffffff7feffcfed554ff1feffdeffffe00003fffffbff7bffff80000fffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7feffcfecaaaffffeffddffffffffffffffebff77ffffffffffffffaffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7feffcfed554feefeffd8000000000000001bff60000000000000006ffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7feffcfecaaafedfeffdbffffffffffffffdbff6fffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7feffc00d554febfeffdbbffcccccccccccdbff6efff333333333336ffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7000000000000000000000cfffffffffffffffffffffffff7feffcfecaaafe7feffdb580cccccccccccdbff6d603333333333336ffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbfffffffffffffffffffffcfffffffffffffffffffffffff7feffd9ed554febfeffdae80fffffffffffdbff6ba03fffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffff7feffdfecaaafedfeffdb5ffb33333333331bff6d7feccccccccccc6ffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffff7feffc00d554feefeffdbbff333333333331bff6effcccccccccccc6ffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fefffffcaa3ffffeffdbffffffffffffffdbff6fffffffffffffff6ffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fefffffd51fffffeffd8ccccccccccccccdbff63333333333333336ffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fefffffc8ffffffeffd8ccccccccccccccdbff63333333333333336ffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc007ffffffffffffffffecfffffffffffffffffffffffff7fe0000003ffffffeffdbffffffffffffffcbff6fffffffffffffff2ffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007ffffffffffffffffecfffffffffffffffffffffffff7fffffffffffffffeffd8000000000000001bff60000000000000006ffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff4470c9fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f332641fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff3323c7fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f3338cffffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff333c4ffffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f33264ffffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff3330cffffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007ffffffffffffffffecfffffffffffffffffffffffff7ffe7cff3e7fc3ffeffdfffcffffffffffffbff7fffffe7fff3ffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbcaafffffffffffffffffecfffffffffffffffffffffffff7ffe7fff3e7f99ffeffdffffffffffffffffbff7ffffffffff3ffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7ffe4cc9264c99ffeffdfffcc3864330ffffbff7ffffc864c33ffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7ffe2491124c99ffeffdfffc993203267fffbff7ffffc048993ffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7ffe6499324c99ffeffdfffc9ff23323ffffbff7ffffc64c993ffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7ffe6499324c99ffeffdfffc9f827338ffffbff7ffffce4c813ffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7000000000000000000000cfffffffffffffffffffffffff7ffe6499324c99ffeffdfffc9f32733c7fffbff7ffffce4c9f3ffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbfffffffffffffffffffffcfffffffffffffffffffffffff7ffe2491124899ffeffdfffc993272267fffbff7ffffce48993ffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffff7ffe4cc92664c3ffeffdfffcc3887930ffffbff7ffffce64c33ffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffff7ffffff9ffffffffeffdffffffffffffffffbff7fffffffcfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fffff99ffffffffeffdffffffffffffffffbff7ffffffccfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fffffc3ffffffffeffdffffffffffffffffbff7ffffffe1fffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc007f3ffffffffffffffecfffffffffffffffffffffffff00000000000000000ffc00000000000000003ff00000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007ffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff30e190cc3ffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f264c80c99ffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff27fc8cc8fffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f27e09cce3ffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff27cc9ccf1ffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f264c9c899ffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff30e21e4c3ffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007ffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbcaafffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2aaae3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff355553fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff7000000000000000000000cfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbfffffffffffffffffffffcfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbc007fffffffcffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff75ff7fffffffcffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbdffff864e190c9cfffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff75ff7f3224c8099cfffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbdffff1e67c8c3c9fffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff75ff7fc66609c3c9fffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbdffffe264c9c9e3fffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff75ff7f3224c9cce3fffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbdffff864e21ce73fffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff75ff7ffe7ffffff7fffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbcaafffe7fffffe7fffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff77fffffe7fffffcffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffc000000000000000000000000000000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff7000000000000000000000cfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbfffffffffffffffffffffcfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbc007ffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63fffffffff74007ffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff300053fffffffffbc00ff86730c9ffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff200063fffffffff74007f3272644ffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff3f27e4cffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f3f2704cffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff3f8e64cffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f338e64cffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff87cf10cffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007fffdffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbcaaffff9ffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77ffffff3ffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7000000000000000000000cfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbfffffffffffffffffffffcfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc007ff9fffcfffffffffecfffffffffffffffffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007ffffffcfffffffffecfffffffffffffffffffffffff00000000000000000ffc00000000000000003ff00000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff21930cfffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f012264fffffffffecfffffffffffffffffffffffff7ffc000000000003effdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff193264fffffffffecfffffffffffffffffffffffff7ffbfffffffffff5effdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f393204fffffffffecfffffffffffffffffffffffff7ff7ffffffffffedeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff39327cfffffffffecfffffffffffffffffffffffff7fe000000000001deffdfff0100783f83fffbff7ffc0401e0fe0fffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f392264fffffffffecfffffffffffffffffffffffff7fcfffffffffffcdeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff39930cfffffffffecfffffffffffffffffffffffff7fdfffffffffffedeffdfff0100181f03fffbff7ffc0400607c0fffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007ffff3fffffffffffecfffffffffffffffffffffffff7fdfffffffffffedeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbcaaffff33fffffffffffecfffffffffffffffffffffffff7fde0000000001edeffdfffc7c70e0e0ffffbff7fff1f1c38383fffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77ffffff87fffffffffffecfffffffffffffffffffffffff7fdcfffffff9fcedeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fddfffffff1feedeffdfffc7c01e040ffffbff7fff1f0078103fffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fddffffffe3feedeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fddffffffc7feedeffdfffc7c01e208ffffbff7fff1f0078823fffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7000000000000000000000cfffffffffffffffffffffffff7fddffffffc7feedeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbfffffffffffffffffffffcfffffffffffffffffffffffff7fddfffff8e3feedeffdfffc7c70e318ffffbff7fff1f1c38c63fffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffff7fddfffff071feedeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffff7fddffffe238feedeffdfff0100183b83fffbff7ffc040060ee0fffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fddffffc71c72edeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fddffffe39e22edeffdfff0100783f83fffbff7ffc0401e0fe0fffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fddfffdf19f06edeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc007ffe7fff9ffffffffecfffffffffffffffffffffffff7fddfff8788f8eedeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7ffe7fff9ffffffffecfffffffffffffffffffffffff7fddfffc1c03feedeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff864e1c986667fffecfffffffffffffffffffffffff7fddfffc0630feedeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f3224c9132667fffecfffffffffffffffffffffffff7fddff8e631cfeedeffdfffff8000007ffffbff7ffffe000001ffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff1e67c993324ffffecfffffffffffffffffffffffff7fddff06718ffeedeffdffffc7ffff17ffffbff7ffff1ffffc5ffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7fc6660993324ffffecfffffffffffffffffffffffff7fddfe2330c7feedeffdfffe3ffff8a7ffffbff7fff8ffffe29ffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffffe264c993324ffffecfffffffffffffffffffffffff7fddfc710467feedeffdfff1ffffe557ffffbff7ffc7ffff955ffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f3264c913399ffffecfffffffffffffffffffffffff7fddfe398e3ffeedeffdffcfffff0aa7f0ffbff7ff3ffffc2a9fc3feffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff86662498799ffffecfffffffffffffffffffffffff7fdde313c77ffeedeffdff0000005557f77fbff7fc000001555fddfeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7ffffffffffffffffecfffffffffffffffffffffffff7fddc387e3fffeedeffdff7ffffeaaa7f77fbff7fdfffffaaa9fddfeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbcaafffffffffffffffffecfffffffffffffffffffffffff7fdd8fc7f1fffeedeffdff7fe0065557f0ffbff7fdff8019555fc3feffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fdd9fe3fbfffeedeffdff7fe7f6aaa7f5ffbff7fdff9fdaaa9fd7feffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fdd8071fffffeedeffdff7fe7f65557f6ffbff7fdff9fd9555fdbfeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fddc038fffffeedeffdff402006aaa7f77fbff7fd00801aaa9fddfeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fddff1c7ffffeedeffdff4027f65557ffffbff7fd009fd9555ffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7000000000000000000000cfffffffffffffffffffffffff7fddff9efffffeedeffdff7fe7f6aaa7f8ffbff7fdff9fdaaa9fe3feffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbfffffffffffffffffffffcfffffffffffffffffffffffff7fddfb9ffffffeedeffdff4020065557f77fbff7fd008019555fddfeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffff7fddf91ffffffeedeffdff4027f6aaa7f7ffbff7fd009fdaaa9fdffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffff7fddf83ffffffeedeffdff7fe7f65557f8ffbff7fdff9fd9555fe3feffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fddfc7ffffffeedeffdff402006aaa7ff7fbff7fd00801aaa9ffdfeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fdcfffffffffcedeffdff4024165557f77fbff7fd009059555fddfeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fde0000000001edeffdff7fe7b6aaa7f8ffbff7fdff9edaaa9fe3feffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc007ffffffffffffffffecfffffffffffffffffffffffff7fdfffffffffffebeffdff4020065557ffffbff7fd008019555ffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7ffffffffffffffffecfffffffffffffffffffffffff7fdfffffffffffe7effdff402756aaa7f8ffbff7fd009d5aaa9fe3feffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff86099243fffffffecfffffffffffffffffffffffff7fcfffffffffffcfeffdff7fed565557f77fbff7fdffb559555fddfeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f33c99019fffffffecfffffffffffffffffffffffff7fe000000000001feffdff7fe006aaa7f7ffbff7fdff801aaa9fdffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdfffff3999199fffffffecfffffffffffffffffffffffff7ffffefffffeffffeffdff7fe5965557f0ffbff7fdff9659555fc3feffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f83b99381fffffffecfffffffffffffffffffffffff7fffff7ffffdffffeffdff7fed96aaa7f77fbff7fdffb65aaa9fddfeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff3339939ffffffffecfffffffffffffffffffffffff7e0000bffffa00000ffdff7fe0065557f77fbff7fdff8019555fddfeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f32791399fffffffecfffffffffffffffffffffffff7dffffc00007ffffeffdff7fe7f6aaa7f8ffbff7fdff9fdaaa9fe3feffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff880c93c3fffffffecfffffffffffffffffffffffff7bffffffffffffffcffdff7fe7f65557ffffbff7fdff9fd9555ffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7ffffffffffffffffecfffffffffffffffffffffffff70000000000000002ffdff7fe7f6aaa7f77fbff7fdff9fdaaa9fddfeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbcaafffffffffffffffffecfffffffffffffffffffffffff77ffffffffffffffaffdff7fe7f65557f6ffbff7fdff9fd9555fdbfeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff777ff99999999999affdff7fe006aaa7f5ffbff7fdff801aaa9fd7feffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff76b0199999999999affdff7fe7f65557f3ffbff7fdff9fd9555fcffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff75d01fffffffffffaffdff7fecf6aaa7f5ffbff7fdffb3daaa9fd7feffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff76bff666666666662ffdff7feff65557f6ffbff7fdffbfd9555fdbfeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7000000000000000000000cfffffffffffffffffffffffff777fe666666666662ffdff7fe006aaa7f77fbff7fdff801aaa9fddfeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbfffffffffffffffffffffcfffffffffffffffffffffffff77ffffffffffffffaffdff7ffffe551fffffbff7fdfffff9547ffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffff7199999999999999affdff7ffffea8ffffffbff7fdfffffaa3fffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffff7199999999999999affdff7ffffe47ffffffbff7fdfffff91ffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff77ffffffffffffff8ffdff0000001fffffffbff7fc0000007ffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff70000000000000002ffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc007ff9fffe1ffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007ffffffccffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff21870fcffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f0132679ffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff19323f3ffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f39338e7ffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff3933c4fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffff9fffe1ffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007f393264fffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffccffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc00ff39870c0ffffffffecfffffffffffffffffffffffff7fffff4470c9ffffeffdffffe19cc327ffffbff7ffff21870fcffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff74007ffffffffffffffffecfffffffffffffffffffffffff7fffff332641ffffeffdffffcc9c9913ffffbff7ffff0132679ffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbcaafffffffffffffffffecfffffffffffffffffffffffff7fffff3323c7ffffeffdffffcfc9f933ffffbff7ffff19323f3ffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fffff3338cfffffeffdffffcfc9c133ffffbff7ffff39338e7ffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fffff333c4fffffeffdffffcfe39933ffffbff7ffff3933c4fffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fffff33264fffffeffdffffcce39933ffffbff7ffff393264fffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff7fffff3330cfffffeffdffffe1f3c433ffffbff7ffff39870c0ffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7000000000000000000000cfffffffffffffffffffffffff7fffffffffffffffeffdfffffff7ffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbfffffffffffffffffffffcfffffffffffffffffffffffff7fffffffffffffffeffdffffffe7ffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffff7fffffffffffffffeffdffffffcfffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffff7fffffffffffffffeffdffffffffffffffffbff7fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffff00000000000000000ffc00000000000000003ff00000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbc007ffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7ffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff4470c90ffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f33264067fffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff3323c7e7fffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f3338cf07fffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffbdffff333c4e67fffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffff75ff7f33264e67fffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff155553fffffffffbdffff3330cf13fffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2aaaa3fffffffff75ff7ffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffbcaafffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3bfe63fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3dfcd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3bfce3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3df9d3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3efbe3fffffffff7000000000000000000000cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3f73d3fffffffffbfffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ff7e3fffffffff7fffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3f67d3fffffffffbaaaaaaaaaaaaaaaaaaaaacfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3f8fe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fcfd3fffffffffbffffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fdfe3fffffffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff155551555555555bc007f99ff3ffffffffffec555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555ffc
3ff2aaaa2aaaaaaaaa75ff7f99ff3ffffffffffecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffc
3fffffff0000000000bdffff093930cc9387fffec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffc
3fffffff000000000075ff7f9892264c8933fffec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffc
3fffffff3ffeffffffbdffff999323cc99f3fffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffeffc
3fffffff3ffcffffff75ff7f999338cc9983fffecffffffffffffffffffffffd555555555555555555555555555555555555555555555555555ffffffffffffffffffffffffffffffffffffffffffffffffffffff5ffdffc
3fffffff3ff8ffffffbdffff99933c4c9933fffecffffffffffffffffffffffeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffffffffffffffffffffffffffffffffffffffffffffffffffffffaffeffc
3fffffff3fd4ffffff75ff7f919226489933fffecffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffff75fdffc
3fffffff3fbcffffffbdffffc99930e49989fffecffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffbafeffc
3fffffff3f7cffffff75ff7ffffffffffffffffecffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7dffc
3fffffff3efcffffffbcaafffffffffffffffffecffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffbfbeffc
3fffffff35fcffffff77fffffffffffffffffffecffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffff7fd5ffc
3fffffff07fcffffffbffffffffffffffffffffecffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffbfe2ffc
3fffffff31fcffffff77fffffffffffffffffffecffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffff7fc5ffc
3fffffff3c7cffffffbffffffffffffffffffffecffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffbf1effc
3fffffff3f1cffffff7000000000000000000000cffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffff7c7dffc
3fffffff3f84ffffffbfffffffffffffffffffffcffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffb1feffc
3fffffff3fe0ffffff7fffffffffffffffffffffcffffffffffffffffffffffd000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff43fdffc
3fffffff3ff8ffffffbaaaaaaaaaaaaaaaaaaaaacffffffffffffffffffffffe000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff8ffeffc
3fffffff3ffeffffff77fffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffdffc
3fffffff2aaaaaaaaabffffffffffffffffffffecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffc
3fffffff555555555577fffffffffffffffffffec555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555ffc
3fffffffffffffffffbfe1e67ffffe73fffcfffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff77cce67ffffe73fffcfffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbf9e424e193e730e1861fecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff779e6624c83e7264ccccfecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbf9e6664c8fe02647cc7fecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff779e666409fe72671cf1fecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbf9e6664f9fe72678cf8fecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff77cce464c9fe7264cc8cfecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbfe1f26619fe730e1e61fecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff77fffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffaaaaaaaaabfffffbffffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ff5555555553fffff77fffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffbffffffff3fffffbffffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ff7ffffffff3fffff77fffffffffffffffffffecfffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffffffffffffffffffffc
3ffbffffffff3fffffbffffffffffffffffffffecfffffffe003ffffffffffffffffffffffffffffffffffffffeffeffffffffffffffffffffffffffffffffffffffffffffdffdfffffffffffffffffffffffffffffffffc
3ff784ffffff3fffff7000000000000000000000cfffffffe001ffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffc
3ffb30ffffff3fffffbfffffffffffffffffffffcf99ffffe003ffffffffffffffffffffffffffe0ffffcfffffeffeffffffffffffffffffffffffffffff39ffe01fff9fffdffdfffffffffffffffffffffffffffffffffc
3ff67cc3870f3fffff7fffffffffffffffffffffcf9fffffe001ffffffffffffffffffffffffffce7fffcfffffefffffffffffffffffffffffffffffffff19fffcffff9fffdffffffffffffffffffffffffffffffffffffc
3ffa7c9932673fffffbaaaaaaaaaaaaaaaaaaaaac3093987e003ffffffffffffffffffffffffffce4e61861a23effeffffffffffffffffffffffffffffff1987fcf0e19987dffdfffffffffffffffffffffffffffffffffc
3ff67c991e673fffff77fffffffffffffffffffec9993933e001ffffffffffffffffffffffffffe3ce4cccc999efffffffffffffffffffffffffffffffff2933fce64c9333dffffffffffffffffffffffffffffffffffffc
3ffa7c99c6073fffffbffffffffffffffffffffecf999333e003fffffffffffffffffffffffffff8e4c7ccc999effeffffffffffffffffffffffffffffff2933fcfe47871fdffdfffffffffffffffffffffffffffffffffc
3ff67c99e27f3fffff77fffffffffffffffffffecf999303e001fffffffffffffffffffffffffffc64f1cc0999efffffffffffffffffffffffffffffffff3133fcf07187c7dffffffffffffffffffffffffffffffffffffc
3ffb309932673fffffbffffffe0ffffffffffffecf99c73fe003ffffffffffffffffffffffffffce71f8ccf999effeffffffffffffffffffffffffffffff3133fce67893e3dffdfffffffffffffffffffffffffffffffffc
3ff784c3870f3fffff77fffffe67fffffffffffec991c733e001ffffffffffffffffffffffffffce71ccc8c999efffffffffffffffffffffffffffffffff3933fce64c9933dffffffffffffffffffffffffffffffffffffc
3ffbffffffff3fffffbffffffe730c9c3ffffffec3c9ef87e003ffffffffffffffffffffffffffe0f9e1e61999effeffffffffffffffffffffffffffffff3987fcf1219c87dffdfffffffffffffffffffffffffffffffffc
3ff7ffffffff3fffff77fffffe7264499ffffffecfffffffe001fffffffffffffffffffffffffffffbffffffffefffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffc
3ffbffffffff3fffffbffffffe7264c99ffffffecfffffffe003fffffffffffffffffffffffffffff3ffffffffeffeffffffffffffffffffffffffffffffffffffffffffffdffdfffffffffffffffffffffffffffffffffc
3ff7ffffffff3fffff77fffffe7264c81ffffffecfffffffe001ffffffffffffffffffffffffffffe7ffffffffefffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffc
3ffbffffffff3fffffbffffffe7264c9fffffffecfffffffe003ffffffffffffffffffffffffffffffffffffffeffeffffffffffffffffffffffffffffffffffffffffffffdffdfffffffffffffffffffffffffffffffffc
3ff7ffffffff3fffff77fffffe6664c99ffffffecffffffff555ffffffffffffffffffffffffffffffffffffffe555ffffffffffffffffffffffffffffffffffffffffffffcaabfffffffffffffffffffffffffffffffffc
3ff8000000003fffffbffffffe0f0ccc3ffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ff0000000003fffff77fffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbffffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff77fffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbffffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff77fffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbffffffffffffffffffffecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff7000000000000000000000cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffffbfffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3fffffffffffffffff7fffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
00000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004
0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0fffeaaaaabffffffffffffffffaaaaaaaaaabffffffffffffffffffffffffaaaaaaffffffff555555ffffffff555555fffffffe000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0fffd555553ffffffffffffffff55555555555ffffffffffffffffffffffff555554fffffffeaaaaa9fffffffeaaaaa9fffffffe000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0fffefffff3ffffffffffffffffbfffffffff9ffffffffffffffffffffffffbffffcffffffff7ffff9ffffffff7ffff9fffffffe7ffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0fffdff3ff3ffffffffffffffff7fffffffff9ffffffffffffffffffffffff7ffffcfffffffefffff9fffffffefffff9fffffffe7ffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0fffefc0ff3ffffffffffffffffbfffffffff9ffffffffffffffffffffffffbffffcffffffff7ffff9ffffffff731ff9fffffffe7ffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0fffdf1e3f3ffffffffffffffff6787ffffff9ffffffffffffffffffffffff7ffffcfffffffefffff9fffffffef30ff9fffffffe7ffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0fffec1e0f3ffffffffffffffffa79fffffff9ffffffffffffffffffffffffbf3e7cffffffff7ffff9ffffffff7307f9fffffffe7f8ffdfffffffffffffffffffffffffffffffffffffffff003ffffffc3f870e1c3870ff4
0fffdbdef73ffffffffffffffff73261999879ffffffffffffffffffffffff7e3c7cfffffffefc01f9fffffffef323f9fffffffe7f87fbfffffffffffffffffffffffffffffffffffffffffe7fffffff99f3264c993267f8
0fffefc0ff3ffffffffffffffffb324c999339ffffffffffffffffffffffffbc387cffffffff7c01f9ffffffff7331f9fffffffe7f83fdfffffffffffffffffffffffffffffffffffffffffe7288e1cf99f3264c993267f4
0fffdfc0ff3ffffffffffffffff7324cc931f9ffffffffffffffffffffffff78307cfffffffefc01f9fffffffef338f9fffffffe7f91fbfffffffffffffffffffffffffffffffffffffffffe72664ccf99f3264c993267f8
0fffefdeff3ffffffffffffffffbb640c93c79ffffffffffffffffffffffffb0207cffffffff7c01f9ffffffff733c79fffffffe7f98fdfffffffffffffffffffffffffffffffffffffffffe72664cff99f3264c993267f4
0fffdfdeff3ffffffffffffffff7864fc93e39ffffffffffffffffffffffff78307cfffffffefc01f9fffffffef338f9fffffffe7f9c7bfffffffffffffffffffffffffffffffffffffffffe726640ff99f3264c993267f8
0fffefc0ff3ffffffffffffffffbce4ce67339ffffffffffffffffffffffffbc387cffffffff7c01f9ffffffff7331f9fffffffe7f9e3dfffffffffffffffffffffffffffffffffffffffffe72664fff99f3264c993267f4
0fffdfc0ff3ffffffffffffffff7ce61e67879ffffffffffffffffffffffff7e3c7cfffffffefc01f9fffffffef323f9fffffffe7f9c7bfffffffffffffffffffffffffffffffffffffffffe72664ccf9993264c993267f8
0fffebdef73ffffffffffffffffbfffffffff9ffffffffffffffffffffffffbf3e7cffffffff7c01f9ffffffff7307f9fffffffe7f98fdfffffffffffffffffffffffffffffffffffffffffe726661cfc39870e1c3870ff4
0fffdc1e0f3ffffffffffffffff7fffffffff9ffffffffffffffffffffffff7ffffcfffffffefc01f9fffffffef30ff9fffffffe7f91fbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0fffef1e3f3ffffffffffffffffbfffffffff9ffffffffffffffffffffffffbffffcffffffff7ffff9ffffffff731ff9fffffffe7f83fdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0fffdfc0ff3ffffffffffffffff7fffffffff9ffffffffffffffffffffffff7ffffcfffffffefffff9fffffffefffff9fffffffe7f87fbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0fffeff3ff3ffffffffffffffffbfffffffff9ffffffffffffffffffffffffbffffcffffffff7ffff9ffffffff7ffff9fffffffe7f8ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0fffdfffff3ffffffffffffffff7fffffffff9ffffffffffffffffffffffff7ffffcfffffffefffff9fffffffefffff9fffffffe7ffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0fffefffff3ffffffffffffffff80000000001ffffffffffffffffffffffffbffffcffffffff7ffff9ffffffff7ffff9fffffffe7ffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0fffdfffff3ffffffffffffffff00000000001ffffffffffffffffffffffff7ffffcfffffffefffff9fffffffefffff9fffffffe7ffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0fffe000003ffffffffffffffffaaaaaaaaaaaaaaaaaaaaaaaaaabffffffff800000ffffffff000001ffffffff000001fffffffe555555fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0fffc000003ffffffffffffffff555555555555555555555555553ffffffff000000fffffffe000001fffffffe000001fffffffeaaaaabfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0ffffffffffffffffffffffffffbfffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0ffffffffffffffffffffffffff7fffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0ffffffffffffffffffffffffffbaaaaaaaaaaaaaaaaaaaaaaaab3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0ffffffffffffffffffffffffff77fffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0ffffffffffffffffffffffffffbffffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0ffffffffffffffffffffffffff77fffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0ffffffffffffffffffffffffffbc007f39ff3fffffe7fffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0ffffffffffffffffffffffffff74007f19ff3fffffe7fffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0ffffffffffffffffffffffffffbc00ff198613330c867ffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0ffffffffffffffffffffffffff74007f293333326404fffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0fffffffffffffffffff0000000bc00ff293339266461fffffffb0000000000000000000000000000000000000000000000000000000000000000000000000ff0000000000000000000007f80000000000000000000003f4
0fffffffffffffffffff000000074007f3103392664e1fffffffb0000000000000000000000000000000000000000000000000000000000000000000000001ff0000000000000000000007f80000000000000000000003f8
0fffffffffffffffffff3ffffffbc00ff313f392664e4fffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff3fffffffffffffffffffeff9fffffffffffffffffffff7f4
0fffffffffffffffffff3ffffff74007f39332cce64e67ffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff3ffffffffffffffffffff7f9fffffffffffffffffffffbf8
0fffffffffffffffffff3ffffffbc00ff39879ccf0ce73ffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff3fffffffffffffffffffeff9fffffffffffffffffffff7f4
0fffffffffffffffffff3ffffff74007ffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff3ffffffffffffffffffff7f9fffffffffffffffffffffbf8
0ff807fffffff009ffff393ffffbcaafffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff3fefffffffffffffffffeff9ff7ffffffffffffffffff7f4
0fff3ffffffff3f9ffff393ffff77fffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff3fd7ffc09ffff03fffcff7f9febfff87fffff333e67ffbf8
0fff3921c387f3c9873f3a14464bffffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff3fabffce1ffff39fffcfeff9fd5fff33fffff333fe7ff7f4
0fff380c9933f3c9333f333332277fffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff3f5dffce1867339870ccf7f9fa2ffe79398643308430fbf8
0fff38fc9f33f04933ff3333326bffffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff3ebeffce132733932649eff9f417fe7939320b34066677f4
0fff39e09f03f3c903ff3733326700000000000000000000000033fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff3d7f7fc09f32703f27c3f7f9e80bfe799332392466667bf8
0fff39cc9f3ff3c93fff3733326bfffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff38ff1fcf9832739827c3eff9c000fe7993027924e66077f4
0fff39cc9933f3c9333f27233227fffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff3c7e3fcf9338f39327c9f7f9e001fe79c73e7ccce667fbf8
0fff39e24387f3c9873f2793324baaaaaaaaaaaaaaaaaaaaaaaab3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff3e3c7fcf9338f393264ceff9f003ff33c7327ccce64677f4
0fffffffffffffffffff3ffffe777fffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff3f18ffcf989cf03890ce77f9f807ff87ef867ccce730fbf8
0fffffffffffffffffff3ffffe7bffffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff3f81fffffffdffffffffeff9fc0ffffffffffffffffff7f4
0fffffffffffffffffff3ffffe777fffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff3fc3fffffff9fffffffff7f9fe1ffffffffffffffffffbf8
0fffffffffffffffffff3ffffffbc007f83ffffffff003ffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff3fe7fffffff3ffffffffeff9ff3ffffffffffffffffff7f4
0fffffffffffffffffff3ffffff74007f39ffffffffe7fffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff3ffffffffffffffffffff7f9fffffffffffffffffffffbf8
0fffffffffffffffffff2aaaaaabc00ff39270e1c3fe7288e1ffb2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaff2aaaaaaaaaaaaaaaaaaaaff95555555555555555555557f4
0fffffffffffffffffff555555574007f8f1264c99fe72664cffb1555555555555555555555555555555555555555555555555555555555555555555555555ff5555555555555555555557faaaaaaaaaaaaaaaaaaaaaabf8
0ffffffffffffffffffffffffffbc00ffe333e4f99fe72664cffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0ffffffffffffffffffffffffff74007ff13304f81fe726640ffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0ffffffffffffffffffffffffffbc00ff393264f9ffe72664fffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0ffffffffffffffffffffffffff74007f391264c99fe72664cffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
0ffffffffffffffffffffffffffbc00ff8327121c3fe726661ffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
0aaaaaaaaaaaaaaaaaaaaaaaaaa74007fff3ffffffffffffffffb2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa8
155555555555555555555555555bcaaffff3ffffffffffffffffb155555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555554
3ffffffffffffffffffffffffff77ffffff3ffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffbffffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffff77fffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffbffffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffff700000000000000000000000033fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffbfffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffff7fffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffbaaaaaaaaaaaaaaaaaaaaaaaab3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffff77fffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffbffffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffff77fffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffbc007f399927fff33ffffffffb3fffe0fffffffffc00ffffffe01fff9fffffffffc00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffff75ff7f399f3ffff3fffffffffb3fffce7fffffffff9ffffffffcffff9ffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffbdffff390924186130c9fffffb3fffce49c3870fff9ca23873fcf0e19987e730fff9ca2387ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffff75ff7f39992793332644fffffb3fffe3c4993267ff9c999333fce64c9333e7267ff9c99933ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffbdffff3999273f33264cfffffb3ffff8ccf93e67ff9c99933ffcfe47871ff263fff9c99933ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffff75ff7f3999277833264cfffffb3ffffc4cc13e060f9c99903ffcf07187c7f278fff9c99903ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffbdffff3999267333264cfffffb3fffce4c993e7fff9c9993fffce67893e3f8fc7ff9c9993fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffff75ff7f939124f332264cfffffb3fffce44993267ff9c999333fce64c9933f8e667f9c99933ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffbdffff83c924189930ccfffffb3fffe0c9c4870fff9c999873fcf1219c87fdf0e7f9c99987ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffff75ff7ffffffffffffffffffffb3fffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffbcaafffffffffffffffffffffb3fffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffff77fffffffffffffffffffffffb3fffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffbffffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffff77fffffffffffffffffffffffb3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ff000000000000000000000000bffffffffffffffffffffffffb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffc
3ff00001000000000000000000070000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffc
3ff3fdfe3ffffffffffffffffffbfffffffffffffffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fcfd3ffffffffffffffffff7fffffffffffffffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3f8fe3ffffffffffffffffffbaaaaaaaaaaaaaaaaaaaaaaaab1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3f47d3ffffffffffffffffff77fffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ea7e3ffffffffffffffffffbffffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3f73d3ffffffffffffffffff77fffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ef3e3ffffffffffffffffffbc007fc3fc9f00fffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3df9d3ffffffffffffffffff75ff7f99fc9fe7fffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3bf9e3ffffffffffffffffffbdffff3f0c9fe7243870fffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fcd3ffffffffffffffffff75ff7f3e649fe70193267ffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3bfce3ffffffffffffffffffbdffff3fe49fe71f93e67ffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53ffffffffffffffffff75ff7f3f049fe73c13e07ffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff200063ffffffffffffffffffbdffff3e649fe73993e7fffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff000013ffffffffffffffffff75ff7f98649fe73993267ffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2aaae3ffffffffffffffffffbdffffc3109fe73c4870fffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff355553ffffffffffffffffff75ff7ffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2ffe63ffffffffffffffffffbcaafffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff300053ffffffffffffffffff77fffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff200063ffffffffffffffffffbffffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbffffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff700000000000000000000000031ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbfffffffffffffffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff7fffffffffffffffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbaaaaaaaaaaaaaaaaaaaaaaaab1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbffffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbc007f00fffcfff0ffe7fffcfb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff75ff7fe7fffcffe67fe7fffcfb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbdffffe7870ccfcf26424cc87b1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff75ff7fe732649fcf266624ccfb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbdffffe7f23c3fcf266664ccfb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff75ff7fe7838c3fcf266664ccfb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbdffffe733c49fcf266664ccfb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff75ff7fe73264cfe66464248cbb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbdffffe7890ce7f0f2724e4e7b1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff75ff7ffffffffffffffe7ffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbcaafffffffffffffffe7ffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffffffffffffe7ffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbffffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbffffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff700000000000000000000000031ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbfffffffffffffffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff7fffffffffffffffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbaaaaaaaaaaaaaaaaaaaaaaaab1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbffffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbffffffffc1ffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffccffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbffffffffce619387ffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffce4c8933ffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbffffffffce4c9933ffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffce4c9903ffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbffffffffce4c993fffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffcccc9933ffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbffffffffc1e19987ffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbffffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbffffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff77fffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbffffffffffffffffffffffffb1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff700000000000000000000000031ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffffbfffffffffffffffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff7fffffffffffffffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3ffffffffffffffffff800000000000000000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3ffffffffffffffffff000000000000000000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fffe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff155553fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2aaaa3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff37fe53fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3bfe63fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3dfcd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3bfce3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3df9d3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3efbe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3f73d3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ff7e3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3f67d3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3f8fe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3fcfd3fffffffffffffffffffffffffffffffffffffffffffd1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3fdfe3fffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff15555155555555555555555555555555555555555555555555155555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555ffc
3ff2aaaa2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffeffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffc55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555ffdffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffff3ff8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffeffc
3ffaaaaaaaaabffffffffffffffffffffffffffffffffffffffff3fd47ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc75fdffc
3ff5555555553ffffffffffffffffffffffffffffffffffffffff3fbcbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbafeffc
3ffbffffffff3ffffffffffffffffffffffffffffffffffffffff3f7c7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7f7dffc
3ff7ffffffff3ffffffffffffffffffffffffffffffffffffffff3efcbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfbeffc
3ffbffffffff3ffffffffffffffffffffffffffffffffffffffff35fc7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fd5ffc
3ff784ffffff3ffffffffffffffffffffffffffffffffffffffff07fcbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfe2ffc
3ffb30ffffff3ffffffffffffffffffffffffffffffffffffffff31fc7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7fc5ffc
3ff67cc3870f3ffffffffffaaaaaafffffffeaaaaabffffffffff3c7cbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbf1effc
3ffa7c9932673ffffffffff555554fffffffd555553ffffffffff3f1c7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7c7dffc
3ff67c991e673ffffffffffbffffcfffffffefffff3ffffffffff3f84bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcb1feffc
3ffa7c99c6073ffffffffff7fcffcfffffffdff3ff3ffffffffff3fe0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043fdffc
3ff67c99e27f3ffffffffffbe49fcfffffffefe1ff3ffffffffff3ff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008ffeffc
3ffb309932673ffffffffff7f03fcfffffffdfc0ff3ffffffffff3ffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffdffc
3ff784c3870f3ffffffffffbf87fcfffffffef927f3ffffffffff2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffc
3ffbffffffff3ffffffffff7fcffcfffffffdff3ff3ffffffffff555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555ffc
3ff7ffffffff3ffffffffffa0001cfffffffe800073ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffbffffffff3ffffffffff60001cfffffffd800073ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ff7ffffffff3ffffffffffbffffcfffffffefffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffbffffffff3ffffffffff7ffffcfffffffdfffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ff7ffffffff3ffffffffffa0001cfffffffe800073ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ff8000000003ffffffffff60001cfffffffd800073ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ff0000000003ffffffffffbfcffcfffffffeff3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffff7f87fcfffffffdf927f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffbf03fcfffffffefc0ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffff7e49fcfffffffdfe1ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffbfcffcfffffffeff3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffff7ffffcfffffffdfffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffbffffcfffffffefffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffff7ffffcfffffffdfffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffff800000fffffffe000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffff000000fffffffc000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffc
3ff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffc
3ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffc
3ff2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffc
3ff55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555ffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffff0ffffffffccfffffffffffffffffffffffffffffffffff0fffffe7fffff3fffffffffffffffffffffffffffffcccfe667fffffffffffffffffffffffffffffffcf9fffffffffffffffffffffffffffffffffc
3fffffffffe67fffffffcfffffffffffffffffffffffffffffffffffe67ffffe7fffff3fffffffffffffffffffffffffffffcccffe7ffffffffffffffffffffffffffffffffcf9fffffffffffffffffffffffffffffffffc
3fffffffffcfc34464cc849393ffffffffffffffffffffffffffffffcf2730c84e1c393c0000000fffffffffffffffffffffccc864249c9e00000007fffffffffffffffffffc71870e1c3930fffffffffffffffffffffffc
3fffffffffcf9933224ccc8923e0000000ffffffffffffffffffffffcf27264024c9923dffffffffffffffffffffffffffffecd32664491efffffffffffffffffffffffffffc713264c992267ffffffffffffffffffffffc
3fffffffffcf9933264ccc9933e0000001ffffffffffffffffffffffcf32664664cf933dffffffefffffffffffffffffffffe49f2664c99efffffff7fffffffffffffffffffc21323c7f93267ffffffffffffffffffffffc
3fffffffffcf9933264ccc9933e0000000ffffffffffffffffffffffcf32604e640c133dffffffffffffffffffffffffffffe4982664c99efffffffffffffffffffffffffffca9038f1c13207ffffffffffffffffffffffc
3fffffffffcf9933264ccc9933e0000001ffffffffffffffffffffffcf38e7ce64f9933dffffffeffffffffffffffffffffff3332664c99efffffff7fffffffffffffffffffc893fc7899327fd5555555ffffffffffffffc
3fffffffffe619332248c89923e0000000ffffffffffffffffffffffe678e64e64c9923dfffffffffffffffffffffffffffff3332644c91efffffffffffffffffffffffffffcd93264c992267ffffffffffffffffffffffc
3ffffffffff0c33324e4e49993e0000001fffffffffffffffffffffff0fdf0ce661c493dffffffeffffffffffffffffffffff3388724cc9efffffff7fffffffffffffffffffcd9870e1c4930fffffffffffffffffffffffc
3fffffffffffffffe7fffffff3e0000000fffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffff9effffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffc
3fffffffffffffffe7ffffff33e0000001fffffffffffffffffffffffffffffffffffffdffffffeffffffffffffffffffffffffffffff99efffffff7fffffffffffffffffffffffffffff33ffffffffffffffffffffffffc
3fffffffffffffffe7ffffff87eaaaaaaafffffffffffffffffffffffffffffffffffffd5555555ffffffffffffffffffffffffffffffc3eaaaaaaaffffffffffffffffffffffffffffff87ffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

showpage
%%EndDocument

 endTexFig
 249 1801 a Fo(Figure)13 b(3.1)249 1838 y Fy(XPVM)g(system)d(adding)g
(hosts)p 666 2025 748 2 v 665 2079 2 54 v 712 2062 a
Fs(#)22 b(configuration)d(used)i(for)g(my)g(run)p 1412
2079 V 665 2133 V 712 2116 a(sparky)p 1412 2133 V 665
2187 V 712 2170 a(azure.epm.ornl.gov)p 1412 2187 V 665
2241 V 712 2224 a(thud.cs.utk.edu)p 1412 2241 V 665 2294
V 712 2278 a(sun4)p 1412 2294 V 666 2296 748 2 v 249
2392 a Fo(Figure)13 b(3.2)249 2429 y Fy(Simple)d(host\014le)f(listing)i
(virtual)e(mac)o(hine)g(con\014guration)p eop
%%Page: 32 51
32 50 bop 249 251 a Fu(32)1375 b(Chapter)13 b(3)p 459
824 1162 2 v 458 878 2 54 v 505 861 a Fs(#)22 b(Comment)e(lines)h
(start)g(with)g(#)g(\(blank)g(lines)g(ignored\))p 1619
878 V 458 932 V 505 915 a(gstws)p 1619 932 V 458 986
V 505 969 a(ipsc)g(dx=/usr/geist/pvm3)o(/lib/)o(I860/)o(pvmd3)p
1619 986 V 458 1040 V 505 1023 a(ibm1.scri.fsu.edu)e(lo=gst)h(so=pw)p
1619 1040 V 458 1093 V 1619 1093 V 458 1147 V 505 1131
a(#)i(set)f(default)f(options)h(for)g(following)f(hosts)h(with)g(*)p
1619 1147 V 458 1201 V 505 1185 a(*)h(ep=$sun/problem1:)o(~/nl)o(a/mat)
o(hlib)p 1619 1201 V 458 1255 V 505 1239 a(sparky)p 1619
1255 V 458 1309 V 505 1293 a(#azure.epm.ornl.gov)p 1619
1309 V 458 1363 V 505 1347 a(midnight.epm.ornl.g)o(ov)p
1619 1363 V 458 1417 V 1619 1417 V 458 1471 V 505 1455
a(#)g(replace)e(default)h(options)f(with)h(new)g(values)p
1619 1471 V 458 1525 V 505 1509 a(*)h(lo=gageist)e(so=pw)g(ep=problem1)
p 1619 1525 V 458 1579 V 505 1563 a(thud.cs.utk.edu)p
1619 1579 V 458 1633 V 505 1617 a(speedy.cs.utk.edu)p
1619 1633 V 458 1687 V 1619 1687 V 458 1741 V 505 1725
a(#)i(machines)e(for)h(adding)g(later)f(are)i(specified)e(with)h(&)p
1619 1741 V 458 1795 V 505 1779 a(#)h(these)f(only)g(need)g(listing)f
(if)h(options)g(are)g(required)p 1619 1795 V 458 1849
V 505 1833 a(&sun4)65 b(ep=problem1)p 1619 1849 V 458
1903 V 505 1887 a(&castor)21 b(dx=/usr/local/b)o(in/pv)o(md3)p
1619 1903 V 458 1957 V 505 1941 a(&dasher.cs.utk.edu)d(lo=gageist)p
1619 1957 V 458 2011 V 505 1995 a(&elvis)43 b(dx=~/pvm3/lib/S)o(UN4/p)o
(vmd3)p 1619 2011 V 459 2013 1162 2 v 249 2108 a Fo(Figure)13
b(3.3)249 2145 y Fy(PVM)g(host\014le)c(illustrating)g(customizing)f
(options)p eop
%%Page: 33 52
33 51 bop 249 325 a Fp(4)25 b FD(Basic)18 b(Programming)f(T)l(ec)o
(hniques)249 561 y FA(Dev)o(eloping)e(applications)g(for)h(the)g(PVM)h
(system|in)e(a)g(general)i(sense,)g(at)f(least|follo)o(ws)e(the)249
615 y(traditional)g(paradigm)g(for)h(programming)d(distributed-memory)i
(m)o(ultipro)q(cessors)i(suc)o(h)h(as)e(the)249 669 y(nCUBE)j(or)g(the)
g(In)o(tel)g(family)d(of)i(m)o(ultipro)q(cessors.)29
b(The)18 b(basic)g(tec)o(hniques)h(are)f(similar)d(b)q(oth)249
723 y(for)j(the)i(logistical)c(asp)q(ects)21 b(of)d(programmi)o(ng)e
(and)i(for)h(algorithm)c(dev)o(elopmen)o(t.)32 b(Signi\014can)o(t)249
777 y(di\013erences)15 b(exist,)f(ho)o(w)o(ev)o(er,)f(in)g(terms)f(of)h
(\(a\))g(task)g(managemen)o(t,)e(esp)q(ecially)i(issues)h(concerning)
249 831 y(dynamic)19 b(pro)q(cess)k(creation,)f(naming,)d(and)i
(addressing;)j(\(b\))d(initialization)d(phases)k(prior)e(to)249
885 y(actual)g(computation;)i(\(c\))g(gran)o(ularit)o(y)d(c)o(hoices;)
24 b(and)d(\(d\))g(heterogeneit)o(y)m(.)39 b(In)21 b(this)g(c)o
(hapter,)249 939 y(w)o(e)f(discuss)i(the)f(programmi)o(ng)c(pro)q(cess)
22 b(for)e(PVM)g(and)g(iden)o(tify)g(factors)g(that)g(ma)o(y)f(impact)
249 993 y(functionalit)o(y)12 b(and)i(p)q(erformance.)249
1113 y FD(4.1)52 b(Common)17 b(P)o(arallel)h(Programming)f(P)o
(aradigms)249 1221 y FA(P)o(arallel)g(computing)g(using)h(a)g(system)g
(suc)o(h)h(as)f(PVM)h(ma)o(y)d(b)q(e)j(approac)o(hed)f(from)f(three)i
(fun-)249 1275 y(damen)o(tal)c(viewp)q(oin)o(ts,)h(based)h(on)f(the)h
(organization)f(of)f(the)j(computing)c(tasks.)27 b(Within)15
b(eac)o(h,)249 1329 y(di\013eren)o(t)k(w)o(orkload)d(allo)q(cation)g
(strategies)i(are)g(p)q(ossible)g(and)f(will)f(b)q(e)i(discussed)h
(later)f(in)f(this)249 1383 y(c)o(hapter.)h(The)11 b(\014rst)g(and)g
(most)e(common)e(mo)q(del)i(for)i(PVM)g(applications)e(can)i(b)q(e)g
(termed)f(\\cro)o(wd")249 1437 y(computing)j(:)19 b(a)14
b(collection)g(of)f(closely)i(related)g(pro)q(cesses,)h(t)o(ypically)d
(executing)i(the)g(same)f(co)q(de,)249 1491 y(p)q(erform)g
(computations)g(on)g(di\013eren)o(t)i(p)q(ortions)f(of)f(the)h(w)o
(orkload,)f(usually)g(in)o(v)o(olving)e(the)k(p)q(eri-)249
1545 y(o)q(dic)c(exc)o(hange)h(of)f(in)o(termediate)f(results.)19
b(This)12 b(paradigm)d(can)k(b)q(e)g(further)g(sub)q(divided)f(in)o(to)
g(t)o(w)o(o)249 1599 y(categories:)208 1674 y Ft(\017)20
b FA(The)e(master-sla)o(v)o(e)e(\(or)h(host-no)q(de\))h(mo)q(del)d(in)i
(whic)o(h)f(a)h(separate)h(\\con)o(trol")f(program)e(termed)249
1728 y(the)j(master)e(is)h(resp)q(onsible)h(for)f(pro)q(cess)i(spa)o
(wning,)d(initialization,)f(collection)i(and)g(displa)o(y)f(of)249
1782 y(results,)h(and)f(p)q(erhaps)h(timing)d(of)h(functions.)25
b(The)16 b(sla)o(v)o(e)g(programs)f(p)q(erform)g(the)i(actual)e(com-)
249 1836 y(putation)f(in)o(v)o(olv)o(ed;)e(they)j(either)g(are)g(allo)q
(cated)e(their)i(w)o(orkloads)e(b)o(y)h(the)h(master)f(\(statically)f
(or)249 1890 y(dynamically\))e(or)j(p)q(erform)f(the)i(allo)q(cations)d
(themselv)o(es.)208 1960 y Ft(\017)20 b FA(The)f(no)q(de-only)e(mo)q
(del)g(where)i(m)o(ultiple)d(instances)k(of)d(a)h(single)g(program)e
(execute,)21 b(with)d(one)249 2014 y(pro)q(cess)d(\(t)o(ypically)d(the)
h(one)h(initiated)e(man)o(ually\))e(taking)i(o)o(v)o(er)h(the)h
(noncomputational)c(resp)q(on-)249 2068 y(sibilities)j(in)g(addition)g
(to)h(con)o(tributing)f(to)h(the)h(computation)d(itself.)291
2143 y(The)e(second)i(mo)q(del)c(supp)q(orted)k(b)o(y)e(PVM)h(is)f
(termed)g(a)g(\\tree")h(computation.)k(In)c(this)f(scenario,)249
2197 y(pro)q(cesses)20 b(are)f(spa)o(wned)f(\(usually)f(dynamically)e
(as)j(the)g(computation)e(progresses\))k(in)d(a)h(tree-)249
2251 y(lik)o(e)g(manner,)h(thereb)o(y)h(establishing)f(a)f(tree-lik)o
(e,)i(paren)o(t-c)o(hild)f(relationship)f(\(as)i(opp)q(osed)f(to)249
2305 y(cro)o(wd)14 b(computations)f(where)i(a)f(star-lik)o(e)f
(relationship)g(exists\).)19 b(This)14 b(paradigm,)d(although)i(less)
249 2359 y(commonly)f(used,)k(is)g(an)f(extremely)g(natural)g(\014t)h
(to)f(applications)f(where)j(the)f(total)f(w)o(orkload)f(is)249
2413 y(not)k(kno)o(wn)g FB(a)h(priori)p FA(,)e(for)h(example,)f(in)h
(branc)o(h-and-b)q(ound)g(algorithms,)f(alpha-b)q(eta)g(searc)o(h,)249
2467 y(and)d(recursiv)o(e)h(\\divide-and-conquer")f(algorithms.)p
eop
%%Page: 34 53
34 52 bop 249 251 a Fu(34)1375 b(Chapter)13 b(4)291 507
y FA(The)h(third)g(mo)q(del,)e(whic)o(h)i(w)o(e)g(term)g(\\h)o(ybrid,")
f(can)h(b)q(e)g(though)o(t)g(of)g(as)g(a)f(com)o(bination)f(of)h(the)
249 561 y(tree)h(mo)q(del)d(and)h(cro)o(wd)g(mo)q(del.)k(Essen)o
(tially)m(,)c(this)g(paradigm)e(p)q(ossesses)15 b(an)d(arbitrary)h(spa)
o(wning)249 615 y(structure:)28 b(that)18 b(is,)f(at)h(an)o(y)f(p)q
(oin)o(t)g(during)h(application)e(execution,)j(the)f(pro)q(cess)i
(relationship)249 669 y(structure)c(ma)o(y)c(resem)o(ble)i(an)g
(arbitrary)f(and)h(c)o(hanging)f(graph.)291 723 y(W)m(e)f(note)h(that)g
(these)h(three)g(classi\014cations)e(are)h(made)f(on)g(the)h(basis)g
(of)f(pro)q(cess)j(relationships,)249 777 y(though)c(they)h(frequen)o
(tly)f(also)f(corresp)q(ond)j(to)e(comm)o(unication)d(top)q(ologies.)16
b(Nev)o(ertheless,)e(in)c(all)249 831 y(three,)15 b(it)e(is)g(p)q
(ossible)h(for)f(an)o(y)g(pro)q(cess)i(to)f(in)o(teract)g(and)f(sync)o
(hronize)i(with)e(an)o(y)g(other.)19 b(F)m(urther,)249
885 y(as)13 b(ma)o(y)d(b)q(e)j(exp)q(ected,)h(the)f(c)o(hoice)g(of)f
(mo)q(del)f(is)h(application)f(dep)q(enden)o(t)k(and)d(should)g(b)q(e)h
(selected)249 939 y(to)h(b)q(est)h(matc)o(h)e(the)h(natural)f
(structure)j(of)e(the)g(parallelized)f(program.)249 1022
y Fr(4.1.1)48 b(Cro)o(wd)16 b(Computations)249 1105 y
FA(Cro)o(wd)e(computations)f(t)o(ypically)h(in)o(v)o(olv)o(e)f(three)i
(phases.)21 b(The)15 b(\014rst)g(is)g(the)g(initialization)d(of)h(the)
249 1159 y(pro)q(cess)g(group;)e(in)f(the)h(case)h(of)e(no)q(de-only)g
(computations,)g(dissemination)e(of)i(group)h(information)249
1213 y(and)18 b(problem)f(parameters,)i(as)f(w)o(ell)f(as)h(w)o
(orkload)f(allo)q(cation,)g(is)h(t)o(ypically)f(done)i(within)e(this)
249 1267 y(phase.)37 b(The)20 b(second)i(phase)e(is)g(computation.)35
b(The)20 b(third)g(phase)h(is)e(collection)h(results)h(and)249
1321 y(displa)o(y)13 b(of)g(output;)h(during)f(this)h(phase,)g(the)h
(pro)q(cess)h(group)d(is)h(disbanded)g(or)g(terminated.)291
1375 y(The)20 b(master-sla)o(v)o(e)g(mo)q(del)e(is)j(illustrated)f(b)q
(elo)o(w,)h(using)f(the)h(w)o(ell-kno)o(wn)e(Mandelbrot)h(set)249
1429 y(computation)15 b(whic)o(h)i(is)g(represen)o(tativ)o(e)i(of)d
(the)i(class)f(of)f(problems)g(termed)h(\\em)o(barrassingly")249
1483 y(parallel.)28 b(The)19 b(computation)d(itself)h(in)o(v)o(olv)o
(es)g(applying)f(a)i(recursiv)o(e)h(function)e(to)h(a)f(collection)249
1537 y(of)i(p)q(oin)o(ts)g(in)f(the)i(complex)e(plane)h(un)o(til)f(the)
i(function)f(v)n(alues)f(either)i(reac)o(h)g(a)f(sp)q(eci\014c)i(v)n
(alue)249 1591 y(or)15 b(b)q(egin)h(to)f(div)o(erge.)22
b(Dep)q(ending)16 b(up)q(on)f(this)h(condition,)e(a)h(graphical)g
(represen)o(tation)i(of)e(eac)o(h)249 1645 y(p)q(oin)o(t)g(in)f(the)i
(plane)f(is)g(constructed.)23 b(Essen)o(tially)m(,)15
b(since)g(the)h(function)f(outcome)f(dep)q(ends)j(only)249
1699 y(on)d(the)g(starting)g(v)n(alue)f(of)g(the)h(p)q(oin)o(t)g(\(and)
f(is)h(indep)q(enden)o(t)h(of)e(other)i(p)q(oin)o(ts\),)e(the)h
(problem)f(can)249 1753 y(b)q(e)h(partitioned)f(in)o(to)f(completely)g
(indep)q(enden)o(t)i(p)q(ortions,)f(the)h(algorithm)c(applied)j(to)g
(eac)o(h,)g(and)249 1807 y(partial)d(results)i(com)o(bined)e(using)g
(simple)g(com)o(bination)e(sc)o(hemes.)18 b(Ho)o(w)o(ev)o(er,)11
b(this)g(mo)q(del)f(p)q(ermits)249 1861 y(dynamic)h(load)h(balancing,)g
(thereb)o(y)i(allo)o(wing)d(the)i(pro)q(cessing)h(elemen)o(ts)f(to)g
(share)h(the)f(w)o(orkload)249 1914 y(unev)o(enly)m(.)19
b(In)c(this)f(and)h(subsequen)o(t)h(examples)d(within)h(this)g(c)o
(hapter,)h(w)o(e)g(only)f(sho)o(w)g(a)g(sk)o(eletal)249
1968 y(form)g(of)i(the)g(algorithms,)e(and)i(also)f(tak)o(e)h(syn)o
(tactic)h(lib)q(erties)f(with)g(the)g(PVM)g(routines)h(in)e(the)249
2022 y(in)o(terest)e(of)d(clarit)o(y)m(.)16 b(The)c(con)o(trol)f
(structure)i(of)e(the)h(master-sla)o(v)o(e)e(class)i(of)f(applications)
f(is)h(sho)o(wn)249 2076 y(in)i(Figure)h(4.1.)249 2226
y Fs({Master)20 b(Mandelbrot)g(algorithm.})249 2334 y({Initial)g
(placement})249 2388 y(for)h(i)h(:=)f(0)h(to)f(NumWorkers)f(-)h(1)249
2442 y(pvm_spawn\(<worker)d(name>\))86 b({Start)21 b(up)g(worker)g(i})
249 2496 y(pvm_send\(<worker)e(tid>,999\))41 b({Send)21
b(task)g(to)g(worker)g(i})p eop
%%Page: 35 54
35 53 bop 249 251 a Fu(Basic)14 b(Programming)h(T)m(ec)o(hniques)1029
b(35)559 1066 y @beginspecial 0 @llx 0 @lly 415 @urx
180 @ury 2340 @rwi 1440 @rhi @setspecial
%%BeginDocument: fig4.1.ps
/$F2psDict 32 dict def 
$F2psDict begin
	$F2psDict /mtrx matrix put

 /DrawEllipse {
	/endangle exch def
	/startangle exch def
	/yrad exch def
	/xrad exch def
	/y exch def
	/x exch def
	/savematrix mtrx currentmatrix def
	x y translate xrad yrad scale 0 0 1 startangle endangle arc
	savematrix setmatrix
	} def newpath 0 0 0 0 0 1 DrawEllipse stroke

	end
	/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
	/$F2psEnd {$F2psEnteredState restore end} def
	%%EndProlog

$F2psBegin
1 setlinecap 1 setlinejoin
-10 68 translate
0.000000 180.000000 translate 0.900 -0.900 scale
/Times-Roman findfont 18.000 scalefont setfont
25 195 moveto 
1 -1 scale
(Mandelbrot) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 18.000 scalefont setfont
42 211 moveto 
1 -1 scale
(Tasks) gsave  0.000 rotate show grestore 1 -1 scale
1.000 setlinewidth
% Ellipse
newpath 65 201 54 32 0 360 DrawEllipse stroke
% Ellipse
newpath 397 93 18 18 0 360 DrawEllipse stroke
% Ellipse
newpath 227 193 49 49 0 360 DrawEllipse stroke
% Ellipse
newpath 435 137 18 18 0 360 DrawEllipse stroke
% Ellipse
newpath 387 242 18 18 0 360 DrawEllipse stroke
% Ellipse
newpath 454 204 18 18 0 360 DrawEllipse stroke
% Polyline
newpath 264 162 moveto 382 103 lineto  stroke
newpath 171.000 185.000 moveto 179.000 187.000 lineto 171.000 189.000 lineto stroke
% Polyline
newpath 179 187 moveto 115 187 lineto  stroke
newpath 125.000 206.000 moveto 117.000 204.000 lineto 125.000 202.000 lineto stroke
% Polyline
newpath 117 204 moveto 180 204 lineto  stroke
% Polyline
newpath 273 178 moveto 417 140 lineto  stroke
% Polyline
newpath 272 213 moveto 371 235 lineto  stroke
% Polyline
newpath 275 195 moveto 437 203 lineto  stroke
/Times-Roman findfont 20.000 scalefont setfont
201 197 moveto 
1 -1 scale
(Master) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 18.000 scalefont setfont
374 129 moveto 
1 -1 scale
(Slave) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 18.000 scalefont setfont
361 275 moveto 
1 -1 scale
(Slave) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 18.000 scalefont setfont
414 173 moveto 
1 -1 scale
(Slave) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 18.000 scalefont setfont
434 239 moveto 
1 -1 scale
(Slave) gsave  0.000 rotate show grestore 1 -1 scale
$F2psEnd
%%EndDocument
 @endspecial 249 1128 a Fo(Figure)13 b(4.1)249 1165 y
Fy(Master-sla)o(v)o(e)c(paradigm)249 1288 y Fs(endfor)249
1396 y({Receive-send})249 1450 y(while)21 b(\(WorkToDo\))249
1504 y(pvm_recv\(888\))194 b({Receive)20 b(result})249
1612 y(pvm_send\(<availabl)o(e)f(worker)h(tid>,999\))249
1666 y({Send)h(next)g(task)g(to)g(available)f(worker})249
1774 y(display)g(result)249 1828 y(endwhile)249 1936
y({Gather)g(remaining)g(results.})249 1990 y(for)h(i)h(:=)f(0)h(to)f
(NumWorkers)f(-)h(1)249 2044 y(pvm_recv\(888\))346 b({Receive)20
b(result})249 2098 y(pvm_kill\(<worker)f(tid)i(i>\))108
b({Terminate)20 b(worker)g(i})249 2152 y(display)g(result)249
2205 y(endfor)p eop
%%Page: 36 55
36 54 bop 249 251 a Fu(36)1375 b(Chapter)13 b(4)249 507
y Fs({Worker)20 b(Mandelbrot)g(algorithm.})249 615 y(while)h(\(true\))
249 669 y(pvm_recv\(999\))564 b({Receive)20 b(task})249
723 y(result)h(:=)g(MandelbrotCalcula)o(tions)o(\(task)o(\))e({Compute)
h(result})249 777 y(pvm_send\(<master)f(tid>,888\))107
b({Send)20 b(result)h(to)g(master})249 831 y(endwhile)291
1030 y FA(The)h(master-sla)o(v)o(e)f(example)f(describ)q(ed)k(ab)q(o)o
(v)o(e)e(in)o(v)o(olv)o(es)f(no)g(comm)o(unication)e(among)g(the)249
1084 y(sla)o(v)o(es.)f(Most)13 b(cro)o(wd)g(computations)f(of)h(an)o(y)
f(complexit)o(y)f(do)i(need)h(to)f(comm)o(unicate)e(among)f(the)249
1138 y(computational)k(pro)q(cesses;)19 b(w)o(e)e(illustrate)f(the)h
(structure)h(of)e(suc)o(h)h(applications)e(using)h(a)g(no)q(de-)249
1192 y(only)11 b(example)f(for)h(matrix)e(m)o(ultiply)g(using)i
(Cannon's)g(algorithm)e([2)o(])22 b(\(programming)8 b(details)j(for)249
1246 y(a)j(similar)d(algorithm)h(are)i(giv)o(en)g(in)f(another)i(c)o
(hapter\).)k(The)c(matrix-m)n(ulti)o(ply)c(example,)h(sho)o(wn)249
1299 y(pictorially)g(in)g(Figure)h(4.2)f(m)o(ultiplies)f(matrix)g
(subblo)q(c)o(ks)j(lo)q(cally)m(,)d(and)h(uses)j(ro)o(w-wise)e(m)o
(ulticast)249 1353 y(of)g(matrix)f Fs(A)i FA(subblo)q(c)o(ks)g(in)g
(conjunction)g(with)f(column-wise)g(shifts)h(of)f(matrix)f
Fs(B)i FA(subblo)q(c)o(ks.)409 2311 y @beginspecial 0
@llx 0 @lly 340 @urx 392 @ury 3060 @rwi 2160 @rhi @setspecial
%%BeginDocument: fig4.2.ps
/$F2psDict 32 dict def 
$F2psDict begin
	$F2psDict /mtrx matrix put

	end
	/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
	/$F2psEnd {$F2psEnteredState restore end} def
	%%EndProlog

$F2psBegin
1 setlinecap 1 setlinejoin
-53 33 translate
0.000000 392.000000 translate 0.900 -0.900 scale
1.000 setlinewidth
% Polyline
newpath 133 139 moveto 133 79 lineto 73 79 lineto 73 139 lineto closepath  stroke
% Polyline
newpath 93 79 moveto 93 139 lineto  stroke
% Polyline
newpath 113 79 moveto 113 139 lineto  stroke
% Polyline
newpath 73 119 moveto 133 119 lineto  stroke
% Polyline
newpath 73 99 moveto 133 99 lineto  stroke
/Times-Bold findfont 12.000 scalefont setfont
75 91 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
82 95 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
94 91 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
101 95 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
115 91 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
122 95 moveto 
1 -1 scale
(02) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
115 111 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
122 115 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
95 111 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
102 115 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
76 111 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
83 115 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
76 131 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
83 135 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
95 131 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
102 135 moveto 
1 -1 scale
(21) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
115 131 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
122 135 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 238 138 moveto 238 78 lineto 178 78 lineto 178 138 lineto closepath  stroke
% Polyline
newpath 198 78 moveto 198 138 lineto  stroke
% Polyline
newpath 218 78 moveto 218 138 lineto  stroke
% Polyline
newpath 178 118 moveto 238 118 lineto  stroke
% Polyline
newpath 178 98 moveto 238 98 lineto  stroke
/Times-Bold findfont 12.000 scalefont setfont
180 90 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
187 94 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
199 90 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
206 94 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
220 90 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
227 94 moveto 
1 -1 scale
(02) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
220 110 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
227 114 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
200 110 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
207 114 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
181 110 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
188 114 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
181 130 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
188 134 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
200 130 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
207 134 moveto 
1 -1 scale
(21) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
220 130 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
227 134 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 419 138 moveto 419 78 lineto 359 78 lineto 359 138 lineto closepath  stroke
% Polyline
newpath 379 78 moveto 379 138 lineto  stroke
% Polyline
newpath 399 78 moveto 399 138 lineto  stroke
% Polyline
newpath 359 118 moveto 419 118 lineto  stroke
% Polyline
newpath 359 98 moveto 419 98 lineto  stroke
/Times-Roman findfont 8.000 scalefont setfont
388 95 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
381 91 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
368 95 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
361 91 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
407 95 moveto 
1 -1 scale
(02) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
400 91 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
368 114 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
361 110 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
381 110 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
388 114 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
408 114 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
401 110 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
368 134 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
361 130 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
387 134 moveto 
1 -1 scale
(21) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
380 130 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
407 134 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
400 130 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 338 138 moveto 338 78 lineto 278 78 lineto 278 138 lineto closepath  stroke
% Polyline
newpath 298 78 moveto 298 138 lineto  stroke
% Polyline
newpath 318 78 moveto 318 138 lineto  stroke
% Polyline
newpath 278 118 moveto 338 118 lineto  stroke
% Polyline
newpath 278 98 moveto 338 98 lineto  stroke
/Times-Roman findfont 8.000 scalefont setfont
287 95 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
280 91 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
306 114 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
299 110 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
327 133 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
320 129 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 298 88 moveto 328 88 lineto  stroke
newpath 320.000 86.000 moveto 328.000 88.000 lineto 320.000 90.000 lineto stroke
% Polyline
newpath 319 108 moveto 345 108 lineto  stroke
newpath 337.000 106.000 moveto 345.000 108.000 lineto 337.000 110.000 lineto stroke
% Polyline
newpath 278 128 moveto 308 128 lineto  stroke
newpath 300.000 126.000 moveto 308.000 128.000 lineto 300.000 130.000 lineto stroke
% Polyline
newpath 278 108 moveto 293 108 lineto  stroke
newpath 285.000 106.000 moveto 293.000 108.000 lineto 285.000 110.000 lineto stroke
% Polyline
newpath 338 128 moveto 346 128 lineto  stroke
newpath 338.000 126.000 moveto 346.000 128.000 lineto 338.000 130.000 lineto stroke
/Times-Bold findfont 16.000 scalefont setfont
97 74 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 16.000 scalefont setfont
153 110 moveto 
1 -1 scale
(=) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 16.000 scalefont setfont
254 110 moveto 
1 -1 scale
(+) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
202 73 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
303 72 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
383 73 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 134 248 moveto 134 188 lineto 74 188 lineto 74 248 lineto closepath  stroke
% Polyline
newpath 94 188 moveto 94 248 lineto  stroke
% Polyline
newpath 114 188 moveto 114 248 lineto  stroke
% Polyline
newpath 74 228 moveto 134 228 lineto  stroke
% Polyline
newpath 74 208 moveto 134 208 lineto  stroke
/Times-Bold findfont 12.000 scalefont setfont
76 200 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
83 204 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
95 200 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
102 204 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
116 200 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
123 204 moveto 
1 -1 scale
(02) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
116 220 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
123 224 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
96 220 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
103 224 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
77 220 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
84 224 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
77 240 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
84 244 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
96 240 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
103 244 moveto 
1 -1 scale
(21) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
116 240 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
123 244 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 239 247 moveto 239 187 lineto 179 187 lineto 179 247 lineto closepath  stroke
% Polyline
newpath 199 187 moveto 199 247 lineto  stroke
% Polyline
newpath 219 187 moveto 219 247 lineto  stroke
% Polyline
newpath 179 227 moveto 239 227 lineto  stroke
% Polyline
newpath 179 207 moveto 239 207 lineto  stroke
/Times-Bold findfont 12.000 scalefont setfont
181 199 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
188 203 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
200 199 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
207 203 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
221 199 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
228 203 moveto 
1 -1 scale
(02) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
221 219 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
228 223 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
201 219 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
208 223 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
182 219 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
189 223 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
182 239 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
189 243 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
201 239 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
208 243 moveto 
1 -1 scale
(21) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
221 239 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
228 243 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 420 247 moveto 420 187 lineto 360 187 lineto 360 247 lineto closepath  stroke
% Polyline
newpath 380 187 moveto 380 247 lineto  stroke
% Polyline
newpath 400 187 moveto 400 247 lineto  stroke
% Polyline
newpath 360 227 moveto 420 227 lineto  stroke
% Polyline
newpath 360 207 moveto 420 207 lineto  stroke
/Times-Roman findfont 8.000 scalefont setfont
389 204 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
382 200 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
369 204 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
362 200 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
408 204 moveto 
1 -1 scale
(02) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
401 200 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
369 223 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
362 219 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
382 219 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
389 223 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
409 223 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
402 219 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
369 243 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
362 239 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
388 243 moveto 
1 -1 scale
(21) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
381 239 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
408 243 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
401 239 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 339 247 moveto 339 187 lineto 279 187 lineto 279 247 lineto closepath  stroke
% Polyline
newpath 299 187 moveto 299 247 lineto  stroke
% Polyline
newpath 319 187 moveto 319 247 lineto  stroke
% Polyline
newpath 279 227 moveto 339 227 lineto  stroke
% Polyline
newpath 279 207 moveto 339 207 lineto  stroke
/Times-Roman findfont 8.000 scalefont setfont
288 204 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
281 200 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
307 223 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
300 219 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
328 242 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
321 238 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
308 203 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
301 199 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
327 204 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
320 200 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
288 224 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
281 220 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
327 223 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
320 219 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
310 243 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
303 239 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
288 243 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
281 239 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
98 183 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 16.000 scalefont setfont
154 219 moveto 
1 -1 scale
(=) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 16.000 scalefont setfont
255 219 moveto 
1 -1 scale
(+) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
203 182 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
384 182 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
304 181 moveto 
1 -1 scale
(T) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 133 353 moveto 133 293 lineto 73 293 lineto 73 353 lineto closepath  stroke
% Polyline
newpath 93 293 moveto 93 353 lineto  stroke
% Polyline
newpath 113 293 moveto 113 353 lineto  stroke
% Polyline
newpath 73 333 moveto 133 333 lineto  stroke
% Polyline
newpath 73 313 moveto 133 313 lineto  stroke
/Times-Bold findfont 12.000 scalefont setfont
75 305 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
82 309 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
94 305 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
101 309 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
115 305 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
122 309 moveto 
1 -1 scale
(02) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
115 325 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
122 329 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
95 325 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
102 329 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
76 325 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
83 329 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
76 345 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
83 349 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
95 345 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
102 349 moveto 
1 -1 scale
(21) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
115 345 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
122 349 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 238 352 moveto 238 292 lineto 178 292 lineto 178 352 lineto closepath  stroke
% Polyline
newpath 198 292 moveto 198 352 lineto  stroke
% Polyline
newpath 218 292 moveto 218 352 lineto  stroke
% Polyline
newpath 178 332 moveto 238 332 lineto  stroke
% Polyline
newpath 178 312 moveto 238 312 lineto  stroke
/Times-Bold findfont 12.000 scalefont setfont
180 304 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
187 308 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
199 304 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
206 308 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
220 304 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
227 308 moveto 
1 -1 scale
(02) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
220 324 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
227 328 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
200 324 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
207 328 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
181 324 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
188 328 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
181 344 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
188 348 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
200 344 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
207 348 moveto 
1 -1 scale
(21) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
220 344 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
227 348 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 419 352 moveto 419 292 lineto 359 292 lineto 359 352 lineto closepath  stroke
% Polyline
newpath 379 292 moveto 379 352 lineto  stroke
% Polyline
newpath 399 292 moveto 399 352 lineto  stroke
% Polyline
newpath 359 332 moveto 419 332 lineto  stroke
% Polyline
newpath 359 312 moveto 419 312 lineto  stroke
/Times-Roman findfont 8.000 scalefont setfont
388 309 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
381 305 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
368 309 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
361 305 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
407 309 moveto 
1 -1 scale
(02) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
400 305 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
368 328 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
361 324 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
381 324 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
388 328 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
408 328 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
401 324 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
368 348 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
361 344 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
387 348 moveto 
1 -1 scale
(21) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
380 344 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
407 348 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
400 344 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 372 302 moveto 372 288 lineto  stroke
newpath 370.000 296.000 moveto 372.000 288.000 lineto 374.000 296.000 lineto stroke
% Polyline
newpath 372 323 moveto 372 309 lineto  stroke
newpath 370.000 317.000 moveto 372.000 309.000 lineto 374.000 317.000 lineto stroke
% Polyline
newpath 373 341 moveto 373 327 lineto  stroke
newpath 371.000 335.000 moveto 373.000 327.000 lineto 375.000 335.000 lineto stroke
% Polyline
newpath 392 342 moveto 392 328 lineto  stroke
newpath 390.000 336.000 moveto 392.000 328.000 lineto 394.000 336.000 lineto stroke
% Polyline
newpath 392 322 moveto 392 308 lineto  stroke
newpath 390.000 316.000 moveto 392.000 308.000 lineto 394.000 316.000 lineto stroke
% Polyline
newpath 393 303 moveto 393 289 lineto  stroke
newpath 391.000 297.000 moveto 393.000 289.000 lineto 395.000 297.000 lineto stroke
% Polyline
newpath 411 302 moveto 411 288 lineto  stroke
newpath 409.000 296.000 moveto 411.000 288.000 lineto 413.000 296.000 lineto stroke
% Polyline
newpath 413 322 moveto 413 308 lineto  stroke
newpath 411.000 316.000 moveto 413.000 308.000 lineto 415.000 316.000 lineto stroke
% Polyline
newpath 413 341 moveto 413 327 lineto  stroke
newpath 411.000 335.000 moveto 413.000 327.000 lineto 415.000 335.000 lineto stroke
% Polyline
newpath 374 364 moveto 374 350 lineto  stroke
newpath 372.000 358.000 moveto 374.000 350.000 lineto 376.000 358.000 lineto stroke
% Polyline
newpath 392 364 moveto 392 350 lineto  stroke
newpath 390.000 358.000 moveto 392.000 350.000 lineto 394.000 358.000 lineto stroke
% Polyline
newpath 413 363 moveto 413 349 lineto  stroke
newpath 411.000 357.000 moveto 413.000 349.000 lineto 415.000 357.000 lineto stroke
% Polyline
newpath 338 352 moveto 338 292 lineto 278 292 lineto 278 352 lineto closepath  stroke
% Polyline
newpath 298 292 moveto 298 352 lineto  stroke
% Polyline
newpath 318 292 moveto 318 352 lineto  stroke
% Polyline
newpath 278 332 moveto 338 332 lineto  stroke
% Polyline
newpath 278 312 moveto 338 312 lineto  stroke
/Times-Roman findfont 8.000 scalefont setfont
287 310 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
280 306 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
306 310 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
299 306 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
327 310 moveto 
1 -1 scale
(02) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
320 306 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
287 329 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
280 325 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
306 329 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
299 325 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
327 329 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
320 325 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
287 348 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
280 344 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
307 348 moveto 
1 -1 scale
(21) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
300 344 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
327 348 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
320 344 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
97 288 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 16.000 scalefont setfont
153 324 moveto 
1 -1 scale
(=) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 16.000 scalefont setfont
254 324 moveto 
1 -1 scale
(+) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
202 287 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
303 286 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
383 287 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 133 456 moveto 133 396 lineto 73 396 lineto 73 456 lineto closepath  stroke
% Polyline
newpath 93 396 moveto 93 456 lineto  stroke
% Polyline
newpath 113 396 moveto 113 456 lineto  stroke
% Polyline
newpath 73 436 moveto 133 436 lineto  stroke
% Polyline
newpath 73 416 moveto 133 416 lineto  stroke
/Times-Bold findfont 12.000 scalefont setfont
75 408 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
82 412 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
94 408 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
101 412 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
115 408 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
122 412 moveto 
1 -1 scale
(02) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
115 428 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
122 432 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
95 428 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
102 432 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
76 428 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
83 432 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
76 448 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
83 452 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
95 448 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
102 452 moveto 
1 -1 scale
(21) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
115 448 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
122 452 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 238 455 moveto 238 395 lineto 178 395 lineto 178 455 lineto closepath  stroke
% Polyline
newpath 198 395 moveto 198 455 lineto  stroke
% Polyline
newpath 218 395 moveto 218 455 lineto  stroke
% Polyline
newpath 178 435 moveto 238 435 lineto  stroke
% Polyline
newpath 178 415 moveto 238 415 lineto  stroke
/Times-Bold findfont 12.000 scalefont setfont
180 407 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
187 411 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
199 407 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
206 411 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
220 407 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
227 411 moveto 
1 -1 scale
(02) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
220 427 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
227 431 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
200 427 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
207 431 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
181 427 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
188 431 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
181 447 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
188 451 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
200 447 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
207 451 moveto 
1 -1 scale
(21) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
220 447 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
227 451 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 419 455 moveto 419 395 lineto 359 395 lineto 359 455 lineto closepath  stroke
% Polyline
newpath 379 395 moveto 379 455 lineto  stroke
% Polyline
newpath 399 395 moveto 399 455 lineto  stroke
% Polyline
newpath 359 435 moveto 419 435 lineto  stroke
% Polyline
newpath 359 415 moveto 419 415 lineto  stroke
/Times-Roman findfont 8.000 scalefont setfont
368 411 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
361 407 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
381 407 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
388 411 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
408 411 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
401 407 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
368 431 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
361 427 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
387 431 moveto 
1 -1 scale
(21) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
380 427 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
407 431 moveto 
1 -1 scale
(22) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
400 427 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
388 451 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
381 447 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
368 451 moveto 
1 -1 scale
(00) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
361 447 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
407 451 moveto 
1 -1 scale
(02) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
400 447 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 338 455 moveto 338 395 lineto 278 395 lineto 278 455 lineto closepath  stroke
% Polyline
newpath 298 395 moveto 298 455 lineto  stroke
% Polyline
newpath 318 395 moveto 318 455 lineto  stroke
% Polyline
newpath 278 435 moveto 338 435 lineto  stroke
% Polyline
newpath 278 415 moveto 338 415 lineto  stroke
/Times-Roman findfont 8.000 scalefont setfont
306 413 moveto 
1 -1 scale
(01) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
299 409 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
327 432 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
320 428 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 8.000 scalefont setfont
287 451 moveto 
1 -1 scale
(20) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 12.000 scalefont setfont
280 447 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 299 445 moveto 329 445 lineto  stroke
newpath 321.000 443.000 moveto 329.000 445.000 lineto 321.000 447.000 lineto stroke
% Polyline
newpath 278 424 moveto 308 424 lineto  stroke
newpath 300.000 422.000 moveto 308.000 424.000 lineto 300.000 426.000 lineto stroke
% Polyline
newpath 338 424 moveto 346 424 lineto  stroke
newpath 338.000 422.000 moveto 346.000 424.000 lineto 338.000 426.000 lineto stroke
% Polyline
newpath 318 404 moveto 344 404 lineto  stroke
newpath 336.000 402.000 moveto 344.000 404.000 lineto 336.000 406.000 lineto stroke
% Polyline
newpath 278 404 moveto 293 404 lineto  stroke
newpath 285.000 402.000 moveto 293.000 404.000 lineto 285.000 406.000 lineto stroke
/Times-Bold findfont 16.000 scalefont setfont
97 391 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 16.000 scalefont setfont
153 427 moveto 
1 -1 scale
(=) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 16.000 scalefont setfont
254 427 moveto 
1 -1 scale
(+) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
202 390 moveto 
1 -1 scale
(C) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
303 389 moveto 
1 -1 scale
(A) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Bold findfont 16.000 scalefont setfont
383 390 moveto 
1 -1 scale
(B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 12.000 scalefont setfont
207 155 moveto 
1 -1 scale
(Step 1: First "pipe") gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 12.000 scalefont setfont
145 263 moveto 
1 -1 scale
(Step 2: Multiply temp matrix and matrix B) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 12.000 scalefont setfont
209 368 moveto 
1 -1 scale
(Step 3: First "roll") gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 12.000 scalefont setfont
201 472 moveto 
1 -1 scale
(Step 4: Second "pipe") gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 14.000 scalefont setfont
247 50 moveto 
1 -1 scale
(First 4 Steps of Pipe-Multiply-Roll on a 3x3 Mesh-Connected Machine)dup stringwidth pop 2 div neg 0 rmoveto  gsave  0.000 rotate show grestore 1 -1 scale
$F2psEnd
%%EndDocument
 @endspecial 249 2373 a Fo(Figure)f(4.2)249 2411 y Fy(General)d(cro)o
(wd)h(computati)o(on)p eop
%%Page: 37 56
37 55 bop 249 251 a Fu(Basic)14 b(Programming)h(T)m(ec)o(hniques)1029
b(37)249 561 y Fs({Matrix)20 b(Multiplication)f(Using)i
(Pipe-Multiply-Roll)d(Algorithm})249 669 y({Processor)i(0)h(starts)g
(up)g(other)g(processes})249 723 y(if)g(\(<my)g(processor)f(number>)h
(=)g(0\))h(then)336 777 y(for)f(i)h(:=)f(1)h(to)f(MeshDimension*MeshD)o
(imens)o(ion)423 831 y(pvm_spawn\(<componen)o(t)e(name>,)i(.)g(.\))336
885 y(endfor)249 939 y(endif)249 1047 y(forall)g(processors)e(Pij,)i(0)
h(<=)f(i,j)g(<)h(MeshDimension)336 1101 y(for)f(k)h(:=)f(0)h(to)f
(MeshDimension-1)423 1155 y({Pipe.})423 1209 y(if)h(myrow)f(=)g
(\(mycolumn+k\))e(mod)j(MeshDimension)511 1263 y({Send)e(A)i(to)f(all)g
(Pxy,)g(x)h(=)g(myrow,)e(y)i(<>)f(mycolumn})511 1317
y(pvm_mcast\(\(Pxy,)d(x)k(=)f(myrow,)g(y)h(<>)f(mycolumn\),999\))423
1371 y(else)511 1425 y(pvm_recv\(999\))62 b({Receive)20
b(A})423 1479 y(endif)423 1587 y({Multiply.)42 b(Running)20
b(totals)h(maintained)f(in)h(C.})423 1641 y(Multiply\(A,B,C\))423
1748 y({Roll.})423 1802 y({Send)g(B)h(to)f(Pxy,)g(x)h(=)f(myrow-1,)f(y)
i(=)g(mycolumn})423 1856 y(pvm_send\(\(Pxy,)d(x)j(=)f(myrow-1,)g(y)g(=)
h(mycolumn\),888\))423 1910 y(pvm_recv\(888\))150 b({Receive)20
b(B})336 1964 y(endfor)249 2018 y(endfor)249 2155 y Fr(4.1.2)48
b(T)l(ree)15 b(Computations)249 2238 y FA(As)c(men)o(tioned)e(earlier,)
h(tree)i(computations)c(t)o(ypically)h(exhibit)h(a)g(tree-lik)o(e)g
(pro)q(cess)i(con)o(trol)e(struc-)249 2292 y(ture)k(whic)o(h)f(also)f
(conforms)g(to)h(the)g(comm)o(unication)d(pattern)k(in)e(man)o(y)f
(instances.)19 b(T)m(o)12 b(illustrate)249 2346 y(this)j(mo)q(del,)e(w)
o(e)i(consider)h(a)f(parallel)e(sorting)i(algorithm)d(that)j(w)o(orks)g
(as)g(follo)o(ws.)20 b(One)15 b(pro)q(cess)249 2400 y(\(the)k(man)o
(ually)d(started)k(pro)q(cess)g(in)e(PVM\))h(p)q(ossesses)i(\(inputs)e
(or)g(generates\))h(the)f(list)f(to)g(b)q(e)249 2454
y(sorted.)24 b(It)15 b(then)i(spa)o(wns)f(a)f(second)h(pro)q(cess)i
(and)d(sends)i(it)e(half)f(the)i(list.)23 b(A)o(t)15
b(this)h(p)q(oin)o(t,)f(there)249 2508 y(are)i(t)o(w)o(o)f(pro)q
(cesses)j(eac)o(h)e(of)e(whic)o(h)i(spa)o(wns)f(a)g(pro)q(cess)j(and)d
(sends)h(them)f(one-half)f(of)h(their)h(al-)p eop
%%Page: 38 57
38 56 bop 249 251 a Fu(38)1375 b(Chapter)13 b(4)249 507
y FA(ready)h(halv)o(ed)f(lists.)k(This)d(con)o(tin)o(ues)f(un)o(til)g
(a)g(tree)h(of)f(appropriate)h(depth)g(is)f(constructed.)20
b(Eac)o(h)249 561 y(pro)q(cess)15 b(then)e(indep)q(enden)o(tly)h(sorts)
g(its)f(p)q(ortion)f(of)h(the)g(list,)f(and)h(a)g(merge)f(phase)i
(follo)o(ws)d(where)249 615 y(sorted)16 b(sublists)g(are)f(transmitted)
f(up)o(w)o(ards)i(along)d(the)j(tree)g(edges,)g(with)f(in)o(termediate)
f(merges)249 669 y(b)q(eing)i(done)g(at)f(eac)o(h)h(no)q(de.)24
b(This)16 b(algorithm)d(is)i(illustrativ)o(e)g(of)g(a)g(tree)i
(computation)d(in)h(whic)o(h)249 723 y(the)j(w)o(orkload)e(is)g(kno)o
(wn)h(in)g(adv)n(ance;)h(a)f(diagram)d(depicting)j(the)h(pro)q(cess)h
(is)e(giv)o(en)f(in)h(Figure)249 777 y(4.3;)12 b(an)i(algorithmic)d
(outline)j(is)f(giv)o(en)h(b)q(elo)o(w.)296 2035 y @beginspecial
50 @llx 0 @lly 626 @urx 467 @ury 3600 @rwi 2880 @rhi
@setspecial
%%BeginDocument: fig4.3.ps
/$F2psDict 32 dict def 
$F2psDict begin
	$F2psDict /mtrx matrix put

 /DrawEllipse {
	/endangle exch def
	/startangle exch def
	/yrad exch def
	/xrad exch def
	/y exch def
	/x exch def
	/savematrix mtrx currentmatrix def
	x y translate xrad yrad scale 0 0 1 startangle endangle arc
	savematrix setmatrix
	} def newpath 0 0 0 0 0 1 DrawEllipse stroke

	end
	/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
	/$F2psEnd {$F2psEnteredState restore end} def
	%%EndProlog

$F2psBegin
1 setlinecap 1 setlinejoin
-7 28 translate
0.000000 467.000000 translate 0.900 -0.900 scale
1.000 setlinewidth
% Polyline
newpath 162 183 moveto 162 169 lineto 147 169 lineto 147 183 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
152 180 moveto 
1 -1 scale
(3) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 177 183 moveto 177 169 lineto 162 169 lineto 162 183 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
167 180 moveto 
1 -1 scale
(0) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 192 183 moveto 192 169 lineto 177 169 lineto 177 183 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
182 180 moveto 
1 -1 scale
(1) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 237 183 moveto 237 169 lineto 222 169 lineto 222 183 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
227 180 moveto 
1 -1 scale
(6) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 252 183 moveto 252 169 lineto 237 169 lineto 237 183 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
242 180 moveto 
1 -1 scale
(5) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 222 183 moveto 222 169 lineto 207 169 lineto 207 183 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
212 180 moveto 
1 -1 scale
(7) gsave  0.000 rotate show grestore 1 -1 scale
3.000 setlinewidth
% Polyline
newpath 207 183 moveto 207 169 lineto 192 169 lineto 192 183 lineto closepath  stroke
/Times-Roman findfont 14.000 scalefont setfont
197 180 moveto 
1 -1 scale
(4) gsave  0.000 rotate show grestore 1 -1 scale
1.000 setlinewidth
% Polyline
newpath 147 183 moveto 147 169 lineto 132 169 lineto 132 183 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
137 180 moveto 
1 -1 scale
(2) gsave  0.000 rotate show grestore 1 -1 scale
% Ellipse
newpath 362 184 18 18 0 360 DrawEllipse stroke
/Times-Roman findfont 14.000 scalefont setfont
359 189 moveto 
1 -1 scale
(1) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 162 222 moveto 162 208 lineto 147 208 lineto 147 222 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
152 219 moveto 
1 -1 scale
(3) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 177 222 moveto 177 208 lineto 162 208 lineto 162 222 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
167 219 moveto 
1 -1 scale
(0) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 192 222 moveto 192 208 lineto 177 208 lineto 177 222 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
182 219 moveto 
1 -1 scale
(1) gsave  0.000 rotate show grestore 1 -1 scale
3.000 setlinewidth
% Polyline
newpath 207 222 moveto 207 208 lineto 192 208 lineto 192 222 lineto closepath  stroke
/Times-Roman findfont 14.000 scalefont setfont
197 219 moveto 
1 -1 scale
(4) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 222 222 moveto 222 208 lineto 207 208 lineto 207 222 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
212 219 moveto 
1 -1 scale
(5) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 237 222 moveto 237 208 lineto 222 208 lineto 222 222 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
227 219 moveto 
1 -1 scale
(6) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 252 222 moveto 252 208 lineto 237 208 lineto 237 222 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
242 219 moveto 
1 -1 scale
(7) gsave  0.000 rotate show grestore 1 -1 scale
1.000 setlinewidth
% Polyline
newpath 147 222 moveto 147 208 lineto 132 208 lineto 132 222 lineto closepath  stroke
/Times-Roman findfont 14.000 scalefont setfont
269 223 moveto 
1 -1 scale
(Stage 3) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 12.000 scalefont setfont
137 219 moveto 
1 -1 scale
(2) gsave  0.000 rotate show grestore 1 -1 scale
% Ellipse
newpath 238 281 18 18 0 360 DrawEllipse stroke
/Times-Roman findfont 14.000 scalefont setfont
235 286 moveto 
1 -1 scale
(3) gsave  0.000 rotate show grestore 1 -1 scale
3.000 setlinewidth
% Polyline
newpath 96 284 moveto 96 270 lineto 81 270 lineto 81 284 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
86 281 moveto 
1 -1 scale
(0) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 111 284 moveto 111 270 lineto 96 270 lineto 96 284 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
101 281 moveto 
1 -1 scale
(1) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 127 284 moveto 127 270 lineto 112 270 lineto 112 284 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
117 281 moveto 
1 -1 scale
(2) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 142 284 moveto 142 270 lineto 127 270 lineto 127 284 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
132 281 moveto 
1 -1 scale
(3) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 14.000 scalefont setfont
160 285 moveto 
1 -1 scale
(Stage 3) gsave  0.000 rotate show grestore 1 -1 scale
1.000 setlinewidth
% Ellipse
newpath 351 352 18 18 0 360 DrawEllipse stroke
/Times-Roman findfont 14.000 scalefont setfont
348 357 moveto 
1 -1 scale
(1) gsave  0.000 rotate show grestore 1 -1 scale
3.000 setlinewidth
% Polyline
newpath 209 359 moveto 209 345 lineto 194 345 lineto 194 359 lineto closepath  stroke
/Times-Roman findfont 14.000 scalefont setfont
199 356 moveto 
1 -1 scale
(4) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 224 359 moveto 224 345 lineto 209 345 lineto 209 359 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
214 356 moveto 
1 -1 scale
(5) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 239 359 moveto 239 345 lineto 224 345 lineto 224 359 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
229 356 moveto 
1 -1 scale
(6) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 254 359 moveto 254 345 lineto 239 345 lineto 239 359 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
244 356 moveto 
1 -1 scale
(7) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 194 359 moveto 194 345 lineto 179 345 lineto 179 359 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
184 356 moveto 
1 -1 scale
(3) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 179 359 moveto 179 345 lineto 164 345 lineto 164 359 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
169 356 moveto 
1 -1 scale
(2) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 164 359 moveto 164 345 lineto 149 345 lineto 149 359 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
154 356 moveto 
1 -1 scale
(1) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 149 359 moveto 149 345 lineto 134 345 lineto 134 359 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
139 356 moveto 
1 -1 scale
(0) gsave  0.000 rotate show grestore 1 -1 scale
1.000 setlinewidth
% Polyline
newpath 465 45 moveto 465 31 lineto 450 31 lineto 450 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
451 43 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 450 45 moveto 450 31 lineto 435 31 lineto 435 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
437 42 moveto 
1 -1 scale
(13) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 435 45 moveto 435 31 lineto 420 31 lineto 420 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
422 42 moveto 
1 -1 scale
(14) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 420 45 moveto 420 31 lineto 405 31 lineto 405 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
407 42 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 405 45 moveto 405 31 lineto 390 31 lineto 390 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
392 42 moveto 
1 -1 scale
(15) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 390 45 moveto 390 31 lineto 375 31 lineto 375 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
380 42 moveto 
1 -1 scale
(9) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 375 45 moveto 375 31 lineto 360 31 lineto 360 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
362 42 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 330 45 moveto 330 31 lineto 315 31 lineto 315 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
320 42 moveto 
1 -1 scale
(0) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 315 45 moveto 315 31 lineto 300 31 lineto 300 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
305 42 moveto 
1 -1 scale
(7) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 300 45 moveto 300 31 lineto 285 31 lineto 285 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
290 42 moveto 
1 -1 scale
(1) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 285 45 moveto 285 31 lineto 270 31 lineto 270 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
275 42 moveto 
1 -1 scale
(4) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 270 45 moveto 270 31 lineto 255 31 lineto 255 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
260 42 moveto 
1 -1 scale
(6) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 255 45 moveto 255 31 lineto 240 31 lineto 240 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
245 42 moveto 
1 -1 scale
(3) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 345 45 moveto 345 31 lineto 330 31 lineto 330 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
335 42 moveto 
1 -1 scale
(2) gsave  0.000 rotate show grestore 1 -1 scale
3.000 setlinewidth
% Polyline
newpath 360 45 moveto 360 31 lineto 345 31 lineto 345 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
350 42 moveto 
1 -1 scale
(8) gsave  0.000 rotate show grestore 1 -1 scale
1.000 setlinewidth
% Polyline
newpath 240 45 moveto 240 31 lineto 225 31 lineto 225 45 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
229 42 moveto 
1 -1 scale
(5) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 330 79 moveto 330 65 lineto 315 65 lineto 315 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
320 76 moveto 
1 -1 scale
(0) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 315 79 moveto 315 65 lineto 300 65 lineto 300 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
305 76 moveto 
1 -1 scale
(7) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 300 79 moveto 300 65 lineto 285 65 lineto 285 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
290 76 moveto 
1 -1 scale
(1) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 285 79 moveto 285 65 lineto 270 65 lineto 270 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
275 76 moveto 
1 -1 scale
(4) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 270 79 moveto 270 65 lineto 255 65 lineto 255 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
260 76 moveto 
1 -1 scale
(6) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 255 79 moveto 255 65 lineto 240 65 lineto 240 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
245 76 moveto 
1 -1 scale
(3) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 345 79 moveto 345 65 lineto 330 65 lineto 330 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
335 76 moveto 
1 -1 scale
(2) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 375 79 moveto 375 65 lineto 360 65 lineto 360 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
362 76 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 390 79 moveto 390 65 lineto 375 65 lineto 375 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
380 76 moveto 
1 -1 scale
(9) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 405 79 moveto 405 65 lineto 390 65 lineto 390 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
392 76 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 435 79 moveto 435 65 lineto 420 65 lineto 420 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
422 76 moveto 
1 -1 scale
(15) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 450 79 moveto 450 65 lineto 435 65 lineto 435 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
437 76 moveto 
1 -1 scale
(13) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 465 79 moveto 465 65 lineto 450 65 lineto 450 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
451 77 moveto 
1 -1 scale
(14) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 240 79 moveto 240 65 lineto 225 65 lineto 225 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
229 76 moveto 
1 -1 scale
(5) gsave  0.000 rotate show grestore 1 -1 scale
3.000 setlinewidth
% Polyline
newpath 360 79 moveto 360 65 lineto 345 65 lineto 345 79 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
350 76 moveto 
1 -1 scale
(8) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 420 79 moveto 405 79 lineto 405 65 lineto 420 65 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
407 76 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
1.000 setlinewidth
% Ellipse
newpath 580 57 18 18 0 360 DrawEllipse stroke
/Times-Roman findfont 14.000 scalefont setfont
577 62 moveto 
1 -1 scale
(0) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 375 116 moveto 375 102 lineto 360 102 lineto 360 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
362 113 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 390 116 moveto 390 102 lineto 375 102 lineto 375 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
380 113 moveto 
1 -1 scale
(9) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 405 116 moveto 405 102 lineto 390 102 lineto 390 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
392 113 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
3.000 setlinewidth
% Polyline
newpath 360 116 moveto 360 102 lineto 345 102 lineto 345 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
350 113 moveto 
1 -1 scale
(8) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 420 116 moveto 405 116 lineto 405 102 lineto 420 102 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
407 113 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 435 116 moveto 420 116 lineto 420 102 lineto 435 102 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
422 113 moveto 
1 -1 scale
(13) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 450 116 moveto 450 102 lineto 435 102 lineto 435 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
437 113 moveto 
1 -1 scale
(14) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 465 116 moveto 465 102 lineto 450 102 lineto 450 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
451 114 moveto 
1 -1 scale
(15) gsave  0.000 rotate show grestore 1 -1 scale
1.000 setlinewidth
% Polyline
newpath 330 116 moveto 330 102 lineto 315 102 lineto 315 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
320 113 moveto 
1 -1 scale
(0) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 315 116 moveto 315 102 lineto 300 102 lineto 300 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
305 113 moveto 
1 -1 scale
(7) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 300 116 moveto 300 102 lineto 285 102 lineto 285 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
290 113 moveto 
1 -1 scale
(1) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 285 116 moveto 285 102 lineto 270 102 lineto 270 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
275 113 moveto 
1 -1 scale
(4) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 270 116 moveto 270 102 lineto 255 102 lineto 255 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
260 113 moveto 
1 -1 scale
(6) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 255 116 moveto 255 102 lineto 240 102 lineto 240 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
245 113 moveto 
1 -1 scale
(3) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 345 116 moveto 345 102 lineto 330 102 lineto 330 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
335 113 moveto 
1 -1 scale
(2) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 240 116 moveto 240 102 lineto 225 102 lineto 225 116 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
229 113 moveto 
1 -1 scale
(5) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 14.000 scalefont setfont
483 117 moveto 
1 -1 scale
(Stage 3) gsave  0.000 rotate show grestore 1 -1 scale
% Ellipse
newpath 564 439 18 18 0 360 DrawEllipse stroke
/Times-Roman findfont 14.000 scalefont setfont
561 444 moveto 
1 -1 scale
(0) gsave  0.000 rotate show grestore 1 -1 scale
3.000 setlinewidth
% Polyline
newpath 565 290 moveto 565 276 lineto 550 276 lineto 550 290 lineto closepath  stroke
/Times-Roman findfont 14.000 scalefont setfont
554 288 moveto 
1 -1 scale
(9) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 596 290 moveto 596 276 lineto 581 276 lineto 581 290 lineto closepath  stroke
/Times-Roman findfont 14.000 scalefont setfont
582 288 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 580 290 moveto 580 276 lineto 565 276 lineto 565 290 lineto closepath  stroke
/Times-Roman findfont 14.000 scalefont setfont
566 288 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
1.000 setlinewidth
% Ellipse
newpath 685 282 18 18 0 360 DrawEllipse stroke
/Times-Roman findfont 14.000 scalefont setfont
682 287 moveto 
1 -1 scale
(2) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 14.000 scalefont setfont
616 290 moveto 
1 -1 scale
(Stage 3) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 333 442 moveto 333 428 lineto 318 428 lineto 318 442 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
323 439 moveto 
1 -1 scale
(0) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 318 442 moveto 318 428 lineto 303 428 lineto 303 442 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
308 439 moveto 
1 -1 scale
(7) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 303 442 moveto 303 428 lineto 288 428 lineto 288 442 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
293 439 moveto 
1 -1 scale
(1) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 288 442 moveto 288 428 lineto 273 428 lineto 273 442 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
278 439 moveto 
1 -1 scale
(4) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 273 442 moveto 273 428 lineto 258 428 lineto 258 442 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
263 439 moveto 
1 -1 scale
(6) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 258 442 moveto 258 428 lineto 243 428 lineto 243 442 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
248 439 moveto 
1 -1 scale
(3) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 348 442 moveto 348 428 lineto 333 428 lineto 333 442 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
338 439 moveto 
1 -1 scale
(2) gsave  0.000 rotate show grestore 1 -1 scale
3.000 setlinewidth
% Polyline
newpath 438 442 moveto 423 442 lineto 423 428 lineto 438 428 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
425 439 moveto 
1 -1 scale
(13) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 453 442 moveto 453 428 lineto 438 428 lineto 438 442 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
440 439 moveto 
1 -1 scale
(14) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 468 442 moveto 468 428 lineto 453 428 lineto 453 442 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
454 440 moveto 
1 -1 scale
(15) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 305 496 moveto 305 482 lineto 290 482 lineto 290 496 lineto closepath  stroke
/Times-Roman findfont 14.000 scalefont setfont
295 493 moveto 
1 -1 scale
(4) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 320 496 moveto 320 482 lineto 305 482 lineto 305 496 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
310 493 moveto 
1 -1 scale
(5) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 335 496 moveto 335 482 lineto 320 482 lineto 320 496 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
325 493 moveto 
1 -1 scale
(6) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 350 496 moveto 350 482 lineto 335 482 lineto 335 496 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
340 493 moveto 
1 -1 scale
(7) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 290 496 moveto 290 482 lineto 275 482 lineto 275 496 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
280 493 moveto 
1 -1 scale
(3) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 275 496 moveto 275 482 lineto 260 482 lineto 260 496 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
265 493 moveto 
1 -1 scale
(2) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 260 496 moveto 260 482 lineto 245 482 lineto 245 496 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
250 493 moveto 
1 -1 scale
(1) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 245 496 moveto 245 482 lineto 230 482 lineto 230 496 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
235 493 moveto 
1 -1 scale
(0) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 442 496 moveto 427 496 lineto 427 482 lineto 442 482 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
429 493 moveto 
1 -1 scale
(13) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 457 496 moveto 457 482 lineto 442 482 lineto 442 496 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
444 493 moveto 
1 -1 scale
(14) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 472 496 moveto 472 482 lineto 457 482 lineto 457 496 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
458 494 moveto 
1 -1 scale
(15) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 393 442 moveto 393 428 lineto 378 428 lineto 378 442 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
380 439 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 408 442 moveto 408 428 lineto 393 428 lineto 393 442 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
395 439 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 382 496 moveto 382 482 lineto 367 482 lineto 367 496 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
372 493 moveto 
1 -1 scale
(9) gsave  0.000 rotate show grestore 1 -1 scale
% Polyline
newpath 397 496 moveto 397 482 lineto 382 482 lineto 382 496 lineto closepath  stroke
/Times-Roman findfont 12.000 scalefont setfont
384 493 moveto 
1 -1 scale
(10) gsave  0.000 rotate show grestore 1 -1 scale
2.000 setlinewidth
% Polyline
newpath 55 43 moveto 55 486 lineto  stroke
newpath 59.000 470.000 moveto 55.000 486.000 lineto 51.000 470.000 lineto stroke
1.000 setlinewidth
% Polyline
newpath 285 46 moveto 285 53 lineto 198 59 lineto 198 168 lineto  stroke
newpath 200.000 160.000 moveto 198.000 168.000 lineto 196.000 160.000 lineto stroke
% Polyline
newpath 162 183 moveto 162 192 lineto 111 200 lineto 111 268 lineto  stroke
newpath 113.000 260.000 moveto 111.000 268.000 lineto 109.000 260.000 lineto stroke
% Polyline
newpath 381 80 moveto 381 89 lineto 571 100 lineto 571 274 lineto  stroke
newpath 573.000 266.000 moveto 571.000 274.000 lineto 569.000 266.000 lineto stroke
3.000 setlinewidth
% Polyline
newpath 193 333 moveto 193 373 lineto  stroke
1.000 setlinewidth
% Polyline
newpath 110 284 moveto 110 305 lineto 163 326 lineto 163 343 lineto  stroke
newpath 165.000 335.000 moveto 163.000 343.000 lineto 161.000 335.000 lineto stroke
% Polyline
newpath 572 290 moveto 572 316 lineto 385 387 lineto 385 426 lineto  stroke
newpath 387.000 418.000 moveto 385.000 426.000 lineto 383.000 418.000 lineto stroke
% Polyline
newpath 192 375 moveto 192 449 lineto 290 463 lineto 289 481 lineto  stroke
newpath 291.441 473.123 moveto 289.000 481.000 lineto 287.447 472.901 lineto stroke
3.000 setlinewidth
% Polyline
newpath 350 469 moveto 350 509 lineto  stroke
% Polyline
newpath 362 413 moveto 362 453 lineto  stroke
1.000 setlinewidth
% Polyline
newpath 243 442 moveto 243 428 lineto 228 428 lineto 228 442 lineto closepath  stroke
3.000 setlinewidth
% Polyline
newpath 423 442 moveto 408 442 lineto 408 428 lineto 423 428 lineto closepath  stroke
% Polyline
newpath 378 442 moveto 378 428 lineto 363 428 lineto 363 442 lineto closepath  stroke
% Polyline
newpath 363 442 moveto 363 428 lineto 348 428 lineto 348 442 lineto closepath  stroke
% Polyline
newpath 427 496 moveto 412 496 lineto 412 482 lineto 427 482 lineto closepath  stroke
% Polyline
newpath 412 496 moveto 412 482 lineto 397 482 lineto 397 496 lineto closepath  stroke
% Polyline
newpath 367 496 moveto 367 482 lineto 352 482 lineto 352 496 lineto closepath  stroke
% Polyline
newpath 408 413 moveto 408 453 lineto  stroke
1.000 setlinewidth
	[1 3.000000] 0 setdash
% Polyline
newpath 566 70 moveto 375 172 lineto  stroke
	[] 0 setdash
newpath 382.999 169.996 moveto 375.000 172.000 lineto 381.115 166.467 lineto stroke
	[1 3.000000] 0 setdash
% Polyline
newpath 347 193 moveto 253 270 lineto  stroke
	[] 0 setdash
newpath 260.456 266.478 moveto 253.000 270.000 lineto 257.921 263.383 lineto stroke
	[1 3.000000] 0 setdash
% Polyline
newpath 254 288 moveto 336 341 lineto  stroke
	[] 0 setdash
newpath 330.367 334.978 moveto 336.000 341.000 lineto 328.196 338.337 lineto stroke
	[1 3.000000] 0 setdash
% Polyline
newpath 585 75 moveto 676 267 lineto  stroke
	[] 0 setdash
newpath 674.381 258.914 moveto 676.000 267.000 lineto 670.766 260.627 lineto stroke
	[1 3.000000] 0 setdash
% Polyline
newpath 678 299 moveto 578 428 lineto  stroke
	[] 0 setdash
newpath 584.482 422.903 moveto 578.000 428.000 lineto 581.321 420.452 lineto stroke
	[1 3.000000] 0 setdash
% Polyline
newpath 366 361 moveto 550 429 lineto  stroke
	[] 0 setdash
newpath 543.189 424.351 moveto 550.000 429.000 lineto 541.803 428.103 lineto stroke
/Times-Roman findfont 18.000 scalefont setfont
24 167 moveto 
1 -1 scale
(Time)dup stringwidth pop 2 div neg 0 rmoveto  gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 14.000 scalefont setfont
269 184 moveto 
1 -1 scale
(Stage 2) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 14.000 scalefont setfont
271 360 moveto 
1 -1 scale
(Stage 4) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 14.000 scalefont setfont
483 46 moveto 
1 -1 scale
(Stage 1) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 14.000 scalefont setfont
483 80 moveto 
1 -1 scale
(Stage 2) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 14.000 scalefont setfont
488 494 moveto 
1 -1 scale
(Stage 5) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 12.000 scalefont setfont
232 439 moveto 
1 -1 scale
(5) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 14.000 scalefont setfont
486 443 moveto 
1 -1 scale
(Stage 4) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 12.000 scalefont setfont
410 439 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 12.000 scalefont setfont
353 439 moveto 
1 -1 scale
(8) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 12.000 scalefont setfont
414 493 moveto 
1 -1 scale
(12) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 12.000 scalefont setfont
399 493 moveto 
1 -1 scale
(11) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 12.000 scalefont setfont
357 493 moveto 
1 -1 scale
(8) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 12.000 scalefont setfont
365 439 moveto 
1 -1 scale
(9) gsave  0.000 rotate show grestore 1 -1 scale
/Times-Roman findfont 18.000 scalefont setfont
345 549 moveto 
1 -1 scale
(Split-Sort-Merge Algorithm on Four-Node Hypercube)dup stringwidth pop 2 div neg 0 rmoveto  gsave  0.000 rotate show grestore 1 -1 scale
$F2psEnd
%%EndDocument
 @endspecial 249 2097 a Fo(Figure)f(4.3)249 2135 y Fy(T)m
(ree-computati)o(on)8 b(example)249 2332 y Fs({)22 b(Spawn)e(and)i
(partition)e(list)g(based)h(on)h(a)f(broadcast)f(tree)h(pattern.)f(})
249 2386 y(for)h(i)h(:=)f(1)h(to)f(N,)h(such)f(that)f(2^N)i(=)f
(NumProcs)249 2440 y(forall)g(processors)e(P)j(such)f(that)g(P)g(<)h
(2^i)249 2494 y(pvm_spawn\(...\))d({process)h(id)h(P)h(XOR)f(2^i})p
eop
%%Page: 39 58
39 57 bop 249 251 a Fu(Basic)14 b(Programming)h(T)m(ec)o(hniques)1029
b(39)249 507 y Fs(if)21 b(P)h(<)g(2^\(i-1\))e(then)249
561 y(midpt:)h(=)g(PartitionList\(list)o(\);)249 615
y({Send)g(list[0..midpt])e(to)i(P)h(XOR)f(2^i})249 669
y(pvm_send\(\(P)f(XOR)h(2^i\),999\))249 723 y(list)g(:=)g
(list[midpt+1..MAXSI)o(ZE])249 777 y(else)249 831 y(pvm_recv\(999\))85
b({receive)20 b(the)h(list})249 885 y(endif)249 939 y(endfor)249
993 y(endfor)249 1101 y({)h(Sort)f(remaining)f(list.)g(})249
1155 y(Quicksort\(list[mid)o(pt+1.)o(.MAX)o(SIZE])o(\))249
1263 y({)i(Gather/merge)d(sorted)i(sub-lists.)e(})249
1317 y(for)i(i)h(:=)f(N)h(downto)e(1,)i(such)f(that)g(2^N)g(=)g
(NumProcs)249 1371 y(forall)g(processors)e(P)j(such)f(that)g(P)g(<)h
(2^i)249 1425 y(if)f(P)h(>)g(2^\(i-1\))e(then)249 1479
y(pvm_send\(\(P)g(XOR)h(2^i\),888\))249 1533 y({Send)g(list)g(to)g(P)h
(XOR)f(2^i})249 1587 y(else)249 1641 y(pvm_recv\(888\))85
b({receive)20 b(temp)h(list})249 1694 y(merge)g(templist)f(into)h(list)
249 1748 y(endif)249 1802 y(endfor)249 1856 y(endfor)249
2031 y FD(4.2)52 b(W)l(orkload)18 b(Allo)q(cation)249
2139 y FA(In)11 b(the)h(preceding)g(section,)f(w)o(e)h(discussed)g(the)
g(common)c(parallel)i(programming)d(paradigms)i(with)249
2193 y(resp)q(ect)18 b(to)d(pro)q(cess)i(structure,)g(and)e(w)o(e)h
(outlined)e(represen)o(tativ)o(e)k(examples)c(in)h(the)h(con)o(text)g
(of)249 2247 y(the)d(PVM)g(system.)k(In)12 b(this)g(section)h(w)o(e)g
(address)g(the)g(issue)g(of)f(w)o(orkload)f(allo)q(cation,)f(subsequen)
o(t)249 2301 y(to)16 b(establishing)h(pro)q(cess)h(structure,)h(and)d
(describ)q(e)j(some)c(common)f(paradigms)h(that)h(are)h(used)249
2355 y(in)h(distributed-memory)e(parallel)g(computing.)29
b(Tw)o(o)18 b(general)g(metho)q(dologies)e(are)i(commonly)249
2408 y(used.)35 b(The)20 b(\014rst,)g(termed)g FB(data)g(de)n(c)n(omp)n
(osition)f FA(or)g(partitioning,)g(assumes)g(that)g(the)h(o)o(v)o
(erall)249 2462 y(problem)13 b(in)o(v)o(olv)o(es)h(applying)f
(computational)f(op)q(erations)i(or)h(transformations)e(on)h(one)h(or)f
(more)p eop
%%Page: 40 59
40 58 bop 249 251 a Fu(40)1375 b(Chapter)13 b(4)249 507
y FA(data)k(structures)j(and,)e(further,)h(that)e(these)i(data)e
(structures)j(ma)o(y)c(b)q(e)i(divided)f(and)g(op)q(erated)249
561 y(up)q(on.)29 b(The)18 b(second,)h(called)e FB(function)i(de)n(c)n
(omp)n(osition)p FA(,)f(divides)f(the)h(w)o(ork)g(based)g(on)f
(di\013eren)o(t)249 615 y(op)q(erations)e(or)g(functions.)21
b(In)15 b(a)f(sense,)i(the)g(PVM)f(computing)e(mo)q(del)g(supp)q(orts)j
(b)q(oth)f(function)249 669 y(decomp)q(osition)d(\(fundamen)o(tally)e
(di\013eren)o(t)k(tasks)g(p)q(erform)e(di\013eren)o(t)i(op)q
(erations\))f(and)g(data)g(de-)249 723 y(comp)q(osition)f(\(iden)o
(tical)h(tasks)i(op)q(erate)g(on)e(di\013eren)o(t)i(p)q(ortions)f(of)f
(the)i(data\).)249 806 y Fr(4.2.1)48 b(Data)15 b(Decomp)q(osition)249
889 y FA(As)d(a)g(simple)e(example)h(of)g(data)h(decomp)q(osition,)e
(consider)j(the)g(addition)d(of)i(t)o(w)o(o)f(v)o(ectors,)i(A[1..N])249
943 y(and)d(B[1..N],)e(to)i(pro)q(duce)i(the)f(result)g(v)o(ector,)g
(C[1..N].)d(If)i(w)o(e)g(assume)g(that)g(P)h(pro)q(cesses)i(are)e(w)o
(ork-)249 997 y(ing)16 b(on)g(this)h(problem,)e(data)h(partitioning)f
(in)o(v)o(olv)o(es)h(the)h(allo)q(cation)e(of)h(N/P)g(elemen)o(ts)h(of)
f(eac)o(h)249 1051 y(v)o(ector)e(to)e(eac)o(h)i(pro)q(cess,)g(whic)o(h)
f(computes)f(the)i(corresp)q(onding)g(N/P)f(elemen)o(ts)f(of)g(the)i
(resulting)249 1105 y(v)o(ector.)k(This)12 b(data)f(partitioning)f(ma)o
(y)g(b)q(e)i(done)g(either)g(\\statically)m(,")e(where)j(eac)o(h)f(pro)
q(cess)h(kno)o(ws)249 1159 y FB(a)k(priori)d FA(\(at)i(least)g(in)f
(terms)h(of)f(the)h(v)n(ariables)f(N)h(and)g(P\))g(its)f(share)i(of)e
(the)h(w)o(orkload,)f(or)h(\\dy-)249 1213 y(namically)m(,)o(")d(where)k
(a)f(con)o(trol)f(pro)q(cess)j(\(e.g.,)d(the)i(master)e(pro)q(cess\))j
(allo)q(cates)e(subunits)g(of)f(the)249 1267 y(w)o(orkload)f(to)h(pro)q
(cesses)j(as)d(and)g(when)h(they)f(b)q(ecome)g(free.)23
b(The)15 b(principal)g(di\013erence)i(b)q(et)o(w)o(een)249
1321 y(these)g(t)o(w)o(o)e(approac)o(hes)h(is)f(\\sc)o(heduling.")23
b(With)15 b(static)g(sc)o(heduling,)h(individual)d(pro)q(cess)18
b(w)o(ork-)249 1375 y(loads)d(are)i(\014xed;)g(with)e(dynamic)f(sc)o
(heduling,)i(they)h(v)n(ary)e(as)h(the)h(computation)d(progresses.)26
b(In)249 1429 y(most)12 b(m)o(ultipro)q(cessor)g(en)o(vironmen)o(ts,)g
(static)h(sc)o(heduling)f(is)h(e\013ectiv)o(e)h(for)e(problems)g(suc)o
(h)i(as)e(the)249 1483 y(v)o(ector)18 b(addition)e(example;)h(ho)o(w)o
(ev)o(er,)g(in)g(the)h(general)f(PVM)g(en)o(vironmen)o(t,)g(static)g
(sc)o(heduling)249 1537 y(is)d(not)g(necessarily)h(b)q(ene\014cial.)k
(The)14 b(reason)h(is)e(that)h(PVM)h(en)o(vironmen)o(ts)e(based)i(on)e
(net)o(w)o(ork)o(ed)249 1591 y(clusters)21 b(are)e(susceptible)i(to)e
(external)h(in\015uences;)j(therefore,)e(a)e(statically)f(sc)o
(heduled,)k(data-)249 1645 y(partitioned)14 b(problem)e(migh)o(t)g
(encoun)o(ter)k(one)e(or)g(more)f(pro)q(cesses)k(that)d(complete)f
(their)h(p)q(ortion)249 1699 y(of)h(the)h(w)o(orkload)f(m)o(uc)o(h)f
(faster)j(or)e(m)o(uc)o(h)g(slo)o(w)o(er)g(than)h(the)g(others.)25
b(This)15 b(situation)g(could)h(also)249 1753 y(arise)g(when)g(the)h
(mac)o(hines)d(in)i(a)f(PVM)h(system)g(are)g(heterogeneous,)h(p)q
(ossessing)g(v)n(arying)e(CPU)249 1807 y(sp)q(eeds)h(and)e(di\013eren)o
(t)g(memory)e(and)i(other)g(system)g(attributes.)291
1861 y(In)h(a)g(real)h(execution)g(of)f(ev)o(en)h(this)f(trivial)f(v)o
(ector)j(addition)d(problem,)g(an)h(issue)h(that)g(cannot)249
1914 y(b)q(e)g(ignored)g(is)g(input)f(and)h(output.)24
b(In)16 b(other)g(w)o(ords,)g(ho)o(w)f(do)h(the)g(pro)q(cesses)j
(describ)q(ed)e(ab)q(o)o(v)o(e)249 1968 y(receiv)o(e)i(their)e(w)o
(orkloads,)g(and)g(what)g(do)g(they)g(do)g(with)g(the)h(result)g(v)o
(ectors?)29 b(The)17 b(answ)o(er)h(to)249 2022 y(these)g(questions)g
(dep)q(ends)h(on)d(the)i(application)d(and)i(the)h(circumstances)f(of)g
(a)f(particular)h(run,)249 2076 y(but)d(in)g(general:)196
2151 y(1.)20 b(Individual)11 b(pro)q(cesses)k(generate)e(their)g(o)o
(wn)f(data)g(in)o(ternally)m(,)e(for)i(example,)f(using)h(random)f(n)o
(um-)249 2205 y(b)q(ers)19 b(or)e(statically)f(kno)o(wn)h(v)n(alues.)28
b(This)18 b(is)f(p)q(ossible)g(only)g(in)g(v)o(ery)g(sp)q(ecial)h
(situations)f(or)g(for)249 2259 y(program)12 b(testing)j(purp)q(oses.)
196 2330 y(2.)20 b(Individual)13 b(pro)q(cesses)j(indep)q(enden)o(tly)f
(input)f(their)g(data)g(subsets)i(from)c(external)j(devices.)k(This)249
2384 y(metho)q(d)c(is)i(meaningful)c(in)j(man)o(y)e(cases,)k(but)f(p)q
(ossible)f(only)f(when)i(parallel)e(I/O)h(facilities)g(are)249
2438 y(supp)q(orted.)196 2508 y(3.)k(A)10 b(con)o(trolling)f(pro)q
(cess)j(sends)g(individual)c(data)i(subsets)i(to)e(eac)o(h)h(pro)q
(cess.)18 b(This)10 b(is)h(the)f(most)f(com-)p eop
%%Page: 41 60
41 59 bop 249 251 a Fu(Basic)14 b(Programming)h(T)m(ec)o(hniques)1029
b(41)249 507 y FA(mon)13 b(scenario,)j(esp)q(ecially)f(when)h(parallel)
d(I/O)j(facilities)d(do)i(not)g(exist.)22 b(F)m(urther,)16
b(this)f(metho)q(d)249 561 y(is)j(also)f(appropriate)h(when)g(input)g
(data)f(subsets)j(are)e(deriv)o(ed)g(from)e(a)i(previous)g(computation)
249 615 y(within)13 b(the)i(same)e(application.)291 690
y(The)j(third)f(metho)q(d)g(of)g(allo)q(cating)f(individual)g(w)o
(orkloads)h(is)g(also)h(consisten)o(t)g(with)g(dynamic)249
744 y(sc)o(heduling)f(in)f(applications)g(where)i(in)o(terpro)q(cess)h
(in)o(teractions)e(during)f(computations)f(are)i(rare)249
798 y(or)e(nonexisten)o(t.)19 b(Ho)o(w)o(ev)o(er,)13
b(non)o(trivial)e(algorithms)g(generally)i(require)h(in)o(termediate)e
(exc)o(hanges)249 852 y(of)g(data)f(v)n(alues,)h(and)g(therefore)h
(only)f(the)g(initial)e(assignmen)o(t)h(of)h(data)g(partitions)f(can)i
(b)q(e)f(accom-)249 906 y(plished)i(b)o(y)h(these)g(sc)o(hemes.)20
b(F)m(or)14 b(example,)f(consider)i(the)g(data)f(partitioning)f(metho)q
(d)h(depicted)249 960 y(in)h(Figure)h(4.2.)23 b(In)16
b(order)g(to)g(m)o(ultiply)d(t)o(w)o(o)i(matrices)h(A)g(and)f(B,)h(a)f
(group)h(of)f(pro)q(cesses)k(is)c(\014rst)249 1014 y(spa)o(wned,)j
(using)g(the)g(master-sla)o(v)o(e)e(or)i(no)q(de-only)f(paradigm.)26
b(This)17 b(set)i(of)e(pro)q(cesses)j(is)d(con-)249 1068
y(sidered)h(to)e(form)f(a)h(mesh;)h(the)h(matrices)e(to)g(b)q(e)h(m)o
(ultiplied)d(are)j(divided)f(in)o(to)g(subblo)q(c)o(ks,)i(also)249
1122 y(forming)12 b(a)h(mesh.)18 b(Eac)o(h)c(subblo)q(c)o(k)g(of)g(the)
g(A)g(and)g(B)g(matrices)g(is)g(placed)g(on)g(the)g(corresp)q(onding)
249 1176 y(pro)q(cess,)19 b(b)o(y)e(utilizing)f(one)h(of)g(the)g(data)g
(decomp)q(osition)f(and)h(w)o(orkload)e(allo)q(cation)h(strategies)249
1230 y(listed)11 b(ab)q(o)o(v)o(e.)17 b(During)10 b(computation,)g
(subblo)q(c)o(ks)h(need)h(to)f(b)q(e)h(forw)o(arded)f(or)g(exc)o
(hanged)h(b)q(et)o(w)o(een)249 1284 y(pro)q(cesses,)18
b(thereb)o(y)e(transforming)d(the)j(original)d(allo)q(cation)g(map,)g
(as)j(sho)o(wn)f(in)f(the)i(\014gure.)22 b(A)o(t)249
1337 y(the)16 b(end)g(of)f(the)h(computation,)e(ho)o(w)o(ev)o(er,)h
(result)h(matrix)e(subblo)q(c)o(ks)i(are)g(situated)g(on)f(the)h(indi-)
249 1391 y(vidual)c(pro)q(cesses,)j(in)e(conformance)f(with)g(their)i
(resp)q(ectiv)o(e)g(p)q(ositions)f(on)g(the)g(pro)q(cess)i(grid,)d(and)
249 1445 y(consisten)o(t)j(with)f(a)g(data)g(partitioned)g(map)e(of)i
(the)h(resulting)f(matrix)e(C.)i(The)g(foregoing)f(discus-)249
1499 y(sion)i(illustrates)g(the)h(basics)g(of)e(data)h(decomp)q
(osition.)20 b(In)15 b(a)g(later)g(c)o(hapter,)h(example)e(programs)249
1553 y(highligh)o(ting)e(details)h(of)g(this)h(approac)o(h)g(will)f(b)q
(e)h(presen)o(ted.)249 1636 y Fr(4.2.2)48 b(F)l(unction)13
b(Decomp)q(osition)249 1719 y FA(P)o(arallelism)f(in)i
(distributed-memory)e(en)o(vironmen)o(ts)i(suc)o(h)h(as)g(PVM)g(ma)o(y)
d(also)i(b)q(e)h(ac)o(hiev)o(ed)g(b)o(y)249 1773 y(partitioning)d(the)j
(o)o(v)o(erall)d(w)o(orkload)h(in)g(terms)h(of)f(di\013eren)o(t)i(op)q
(erations.)j(The)c(most)f(ob)o(vious)g(ex-)249 1827 y(ample)d(of)g
(this)h(form)f(of)g(decomp)q(osition)g(is)h(with)g(resp)q(ect)i(to)f
(the)f(three)i(stages)f(of)e(t)o(ypical)h(program)249
1881 y(execution,)i(namely)m(,)c(input,)j(pro)q(cessing,)h(and)e
(result)i(output.)18 b(In)11 b(function)h(decomp)q(osition,)e(suc)o(h)
249 1935 y(an)h(application)e(ma)o(y)g(consist)i(of)f(three)i(separate)
g(and)f(distinct)g(programs,)e(eac)o(h)j(one)f(dedicated)g(to)249
1989 y(one)i(of)f(the)h(three)h(phases.)k(P)o(arallelism)10
b(is)j(obtained)f(b)o(y)g(concurren)o(tly)i(executing)f(the)g(three)h
(pro-)249 2043 y(grams)g(and)h(b)o(y)f(establishing)h(a)g(\\pip)q
(eline")f(\(con)o(tin)o(uous)h(or)g(quan)o(tized\))g(b)q(et)o(w)o(een)i
(them.)j(Note,)249 2097 y(ho)o(w)o(ev)o(er,)14 b(that)g(in)f(suc)o(h)i
(a)f(scenario,)g(data)f(parallelism)f(ma)o(y)g(also)h(exist)h(within)g
(eac)o(h)g(phase.)19 b(An)249 2151 y(example)d(is)g(sho)o(wn)h(in)g
(Figure)g(2.1,)f(where)i(distinct)f(functions)g(are)h(realized)f(as)g
(PVM)g(comp)q(o-)249 2205 y(nen)o(ts,)c(with)f(m)o(ultiple)e(instances)
j(within)e(eac)o(h)i(comp)q(onen)o(t)f(implem)o(en)o(ting)d(p)q
(ortions)k(of)e(di\013eren)o(t)249 2259 y(data)j(partitioned)f
(algorithms.)291 2313 y(Although)18 b(the)i(concept)h(of)e(function)g
(decomp)q(osition)e(is)j(illustrated)f(b)o(y)g(the)h(trivial)e(exam-)
249 2367 y(ple)d(ab)q(o)o(v)o(e,)f(the)h(term)f(is)h(generally)f(used)i
(to)e(signify)g(partitioning)f(and)i(w)o(orkload)e(allo)q(cation)g(b)o
(y)249 2421 y(function)k FB(within)f FA(the)i(computational)c(phase.)28
b(T)o(ypically)m(,)15 b(application)h(computations)f(con)o(tain)249
2475 y(sev)o(eral)j(di\013eren)o(t)g(subalgorithms|som)o(etim)o(es)d
(on)i(the)h(same)e(data)h(\(the)h(MPSD)f(or)h(m)o(ultiple-)p
eop
%%Page: 42 61
42 60 bop 249 251 a Fu(42)1375 b(Chapter)13 b(4)249 507
y FA(program)18 b(single-data)h(scenario\),)i(sometimes)c(in)i(a)g(pip)
q(elined)h(sequence)h(of)e(transformations,)249 561 y(and)c(sometimes)e
(exhibiting)h(an)g(unstructured)k(pattern)d(of)f(exc)o(hanges.)22
b(W)m(e)15 b(illustrate)g(the)g(gen-)249 615 y(eral)j(functional)g
(decomp)q(osition)f(paradigm)f(b)o(y)i(considering)g(the)h(h)o(yp)q
(othetical)f(sim)o(ulation)e(of)249 669 y(an)g(aircraft)f(consisting)h
(of)f(m)o(ultiple)f(in)o(terrelated)i(and)g(in)o(teracting,)g
(functionally)e(decomp)q(osed)249 723 y(subalgorithms.)i(A)e(diagram)e
(pro)o(viding)g(an)i(o)o(v)o(erview)g(of)f(this)h(example)e(is)i(sho)o
(wn)g(in)f(Figure)h(4.4)249 777 y(\(and)g(will)e(also)i(b)q(e)g(used)h
(in)e(a)h(later)g(c)o(hapter)h(dealing)e(with)g(graphical)g(PVM)i
(programmi)o(ng\).)259 1737 y @beginspecial 113 @llx
224 @lly 500 @urx 568 @ury 3780 @rwi 2160 @rhi @setspecial
%%BeginDocument: fig4.4.ps
/$F2psDict 200 dict def 
$F2psDict begin
$F2psDict /mtrx matrix put
/l {lineto} bind def
/m {moveto} bind def
/s {stroke} bind def
/n {newpath} bind def
/gs {gsave} bind def
/gr {grestore} bind def
/clp {closepath} bind def
/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
4 -2 roll mul setrgbcolor} bind def
/col-1 {} def
/col0 {0 0 0 setrgbcolor} bind def
/col1 {0 0 1 setrgbcolor} bind def
/col2 {0 1 0 setrgbcolor} bind def
/col3 {0 1 1 setrgbcolor} bind def
/col4 {1 0 0 setrgbcolor} bind def
/col5 {1 0 1 setrgbcolor} bind def
/col6 {1 1 0 setrgbcolor} bind def
/col7 {1 1 1 setrgbcolor} bind def
 /DrawEllipse {
	/endangle exch def
	/startangle exch def
	/yrad exch def
	/xrad exch def
	/y exch def
	/x exch def
	/savematrix mtrx currentmatrix def
	x y translate xrad yrad scale 0 0 1 startangle endangle arc
	savematrix setmatrix
	} def

	end
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def

$F2psBegin
0 setlinecap 0 setlinejoin
-34.5 652.0 translate 0.900 -0.900 scale
1.000 setlinewidth
% Ellipse
n 429 344 16 16 0 360 DrawEllipse gs col-1 s gr
% Ellipse
n 339 344 16 16 0 360 DrawEllipse gs col-1 s gr
% Ellipse
n 179 344 16 16 0 360 DrawEllipse gs col-1 s gr
% Ellipse
n 319 459 16 16 0 360 DrawEllipse gs col-1 s gr
% Ellipse
n 259 344 16 16 0 360 DrawEllipse gs col-1 s gr
% Ellipse
n 514 344 16 16 0 360 DrawEllipse gs col-1 s gr
% Ellipse
n 514 249 16 16 0 360 DrawEllipse gs col-1 s gr
% Ellipse
n 309 109 16 16 0 360 DrawEllipse gs col-1 s gr
% Ellipse
n 409 179 16 16 0 360 DrawEllipse gs col-1 s gr
0.500 setlinewidth
% Polyline
n 189 359 m 304 454 l gs col-1 s gr
% Polyline
n 264 359 m 309 449 l gs col-1 s gr
% Polyline
n 334 359 m 319 444 l gs col-1 s gr
% Polyline
n 419 359 m 329 449 l gs col-1 s gr
% Polyline
n 509 359 m 334 459 l gs col-1 s gr
% Polyline
n 514 264 m 514 329 l gs col-1 s gr
% Polyline
n 264 329 m 399 194 l gs col-1 s gr
% Polyline
n 259 329 m 309 124 l gs col-1 s gr
% Polyline
n 179 329 m 299 124 l gs col-1 s gr
% Polyline
n 324 119 m 394 169 l gs col-1 s gr
% Polyline
n 404 194 m 339 324 l gs col-1 s gr
% Polyline
n 409 194 m 429 334 l gs col-1 s gr
% Polyline
n 439 329 m 504 264 l gs col-1 s gr
% Polyline
n 504 329 m 414 194 l gs col-1 s gr
% Polyline
n 424 189 m 499 244 l gs col-1 s gr
/Times-Roman findfont 12.00 scalefont setfont
309 114 m 
gs 1 -1 scale (9) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
404 184 m 
gs 1 -1 scale (8) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
509 254 m 
gs 1 -1 scale (7) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
509 349 m 
gs 1 -1 scale (6) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
419 349 m 
gs 1 -1 scale (5) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
334 349 m 
gs 1 -1 scale (4) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
254 349 m 
gs 1 -1 scale (3) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
174 354 m 
gs 1 -1 scale (2) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
314 464 m 
gs 1 -1 scale (1) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
329 119 m 
gs 1 -1 scale (flight_dynamics) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
429 189 m 
gs 1 -1 scale (control) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
539 259 m 
gs 1 -1 scale (atmosphere) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
199 354 m 
gs 1 -1 scale (tail ) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
279 359 m 
gs 1 -1 scale (body ) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
359 359 m 
gs 1 -1 scale (wing ) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
449 359 m 
gs 1 -1 scale (wing ) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
534 359 m 
gs 1 -1 scale (rudder) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
339 469 m 
gs 1 -1 scale (input_data) col-1 show gr
showpage
$F2psEnd
%%EndDocument
 @endspecial 249 1800 a Fo(Figure)e(4.4)249 1837 y Fy(F)m(unction)d
(decomp)q(osit)o(ion)e(example)291 1937 y FA(In)13 b(the)h(\014gure,)f
(eac)o(h)h(no)q(de)g(or)f(circle)h(in)f(the)h(\\graph")f(represen)o(ts)
j(a)d(functionally)f(decomp)q(osed)249 1991 y(piece)17
b(of)e(the)h(application.)22 b(The)16 b(input)f(function)g(distributes)
i(the)f(particular)g(problem)e(param-)249 2045 y(eters)k(to)e(the)h
(di\013eren)o(t)g(functions)g(2)e(through)i(6,)f(after)g(spa)o(wning)g
(pro)q(cesses)j(corresp)q(onding)e(to)249 2099 y(distinct)f(programs)e
(implemen)o(ting)f(eac)o(h)j(of)f(the)h(application)e(subalgorithms.)22
b(The)16 b(same)e(data)249 2153 y(ma)o(y)i(b)q(e)j(sen)o(t)g(to)f(m)o
(ultiple)d(functions)j(\(e.g.,)g(as)h(in)e(the)i(case)g(of)e(the)i(t)o
(w)o(o)e FB(wing)h FA(functions\),)h(or)249 2207 y(data)14
b(appropriate)h(for)g(the)g(giv)o(en)f(function)h(alone)f(ma)o(y)f(b)q
(e)i(deliv)o(ered.)21 b(After)16 b(p)q(erforming)d(some)249
2261 y(amoun)o(t)e(of)h(computations)f(these)j(functions)f(deliv)o(er)f
(in)o(termediate)g(or)h(\014nal)f(results)i(to)e(functions)249
2315 y(7,)f(8,)g(and)g(9)f(that)h(ma)o(y)e(ha)o(v)o(e)i(b)q(een)h(spa)o
(wned)g(at)f(the)g(b)q(eginning)g(of)f(the)i(computation)d(or)i(as)g
(results)249 2368 y(b)q(ecome)16 b(a)o(v)n(ailable.)k(The)c(diagram)e
(indicates)i(the)g(primary)e(concept)j(of)e(decomp)q(osing)f(applica-)
249 2422 y(tions)i(b)o(y)g(function,)g(as)g(w)o(ell)g(as)g(con)o(trol)g
(and)g(data)g(dep)q(endency)i(relationships.)25 b(P)o(arallelism)13
b(is)249 2476 y(ac)o(hiev)o(ed)k(in)f(t)o(w)o(o)g(resp)q(ects|b)o(y)j
(the)e(concurren)o(t)h(and)e(indep)q(enden)o(t)i(execution)g(of)d(mo)q
(dules)h(as)p eop
%%Page: 43 62
43 61 bop 249 251 a Fu(Basic)14 b(Programming)h(T)m(ec)o(hniques)1029
b(43)249 507 y FA(in)14 b(functions)g(2)g(through)g(6,)g(and)g(b)o(y)f
(the)i(sim)o(ultaneous,)d(pip)q(elined,)i(execution)h(of)f(mo)q(dules)f
(in)g(a)249 561 y(dep)q(endency)j(c)o(hain,)d(as,)h(for)f(example,)f
(in)i(functions)g(1,)f(6,)g(8,)g(and)h(9.)249 682 y FD(4.3)52
b(P)o(orting)18 b(Existing)g(Applications)h(to)f(PVM)249
790 y FA(In)d(order)i(to)e(utilize)g(the)h(PVM)f(system,)g
(applications)g(m)o(ust)f(ev)o(olv)o(e)h(through)g(t)o(w)o(o)g(stages.)
24 b(The)249 844 y(\014rst)15 b(concerns)g(dev)o(elopmen)o(t)e(of)g
(the)i(distributed-memory)c(parallel)i(v)o(ersion)h(of)f(the)h
(application)249 897 y(algorithm\(s\);)f(this)h(phase)i(is)e(common)e
(to)j(the)g(PVM)g(system)f(as)h(w)o(ell)f(as)h(to)f(other)i
(distributed-)249 951 y(memory)e(m)o(ultipro)q(cessors.)25
b(The)17 b(actual)f(parallelization)e(decisions)j(fall)e(in)o(to)g(t)o
(w)o(o)h(ma)r(jor)e(cate-)249 1005 y(gories)i({)g(those)h(related)f(to)
g(structure,)i(and)e(those)h(related)g(to)e(e\016ciency)m(.)25
b(F)m(or)16 b(structural)h(deci-)249 1059 y(sions)e(in)f(parallelizing)
f(applications,)h(the)h(ma)r(jor)f(decisions)h(to)g(b)q(e)g(made)f
(include)h(the)g(c)o(hoice)h(of)249 1113 y(mo)q(del)f(to)i(b)q(e)g
(used)h(\(i.e.,)e(cro)o(wd)h(computation)e(vs.)26 b(tree)18
b(computation)d(and)i(data)f(decomp)q(osi-)249 1167 y(tion)d(vs.)18
b(function)13 b(decomp)q(osition\).)k(Decisions)d(with)f(resp)q(ect)i
(to)f(e\016ciency)g(when)g(parallelizing)249 1221 y(for)h
(distributed-memory)e(en)o(vironmen)o(ts)h(are)i(generally)e(orien)o
(ted)i(to)o(w)o(ard)f(minim)o(i)o(zing)d(the)k(fre-)249
1275 y(quency)k(and)e(v)o(olume)f(of)h(comm)o(unicatio)o(ns.)30
b(It)19 b(is)g(t)o(ypically)e(in)h(this)h(latter)g(resp)q(ect)i(that)d
(the)249 1329 y(parallelization)f(pro)q(cess)j(di\013ers)g(for)e(PVM)i
(and)e(hardw)o(are)h(m)o(ultipro)q(cessors;)i(for)d(PVM)h(en)o(vi-)249
1383 y(ronmen)o(ts)f(based)h(on)g(net)o(w)o(orks,)h(large)e(gran)o
(ularit)o(y)f(generally)h(leads)h(to)f(b)q(etter)j(p)q(erformance.)249
1437 y(With)12 b(this)h(quali\014cation,)f(the)h(parallelization)e(pro)
q(cess)k(is)e(v)o(ery)g(similar)e(for)i(PVM)g(and)g(for)f(other)249
1491 y(distributed-memory)g(en)o(vironmen)o(ts,)h(including)g(hardw)o
(are)h(m)o(ultipro)q(cessors.)291 1545 y(The)20 b(parallelization)d(of)
i(applications)g(ma)o(y)f(b)q(e)i(done)g FB(ab)h(initio)p
FA(,)f(from)e(existing)h(sequen)o(tial)249 1599 y(v)o(ersions,)13
b(or)g(from)e(existing)h(parallel)g(v)o(ersions.)18 b(In)13
b(the)g(\014rst)h(t)o(w)o(o)e(cases,)i(the)g(stages)f(in)o(v)o(olv)o
(ed)f(are)249 1653 y(to)17 b(select)h(an)f(appropriate)g(algorithm)e
(for)h(eac)o(h)i(of)e(the)i(subtasks)g(in)e(the)i(application,)e
(usually)249 1707 y(from)c(published)h(descriptions)i(or)e(b)o(y)g(in)o
(v)o(en)o(ting)g(a)g(parallel)f(algorithm,)f(and)i(to)g(then)h(co)q(de)
h(these)249 1761 y(algorithms)8 b(in)i(the)g(language)f(of)h(c)o(hoice)
h(\(C,)e(C++,)i(or)f(F)m(ortran)g(77)g(for)g(PVM\))g(and)g(in)o
(terface)h(them)249 1815 y(with)f(eac)o(h)i(other)f(as)g(w)o(ell)f(as)h
(with)f(pro)q(cess)j(managemen)o(t)8 b(and)j(other)g(constructs.)19
b(P)o(arallelization)249 1869 y(from)10 b(existing)i(sequen)o(tial)h
(programs)e(also)g(follo)o(ws)g(certain)h(general)h(guidelines,)f
(primary)e(among)249 1923 y(whic)o(h)15 b(are)g(to)f(decomp)q(ose)h(lo)
q(ops,)f(b)q(eginning)g(with)g(outermost)g(lo)q(ops)g(and)h(w)o(orking)
e(in)o(w)o(ard.)20 b(In)249 1977 y(this)f(pro)q(cess,)j(the)e(main)d
(concern)k(is)e(to)g(detect)h(dep)q(endencies)i(and)d(to)g(partition)g
(lo)q(ops)f(suc)o(h)249 2031 y(that)c(the)g(dep)q(endencies)i(are)e
(preserv)o(ed)i(while)d(allo)o(wing)f(for)h(concurrency)m(.)19
b(This)14 b(parallelization)249 2085 y(pro)q(cess)i(is)e(describ)q(ed)h
(in)f(n)o(umerous)f(textb)q(o)q(oks)i(and)f(pap)q(ers)h(on)e(parallel)g
(computing,)f(although)249 2139 y(few)20 b(textb)q(o)q(oks)h(discuss)g
(the)g(practical)f(and)g(sp)q(eci\014c)i(asp)q(ects)f(of)f
(transforming)e(a)i(sequen)o(tial)249 2193 y(program)12
b(to)i(a)g(parallel)e(one.)291 2247 y(Existing)c(parallel)g(programs)g
(ma)o(y)g(b)q(e)i(based)g(up)q(on)f(either)h(the)g(shared-memory)e(or)h
(distributed-)249 2301 y(memory)i(paradigms.)16 b(Con)o(v)o(erting)d
(existing)h(shared-memory)e(programs)g(to)i(PVM)g(is)f(similar)e(to)249
2355 y(con)o(v)o(erting)g(from)d(sequen)o(tial)j(co)q(de,)g(when)g(the)
g(shared-memory)e(v)o(ersions)i(are)g(based)g(up)q(on)f(v)o(ector)249
2408 y(or)16 b(lo)q(op-lev)o(el)e(parallelism.)20 b(In)c(the)g(case)h
(of)e(explicit)g(shared)h(memory)d(programs,)i(the)h(primary)249
2462 y(task)c(is)g(to)g(lo)q(cate)h(sync)o(hronization)f(p)q(oin)o(ts)g
(and)g(replace)h(these)g(with)f(message)g(passing.)17
b(In)12 b(order)p eop
%%Page: 44 63
44 62 bop 249 251 a Fu(44)1375 b(Chapter)13 b(4)249 507
y FA(to)e(con)o(v)o(ert)h(existing)f(distributed-memory)e(parallel)h
(co)q(de)i(to)f(PVM,)g(the)g(main)e(task)i(is)g(to)g(con)o(v)o(ert)249
561 y(from)h(one)i(set)h(of)e(concurrency)j(constructs)f(to)f(another.)
k(T)o(ypically)m(,)12 b(existing)h(distributed)i(mem-)249
615 y(ory)d(parallel)e(programs)h(are)h(written)g(either)g(for)g(hardw)
o(are)g(m)o(ultipro)q(cessors)g(or)f(other)h(net)o(w)o(ork)o(ed)249
669 y(en)o(vironmen)o(ts)h(suc)o(h)g(as)h(p4)f(or)g(Express.)19
b(In)13 b(b)q(oth)g(cases,)i(the)e(ma)r(jor)f(c)o(hanges)i(required)g
(are)f(with)249 723 y(regard)j(to)f(pro)q(cess)i(managemen)o(t.)i(F)m
(or)c(example,)f(in)g(the)i(In)o(tel)f(family)e(of)h(DMMPs,)i(it)e(is)h
(com-)249 777 y(mon)10 b(for)h(pro)q(cesses)j(to)d(b)q(e)h(started)g
(from)e(an)h(in)o(teractiv)o(e)h(shell)f(command)e(line.)16
b(Suc)o(h)c(a)f(paradigm)249 831 y(should)k(b)q(e)h(replaced)g(for)f
(PVM)h(b)o(y)f(either)h(a)f(master)f(program)g(or)h(a)g(no)q(de)h
(program)d(that)j(tak)o(es)249 885 y(resp)q(onsibilit)o(y)f(for)g(pro)q
(cess)j(spa)o(wning.)k(With)15 b(regard)h(to)f(in)o(teraction,)h(there)
g(is,)g(fortunately)m(,)e(a)249 939 y(great)19 b(deal)f(of)f(commonali)
o(t)o(y)e(b)q(et)o(w)o(een)20 b(the)f(message-passing)f(calls)f(in)h(v)
n(arious)g(programmi)o(ng)249 993 y(en)o(vironmen)o(ts.)26
b(The)17 b(ma)r(jor)e(di\013erences)k(b)q(et)o(w)o(een)f(PVM)f(and)f
(other)i(systems)e(in)h(this)f(con)o(text)249 1047 y(are)f(with)f
(regard)h(to)f(\(a\))g(pro)q(cess)i(managemen)o(t)c(and)i(pro)q(cess)j
(addressing)e(sc)o(hemes;)f(\(b\))h(virtual)249 1101
y(mac)o(hine)c(con\014guration/recon\014guration)i(and)f(its)g(impact)f
(on)i(executing)g(applications;)e(\(c\))j(het-)249 1155
y(erogeneit)o(y)k(in)f(messages)g(as)g(w)o(ell)g(as)g(the)h(asp)q(ect)g
(of)f(heterogeneit)o(y)i(that)e(deals)g(with)g(di\013eren)o(t)249
1209 y(arc)o(hitectures)h(and)e(data)f(represen)o(tations;)k(and)c
(\(d\))h(certain)h(unique)f(and)f(sp)q(ecialized)i(features)249
1263 y(suc)o(h)e(as)f(signaling,)d(and)j(task)g(sc)o(heduling)g(metho)q
(ds.)p eop
%%Page: 45 64
45 63 bop 249 325 a Fp(5)25 b FD(PVM)16 b(User)h(In)o(terface)249
561 y FA(In)h(this)g(c)o(hapter)g(w)o(e)g(giv)o(e)f(a)h(brief)g
(description)g(of)f(the)h(routines)h(in)e(the)h(PVM)g(3)g(user)h
(library)m(.)249 615 y(This)c(c)o(hapter)i(is)e(organized)h(b)o(y)f
(the)h(functions)g(of)f(the)h(routines.)23 b(F)m(or)15
b(example,)f(in)h(the)h(section)249 669 y(on)i FB(Message)i(Passing)f
FA(is)f(a)g(discussion)h(of)f(all)f(the)i(routines)g(for)g(sending)f
(and)h(receiving)f(data)249 723 y(from)e(one)j(PVM)f(task)g(to)g
(another)g(and)g(a)g(description)h(of)e(PVM's)h(message)g(passing)g
(options.)249 777 y(The)c(calling)e(syn)o(tax)i(of)f(the)h(C)f(and)h(F)
m(ortran)f(PVM)h(routines)g(are)g(highligh)o(ted)e(b)o(y)h(b)q(o)o(xes)
h(in)g(eac)o(h)249 831 y(section.)291 885 y(An)d(alphab)q(etical)f
(listing)h(of)f(all)g(the)i(routines)g(is)f(giv)o(en)g(in)g(App)q
(endix)h(B.)f(App)q(endix)g(B)h(con)o(tains)249 939 y(a)j(detailed)f
(description)i(of)e(eac)o(h)i(routine,)f(including)e(a)i(description)h
(of)e(eac)o(h)h(argumen)o(t)f(in)h(eac)o(h)249 993 y(routine,)g(the)h
(p)q(ossible)f(error)h(co)q(des)g(a)f(routine)g(ma)o(y)e(return,)j(and)
f(the)h(p)q(ossible)f(reasons)h(for)e(the)249 1047 y(error.)19
b(Eac)o(h)14 b(listing)f(also)g(includes)i(examples)e(of)g(b)q(oth)h(C)
g(and)f(F)m(ortran)h(use.)291 1101 y(In)g(PVM)i(3)e(all)g(PVM)h(tasks)g
(are)g(iden)o(ti\014ed)g(b)o(y)g(an)g(in)o(teger)g(supplied)g(b)o(y)f
(the)i(lo)q(cal)e(p)o(vmd.)19 b(In)249 1155 y(the)e(follo)o(wing)d
(descriptions)k(this)e(task)h(iden)o(ti\014er)g(is)f(called)g(TID.)g
(It)g(is)h(similar)d(to)i(the)h(pro)q(cess)249 1209 y(ID)d(\(PID\))g
(used)h(in)e(the)i(Unix)f(system)g(and)f(is)h(assumed)g(to)g(b)q(e)h
(opaque)f(to)f(the)i(user,)g(in)e(that)h(the)249 1263
y(v)n(alue)h(of)f(the)i(TID)f(has)g(no)g(sp)q(ecial)g(signi\014cance)h
(to)f(him.)20 b(In)15 b(fact,)g(PVM)g(enco)q(des)i(information)249
1317 y(in)o(to)d(the)h(TID)f(for)g(its)h(o)o(wn)f(in)o(ternal)g(use.)20
b(Details)14 b(of)g(this)h(enco)q(ding)f(can)h(b)q(e)g(found)f(in)g
(Chapter)249 1371 y(7.)291 1425 y(All)c(the)i(PVM)g(routines)g(are)g
(written)g(in)f(C.)g(C++)h(applications)e(can)i(link)e(to)i(the)g(PVM)g
(library)m(.)249 1479 y(F)m(ortran)g(applications)g(can)h(call)e(these)
j(routines)f(through)g(a)f(F)m(ortran)h(77)f(in)o(terface)h(supplied)f
(with)249 1533 y(the)h(PVM)g(3)f(source.)18 b(This)12
b(in)o(terface)h(translates)g(argumen)o(ts,)f(whic)o(h)g(are)g(passed)i
(b)o(y)e(reference)i(in)249 1587 y(F)m(ortran,)f(to)h(their)g(v)n
(alues)f(if)g(needed)i(b)o(y)f(the)g(underlying)f(C)h(routines.)k(The)c
(in)o(terface)h(also)e(tak)o(es)249 1641 y(in)o(to)d(accoun)o(t)h(F)m
(ortran)f(c)o(haracter)i(string)f(represen)o(tations)h(and)f(the)g(v)n
(arious)f(naming)e(con)o(v)o(en)o(tions)249 1694 y(that)14
b(di\013eren)o(t)h(F)m(ortran)f(compilers)e(use)j(to)f(call)f(C)h
(functions.)291 1748 y(The)j(PVM)h(comm)o(unication)c(mo)q(del)i
(assumes)h(that)h(an)o(y)f(task)g(can)h(send)g(a)f(message)g(to)h(an)o
(y)249 1802 y(other)13 b(PVM)f(task)g(and)f(that)h(there)h(is)f(no)g
(limit)d(to)j(the)g(size)h(or)e(n)o(um)o(b)q(er)h(of)f(suc)o(h)h
(messages.)18 b(While)249 1856 y(all)10 b(hosts)i(ha)o(v)o(e)f(ph)o
(ysical)g(memory)e(limitati)o(ons)g(that)i(limits)e(p)q(oten)o(tial)i
(bu\013er)h(space,)g(the)g(comm)o(u-)249 1910 y(nication)h(mo)q(del)f
(do)q(es)j(not)e(restrict)j(itself)d(to)h(a)f(particular)h(mac)o
(hine's)e(limitatio)o(ns)g(and)h(assumes)249 1964 y(su\016cien)o(t)j
(memory)c(is)k(a)o(v)n(ailable.)j(The)d(PVM)g(comm)o(uni)o(cation)c(mo)
q(del)i(pro)o(vides)h(async)o(hronous)249 2018 y(blo)q(c)o(king)e
(send,)h(async)o(hronous)h(blo)q(c)o(king)d(receiv)o(e,)j(and)f(non)o
(blo)q(c)o(king)e(receiv)o(e)j(functions.)j(In)c(our)249
2072 y(terminology)m(,)i(a)i(blo)q(c)o(king)f(send)i(returns)h(as)e(so)
q(on)g(as)g(the)h(send)g(bu\013er)g(is)f(free)h(for)f(reuse,)i(and)249
2126 y(an)14 b(async)o(hronous)g(send)h(do)q(es)f(not)g(dep)q(end)h(on)
e(the)h(receiv)o(er)i(calling)c(a)h(matc)o(hing)f(receiv)o(e)j(b)q
(efore)249 2180 y(the)g(send)g(can)g(return.)20 b(There)15
b(are)g(options)f(in)g(PVM)g(3)g(that)g(request)i(that)f(data)e(b)q(e)i
(transferred)249 2234 y(directly)i(from)f(task)h(to)f(task.)28
b(In)17 b(this)g(case,)h(if)e(the)i(message)e(is)h(large,)g(the)h
(sender)g(ma)o(y)d(blo)q(c)o(k)249 2288 y(un)o(til)e(the)i(receiv)o(er)
g(has)f(called)g(a)f(matc)o(hing)f(receiv)o(e.)p eop
%%Page: 46 65
46 64 bop 249 251 a Fu(46)1375 b(Chapter)13 b(5)291 507
y FA(A)f(non)o(blo)q(c)o(king)f(receiv)o(e)i(immediately)c(returns)14
b(with)e(either)h(the)g(data)e(or)i(a)f(\015ag)f(that)i(the)f(data)249
561 y(has)18 b(not)f(arriv)o(ed,)h(while)g(a)f(blo)q(c)o(king)f(receiv)
o(e)j(returns)h(only)c(when)i(the)h(data)e(is)g(in)h(the)g(receiv)o(e)
249 615 y(bu\013er.)h(In)12 b(addition)g(to)g(these)i(p)q(oin)o(t-to-p)
q(oin)o(t)d(comm)o(unication)e(functions,)k(the)g(mo)q(del)e(supp)q
(orts)249 669 y(m)o(ulticast)g(to)h(a)g(set)i(of)e(tasks)h(and)f
(broadcast)h(to)f(a)g(user-de\014ned)j(group)d(of)g(tasks.)18
b(There)c(are)f(also)249 723 y(functions)i(to)g(p)q(erform)f(global)f
(max,)g(global)g(sum,)h(etc.,)h(across)h(a)f(user-de\014ned)i(group)e
(of)f(tasks.)249 777 y(Wildcards)e(can)g(b)q(e)g(sp)q(eci\014ed)i(in)d
(the)h(receiv)o(e)i(for)d(the)i(source)g(and)f(lab)q(el,)f(allo)o(wing)
e(either)k(or)f(b)q(oth)249 831 y(of)17 b(these)i(con)o(texts)g(to)e(b)
q(e)h(ignored.)29 b(A)18 b(routine)g(can)g(b)q(e)g(called)f(to)h
(return)g(information)d(ab)q(out)249 885 y(receiv)o(ed)g(messages.)291
939 y(The)f(PVM)h(mo)q(del)d(guaran)o(tees)j(that)f(message)g(order)h
(is)f(preserv)o(ed.)20 b(If)14 b(task)g(1)g(sends)h(message)249
993 y(A)j(to)g(task)h(2,)f(then)h(task)f(1)g(sends)i(message)e(B)g(to)g
(task)g(2,)h(message)f(A)g(will)f(arriv)o(e)h(at)g(task)g(2)249
1047 y(b)q(efore)c(message)f(B.)g(Moreo)o(v)o(er,)h(if)e(b)q(oth)i
(messages)f(arriv)o(e)g(b)q(efore)i(task)e(2)g(do)q(es)h(a)f(receiv)o
(e,)h(then)g(a)249 1101 y(wildcard)g(receiv)o(e)h(will)d(alw)o(a)o(ys)h
(return)i(message)f(A.)291 1155 y(Message)f(bu\013ers)g(are)g(allo)q
(cated)e(dynamically)m(.)j(Therefore,)g(the)e(maxim)o(um)7
b(message)12 b(size)h(that)249 1209 y(can)e(b)q(e)g(sen)o(t)h(or)e
(receiv)o(ed)i(is)e(limited)f(only)h(b)o(y)g(the)h(amoun)o(t)e(of)h(a)o
(v)n(ailable)e(memory)g(on)j(a)f(giv)o(en)g(host.)249
1263 y(There)17 b(is)e(only)g(limited)f(\015o)o(w)h(con)o(trol)h(built)
e(in)o(to)h(PVM)i(3.3.)22 b(PVM)16 b(ma)o(y)e(giv)o(e)h(the)h(user)h(a)
e FB(c)n(an)l('t)249 1317 y(get)e(memory)f FA(error)h(when)f(the)h(sum)
e(of)g(incoming)f(messages)i(exceeds)i(the)e(a)o(v)n(ailable)e(memory)m
(,)f(but)249 1371 y(PVM)14 b(do)q(es)h(not)f(tell)f(other)i(tasks)f(to)
g(stop)g(sending)g(to)g(this)g(host.)249 1491 y FD(5.1)52
b(Pro)q(cess)17 b(Con)o(trol)p 249 1551 633 2 v 248 1605
2 54 v 274 1589 a Fs(int)k(tid)g(=)h(pvm)p 561 1589 14
2 v 15 w(mytid\()f(void)f(\))p 880 1605 2 54 v 248 1659
V 274 1643 a(call)h(pvmfmytid\()f(tid)h(\))p 880 1659
V 249 1660 633 2 v 291 1756 a FA(The)16 b(routine)h(p)o(vm)p
606 1756 13 2 v 13 w(m)o(ytid\(\))e(returns)j(the)f Fs(TID)e
FA(of)h(this)g(pro)q(cess)j(and)d(can)g(b)q(e)h(called)f(m)o(ultiple)
249 1810 y(times.)21 b(It)15 b(enrolls)g(this)g(pro)q(cess)i(in)o(to)d
(PVM)i(if)e(this)h(is)g(the)h(\014rst)g(PVM)f(call.)21
b(An)o(y)15 b(PVM)g(system)249 1864 y(call)d(\(not)h(just)h(p)o(vm)p
577 1864 V 13 w(m)o(ytid\))d(will)h(enroll)h(a)f(task)h(in)g(PVM)h(if)e
(the)h(task)h(is)f(not)g(enrolled)g(b)q(efore)g(the)249
1918 y(call,)g(but)h(it)f(is)h(common)d(practice)k(to)f(call)f(p)o(vm)p
1028 1918 V 13 w(m)o(ytid)f(\014rst)j(to)f(p)q(erform)f(the)h
(enrolling.)p 249 1992 633 2 v 248 2045 2 54 v 274 2029
a Fs(int)21 b(info)g(=)h(pvm)p 583 2029 14 2 v 15 w(exit\()f(void)f(\))
p 880 2045 2 54 v 248 2099 V 274 2083 a(call)h(pvmfexit\()f(info)h(\))p
880 2099 V 249 2101 633 2 v 291 2196 a FA(The)c(routine)g(p)o(vm)p
607 2196 13 2 v 14 w(exit\(\))g(tells)g(the)h(lo)q(cal)e(p)o(vmd)g
(that)h(this)g(pro)q(cess)i(is)e(lea)o(ving)f(PVM.)h(This)249
2250 y(routine)c(do)q(es)g(not)g(kill)e(the)i(pro)q(cess,)h(whic)o(h)e
(can)h(con)o(tin)o(ue)g(to)f(p)q(erform)g(tasks)h(just)g(lik)o(e)e(an)o
(y)h(other)249 2304 y(UNIX)k(pro)q(cess.)25 b(Users)17
b(t)o(ypically)d(call)h(p)o(vm)p 984 2304 V 13 w(exit)g(righ)o(t)g(b)q
(efore)i(exiting)e(their)g(C)h(programs)e(and)249 2358
y(righ)o(t)f(b)q(efore)i Fs(STOP)e FA(in)h(their)g(F)m(ortran)g
(programs.)p eop
%%Page: 47 66
47 65 bop 249 251 a Fu(PVM)13 b(User)g(In)o(terface)1218
b(47)p 263 467 1314 2 v 262 521 2 54 v 288 505 a Fs(int)21
b(numt)g(=)h(pvm)p 597 505 14 2 v 15 w(spawn\()48 b(char)21
b(*task,)g(char)g(**argv,)f(int)h(flag,)p 1576 521 2
54 v 262 575 V 789 559 a(char)g(*where,)f(int)i(ntask,)e(int)h(*tids)g
(\))p 1576 575 V 262 629 V 288 613 a(call)g(pvmfspawn\()e(task,)i
(flag,)g(where,)g(ntask,)f(tids,)h(numt)g(\))p 1576 629
V 263 631 1314 2 v 291 786 a FA(The)d(routine)h(p)o(vm)p
610 786 13 2 v 13 w(spa)o(wn\(\))g(starts)h(up)e Fs(ntask)g
FA(copies)h(of)e(an)i(executable)g(\014le)g Fs(task)e
FA(on)h(the)249 840 y(virtual)f(mac)o(hine.)27 b Fs(argv)17
b FA(is)g(a)g(p)q(oin)o(ter)h(to)f(an)g(arra)o(y)g(of)g(argumen)o(ts)g
(to)g Fs(task)g FA(with)g(the)h(end)g(of)249 894 y(the)c(arra)o(y)f(sp)
q(eci\014ed)i(b)o(y)e(NULL.)g(If)g(task)g(tak)o(es)h(no)f(argumen)o
(ts,)g(then)h Fs(argv)e FA(is)h(NULL.)g(The)h Fs(flag)249
948 y FA(argumen)o(t)f(is)h(used)g(to)g(sp)q(ecify)h(options,)e(and)g
(is)h(a)g(sum)f(of:)274 1104 y(V)m(alue)49 b(Option)228
b(Meaning)p 249 1122 1455 2 v 355 1160 a(0)49 b(PvmT)m(askDefault)f
(PVM)14 b(c)o(ho)q(oses)h(where)g(to)f(spa)o(wn)g(pro)q(cesses.)355
1214 y(1)49 b(PvmT)m(askHost)99 b Fs(where)13 b FA(argumen)o(t)f(is)i
(a)g(particular)f(host)h(to)g(spa)o(wn)g(on.)355 1268
y(2)49 b(PvmT)m(askArc)o(h)96 b Fs(where)13 b FA(argumen)o(t)f(is)i(a)g
(PVM)p 1264 1268 13 2 v 15 w(AR)o(CH)f(to)h(spa)o(wn)g(on.)355
1322 y(4)49 b(PvmT)m(askDebug)66 b(starts)15 b(tasks)f(under)h(a)e
(debugger.)355 1376 y(8)49 b(PvmT)m(askT)m(race)83 b(trace)15
b(data)e(is)h(generated.)334 1429 y(16)49 b(PvmMppF)m(ron)o(t)86
b(starts)15 b(tasks)f(on)g(MPP)g(fron)o(t-end.)334 1483
y(32)49 b(PvmHostCompl)63 b(complemen)o(ts)12 b(host)i(set)h(in)e
Fs(where)p FA(.)p 249 1501 1455 2 v 249 1619 a(These)k(names)d(are)i
(prede\014ned)h(in)e Fr(p)o(vm3/includ)o(e/p)n(vm3.h)p
FA(.)k(In)d(F)m(ortran)f(all)f(the)i(names)f(are)249
1673 y(prede\014ned)39 b(in)d(parameter)h(statemen)o(ts)g(whic)o(h)g
(can)g(b)q(e)h(found)f(in)f(the)i FB(include)f FA(\014le)249
1727 y Fr(p)o(vm3/includ)o(e/fp)n(vm3.h)o FA(.)291 1781
y Fr(PvmT)l(askT)l(race)16 b FA(is)g(a)g(new)h(feature)g(in)f(PVM)h
(3.3.)25 b(It)16 b(causes)i(spa)o(wned)f(tasks)g(to)f(generate)249
1835 y(trace)c(ev)o(en)o(ts.)18 b(PvmT)m(asktrace)11
b(is)g(used)h(b)o(y)f(XPVM)h(\(see)g(Chapter)g(8\).)17
b(Otherwise,)c(the)f(user)g(m)o(ust)249 1889 y(sp)q(ecify)j(where)g
(the)f(trace)h(ev)o(en)o(ts)g(are)f(sen)o(t)h(in)e(p)o(vm)p
1094 1889 13 2 v 14 w(setopt\(\).)291 1943 y(On)g(return,)h
Fs(numt)f FA(is)g(set)h(to)f(the)h(n)o(um)o(b)q(er)f(of)g(tasks)h
(successfully)g(spa)o(wned)g(or)f(an)g(error)i(co)q(de)f(if)249
1997 y(no)i(tasks)g(could)f(b)q(e)h(started.)25 b(If)15
b(tasks)h(w)o(ere)h(started,)g(then)f(p)o(vm)p 1330 1997
V 14 w(spa)o(wn\(\))g(returns)h(a)e(v)o(ector)i(of)249
2051 y(the)c(spa)o(wned)g(tasks')f Fs(tids)p FA(;)f(and)h(if)g(some)f
(tasks)i(could)f(not)g(b)q(e)h(started,)g(the)g(corresp)q(onding)g
(error)249 2105 y(co)q(des)i(are)f(placed)h(in)e(the)i(last)e
Fn(ntask)e Ft(\000)e Fn(numt)14 b FA(p)q(ositions)g(of)f(the)h(v)o
(ector.)291 2159 y(The)g(p)o(vm)p 458 2159 V 13 w(spa)o(wn\(\))g(call)e
(can)i(also)f(start)h(tasks)g(on)f(m)o(ultipro)q(cessors.)18
b(In)c(the)g(case)g(of)f(the)h(In)o(tel)249 2213 y(iPSC/860)e(the)i
(follo)o(wing)d(restrictions)k(apply)m(.)h(Eac)o(h)e(spa)o(wn)f(call)g
(gets)h(a)f(sub)q(cub)q(e)i(of)e(size)h Fs(ntask)249
2267 y FA(and)h(loads)f(the)h(program)e Fs(task)h FA(on)h(all)e(of)h
(these)i(no)q(des.)22 b(The)15 b(iPSC/860)e(OS)i(has)g(an)g(allo)q
(cation)249 2321 y(limit)i(of)j(10)f(sub)q(cub)q(es)j(across)f(all)e
(users,)k(so)d(it)f(is)h(b)q(etter)i(to)e(start)g(a)g(blo)q(c)o(k)g(of)
f(tasks)i(on)e(an)249 2375 y(iPSC/860)12 b(with)i(a)f(single)g(p)o(vm)p
764 2375 V 13 w(spa)o(wn\(\))h(call)f(rather)h(than)g(sev)o(eral)g
(calls.)j(Tw)o(o)d(di\013eren)o(t)g(blo)q(c)o(ks)249
2429 y(of)g(tasks)i(spa)o(wned)f(separately)h(on)f(the)g(iPSC/860)f
(can)h(still)g(comm)o(uni)o(cate)e(with)i(eac)o(h)g(other)h(as)249
2483 y(w)o(ell)c(as)i(an)o(y)e(other)i(PVM)f(tasks)h(ev)o(en)g(though)f
(they)g(are)h(in)e(separate)j(sub)q(cub)q(es.)20 b(The)13
b(iPSC/860)p eop
%%Page: 48 67
48 66 bop 249 251 a Fu(48)1375 b(Chapter)13 b(5)249 507
y FA(OS)18 b(has)g(a)f(restriction)h(that)g(messages)g(going)e(from)g
(the)i(no)q(des)h(to)e(the)h(outside)g(w)o(orld)f(b)q(e)h(less)249
561 y(than)c(256)f(Kb)o(ytes.)p 249 635 698 2 v 248 689
2 54 v 274 673 a Fs(int)21 b(info)g(=)h(pvm)p 583 673
14 2 v 15 w(kill\()f(int)g(tid)g(\))p 946 689 2 54 v
248 743 V 274 727 a(call)g(pvmfkill\()f(tid,)h(info)g(\))p
946 743 V 249 745 698 2 v 291 840 a FA(The)16 b(routine)h(p)o(vm)p
606 840 13 2 v 13 w(kill\(\))f(kills)f(some)h(other)h(PVM)f(task)h
(iden)o(ti\014ed)g(b)o(y)f Fs(TID)p FA(.)f(This)i(routine)f(is)249
894 y(not)d(designed)g(to)f(kill)f(the)j(calling)d(task,)h(whic)o(h)h
(should)f(b)q(e)h(accomplished)f(b)o(y)g(calling)f(p)o(vm)p
1731 894 V 14 w(exit\(\))249 948 y(follo)o(w)o(ed)h(b)o(y)i(exit\(\).)p
249 1024 807 2 v 248 1078 2 54 v 274 1062 a Fs(int)21
b(info)g(=)h(pvm)p 583 1062 14 2 v 15 w(catchout\()e(FILE)h(*ff)g(\))p
1055 1078 2 54 v 248 1132 V 274 1116 a(call)g(pvmfcatchout\()e(onoff)i
(\))p 1055 1132 V 249 1134 807 2 v 291 1227 a FA(The)12
b(default)f(is)h(to)g(ha)o(v)o(e)f(PVM)h(write)g(the)h
FB(stderr)e FA(and)g FB(stdout)h FA(of)g(spa)o(wned)g(tasks)g(to)g(the)
g(log)f(\014le)249 1281 y Fs(/tmp/pvml.)p Fn(<)p Fs(uid)p
Fn(>)p FA(.)20 b(The)c(routine)f Fs(pvm)p 931 1281 14
2 v 15 w(catchout)f FA(causes)j(the)f(calling)d(task)j(to)f(catc)o(h)h
(output)249 1335 y(from)h(tasks)i(subsequen)o(tly)h(spa)o(wned.)33
b(Characters)20 b(prin)o(ted)f(on)f FB(stdout)h FA(or)g
FB(stderr)f FA(in)g(c)o(hildren)249 1389 y(tasks)c(are)h(collected)f(b)
o(y)g(the)g(p)o(vmds)f(and)g(sen)o(t)i(in)e(con)o(trol)h(messages)f(to)
h(the)g(paren)o(t)h(task,)e(whic)o(h)249 1443 y(tags)g(eac)o(h)g(line)f
(and)g(app)q(ends)i(it)e(to)g(the)h(sp)q(eci\014ed)i(\014le)d(\(in)g
(C\))h(or)g(standard)g(output)f(\(in)h(F)m(ortran\).)249
1496 y(Eac)o(h)h(of)g(the)h(prin)o(ts)f(is)g(prep)q(ended)i(with)d
(information)f(ab)q(out)i(whic)o(h)f(task)i(generated)g(the)g(prin)o
(t,)249 1550 y(and)h(the)g(end)g(of)f(the)h(prin)o(t)g(is)f(mark)o(ed)g
(to)g(help)h(separate)h(outputs)f(coming)e(from)f(sev)o(eral)k(tasks)
249 1604 y(at)d(once.)291 1658 y(If)c Fs(pvm)p 398 1658
V 15 w(exit)h FA(is)g(called)f(b)o(y)h(the)h(paren)o(t)g(while)e
(output)i(collection)e(is)h(in)g(e\013ect,)i(it)e(will)e(blo)q(c)o(k)i
(un)o(til)249 1712 y(all)i(tasks)i(sending)f(it)g(output)g(ha)o(v)o(e)g
(exited,)g(in)g(order)g(to)g(prin)o(t)g(all)f(their)i(output.)j(T)m(o)c
(a)o(v)o(oid)e(this,)249 1766 y(one)f(can)g(turn)h(o\013)f(the)g
(output)g(collection)g(b)o(y)g(calling)e(p)o(vm)p 1189
1766 13 2 v 13 w(catc)o(hout\(0\))j(b)q(efore)g(calling)d(p)o(vm)p
1752 1766 V 14 w(exit.)291 1820 y(New)20 b(capabilities)g(in)g(PVM)h
(3.3)e(include)i(the)f(abilit)o(y)f(to)h(register)i(sp)q(ecial)f(PVM)f
(tasks)h(to)249 1874 y(handle)c(the)h(jobs)f(of)f(adding)g(new)i
(hosts,)g(mapping)d(tasks)i(to)g(hosts,)h(and)f(starting)g(new)h
(tasks.)249 1928 y(This)d(creates)i(an)f(in)o(terface)g(for)f(adv)n
(anced)g(batc)o(h)h(sc)o(hedulers)h(\(examples)d(include)i(Condor)f
([11)o(],)249 1982 y(DQS)j([10)o(],)f(and)h(LSF)g([5)o(]\))f(to)h(plug)
f(in)o(to)f(PVM)i(and)g(run)g(PVM)g(jobs)f(in)h(batc)o(h)g(mo)q(de.)28
b(These)249 2036 y(register)19 b(routines)f(also)e(create)j(an)e(in)o
(terface)h(for)f(debugger)h(writers)h(to)e(dev)o(elop)g(sophisticated)
249 2090 y(debuggers)e(for)f(PVM.)291 2144 y(The)g(routine)g(names)f
(are)i(p)o(vm)p 798 2144 V 13 w(reg)p 866 2144 V 16 w(rm\(\),)d(p)o(vm)
p 1070 2144 V 14 w(reg)p 1139 2144 V 15 w(hoster\(\),)j(and)f(p)o(vm)p
1484 2144 V 13 w(reg)p 1552 2144 V 15 w(task)o(er\(\).)20
b(These)249 2198 y(are)14 b(adv)n(anced)g(functions)f(not)h(mean)o(t)e
(for)h(the)h(a)o(v)o(erage)g(PVM)g(user)g(and)g(th)o(us)g(are)g(not)f
(presen)o(ted)249 2252 y(in)g(detail)h(here.)19 b(Sp)q(eci\014cs)c(can)
g(b)q(e)f(found)f(in)h(App)q(endix)g(B.)p eop
%%Page: 49 68
49 67 bop 249 251 a Fu(PVM)13 b(User)g(In)o(terface)1218
b(49)249 507 y FD(5.2)52 b(Information)p 249 567 654
2 v 248 621 2 54 v 274 605 a Fs(int)21 b(tid)g(=)h(pvm)p
561 605 14 2 v 15 w(parent\()e(void)h(\))p 902 621 2
54 v 248 675 V 274 659 a(call)g(pvmfparent\()e(tid)j(\))p
902 675 V 249 677 654 2 v 291 772 a FA(The)12 b(routine)g(p)o(vm)p
597 772 13 2 v 14 w(paren)o(t\(\))h(returns)g(the)g Fs(TID)e
FA(of)h(the)g(pro)q(cess)i(that)e(spa)o(wned)h(this)f(task)g(or)g(the)
249 826 y(v)n(alue)h(of)h(PvmNoP)o(aren)o(t)f(if)g(not)h(created)h(b)o
(y)f(p)o(vm)p 1072 826 V 13 w(spa)o(wn\(\).)p 249 902
807 2 v 248 956 2 54 v 274 940 a Fs(int)21 b(dtid)g(=)h(pvm)p
583 940 14 2 v 15 w(tidtohost\()d(int)j(tid)f(\))p 1055
956 2 54 v 248 1010 V 274 994 a(call)g(pvmftidtohost\()e(tid,)i(dtid)g
(\))p 1055 1010 V 249 1012 807 2 v 291 1107 a FA(The)11
b(routine)h(p)o(vm)p 596 1107 13 2 v 13 w(tidtohost\(\))g(returns)h
(the)f(TID)f Fs(dtid)f FA(of)h(the)h(daemon)e(running)h(on)g(the)h
(same)249 1161 y(host)h(as)f Fs(TID)p FA(.)g(This)g(routine)h(is)f
(useful)g(for)g(determining)g(on)g(whic)o(h)g(host)h(a)f(giv)o(en)g
(task)g(is)h(running.)249 1215 y(More)j(general)f(information)d(ab)q
(out)j(the)g(en)o(tire)h(virtual)e(mac)o(hine,)g(including)g(the)h
(textual)g(name)249 1269 y(of)e(the)i(con\014gured)g(hosts,)f(can)g(b)q
(e)g(obtained)g(b)o(y)g(using)f(the)i(follo)o(wing)c(functions:)p
249 1343 1380 2 v 248 1397 2 54 v 274 1380 a Fs(int)21
b(info)g(=)h(pvm)p 583 1380 14 2 v 15 w(config\()48 b(int)21
b(*nhost,)g(int)g(*narch,)p 1627 1397 2 54 v 248 1451
V 797 1434 a(struct)g(pvmhostinfo)e(**hostp)i(\))p 1627
1451 V 248 1505 V 274 1488 a(call)g(pvmfconfig\()e(nhost,)i(narch,)g
(dtid,)f(name,)h(arch,)g(speed,)f(info\))p 1627 1505
V 249 1506 1380 2 v 291 1624 a FA(The)12 b(routine)h(p)o(vm)p
598 1624 13 2 v 13 w(con\014g\(\))g(returns)h(information)9
b(ab)q(out)k(the)g(virtual)e(mac)o(hine)g(including)g(the)249
1678 y(n)o(um)o(b)q(er)16 b(of)g(hosts,)i Fs(nhost)p
FA(,)e(and)g(the)h(n)o(um)o(b)q(er)f(of)g(di\013eren)o(t)i(data)e
(formats,)g Fs(narch)p FA(.)25 b Fs(hostp)16 b FA(is)g(a)249
1732 y(p)q(oin)o(ter)d(to)g(a)g(user)h(declaried)f(arra)o(y)g(of)f
Fs(pvmhostinfo)f FA(structures.)20 b(The)14 b(arra)o(y)f(should)f(b)q
(e)i(of)e(size)249 1786 y(at)17 b(least)g Fs(nhost)p
FA(.)27 b(On)18 b(return,)g(eac)o(h)g Fs(pvmhostinfo)d
FA(structure)k(con)o(tains)e(the)h(p)o(vmd)d(TID,)i(host)249
1840 y(name,)9 b(name)f(of)h(the)i(arc)o(hitecture,)g(and)f(relativ)o
(e)f(CPU)h(sp)q(eed)i(for)d(that)h(host)f(in)h(the)g(con\014guration.)
291 1894 y(The)15 b(F)m(ortran)f(function)g(returns)j(information)11
b(ab)q(out)k(one)g(host)f(p)q(er)i(call)e(and)g(cycles)i(through)249
1948 y(all)f(the)h(hosts.)24 b(Th)o(us,)16 b(if)f(p)o(vmfcon\014g)f(is)
i(called)f(nhost)h(times,)f(the)i(en)o(tire)f(virtual)f(mac)o(hine)g
(will)249 2002 y(b)q(e)j(represen)o(ted.)31 b(The)18
b(F)m(ortran)f(in)o(terface)h(w)o(orks)f(b)o(y)g(sa)o(ving)g(a)g(cop)o
(y)g(of)g(the)h(hostp)f(arra)o(y)g(and)249 2056 y(returning)f(one)g(en)
o(try)g(p)q(er)h(call.)22 b(All)15 b(the)h(hosts)h(m)o(ust)d(b)q(e)j
(cycled)f(through)g(b)q(efore)g(a)g(new)g(hostp)249 2110
y(arra)o(y)f(is)g(obtained.)22 b(Th)o(us,)16 b(if)e(the)i(virtual)e
(mac)o(hine)g(is)i(c)o(hanging)e(during)h(these)i(calls,)d(then)i(the)
249 2164 y(c)o(hange)d(will)f(app)q(ear)h(in)f(the)i
Fs(nhost)e FA(and)g Fs(narch)g FA(parameters,)h(but)g(not)f(in)h(the)g
(host)g(information.)249 2218 y(Presen)o(tly)m(,)h(there)i(is)e(no)f(w)
o(a)o(y)h(to)f(reset)j(p)o(vmfcon\014g\(\))c(and)i(force)h(it)e(to)h
(restart)i(the)e(cycle)h(when)f(it)249 2272 y(is)g(in)f(the)i(middle.)p
eop
%%Page: 50 69
50 68 bop 249 251 a Fu(50)1375 b(Chapter)13 b(5)p 249
467 1205 2 v 248 521 2 54 v 274 505 a Fs(int)21 b(info)g(=)h(pvm)p
583 505 14 2 v 15 w(tasks\()48 b(int)22 b(which,)e(int)h(*ntask,)p
1453 521 2 54 v 248 575 V 775 559 a(struct)g(pvmtaskinfo)e(**taskp)i
(\))p 1453 575 V 248 629 V 274 613 a(call)g(pvmftasks\()172
b(which,)21 b(ntask,)f(tid,)h(ptid,)g(dtid,)p 1453 629
V 248 683 V 775 667 a(flag,)g(aout,)g(info)g(\))p 1453
683 V 249 685 1205 2 v 291 803 a FA(The)d(routine)h(p)o(vm)p
610 803 13 2 v 13 w(tasks\(\))g(returns)h(information)15
b(ab)q(out)j(the)h(PVM)g(tasks)f(running)g(on)g(the)249
857 y(virtual)d(mac)o(hine.)24 b(The)17 b(in)o(teger)g
Fs(which)e FA(sp)q(eci\014es)j(whic)o(h)e(tasks)h(to)f(return)h
(information)d(ab)q(out.)249 911 y(The)j(presen)o(t)g(options)f(are)h
(\(0\),)f(whic)o(h)g(means)f(all)g(tasks,)i(a)f(p)o(vmd)e(TID)i(\()p
Fs(dtid)p FA(\),)g(whic)o(h)g(means)249 965 y(tasks)e(running)g(on)g
(that)g(host,)f(or)h(a)g(TID,)f(whic)o(h)h(means)f(just)h(the)g(giv)o
(en)g(task.)291 1019 y(The)9 b(n)o(um)o(b)q(er)g(of)g(tasks)g(is)g
(returned)i(in)e Fs(ntask)p FA(.)16 b Fs(taskp)8 b FA(is)h(a)g(p)q(oin)
o(ter)g(to)h(an)f(arra)o(y)g(of)f Fs(pvmtaskinfo)249
1073 y FA(structures.)25 b(The)16 b(arra)o(y)g(is)f(of)g(size)h
Fs(ntask)p FA(.)22 b(Eac)o(h)16 b Fs(pvmtaskinfo)d FA(structure)k(con)o
(tains)f(the)g(TID,)249 1127 y(p)o(vmd)d(TID,)i(paren)o(t)g(TID,)f(a)h
(status)h(\015ag,)e(and)h(the)g(spa)o(wned)h(\014le)f(name.)20
b(\(PVM)15 b(do)q(esn't)h(kno)o(w)249 1181 y(the)d(\014le)g(name)e(of)h
(man)o(ually)e(started)k(tasks)f(and)f(so)h(lea)o(v)o(es)g(these)h
(blank.\))j(The)c(F)m(ortran)f(function)249 1235 y(returns)18
b(information)c(ab)q(out)i(one)h(task)g(p)q(er)h(call)d(and)i(cycles)h
(through)e(all)g(the)h(tasks.)27 b(Th)o(us,)17 b(if)249
1289 y(where)12 b(=)f(0,)f(and)h(p)o(vmftasks)e(is)h(called)h(n)o(task)
g(times,)e(all)h(tasks)h(will)e(b)q(e)i(represen)o(ted.)20
b(The)11 b(F)m(ortran)249 1343 y(implemen)o(tation)h(assumes)k(that)f
(the)h(task)g(p)q(o)q(ol)f(is)h(not)f(c)o(hanging)g(while)g(it)g
(cycles)i(through)e(the)249 1397 y(tasks.)26 b(If)16
b(the)h(p)q(o)q(ol)f(c)o(hanges,)h(these)h(c)o(hanges)f(will)e(not)h
(app)q(ear)h(un)o(til)e(the)i(next)g(cycle)g(of)f(n)o(task)249
1451 y(calls)e(b)q(egins.)291 1505 y(Examples)g(of)h(the)i(use)f(of)g
(p)o(vm)p 809 1505 V 13 w(con\014g)g(and)f(p)o(vm)p 1106
1505 V 14 w(tasks)h(can)g(b)q(e)h(found)e(in)g(the)i(source)g(to)e(the)
249 1559 y(PVM)20 b(console,)h(whic)o(h)e(is)h(just)g(a)f(PVM)h(task)g
(itself.)35 b(Examples)18 b(of)h(the)i(use)f(of)f(the)h(F)m(ortran)249
1613 y(v)o(ersions)14 b(of)g(these)h(routines)g(can)f(b)q(e)g(found)g
(in)f(the)i(source)g Fs(pvm3/examples/te)o(stall)o(.f)p
FA(.)249 1733 y FD(5.3)52 b(Dynamic)18 b(Con\014guration)p
249 1862 1380 2 v 248 1915 2 54 v 274 1899 a Fs(int)j(info)g(=)h
(pvm_addhosts\()d(char)i(**hosts,)f(int)h(nhost,)g(int)g(*infos\))p
1627 1915 V 248 1969 V 274 1953 a(int)g(info)g(=)h(pvm_delhosts\()d
(char)i(**hosts,)f(int)h(nhost,)g(int)g(*infos\))p 1627
1969 V 248 2023 V 274 2007 a(call)g(pvmfaddhost\()e(host,)i(info)g(\))p
1627 2023 V 248 2077 V 274 2061 a(call)g(pvmfdelhost\()e(host,)i(info)g
(\))p 1627 2077 V 249 2079 1380 2 v 291 2172 a FA(The)e(C)g(routines)h
(add)e(or)h(delete)h(a)f(set)h(of)e Fs(hosts)g FA(in)h(the)h(virtual)e
(mac)o(hine.)32 b(The)19 b(F)m(ortran)249 2226 y(routines)14
b(add)f(or)h(delete)g(a)f(single)h Fs(host)e FA(in)h(the)h(virtual)f
(mac)o(hine.)j(In)e(the)g(F)m(ortran)f(routine)h Fs(info)249
2280 y FA(is)i(returned)j(as)d(1)g(or)h(a)f(status)h(co)q(de.)27
b(In)16 b(the)h(C)g(v)o(ersion)f Fs(info)g FA(is)g(returned)i(as)f(the)
g(n)o(um)o(b)q(er)f(of)249 2334 y(hosts)e(successfully)g(added.)k(The)
13 b(argumen)o(t)f Fs(infos)g FA(is)h(an)g(arra)o(y)g(of)f(length)h
Fs(nhost)f FA(that)h(con)o(tains)249 2388 y(the)i(status)g(co)q(de)g
(for)e(eac)o(h)i(individual)d(host)i(b)q(eing)g(added)h(or)f(deleted.)
20 b(This)14 b(allo)o(ws)e(the)j(user)g(to)249 2442 y(c)o(hec)o(k)h
(whether)g(only)d(one)i(of)f(a)g(set)i(of)e(hosts)h(caused)h(a)e
(problem)f(rather)j(than)e(trying)g(to)h(add)f(or)249
2496 y(delete)h(the)f(en)o(tire)h(set)g(of)e(hosts)i(again.)p
eop
%%Page: 51 70
51 69 bop 249 251 a Fu(PVM)13 b(User)g(In)o(terface)1218
b(51)291 507 y FA(These)16 b(routines)h(are)f(sometimes)d(used)k(to)e
(set)i(up)e(a)h(virtual)e(mac)o(hine,)h(but)g(more)g(often)h(they)249
561 y(are)k(used)h(to)f(increase)h(the)g(\015exibilit)o(y)d(and)i
(fault)f(tolerance)i(of)e(a)g(large)h(application.)35
b(These)249 615 y(routines)16 b(allo)o(w)e(an)h(application)f(to)i
(increase)g(the)h(a)o(v)n(ailable)c(computing)h(p)q(o)o(w)o(er)h
(\(adding)g(hosts\))249 669 y(if)f(it)g(determines)h(the)g(problem)e
(is)i(getting)f(harder)h(to)g(solv)o(e.)k(One)d(example)d(of)h(this)g
(w)o(ould)g(b)q(e)h(a)249 723 y(CAD/CAM)h(program)e(where,)j(during)f
(the)g(computation,)e(the)j(\014nite-elemen)o(t)e(grid)g(is)h
(re\014ned,)249 777 y(dramatically)d(increasing)k(the)g(size)g(of)e
(the)i(problem.)24 b(Another)17 b(use)g(w)o(ould)e(b)q(e)i(to)f
(increase)h(the)249 831 y(fault)d(tolerance)i(of)f(an)f(application)g
(b)o(y)h(ha)o(ving)f(it)g(detect)j(the)f(failure)e(of)g(a)h(host)g(and)
g(adding)f(in)249 885 y(a)g(replacemen)o(t.)249 1005
y FD(5.4)52 b(Signaling)p 249 1134 1439 2 v 248 1188
2 54 v 274 1172 a Fs(int)21 b(info)g(=)h(pvm)p 583 1172
14 2 v 15 w(sendsig\()e(int)h(tid,)g(int)g(signum)g(\))p
1687 1188 2 54 v 248 1242 V 274 1226 a(call)g(pvmfsendsig\()e(tid,)i
(signum,)g(info)g(\))p 1687 1242 V 248 1296 V 274 1280
a(int)g(info)g(=)h(pvm)p 583 1280 14 2 v 15 w(notify\()e(int)h(what,)g
(int)g(msgtag,)g(int)g(cnt,)g(int)g(tids)g(\))p 1687
1296 2 54 v 248 1350 V 274 1334 a(call)g(pvmfnotify\()e(what,)i
(msgtag,)g(cnt,)g(tids,)f(info)h(\))p 1687 1350 V 249
1352 1439 2 v 291 1447 a FA(The)15 b(routine)h(p)o(vm)p
604 1447 13 2 v 13 w(sendsig\(\))h(sends)f(a)g(signal)e
Fs(signum)g FA(to)h(another)h(PVM)g(task)g(iden)o(ti\014ed)f(b)o(y)249
1501 y Fs(TID)p FA(.)j(The)h(routine)h Fs(pvm)p 653 1501
14 2 v 15 w(notify)e FA(requests)j(PVM)e(to)g(notify)f(the)i(caller)f
(on)f(detecting)i(certain)249 1555 y(ev)o(en)o(ts.)f(The)14
b(presen)o(t)i(options)d(are)i(as)f(follo)o(ws:)247 1621
y(PvmT)m(askExit)19 b(-)13 b(notify)g(if)g(a)h(task)g(exits.)247
1692 y(PvmHostDelete)20 b(-)14 b(notify)f(if)g(a)h(host)g(is)g(deleted)
h(\(or)f(fails\).)247 1762 y(PvmHostAdd)20 b(-)14 b(notify)f(if)g(a)g
(host)h(is)g(added.)291 1829 y(In)h(resp)q(onse)i(to)e(a)g(notify)f
(request,)i(some)f(n)o(um)o(b)q(er)f(of)h(messages)g(\(see)h(App)q
(endix)g(B\))g(are)f(sen)o(t)249 1883 y(b)o(y)20 b(PVM)h(bac)o(k)f(to)g
(the)h(calling)d(task.)37 b(The)21 b(messages)f(are)h(tagged)f(with)g
(the)h(user)g(supplied)249 1937 y(msgtag.)27 b(The)17
b(tids)h(arra)o(y)f(sp)q(eci\014es)i(who)e(to)g(monitor)f(when)h(using)
g(T)m(askExit)g(or)g(HostDelete.)249 1991 y(The)g(arra)o(y)f(con)o
(tains)g(nothing)f(when)i(using)f(HostAdd.)25 b(If)16
b(required,)h(the)g(routines)g(p)o(vm)p 1726 1991 13
2 v 13 w(con\014g)249 2045 y(and)d(p)o(vm)p 412 2045
V 13 w(tasks)h(can)f(b)q(e)g(used)h(to)f(obtain)f(task)h(and)g(p)o(vmd)
e(tids.)291 2099 y(If)g(the)h(host)g(on)f(whic)o(h)g(task)h(A)f(is)h
(running)f(fails,)f(and)h(task)h(B)g(has)f(ask)o(ed)h(to)g(b)q(e)g
(noti\014ed)f(if)g(task)249 2153 y(A)k(exits,)f(then)h(task)g(B)f(will)
f(b)q(e)i(noti\014ed)g(ev)o(en)g(though)f(the)h(exit)f(w)o(as)h(caused)
g(indirectly)f(b)o(y)g(the)249 2206 y(host)f(failure.)p
eop
%%Page: 52 71
52 70 bop 249 251 a Fu(52)1375 b(Chapter)13 b(5)249 507
y FD(5.5)52 b(Setting)19 b(and)f(Getting)h(Options)p
249 636 1031 2 v 248 690 2 54 v 296 674 a Fs(int)i(oldval)f(=)i
(pvm_setopt\()e(int)h(what,)g(int)g(val)g(\))p 1279 690
V 248 744 V 296 728 a(int)g(val)g(=)h(pvm_getopt\()d(int)i(what)g(\))p
1279 744 V 248 798 V 274 782 a(call)g(pvmfsetopt\()e(what,)i(val,)g
(oldval)g(\))p 1279 798 V 248 852 V 274 836 a(call)g(pvmfgetopt\()e
(what,)i(val)g(\))p 1279 852 V 249 853 1031 2 v 291 946
a FA(The)11 b(routine)h Fs(pvm)p 583 946 14 2 v 15 w(setopt)e
FA(is)i(a)f(general-purp)q(ose)h(function)g(that)f(allo)o(ws)f(the)i
(user)h(to)e(set)h(or)g(get)249 1000 y(options)i(in)h(the)g(PVM)g
(system.)20 b(In)15 b(PVM)g(3,)f(p)o(vm)p 1079 1000 13
2 v 13 w(setopt)i(can)f(b)q(e)g(used)h(to)e(set)i(sev)o(eral)f
(options,)249 1054 y(including)c(automatic)f(error)i(message)g(prin)o
(ting,)e(debugging)h(lev)o(el,)h(and)f(comm)o(unication)e(routing)249
1108 y(metho)q(d)16 b(for)g(all)f(subsequen)o(t)j(PVM)f(calls.)25
b(p)o(vm)p 1056 1108 V 13 w(setopt)17 b(returns)h(the)f(previous)g(v)n
(alue)e(of)h(set)h(in)249 1162 y(oldv)n(al.)f(The)f(PVM)f(3.3)f
Fs(what)g FA(can)h(ha)o(v)o(e)g(the)g(follo)o(wing)d(v)n(alues:)436
1272 y(Option)j(V)m(alue)170 b(Meaning)p 291 1290 1315
2 v 337 1328 a Fs(PvmRoute)265 b FA(1)50 b(routing)13
b(p)q(olicy)337 1382 y Fs(PvmDebugMask)177 b FA(2)50
b(debugmask)337 1436 y Fs(PvmAutoErr)221 b FA(3)50 b(auto)13
b(error)i(rep)q(orting)337 1490 y Fs(PvmOutputTid)177
b FA(4)50 b(stdout)14 b(destination)g(for)g(c)o(hildren)337
1544 y Fs(PvmOutputCode)155 b FA(5)50 b(output)14 b(msgtag)337
1598 y Fs(PvmTraceTid)199 b FA(6)50 b(trace)15 b(destination)e(for)h(c)
o(hildren)337 1652 y Fs(PvmTraceCode)177 b FA(7)50 b(trace)15
b(msgtag)337 1706 y Fs(PvmFragSize)199 b FA(8)50 b(message)13
b(fragmen)o(t)g(size)337 1760 y Fs(PvmResvTids)199 b
FA(9)50 b(allo)o(w)12 b(messages)i(to)g(reserv)o(ed)i(tags)e(and)f
(tids)337 1814 y Fs(PvmSelfOutputTid)69 b FA(10)49 b(stdout)14
b(destination)g(for)g(self)337 1868 y Fs(PvmSelfOutputCode)47
b FA(11)i(output)14 b(msgtag)337 1921 y Fs(PvmSelfTraceTid)91
b FA(12)49 b(trace)15 b(destination)e(for)h(self)337
1975 y Fs(PvmSelfTraceCode)69 b FA(13)49 b(trace)15 b(msgtag)p
291 1993 V 249 2111 a(See)f(App)q(endix)f(B)h(for)e(allo)o(w)o(able)f
(v)n(alues)i(for)g(these)h(options.)j(F)m(uture)d(expansions)f(to)g
(this)g(list)g(are)249 2165 y(planned.)291 2219 y(The)g(most)f(p)q
(opular)h(use)h(of)e(p)o(vm)p 828 2219 13 2 v 14 w(setopt)i(is)f(to)g
(enable)g(direct)h(route)g(comm)o(unicatio)o(n)d(b)q(et)o(w)o(een)249
2273 y(PVM)h(tasks.)18 b(As)12 b(a)f(general)h(rule)g(of)f(th)o(um)o
(b,)f(PVM)i(comm)o(unication)d(bandwidth)i(o)o(v)o(er)g(a)h(net)o(w)o
(ork)249 2327 y(doubles)i(b)o(y)g(calling)249 2414 y
Fs(pvm_setopt\()20 b(PvmRoute,)g(PvmRouteDirect)e(\);)249
2502 y FA(The)i(dra)o(wbac)o(k)g(is)f(that)h(this)f(faster)h(comm)o
(unication)c(metho)q(d)j(is)h(not)f(scalable)h(under)g(Unix;)p
eop
%%Page: 53 72
53 71 bop 249 251 a Fu(PVM)13 b(User)g(In)o(terface)1218
b(53)249 507 y FA(hence,)16 b(it)f(ma)o(y)e(not)h(w)o(ork)h(if)f(the)i
(application)d(in)o(v)o(olv)o(es)h(o)o(v)o(er)h(60)f(tasks)i(that)f
(comm)o(unicate)d(ran-)249 561 y(domly)17 b(with)h(eac)o(h)h(other.)33
b(If)19 b(it)f(do)q(esn't)h(w)o(ork,)h(PVM)f(automatically)c(switc)o
(hes)20 b(bac)o(k)f(to)f(the)249 615 y(default)f(comm)o(unicati)o(on)d
(metho)q(d.)26 b(It)17 b(can)g(b)q(e)h(called)f(m)o(ultiple)d(times)i
(during)h(an)f(application)249 669 y(to)d(selectiv)o(ely)i(set)f(up)g
(direct)g(task-to-task)f(comm)o(unication)e(links,)h(but)i(t)o(ypical)e
(use)j(is)e(to)h(call)e(it)249 723 y(once)j(after)f(the)g(initial)e
(call)h(to)h(p)o(vm)p 842 723 13 2 v 13 w(m)o(ytid\(\).)249
844 y FD(5.6)52 b(Message)17 b(P)o(assing)249 951 y FA(Sending)12
b(a)g(message)f(comprises)h(three)h(steps)h(in)d(PVM.)h(First,)g(a)g
(send)h(bu\013er)g(m)o(ust)e(b)q(e)i(initialized)249
1005 y(b)o(y)18 b(a)g(call)g(to)g(p)o(vm)p 568 1005 V
13 w(initsend\(\))h(or)f(p)o(vm)p 910 1005 V 14 w(mkbuf\(\).)29
b(Second,)20 b(the)f(message)f(m)o(ust)f(b)q(e)i(\\pac)o(k)o(ed")249
1059 y(in)o(to)c(this)g(bu\013er)i(using)e(an)o(y)g(n)o(um)o(b)q(er)g
(and)g(com)o(bination)e(of)i(p)o(vm)p 1332 1059 V 13
w(pk*\(\))g(routines.)24 b(\(In)15 b(F)m(ortran)249 1113
y(all)j(message)i(pac)o(king)e(is)i(done)f(with)h(the)g(p)o(vmfpac)o
(k\(\))e(subroutine.\))35 b(Third,)20 b(the)h(completed)249
1167 y(message)15 b(is)h(sen)o(t)g(to)f(another)h(pro)q(cess)i(b)o(y)d
(calling)f(the)i(p)o(vm)p 1242 1167 V 14 w(send\(\))g(routine)g(or)f(m)
o(ulticast)f(with)249 1221 y(the)h(p)o(vm)p 403 1221
V 13 w(mcast\(\))e(routine.)291 1275 y(A)i(message)f(is)h(receiv)o(ed)h
(b)o(y)f(calling)e(either)j(a)f(blo)q(c)o(king)e(or)i(non)o(blo)q(c)o
(king)f(receiv)o(e)i(routine)f(and)249 1329 y(then)f(\\unpac)o(king")e
(eac)o(h)i(of)e(the)i(pac)o(k)o(ed)g(items)e(from)f(the)j(receiv)o(e)h
(bu\013er.)j(The)c(receiv)o(e)g(routines)249 1383 y(can)e(b)q(e)g(set)h
(to)e(accept)i FB(any)f FA(message,)f(or)h(an)o(y)f(message)g(from)f(a)
i(sp)q(eci\014ed)h(source,)g(or)e(an)o(y)g(message)249
1437 y(with)16 b(a)h(sp)q(eci\014ed)h(message)e(tag,)g(or)h(only)f
(messages)g(with)h(a)f(giv)o(en)g(message)g(tag)g(from)f(a)i(giv)o(en)
249 1491 y(source.)22 b(There)16 b(is)f(also)f(a)h(prob)q(e)h(function)
e(that)h(returns)i(whether)f(a)e(message)h(has)g(arriv)o(ed,)g(but)249
1545 y(do)q(es)g(not)e(actually)g(receiv)o(e)j(it.)291
1599 y(If)11 b(required,)i(other)g(receiv)o(e)g(con)o(texts)g(can)f(b)q
(e)h(handled)f(b)o(y)g(PVM)g(3.)17 b(The)12 b(routine)h(p)o(vm)p
1712 1599 V 13 w(recvf\(\))249 1653 y(allo)o(ws)k(users)j(to)e
(de\014ne)h(their)g(o)o(wn)f(receiv)o(e)i(con)o(texts)f(that)f(will)f
(b)q(e)i(used)g(b)o(y)f(the)h(subsequen)o(t)249 1707
y(PVM)14 b(receiv)o(e)i(routines.)249 1790 y Fr(5.6.1)48
b(Message)16 b(Bu\013ers)p 249 1893 916 2 v 248 1947
2 54 v 274 1931 a Fs(int)21 b(bufid)g(=)g(pvm)p 604 1931
14 2 v 16 w(initsend\()e(int)j(encoding)e(\))p 1164 1947
2 54 v 248 2001 V 274 1985 a(call)h(pvmfinitsend\()e(encoding,)h(bufid)
h(\))p 1164 2001 V 249 2002 916 2 v 291 2098 a FA(If)g(the)i(user)h(is)
e(using)g(only)f(a)h(single)g(send)i(bu\013er)f(\(and)f(this)g(is)h
(the)f(t)o(ypical)g(case\))h(then)249 2152 y(p)o(vm)p
331 2152 13 2 v 13 w(initsend\(\))d(is)f(the)h(only)e(required)i
(bu\013er)g(routine.)34 b(It)20 b(is)f(called)f(b)q(efore)i(pac)o(king)
f(a)g(new)249 2206 y(message)c(in)o(to)g(the)h(bu\013er.)24
b(The)16 b(routine)g(p)o(vm)p 1023 2206 V 13 w(initsend)g(clears)g(the)
g(send)g(bu\013er)h(and)e(creates)i(a)249 2260 y(new)c(one)g(for)f(pac)
o(king)f(a)i(new)f(message.)18 b(The)13 b(enco)q(ding)f(sc)o(heme)h
(used)g(for)f(this)h(pac)o(king)f(is)g(set)h(b)o(y)249
2314 y Fs(encoding)p FA(.)j(The)f(new)f(bu\013er)h(iden)o(ti\014er)f
(is)g(returned)h(in)f Fs(bufid)p FA(.)291 2368 y(The)g
Fs(encoding)e FA(options)i(are)g(as)g(follo)o(ws:)249
2434 y Fr(PvmDataDefault)k FA({)j(XDR)f(enco)q(ding)i(is)f(used)h(b)o
(y)f(default)g(b)q(ecause)i(PVM)f(cannot)g(kno)o(w)249
2488 y(whether)15 b(the)e(user)h(is)f(going)f(to)h(add)g(a)g
(heterogeneous)i(mac)o(hine)d(b)q(efore)i(this)f(message)g(is)g(sen)o
(t.)18 b(If)p eop
%%Page: 54 73
54 72 bop 249 251 a Fu(54)1375 b(Chapter)13 b(5)249 507
y FA(the)j(user)h(kno)o(ws)e(that)h(the)g(next)g(message)f(will)g(b)q
(e)h(sen)o(t)g(only)f(to)g(a)h(mac)o(hine)e(that)h(understands)249
561 y(the)g(nativ)o(e)e(format,)f(then)i(he)h(can)f(use)g
FB(PvmDataR)n(aw)h FA(enco)q(ding)f(and)g(sa)o(v)o(e)g(on)f(enco)q
(ding)i(costs.)249 632 y Fr(PvmDataRa)o(w)20 b FA({)d(no)f(enco)q(ding)
h(is)g(done.)27 b(Messages)18 b(are)f(sen)o(t)h(in)e(their)i(original)d
(format.)24 b(If)249 686 y(the)15 b(receiving)f(pro)q(cess)i(cannot)e
(read)g(this)g(format,)d(it)j(will)e(return)j(an)f(error)h(during)e
(unpac)o(king.)249 756 y Fr(PvmDataInPlace)19 b FA({)c(data)h(left)g
(in)f(place)h(to)g(sa)o(v)o(e)g(on)g(pac)o(king)f(costs.)25
b(Bu\013er)17 b(con)o(tains)f(only)249 810 y(sizes)j(and)e(p)q(oin)o
(ters)i(to)e(the)h(items)f(to)h(b)q(e)g(sen)o(t.)30 b(When)18
b(p)o(vm)p 1276 810 13 2 v 13 w(send\(\))h(is)f(called,)g(the)g(items)f
(are)249 864 y(copied)c(directly)h(out)f(of)f(the)i(user's)g(memory)m
(.)h(This)e(option)f(decreases)k(the)d(n)o(um)o(b)q(er)g(of)f(times)g
(the)249 918 y(message)i(is)h(copied)g(at)f(the)h(exp)q(ense)i(of)d
(requiring)g(the)h(user)h(to)e(not)h(mo)q(dify)d(the)j(items)f(b)q(et)o
(w)o(een)249 972 y(the)i(time)f(they)h(are)g(pac)o(k)o(ed)g(and)g(the)g
(time)f(they)h(are)g(sen)o(t.)24 b(One)17 b(use)g(of)e(this)g(option)g
(w)o(ould)g(b)q(e)249 1026 y(to)h(call)e(pac)o(k)i(once)g(and)g(mo)q
(dify)d(and)i(send)i(certain)f(items)f(\(arra)o(ys\))h(m)o(ultiple)d
(times)i(during)g(an)249 1080 y(application.)29 b(An)18
b(example)f(w)o(ould)g(b)q(e)i(passing)e(of)h(b)q(oundary)g(regions)g
(in)f(a)h(discretized)i(PDE)249 1134 y(implemen)o(tation.)291
1201 y(The)15 b(follo)o(wing)d(message)j(bu\013er)h(routines)g(are)f
(required)h(only)e(if)g(the)i(user)g(wishes)g(to)f(manage)249
1254 y(m)o(ultiple)9 b(message)j(bu\013ers)h(inside)e(an)h
(application.)j(Multiple)c(message)h(bu\013ers)h(are)f(not)f(required)
249 1308 y(for)k(most)g(message)g(passing)g(b)q(et)o(w)o(een)i(pro)q
(cesses.)26 b(In)16 b(PVM)g(3)f(there)i(is)e(one)h FB(active)g
FA(send)g(bu\013er)249 1362 y(and)11 b(one)g FB(active)g
FA(receiv)o(e)i(bu\013er)f(p)q(er)g(pro)q(cess)g(at)f(an)o(y)g(giv)o
(en)g(mom)o(en)o(t.)k(The)d(dev)o(elop)q(er)f(ma)o(y)f(create)249
1416 y(an)o(y)17 b(n)o(um)o(b)q(er)f(of)h(message)g(bu\013ers)h(and)f
(switc)o(h)h(b)q(et)o(w)o(een)g(them)f(for)g(the)g(pac)o(king)g(and)g
(sending)249 1470 y(of)e(data.)22 b(The)16 b(pac)o(king,)e(sending,)i
(receiving,)f(and)h(unpac)o(king)e(routines)i(a\013ect)h(only)d(the)i
FB(active)249 1524 y FA(bu\013ers.)p 249 1590 851 2 v
248 1644 2 54 v 274 1628 a Fs(int)21 b(bufid)g(=)g(pvm)p
604 1628 14 2 v 16 w(mkbuf\()f(int)h(encoding)f(\))p
1098 1644 2 54 v 248 1698 V 274 1682 a(call)h(pvmfmkbuf\()f(encoding,)g
(bufid)g(\))p 1098 1698 V 249 1700 851 2 v 291 1793 a
FA(The)c(routine)h(p)o(vm)p 606 1793 13 2 v 13 w(mkbuf)e(creates)j(a)e
(new)h(empt)o(y)e(send)i(bu\013er)h(and)e(sp)q(eci\014es)i(the)f(enco)q
(ding)249 1847 y(metho)q(d)c(used)i(for)e(pac)o(king)h(messages.)k(It)c
(returns)h(a)f(bu\013er)h(iden)o(ti\014er)f Fs(bufid)p
FA(.)p 249 1921 807 2 v 248 1974 2 54 v 274 1958 a Fs(int)21
b(info)g(=)h(pvm)p 583 1958 14 2 v 15 w(freebuf\()e(int)h(bufid)g(\))p
1055 1974 2 54 v 248 2028 V 274 2012 a(call)g(pvmffreebuf\()e(bufid,)i
(info)g(\))p 1055 2028 V 249 2030 807 2 v 291 2125 a
FA(The)c(routine)g(p)o(vm)p 607 2125 13 2 v 14 w(freebuf\(\))h(disp)q
(oses)g(of)e(the)i(bu\013er)g(with)f(iden)o(ti\014er)g
Fs(bufid)p FA(.)26 b(This)17 b(should)249 2179 y(b)q(e)g(done)g(after)g
(a)g(message)f(has)h(b)q(een)h(sen)o(t)g(and)e(is)h(no)f(longer)h
(needed.)28 b(Call)16 b(p)o(vm)p 1631 2179 V 13 w(mkbuf\(\))f(to)249
2233 y(create)k(a)f(bu\013er)g(for)g(a)f(new)h(message)f(if)g
(required.)30 b(Neither)19 b(of)e(these)i(calls)e(is)h(required)h(when)
249 2287 y(using)14 b(p)o(vm)p 440 2287 V 13 w(initsend\(\),)g(whic)o
(h)g(p)q(erforms)f(these)i(functions)f(for)g(the)g(user.)p
eop
%%Page: 55 74
55 73 bop 249 251 a Fu(PVM)13 b(User)g(In)o(terface)1218
b(55)p 249 467 720 2 v 248 521 2 54 v 274 505 a Fs(int)21
b(bufid)g(=)g(pvm)p 604 505 14 2 v 16 w(getsbuf\()f(void)h(\))p
968 521 2 54 v 248 575 V 274 559 a(call)g(pvmfgetsbuf\()e(bufid)i(\))p
968 575 V 248 629 V 274 613 a(int)g(bufid)g(=)g(pvm)p
604 613 14 2 v 16 w(getrbuf\()f(void)h(\))p 968 629 2
54 v 248 683 V 274 667 a(call)g(pvmfgetrbuf\()e(bufid)i(\))p
968 683 V 249 685 720 2 v 291 780 a FA(p)o(vm)p 373 780
13 2 v 13 w(getsbuf\(\))g(returns)h(the)f(activ)o(e)g(send)g(bu\013er)h
(iden)o(ti\014er.)38 b(p)o(vm)p 1441 780 V 13 w(getrbuf\(\))21
b(returns)h(the)249 834 y(activ)o(e)14 b(receiv)o(e)h(bu\013er)g(iden)o
(ti\014er.)p 249 900 851 2 v 248 954 2 54 v 274 938 a
Fs(int)21 b(oldbuf)g(=)g(pvm)p 626 938 14 2 v 15 w(setsbuf\()f(int)i
(bufid)e(\))p 1098 954 2 54 v 248 1008 V 274 992 a(call)h
(pvmfsetrbuf\()e(bufid,)i(oldbuf)f(\))p 1098 1008 V 248
1062 V 274 1046 a(int)h(oldbuf)g(=)g(pvm)p 626 1046 14
2 v 15 w(setrbuf\()f(int)i(bufid)e(\))p 1098 1062 2 54
v 248 1116 V 274 1100 a(call)h(pvmfsetrbuf\()e(bufid,)i(oldbuf)f(\))p
1098 1116 V 249 1118 851 2 v 291 1213 a FA(These)d(routines)f(set)h
(the)g(activ)o(e)f(send)h(\(or)f(receiv)o(e\))h(bu\013er)g(to)f
Fs(bufid)p FA(,)f(sa)o(v)o(e)h(the)g(state)h(of)e(the)249
1267 y(previous)f(bu\013er,)h(and)e(return)j(the)e(previous)g(activ)o
(e)g(bu\013er)h(iden)o(ti\014er)f Fs(oldbuf)p FA(.)291
1321 y(If)e Fs(bufid)g FA(is)h(set)g(to)g(0)g(in)f(p)o(vm)p
770 1321 13 2 v 13 w(setsbuf\(\))j(or)e(p)o(vm)p 1085
1321 V 13 w(setrbuf\(\),)h(then)f(the)h(presen)o(t)g(bu\013er)g(is)f
(sa)o(v)o(ed)249 1375 y(and)19 b(there)i(is)e(no)h(activ)o(e)f
(bu\013er.)36 b(This)19 b(feature)h(can)g(b)q(e)g(used)g(to)g(sa)o(v)o
(e)f(the)h(presen)o(t)h(state)g(of)249 1429 y(an)16 b(application's)e
(messages)h(so)h(that)g(a)f(math)g(library)f(or)i(graphical)f(in)o
(terface)h(whic)o(h)g(also)f(uses)249 1483 y(PVM)h(messages)f(will)f
(not)h(in)o(terfere)i(with)e(the)h(state)g(of)f(the)h(application's)e
(bu\013ers.)24 b(After)16 b(they)249 1537 y(complete,)d(the)h
(application's)f(bu\013ers)i(can)f(b)q(e)h(reset)g(to)f(activ)o(e.)291
1591 y(It)e(is)g(p)q(ossible)h(to)f(forw)o(ard)g(messages)h(without)f
(repac)o(king)g(them)g(b)o(y)g(using)g(the)h(message)f(bu\013er)249
1645 y(routines.)19 b(This)13 b(is)h(illustrated)g(b)o(y)g(the)g(follo)
o(wing)d(fragmen)o(t.)249 1723 y Fs(bufid)21 b(=)g(pvm_recv\()f(src,)h
(tag)g(\);)249 1777 y(oldid)g(=)g(pvm_setsbuf\()f(bufid)g(\);)249
1831 y(info)43 b(=)21 b(pvm_send\()f(dst,)h(tag)g(\);)249
1885 y(info)43 b(=)21 b(pvm_freebuf\()f(oldid)g(\);)249
1993 y Fr(5.6.2)48 b(P)o(ac)o(king)14 b(Data)249 2076
y FA(Eac)o(h)j(of)e(the)i(follo)o(wing)d(C)i(routines)h(pac)o(ks)f(an)g
(arra)o(y)g(of)g(the)g(giv)o(en)g(data)g(t)o(yp)q(e)h(in)o(to)e(the)i
(activ)o(e)249 2130 y(send)c(bu\013er.)19 b(They)12 b(can)h(b)q(e)g
(called)f(m)o(ultiple)e(times)h(to)h(pac)o(k)h(data)f(in)o(to)f(a)h
(single)g(message.)17 b(Th)o(us,)249 2184 y(a)d(message)f(can)h(con)o
(tain)f(sev)o(eral)i(arra)o(ys)e(eac)o(h)i(with)e(a)g(di\013eren)o(t)i
(data)f(t)o(yp)q(e.)k(C)c(structures)i(m)o(ust)249 2238
y(b)q(e)c(passed)g(b)o(y)f(pac)o(king)f(their)h(individual)e(elemen)o
(ts.)17 b(There)12 b(is)f(no)g(limit)d(to)j(the)h(complexit)o(y)d(of)h
(the)249 2292 y(pac)o(k)o(ed)17 b(messages,)f(but)h(an)f(application)f
(should)h(unpac)o(k)g(the)h(messages)f(exactly)h(as)f(they)h(w)o(ere)
249 2346 y(pac)o(k)o(ed.)h(Although)c(this)g(is)f(not)h(strictly)g
(required,)h(it)e(is)h(a)g(safe)g(programmi)o(ng)d(practice.)291
2400 y(The)16 b(argumen)o(ts)g(for)g(eac)o(h)h(of)e(the)i(routines)g
(are)g(a)f(p)q(oin)o(ter)g(to)g(the)h(\014rst)g(item)e(to)h(b)q(e)h
(pac)o(k)o(ed,)249 2454 y Fs(nitem)d FA(whic)o(h)h(is)f(the)i(total)e
(n)o(um)o(b)q(er)g(of)g(items)g(to)h(pac)o(k)f(from)g(this)g(arra)o(y)m
(,)g(and)h Fs(stride)e FA(whic)o(h)i(is)249 2508 y(the)j(stride)g(to)f
(use)h(when)g(pac)o(king.)27 b(A)17 b(stride)h(of)f(1)g(means)f(a)h
(con)o(tiguous)g(v)o(ector)h(is)f(pac)o(k)o(ed,)h(a)p
eop
%%Page: 56 75
56 74 bop 249 251 a Fu(56)1375 b(Chapter)13 b(5)249 507
y FA(stride)k(of)f(2)h(means)e(ev)o(ery)j(other)f(item)e(is)h(pac)o(k)o
(ed,)h(and)g(so)g(on.)25 b(An)17 b(exception)g(is)g(p)o(vm)p
1706 507 13 2 v 13 w(pkstr\(\))249 561 y(whic)o(h)f(b)o(y)f
(de\014nition)g(pac)o(ks)h(a)g(NULL)g(terminated)f(c)o(haracter)i
(string)e(and)h(th)o(us)g(do)q(es)g(not)g(need)249 615
y Fs(nitem)d FA(or)h Fs(stride)e FA(argumen)o(ts.)p 249
689 1380 2 v 248 743 2 54 v 296 727 a Fs(int)21 b(info)g(=)g
(pvm_pkbyte\()64 b(char)g(*cp,)21 b(int)g(nitem,)g(int)g(stride)g(\))p
1627 743 V 248 797 V 296 781 a(int)g(info)g(=)g(pvm_pkcplx\()64
b(float)42 b(*xp,)21 b(int)g(nitem,)g(int)g(stride)g(\))p
1627 797 V 248 851 V 296 835 a(int)g(info)g(=)g(pvm_pkdcplx\()42
b(double)20 b(*zp,)h(int)g(nitem,)g(int)g(stride)g(\))p
1627 851 V 248 905 V 296 889 a(int)g(info)g(=)g(pvm_pkdouble\()f
(double)g(*dp,)h(int)g(nitem,)g(int)g(stride)g(\))p 1627
905 V 248 959 V 296 943 a(int)g(info)g(=)g(pvm_pkfloat\()42
b(float)g(*fp,)21 b(int)g(nitem,)g(int)g(stride)g(\))p
1627 959 V 248 1013 V 296 997 a(int)g(info)g(=)g(pvm_pkint\()86
b(int)g(*np,)21 b(int)g(nitem,)g(int)g(stride)g(\))p
1627 1013 V 248 1067 V 296 1051 a(int)g(info)g(=)g(pvm_pklong\()64
b(long)g(*np,)21 b(int)g(nitem,)g(int)g(stride)g(\))p
1627 1067 V 248 1121 V 296 1105 a(int)g(info)g(=)g(pvm_pkshort\()42
b(short)g(*np,)21 b(int)g(nitem,)g(int)g(stride)g(\))p
1627 1121 V 248 1175 V 296 1159 a(int)g(info)g(=)g(pvm_pkstr\()86
b(char)64 b(*cp)21 b(\))p 1627 1175 V 249 1176 1380 2
v 248 1230 2 54 v 296 1214 a(int)g(info)g(=)g(pvm_packf\()f(const)h
(char)g(*fmt,)g(...)g(\))p 1627 1230 V 249 1232 1380
2 v 291 1325 a FA(PVM)11 b(also)f(supplies)h(a)f(pac)o(king)g(routine)h
(that)f(uses)i(a)e(prin)o(tf-lik)o(e)g(format)e(expression)k(to)e(sp)q
(ecify)249 1379 y(what)15 b(data)g(to)h(pac)o(k)f(and)g(ho)o(w)g(to)g
(pac)o(k)g(it)g(in)o(to)g(the)h(send)g(bu\013er.)24 b(All)14
b(v)n(ariables)h(are)h(passed)g(as)249 1433 y(addresses)f(if)c(coun)o
(t)i(and)f(stride)h(are)g(sp)q(eci\014ed;)h(otherwise,)f(v)n(ariables)f
(are)h(assumed)f(to)g(b)q(e)h(v)n(alues.)249 1487 y(A)h(description)h
(of)e(the)h(format)e(syn)o(tax)i(is)g(giv)o(en)f(in)h(App)q(endix)g(B.)
291 1541 y(A)f(single)f(F)m(ortran)h(subroutine)h(handles)f(all)f(the)h
(pac)o(king)f(functions)h(of)g(the)g(ab)q(o)o(v)o(e)g(C)g(routines.)p
249 1617 1053 2 v 248 1671 2 54 v 274 1655 a Fs(call)21
b(pvmfpack\()f(what,)h(xp,)g(nitem,)f(stride,)h(info)g(\))p
1301 1671 V 249 1673 1053 2 v 291 1769 a FA(The)14 b(argumen)o(t)e
Fs(xp)h FA(is)h(the)g(\014rst)g(item)f(of)g(the)h(arra)o(y)f(to)h(b)q
(e)g(pac)o(k)o(ed.)k(Note)c(that)g(in)f(F)m(ortran)g(the)249
1823 y(n)o(um)o(b)q(er)i(of)g(c)o(haracters)i(in)f(a)f(string)h(to)f(b)
q(e)h(pac)o(k)o(ed)g(m)o(ust)f(b)q(e)h(sp)q(eci\014ed)h(in)e
Fs(nitem)p FA(.)23 b(The)16 b(in)o(teger)249 1877 y Fs(what)d
FA(sp)q(eci\014es)j(the)e(t)o(yp)q(e)h(of)e(data)h(to)f(b)q(e)i(pac)o
(k)o(ed.)j(The)c(supp)q(orted)i(options)d(are)h(as)g(follo)o(ws:)p
708 1924 677 2 v 754 1962 a Fs(STRING)93 b FA(0)71 b
Fs(REAL4)158 b FA(4)754 2016 y Fs(BYTE1)115 b FA(1)71
b Fs(COMPLEX8)92 b FA(5)754 2070 y Fs(INTEGER2)49 b FA(2)71
b Fs(REAL8)158 b FA(6)754 2123 y Fs(INTEGER4)49 b FA(3)71
b Fs(COMPLEX16)f FA(7)p 708 2141 V 249 2208 a(These)32
b(names)d(ha)o(v)o(e)h(b)q(een)i(prede\014ned)g(in)d(parameter)h
(statemen)o(ts)h(in)f(the)h(include)f(\014le)249 2261
y Fs(pvm3/include/fpvm3)o(.h)p FA(.)j(Some)19 b(v)o(endors)i(ma)o(y)d
(extend)j(this)f(list)f(to)h(include)g(64-bit)f(arc)o(hi-)249
2315 y(tectures)e(in)d(their)g(PVM)h(implemen)o(tatio)o(ns.)i(W)m(e)d
(will)f(b)q(e)i(adding)e(INTEGER8,)h(REAL16,)f(etc.,)249
2369 y(as)h(so)q(on)g(as)g(XDR)f(supp)q(ort)i(for)e(these)j(data)d(t)o
(yp)q(es)i(is)f(a)o(v)n(ailable.)p eop
%%Page: 57 76
57 75 bop 249 251 a Fu(PVM)13 b(User)g(In)o(terface)1218
b(57)249 507 y Fr(5.6.3)48 b(Sending)13 b(and)i(Receiving)f(Data)p
249 610 1265 2 v 248 664 2 54 v 274 648 a Fs(int)21 b(info)g(=)h(pvm)p
583 648 14 2 v 15 w(send\()f(int)g(tid,)g(int)g(msgtag)f(\))p
1512 664 2 54 v 248 718 V 274 702 a(call)h(pvmfsend\()f(tid,)h(msgtag,)
f(info)h(\))p 1512 718 V 248 772 V 274 756 a(int)g(info)g(=)h(pvm)p
583 756 14 2 v 15 w(mcast\()e(int)h(*tids,)g(int)g(ntask,)g(int)g
(msgtag)f(\))p 1512 772 2 54 v 248 826 V 274 810 a(call)h(pvmfmcast\()f
(ntask,)g(tids,)h(msgtag,)f(info)h(\))p 1512 826 V 249
828 1265 2 v 291 923 a FA(The)11 b(routine)h(p)o(vm)p
596 923 13 2 v 13 w(send\(\))h(lab)q(els)e(the)h(message)f(with)g(an)g
(in)o(teger)h(iden)o(ti\014er)g Fs(msgtag)e FA(and)h(sends)249
977 y(it)j(imm)o(ediately)d(to)j(the)g(pro)q(cess)i Fs(TID)p
FA(.)291 1031 y(The)j(routine)g(p)o(vm)p 611 1031 V 13
w(mcast\(\))g(lab)q(els)g(the)g(message)g(with)f(an)h(in)o(teger)g
(iden)o(ti\014er)h Fs(msgtag)d FA(and)249 1085 y(broadcasts)h(the)g
(message)f(to)h(all)e(tasks)i(sp)q(eci\014ed)g(in)f(the)h(in)o(teger)g
(arra)o(y)f Fs(tids)g FA(\(except)h(itself)s(\).)249
1139 y(The)c Fs(tids)f FA(arra)o(y)h(is)g(of)f(length)h
Fs(ntask)p FA(.)p 249 1213 1184 2 v 248 1267 2 54 v 274
1251 a Fs(int)21 b(info)g(=)h(pvm)p 583 1251 14 2 v 15
w(psend\()48 b(int)22 b(tid,)e(int)i(msgtag,)p 1431 1267
2 54 v 248 1321 V 775 1304 a(void)f(*vp,)g(int)g(cnt,)g(int)h(type)f
(\))p 1431 1321 V 248 1375 V 274 1358 a(call)g(pvmfpsend\()f(tid,)h
(msgtag,)f(xp,)h(cnt,)g(type,)g(info)g(\))p 1431 1375
V 249 1376 1184 2 v 291 1472 a FA(The)c(routine)g(p)o(vm)p
607 1472 13 2 v 14 w(psend\(\))h(pac)o(ks)f(and)g(sends)h(an)f(arra)o
(y)g(of)f(the)i(sp)q(eci\014ed)g(datat)o(yp)q(e)g(to)e(the)249
1526 y(task)c(iden)o(ti\014ed)f(b)o(y)g Fs(TID)p FA(.)g(The)g
(de\014ned)i(datat)o(yp)q(es)f(for)f(F)m(ortran)g(are)h(the)g(same)f
(as)g(for)g(p)o(vmfpac)o(k\(\).)249 1580 y(In)j(C)g(the)g
Fs(type)f FA(argumen)o(t)g(can)h(b)q(e)h(an)o(y)e(of)g(the)i(follo)o
(wing:)p 757 1625 580 2 v 803 1663 a Fs(PVM_STR)136 b(PVM_FLOAT)803
1717 y(PVM_BYTE)114 b(PVM_CPLX)803 1771 y(PVM_SHORT)92
b(PVM_DOUBLE)803 1824 y(PVM_INT)136 b(PVM_DCPLX)803 1878
y(PVM_LONG)114 b(PVM_UINT)803 1932 y(PVM_USHORT)70 b(PVM_ULONG)p
757 1950 V 291 2013 a FA(PVM)15 b(con)o(tains)g(sev)o(eral)h(metho)q
(ds)e(of)h(receiving)g(messages)h(at)f(a)f(task.)22 b(There)16
b(is)f(no)g(function)249 2067 y(matc)o(hing)e(in)h(PVM,)h(for)f
(example,)f(that)h(a)h(p)o(vm)p 1051 2067 13 2 v 13 w(psend)h(m)o(ust)d
(b)q(e)j(matc)o(hed)d(with)i(a)f(p)o(vm)p 1722 2067 V
13 w(precv.)249 2121 y(An)o(y)h(of)f(the)i(follo)o(wing)c(routines)j
(can)g(b)q(e)h(called)e(for)h(an)o(y)f(incoming)f(message)h(no)h
(matter)f(ho)o(w)g(it)249 2175 y(w)o(as)g(sen)o(t)h(\(or)f(m)o
(ulticast\).)p 249 2252 981 2 v 248 2306 2 54 v 274 2289
a Fs(int)21 b(bufid)g(=)g(pvm)p 604 2289 14 2 v 16 w(recv\()f(int)h
(tid,)g(int)h(msgtag)e(\))p 1229 2306 2 54 v 248 2360
V 274 2343 a(call)h(pvmfrecv\()f(tid,)h(msgtag,)f(bufid)h(\))p
1229 2360 V 249 2361 981 2 v 291 2454 a FA(This)14 b(blo)q(c)o(king)g
(receiv)o(e)i(routine)f(will)e(w)o(ait)h(un)o(til)g(a)h(message)f(with)
g(lab)q(el)h Fs(msgtag)e FA(has)i(arriv)o(ed)249 2508
y(from)f Fs(TID)p FA(.)h(A)h(v)n(alue)g(of)f(-1)g(in)h
Fs(msgtag)f FA(or)h Fs(TID)f FA(matc)o(hes)h(an)o(ything)f
(\(wildcard\).)24 b(It)16 b(then)g(places)p eop
%%Page: 58 77
58 76 bop 249 251 a Fu(58)1375 b(Chapter)13 b(5)249 507
y FA(the)k(message)e(in)h(a)g(new)g(activ)o(e)g(receiv)o(e)h(bu\013er)g
(that)f(is)g(created.)26 b(The)16 b(previous)h(activ)o(e)f(receiv)o(e)
249 561 y(bu\013er)f(is)f(cleared)g(unless)h(it)f(has)g(b)q(een)h(sa)o
(v)o(ed)f(with)f(a)h(p)o(vm)p 1210 561 13 2 v 13 w(setrbuf\(\))h(call.)
p 249 637 1003 2 v 248 691 2 54 v 274 675 a Fs(int)21
b(bufid)g(=)g(pvm)p 604 675 14 2 v 16 w(nrecv\()f(int)h(tid,)g(int)g
(msgtag)g(\))p 1251 691 2 54 v 248 745 V 274 729 a(call)g(pvmfnrecv\()f
(tid,)h(msgtag,)f(bufid)h(\))p 1251 745 V 249 747 1003
2 v 291 842 a FA(If)16 b(the)i(requested)h(message)e(has)h(not)f(arriv)
o(ed,)g(then)h(the)g(non)o(blo)q(c)o(king)e(receiv)o(e)i(p)o(vm)p
1701 842 13 2 v 14 w(nrecv\(\))249 896 y(returns)g Fs(bufid)c
FA(=)i(0.)23 b(This)16 b(routine)g(can)h(b)q(e)f(called)g(m)o(ultiple)d
(times)i(for)h(the)h(same)e(message)g(to)249 950 y(c)o(hec)o(k)e
(whether)g(it)f(has)g(arriv)o(ed,)g(while)f(p)q(erforming)f(useful)i(w)
o(ork)g(b)q(et)o(w)o(een)h(calls.)k(When)12 b(no)g(more)249
1004 y(useful)g(w)o(ork)f(can)h(b)q(e)g(p)q(erformed,)f(the)h(blo)q(c)o
(king)f(receiv)o(e)i(p)o(vm)p 1249 1004 V 13 w(recv\(\))g(can)f(b)q(e)g
(called)f(for)h(the)g(same)249 1058 y(message.)20 b(If)15
b(a)f(message)g(with)h(lab)q(el)f Fs(msgtag)f FA(has)i(arriv)o(ed)g
(from)e Fs(TID)p FA(,)g(p)o(vm)p 1496 1058 V 14 w(nrecv\(\))j(places)f
(this)249 1112 y(message)c(in)g(a)g(new)h(activ)o(e)f(receiv)o(e)i
(bu\013er)f(\(whic)o(h)f(it)g(creates\))j(and)d(returns)i(the)e(ID)g
(of)g(this)h(bu\013er.)249 1166 y(The)f(previous)g(activ)o(e)g(receiv)o
(e)h(bu\013er)g(is)f(cleared)h(unless)f(it)g(has)g(b)q(een)g(sa)o(v)o
(ed)g(with)g(a)f(p)o(vm)p 1673 1166 V 14 w(setrbuf\(\))249
1220 y(call.)17 b(A)d(v)n(alue)g(of)f(-1)g(in)h Fs(msgtag)e
FA(or)i Fs(TID)f FA(matc)o(hes)h(an)o(ything)f(\(wildcard\).)p
249 1296 1003 2 v 248 1350 2 54 v 274 1334 a Fs(int)21
b(bufid)g(=)g(pvm)p 604 1334 14 2 v 16 w(probe\()f(int)h(tid,)g(int)g
(msgtag)g(\))p 1251 1350 2 54 v 248 1404 V 274 1388 a(call)g
(pvmfprobe\()f(tid,)h(msgtag,)f(bufid)h(\))p 1251 1404
V 249 1406 1003 2 v 291 1501 a FA(If)14 b(the)h(requested)i(message)d
(has)h(not)f(arriv)o(ed,)g(then)i(p)o(vm)p 1232 1501
13 2 v 13 w(prob)q(e\(\))f(returns)i Fs(bufid)c FA(=)g(0.)20
b(Oth-)249 1555 y(erwise,)e(it)e(returns)i(a)e(bu\014d)h(for)f(the)i
(message,)e(but)h(do)q(es)g(not)g(\\receiv)o(e")g(it.)26
b(This)16 b(routine)h(can)249 1609 y(b)q(e)i(called)f(m)o(ultiple)e
(times)h(for)h(the)h(same)f(message)g(to)g(c)o(hec)o(k)h(whether)h(it)e
(has)h(arriv)o(ed,)g(while)249 1663 y(p)q(erforming)12
b(useful)i(w)o(ork)f(b)q(et)o(w)o(een)i(calls.)j(In)c(addition,)e(p)o
(vm)p 1259 1663 V 13 w(bu\014nfo\(\))i(can)f(b)q(e)i(called)e(with)g
(the)249 1717 y(returned)j(bu\014d)e(to)f(determine)h(information)d(ab)
q(out)j(the)h(message)e(b)q(efore)i(receiving)f(it.)p
249 1791 1504 2 v 248 1845 2 54 v 274 1829 a Fs(int)21
b(bufid)g(=)g(pvm)p 604 1829 14 2 v 16 w(trecv\()f(int)h(tid,)g(int)g
(msgtag,)g(struct)f(timeval)h(*tmout)f(\))p 1752 1845
2 54 v 248 1899 V 274 1883 a(call)h(pvmftrecv\()f(tid,)h(msgtag,)f
(sec,)h(usec,)g(bufid)f(\))p 1752 1899 V 249 1900 1504
2 v 291 1993 a FA(PVM)c(also)g(supplies)h(a)f(timeout)f(v)o(ersion)i
(of)e(receiv)o(e.)27 b(Consider)17 b(the)g(case)h(where)f(a)f(message)
249 2047 y(is)f(nev)o(er)i(going)d(to)h(arriv)o(e)h(\(b)q(ecause)h(of)e
(error)h(or)g(failure\);)f(the)h(routine)g(p)o(vm)p 1523
2047 13 2 v 13 w(recv)h(w)o(ould)d(blo)q(c)o(k)249 2101
y(forev)o(er.)20 b(T)m(o)13 b(a)o(v)o(oid)g(suc)o(h)i(situations,)e
(the)i(user)g(ma)o(y)e(wish)h(to)g(giv)o(e)f(up)i(after)f(w)o(aiting)f
(for)h(a)g(\014xed)249 2155 y(amoun)o(t)e(of)g(time.)17
b(The)c(routine)h(p)o(vm)p 866 2155 V 13 w(trecv\(\))h(allo)o(ws)d(the)
i(user)g(to)f(sp)q(ecify)h(a)f(timeout)f(p)q(erio)q(d.)18
b(If)249 2209 y(the)e(timeout)e(p)q(erio)q(d)h(is)g(set)h(v)o(ery)g
(large,)f(then)h(p)o(vm)p 1103 2209 V 13 w(trecv)g(acts)g(lik)o(e)e(p)o
(vm)p 1466 2209 V 14 w(recv.)23 b(If)15 b(the)g(timeout)249
2263 y(p)q(erio)q(d)g(is)f(set)h(to)f(zero,)g(then)h(p)o(vm)p
813 2263 V 14 w(trecv)g(acts)g(lik)o(e)e(p)o(vm)p 1174
2263 V 13 w(nrecv.)20 b(Th)o(us,)14 b(p)o(vm)p 1513 2263
V 14 w(trecv)h(\014lls)f(the)h(gap)249 2317 y(b)q(et)o(w)o(een)g(the)g
(blo)q(c)o(king)e(and)g(non)o(blo)q(c)o(king)g(receiv)o(e)i(functions.)
p 249 2391 1570 2 v 248 2445 2 54 v 274 2429 a Fs(int)21
b(info)g(=)h(pvm)p 583 2429 14 2 v 15 w(bufinfo\()e(int)h(bufid,)g(int)
g(*bytes,)f(int)h(*msgtag,)f(int)i(*tid)f(\))p 1817 2445
2 54 v 248 2499 V 274 2483 a(call)g(pvmfbufinfo\()e(bufid,)i(bytes,)f
(msgtag,)h(tid,)g(info)g(\))p 1817 2499 V 249 2501 1570
2 v eop
%%Page: 59 78
59 77 bop 249 251 a Fu(PVM)13 b(User)g(In)o(terface)1218
b(59)291 507 y FA(The)19 b(routine)g(p)o(vm)p 611 507
13 2 v 13 w(bu\014nfo\(\))g(returns)i(msgtag,)d(source)i(TID,)e(and)h
(length)g(in)f(b)o(ytes)i(of)e(the)249 561 y(message)h(iden)o(ti\014ed)
h(b)o(y)f Fs(bufid)p FA(.)33 b(It)19 b(can)h(b)q(e)g(used)g(to)f
(determine)g(the)h(lab)q(el)f(and)g(source)i(of)d(a)249
615 y(message)c(that)g(w)o(as)f(receiv)o(ed)j(with)d(wildcards)h(sp)q
(eci\014ed.)p 249 689 1532 2 v 248 743 2 54 v 274 727
a Fs(int)21 b(info)g(=)h(pvm)p 583 727 14 2 v 15 w(precv\()48
b(int)22 b(tid,)e(int)i(msgtag,)e(void)h(*vp,)g(int)g(cnt,)p
1780 743 2 54 v 248 797 V 775 781 a(int)h(type,)e(int)h(*rtid,)g(int)g
(*rtag,)g(int)g(*rcnt)g(\))p 1780 797 V 248 851 V 274
835 a(call)g(pvmfprecv\()f(tid,)h(msgtag,)f(xp,)h(cnt,)g(type,)g(rtid,)
g(rtag,)f(rcnt,)h(info)g(\))p 1780 851 V 249 853 1532
2 v 291 948 a FA(The)15 b(routine)g(p)o(vm)p 603 948
13 2 v 13 w(precv\(\))h(com)o(bines)e(the)h(functions)g(of)f(a)g(blo)q
(c)o(king)g(receiv)o(e)i(and)f(unpac)o(king)249 1002
y(the)h(receiv)o(ed)g(bu\013er.)22 b(It)15 b(do)q(es)g(not)g(return)h
(a)f Fs(bufid)p FA(.)20 b(Instead,)15 b(it)g(returns)h(the)g(actual)e
(v)n(alues)h(of)249 1056 y Fs(TID)p FA(,)e Fs(msgtag)p
FA(,)f(and)i Fs(cnt)p FA(.)p 249 1129 1396 2 v 249 1191
2 63 v 263 1170 a Fs(int)21 b(\(*old\)\(\))f(=)i(pvm)p
659 1170 14 2 v 15 w(recvf\(int)e(\(*new\)\(int)g(buf,)h(int)g(tid,)g
(int)g(tag\)\))p 1642 1191 2 63 v 249 1193 1396 2 v 291
1288 a FA(The)e(routine)g(p)o(vm)p 611 1288 13 2 v 13
w(recvf\(\))h(mo)q(di\014es)e(the)h(receiv)o(e)h(con)o(text)f(used)h(b)
o(y)f(the)g(receiv)o(e)h(functions)249 1342 y(and)f(can)h(b)q(e)f(used)
h(to)f(extend)i(PVM.)e(The)g(default)g(receiv)o(e)i(con)o(text)f(is)f
(to)g(matc)o(h)f(on)h(source)249 1396 y(and)d(message)g(tag.)24
b(This)16 b(can)g(b)q(e)h(mo)q(di\014ed)d(to)i(an)o(y)g(user-de\014ned)
i(comparison)d(function.)24 b(\(See)249 1450 y(App)q(endix)15
b(B)h(for)f(an)f(example)g(of)h(creating)g(a)g(prob)q(e)h(function)e
(with)h(p)o(vm)p 1476 1450 V 13 w(recf\(\).\))23 b(There)16
b(is)f(no)249 1504 y(F)m(ortran)f(in)o(terface)g(routine)g(for)g(p)o
(vm)p 857 1504 V 13 w(recvf\(\).)249 1587 y Fr(5.6.4)48
b(Unpac)o(king)14 b(Data)249 1670 y FA(The)g(follo)o(wing)c(C)j
(routines)g(unpac)o(k)h(\(m)o(ultiple\))d(data)h(t)o(yp)q(es)i(from)d
(the)j(activ)o(e)f(receiv)o(e)h(bu\013er.)19 b(In)249
1724 y(an)c(application)e(they)i(should)g(matc)o(h)e(their)i(corresp)q
(onding)h(pac)o(k)f(routines)g(in)g(t)o(yp)q(e,)g(n)o(um)o(b)q(er)f(of)
249 1778 y(items,)d(and)h(stride.)19 b Fs(nitem)11 b
FA(is)h(the)h(n)o(um)o(b)q(er)f(of)f(items)h(of)f(the)i(giv)o(en)f(t)o
(yp)q(e)h(to)f(unpac)o(k,)g(and)g Fs(stride)249 1832
y FA(is)i(the)g(stride.)p 249 1898 1401 2 v 248 1952
2 54 v 296 1936 a Fs(int)21 b(info)g(=)g(pvm_upkbyte\()63
b(char)i(*cp,)21 b(int)g(nitem,)g(int)g(stride)f(\))p
1649 1952 V 248 2006 V 296 1990 a(int)h(info)g(=)g(pvm_upkcplx\()63
b(float)43 b(*xp,)21 b(int)g(nitem,)g(int)g(stride)f(\))p
1649 2006 V 248 2060 V 296 2044 a(int)h(info)g(=)g(pvm_upkdcplx\()41
b(double)21 b(*zp,)g(int)g(nitem,)g(int)g(stride)f(\))p
1649 2060 V 248 2114 V 296 2098 a(int)h(info)g(=)g(pvm_upkdouble\()e
(double)i(*dp,)g(int)g(nitem,)g(int)g(stride)f(\))p 1649
2114 V 248 2168 V 296 2152 a(int)h(info)g(=)g(pvm_upkfloat\()41
b(float)i(*fp,)21 b(int)g(nitem,)g(int)g(stride)f(\))p
1649 2168 V 248 2222 V 296 2206 a(int)h(info)g(=)g(pvm_upkint\()85
b(int)i(*np,)21 b(int)g(nitem,)g(int)g(stride)f(\))p
1649 2222 V 248 2276 V 296 2260 a(int)h(info)g(=)g(pvm_upklong\()63
b(long)i(*np,)21 b(int)g(nitem,)g(int)g(stride)f(\))p
1649 2276 V 248 2330 V 296 2314 a(int)h(info)g(=)g(pvm_upkshort\()41
b(short)i(*np,)21 b(int)g(nitem,)g(int)g(stride)f(\))p
1649 2330 V 248 2384 V 296 2368 a(int)h(info)g(=)g(pvm_upkstr\()85
b(char)65 b(*cp)21 b(\))p 1649 2384 V 249 2385 1401 2
v 248 2439 2 54 v 296 2423 a(int)g(info)g(=)g(pvm_unpackf\()f(const)h
(char)g(*fmt,)f(...)h(\))p 1649 2439 V 249 2441 1401
2 v eop
%%Page: 60 79
60 78 bop 249 251 a Fu(60)1375 b(Chapter)13 b(5)291 507
y FA(The)j(routine)g(p)o(vm)p 605 507 13 2 v 13 w(unpac)o(kf\(\))g
(uses)h(a)e(prin)o(tf-lik)o(e)g(format)f(expression)j(to)e(sp)q(ecify)i
(what)e(data)249 561 y(to)f(unpac)o(k)g(and)g(ho)o(w)f(to)h(unpac)o(k)g
(it)f(from)f(the)j(receiv)o(e)g(bu\013er.)291 615 y(A)9
b(single)g(F)m(ortran)g(subroutine)h(handles)g(all)e(the)i(unpac)o
(king)f(functions)h(of)e(the)i(ab)q(o)o(v)o(e)g(C)f(routines.)p
249 692 1096 2 v 248 746 2 54 v 274 730 a Fs(call)21
b(pvmfunpack\()e(what,)i(xp,)g(nitem,)g(stride,)f(info)h(\))p
1344 746 V 249 747 1096 2 v 291 843 a FA(The)11 b(argumen)o(t)e
Fs(xp)h FA(is)g(the)h(arra)o(y)g(to)f(b)q(e)h(unpac)o(k)o(ed)g(in)o
(to.)16 b(The)11 b(in)o(teger)g(argumen)o(t)f Fs(what)f
FA(sp)q(eci\014es)249 897 y(the)15 b(t)o(yp)q(e)f(of)f(data)h(to)g(b)q
(e)g(unpac)o(k)o(ed.)19 b(\(Same)12 b Fs(what)h FA(options)h(as)g(for)f
(p)o(vmfpac)o(k\(\)\).)249 1017 y FD(5.7)52 b(Dynamic)18
b(Pro)q(cess)f(Groups)249 1125 y FA(The)i(dynamic)e(pro)q(cess)j(group)
f(functions)g(are)g(built)f(on)g(top)g(of)g(the)i(core)f(PVM)g
(routines.)33 b(A)249 1179 y(separate)18 b(library)e
Fs(libgpvm3.a)e FA(m)o(ust)h(b)q(e)j(link)o(ed)e(with)g(user)h
(programs)f(that)g(mak)o(e)f(use)j(of)e(an)o(y)249 1233
y(of)g(the)g(group)g(functions.)25 b(The)17 b(p)o(vmd)e(do)q(es)i(not)f
(p)q(erform)f(the)i(group)f(functions.)25 b(This)16 b(task)g(is)249
1287 y(handled)e(b)o(y)f(a)h(group)f(serv)o(er)j(that)e(is)f
(automatically)e(started)k(when)f(the)g(\014rst)h(group)f(function)f
(is)249 1341 y(in)o(v)o(ok)o(ed.)j(There)d(is)e(some)g(debate)h(ab)q
(out)f(ho)o(w)g(groups)g(should)g(b)q(e)h(handled)g(in)f(a)g
(message-passing)249 1395 y(in)o(terface.)27 b(The)18
b(issues)f(include)g(e\016ciency)h(and)e(reliabilit)o(y)m(,)f(and)i
(there)h(are)f(tradeo\013s)h(b)q(et)o(w)o(een)249 1449
y(static)g(v)o(ersus)h(dynamic)d(groups.)29 b(Some)16
b(p)q(eople)i(argue)g(that)g(only)e(tasks)i(in)f(a)h(group)f(can)h
(call)249 1503 y(group)c(functions.)291 1557 y(In)19
b(k)o(eeping)f(with)h(the)h(PVM)f(philosoph)o(y)m(,)f(the)i(group)e
(functions)h(are)h(designed)f(to)g(b)q(e)h(v)o(ery)249
1611 y(general)15 b(and)f(transparen)o(t)i(to)e(the)i(user,)f(at)f
(some)g(cost)h(in)g(e\016ciency)m(.)20 b(An)o(y)15 b(PVM)g(task)f(can)h
(join)249 1665 y(or)g(lea)o(v)o(e)f(an)o(y)h(group)f(at)h(an)o(y)f
(time)f(without)i(ha)o(ving)e(to)i(inform)d(an)o(y)j(other)g(task)g(in)
f(the)i(a\013ected)249 1719 y(groups.)27 b(T)m(asks)16
b(can)h(broadcast)h(messages)e(to)h(groups)g(of)f(whic)o(h)h(they)g
(are)g(not)g(a)f(mem)o(b)q(er.)25 b(In)249 1773 y(general,)15
b(an)o(y)f(PVM)h(task)g(ma)o(y)e(call)h(an)o(y)g(of)g(the)h(follo)o
(wing)d(group)j(functions)g(at)f(an)o(y)g(time.)20 b(The)249
1827 y(exceptions)d(are)f(p)o(vm)p 606 1827 13 2 v 13
w(lvgroup\(\),)g(p)o(vm)p 897 1827 V 13 w(barrier\(\),)h(and)e(p)o(vm)p
1255 1827 V 13 w(reduce\(\),)j(whic)o(h)e(b)o(y)f(their)h(nature)249
1881 y(require)f(the)f(calling)f(task)h(to)g(b)q(e)g(a)g(mem)o(b)q(er)e
(of)h(the)i(sp)q(eci\014ed)g(group.)p 249 1955 922 2
v 248 2009 2 54 v 274 1993 a Fs(int)21 b(inum)49 b(=)22
b(pvm)p 611 1993 14 2 v 15 w(joingroup\()e(char)g(*group)h(\))p
1170 2009 2 54 v 248 2063 V 274 2047 a(int)g(info)49
b(=)22 b(pvm)p 611 2047 14 2 v 15 w(lvgroup\()e(char)h(*group)f(\))p
1170 2063 2 54 v 248 2117 V 274 2100 a(call)h(pvmfjoingroup\()e(group,)
h(inum)h(\))p 1170 2117 V 248 2171 V 274 2154 a(call)g(pvmflvgroup\()e
(group,)i(info)g(\))p 1170 2171 V 249 2172 922 2 v 291
2265 a FA(These)e(routines)g(allo)o(w)e(a)h(task)h(to)f(join)f(or)i
(lea)o(v)o(e)f(a)g(user)i(named)d(group.)31 b(The)19
b(\014rst)h(call)d(to)249 2319 y(p)o(vm)p 331 2319 13
2 v 13 w(joingroup\(\))j(creates)i(a)e(group)g(with)g(name)f
Fs(group)g FA(and)h(puts)h(the)g(calling)e(task)h(in)g(this)249
2373 y(group.)d(p)o(vm)p 464 2373 V 14 w(joingroup\(\))11
b(returns)j(the)e(instance)h(n)o(um)o(b)q(er)e(\()p Fs(inum)p
FA(\))h(of)f(the)i(pro)q(cess)h(in)e(this)g(group.)249
2427 y(Instance)17 b(n)o(um)o(b)q(ers)f(run)g(from)e(0)i(to)f(the)i(n)o
(um)o(b)q(er)e(of)g(group)h(mem)o(b)q(ers)f(min)o(us)f(1.)24
b(In)15 b(PVM)i(3,)e(a)249 2481 y(task)f(can)g(join)f(m)o(ultiple)f
(groups.)p eop
%%Page: 61 80
61 79 bop 249 251 a Fu(PVM)13 b(User)g(In)o(terface)1218
b(61)291 507 y FA(If)17 b(a)g(pro)q(cess)i(lea)o(v)o(es)e(a)h(group)f
(and)g(then)h(rejoins)g(it,)f(that)h(pro)q(cess)h(ma)o(y)c(receiv)o(e)k
(a)e(di\013eren)o(t)249 561 y(instance)g(n)o(um)o(b)q(er.)23
b(Instance)18 b(n)o(um)o(b)q(ers)d(are)i(recycled)g(so)f(a)g(task)g
(joining)e(a)i(group)g(will)e(get)i(the)249 615 y(lo)o(w)o(est)f(a)o(v)
n(ailable)e(instance)j(n)o(um)o(b)q(er.)k(But)c(if)e(m)o(ultiple)f
(tasks)j(are)f(joining)f(a)g(group,)h(there)h(is)f(no)249
669 y(guaran)o(tee)f(that)g(a)g(task)g(will)e(b)q(e)j(assigned)f(its)g
(previous)g(instance)h(n)o(um)o(b)q(er.)291 723 y(T)m(o)d(assist)i(the)
g(user)h(in)e(main)o(taining)d(a)j(con)o(tin)o(uous)h(set)g(of)f
(instance)h(n)o(um)o(b)q(ers)f(despite)i(joining)249
777 y(and)h(lea)o(ving,)f(the)h(p)o(vm)p 642 777 13 2
v 13 w(lvgroup\(\))g(function)g(do)q(es)g(not)g(return)h(un)o(til)e
(the)i(task)f(is)g(con\014rmed)f(to)249 831 y(ha)o(v)o(e)k(left.)35
b(A)19 b(p)o(vm)p 588 831 V 14 w(joingroup\(\))f(called)h(after)h(this)
f(return)i(will)d(assign)h(the)h(v)n(acan)o(t)f(instance)249
885 y(n)o(um)o(b)q(er)c(to)h(the)h(new)f(task.)25 b(It)16
b(is)g(the)h(user's)g(resp)q(onsibilit)o(y)e(to)h(main)o(tain)d(a)j
(con)o(tiguous)g(set)h(of)249 939 y(instance)d(n)o(um)o(b)q(ers)e(if)g
(the)h(algorithm)d(requires)15 b(it.)i(If)12 b(sev)o(eral)h(tasks)h
(lea)o(v)o(e)e(a)h(group)f(and)h(no)g(tasks)249 993 y(join,)f(then)j
(there)g(will)e(b)q(e)h(gaps)g(in)f(the)i(instance)f(n)o(um)o(b)q(ers.)
p 249 1067 1047 2 v 248 1121 2 54 v 274 1105 a Fs(int)21
b(tid)g(=)h(pvm)p 561 1105 14 2 v 15 w(gettid\()e(char)h(*group,)g(int)
g(inum)g(\))p 1294 1121 2 54 v 248 1175 V 274 1159 a(int)g(inum)g(=)h
(pvm)p 583 1159 14 2 v 15 w(getinst\()e(char)h(*group,)f(int)h(tid)h
(\))p 1294 1175 2 54 v 248 1229 V 274 1213 a(int)f(size)g(=)h(pvm)p
583 1213 14 2 v 15 w(gsize\()e(char)h(*group)g(\))p 1294
1229 2 54 v 248 1283 V 274 1267 a(call)g(pvmfgettid\()e(group,)i(inum,)
g(tid)g(\))p 1294 1283 V 248 1337 V 274 1320 a(call)g(pvmfgetinst\()e
(group,)i(tid,)g(inum)g(\))p 1294 1337 V 248 1391 V 274
1374 a(call)g(pvmfgsize\()f(group,)g(size)h(\))p 1294
1391 V 249 1392 1047 2 v 291 1488 a FA(The)13 b(routine)g(p)o(vm)p
599 1488 13 2 v 14 w(gettid\(\))g(returns)i(the)e Fs(TID)g
FA(of)f(the)i(pro)q(cess)h(with)d(a)h(giv)o(en)f(group)h(name)f(and)249
1542 y(instance)j(n)o(um)o(b)q(er.)j(p)o(vm)p 661 1542
V 13 w(gettid\(\))d(allo)o(ws)e(t)o(w)o(o)g(tasks)i(with)f(no)g(kno)o
(wledge)g(of)f(eac)o(h)i(other)g(to)f(get)249 1595 y(eac)o(h)g(other's)
f(TID)g(simply)e(b)o(y)i(joining)f(a)g(common)f(group.)17
b(The)d(routine)f(p)o(vm)p 1534 1595 V 14 w(getinst\(\))g(returns)249
1649 y(the)i(instance)g(n)o(um)o(b)q(er)f(of)g Fs(TID)f
FA(in)h(the)h(sp)q(eci\014ed)h(group.)k(The)14 b(routine)h(p)o(vm)p
1498 1649 V 13 w(gsize\(\))g(returns)h(the)249 1703 y(n)o(um)o(b)q(er)d
(of)h(mem)o(b)q(ers)e(in)i(the)g(sp)q(eci\014ed)h(group.)p
249 1777 1090 2 v 248 1831 2 54 v 274 1815 a Fs(int)21
b(info)g(=)h(pvm)p 583 1815 14 2 v 15 w(barrier\()e(char)h(*group,)f
(int)h(count)g(\))p 1338 1831 2 54 v 248 1885 V 274 1869
a(call)g(pvmfbarrier\()e(group,)i(count,)f(info)h(\))p
1338 1885 V 249 1887 1090 2 v 291 1982 a FA(On)10 b(calling)f(p)o(vm)p
566 1982 13 2 v 13 w(barrier\(\))i(the)g(pro)q(cess)h(blo)q(c)o(ks)e
(un)o(til)g Fs(count)f FA(mem)o(b)q(ers)g(of)g(a)h(group)g(ha)o(v)o(e)g
(called)249 2036 y(p)o(vm)p 331 2036 V 13 w(barrier.)21
b(In)15 b(general)g Fs(count)e FA(should)i(b)q(e)g(the)g(total)f(n)o
(um)o(b)q(er)g(of)g(mem)o(b)q(ers)g(of)g(the)h(group.)20
b(A)249 2090 y(coun)o(t)e(is)f(required)h(b)q(ecause)h(with)d(dynamic)g
(pro)q(cess)j(groups)e(PVM)h(cannot)f(kno)o(w)g(ho)o(w)g(man)o(y)249
2144 y(mem)o(b)q(ers)11 b(are)h(in)f(a)h(group)g(at)f(a)h(giv)o(en)f
(instan)o(t.)17 b(It)12 b(is)g(an)g(error)g(for)g(pro)q(cesses)i(to)e
(call)f(p)o(vm)p 1709 2144 V 14 w(barrier)249 2198 y(with)k(a)g(group)h
(it)f(is)g(not)h(a)f(mem)o(b)q(er)f(of.)22 b(It)16 b(is)f(also)g(an)g
(error)i(if)d(the)i(coun)o(t)g(argumen)o(ts)f(across)h(a)249
2252 y(giv)o(en)c(barrier)g(call)g(do)f(not)h(matc)o(h.)17
b(F)m(or)11 b(example)g(it)h(is)g(an)f(error)i(if)f(one)g(mem)o(b)q(er)
e(of)i(a)g(group)f(calls)249 2306 y(p)o(vm)p 331 2306
V 13 w(barrier\(\))17 b(with)e(a)g(coun)o(t)g(of)g(4,)g(and)g(another)h
(mem)o(b)q(er)d(calls)i(p)o(vm)p 1429 2306 V 14 w(barrier\(\))h(with)f
(a)g(coun)o(t)249 2360 y(of)e(5.)p eop
%%Page: 62 81
62 80 bop 249 251 a Fu(62)1375 b(Chapter)13 b(5)p 249
467 1068 2 v 248 521 2 54 v 274 505 a Fs(int)21 b(info)g(=)h(pvm)p
583 505 14 2 v 15 w(bcast\()e(char)h(*group,)g(int)g(msgtag)f(\))p
1316 521 2 54 v 248 575 V 274 559 a(call)h(pvmfbcast\()f(group,)g
(msgtag,)h(info)g(\))p 1316 575 V 249 577 1068 2 v 291
672 a FA(p)o(vm)p 373 672 13 2 v 13 w(b)q(cast\(\))c(lab)q(els)e(the)h
(message)f(with)g(an)g(in)o(teger)h(iden)o(ti\014er)g
Fs(msgtag)e FA(and)h(broadcasts)h(the)249 726 y(message)e(to)g(all)f
(tasks)h(in)g(the)g(sp)q(eci\014ed)i(group)e(except)h(itself)f(\(if)g
(it)f(is)h(a)g(mem)o(b)q(er)e(of)i(the)h(group\).)249
780 y(F)m(or)h(p)o(vm)p 408 780 V 13 w(b)q(cast\(\))i(\\all)c(tasks")j
(is)f(de\014ned)h(to)f(b)q(e)h(those)g(tasks)f(the)h(group)f(serv)o(er)
i(thinks)e(are)g(in)249 834 y(the)h(group)f(when)h(the)g(routine)f(is)g
(called.)25 b(If)16 b(tasks)h(join)e(the)i(group)g(during)f(a)g
(broadcast,)h(they)249 888 y(ma)o(y)12 b(not)i(receiv)o(e)i(the)e
(message.)19 b(If)14 b(tasks)g(lea)o(v)o(e)g(the)h(group)f(during)g(a)g
(broadcast,)g(a)g(cop)o(y)g(of)f(the)249 942 y(message)h(will)e(still)h
(b)q(e)i(sen)o(t)f(to)g(them.)p 249 1016 1336 2 v 248
1070 2 54 v 274 1054 a Fs(int)21 b(info)g(=)h(pvm)p 583
1054 14 2 v 15 w(reduce\()48 b(void)21 b(\(*func\)\(\),)f(void)h
(*data,)p 1584 1070 2 54 v 248 1124 V 797 1108 a(int)g(nitem,)g(int)g
(datatype,)p 1584 1124 V 248 1178 V 797 1162 a(int)g(msgtag,)g(char)g
(*group,)f(int)h(root)g(\))p 1584 1178 V 248 1232 V 274
1216 a(call)g(pvmfreduce\()172 b(func,)21 b(data,)g(count,)f(datatype,)
p 1584 1232 V 248 1286 V 797 1270 a(msgtag,)g(group,)h(root,)g(info)g
(\))p 1584 1286 V 249 1287 1336 2 v 291 1406 a FA(p)o(vm)p
373 1406 13 2 v 13 w(reduce\(\))e(p)q(erforms)d(a)h(global)e
(arithmetic)h(op)q(eration)h(across)h(the)f(group,)g(for)g(example,)249
1460 y(global)11 b(sum)h(or)h(global)e(max.)16 b(The)e(result)f(of)g
(the)g(reduction)h(op)q(eration)e(app)q(ears)i(on)f Fs(root)p
FA(.)k(PVM)249 1514 y(supplies)d(four)g(prede\014ned)i(functions)e
(that)g(the)g(user)h(can)f(place)g(in)g Fs(func)p FA(.)j(These)e(are)
336 1601 y Fs(PvmMax)336 1655 y(PvmMin)336 1709 y(PvmSum)336
1763 y(PvmProduct)249 1850 y FA(The)i(reduction)f(op)q(eration)g(is)g
(p)q(erformed)g(elemen)o(t-wise)g(on)g(the)g(input)g(data.)24
b(F)m(or)16 b(example,)f(if)249 1904 y(the)e(data)f(arra)o(y)g(con)o
(tains)g(t)o(w)o(o)g(\015oating-p)q(oin)o(t)f(n)o(um)o(b)q(ers)h(and)g
(func)h(is)f(PvmMax,)e(then)j(the)g(result)249 1958 y(con)o(tains)k(t)o
(w)o(o)f(n)o(um)o(b)q(ers|the)h(global)e(maxim)n(um)e(of)j(eac)o(h)h
(group)g(mem)o(b)q(ers)e(\014rst)j(n)o(um)o(b)q(er)e(and)249
2012 y(the)f(global)d(maxim)n(um)e(of)j(eac)o(h)h(mem)o(b)q(er's)e
(second)j(n)o(um)o(b)q(er.)291 2066 y(In)e(addition)g(users)i(can)f
(de\014ne)h(their)f(o)o(wn)f(global)f(op)q(eration)i(function)f(to)h
(place)g(in)f Fs(func)p FA(.)k(See)249 2120 y(App)q(endix)i(B)f(for)g
(details.)31 b(An)19 b(example)e(is)h(giv)o(en)g(in)f(the)i(source)h
(co)q(de)f(for)f(PVM.)g(F)m(or)g(more)249 2174 y(information)11
b(see)k Fs(PVM)p 610 2174 14 2 v 15 w(ROOT/examples/gexa)o(mples)o
FA(.)291 2228 y Fr(Note:)22 b FA(p)o(vm)p 510 2228 13
2 v 14 w(reduce\(\))c(do)q(es)e(not)g(blo)q(c)o(k.)24
b(If)16 b(a)g(task)g(calls)g(p)o(vm)p 1340 2228 V 13
w(reduce)i(and)e(then)g(lea)o(v)o(es)g(the)249 2281 y(group)e(b)q
(efore)g(the)h(ro)q(ot)f(has)g(called)f(p)o(vm)p 925
2281 V 14 w(reduce,)i(an)f(error)g(ma)o(y)e(o)q(ccur.)p
eop
%%Page: 63 82
63 81 bop 249 325 a Fp(6)25 b FD(Program)16 b(Examples)249
561 y FA(In)e(this)f(c)o(hapter)i(w)o(e)e(discuss)i(sev)o(eral)f
(complete)f(PVM)h(programs)e(in)h(detail.)18 b(The)c(\014rst)g
(example,)249 615 y(forkjoin.c,)e(sho)o(ws)i(ho)o(w)g(to)g(to)f(spa)o
(wn)h(o\013)g(pro)q(cesses)j(and)d(sync)o(hronize)h(with)e(them.)18
b(The)c(second)249 669 y(example)h(discusses)i(a)f(F)m(ortran)f(dot)h
(pro)q(duct)h(program,)d(PSDOT.F.)h(The)h(third)g(example,)f(fail-)249
723 y(ure.c,)f(demonstrates)g(ho)o(w)f(the)h(user)h(can)f(use)h(the)f
Fs(pvm_notify\(\))d FA(call)i(to)g(create)i(fault)e(toleran)o(t)249
777 y(appliations.)23 b(W)m(e)15 b(presen)o(t)j(an)d(example)g(that)h
(p)q(erforms)f(a)h(matrix)e(m)o(ultiply)m(.)21 b(Lastly)m(,)15
b(w)o(e)h(sho)o(w)249 831 y(ho)o(w)e(PVM)g(can)g(b)q(e)g(used)h(to)f
(compute)f(heat)i(di\013usion)e(through)h(a)f(wire.)249
951 y FD(6.1)52 b(F)l(ork-Join)249 1059 y FA(Our)12 b(\014rst)g
(example)e(demonstrates)h(ho)o(w)g(to)g(spa)o(wn)g(o\013)g(PVM)h(tasks)
f(and)g(sync)o(hronize)h(with)f(them.)249 1113 y(The)16
b(program)e(spa)o(wns)h(sev)o(eral)h(tasks,)g(three)h(b)o(y)e(default.)
22 b(The)16 b(c)o(hildren)g(then)g(sync)o(hronize)g(b)o(y)249
1167 y(sending)f(a)e(message)h(to)g(their)h(paren)o(t)g(task.)k(The)14
b(paren)o(t)h(receiv)o(es)h(a)e(message)g(from)e(eac)o(h)j(of)e(the)249
1221 y(spa)o(wned)h(tasks)h(and)f(prin)o(ts)g(out)g(information)c(ab)q
(out)k(the)h(message)e(from)f(the)j(c)o(hild)e(tasks.)291
1275 y(The)f(fork-join)f(program)f(con)o(tains)j(the)f(co)q(de)h(for)f
(b)q(oth)h(the)f(paren)o(t)h(and)f(the)h(c)o(hild)f(tasks.)18
b(Let's)249 1329 y(examine)d(it)h(in)f(more)g(detail.)24
b(The)17 b(v)o(ery)f(\014rst)h(thing)f(the)g(program)f(do)q(es)i(is)f
(call)f Fs(pvm_mytid\(\))p FA(.)249 1383 y(This)j(function)f(m)o(ust)g
(b)q(e)i(called)e(b)q(efore)i(an)o(y)e(other)h(PVM)h(call)e(can)h(b)q
(e)g(made.)29 b(The)18 b(result)h(of)249 1437 y(the)e
Fs(pvm_mytid\(\))d FA(call)i(should)g(alw)o(a)o(ys)f(b)q(e)i(a)f(p)q
(ositiv)o(e)h(in)o(teger.)26 b(If)16 b(it)g(is)g(not,)g(then)h
(something)249 1491 y(is)h(seriously)h(wrong.)32 b(In)19
b(fork-join)e(w)o(e)h(c)o(hec)o(k)i(the)f(v)n(alue)f(of)g(m)o(ytid;)g
(if)g(it)g(indicates)h(an)g(error,)249 1545 y(w)o(e)d(call)f
Fs(pvm_perror\(\))e FA(and)j(exit)g(the)g(program.)23
b(The)16 b Fs(pvm_perror\(\))d FA(call)i(will)g(prin)o(t)g(a)h(mes-)249
1599 y(sage)21 b(indicating)f(what)g(w)o(en)o(t)h(wrong)g(with)f(the)i
(last)e(PVM)h(call.)38 b(In)21 b(our)g(example)e(the)i(last)249
1653 y(call)d(w)o(as)g Fs(pvm_mytid\(\))p FA(,)e(so)j
Fs(pvm_perror\(\))d FA(migh)o(t)g(prin)o(t)i(a)g(message)g(indicating)f
(that)i(PVM)249 1707 y(hasn't)e(b)q(een)h(started)g(on)f(this)g(mac)o
(hine.)25 b(The)18 b(argumen)o(t)d(to)i Fs(pvm_perror\(\))e
FA(is)h(a)h(string)g(that)249 1761 y(will)c(b)q(e)j(prep)q(ended)h(to)d
(an)o(y)h(error)g(message)g(prin)o(ted)g(b)o(y)g Fs(pvm_perror\(\))p
FA(.)j(In)d(this)g(case)g(w)o(e)h(pass)249 1815 y(argv[0],)f(whic)o(h)h
(is)g(the)h(name)e(of)h(the)h(program)e(as)h(it)g(w)o(as)g(t)o(yp)q(ed)
h(on)f(the)h(command)d(line.)25 b(The)249 1869 y Fs(pvm_perror\(\))11
b FA(function)j(is)g(mo)q(deled)f(after)h(the)g(Unix)g
Fs(perror\(\))e FA(function.)291 1923 y(Assuming)19 b(w)o(e)i(obtained)
g(a)f(v)n(alid)f(result)j(for)e(m)o(ytid,)g(w)o(e)h(no)o(w)g(call)f
Fs(pvm_parent\(\))p FA(.)36 b(The)249 1977 y Fs(pvm_parent\(\))14
b FA(function)i(will)f(return)j(the)f(TID)f(of)g(the)h(task)g(that)f
(spa)o(wned)h(the)g(calling)e(task.)249 2031 y(Since)h(w)o(e)f(run)g
(the)h(initial)d(fork-join)g(program)h(from)f(the)j(Unix)e(shell,)h
(this)g(initial)e(task)j(will)d(not)249 2085 y(ha)o(v)o(e)e(a)h(paren)o
(t;)g(it)f(will)g(not)g(ha)o(v)o(e)h(b)q(een)g(spa)o(wned)g(b)o(y)g
(some)f(other)h(PVM)g(task)g(but)f(will)f(ha)o(v)o(e)i(b)q(een)249
2139 y(started)17 b(man)o(ually)d(b)o(y)i(the)h(user.)26
b(F)m(or)16 b(the)h(initial)d(forkjoin)h(task)h(the)h(result)g(of)f
Fs(pvm_parent\(\))249 2193 y FA(will)f(not)h(b)q(e)h(an)o(y)f
(particular)g(task)g(id)g(but)g(an)g(error)h(co)q(de,)h(PvmNoP)o(aren)o
(t.)24 b(Th)o(us)16 b(w)o(e)h(can)f(dis-)249 2247 y(tinguish)c(the)i
(paren)o(t)f(forkjoin)f(task)h(from)e(the)j(c)o(hildren)f(b)o(y)f(c)o
(hec)o(king)i(whether)g(the)f(result)h(of)e(the)249 2301
y Fs(pvm_parent\(\))j FA(call)i(is)h(equal)f(to)g(PvmNoP)o(aren)o(t.)29
b(If)17 b(this)h(task)g(is)f(the)i(paren)o(t,)f(then)h(it)e(m)o(ust)249
2355 y(spa)o(wn)d(the)g(c)o(hildren.)19 b(If)13 b(it)h(is)f(not)h(the)h
(paren)o(t,)f(then)g(it)g(m)o(ust)f(send)h(a)g(message)g(to)f(the)i
(paren)o(t.)291 2408 y(Let's)i(examine)f(the)i(co)q(de)g(executed)h(b)o
(y)e(the)h(paren)o(t)g(task.)28 b(The)18 b(n)o(um)o(b)q(er)e(of)h
(tasks)h(is)f(tak)o(en)249 2462 y(from)c(the)i(command)d(line)j(as)f
(argv[1].)19 b(If)c(the)g(n)o(um)o(b)q(er)f(of)g(tasks)i(is)e(not)h
(legal,)e(then)j(w)o(e)f(exit)f(the)p eop
%%Page: 64 83
64 82 bop 249 251 a Fu(64)1375 b(Chapter)13 b(6)249 507
y FA(program,)g(calling)g Fs(pvm_exit\(\))g FA(and)h(then)i(returning.)
21 b(The)15 b(call)f(to)h Fs(pvm_exit\(\))d FA(is)j(imp)q(ortan)o(t)249
561 y(b)q(ecause)20 b(it)d(tells)h(PVM)g(this)g(program)e(will)g(no)h
(longer)h(b)q(e)g(using)g(an)o(y)f(of)g(the)h(PVM)h(facilities.)249
615 y(\(In)14 b(this)g(case)h(the)g(task)f(exits)g(and)g(PVM)g(will)e
(deduce)k(that)e(the)g(dead)g(task)g(no)g(longer)g(needs)h(its)249
669 y(services.)25 b(Regardless,)16 b(it)f(is)h(go)q(o)q(d)f(st)o(yle)h
(to)f(exit)h(cleanly)m(.\))22 b(Assuming)15 b(the)h(n)o(um)o(b)q(er)f
(of)g(tasks)h(is)249 723 y(v)n(alid,)c(forkjoin)g(will)h(then)h
(attempt)f(to)h(spa)o(wn)g(the)h(c)o(hildren.)291 777
y(The)20 b Fs(pvm_spawn\(\))d FA(call)i(tells)g(PVM)h(to)f(start)i(n)o
(task)e(tasks)h(named)f(argv[0].)33 b(The)20 b(second)249
831 y(parameter)13 b(is)g(the)h(argumen)o(t)f(list)g(giv)o(en)g(to)g
(the)h(spa)o(wned)g(tasks.)k(In)c(this)f(case)h(w)o(e)g(don't)f(care)h
(to)249 885 y(giv)o(e)d(the)i(c)o(hildren)f(an)o(y)f(particular)h
(command)d(line)i(argumen)o(ts,)h(so)f(this)h(v)n(alue)g(is)f(n)o(ull.)
17 b(The)12 b(third)249 939 y(parameter)j(to)h(spa)o(wn,)f(PvmT)m
(askDefault,)f(is)h(a)g(\015ag)g(telling)g(PVM)h(to)f(spa)o(wn)h(the)g
(tasks)g(in)f(the)249 993 y(default)h(lo)q(cation.)24
b(Had)16 b(w)o(e)h(b)q(een)g(in)o(terested)h(in)e(placing)f(the)i(c)o
(hildren)g(on)f(a)g(sp)q(eci\014c)h(mac)o(hine)249 1047
y(or)h(a)g(mac)o(hine)f(of)h(a)g(particular)g(arc)o(hitecture,)j(then)e
(w)o(e)f(w)o(ould)g(ha)o(v)o(e)g(used)h(PvmT)m(askHost)e(or)249
1101 y(PvmT)m(askArc)o(h)10 b(for)h(this)g(\015ag)g(and)g(sp)q
(eci\014ed)i(the)e(host)h(or)f(arc)o(hitecture)i(as)e(the)h(fourth)f
(parameter.)249 1155 y(Since)17 b(w)o(e)g(don't)f(care)i(where)g(the)f
(tasks)g(execute,)i(w)o(e)e(use)g(PvmT)m(askDefault)d(for)j(the)g
(\015ag)f(and)249 1209 y(n)o(ull)f(for)h(the)h(fourth)f(parameter.)24
b(Finally)m(,)15 b(n)o(task)h(tells)g(spa)o(wn)g(ho)o(w)g(man)o(y)e
(tasks)j(to)f(start;)h(the)249 1263 y(in)o(teger)i(arra)o(y)f(c)o(hild)
g(will)f(hold)h(the)h(task)g(ids)f(of)g(the)h(newly)g(spa)o(wned)g(c)o
(hildren.)32 b(The)19 b(return)249 1317 y(v)n(alue)12
b(of)g Fs(pvm_spawn\(\))e FA(indicates)i(ho)o(w)g(man)o(y)f(tasks)i(w)o
(ere)g(successfully)g(spa)o(wned.)19 b(If)12 b(info)f(is)h(not)249
1371 y(equal)g(to)g(n)o(task,)h(then)g(some)e(error)j(o)q(ccurred)g
(during)e(the)h(spa)o(wn.)18 b(In)12 b(case)i(of)e(an)g(error,)h(the)g
(error)249 1425 y(co)q(de)18 b(is)f(placed)h(in)f(the)h(task)f(id)g
(arra)o(y)m(,)g(c)o(hild,)g(instead)g(of)g(the)h(actual)f(task)g(id.)28
b(The)18 b(fork-join)249 1479 y(program)11 b(lo)q(ops)g(o)o(v)o(er)h
(this)h(arra)o(y)e(and)h(prin)o(ts)h(the)f(task)h(ids)f(or)g(an)o(y)f
(error)i(co)q(des.)19 b(If)12 b(no)f(tasks)i(w)o(ere)249
1533 y(successfully)i(spa)o(wned,)f(then)h(the)f(program)e(exits.)291
1587 y(F)m(or)j(eac)o(h)i(c)o(hild)f(task,)g(the)h(paren)o(t)g(receiv)o
(es)h(a)e(message)g(and)g(prin)o(ts)h(out)f(information)d(ab)q(out)249
1641 y(that)h(message.)20 b(The)14 b Fs(pvm_recv\(\))f
FA(call)g(receiv)o(es)j(a)e(message)g(\(with)g(that)h(JOINT)m(A)o(G\))f
(from)f(an)o(y)249 1694 y(task.)27 b(The)17 b(return)h(v)n(alue)e(of)h
Fs(pvm_recv\(\))d FA(is)j(an)f(in)o(teger)i(indicating)d(a)i(message)f
(bu\013er.)28 b(This)249 1748 y(in)o(teger)11 b(can)g(b)q(e)g(used)h
(to)e(\014nd)h(out)f(information)e(ab)q(out)i(message)h(bu\013ers.)18
b(The)11 b(subsequen)o(t)h(call)e(to)249 1802 y Fs(pvm_bufinfo\(\))h
FA(do)q(es)j(just)f(this;)g(it)g(gets)h(the)g(length,)f(tag,)f(and)h
(task)g(id)g(of)g(the)h(sending)f(pro)q(cess)249 1856
y(for)h(the)g(message)g(indicated)g(b)o(y)f(buf.)18 b(In)c(fork-join)e
(the)j(messages)f(sen)o(t)g(b)o(y)g(the)g(c)o(hildren)g(con)o(tain)249
1910 y(a)g(single)f(in)o(teger)i(v)n(alue,)d(the)j(task)f(id)g(of)f
(the)h(c)o(hild)g(task.)k(The)c Fs(pvm_upkint\(\))e FA(call)h(unpac)o
(ks)h(the)249 1964 y(in)o(teger)g(from)e(the)j(message)f(in)o(to)f(the)
h(m)o(ydata)e(v)n(ariable.)17 b(As)d(a)g(sanit)o(y)f(c)o(hec)o(k,)i
(forkjoin)d(tests)j(the)249 2018 y(v)n(alue)h(of)g(m)o(ydata)f(and)i
(the)g(task)g(id)g(returned)h(b)o(y)f Fs(pvm_bufinfo\(\))p
FA(.)24 b(If)16 b(the)h(v)n(alues)g(di\013er,)g(the)249
2072 y(program)c(has)h(a)f(bug,)h(and)g(an)g(error)h(message)e(is)h
(prin)o(ted.)19 b(Finally)m(,)12 b(the)i(information)d(ab)q(out)j(the)
249 2126 y(message)g(is)f(prin)o(ted,)h(and)g(the)g(paren)o(t)h
(program)d(exits.)291 2180 y(The)g(last)f(segmen)o(t)g(of)g(co)q(de)h
(in)f(forkjoin)g(will)f(b)q(e)i(executed)h(b)o(y)f(the)g(c)o(hild)f
(tasks.)17 b(Before)c(placing)249 2234 y(data)g(in)f(a)h(message)g
(bu\013er,)h(the)f(bu\013er)h(m)o(ust)e(b)q(e)i(initialized)d(b)o(y)i
(calling)f Fs(pvm_initsend\(\))p FA(.)j(The)249 2288
y(parameter)f(PvmDataDefault)e(indicates)j(that)g(PVM)g(should)f(do)h
(whatev)o(er)g(data)f(con)o(v)o(ersion)h(is)249 2342
y(needed)e(to)f(ensure)h(that)f(the)g(data)f(arriv)o(es)h(in)f(the)h
(correct)i(format)c(on)h(the)h(destination)g(pro)q(cessor.)249
2396 y(In)18 b(some)f(cases)i(this)e(ma)o(y)f(result)j(in)e
(unnecessary)j(data)d(con)o(v)o(ersions.)30 b(If)18 b(the)g(user)h(is)e
(sure)i(no)249 2450 y(data)12 b(con)o(v)o(ersion)h(will)e(b)q(e)i
(needed)h(since)g(the)f(destination)f(mac)o(hine)g(uses)h(the)g(same)f
(data)g(format,)249 2504 y(then)17 b(he)g(can)g(use)g(PvmDataRa)o(w)d
(as)i(a)g(parameter)g(to)h Fs(pvm_initsend\(\))p FA(.)22
b(The)17 b Fs(pvm_pkint\(\))p eop
%%Page: 65 84
65 83 bop 249 251 a Fu(Program)14 b(Examples)1237 b(65)249
507 y FA(call)13 b(places)h(a)g(single)f(in)o(teger,)h(m)o(ytid,)e(in)o
(to)h(the)h(message)f(bu\013er.)19 b(It)14 b(is)g(imp)q(ortan)o(t)e(to)
i(mak)o(e)e(sure)249 561 y(the)18 b(corresp)q(onding)h(unpac)o(k)f
(call)f(exactly)h(matc)o(hes)f(the)i(pac)o(k)e(call.)29
b(P)o(ac)o(king)17 b(an)h(in)o(teger)g(and)249 615 y(unpac)o(king)d(it)
f(as)i(a)f(\015oat)f(will)g(not)h(w)o(ork)g(correctly)m(.)23
b(Similarl)o(y)m(,)12 b(if)i(the)i(user)g(pac)o(ks)g(t)o(w)o(o)e(in)o
(tegers)249 669 y(with)g(a)f(single)h(call,)f(he)h(cannot)g(unpac)o(k)g
(those)h(in)o(tegers)g(b)o(y)f(calling)e Fs(pvm_upkint\(\))g
FA(t)o(wice,)h(once)249 723 y(for)h(eac)o(h)h(in)o(teger.)21
b(There)15 b(m)o(ust)f(b)q(e)h(a)f(one)h(to)f(one)h(corresp)q(ondence)i
(b)q(et)o(w)o(een)f(pac)o(k)f(and)f(unpac)o(k)249 777
y(calls.)k(Finally)m(,)11 b(the)k(message)e(is)h(sen)o(t)h(to)e(the)i
(paren)o(t)f(task)g(using)g(a)f(message)h(tag)f(of)h(JOINT)m(A)o(G.)249
897 y FD(F)l(ork)i(Join)i(Example)249 1005 y Fs(/*)336
1059 y(Fork)j(Join)g(Example)336 1113 y(Demonstrates)f(how)h(to)g
(spawn)g(processes)f(and)h(exchange)f(messages)249 1167
y(*/)249 1275 y(/*)h(defines)g(and)g(prototypes)f(for)h(the)g(PVM)g
(library)g(*/)249 1329 y(#include)f(<pvm3.h>)249 1437
y(/*)h(Maximum)g(number)f(of)i(children)e(this)h(program)f(will)h
(spawn)g(*/)249 1491 y(#define)f(MAXNCHILD)64 b(20)249
1545 y(/*)21 b(Tag)h(to)f(use)g(for)g(the)h(joing)e(message)h(*/)249
1599 y(#define)f(JOINTAG)108 b(11)249 1748 y(int)249
1802 y(main\(int)20 b(argc,)h(char*)g(argv[]\))249 1856
y({)336 1964 y(/*)h(number)e(of)i(tasks)e(to)i(spawn,)e(use)h(3)h(as)f
(the)h(default)e(*/)336 2018 y(int)h(ntask)g(=)h(3;)336
2072 y(/*)g(return)e(code)h(from)g(pvm)g(calls)g(*/)336
2126 y(int)g(info;)336 2180 y(/*)h(my)f(task)g(id)g(*/)336
2234 y(int)g(mytid;)336 2288 y(/*)h(my)f(parents)f(task)h(id)h(*/)336
2342 y(int)f(myparent;)336 2396 y(/*)h(children)e(task)h(id)g(array)g
(*/)336 2450 y(int)g(child[MAXNCHILD];)336 2504 y(int)g(i,)h(mydata,)e
(buf,)h(len,)g(tag,)g(tid;)p eop
%%Page: 66 85
66 84 bop 249 251 a Fu(66)1375 b(Chapter)13 b(6)336 590
y Fs(/*)22 b(find)f(out)g(my)g(task)g(id)g(number)g(*/)336
644 y(mytid)g(=)h(pvm_mytid\(\);)336 752 y(/*)g(check)e(for)i(error)e
(*/)336 806 y(if)i(\(mytid)e(<)i(0\))f({)423 860 y(/*)h(print)f(out)g
(the)g(error)g(*/)423 914 y(pvm_perror\(argv[0]\))o(;)423
968 y(/*)h(exit)f(the)g(program)f(*/)423 1022 y(return)h(-1;)423
1076 y(})336 1130 y(/*)h(find)f(my)g(parent's)f(task)h(id)g(number)g
(*/)336 1184 y(myparent)f(=)i(pvm_parent\(\);)336 1292
y(/*)g(exit)f(if)g(there)g(is)g(some)g(error)g(other)g(than)g
(PvmNoParent)e(*/)336 1346 y(if)j(\(\(myparent)d(<)j(0\))f(&&)h
(\(myparent)e(!=)h(PvmNoParent\)\))e({)423 1400 y
(pvm_perror\(argv[0]\))o(;)423 1454 y(pvm_exit\(\);)423
1508 y(return)i(-1;)423 1562 y(})336 1699 y(/*)h(if)f(i)h(don't)e(have)
h(a)h(parent)e(then)h(i)h(am)f(the)h(parent)e(*/)336
1753 y(if)i(\(myparent)e(==)h(PvmNoParent\))e({)423 1807
y(/*)j(find)f(out)g(how)g(many)g(tasks)g(to)g(spawn)g(*/)423
1861 y(if)h(\(argc)f(==)g(2\))g(ntask)g(=)h(atoi\(argv[1]\);)423
1914 y(/*)g(make)f(sure)g(ntask)f(is)i(legal)f(*/)423
1968 y(if)h(\(\(ntask)e(<)i(1\))f(||)g(\(ntask)g(>)h(MAXNCHILD\)\))d({)
j(pvm_exit\(\);)d(return)i(0;)g(})423 2076 y(/*)h(spawn)f(the)g(child)f
(tasks)h(*/)423 2130 y(info)g(=)h(pvm_spawn\(argv[0])o(,)d
(\(char**\)0,)h(PvmTaskDefault,)e(\(char*\)0,)511 2184
y(ntask,)i(child\);)423 2238 y(/*)i(print)f(out)g(the)g(task)g(ids)g
(*/)423 2292 y(for)h(\(i)f(=)h(0;)f(i)h(<)f(ntask;)g(i++\))511
2346 y(if)g(\(child[i])f(<)h(0\))h(/*)f(print)g(the)g(error)g(code)g
(in)g(decimal*/)598 2400 y(printf\(")f(\045d",)h(child[i]\);)511
2454 y(else)42 b(/*)22 b(print)e(the)i(task)f(id)g(in)g(hex)h(*/)598
2508 y(printf\("t\045x\\t",)c(child[i]\);)p eop
%%Page: 67 86
67 85 bop 249 251 a Fu(Program)14 b(Examples)1237 b(67)423
507 y Fs(putchar\('\\n'\);)423 644 y(/*)22 b(make)f(sure)g(spawn)f
(succeeded)g(*/)423 698 y(if)i(\(info)f(==)g(0\))g({)h(pvm_exit\(\);)d
(return)i(-1;)g(})423 806 y(/*)h(only)f(expect)f(responses)g(from)h
(those)g(spawned)f(correctly)g(*/)423 860 y(ntask)h(=)h(info;)423
968 y(for)g(\(i)f(=)h(0;)f(i)h(<)f(ntask;)g(i++\))g({)511
1022 y(/*)g(recv)g(a)h(message)e(from)h(any)g(child)g(process)f(*/)511
1076 y(buf)h(=)g(pvm_recv\(-1,)f(JOINTAG\);)511 1130
y(if)h(\(buf)g(<)h(0\))f(pvm_perror\("calli)o(ng)e(recv"\);)511
1184 y(info)i(=)g(pvm_bufinfo\(buf,)e(&len,)h(&tag,)h(&tid\);)511
1238 y(if)g(\(info)g(<)g(0\))h(pvm_perror\("call)o(ing)d
(pvm_bufinfo"\);)511 1292 y(info)i(=)g(pvm_upkint\(&mydata)o(,)e(1,)i
(1\);)511 1346 y(if)g(\(info)g(<)g(0\))h(pvm_perror\("call)o(ing)d
(pvm_upkint"\);)511 1400 y(if)i(\(mydata)f(!=)i(tid\))f(printf\("This)e
(should)i(not)g(happen!\\n"\);)511 1454 y(printf\("Length)d(\045d,)k
(Tag)f(\045d,)g(Tid)g(t\045x\\n",)g(len,)f(tag,)h(tid\);)511
1508 y(})423 1562 y(pvm_exit\(\);)423 1616 y(return)g(0;)423
1670 y(})314 1807 y(/*)h(i'm)f(a)h(child)e(*/)314 1861
y(info)h(=)h(pvm_initsend\(PvmD)o(ataDe)o(fault)o(\);)314
1914 y(if)g(\(info)f(<)g(0\))h({)380 1968 y(pvm_perror\("calli)o(ng)d
(pvm_initsend"\);)f(pvm_exit\(\);)i(return)g(-1;)380
2022 y(})314 2076 y(info)h(=)h(pvm_pkint\(&mytid,)c(1,)k(1\);)314
2130 y(if)g(\(info)f(<)g(0\))h({)380 2184 y(pvm_perror\("calli)o(ng)d
(pvm_pkint"\);)g(pvm_exit\(\);)h(return)g(-1;)380 2238
y(})314 2292 y(info)h(=)h(pvm_send\(myparent)o(,)d(JOINTAG\);)314
2346 y(if)j(\(info)f(<)g(0\))h({)380 2400 y(pvm_perror\("calli)o(ng)d
(pvm_send"\);)g(pvm_exit\(\);)h(return)g(-1;)380 2454
y(})314 2508 y(pvm_exit\(\);)p eop
%%Page: 68 87
68 86 bop 249 251 a Fu(68)1375 b(Chapter)13 b(6)467 536
y Fs(\045)22 b(forkjoin)467 590 y(t10001c)e(t40149)43
b(tc0037)467 644 y(Length)21 b(4,)g(Tag)g(11,)g(Tid)g(t40149)467
698 y(Length)g(4,)g(Tag)g(11,)g(Tid)g(tc0037)467 752
y(Length)g(4,)g(Tag)g(11,)g(Tid)g(t10001c)467 806 y(\045)h(forkjoin)e
(4)467 860 y(t10001e)g(t10001d)h(t4014b)42 b(tc0038)467
914 y(Length)21 b(4,)g(Tag)g(11,)g(Tid)g(t4014b)467 968
y(Length)g(4,)g(Tag)g(11,)g(Tid)g(tc0038)467 1022 y(Length)g(4,)g(Tag)g
(11,)g(Tid)g(t10001d)467 1076 y(Length)g(4,)g(Tag)g(11,)g(Tid)g
(t10001e)249 1180 y Fo(Figure)13 b(6.1)249 1217 y Fy(Output)e(of)g
(fork-join)e(program)314 1331 y Fs(return)21 b(0;)249
1385 y(})291 1470 y FA(Figure)15 b(6.1)f(sho)o(ws)i(the)g(output)g(of)e
(running)i(forkjoin.)21 b(Notice)15 b(that)h(the)g(order)g(the)g
(messages)249 1524 y(w)o(ere)f(receiv)o(ed)g(is)f(nondeterministic.)j
(Since)d(the)h(main)d(lo)q(op)h(of)g(the)h(paren)o(t)h(pro)q(cesses)h
(messages)249 1578 y(on)d(a)g(\014rst-come)g(\014rst-serv)o(e)i(basis,)
e(the)h(order)g(of)e(the)i(prin)o(ts)g(are)f(simply)e(determined)j(b)o
(y)f(time)e(it)249 1632 y(tak)o(es)j(messages)g(to)g(tra)o(v)o(el)g
(from)e(the)i(c)o(hild)g(tasks)g(to)g(the)g(paren)o(t.)249
1753 y FD(6.2)52 b(Dot)18 b(Pro)q(duct)249 1861 y FA(Here)12
b(w)o(e)f(sho)o(w)g(a)g(simple)e(F)m(ortran)i(program,)e(PSDOT,)i(for)f
(computing)g(a)g(dot)h(pro)q(duct.)18 b(The)11 b(pro-)249
1914 y(gram)g(computes)h(the)h(dot)f(pro)q(duct)h(of)f(arra)o(ys,)h(X)f
(and)g(Y.)g(First)h(PSDOT)f(calls)g(PVMFMYTID\(\))249
1968 y(and)k(PVMFP)m(ARENT\(\).)25 b(The)16 b(PVMFP)m(ARENT)h(call)e
(will)f(return)k(PVMNOP)m(ARENT)e(if)f(the)249 2022 y(task)c(w)o(asn't)
g(spa)o(wned)g(b)o(y)g(another)h(PVM)f(task.)17 b(If)11
b(this)g(is)g(the)g(case,)h(then)g(PSDOT)f(is)g(the)h(master)249
2076 y(and)i(m)o(ust)f(spa)o(wn)i(the)f(other)h(w)o(ork)o(er)g(copies)g
(of)e(PSDOT.)h(PSDOT)h(then)g(asks)f(the)h(user)h(for)d(the)249
2130 y(n)o(um)o(b)q(er)f(of)h(pro)q(cesses)j(to)d(use)h(and)e(the)i
(length)f(of)g(v)o(ectors)h(to)f(compute.)k(Eac)o(h)d(spa)o(wned)f(pro)
q(cess)249 2184 y(will)e(receiv)o(e)j Fn(n=npr)q(oc)d
FA(elemen)o(ts)i(of)e(X)i(and)f(Y,)g(where)h Fn(n)g FA(is)f(the)h
(length)f(of)g(the)h(v)o(ectors)g(and)f Fn(npr)q(oc)249
2238 y FA(is)k(the)h(n)o(um)o(b)q(er)f(of)g(pro)q(cesses)j(b)q(eing)d
(used)i(in)e(the)h(computation.)24 b(If)16 b Fn(npr)q(oc)g
FA(do)q(es)h(not)f(divide)g Fn(n)249 2292 y FA(ev)o(enly)m(,)11
b(then)h(the)f(master)g(will)f(compute)g(the)i(dot)f(pro)q(duct)h(on)f
(extra)g(the)h(elemen)o(ts.)17 b(The)12 b(subrou-)249
2346 y(tine)h(SGENMA)m(T)f(randomly)e(generates)k(v)n(alues)f(for)f(X)g
(and)h(Y.)f(PSDOT)g(then)i(spa)o(wns)e Fn(npr)q(oc)6
b Ft(\000)g FA(1)249 2400 y(copies)19 b(of)e(itself)h(and)f(sends)j
(eac)o(h)e(new)h(task)f(a)f(part)i(of)e(the)i(X)f(and)f(Y)h(arra)o(ys.)
31 b(The)18 b(message)249 2454 y(con)o(tains)13 b(the)h(length)e(of)h
(the)g(subarra)o(ys)h(in)e(the)i(message)f(and)f(the)i(subarra)o(ys)g
(themselv)o(es.)j(After)249 2508 y(the)f(master)f(spa)o(wns)g(the)h(w)o
(ork)o(er)g(pro)q(cesses)i(and)d(sends)h(out)f(the)h(sub)o(v)o(ectors,)
h(the)f(master)e(then)p eop
%%Page: 69 88
69 87 bop 249 251 a Fu(Program)14 b(Examples)1237 b(69)249
507 y FA(computes)15 b(the)h(dot)e(pro)q(duct)i(on)f(its)g(p)q(ortion)g
(of)f(X)h(and)g(Y.)g(The)g(master)g(pro)q(cess)i(then)e(receiv)o(es)249
561 y(the)i(other)g(lo)q(cal)e(dot)h(pro)q(ducts)i(from)c(the)j(w)o
(ork)o(er)g(pro)q(cesses.)28 b(Notice)16 b(that)h(the)g(PVMFRECV)249
615 y(call)c(uses)j(a)e(wildcard)f(\()p Ft(\000)p FA(1\))i(for)e(the)i
(task)f(id)g(parameter.)19 b(This)14 b(indicates)g(that)g(a)g(message)g
(from)249 669 y FB(any)19 b FA(task)f(will)e(satisfy)i(the)h(receiv)o
(e.)31 b(Using)18 b(the)h(wildcard)e(in)h(this)g(manner)f(results)i(in)
e(a)h(race)249 723 y(condition.)30 b(In)18 b(this)g(case)h(the)f(race)h
(condition)e(do)q(es)i(not)f(cause)h(a)f(problem)f(since)h(addition)f
(is)249 777 y(comm)o(utativ)o(e.)f(In)e(other)h(w)o(ords,)e(it)h(do)q
(esn't)h(matter)e(in)h(whic)o(h)g(order)h(w)o(e)f(add)g(the)h(partial)e
(sums)249 831 y(from)g(the)i(w)o(ork)o(ers.)21 b(Unless)16
b(one)e(is)h(certain)g(that)g(the)g(race)h(will)d(not)h(ha)o(v)o(e)h
(an)f(adv)o(erse)i(e\013ect)g(on)249 885 y(the)f(program,)c(race)k
(conditions)f(should)f(b)q(e)i(a)o(v)o(oided.)291 939
y(Once)h(the)g(master)f(receiv)o(es)i(all)d(the)i(lo)q(cal)e(dot)h(pro)
q(ducts)i(and)e(sums)f(them)h(in)o(to)g(a)g(global)e(dot)249
993 y(pro)q(duct,)19 b(it)f(then)g(calculates)g(the)h(en)o(tire)f(dot)g
(pro)q(duct)g(lo)q(cally)m(.)28 b(These)19 b(t)o(w)o(o)e(results)i(are)
f(then)249 1047 y(subtracted,)d(and)f(the)h(di\013erence)h(b)q(et)o(w)o
(een)f(the)f(t)o(w)o(o)g(v)n(alues)g(is)g(prin)o(ted.)k(A)c(small)e
(di\013erence)k(can)249 1101 y(b)q(e)f(exp)q(ected)h(b)q(ecause)f(of)e
(the)i(v)n(ariation)d(in)i(\015oating-p)q(oin)o(t)e(roundo\013)i
(errors.)291 1155 y(If)e(the)h(PSDOT)g(program)e(is)i(a)f(w)o(ork)o(er)
h(then)h(it)e(receiv)o(es)j(a)d(message)h(from)e(the)i(master)f(pro)q
(cess)249 1209 y(con)o(taining)j(subarra)o(ys)i(of)e(X)i(and)f(Y.)f(It)
i(calculates)f(the)h(dot)f(pro)q(duct)h(of)f(these)h(subarra)o(ys)g
(and)249 1263 y(sends)d(the)f(result)g(bac)o(k)g(to)f(the)h(master)g
(pro)q(cess.)19 b(In)13 b(the)g(in)o(terests)h(of)e(brevit)o(y)g(w)o(e)
h(do)f(not)h(include)249 1317 y(the)i(SGENMA)m(T)e(and)h(SDOT)g
(subroutines.)249 1437 y FD(Example)k(program:)k(PSDOT.F)380
1545 y Fs(PROGRAM)e(PSDOT)249 1599 y(*)249 1653 y(*)43
b(PSDOT)21 b(performs)f(a)i(parallel)e(inner)h(\(or)g(dot\))g(product,)
f(where)h(the)g(vectors)249 1707 y(*)43 b(X)22 b(and)f(Y)h(start)f(out)
g(on)g(a)h(master)e(node,)h(which)g(then)g(sets)g(up)g(the)g(virtual)
249 1761 y(*)43 b(machine,)21 b(farms)f(out)i(the)f(data)g(and)g(work,)
g(and)g(sums)g(up)g(the)g(local)g(pieces)249 1815 y(*)43
b(to)22 b(get)f(a)h(global)e(inner)h(product.)249 1869
y(*)249 1923 y(*)109 b(..)21 b(External)f(Subroutines)g(..)380
1977 y(EXTERNAL)g(PVMFMYTID,)g(PVMFPARENT,)f(PVMFSPAWN,)h(PVMFEXIT,)g
(PVMFINITSEND)380 2031 y(EXTERNAL)g(PVMFPACK,)g(PVMFSEND,)g(PVMFRECV,)g
(PVMFUNPACK,)f(SGENMAT)249 2085 y(*)249 2139 y(*)109
b(..)21 b(External)f(Functions)g(..)380 2193 y(INTEGER)g(ISAMAX)380
2247 y(REAL)h(SDOT)380 2301 y(EXTERNAL)f(ISAMAX,)g(SDOT)249
2355 y(*)249 2408 y(*)109 b(..)21 b(Intrinsic)f(Functions)g(..)380
2462 y(INTRINSIC)g(MOD)p eop
%%Page: 70 89
70 88 bop 249 251 a Fu(70)1375 b(Chapter)13 b(6)249 507
y Fs(*)249 561 y(*)109 b(..)21 b(Parameters)f(..)380
615 y(INTEGER)g(MAXN)380 669 y(PARAMETER)g(\()h(MAXN)g(=)h(8000)f(\))
380 723 y(INCLUDE)f('fpvm3.h')249 777 y(*)249 831 y(*)109
b(..)21 b(Scalars)g(..)380 885 y(INTEGER)f(N,)i(LN,)f(MYTID,)f(NPROCS,)
h(IBUF,)f(IERR)380 939 y(INTEGER)g(I,)i(J,)f(K)380 993
y(REAL)g(LDOT,)g(GDOT)249 1047 y(*)249 1101 y(*)109 b(..)21
b(Arrays)g(..)380 1155 y(INTEGER)f(TIDS\(0:63\))380 1209
y(REAL)h(X\(MAXN\),)f(Y\(MAXN\))249 1263 y(*)249 1317
y(*)109 b(Enroll)20 b(in)i(PVM)f(and)g(get)g(my)h(and)f(the)g(master)g
(process')f(task)h(ID)g(number)249 1371 y(*)380 1425
y(CALL)g(PVMFMYTID\()f(MYTID)g(\))380 1479 y(CALL)h(PVMFPARENT\()e
(TIDS\(0\))i(\))249 1533 y(*)249 1587 y(*)109 b(If)21
b(I)h(need)f(to)g(spawn)g(other)g(processes)f(\(I)h(am)g(master)g
(process\))249 1641 y(*)380 1694 y(IF)g(\()h(TIDS\(0\))e(.EQ.)h
(PVMNOPARENT)f(\))h(THEN)249 1748 y(*)249 1802 y(*)174
b(Get)21 b(starting)g(information)249 1856 y(*)445 1910
y(WRITE\(*,*\))f('How)h(many)g(processes)f(should)g(participate)g
(\(1-64\)?')445 1964 y(READ\(*,*\))g(NPROCS)445 2018
y(WRITE\(*,2000\))f(MAXN)445 2072 y(READ\(*,*\))h(N)445
2126 y(TIDS\(0\))h(=)g(MYTID)445 2180 y(IF)h(\()f(N)h(.GT.)f(MAXN)g(\))
g(THEN)511 2234 y(WRITE\(*,*\))e('N)j(too)f(large.)42
b(Increase)20 b(parameter)g(MAXN)h(to)h(run'//)358 2288
y($)370 b('this)21 b(case.')511 2342 y(STOP)445 2396
y(END)g(IF)249 2450 y(*)249 2504 y(*)174 b(LN)22 b(is)f(the)g(number)g
(of)g(elements)f(of)i(the)f(dot)g(product)f(to)i(do)p
eop
%%Page: 71 90
71 89 bop 249 251 a Fu(Program)14 b(Examples)1237 b(71)249
507 y Fs(*)174 b(locally.)42 b(Everyone)20 b(has)h(the)h(same)f
(number,)f(with)h(the)g(master)249 561 y(*)174 b(getting)21
b(any)g(left)g(over)g(elements.)41 b(J)22 b(stores)f(the)g(number)f(of)
249 615 y(*)174 b(elements)20 b(rest)h(of)h(procs)e(do.)249
669 y(*)445 723 y(J)i(=)f(N)h(/)g(NPROCS)445 777 y(LN)g(=)f(J)h(+)f
(MOD\(N,)g(NPROCS\))445 831 y(I)h(=)f(LN)h(+)f(1)249
885 y(*)249 939 y(*)174 b(Randomly)20 b(generate)g(X)i(and)f(Y)249
993 y(*)445 1047 y(CALL)g(SGENMAT\()f(N,)i(1,)f(X,)g(N,)h(MYTID,)e
(NPROCS,)h(MAXN,)f(J)i(\))445 1101 y(CALL)f(SGENMAT\()f(N,)i(1,)f(Y,)g
(N,)h(I,)f(N,)h(LN,)f(NPROCS)f(\))249 1155 y(*)249 1209
y(*)174 b(Loop)21 b(over)g(all)g(worker)g(processes)249
1263 y(*)445 1317 y(DO)h(10)f(K)h(=)f(1,)h(NPROCS-1)249
1371 y(*)249 1425 y(*)240 b(Spawn)20 b(process)h(and)g(check)g(for)g
(error)249 1479 y(*)511 1533 y(CALL)g(PVMFSPAWN\()e('psdot',)h(0,)i
('anywhere',)d(1,)j(TIDS\(K\),)e(IERR)h(\))511 1587 y(IF)g(\(IERR)g
(.NE.)g(1\))g(THEN)576 1641 y(WRITE\(*,*\))f('ERROR,)g(could)h(not)g
(spawn)g(process)f(#',K,)358 1694 y($)436 b('.)43 b(Dying)21
b(.)g(.)h(.')576 1748 y(CALL)f(PVMFEXIT\()f(IERR)h(\))576
1802 y(STOP)511 1856 y(END)g(IF)249 1910 y(*)249 1964
y(*)240 b(Send)21 b(out)g(startup)f(info)249 2018 y(*)511
2072 y(CALL)h(PVMFINITSEND\()e(PVMDEFAULT,)g(IBUF)i(\))511
2126 y(CALL)g(PVMFPACK\()e(INTEGER4,)h(J,)i(1,)f(1,)h(IERR)f(\))511
2180 y(CALL)g(PVMFPACK\()e(REAL4,)i(X\(I\),)g(J,)g(1,)h(IERR)f(\))511
2234 y(CALL)g(PVMFPACK\()e(REAL4,)i(Y\(I\),)g(J,)g(1,)h(IERR)f(\))511
2288 y(CALL)g(PVMFSEND\()e(TIDS\(K\),)i(0,)g(IERR)g(\))511
2342 y(I)g(=)h(I)f(+)h(J)314 2396 y(10)87 b(CONTINUE)249
2450 y(*)249 2504 y(*)174 b(Figure)21 b(master's)f(part)h(of)g(dot)g
(product)p eop
%%Page: 72 91
72 90 bop 249 251 a Fu(72)1375 b(Chapter)13 b(6)249 507
y Fs(*)445 561 y(GDOT)21 b(=)h(SDOT\()f(LN,)g(X,)g(1,)g(Y,)h(1)f(\))249
615 y(*)249 669 y(*)174 b(Receive)21 b(the)g(local)f(dot)i(products,)e
(and)249 723 y(*)174 b(add)21 b(to)h(get)f(the)g(global)g(dot)g
(product)249 777 y(*)445 831 y(DO)h(20)f(K)h(=)f(1,)h(NPROCS-1)511
885 y(CALL)f(PVMFRECV\()e(-1,)j(1,)f(IBUF)g(\))511 939
y(CALL)g(PVMFUNPACK\()e(REAL4,)i(LDOT,)f(1,)i(1,)f(IERR)g(\))511
993 y(GDOT)g(=)g(GDOT)g(+)h(LDOT)314 1047 y(20)87 b(CONTINUE)249
1101 y(*)249 1155 y(*)174 b(Print)21 b(out)g(result)249
1209 y(*)445 1263 y(WRITE\(*,*\))f(')43 b(')445 1317
y(WRITE\(*,*\))20 b('<x,y>)g(=)i(',GDOT)249 1371 y(*)249
1425 y(*)174 b(Do)22 b(sequential)d(dot)i(product)g(and)g(subtract)f
(from)249 1479 y(*)174 b(distributed)20 b(dot)h(product)f(to)i(get)f
(desired)f(error)h(estimate)249 1533 y(*)445 1587 y(LDOT)g(=)h(SDOT\()f
(N,)g(X,)g(1,)h(Y,)f(1)h(\))445 1641 y(WRITE\(*,*\))e('<x,y>)g(:)i
(sequential)e(dot)h(product.)42 b(<x,y>^)20 b(:)i('//)358
1694 y($)305 b('distributed)19 b(dot)i(product.')445
1748 y(WRITE\(*,*\))f('|)h(<x,y>)g(-)h(<x,y>^)e(|)i(=)f(',ABS\(GDOT)f
(-)i(LDOT\))445 1802 y(WRITE\(*,*\))e('Run)h(completed.')249
1856 y(*)249 1910 y(*)109 b(If)21 b(I)h(am)f(a)h(worker)e(process)h
(\(i.e.)f(spawned)h(by)g(master)g(process\))249 1964
y(*)380 2018 y(ELSE)249 2072 y(*)249 2126 y(*)174 b(Receive)21
b(startup)f(info)249 2180 y(*)445 2234 y(CALL)h(PVMFRECV\()f
(TIDS\(0\),)g(0,)i(IBUF)f(\))445 2288 y(CALL)g(PVMFUNPACK\()f
(INTEGER4,)g(LN,)h(1,)g(1,)h(IERR)f(\))445 2342 y(CALL)g(PVMFUNPACK\()f
(REAL4,)g(X,)i(LN,)f(1,)g(IERR)g(\))445 2396 y(CALL)g(PVMFUNPACK\()f
(REAL4,)g(Y,)i(LN,)f(1,)g(IERR)g(\))249 2450 y(*)249
2504 y(*)174 b(Figure)21 b(local)g(dot)g(product)f(and)h(send)g(it)h
(in)f(to)g(master)p eop
%%Page: 73 92
73 91 bop 249 251 a Fu(Program)14 b(Examples)1237 b(73)249
507 y Fs(*)445 561 y(LDOT)21 b(=)h(SDOT\()f(LN,)g(X,)g(1,)g(Y,)h(1)f
(\))445 615 y(CALL)g(PVMFINITSEND\()e(PVMDEFAULT,)h(IBUF)h(\))445
669 y(CALL)g(PVMFPACK\()f(REAL4,)h(LDOT,)f(1,)i(1,)f(IERR)g(\))445
723 y(CALL)g(PVMFSEND\()f(TIDS\(0\),)g(1,)i(IERR)f(\))380
777 y(END)g(IF)249 831 y(*)380 885 y(CALL)g(PVMFEXIT\()f(0)h(\))249
939 y(*)249 993 y(1000)43 b(FORMAT\(I10,')19 b(Successfully)g(spawned)i
(process)f(#',I2,',)g(TID)h(=',I10\))249 1047 y(2000)43
b(FORMAT\('Enter)19 b(the)i(length)g(of)g(vectors)f(to)i(multiply)e
(\(1)h(-',I7,'\):'\))380 1101 y(STOP)249 1155 y(*)249
1209 y(*)109 b(End)21 b(program)f(PSDOT)249 1263 y(*)380
1317 y(END)249 1533 y FD(6.3)52 b(F)l(ailure)249 1641
y FA(The)13 b(failure)f(example)f(demonstrates)i(ho)o(w)f(one)g(can)h
(kill)e(tasks)i(and)f(ho)o(w)g(one)h(can)g(\014nd)f(out)h(when)249
1694 y(tasks)g(exit)f(or)g(fail.)k(F)m(or)c(this)h(example)d(w)o(e)j
(spa)o(wn)f(sev)o(eral)h(tasks,)g(just)f(as)h(w)o(e)f(did)g(in)g(the)h
(previous)249 1748 y(examples.)18 b(One)e(of)d(these)j(unluc)o(ky)e
(tasks)h(gets)g(killed)e(b)o(y)h(the)h(paren)o(t.)20
b(Since)15 b(w)o(e)g(are)f(in)o(terested)249 1802 y(in)i(\014nding)h
(out)f(when)i(a)e(task)h(fails,)f(w)o(e)h(call)f Fs(pvm_notify\(\))e
FA(after)j(spa)o(wning)f(the)h(tasks.)28 b(The)249 1856
y Fs(pvm_notify\(\))10 b FA(call)i(tells)g(PVM)h(to)f(send)i(the)f
(calling)e(task)h(a)g(message)h(when)g(certain)g(tasks)g(exit.)249
1910 y(Here)i(w)o(e)f(are)h(in)o(terested)g(in)f(all)f(the)h(c)o
(hildren.)19 b(Note)14 b(that)g(the)h(task)f(calling)e
Fs(pvm_notify\(\))g FA(will)249 1964 y(receiv)o(e)j(the)f
(noti\014cation,)f FB(not)h FA(the)g(tasks)g(giv)o(en)g(in)f(the)h
(task)g(id)f(arra)o(y)m(.)18 b(It)13 b(w)o(ouldn't)g(mak)o(e)f(m)o(uc)o
(h)249 2018 y(sense)17 b(to)e(send)h(a)f(noti\014cation)f(message)h(to)
g(a)g(task)h(that)f(has)g(exited.)23 b(The)16 b(notify)e(call)g(can)i
(also)249 2072 y(b)q(e)i(used)f(to)g(notify)f(a)h(task)g(when)g(a)g
(new)g(host)g(has)g(b)q(een)h(added)f(or)g(deleted)h(from)d(the)j
(virtual)249 2126 y(mac)o(hine.)e(This)d(migh)o(t)d(b)q(e)j(useful)g
(if)f(a)g(program)f(w)o(an)o(ts)h(to)h(dynamically)c(adapt)k(to)f(the)h
(curren)o(tly)249 2180 y(a)o(v)n(ailable)f(mac)o(hines.)291
2234 y(After)19 b(requesting)g(noti\014cation,)f(the)h(paren)o(t)g
(task)f(then)h(kills)f(one)g(of)g(the)h(c)o(hildren;)h(in)e(this)249
2288 y(case,)e(one)g(of)f(the)h(middle)d(c)o(hildren)j(is)f(killed.)21
b(The)16 b(call)f(to)g Fs(pvm_kill\(\))e FA(simply)h(kills)g(the)i
(task)249 2342 y(indicated)g(b)o(y)f(the)i(task)f(id)f(parameter.)24
b(After)16 b(killing)e(one)i(of)f(the)h(spa)o(wned)h(tasks,)f(the)h
(paren)o(t)249 2396 y(w)o(aits)12 b(on)g(a)f Fs(pvm_recv\(-1,)20
b(TASKDIED\))10 b FA(for)h(the)i(message)f(notifying)e(it)i(the)h(task)
f(has)g(died.)18 b(The)249 2450 y(task)12 b(id)g(of)f(the)i(task)f
(that)h(has)f(exited)g(is)g(stored)i(as)e(a)g(single)f(in)o(teger)i(in)
f(the)g(notify)f(message.)18 b(The)249 2504 y(pro)q(cess)d(unpac)o(ks)e
(the)g(dead)g(task's)g(id)f(and)g(prin)o(ts)h(it)f(out.)18
b(F)m(or)12 b(go)q(o)q(d)g(measure)h(it)f(also)g(prin)o(ts)h(out)p
eop
%%Page: 74 93
74 92 bop 249 251 a Fu(74)1375 b(Chapter)13 b(6)249 507
y FA(the)j(task)g(id)f(of)g(the)h(task)f(it)g(killed.)22
b(These)17 b(ids)e(should)g(b)q(e)h(the)g(same.)22 b(The)16
b(c)o(hild)f(tasks)h(simply)249 561 y(w)o(ait)d(for)h(ab)q(out)f(a)h
(min)o(ute)f(and)g(then)i(quietly)e(exit.)249 682 y FD(Example)18
b(program:)k(failure.c)249 790 y Fs(/*)336 844 y(Failure)f
(notification)e(example)336 897 y(Demonstrates)h(how)h(to)g(tell)g
(when)g(a)h(task)f(exits)249 951 y(*/)249 1059 y(/*)g(defines)g(and)g
(prototypes)f(for)h(the)g(PVM)g(library)g(*/)249 1113
y(#include)f(<pvm3.h>)249 1221 y(/*)h(Maximum)g(number)f(of)i(children)
e(this)h(program)f(will)h(spawn)g(*/)249 1275 y(#define)f(MAXNCHILD)64
b(20)249 1329 y(/*)21 b(Tag)h(to)f(use)g(for)g(the)h(task)e(done)h
(message)g(*/)249 1383 y(#define)f(TASKDIED)173 b(11)249
1533 y(int)249 1587 y(main\(int)20 b(argc,)h(char*)g(argv[]\))249
1641 y({)336 1748 y(/*)h(number)e(of)i(tasks)e(to)i(spawn,)e(use)h(3)h
(as)f(the)h(default)e(*/)336 1802 y(int)h(ntask)g(=)h(3;)336
1856 y(/*)g(return)e(code)h(from)g(pvm)g(calls)g(*/)336
1910 y(int)g(info;)336 1964 y(/*)h(my)f(task)g(id)g(*/)336
2018 y(int)g(mytid;)336 2072 y(/*)h(my)f(parents)f(task)h(id)h(*/)336
2126 y(int)f(myparent;)336 2180 y(/*)h(children)e(task)h(id)g(array)g
(*/)336 2234 y(int)g(child[MAXNCHILD];)336 2288 y(int)g(i,)h(deadtid;)
336 2342 y(int)f(tid;)336 2396 y(char)g(*argv[5];)p eop
%%Page: 75 94
75 93 bop 249 251 a Fu(Program)14 b(Examples)1237 b(75)336
507 y Fs(/*)22 b(find)f(out)g(my)g(task)g(id)g(number)g(*/)336
561 y(mytid)g(=)h(pvm_mytid\(\);)336 669 y(/*)g(check)e(for)i(error)e
(*/)336 723 y(if)i(\(mytid)e(<)i(0\))f({)423 777 y(/*)h(print)f(out)g
(the)g(error)g(*/)423 831 y(pvm_perror\(argv[0]\))o(;)423
885 y(/*)h(exit)f(the)g(program)f(*/)423 939 y(return)h(-1;)423
993 y(})336 1047 y(/*)h(find)f(my)g(parent's)f(task)h(id)g(number)g(*/)
336 1101 y(myparent)f(=)i(pvm_parent\(\);)336 1250 y(/*)g(exit)f(if)g
(there)g(is)g(some)g(error)g(other)g(than)g(PvmNoParent)e(*/)336
1304 y(if)j(\(\(myparent)d(<)j(0\))f(&&)h(\(myparent)e(!=)h
(PvmNoParent\)\))e({)423 1358 y(pvm_perror\(argv[0]\))o(;)423
1412 y(pvm_exit\(\);)423 1466 y(return)i(-1;)423 1520
y(})336 1628 y(/*)h(if)f(i)h(don't)e(have)h(a)h(parent)e(then)h(i)h(am)
f(the)h(parent)e(*/)336 1682 y(if)i(\(myparent)e(==)h(PvmNoParent\))e
({)423 1736 y(/*)j(find)f(out)g(how)g(many)g(tasks)g(to)g(spawn)g(*/)
423 1790 y(if)h(\(argc)f(==)g(2\))g(ntask)g(=)h(atoi\(argv[1]\);)423
1844 y(/*)g(make)f(sure)g(ntask)f(is)i(legal)f(*/)423
1898 y(if)h(\(\(ntask)e(<)i(1\))f(||)g(\(ntask)g(>)h(MAXNCHILD\)\))d({)
j(pvm_exit\(\);)d(return)i(0;)g(})423 2006 y(/*)h(spawn)f(the)g(child)f
(tasks)h(*/)423 2060 y(info)g(=)h(pvm_spawn\(argv[0])o(,)d
(\(char**\)0,)h(PvmTaskDebug,)f(\(char*\)0,)511 2114
y(ntask,)h(child\);)423 2222 y(/*)i(make)f(sure)g(spawn)f(succeeded)g
(*/)423 2276 y(if)i(\(info)f(!=)g(ntask\))f({)i(pvm_exit\(\);)e(return)
g(-1;)h(})423 2384 y(/*)h(print)f(the)g(tids)g(*/)423
2438 y(for)h(\(i)f(=)h(0;)f(i)h(<)f(ntask;)g(i++\))g
(printf\("t\045x\\t",c)o(hild)o([i]\);)d(putchar\('\\n'\);)p
eop
%%Page: 76 95
76 94 bop 249 251 a Fu(76)1375 b(Chapter)13 b(6)423 507
y Fs(/*)22 b(ask)f(for)g(notification)e(when)i(child)g(exits)g(*/)423
561 y(info)g(=)h(pvm_notify\(PvmTas)o(kExit)o(,)d(TASKDIED,)h(ntask,)g
(child\);)423 615 y(if)i(\(info)f(<)g(0\))h({)f(pvm_perror\("notify)o
("\);)e(pvm_exit\(\);)g(return)i(-1;)g(})423 746 y(/*)h(reap)f(the)g
(middle)f(child)h(*/)423 800 y(info)g(=)h(pvm_kill\(child[nt)o(ask/2)o
(]\);)423 854 y(if)g(\(info)f(<)g(0\))h({)f(pvm_perror\("kill"\))o(;)e
(pvm_exit\(\);)g(return)i(-1;)g(})423 962 y(/*)h(wait)f(for)g(the)g
(notification)e(*/)423 1016 y(info)i(=)h(pvm_recv\(-1,)d(TASKDIED\);)
423 1070 y(if)j(\(info)f(<)g(0\))h({)f(pvm_perror\("recv"\))o(;)e
(pvm_exit\(\);)g(return)i(-1;)g(})423 1124 y(info)g(=)h
(pvm_upkint\(&deadt)o(id,)d(1,)i(1\);)423 1178 y(if)h(\(info)f(<)g(0\))
h(pvm_perror\("cal)o(ling)c(pvm_upkint"\);)423 1286 y(/*)k(should)e(be)
i(the)f(middle)f(child)h(*/)423 1340 y(printf\("Task)f(t\045x)h(has)g
(exited.\\n",)f(deadtid\);)423 1394 y(printf\("Task)g(t\045x)h(is)g
(middle)g(child.\\n",)f(child[ntask/2]\))o(;)423 1447
y(pvm_exit\(\);)423 1501 y(return)h(0;)423 1555 y(})336
1663 y(/*)h(i'm)f(a)g(child)g(*/)336 1717 y(sleep\(63\);)336
1771 y(pvm_exit\(\);)336 1825 y(return)g(0;)249 1879
y(})249 2022 y FD(6.4)52 b(Matrix)18 b(Multiply)249 2130
y FA(In)c(our)f(next)h(example)e(w)o(e)i(program)e(a)h(matrix-m)n
(ultipl)o(y)e(algorithm)f(describ)q(ed)16 b(b)o(y)d(F)m(o)o(x)f(et)i
(al.)j(in)249 2184 y([8)o(].)26 b(The)17 b Fs(mmult)f
FA(program)f(can)i(b)q(e)g(found)f(at)h(the)g(end)g(of)f(this)h
(section.)27 b(The)17 b Fs(mmult)f FA(program)249 2238
y(will)f(calculate)h Fn(C)j FA(=)d Fn(AB)r FA(,)h(where)h
Fn(C)s FA(,)e Fn(A)p FA(,)g(and)h Fn(B)i FA(are)d(all)g(square)h
(matrices.)25 b(F)m(or)16 b(simplicit)o(y)e(w)o(e)249
2292 y(assume)f(that)g Fn(m)c Ft(\002)f Fn(m)14 b FA(tasks)g(will)d(b)q
(e)j(used)h(to)e(calculate)g(the)h(solution.)j(Eac)o(h)d(task)f(will)f
(calculate)249 2346 y(a)k(subblo)q(c)o(k)g(of)g(the)h(resulting)f
(matrix)f Fn(C)s FA(.)25 b(The)16 b(blo)q(c)o(k)g(size)h(and)f(the)h(v)
n(alue)f(of)f Fn(m)i FA(is)f(giv)o(en)g(as)g(a)249 2400
y(command)9 b(line)j(argumen)o(t)e(to)i(the)g(program.)k(The)c
(matrices)g Fn(A)g FA(and)f Fn(B)k FA(are)d(also)f(stored)i(as)f(blo)q
(c)o(ks)249 2454 y(distributed)i(o)o(v)o(er)f(the)g Fn(m)655
2439 y Fl(2)687 2454 y FA(tasks.)19 b(Before)14 b(delving)e(in)o(to)g
(the)i(details)f(of)f(the)i(program,)d(let)i(us)g(\014rst)249
2508 y(describ)q(e)j(the)e(algorithm)d(at)j(a)g(high)f(lev)o(el.)p
eop
%%Page: 77 96
77 95 bop 249 251 a Fu(Program)14 b(Examples)1237 b(77)291
507 y FA(Assume)15 b(w)o(e)h(ha)o(v)o(e)f(a)h(grid)f(of)g
Fn(m)c Ft(\002)f Fn(m)16 b FA(tasks.)24 b(Eac)o(h)16
b(task)g(\()p Fn(t)1274 513 y Fk(ij)1319 507 y FA(where)g(0)e
Ft(\024)h Fn(i;)7 b(j)17 b(<)d(m)p FA(\))j(initially)249
561 y(con)o(tains)g(blo)q(c)o(ks)h Fn(C)575 567 y Fk(ij)604
561 y FA(,)g Fn(A)665 567 y Fk(ij)694 561 y FA(,)g(and)f
Fn(B)839 567 y Fk(ij)869 561 y FA(.)29 b(In)17 b(the)h(\014rst)h(step)f
(of)f(the)h(algorithm)d(the)j(tasks)g(on)f(the)249 615
y(diagonal)12 b(\()p Fn(t)446 621 y Fk(ij)490 615 y FA(where)j
Fn(i)e FA(=)f Fn(j)r FA(\))j(send)g(their)g(blo)q(c)o(k)f
Fn(A)1067 621 y Fk(ii)1107 615 y FA(to)g(all)f(the)i(other)g(tasks)f
(in)g(ro)o(w)g Fn(i)p FA(.)20 b(After)14 b(the)249 669
y(transmission)e(of)g Fn(A)566 675 y Fk(ii)592 669 y
FA(,)g(all)g(tasks)h(calculate)g Fn(A)980 675 y Fk(ii)1013
669 y Ft(\002)7 b Fn(B)1083 675 y Fk(ij)1126 669 y FA(and)13
b(add)f(the)i(result)f(in)o(to)g Fn(C)1584 675 y Fk(ij)1613
669 y FA(.)k(In)c(the)h(next)249 723 y(step,)19 b(the)e(column)f(blo)q
(c)o(ks)h(of)f Fn(B)k FA(are)e(rotated.)28 b(That)17
b(is,)g Fn(t)1229 729 y Fk(ij)1275 723 y FA(sends)i(its)e(blo)q(c)o(k)g
(of)f Fn(B)k FA(to)d Fn(t)1734 730 y Fl(\()p Fk(i)p Fj(\000)p
Fl(1\))p Fk(j)1832 723 y FA(.)249 777 y(\(T)m(ask)e Fn(t)381
783 y Fl(0)p Fk(j)430 777 y FA(sends)i(its)e Fn(B)j FA(blo)q(c)o(k)d
(to)g Fn(t)829 784 y Fl(\()p Fk(m)p Fj(\000)p Fl(1\))p
Fk(j)944 777 y FA(.\))23 b(The)16 b(tasks)f(no)o(w)g(return)i(to)e(the)
h(\014rst)g(step;)g Fn(A)1749 784 y Fk(i)p Fl(\()p Fk(i)p
Fl(+1\))249 831 y FA(is)e(m)o(ulticast)f(to)i(all)e(other)i(tasks)g(in)
f(ro)o(w)h Fn(i)p FA(,)f(and)g(the)i(algorithm)11 b(con)o(tin)o(ues.)21
b(After)15 b Fn(m)g FA(iterations)249 885 y(the)g Fn(C)h
FA(matrix)c(con)o(tains)i Fn(A)9 b Ft(\002)h Fn(B)r FA(,)k(and)f(the)i
Fn(B)h FA(matrix)c(has)i(b)q(een)h(rotated)g(bac)o(k)f(in)o(to)f
(place.)291 939 y(Let's)h(no)o(w)g(go)f(o)o(v)o(er)h(the)h(matrix)d(m)o
(ultiply)f(as)j(it)g(is)g(programmed)d(in)j(PVM.)f(In)h(PVM)h(there)g
(is)249 993 y(no)i(restriction)g(on)g(whic)o(h)g(tasks)g(ma)o(y)e(comm)
o(unicate)f(with)j(whic)o(h)f(other)i(tasks.)27 b(Ho)o(w)o(ev)o(er,)17
b(for)249 1047 y(this)d(program)e(w)o(e)i(w)o(ould)f(lik)o(e)h(to)f
(think)h(of)f(the)i(tasks)f(as)g(a)f(t)o(w)o(o-dimensional)e
(conceptual)k(torus.)249 1101 y(In)e(order)h(to)f(en)o(umerate)g(the)h
(tasks,)f(eac)o(h)h(task)f(joins)f(the)i(group)f Fs(mmult)p
FA(.)k(Group)c(ids)g(are)g(used)h(to)249 1155 y(map)f(tasks)j(to)f(our)
g(torus.)22 b(The)16 b(\014rst)g(task)f(to)g(join)f(a)h(group)f(is)h
(giv)o(en)g(the)h(group)f(id)f(of)h(zero.)22 b(In)249
1209 y(the)16 b(mm)o(ult)d(program,)g(the)k(task)e(with)h(group)f(id)g
(zero)i(spa)o(wns)f(the)g(other)g(tasks)g(and)g(sends)g(the)249
1263 y(parameters)f(for)g(the)h(matrix)e(m)o(ultiply)e(to)k(those)g
(tasks.)23 b(The)15 b(parameters)h(are)f Fn(m)h FA(and)f
Fn(bk)q(l)q(siz)r(e)p FA(:)249 1317 y(the)h(square)h(ro)q(ot)f(of)f
(the)h(n)o(um)o(b)q(er)f(of)h(blo)q(c)o(ks)f(and)h(the)g(size)h(of)e(a)
h(blo)q(c)o(k,)f(resp)q(ectiv)o(ely)m(.)25 b(After)16
b(all)249 1371 y(the)f(tasks)g(ha)o(v)o(e)g(b)q(een)h(spa)o(wned)f(and)
f(the)h(parameters)g(transmitted,)f Fs(pvm_barrier\(\))e
FA(is)i(called)249 1425 y(to)h(mak)o(e)f(sure)j(all)d(the)i(tasks)g(ha)
o(v)o(e)g(joined)f(the)h(group.)23 b(If)15 b(the)h(barrier)g(is)f(not)h
(p)q(erformed,)f(later)249 1479 y(calls)f(to)f Fs(pvm_gettid\(\))f
FA(migh)o(t)f(fail)i(since)h(a)g(task)g(ma)o(y)e(not)i(ha)o(v)o(e)f(y)o
(et)i(joined)e(the)i(group.)291 1533 y(After)h(the)g(barrier,)g(w)o(e)g
(store)g(the)h(task)e(ids)h(for)f(the)h(other)g(tasks)g(in)g(our)f
(\\ro)o(w")g(in)g(the)h(arra)o(y)249 1587 y Fs(myrow)p
FA(.)i(This)c(is)g(done)g(b)o(y)g(calculating)f(the)i(group)f(ids)g
(for)g(all)f(the)i(tasks)f(in)g(the)h(ro)o(w)f(and)g(asking)249
1641 y(PVM)k(for)f(the)h(task)g(id)f(for)h(the)g(corresp)q(onding)g
(group)g(id.)28 b(Next)19 b(w)o(e)e(allo)q(cate)h(the)g(blo)q(c)o(ks)f
(for)249 1694 y(the)d(matrices)e(using)h(mallo)q(c\(\).)j(In)d(an)g
(actual)g(application)e(program)h(w)o(e)h(w)o(ould)g(exp)q(ect)h(that)f
(the)249 1748 y(matrices)i(w)o(ould)f(already)h(b)q(e)h(allo)q(cated.)
22 b(Next)15 b(the)h(program)e(calculates)i(the)g(ro)o(w)f(and)g
(column)249 1802 y(of)f(the)h(blo)q(c)o(k)f(of)g Fn(C)j
FA(it)d(will)f(b)q(e)i(computing.)j(This)d(is)f(based)h(on)f(the)h(v)n
(alue)f(of)g(the)h(group)f(id.)20 b(The)249 1856 y(group)14
b(ids)h(range)f(from)f(0)h(to)h Fn(m)10 b Ft(\000)g FA(1)k(inclusiv)o
(e.)19 b(Th)o(us)c(the)g(in)o(teger)g(division)e(of)h(\()p
Fn(my)q(g)q(id=m)p FA(\))j(will)249 1910 y(giv)o(e)d(the)g(task's)g(ro)
o(w)g(and)g(\()p Fn(my)q(g)q(id)f FA(mo)q(d)d Fn(m)p
FA(\))15 b(will)e(giv)o(e)g(the)i(column,)d(if)h(w)o(e)h(assume)g(a)g
(ro)o(w)g(ma)r(jor)249 1964 y(mapping)g(of)i(group)h(ids)f(to)h(tasks.)
26 b(Using)17 b(a)f(similar)e(mapping,)h(w)o(e)h(calculate)h(the)g
(group)g(id)f(of)249 2018 y(the)h(task)f(directly)g FB(ab)n(ove)g
FA(and)g FB(b)n(elow)f FA(in)g(the)i(torus)f(and)g(store)h(their)f
(task)g(ids)g(in)f Fs(up)h FA(and)f Fs(down)p FA(,)249
2072 y(resp)q(ectiv)o(ely)m(.)291 2126 y(Next)c(the)h(blo)q(c)o(ks)g
(are)f(initialized)f(b)o(y)h(calling)f Fs(InitBlock\(\))p
FA(.)15 b(This)c(function)g(simply)e(initializes)249
2180 y Fn(A)j FA(to)f(random)e(v)n(alues,)j Fn(B)h FA(to)f(the)g(iden)o
(tit)o(y)e(matrix,)g(and)h Fn(C)j FA(to)d(zeros.)19 b(This)11
b(will)f(allo)o(w)g(us)h(to)h(v)o(erify)249 2234 y(the)j(computation)d
(at)h(the)i(end)f(of)g(the)g(program)e(b)o(y)i(c)o(hec)o(king)g(that)g
Fn(A)e FA(=)g Fn(C)s FA(.)291 2288 y(Finally)j(w)o(e)i(en)o(ter)h(the)f
(main)e(lo)q(op)h(to)h(calculate)g(the)g(matrix)e(m)o(ultiply)m(.)24
b(First)17 b(the)h(tasks)f(on)249 2342 y(the)g(diagonal)e(m)o(ulticast)
g(their)h(blo)q(c)o(k)h(of)e(A)i(to)f(the)h(other)h(tasks)f(in)f(their)
g(ro)o(w.)26 b(Note)17 b(that)f(the)249 2396 y(arra)o(y)g
Fs(myrow)g FA(actually)f(con)o(tains)i(the)g(task)g(id)f(of)f(the)j
(task)e(doing)g(the)h(m)o(ulticast.)24 b(Recall)16 b(that)249
2450 y Fs(pvm_mcast\(\))d FA(will)h(send)j(to)e(all)g(the)h(tasks)g(in)
f(the)h(tasks)g(arra)o(y)g(except)h(the)f(calling)e(task.)23
b(This)249 2504 y(pro)q(cedure)d(w)o(orks)e(w)o(ell)f(in)h(the)h(case)g
(of)e(mm)o(ult)e(since)k(w)o(e)f(don't)g(w)o(an)o(t)f(to)h(ha)o(v)o(e)g
(to)g(needlessly)p eop
%%Page: 78 97
78 96 bop 249 251 a Fu(78)1375 b(Chapter)13 b(6)249 507
y FA(handle)i(the)g(extra)g(message)f(coming)f(in)o(to)h(the)h(m)o
(ulticasting)d(task)j(with)f(an)h(extra)g Fs(pvm_recv\(\))p
FA(.)249 561 y(Both)i(the)g(m)o(ulticasting)d(task)j(and)f(the)h(tasks)
g(receiving)g(the)g(blo)q(c)o(k)f(calculate)h(the)g Fn(AB)i
FA(for)d(the)249 615 y(diagonal)c(blo)q(c)o(k)i(and)f(the)i(blo)q(c)o
(k)e(of)h Fn(B)i FA(residing)e(in)f(the)i(task.)291 669
y(After)i(the)g(subblo)q(c)o(ks)g(ha)o(v)o(e)g(b)q(een)h(m)o(ultipli)o
(ed)d(and)h(added)h(in)o(to)f(the)h Fn(C)j FA(blo)q(c)o(k,)c(w)o(e)h
(no)o(w)f(shift)249 723 y(the)g Fn(B)j FA(blo)q(c)o(ks)c(v)o(ertically)
m(.)23 b(Sp)q(eci\014cally)m(,)15 b(w)o(e)h(pac)o(k)f(the)i(blo)q(c)o
(k)e(of)g Fn(B)j FA(in)o(to)d(a)h(message,)f(send)i(it)e(to)249
777 y(the)g Fs(up)e FA(task)h(id,)f(and)h(then)g(receiv)o(e)h(a)f(new)g
Fn(B)j FA(blo)q(c)o(k)c(from)f(the)j Fs(down)e FA(task)h(id.)291
831 y(Note)g(that)g(w)o(e)g(use)h(di\013eren)o(t)f(message)g(tags)g
(for)f(sending)h(the)h Fn(A)f FA(blo)q(c)o(ks)g(and)f(the)i
Fn(B)h FA(blo)q(c)o(ks)e(as)249 885 y(w)o(ell)d(as)h(for)g(di\013eren)o
(t)g(iterations)g(of)f(the)i(lo)q(op.)j(W)m(e)c(also)f(fully)g(sp)q
(ecify)h(the)g(task)g(ids)g(when)g(doing)f(a)249 939
y Fs(pvm_recv\(\))p FA(.)17 b(It's)d(tempting)f(to)i(use)g(wildcards)f
(for)g(the)h(\014elds)f(of)g Fs(pvm_recv\(\))p FA(;)e(ho)o(w)o(ev)o
(er,)i(suc)o(h)249 993 y(a)e(practice)h(can)g(b)q(e)g(dangerous.)18
b(F)m(or)12 b(instance,)h(had)f(w)o(e)g(incorrectly)i(calculated)e(the)
h(v)n(alue)f(for)g Fs(up)249 1047 y FA(and)g(used)h(a)e(wildcard)h(for)
f(the)i Fs(pvm_recv\(\))c FA(instead)k(of)e Fs(down)p
FA(,)g(w)o(e)h(migh)o(t)e(ha)o(v)o(e)i(sen)o(t)g(messages)g(to)249
1101 y(the)j(wrong)f(tasks)g(without)g(kno)o(wing)f(it.)19
b(In)14 b(this)g(example)f(w)o(e)h(fully)f(sp)q(ecify)i(messages,)f
(thereb)o(y)249 1155 y(reducing)i(the)g(p)q(ossibilit)o(y)e(of)h
(mistak)o(es)g(b)o(y)g(receiving)h(a)f(message)g(from)f(the)i(wrong)f
(task)h(or)f(the)249 1209 y(wrong)f(phase)g(of)g(the)g(algorithm.)291
1263 y(Once)g(the)f(computation)e(is)h(complete,)g(w)o(e)h(c)o(hec)o(k)
h(to)f(see)g(that)g Fn(A)f FA(=)g Fn(C)s FA(,)g(just)h(to)f(v)o(erify)h
(that)f(the)249 1317 y(matrix)g(m)o(ultiply)e(correctly)15
b(calculated)e(the)h(v)n(alues)g(of)e Fn(C)s FA(.)18
b(This)13 b(c)o(hec)o(k)i(w)o(ould)d(not)i(b)q(e)g(done)f(in)g(a)249
1371 y(matrix)f(m)o(ultiply)f(library)i(routine,)h(for)f(example.)291
1425 y(It)h(is)g(not)h(necessary)h(to)e(call)g Fs(pvm_lvgroup\(\))p
FA(,)e(since)j(PVM)g(will)e(realize)h(the)h(task)g(has)g(exited)249
1479 y(and)g(will)f(remo)o(v)o(e)g(it)h(from)f(the)i(group.)22
b(It)15 b(is)g(go)q(o)q(d)g(form,)f(ho)o(w)o(ev)o(er,)h(to)g(lea)o(v)o
(e)g(the)h(group)f(b)q(efore)249 1533 y(calling)e Fs(pvm_exit\(\))p
FA(.)19 b(The)c(reset)h(command)c(from)h(the)i(PVM)g(console)g(will)f
(reset)i(all)d(the)j(PVM)249 1587 y(groups.)h(The)11
b Fs(pvm_gstat)e FA(command)f(will)h(prin)o(t)i(the)g(status)h(of)e(an)
o(y)g(groups)h(that)g(curren)o(tly)g(exist.)249 1707
y FD(Example)18 b(program:)k(mm)o(ult.c)249 1815 y Fs(/*)336
1869 y(Matrix)f(Multiply)249 1923 y(*/)249 2031 y(/*)g(defines)g(and)g
(prototypes)f(for)h(the)g(PVM)g(library)g(*/)249 2085
y(#include)f(<pvm3.h>)249 2139 y(#include)g(<stdio.h>)249
2247 y(/*)h(Maximum)g(number)f(of)i(children)e(this)h(program)f(will)h
(spawn)g(*/)249 2301 y(#define)f(MAXNTIDS)86 b(100)249
2355 y(#define)20 b(MAXROW)130 b(10)249 2462 y(/*)21
b(Message)g(tags)g(*/)p eop
%%Page: 79 98
79 97 bop 249 251 a Fu(Program)14 b(Examples)1237 b(79)249
507 y Fs(#define)20 b(ATAG)174 b(2)249 561 y(#define)20
b(BTAG)174 b(3)249 615 y(#define)20 b(DIMTAG)130 b(5)249
760 y(void)249 814 y(InitBlock\(float)19 b(*a,)i(float)g(*b,)g(float)g
(*c,)g(int)g(blk,)g(int)g(row,)g(int)g(col\))249 868
y({)336 922 y(int)g(len,)g(ind;)336 976 y(int)g(i,j;)336
1084 y(srand\(pvm_mytid\(\)\);)336 1138 y(len)g(=)h(blk*blk;)336
1192 y(for)f(\(ind)g(=)h(0;)f(ind)h(<)f(len;)g(ind++\))423
1246 y({)h(a[ind])f(=)g(\(float\)\(rand\(\)\045100)o(0\)/10)o(0.0;)d
(c[ind])j(=)g(0.0;)g(})336 1300 y(for)g(\(i)h(=)f(0;)h(i)f(<)h(blk;)f
(i++\))g({)423 1354 y(for)h(\(j)f(=)h(0;)f(j)h(<)f(blk;)g(j++\))g({)511
1408 y(if)g(\(row)g(==)g(col\))598 1462 y(b[j*blk+i])e(=)j(\(i==j\)?)e
(1.0)i(:)f(0.0;)511 1516 y(else)598 1570 y(b[j*blk+i])e(=)j(0.0;)511
1624 y(})423 1678 y(})249 1732 y(})249 1877 y(void)249
1931 y(BlockMult\(float*)d(c,)i(float*)f(a,)i(float*)e(b,)i(int)f
(blk\))249 1985 y({)336 2039 y(int)g(i,j,k;)336 2147
y(for)g(\(i)h(=)f(0;)h(i)f(<)h(blk;)f(i++\))423 2201
y(for)h(\(j)f(=)h(0;)f(j)h(<)f(blk;)g(j)h(++\))511 2255
y(for)f(\(k)g(=)h(0;)f(k)h(<)f(blk;)g(k++\))598 2309
y(c[i*blk+j])e(+=)j(\(a[i*blk+k])d(*)j(b[k*blk+j]\);)249
2363 y(})249 2508 y(int)p eop
%%Page: 80 99
80 98 bop 249 251 a Fu(80)1375 b(Chapter)13 b(6)249 507
y Fs(main\(int)20 b(argc,)h(char*)g(argv[]\))249 561
y({)336 669 y(/*)h(number)e(of)i(tasks)e(to)i(spawn,)e(use)h(3)h(as)f
(the)h(default)e(*/)336 723 y(int)h(ntask)g(=)h(2;)336
777 y(/*)g(return)e(code)h(from)g(pvm)g(calls)g(*/)336
831 y(int)g(info;)336 885 y(/*)h(my)f(task)g(and)g(group)g(id)g(*/)336
939 y(int)g(mytid,)g(mygid;)336 993 y(/*)h(children)e(task)h(id)g
(array)g(*/)336 1047 y(int)g(child[MAXNTIDS-1];)336 1101
y(int)g(i,)h(m,)f(blksize;)336 1155 y(/*)h(array)e(of)i(the)f(tids)g
(in)g(my)h(row)f(*/)336 1209 y(int)g(myrow[MAXROW];)336
1263 y(float)g(*a,)g(*b,)g(*c,)h(*atmp;)336 1317 y(int)f(row,)g(col,)g
(up,)h(down;)336 1425 y(/*)g(find)f(out)g(my)g(task)g(id)g(number)g(*/)
336 1479 y(mytid)g(=)h(pvm_mytid\(\);)336 1533 y(pvm_setopt\(PvmRoute)o
(,)d(PvmRouteDirect\);)336 1641 y(/*)j(check)e(for)i(error)e(*/)336
1694 y(if)i(\(mytid)e(<)i(0\))f({)423 1748 y(/*)h(print)f(out)g(the)g
(error)g(*/)423 1802 y(pvm_perror\(argv[0]\))o(;)423
1856 y(/*)h(exit)f(the)g(program)f(*/)423 1910 y(return)h(-1;)423
1964 y(})336 2168 y(/*)h(join)f(the)g(mmult)g(group)f(*/)336
2222 y(mygid)h(=)h(pvm_joingroup\(")o(mmult)o("\);)336
2276 y(if)g(\(mygid)e(<)i(0\))f({)423 2330 y(pvm_perror\(argv[0]\))o(;)
e(pvm_exit\(\);)h(return)g(-1;)423 2384 y(})336 2492
y(/*)i(if)f(my)g(group)g(id)h(is)f(0)g(then)g(I)h(must)f(spawn)g(the)g
(other)g(tasks)f(*/)p eop
%%Page: 81 100
81 99 bop 249 251 a Fu(Program)14 b(Examples)1237 b(81)336
507 y Fs(if)22 b(\(mygid)e(==)i(0\))f({)423 561 y(/*)h(find)f(out)g
(how)g(many)g(tasks)g(to)g(spawn)g(*/)423 615 y(if)h(\(argc)f(==)g(3\))
g({)511 669 y(m)g(=)h(atoi\(argv[1]\);)511 723 y(blksize)e(=)i
(atoi\(argv[2]\);)511 777 y(})423 831 y(if)g(\(argc)f(<)g(3\))h({)511
885 y(fprintf\(stderr,)c("usage:)j(mmult)f(m)i(blk\\n"\);)511
939 y(pvm_lvgroup\("mm)o(ult"\))o(;)d(pvm_exit\(\);)h(return)g(-1;)511
993 y(})423 1101 y(/*)i(make)f(sure)g(ntask)f(is)i(legal)f(*/)423
1155 y(ntask)g(=)h(m*m;)423 1209 y(if)g(\(\(ntask)e(<)i(1\))f(||)g
(\(ntask)g(>=)g(MAXNTIDS\)\))f({)511 1263 y(fprintf\(stderr,)e("ntask)j
(=)g(\045d)h(not)f(valid.\\n",)f(ntask\);)511 1317 y(pvm_lvgroup\("mm)o
(ult"\))o(;)f(pvm_exit\(\);)h(return)g(-1;)511 1371 y(})423
1425 y(/*)i(no)f(need)g(to)h(spawn)e(if)i(there)e(is)i(only)f(one)g
(task)g(*/)423 1479 y(if)h(\(ntask)e(==)i(1\))f(goto)g(barrier;)423
1587 y(/*)h(spawn)f(the)g(child)f(tasks)h(*/)423 1641
y(info)g(=)h(pvm_spawn\("mmult")o(,)d(\(char**\)0,)h(PvmTaskDefault,)e
(\(char*\)0,)511 1694 y(ntask-1,)i(child\);)423 1802
y(/*)i(make)f(sure)g(spawn)f(succeeded)g(*/)423 1856
y(if)i(\(info)f(!=)g(ntask-1\))f({)511 1910 y(pvm_lvgroup\("mm)o
(ult"\))o(;)f(pvm_exit\(\);)h(return)g(-1;)511 1964 y(})423
2114 y(/*)i(send)f(the)g(matrix)f(dimension)g(*/)423
2168 y(pvm_initsend\(PvmDat)o(aDefa)o(ult\);)423 2222
y(pvm_pkint\(&m,)g(1,)h(1\);)423 2276 y(pvm_pkint\(&blksize,)d(1,)k
(1\);)423 2330 y(pvm_mcast\(child,)d(ntask-1,)h(DIMTAG\);)423
2384 y(})336 2438 y(else)h({)423 2492 y(/*)h(recv)f(the)g(matrix)f
(dimension)g(*/)p eop
%%Page: 82 101
82 100 bop 249 251 a Fu(82)1375 b(Chapter)13 b(6)423
507 y Fs(pvm_recv\(pvm_gettid)o(\("mmu)o(lt",)18 b(0\),)k(DIMTAG\);)423
561 y(pvm_upkint\(&m,)d(1,)j(1\);)423 615 y(pvm_upkint\(&blksize)o(,)d
(1,)i(1\);)423 669 y(ntask)g(=)h(m*m;)423 723 y(})336
860 y(/*)g(make)f(sure)g(all)g(tasks)f(have)h(joined)g(the)g(group)g
(*/)249 914 y(barrier:)336 968 y(info)g(=)h(pvm_barrier\("mmu)o(lt",n)o
(task\))o(;)336 1022 y(if)g(\(info)e(<)i(0\))f(pvm_perror\(argv[0]\))o
(;)336 1130 y(/*)h(find)f(the)g(tids)g(in)g(my)g(row)h(*/)336
1184 y(for)f(\(i)h(=)f(0;)h(i)f(<)h(m;)f(i++\))423 1238
y(myrow[i])g(=)g(pvm_gettid\("mmult")o(,)e(\(mygid/m\)*m)h(+)h(i\);)336
1346 y(/*)h(allocate)e(the)h(memory)f(for)i(the)f(local)g(blocks)f(*/)
336 1400 y(a)i(=)f(\(float*\)malloc\(size)o(of\(fl)o(oat\)*)o(blksi)o
(ze*bl)o(ksize)o(\);)336 1454 y(b)h(=)f(\(float*\)malloc\(size)o
(of\(fl)o(oat\)*)o(blksi)o(ze*bl)o(ksize)o(\);)336 1508
y(c)h(=)f(\(float*\)malloc\(size)o(of\(fl)o(oat\)*)o(blksi)o(ze*bl)o
(ksize)o(\);)336 1562 y(atmp)g(=)h(\(float*\)malloc\(s)o(izeof)o
(\(floa)o(t\)*bl)o(ksize)o(*blks)o(ize\))o(;)336 1616
y(/*)g(check)e(for)i(valid)e(pointers)g(*/)336 1670 y(if)i(\(!\(a)f(&&)
g(b)h(&&)f(c)h(&&)f(atmp\)\))f({)423 1724 y(fprintf\(stderr,)f("\045s:)
i(out)g(of)h(memory!\\n",)d(argv[0]\);)423 1778 y(free\(a\);)i
(free\(b\);)f(free\(c\);)g(free\(atmp\);)423 1831 y
(pvm_lvgroup\("mmult")o(\);)f(pvm_exit\(\);)g(return)i(-1;)423
1885 y(})336 1993 y(/*)h(find)f(my)g(block's)f(row)h(and)h(column)e(*/)
336 2047 y(row)h(=)h(mygid/m;)e(col)h(=)h(mygid)f(\045)g(m;)336
2101 y(/*)h(calculate)e(the)h(neighbor's)e(above)i(and)g(below)g(*/)336
2155 y(up)h(=)f(pvm_gettid\("mmult")o(,)e(\(\(row\)?\(row-1\):\(m-)o
(1\)\)*m)o(+col)o(\);)336 2209 y(down)i(=)h(pvm_gettid\("mmul)o(t",)d
(\(\(row)h(==)i(\(m-1\)\)?col:\(row+)o(1\)*m+)o(col\)\))o(;)336
2317 y(/*)g(initialize)d(the)j(blocks)e(*/)336 2371 y(InitBlock\(a,)g
(b,)h(c,)g(blksize,)f(row,)h(col\);)336 2508 y(/*)h(do)f(the)g(matrix)g
(multiply)f(*/)p eop
%%Page: 83 102
83 101 bop 249 251 a Fu(Program)14 b(Examples)1237 b(83)336
507 y Fs(for)21 b(\(i)h(=)f(0;)h(i)f(<)h(m;)f(i++\))g({)423
561 y(/*)h(mcast)f(the)g(block)f(of)i(matrix)e(A)i(*/)423
615 y(if)g(\(col)f(==)g(\(row)g(+)h(i\)\045m\))e({)511
669 y(pvm_initsend\(Pv)o(mData)o(Defau)o(lt\);)511 723
y(pvm_pkfloat\(a,)e(blksize*blksize,)h(1\);)511 777 y(pvm_mcast\(myrow)
o(,)g(m,)i(\(i+1\)*ATAG\);)511 831 y(BlockMult\(c,a,b)o(,blks)o(ize\);)
511 885 y(})423 939 y(else)g({)511 993 y(pvm_recv\(pvm_ge)o(ttid\()o
("mmul)o(t",)e(row*m)h(+)i(\(row)f(+i\)\045m\),)f(\(i+1\)*ATAG\);)511
1047 y(pvm_upkfloat\(at)o(mp,)f(blksize*blksize,)f(1\);)511
1101 y(BlockMult\(c,atm)o(p,b,b)o(lksiz)o(e\);)511 1155
y(})423 1209 y(/*)k(rotate)e(the)i(columns)e(of)h(B)h(*/)423
1263 y(pvm_initsend\(PvmDat)o(aDefa)o(ult\);)423 1317
y(pvm_pkfloat\(b,)d(blksize*blksize,)g(1\);)423 1371
y(pvm_send\(up,)h(\(i+1\)*BTAG\);)423 1425 y(pvm_recv\(down,)f
(\(i+1\)*BTAG\);)423 1479 y(pvm_upkfloat\(b,)g(blksize*blksize,)g(1\);)
423 1533 y(})336 1682 y(/*)j(check)e(it)i(*/)336 1736
y(for)f(\(i)h(=)f(0)h(;)g(i)f(<)h(blksize*blksize;)c(i++\))423
1790 y(if)k(\(a[i])f(!=)g(c[i]\))511 1844 y(printf\("Error)e(a[\045d])h
(\(\045g\))h(!=)h(c[\045d])f(\(\045g\))g(\\n",)f(i,)i(a[i],i,c[i]\);)
336 1952 y(printf\("Done.\\n"\);)336 2006 y(free\(a\);)e(free\(b\);)h
(free\(c\);)f(free\(atmp\);)336 2060 y(pvm_lvgroup\("mmult")o(\);)336
2114 y(pvm_exit\(\);)336 2168 y(return)h(0;)249 2222
y(})249 2342 y FD(6.5)52 b(One-Dimensional)20 b(Heat)e(Equation)245
2450 y FA(Here)f(w)o(e)f(presen)o(t)h(a)f(PVM)g(program)e(that)i
(calculates)g(heat)h(di\013usion)e(through)h(a)f(substrate,)i(in)249
2504 y(this)d(case)h(a)e(wire.)19 b(Consider)14 b(the)g
(one-dimensional)e(heat)i(equation)g(on)g(a)f(thin)h(wire:)p
eop
%%Page: 84 103
84 102 bop 249 251 a Fu(84)1375 b(Chapter)13 b(6)254
500 y Fn(@)r(A)p 254 518 56 2 v 262 556 a(@)r(t)326 528
y FA(=)375 500 y Fn(@)399 484 y Fl(2)418 500 y Fn(A)p
375 518 75 2 v 379 556 a(@)r(x)427 544 y Fl(2)1725 528
y FA(\(6.5.1\))249 625 y(and)h(a)f(discretization)i(of)e(the)h(form)254
693 y Fn(A)285 699 y Fk(i)p Fl(+1)p Fk(;j)376 693 y Ft(\000)9
b Fn(A)448 699 y Fk(i;j)p 254 712 234 2 v 345 750 a Ft(4)p
Fn(t)504 721 y FA(=)553 693 y Fn(A)584 699 y Fk(i;j)r
Fl(+1)674 693 y Ft(\000)h FA(2)p Fn(A)768 699 y Fk(i;j)816
693 y FA(+)f Fn(A)888 699 y Fk(i;j)r Fj(\000)p Fl(1)p
553 712 418 2 v 722 750 a Ft(4)p Fn(x)783 738 y Fl(2)1725
721 y FA(\(6.5.2\))249 826 y(giving)j(the)j(explicit)e(form)o(ula)249
931 y Fn(A)280 937 y Fk(i)p Fl(+1)p Fk(;j)373 931 y FA(=)f
Fn(A)448 937 y Fk(i;j)496 931 y FA(+)556 903 y Ft(4)p
Fn(t)p 543 922 80 2 v 543 960 a Ft(4)p Fn(x)604 948 y
Fl(2)627 931 y FA(\()p Fn(A)674 937 y Fk(i;j)r Fl(+1)764
931 y Ft(\000)e FA(2)p Fn(A)858 937 y Fk(i;j)906 931
y FA(+)g Fn(A)979 937 y Fk(i;j)r Fj(\000)p Fl(1)1060
931 y FA(\))p Fn(:)637 b FA(\(6.5.3\))291 1036 y(initial)11
b(and)j(b)q(oundary)g(conditions:)315 1146 y Fn(A)p FA(\()p
Fn(t;)7 b FA(0\))12 b(=)f(0,)j Fn(A)p FA(\()p Fn(t;)7
b FA(1\))k(=)h(0)h(for)h(all)e Fn(t)315 1200 y(A)p FA(\(0)p
Fn(;)7 b(x)p FA(\))k(=)h(sin\()p Fn(\031)q(x)p FA(\))i(for)g(0)d
Ft(\024)h Fn(x)f Ft(\024)h FA(1.)291 1249 y(The)i(pseudo)h(co)q(de)f
(for)g(this)g(computation)e(is)i(as)g(follo)o(ws:)336
1339 y Fs(for)21 b(i)h(=)g(1:tsteps-1;)423 1393 y(t)g(=)g(t+dt;)423
1447 y(a\(i+1,1\)=0;)423 1501 y(a\(i+1,n+2\)=0;)423 1555
y(for)g(j)f(=)h(2:n+1;)511 1609 y(a\(i+1,j\)=a\(i,j\))c(+)k
(mu*\(a\(i,j+1\)-2*a\()o(i,j\)+)o(a\(i,)o(j-1\)\))o(;)423
1663 y(end;)423 1717 y(t;)423 1771 y(a\(i+1,1:n+2\);)423
1825 y(plot\(a\(i,:\)\))336 1879 y(end)291 1968 y FA(F)m(or)13
b(this)h(example)f(w)o(e)h(will)f(use)i(a)f(master-sla)o(v)o(e)f
(programming)d(mo)q(del.)17 b(The)e(master,)e(heat.c,)249
2022 y(spa)o(wns)18 b(\014v)o(e)g(copies)h(of)e(the)h(program)e
(heatslv.)30 b(The)18 b(sla)o(v)o(es)g(compute)g(the)g(heat)g
(di\013usion)f(for)249 2076 y(subsections)g(of)d(the)i(wire)f(in)g
(parallel.)20 b(A)o(t)15 b(eac)o(h)g(time)f(step)i(the)g(sla)o(v)o(es)f
(exc)o(hange)h(b)q(oundary)f(in-)249 2130 y(formation,)9
b(in)i(this)g(case)i(the)f(temp)q(erature)g(of)f(the)h(wire)f(at)h(the)
g(b)q(oundaries)f(b)q(et)o(w)o(een)i(pro)q(cessors.)291
2184 y(Let's)e(tak)o(e)g(a)g(closer)h(lo)q(ok)e(at)h(the)h(co)q(de.)18
b(In)11 b(heat.c)h(the)g(arra)o(y)e Fs(solution)g FA(will)g(hold)g(the)
i(solution)249 2238 y(for)g(the)h(heat)g(di\013usion)g(equation)f(at)g
(eac)o(h)h(time)f(step.)18 b(This)13 b(arra)o(y)f(will)f(b)q(e)i
(output)g(at)f(the)i(end)f(of)249 2292 y(the)f(program)e(in)h(xgraph)h
(format.)j(\(xgraph)c(is)h(a)f(program)f(for)h(plotting)g(data.\))17
b(First)12 b(the)g(heatslv)249 2346 y(tasks)k(are)g(spa)o(wned.)23
b(Next,)16 b(the)h(initial)c(data)i(set)i(is)e(computed.)23
b(Notice)15 b(that)h(the)g(ends)h(of)d(the)249 2400 y(wires)g(are)h
(giv)o(en)e(initial)f(temp)q(erature)j(v)n(alues)e(of)h(zero.)291
2454 y(The)f(main)f(part)h(of)g(the)h(program)d(is)i(then)h(executed)i
(four)d(times,)f(eac)o(h)h(with)g(a)g(di\013eren)o(t)i(v)n(alue)249
2508 y(for)e(\001)p Fn(t)p FA(.)18 b(A)13 b(timer)g(is)g(used)i(to)e
(compute)g(the)i(elapsed)f(time)e(of)h(eac)o(h)h(compute)f(phase.)19
b(The)14 b(initial)p eop
%%Page: 85 104
85 103 bop 249 251 a Fu(Program)14 b(Examples)1237 b(85)249
507 y FA(data)18 b(sets)h(are)f(sen)o(t)g(to)g(the)h(heatslv)f(tasks.)
30 b(The)18 b(left)g(and)f(righ)o(t)h(neigh)o(b)q(or)f(task)h(ids)g
(are)g(sen)o(t)249 561 y(along)d(with)h(the)h(initial)d(data)i(set.)26
b(The)16 b(heatslv)h(tasks)f(use)h(these)h(to)e(comm)o(unicate)e(b)q
(oundary)249 615 y(information.)34 b(\(Alternativ)o(ely)m(,)20
b(w)o(e)g(could)g(ha)o(v)o(e)g(used)h(the)f(PVM)h(group)f(calls)f(to)h
(map)f(tasks)249 669 y(to)g(segmen)o(ts)h(of)f(the)h(wire.)35
b(By)20 b(using)g(the)g(group)f(calls)g(w)o(e)h(w)o(ould)f(ha)o(v)o(e)g
(a)o(v)o(oided)g(explicitly)249 723 y(comm)o(unicating)10
b(the)15 b(task)f(ids)g(to)g(the)g(sla)o(v)o(e)g(pro)q(cesses.\))291
777 y(After)h(sending)g(the)g(initial)e(data,)h(the)i(master)e(pro)q
(cess)i(simply)d(w)o(aits)h(for)h(results.)22 b(When)14
b(the)249 831 y(results)e(arriv)o(e,)g(they)f(are)h(in)o(tegrated)g(in)
o(to)e(the)i(solution)e(matrix,)g(the)i(elapsed)f(time)f(is)h
(calculated,)249 885 y(and)j(the)g(solution)f(is)h(written)g(out)g(to)g
(the)g(xgraph)g(\014le.)291 939 y(Once)h(the)f(data)g(for)f(all)g(four)
g(phases)i(has)f(b)q(een)h(computed)f(and)f(stored,)i(the)f(master)g
(program)249 993 y(prin)o(ts)g(out)g(the)g(elapsed)h(times)e(and)h
(kills)e(the)j(sla)o(v)o(e)e(pro)q(cesses.)249 1113 y
FD(Example)18 b(program:)k(heat.c)249 1221 y Fs(/*)249
1275 y(heat.c)293 1383 y(Use)f(PVM)g(to)g(solve)g(a)h(simple)e(heat)h
(diffusion)f(differential)f(equation,)293 1437 y(using)h(1)i(master)f
(program)f(and)h(5)h(slaves.)293 1545 y(The)f(master)f(program)h(sets)g
(up)g(the)g(data,)g(communicates)e(it)j(to)f(the)g(slaves)293
1599 y(and)g(waits)g(for)g(the)g(results)f(to)i(be)f(sent)g(from)g(the)
g(slaves.)293 1653 y(Produces)f(xgraph)g(ready)h(files)g(of)g(the)g
(results.)249 1761 y(*/)249 1869 y(#include)f("pvm3.h")249
1923 y(#include)g(<stdio.h>)249 1977 y(#include)g(<math.h>)249
2031 y(#include)g(<time.h>)249 2085 y(#define)g(SLAVENAME)g("heatslv")
249 2139 y(#define)g(NPROC)h(5)249 2193 y(#define)f(TIMESTEP)h(100)249
2247 y(#define)f(PLOTINC)h(10)249 2301 y(#define)f(SIZE)h(1000)249
2408 y(int)g(num_data)f(=)i(SIZE/NPROC;)p eop
%%Page: 86 105
86 104 bop 249 251 a Fu(86)1375 b(Chapter)13 b(6)249
507 y Fs(main\(\))249 561 y({)65 b(int)21 b(mytid,)g(task_ids[NPROC],)d
(i,)k(j;)336 615 y(int)f(left,)g(right,)g(k,)g(l;)336
669 y(int)g(step)g(=)h(TIMESTEP;)336 723 y(int)f(info;)336
831 y(double)g(init[SIZE],)e(solution[TIMESTEP][)o(SIZE])o(;)336
885 y(double)i(result[TIMESTEP*)o(SIZE/)o(NPROC)o(],)e(deltax2;)336
939 y(FILE)i(*filenum;)336 993 y(char)g(*filename[4][7];)336
1047 y(double)g(deltat[4];)336 1101 y(time_t)g(t0;)336
1155 y(int)g(etime[4];)336 1263 y(filename[0][0])e(=)j("graph1";)336
1317 y(filename[1][0])d(=)j("graph2";)336 1371 y(filename[2][0])d(=)j
("graph3";)336 1425 y(filename[3][0])d(=)j("graph4";)336
1533 y(deltat[0])e(=)i(5.0e-1;)336 1587 y(deltat[1])e(=)i(5.0e-3;)336
1641 y(deltat[2])e(=)i(5.0e-6;)336 1694 y(deltat[3])e(=)i(5.0e-9;)249
1802 y(/*)f(enroll)g(in)g(pvm)h(*/)336 1856 y(mytid)f(=)h
(pvm_mytid\(\);)249 1964 y(/*)f(spawn)g(the)g(slave)g(tasks)g(*/)336
2018 y(info)g(=)h(pvm_spawn\(SLAVEN)o(AME,\()o(char)c
(**\)0,PvmTaskDefault)o(,"",)423 2072 y(NPROC,task_ids\);)249
2126 y(/*)j(create)g(the)g(initial)g(data)f(set)i(*/)336
2180 y(for)f(\(i)h(=)f(0;)h(i)f(<)h(SIZE;)f(i++\))423
2234 y(init[i])g(=)g(sin\(M_PI)f(*)i(\()g(\(double\)i)e(/)h
(\(double\)\(SIZE-1\))e(\)\);)336 2288 y(init[0])i(=)g(0.0;)336
2342 y(init[SIZE-1])f(=)h(0.0;)249 2450 y(/*)g(run)h(the)f(problem)f(4)
i(times)e(for)i(different)e(values)g(of)i(delta)e(t)i(*/)336
2504 y(for)f(\(l)h(=)f(0;)h(l)f(<)h(4;)f(l++\))g({)p
eop
%%Page: 87 106
87 105 bop 249 251 a Fu(Program)14 b(Examples)1237 b(87)423
507 y Fs(deltax2)21 b(=)g(\(deltat[l]/pow\(1.0/)o(\(doub)o(le\)SI)o
(ZE,2.)o(0\)\);)423 561 y(/*)h(start)f(timing)f(for)h(this)g(run)g(*/)
423 615 y(time\(&t0\);)423 669 y(etime[l])g(=)g(t0;)249
723 y(/*)g(send)g(the)h(initial)e(data)h(to)g(the)g(slaves.)g(*/)249
777 y(/*)g(include)g(neighbor)f(info)h(for)g(exchanging)f(boundary)g
(data)h(*/)423 831 y(for)h(\(i)f(=)h(0;)f(i)h(<)f(NPROC;)g(i++\))g({)
511 885 y(pvm_initsend\(Pv)o(mData)o(Defau)o(lt\);)511
939 y(left)g(=)g(\(i)h(==)f(0\))g(?)h(0)f(:)h(task_ids[i-1];)511
993 y(pvm_pkint\(&left)o(,)d(1,)i(1\);)511 1047 y(right)f(=)i(\(i)f(==)
h(\(NPROC-1\)\))d(?)j(0)g(:)f(task_ids[i+1];)511 1101
y(pvm_pkint\(&righ)o(t,)e(1,)i(1\);)511 1155 y(pvm_pkint\(&step)o(,)e
(1,)i(1\);)511 1209 y(pvm_pkdouble\(&d)o(eltax)o(2,)e(1,)i(1\);)511
1263 y(pvm_pkint\(&num_)o(data,)d(1,)k(1\);)511 1317
y(pvm_pkdouble\(&i)o(nit[n)o(um_da)o(ta*i])o(,)d(num_data,)h(1\);)511
1371 y(pvm_send\(task_i)o(ds[i])o(,)f(4\);)511 1425 y(})249
1533 y(/*)i(wait)g(for)h(the)f(results)f(*/)423 1587
y(for)i(\(i)f(=)h(0;)f(i)h(<)f(NPROC;)g(i++\))g({)511
1641 y(pvm_recv\(task_i)o(ds[i])o(,)e(7\);)511 1694 y(pvm_upkdouble\(&)
o(resul)o(t[0],)f(num_data*TIMESTEP,)g(1\);)249 1748
y(/*)j(update)g(the)g(solution)f(*/)511 1802 y(for)h(\(j)g(=)h(0;)f(j)h
(<)f(TIMESTEP;)f(j++\))598 1856 y(for)h(\(k)g(=)h(0;)f(k)h(<)f
(num_data;)f(k++\))685 1910 y(solution[j][num_d)o(ata*i)o(+k])f(=)i
(result[wh\(j,k\)];)511 1964 y(})249 2072 y(/*)g(stop)g(timing)g(*/)423
2126 y(time\(&t0\);)423 2180 y(etime[l])g(=)g(t0)h(-)f(etime[l];)249
2288 y(/*)g(produce)g(the)g(output)g(*/)423 2342 y(filenum)g(=)g
(fopen\(filename[l][0)o(],)e("w"\);)423 2396 y(fprintf\(filenum,"Ti)o
(tleTe)o(xt:)g(Wire)i(Heat)g(over)g(Delta)f(Time:)h(\045e\\n",)511
2450 y(deltat[l]\);)423 2504 y(fprintf\(filenum,"XU)o(nitTe)o(xt:)e
(Distance\\nYUnitT)o(ext:)f(Heat\\n"\);)p eop
%%Page: 88 107
88 106 bop 249 251 a Fu(88)1375 b(Chapter)13 b(6)423
507 y Fs(for)22 b(\(i)f(=)h(0;)f(i)h(<)f(TIMESTEP;)f(i)i(=)f(i)h(+)f
(PLOTINC\))g({)511 561 y(fprintf\(filenum)o(,"\\"T)o(ime)e(index:)h
(\045d\\n",i\);)511 615 y(for)h(\(j)g(=)h(0;)f(j)h(<)f(SIZE;)g(j++\))
598 669 y(fprintf\(filenum,)o("\045d)e(\045e\\n",j,)h
(solution[i][j]\);)511 723 y(fprintf\(filenum)o(,"\\n")o(\);)511
777 y(})423 831 y(fclose)h(\(filenum\);)336 885 y(})249
993 y(/*)g(print)g(the)g(timing)g(information)e(*/)336
1047 y(printf\("Problem)g(size:)i(\045d\\n",SIZE\);)336
1101 y(for)g(\(i)h(=)f(0;)h(i)f(<)h(4;)f(i++\))423 1155
y(printf\("Time)f(for)h(run)g(\045d:)g(\045d)h(sec\\n",i,etime[i)o
(]\);)249 1263 y(/*)f(kill)g(the)h(slave)e(processes)g(*/)336
1317 y(for)h(\(i)h(=)f(0;)h(i)f(<)h(NPROC;)e(i++\))h
(pvm_kill\(task_ids[i])o(\);)336 1371 y(pvm_exit\(\);)249
1425 y(})249 1533 y(int)g(wh\(x,)g(y\))249 1587 y(int)g(x,)h(y;)249
1641 y({)336 1694 y(return\(x*num_data+y)o(\);)249 1748
y(})291 1844 y FA(The)c(heatslv)h(programs)e(do)h(the)h(actual)f
(computation)f(of)g(the)i(heat)g(di\013usion)f(through)g(the)249
1898 y(wire.)31 b(The)19 b(sla)o(v)o(e)f(program)e(consists)j(of)f(an)g
(in\014nite)g(lo)q(op)f(that)i(receiv)o(es)h(an)d(initial)g(data)h
(set,)249 1952 y(iterativ)o(ely)11 b(computes)h(a)g(solution)f(based)h
(on)g(this)g(data)g(set)g(\(exc)o(hanging)g(b)q(oundary)g(information)
249 2006 y(with)k(neigh)o(b)q(ors)h(on)f(eac)o(h)h(iteration\),)g(and)f
(sends)i(the)f(resulting)f(partial)g(solution)g(bac)o(k)g(to)g(the)249
2060 y(master)d(pro)q(cess.)291 2114 y(Rather)h(than)f(using)h(an)g
(in\014nite)f(lo)q(op)g(in)h(the)g(sla)o(v)o(e)f(tasks,)h(w)o(e)g
(could)g(send)h(a)e(sp)q(ecial)h(message)249 2168 y(to)f(the)i(sla)o(v)
o(e)e(ordering)g(it)h(to)f(exit.)18 b(T)m(o)13 b(a)o(v)o(oid)f
(complicating)f(the)j(message)f(passing,)g(ho)o(w)o(ev)o(er,)h(w)o(e)
249 2222 y(simply)c(use)j(the)g(in\014nite)f(lo)q(op)g(in)g(the)h(sla)o
(v)o(e)f(tasks)g(and)g(kill)f(them)h(o\013)g(from)e(the)j(master)f
(program.)249 2276 y(A)17 b(third)f(option)g(w)o(ould)f(b)q(e)i(to)g
(ha)o(v)o(e)f(the)h(sla)o(v)o(es)f(execute)j(only)c(once,)i(exiting)f
(after)h(pro)q(cessing)249 2330 y(a)f(single)g(data)g(set)h(from)e(the)
i(master.)25 b(This)16 b(w)o(ould)g(require)h(placing)f(the)h(master's)
e(spa)o(wn)i(call)249 2384 y(inside)12 b(the)h(main)c(for)j(lo)q(op)f
(of)h(heat.c.)17 b(While)11 b(this)h(option)g(w)o(ould)f(w)o(ork,)g(it)
h(w)o(ould)f(needlessly)i(add)249 2438 y(o)o(v)o(erhead)h(to)g(the)h(o)
o(v)o(erall)d(computation.)p eop
%%Page: 89 108
89 107 bop 249 251 a Fu(Program)14 b(Examples)1237 b(89)291
507 y FA(F)m(or)15 b(eac)o(h)h(time)e(step)j(and)e(b)q(efore)h(eac)o(h)
h(compute)e(phase,)h(the)g(b)q(oundary)g(v)n(alues)f(of)g(the)h(tem-)
249 561 y(p)q(erature)i(matrix)d(are)i(exc)o(hanged.)26
b(The)17 b(left-hand)g(b)q(oundary)f(elemen)o(ts)g(are)h(\014rst)h(sen)
o(t)f(to)f(the)249 615 y(left)f(neigh)o(b)q(or)g(task)h(and)f(receiv)o
(ed)i(from)c(the)j(righ)o(t)f(neigh)o(b)q(or)h(task.)22
b(Symmetrically)l(,)13 b(the)j(righ)o(t-)249 669 y(hand)f(b)q(oundary)h
(elemen)o(ts)f(are)h(sen)o(t)g(to)f(the)h(righ)o(t)f(neigh)o(b)q(or)h
(and)f(then)h(receiv)o(ed)h(from)c(the)j(left)249 723
y(neigh)o(b)q(or.)22 b(The)15 b(task)h(ids)f(for)g(the)g(neigh)o(b)q
(ors)h(are)f(c)o(hec)o(k)o(ed)i(to)e(mak)o(e)f(sure)i(no)f(attempt)f
(is)h(made)249 777 y(to)f(send)h(or)e(receiv)o(e)j(messages)e(to)f
(nonexisten)o(t)i(tasks.)249 897 y FD(Example)j(program:)k(heatslv.c)
249 1005 y Fs(/*)249 1113 y(heatslv.c)336 1221 y(The)f(slaves)g
(receive)f(the)h(initial)g(data)g(from)g(the)g(host,)336
1275 y(exchange)f(boundary)h(information)e(with)i(neighbors,)336
1329 y(and)g(calculate)f(the)i(heat)e(change)h(in)g(the)h(wire.)336
1383 y(This)f(is)h(done)f(for)g(a)g(number)g(of)g(iterations,)f(sent)h
(by)g(the)g(master.)249 1491 y(*/)249 1599 y(#include)f("pvm3.h")249
1653 y(#include)g(<stdio.h>)249 1761 y(int)h(num_data;)249
1869 y(main\(\))249 1923 y({)336 1977 y(int)g(mytid,)g(left,)g(right,)f
(i,)i(j,)f(master;)336 2031 y(int)g(timestep;)336 2139
y(double)g(*init,)f(*A;)336 2193 y(double)h(leftdata,)f(rightdata,)f
(delta,)i(leftside,)f(rightside;)249 2301 y(/*)h(enroll)g(in)g(pvm)h
(*/)336 2355 y(mytid)f(=)h(pvm_mytid\(\);)336 2408 y(master)f(=)g
(pvm_parent\(\);)p eop
%%Page: 90 109
90 108 bop 249 251 a Fu(90)1375 b(Chapter)13 b(6)249
507 y Fs(/*)21 b(receive)g(my)g(data)g(from)g(the)g(master)g(program)f
(*/)293 561 y(while\(1\))g({)336 615 y(pvm_recv\(master,)f(4\);)336
669 y(pvm_upkint\(&left,)g(1,)i(1\);)336 723 y(pvm_upkint\(&right,)d
(1,)k(1\);)336 777 y(pvm_upkint\(&timeste)o(p,)d(1,)i(1\);)336
831 y(pvm_upkdouble\(&delt)o(a,)e(1,)i(1\);)336 885 y
(pvm_upkint\(&num_dat)o(a,)e(1,)i(1\);)336 939 y(init)g(=)h(\(double)e
(*\))i(malloc\(num_data)o(*size)o(of\(do)o(uble\))o(\);)336
993 y(pvm_upkdouble\(init,)c(num_data,)i(1\);)249 1101
y(/*)h(copy)g(the)h(initial)e(data)h(into)g(my)g(working)g(array)f(*/)
336 1209 y(A)i(=)f(\(double)g(*\))g(malloc\(num_data)e(*)i(timestep)g
(*)g(sizeof\(double\)\);)336 1263 y(for)g(\(i)h(=)f(0;)h(i)f(<)h
(num_data;)e(i++\))h(A[i])g(=)g(init[i];)249 1371 y(/*)g(perform)g(the)
g(calculation)e(*/)293 1479 y(for)i(\(i)g(=)h(0;)f(i)h(<)f(timestep-1;)
f(i++\))h({)336 1533 y(/*)h(trade)e(boundary)h(info)f(with)h(my)h
(neighbors)e(*/)336 1587 y(/*)43 b(send)21 b(left,)g(receive)f(right)87
b(*/)336 1641 y(if)22 b(\(left)e(!=)i(0\))f({)423 1694
y(pvm_initsend\(PvmDat)o(aDefa)o(ult\);)423 1748 y
(pvm_pkdouble\(&A[wh\()o(i,0\)])o(,1,1\))o(;)423 1802
y(pvm_send\(left,)e(5\);)423 1856 y(})336 1910 y(if)j(\(right)e(!=)i
(0\))f({)423 1964 y(pvm_recv\(right,)e(5\);)423 2018
y(pvm_upkdouble\(&righ)o(tdata)o(,)g(1,)i(1\);)336 2072
y(/*)h(send)f(right,)f(receive)g(left)h(*/)423 2126 y
(pvm_initsend\(PvmDat)o(aDefa)o(ult\);)423 2180 y
(pvm_pkdouble\(&A[wh\()o(i,num)o(_data)o(-1\)],)o(1,1\);)423
2234 y(pvm_send\(right,)e(6\);)423 2288 y(})336 2342
y(if)j(\(left)e(!=)i(0\))f({)423 2396 y(pvm_recv\(left,)e(6\);)423
2450 y(pvm_upkdouble\(&left)o(data,)o(1,1\);)423 2504
y(})p eop
%%Page: 91 110
91 109 bop 249 251 a Fu(Program)14 b(Examples)1237 b(91)249
561 y Fs(/*)21 b(do)h(the)f(calculations)e(for)i(this)g(iteration)f(*/)
336 669 y(for)h(\(j)h(=)f(0;)h(j)f(<)h(num_data;)e(j++\))h({)423
723 y(leftside)g(=)g(\(j)h(==)f(0\))g(?)h(leftdata)e(:)i
(A[wh\(i,j-1\)];)423 777 y(rightside)e(=)i(\(j)f(==)h(\(num_data-1\)\))
d(?)i(rightdata)f(:)i(A[wh\(i,j+1\)];)423 831 y(if)g
(\(\(j==0\)&&\(left==)o(0\)\))511 885 y(A[wh\(i+1,j\)])d(=)i(0.0;)423
939 y(else)g(if)h(\(\(j==\(num_data-1)o(\)\)&&\()o(right)o(==0\)\))511
993 y(A[wh\(i+1,j\)])d(=)i(0.0;)423 1047 y(else)511 1101
y(A[wh\(i+1,j\)]=)598 1155 y(A[wh\(i,j\)]+delta)o(*\(rig)o(htsid)o
(e-2*A)o([wh\(i)o(,j\)])o(+left)o(side\))o(;)423 1209
y(})293 1263 y(})249 1371 y(/*)g(send)g(the)h(results)e(back)h(to)g
(the)g(master)g(program)f(*/)336 1479 y(pvm_initsend\(PvmDat)o(aDef)o
(ault\))o(;)336 1533 y(pvm_pkdouble\(&A[0],)o(num_)o(data*)o(times)o
(tep,1)o(\);)336 1587 y(pvm_send\(master,7\);)293 1641
y(})249 1748 y(/*)h(just)g(for)h(good)f(measure)f(*/)293
1802 y(pvm_exit\(\);)249 1856 y(})249 1964 y(int)h(wh\(x,)g(y\))249
2018 y(int)g(x,)h(y;)249 2072 y({)336 2126 y(return\(x*num_data+y)o
(\);)249 2180 y(})249 2317 y Fr(6.5.1)48 b(Di\013eren)o(t)13
b(St)o(yles)h(of)h(Comm)o(unication)249 2400 y FA(In)g(this)g(c)o
(hapter)h(w)o(e)f(ha)o(v)o(e)g(giv)o(en)f(a)h(v)n(ariet)o(y)f(of)h
(example)e(programs)h(written)i(in)e(F)m(ortran)h(and)g(C.)249
2454 y(These)j(examples)d(demonstrate)h(v)n(arious)g(w)o(a)o(ys)g(of)f
(writing)h(PVM)h(programs.)24 b(Some)15 b(break)h(the)249
2508 y(co)q(de)i(in)o(to)f(t)o(w)o(o)g(separate)i(programs,)e(while)g
(others)h(use)h(a)e(single)g(program)f(with)h(conditionals)p
eop
%%Page: 92 111
92 110 bop 249 251 a Fu(92)1375 b(Chapter)13 b(6)249
507 y FA(to)20 b(handle)g(spa)o(wning)g(and)g(computing)e(phases.)38
b(These)21 b(examples)f(sho)o(w)g(di\013eren)o(t)h(st)o(yles)g(of)249
561 y(comm)o(unication,)16 b(b)q(oth)k(among)c(w)o(ork)o(er)k(tasks)f
(and)g(b)q(et)o(w)o(een)h(w)o(ork)o(er)g(and)f(master)f(tasks.)34
b(In)249 615 y(some)12 b(cases)j(messages)e(are)h(used)g(for)f(sync)o
(hronization;)g(in)g(others)h(the)g(master)f(pro)q(cesses)j(simply)249
669 y(kill)11 b(of)h(the)h(w)o(ork)o(ers)g(when)g(they)h(are)f(no)f
(longer)g(needed.)19 b(W)m(e)12 b(hop)q(e)h(that)g(these)h(examples)e
(can)g(b)q(e)249 723 y(used)f(as)f(a)g(basis)g(for)g(b)q(etter)i
(understanding)e(ho)o(w)g(to)g(write)g(PVM)h(programs)e(and)h(for)f
(appreciating)249 777 y(the)15 b(design)f(tradeo\013s)g(in)o(v)o(olv)o
(ed.)p eop
%%Page: 93 112
93 111 bop 249 325 a Fp(7)25 b FD(Ho)o(w)17 b(PVM)f(W)l(orks)249
561 y FA(In)h(this)h(c)o(hapter)g(w)o(e)g(describ)q(e)h(the)f(implemen)
o(tatio)o(n)d(of)i(the)h(PVM)f(soft)o(w)o(are)h(and)f(the)h(reasons)249
615 y(b)q(ehind)f(the)g(basic)f(design)g(decisions.)26
b(The)17 b(most)e(imp)q(ortan)o(t)g(goals)g(for)h(PVM)h(3)f(are)g
(fault)g(tol-)249 669 y(erance,)j(scalabilit)o(y)m(,)c(heterogeneit)o
(y)m(,)j(and)f(p)q(ortabilit)o(y)m(.)25 b(PVM)18 b(is)e(able)h(to)g
(withstand)g(host)g(and)249 723 y(net)o(w)o(ork)h(failures.)29
b(It)17 b(do)q(esn't)i(automatically)14 b(reco)o(v)o(er)19
b(an)e(application)f(after)i(a)g(crash,)h(but)e(it)249
777 y(do)q(es)c(pro)o(vide)g(p)q(olling)e(and)h(noti\014cation)g
(primitiv)o(es)f(to)h(allo)o(w)f(fault-toleran)o(t)g(applications)h(to)
g(b)q(e)249 831 y(built.)26 b(The)17 b(virtual)f(mac)o(hine)g(is)g
(dynamically)e(recon\014gurable.)27 b(This)17 b(prop)q(ert)o(y)h(go)q
(es)f(hand)f(in)249 885 y(hand)c(with)g(fault)f(tolerance:)17
b(an)12 b(application)f(ma)o(y)f(need)j(to)e(acquire)i(more)e
(resources)j(in)e(order)g(to)249 939 y(con)o(tin)o(ue)k(running)f(once)
i(a)e(host)h(has)g(failed.)23 b(Managemen)o(t)14 b(is)i(as)g(decen)o
(tralized)h(and)e(lo)q(calized)249 993 y(as)j(p)q(ossible,)g(so)g
(virtual)f(mac)o(hines)g(should)g(b)q(e)h(able)g(to)f(scale)h(to)g(h)o
(undreds)h(of)e(hosts)h(and)g(run)249 1047 y(thousands)f(of)e(tasks.)26
b(PVM)16 b(can)h(connect)g(computers)f(of)g(di\013eren)o(t)h(t)o(yp)q
(es)g(in)f(a)g(single)g(session.)249 1101 y(It)i(runs)g(with)f(minim)o
(al)d(mo)q(di\014cation)h(on)i(an)o(y)g(\015a)o(v)o(or)g(of)g(Unix)g
(or)h(an)f(op)q(erating)g(system)g(with)249 1155 y(comparable)d
(facilities)g(\(m)o(ultitasking,)e(net)o(w)o(ork)n(able\).)22
b(The)15 b(programming)d(in)o(terface)k(is)f(simple)249
1209 y(but)f(complete,)f(and)h(an)o(y)f(user)i(can)f(install)f(the)h
(pac)o(k)n(age)g(without)f(sp)q(ecial)i(privileges.)291
1263 y(T)m(o)9 b(allo)o(w)f(PVM)i(to)f(b)q(e)i(highly)d(p)q(ortable,)j
(w)o(e)f(a)o(v)o(oid)e(the)i(use)h(of)e(op)q(erating)h(system)f(and)h
(language)249 1317 y(features)k(that)e(w)o(ould)f(b)q(e)i(b)q(e)g(hard)
g(to)f(retro\014t)h(if)f(una)o(v)n(ailable,)e(suc)o(h)j(as)f(m)o
(ultithreaded)f(pro)q(cesses)249 1371 y(and)h(async)o(hronous)h(I/O.)f
(These)h(exist)g(in)e(man)o(y)g(v)o(ersions)h(of)g(Unix,)g(but)g(they)h
(v)n(ary)f(enough)g(from)249 1425 y(pro)q(duct)17 b(to)f(pro)q(duct)i
(that)e(di\013eren)o(t)h(v)o(ersions)g(of)f(PVM)g(migh)o(t)e(need)k(to)
e(b)q(e)h(main)o(tained.)23 b(The)249 1479 y(generic)14
b(p)q(ort)g(is)f(k)o(ept)h(as)f(simple)f(as)i(p)q(ossible,)f(though)g
(PVM)h(can)f(alw)o(a)o(ys)g(b)q(e)h(optimized)e(for)h(an)o(y)249
1533 y(particular)h(mac)o(hine.)291 1587 y(W)m(e)d(assume)h(that)g
FB(so)n(ckets)g FA(are)g(used)h(for)e(in)o(terpro)q(cess)k(comm)o(uni)o
(cation)9 b(and)j(that)g(eac)o(h)g(host)g(in)249 1641
y(a)h(virtual)f(mac)o(hine)f(group)i(can)g(connect)h(directly)g(to)e
(ev)o(ery)i(other)g(host)f(via)f(TCP)h([13)o(])f(and)h(UDP)249
1694 y([14)o(])i(proto)q(cols.)24 b(The)16 b(requiremen)o(t)f(of)g
(full)g(IP)h(connectivit)o(y)f(could)h(b)q(e)g(remo)o(v)o(ed)f(b)o(y)g
(sp)q(ecifying)249 1748 y(message)c(routes)g(and)g(using)g(the)g(p)o
(vmds)f(to)g(forw)o(ard)h(messages.)17 b(Some)10 b(m)o(ultipro)q
(cessor)g(mac)o(hines)249 1802 y(don't)i(mak)o(e)f(so)q(c)o(k)o(ets)i
(a)o(v)n(ailable)d(on)i(the)h(pro)q(cessing)g(no)q(des,)g(but)g(do)f
(ha)o(v)o(e)g(them)f(on)h(the)h(fron)o(t-end)249 1856
y(\(where)i(the)g(p)o(vmd)d(runs\).)249 1977 y FD(7.1)52
b(Comp)q(onen)o(ts)249 2085 y Fr(7.1.1)c(T)l(ask)16 b(Iden)o(ti\014ers)
249 2168 y FA(PVM)e(uses)h(a)f FB(task)g(identi\014er)g
FA(\(TID\))g(to)f(address)i(p)o(vmds,)d(tasks,)i(and)g(groups)g(of)f
(tasks)h(within)f(a)249 2222 y(virtual)g(mac)o(hine.)k(The)d(TID)g(con)
o(tains)f(four)h(\014elds,)g(as)g(sho)o(wn)g(in)f(Figure)h(7.1.)j
(Since)d(the)h(TID)e(is)249 2276 y(used)i(so)f(hea)o(vily)m(,)e(it)i
(is)g(made)f(to)g(\014t)i(in)o(to)e(the)i(largest)f(in)o(teger)g(data)g
(t)o(yp)q(e)h(\(32)e(bits\))h(a)o(v)n(ailable)e(on)249
2330 y(a)i(wide)g(range)g(of)f(mac)o(hines.)291 2384
y(The)f(\014elds)g(S,)f(G,)f(and)i(H)f(ha)o(v)o(e)h(global)d(meaning:)
15 b(eac)o(h)d(p)o(vmd)e(of)h(a)h(virtual)e(mac)o(hine)h(in)o(terprets)
249 2438 y(them)e(in)h(the)h(same)e(w)o(a)o(y)m(.)16
b(The)10 b(H)h(\014eld)f(con)o(tains)g(a)g(host)g(n)o(um)o(b)q(er)g
(relativ)o(e)g(to)g(the)h(virtual)e(mac)o(hine.)249 2492
y(As)j(it)f(starts)h(up,)f(eac)o(h)h(p)o(vmd)e(is)h(con\014gured)h
(with)f(a)g(unique)h(host)f(n)o(um)o(b)q(er)g(and)g(therefore)i(\\o)o
(wns")p eop
%%Page: 94 113
94 112 bop 249 251 a Fu(94)1375 b(Chapter)13 b(7)249
466 y
 24818168 2841800 6841303 31114772 31641026 33943388 startTexFig
 249 466 a
%%BeginDocument: fig7-taskid.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Times-Roman reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 54 62 ] concat
%I
106 626 106 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 54 62 ] concat
%I
122 626 122 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 54 62 ] concat
%I
314 626 314 602 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 146.5 700 ] concat
%I
[
(31)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 645.5 700 ] concat
%I
[
(0)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 149 659 ] concat
%I
[
(S)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 164 659 ] concat
%I
[
(G)
] Text
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 54 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 70 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 86 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 102 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 118 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 134 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 150 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 166 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 182 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 198 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 214 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 246 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 262 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 278 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 294 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 310 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 326 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 342 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 358 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 374 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 390 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 406 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 422 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 438 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 454 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 470 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 486 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 502 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 54 62 ] concat
%I
90 602 602 626 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 268 659 ] concat
%I
[
(H)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 509 659 ] concat
%I
[
(L)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 354.5 700 ] concat
%I
[
(18)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 162.5 700 ] concat
%I
[
(30)
] Text
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 708 a Fo(Figure)g(7.1)249 745 y Fy(Generic)d(task)g(id)249
862 y FA(part)16 b(of)f(the)h(TID)f(address)h(space.)24
b(The)16 b(maxim)n(um)11 b(n)o(um)o(b)q(er)k(of)g(hosts)h(in)f(a)g
(virtual)g(mac)o(hine)f(is)249 916 y(limited)h(to)h(2)467
901 y Fk(H)510 916 y Ft(\000)11 b FA(1)17 b(\(4095\).)26
b(The)17 b(mapping)e(b)q(et)o(w)o(een)j(host)f(n)o(um)o(b)q(ers)g(and)g
(hosts)g(is)g(kno)o(wn)f(to)249 970 y(eac)o(h)d(p)o(vmd,)e(sync)o
(hronized)i(b)o(y)g(a)f(global)f FB(host)i(table)p FA(.)18
b(Host)13 b(n)o(um)o(b)q(er)e(zero)j(is)e(used,)h(dep)q(ending)g(on)249
1024 y(con)o(text,)h(to)g(refer)h(to)f(the)g(lo)q(cal)f(p)o(vmd)f(or)i
(a)g FB(shadow)h(pvmd)p FA(,)f(called)g FB(pvmd')g FA(\(Section)g
(7.3.7\).)291 1077 y(The)19 b(S)g(bit)g(is)g(used)h(to)f(address)i(p)o
(vmds,)d(with)h(the)h(H)f(\014eld)g(set)i(to)e(the)g(host)h(n)o(um)o(b)
q(er)e(and)249 1131 y(the)e(L)f(\014eld)g(cleared.)22
b(This)15 b(bit)f(is)h(a)g(historical)f(lefto)o(v)o(er)h(and)g(causes)h
(sligh)o(tly)e(sc)o(hizoid)h(naming;)249 1185 y(sometimes)d(p)o(vmds)h
(are)i(addressed)h(with)d(the)i(S)f(bit)g(cleared.)19
b(It)c(should)f(someda)o(y)e(b)q(e)j(reclaimed)249 1239
y(to)f(mak)o(e)e(the)j(H)f(or)g(L)f(space)i(larger.)291
1293 y(Eac)o(h)e(p)o(vmd)f(is)i(allo)o(w)o(ed)e(to)i(assign)f(priv)n
(ate)g(meaning)f(to)i(the)g(L)f(\014eld)h(\(with)f(the)h(H)g(\014eld)g
(set)g(to)249 1347 y(its)f(o)o(wn)g(host)g(n)o(um)o(b)q(er\),)g(except)
h(that)g(\\all)d(bits)i(cleared")h(is)f(reserv)o(ed)i(to)f(mean)d(the)j
(p)o(vmd)e(itself.)249 1401 y(The)k(L)f(\014eld)h(is)g(18)f(bits)g
(wide,)h(so)f(up)h(to)f(2)950 1386 y Fl(18)996 1401 y
Ft(\000)10 b FA(1)15 b(tasks)h(can)g(exist)g(concurren)o(tly)h(on)e
(eac)o(h)h(host.)249 1455 y(In)e(the)g(generic)h(Unix)e(p)q(ort,)h(L)f
(v)n(alues)h(are)g(assigned)g(b)o(y)f(a)h(coun)o(ter,)g(and)g(the)g(p)o
(vmd)e(main)o(tains)f(a)249 1509 y(map)i(b)q(et)o(w)o(een)j(L)e(v)n
(alues)h(and)f(Unix)g(pro)q(cess)i(id's.)k(Use)15 b(of)f(the)h(L)g
(\014eld)f(in)g(m)o(ultipro)q(cessor)g(p)q(orts)249 1563
y(is)g(describ)q(ed)h(in)f(Section)g(7.10.)291 1617 y(The)i(G)g(bit)f
(is)h(set)h(to)f(form)f(m)o(ulticast)f(addresses)k(\(GIDs\),)e(whic)o
(h)g(refer)h(to)f(groups)h(of)e(tasks.)249 1671 y(Multicasting)e(is)h
(describ)q(ed)i(in)d(Section)h(7.6.4.)291 1725 y(The)e(design)f(of)g
(the)h(TID)f(enables)i(the)f(implem)o(en)o(tation)d(to)i(meet)g(the)h
(design)g(goals.)k(T)m(asks)c(can)249 1779 y(b)q(e)17
b(assigned)f(TIDs)g(b)o(y)g(their)h(lo)q(cal)e(p)o(vmds)g(without)h
(o\013-host)g(comm)o(unicatio)o(n.)22 b(Messages)c(can)249
1833 y(b)q(e)c(routed)g(from)d(an)o(ywhere)j(in)f(a)g(virtual)f(mac)o
(hine)g(to)h(an)o(ywhere)h(else,)g(b)o(y)f(hierarc)o(hical)g(naming.)
249 1887 y(P)o(ortabilit)o(y)h(is)i(enhanced)h(b)q(ecause)h(the)e(L)g
(\014eld)g(can)g(b)q(e)g(rede\014ned.)26 b(Finally)m(,)14
b(space)i(is)g(reserv)o(ed)249 1941 y(for)d(error)i(co)q(des.)k(When)14
b(a)f(function)g(can)h(return)g(a)g(v)o(ector)g(of)f(TIDs)g(mixed)f
(with)i(error)g(co)q(des,)g(it)249 1995 y(is)g(useful)g(if)f(the)h
(error)h(co)q(des)g(don't)e(corresp)q(ond)i(to)f(legal)f(TIDs.)18
b(The)c(TID)f(space)i(is)f(divided)f(up)249 2049 y(as)h(follo)o(ws:)315
2145 y Fu(Use)423 b(S)50 b(G)104 b(H)170 b(L)p 291 2160
1028 2 v 315 2192 a(T)m(ask)13 b(iden)o(ti\014er)247
b(0)57 b(0)e(1)p Fi(::H)1023 2196 y Fh(max)1149 2192
y Fu(1)p Fi(::L)1216 2196 y Fh(max)315 2238 y Fu(Pvmd)14
b(iden)o(ti\014er)226 b(1)57 b(0)e(1)p Fi(::H)1023 2242
y Fh(max)1205 2238 y Fu(0)315 2284 y(Lo)q(cal)14 b(p)o(vmd)g(\(from)f
(task\))84 b(1)57 b(0)114 b(0)177 b(0)315 2329 y(Pvmd')14
b(from)e(master)i(p)o(vmd)51 b(1)57 b(0)114 b(0)177 b(0)315
2375 y(Multicast)15 b(address)190 b(0)57 b(1)e(1)p Fi(::H)1023
2379 y Fh(max)1149 2375 y Fu(0)p Fi(::L)1216 2379 y Fh(max)315
2421 y Fu(Error)14 b(co)q(de)306 b(1)57 b(1)e(\(small)15
b(neg.)i(n)o(um)o(b)q(er\))p 291 2436 V eop
%%Page: 95 114
95 113 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1261
b(95)291 507 y FA(Naturally)m(,)16 b(TIDs)h(are)g(in)o(tended)h(to)f(b)
q(e)h(opaque)f(to)g(the)h(application,)e(and)h(the)g(programmer)249
561 y(should)d(not)g(attempt)f(to)g(predict)i(their)g(v)n(alues)e(or)h
(mo)q(dify)e(them)h(without)g(using)h(functions)g(sup-)249
615 y(plied)j(in)g(the)h(programmi)o(ng)c(library)m(.)27
b(More)18 b(sym)o(b)q(olic)e(naming)f(can)i(b)q(e)h(obtained)f(b)o(y)g
(using)g(a)249 669 y(name)d(serv)o(er)k(library)c(la)o(y)o(ered)i(on)f
(top)h(of)f(the)h(ra)o(w)g(PVM)g(calls,)f(if)f(the)j(con)o(v)o(enience)
g(is)e(deemed)249 723 y(w)o(orth)f(the)g(cost)h(of)e(name)g(lo)q(okup.)
249 806 y Fr(7.1.2)48 b(Arc)o(hitecture)13 b(Classes)249
889 y FA(PVM)i(assigns)g(an)g FB(ar)n(chite)n(ctur)n(e)g(name)g
FA(to)g(eac)o(h)g(kind)f(of)g(mac)o(hine)g(on)g(whic)o(h)h(it)g(runs,)g
(to)g(distin-)249 943 y(guish)d(b)q(et)o(w)o(een)h(mac)o(hines)e(that)h
(run)g(di\013eren)o(t)h(executables,)h(b)q(ecause)g(of)d(hardw)o(are)h
(or)g(op)q(erating)249 997 y(system)i(di\013erences.)20
b(Man)o(y)13 b(standard)i(names)e(are)h(de\014ned,)h(and)e(others)i
(can)f(b)q(e)h(added.)291 1051 y(Sometimes)f(mac)o(hines)h(with)i
(incompatible)d(executables)k(use)f(the)g(same)f(binary)g(data)g
(repre-)249 1105 y(sen)o(tation.)24 b(PVM)17 b(tak)o(es)f(adv)n(an)o
(tage)f(of)g(this)h(to)g(a)o(v)o(oid)f(data)g(con)o(v)o(ersion.)25
b(Arc)o(hitecture)18 b(names)249 1159 y(are)13 b(mapp)q(ed)f(to)h
FB(data)h(enc)n(o)n(ding)g FA(n)o(um)o(b)q(ers,)e(and)h(the)h(enco)q
(ding)f(n)o(um)o(b)q(ers)f(are)i(used)f(to)g(determine)249
1213 y(when)h(it)g(is)g(necessary)i(to)d(con)o(v)o(ert.)249
1296 y Fr(7.1.3)48 b(Message)16 b(Mo)q(del)249 1379 y
FA(PVM)c(daemons)f(and)h(tasks)g(can)g(comp)q(ose)g(and)f(send)i
(messages)f(of)f(arbitrary)h(lengths)g(con)o(taining)249
1433 y(t)o(yp)q(ed)g(data.)17 b(The)12 b(data)g(can)g(b)q(e)g(con)o(v)o
(erted)h(using)e(XDR)g([16)o(])g(when)h(passing)g(b)q(et)o(w)o(een)h
(hosts)f(with)249 1487 y(incompatible)e(data)i(formats.)k(Messages)d
(are)g(tagged)f(at)f(send)i(time)e(with)h(a)f(user-de\014ned)k(in)o
(teger)249 1541 y(co)q(de)g(and)e(can)i(b)q(e)f(selected)i(for)d
(receipt)j(b)o(y)d(source)i(address)h(or)d(tag.)291 1595
y(The)i(sender)h(of)e(a)g(message)g(do)q(es)h(not)g(w)o(ait)f(for)g(an)
g(ac)o(kno)o(wledgmen)o(t)f(from)g(the)i(receiv)o(er,)h(but)249
1649 y(con)o(tin)o(ues)c(as)g(so)q(on)g(as)g(the)g(message)g(has)g(b)q
(een)g(handed)h(to)e(the)i(net)o(w)o(ork)f(and)f(the)i(message)e
(bu\013er)249 1703 y(can)h(b)q(e)g(safely)f(deleted)h(or)g(reused.)19
b(Messages)13 b(are)f(bu\013ered)g(at)g(the)g(receiving)g(end)g(un)o
(til)e(receiv)o(ed.)249 1757 y(PVM)g(reliably)f(deliv)o(ers)h
(messages,)h(pro)o(vided)e(the)i(destination)e(exists.)18
b(Message)11 b(order)f(from)f(eac)o(h)249 1811 y(sender)14
b(to)e(eac)o(h)h(receiv)o(er)h(in)e(the)h(system)g(is)f(preserv)o(ed;)i
(if)e(one)h(en)o(tit)o(y)f(sends)i(sev)o(eral)f(messages)f(to)249
1865 y(another,)i(they)g(will)f(b)q(e)h(receiv)o(ed)h(in)f(the)g(same)f
(order.)291 1919 y(Both)e(blo)q(c)o(king)g(and)g(non)o(blo)q(c)o(king)f
(receiv)o(e)j(primitiv)o(es)c(are)j(pro)o(vided,)f(so)h(a)f(task)g(can)
h(w)o(ait)e(for)h(a)249 1973 y(message)h(without)g(\(necessarily\))i
(consuming)d(pro)q(cessor)k(time)c(b)o(y)h(p)q(olling)f(for)h(it.)17
b(Or,)c(it)f(can)h(p)q(oll)249 2027 y(for)i(a)g(message)g(without)g
(hanging.)22 b(A)15 b(receiv)o(e)i(with)e(timeout)f(is)h(also)g(pro)o
(vided,)g(whic)o(h)g(returns)249 2081 y(after)f(a)g(sp)q(eci\014ed)h
(time)e(if)g(no)g(message)h(has)g(arriv)o(ed.)291 2135
y(No)g(ac)o(kno)o(wledgmen)o(ts)e(are)j(used)g(b)q(et)o(w)o(een)h
(sender)f(and)f(receiv)o(er.)20 b(Messages)c(are)f(reliably)e(de-)249
2188 y(liv)o(ered)f(and)f(bu\013ered)i(b)o(y)e(the)h(system.)17
b(If)11 b(w)o(e)h(ignore)f(fault)g(reco)o(v)o(ery)m(,)h(then)g(either)g
(an)f(application)249 2242 y(will)j(run)i(to)g(completion)e(or,)h(if)g
(some)g(comp)q(onen)o(t)g(go)q(es)h(do)o(wn,)f(it)g(w)o(on't.)23
b(In)15 b(order)i(to)e(pro)o(vide)249 2296 y(fault)f(reco)o(v)o(ery)m
(,)g(a)h(task)f(\()p Fn(T)685 2302 y Fk(A)713 2296 y
FA(\))g(m)o(ust)g(b)q(e)h(prepared)g(for)f(another)h(task)g(\()p
Fn(T)1424 2302 y Fk(B)1453 2296 y FA(,)f(from)f(whic)o(h)h(it)g(w)o(an)
o(ts)249 2350 y(a)h(message\))g(to)f(crash,)i(and)f(m)o(ust)f(b)q(e)h
(able)g(to)g(tak)o(e)g(correctiv)o(e)h(action.)21 b(F)m(or)15
b(example,)f(it)g(migh)o(t)249 2404 y(resc)o(hedule)f(its)d(request)i
(to)f(a)f(di\013eren)o(t)h(serv)o(er,)h(or)f(ev)o(en)g(start)g(a)f(new)
h(serv)o(er.)19 b(F)m(rom)9 b(the)i(viewp)q(oin)o(t)249
2458 y(of)i Fn(T)320 2464 y Fk(A)347 2458 y FA(,)h(it)f(do)q(esn't)h
(matter)f(sp)q(eci\014cally)h(when)g Fn(T)1036 2464 y
Fk(B)1079 2458 y FA(crashes)h(relativ)o(e)f(to)f(messages)h(sen)o(t)g
(from)e Fn(T)1804 2464 y Fk(A)1832 2458 y FA(.)p eop
%%Page: 96 115
96 114 bop 249 251 a Fu(96)1375 b(Chapter)13 b(7)249
507 y FA(While)h(w)o(aiting)g(for)g Fn(T)607 513 y Fk(B)636
507 y FA(,)h Fn(T)687 513 y Fk(A)729 507 y FA(will)e(receiv)o(e)j
(either)g(a)f(message)f(from)g Fn(T)1384 513 y Fk(B)1427
507 y FA(or)h(noti\014cation)f(that)h Fn(T)1814 513 y
Fk(B)249 561 y FA(has)h(crashed.)24 b(F)m(or)15 b(the)i(purp)q(oses)g
(of)e(\015o)o(w)g(con)o(trol,)g(a)g(fully)g(blo)q(c)o(king)f(send)j
(can)e(easily)h(b)q(e)g(built)249 615 y(using)e(the)g(semi-sync)o
(hronous)g(send)h(primitiv)o(e.)249 698 y Fr(7.1.4)48
b(Async)o(hronous)13 b(Noti\014cation)249 781 y FA(PVM)g(pro)o(vides)g
FB(noti\014c)n(ation)h FA(messages)f(as)f(a)h(means)f(to)h(implem)o(en)
o(t)e(fault)h(reco)o(v)o(ery)h(in)g(an)f(appli-)249 835
y(cation.)18 b(A)13 b(task)g(can)h(request)h(that)e(the)h(system)f
(send)h(a)f(message)g(on)g(one)h(of)e(the)i(follo)o(wing)d(three)249
889 y(ev)o(en)o(ts:)315 985 y Fu(T)o(yp)q(e)219 b(Meaning)p
291 1001 894 2 v 315 1033 a Fg(PvmTaskExit)85 b Fu(T)m(ask)13
b(exits)h(or)f(crashes)315 1078 y Fg(PvmHostDele)o(te)46
b Fu(Host)13 b(is)h(deleted)g(or)f(crashes)315 1124 y
Fg(PvmHostAdd)105 b Fu(New)13 b(hosts)g(are)g(added)h(to)f(the)g(VM)p
291 1139 V 291 1257 a FA(Notify)h(requests)j(are)e(stored)h(in)f(the)g
(p)o(vmds,)f(attac)o(hed)i(to)f(ob)r(jects)h(they)f(monitor.)20
b(Requests)249 1311 y(for)d(remote)h(ev)o(en)o(ts)g(\(o)q(ccurring)h
(on)e(a)h(di\013eren)o(t)g(host)g(than)g(the)g(requester\))i(are)e(k)o
(ept)g(on)g(b)q(oth)249 1365 y(hosts.)g(The)13 b(remote)f(p)o(vmd)f
(sends)j(the)f(message)f(if)g(the)h(ev)o(en)o(t)g(o)q(ccurs,)h(while)d
(the)j(lo)q(cal)d(one)i(sends)249 1419 y(the)i(message)f(if)f(the)i
(remote)e(host)i(go)q(es)f(do)o(wn.)19 b(The)14 b(assumption)f(is)h
(that)g(a)g(lo)q(cal)g(p)o(vmd)e(can)i(b)q(e)249 1473
y(trusted;)19 b(if)d(it)g(go)q(es)h(do)o(wn,)g(tasks)g(running)f(under)
h(it)g(w)o(on't)f(b)q(e)h(able)f(to)h(do)f(an)o(ything,)g(so)h(they)249
1527 y(don't)c(need)i(to)f(b)q(e)h(noti\014ed.)249 1610
y Fr(7.1.5)48 b(PVM)16 b(Daemon)f(and)g(Programming)e(Library)249
1693 y(PVM)k(Daemon)40 b FA(One)15 b(p)o(vmd)e(runs)i(on)f(eac)o(h)h
(host)g(of)f(a)g(virtual)g(mac)o(hine.)k(Pvmds)c(o)o(wned)g(b)o(y)249
1747 y(\(running)k(as\))f(one)h(user)h(do)e(not)h(in)o(teract)g(with)f
(those)h(o)o(wned)g(b)o(y)f(others,)i(in)f(order)g(to)f(reduce)249
1801 y(securit)o(y)e(risk,)e(and)h(minim)o(ize)e(the)i(impact)f(of)g
(one)h(PVM)g(user)h(on)f(another.)291 1855 y(The)i(p)o(vmd)f(serv)o(es)
i(as)f(a)g(message)g(router)h(and)f(con)o(troller.)25
b(It)16 b(pro)o(vides)g(a)g(p)q(oin)o(t)f(of)h(con)o(tact,)249
1909 y(authen)o(tication,)g(pro)q(cess)i(con)o(trol,)e(and)g(fault)g
(detection.)26 b(An)16 b(idle)g(p)o(vmd)f(o)q(ccasionally)g(c)o(hec)o
(ks)249 1963 y(that)h(its)f(p)q(eers)i(are)f(still)e(running.)23
b(Ev)o(en)16 b(if)e(application)g(programs)g(crash,)i(p)o(vmds)f(con)o
(tin)o(ue)g(to)249 2017 y(run,)f(to)g(aid)f(in)g(debugging.)291
2071 y(The)i(\014rst)h(p)o(vmd)e(\(started)i(b)o(y)f(hand\))g(is)g
(designated)h(the)g FB(master)p FA(,)e(while)h(the)h(others)g
(\(started)249 2125 y(b)o(y)d(the)g(master\))g(are)g(called)g
FB(slaves)p FA(.)k(During)c(normal)d(op)q(eration,)j(all)f(are)h
(considered)h(equal.)j(But)249 2179 y(only)11 b(the)h(master)g(can)f
(start)i(new)f(sla)o(v)o(es)g(and)f(add)h(them)f(to)g(the)i
(con\014guration.)j(Recon\014guration)249 2233 y(requests)21
b(originating)c(on)h(a)h(sla)o(v)o(e)f(host)h(are)h(forw)o(arded)e(to)h
(the)h(master.)32 b(Lik)o(ewise,)19 b(only)f(the)249
2287 y(master)13 b(can)i(forcibly)e(delete)i(hosts)f(from)e(the)j(mac)o
(hine.)249 2370 y Fr(Programming)e(Library)40 b FA(The)14
b(libp)o(vm)e(library)h(allo)o(ws)g(a)h(task)g(to)g(in)o(terface)g
(with)g(the)h(p)o(vmd)249 2424 y(and)e(other)h(tasks.)k(It)13
b(con)o(tains)g(functions)g(for)g(pac)o(king)f(\(comp)q(osing\))g(and)h
(unpac)o(king)f(messages,)249 2478 y(and)k(functions)g(to)f(p)q(erform)
g(PVM)i FB(sysc)n(al)r(ls)e FA(b)o(y)h(using)f(the)i(message)e
(functions)h(to)g(send)h(service)p eop
%%Page: 97 116
97 115 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1261
b(97)249 507 y FA(requests)23 b(to)d(the)h(p)o(vmd.)37
b(It)21 b(is)f(made)g(as)g(small)f(and)h(simple)f(as)i(p)q(ossible.)38
b(Since)22 b(it)e(shares)249 561 y(an)d(address)i(space)f(with)f(unkno)
o(wn,)h(p)q(ossibly)f(buggy)m(,)g(co)q(de,)h(it)f(can)h(b)q(e)g(brok)o
(en)g(or)f(sub)o(v)o(erted.)249 615 y(Minimal)d(sanit)o(y-c)o(hec)o
(king)k(of)e(parameters)i(is)f(p)q(erformed,)h(lea)o(ving)e(further)i
(authen)o(tication)f(to)249 669 y(the)e(p)o(vmd.)291
723 y(The)e(top)f(lev)o(el)g(of)g(the)h(libp)o(vm)d(library)m(,)h
(including)h(most)f(of)h(the)h(programming)c(in)o(terface)k(func-)249
777 y(tions,)h(is)g(written)h(in)f(a)g(mac)o(hine-indep)q(enden)o(t)h
(st)o(yle.)20 b(The)14 b(b)q(ottom)f(lev)o(el)i(is)f(k)o(ept)h
(separate)g(and)249 831 y(can)d(b)q(e)g(mo)q(di\014ed)e(or)i(replaced)h
(with)e(a)g(new)h(mac)o(hine-sp)q(eci\014c)g(\014le)f(when)i(p)q
(orting)e(PVM)h(to)f(a)h(new)249 885 y(en)o(vironmen)o(t.)249
1005 y FD(7.2)52 b(Messages)249 1113 y Fr(7.2.1)c(F)l(ragmen)o(ts)14
b(and)h(Databufs)249 1196 y FA(The)f(p)o(vmd)e(and)h(libp)o(vm)e
(manage)g(message)i(bu\013ers,)i(whic)o(h)e(p)q(oten)o(tially)f(hold)h
(large)g(amoun)o(ts)f(of)249 1250 y(dynamic)i(data.)23
b(Bu\013ers)17 b(need)f(to)g(b)q(e)g(shared)g(e\016cien)o(tly)m(,)f
(for)g(example,)f(to)i(attac)o(h)f(a)h(m)o(ulticast)249
1304 y(message)e(to)f(sev)o(eral)i(send)f(queues)i(\(see)f(Section)f
(7.6.4\).)j(T)m(o)c(a)o(v)o(oid)f(cop)o(ying,)h(all)f(p)q(oin)o(ters)j
(are)f(to)249 1358 y(a)i(single)f(instance)i(of)e(the)i(data)e(\(a)h
FB(databuf)p FA(\),)h(whic)o(h)e(is)h(refcoun)o(ted)h(b)o(y)f(allo)q
(cating)e(a)i(few)g(extra)249 1412 y(b)o(ytes)c(for)f(an)h(in)o(teger)g
(at)f(the)h(head)g(of)f(the)h(data.)17 b(A)11 b(p)q(oin)o(ter)h(to)f
(the)h(data)g(itself)f(is)g(passed)i(around,)249 1466
y(and)f(routines)h(subtract)g(from)e(it)g(to)i(access)h(the)e(refcoun)o
(t)h(or)f(free)h(the)g(blo)q(c)o(k.)k(When)c(the)f(refcoun)o(t)249
1520 y(of)h(a)h(databuf)f(decremen)o(ts)i(to)f(zero,)g(it)g(is)g
(freed.)291 1574 y(PVM)19 b(messages)g(are)h(comp)q(osed)f(without)g
(declaring)g(a)g(maxim)n(um)c(length)k(ahead)g(of)g(time.)249
1628 y(The)14 b(pac)o(k)g(functions)f(allo)q(cate)g(memory)e(in)i
(steps,)i(using)e(databufs)g(to)h(store)g(the)g(data,)f(and)h(frag)249
1682 y(descriptors)i(to)d(c)o(hain)h(the)g(databufs)g(together.)291
1736 y(A)k(frag)f(descriptor)i Fs(struct)i(frag)c FA(holds)h(a)f(p)q
(oin)o(ter)h(\()p Fs(fr)p 1245 1736 14 2 v 16 w(dat)p
FA(\))f(to)h(a)g(blo)q(c)o(k)f(of)h(data)f(and)h(its)249
1790 y(length)g(\()p Fs(fr)p 443 1790 V 15 w(len)p FA(\).)30
b(It)19 b(also)e(k)o(eeps)i(a)f(p)q(oin)o(ter)g(\()p
Fs(fr)p 1080 1790 V 15 w(buf)p FA(\))g(to)g(the)g(databuf)g(and)g(its)g
(total)f(length)249 1844 y(\()p Fs(fr)p 312 1844 V 15
w(max)p FA(\);)c(these)i(reserv)o(e)g(space)f(to)f(prep)q(end)i(or)e
(app)q(end)h(data.)j(F)m(rags)c(can)g(also)g(reference)j(static)249
1898 y(\(non-databuf)s(\))e(data.)20 b(A)15 b(frag)f(has)h(link)f(p)q
(oin)o(ters)h(so)f(it)h(can)g(b)q(e)g(c)o(hained)g(in)o(to)f(a)g(list.)
20 b(Eac)o(h)15 b(frag)249 1952 y(k)o(eeps)g(a)e(coun)o(t)h(of)g
(references)i(to)e(it;)f(when)h(the)h(refcoun)o(t)f(decremen)o(ts)h(to)
f(zero,)g(the)g(frag)g(is)f(freed)249 2006 y(and)g(the)h(underlying)f
(databuf)f(refcoun)o(t)i(is)f(decremen)o(ted.)19 b(In)13
b(the)h(case)g(where)g(a)f(frag)g(descriptor)249 2060
y(is)j(the)g(head)g(of)f(a)g(list,)g(its)h(refcoun)o(t)g(applies)g(to)f
(the)h(en)o(tire)h(list.)22 b(When)16 b(it)g(reac)o(hes)h(zero,)f(ev)o
(ery)249 2114 y(frag)d(in)h(the)g(list)g(is)f(freed.)19
b(Figure)14 b(7.2)f(sho)o(ws)h(a)g(list)f(of)h(fragmen)o(ts)e(storing)i
(a)g(message.)249 2197 y Fr(7.2.2)48 b(Messages)15 b(in)g(Libp)o(vm)249
2280 y FA(Libp)o(vm)i(pro)o(vides)h(functions)h(to)g(pac)o(k)f(all)g
(of)g(the)h(primitiv)o(e)d(data)j(t)o(yp)q(es)g(in)o(to)f(a)g(message,)
h(in)249 2334 y(one)f(of)g(sev)o(eral)h(enco)q(ding)f(formats.)29
b(There)20 b(are)e(\014v)o(e)h(sets)g(of)f(enco)q(ders)i(and)e(deco)q
(ders.)33 b(Eac)o(h)249 2388 y(message)14 b(bu\013er)i(has)e(a)h(set)g
(asso)q(ciated)g(with)f(it.)20 b(When)15 b(creating)f(a)h(new)f
(message,)g(the)h(enco)q(der)249 2442 y(set)g(is)g(determined)f(b)o(y)g
(the)h(format)d(parameter)i(to)h Fs(pvm)p 1159 2442 V
15 w(mkbuf\(\))p FA(.)j(When)c(receiving)h(a)f(message,)249
2496 y(the)21 b(deco)q(ders)h(are)f(determined)f(b)o(y)g(the)h(enco)q
(ding)f(\014eld)g(of)g(the)h(message)f(header.)38 b(The)21
b(t)o(w)o(o)p eop
%%Page: 98 117
98 116 bop 249 251 a Fu(98)1375 b(Chapter)13 b(7)249
507 y FA(most)j(commonl)o(y)e(used)j(ones)h(pac)o(k)e(data)h(in)f
FB(r)n(aw)g FA(\(host)h(nativ)o(e\))g(and)f FB(default)h
FA(\(XDR\))f(formats.)249 561 y FB(Inplac)n(e)j FA(enco)q(ders)i(pac)o
(k)e(descriptors)h(of)e(the)i(data)e(\(the)i(frags)e(p)q(oin)o(t)h(to)f
(static)h(data\),)h(so)e(the)249 615 y(message)12 b(is)g(sen)o(t)h
(without)e(cop)o(ying)h(the)g(data)g(to)g(a)g(bu\013er.)18
b(There)13 b(are)g(no)f(inplace)f(deco)q(ders.)20 b FB(F)m(o)n(o)249
669 y FA(enco)q(ders)13 b(use)e(a)f(mac)o(hine-indep)q(enden)o(t)h
(format)e(that)h(is)h(simpler)e(than)i(XDR;)e(these)j(enco)q(ders)h
(are)249 723 y(used)i(when)f(comm)o(unicating)d(with)i(the)i(p)o(vmd.)i
FB(A)o(lien)c FA(deco)q(ders)j(are)e(installed)g(when)g(a)g(receiv)o
(ed)249 777 y(message)i(can't)g(b)q(e)h(unpac)o(k)o(ed)f(b)q(ecause)i
(its)e(enco)q(ding)h(do)q(esn't)f(matc)o(h)f(the)i(data)f(format)e(of)h
(the)249 831 y(host.)21 b(A)15 b(message)g(in)g(an)f(alien)g(data)h
(format)e(can)i(b)q(e)h(held)f(or)g(forw)o(arded,)f(but)i(an)o(y)e
(attempt)g(to)249 885 y(read)g(data)g(from)e(it)i(results)h(in)e(an)h
(error.)291 939 y(Figure)k(7.2)f(sho)o(ws)h(libp)o(vm)e(message)i
(managemen)o(t.)28 b(T)m(o)17 b(allo)o(w)f(the)j(PVM)f(programmer)e(to)
249 993 y(handle)i(message)f(bu\013ers,)j(they)e(are)g(lab)q(eled)g
(with)f(in)o(teger)i(message)e(id's)g(\(MIDs\),)i(whic)o(h)f(are)249
1047 y(simply)8 b(indices)j(in)o(to)e(the)i(message)f(heap.)17
b(When)10 b(a)g(message)g(bu\013er)h(is)g(freed,)g(its)f(MID)g(is)g
(recycled.)249 1101 y(The)20 b(heap)g(starts)g(out)f(small)f(and)h(is)g
(extended)i(if)e(it)g(b)q(ecomes)g(full.)34 b(Generally)m(,)19
b(only)g(a)g(few)249 1155 y(messages)14 b(exist)g(at)g(an)o(y)f(time,)f
(unless)j(an)f(application)e(explicitly)h(stores)i(them.)291
1209 y(A)9 b(v)o(ector)i(of)e(functions)h(for)g(enco)q(ding/deco)q
(ding)g(primitiv)o(e)d(t)o(yp)q(es)k(\()p Fs(struct)21
b(encvec)p FA(\))8 b(is)i(initial-)249 1263 y(ized)k(when)g(a)f
(message)g(bu\013er)i(is)e(created.)20 b(T)m(o)12 b(pac)o(k)i(a)f(long)
g(in)o(teger,)g(the)h(generic)h(pac)o(k)e(function)249
1317 y Fs(pvm)p 318 1317 14 2 v 15 w(pklong\(\))18 b
FA(calls)h Fs(\(message)p 801 1317 V 14 w(heap[mid].ub)p
1079 1317 V 14 w(codef->enc)p 1313 1317 V 13 w(long\)\(\))f
FA(of)h(the)i(bu\013er.)36 b(En-)249 1371 y(co)q(der)21
b(v)o(ectors)f(w)o(ere)h(used)f(for)f(sp)q(eed)j(\(as)d(opp)q(osed)h
(to)g(ha)o(ving)e(a)i(case)g(switc)o(h)g(in)f(eac)o(h)h(pac)o(k)249
1425 y(function\).)d(One)c(dra)o(wbac)o(k)f(is)g(that)g(ev)o(ery)h
(enco)q(der)h(for)e(ev)o(ery)g(format)f(is)h(touc)o(hed)h(\(b)o(y)f
(naming)d(it)249 1479 y(in)k(the)h(co)q(de\),)h(so)e(the)i(link)o(er)e
(m)o(ust)f(include)i(all)e(the)j(functions)e(in)g(ev)o(ery)i
(executable,)f(ev)o(en)h(when)249 1533 y(they're)g(not)f(used.)249
1616 y Fr(7.2.3)48 b(Messages)15 b(in)g(the)g(Pvmd)249
1699 y FA(By)g(comparison)d(with)i(libp)o(vm,)d(message)j(pac)o(king)g
(in)g(the)g(p)o(vmd)f(is)h(v)o(ery)g(simple.)k(Messages)e(are)249
1753 y(handled)h(using)f Fs(struct)k(mesg)c FA(\(sho)o(wn)h(in)f
(Figure)h(7.3\).)25 b(There)18 b(are)f(enco)q(ders)h(for)e(signed)h
(and)249 1807 y(unsigned)e(in)o(tegers)g(and)f(strings,)g(whic)o(h)g
(use)h(in)e(the)i(libp)o(vm)d FB(fo)n(o)i FA(format.)j(In)o(tegers)f(o)
q(ccup)o(y)e(four)249 1861 y(b)o(ytes)k(eac)o(h,)f(with)g(b)o(ytes)g
(in)g(net)o(w)o(ork)g(order)g(\(bits)g(31..24)e(follo)o(w)o(ed)g(b)o(y)
i(bits)g(23..16,)e(...\).)25 b(Byte)249 1914 y(strings)12
b(are)f(pac)o(k)o(ed)h(as)f(an)g(in)o(teger)g(length)g(\(including)g
(the)g(terminating)f(n)o(ull)g(for)h(ASCI)q(I)g(strings\),)249
1968 y(follo)o(w)o(ed)h(b)o(y)h(the)h(data)f(and)g(zero)i(to)e(three)i
(n)o(ull)d(b)o(ytes)i(to)f(round)h(the)g(total)f(length)g(to)g(a)g(m)o
(ultiple)249 2022 y(of)g(four.)249 2105 y Fr(7.2.4)48
b(Pvmd)15 b(En)o(try)g(P)o(oin)o(ts)249 2188 y FA(Messages)20
b(for)f(the)g(p)o(vmd)e(are)i(reassem)o(bled)g(from)e(pac)o(k)o(ets)j
(in)e Fs(loclinpkt\(\))f FA(if)g(from)g(a)i(lo)q(cal)249
2242 y(task,)13 b(or)g(in)f Fs(netinpkt\(\))f FA(if)i(from)e(another)i
(p)o(vmd)f(or)h(foreign)f(task.)18 b(Reassem)o(bled)13
b(messages)g(are)249 2296 y(passed)i(to)f(one)g(of)f(three)i
FB(entry)g(p)n(oints)p FA(:)p eop
%%Page: 99 118
99 117 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1261
b(99)249 871 y
 19134566 17761075 7959592 22563143 27102085 40324218 startTexFig
 249 871 a
%%BeginDocument: fig7-mheap.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Courier reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Pict
%I b 65535
1 0 0 [] 0 SetB
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Rect
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
201 674 217 738 Rect
End

Begin %I Line
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
201 722 217 722 Line
%I 1
End

Begin %I Line
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
201 706 217 706 Line
%I 1
End

Begin %I Line
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
201 690 217 690 Line
%I 1
End

End %I eop

Begin %I Line
%I b 65520
2 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I
209 666 209 634 Line
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 3.06162e-17 0.5 -0.5 3.06162e-17 704 620 ] concat

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
313 802 329 802 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
305 810 337 810 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
297 818 345 818 Line
%I 1
End

End %I eop

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
209 730 241 730 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
209 698 241 698 Line
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 3.06162e-17 0.5 -0.5 3.06162e-17 704 588 ] concat

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
313 802 329 802 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
305 810 337 810 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
297 818 345 818 Line
%I 1
End

End %I eop

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
209 682 265 682 Line
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 3.06162e-17 0.5 -0.5 3.06162e-17 728 572 ] concat

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
313 802 329 802 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
305 810 337 810 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
297 818 345 818 Line
%I 1
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 336 809 ] concat
%I
[
(struct)
(umbuf)
] Text
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I
145 730 193 730 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 260.5 614 ] concat
%I
[
(nref)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -65 38 ] concat
%I
321 530 353 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -65 38 ] concat
%I
321 546 353 546 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -65 38 ] concat
%I
321 562 353 562 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 168 785 ] concat
%I
[
(Integer)
(message)
(ID)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 39 22 ] concat
%I
321 530 353 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 39 22 ] concat
%I
321 546 353 546 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 39 22 ] concat
%I
321 562 353 562 Line
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 0 -16 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 103 38 ] concat
%I
321 530 353 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 103 38 ] concat
%I
321 546 353 546 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 103 38 ] concat
%I
321 562 353 562 Line
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 64 -16 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 103 38 ] concat
%I
321 530 353 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 103 38 ] concat
%I
321 546 353 546 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 103 38 ] concat
%I
321 562 353 562 Line
%I 1
End

End %I eop

Begin %I Line
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 -33 46 ] concat
%I
425 562 457 562 Line
%I 1
End

Begin %I Line
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 31 46 ] concat
%I
425 562 457 562 Line
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -176 -32 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg LtGray
0.764706 0.764706 0.764706 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I
409 458 489 474 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 47 110 ] concat
%I
369 410 465 426 Rect
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -64 -32 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg LtGray
0.764706 0.764706 0.764706 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I
409 458 489 474 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 47 110 ] concat
%I
369 410 465 426 Rect
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -64 -16 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg LtGray
0.764706 0.764706 0.764706 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I
521 442 553 458 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 159 94 ] concat
%I
369 410 465 426 Rect
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 344 777 ] concat
%I
[
(len)
(tag)
(src)
(...)
] Text
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
313 674 345 674 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
313 658 345 658 Line
%I 1
End

Begin %I Poly
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I 4
313 626
345 626
345 722
313 722
4 Poly
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 46 ] concat
%I
313 658 345 658 Line
%I 1
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 496 785 ] concat
%I
[
(e-init)
(e-byte)
(e-int)
(...)
()
(d-init)
(d-byte)
(d-int)
(...)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 63 6 ] concat
%I
425 674 473 786 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 488 825 ] concat
%I
[
(Encoder)
(function)
(vector)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 224 833 ] concat
%I
[
(Message)
(heap)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 208 609 ] concat
%I
[
(struct)
(frag)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 272 481 ] concat
%I
[
(databuf)
] Text
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 3
321 650
233 650
233 586
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 6
233 562
217 562
217 578
513 578
513 546
497 546
6 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 4
265 562
281 562
281 546
337 546
4 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 5
345 514
281 514
281 490
217 490
217 442
5 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 5
345 498
289 498
289 474
233 474
233 442
5 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 5
409 514
385 514
385 474
329 474
329 442
5 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 5
409 498
393 498
393 466
345 466
345 442
5 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 3
473 514
441 514
441 442
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 3
473 498
457 498
457 442
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 3
337 634
401 634
401 562
3 MLine
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I
209 714 305 714 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 103 38 ] concat
%I
321 562 353 562 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -65 54 ] concat
%I
321 562 353 562 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 167 38 ] concat
%I
321 562 353 562 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 39 38 ] concat
%I
321 562 353 562 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 272 705 ] concat
%I
[
(frag)
(list)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 432 681 ] concat
%I
[
(current)
(frag)
] Text
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 4
337 666
385 666
385 730
457 730
4 MLine
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 260.5 597 ] concat
%I
[
(0)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 260.5 582 ] concat
%I
[
(0)
] Text
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 2059 a Fo(Figure)13 b(7.2)249 2096 y Fy(Message)e(storage)e(in)j
(libp)o(vm)p eop
%%Page: 100 119
100 118 bop 249 251 a Fu(100)1356 b(Chapter)13 b(7)249
952 y
 12835368 15203512 10327736 22628925 23155179 37824512 startTexFig
 249 952 a
%%BeginDocument: fig7-dmesg.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Courier reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 260.5 614 ] concat
%I
[
(nref)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -65 38 ] concat
%I
321 530 353 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -65 38 ] concat
%I
321 546 353 546 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -65 38 ] concat
%I
321 562 353 562 Line
%I 1
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 39 22 ] concat
%I
321 530 353 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 39 22 ] concat
%I
321 546 353 546 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 39 22 ] concat
%I
321 562 353 562 Line
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 0 -16 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 103 38 ] concat
%I
321 530 353 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 103 38 ] concat
%I
321 546 353 546 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 103 38 ] concat
%I
321 562 353 562 Line
%I 1
End

End %I eop

Begin %I Line
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 -33 46 ] concat
%I
425 562 457 562 Line
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -176 -32 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg LtGray
0.764706 0.764706 0.764706 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I
409 458 489 474 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 47 110 ] concat
%I
369 410 465 426 Rect
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -176 -16 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg LtGray
0.764706 0.764706 0.764706 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I
521 442 553 458 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 159 94 ] concat
%I
369 410 465 426 Rect
End

End %I eop

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 7 62 ] concat
%I
313 658 345 658 Line
%I 1
End

Begin %I Poly
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 7 62 ] concat
%I 4
313 626
345 626
345 722
313 722
4 Poly
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 7 46 ] concat
%I
313 658 345 658 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 216 609 ] concat
%I
[
(struct)
(frag)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 272 481 ] concat
%I
[
(databuf)
] Text
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 4
265 562
281 562
281 546
337 546
4 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 5
345 514
281 514
281 490
217 490
217 442
5 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 5
345 498
289 498
289 474
233 474
233 442
5 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 5
409 514
385 514
385 474
329 474
329 442
5 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 23 62 ] concat
%I 5
409 498
393 498
393 466
345 466
345 442
5 MLine
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 103 38 ] concat
%I
321 562 353 562 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -65 54 ] concat
%I
321 562 353 562 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 39 38 ] concat
%I
321 562 353 562 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 705 ] concat
%I
[
(frag)
(list)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 432 681 ] concat
%I
[
(current)
(frag)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 360 769 ] concat
%I
[
(struct)
(mesg)
] Text
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 36 62 ] concat
%I 6
220 562
204 562
204 578
444 578
444 546
420 546
6 MLine
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 328 777 ] concat
%I
[
(len)
(tag)
(src)
(wid)
(...)
] Text
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 36 62 ] concat
%I 3
292 650
220 650
220 586
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 36 62 ] concat
%I 3
308 634
388 634
388 562
3 MLine
%I 1
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 1978 a Fo(Figure)g(7.3)249 2015 y Fy(Message)e(storage)e(in)j(p)o
(vmd)p eop
%%Page: 101 120
101 119 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(101)315 498 y(F)m(unction)120 b(Messages)14 b(F)m(rom)p
291 513 919 2 v 315 545 a Fg(loclentry\(\))46 b Fu(Lo)q(cal)14
b(tasks)315 591 y Fg(netentry\(\))66 b Fu(Remote)13 b(p)o(vmds)315
636 y Fg(schentry\(\))66 b Fu(Lo)q(cal)14 b(or)f(remote)g(sp)q(ecial)i
(tasks)581 682 y(\(Resource)f(manager,)f(Hoster,)g(T)m(ask)o(er\))p
291 697 V 291 816 a FA(If)g(the)i(message)f(tag)g(and)g(con)o(ten)o(ts)
i(are)e(v)n(alid,)e(a)i(new)h(thread)g(of)f(action)g(is)g(started)h(to)
f(handle)249 869 y(the)h(request.)k(In)o(v)n(alid)12
b(messages)i(are)h(discarded.)249 952 y Fr(7.2.5)48 b(Con)o(trol)14
b(Messages)249 1036 y FA(Con)o(trol)i(messages)h(are)g(sen)o(t)g(to)f
(a)h(task)g(lik)o(e)e(regular)i(messages,)g(but)g(ha)o(v)o(e)f(tags)h
(in)f(a)g(reserv)o(ed)249 1089 y(space)f(\(b)q(et)o(w)o(een)g
Fs(TC)p 583 1089 14 2 v 15 w(FIRST)e FA(and)h Fs(TC)p
846 1089 V 15 w(LAST)p FA(\).)e(Normally)m(,)f(when)j(a)f(task)h(do)o
(wnloads)f(a)g(message,)g(it)249 1143 y(queues)h(it)f(for)f(receipt)i
(b)o(y)f(the)h(program.)i(Con)o(trol)c(messages)h(are)g(instead)g
(passed)h(to)f Fs(pvmmctl\(\))249 1197 y FA(and)18 b(then)g(discarded.)
31 b(Lik)o(e)17 b(the)i(en)o(try)f(p)q(oin)o(ts)g(in)f(the)h(p)o(vmd,)f
Fs(pvmmctl\(\))f FA(is)i(an)f(en)o(try)i(p)q(oin)o(t)249
1251 y(in)e(the)g(task,)g(causing)g(it)g(to)g(tak)o(e)g(some)f(async)o
(hronous)h(action.)27 b(The)18 b(main)c(di\013erence)19
b(is)e(that)249 1305 y(con)o(trol)d(messages)h(can't)f(b)q(e)h(used)h
(to)e(get)h(the)g(task's)g(atten)o(tion,)f(since)h(it)f(m)o(ust)g(b)q
(e)h(in)f Fs(mxfer\(\))p FA(,)249 1359 y(sending)g(or)g(receiving,)g
(in)f(order)i(to)f(get)g(them.)291 1413 y(The)k(follo)o(wing)c(con)o
(trol)k(message)f(tags)g(are)h(de\014ned.)30 b(The)18
b(\014rst)g(three)h(are)f(used)g(b)o(y)g(the)g(di-)249
1467 y(rect)h(routing)e(mec)o(hanism)e(\(discussed)20
b(in)d(Section)h(7.6.3\).)28 b Fs(TC)p 1294 1467 V 15
w(OUTPUT)16 b FA(is)i(used)g(to)g(implemen)o(t)249 1521
y Fs(pvm)p 318 1521 V 15 w(catchout\(\))c FA(\(Section)j(7.7.2\).)23
b(User-de\014nable)17 b(con)o(trol)f(messages)g(ma)o(y)f(b)q(e)h(added)
h(in)e(the)249 1575 y(future)g(as)f(a)f(w)o(a)o(y)g(of)h(implem)o(en)o
(ting)d(PVM)j(signal)f(handlers.)315 1679 y Fu(T)m(ag)198
b(Meaning)p 291 1695 735 2 v 315 1727 a Fg(TC)p 357 1727
12 2 v 14 w(CONREQ)87 b Fu(Connection)14 b(request)315
1772 y Fg(TC)p 357 1772 V 14 w(CONACK)87 b Fu(Connection)14
b(ac)o(k)315 1818 y Fg(TC)p 357 1818 V 14 w(TASKEXIT)47
b Fu(T)m(ask)12 b(exited/do)q(esn't)k(exist)315 1864
y Fg(TC)p 357 1864 V 14 w(NOOP)127 b Fu(Do)13 b(nothing)315
1909 y Fg(TC)p 357 1909 V 14 w(OUTPUT)87 b Fu(Claim)14
b(c)o(hild)g(stdout)g(data)315 1955 y Fg(TC)p 357 1955
V 14 w(SETTMASK)47 b Fu(Change)13 b(task)h(trace)f(mask)p
291 1970 735 2 v 249 2095 a FD(7.3)52 b(PVM)16 b(Daemon)249
2203 y Fr(7.3.1)48 b(Startup)249 2286 y FA(A)o(t)13 b(startup,)g(a)f(p)
o(vmd)f(con\014gures)i(itself)f(as)h(a)f(master)g(or)g(sla)o(v)o(e,)g
(dep)q(ending)h(on)f(its)h(command)d(line)249 2340 y(argumen)o(ts.)19
b(It)c(creates)h(and)e(binds)h(so)q(c)o(k)o(ets)h(to)e(talk)g(to)g
(tasks)h(and)g(other)g(p)o(vmds,)e(and)h(it)g(op)q(ens)249
2394 y(an)e(error)h(log)e(\014le)i Fs(/tmp/pvml.)p FB(uid)p
FA(.)i(A)d(master)g(p)o(vmd)f(reads)i(the)g(host)f(\014le)g(if)g
(supplied;)g(otherwise)249 2448 y(it)i(uses)h(default)e(parameters.)18
b(A)c(sla)o(v)o(e)f(p)o(vmd)g(gets)h(its)g(parameters)g(from)e(the)i
(master)g(p)o(vmd)e(via)249 2502 y(the)j(command)c(line)i(and)h
(con\014guration)f(messages.)p eop
%%Page: 102 121
102 120 bop 249 251 a Fu(102)1356 b(Chapter)13 b(7)291
507 y FA(After)k(con\014guration,)g(the)h(p)o(vmd)d(en)o(ters)k(a)e(lo)
q(op)f(in)g(function)h Fs(work\(\))p FA(.)26 b(A)o(t)17
b(the)h(core)g(of)e(the)249 561 y(w)o(ork)c(lo)q(op)f(is)i(a)e(call)h
(to)g Fs(select\(\))f FA(that)h(prob)q(es)h(all)e(sources)j(of)e(input)
g(for)g(the)g(p)o(vmd)f(\(lo)q(cal)h(tasks)249 615 y(and)18
b(the)h(net)o(w)o(ork\).)32 b(P)o(ac)o(k)o(ets)19 b(are)g(receiv)o(ed)g
(and)f(routed)h(to)g(send)g(queues.)32 b(Messages)20
b(to)e(the)249 669 y(p)o(vmd)12 b(are)j(reassem)o(bled)f(and)f(passed)i
(to)f(the)h(en)o(try)f(p)q(oin)o(ts.)249 752 y Fr(7.3.2)48
b(Sh)o(utdo)o(wn)249 835 y FA(A)14 b(p)o(vmd)f(sh)o(uts)i(do)o(wn)f
(when)h(it)e(is)h(deleted)i(from)c(the)j(virtual)e(mac)o(hine,)g
(killed)g(\(signaled\),)h(loses)249 889 y(con)o(tact)i(with)f(the)h
(master)f(p)o(vmd,)f(or)i(breaks)g(\(e.g.,)f(with)g(a)g(bus)h(error\).)
24 b(When)16 b(a)f(p)o(vmd)f(sh)o(uts)249 943 y(do)o(wn,)j(it)f(tak)o
(es)h(t)o(w)o(o)f(\014nal)g(actions.)26 b(First,)17 b(it)g(kills)e(an)o
(y)h(tasks)h(running)g(under)g(it,)g(with)f(signal)249
997 y Fs(SIGTERM)p FA(.)11 b(Second,)j(it)f(sends)h(a)f(\014nal)f(sh)o
(utdo)o(wn)i(message)f(\(Section)g(7.5.2\))f(to)h(ev)o(ery)h(other)g(p)
o(vmd)249 1051 y(in)g(its)g(host)g(table.)19 b(The)14
b(other)h(p)o(vmds)e(w)o(ould)g(ev)o(en)o(tually)h(disco)o(v)o(er)g
(the)h(missing)d(one)j(b)o(y)e(timing)249 1105 y(out)h(trying)f(to)h
(comm)o(unicate)e(with)h(it,)g(but)h(the)h(sh)o(utdo)o(wn)f(message)f
(sp)q(eeds)j(the)f(pro)q(cess.)249 1188 y Fr(7.3.3)48
b(Host)15 b(T)l(able)g(and)h(Mac)o(hine)e(Con\014guration)249
1271 y FA(A)g(host)g(table)g(describ)q(es)i(the)f(con\014guration)e(of)
h(a)f(virtual)g(mac)o(hine.)k(It)d(lists)g(the)g(name,)f(address)249
1325 y(and)h(comm)o(unicatio)o(n)d(state)k(for)f(eac)o(h)g(host.)19
b(Figure)14 b(7.4)f(sho)o(ws)h(ho)o(w)g(a)g(host)g(table)g(is)g(built)f
(from)249 1379 y Fs(struct)21 b(htab)13 b FA(and)g Fs(struct)21
b(hostd)13 b FA(structures.)291 1433 y(Host)j(tables)g(are)g(issued)h
(b)o(y)f(the)g(master)f(p)o(vmd)g(and)g(k)o(ept)i(sync)o(hronized)g
(across)f(the)h(virtual)249 1487 y(mac)o(hine.)29 b(The)19
b(delete)g(op)q(eration)e(is)h(simple:)25 b(On)18 b(receiving)h(a)e
Fs(DM)p 1380 1487 14 2 v 16 w(HTDEL)g FA(message)g(from)f(the)249
1541 y(master,)g(a)h(p)o(vmd)e(calls)h Fs(hostfailentry\(\))d
FA(for)j(eac)o(h)h(host)g(listed)g(in)f(the)h(message,)g(as)f(though)
249 1595 y(the)11 b(deleted)h(p)o(vmds)e(crashed.)18
b(Eac)o(h)11 b(p)o(vmd)e(can)i(autonomously)e(delete)j(hosts)f(from)e
(its)i(o)o(wn)f(table)249 1649 y(on)j(\014nding)g(them)f(unreac)o
(hable)i(\(b)o(y)f(timing)d(out)j(during)g(comm)o(unication\).)i(The)e
(add)g(op)q(eration)249 1703 y(is)g(done)f(with)h(a)f(three-phase)j
(commit,)9 b(in)j(order)i(to)e(guaran)o(tee)h(global)e(a)o(v)n
(ailabilit)o(y)e(of)j(new)h(hosts)249 1757 y(sync)o(hronously)20
b(with)e(completion)g(of)g(the)i(add-host)f(request.)35
b(This)19 b(is)g(describ)q(ed)i(in)e(Section)249 1811
y(7.3.8.)291 1865 y(Eac)o(h)d(host)h(descriptor)h(has)e(a)h(refcoun)o
(t)g(so)f(it)g(can)h(b)q(e)g(shared)g(b)o(y)g(m)o(ultiple)d(host)j
(tables.)26 b(As)249 1919 y(the)15 b(con\014guration)f(of)g(the)h(mac)o
(hine)f(c)o(hanges,)h(the)g(host)g(descriptors)h(\(except)g(those)f
(added)g(and)249 1973 y(deleted,)23 b(of)d(course\))i(propagate)e(from)
f(one)i(host)g(table)f(to)h(the)g(next.)38 b(This)21
b(propagation)e(is)249 2027 y(necessary)d(b)q(ecause)g(they)e(hold)f(v)
n(arious)g(state)i(information.)291 2081 y(Host)h(tables)g(also)g(serv)
o(e)h(other)g(uses:)23 b(They)16 b(allo)o(w)f(the)h(p)o(vmd)f(to)h
(manipulate)e(host)i(sets,)h(for)249 2135 y(example,)f(when)i(pic)o
(king)e(candidate)i(hosts)f(on)g(whic)o(h)g(to)g(spa)o(wn)h(a)e(task.)
29 b(Also,)17 b(the)h(advisory)249 2188 y(host)c(\014le)g(supplied)g
(to)g(the)g(master)g(p)o(vmd)e(is)i(parsed)h(and)e(stored)i(in)f(a)f
(host)h(table.)249 2271 y Fr(Host)j(File)39 b FA(If)15
b(the)g(master)f(p)o(vmd)f(is)i(started)h(with)e(a)h(host)g(\014le,)f
(it)g(parses)i(the)g(\014le)e(in)o(to)g(a)h(host)249
2325 y(table,)h Fs(filehosts)p FA(.)22 b(If)15 b(some)g(hosts)i(in)e
(the)i(\014le)e(are)i(to)e(b)q(e)i(started)g(automatically)l(,)c(the)k
(master)249 2379 y(sends)h(a)e Fs(DM)p 447 2379 V 16
w(ADD)f FA(message)i(to)f(itself.)26 b(The)17 b(sla)o(v)o(e)f(hosts)i
(are)f(started)g(just)g(as)g(though)f(they)h(had)249
2433 y(b)q(een)e(added)f(dynamically)d(\(Section)k(7.3.8\).)p
eop
%%Page: 103 122
103 121 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(103)249 917 y
 22213196 16434920 7959592 26444267 30193827 42889707 startTexFig
 249 917 a
%%BeginDocument: fig7-htab.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 52 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Courier reencodeISO def
/Times-Roman reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.5 -3.63959e-23 3.63959e-23 0.5 212 368 ] concat

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
313 802 329 802 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
305 810 337 810 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
297 818 345 818 Line
%I 1
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 304 881 ] concat
%I
[
(struct)
(htab)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 137 85.9999 ] concat
%I
207 738 287 754 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 137 85.9999 ] concat
%I
223 754 223 738 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 137 85.9999 ] concat
%I
239 754 239 738 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 137 85.9999 ] concat
%I
255 754 255 738 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 137 85.9999 ] concat
%I
271 754 271 738 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 145 62 ] concat
%I
143 770 199 770 Line
%I 1
End

Begin %I Line
%I b 65520
2 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 145 62 ] concat
%I
287 770 327 770 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 352 849 ] concat
%I
[
(0)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 368 849 ] concat
%I
[
(1)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 384 849 ] concat
%I
[
(2)
] Text
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 145 70 ] concat
%I
239 762 239 738 Line
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 159 29.9999 ] concat
%I
89 794 137 858 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 159 29.9999 ] concat
%I
89 810 137 810 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 251.5 881 ] concat
%I
[
(serial,)
(len,)
(master,)
(...)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 8 0 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 761 ] concat
%I
[
(nref)
(tid)
(name)
(arch)
(...)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 700 ] concat
%I
[
(txq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 684 ] concat
%I
[
(opq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 668 ] concat
%I
[
(rxq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 652 ] concat
%I
[
(rxm)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 578 223 706 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 594 223 594 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 610 223 610 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 626 223 626 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 642 223 642 Line
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 104 -0.000366211 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 761 ] concat
%I
[
(nref)
(tid)
(name)
(arch)
(...)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 700 ] concat
%I
[
(txq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 684 ] concat
%I
[
(opq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 668 ] concat
%I
[
(rxq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 652 ] concat
%I
[
(rxm)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 578 223 706 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 594 223 594 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 610 223 610 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 626 223 626 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 642 223 642 Line
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 192 -0.000366211 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 761 ] concat
%I
[
(nref)
(tid)
(name)
(arch)
(...)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 700 ] concat
%I
[
(txq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 684 ] concat
%I
[
(opq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 668 ] concat
%I
[
(rxq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 652 ] concat
%I
[
(rxm)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 578 223 706 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 594 223 594 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 610 223 610 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 626 223 626 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 642 223 642 Line
%I 1
End

End %I eop

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 81 62 ] concat
%I 4
271 770
271 730
223 730
223 706
4 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 81 62 ] concat
%I 2
287 770
287 706
2 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 81 62 ] concat
%I 4
319 770
319 722
375 722
375 706
4 MLine
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.5 -3.63959e-23 3.63959e-23 0.5 244 368 ] concat

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
313 802 329 802 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
305 810 337 810 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 23 62 ] concat
%I
297 818 345 818 Line
%I 1
End

End %I eop

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 70 ] concat
%I
239 762 239 738 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 6.12323e-17 1 -1 6.12323e-17 247 728 ] concat
%I
[
(pvmd')
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 6.12323e-17 1 -1 6.12323e-17 343 728 ] concat
%I
[
(master)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 6.12323e-17 1 -1 6.12323e-17 431 728 ] concat
%I
[
(slave)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 256 793 ] concat
%I
[
(struct)
(hostd)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 552 769 ] concat
%I
[
(Frags)
(to Send)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 432 601 ] concat
%I
[
(Message)
(Reassembly)
] Text
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -16 -95.9999 ] concat

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
375 410
391 426
423 418
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
423 418
439 418
455 402
439 386
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
439 386
439 370
415 370
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
415 370
391 354
375 362
375 378
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I 3
471 778
447 794
471 810
3 BSpl
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -8.00024 -168 ] concat

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
375 410
391 426
423 418
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
423 418
439 418
455 402
439 386
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
439 386
439 370
415 370
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
415 370
391 354
375 362
375 378
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I 3
471 778
447 794
471 810
3 BSpl
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -16.0003 -256 ] concat

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
375 410
391 426
423 418
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
423 418
439 418
455 402
439 386
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
439 386
439 370
415 370
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
415 370
391 354
375 362
375 378
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I 3
471 778
447 794
471 810
3 BSpl
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -128 -264 ] concat

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
375 410
391 426
423 418
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
423 418
439 418
455 402
439 386
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
439 386
439 370
415 370
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
415 370
391 354
375 362
375 378
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I 3
471 778
447 794
471 810
3 BSpl
%I 1
End

End %I eop

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 81 62 ] concat
%I 4
407 634
431 634
431 682
447 682
4 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 81 62 ] concat
%I 2
407 618
447 618
2 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 81 62 ] concat
%I 3
407 602
447 602
447 554
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 81 62 ] concat
%I 5
407 586
423 586
423 570
407 570
407 554
5 MLine
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 544 697 ] concat
%I
[
(Frags sent,)
(not yet Acked)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 544 609 ] concat
%I
[
(Frags)
(Received)
(Out of Order)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 176 884 ] concat
%I
[
(hosts)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 62 62 ] concat
%I
106 810 154 826 Rect
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 62 62 ] concat
%I
154 818 186 818 Line
%I 1
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 2020 a Fo(Figure)13 b(7.4)249 2057 y Fy(Host)f(table)p
eop
%%Page: 104 123
104 122 bop 249 251 a Fu(104)1356 b(Chapter)13 b(7)249
507 y Fr(7.3.4)48 b(T)l(asks)249 590 y FA(Eac)o(h)14
b(p)o(vmd)e(main)o(tains)g(a)h(list)h(of)f(all)g(tasks)h(under)h(its)e
(managemen)o(t)f(\(Figure)i(7.5\).)j(Ev)o(ery)d(task,)249
644 y(regardless)g(of)f(state,)g(is)g(a)f(mem)o(b)q(er)g(of)g(a)h
(threaded)h(list,)e(sorted)i(b)o(y)e(task)h(id.)18 b(Most)13
b(tasks)g(are)h(also)249 698 y(in)f(a)h(second)h(list,)e(sorted)i(b)o
(y)f(pro)q(cess)h(id.)j(The)c(head)g(of)g(b)q(oth)g(lists)f(is)h
Fs(locltasks)p FA(.)249 755 y
 22876273 14398279 7235993 26115358 30128046 40521564 startTexFig
 249 755 a
%%BeginDocument: fig7-locltasks.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 52 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Courier reencodeISO def
/Times-Roman reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 62 -26 ] concat
%I
210 690 250 690 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 62 -26 ] concat
%I
210 706 250 706 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 62 -26 ] concat
%I
210 746 250 746 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 62 -26 ] concat
%I
210 762 250 762 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 280 748 ] concat
%I
[
(link)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 280 732 ] concat
%I
[
(plink)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 280 676 ] concat
%I
[
(txq)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 62 -26 ] concat
%I
210 658 250 778 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 62 -26 ] concat
%I
210 674 250 674 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 280 660 ] concat
%I
[
(rxp)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 280 644 ] concat
%I
[
(rxm)
] Text
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 158 -26 ] concat
%I
210 690 250 690 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 158 -26 ] concat
%I
210 706 250 706 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 158 -26 ] concat
%I
210 746 250 746 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 158 -26 ] concat
%I
210 762 250 762 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 376 748 ] concat
%I
[
(link)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 376 732 ] concat
%I
[
(plink)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 376 676 ] concat
%I
[
(txq)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 158 -26 ] concat
%I
210 658 250 778 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 158 -26 ] concat
%I
210 674 250 674 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 376 660 ] concat
%I
[
(rxp)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 376 644 ] concat
%I
[
(rxm)
] Text
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 254 -26 ] concat
%I
210 690 250 690 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 254 -26 ] concat
%I
210 706 250 706 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 254 -26 ] concat
%I
210 746 250 746 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 254 -26 ] concat
%I
210 762 250 762 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 472 748 ] concat
%I
[
(link)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 472 732 ] concat
%I
[
(plink)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 472 676 ] concat
%I
[
(txq)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 254 -26 ] concat
%I
210 658 250 778 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 254 -26 ] concat
%I
210 674 250 674 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 472 660 ] concat
%I
[
(rxp)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 472 644 ] concat
%I
[
(rxm)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 184 745 ] concat
%I
[
(tid)
(ptid)
(...)
] Text
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -34 6 ] concat
%I
210 690 250 690 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -34 6 ] concat
%I
210 706 250 706 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -34 6 ] concat
%I
210 746 250 746 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -34 6 ] concat
%I
210 762 250 762 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 184 780 ] concat
%I
[
(link)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 184 764 ] concat
%I
[
(plink)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 184 708 ] concat
%I
[
(txq)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -34 6 ] concat
%I
210 658 250 778 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -34 6 ] concat
%I
210 674 250 674 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 184 692 ] concat
%I
[
(rxp)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 184 676 ] concat
%I
[
(rxm)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 280 713 ] concat
%I
[
(0)
(0)
(...)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 376 713 ] concat
%I
[
(401)
(0)
(...)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 472 713 ] concat
%I
[
(405)
(401)
(...)
] Text
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 -10 ] concat
%I 4
210 786
250 786
250 754
266 754
4 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 -10 ] concat
%I 2
306 754
362 754
2 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 -10 ] concat
%I 2
402 754
458 754
2 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 -10 ] concat
%I 4
210 770
338 770
338 738
362 738
4 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 -10 ] concat
%I 2
402 738
458 738
2 MLine
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -8.00006 -168 ] concat

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
375 410
391 426
423 418
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
423 418
439 418
455 402
439 386
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
439 386
439 370
415 370
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
415 370
391 354
375 362
375 378
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I 3
471 778
447 794
471 810
3 BSpl
%I 1
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 544 625 ] concat
%I
[
(Packet)
(Reassembly)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 456 593 ] concat
%I
[
(Message)
(Reassembly)
] Text
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -16.0002 -240 ] concat

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
375 410
391 426
423 418
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
423 418
439 418
455 402
439 386
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
439 386
439 370
415 370
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
415 370
391 354
375 362
375 378
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I 3
471 778
447 794
471 810
3 BSpl
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -104 -272 ] concat

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
375 410
391 426
423 418
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
423 418
439 418
455 402
439 386
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 3
439 386
439 370
415 370
3 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 177 462 ] concat
%I 4
415 370
391 354
375 362
375 378
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I 3
471 778
447 794
471 810
3 BSpl
%I 1
End

End %I eop

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 46 62 ] concat
%I
450 610 490 610 Line
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 46 62 ] concat
%I 3
450 594
482 594
482 570
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 46 62 ] concat
%I 2
450 578
450 546
2 MLine
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 160 836 ] concat
%I
[
(locltasks)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 54 54 ] concat
%I
98 770 170 786 Rect
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 62 62 ] concat
%I 6
442 666
466 666
466 746
90 746
90 698
114 698
6 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 62 62 ] concat
%I 6
114 714
98 714
98 738
458 738
458 682
442 682
6 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 62 62 ] concat
%I 2
122 762
122 722
2 MLine
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 560 699 ] concat
%I
[
(Packets)
(to Send)
] Text
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 1729 a Fo(Figure)f(7.5)249 1766 y Fy(T)m(ask)f(table)291
1861 y FA(PVM)k(pro)o(vides)g(a)g(simple)f(debugging)g(system)h
(describ)q(ed)i(in)d(Section)i(7.7.4.)23 b(More)16 b(complex)249
1914 y(debuggers)k(can)f(b)q(e)g(built)g(b)o(y)f(using)h(a)f(sp)q
(ecial)h(t)o(yp)q(e)h(of)e(task)h(called)f(a)h FB(tasker)p
FA(,)g(in)o(tro)q(duced)g(in)249 1968 y(v)o(ersion)g(3.3.)34
b(A)19 b(task)o(er)h(starts)g(\()p FB(exe)n(cs)p FA(,)h(and)e(is)g(the)
h(paren)o(t)g(of)s(\))f(other)h(tasks.)35 b(In)19 b(general,)h(a)249
2022 y(debugger)14 b(is)f(a)g(pro)q(cess)i(that)e(con)o(trols)g(the)g
(execution)h(of)f(other)g(pro)q(cesses)j(-)d(can)g(read)h(and)f(write)
249 2076 y(their)19 b(memories)d(and)i(start)h(and)f(stop)g
(instruction)h(coun)o(ters.)32 b(On)19 b(man)o(y)d(sp)q(ecies)k(of)e
(Unix,)g(a)249 2130 y(debugger)f(m)o(ust)e(b)q(e)h(the)h(direct)g
(paren)o(t)f(of)g(an)o(y)f(pro)q(cesses)k(it)c(con)o(trols.)25
b(This)16 b(is)g(b)q(ecoming)e(less)249 2184 y(common)d(with)j(gro)o
(wing)e(a)o(v)n(ailabilit)o(y)f(of)i(the)h(attac)o(hable)g
FB(ptr)n(ac)n(e)g FA(in)o(terface.)291 2238 y(The)h(function)f(of)g
(the)i(task)o(er)f(in)o(terface)g(o)o(v)o(erlaps)g(with)f(the)i(simple)
d(debugger)i(starter,)h(but)f(is)249 2292 y(fundamen)o(tally)e
(di\013eren)o(t)j(for)f(t)o(w)o(o)g(reasons:)23 b(First,)15
b(all)g(tasks)h(running)f(under)h(a)f(p)o(vmd)f(\(during)249
2346 y(the)g(life)f(of)g(the)h(task)o(er\))h(ma)o(y)d(b)q(e)i(c)o
(hildren)g(of)f(a)g(single)g(task)o(er)i(pro)q(cess.)20
b(With)13 b Fs(PvmTaskDebug)p FA(,)d(a)249 2400 y(new)15
b(debugger)f(is)g(necessarily)h(started)g(for)f(eac)o(h)h(task.)j
(Second,)d(the)f(task)o(er)h(cannot)f(b)q(e)h(enabled)249
2454 y(or)i(disabled)f(b)o(y)h(spa)o(wn)g(\015ags,)g(so)g(it)f(is)h
(alw)o(a)o(ys)e(in)i(con)o(trol,)f(though)h(this)g(is)g(not)f(an)h(imp)
q(ortan)o(t)249 2508 y(di\013erence.)p eop
%%Page: 105 124
105 123 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(105)291 507 y FA(If)13 b(a)h(task)o(er)g(is)g(registered)i(\(using)d
Fs(pvm)p 914 507 14 2 v 16 w(reg)p 996 507 V 15 w(tasker\(\))p
FA(\))f(with)i(a)f(p)o(vmd)f(when)j(a)f Fs(DM)p 1647
507 V 15 w(EXEC)f FA(mes-)249 561 y(sage)j(is)f(receiv)o(ed)i(to)e
(start)h(new)g(tasks,)g(the)g(p)o(vmd)e(sends)i(a)g Fs(SM)p
1290 561 V 15 w(STTASK)e FA(message)h(to)g(the)h(task)o(er)249
615 y(instead)j(of)e(calling)g Fs(execv\(\))p FA(.)29
b(No)19 b FB(SM)p 913 615 13 2 v 15 w(STT)m(ASKA)o(CK)f
FA(message)g(is)g(required;)i(closure)f(comes)249 669
y(from)11 b(the)i(task)f(reconnecting)i(to)e(the)h(p)o(vmd)d(as)j
(usual.)k(The)c(p)o(vmd)e(do)q(esn't)h(get)h Fs(SIGCHLD)e
FA(signals)249 723 y(when)k(a)g(task)o(er)g(is)f(in)h(use,)g(b)q
(ecause)h(it's)e(not)h(the)g(paren)o(t)g(pro)q(cess)i(of)d(tasks,)h(so)
f(the)i(task)o(er)f(m)o(ust)249 777 y(send)g(noti\014cation)e(of)g
(exited)i(tasks)f(to)g(the)g(p)o(vmd)f(in)g(a)h Fs(SM)p
1207 777 14 2 v 15 w(TASKX)f FA(message.)249 860 y Fr(7.3.5)48
b(W)l(ait)15 b(Con)o(texts)249 943 y FA(The)f(p)o(vmd)e(uses)i(a)f(w)o
(ait)g(con)o(text)h(\(w)o(aitc\))g(to)f(hold)g(state)h(when)g(a)f
(thread)h(of)f(op)q(eration)g(m)o(ust)f(b)q(e)249 997
y(in)o(terrupted.)19 b(The)13 b(p)o(vmd)e(is)h(not)g(truly)g(m)o
(ultithreaded)g(but)g(p)q(erforms)g(op)q(erations)h(concurren)o(tly)m
(.)249 1051 y(F)m(or)j(example,)g(when)i(a)e(p)o(vmd)f(gets)j(a)e
(syscall)h(from)e(a)h(task)h(and)g(m)o(ust)f(in)o(teract)h(with)g
(another)249 1105 y(p)o(vmd,)c(it)h(do)q(esn't)h(blo)q(c)o(k)g(while)f
(w)o(aiting)f(for)h(the)h(other)h(p)o(vmd)d(to)h(resp)q(ond.)22
b(It)15 b(sa)o(v)o(es)g(state)g(in)f(a)249 1159 y(w)o(aitc)i(and)g
(returns)h(immediately)c(to)j(the)h Fs(work\(\))d FA(lo)q(op.)24
b(When)16 b(the)h(reply)f(arriv)o(es,)h(the)g(p)o(vmd)249
1213 y(uses)f(the)f(information)c(stashed)16 b(in)e(the)h(w)o(aitc)f
(to)h(complete)f(the)h(syscall)f(and)g(reply)h(to)f(the)h(task.)249
1267 y(W)m(aitcs)h(are)h(serial)g(n)o(um)o(b)q(ered,)f(and)h(the)g(n)o
(um)o(b)q(er)f(is)g(sen)o(t)i(in)e(the)h(message)f(header)i(along)d
(with)249 1321 y(the)g(request)g(and)f(returned)h(with)f(the)g(reply)m
(.)291 1375 y(F)m(or)g(man)o(y)e(op)q(erations,)i(the)h(TIDs)f(and)h
FB(kind)f FA(of)g(w)o(ait)f(are)i(the)g(only)f(information)d(sa)o(v)o
(ed.)20 b(The)249 1429 y Fs(struct)h(waitc)14 b FA(includes)i(a)f(few)g
(extra)h(\014elds)f(to)h(handle)f(most)f(of)h(the)g(remaining)f(cases,)
i(and)f(a)249 1483 y(p)q(oin)o(ter,)e Fs(wa)p 450 1483
V 16 w(spec)p FA(,)f(to)h(a)g(blo)q(c)o(k)g(of)g(extra)h(data)f(for)g
(sp)q(ecial)g(cases|the)i(spa)o(wn)e(and)h(host)f(startup)249
1537 y(op)q(erations,)h(whic)o(h)g(need)g(to)g(sa)o(v)o(e)g
Fs(struct)21 b(waitc)p 1084 1537 V 14 w(spawn)13 b FA(and)h
Fs(struct)20 b(waitc)p 1564 1537 V 15 w(add)p FA(.)291
1591 y(Sometimes)11 b(more)i(than)g(one)h(phase)g(of)f(w)o(aiting)g(is)
g(necessary|in)i(series,)f(parallel,)e(or)i(nested.)249
1645 y(In)j(the)i(parallel)d(case,)j(a)e(separate)h(w)o(aitc)f(is)h
(created)h(for)e(eac)o(h)h(foreign)e(host.)29 b(The)18
b(w)o(aitcs)g(are)249 1699 y FB(p)n(e)n(er)n(e)n(d)f
FA(\(link)o(ed)h(in)f(a)g(list\))h(together)g(to)g(indicate)g(they)g(p)
q(ertain)g(to)f(the)i(same)e(op)q(eration.)29 b(If)17
b(a)249 1753 y(w)o(aitc)i(has)h(no)f(p)q(eers,)j(its)e(p)q(eer)h(links)
d(p)q(oin)o(t)h(to)h(itself.)34 b(Usually)m(,)20 b(p)q(eered)h(w)o
(aitcs)e(share)i(data,)249 1807 y(for)15 b(example,)e
Fs(wa)p 536 1807 V 15 w(spec)p FA(.)20 b(All)15 b(existing)f(parallel)g
(op)q(erations)h(are)g(conjunctions;)h(a)e(p)q(eer)i(group)f(is)249
1861 y(\014nished)g(when)g(ev)o(ery)h(w)o(aitc)e(in)g(the)h(group)g(is)
f(\014nished.)21 b(As)15 b(replies)g(arriv)o(e,)g(\014nished)g(w)o
(aitcs)g(are)249 1914 y(collapsed)h(out)g(of)f(the)i(list)e(and)h
(deleted.)25 b(When)16 b(the)h(\014nished)f(w)o(aitc)g(is)g(the)g(only)
g(one)g(left,)f(the)249 1968 y(op)q(eration)c(is)g(complete.)17
b(Figure)11 b(7.6)g(sho)o(ws)g(single)g(and)g(p)q(eered)i(w)o(aitcs)f
(stored)g(in)f Fs(waitlist)e FA(\(the)249 2022 y(list)k(of)h(all)e
(activ)o(e)i(w)o(aitcs\).)291 2076 y(When)f(a)f(host)h(fails)f(or)h(a)f
(task)h(exits,)g(the)h(p)o(vmd)d(searc)o(hes)k Fs(waitlist)c
FA(for)h(an)o(y)h(blo)q(c)o(k)o(ed)f(on)h(this)249 2130
y(TID)18 b(and)f(terminates)h(those)h(op)q(erations.)30
b(W)m(aitcs)18 b(from)e(the)j(dead)f(host)g(or)g(task)g(blo)q(c)o(k)o
(ed)g(on)249 2184 y(something)e(else)h(are)h(not)e(deleted;)k(instead,)
d(their)g Fs(wa)p 1148 2184 V 16 w(tid)f FA(\014elds)h(are)h(zero)q
(ed.)28 b(This)17 b(approac)o(h)249 2238 y(prev)o(en)o(ts)11
b(the)g(w)o(ait)d(id's)i(from)e(b)q(eing)h(recycled)j(while)d(replies)h
(are)g(still)f(p)q(ending.)17 b(Once)11 b(the)f(defunct)249
2292 y(w)o(aitcs)k(are)g(satis\014ed,)g(they)h(are)f(silen)o(tly)f
(discarded.)p eop
%%Page: 106 125
106 124 bop 249 251 a Fu(106)1356 b(Chapter)13 b(7)249
466 y
 19418804 9425236 6841303 26115358 26246922 35522150 startTexFig
 249 466 a
%%BeginDocument: fig7-waitlist.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Courier reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 24 -48 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 304 721 ] concat
%I
[
(wid)
(kind)
(...)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 59 62 ] concat
%I
237 594 277 682 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 59 62 ] concat
%I
237 610 277 610 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 59 62 ] concat
%I
237 626 277 626 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 59 62 ] concat
%I
237 666 277 666 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 304 740 ] concat
%I
[
(link)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 304 684 ] concat
%I
[
(peer)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 304 668 ] concat
%I
[
(spec)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 120 -48 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 304 721 ] concat
%I
[
(wid)
(kind)
(...)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 59 62 ] concat
%I
237 594 277 682 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 59 62 ] concat
%I
237 610 277 610 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 59 62 ] concat
%I
237 626 277 626 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 59 62 ] concat
%I
237 666 277 666 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 304 740 ] concat
%I
[
(link)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 304 684 ] concat
%I
[
(peer)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 304 668 ] concat
%I
[
(spec)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 192 -48 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 304 721 ] concat
%I
[
(wid)
(kind)
(...)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 59 62 ] concat
%I
237 594 277 682 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 59 62 ] concat
%I
237 610 277 610 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 59 62 ] concat
%I
237 626 277 626 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 59 62 ] concat
%I
237 666 277 666 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 304 740 ] concat
%I
[
(link)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 304 684 ] concat
%I
[
(peer)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 304 668 ] concat
%I
[
(spec)
] Text
End

End %I eop

Begin %I Line
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 59 62 ] concat
%I
301 626 357 626 Line
%I 1
End

Begin %I Line
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 59 62 ] concat
%I
397 626 429 626 Line
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 16 -120 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -5 166 ] concat
%I
237 594 277 682 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -5 166 ] concat
%I
237 610 277 610 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -5 166 ] concat
%I
237 626 277 626 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -5 166 ] concat
%I
237 666 277 666 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 240 844 ] concat
%I
[
(link)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 240 788 ] concat
%I
[
(peer)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 240 772 ] concat
%I
[
(spec)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 240 825 ] concat
%I
[
(0)
] Text
End

End %I eop

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 59 62 ] concat
%I 4
229 658
245 658
245 626
261 626
4 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 59 62 ] concat
%I 6
189 658
173 658
173 674
485 674
485 626
469 626
6 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 59 62 ] concat
%I 6
261 570
245 570
245 538
317 538
317 570
301 570
6 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 59 62 ] concat
%I 2
397 570
429 570
2 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 59 62 ] concat
%I 6
357 570
341 570
341 538
485 538
485 570
469 570
6 MLine
%I 1
End

Begin %I Poly
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg LtGray
0.764706 0.764706 0.764706 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 67 62 ] concat
%I 4
389 482
429 482
429 506
389 506
4 Poly
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 59 62 ] concat
%I 3
397 554
405 554
405 506
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 59 62 ] concat
%I 5
469 554
477 554
477 522
413 522
413 506
5 MLine
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 59 62 ] concat
%I
149 666 189 666 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 152 732 ] concat
%I
[
(waitlist)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 408 569 ] concat
%I
[
(shared)
(data)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 320 721 ] concat
%I
[
(struct waitc)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 88 62 ] concat
%I
56 658 120 674 Rect
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 1125 a Fo(Figure)g(7.6)249 1162 y Fy(W)m(ait)e(con)o(text)f(list)
249 1279 y Fr(7.3.6)48 b(F)l(ault)14 b(Detection)g(and)h(Reco)o(v)o
(ery)249 1362 y FA(F)m(ault)f(detection)i(originates)f(in)g(the)g(p)o
(vmd-p)o(vmd)d(proto)q(col)j(\(Section)h(7.5.2\).)k(When)15
b(the)h(p)o(vmd)249 1416 y(times)i(out)h(while)f(comm)o(unicating)e
(with)i(another,)j(it)d(calls)h Fs(hostfailentry\(\))p
FA(,)d(whic)o(h)j(scans)249 1470 y Fs(waitlist)12 b FA(and)i
(terminates)g(an)o(y)f(op)q(erations)h(w)o(aiting)f(on)g(the)i(do)o(wn)
e(host.)291 1524 y(A)i(p)o(vmd)f(can)i(reco)o(v)o(er)h(from)d(the)i
(loss)f(of)g(an)o(y)g(foreign)g(p)o(vmd)f(except)j(the)f(master.)23
b(If)15 b(a)g(sla)o(v)o(e)249 1578 y(loses)j(the)h(master,)e(the)i(sla)
o(v)o(e)e(sh)o(uts)i(itself)e(do)o(wn.)29 b(This)18 b(algorithm)d
(ensures)20 b(that)e(the)g(virtual)249 1631 y(mac)o(hine)13
b(do)q(esn't)h(b)q(ecome)g(partitioned)g(and)g(run)g(as)g(t)o(w)o(o)f
(partial)g(mac)o(hines.)18 b(It)c(do)q(es,)g(ho)o(w)o(ev)o(er,)249
1685 y(decrease)21 b(fault)d(tolerance)h(of)f(the)h(virtual)f(mac)o
(hine)f(b)q(ecause)j(the)g(master)e(m)o(ust)f(nev)o(er)j(crash.)249
1739 y(There)d(is)f(curren)o(tly)h(no)f(w)o(a)o(y)g(for)f(the)i(master)
f(to)g(hand)g(o\013)g(its)g(status)h(to)f(another)h(p)o(vmd,)d(so)i(it)
249 1793 y(alw)o(a)o(ys)11 b(remains)f(part)i(of)f(the)h
(con\014guration.)17 b(\(This)12 b(is)g(an)f(impro)o(v)o(emen)o(t)e(o)o
(v)o(er)j(PVM)g(2,)f(in)g(whic)o(h)249 1847 y(the)k(failure)e(of)g(an)o
(y)g(p)o(vmd)g(w)o(ould)g(sh)o(ut)h(do)o(wn)g(the)g(en)o(tire)h
(system.\))249 1930 y Fr(7.3.7)48 b(Pvmd')249 2013 y
FA(The)15 b(shado)o(w)f(p)o(vmd)27 b(\(p)o(vmd'\))12
b(runs)j(on)f(the)h(master)f(host)g(and)g(is)h(used)g(b)o(y)f(the)h
(master)e(to)h(start)249 2067 y(new)j(sla)o(v)o(e)f(p)o(vmds.)25
b(An)o(y)17 b(of)f(sev)o(eral)h(steps)h(in)e(the)h(startup)g(pro)q
(cess)i(\(for)d(example,)g(starting)g(a)249 2121 y(shell)c(on)g(the)h
(remote)f(mac)o(hine\))f(can)h(blo)q(c)o(k)g(for)g(seconds)i(or)e(min)o
(utes)f(\(or)i(hang\),)f(and)g(the)h(master)249 2175
y(p)o(vmd)f(m)o(ust)g(b)q(e)h(able)g(to)g(resp)q(ond)i(to)e(other)g
(messages)h(during)e(this)i(time.)i(It's)d(messy)g(to)g(sa)o(v)o(e)g
(all)249 2229 y(the)i(state)f(in)o(v)o(olv)o(ed,)e(so)i(a)g(completely)
f(separate)i(pro)q(cess)g(is)f(used.)291 2283 y(The)f(p)o(vmd')d(has)j
(host)g(n)o(um)o(b)q(er)f(0)g(and)g(comm)o(unicates)f(with)h(the)h
(master)f(through)h(the)g(normal)249 2337 y(p)o(vmd-p)o(vmd)f(in)o
(terface,)k(though)f(it)h(nev)o(er)g(talks)f(to)g(tasks)h(or)g(other)g
(p)o(vmds.)21 b(The)16 b(normal)e(host)249 2391 y(failure)f(detection)h
(mec)o(hanism)e(is)h(used)h(to)g(reco)o(v)o(er)h(in)e(the)h(ev)o(en)o
(t)g(the)g(p)o(vmd')e(fails.)k(The)e(startup)249 2445
y(op)q(eration)c(has)h(a)f(w)o(ait)g(con)o(text)h(in)f(the)i(master)e
(p)o(vmd.)15 b(If)10 b(the)h(p)o(vmd')e(breaks,)i(the)g(master)g(catc)o
(hes)249 2499 y(a)j Fs(SIGCHLD)e FA(from)g(it)i(and)f(calls)h
Fs(hostfailentry\(\))p FA(,)c(whic)o(h)k(cleans)g(up.)p
eop
%%Page: 107 126
107 125 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(107)249 507 y Fr(7.3.8)48 b(Starting)13 b(Sla)o(v)o(e)h(Pvmds)249
590 y FA(Getting)e(a)h(sla)o(v)o(e)f(p)o(vmd)g(started)i(is)e(a)h
(messy)f(task)h(with)f(no)h(go)q(o)q(d)f(solution.)17
b(The)c(goal)f(is)h(to)f(get)h(a)249 644 y(pro)q(cess)k(running)e(on)f
(the)i(new)f(host,)g(with)g(enough)g(iden)o(tit)o(y)g(to)f(let)i(it)e
(b)q(e)i(fully)d(con\014gured)j(and)249 698 y(added)e(as)g(a)g(p)q
(eer.)291 752 y(Ideally)m(,)d(the)i(mec)o(hanism)d(used)j(should)f(b)q
(e)i(widely)d(a)o(v)n(ailable,)f(secure,)15 b(and)d(fast,)g(while)g
(lea)o(ving)249 806 y(the)i(system)f(easy)g(to)g(install.)k(W)m(e'd)12
b(lik)o(e)h(to)f(a)o(v)o(oid)g(ha)o(ving)g(to)h(t)o(yp)q(e)h(passw)o
(ords)g(all)e(the)h(time,)f(but)249 860 y(don't)g(w)o(an)o(t)h(to)f
(put)h(them)f(in)g(a)h(\014le)f(from)f(where)j(they)f(can)g(b)q(e)h
(stolen.)k(No)12 b(one)h(system)g(meets)f(all)249 914
y(of)g(these)i(criteria.)k(Using)13 b Fs(inetd)e FA(or)i(connecting)h
(to)e(an)h(already-running)f(p)o(vmd)f(or)h(p)o(vmd)g(serv)o(er)249
968 y(at)17 b(a)g(reserv)o(ed)i(p)q(ort)f(w)o(ould)e(allo)o(w)g(fast,)h
(reliable)g(startup,)h(but)g(w)o(ould)e(require)i(that)f(a)g(system)249
1022 y(administrator)12 b(install)h(PVM)i(on)e(eac)o(h)i(host.)k
(Starting)14 b(the)g(p)o(vmd)f(via)g Fs(rlogin)g FA(or)h
Fs(telnet)e FA(with)249 1076 y(a)g FB(chat)g FA(script)g(w)o(ould)f
(allo)o(w)g(access)i(ev)o(en)g(to)f(IP-connected)h(hosts)g(b)q(ehind)f
(\014rew)o(all)f(mac)o(hines)g(and)249 1130 y(w)o(ould)g(require)j(no)d
(sp)q(ecial)i(privilege)f(to)g(install;)f(the)i(main)d(dra)o(wbac)o(ks)
i(are)h(sp)q(eed)g(and)f(the)h(e\013ort)249 1184 y(needed)i(to)f(get)g
(the)h(c)o(hat)f(program)e(w)o(orking)h(reliably)m(.)291
1238 y(Tw)o(o)j(widely)h(a)o(v)n(ailable)d(systems)k(are)f
Fs(rsh)g FA(and)f Fs(rexec\(\))p FA(;)h(w)o(e)g(use)h(b)q(oth)g(to)e
(co)o(v)o(er)i(the)g(cases)249 1292 y(where)d(a)f(passw)o(ord)h(do)q
(es)g(and)f(do)q(es)h(not)f(need)h(to)f(b)q(e)h(t)o(yp)q(ed.)20
b(A)14 b(man)o(ual)e(startup)j(option)e(allo)o(ws)249
1346 y(the)j(user)g(to)e(tak)o(e)h(the)h(place)f(of)f(a)h(c)o(hat)g
(program,)e(starting)i(the)h(p)o(vmd)d(b)o(y)i(hand)g(and)f(t)o(yping)g
(in)249 1400 y(the)k(con\014guration.)26 b Fs(rsh)17
b FA(is)g(a)f(privileged)h(program)e(that)i(can)g(b)q(e)h(used)g(to)e
(run)i(commands)c(on)249 1454 y(another)k(host)f(without)g(a)f(passw)o
(ord,)i(pro)o(vided)f(the)h(destination)f(host)g(can)h(b)q(e)f(made)f
(to)h(trust)249 1508 y(the)i(source)h(host.)31 b(This)19
b(can)f(b)q(e)h(done)g(either)g(b)o(y)f(making)e(it)i(equiv)n(alen)o(t)
f(\(requires)j(a)e(system)249 1562 y(administrator\))c(or)j(b)o(y)e
(creating)i(a)f Fs(.rhosts)e FA(\014le)i(on)g(the)h(destination)f(host)
g(\(this)g(isn't)g(a)g(great)249 1616 y(idea\).)h(The)11
b(alternativ)o(e,)g Fs(rexec\(\))p FA(,)e(is)i(a)f(function)g(compiled)
f(in)o(to)h(the)i(p)o(vmd.)j(Unlik)o(e)10 b Fs(rsh)p
FA(,)g(whic)o(h)249 1670 y(do)q(esn't)k(tak)o(e)g(a)g(passw)o(ord,)f
Fs(rexec\(\))g FA(requires)i(the)f(user)h(to)e(supply)h(one)g(at)g(run)
g(time,)e(either)i(b)o(y)249 1724 y(t)o(yping)f(it)h(in)f(or)h(b)o(y)g
(placing)f(it)g(in)h(a)f Fs(.netrc)g FA(\014le)h(\(this)g(is)f(a)h
(really)f(bad)h(idea\).)291 1778 y(Figure)g(7.7)e(sho)o(ws)j(a)e(host)h
(b)q(eing)g(added)g(to)g(the)g(mac)o(hine.)j(A)d(task)g(calls)f
Fs(pvm)p 1562 1778 14 2 v 15 w(addhosts\(\))f FA(to)249
1831 y(send)g(a)f(request)i(to)f(its)f(p)o(vmd,)f(whic)o(h)h(in)g(turn)
h(sends)h(a)e Fs(DM)p 1184 1831 V 15 w(ADD)g FA(message)g(to)g(the)h
(master)f(\(p)q(ossibly)249 1885 y(itself)s(\).)22 b(The)16
b(master)f(p)o(vmd)f(creates)j(a)e(new)g(host)h(table)f(en)o(try)h(for)
f(eac)o(h)h(host)f(requested,)j(lo)q(oks)249 1939 y(up)f(the)h(IP)g
(addresses,)i(and)d(sets)i(the)e(options)g(from)f(host)i(\014le)f(en)o
(tries)h(or)g(defaults.)28 b(The)18 b(host)249 1993 y(descriptors)f
(are)f(k)o(ept)g(in)f(a)g Fs(waitc)p 825 1993 V 14 w(add)g
FA(structure)j(\(attac)o(hed)e(to)f(a)g(w)o(ait)g(con)o(text\))h(and)f
(not)h(y)o(et)249 2047 y(added)f(to)g(the)g(host)g(table.)20
b(The)15 b(master)f(forks)h(the)g(p)o(vmd')e(to)h(do)h(the)g(dirt)o(y)f
(w)o(ork,)h(passing)f(it)g(a)249 2101 y(list)i(of)g(hosts)h(and)f
(commands)e(to)j(execute)h(\(an)e Fs(SM)p 1099 2101 V
16 w(STHOST)f FA(message\).)25 b(The)17 b(p)o(vmd')e(uses)i
Fs(rsh)p FA(,)249 2155 y Fs(rexec\(\))f FA(or)i(man)o(ual)d(startup)k
(to)e(start)i(eac)o(h)f(p)o(vmd,)f(pass)h(it)f(parameters,)h(and)g(get)
g(a)f(line)h(of)249 2209 y(con\014guration)c(data)g(bac)o(k.)20
b(The)15 b(con\014guration)f(dialog)f(b)q(et)o(w)o(een)j(p)o(vmd')c
(and)i(a)h(new)g(sla)o(v)o(e)f(is)g(as)249 2263 y(follo)o(ws:)p
291 2329 1410 2 v 315 2361 a Fu(p)o(vmd')g Ff(!)f Fu(sla)o(v)o(e:)51
b(\(exec\))13 b Fg($PVM)p 821 2361 12 2 v 12 w(ROOT/lib/pv)o(md)j(-s)j
(-d8)f(-nhonk)g(1)h(80a9ca95:)o(0f5)o(a)1095 2407 y(4096)g(3)g
(80a95c43:)o(00)o(00)315 2452 y Fu(sla)o(v)o(e)c Ff(!)e
Fu(p)o(vmd':)50 b Fg(ddpro<231)o(2>)16 b(arch<ALPHA)o(>)g(ip<80a95c43)o
(:0)o(b3f)o(>)g(mtu<4096>)315 2498 y Fu(p)o(vmd')e Ff(!)f
Fu(sla)o(v)o(e:)51 b Fg(EOF)p 291 2513 1410 2 v eop
%%Page: 108 127
108 126 bop 249 251 a Fu(108)1356 b(Chapter)13 b(7)249
840 y
 24818168 18755727 5788794 24865505 30588518 43613306 startTexFig
 249 840 a
%%BeginDocument: fig7-addhost.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Times-Roman reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Line
%I b 65535
3 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 30 61 ] concat
%I
210 819 210 459 Line
%I 1
End

Begin %I Line
%I b 65535
3 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 134 61 ] concat
%I
210 819 210 459 Line
%I 1
End

Begin %I Line
%I b 65535
3 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 238 61 ] concat
%I
210 819 210 459 Line
%I 1
End

Begin %I Line
%I b 65535
3 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 334 61 ] concat
%I
210 819 210 459 Line
%I 1
End

Begin %I Line
%I b 65535
3 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 54 62 ] concat
%I
90 818 578 818 Line
%I 1
End

Begin %I Line
%I b 65535
3 0 1 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 62 62 ] concat
%I
82 818 82 730 Line
%I 1
End

End %I eop

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 52 64 ] concat
%I
228 496 236 752 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 20 64 ] concat
%I
388 544 396 640 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 36 64 ] concat
%I
340 544 348 728 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.764706 0.764706 0.764706 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 76 64 ] concat
%I
108 464 116 784 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 152 867 ] concat
%I
[
(pvm_addhosts\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 256 835 ] concat
%I
[
(tm_addhost\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 456 787 ] concat
%I
[
(start_slaves\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 552 763 ] concat
%I
[
(slave_config\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 360 723 ] concat
%I
[
(dm_startack\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 261 691 ] concat
%I
[
(dm_htupd\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 558.5 675 ] concat
%I
[
(dm_htupd\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 358 659 ] concat
%I
[
(dm_htupdack\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 252 579 ] concat
%I
[
(dm_htcommit\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 549.5 571 ] concat
%I
[
(dm_htcommit\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 358 603 ] concat
%I
[
(dm_htupdack\(\))
] Text
End

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 -26 61 ] concat
%I
562 715 610 707 Line
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 36 0 ] concat

Begin %I Elli
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 57 -113 ] concat
%I
191 905 13 8 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 245.5 798 ] concat
%I
[
(3)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -4 0 ] concat

Begin %I Elli
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 193 -137 ] concat
%I
191 905 13 8 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 381.5 772 ] concat
%I
[
(6)
] Text
End

End %I eop

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 20 64 ] concat
%I
468 672 412 664 Line
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 19.9999 -7.99988 ] concat

Begin %I Elli
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 152 -215 ] concat
%I
240 903 22 10 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 385 692 ] concat
%I
[
(7,8)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 20 -8 ] concat

Begin %I Elli
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 201 -273 ] concat
%I
191 905 13 8 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 389.5 636 ] concat
%I
[
(8)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 60 0 ] concat

Begin %I Elli
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 20 64 ] concat
%I
108 696 32 16 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 108.5 764 ] concat
%I
[
(Blocked)
] Text
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 272 899 ] concat
%I
[
(Pvmd 2)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 160 899 ] concat
%I
[
(Task 2/1)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 352 899 ] concat
%I
[
(Pvmd 1 \(master\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 560 899 ] concat
%I
[
(Pvmd 3 \(new\))
] Text
End

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 52 64 ] concat
%I
156 784 204 776 Line
%I 1
End

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 52 64 ] concat
%I
204 472 156 464 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 371.5 811 ] concat
%I
[
(dm_add\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 257.5 555 ] concat
%I
[
(dm_addack\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 472 899 ] concat
%I
[
(Pvmd')
] Text
End

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 54 62 ] concat
%I
522 594 378 554 Line
%I 1
End

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 54 62 ] concat
%I
522 682 442 674 Line
%I 1
End

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 54 62 ] concat
%I
274 762 322 754 Line
%I 1
End

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 54 62 ] concat
%I
378 738 426 730 Line
%I 1
End

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 54 62 ] concat
%I
378 642 522 618 Line
%I 1
End

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 54 62 ] concat
%I
386 530 514 514 Line
%I 1
End

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 54 62 ] concat
%I
314 514 266 498 Line
%I 1
End

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 54 62 ] concat
%I
314 530 266 522 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 6.12323e-17 1 -1 6.12323e-17 124.5 828.5 ] concat
%I
[
(time)
] Text
End

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 54 62 ] concat
%I
314 642 250 634 Line
%I 1
End

Begin %I Line
%I b 65535
2 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 54 62 ] concat
%I
258 610 314 602 Line
%I 1
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 2090 a Fo(Figure)g(7.7)249 2128 y Fy(Timeline)d(of)h(addhost)f(op)
q(eration)p eop
%%Page: 109 128
109 127 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(109)291 621 y FA(The)16 b(addresses)i(of)d(the)h(master)g(and)f(sla)o
(v)o(e)h(p)o(vmds)e(are)j(passed)f(on)g(the)g(command)d(line.)24
b(The)249 675 y(sla)o(v)o(e)12 b(writes)h(its)f(con\014guration)g(on)f
(standard)i(output,)f(then)h(w)o(aits)f(for)f(an)h(EOF)h(from)d(the)j
(p)o(vmd')249 729 y(and)20 b(disconnects.)39 b(It)20
b(runs)h(in)f(probationary)f(status)i(\()p Fs(runstate)f(=)i
(PVMDSTARTUP)p FA(\))c(un)o(til)h(it)249 783 y(receiv)o(es)d(the)f
(rest)g(of)e(its)h(con\014guration)g(from)e(the)j(master)f(p)o(vmd.)j
(If)c(it)h(isn't)g(con\014gured)h(within)249 837 y(\014v)o(e)e(min)o
(utes)e(\(parameter)i Fs(DDBAILTIME)p FA(\),)d(it)i(assumes)h(there)h
(is)e(some)g(problem)f(with)h(the)i(master)249 891 y(and)j(quits.)26
b(The)17 b(proto)q(col)g(revision)f(\()p Fs(DDPROTOCOL)p
FA(\))f(of)h(the)h(sla)o(v)o(e)g(p)o(vmd)e(m)o(ust)g(matc)o(h)h(that)h
(of)249 945 y(the)h(master.)30 b(This)18 b(n)o(um)o(b)q(er)f(is)g
(incremen)o(ted)h(whenev)o(er)i(a)d(c)o(hange)h(in)g(the)g(proto)q(col)
g(mak)o(es)e(it)249 999 y(incompatible)d(with)h(the)i(previous)f(v)o
(ersion.)21 b(When)16 b(sev)o(eral)f(hosts)h(are)f(added)g(at)g(once,)g
(startup)249 1053 y(is)g(done)h(in)e(parallel.)21 b(The)16
b(p)o(vmd')d(sends)k(the)f(data)f(\(or)g(errors\))i(in)d(a)h
Fs(DM)p 1443 1053 14 2 v 16 w(STARTACK)e FA(message)i(to)249
1107 y(the)g(master)e(p)o(vmd,)f(whic)o(h)i(completes)f(the)i(host)f
(descriptors)h(held)f(in)g(the)g(w)o(ait)f(con)o(text.)291
1161 y(If)j(a)g(sp)q(ecial)h(task)f(called)g(a)h FB(hoster)f
FA(is)g(registered)i(with)e(the)h(master)f(p)o(vmd)f(when)i(it)f
(receiv)o(es)249 1215 y(the)g Fs(DM)p 369 1215 V 16 w(ADD)f
FA(message,)g(the)h(p)o(vmd')e(is)h(not)h(used.)24 b(Instead,)17
b(the)f Fs(SM)p 1354 1215 V 15 w(STHOST)f FA(message)g(is)h(sen)o(t)g
(to)249 1269 y(the)d(hoster,)g(whic)o(h)g(starts)g(the)g(remote)f(pro)q
(cesses)j(as)e(describ)q(ed)h(ab)q(o)o(v)o(e)e(using)g(an)o(y)g(mec)o
(hanism)e(it)249 1323 y(w)o(an)o(ts,)16 b(then)g(sends)h(a)e
Fs(SM)p 673 1323 V 15 w(STHOSTACK)f FA(message)h(\(same)g(format)f(as)h
Fs(DM)p 1416 1323 V 15 w(STARTACK)p FA(\))f(bac)o(k)i(to)f(the)249
1377 y(master)e(p)o(vmd.)j(Th)o(us,)d(the)g(metho)q(d)f(of)h(starting)f
(sla)o(v)o(e)h(p)o(vmds)f(is)h(dynamically)c(replaceable,)14
b(but)249 1431 y(the)e(hoster)g(do)q(es)g(not)f(ha)o(v)o(e)g(to)h
(understand)g(the)g(con\014guration)f(proto)q(col.)17
b(If)11 b(the)h(hoster)g(task)f(fails)249 1485 y(during)i(an)h(add)f
(op)q(eration,)g(the)h(p)o(vmd)e(uses)j(the)f(w)o(ait)f(con)o(text)h
(to)g(reco)o(v)o(er.)19 b(It)13 b(assumes)h(none)g(of)249
1539 y(the)h(sla)o(v)o(es)e(w)o(ere)i(started)g(and)f(sends)h(a)f
Fs(DM)p 948 1539 V 15 w(ADDACK)f FA(message)g(indicating)g(a)h(system)f
(error.)291 1593 y(After)g(the)f(sla)o(v)o(es)h(are)g(started,)g(the)g
(master)f(sends)h(eac)o(h)g(a)f Fs(DM)p 1288 1593 V 15
w(SLCONF)f FA(message)h(to)h(set)g(param-)249 1647 y(eters)i(not)e
(included)h(in)f(the)h(startup)g(proto)q(col.)k(It)c(then)g(broadcasts)
g(a)f Fs(DM)p 1455 1647 V 15 w(HTUPD)g FA(message)g(to)g(all)249
1701 y(new)k(and)f(existing)f(sla)o(v)o(es.)25 b(Up)q(on)16
b(receiving)h(this)f(message,)g(eac)o(h)h(sla)o(v)o(e)e(kno)o(ws)h(the)
h(con\014gura-)249 1754 y(tion)f(of)f(the)i(new)f(virtual)g(mac)o
(hine.)23 b(The)17 b(master)e(w)o(aits)h(for)g(an)g(ac)o(kno)o
(wledging)e Fs(DM)p 1656 1754 V 16 w(HTUPDACK)249 1808
y FA(message)19 b(from)e(ev)o(ery)j(sla)o(v)o(e,)g(then)g(broadcasts)g
(an)f Fs(HT)p 1172 1808 V 15 w(COMMIT)f FA(message,)i(shifting)e(all)g
(to)h(the)249 1862 y(new)e(host)g(table.)25 b(Tw)o(o)16
b(phases)h(are)g(needed)h(so)f(that)f(new)h(hosts)g(are)g(not)f(adv)o
(ertised)h(\(e.g.,)f(b)o(y)249 1916 y Fs(pvm)p 318 1916
V 15 w(config\(\))p FA(\))c(un)o(til)h(all)g(p)o(vmds)g(kno)o(w)g(the)h
(new)h(con\014guration.)i(Finally)m(,)11 b(the)k(master)e(sends)i(a)249
1970 y Fs(DM)p 296 1970 V 15 w(ADDACK)e FA(reply)h(to)g(the)g(original)
e(request,)j(giving)e(the)h(new)g(host)h(id's.)291 2024
y Fr(Note:)20 b FA(Recen)o(t)15 b(exp)q(erience)i(suggests)g(it)d(w)o
(ould)g(b)q(e)h(cleaner)h(to)f(manage)e(the)i(p)o(vmd')e(through)249
2078 y(the)20 b(task)g(in)o(terface)g(instead)f(of)g(the)h(host)g(in)o
(terface.)35 b(This)20 b(approac)o(h)f(w)o(ould)g(allo)o(w)e(m)o
(ultiple)249 2132 y(starters)22 b(to)e(run)h(at)f(once)h(\(parallel)e
(startup)i(is)f(implemen)o(ted)e(explicitly)h(in)h(a)g(single)g(p)o
(vmd')249 2186 y(pro)q(cess\).)249 2269 y Fr(7.3.9)48
b(Resource)15 b(Manager)249 2352 y FA(A)c FB(r)n(esour)n(c)n(e)g
(manager)g FA(\(RM\))g(is)f(a)h(PVM)g(task)f(resp)q(onsible)i(for)e
(making)f(task)h(and)h(host)g(sc)o(heduling)249 2406
y(\(placemen)o(t\))e(decisions.)17 b(The)11 b(resource)g(manager)e(in)o
(terface)h(w)o(as)f(in)o(tro)q(duced)i(in)e(v)o(ersion)h(3.3.)16
b(The)249 2460 y(simple)d(sc)o(hedulers)k(em)o(b)q(edded)e(in)f(the)i
(p)o(vmd)d(handle)i(man)o(y)e(common)f(conditions,)i(but)h(require)p
eop
%%Page: 110 129
110 128 bop 249 251 a Fu(110)1356 b(Chapter)13 b(7)249
507 y FA(the)h(user)g(to)e(explicitly)g(place)i(program)d(comp)q(onen)o
(ts)i(in)f(order)i(to)f(get)g(the)g(maxim)o(um)8 b(e\016ciency)m(.)249
561 y(Using)k(kno)o(wledge)g(not)h(a)o(v)n(ailable)d(to)i(the)h(p)o
(vmds,)e(suc)o(h)i(as)f(host)h(load)e(a)o(v)o(erages,)i(a)f(RM)g(can)h
(mak)o(e)249 615 y(more)k(informed)g(decisions)h(automatically)m(.)27
b(F)m(or)18 b(example,)f(when)i(spa)o(wning)e(a)h(task,)h(it)e(could)
249 669 y(pic)o(k)12 b(the)h(host)g(in)f(order)h(to)f(balance)g(the)h
(computing)e(load.)17 b(Or,)12 b(when)h(recon\014guring)g(the)g
(virtual)249 723 y(mac)o(hine,)e(the)j(RM)e(could)g(in)o(teract)i(with)
e(an)h(external)g(queuing)f(system)h(to)f(allo)q(cate)h(a)f(new)h
(host.)291 777 y(The)g(n)o(um)o(b)q(er)g(of)f(RMs)h(registered)i(can)f
(v)n(ary)e(from)g(one)h(for)g(an)g(en)o(tire)h(virtual)e(mac)o(hine)g
(to)h(one)249 831 y(p)q(er)h(p)o(vmd.)i(The)e(RM)e(running)h(on)g(the)h
(master)e(host)h(\(where)i(the)e(master)g(p)o(vmd)e(runs\))j(manages)
249 885 y(an)o(y)h(sla)o(v)o(e)g(p)o(vmds)f(that)i(don't)f(ha)o(v)o(e)g
(their)h(o)o(wn)f(RMs.)23 b(A)15 b(task)h(connecting)g(anon)o(ymously)d
(to)i(a)249 939 y(virtual)h(mac)o(hine)f(is)i(assigned)g(the)g(default)
f(RM)g(of)g(the)i(p)o(vmd)d(to)h(whic)o(h)h(it)f(connects.)28
b(A)17 b(task)249 993 y(spa)o(wned)d(from)f(within)g(the)h(system)g
(inherits)g(the)h(RM)e(of)g(its)h(paren)o(t)h(task.)291
1047 y(If)c(a)g(task)h(has)g(a)g(RM)f(assigned)h(to)g(it,)f(service)i
(requests)h(from)c(the)j(task)f(to)f(its)h(p)o(vmd)e(are)i(routed)249
1101 y(to)i(the)g(RM)g(instead.)k(Messages)e(from)c(the)i(follo)o(wing)
d(libp)o(vm)h(functions)i(are)g(in)o(tercepted:)p 291
1175 1036 2 v 315 1213 a(Libp)o(vm)e(function)50 b(Default)13
b(Message)51 b(RM)13 b(Message)p 291 1230 V 315 1268
a Fs(pvm)p 384 1268 14 2 v 16 w(addhost\(\))72 b FA(TM)p
737 1268 13 2 v 15 w(ADDHOST)53 b(SM)p 1077 1268 V 15
w(ADDHOST)315 1322 y Fs(pvm)p 384 1322 14 2 v 16 w(delhost\(\))72
b FA(TM)p 737 1322 13 2 v 15 w(DELHOST)62 b(SM)p 1077
1322 V 15 w(DELHOST)315 1376 y Fs(pvm)p 384 1376 14 2
v 16 w(spawn\(\))116 b FA(TM)p 737 1376 13 2 v 15 w(SP)m(A)-5
b(WN)116 b(SM)p 1077 1376 V 15 w(SP)m(A)-5 b(WN)p 291
1394 1036 2 v 291 1512 a(Queries)19 b(also)e(go)g(to)g(the)h(RM,)f
(since)h(it)g(presumably)e(kno)o(ws)i(more)e(ab)q(out)i(the)g(state)g
(of)f(the)249 1566 y(virtual)c(mac)o(hine:)p 291 1632
993 2 v 315 1670 a(Libp)o(vm)f(function)50 b(Default)13
b(Message)51 b(RM)13 b(Message)p 291 1687 V 315 1725
a Fs(pvm)p 384 1725 14 2 v 16 w(config\(\))94 b FA(TM)p
737 1725 13 2 v 15 w(CONFIG)i(SM)p 1077 1725 V 15 w(CONFIG)315
1779 y Fs(pvm)p 384 1779 14 2 v 16 w(notify\(\))e FA(TM)p
737 1779 13 2 v 15 w(NOTIFY)k(SM)p 1077 1779 V 15 w(NOTIFY)315
1833 y Fs(pvm)p 384 1833 14 2 v 16 w(task\(\))138 b FA(TM)p
737 1833 13 2 v 15 w(T)m(ASK)151 b(SM)p 1077 1833 V 15
w(T)m(ASK)p 291 1851 993 2 v 291 1969 a(The)13 b(call)g(to)g(register)i
(a)e(task)g(as)h(a)f(RM)g(\()p Fs(pvm)p 1023 1969 14
2 v 15 w(reg)p 1104 1969 V 15 w(rm\(\))p FA(\))f(is)i(also)e
(redirected)k(if)c(RM)h(is)g(already)249 2023 y(running.)18
b(In)13 b(this)h(w)o(a)o(y)e(the)i(existing)f(RM)g(learns)h(of)f(the)h
(new)g(one,)f(and)h(can)f(gran)o(t)g(or)h(refuse)g(the)249
2077 y(request)i(to)d(register.)291 2131 y(Using)18 b(messages)h
Fs(SM)p 640 2131 V 15 w(EXEC)f FA(and)h Fs(SM)p 891 2131
V 15 w(ADD)p FA(,)f(the)h(RM)f(can)h(directly)g(command)d(the)k(p)o
(vmds)d(to)249 2185 y(start)h(tasks)g(or)f(recon\014gure)i(the)f
(virtual)f(mac)o(hine.)27 b(On)18 b(receiving)g(ac)o(kno)o(wledgemen)o
(t)e(for)h(the)249 2239 y(commands,)12 b(it)j(replies)g(to)g(the)h
(clien)o(t)e(task.)22 b(The)15 b(RM)f(is)h(free)h(to)f(in)o(terpret)h
(service)g(request)g(pa-)249 2293 y(rameters)d(in)f(an)o(y)g(w)o(a)o(y)
g(it)g(wishes.)19 b(F)m(or)12 b(example,)f(the)i(arc)o(hitecture)i
(class)e(giv)o(en)f(to)g Fs(pvm)p 1678 2293 V 16 w(spawn\(\))249
2347 y FA(could)i(b)q(e)g(used)h(to)f(distinguish)f(hosts)i(b)o(y)e
(memory)f(size)i(or)g(CPU)g(sp)q(eed.)p eop
%%Page: 111 130
111 129 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(111)249 507 y FD(7.4)52 b(Libp)o(vm)17 b(Library)249
615 y Fr(7.4.1)48 b(Language)15 b(Supp)q(ort)249 698
y FA(Libp)o(vm)h(is)h(written)i(in)e(C)g(and)h(directly)g(supp)q(orts)h
(C)f(and)f(C++)h(applications.)29 b(The)18 b(F)m(ortran)249
752 y(library)m(,)e Fs(libfpvm3.a)f FA(\(also)i(written)g(in)g(C\),)f
(is)h(a)g(set)h(of)e FB(wr)n(app)n(er)g FA(functions)i(that)f(conform)e
(to)249 806 y(the)h(F)m(ortran)g(calling)e(con)o(v)o(en)o(tions.)24
b(The)16 b(F)m(ortran/C)f(linking)f(requiremen)o(ts)i(are)h(p)q
(ortably)e(met)249 860 y(b)o(y)f(prepro)q(cessing)i(the)e(C)g(source)h
(co)q(de)g(for)e(the)i(F)m(ortran)e(library)h(with)f
Fs(m4)h FA(b)q(efore)g(compilation.)249 943 y Fr(7.4.2)48
b(Connecting)14 b(to)h(the)g(Pvmd)249 1026 y FA(On)h(the)h(\014rst)g
(call)e(to)h(a)g(libp)o(vm)e(function,)i Fs(pvm)p 1037
1026 14 2 v 15 w(beatask\(\))e FA(is)i(called)g(to)g(initialize)e(the)j
(library)249 1080 y(state)h(and)f(connect)h(the)g(task)f(to)g(its)g(p)o
(vmd.)26 b(Connecting)17 b(\(for)g FB(anonymous)i FA(tasks\))e(is)g
(sligh)o(tly)249 1134 y(di\013eren)o(t)e(from)d(reconnecting)j(\(for)f
(spa)o(wned)g(tasks\).)291 1188 y(The)i(p)o(vmd)f(publishes)h(the)h
(address)g(of)f(the)h(so)q(c)o(k)o(et)g(on)e(whic)o(h)h(it)g(listens)h
(in)e Fs(/tmp/pvmd.)p FB(uid)p FA(,)249 1242 y(where)g
FB(uid)e FA(is)h(the)g(n)o(umeric)e(user)j(id)e(under)h(whic)o(h)g(the)
g(p)o(vmd)e(runs.)18 b(This)c(\014le)f(con)o(tains)g(a)h(line)f(of)249
1296 y(the)i(form)720 1383 y Fs(7f000001:06f7)c FA(or)j
Fs(/tmp/aaa014138)249 1470 y FA(This)g(is)g(the)h(IP)g(address)h(and)e
(p)q(ort)g(n)o(um)o(b)q(er)g(\(in)g(hexadecimal\))f(of)h(the)h(so)q(c)o
(k)o(et,)f(or)h(the)g(path)f(if)f(a)249 1524 y(Unix-domain)e(so)q(c)o
(k)o(et.)19 b(T)m(o)12 b(a)o(v)o(oid)h(the)h(need)g(to)g(read)g(the)g
(address)h(\014le,)e(the)h(same)f(information)d(is)249
1578 y(passed)15 b(to)f(spa)o(wned)g(tasks)h(in)e(en)o(vironmen)o(t)g
(v)n(ariable)g Fs(PVMSOCK)p FA(.)291 1632 y(T)m(o)18
b(reconnect,)23 b(a)c(spa)o(wned)h(task)g(also)f(needs)i(its)f(exp)q
(ected)h(pro)q(cess)h(id.)34 b(When)20 b(a)f(task)h(is)249
1686 y(spa)o(wned)e(b)o(y)g(the)g(p)o(vmd,)f(a)g(task)h(descriptor)h
(is)f(created)h(for)e(it)h(during)f(the)h FB(exe)n(c)g
FA(phase.)31 b(The)249 1740 y(descriptor)21 b(m)o(ust)d(exist)i(so)g
(it)f(can)h(stash)g(an)o(y)f(messages)h(that)g(arriv)o(e)f(for)g(the)h
(task)g(b)q(efore)g(it)249 1794 y(reconnects)f(and)d(can)h(receiv)o(e)h
(them.)25 b(During)16 b(reconnection,)i(the)f(task)g(iden)o(ti\014es)g
(itself)f(to)g(the)249 1848 y(p)o(vmd)h(b)o(y)h(its)g(PID.)f(If)h(the)h
(task)f(is)g(alw)o(a)o(ys)f(the)i(c)o(hild)f(of)f(the)i(p)o(vmd)e
(\(i.e.,)h(the)g(exact)h(pro)q(cess)249 1902 y FB(exe)n(c)p
FA('d)13 b(b)o(y)f(it\),)g(then)i(it)e(could)g(use)i(the)f(v)n(alue)f
(returned)j(b)o(y)d Fs(getpid\(\))p FA(.)k(T)m(o)c(allo)o(w)f(for)h(in)
o(terv)o(ening)249 1956 y(pro)q(cesses,)j(suc)o(h)d(as)g(debuggers,)i
(the)e(p)o(vmd)f(passes)i(the)g(exp)q(ected)h(PID)e(in)f(en)o(vironmen)
o(t)g(v)n(ariable)249 2010 y Fs(PVMEPID)p FA(,)g(and)i(the)g(task)g
(uses)i(that)e(v)n(alue)f(in)g(preference)k(to)d(its)g(real)g(PID.)f
(The)h(task)g(also)g(passes)249 2064 y(its)h(real)g(PID)g(so)g(it)f
(can)h(b)q(e)h(con)o(trolled)e(normally)f(b)o(y)h(the)i(p)o(vmd.)291
2118 y Fs(pvm)p 360 2118 V 15 w(beatask\(\))g FA(creates)k(a)e(TCP)h
(so)q(c)o(k)o(et)g(and)g(do)q(es)g(a)f(prop)q(er)h(connection)g(dance)g
(with)f(the)249 2172 y(p)o(vmd.)e(Eac)o(h)d(m)o(ust)d(pro)o(v)o(e)i
(its)g(iden)o(tit)o(y)f(to)h(the)h(other,)f(to)g(prev)o(en)o(t)h(a)e
(di\013eren)o(t)i(user)g(from)d(sp)q(o)q(o\014ng)249
2226 y(the)20 b(system.)34 b(It)20 b(do)q(es)g(this)f(b)o(y)g(creating)
h(a)f(\014le)h(in)e Fs(/tmp)h FA(writable)g(only)g(b)o(y)g(the)h(o)o
(wner,)g(and)249 2280 y(c)o(hallenging)11 b(the)h(other)h(to)f(write)g
(in)f(the)i(\014le.)k(If)12 b(successful,)h(the)g(iden)o(tit)o(y)e(of)h
(the)g(other)h(is)e(pro)o(v)o(en.)249 2334 y(Note)h(that)g(this)g
(authen)o(tication)f(is)g(only)g(as)h(strong)g(as)g(the)g(\014lesystem)
f(and)h(the)g(authorit)o(y)f(of)g(ro)q(ot)249 2388 y(on)j(eac)o(h)g
(mac)o(hine.)291 2442 y(A)j(proto)q(col)h(serial)f(n)o(um)o(b)q(er)g
(\()p Fs(TDPROTOCOL)p FA(\))f(is)h(compared)g(whenev)o(er)i(a)e(task)h
(connects)h(to)e(a)249 2496 y(p)o(vmd)d(or)i(another)g(task.)23
b(This)15 b(n)o(um)o(b)q(er)g(is)h(incremen)o(ted)g(whenev)o(er)h(a)e
(c)o(hange)h(in)f(the)h(proto)q(col)p eop
%%Page: 112 131
112 130 bop 249 251 a Fu(112)1356 b(Chapter)13 b(7)249
507 y FA(mak)o(es)g(it)g(incompatible)f(with)i(the)g(previous)g(v)o
(ersion.)291 561 y(Disconnecting)j(is)h(m)o(uc)o(h)e(simpler.)28
b(It)18 b(can)g(b)q(e)g(done)g(forcibly)f(b)o(y)g(a)g
FB(close)h FA(from)e(either)i(end,)249 615 y(for)g(example,)g(b)o(y)g
(exiting)g(the)i(task)e(pro)q(cess.)34 b(The)19 b(function)f
Fs(pvm)p 1372 615 14 2 v 15 w(exit\(\))g FA(p)q(erforms)g(a)g(clean)249
669 y(sh)o(utdo)o(wn,)e(suc)o(h)h(that)f(the)g(pro)q(cess)i(can)e(b)q
(e)h(connected)h(again)c(later)i(\(it)g(w)o(ould)f(get)h(a)g
(di\013eren)o(t)249 723 y(TID\).)249 844 y FD(7.5)52
b(Proto)q(cols)249 951 y FA(PVM)17 b(comm)o(unicatio)o(n)d(is)i(based)h
(on)g(TCP)f(,)g(UDP,)g(and)h(Unix-domain)c(so)q(c)o(k)o(ets.)27
b(While)16 b(more)249 1005 y(appropriate)e(proto)q(cols)g(exist,)g
(they)g(aren't)g(as)g(generally)g(a)o(v)n(ailable.)291
1059 y(VMTP)g([4])g(is)g(one)h(example)e(of)h(a)g(proto)q(col)h(built)e
(for)i(this)f(purp)q(ose.)21 b(Although)14 b(in)o(tended)h(for)249
1113 y(RPC-st)o(yle)g(in)o(teraction)g(\(request-resp)q(onse)q(\),)j
(it)d(could)g(supp)q(ort)h(PVM)g(messages.)22 b(It)16
b(is)f(pac)o(k)o(et)249 1167 y(orien)o(ted)i(and)g(e\016cien)o(tly)g
(sends)h(short)f(blo)q(c)o(ks)g(of)f(data)h(\(suc)o(h)h(as)f(most)e(p)o
(vmd-p)o(vmd)f(manage-)249 1221 y(men)o(t)f(messages\))h(but)h(also)e
(handles)h(streaming)f(\(necessary)j(for)e(task-task)g(comm)o(unicatio)
o(n\).)i(It)249 1275 y(supp)q(orts)c(m)o(ulticasting)d(and)h(priorit)o
(y)g(data)h(\(something)f(PVM)h(do)q(esn't)g(need)h(y)o(et\).)17
b(Connections)249 1329 y(don't)d(need)i(to)e(b)q(e)i(established)f(b)q
(efore)g(use;)h(the)f(\014rst)g(comm)o(unication)d(initializes)h(the)i
(proto)q(col)249 1383 y(driv)o(ers)j(at)f(eac)o(h)h(end.)28
b(VMTP)18 b(w)o(as)f(rejected,)i(ho)o(w)o(ev)o(er.)29
b(b)q(ecause)19 b(it)d(is)i(not)f(widely)f(a)o(v)n(ailable)249
1437 y(\(using)e(it)f(requires)i(mo)q(difying)c(the)k(k)o(ernel\).)291
1491 y(This)i(section)i(explains)e(the)i(PVM)f(proto)q(cols.)30
b(There)19 b(are)f(three)h(connections)g(to)f(consider:)249
1545 y(Bet)o(w)o(een)e(p)o(vmds,)c(b)q(et)o(w)o(een)j(p)o(vmd)d(and)i
(task,)g(and)f(b)q(et)o(w)o(een)j(tasks.)249 1628 y Fr(7.5.1)48
b(Messages)249 1711 y FA(The)13 b(p)o(vmd)e(and)h(libp)o(vm)e(use)k
(the)f(same)e(message)i(header,)g(sho)o(wn)f(in)g(Figure)h(7.8.)k
FB(Co)n(de)12 b FA(con)o(tains)249 1765 y(an)20 b(in)o(teger)g(tag)g
(\(message)f(t)o(yp)q(e\).)37 b(Libp)o(vm)18 b(uses)j
FB(Enc)n(o)n(ding)g FA(to)e(pass)i(the)f(enco)q(ding)h(st)o(yle)f(of)
249 1819 y(the)c(message,)f(as)h(it)f(can)g(pac)o(k)h(in)f(di\013eren)o
(t)h(formats.)21 b(The)16 b(p)o(vmd)e(alw)o(a)o(ys)g(sets)j(Enco)q
(ding)e(\(and)249 1873 y(requires)f(that)f(it)f(b)q(e)h(set\))h(to)e(1)
h(\()p FB(fo)n(o)p FA(\),)f(Pvmds)g(use)h(the)h FB(Wait)g(Context)e
FA(\014eld)h(to)f(pass)i(the)f(w)o(ait)f(id's)249 1927
y(\(if)j(an)o(y)m(,)f(zero)j(if)d(none\))i(of)f(the)h
FB(waitc)f FA(asso)q(ciated)h(with)g(the)g(message.)22
b(Certain)16 b(tasks)g(\(resource)249 1981 y(manager,)h(task)o(er,)h
(hoster\))h(also)d(use)j(w)o(ait)d(id's.)29 b(The)17
b FB(Che)n(cksum)h FA(\014eld)g(is)f(reserv)o(ed)i(for)e(future)249
2035 y(use.)30 b(Messages)19 b(are)f(sen)o(t)h(in)e(one)h(or)f(more)g
(fragmen)o(ts,)g(eac)o(h)h(with)f(its)h(o)o(wn)f(fragmen)o(t)f(header)
249 2089 y(\(describ)q(ed)g(b)q(elo)o(w\).)i(The)c(message)g(header)h
(is)e(at)h(the)h(b)q(eginning)e(of)g(the)i(\014rst)f(fragmen)o(t.)249
2172 y Fr(7.5.2)48 b(Pvmd-Pvmd)249 2255 y FA(PVM)14 b(daemons)e(comm)o
(unicate)f(with)j(one)f(another)h(through)g(UDP)f(so)q(c)o(k)o(ets.)19
b(UDP)14 b(is)f(an)g(unreli-)249 2309 y(able)g(deliv)o(ery)g(service)h
(whic)o(h)f(can)g(lose,)g(duplicate)g(or)g(reorder)h(pac)o(k)o(ets,)g
(so)f(an)g(ac)o(kno)o(wledgmen)o(t)249 2363 y(and)k(retry)g(mec)o
(hanism)d(is)j(used.)27 b(UDP)17 b(also)f(limits)e(pac)o(k)o(et)j
(length,)g(so)f(PVM)h(fragmen)o(ts)f(long)249 2417 y(messages.)291
2471 y(W)m(e)f(considered)i(TCP)m(,)e(but)i(three)g(factors)f(mak)o(e)e
(it)i(inappropriate.)24 b(First)16 b(is)g(scalabilit)o(y.)22
b(In)p eop
%%Page: 113 132
113 131 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(113)249 466 y
 25481245 5636192 6578176 28088811 32035717 33746042 startTexFig
 249 466 a
%%BeginDocument: fig7-mhdr.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Times-Roman reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 114 54 ] concat
%I
38 602 550 626 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 114 30 ] concat
%I
38 602 550 626 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 114 6 ] concat
%I
38 602 550 626 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 144 672 ] concat
%I
[
(0)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 144 648 ] concat
%I
[
(4)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 144 624 ] concat
%I
[
(8)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 138 600 ] concat
%I
[
(12)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 160 696 ] concat
%I
[
(Byte 0)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 288 696 ] concat
%I
[
(1)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 416 696 ] concat
%I
[
(2)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 544 696 ] concat
%I
[
(3)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 114 -18.0002 ] concat
%I
38 602 550 626 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 366.5 624 ] concat
%I
[
(Wait Context ID)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 395.5 672 ] concat
%I
[
(Code)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 385.5 648 ] concat
%I
[
(Encoding)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 347.5 600 ] concat
%I
[
(\(reserved for checksum\))
] Text
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 885 a Fo(Figure)13 b(7.8)249 922 y Fy(Message)e(header)249
1038 y FA(a)18 b(virtual)f(mac)o(hine)f(of)h Fn(N)23
b FA(hosts,)c(eac)o(h)g(p)o(vmd)d(m)o(ust)h(ha)o(v)o(e)g(connections)i
(to)f(the)g(other)h Fn(N)e Ft(\000)12 b FA(1.)249 1092
y(Eac)o(h)i(op)q(en)g(TCP)g(connection)g(consumes)g(a)f(\014le)h
(descriptor)h(in)e(the)h(p)o(vmd,)e(and)h(some)g(op)q(erating)249
1146 y(systems)18 b(limit)e(the)j(n)o(um)o(b)q(er)e(of)h(op)q(en)g
(\014les)h(to)f(as)g(few)g(as)h(32,)f(whereas)h(a)f(single)g(UDP)g(so)q
(c)o(k)o(et)249 1200 y(can)h(comm)o(unicate)e(with)i(an)o(y)f(n)o(um)o
(b)q(er)h(of)f(remote)h(UDP)g(so)q(c)o(k)o(ets.)35 b(Second)19
b(is)g(o)o(v)o(erhead.)34 b Fn(N)249 1254 y FA(p)o(vmds)16
b(need)i Fn(N)5 b FA(\()p Fn(N)16 b Ft(\000)11 b FA(1\))p
Fn(=)p FA(2)16 b(TCP)h(connections,)i(whic)o(h)d(w)o(ould)g(b)q(e)i
(exp)q(ensiv)o(e)g(to)f(set)h(up.)27 b(The)249 1308 y(PVM/UDP)14
b(proto)q(col)f(is)g(initialized)f(with)h(no)g(comm)o(unicatio)o(n.)i
(Third)e(is)h(fault)e(tolerance.)19 b(The)249 1362 y(comm)o(unication)8
b(system)i(detects)j(when)f(foreign)e(p)o(vmds)g(ha)o(v)o(e)h(crashed)h
(or)f(the)h(net)o(w)o(ork)f(has)g(gone)249 1416 y(do)o(wn,)h(so)g(w)o
(e)h(need)h(to)e(set)h(timeouts)f(in)g(the)h(proto)q(col)f(la)o(y)o
(er.)17 b(The)c(TCP)f(k)o(eepaliv)o(e)g(option)g(migh)o(t)249
1470 y(w)o(ork,)h(but)h(it's)g(not)g(alw)o(a)o(ys)e(p)q(ossible)i(to)g
(get)g(adequate)h(con)o(trol)e(o)o(v)o(er)h(the)h(parameters.)291
1524 y(The)k(pac)o(k)o(et)g(header)h(is)f(sho)o(wn)g(in)f(Figure)h
(7.9.)32 b(Multib)o(yte)18 b(v)n(alues)h(are)g(sen)o(t)h(in)e(\(In)o
(ternet\))249 1578 y FB(network)d(byte)g(or)n(der)e FA(\(most)g
(signi\014can)o(t)g(b)o(yte)h(\014rst\).)249 1634 y
 25481245 6441352 6578176 27299430 32035717 33746042 startTexFig
 249
1634 a
%%BeginDocument: fig7-ddphdr.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Times-Roman reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 114 54 ] concat
%I
38 602 550 626 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 114 30 ] concat
%I
38 602 550 626 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 114 6 ] concat
%I
38 602 550 626 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 144 672 ] concat
%I
[
(0)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 144 648 ] concat
%I
[
(4)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 144 624 ] concat
%I
[
(8)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 138 592 ] concat
%I
[
(12)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 160 696 ] concat
%I
[
(Byte 0)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 288 696 ] concat
%I
[
(1)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 416 696 ] concat
%I
[
(2)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 544 696 ] concat
%I
[
(3)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 367.5 672 ] concat
%I
[
(Destination TID)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 380 648 ] concat
%I
[
(Source TID)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 235 624 ] concat
%I
[
(Sequence Number)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 505 624 ] concat
%I
[
(Ack Number)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 66 94 ] concat
%I
86 474 598 514 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 66 62 ] concat
%I
342 570 342 546 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 66 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -46 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -30 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -14 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 2 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 18 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 34 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 50 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 6.12323e-17 1 -1 6.12323e-17 267 577.5 ] concat
%I
[
(SOM)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 6.12323e-17 1 -1 6.12323e-17 251 577 ] concat
%I
[
(EOM)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 6.12323e-17 1 -1 6.12323e-17 235 578 ] concat
%I
[
(DAT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 6.12323e-17 1 -1 6.12323e-17 219 579.5 ] concat
%I
[
(FIN)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 6.12323e-17 1 -1 6.12323e-17 203 577.5 ] concat
%I
[
(ACK)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 454.5 594 ] concat
%I
[
(unused)
] Text
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 2105 a Fo(Figure)f(7.9)249 2142 y Fy(Pvmd-p)o(vmd)8
b(pac)o(k)o(et)i(header)291 2238 y FA(The)h(source)h(and)f(destination)
g(\014elds)h(hold)e(the)i(TIDs)f(of)f(the)i(true)g(source)g(and)f
(\014nal)f(destination)249 2292 y(of)15 b(the)h(pac)o(k)o(et,)h
(regardless)f(of)f(the)i(route)f(it)f(tak)o(es.)24 b(Sequence)18
b(and)d(ac)o(kno)o(wledgmen)o(t)f(n)o(um)o(b)q(ers)249
2346 y(start)h(at)e(1)h(and)g(incremen)o(t)f(to)h(65535,)e(then)j(wrap)
f(to)f(zero.)291 2400 y(SOM)j(\(EOM\))h({)f(Set)g(for)g(the)h(\014rst)g
(\(last\))f(fragmen)o(t)e(of)i(a)g(message.)24 b(In)o(terv)o(ening)16
b(fragmen)o(ts)249 2454 y(ha)o(v)o(e)10 b(b)q(oth)h(bits)g(cleared.)18
b(They)10 b(are)h(used)h(b)o(y)e(tasks)h(and)g(p)o(vmds)e(to)h(delimit)
f(message)h(b)q(oundaries.)291 2508 y(D)o(A)m(T)j({)h(If)g(set,)h(data)
f(is)g(con)o(tained)g(in)g(the)h(pac)o(k)o(et,)f(and)g(the)h(sequence)h
(n)o(um)o(b)q(er)e(is)g(v)n(alid.)k(The)p eop
%%Page: 114 133
114 132 bop 249 251 a Fu(114)1356 b(Chapter)13 b(7)249
507 y FA(pac)o(k)o(et,)h(ev)o(en)g(if)g(zero)g(length,)g(m)o(ust)e(b)q
(e)j(deliv)o(ered.)291 561 y(A)o(CK)h({)f(If)h(set,)h(the)g(ac)o(kno)o
(wledgmen)o(t)d(n)o(um)o(b)q(er)h(\014eld)h(is)g(v)n(alid.)23
b(This)16 b(bit)g(ma)o(y)e(b)q(e)i(com)o(bined)249 615
y(with)e(the)g(D)o(A)m(T)f(bit)h(to)f(piggybac)o(k)g(an)h(ac)o(kno)o
(wledgmen)o(t)e(on)i(a)g(data)f(pac)o(k)o(et.)1511 600
y Fl(1)291 669 y FA(FIN)f({)g(The)h(p)o(vmd)e(is)h(closing)g(do)o(wn)g
(the)g(connection.)19 b(A)12 b(pac)o(k)o(et)h(with)f(FIN)g(bit)g(set)i
(\(and)e(D)o(A)m(T)249 723 y(cleared\))17 b(b)q(egins)f(an)g(orderly)g
(sh)o(utdo)o(wn.)24 b(When)16 b(an)f(ac)o(kno)o(wledgemen)o(t)g(arriv)o
(es)h(\(A)o(CK)h(bit)e(set)249 777 y(and)g(ac)o(k)f(n)o(um)o(b)q(er)g
(matc)o(hing)f(the)j(sequence)h(n)o(um)o(b)q(er)d(from)f(the)i(FIN)g
(pac)o(k)o(et\),)g(a)g(\014nal)f(pac)o(k)o(et)h(is)249
831 y(sen)o(t)d(with)f(b)q(oth)g(FIN)g(and)g(A)o(CK)g(set.)18
b(If)10 b(the)i(p)o(vmd)d(panics,)j(\(for)e(example)g(on)h(a)g(trapp)q
(ed)g(segmen)o(t)249 885 y(violation\))h(it)i(tries)g(to)g(send)h(a)e
(pac)o(k)o(et)i(with)e(FIN)h(and)g(A)o(CK)g(set)h(to)e(ev)o(ery)i(p)q
(eer)g(b)q(efore)g(it)f(exits.)291 939 y(The)e(state)g(of)g(a)f
(connection)i(to)e(another)i(p)o(vmd)d(is)h(k)o(ept)i(in)e(its)h(host)g
(table)f(en)o(try)m(.)18 b(The)12 b(proto)q(col)249 993
y(driv)o(er)i(uses)h(the)g(follo)o(wing)c(\014elds)j(of)g
Fs(struct)20 b(hostd)p FA(:)315 1097 y Fu(Field)178 b(Meaning)p
291 1112 988 2 v 315 1144 a Fg(hd)p 357 1144 12 2 v 14
w(hostpart)47 b Fu(TID)12 b(of)h(p)o(vmd)315 1190 y Fg(hd)p
357 1190 V 14 w(mtu)147 b Fu(Max)13 b(UDP)g(pac)o(k)o(et)h(length)g(to)
f(host)315 1236 y Fg(hd)p 357 1236 V 14 w(sad)147 b Fu(IP)12
b(address)i(and)g(UDP)f(p)q(ort)g(n)o(um)o(b)q(er)315
1281 y Fg(hd)p 357 1281 V 14 w(rxseq)107 b Fu(Exp)q(ected)14
b(next)f(pac)o(k)o(et)h(n)o(um)o(b)q(er)f(from)g(host)315
1327 y Fg(hd)p 357 1327 V 14 w(txseq)107 b Fu(Next)12
b(pac)o(k)o(et)i(n)o(um)o(b)q(er)g(to)f(send)g(to)g(host)315
1373 y Fg(hd)p 357 1373 V 14 w(txq)147 b Fu(Queue)13
b(of)g(pac)o(k)o(ets)g(to)g(send)315 1418 y Fg(hd)p 357
1418 V 14 w(opq)147 b Fu(Queue)13 b(of)g(pac)o(k)o(ets)g(sen)o(t,)g(a)o
(w)o(aiting)i(ac)o(k)315 1464 y Fg(hd)p 357 1464 V 14
w(nop)147 b Fu(Num)o(b)q(er)13 b(of)g(pac)o(k)o(ets)g(in)h
Fg(hd)p 990 1464 V 13 w(opq)315 1510 y(hd)p 357 1510
V 14 w(rxq)147 b Fu(List)13 b(of)g(out-of-order)g(receiv)o(ed)i(pac)o
(k)o(ets)315 1555 y Fg(hd)p 357 1555 V 14 w(rxm)147 b
Fu(Bu\013er)13 b(for)g(message)h(reassem)o(bly)315 1601
y Fg(hd)p 357 1601 V 14 w(rtt)147 b Fu(Estimated)14 b(smo)q(othed)g
(round-trip)h(time)p 291 1616 988 2 v 291 1735 a FA(Figure)h(7.10)f
(sho)o(ws)i(the)g(host)g(send)g(and)g(outstanding-pac)o(k)o(et)f
(queues.)27 b(P)o(ac)o(k)o(ets)17 b(w)o(aiting)e(to)249
1789 y(b)q(e)e(sen)o(t)g(to)f(a)g(host)h(are)f(queued)h(in)f(FIF)o(O)h
Fs(hd)p 974 1789 14 2 v 15 w(txq)p FA(.)k(P)o(ac)o(k)o(ets)c(are)g(app)
q(ended)g(to)f(this)g(queue)h(b)o(y)f(the)249 1842 y(routing)j(co)q
(de,)i(describ)q(ed)g(in)e(Section)h(7.6.1.)22 b(No)15
b(receiv)o(e)i(queues)g(are)f(used;)h(incoming)c(pac)o(k)o(ets)249
1896 y(are)j(passed)g(immedia)o(tely)d(through)i(to)g(other)h(send)g
(queues)h(or)e(reassem)o(bled)g(in)o(to)g(messages)g(\(or)249
1950 y(discarded\).)38 b(Incoming)18 b(messages)j(are)f(deliv)o(ered)h
(to)f(a)g(p)o(vmd)f(en)o(try)i(p)q(oin)o(t)e(as)h(describ)q(ed)i(in)249
2004 y(Section)14 b(7.2.4.)291 2058 y(The)h(proto)q(col)h(allo)o(ws)e
(m)o(ultiple)f(outstanding)i(pac)o(k)o(ets)h(to)f(impro)o(v)o(e)f(p)q
(erformance)h(o)o(v)o(er)h(high-)249 2112 y(latency)21
b(net)o(w)o(orks,)h(so)e(t)o(w)o(o)g(more)g(queues)h(are)g(required.)39
b Fs(hd)p 1310 2112 V 15 w(opq)20 b FA(holds)g(a)g(p)q(er-host)i(list)e
(of)249 2166 y(unac)o(kno)o(wledged)e(pac)o(k)o(ets,)h(and)f(global)e
Fs(opq)h FA(lists)h(all)f(unac)o(kno)o(wledged)h(pac)o(k)o(ets,)h
(ordered)g(b)o(y)249 2220 y(time)e(to)i(retransmit.)32
b Fs(hd)p 685 2220 V 15 w(rxq)19 b FA(holds)f(pac)o(k)o(ets)i(receiv)o
(ed)g(out)e(of)g(sequence)j(un)o(til)d(they)h(can)g(b)q(e)249
2274 y(accepted.)291 2328 y(The)c(di\013erence)i(in)d(time)g(b)q(et)o
(w)o(een)i(sending)f(a)g(pac)o(k)o(et)g(and)g(getting)g(the)g(ac)o(kno)
o(wledgemen)o(t)f(is)249 2382 y(used)g(to)e(estimate)g(the)h
(round-trip)g(time)e(to)i(the)g(foreign)f(host.)18 b(Eac)o(h)13
b(up)q(date)g(is)g(\014ltered)g(in)o(to)f(the)p 249 2429
638 2 v 295 2456 a Fe(1)313 2468 y Fy(Curren)o(tly)m(,)d(the)i(p)o(vmd)
f(generates)f(an)i(ac)o(kno)o(wledgeme)o(n)o(t)d(pac)o(k)o(et)i(for)h
(eac)o(h)g(data)f(pac)o(k)o(et.)p eop
%%Page: 115 134
115 133 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(115)249 850 y
 23492013 18424152 5986140 23352524 29470228 41771417 startTexFig
 249 850 a
%%BeginDocument: fig7-httxq.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 52 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Courier reencodeISO def
/Times-Roman reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 568 625 ] concat
%I
[
(databuf)
] Text
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 95.9999 120 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 514 201 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 46 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 30 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 14 ] concat
%I
177 578 201 578 Line
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 168 95.9996 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 514 201 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 46 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 30 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 14 ] concat
%I
177 578 201 578 Line
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 168 104 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg LtGray
0.764706 0.764706 0.764706 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 15 62 ] concat
%I
273 466 313 474 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
265 466 329 474 Rect
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 256 104 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg LtGray
0.764706 0.764706 0.764706 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 15 62 ] concat
%I
273 466 313 474 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
265 466 329 474 Rect
End

End %I eop

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 175 150 ] concat
%I 4
297 618
313 618
313 594
329 594
4 MLine
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 256 120 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 514 201 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 46 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 30 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 14 ] concat
%I
177 578 201 578 Line
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 312 95.9996 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 514 201 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 46 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 30 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 14 ] concat
%I
177 578 201 578 Line
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 368 95.9996 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 514 201 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 46 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 30 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 14 ] concat
%I
177 578 201 578 Line
%I 1
End

End %I eop

Begin %I Line
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 39 166 ] concat
%I
489 578 521 578 Line
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 39 166 ] concat
%I 6
409 602
393 602
393 618
561 618
561 578
545 578
6 MLine
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 71.9998 104 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg LtGray
0.764706 0.764706 0.764706 SetCBg
%I p
1 SetP
%I t
[ 1 0 0 1 15 62 ] concat
%I
273 466 313 474 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
265 466 329 474 Rect
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 95.9999 -64.0002 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 514 201 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 46 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 30 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 14 ] concat
%I
177 578 201 578 Line
%I 1
End

End %I eop

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 111 -34 ] concat
%I 4
297 618
313 618
313 594
329 594
4 MLine
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 192 -64.0002 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 514 201 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 46 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 30 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 14 ] concat
%I
177 578 201 578 Line
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 248 -88.0002 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 514 201 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 46 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 30 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 14 ] concat
%I
177 578 201 578 Line
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 304 -88.0002 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 514 201 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 46 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 30 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 14 ] concat
%I
177 578 201 578 Line
%I 1
End

End %I eop

Begin %I Line
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -25 -18 ] concat
%I
489 578 521 578 Line
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 286 ] concat
%I 6
273 298
257 298
257 314
313 314
313 298
297 298
6 MLine
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 360 -88.0002 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 514 201 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 46 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 30 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 14 ] concat
%I
177 578 201 578 Line
%I 1
End

End %I eop

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 39 286 ] concat
%I 6
345 298
329 298
329 314
553 314
553 274
537 274
6 MLine
%I 1
End

Begin %I Line
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 -18 ] concat
%I
489 578 521 578 Line
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -32 55.9997 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 514 201 594 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 46 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 30 ] concat
%I
177 578 201 578 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 14 ] concat
%I
177 578 201 578 Line
%I 1
End

End %I eop

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 78 ] concat
%I
417 418 401 418 Line
%I 1
End

Begin %I MLine
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 78 ] concat
%I 3
417 434
401 434
401 418
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 78 ] concat
%I 3
473 418
457 418
457 434
3 MLine
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 78 ] concat
%I
473 434 457 434 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 78 ] concat
%I
529 434 513 434 Line
%I 1
End

Begin %I MLine
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 78 ] concat
%I 3
529 418
513 418
513 434
3 MLine
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 62 ] concat
%I
505 546 505 570 Line
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 62 ] concat
%I 3
505 546
513 546
513 570
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 62 ] concat
%I 4
337 618
337 602
329 602
329 578
4 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 62 ] concat
%I 3
337 634
321 634
321 578
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 62 ] concat
%I 5
481 634
457 634
457 626
417 626
417 578
5 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 62 ] concat
%I 3
481 618
425 618
425 578
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 62 ] concat
%I 5
537 634
513 634
513 602
505 602
505 578
5 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 62 ] concat
%I 5
537 618
521 618
521 594
513 594
513 578
5 MLine
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 272 857 ] concat
%I
[
(struct)
(hostd)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 504 809 ] concat
%I
[
(struct)
(pkt)
] Text
End

Begin %I MLine
%I b 65535
2 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 78 ] concat
%I 3
401 418
321 418
321 530
3 MLine
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 62 ] concat
%I
321 546 321 570 Line
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 62 ] concat
%I 3
321 546
329 546
329 570
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
2 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 78 ] concat
%I 4
457 434
449 434
449 530
425 530
4 MLine
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 78 ] concat
%I
425 530 425 554 Line
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 78 ] concat
%I 3
425 530
417 530
417 554
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
2 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 31 78 ] concat
%I 3
513 434
505 434
505 530
3 MLine
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 15 62 ] concat
%I
241 714 273 714 Line
%I 1
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -48.0001 -152 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 761 ] concat
%I
[
(nref)
(tid)
(name)
(arch)
(...)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 700 ] concat
%I
[
(txq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 684 ] concat
%I
[
(opq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 668 ] concat
%I
[
(rxq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 652 ] concat
%I
[
(rxm)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 578 223 706 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 594 223 594 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 610 223 610 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 626 223 626 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 642 223 642 Line
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -40.0001 95.9996 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 761 ] concat
%I
[
(nref)
(tid)
(name)
(arch)
(...)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 700 ] concat
%I
[
(txq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 684 ] concat
%I
[
(opq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 668 ] concat
%I
[
(rxq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 264 652 ] concat
%I
[
(rxm)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 578 223 706 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 594 223 594 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 610 223 610 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 626 223 626 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I
175 642 223 642 Line
%I 1
End

End %I eop

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 81 62 ] concat
%I 4
167 466
191 466
191 450
207 450
4 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I 6
167 482
183 482
183 442
263 442
263 450
303 450
6 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I 4
231 706
247 706
247 682
279 682
4 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I 6
207 706
191 706
191 722
319 722
319 682
303 682
6 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I 4
175 730
335 730
335 714
367 714
4 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I 4
103 626
239 626
239 666
279 666
4 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 1 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 81 62 ] concat
%I 8
79 626
55 626
55 554
111 554
111 594
319 594
319 666
303 666
8 MLine
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 128 731 ] concat
%I
[
(Global)
(Retry)
(queue)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-100-75-75-*-*-*-*
Courier 10 SetF
%I t
[ 1 0 0 1 136 780 ] concat
%I
[
(opq)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 70 62 ] concat
%I
58 706 90 722 Rect
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 78 62 ] concat
%I 3
82 714
90 714
90 650
3 MLine
%I 1
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 2080 a Fo(Figure)13 b(7.10)249 2117 y Fy(Host)f(descriptors)c
(with)k(send)e(queues)p eop
%%Page: 116 135
116 134 bop 249 251 a Fu(116)1356 b(Chapter)13 b(7)249
507 y FA(estimate)g(according)h(to)g(the)g(form)o(ula)695
584 y Fn(hd)p 743 584 13 2 v 15 w(r)q(tt)806 590 y Fk(n)840
584 y FA(=)e(0)p Fn(:)p FA(75)c Ft(\003)h Fn(hd)p 1045
584 V 14 w(r)q(tt)1107 590 y Fk(n)p Fj(\000)p Fl(1)1181
584 y FA(+)h(0)p Fn(:)p FA(25)e Ft(\003)h FA(\001)p Fn(t)p
FA(.)291 660 y(When)17 b(the)h(ac)o(kno)o(wledgmen)o(t)e(for)h(a)g(pac)
o(k)o(et)h(arriv)o(es,)g(the)g(pac)o(k)o(et)g(is)f(remo)o(v)o(ed)g
(from)e Fs(hd)p 1765 660 14 2 v 16 w(opq)249 714 y FA(and)j
Fs(opq)f FA(and)g(discarded.)31 b(Eac)o(h)18 b(pac)o(k)o(et)g(has)g(a)g
(retry)g(timer)f(and)h(coun)o(t,)g(and)g(eac)o(h)g(is)g(resen)o(t)249
768 y(un)o(til)13 b(ac)o(kno)o(wledged)h(b)o(y)f(the)h(foreign)f(p)o
(vmd.)k(The)d(timer)f(starts)h(at)g(3)9 b Ft(\003)f Fn(hd)p
1475 768 13 2 v 15 w(r)q(tt)p FA(,)13 b(and)g(doubles)h(for)249
822 y(eac)o(h)i(retry)g(up)f(to)g(18)g(seconds.)24 b
Fs(hd)p 836 822 14 2 v 15 w(rtt)14 b FA(is)h(limited)e(to)i(nine)h
(seconds,)g(and)f(bac)o(k)o(o\013)g(is)g(b)q(ounded)249
876 y(in)g(order)i(to)e(allo)o(w)f(at)i(least)f(10)g(pac)o(k)o(ets)i
(to)e(b)q(e)i(sen)o(t)f(to)f(a)h(host)g(b)q(efore)g(giving)e(up.)23
b(After)17 b(three)249 930 y(min)o(utes)c(of)g(resending)i(with)f(no)f
(ac)o(kno)o(wledgmen)o(t,)f(a)i(pac)o(k)o(et)g(expires.)291
984 y(If)f(a)h(pac)o(k)o(et)h(expires)g(as)f(a)g(result)h(of)f
(timeout,)e(the)j(foreign)f(p)o(vmd)e(is)j(assumed)e(to)h(b)q(e)h(do)o
(wn)f(or)249 1038 y(unreac)o(hable,)g(and)g(the)g(lo)q(cal)f(p)o(vmd)g
(giv)o(es)g(up)h(on)g(it,)f(calling)g Fs(hostfailentry\(\))249
1121 y Fr(7.5.3)48 b(Pvmd-T)l(ask)15 b(and)h(T)l(ask-T)l(ask)249
1204 y FA(A)e(task)h(talks)e(to)h(its)h(p)o(vmd)d(and)i(other)h(tasks)g
(through)f(TCP)g(so)q(c)o(k)o(ets.)20 b(TCP)14 b(is)h(used)g(b)q
(ecause)g(it)249 1258 y(deliv)o(ers)g(data)f(reliably)m(.)k(UDP)d(can)g
(lose)f(pac)o(k)o(ets)i(ev)o(en)f(within)f(a)g(host.)20
b(Unreliable)14 b(deliv)o(ery)h(re-)249 1312 y(quires)d(retry)h(\(with)
e(timers\))g(at)g(b)q(oth)h(ends:)18 b(since)12 b(tasks)g(can't)g(b)q
(e)g(in)o(terrupted)h(while)e(computing)249 1366 y(to)j(p)q(erform)f
(I/O,)g(w)o(e)h(can't)g(use)h(UDP)m(.)291 1420 y(Implemen)o(ting)9
b(a)j(pac)o(k)o(et)h(service)h(o)o(v)o(er)f(TCP)f(is)h(simple)e(b)q
(ecause)j(of)e(its)h(reliable)f(deliv)o(ery)m(.)17 b(The)249
1474 y(pac)o(k)o(et)d(header)h(is)f(sho)o(wn)g(in)g(Figure)g(7.11.)j
(No)d(sequence)i(n)o(um)o(b)q(ers)e(are)g(needed,)h(and)f(only)f
(\015ags)249 1527 y FB(SOM)h FA(and)g FB(EOM)g FA(\(these)h(ha)o(v)o(e)
f(the)g(same)f(meaning)f(as)i(in)g(Section)g(7.5.2\).)i(Since)f(TCP)f
(pro)o(vides)249 1581 y(no)e(record)i(marks)d(to)i(distinguish)f(bac)o
(k-to-bac)o(k)g(pac)o(k)o(ets)h(from)e(one)i(another,)f(the)h(length)g
(is)f(sen)o(t)249 1635 y(in)17 b(the)h(header.)30 b(Eac)o(h)17
b(side)h(main)o(tains)d(a)i(FIF)o(O)h(of)f(pac)o(k)o(ets)h(to)f(send,)i
(and)e(switc)o(hes)i(b)q(et)o(w)o(een)249 1689 y(reading)14
b(the)g(so)q(c)o(k)o(et)h(when)f(data)g(is)g(a)o(v)n(ailable)d(and)j
(writing)f(when)i(there)g(is)f(space.)249 1742 y
 25481245 6441352 6578176 27299430 32035717 33746042 startTexFig
 249
1742 a
%%BeginDocument: fig7-tdphdr.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Times-Roman reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 114 54 ] concat
%I
38 602 550 626 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 114 30 ] concat
%I
38 602 550 626 Rect
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 114 6 ] concat
%I
38 602 550 626 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 144 672 ] concat
%I
[
(0)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 144 648 ] concat
%I
[
(4)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 144 624 ] concat
%I
[
(8)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 138 592 ] concat
%I
[
(12)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 160 696 ] concat
%I
[
(Byte 0)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 288 696 ] concat
%I
[
(1)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 416 696 ] concat
%I
[
(2)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 544 696 ] concat
%I
[
(3)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 367.5 672 ] concat
%I
[
(Destination TID)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 380 648 ] concat
%I
[
(Source TID)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 66 94 ] concat
%I
86 474 598 514 Rect
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 66 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -46 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -30 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -14 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 2 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 18 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 34 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 50 62 ] concat
%I
214 546 214 506 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 6.12323e-17 1 -1 6.12323e-17 267 577.5 ] concat
%I
[
(SOM)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 6.12323e-17 1 -1 6.12323e-17 251 577 ] concat
%I
[
(EOM)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 454.5 594 ] concat
%I
[
(unused)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 372.5 624 ] concat
%I
[
(Packet Length)
] Text
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 2212 a Fo(Figure)f(7.11)249 2249 y Fy(Pvmd-task)c(pac)o(k)o(et)h
(header)291 2346 y FA(The)i(main)d(dra)o(wbac)o(k)j(to)f(TCP)h(\(as)g
(opp)q(osed)g(to)f(UDP\))h(is)g(that)f(more)g(system)g(calls)h(are)g
(needed)249 2400 y(to)17 b(transfer)h(eac)o(h)f(pac)o(k)o(et.)28
b(With)16 b(UDP)m(,)g(a)g(single)h Fs(sendto\(\))e FA(and)i(single)f
Fs(recvfrom\(\))f FA(are)j(re-)249 2454 y(quired.)h(With)14
b(TCP)m(,)f(a)h(pac)o(k)o(et)h(can)f(b)q(e)h(sen)o(t)g(b)o(y)f(a)g
(single)g Fs(write\(\))e FA(call,)h(but)i(m)o(ust)e(b)q(e)i(receiv)o
(ed)249 2508 y(b)o(y)f(t)o(w)o(o)f Fs(read\(\))g FA(calls,)g(the)h
(\014rst)h(to)f(get)g(the)g(header)h(and)f(the)g(second)h(to)f(get)g
(the)h(data.)p eop
%%Page: 117 136
117 135 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(117)291 507 y FA(When)17 b(tra\016c)h(on)f(the)i(connection)f(is)f
(hea)o(vy)m(,)h(a)f(simple)f(optimization)f(reduces)20
b(the)e(a)o(v)o(erage)249 561 y(n)o(um)o(b)q(er)e(of)f(reads)j(bac)o(k)
e(to)g(ab)q(out)h(one)f(p)q(er)h(pac)o(k)o(et.)26 b(If,)16
b(when)h(reading)g(the)g(pac)o(k)o(et)f(b)q(o)q(dy)m(,)g(the)249
615 y(requested)k(length)d(is)h(increased)g(b)o(y)g(the)g(size)g(of)f
(a)g(pac)o(k)o(et)h(header,)h(the)f(read)g(ma)o(y)e(succeed)j(in)249
669 y(getting)12 b(b)q(oth)g(the)h(pac)o(k)o(et)f(b)q(o)q(dy)g(and)g
(header)h(of)e(the)i(next)g(pac)o(k)o(et)f(at)g(once.)18
b(W)m(e)12 b(ha)o(v)o(e)f(the)i(header)249 723 y(for)h(the)g(next)g
(pac)o(k)o(et)h(for)e(free)i(and)f(can)g(rep)q(eat)h(this)f(pro)q
(cess.)1258 708 y Fl(2)291 777 y FA(V)m(ersion)c(3.3)g(in)o(tro)q
(duced)h(the)h(use)f(of)f(Unix-domain)e(stream)i(so)q(c)o(k)o(ets)i(as)
f(an)f(alternativ)o(e)g(to)h(TCP)249 831 y(for)16 b(lo)q(cal)f(comm)o
(unicatio)o(n,)f(to)h(impro)o(v)o(e)g(latency)h(and)g(transfer)h(rate)f
(\(t)o(ypically)f(b)o(y)h(a)g(factor)g(of)249 885 y(t)o(w)o(o\).)i(If)
13 b(enabled)h(\(the)g(system)g(is)f(built)g(without)h(the)g
Fs(NOUNIXDOM)e FA(option\),)g(stream)i(so)q(c)o(k)o(ets)h(are)249
939 y(used)g(b)q(et)o(w)o(een)g(the)g(p)o(vmd)d(and)i(tasks)g(as)g(w)o
(ell)f(as)h(b)q(et)o(w)o(een)h(tasks)g(on)e(the)i(same)e(host.)249
1059 y FD(7.6)52 b(Message)17 b(Routing)249 1167 y Fr(7.6.1)48
b(Pvmd)249 1250 y(P)o(ac)o(k)o(et)10 b(Bu\013ers)40 b
FA(P)o(ac)o(k)o(et)11 b(descriptors)g(\()p Fs(struct)21
b(pkt)p FA(\))10 b(trac)o(k)g(message)g(fragmen)o(ts)e(through)i(the)
249 1304 y(p)o(vmd.)16 b(Fields)d Fs(pk)p 548 1304 14
2 v 15 w(buf)p FA(,)f Fs(pk)p 697 1304 V 16 w(max)p FA(,)g
Fs(pk)p 847 1304 V 15 w(dat)g FA(and)h Fs(pk)p 1064 1304
V 15 w(len)f FA(are)i(used)g(in)e(the)h(same)g(w)o(a)o(ys)f(as)h
(similarly)249 1358 y(named)j(\014elds)i(of)e(a)h(frag,)g(describ)q(ed)
i(in)e(Section)g(7.2.1.)26 b(Besides)19 b(data,)e(pkts)h(con)o(tain)e
(state)i(to)249 1412 y(op)q(erate)d(the)f(p)o(vmd-p)o(vmd)d(proto)q
(col.)249 1495 y Fr(Message)g(Routing)39 b FA(Messages)12
b(are)e(sen)o(t)h(b)o(y)e(calling)g Fs(sendmessage\(\))p
FA(,)e(whic)o(h)j(routes)h(b)o(y)f(desti-)249 1549 y(nation)f(address.)
18 b(Messages)12 b(for)d(other)i(p)o(vmds)d(or)i(tasks)h(are)f(link)o
(ed)f(to)h(pac)o(k)o(et)g(descriptors)i(and)d(at-)249
1603 y(tac)o(hed)j(to)g(a)f(send)i(queue.)18 b(If)11
b(the)h(p)o(vmd)e(addresses)k(a)d(message)g(to)h(itself,)f
Fs(sendmessage\(\))e FA(passes)249 1657 y(the)18 b(whole)f(message)g
(descriptor)i(to)e Fs(netentry\(\))p FA(,)f(a)o(v)o(oiding)f(the)j(pac)
o(k)o(et)g(la)o(y)o(er)f(en)o(tirely)m(.)28 b(This)249
1711 y(lo)q(opbac)o(k)13 b(in)o(terface)h(is)g(used)g(often)g(b)o(y)f
(the)h(p)o(vmd.)j(During)12 b(a)i(complex)e(op)q(eration,)h
Fs(netentry\(\))249 1765 y FA(ma)o(y)f(b)q(e)j(reen)o(tered)h(sev)o
(eral)e(times)f(as)h(the)h(p)o(vmd)d(sends)j(itself)f(messages.)291
1819 y(Messages)e(to)f(the)g(p)o(vmd)e(are)j(reassem)o(bled)f(from)e
(pac)o(k)o(ets)i(in)g(message)f(reassem)o(bly)g(bu\013ers,)j(one)249
1873 y(for)j(eac)o(h)i(lo)q(cal)d(task)i(and)g(remote)f(p)o(vmd.)25
b(Completed)16 b(messages)g(are)i(passed)f(to)g(en)o(try)g(p)q(oin)o
(ts)249 1927 y(\(Section)d(7.2.4\).)249 2010 y Fr(P)o(ac)o(k)o(et)g
(Routing)39 b FA(A)14 b(graph)f(of)h(pac)o(k)o(et)g(and)f(message)g
(routing)g(inside)h(the)g(p)o(vmd)e(is)i(sho)o(wn)f(in)249
2064 y(Figure)h(7.12.)19 b(P)o(ac)o(k)o(ets)c(are)f(receiv)o(ed)i(from)
d(the)i(net)o(w)o(ork)f(b)o(y)g Fs(netinput\(\))e FA(directly)j(in)o
(to)f(bu\013ers)249 2118 y(long)d(enough)h(to)f(hold)g(the)i(largest)f
(pac)o(k)o(et)g(the)g(p)o(vmd)f(will)f(receiv)o(e)j(\(its)f(MTU)g(in)f
(the)h(host)g(table\).)249 2172 y(P)o(ac)o(k)o(ets)k(from)d(lo)q(cal)h
(tasks)i(are)g(read)f(b)o(y)g Fs(loclinput\(\))p FA(,)d(whic)o(h)j
(creates)i(a)e(bu\013er)h(large)f(enough)249 2226 y(for)e(eac)o(h)g
(pac)o(k)o(et)h(after)f(it)f(reads)i(the)g(header.)19
b(T)m(o)12 b(route)h(a)g(pac)o(k)o(et,)g(the)h(p)o(vmd)d(c)o(hains)i
(it)g(on)o(to)f(the)249 2280 y(queue)18 b(for)e(its)g(destination.)27
b(If)16 b(a)g(pac)o(k)o(et)h(is)g(m)o(ulticast)e(\(see)j(Section)f
(7.6.4\),)e(the)i(descriptor)h(is)249 2334 y(replicated,)f(coun)o(ting)
e(extra)h(references)j(on)d(the)g(underlying)g(databuf.)23
b(One)17 b(cop)o(y)f(is)f(placed)h(in)249 2388 y(eac)o(h)e(send)h
(queue.)k(After)c(the)f(last)g(cop)o(y)g(of)f(the)h(pac)o(k)o(et)h(is)e
(sen)o(t,)i(the)f(databuf)g(is)f(freed.)p 249 2435 638
2 v 295 2462 a Fe(2)313 2473 y Fy(This)20 b(w)o(as)g(once)f(implemen)o
(ted)o(,)h(but)f(w)o(as)i(remo)o(v)o(ed)d(while)i(the)f(co)q(de)g(w)o
(as)i(up)q(dated)c(and)j(hasn't)f(b)q(een)249 2507 y(rein)o(tro)q
(duced)o(.)p eop
%%Page: 118 137
118 136 bop 249 251 a Fu(118)1356 b(Chapter)13 b(7)249
466 y
 24581339 13877285 7630684 25720668 32233062 39600619 startTexFig
 249 466 a
%%BeginDocument: fig7-pktflo.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 53 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Courier reencodeISO def
/Courier-Bold reencodeISO def
/Times-Roman reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 160 627 ] concat
%I
[
(work\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 288 747 ] concat
%I
[
(netinput\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 288 627 ] concat
%I
[
(loclinput\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 448 627 ] concat
%I
[
(loclinpkt\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 592 779 ] concat
%I
[
(netentry\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 592 627 ] concat
%I
[
(loclentry\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 592 707 ] concat
%I
[
(schentry\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 160 819 ] concat
%I
[
(sendmessage\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 288 667 ] concat
%I
[
(mesg_to_task\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 448 819 ] concat
%I
[
(pkt_to_host\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 288 587 ] concat
%I
[
(netoutput\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 288 547 ] concat
%I
[
(locloutput\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-bold-r-normal--*-120-75-75-*-*-*-*
Courier-Bold 12 SetF
%I t
[ 1 0 0 1 592 667 ] concat
%I
[
(t_txq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-bold-r-normal--*-120-75-75-*-*-*-*
Courier-Bold 12 SetF
%I t
[ 1 0 0 1 592 819 ] concat
%I
[
(hd_txq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-bold-r-normal--*-120-75-75-*-*-*-*
Courier-Bold 12 SetF
%I t
[ 1 0 0 1 160 587 ] concat
%I
[
(hd_txq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-bold-r-normal--*-120-75-75-*-*-*-*
Courier-Bold 12 SetF
%I t
[ 1 0 0 1 160 547 ] concat
%I
[
(t_txq)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 592 555 ] concat
%I
[
(Function call)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 592 587 ] concat
%I
[
(Packet)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 592 571 ] concat
%I
[
(Message)
] Text
End

Begin %I Line
%I b 65520
1 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 -20.0002 -99.0002 ] concat
%I
524 683 596 683 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg DkGray
0.501961 0.501961 0.501961 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 -20.0002 -115 ] concat
%I
524 683 596 683 Line
%I 1
End

Begin %I Line
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 -20.0002 -131 ] concat
%I
524 683 596 683 Line
%I 1
End

Begin %I Rect
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 0.994382 0 0 0.878378 -144.427 41.473 ] concat
%I
636 563 812 635 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 448 667 ] concat
%I
[
(pkt_to_task\(\))
] Text
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg DkGray
0.501961 0.501961 0.501961 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I
258 714 578 714 Line
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg DkGray
0.501961 0.501961 0.501961 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I 3
554 682
554 642
578 642
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg DkGray
0.501961 0.501961 0.501961 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I 3
554 554
554 634
578 634
3 MLine
%I 1
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg DkGray
0.501961 0.501961 0.501961 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I 4
250 746
258 746
258 602
274 602
4 MLine
%I 1
End

Begin %I Line
%I b 65520
1 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I
538 754 578 754 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-courier-medium-r-normal--*-120-75-75-*-*-*-*
Courier 12 SetF
%I t
[ 1 0 0 1 448 747 ] concat
%I
[
(netinpkt\(\))
] Text
End

Begin %I MLine
%I b 65535
1 0 1 [] 0 SetB
%I cfg DkGray
0.501961 0.501961 0.501961 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I 4
514 682
554 682
554 706
578 706
4 MLine
%I 1
End

Begin %I Line
%I b 65520
1 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I
538 602 578 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg DkGray
0.501961 0.501961 0.501961 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I
522 554 578 554 Line
%I 1
End

Begin %I Line
%I b 65520
1 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I
386 602 434 602 Line
%I 1
End

Begin %I Line
%I b 65520
1 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I
354 682 434 682 Line
%I 1
End

Begin %I Line
%I b 65520
1 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I
250 754 434 754 Line
%I 1
End

Begin %I Line
%I b 65520
1 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I
362 562 434 562 Line
%I 1
End

Begin %I Line
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I
202 562 274 562 Line
%I 1
End

Begin %I Line
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I
202 562 274 674 Line
%I 1
End

Begin %I Line
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I
202 562 274 530 Line
%I 1
End

Begin %I Line
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 6 62 ] concat
%I
202 562 274 490 Line
%I 1
End

Begin %I Line
%I b 65520
1 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 50 62 ] concat
%I
158 522 230 522 Line
%I 1
End

Begin %I Line
%I b 65520
1 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 50 62 ] concat
%I
150 482 230 482 Line
%I 1
End

Begin %I MLine
%I b 65520
1 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 50 62 ] concat
%I 6
470 674
486 674
486 658
366 658
366 610
390 610
6 MLine
%I 1
End

Begin %I MLine
%I b 65520
1 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 50 62 ] concat
%I 6
478 562
494 562
494 578
358 578
358 594
390 594
6 MLine
%I 1
End

Begin %I MLine
%I b 65520
1 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 50 62 ] concat
%I 3
358 594
358 674
390 674
3 MLine
%I 1
End

Begin %I MLine
%I b 65520
1 0 1 [12 4] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 50 62 ] concat
%I 3
358 674
358 746
390 746
3 MLine
%I 1
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 1407 a Fo(Figure)g(7.12)249 1444 y Fy(P)o(ac)o(k)o(et)d(and)h
(message)e(routing)h(in)h(p)o(vmd)249 1567 y Fr(Refragmen)o(tatio)o(n)
38 b FA(Messages)23 b(are)e(generally)g(built)f(with)h(fragmen)o(t)e
(length)i(equal)g(to)f(the)249 1621 y(MTU)d(of)e(the)j(host's)e(p)o
(vmd,)f(allo)o(wing)f(them)i(to)g(b)q(e)h(forw)o(arded)g(without)f
(refragmen)o(tation.)24 b(In)249 1675 y(some)14 b(cases,)h(the)g(p)o
(vmd)e(can)i(receiv)o(e)h(a)e(pac)o(k)o(et)h(\(from)e(a)h(task\))h(to)q
(o)f(long)f(to)i(b)q(e)g(sen)o(t)g(to)g(another)249 1729
y(p)o(vmd.)j(The)d(p)o(vmd)d(refragmen)o(ts)i(the)h(pac)o(k)o(et)g(b)o
(y)f(replicating)g(its)g(descriptor)i(as)e(man)o(y)f(times)g(as)249
1783 y(necessary)m(.)24 b(A)15 b(single)g(databuf)g(is)g(shared)h(b)q
(et)o(w)o(een)h(the)f(descriptors.)24 b(The)15 b Fs(pk)p
1543 1783 14 2 v 16 w(dat)f FA(and)h Fs(pk)p 1765 1783
V 16 w(len)249 1837 y FA(\014elds)g(of)e(the)i(descriptors)g(co)o(v)o
(er)g(successiv)o(e)h(c)o(h)o(unks)e(of)g(the)g(original)f(pac)o(k)o
(et,)h(eac)o(h)g(c)o(h)o(unk)g(small)249 1891 y(enough)i(to)f(send.)24
b(The)16 b Fs(SOM)e FA(and)i Fs(EOM)e FA(\015ags)i(are)g(adjusted)g
(\(if)e(the)j(original)c(pac)o(k)o(et)j(is)f(the)h(start)249
1945 y(or)f(end)g(of)g(a)f(message\).)21 b(A)o(t)15 b(send)h(time,)d
Fs(netoutput\(\))g FA(sa)o(v)o(es)i(the)h(data)e(under)i(where)g(it)e
(writes)249 1999 y(the)h(pac)o(k)o(et)f(header,)g(sends)h(the)g(pac)o
(k)o(et,)f(and)f(then)i(restores)h(the)e(data.)249 2082
y Fr(7.6.2)48 b(Pvmd)15 b(and)g(F)l(oreign)f(T)l(asks)249
2165 y FA(Pvmds)f(usually)g(don't)g(comm)o(unicate)f(with)h(foreign)h
(tasks)g(\(those)h(on)e(other)i(hosts\).)j(The)d(p)o(vmd)249
2219 y(has)g(message)f(reassem)o(bly)h(bu\013ers)h(for)e(eac)o(h)i
(foreign)e(p)o(vmd)f(and)i(eac)o(h)g(task)g(it)f(manages.)19
b(What)249 2273 y(it)12 b(do)q(esn't)h(w)o(an)o(t)g(is)f(to)g(ha)o(v)o
(e)h(reassem)o(bly)f(bu\013ers)i(for)e(foreign)g(tasks.)18
b(T)m(o)12 b(free)i(up)e(the)h(reassem)o(bly)249 2327
y(bu\013er)j(for)f(a)g(foreign)g(task)g(\(if)g(the)h(task)f(dies\),)h
(the)g(p)o(vmd)d(w)o(ould)i(ha)o(v)o(e)g(to)g(request)i(noti\014cation)
249 2381 y(from)12 b(the)j(task's)f(p)o(vmd,)d(causing)j(extra)h(comm)o
(unicati)o(on.)291 2435 y(F)m(or)k(the)g(sak)o(e)h(of)f(simplicit)o(y)e
(the)j(p)o(vmd)d(lo)q(cal)i(to)g(the)h(sending)f(task)h(serv)o(es)h(as)
e(a)g(message)249 2489 y(rep)q(eater.)h(The)14 b(message)e(is)i
(reassem)o(bled)f(b)o(y)g(the)h(task's)f(lo)q(cal)g(p)o(vmd)e(as)j(if)e
(it)h(w)o(ere)h(the)g(receiv)o(er,)p eop
%%Page: 119 138
119 137 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(119)249 507 y FA(then)11 b(forw)o(arded)g(all)e(at)i(once)g(to)f(the)
h(destination)g(p)o(vmd,)e(whic)o(h)h(reassem)o(bles)h(the)g(message)g
(again.)249 561 y(The)j(source)i(address)f(is)e(preserv)o(ed,)j(so)e
(the)g(sender)i(can)e(b)q(e)h(iden)o(ti\014ed.)291 615
y(Libp)o(vm)10 b(main)o(tains)h(dynamic)g(reassem)o(bly)h(bu\013ers,)i
(so)f(messages)g(from)e(p)o(vmd)g(to)i(task)g(do)f(not)249
669 y(cause)j(a)f(problem.)249 752 y Fr(7.6.3)48 b(Libp)o(vm)249
835 y FA(F)m(our)16 b(functions)h(handle)g(all)e(pac)o(k)o(et)i
(tra\016c)g(in)o(to)f(and)g(out)h(of)f(libp)o(vm.)23
b Fs(mroute\(\))15 b FA(is)i(called)f(b)o(y)249 889 y(higher-lev)o(el)
11 b(functions)g(suc)o(h)h(as)g Fs(pvm)p 853 889 14 2
v 15 w(send\(\))e FA(and)h Fs(pvm)p 1154 889 V 15 w(recv\(\))f
FA(to)h(cop)o(y)g(messages)g(in)o(to)g(and)g(out)249
943 y(of)16 b(the)h(task.)26 b(It)17 b(establishes)h(an)o(y)e
(necessary)i(routes)g(b)q(efore)f(calling)e Fs(mxfer\(\))p
FA(.)25 b Fs(mxfer\(\))15 b FA(p)q(olls)249 997 y(for)i(messages,)h
(optionally)e(blo)q(c)o(king)g(un)o(til)h(one)h(is)f(receiv)o(ed)i(or)e
(un)o(til)g(a)g(sp)q(eci\014ed)i(timeout.)28 b(It)249
1051 y(calls)12 b Fs(mxinput\(\))e FA(to)i(cop)o(y)g(fragmen)o(ts)f(in)
o(to)g(the)i(task)f(and)g(reassem)o(ble)g(messages.)17
b(In)12 b(the)h(generic)249 1105 y(v)o(ersion)f(of)f(PVM,)g
Fs(mxfer\(\))g FA(uses)h Fs(select\(\))e FA(to)i(p)q(oll)e(all)h
(routes)h(\(so)q(c)o(k)o(ets\))i(in)d(order)h(to)g(\014nd)f(those)249
1159 y(ready)17 b(for)f(input)g(or)g(output.)26 b Fs(pvmmctl\(\))14
b FA(is)j(called)f(b)o(y)g Fs(mxinput\(\))e FA(when)j(a)f(con)o(trol)g
(message)249 1213 y(\(Section)e(7.2.5\))f(is)h(receiv)o(ed.)249
1296 y Fr(Direct)e(Message)h(Routing)39 b FA(Direct)12
b(routing)f(allo)o(ws)g(one)h(task)g(to)f(send)i(messages)f(to)g
(another)249 1350 y(through)20 b(a)g(TCP)g(link,)g(a)o(v)o(oiding)e
(the)i(o)o(v)o(erhead)h(of)e(forw)o(arding)g(through)h(the)g(p)o(vmds.)
35 b(It)20 b(is)249 1404 y(implemen)o(ted)e(en)o(tirely)j(in)f(libp)o
(vm,)g(using)g(the)i(notify)d(and)i(con)o(trol)f(message)g(facilities.)
38 b(By)249 1458 y(default,)12 b(a)h(task)f(routes)i(messages)f(to)f
(its)h(p)o(vmd,)e(whic)o(h)h(forw)o(ards)h(them)f(on.)17
b(If)12 b(direct)i(routing)e(is)249 1512 y(enabled)h(\()p
Fs(PvmRouteDirect)p FA(\))c(when)k(a)f(message)g(\(addressed)j(to)d(a)g
(task\))g(is)h(passed)g(to)f Fs(mroute\(\))p FA(,)249
1566 y(it)e(attempts)g(to)g(create)i(a)e(direct)h(route)g(if)f(one)g
(do)q(esn't)h(already)f(exist.)18 b(The)10 b(route)h(ma)o(y)e(b)q(e)i
(gran)o(ted)249 1620 y(or)h(refused)i(b)o(y)e(the)i(destination)e
(task,)g(or)h(fail)e(\(if)g(the)i(task)g(do)q(esn't)g(exist\).)18
b(The)13 b(message)f(is)g(then)249 1674 y(passed)j(to)f
Fs(mxfer\(\))p FA(.)291 1728 y(Libp)o(vm)e(main)o(tains)h(a)h(proto)q
(col)h(con)o(trol)f(blo)q(c)o(k)h(\()p Fs(struct)20 b(ttpcb)p
FA(\))14 b(for)h(eac)o(h)g(activ)o(e)g(or)f(denied)249
1782 y(connection,)j(in)e(list)h Fs(ttlist)p FA(.)23
b(The)16 b(state)h(diagram)c(for)j(a)g(ttp)q(cb)h(is)e(sho)o(wn)h(in)g
(Figure)g(7.13.)23 b(T)m(o)249 1836 y(request)12 b(a)d(connection,)i
Fs(mroute\(\))d FA(mak)o(es)h(a)h(ttp)q(cb)g(and)g(so)q(c)o(k)o(et,)h
(then)g(sends)g(a)e Fs(TC)p 1564 1836 V 16 w(CONREQ)f
FA(con)o(trol)249 1890 y(message)k(to)g(the)h(destination)e(via)h(the)g
(default)g(route.)18 b(A)o(t)12 b(the)h(same)e(time,)g(it)h(sends)h(a)f
Fs(TM)p 1700 1890 V 15 w(NOTIFY)249 1944 y FA(message)i(to)h(the)g(p)o
(vmd,)e(to)h(b)q(e)h(noti\014ed)g(if)f(the)h(destination)f(task)h
(exits,)g(with)f(closure)h(\(message)249 1998 y(tag\))20
b Fs(TC)p 390 1998 V 15 w(TASKEXIT)p FA(.)d(Then)k(it)e(puts)h(the)h
(ttp)q(cb)f(in)g(state)g Fs(TTCONWAIT)p FA(,)d(and)j(calls)f
Fs(mxfer\(\))f FA(in)249 2051 y(blo)q(c)o(king)13 b(mo)q(de)g(rep)q
(eatedly)i(un)o(til)e(the)h(state)h(c)o(hanges.)291 2105
y(When)g(the)g(destination)g(task)h(en)o(ters)g Fs(mxfer\(\))e
FA(\(for)h(example,)e(to)i(receiv)o(e)h(a)f(message\),)g(it)g(re-)249
2159 y(ceiv)o(es)e(the)g Fs(TC)p 482 2159 V 16 w(CONREQ)e
FA(message.)17 b(The)c(request)h(is)e(gran)o(ted)h(if)e(its)i(routing)f
(p)q(olicy)f(\()p Fs(pvmrouteopt)249 2213 y(!=)21 b(PvmDontRoute)p
FA(\))11 b(and)i(implemen)o(tati)o(on)d(allo)o(w)h(a)i(direct)h
(connection,)f(it)g(has)g(resources)i(a)o(v)n(ail-)249
2267 y(able,)h(and)g(the)h(proto)q(col)e(v)o(ersion)i(\()p
Fs(TDPROTOCOL)p FA(\))d(in)i(the)g(request)i(matc)o(hes)e(its)g(o)o
(wn.)24 b(It)16 b(mak)o(es)249 2321 y(a)j(ttp)q(cb)g(with)g(state)g
Fs(TTGRNWAIT)p FA(,)e(creates)j(and)f(listens)g(on)f(a)h(so)q(c)o(k)o
(et,)h(and)f(then)g(replies)g(with)249 2375 y(a)f Fs(TC)p
335 2375 V 16 w(CONACK)f FA(message.)31 b(If)19 b(the)g(destination)f
(denies)i(the)f(connection,)h(it)e(nac)o(ks,)h(also)f(with)g(a)249
2429 y Fs(TC)p 296 2429 V 15 w(CONACK)e FA(message.)27
b(The)17 b(originator)f(receiv)o(es)i(the)g Fs(TC)p 1201
2429 V 15 w(CONACK)e FA(message,)h(and)f(either)i(op)q(ens)249
2483 y(the)e(connection)f(\()p Fs(state)21 b(=)h(TTOPEN)p
FA(\))13 b(or)i(marks)f(the)h(route)h(denied)f(\()p Fs(state)21
b(=)h(TTDENY)p FA(\).)13 b(Then,)p eop
%%Page: 120 139
120 138 bop 249 251 a Fu(120)1356 b(Chapter)13 b(7)249
507 y Fs(mroute\(\))i FA(passes)i(the)g(original)e(message)h(to)g
Fs(mxfer\(\))p FA(,)f(whic)o(h)i(sends)g(it.)25 b(Denied)17
b(connections)249 561 y(are)d(cac)o(hed)h(in)f(order)g(to)g(prev)o(en)o
(t)h(rep)q(eated)h(negotiation.)291 615 y(If)k(the)i(destination)e(do)q
(esn't)i(exist,)g(the)g Fs(TC)p 1035 615 14 2 v 15 w(CONACK)e
FA(message)h(nev)o(er)h(arriv)o(es)f(b)q(ecause)h(the)249
669 y Fs(TC)p 296 669 V 15 w(CONREQ)16 b FA(message)h(is)f(silen)o(tly)
h(dropp)q(ed.)27 b(Ho)o(w)o(ev)o(er,)18 b(the)g Fs(TC)p
1302 669 V 15 w(TASKEXIT)d FA(message)i(generated)249
723 y(b)o(y)d(the)g(notify)f(system)h(arriv)o(es)g(in)f(its)h(place,)g
(and)g(the)g(ttp)q(cb)h(state)g(is)e(set)i(to)f Fs(TTDENY)p
FA(.)291 777 y(This)20 b(connect)i(sc)o(heme)e(also)g(w)o(orks)g(if)g
(b)q(oth)g(ends)i(try)e(to)g(establish)h(a)f(connection)h(at)f(the)249
831 y(same)14 b(time.)k(They)d(b)q(oth)g(en)o(ter)h Fs(TTCONWAIT)p
FA(,)c(and)i(when)h(they)g(receiv)o(e)h(eac)o(h)f(other's)g
Fs(TC)p 1700 831 V 15 w(CONREQ)249 885 y FA(messages,)f(they)g(go)f
(directly)h(to)g(the)h Fs(TTOPEN)d FA(state.)249 943
y
 22639444 16103345 9012101 25918013 31641026 42034544 startTexFig
 249 943 a
%%BeginDocument: fig7-ttpcb-state.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Times-Roman reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Pict
%I b 65535
1 0 0 [] 0 SetB
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 136.954 151 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 425 490 ] concat
%I
[
(OPEN)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 425 476 ] concat
%I
[
(link is up)
] Text
End

Begin %I Rect
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 32 61 ] concat
%I
384 399 443 433 Rect
End

End %I eop

Begin %I Pict
%I b 65535
1 0 0 [] 0 SetB
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 47.7812 311 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 353 257 ] concat
%I
[
(waiting to free)
(PCB structure)
] Text
End

Begin %I Rect
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 32 61 ] concat
%I
311 167 391 215 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 353 271 ] concat
%I
[
(DEAD)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 47 1 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 194.016 785 ] concat
%I
[
(CONWAIT)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 0.690963 0 0 0.99935 84.9572 92.4175 ] concat
%I
152 643 272 697 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 194.016 773 ] concat
%I
[
(have requested)
(expect ack or)
(crossed request)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -19 1.06275 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 548 784.035 ] concat
%I
[
(GRNWAIT)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 0.946028 0 0 0.981162 155.875 107.976 ] concat
%I
407 644 535 694 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 548 772.035 ] concat
%I
[
(have granted)
(must accept\(\) when other)
(connects)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 34.3058 12.4783 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 203.995 629.435 ] concat
%I
[
(DENY)
] Text
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 0.804835 0 0 0.956521 153.189 217.391 ] concat
%I
58 390 168 434 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 203.995 617.435 ] concat
%I
[
(connection denied;)
(do not try again)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 15 -20.0001 ] concat

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 0.71875 0 0 0.868421 182.187 164.21 ] concat
%I
278 794 372 830 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 391 873 ] concat
%I
[
(\(no PCB\))
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -7.99997 -14.0001 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 276 868 ] concat
%I
[
(make ttpcb, socket)
(send CONREQ)
(post TaskExit notify)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 276 884 ] concat
%I
[
(Want connection)
] Text
End

Begin %I Line
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 71.0001 62 ] concat
%I
205 810 291 810 Line
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 3 -31.0001 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 503 895 ] concat
%I
[
(Receive CONREQ)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 503 881 ] concat
%I
[
(make ttpcb, socket)
(send CONGRN)
(listen\(\))
] Text
End

Begin %I Line
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 66.0002 62 ] concat
%I
437 823 519 823 Line
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -19 -2 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 608 714 ] concat
%I
[
(Socket connects)
] Text
End

Begin %I Line
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 69.0003 62 ] concat
%I
539 642 605 642 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 608 700 ] concat
%I
[
(accept\(\))
] Text
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 364 675 ] concat
%I
[
(Receive)
(TASKEXIT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 300 582 ] concat
%I
[
(Receive)
(TASKEXIT)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 519 579 ] concat
%I
[
(Read EOF on sock,)
(bad write)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 189 703 ] concat
%I
[
(Receive)
(CONACK\(NACK\))
] Text
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 51 -2 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 386 789 ] concat
%I
[
(mroute\(\))
(cleans up)
] Text
End

Begin %I Line
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 73.0002 62 ] concat
%I
313 731 357 731 Line
%I 1
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 1 0 0 1 -4 -13 ] concat

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 465 702 ] concat
%I
[
(connect\(\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-100-75-75-*-*-*-*
Times-Roman 10 SetF
%I t
[ 1 0 0 1 465 736 ] concat
%I
[
(Receive)
(CONACK\(ACK\))
(or CONREQ)
] Text
End

Begin %I Line
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 68 62 ] concat
%I
397 644 472 644 Line
%I 1
End

End %I eop

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 68 62 ] concat
%I
249 531 315 513 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 68.7814 62 ] concat
%I
362 533 362 767 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 68 62 ] concat
%I
243 670 478 584 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 68 62 ] concat
%I
405 776 459 736 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 68 62 ] concat
%I
320 778 250 736 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 64.4544 62 ] concat
%I
518 669 518 592 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 70.4414 59 ] concat
%I
208 669 208 593 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 68 62 ] concat
%I
238 669 331 532 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 68 62 ] concat
%I
491 542 411 513 Line
%I 1
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 2025 a Fo(Figure)h(7.13)249 2063 y Fy(T)m(ask-task)d(connection)f
(state)h(diagram)249 2194 y Fr(7.6.4)48 b(Multicastin)o(g)249
2277 y FA(The)17 b(libp)o(vm)c(function)j Fs(pvm)p 711
2277 14 2 v 15 w(mcast\(\))f FA(sends)i(a)f(message)g(to)g(m)o(ultiple)
e(destinations)i(sim)o(ultane-)249 2331 y(ously)m(.)21
b(The)16 b(curren)o(t)h(implemen)o(tatio)o(n)c(only)h(routes)i(m)o
(ulticast)e(messages)h(through)h(the)g(p)o(vmds.)249
2385 y(It)c(uses)g(a)f(1:N)g(fanout)g(to)g(ensure)i(that)e(failure)g
(of)g(a)g(host)h(do)q(esn't)f(cause)i(the)f(loss)f(of)g(an)o(y)g
(messages)249 2439 y(\(other)17 b(than)f(ones)h(to)f(that)g(host\).)25
b(The)16 b(pac)o(k)o(et)h(routing)e(la)o(y)o(er)h(of)f(the)i(p)o(vmd)e
(co)q(op)q(erates)i(with)249 2493 y(the)e(libp)o(vm)c(to)j(m)o
(ulticast)e(a)i(message.)p eop
%%Page: 121 140
121 139 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(121)291 507 y FA(T)m(o)13 b(form)g(a)h(m)o(ulticast)e(address)k(TID)e
(\(GID\),)f(the)i(G)f(bit)g(is)g(set)i(\(refer)f(to)f(Figure)h(7.1\).)j
(The)d(L)249 561 y(\014eld)f(is)g(assigned)h(b)o(y)e(a)h(coun)o(ter)h
(that)f(is)g(incremen)o(ted)h(for)f(eac)o(h)g(m)o(ulticast,)e(so)i(a)g
(new)h(m)o(ulticast)249 615 y(address)g(is)f(used)h(for)e(eac)o(h)i
(message,)e(then)h(recycled.)291 669 y(T)m(o)e(initiate)g(a)h(m)o
(ulticast,)e(the)j(task)f(sends)i(a)e Fs(TM)p 1070 669
14 2 v 15 w(MCA)f FA(message)h(to)g(its)g(p)o(vmd,)f(con)o(taining)g(a)
h(list)249 723 y(of)i(recipien)o(t)h(TIDs.)24 b(The)16
b(p)o(vmd)e(creates)j(a)e(m)o(ulticast)f(descriptor)j(\()p
Fs(struct)k(mca)p FA(\))15 b(and)h(GID.)e(It)249 777
y(sorts)g(the)f(addresses,)h(remo)o(v)o(es)e(b)q(ogus)h(ones,)g(and)g
(duplicates)g(and)f(cac)o(hes)i(them)e(in)g(the)h(mca.)k(T)m(o)249
831 y(eac)o(h)c(destination)f(p)o(vmd)f(\(ones)j(with)e(destination)g
(tasks\),)h(it)f(sends)i(a)e Fs(DM)p 1444 831 V 15 w(MCA)g
FA(message)g(with)g(the)249 885 y(GID)f(and)h(destinations)h(on)e(that)
i(host.)k(The)c(GID)e(is)h(sen)o(t)h(bac)o(k)f(to)g(the)h(task)f(in)f
(the)i Fs(TM)p 1662 885 V 15 w(MCA)f FA(reply)249 939
y(message.)291 993 y(The)17 b(task)h(sends)g(the)g(m)o(ulticast)e
(message)h(to)g(the)h(p)o(vmd,)e(addressed)j(to)e(the)h(GID.)e(As)i
(eac)o(h)249 1047 y(pac)o(k)o(et)f(arriv)o(es,)h(the)f(routing)g(la)o
(y)o(er)f(copies)i(it)e(to)h(eac)o(h)g(lo)q(cal)f(task)h(and)g(foreign)
f(p)o(vmd.)26 b(When)249 1101 y(a)16 b(m)o(ulticast)e(pac)o(k)o(et)i
(arriv)o(es)h(at)e(a)h(destination)g(p)o(vmd,)e(it)i(is)f(copied)h(to)g
(eac)o(h)h(destination)e(task.)249 1155 y(P)o(ac)o(k)o(et)h(order)h(is)
e(preserv)o(ed,)j(so)e(the)h(m)o(ulticast)d(address)j(and)f(data)f(pac)
o(k)o(ets)i(arriv)o(e)e(in)h(order)g(at)249 1209 y(eac)o(h)e
(destination.)k(As)13 b(it)g(forw)o(ards)h(m)o(ulticast)d(pac)o(k)o
(ets,)j(eac)o(h)g(p)o(vmd)e(ea)o(v)o(esdrops)i(on)f(the)h(header)249
1263 y(\015ags.)k(When)c(it)g(sees)h(a)f(pac)o(k)o(et)g(with)g
Fs(EOM)f FA(\015ag)g(set,)h(it)g(\015ushes)h(the)g(mca.)249
1383 y FD(7.7)52 b(T)l(ask)17 b(En)o(vironmen)o(t)249
1491 y Fr(7.7.1)48 b(En)o(vironmen)o(t)12 b(V)l(ariables)249
1574 y FA(Exp)q(erience)k(seems)d(to)h(indicate)f(that)h(inherited)g
(en)o(vironmen)o(t)e(\(Unix)i Fs(environ)p FA(\))e(is)h(useful)h(to)f
(an)249 1628 y(application.)23 b(F)m(or)15 b(example,)g(en)o(vironmen)o
(t)g(v)n(ariables)g(can)i(b)q(e)f(used)h(to)f(distinguish)f(a)h(group)g
(of)249 1682 y(related)f(tasks)f(or)g(to)g(set)g(debugging)g(v)n
(ariables.)291 1728 y(PVM)k(mak)o(es)f(increasing)h(use)h(of)e(en)o
(vironmen)o(t,)h(and)g(ma)o(y)e(ev)o(en)o(tually)h(supp)q(ort)i(it)f
(ev)o(en)g(on)249 1773 y(mac)o(hines)c(where)i(the)f(concept)h(is)f
(not)g(nativ)o(e.)20 b(F)m(or)15 b(no)o(w,)f(it)g(allo)o(ws)g(a)g(task)
h(to)g(exp)q(ort)h(an)o(y)e(part)249 1819 y(of)h Fs(environ)f
FA(to)h(tasks)h(spa)o(wned)g(b)o(y)g(it.)22 b(Setting)16
b(v)n(ariable)e Fs(PVM)p 1287 1819 V 15 w(EXPORT)g FA(to)i(the)g(names)
f(of)f(other)249 1865 y(v)n(ariables)f(causes)j(them)d(to)g(b)q(e)i
(exp)q(orted)g(through)f(spa)o(wn.)k(F)m(or)13 b(example,)g(setting)328
1944 y Fg(PVM_EXPO)o(RT=)o(DI)o(SPL)o(AY:)o(SH)o(ELL)249
2031 y FA(exp)q(orts)i(the)f(v)n(ariables)g Fs(DISPLAY)e
FA(and)i Fs(SHELL)f FA(to)g(c)o(hildren)h(tasks)h(\(and)f
Fs(PVM)p 1491 2031 V 15 w(EXPORT)e FA(to)q(o\).)291 2085
y(The)i(follo)o(wing)d(en)o(vironmen)o(t)i(v)n(ariables)g(are)h(used)h
(b)o(y)f(PVM.)g(The)g(user)h(ma)o(y)d(set)j(these:)p
291 2159 1403 2 v 315 2196 a Fs(PVM)p 384 2196 14 2 v
16 w(ROOT)136 b FA(Ro)q(ot)13 b(installation)f(directory)315
2250 y Fs(PVM)p 384 2250 V 16 w(EXPORT)92 b FA(Names)13
b(of)g(en)o(vironmen)o(t)g(v)n(ariables)g(to)h(inherit)g(through)g(spa)
o(wn)315 2304 y Fs(PVM)p 384 2304 V 16 w(DPATH)114 b
FA(Default)13 b(sla)o(v)o(e)g(p)o(vmd)g(install)g(path)315
2358 y Fs(PVM)p 384 2358 V 16 w(DEBUGGER)48 b FA(P)o(ath)14
b(of)f(debugger)i(script)f(used)h(b)o(y)f(spa)o(wn)p
291 2376 1403 2 v 291 2447 a(The)g(follo)o(wing)d(v)n(ariables)i(are)i
(set)f(b)o(y)g(PVM)g(and)g(should)g(not)g(b)q(e)g(mo)q(di\014ed:)p
eop
%%Page: 122 141
122 140 bop 249 251 a Fu(122)1356 b(Chapter)13 b(7)p
291 467 1199 2 v 315 505 a Fs(PVM)p 384 505 14 2 v 16
w(ARCH)55 b FA(PVM)14 b(arc)o(hitecture)i(name)315 559
y Fs(PVMSOCK)71 b FA(Address)15 b(of)e(the)i(p)o(vmd)d(lo)q(cal)h(so)q
(c)o(k)o(et;)i(see)g(Section)f(7.4.2)315 613 y Fs(PVMEPID)71
b FA(Exp)q(ected)15 b(PID)f(of)f(a)h(spa)o(wned)g(task)315
667 y Fs(PVMTMASK)49 b FA(Libp)o(vm)11 b(T)m(race)k(mask)p
291 685 1199 2 v 249 747 a Fr(7.7.2)48 b(Standard)14
b(Input)g(and)h(Output)249 830 y FA(Eac)o(h)h(task)f(spa)o(wned)h
(through)f(PVM)h(has)g Fs(/dev/null)d FA(op)q(ened)j(for)f
FB(stdin)p FA(.)23 b(F)m(rom)13 b(its)j(paren)o(t,)f(it)249
884 y(inherits)e(a)g FB(stdout)h(sink)p FA(,)f(whic)o(h)g(is)g(a)f
FB(\(TID,)i(c)n(o)n(de\))f FA(pair.)18 b(Output)13 b(on)g
FB(stdout)g FA(or)g FB(stderr)f FA(is)h(read)g(b)o(y)249
938 y(the)g(p)o(vmd)d(through)i(a)g(pip)q(e,)g(pac)o(k)o(ed)g(in)o(to)g
(PVM)g(messages)g(and)g(sen)o(t)h(to)f(the)g(TID,)g(with)f(message)249
992 y(tag)16 b(equal)f(to)h(the)g(co)q(de.)25 b(If)16
b(the)g(output)g(TID)g(is)f(set)i(to)f(zero)h(\(the)f(default)g(for)f
(a)h(task)g(with)f(no)249 1046 y(paren)o(t\),)f(the)h(messages)f(go)f
(to)h(the)g(master)g(p)o(vmd,)d(where)k(they)g(are)f(written)h(on)e
(its)h(error)h(log.)291 1100 y(Children)f(spa)o(wned)h(b)o(y)f(a)g
(task)g(inherit)g(its)g(stdout)h(sink.)k(Before)c(the)g(spa)o(wn,)f
(the)h(paren)o(t)g(can)249 1154 y(use)e Fs(pvm)p 388
1154 14 2 v 15 w(setopt\(\))e FA(to)h(alter)h(the)g(output)f(TID)g(or)h
(co)q(de.)18 b(This)12 b(do)q(esn't)h(a\013ect)g(where)h(the)f(output)
249 1208 y(of)i(the)g(paren)o(t)h(task)f(itself)g(go)q(es.)23
b(A)15 b(task)g(ma)o(y)e(set)j(output)g(TID)f(to)g(one)g(of)g(three)h
(settings:)21 b(the)249 1262 y(v)n(alue)10 b(inherited)h(from)d(its)j
(paren)o(t,)g(its)f(o)o(wn)g(TID,)g(or)g(zero.)18 b(It)10
b(can)h(set)g(output)g(co)q(de)g(only)e(if)h(output)249
1316 y(TID)h(is)g(set)h(to)f(its)h(o)o(wn)f(TID.)f(This)h(means)g(that)
g(output)g(can't)h(b)q(e)f(assigned)h(to)f(an)g(arbitrary)g(task.)291
1370 y(F)m(our)h(t)o(yp)q(es)h(of)f(messages)h(are)g(sen)o(t)g(to)g(an)
f(stdout)h(sink.)k(The)c(message)g(b)q(o)q(dy)f(formats)f(for)i(eac)o
(h)249 1424 y(t)o(yp)q(e)h(are)h(as)f(follo)o(ws:)p 291
1497 1266 2 v 315 1529 a Fd(Sp)n(awn)p Fu(:)59 b Fg(\(code\))17
b Ff(f)433 b Fu(T)m(ask)13 b(has)h(b)q(een)f(spa)o(wned)718
1575 y Fg(int)18 b(tid,)205 b Fu(T)m(ask)13 b(id)718
1621 y Fg(int)18 b(-1,)225 b Fu(Signals)16 b(spa)o(wn)718
1666 y Fg(int)i(ptid)205 b Fu(TID)13 b(of)g(paren)o(t)492
1712 y Ff(g)315 1803 y Fd(Be)n(gin)p Fu(:)71 b Fg(\(code\))17
b Ff(f)433 b Fu(First)14 b(output)g(from)e(task)718 1849
y Fg(int)18 b(tid,)205 b Fu(T)m(ask)13 b(id)718 1895
y Fg(int)18 b(-2,)225 b Fu(Signals)16 b(task)d(creation)718
1940 y Fg(int)18 b(ptid)205 b Fu(TID)13 b(of)g(paren)o(t)492
1986 y Ff(g)315 2077 y Fd(Output)p Fu(:)49 b Fg(\(code\))17
b Ff(f)433 b Fu(Output)14 b(from)e(a)h(task)718 2123
y Fg(int)18 b(tid,)205 b Fu(T)m(ask)13 b(id)718 2169
y Fg(int)18 b(count,)165 b Fu(Length)14 b(of)f(output)g(fragmen)o(t)718
2214 y Fg(char)18 b(data[coun)o(t])46 b Fu(Output)14
b(fragmen)o(t)492 2260 y Ff(g)315 2351 y Fd(End)p Fu(:)98
b Fg(\(code\))17 b Ff(f)433 b Fu(Last)13 b(output)h(from)f(a)g(task)718
2397 y Fg(int)18 b(tid,)205 b Fu(T)m(ask)13 b(id)718
2443 y Fg(int)18 b(0)265 b Fu(Signals)16 b(EOF)492 2488
y Ff(g)p 291 2504 V eop
%%Page: 123 142
123 141 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(123)291 507 y FA(The)11 b(\014rst)g(t)o(w)o(o)f(items)g(in)g(the)i
(message)e(b)q(o)q(dy)h(are)g(alw)o(a)o(ys)e(the)j(task)e(id)h(and)f
(output)h(coun)o(t,)g(whic)o(h)249 561 y(allo)o(w)g(the)j(receiv)o(er)g
(to)f(distinguish)f(b)q(et)o(w)o(een)i(di\013eren)o(t)g(tasks)g(and)e
(the)i(four)e(message)h(t)o(yp)q(es.)18 b(F)m(or)249
615 y(eac)o(h)g(task,)h(one)e(message)h(eac)o(h)g(of)f(t)o(yp)q(es)i
FB(Sp)n(awn)p FA(,)f FB(Be)n(gin)p FA(,)h(and)e FB(End)i
FA(is)e(sen)o(t,)i(along)e(with)g(zero)249 669 y(or)e(more)e(messages)i
(of)f(class)h FB(Output)p FA(,)g(\()p Fs(count)21 b(>)g(0)p
FA(\).)f(Classes)c FB(Be)n(gin)p FA(,)f FB(Output)f FA(and)h
FB(End)g FA(will)e(b)q(e)249 723 y(receiv)o(ed)i(in)f(order,)g(as)g
(they)h(originate)e(from)f(the)j(same)e(source)i(\(the)g(p)o(vmd)d(of)h
(the)i(target)f(task\).)249 777 y(Class)h FB(Sp)n(awn)g
FA(originates)f(at)h(the)g(\(p)q(ossibly)g(di\013eren)o(t\))h(p)o(vmd)d
(of)h(the)h(paren)o(t)h(task,)e(so)h(it)f(can)h(b)q(e)249
831 y(receiv)o(ed)h(in)e(an)o(y)g(order)i(relativ)o(e)e(to)h(the)g
(others.)21 b(The)15 b(output)g(sink)f(is)h(exp)q(ected)h(to)f
(understand)249 885 y(the)g(di\013eren)o(t)g(t)o(yp)q(es)h(of)d
(messages)i(and)f(use)h(them)f(to)g(kno)o(w)g(when)g(to)h(stop)f
(listening)g(for)g(output)249 939 y(from)e(a)i(task)g(\(EOF\))h(or)e
(group)h(of)f(tasks)i(\(global)d(EOF\).)291 993 y(The)f(messages)f(are)
h(designed)g(so)g(as)f(to)h(prev)o(en)o(t)g(race)h(conditions)e(when)h
(a)f(task)h(spa)o(wns)g(another)249 1047 y(task,)f(then)h(immediately)c
(exits.)17 b(The)10 b(output)g(sink)g(migh)o(t)e(get)i(the)h
FB(End)f FA(message)g(from)e(the)j(paren)o(t)249 1101
y(task)16 b(and)g(decide)h(the)f(group)g(is)g(\014nished,)h(only)e(to)g
(receiv)o(e)j(more)d(output)h(later)g(from)e(the)j(c)o(hild)249
1155 y(task.)h(According)12 b(to)g(these)h(rules,)g(the)f
FB(Sp)n(awn)h FA(message)e(for)h(the)g(second)h(task)f(m)o(ust)f(arriv)
o(e)h(b)q(efore)249 1209 y(the)k FB(End)f FA(message)g(from)e(the)j
(\014rst)g(task.)21 b(The)16 b FB(Be)n(gin)f FA(message)g(itself)g(is)g
(necessary)i(b)q(ecause)f(the)249 1263 y FB(Sp)n(awn)d
FA(message)f(for)g(a)g(task)h(ma)o(y)e(arriv)o(e)h(after)h(the)g
FB(End)g FA(message)f(for)g(the)h(same)f(task.)17 b(The)c(state)249
1317 y(transitions)k(of)g(a)g(task)h(as)f(observ)o(ed)i(b)o(y)e(the)h
(receiv)o(er)h(of)e(the)h(output)g(messages)f(are)h(sho)o(wn)f(in)249
1371 y(Figure)d(7.14.)249 1429 y
 8762159 9661993 14143078 29996482 22892052 39666401 startTexFig
 249 1429 a
%%BeginDocument: fig7-out-lat.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 11 def
/arrowWidth 5 def

/IdrawDict 52 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Times-Bold reencodeISO def
/Times-Roman reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Elli
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -6.00016 143 ] concat
%I
358 505 8 8 Elli
End

Begin %I Elli
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 41.9998 191 ] concat
%I
358 505 8 8 Elli
End

Begin %I Elli
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 89.9998 239 ] concat
%I
358 505 8 8 Elli
End

Begin %I Elli
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -54.0001 191 ] concat
%I
358 505 8 8 Elli
End

Begin %I Elli
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 -6.00016 239 ] concat
%I
358 505 8 8 Elli
End

Begin %I Elli
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 41.9998 287 ] concat
%I
358 505 8 8 Elli
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 -6.00016 143 ] concat
%I
366 513 398 545 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 41.9998 191 ] concat
%I
366 513 398 545 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 -54.0002 191 ] concat
%I
366 513 398 545 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 -6.00012 239 ] concat
%I
366 513 398 545 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 -54.0002 143 ] concat
%I
398 513 366 545 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 -6.00019 191 ] concat
%I
398 513 366 545 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 41.9998 239 ] concat
%I
398 513 366 545 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-bold-r-normal--*-120-75-75-*-*-*-*
Times-Bold 12 SetF
%I t
[ 1 0 0 1 328 637 ] concat
%I
[
(Unstarted)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-bold-r-normal--*-120-75-75-*-*-*-*
Times-Bold 12 SetF
%I t
[ 1 0 0 1 384 821 ] concat
%I
[
(Exited)
] Text
End

Begin %I BSpl
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 52 62 ] concat
%I 4
364 626
404 610
364 578
356 618
4 BSpl
%I 1
End

Begin %I BSpl
%I b 65535
1 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 1 0 0 1 52 62 ] concat
%I 4
292 698
276 730
252 706
292 690
4 BSpl
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 392 763 ] concat
%I
[
(Spawn)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 344 715 ] concat
%I
[
(Spawn)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 296 667 ] concat
%I
[
(Spawn)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 296 795 ] concat
%I
[
(Output)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 440 659 ] concat
%I
[
(Output)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 296 731 ] concat
%I
[
(Begin)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 376 667 ] concat
%I
[
(Begin)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 432 723 ] concat
%I
[
(End)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal--*-120-75-75-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 360 787 ] concat
%I
[
(End)
] Text
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 2103 a Fo(Figure)f(7.14)249 2140 y Fy(Output)e(states)f(of)h(a)g
(task)291 2242 y FA(The)18 b(libp)o(vm)c(function)k Fs(pvm)p
757 2242 14 2 v 15 w(catchout\(\))d FA(uses)k(this)e(output)h
(collection)f(feature)h(to)g(put)f(the)249 2296 y(output)f(from)e(c)o
(hildren)i(of)g(a)f(task)h(in)o(to)g(a)f(\014le)h(\(for)g(example,)e
(its)i(o)o(wn)g(stdout\).)25 b(It)16 b(sets)h(output)249
2350 y(TID)12 b(to)g(its)h(o)o(wn)f(task)g(id,)g(and)g(the)h(output)g
(co)q(de)g(to)f(con)o(trol)h(message)f Fs(TC)p 1446 2350
V 15 w(OUTPUT)p FA(.)f(Output)i(from)249 2404 y(c)o(hildren)i(and)g
(grandc)o(hildren)h(tasks)f(is)g(collected)h(b)o(y)f(the)h(p)o(vmds)e
(and)h(sen)o(t)h(to)f(the)h(task,)f(where)249 2458 y(it)f(is)f(receiv)o
(ed)j(b)o(y)d Fs(pvmmctl\(\))f FA(and)i(prin)o(ted)g(b)o(y)g
Fs(pvmclaimo\(\))p FA(.)p eop
%%Page: 124 143
124 142 bop 249 251 a Fu(124)1356 b(Chapter)13 b(7)249
507 y Fr(7.7.3)48 b(T)l(racing)249 590 y FA(The)16 b(libp)o(vm)d
(library)i(has)g(a)h(tracing)f(system)g(that)h(can)f(record)i(the)f
(parameters)g(and)f(results)i(of)249 644 y(all)e(calls)g(to)g(in)o
(terface)i(functions.)23 b(T)m(race)16 b(data)f(is)h(sen)o(t)g(as)g
(messages)g(to)f(a)h(trace)h(sink)e(task)h(just)249 698
y(as)d(output)h(is)f(sen)o(t)g(to)g(an)g(stdout)h(sink)f(\(Section)g
(7.7.2\).)k(If)12 b(the)i(trace)g(output)f(TID)g(is)g(set)h(to)f(zero)
249 752 y(\(the)i(default\),)e(tracing)h(is)f(disabled.)291
806 y(Besides)g(the)g(trace)g(sink,)e(tasks)i(also)e(inherit)h(a)g
(trace)g(mask,)f(used)i(to)e(enable)i(tracing)f(function-)249
860 y(b)o(y-function.)k(The)10 b(mask)e(is)h(passed)i(as)e(a)g(\(prin)o
(table\))h(string)f(in)g(en)o(vironmen)o(t)g(v)n(ariable)f
Fs(PVMTMASK)p FA(.)249 914 y(A)15 b(task)h(can)f(manipulate)f(its)h(o)o
(wn)g(trace)h(mask)e(or)h(the)h(one)f(to)h(b)q(e)f(inherited)h(from)e
(it.)22 b(A)15 b(task's)249 968 y(trace)g(mask)d(can)j(also)e(b)q(e)h
(set)h(async)o(hronously)f(with)g(a)f Fs(TC)p 1207 968
14 2 v 16 w(SETTMASK)f FA(con)o(trol)h(message.)291 1022
y(Constan)o(ts)h(related)g(to)f(trace)i(messages)f(are)g(de\014ned)h
(in)e(public)g(header)i(\014le)e Fs(pvmtev.h)p FA(.)k(T)m(race)249
1076 y(data)h(from)f(a)h(task)g(is)h(collected)g(in)f(a)g(manner)f
(similar)f(to)i(the)h(output)g(redirection)g(discussed)249
1130 y(ab)q(o)o(v)o(e.)e(Lik)o(e)12 b(the)g(t)o(yp)q(e)h
FB(Sp)n(awn)p FA(,)f FB(Be)n(gin)p FA(,)g(and)g FB(End)g
FA(messages)g(whic)o(h)g(brac)o(k)o(et)h(output)f(from)e(a)h(task,)249
1184 y Fs(TEV)p 318 1184 V 15 w(SPNTASK)p FA(,)e Fs(TEV)p
574 1184 V 16 w(NEWTASK)g FA(and)i Fs(TEV)p 897 1184
V 16 w(ENDTASK)e FA(trace)k(messages)e(are)h(generated)g(b)o(y)f(the)h
(p)o(vmds)249 1238 y(to)i(brac)o(k)o(et)g(trace)h(messages.)291
1292 y(The)d(tracing)g(system)g(w)o(as)g(in)o(tro)q(duced)h(in)f(v)o
(ersion)h(3.3)e(and)h(is)g(still)f(exp)q(ected)j(to)f(c)o(hange)f
(some-)249 1346 y(what.)249 1429 y Fr(7.7.4)48 b(Debugging)249
1512 y FA(PVM)16 b(pro)o(vides)g(a)f(simple)f(but)i(extensible)g
(debugging)f(facilit)o(y)m(.)21 b(T)m(asks)15 b(started)i(b)o(y)e(hand)
g(could)249 1566 y(just)20 b(as)g(easily)f(b)q(e)i(run)f(under)h(a)e
(debugger,)j(but)e(this)g(pro)q(cedure)h(is)f(cum)o(b)q(ersome)f(for)g
(those)249 1620 y(spa)o(wned)k(b)o(y)f(an)h(application,)f(since)i(it)e
(requires)h(the)g(user)h(to)e(commen)o(t)f(out)h(the)h(calls)f(to)249
1674 y Fs(pvm)p 318 1674 V 15 w(spawn\(\))16 b FA(and)i(start)g(tasks)g
(man)o(ually)m(.)26 b(If)17 b Fs(PvmTaskDebug)e FA(is)j(added)g(to)f
(the)h(\015ags)g(passed)249 1728 y(to)f Fs(pvm)p 372
1728 V 15 w(spawn\(\))p FA(,)f(the)h(task)g(is)g(started)h(through)f(a)
g(debugger)g(script)h(\(a)f(normal)e(shell)i(script\),)249
1782 y Fs($PVM)p 340 1782 V 15 w(ROOT/lib/debugger)o
FA(.)291 1836 y(The)e(p)o(vmd)d(passes)k(the)f(name)f(and)g(parameters)
h(of)f(the)h(task)f(to)h(the)g(debugger)g(script,)g(whic)o(h)249
1890 y(is)i(free)g(to)g(start)g(an)o(y)f(sort)h(of)f(debugger.)28
b(The)17 b(script)g(pro)o(vided)g(is)f(v)o(ery)h(simple.)25
b(In)17 b(an)f FB(xterm)249 1944 y FA(windo)o(w,)11 b(it)i(runs)g(the)g
(correct)h(debugger)f(according)f(to)h(the)g(arc)o(hitecture)h(t)o(yp)q
(e)f(of)f(the)h(host.)18 b(The)249 1998 y(script)e(can)f(b)q(e)g
(customized)g(or)g(replaced)h(b)o(y)f(the)g(user.)23
b(The)15 b(p)o(vmd)e(can)i(b)q(e)h(made)e(to)h(execute)h(a)249
2051 y(di\013eren)o(t)c(debugger)g(via)e(the)h Fs(bx=)f
FA(host)h(\014le)g(option)f(or)h(the)h Fs(PVM)p 1257
2051 V 15 w(DEBUGGER)d FA(en)o(vironmen)o(t)h(v)n(ariable.)249
2172 y FD(7.8)52 b(Console)18 b(Program)249 2280 y FA(The)c(PVM)g
(console)g(is)g(used)g(to)f(manage)f(the)j(virtual)d(mac)o(hine|to)g
(recon\014gure)j(it)e(or)h(start)g(and)249 2334 y(stop)19
b(pro)q(cesses.)37 b(In)19 b(addition,)g(it's)f(an)h(example)f(program)
f(that)j(mak)o(es)e(use)i(of)e(most)g(of)g(the)249 2388
y(libp)o(vm)11 b(functions.)291 2442 y Fs(pvm)p 360 2442
V 15 w(getfds\(\))h FA(and)i Fs(select\(\))e FA(are)i(used)h(to)e(c)o
(hec)o(k)i(for)f(input)g(from)e(the)i(k)o(eyb)q(oard)g(and)g(mes-)249
2496 y(sages)i(from)e(the)i(p)o(vmd)e(sim)o(ultaneously)m(.)20
b(Keyb)q(oard)d(input)e(is)g(passed)i(to)e(the)h(command)d(in)o(ter-)p
eop
%%Page: 125 144
125 143 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(125)249 507 y FA(preter,)21 b(while)e(messages)g(con)o(tain)g
(noti\014cation)f(\(for)h(example,)f(HostAdd\))i(or)f(output)g(from)e
(a)249 561 y(task.)291 615 y(The)d(console)h(can)g(collect)f(output)h
(or)f(trace)h(messages)g(from)d(spa)o(wned)j(tasks,)g(using)f(the)h
(redi-)249 669 y(rection)g(mec)o(hanisms)e(describ)q(ed)k(in)d(Section)
h(7.7.2)e(and)i(Section)g(7.7.3,)d(and)j(write)g(them)f(to)g(the)249
723 y(screen)j(or)d(a)g(\014le.)20 b(It)14 b(uses)i(the)f
FB(b)n(e)n(gin)f FA(and)h FB(end)g FA(messages)f(from)f(c)o(hild)h
(tasks)h(to)f(main)o(tain)e(groups)249 777 y(of)i(tasks)i(\(or)f
FB(jobs)p FA(\),)f(related)i(b)o(y)f(common)d(ancestors.)22
b(Using)15 b(the)g Fs(PvmHostAdd)e FA(notify)h(ev)o(en)o(t,)h(it)249
831 y(informs)d(the)j(user)g(when)f(the)h(virtual)e(mac)o(hine)f(is)i
(recon\014gured.)249 951 y FD(7.9)52 b(Resource)17 b(Limitations)249
1059 y FA(Resource)j(limits)c(imp)q(osed)i(b)o(y)h(the)g(op)q(erating)g
(system)f(and)h(a)o(v)n(ailable)d(hardw)o(are)j(are)g(in)g(turn)249
1113 y(passed)h(to)e(PVM)h(applications.)31 b(Whenev)o(er)20
b(p)q(ossible,)f(PVM)g(a)o(v)o(oids)f(setting)h(explicit)f(limits;)249
1167 y(instead,)f(it)f(returns)j(an)d(error)h(when)h(resources)h(are)e
(exhausted.)27 b(Comp)q(etition)15 b(b)q(et)o(w)o(een)j(users)249
1221 y(on)c(the)g(same)f(host)h(or)g(net)o(w)o(ork)g(a\013ects)i(some)d
(limits)e(dynamically)m(.)249 1304 y Fr(7.9.1)48 b(In)15
b(the)g(PVM)h(Daemon)249 1387 y FA(Ho)o(w)9 b(man)o(y)f(tasks)i(eac)o
(h)g(p)o(vmd)f(can)g(manage)f(is)i(limited)d(b)o(y)j(t)o(w)o(o)f
(factors:)16 b(the)10 b(n)o(um)o(b)q(er)f(of)g(pro)q(cesses)249
1441 y(allo)o(w)o(ed)14 b(a)i(user)g(b)o(y)g(the)g(op)q(erating)f
(system,)h(and)f(the)h(n)o(um)o(b)q(er)f(of)g(\014le)h(descriptors)h(a)
o(v)n(ailable)c(to)249 1495 y(the)j(p)o(vmd.)k(The)15
b(limit)d(on)j(pro)q(cesses)j(is)d(generally)f(not)h(an)g(issue,)h
(since)g(it)e(do)q(esn't)i(mak)o(e)d(sense)249 1549 y(to)h(ha)o(v)o(e)g
(a)f(h)o(uge)h(n)o(um)o(b)q(er)f(of)h(tasks)g(running)g(on)f(a)h
(unipro)q(cessor)h(mac)o(hine.)291 1603 y(Eac)o(h)g(task)g(consumes)g
(one)h(\014le)f(descriptor)h(in)f(the)g(p)o(vmd,)f(for)h(the)g(p)o
(vmd-task)f(TCP)h(stream.)249 1657 y(Eac)o(h)k(spa)o(wned)h(task)f
(\(not)g(ones)g(connected)i(anon)o(ymously\))16 b(consumes)j(an)g
(extra)g(descriptor,)249 1711 y(since)f(its)f(output)g(is)g(read)g
(through)g(a)f(pip)q(e)i(b)o(y)e(the)i(p)o(vmd)d(\(closing)h(stdout)i
(and)f(stderr)h(in)e(the)249 1765 y(task)e(w)o(ould)e(reclaim)g(this)i
(slot\).)j(A)d(few)f(more)g(\014le)g(descriptors)i(are)f(alw)o(a)o(ys)e
(in)h(use)h(b)o(y)g(the)g(p)o(vmd)249 1819 y(for)f(the)g(lo)q(cal)f
(and)h(net)o(w)o(ork)g(so)q(c)o(k)o(ets)h(and)e(error)i(log)e(\014le.)
17 b(F)m(or)c(example,)e(with)i(a)f(limit)e(of)i(64)h(op)q(en)249
1873 y(\014les,)h(a)f(user)i(should)f(b)q(e)h(able)e(to)h(ha)o(v)o(e)g
(up)g(to)f(30)h(tasks)g(running)g(p)q(er)h(host.)291
1927 y(The)10 b(p)o(vmd)f(ma)o(y)g(b)q(ecome)h(a)g(b)q(ottlenec)o(k)h
(if)f(all)f(these)j(tasks)f(try)f(to)h(talk)e(to)i(one)f(another)h
(through)249 1981 y(it.)291 2035 y(The)k(p)o(vmd)f(uses)i(dynamically)c
(allo)q(cated)j(memory)d(to)j(store)i(message)d(pac)o(k)o(ets)i(en)g
(route)g(b)q(e-)249 2089 y(t)o(w)o(een)f(tasks.)20 b(Un)o(til)13
b(the)i(receiving)g(task)f(accepts)i(the)f(pac)o(k)o(ets,)g(they)g
(accum)o(ulate)e(in)h(the)h(p)o(vmd)249 2143 y(in)e(an)g(FIF)o(O)h(pro)
q(cedure.)20 b(No)13 b(\015o)o(w)g(con)o(trol)g(is)h(imp)q(osed)e(b)o
(y)h(the)h(p)o(vmd:)j(it)c(will)f(happily)g(store)i(all)249
2197 y(the)g(pac)o(k)o(ets)f(giv)o(en)g(to)g(it,)f(un)o(til)g(it)g
(can't)h(get)h(an)o(y)e(more)g(memory)m(.)j(If)d(an)h(application)f(is)
g(designed)249 2251 y(so)k(that)f(tasks)h(can)g(k)o(eep)g(sending)f(ev)
o(en)h(when)g(the)g(receiving)g(end)g(is)f(o\013)h(doing)e(something)g
(else)249 2305 y(and)g(not)g(receiving,)f(the)i(system)f(will)e(ev)o
(en)o(tually)h(run)h(out)g(of)g(memory.)p eop
%%Page: 126 145
126 144 bop 249 251 a Fu(126)1356 b(Chapter)13 b(7)249
507 y Fr(7.9.2)48 b(In)15 b(the)g(T)l(ask)249 590 y FA(As)h(with)g(the)
h(p)o(vmd,)d(a)i(task)g(ma)o(y)e(ha)o(v)o(e)i(a)f(limit)e(on)j(the)h(n)
o(um)o(b)q(er)e(of)g(others)i(it)f(can)g(connect)h(to)249
644 y(directly)m(.)24 b(Eac)o(h)16 b(direct)h(route)f(to)g(a)f(task)h
(has)g(a)g(separate)h(TCP)f(connection)g(\(whic)o(h)g(is)g(bidirec-)249
698 y(tional\),)h(and)g(so)h(consumes)f(a)h(\014le)f(descriptor.)30
b(Th)o(us,)18 b(with)g(a)f(limit)e(of)h(64)h(op)q(en)h(\014les,)h(a)e
(task)249 752 y(can)d(establish)h(direct)f(routes)h(to)f(ab)q(out)g(60)
g(other)g(tasks.)19 b(Note)14 b(that)g(this)h(limit)c(is)j(in)f
(e\013ect)j(only)249 806 y(when)d(using)e(task-task)i(direct)g
(routing.)j(Messages)e(routed)f(via)e(the)i(p)o(vmds)e(use)h(only)g
(the)g(default)249 860 y(p)o(vmd-task)g(connection.)291
914 y(The)g(maxim)n(um)7 b(size)12 b(of)f(a)g(PVM)h(message)f(is)h
(limited)d(b)o(y)i(the)h(amoun)o(t)e(of)h(memory)e(a)o(v)n(ailable)g
(to)249 968 y(the)i(task.)16 b(Because)c(messages)e(are)h(generally)e
(pac)o(k)o(ed)h(using)g(data)g(existing)f(elsewhere)j(in)d(memory)m(,)
249 1022 y(and)14 b(they)g(m)o(ust)f(b)q(e)h(reside)h(in)e(memory)e(b)q
(et)o(w)o(een)k(b)q(eing)f(pac)o(k)o(ed)g(and)f(sen)o(t,)i(the)f
(largest)g(p)q(ossible)249 1076 y(message)g(a)f(task)h(can)h(send)f
(should)g(b)q(e)h(somewhat)e(less)h(than)g(half)f(the)i(a)o(v)n
(ailable)c(memory)m(.)16 b(Note)249 1130 y(that)10 b(as)g(a)g(message)g
(is)g(sen)o(t,)h(memory)d(for)i(pac)o(k)o(et)g(bu\013ers)i(is)e(allo)q
(cated)g(b)o(y)g(the)g(p)o(vmd,)f(aggra)o(v)n(ating)249
1184 y(the)15 b(situation.)i(In-place)d(message)g(enco)q(ding)g
(alleviates)g(this)g(problem)e(somewhat,)h(b)q(ecause)i(the)249
1238 y(data)i(is)g(not)g(copied)g(in)o(to)f(message)h(bu\013ers)i(in)d
(the)i(sender.)29 b(Ho)o(w)o(ev)o(er,)18 b(on)f(the)h(receiving)f(end,)
249 1292 y(the)c(en)o(tire)g(message)f(is)h(do)o(wnloaded)e(in)o(to)h
(the)h(task)g(b)q(efore)g(the)g(receiv)o(e)h(call)d(accepts)j(it,)e(p)q
(ossibly)249 1346 y(lea)o(ving)h(no)g(ro)q(om)g(to)g(unpac)o(k)h(it.)
291 1400 y(In)e(a)g(similar)e(v)o(ein,)i(if)g(man)o(y)e(tasks)j(send)g
(to)g(a)f(single)g(destination)g(all)f(at)h(once,)h(the)g(destination)
249 1454 y(task)f(or)f(p)o(vmd)e(ma)o(y)h(b)q(e)i(o)o(v)o(erloaded)f
(as)g(it)g(tries)h(to)f(store)h(the)g(messages.)18 b(Keeping)11
b(messages)h(from)249 1508 y(b)q(eing)i(freed)h(when)f(new)g(ones)h
(are)f(receiv)o(ed)h(b)o(y)f(using)g Fs(pvm)p 1214 1508
14 2 v 15 w(setrbuf\(\))e FA(also)h(uses)i(up)f(memory)m(.)291
1562 y(These)19 b(problems)e(can)h(sometimes)f(b)q(e)h(a)o(v)o(oided)g
(b)o(y)g(rearranging)f(the)i(application)e(co)q(de,)i(for)249
1616 y(example,)e(to)h(use)h(smaller)e(messages,)i(eliminate)d(b)q
(ottlenec)o(ks,)k(and)e(pro)q(cess)i(messages)e(in)f(the)249
1670 y(order)e(in)e(whic)o(h)h(they)g(are)h(generated.)249
1790 y FD(7.10)52 b(Multipro)q(cessor)18 b(Systems)249
1898 y FA(Dev)o(elop)q(ed)c(initially)d(as)i(a)g(parallel)f
(programming)e(en)o(vironmen)o(t)i(for)h(Unix)g(w)o(orkstations,)g(PVM)
249 1952 y(has)18 b(gained)f(wide)g(acceptance)j(and)d(b)q(ecome)h(a)f
(de)h(facto)f(standard)h(for)f(message-passing)g(pro-)249
2006 y(gramming)o(.)i(Users)d(w)o(an)o(t)f(the)g(same)g(programmi)o(ng)
d(en)o(vironmen)o(t)i(on)h(m)o(ultipro)q(cessor)f(comput-)249
2060 y(ers)i(so)f(they)g(can)g(mo)o(v)o(e)f(their)h(applications)f(on)o
(to)g(these)i(systems.)21 b(A)15 b(common)d(in)o(terface)k(w)o(ould)249
2114 y(also)d(allo)o(w)g(users)i(to)f(write)g(v)o(endor-indep)q(enden)o
(t)i(programs)c(for)i(parallel)f(computers)h(and)f(to)h(do)249
2168 y(part)k(or)g(most)e(of)i(the)g(dev)o(elopmen)o(t)f(w)o(ork)g(on)h
(w)o(orkstations,)g(freeing)g(up)g(the)g(m)o(ultipro)q(cessor)249
2222 y(sup)q(ercomputers)d(for)f(pro)q(duction)g(runs.)291
2276 y(With)i(PVM,)h(m)o(ultipro)q(cessor)g(systems)g(can)h(b)q(e)f
(included)h(in)f(the)g(same)g(con\014guration)f(with)249
2330 y(w)o(orkstations.)k(F)m(or)15 b(example,)e(a)h(PVM)h(task)g
(running)f(on)h(a)f(graphics)h(w)o(orkstation)f(can)h(displa)o(y)249
2384 y(the)c(results)h(of)e(computations)g(carried)h(out)g(on)f(a)h
(massiv)o(ely)e(parallel)h(pro)q(cessing)h(sup)q(ercomputer.)249
2438 y(Shared-memory)k(computers)i(with)f(a)g(small)f(n)o(um)o(b)q(er)h
(of)g(pro)q(cessors)j(can)e(b)q(e)g(link)o(ed)f(to)h(deliv)o(er)249
2492 y(sup)q(ercomputer)e(p)q(erformance.)p eop
%%Page: 127 146
127 145 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(127)p 1 setlinewidth np 1346 570 36 0.00 360.00 arc
st 1 setlinewidth np 1463 570 36 0.00 360.00 arc st 1
setlinewidth np 1228 674 36 0.00 360.00 arc st 1 setlinewidth
np 1346 674 36 0.00 360.00 arc st 1 setlinewidth np 1463
674 36 0.00 360.00 arc st 1 setlinewidth np 1228 779
36 0.00 360.00 arc st 1 setlinewidth np 1346 779 36 0.00
360.00 arc st 1 setlinewidth np 1463 779 36 0.00 360.00
arc st 1 setlinewidth np 1228 883 36 0.00 360.00 arc
st 1 setlinewidth np 1346 883 36 0.00 360.00 arc st 1
setlinewidth np 1463 883 36 0.00 360.00 arc st 1 setlinewidth
np 1346 988 36 0.00 360.00 arc st 1 setlinewidth np 1463
988 36 0.00 360.00 arc st 1 setlinewidth np 1346 1092
36 0.00 360.00 arc st 1 setlinewidth np 1463 1092 36
0.00 360.00 arc st 1 setlinewidth np 1228 1092 36 0.00
360.00 arc st 1 setlinewidth np 1228 988 36 0.00 360.00
arc st 1 setlinewidth np 967 831 36 0.00 360.00 arc st
1 setlinewidth np 1228 570 36 0.00 360.00 arc st 0 setgray
1 setlinewidth np 967 805 12 0.00 360.00 arc fil 0 setgray
np 967 805 12 0.00 360.00 arc st 1 setlinewidth np 967
805 12 0.00 360.00 arc st 1 setlinewidth np 1228 544
12 0.00 360.00 arc st 1 setlinewidth np 1346 544 12 0.00
360.00 arc st 1 setlinewidth np 1228 648 12 0.00 360.00
arc st 1 setlinewidth np 1346 648 12 0.00 360.00 arc
st 1 setlinewidth np 1228 753 12 0.00 360.00 arc st 1
setlinewidth np 1346 753 12 0.00 360.00 arc st 0 setgray
1 setlinewidth np 537 622 12 0.00 360.00 arc fil 0 setgray
np 537 622 12 0.00 360.00 arc st 1 setlinewidth np 537
622 12 0.00 360.00 arc st 1 setlinewidth np 537 518 12
0.00 360.00 arc st 1 setlinewidth np 1554 1170 a 1554
479 li 1124 479 li 1124 1170 li closepath st 1 setlinewidth
np 693 531 a closepath st 1 setlinewidth np 693 531 a
closepath st 1 setlinewidth np 967 818 a 967 831 li st
1 setlinewidth np 967 818 a 967 831 li st 1 setlinewidth
np 967 831 a 954 857 li st 1 setlinewidth np 967 831
a 954 857 li st 1 setlinewidth np 967 831 a 980 857 li
st 1 setlinewidth np 967 831 a 980 857 li st 1 setlinewidth
np 1228 557 a 1228 570 li st 1 setlinewidth np 1228 570
a 1215 596 li st 1 setlinewidth np 1228 570 a 1241 596
li st 1 setlinewidth np 1346 557 a 1346 570 li 1332 596
li st 1 setlinewidth np 1346 570 a 1358 596 li st 1 setlinewidth
np 1228 661 a 1228 674 li st 1 setlinewidth np 1228 674
a 1215 701 li st 1 setlinewidth np 1228 674 a 1241 701
li st 1 setlinewidth np 1346 661 a 1346 674 li 1332 701
li st 1 setlinewidth np 1346 674 a 1358 701 li st 1 setlinewidth
np 1228 766 a 1228 779 li 1215 805 li st 1 setlinewidth
np 1228 779 a 1241 805 li st 1 setlinewidth np 1346 766
a 1346 779 li 1332 805 li st 1 setlinewidth np 1346 779
a 1358 805 li st 1 setlinewidth np 536 544 a 524 570
li st 1 setlinewidth np 536 544 a 524 570 li st 1 setlinewidth
np 536 648 a 550 674 li st 1 setlinewidth np 536 648
a 550 674 li st 1 setlinewidth np 536 648 a 524 674 li
st 1 setlinewidth np 536 648 a 524 674 li st 1 setlinewidth
np 536 635 a 536 648 li st 1 setlinewidth np 536 635
a 536 648 li st 1 setlinewidth np 536 544 a 550 570 li
st 1 setlinewidth np 536 544 a 550 570 li st 1 setlinewidth
np 536 531 a 536 544 li st 1 setlinewidth np 536 531
a 536 544 li st 1163 1235 a FA(Compute)13 b(P)o(artition)915
922 y(Service)928 975 y(No)q(de)576 557 y(task)576 661
y(daemon)249 1324 y Fo(Figure)g(7.15)249 1361 y Fy(PVM)g(daemon)c(and)i
(tasks)f(on)h(MPP)h(host)291 1477 y FA(The)e(virtual)e(mac)o(hine)h
(hides)h(the)g(con\014guration)g(details)f(from)f(the)i(programmer.)k
(The)d(ph)o(ysical)249 1531 y(pro)q(cessors)19 b(can)d(b)q(e)h(a)g(net)
o(w)o(ork)f(of)g(w)o(orkstations,)g(or)h(they)g(can)f(b)q(e)i(the)f(no)
q(des)g(of)f(a)g(m)o(ulticom)o(-)249 1585 y(puter.)22
b(The)16 b(programmer)d(do)q(esn't)i(ha)o(v)o(e)g(to)g(kno)o(w)f(ho)o
(w)h(the)h(tasks)f(are)h(created)g(or)f(where)i(they)249
1639 y(are)d(running;)e(it)h(is)g(the)h(resp)q(onsibilit)o(y)f(of)f
(PVM)i(to)f(sc)o(hedule)h(user's)h(tasks)e(on)o(to)g(individual)e(pro-)
249 1693 y(cessors.)20 b(The)15 b(user)g(can,)f(ho)o(w)o(ev)o(er,)g
(tune)g(the)h(program)d(for)i(a)g(sp)q(eci\014c)h(con\014guration)f(to)
g(ac)o(hiev)o(e)249 1747 y(maxim)n(um)c(p)q(erformance,)j(at)h(the)g
(exp)q(ense)i(of)d(its)h(p)q(ortabilit)o(y)m(.)291 1801
y(Multipro)q(cessor)21 b(systems)g(can)f(b)q(e)h(divided)f(in)o(to)g(t)
o(w)o(o)g(main)e(categories:)32 b(message)20 b(passing)249
1855 y(and)c(shared)h(memory)m(.)k(In)16 b(the)g(\014rst)h(category)m
(,)f(PVM)g(is)g(no)o(w)g(supp)q(orted)h(on)e(In)o(tel's)h(iPSC/860)249
1909 y(and)f(P)o(aragon,)f(as)h(w)o(ell)f(as)h(Thinking)f(Mac)o(hine's)
h(CM-5.)20 b(P)o(orting)15 b(PVM)g(to)g(these)h(platforms)d(is)249
1963 y(straigh)o(tforw)o(ard,)d(b)q(ecause)i(the)f(message-passing)f
(functions)g(in)g(PVM)h(map)e(quite)h(naturally)g(on)o(to)249
2017 y(the)i(nativ)o(e)f(system)g(calls.)16 b(The)c(di\016cult)f(part)g
(is)g(the)h(loading)d(and)i(managemen)o(t)e(of)i(tasks.)17
b(In)11 b(the)249 2071 y(second)16 b(category)m(,)f(message)g(passing)f
(can)h(b)q(e)h(done)f(b)o(y)g(placing)f(the)i(message)e(bu\013ers)j(in)
d(shared)249 2125 y(memory)m(.)32 b(Access)22 b(to)d(these)i(bu\013ers)
g(m)o(ust)d(b)q(e)j(sync)o(hronized)f(with)f(m)o(utual)f(exclusion)i
(lo)q(c)o(ks.)249 2179 y(PVM)c(3.3)e(shared)j(memory)c(p)q(orts)j
(include)g(SGI)f(m)o(ultipro)q(cessor)g(mac)o(hines)f(running)i(IRIX)f
(5.x)249 2233 y(and)d(Sun)h(Microsystems,)f(Inc.,)g(m)o(ultipro)q
(cessor)g(mac)o(hines)f(running)h(Solaris)g(2.3)f(\(This)h(p)q(ort)h
(also)249 2287 y(runs)k(on)f(the)h(Cra)o(y)f(Researc)o(h,)h(Inc.,)f
(CS6400\).)25 b(In)16 b(addition,)f(CRA)m(Y)g(and)h(DEC)h(ha)o(v)o(e)f
(created)249 2341 y(PVM)e(p)q(orts)h(for)e(their)i(T3D)e(and)h(DEC)g
(2100)e(shared)j(memory)d(m)o(ultipro)q(cessors,)h(resp)q(ectiv)o(ely)m
(.)249 2424 y Fr(7.10.1)48 b(Message-P)o(assing)13 b(Arc)o(hitectures)p
eop
%%Page: 128 147
128 146 bop 249 251 a Fu(128)1356 b(Chapter)13 b(7)p
1 setgray 1 setlinewidth np 489 673 a 743 673 li 902
609 li 647 609 li closepath fil 0 setgray np 489 673
a 743 673 li 902 609 li 647 609 li closepath st 1 setlinewidth
np 489 673 a 743 673 li 902 609 li 647 609 li closepath
st 3 setlinewidth np 1029 641 a 1219 641 li st 3 setlinewidth
np 1156 657 a 1219 641 li 1156 625 li st 1 setgray 1
setlinewidth np 1394 673 a 1489 673 li 1585 641 li 1489
641 li 1386 673 li closepath fil 0 setgray np 1394 673
a 1489 673 li 1585 641 li 1489 641 li 1386 673 li closepath
st 1 setlinewidth np 1394 673 a 1489 673 li 1585 641
li 1489 641 li 1386 673 li closepath st 1 setgray 1 setlinewidth
np 1394 633 a 1489 633 li 1585 601 li 1489 601 li 1386
633 li closepath fil 0 setgray np 1394 633 a 1489 633
li 1585 601 li 1489 601 li 1386 633 li closepath st 1
setlinewidth np 1394 633 a 1489 633 li 1585 601 li 1489
601 li 1386 633 li closepath st 1 setgray 1 setlinewidth
np 1394 593 a 1489 593 li 1585 562 li 1489 562 li 1386
593 li closepath fil 0 setgray np 1394 593 a 1489 593
li 1585 562 li 1489 562 li 1386 593 li closepath st 1
setlinewidth np 1394 593 a 1489 593 li 1585 562 li 1489
562 li 1386 593 li closepath st 1 setgray 1 setlinewidth
np 1394 554 a 1489 554 li 1585 522 li 1489 522 li 1386
554 li closepath fil 0 setgray np 1394 554 a 1489 554
li 1585 522 li 1489 522 li 1386 554 li closepath st 1
setlinewidth np 1394 554 a 1489 554 li 1585 522 li 1489
522 li 1386 554 li closepath st 1 setgray 1 setlinewidth
np 1394 506 a 1489 506 li 1585 474 li 1489 474 li 1386
506 li closepath fil 0 setgray np 1394 506 a 1489 506
li 1585 474 li 1489 474 li 1386 506 li closepath st 1
setlinewidth np 1394 506 a 1489 506 li 1585 474 li 1489
474 li 1386 506 li closepath st 671 648 a Fe(Data)1061
688 y(p)o(vm)p 1121 688 10 2 v 10 w(pac)o(k\(\))1386
736 y(Fixed-size)e(F)n(ragmen)o(ts)249 814 y Fo(Figure)i(7.16)249
851 y Fy(P)o(ac)o(king:)h(breaking)9 b(data)h(in)o(to)h(\014xed-size)e
(fragmen)o(ts)249 974 y FA(A)k(t)o(ypical)f(MPP)i(system)f(has)g(one)g
(or)g(more)f(service)j(no)q(des)f(for)e(user)i(logins)e(and)h(a)g
(large)g(n)o(um)o(b)q(er)249 1028 y(of)i(compute)g(no)q(des)h(for)f(n)o
(um)o(b)q(er)f(crunc)o(hing.)23 b(The)16 b(PVM)f(daemon)f(runs)i(on)g
(one)f(of)g(the)h(service)249 1082 y(no)q(des)e(and)f(serv)o(es)i(as)f
(the)g(gatew)o(a)o(y)f(to)g(the)h(outside)g(w)o(orld.)j(A)c(task)h(can)
f(b)q(e)h(started)h(on)e(an)o(y)g(one)249 1136 y(of)g(the)g(service)i
(no)q(des)f(as)f(a)g(Unix)f(pro)q(cess)j(and)e(enrolls)g(in)g(PVM)g(b)o
(y)g(establishing)g(a)g(TCP)g(so)q(c)o(k)o(et)249 1190
y(connection)f(to)f(the)g(daemon.)16 b(The)11 b(only)g(w)o(a)o(y)f(to)h
(start)g(PVM)h(tasks)f(on)g(the)h(compute)e(no)q(des)i(is)f(via)249
1244 y(p)o(vm)p 331 1244 13 2 v 13 w(spa)o(wn\(\).)21
b(When)14 b(the)h(daemon)e(receiv)o(es)k(a)d(request)i(to)e(spa)o(wn)h
(new)g(tasks,)f(it)h(will)e(allo)q(cate)249 1298 y(a)h(set)g(of)g(no)q
(des)g(if)f(necessary)m(,)i(and)f(load)f(the)i(executable)g(on)o(to)e
(the)i(sp)q(eci\014ed)g(n)o(um)o(b)q(er)e(of)g(no)q(des.)291
1352 y(The)f(w)o(a)o(y)f(PVM)h(allo)q(cates)f(no)q(des)i(is)e(system)h
(dep)q(enden)o(t.)19 b(On)12 b(the)g(CM-5,)f(the)h(en)o(tire)h
(partition)249 1406 y(is)20 b(allo)q(cated)f(to)h(the)g(user.)38
b(On)20 b(the)g(iPSC/860,)g(PVM)g(will)f(get)h(a)f(sub)q(cub)q(e)j(big)
d(enough)h(to)249 1460 y(accommo)q(date)d(all)h(the)i(tasks)g(to)f(b)q
(e)g(spa)o(wned.)35 b(T)m(asks)19 b(created)i(with)d(t)o(w)o(o)h
(separate)h(calls)f(to)249 1514 y(p)o(vm)p 331 1514 V
13 w(spa)o(wn\(\))i(will)d(reside)j(in)f(di\013eren)o(t)h(sub)q(cub)q
(es,)i(although)c(they)h(can)g(exc)o(hange)h(messages)249
1568 y(directly)12 b(b)o(y)f(using)h(the)g(ph)o(ysical)f(no)q(de)h
(address.)19 b(The)12 b(NX)f(op)q(erating)h(system)f(limits)f(the)i(n)o
(um)o(b)q(er)249 1622 y(of)h(activ)o(e)h(sub)q(cub)q(es)i(system-wide)e
(to)f(10.)18 b(Pvm)p 1039 1622 V 13 w(spa)o(wn)c(will)f(fail)f(when)i
(this)g(limit)d(is)j(reac)o(hed)h(or)249 1676 y(when)h(there)h(are)f
(not)f(enough)h(no)q(des)g(a)o(v)n(ailable.)21 b(In)15
b(the)h(case)h(of)e(the)h(P)o(aragon,)f(PVM)h(uses)g(the)249
1729 y(default)c(partition)g(unless)h(a)g(di\013eren)o(t)g(one)g(is)f
(sp)q(eci\014ed)i(when)g(p)o(vmd)d(is)h(in)o(v)o(ok)o(ed.)17
b(Pvmd)11 b(and)h(the)249 1783 y(spa)o(wned)i(tasks)g(form)d(one)i
(gian)o(t)g(parallel)f(application.)k(The)e(user)g(can)g(set)g(the)g
(appropriate)f(NX)249 1837 y(en)o(vironmen)o(t)i(v)n(ariables)g(suc)o
(h)h(as)g(NX)p 876 1837 V 16 w(DFL)m(T)p 1004 1837 V
14 w(SIZE)g(b)q(efore)h(starting)f(PVM,)f(or)h(he)g(can)g(sp)q(ecify)
249 1891 y(the)f(equiv)n(alen)o(t)e(command-l)o(ine)e(argumen)o(ts)i
(to)h(p)o(vmd)e(\(i.e.,)h(p)o(vmd)f(-sz)j(32\).)291 1945
y(PVM)20 b(message-passing)g(functions)h(are)g(implemen)o(ted)d(in)i
(terms)h(of)e(the)j(nativ)o(e)e(send)h(and)249 1999 y(receiv)o(e)16
b(system)e(calls.)19 b(The)c(\\address")h(of)d(a)i(task)f(is)h(enco)q
(ded)g(in)f(the)h(task)g(id,)f(as)g(illustrated)g(in)249
2053 y(Figure)d(7.17.)16 b(This)11 b(enables)h(the)g(messages)f(to)g(b)
q(e)h(sen)o(t)g(directly)g(to)f(the)h(target)f(task,)h(without)f(an)o
(y)249 2111 y
 24818168 2841800 6775521 31048990 31772590 34009169 startTexFig
 249 2111 a
%%BeginDocument: fig7-mpptid.id

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def


/arrowHeight 10 def
/arrowWidth 5 def

/IdrawDict 52 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.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
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/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
/Times-Roman reencodeISO def
/Helvetica reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.733022 0 0 0.733022 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 54 62 ] concat
%I
106 626 106 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 54 62 ] concat
%I
122 626 122 602 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 146.5 700 ] concat
%I
[
(31)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 645.5 700 ] concat
%I
[
(0)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 149 659 ] concat
%I
[
(S)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 164 659 ] concat
%I
[
(G)
] Text
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 54 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 70 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 86 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 102 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 118 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 134 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 150 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 166 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 182 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 198 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 214 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 246 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 262 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 278 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 294 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 310 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
2 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 326 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 342 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 358 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 374 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 390 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 406 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 422 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 438 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 454 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 470 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 486 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Line
%I b 65535
1 0 0 [] 0 SetB
%I cfg LtGray
0.699992 0.699992 0.699992 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 502 62 ] concat
%I
138 626 138 602 Line
%I 1
End

Begin %I Rect
%I b 65535
1 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1 0 0 1 54 62 ] concat
%I
90 602 602 626 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 354.5 700 ] concat
%I
[
(18)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 162.5 700 ] concat
%I
[
(30)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-times-medium-r-normal-*-12-*-*-*-*-*-*-*
Times-Roman 12 SetF
%I t
[ 1 0 0 1 450.364 700 ] concat
%I
[
(12)
] Text
End

Begin %I Rect
none SetB %I b n
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.982218 0 0 0.982218 21.1623 -54.6918 ] concat
%I
213 735 285 752 Rect
End

Begin %I Rect
none SetB %I b n
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 1.19459 0 0 0.982218 244.999 -54.6918 ] concat
%I
213 735 285 752 Rect
End

Begin %I Rect
none SetB %I b n
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.982218 0 0 0.982218 171.101 -54.6918 ] concat
%I
213 735 285 752 Rect
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 505.806 680.276 ] concat
%I
[
(node number)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 398.44 680.993 ] concat
%I
[
(proc id)
] Text
End

Begin %I Line
%I b 65535
3 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1.07151 -0 -0 1.07151 -2.14302 55.7185 ] concat
%I
345 590 345 558 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 246.787 680.344 ] concat
%I
[
(host id)
] Text
End

End %I eop

showpage


end
%%EndDocument

 endTexFig
 249 2353 a Fo(Figure)i(7.17)249 2391 y Fy(Ho)o(w)f(TID)g(is)g(used)e
(to)h(distinguish)e(tasks)i(on)g(MPP)249 2493 y FA(help)k(from)e(the)i
(daemon.)k(The)c(no)q(de)h(n)o(um)o(b)q(er)e(is)g(normally)e(the)k
(logical)d(no)q(de)i(n)o(um)o(b)q(er,)e(but)i(the)p eop
%%Page: 129 148
129 147 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(129)p 3 setlinewidth np 543 665 a 630 665 li st 3 setlinewidth
np 567 680 a 630 665 li 567 649 li st 1 setgray 1 setlinewidth
np 916 696 a 1043 696 li 1146 665 li 1011 665 li 908
696 li closepath fil 0 setgray np 916 696 a 1043 696
li 1146 665 li 1011 665 li 908 696 li st 1 setlinewidth
np 916 696 a 1043 696 li 1146 665 li 1011 665 li 908
696 li st 1 setgray 1 setlinewidth np 924 657 a 1051
657 li 1154 625 li 1019 625 li 916 657 li closepath fil
0 setgray np 924 657 a 1051 657 li 1154 625 li 1019 625
li 916 657 li st 1 setlinewidth np 924 657 a 1051 657
li 1154 625 li 1019 625 li 916 657 li st 3 setlinewidth
np 1170 672 a 1258 672 li st 3 setlinewidth np 1194 688
a 1258 672 li 1194 657 li st 1 setlinewidth np 289 696
a 293 696 li st 1 setlinewidth np 309 696 a 313 696 li
st 1 setlinewidth np 329 696 a 333 696 li st 1 setlinewidth
np 350 696 a 354 696 li st 1 setlinewidth np 370 696
a 374 696 li st 1 setlinewidth np 391 696 a 395 696 li
st 1 setlinewidth np 411 696 a 415 696 li st 1 setlinewidth
np 416 696 a 420 695 li st 1 setlinewidth np 434 690
a 438 689 li st 1 setlinewidth np 452 684 a 456 683 li
st 1 setlinewidth np 470 678 a 474 677 li st 1 setlinewidth
np 488 672 a 492 671 li st 1 setlinewidth np 506 666
a 510 665 li st 1 setlinewidth np 511 664 a 507 664 li
st 1 setlinewidth np 491 664 a 487 664 li st 1 setlinewidth
np 470 664 a 466 664 li st 1 setlinewidth np 450 664
a 446 664 li st 1 setlinewidth np 429 664 a 425 664 li
st 1 setlinewidth np 409 664 a 405 664 li st 1 setlinewidth
np 389 664 a 385 664 li st 1 setlinewidth np 384 664
a 380 665 li st 1 setlinewidth np 366 670 a 362 671 li
st 1 setlinewidth np 348 676 a 344 677 li st 1 setlinewidth
np 329 682 a 325 683 li st 1 setlinewidth np 311 689
a 307 690 li st 1 setlinewidth np 294 695 a 290 696 li
st 1 setlinewidth np 289 648 a 293 648 li st 1 setlinewidth
np 309 648 a 313 648 li st 1 setlinewidth np 329 648
a 333 648 li st 1 setlinewidth np 350 648 a 354 648 li
st 1 setlinewidth np 370 648 a 374 648 li st 1 setlinewidth
np 391 648 a 395 648 li st 1 setlinewidth np 411 648
a 415 648 li st 1 setlinewidth np 416 648 a 420 647 li
st 1 setlinewidth np 434 642 a 438 641 li st 1 setlinewidth
np 452 636 a 456 635 li st 1 setlinewidth np 470 630
a 474 629 li st 1 setlinewidth np 488 624 a 492 623 li
st 1 setlinewidth np 506 618 a 510 617 li st 1 setlinewidth
np 511 617 a 507 617 li st 1 setlinewidth np 491 617
a 487 617 li st 1 setlinewidth np 470 617 a 466 617 li
st 1 setlinewidth np 450 617 a 446 617 li st 1 setlinewidth
np 429 617 a 425 617 li st 1 setlinewidth np 409 617
a 405 617 li st 1 setlinewidth np 389 617 a 385 617 li
st 1 setlinewidth np 384 617 a 380 618 li st 1 setlinewidth
np 366 623 a 362 624 li st 1 setlinewidth np 348 629
a 344 630 li st 1 setlinewidth np 329 635 a 325 636 li
st 1 setlinewidth np 311 641 a 307 642 li st 1 setlinewidth
np 294 647 a 290 648 li st 1 setlinewidth np 289 601
a 293 601 li st 1 setlinewidth np 309 601 a 313 601 li
st 1 setlinewidth np 329 601 a 333 601 li st 1 setlinewidth
np 350 601 a 354 601 li st 1 setlinewidth np 370 601
a 374 601 li st 1 setlinewidth np 391 601 a 395 601 li
st 1 setlinewidth np 411 601 a 415 601 li st 1 setlinewidth
np 416 601 a 420 600 li st 1 setlinewidth np 434 595
a 438 594 li st 1 setlinewidth np 452 589 a 456 588 li
st 1 setlinewidth np 470 583 a 474 582 li st 1 setlinewidth
np 488 577 a 492 576 li st 1 setlinewidth np 506 571
a 510 570 li st 1 setlinewidth np 511 569 a 507 569 li
st 1 setlinewidth np 491 569 a 487 569 li st 1 setlinewidth
np 470 569 a 466 569 li st 1 setlinewidth np 450 569
a 446 569 li st 1 setlinewidth np 429 569 a 425 569 li
st 1 setlinewidth np 409 569 a 405 569 li st 1 setlinewidth
np 389 569 a 385 569 li st 1 setlinewidth np 384 569
a 380 570 li st 1 setlinewidth np 366 575 a 362 576 li
st 1 setlinewidth np 348 581 a 344 582 li st 1 setlinewidth
np 329 587 a 325 588 li st 1 setlinewidth np 311 593
a 307 594 li st 1 setlinewidth np 294 599 a 290 600 li
st 1 setgray 1 setlinewidth np 924 615 a 1051 615 li
1154 584 li 1019 584 li 916 615 li closepath fil 0 setgray
np 924 615 a 1051 615 li 1154 584 li 1019 584 li 916
615 li st 1 setlinewidth np 924 615 a 1051 615 li 1154
584 li 1019 584 li 916 615 li st 1 setgray 1 setlinewidth
np 924 569 a 1051 569 li 1154 537 li 1019 537 li 916
569 li closepath fil 0 setgray np 924 569 a 1051 569
li 1154 537 li 1019 537 li 916 569 li st 1 setlinewidth
np 924 569 a 1051 569 li 1154 537 li 1019 537 li 916
569 li st 1 setgray 1 setlinewidth np 924 521 a 1051
521 li 1154 490 li 1019 490 li 916 521 li closepath fil
0 setgray np 924 521 a 1051 521 li 1154 490 li 1019 490
li 916 521 li st 1 setlinewidth np 924 521 a 1051 521
li 1154 490 li 1019 490 li 916 521 li st 1 setlinewidth
np 289 553 a 293 553 li st 1 setlinewidth np 309 553
a 313 553 li st 1 setlinewidth np 329 553 a 333 553 li
st 1 setlinewidth np 350 553 a 354 553 li st 1 setlinewidth
np 370 553 a 374 553 li st 1 setlinewidth np 391 553
a 395 553 li st 1 setlinewidth np 411 553 a 415 553 li
st 1 setlinewidth np 416 553 a 420 552 li st 1 setlinewidth
np 434 547 a 438 546 li st 1 setlinewidth np 452 541
a 456 540 li st 1 setlinewidth np 470 535 a 474 534 li
st 1 setlinewidth np 488 529 a 492 528 li st 1 setlinewidth
np 506 523 a 510 522 li st 1 setlinewidth np 511 521
a 507 521 li st 1 setlinewidth np 491 521 a 487 521 li
st 1 setlinewidth np 470 521 a 466 521 li st 1 setlinewidth
np 450 521 a 446 521 li st 1 setlinewidth np 429 521
a 425 521 li st 1 setlinewidth np 409 521 a 405 521 li
st 1 setlinewidth np 389 521 a 385 521 li st 1 setlinewidth
np 384 521 a 380 522 li st 1 setlinewidth np 366 527
a 362 528 li st 1 setlinewidth np 348 533 a 344 534 li
st 1 setlinewidth np 329 540 a 325 541 li st 1 setlinewidth
np 311 546 a 307 547 li st 1 setlinewidth np 294 552
a 290 553 li st 1 setlinewidth np 289 505 a 293 505 li
st 1 setlinewidth np 309 505 a 313 505 li st 1 setlinewidth
np 329 505 a 333 505 li st 1 setlinewidth np 350 505
a 354 505 li st 1 setlinewidth np 370 505 a 374 505 li
st 1 setlinewidth np 391 505 a 395 505 li st 1 setlinewidth
np 411 505 a 415 505 li st 1 setlinewidth np 416 505
a 420 504 li st 1 setlinewidth np 434 499 a 438 498 li
st 1 setlinewidth np 452 493 a 456 492 li st 1 setlinewidth
np 470 487 a 474 486 li st 1 setlinewidth np 488 481
a 492 480 li st 1 setlinewidth np 506 475 a 510 474 li
st 1 setlinewidth np 511 474 a 507 474 li st 1 setlinewidth
np 491 474 a 487 474 li st 1 setlinewidth np 470 474
a 466 474 li st 1 setlinewidth np 450 474 a 446 474 li
st 1 setlinewidth np 429 474 a 425 474 li st 1 setlinewidth
np 409 474 a 405 474 li st 1 setlinewidth np 389 474
a 385 474 li st 1 setlinewidth np 384 474 a 380 475 li
st 1 setlinewidth np 366 480 a 362 481 li st 1 setlinewidth
np 348 486 a 344 487 li st 1 setlinewidth np 329 492
a 325 493 li st 1 setlinewidth np 311 498 a 307 499 li
st 1 setlinewidth np 294 504 a 290 505 li st 1 setlinewidth
np 654 696 a 658 696 li st 1 setlinewidth np 674 696
a 678 696 li st 1 setlinewidth np 695 696 a 699 696 li
st 1 setlinewidth np 715 696 a 719 696 li st 1 setlinewidth
np 736 696 a 740 696 li st 1 setlinewidth np 756 696
a 760 696 li st 1 setlinewidth np 776 696 a 780 696 li
st 1 setlinewidth np 781 696 a 785 695 li st 1 setlinewidth
np 799 690 a 803 689 li st 1 setlinewidth np 817 684
a 821 683 li st 1 setlinewidth np 836 678 a 840 677 li
st 1 setlinewidth np 854 672 a 858 671 li st 1 setlinewidth
np 872 666 a 876 665 li st 1 setlinewidth np 876 664
a 872 664 li st 1 setlinewidth np 856 664 a 852 664 li
st 1 setlinewidth np 836 664 a 832 664 li st 1 setlinewidth
np 815 664 a 811 664 li st 1 setlinewidth np 795 664
a 791 664 li st 1 setlinewidth np 774 664 a 770 664 li
st 1 setlinewidth np 754 664 a 750 664 li st 1 setlinewidth
np 749 664 a 745 665 li st 1 setlinewidth np 731 670
a 727 671 li st 1 setlinewidth np 713 676 a 709 677 li
st 1 setlinewidth np 695 682 a 691 683 li st 1 setlinewidth
np 677 689 a 673 690 li st 1 setlinewidth np 659 695
a 655 696 li st 1 setgray 1 setlinewidth np 1281 688
a 1599 688 li 1790 625 li 1472 625 li closepath fil 0 setgray
np 1281 688 a 1599 688 li 1790 625 li 1472 625 li closepath
st 1 setlinewidth np 1281 688 a 1599 688 li 1790 625
li 1472 625 li closepath st 1115 815 a Fe(receiving)10
b(task)527 712 y(p)o(vm)p 587 712 10 2 v 10 w(send\(\))336
815 y(sending)h(task)718 744 y(\(bu\013ered\))121 b(p)o(vm)p
1032 744 V 10 w(recv\(\))1146 712 y(p)o(vm)p 1206 712
V 10 w(unpac)o(k\(\))1512 664 y(Data)249 893 y Fo(Figure)13
b(7.18)249 931 y Fy(Bu\013ering:)g(bu\013ering)c(one)i(fragmen)o(t)e(b)
o(y)i(receiving)e(task)i(un)o(til)f(p)o(vm)p 1204 931
11 2 v 11 w(recv\(\))g(is)i(called)249 1055 y FA(ph)o(ysical)j(address)
i(is)f(used)h(on)e(the)i(iPSC/860)d(to)i(allo)o(w)e(for)h(direct)i(in)o
(tercub)q(e)g(comm)o(unicatio)o(n.)249 1109 y(The)d(instance)h(n)o(um)o
(b)q(er)e(is)h(used)h(to)e(distinguish)h(tasks)g(running)g(on)f(the)i
(same)e(no)q(de.)291 1163 y(PVM)k(normally)e(uses)j(async)o(hronous)g
(send)g(primitiv)o(es)d(to)i(send)h(messages.)28 b(The)17
b(op)q(erating)249 1217 y(system)d(can)g(run)g(out)g(of)f(message)g
(handles)h(v)o(ery)g(quic)o(kly)f(if)g(a)h(lot)f(of)g(small)f(messages)
i(or)g(sev)o(eral)249 1271 y(large)19 b(messages)g(are)g(sen)o(t)h(at)f
(once.)35 b(PVM)19 b(will)f(b)q(e)h(forced)h(to)f(switc)o(h)g(to)g
(sync)o(hronous)h(send)249 1325 y(when)d(there)g(are)g(no)f(more)f
(message)h(handles)g(left)g(or)g(when)h(the)g(system)f(bu\013er)h(gets)
g(\014lled)e(up.)249 1379 y(T)m(o)j(impro)o(v)o(e)e(p)q(erformance,)j
(a)f(task)g(should)g(call)g(p)o(vm)p 1163 1379 13 2 v
13 w(send\(\))i(as)e(so)q(on)h(as)f(the)h(data)f(b)q(ecomes)249
1433 y(a)o(v)n(ailable,)8 b(so)h(\(one)h(hop)q(es\))h(when)f(the)g
(other)g(task)g(calls)f(p)o(vm)p 1221 1433 V 13 w(recv\(\),)j(the)e
(message)f(will)f(already)h(b)q(e)249 1487 y(in)i(its)h(bu\013er.)19
b(PVM)12 b(bu\013ers)h(one)f(incoming)e(pac)o(k)o(et)i(b)q(et)o(w)o
(een)h(calls)f(to)g(p)o(vm)p 1486 1487 V 13 w(send\(\)/p)o(vm)p
1712 1487 V 14 w(recv\(\).)249 1541 y(A)k(large)f(message,)g(ho)o(w)o
(ev)o(er,)g(is)g(brok)o(en)h(up)f(in)o(to)g(man)o(y)f(\014xed-size)i
(fragmen)o(ts)e(during)h(pac)o(king,)249 1595 y(and)20
b(eac)o(h)h(piece)h(is)e(sen)o(t)i(separately)m(.)38
b(Bu\013ering)21 b(one)g(of)e(these)j(fragmen)o(ts)e(is)g(not)h
(su\016cien)o(t)249 1649 y(unless)13 b(p)o(vm)p 452 1649
V 13 w(send\(\))g(and)e(p)o(vm)p 748 1649 V 14 w(recv\(\))i(are)f(sync)
o(hronized.)18 b(Figures)12 b(7.16)f(and)g(7.18)g(illustrate)g(this)249
1703 y(pro)q(cess.)291 1757 y(The)j(fron)o(t)g(end)g(of)f(an)h(MPP)h
(system)e(is)h(treated)h(as)f(a)g(regular)g(w)o(orkstation.)k(Programs)
13 b(to)g(b)q(e)249 1811 y(run)j(there)h(should)f(b)q(e)h(link)o(ed)e
(with)g(the)i(regular)f(PVM)g(library)m(,)f(whic)o(h)g(relies)i(on)e
(Unix)h(so)q(c)o(k)o(ets)249 1865 y(to)h(transmit)e(messages.)28
b(Normally)14 b(one)j(should)g(a)o(v)o(oid)e(running)i(pro)q(cesses)i
(on)e(the)g(fron)o(t)g(end,)249 1919 y(b)q(ecause)c(comm)o(unicatio)o
(n)8 b(b)q(et)o(w)o(een)13 b(those)f(pro)q(cesses)i(and)c(the)i(no)q
(de)g(pro)q(cesses)h(m)o(ust)d(go)h(through)249 1973
y(the)j(PVM)g(daemon)e(and)h(a)g(TCP)h(so)q(c)o(k)o(et)g(link.)j(Most)d
(of)f(the)h(computation)d(and)j(comm)o(uni)o(cation)249
2027 y(should)k(tak)o(e)f(place)h(on)g(the)g(compute)f(no)q(des)i(in)e
(order)h(to)g(tak)o(e)g(adv)n(an)o(tage)e(of)i(the)g(pro)q(cessing)249
2081 y(p)q(o)o(w)o(er)c(of)g(these)h(no)q(des)g(and)e(the)i(fast)f(in)o
(terconnects)h(b)q(et)o(w)o(een)h(them.)291 2135 y(Since)g(the)h(PVM)g
(library)e(for)h(the)h(fron)o(t)f(end)h(is)f(di\013eren)o(t)h(from)e
(the)i(one)f(for)g(the)h(no)q(des,)g(the)249 2189 y(executable)f(for)e
(the)h(fron)o(t)f(end)h(m)o(ust)e(b)q(e)i(di\013eren)o(t)g(from)e(the)i
(one)g(compiled)d(for)j(the)g(no)q(des.)20 b(An)249 2242
y(SPMD)11 b(program,)f(for)h(example,)e(has)j(only)e(one)h(source)i
(\014le,)e(but)g(the)h(ob)r(ject)g(co)q(de)g(m)o(ust)e(b)q(e)i(link)o
(ed)249 2296 y(with)h(the)g(fron)o(t)f(end)i(and)e(no)q(de)h(PVM)h
(libraries)e(separately)i(to)e(pro)q(duce)i(t)o(w)o(o)e(executables)j
(if)d(it)g(is)249 2350 y(to)i(b)q(e)g(started)h(from)d(the)j(fron)o(t)e
(end.)19 b(An)13 b(alternativ)o(e)h(w)o(ould)f(b)q(e)h(a)g(\\hostless")
g(SPMD)g(program,)249 2404 y(whic)o(h)g(could)g(b)q(e)g(spa)o(wned)g
(from)f(the)h(PVM)g(console.)291 2458 y(T)m(able)f(7.1)g(sho)o(ws)h
(the)h(nativ)o(e)e(system)h(calls)g(used)h(b)o(y)e(the)i(corresp)q
(onding)g(PVM)f(functions)g(on)p eop
%%Page: 130 149
130 148 bop 249 251 a Fu(130)1356 b(Chapter)13 b(7)249
497 y Fo(T)m(able)g(7.1)249 534 y Fy(Implemen)o(ta)o(tion)8
b(of)j(PVM)i(system)d(calls)p 357 577 1379 2 v 357 587
V 356 641 2 54 v 436 624 a FA(PVM)p 611 641 V 145 w(iPSC860)p
898 641 V 121 w(P)o(aragon)p 1160 641 V 292 w(CM-5)p
1734 641 V 357 642 1379 2 v 357 652 V 356 706 2 54 v
382 690 a(p)o(vm)p 464 690 13 2 v 13 w(spa)o(wn)p 611
706 2 54 v 50 w(getcub)q(e/load)p 898 706 V 69 w(nx)p
989 690 13 2 v 15 w(loadv)o(e)p 1160 706 2 54 v 294 w(fork)p
1734 706 V 357 708 1379 2 v 356 762 2 54 v 398 746 a(p)o(vm)p
480 746 13 2 v 13 w(send)p 611 762 2 54 v 78 w(isend/csend)p
898 762 V 63 w(isend/csend)p 1160 762 V 52 w(CMMD)p 1326
746 13 2 v 15 w(send)p 1421 746 V 15 w(async/)p 1557
746 V 16 w(noblo)q(c)o(k)p 1734 762 2 54 v 357 764 1379
2 v 356 818 2 54 v 400 801 a(p)o(vm)p 482 801 13 2 v
14 w(recv)p 611 818 2 54 v 144 w(irecv)p 898 818 V 188
w(irecv)p 1160 818 V 181 w(CMMD)p 1393 801 13 2 v 14
w(receiv)o(e)p 1528 801 V 17 w(async)p 1734 818 2 54
v 357 819 1379 2 v 356 873 2 54 v 385 857 a(p)o(vm)p
467 857 13 2 v 13 w(mcast)p 611 873 2 54 v 109 w(gsendx)p
898 873 V 151 w(gsendx)p 1160 873 V 95 w(CMMD)p 1326
857 13 2 v 15 w(send)p 1421 857 V 15 w(async/)p 1557
857 V 16 w(noblo)q(c)o(k)p 1734 873 2 54 v 357 875 1379
2 v 357 885 V 249 1001 a(v)n(arious)j(platforms.)291
1055 y(The)j(CM-5)f(is)h(somewhat)e(di\013eren)o(t)j(from)d(the)i(In)o
(tel)g(systems)g(b)q(ecause)h(it)e(requires)i(a)f(sp)q(ecial)249
1109 y(host)g(pro)q(cess)i(for)e(eac)o(h)g(group)g(of)f(tasks)h(spa)o
(wned.)25 b(This)16 b(pro)q(cess)i(enrolls)d(in)h(PVM)g(and)g(rela)o
(ys)249 1163 y(messages)f(b)q(et)o(w)o(een)h(p)o(vmd)d(and)i(the)g(no)q
(de)g(programs.)k(This,)c(needless)h(to)f(sa)o(y)m(,)f(adds)h(ev)o(en)g
(more)249 1217 y(o)o(v)o(erhead)f(to)g(daemon-task)f(comm)o(uni)o
(cations.)291 1271 y(Another)19 b(restrictiv)o(e)g(feature)g(of)f(the)h
(CM-5)f(is)g(that)h(all)e(no)q(des)i(in)f(the)h(same)e(partition)h(are)
249 1325 y(sc)o(heduled)12 b(as)f(a)f(single)h(unit.)16
b(The)11 b(partitions)g(are)g(normally)d(con\014gured)j(b)o(y)g(the)g
(system)f(manager)249 1379 y(and)16 b(eac)o(h)h(partition)f(m)o(ust)f
(con)o(tain)h(at)h(least)f(16)g(pro)q(cessors.)28 b(User)17
b(programs)f(are)g(run)h(on)f(the)249 1433 y(en)o(tire)i(partition)d(b)
o(y)i(default.)26 b(Although)17 b(it)f(is)h(p)q(ossible)g(to)f(idle)h
(some)e(of)i(the)g(pro)q(cessors)i(in)d(a)249 1487 y(partition,)c(as)i
(PVM)f(do)q(es)i(when)e(few)o(er)h(no)q(des)h(are)e(called)g(for,)g
(there)i(is)e(no)g(easy)h(w)o(a)o(y)f(to)g(harness)249
1541 y(the)k(p)q(o)o(w)o(er)g(of)f(the)h(idle)f(pro)q(cessors.)29
b(Th)o(us,)17 b(if)e(PVM)i(spa)o(wns)g(t)o(w)o(o)f(groups)h(of)f
(tasks,)h(they)h(will)249 1595 y(time-share)13 b(the)i(partition,)d
(and)i(an)o(y)g(in)o(tergroup)g(tra\016c)g(m)o(ust)e(go)i(through)g(p)o
(vmd.)291 1649 y(Additionally)m(,)g(CMMD)i(has)h(no)f(supp)q(ort)i(for)
e(m)o(ulticasting.)24 b(Th)o(us,)17 b(p)o(vm)p 1519 1649
13 2 v 13 w(mcast\(\))g(is)f(imple-)249 1703 y(men)o(ted)e(with)f(a)h
(lo)q(op)f(of)g(CMMD)p 803 1703 V 15 w(async)p 918 1703
V 15 w(send\(\).)249 1786 y Fr(7.10.2)48 b(Shared-Memory)14
b(Arc)o(hitectur)o(es)249 1869 y FA(The)k(shared-memory)d(arc)o
(hitecture)k(pro)o(vides)f(a)f(v)o(ery)g(e\016cien)o(t)h(medium)c(for)j
(pro)q(cesses)j(to)d(ex-)249 1923 y(c)o(hange)g(data.)27
b(In)16 b(our)h(implemen)o(tation,)d(eac)o(h)j(task)g(o)o(wns)g(a)f
(shared)i(bu\013er)g(created)g(with)e(the)249 1977 y(shmget\(\))h
(system)f(call.)27 b(The)17 b(task)g(id)f(is)h(used)h(as)f(the)h(\\k)o
(ey")e(to)h(the)g(shared)h(segmen)o(t.)27 b(If)16 b(the)249
2030 y(k)o(ey)h(is)f(b)q(eing)h(used)h(b)o(y)e(another)h(user,)h(PVM)f
(will)f(assign)g(a)h(di\013eren)o(t)g(id)g(to)f(the)h(task.)27
b(A)17 b(task)249 2084 y(comm)o(unicates)d(with)h(other)h(tasks)g(b)o
(y)f(mapping)e(their)j(message)f(bu\013ers)i(in)o(to)e(its)g(o)o(wn)h
(memory)249 2138 y(space.)291 2192 y(T)m(o)d(enroll)g(in)h(PVM,)g(the)g
(task)g(\014rst)h(writes)g(its)f(Unix)f(pro)q(cess)j(id)e(in)o(to)f(p)o
(vmd's)f(incoming)g(b)q(o)o(x.)249 2246 y(It)i(then)h(lo)q(oks)e(for)g
(the)i(assigned)f(task)g(id)g(in)f(p)o(vmd's)f(pid)p
Ft(!)p FA(TID)h(table.)291 2300 y(The)20 b(message)g(bu\013er)h(is)f
(divided)g(in)o(to)f(pages,)j(eac)o(h)e(of)g(whic)o(h)g(holds)g(one)g
(fragmen)o(t)f(\(Fig-)249 2354 y(ure)e(7.19\).)25 b(PVM's)16
b(page)h(size)g(can)f(b)q(e)h(a)f(m)o(ultiple)e(of)i(the)h(system)f
(page)h(size.)26 b(Eac)o(h)17 b(page)f(has)249 2408 y(a)e(header,)h
(whic)o(h)f(con)o(tains)h(the)g(lo)q(c)o(k)f(and)g(the)h(reference)i
(coun)o(t.)i(The)c(\014rst)g(few)g(pages)f(are)h(used)249
2462 y(as)g(the)f(incoming)f(b)q(o)o(x,)g(while)h(the)h(rest)h(of)d
(the)i(pages)g(hold)f(outgoing)f(fragmen)o(ts)g(\(Figure)i(7.20\).)p
eop
%%Page: 131 150
131 149 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(131)p 1 setlinewidth np 1138 690 a 1138 612 li 564
612 li 564 690 li closepath st 1 setlinewidth np 1138
768 a 1138 716 li 564 716 li 564 768 li closepath st
1 setlinewidth np 1138 716 a 1138 690 li 564 690 li 564
716 li closepath st 1 setlinewidth np 1138 1290 a 1138
768 li 564 768 li 564 1290 li closepath st 721 534 a
Fq(P)o(age)16 b(La)o(y)o(out)799 664 y(lo)q(c)o(k)708
755 y(reference)e(coun)o(t)760 1003 y(fragmen)o(t)1204
729 y Fc(g)760 938 y Fq(message)1282 716 y(page)j(header)249
1379 y Fo(Figure)c(7.19)249 1416 y Fy(Structure)c(of)i(a)h(PVM)g(page)
249 1539 y FA(T)m(o)j(send)i(a)f(message,)g(the)h(task)f(\014rst)h(pac)
o(ks)f(the)h(message)e(b)q(o)q(dy)h(in)o(to)g(its)g(bu\013er,)h(then)g
(deliv)o(ers)249 1593 y(the)g(message)f(header)i(\(whic)o(h)e(con)o
(tains)g(the)h(sender's)h(TID)e(and)h(the)g(lo)q(cation)e(of)h(the)h
(data\))f(to)249 1647 y(the)e(incoming)c(b)q(o)o(x)j(of)f(the)h(in)o
(tended)h(recipien)o(t.)k(When)13 b(p)o(vm)p 1247 1647
13 2 v 14 w(recv\(\))h(is)f(called,)f(PVM)h(c)o(hec)o(ks)h(the)249
1701 y(incoming)h(b)q(o)o(x,)j(lo)q(cates)g(and)g(unpac)o(ks)g(the)g
(messages)g(\(if)f(an)o(y\),)h(and)f(decreases)j(the)f(reference)249
1755 y(coun)o(t)f(so)g(the)g(space)h(can)f(b)q(e)g(reused.)31
b(If)18 b(a)f(task)h(is)f(not)h(able)f(to)h(deliv)o(er)g(the)g(header)h
(directly)249 1808 y(b)q(ecause)d(the)e(receiving)g(b)q(o)o(x)g(is)g
(full,)e(it)h(will)g(blo)q(c)o(k)g(un)o(til)g(the)i(other)f(task)g(is)g
(ready)m(.)291 1862 y(Inevitably)c(some)g(o)o(v)o(erhead)h(will)f(b)q
(e)h(incurred)h(when)g(a)f(message)f(is)h(pac)o(k)o(ed)g(in)o(to)g(and)
g(unpac)o(k)o(ed)249 1916 y(from)h(the)i(bu\013er,)h(as)e(is)h(the)g
(case)h(with)e(all)g(other)h(PVM)g(implemen)o(tations.)h(If)e(the)i
(bu\013er)f(is)g(full,)249 1970 y(then)g(the)g(data)e(m)o(ust)h
(\014rst)h(b)q(e)f(copied)h(in)o(to)e(a)h(temp)q(orary)g(bu\013er)h(in)
e(the)i(pro)q(cess's)h(priv)n(ate)e(space)249 2024 y(and)h(later)g
(transferred)h(to)f(the)h(shared)f(bu\013er.)291 2078
y(Memory)i(con)o(ten)o(tion)h(is)g(usually)g(not)g(a)g(problem.)27
b(Eac)o(h)18 b(pro)q(cess)h(has)e(its)h(o)o(wn)f(bu\013er,)h(and)249
2132 y(eac)o(h)12 b(page)g(of)f(the)h(bu\013er)h(has)f(its)f(o)o(wn)g
(lo)q(c)o(k.)17 b(Only)12 b(the)g(page)f(b)q(eing)h(written)g(to)g(is)f
(lo)q(c)o(k)o(ed,)h(and)f(no)249 2186 y(pro)q(cess)i(should)e(b)q(e)h
(trying)e(to)h(read)h(from)d(this)i(page)h(b)q(ecause)g(the)g(header)g
(has)f(not)g(b)q(een)i(sen)o(t)f(out.)249 2240 y(Di\013eren)o(t)j(pro)q
(cesses)h(can)f(read)f(from)f(the)h(same)g(page)g(without)f(in)o
(terfering)h(with)g(eac)o(h)h(other,)f(so)249 2294 y(m)o(ulticasting)e
(will)g(b)q(e)i(e\016cien)o(t)h(\(they)f(do)g(ha)o(v)o(e)f(to)h
(decrease)i(the)e(coun)o(ter)h(afterw)o(ards,)f(resulting)249
2348 y(in)j(some)g(con)o(ten)o(tion\).)29 b(The)18 b(only)f(time)f(con)
o(ten)o(tion)i(o)q(ccurs)h(is)e(when)h(t)o(w)o(o)f(or)h(more)e(pro)q
(cesses)249 2402 y(trying)c(to)g(deliv)o(er)g(the)g(message)g(header)h
(to)f(the)g(same)g(pro)q(cess)h(at)f(the)h(same)e(time.)16
b(But)d(since)f(the)249 2456 y(header)j(is)f(v)o(ery)g(short)g(\(16)g
(b)o(ytes\),)g(suc)o(h)h(con)o(ten)o(tion)f(should)f(not)h(cause)h(an)o
(y)e(signi\014can)o(t)h(dela)o(y)m(.)p eop
%%Page: 132 151
132 150 bop 249 251 a Fu(132)1356 b(Chapter)13 b(7)p
1 setlinewidth np 915 637 a 915 581 li 555 581 li 555
637 li closepath st 1 setlinewidth np 915 694 a 915 637
li 555 637 li 555 694 li closepath st 1 setlinewidth
np 915 1245 a 915 694 li 555 694 li 555 1245 li closepath
st 1 setlinewidth np 1523 637 a 1523 581 li 1163 581
li 1163 637 li closepath st 1 setlinewidth np 1523 1245
a 1523 637 li 1163 637 li 1163 1245 li closepath st 679
614 a FC(in)o(b)q(o)o(x)623 671 y(pid-tid)k(table)645
840 y(outgoing)668 896 y(pages)713 963 y(.)713 997 y(.)713
1031 y(.)1276 817 y(outgoing)1298 885 y(pages)1343 941
y(.)1343 986 y(.)1343 1031 y(.)1298 614 y(in)o(b)q(o)o(x)577
524 y(p)o(vmd)f(msg)e(bu\013er)285 b(task)14 b(msg)h(bu\013er)249
1330 y Fo(Figure)e(7.20)249 1367 y Fy(Structures)c(of)i(shared)f
(message)g(bu\013ers)291 1490 y FA(T)m(o)i(minimi)o(ze)f(the)j(p)q
(ossibilit)o(y)f(of)f(page)i(faults,)e(PVM)i(attempts)f(to)h(use)g
(only)e(a)i(small)d(n)o(um)o(b)q(er)249 1544 y(of)k(pages)h(in)g(the)g
(message)g(bu\013er)g(and)g(recycle)h(them)e(as)h(so)q(on)g(as)g(they)g
(ha)o(v)o(e)g(b)q(een)g(read)h(b)o(y)e(all)249 1598 y(in)o(tended)g
(recipien)o(ts.)291 1652 y(Once)k(a)f(task's)g(bu\013er)i(has)e(b)q
(een)h(mapp)q(ed,)f(it)g(will)f(not)h(b)q(e)h(unmapp)q(ed)e(unless)i
(the)g(system)249 1706 y(limits)d(the)j(n)o(um)o(b)q(er)e(of)h(mapp)q
(ed)f(segmen)o(ts.)32 b(This)18 b(strategy)h(sa)o(v)o(es)g(time)e(for)g
(an)o(y)h(subsequen)o(t)249 1760 y(message)c(exc)o(hanges)h(with)e(the)
i(same)e(pro)q(cess.)249 1843 y Fr(7.10.3)48 b(Optimized)13
b(Send)h(and)h(Receiv)o(e)g(on)g(MPP)249 1926 y FA(In)g(the)h(original)
e(implem)o(en)o(tation,)e(all)i(user)j(messages)e(are)h(bu\013ered)h(b)
o(y)e(PVM.)g(The)h(user)g(m)o(ust)249 1980 y(pac)o(k)i(the)g(data)g(in)
o(to)f(a)h(PVM)g(bu\013er)h(b)q(efore)f(sending)h(it,)f(and)f(unpac)o
(k)h(the)h(data)e(after)h(it)g(has)249 2034 y(b)q(een)g(receiv)o(ed)g
(in)o(to)e(an)h(in)o(ternal)f(bu\013er.)28 b(This)17
b(approac)o(h)f(w)o(orks)h(w)o(ell)f(on)h(systems)g(with)f(rela-)249
2088 y(tiv)o(ely)d(high)g(comm)o(unication)e(latency)m(,)i(suc)o(h)h
(as)g(the)g(Ethernet.)20 b(On)14 b(MPP)g(systems)g(the)h(pac)o(king)249
2142 y(and)20 b(unpac)o(king)f(in)o(tro)q(duce)h(substan)o(tial)f(o)o
(v)o(erhead.)36 b(T)m(o)19 b(solv)o(e)h(this)f(problem)g(w)o(e)g(added)
i(t)o(w)o(o)249 2196 y(new)d(PVM)f(functions,)h(namely)d(p)o(vm)p
876 2196 13 2 v 14 w(psend\(\))j(and)f(p)o(vm)p 1207
2196 V 13 w(precv\(\).)30 b(These)18 b(functions)f(com)o(bine)249
2249 y(pac)o(king/unpac)o(king)e(and)h(sending/receiving)g(in)o(to)f
(one)i(single)e(step.)26 b(They)16 b(could)g(b)q(e)h(mapp)q(ed)249
2303 y(directly)e(in)o(to)f(the)i(nativ)o(e)e(message)h(passing)f
(primitiv)o(es)f(a)o(v)n(ailable)g(on)h(the)i(system,)e(doing)g(a)o(w)o
(a)o(y)249 2357 y(with)j(in)o(ternal)g(bu\013ers)h(altogether.)29
b(On)17 b(the)h(P)o(aragon)f(these)h(new)g(functions)f(giv)o(e)g
(almost)e(the)249 2411 y(same)e(p)q(erformance)h(as)g(the)g(nativ)o(e)g
(ones.)p eop
%%Page: 133 152
133 151 bop 249 251 a Fu(Ho)o(w)13 b(PVM)f(W)m(orks)1241
b(133)291 507 y FA(Although)16 b(the)h(user)g(can)g(use)g(b)q(oth)g(p)o
(vm)p 977 507 13 2 v 13 w(psend\(\))h(and)e(p)o(vm)p
1306 507 V 14 w(send\(\))h(in)f(the)h(same)f(program,)249
561 y(on)j(MPP)h(the)g(p)o(vm)p 585 561 V 13 w(psend\(\))h(m)o(ust)d(b)
q(e)i(matc)o(hed)f(with)g(p)o(vm)p 1277 561 V 13 w(precv\(\),)i(and)f
(p)o(vm)p 1619 561 V 13 w(send\(\))g(with)249 615 y(p)o(vm)p
331 615 V 13 w(recv\(\).)p eop
%%Page: 134 153
134 152 bop eop
%%Page: 135 154
135 153 bop 249 325 a Fp(8)25 b FD(Adv)m(anced)17 b(T)l(opics)249
628 y(8.1)52 b(XPVM)249 736 y FA(It)13 b(is)g(often)g(useful)h(and)f
(alw)o(a)o(ys)f(reassuring)i(to)f(b)q(e)g(able)g(to)g(see)i(the)e
(presen)o(t)i(con\014guration)e(of)f(the)249 790 y(virtual)k(mac)o
(hine)g(and)h(the)g(status)h(of)f(the)g(hosts.)28 b(It)17
b(w)o(ould)g(b)q(e)g(ev)o(en)h(more)e(useful)h(if)f(the)i(user)249
844 y(could)d(also)g(see)i(what)e(his)g(program)f(is)h(doing|what)f
(tasks)i(are)g(running,)f(where)h(messages)g(are)249
897 y(b)q(eing)d(sen)o(t,)g(etc.)18 b(The)13 b(PVM)g(GUI)g(called)f
(XPVM)h(w)o(as)f(dev)o(elop)q(ed)i(to)e(displa)o(y)g(this)g
(information,)249 951 y(and)i(more.)291 1005 y(XPVM)h(com)o(bines)f
(the)i(capabilities)e(of)h(the)h(PVM)f(console,)g(a)g(p)q(erformance)g
(monitor,)e(and)i(a)249 1059 y(call-lev)o(el)h(debugger)h(in)o(to)f(a)h
(single,)f(easy-to-use)i(X-Windo)o(ws)e(in)o(terface.)27
b(XPVM)18 b(is)e(a)o(v)n(ailable)249 1113 y(from)i(netlib)h(in)f(the)i
(directory)g(p)o(vm3/xp)o(vm.)31 b(It)19 b(is)g(distributed)h(as)g
(precompiled,)f(ready-to-)249 1167 y(run)c(executables)h(for)e(SUN4,)g
(RS6K,)g(ALPHA,)g(SUN4SOL2,)g(HPP)m(A,)g(and)h(SGI5.)k(The)c(XPVM)249
1221 y(source)g(is)f(also)f(a)o(v)n(ailable)f(for)h(compiling)f(on)h
(other)i(mac)o(hines.)291 1275 y(XPVM)20 b(is)g(written)h(en)o(tirely)f
(in)g(C)g(using)g(the)h(TCL/TK)f([12)o(])g(to)q(olkit)f(and)h(runs)g
(just)h(lik)o(e)249 1329 y(another)12 b(PVM)g(task.)17
b(If)12 b(a)f(user)i(wishes)f(to)f(build)g(XPVM)h(from)e(the)i(source,)
h(he)f(m)o(ust)e(\014rst)j(obtain)249 1383 y(and)h(install)f(the)i
(TCL/TK)f(soft)o(w)o(are)g(on)g(his)g(system.)19 b(TCL)14
b(and)g(TK)g(w)o(ere)h(dev)o(elop)q(ed)g(b)o(y)f(John)249
1437 y(Ousterhout)e(at)f(Berk)o(eley)h(and)e(can)h(b)q(e)h(obtained)e
(b)o(y)h(anon)o(ymous)e(ftp)h(to)h Fs(sprite.berkeley.ed)o(u)249
1491 y FA(The)16 b(TCL)f(and)h(XPVM)g(source)h(distributions)e(eac)o(h)
h(con)o(tain)f(a)g(README)h(\014le)f(that)h(describ)q(es)249
1545 y(the)f(most)d(up-to-date)i(installation)e(pro)q(cedure)k(for)e
(eac)o(h)g(pac)o(k)n(age)f(resp)q(ectiv)o(ely)m(.)291
1599 y(Figure)h(8.1)e(sho)o(ws)j(a)e(snapshot)i(of)e(XPVM)h(in)g(use.)
291 1653 y(Lik)o(e)f(the)i(PVM)f(console,)g(XPVM)g(will)e(start)j(PVM)f
(if)f(PVM)h(is)g(not)g(already)g(running,)f(or)h(will)249
1707 y(attac)o(h)k(to)f(the)i(lo)q(cal)d(p)o(vmd)g(if)h(it)h(is.)29
b(The)18 b(console)g(can)g(tak)o(e)g(an)f(optional)f(host\014le)i
(argumen)o(t)249 1761 y(whereas)i(XPVM)f(alw)o(a)o(ys)e(reads)i
Fs($HOME/.xpvm)p 1053 1761 14 2 v 14 w(hosts)e FA(as)i(its)f
(host\014le.)32 b(If)18 b(this)h(\014le)f(do)q(es)h(not)249
1815 y(exist,)13 b(then)h(XPVM)g(just)f(starts)i(PVM)e(on)g(the)h(lo)q
(cal)e(host)i(\(or)f(attac)o(hes)h(to)f(the)h(existing)f(PVM\).)249
1869 y(In)18 b(t)o(ypical)f(use,)i(the)g(host\014le)f(.xp)o(vm)p
872 1869 13 2 v 12 w(hosts)h(con)o(tains)f(a)f(list)h(of)f(hosts)h
(prep)q(ended)i(with)e(an)f(&.)249 1923 y(These)f(hostnames)f(then)h
(get)f(added)g(to)g(the)h FB(Hosts)f FA(men)o(u)f(for)g(addition)g(and)
h(deletion)g(from)e(the)249 1977 y(virtual)g(mac)o(hine)g(b)o(y)g(clic)
o(king)g(on)h(them.)291 2031 y(The)i(top)g(ro)o(w)g(of)f(buttons)i(p)q
(erform)e(console-lik)o(e)g(functions.)25 b(The)16 b
FB(Hosts)g FA(button)g(displa)o(ys)f(a)249 2085 y(men)o(u)d(of)g
(hosts.)18 b(Clic)o(king)11 b(on)h(a)h(host)g(toggles)f(whether)i(it)e
(is)h(added)g(or)f(deleted)i(from)d(the)i(virtual)249
2139 y(mac)o(hine.)j(A)o(t)c(the)g(b)q(ottom)f(of)g(the)h(men)o(u)f(is)
h(an)f(option)g(for)h(adding)f(a)g(host)h(not)g(listed.)17
b(The)12 b FB(T)m(asks)249 2193 y FA(button)h(brings)g(up)g(a)f(men)o
(u)g(whose)i(most-used)e(selection)i(is)e FB(sp)n(awn)p
FA(.)18 b(Selecting)13 b(spa)o(wn)g(brings)g(up)249 2247
y(a)g(windo)o(w)f(where)i(one)f(can)g(set)h(the)g(executable)g(name,)d
(spa)o(wn)i(\015ags,)g(start)g(p)q(osition,)f(n)o(um)o(b)q(er)h(of)249
2301 y(copies)h(to)f(start,)h(etc.)19 b(By)13 b(default,)g(XPVM)h
(turns)g(on)f(tracing)h(in)f(all)f(tasks)i(\(and)f(their)h(c)o
(hildren\))249 2355 y(started)g(inside)g(XPVM.)f(Clic)o(king)f(on)h
FB(Start)f FA(in)h(the)h(spa)o(wn)f(windo)o(w)f(starts)j(the)e(task,)g
(whic)o(h)h(will)249 2408 y(then)j(app)q(ear)g(in)f(the)h(space-time)f
(view.)25 b(The)17 b FB(R)n(eset)g FA(button)f(has)h(a)f(men)o(u)f(for)
h(resetting)i(PVM)249 2462 y(\(i.e.,)f(kill)e(all)h(PVM)h(tasks\))h(or)
f(resetting)h(di\013eren)o(t)g(parts)g(of)e(XPVM.)h(The)h
FB(Quit)e FA(button)i(exits)p eop
%%Page: 136 155
136 154 bop 249 251 a Fu(136)1356 b(Chapter)13 b(8)296
759 y
 23681433 21313290 0 6578176 36311531 34206515 startTexFig
 296 759 a
%%BeginDocument: xpvm1.bw.p.ps

/bitdump % stk: width, height, iscale
% dump a bit image with lower left corner at current origin,
% scaling by iscale (iscale=1 means 1/300 inch per pixel)
{
	% read arguments
	/iscale exch def
	/height exch def
	/width exch def

	% scale appropriately
	width iscale mul height iscale mul scale

	% allocate space for one scanline of input
	/picstr % picstr holds one scan line
		width 7 add 8 idiv % width of image in bytes = ceiling(width/8)
		string
		def

	% read and dump the image
	width height 1 [width 0 0 height neg 0 height]
	{ currentfile picstr readhexstring pop }
	image
} def
72 300 div dup scale
125 774 translate
1150 876 2 bitdump
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003
555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555554000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa8000000000000000000000000000000000000000000000000000000000000001ffffffffffffffffffffffffffffffffffffffffffffffff
555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555554000000000000000000000000000000000000000000000000000000000000001ffffffffffffffffffffffffffffffffffffffffffffffff
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000001ffffffffffffffffffffffffffffffffffffffffffffffff
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000001ffffffffffffffffffffffffffffffffffffffffffffffff
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000001ffffffffffffffffffffffffffffffffffffffffffffffff
5e003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0074000000000000000000000000000000000000000000000000000000000000001fffffffffffffffffffffffffffffffffffffffffffffffe
aeffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffddb78000000000000000000000000000000000000000000000000000000000000001fffffffffffffffffffffffffffffffffffffffffffffffe
5effbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555557e
aee3bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafe
5ec1bfdd0dd2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7e
aec1bfeb75d57ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe
5ec1bff775d57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7e
aee3bff776b57ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800efe
5effbfeb0eb57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77fdffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb6f7e
aeffbfdd7f777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef7fdfffdfbefbfffdfbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb6efe
5e003fff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff771dfffdffefffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb6f7e
afffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef60dfee873ef3831873c69ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836eff
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff760dfeedfbefbf7edfbba6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6f7c
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef60dfeedfbefbef0dfbbaeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6efc
5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555771dfeedfbefbdeedfbbaeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff806f7f
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf7fdfecdbbefbbeedbbbaeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfeefd
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77fdff2e71c71830e71c6effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfef7d
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800efd
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7e
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafc
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555557c
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefc
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe80
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe83
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81
5fffffffffffffffffffffffffffffffffffffffffffffffffffff3cf81f3cf9f3ff9fe19f87ffcc09e4f9f87f0fe19f870e7ff800983fc3ffe61c3879c7ffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03
afffffffffffffffffffffffffffffffffffffffffffffffffffff3cf9cf3cf9f3fe1fcc9f33ff9ce1e4f9f33e67cc9f32673ff9e7999f99ffc4c99321e7fffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe82
5fffffffffffffffffffffffffffffffffffffffffffffffffffff99f9cf99f8e3ff9fcc9333ff9ce4cc71ff3fe7cc9333e73ff9e799cf9933a4c99339e7ffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffe73324fffe67fffffffffe007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03
afffffffffffffffffffffffffffffffffffffffffffffffffffffc3f9cf99f8e3ff9fcc8933ff3ce4cc71fc7f8fcc89338f9ff9e799cf9933a4c99339e7fffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffe733e7fffe7fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81
5fffffffffffffffffffffffffffffffffffffffffffffffffffffe7f81f99f843ff9fcc9933ff3c0ccc21ff3fe7cc9933e79ff9e799cf998764c99339e7ffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffe72124830c26193f3987ffce511c3fffffffffffffffffffffffffffffffffffffffffffffffffffffff01
afffffffffffffffffffffffffffffffffffffffffffffffffffffc3f9ffdbf953ff9fcc9933ff3cfedca9ff3fe7cc9933e79ff9e799cf99cee4c99339e7fffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffe73324f26664c89f3933ffce4cc99ffffffffffffffffffffffffffffffffffffffffffffffffffffffe81
5fffffffffffffffffffffffffffffffffffffffffffffffffffff99f9ffc3f913ff9fcc9933ff3cfe1c89ff3fe7cc9933e79ff9e799cf998600c99339e7ffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffe73324e7e664c99f931fffce4cc99fffffffffffffffffffffffffffffffffffffffffffffffffffffff01
afffffffffffffffffffffffffffffffffffffffffffffffffffff3cf9ffe7f9b3ff9e4c8933ff3cff3cd9f332664c8932679ff9e7999f9933e4c99339e7fffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffe73324ef0664c99f93c7ffce4cc81ffffffffffffffffffffffffffffffffffffffffffffffffffffffe81
5fffffffffffffffffffffffffffffffffffffffffffffffffffff3cf9ffe7f9b3ff9e619387ff3cff3cd9f8730e6193870f9ff9e7983fc333e61c3879e7ffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffe73324ce6664c99fc7e3ffce4cc9ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffff3ff9ffffffffffffffffffe7fffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffff272249e6644c99fc7333fce4cc99ffffffffffffffffffffffffffffffffffffffffffffffffffffffe81
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffff3ff9ffffffffffffffffffe7ffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffff07924831326199fef873fce4ccc3fffffffffffffffffffffffffffffffffffffffffffffffffffffff03
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffe7ff8ffffffffffffffffffc7fffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe83
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe83
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ff03
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffe83
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff03
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe83
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff03
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff39ffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe83
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f19ffffffff81e7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff03
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff19fffffffff9e7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe83
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f29fffffffff3e7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff02
afffcf204f27cf9e1fffffffc0ffffff3f83fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff29fffffffff3e7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe82
5fffcf270f27cf9e7fffffffce7fffff3f99ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f31ffffffffe7e7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff02
afffe66726638fcc9866661fce61c3861f9cc3270ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff31ffffffffe7e7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe82
5ffff0e726638fcc932664cfce4c99333f9c991267ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f39ffffffffe7e7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff02
affff9e066610fcc93324c7fc0cc8f333f9c993267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff39ffffffffcfe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe82
5ffff0e7f6e54fed90324f1fccc0e3033f9c993207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffcfe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff02
afffe667f0e44fe193f24f8fce4ff13f3f9c99327ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe82
5fffcf27f9e6cff393399ccfce4c99332f999932667fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff02
afffcf27f9e6cff398799e1fce61c3879f83c3330e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe82
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff02
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe83
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff00
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe80
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff03
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe81
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff01
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff00ffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe81
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fe7ffffffffffe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff02
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe7ffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe82
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fe7ffffffffffe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff03
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe7ffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe80
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fe7ffffffffffe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff00
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe7ffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe80
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fe7ffffffffffe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff00
afffffffffffffffffeaaaaaaaaabfffffffffffffffe00000000003fffffffffffffffaaaaaaaaaabfffffffffffffffd55555557fffffffffffffffffeaaaaaaafffffffffffffffffff55555555feffe7ffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe80
5fffffffffffffffffd5555555555fffffffffffffffe00000000003fffffffffffffff55555555553fffffffffffffffaaaaaaaa7fffffffffffffffffd55555557fffffffffffffffffeaaaaaaa9ff7fffffffffffffe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff01
afffffffffffffffffefffffffff9fffffffffffffffe7fffffffff7fffffffffffffffbfffffffff3fffffffffffffffdffffffe7fffffffffffffffffeffffffe7ffffffffffffffffff7ffffff9feffffffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe83
5fffffffffffffffffdfffffffff9fffffffffffffffe7fffffffffbfffffffffffffff7fffffffff3fffffffffffffffbffffffe7fffffffffffffffffdffffffe7fffffffffffffffffefffffff9ff7fffffffffffffe7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff00
afffffffffffffffffefffffffff9fffffffffffffffe7fffffffff7fffffffffffffffbfffffffff3fffffffffffffffdffffffe7fffffffffffffffffeffffffe7ffffffffffffffffff7ffffff9feffffffffffffffe7fffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe81
5fffffffffffffffffd9cffff3ff9fffffffffffffffe7fffffffffbfffffffffffffff607fffff9f3fffffffffffffffbc3ff33e7fffffffffffffffffd9cff33e7fffffffffffffffffece7f9ff9ff7fffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff01
afffffffffffffffffe9cffff3ff9fffffffffffffffe7fffffffff7fffffffffffffffa73fffff9f3fffffffffffffffd99fff3e7fffffffffffffffffe9cff33e7ffffffffffffffffff4e7f9ff9feffffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe81
5fffffffffffffffffd9cc3861879fffffffffffffffe700fffcfffbfffffffffffffff6730e1c30f3fffffffffffffffb3c9921e7fffffffffffffffffd9cc321e7fffffffffffffffffece619279ff7fffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff03
afffffffffffffffffe9c99333339fffffffffffffffe7e7fffcfff7fffffffffffffffa7264c999f3fffffffffffffffd3c9933e7fffffffffffffffffe9c9933e7ffffffffffffffffff4e4c9139feffffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe82
5fffffffffffffffffd80991f31f9fffffffffffffffe7e7870ccc3bfffffffffffffff606647999f3fffffffffffffffb3c9933e7fffffffffffffffffd80f933e7fffffffffffffffffec04c9339ff7fffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff03
afffffffffffffffffe9c99c73c79fffffffffffffffe7e732649997fffffffffffffffa66071819f3fffffffffffffffd349933e7fffffffffffffffffe9cc133e7ffffffffffffffffff4e409339feffffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe81
5fffffffffffffffffd9c99e33e39fffffffffffffffe7e7f23c38fbfffffffffffffff6727f89f9f3fffffffffffffffb309933e7fffffffffffffffffd9c9933e7fffffffffffffffffece4f9339ff7fffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff01
afffffffffffffffffe9c99332339fffffffffffffffe7e7838c3e37fffffffffffffffa7264c99973fffffffffffffffd999132e7fffffffffffffffffe9c9932e7ffffffffffffffffff4e4c9139feffe7ffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe81
5fffffffffffffffffd9cc3879879fffffffffffffffe7e733c49f1bfffffffffffffff6730e1c3cf3fffffffffffffffbc0c939e7fffffffffffffffffd9cc439e7fffffffffffffffffece619279ff7fc3ffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff01
afffffffffffffffffefffffffff9fffffffffffffffe7e73264c997fffffffffffffffbfffffffff3fffffffffffffffdffffffe7fffffffffffffffffeffffffe7ffffffffffffffffff7ffff3f9feffdbffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe81
5fffffffffffffffffdfffffffff9fffffffffffffffe7e7890ce43bfffffffffffffff7fffffffff3fffffffffffffffbffffffe7fffffffffffffffffdffffffe7fffffffffffffffffefffff3f9ff7f99ffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff01
afffffffffffffffffefffffffff9fffffffffffffffe7fffffffff7fffffffffffffffbfffffffff3fffffffffffffffdffffffe7fffffffffffffffffeffffffe7ffffffffffffffffff7ffff3f9feff99ffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe81
5fffffffffffffffffdfffffffff9fffffffffffffffe7fffffffffbfffffffffffffff7fffffffff3fffffffffffffffbffffffe7fffffffffffffffffdffffffe7fffffffffffffffffefffffff9ff7f81ffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff03
afffffffffffffffffefffffffff9fffffffffffffffe7fffffffff7fffffffffffffffbfffffffff3fffffffffffffffdffffffe7fffffffffffffffffeffffffe7ffffffffffffffffff7ffffff9feff3cffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe83
5fffffffffffffffffdfffffffff9fffffffffffffffe7fffffffffbfffffffffffffff7fffffffff3fffffffffffffffbffffffe7fffffffffffffffffdffffffe7fffffffffffffffffefffffff9ff7f3cffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff03
afffffffffffffffffe0000000001fffffffffffffffe55555555557fffffffffffffff80000000003fffffffffffffffc00000007fffffffffffffffffe00000007ffffffffffffffffff00000001feff3cffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe81
5fffffffffffffffffc0000000001fffffffffffffffeaaaaaaaaaabfffffffffffffff00000000003fffffffffffffff800000007fffffffffffffffffc00000007fffffffffffffffffe00000001ff7fffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff03
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe83
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff03
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe83
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff03
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe83
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff03
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe83
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff03
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe83
5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe73fe7fffffcff9e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff02
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe33fe7fffffcff9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff83ffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe82
5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe330c2666190cfcc986667fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f39ffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff02
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe52666664c809fcc932667ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff39ffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe82
5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe5266724cc8c3fcc93324ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f8fffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff02
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6206724cc9c3fed90324fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffe3ffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffe82
5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe627e724cc9c9fe193f24ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff1ffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff02
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7266599cc9ccff393399fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff39ffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffec2
5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe730f399e19ce7f398799ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f39ffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff42
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff83ffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000ffffffeffec2
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7ffffffff0000000380e9f0000000000000001000000000000000000000000000002000000000000000000000000000000000fffffff7ff42
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffec3
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff40
affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffec0
5ffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017fffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff43
affc000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffec1
5ffcff7f8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff41
affcff3f4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffec1
5ffcfe3f8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff42
affcfd1f4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffec2
5ffcfa9f8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff43
affcfdcf4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff39ffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffec0
5ffcfbcf8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f33ffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff40
affcf7e74ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff27ffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffec0
5ffcefe78fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0fffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff00
affcdff34ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff0fffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe80
5ffceff38fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f27ffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff33ffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffc80018fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f39ffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff00
affc00004ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff3cffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000003ff00000000000000000ffc00000000000000003fffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff4007fffffffffff82ffd0000000000000000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff40080000000000142ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff40100000000000242ffd0000000000000000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff80803c1fc1fffbff403fffffffffffc42ffd000feff87c07c000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff40600000000000642ffd0000000000000000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff80800c0f81fffbff40400000000000242ffd000feffe7e0fc000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff40400000000000242ffd0000000000000000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffe3e3870707fffbff4043fffffffffc242ffd0003838f1f1f0000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff40460000000c06242ffd0000000000000000bffffffffffffffffffffffffffffffffffffeff83ffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffe3e00f0207fffbff40440000001c02242ffd000383fe1fbf0000bfffffffffffffffffffffffffffffffffffff7f39ffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff40440000003802242ffd0000000000000000bffffffffffffffffffffffffffffffffffffeff39ffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffe3e00f1047fffbff40440000007002242ffd000383fe1df70000bfffffffffffffffffffffffffffffffffffff7f8fffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff40440000007002242ffd0000000000000000bffffffffffffffffffffffffffffffffffffeffe3ffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffe3e38718c7fffbff404400000e3802242ffd0003838f1ce70000bfffffffffffffffffffffffffffffffffffff7ff1ffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff404400001f1c02242ffd0000000000000000bffffffffffffffffffffffffffffffffffffeff39ffffffffffe7fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff80800c1dc1fffbff404400003b8e02242ffd000feffe7c47c000bfffffffffffffffffffffffffffffffffffff7f39ffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff4044000071c71a242ffd0000000000000000bffffffffffffffffffffffffffffffffffffeff83ffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff80803c1fc1fffbff4044000038c3ba242ffd000feff87c07c000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff404400041cc1f2242ffd0000000000000000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff4044000f0ee0e2242ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff40440007c7f802242ffd0000000000000000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff40440007f39e02242ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffc000003ffffbff404400e339c602242ffd000007fffff80000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffe3ffff8bffffbff404401f31ce002242ffd0000380000e80000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffff1ffffc53ffffbff404403b99e7002242ffd0001c00007580000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff8fffff2abffffbff4044071df73002242ffd000e00001aa80000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffe7ffff8553f87fbff4044038ce38002242ffd00300000f5580f00bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff8000002aabfbbfbff404439d8710002242ffd00ffffffaaa80880bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbfffff5553fbbfbff404478f0380002242ffd0080000155580880bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff0032aabf87fbff4044e0701c0002242ffd00801ff9aaa80f00bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff3fb5553faffbff4044c038080002242ffd0080180955580a00bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff3fb2aabfb7fbff4044ff1c000002242ffd00801809aaa80900bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffa010035553fbbfbff40447f8e000002242ffd00bfdff955580880bffffffffffffffffffffffffffffffffffffeffffffffffffe007fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffa013fb2aabffffbff404401c7000002242ffd00bfd809aaa80000bfffffffffffffffffffffffffffffffffffff7fffffffffffe007fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff3fb5553fc7fbff404400c2000002242ffd0080180955580700bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffa010032aabfbbfbff404408c0000002242ffd00bfdff9aaa80880bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff00
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffa013fb5553fbffbff40440dc0000002242ffd00bfd80955580800bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe80
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff3fb2aabfc7fbff40440f80000002242ffd00801809aaa80700bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffa010035553ffbfbff40440700000002242ffd00bfdff955580080bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffa0120b2aabfbbfbff40460000000006242ffd00bfdbe9aaa80880bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff3db5553fc7fbff4043fffffffffc242ffd0080184955580700bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffa010032aabffffbff40400000000000282ffd00bfdff9aaa80000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffa013ab5553fc7fbff40400000000000302ffd00bfd8a955580700bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff6ab2aabfbbfbff40600000000000602ffd008012a9aaa80880bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff0035553fbffbff403fffffffffffc02ffd00801ff955580800bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe80
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff2cb2aabf87fbff40000200000200002ffd00801a69aaa80f00bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff00
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff6cb5553fbbfbff40000100000400002ffd0080126955580880bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe80
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff0032aabfbbfbff43fffe80000bffffeffd00801ff9aaa80880bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff00
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff3fb5553fc7fbff4400007ffff000002ffd0080180955580700bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe80
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff3fb2aabffffbff48000000000000006ffd00801809aaa80000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff3fb5553fbbfbff5fffffffffffffffaffd0080180955580880bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff3fb2aabfb7fbff5000000000000000affd00801809aaa80900bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff00
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff0035553faffbff51000cccccccccccaffd00801ff955580a00bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff3fb2aabf9ffbff529fccccccccccccaffd00801809aaa80c00bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff67b5553faffbff545fc00000000000affd0080130955580a00bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff7fb2aabfb7fbff5280133333333333affd00801009aaa80900bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbff0035553fbbfbff5100333333333333affd00801ff955580880bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbfffff2a8fffffbff5000000000000000affd00800001aae00000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbfffff547fffffbff5cccccccccccccccaffd0080000157000000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffbfffff23ffffffbff5cccccccccccccccaffd00800001b8000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff8000000fffffffbff5000000000000000effd00ffffffe0000000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff5fffffffffffffffaffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff40000000000000002ffd0000000000000000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff40000000000000002ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff9f3fcf9ff0fffbff7fff3fffffffffffeffdffffffffffffffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff9fffcf9fe67ffbff7fffffffffffffffeffdffffffffffffffffbffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff93324993267ffbff7fff30e190cc3fffeffdffffe19cc327ffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff89244493267ffbff7fff264c80c99fffeffdffffcc9c9913ffffbffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff99264c93267ffbff7fff27fc8cc8ffffeffdffffcfc9f933ffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff99264c93267ffbff7fff27e09cce3fffeffdffffcfc9c133ffffbffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff99264c93267ffbff7fff27cc9ccf1fffeffdffffcfe39933ffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff89244492267ffbff7fff264c9c899fffeffdffffcce39933ffffbffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff9332499930fffbff7fff30e21e4c3fffeffdffffe1f3c433ffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffe7ffffffffbff7fffffffffffffffeffdfffffff7ffffffffbffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffe67ffffffffbff7fffffffffffffffeffdffffffe7ffffffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffff0fffffffffbff7fffffffffffffffeffdffffffcfffffffffbffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000003ff00000000000000000ffc00000000000000003ffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff00
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe80
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcd5554ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcaaa98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe80
5ffcbff98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff00
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe80
5ffcbff98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff00
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe80
5ffcbff98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcbff98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff00
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcbff98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcbff98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcbff98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcbff98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcbff98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcbff98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcbff98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcbff98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcdff94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffca0018ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe7fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcc0014ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe83
5ffcffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff7fffffffffffc3e000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff00
affcffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffdfffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffeffffffffffff99e000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe80
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000003ff00000000000000000ffc00000000000000003fffffffffffffffffffffffffffffffffffff7fffffffffff99e000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbffffffffffffffffffffffffffffffffffffeffffffffffff99e000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd800ffffffffffff03ff4007fffffffffff82ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffff99e000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80100000000000283ff40080000000000142ffd0000000000000000bffffffffffffffffffffffffffffffffffffeffffffffffff99e000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80200000000000483ff40100000000000242ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffff99e000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd807fffffffffff883ff403fffffffffffc42ffd000feff87c07c000bffffffffffffffffffffffffffffffffffffeffffffffffff99e000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80c00000000000c83ff40600000000000642ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffc3e000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80800000000000483ff40400000000000242ffd000feffe7e0fc000bffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe80
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80800000000000483ff40400000000000242ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff00
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8087fffffffff8483ff4043fffffffffc242ffd0003838f1f1f0000bffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe80
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd808c000000180c483ff40460000000c06242ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffff7ff00
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80880000003804483ff40440000001c02242ffd000383fe1fbf0000bffffffffffffffffffffffffffffffffffffeffffffffffffffe000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffeffe80
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80880000007004483ff40440000003802242ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe555555555aaaaaaab6abd6aaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaad5555555555555555555556aaaaaaaaaaa95555557ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8088000000e004483ff40440000007002242ffd000383fe1df70000bffffffffffffffffffffffffffffffffffffeffffffffffffffeaaaaaaaaa55555554954295555555555555551555555555555555555555555555552aaaaaaaaaaaaaaaaaaaaa9555555555556aaaaaaffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8088000000e004483ff40440000007002242ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ff00
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd808800001c7004483ff404400000e3802242ffd0003838f1ce70000bffffffffffffffffffffffffffffffffffffeffffffffffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd808800003e3804483ff404400001f1c02242ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7ffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80880000771c04483ff404400003b8e02242ffd000feffe7c47c000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7ff8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80880000e38e34483ff4044000071c71a242ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7ff1555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555557ff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80880000718774483ff4044000038c3ba242ffd000feff87c07c000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fa8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3afeffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd808800083983e4483ff404400041cc1f2242ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7f797ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe5d7f7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8088001e1dc1c4483ff4044000f0ee0e2242ffd0000000000000000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7ef8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3fbeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8088000f8ff004483ff40440007c7f802242ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7df97ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe5fdf7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8088000fe73c04483ff40440007f39e02242ffd0000000000000000bffffffffffffffffffffffffffffffffffffeffffffffffffffe6bf8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3feaffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd808801c6738c04483ff404400e339c602242ffd000007fffff80000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe0ff97ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe5ff17ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd808803e639c004483ff404401f31ce002242ffd0000380000e80000bffffffffffffffffffffffffffffffffffffeffffffffffffffe63f8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3fe2ffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd808807733ce004483ff404403b99e7002242ffd0001c00007580000bfffffffffffffffffffffffffffffffffffff7fffffffffffffe78f97ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe5f8f7ff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80880e3bee6004483ff4044071df73002242ffd000e00001aa80000bffffffffffffffffffffffffffffffffffffeffffffffffffffe7e38fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3e3effe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80880719c70004483ff4044038ce38002242ffd00300000f5580f00bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7f097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe58ff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd808873b0e20004483ff404439d8710002242ffd00ffffffaaa80880bffffffffffffffffffffffffffffffffffffeffffffffffffffe7fc0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021feffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8088f1e0700004483ff404478f0380002242ffd0080000155580880bfffffffffffffffffffffffffffffffffffff7fffffffffffffe7ff1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047ff7ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8089c0e0380004483ff4044e0701c0002242ffd00801ff9aaa80f00bffffffffffffffffffffffffffffffffffffeffffffffffffffe7ffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffeffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80898070100004483ff4044c038080002242ffd0080180955580a00bfffffffffffffffffffffffffffffffffffff7fffffffffffffe5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555557ff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8089fe38000004483ff4044ff1c000002242ffd00801809aaa80900bffffffffffffffffffffffffffffffffffffeffffffffffffffeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8088ff1c000004483ff40447f8e000002242ffd00bfdff955580880bfffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8088038e000004483ff404401c7000002242ffd00bfd809aaa80000bffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80880184000004483ff404400c2000002242ffd0080180955580700bfffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80881180000004483ff404408c0000002242ffd00bfdff9aaa80880bffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80881b80000004483ff40440dc0000002242ffd00bfd80955580800bfffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80881f00000004483ff40440f80000002242ffd00801809aaa80700bffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80880e00000004483ff40440700000002242ffd00bfdff955580080bfffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd808c000000000c483ff40460000000006242ffd00bfdbe9aaa80880bffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8087fffffffff8483ff4043fffffffffc242ffd0080184955580700bfffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80800000000000503ff40400000000000282ffd00bfdff9aaa80000bffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80800000000000603ff40400000000000302ffd00bfd8a955580700bfffffffffffffffffffffffffffffffffffff7fffff5555555557ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80c00000000000c03ff40600000000000602ffd008012a9aaa80880bffffffffffffffffffffffffffffffffffffefffffeaaaaaaaaa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd807fffffffffff803ff403fffffffffffc02ffd00801ff955580800bfffffffffffffffffffffffffffffffffffff7fffff7fffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80000400000400003ff40000200000200002ffd00801a69aaa80f00bffffffffffffffffffffffffffffffffffffefffffeffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff003fffffffffffffffffffffffffffffffffffffffffffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80000200000800003ff40000100000400002ffd0080126955580880bfffffffffffffffffffffffffffffffffffff7fffff7fffffffe7fffffffffffffffffffffffffffe00fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffc01ffffffffffffff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd87fffd000017ffffbff43fffe80000bffffeffd00801ff9aaa80880bffffffffffffffffffffffffffffffffffffefffffef09fffffe7fffffffffffffffffffffffffffe01fffffffffffffffffffffffffffffffff7fbfffffffffffffffffffffffffffc03fffffffffffffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd880000ffffe000003ff4400007ffff000002ffd0080180955580700bfffffffffffffffffffffffffffffffffffff7fffff661fffffe7ffffffffffff0ffffffffccffffe00ffffffffffffffffffc3fffff9fffffcf7ffffffffffffffffff333f999ffffc01ffffffffffffff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9000000000000000bff48000000000000006ffd00801809aaa80000bffffffffffffffffffffffffffffffffffffefffffecf9870e1e7fffffffffffe67fffffffcfffffe01ffffffffffffffffff99fffff9fffffcf7fbffffffffffffffff333ff9fffffc03fffffffffffffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbfffffffffffffff3ff5fffffffffffffffaffd0080180955580880bfffffffffffffffffffffffffffffffffffff7fffff4f93264ce7fffffffffffcfc34464cc849393e00ffffffffffffffffff3c9cc3213870e4f7ffffffffffffffffff33219092727c01ffffffffffffff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffda0000000000000013ff5000000000000000affd00801809aaa80900bffffffffffffffffffffffffffffffffffffefffffecf9323cce7fffffffffffcf9933224ccc8923e01ffffffffffffffffff3c9c9900932648f7fbffffffffffffffffb34c9991247c03fffffffffffffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffda2001999999999993ff51000cccccccccccaffd00801ff955580a00bfffffffffffffffffffffffffffffffffffff7fffff4f9338c0e7fffffffffffcf9933264ccc9933e00ffffffffffffffffff3cc99919933e4cf7ffffffffffffffffff927c9993267c01ffffffffffffff00
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffda53f9999999999993ff529fccccccccccccaffd00801809aaa80c00bffffffffffffffffffffffffffffffffffffefffffecf933c4fe7fffffffffffcf9933264ccc9933e01ffffffffffffffffff3cc9813990304cf7fbffffffffffffffff92609993267c03fffffffffffffe80
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffda8bf8000000000013ff545fc00000000000affd0080130955580a00bfffffffffffffffffffffffffffffffffffff7fffff6613264ce7fffffffffffcf9933264ccc9933e00ffffffffffffffffff3ce39f3993e64cf7ffffffffffffffffffcccc9993267c01ffffffffffffff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffda5002666666666673ff5280133333333333affd00801009aaa80900bffffffffffffffffffffffffffffffffffffefffffef09870e1e7fffffffffffe619332248c89923e01ffffffffffffffffff99e39939932648f7fbffffffffffffffffcccc9913247c03fffffffffffffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffda2006666666666673ff5100333333333333affd00801ff955580880bfffffffffffffffffffffffffffffffffffff7fffff7fffffffe7ffffffffffff0c33324e4e49993e00ffffffffffffffffffc3f7c339987124f7ffffffffffffffffffcce21c93327c01ffffffffffffff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffda0000000000000013ff5000000000000000affd00800001aae00000bffffffffffffffffffffffffffffffffffffefffffeffffffffe7fffffffffffffffffe7fffffff3e01fffffffffffffffffffffffffffffffff7fbfffffffffffffffffffffffffe7c03fffffffffffffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdb9999999999999993ff5cccccccccccccccaffd0080000157000000bfffffffffffffffffffffffffffffffffffff7fffff7fffffffe7fffffffffffffffffe7ffffff33e00fffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffe67c01ffffffffffffff02
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdb9999999999999993ff5cccccccccccccccaffd00800001b8000000bffffffffffffffffffffffffffffffffffffefffffeffffffffe7fffffffffffffffffe7ffffff87e01fffffffffffffffffffffffffffffffff7fbfffffffffffffffffffffffff0fc03fffffffffffffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffda000000000000001bff5000000000000000effd00ffffffe0000000bfffffffffffffffffffffffffffffffffffff7fffff7fffffffe7fffffffffffffffffffffffffffe00fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffc01ffffffffffffff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbfffffffffffffff3ff5fffffffffffffffaffd0000000000000000bffffffffffffffffffffffffffffffffffffefffffeffffffffe7fffffffffffffffffffffffffffe01fffffffffffffffffffffffffffffffff7fbfffffffffffffffffffffffffffc03fffffffffffffe80
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80000000000000003ff40000000000000002ffd0000000000000000bfffffffffffffffffffffffffffffffffffff7fffff0000000007fffffffffffffffffffffffffffe00fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffc01ffffffffffffff00
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffd80000000000000003ff40000000000000002ffd0000000000000000bffffffffffffffffffffffffffffffffffffefffffe0000000007fffffffffffffffffffffffffffe01fffffffffffffffffffffffffffffffff7fbfffffffffffffffffffffffffffc03fffffffffffffe80
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbfffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffeaafffffffffffffffffffffffffffffffff557fffffffffffffffffffffffffffd55ffffffffffffff00
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe80
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe83
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffe7fff3ffffeffdfffffe7fff87ffffbffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7ffffffffff3ffffeffdffffffffff33ffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffd11c327ffffbff7ffffc864c33ffffeffdffffc861c3f3ffffbffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffccc9907ffffbff7ffffc048993ffffeffdffffc04c99e7ffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffccc8f1fffffbff7ffffc64c993ffffeffdffffc64c8fcfffffbffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe82
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffccce33fffffbff7ffffce4c813ffffeffdffffce4ce39fffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffcccf13fffffbff7ffffce4c9f3ffffeffdffffce4cf13fffffbffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffccc993fffffbff7ffffce48993ffffeffdffffce4c993fffffbfffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01
affcffff4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffcccc33fffffbff7ffffce64c33ffffeffdffffce61c303ffffbffffffffffffffffffffffffffffffffffffeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa81
5ffcffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffcfffffffeffdffffffffffffffffbfffffffffffffffffffffffffffffffffffff55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555501
affc55554fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7ffffffccfffffffeffdffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000001
5ffcaaaa8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7ffffffe1fffffffeffdffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000001
affcdff94fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000001
5ffceff98fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffbff7fffffffffffffffeffdffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000003
affcf7f34fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000003ff00000000000000000ffc00000000000000003ffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000003
5ffceff38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000003
affcf7e74ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000001
5ffcfbef8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000003
affcfdcf4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000003
5ffcffdf8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000003
affcfd9f4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000003
5ffcfe3f8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000003
affcff3f4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000003
5ffcff7f8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000003
affc5555455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000aaaaaaaaaaaaaaaaaaaaaaaaab
5ffcaaaa8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa95555555555555555555555555555555555555555555557ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000055555555555555555555555557
afffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bfffffffffffffffffffffffff
5fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffe
afffffffcfffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffbff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffe
5fffffffcfff3fffffffffffffffffffffffffffffffffffffffffffffffffff5555555555555555555555555555555555555555555555555557fffffffffffffffffffffffffffffffffffffffffffffffffffffd7ff7ff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffe
afffffffcffe3fffffffffffffffffffffffffffffffffffffffffffffffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfffffffffffffffffffffffffffffffffffffffffffffffffffffebffbff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffe
5fffffffcff53fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffdd7f7ff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffe
afffffffcfef3fffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffeebfbff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffe
5fffffffcfdf3fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffdfdf7ff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007e1c387ffffffffffffffffffe
afffffffcfbf3fffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffefefbff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bcc9933ffffffffffffffffffe
5fffffffcd7f3fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffdff57ff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007c0999fffffffffffffffffffe
afffffffc1ff3fffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffeff8bff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bcf99e7ffffffffffffffffffe
5fffffffcc7f3fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffdff17ff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007cc9933ffffffffffffffffffe
afffffffcf1f3fffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffefc7bff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000be1c387fffffffffffffffffff
5fffffffcfc73fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffdf1f7ff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffc
afffffffcfe13fffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffec7fbff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffc
5fffffffcff83fffffffffffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000000000003fffffffffffffffffffffffffffffffffffffffffffffffffffffd0ff7ff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007fffffffffffffffffffffffff
afffffffcffe3fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000003fffffffffffffffffffffffffffffffffffffffffffffffffffffe3ffbff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffd
5fffffffcfffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfff7ff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffd
afffffffcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffd
5fffffffd555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555557ff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffe
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffe
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007fffffffffffffffffffffffff
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffc
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffc
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffc
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffc
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffc
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffd
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bfffffffffffffffffffffffff
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffc
affeaaaaaaaaafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffd
5ffd555555554fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffd
affeffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffd
5ffdffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8003ffffffffffffffffffffffffffffffffffffffffffff0007fffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007fffffffffffffffffffffffff
affeffffffffcffffffffffffffffffffffffffffffffffff800fffffffffffffffffffffffffffffffffffffffbffbffffffffffffffffffffffffffffffffffffffffffff7ff7fffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffe
5ffde13fffffcffffffffffffffffffffffffffffffffffff8007ffffffffffffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007fffffffffffffffffffffffff
affecc3fffffcffffffffffffffffffffffffffcffe67ffff800fffffffffffffffffffffffffff83ffff3fffffbffbfffffffffffffffffffffffffffffce7ff807ffe7fff7ff7fffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffd
5ffd9f30e1c3cffffffffffffffffffffffffff87fe7fffff8007ffffffffffffffffffffffffff39ffff3fffffbffffffffffffffffffffffffffffffffc67fff3fffe7fff7ffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffd
affe9f264c99cffffffffffffffffffffffffffb70c24e61f800fffffffffffffffffffffffffff39398618688fbffbfffffffffffffffffffffffffffffc661ff3c386661f7ff7fffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffd
5ffd9f264799cffffffffffffffffffffffffff326664e4cf8007ffffffffffffffffffffffffff8f3933332667bffffffffffffffffffffffffffffffffca4cff399324ccf7ffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffd
affe9f267181cffffffffffffffffffffffffff327e664ccf800fffffffffffffffffffffffffffe3931f332667bffbfffffffffffffffffffffffffffffca4cff3f91e1c7f7ff7fffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffd
5ffd9f26789fcffffffffffffffffffffffffff027e664c0f8007fffffffffffffffffffffffffff193c7302667bffffffffffffffffffffffffffffffffcc4cff3c1c61f1f7ffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffd
affecc264c99cfffffffffffffffffffffffffe787e671cff800fffffffffffffffffffffffffff39c7e333e667bffbfffffffffffffffffffffffffffffcc4cff399e24f8f7ff7fffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffd
5ffde130e1c3cfffffffffffffffffffffffffe7866471ccf8007ffffffffffffffffffffffffff39c733232667bffffffffffffffffffffffffffffffffce4cff3993264cf7ffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007fffffffffffffffffffffffff
affeffffffffcfffffffffffffffffffffffffe790f27be1f800fffffffffffffffffffffffffff83e787986667bffbfffffffffffffffffffffffffffffce61ff3c486721f7ff7fffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bfffffffffffffffffffffffff
5ffdffffffffcffffffffffffffffffffffffffffffffffff8007ffffffffffffffffffffffffffffefffffffffbfffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007fffffffffffffffffffffffff
affeffffffffcffffffffffffffffffffffffffffffffffff800fffffffffffffffffffffffffffffcfffffffffbffbffffffffffffffffffffffffffffffffffffffffffff7ff7fffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffd
5ffdffffffffcffffffffffffffffffffffffffffffffffff8007ffffffffffffffffffffffffffff9fffffffffbfffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007fffffffffffffffffffffffff
affeffffffffcffffffffffffffffffffffffffffffffffff800fffffffffffffffffffffffffffffffffffffffbffbffffffffffffffffffffffffffffffffffffffffffff7ff7fffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bfffffffffffffffffffffffff
5ffdffffffffcffffffffffffffffffffffffffffffffffffd557ffffffffffffffffffffffffffffffffffffff9557ffffffffffffffffffffffffffffffffffffffffffff2aaffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007fffffffffffffffffffffffff
affe000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bfffffffffffffffffffffffff
5ffc000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007fffffffffffffffffffffffff
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bfffffffffffffffffffffffff
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007fffffffffffffffffffffffff
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bfffffffffffffffffffffffff
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007fffffffffffffffffffffffff
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bfffffffffffffffffffffffff
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffe
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffe
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffe
a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffe
50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000010000000007ffffffffffffffffffffffffe
a3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000800000000bffffffffffffffffffffffffe
53fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaae
a3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556
53fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee
a3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6
53fffaaaaaaffffffffffffffffeaaaaaaaaaaffffffffffffffffffffffffeaaaaabfffffff8000007fffffffd555557fffffffd555557ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee
a3fff555554ffffffffffffffffd55555555557fffffffffffffffffffffffd555553fffffff800000ffffffffaaaaaa7fffffffaaaaaa7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800f7
53fffbffffcffffffffffffffffefffffffffe7fffffffffffffffffffffffefffff3fffffff9fffff7fffffffdffffe7fffffffdffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bbfefffff9e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb6ec
a3fff7fcffcffffffffffffffffdfffffffffe7fffffffffffffffffffffffdfffff3fffffff9ffffeffffffffbffffe7fffffffbffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87bfefffffdf7feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb6f4
53fffbf03fcffffffffffffffffefffffffffe7fffffffffffffffffffffffefffff3fffffff9fffff7fffffffdcc7fe7fffffffdf8ffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bb8efffffdf7feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb6ef
a3fff7c78fcffffffffffffffffd9e1ffffffe7fffffffffffffffffffffffdfffff3fffffff9ffffeffffffffbcc3fe7fffffffbf87fe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87b06ff8e3df7fc34e38e3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836f5
53fffb0783cffffffffffffffffe9e7ffffffe7fffffffffffffffffffffffefcf9f3fffffff9fffff7fffffffdcc1fe7fffffffdf83fe7ffffffffffffffffffffffffffffffffffffffffc00fffffff0fe1c387e61c3fd4bb06ff77ddf7fef37d75dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6ed
a3fff6f7bdcffffffffffffffffdcc9866661e7fffffffffffffffffffffffdf8f1f3fffffff9ffffeffffffffbcc8fe7fffffffbf91fe7fffffffffffffffffffffffffffffffffffffffff9fffffffe67cc9933c4c99fe87b06ff7e1df7fef7e17c1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6f5
53fffbf03fcffffffffffffffffecc932664ce7fffffffffffffffffffffffef0e1f3fffffff9fffff7fffffffdccc7e7fffffffdf98fe7fffffffffffffffffffffffffffffffffffffffff9ca23873e67cc9f33a7cf9fd4bb8eff7dddf7fef7dd7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff806ee
a3fff7f03fcffffffffffffffffdcc93324c7e7fffffffffffffffffffffffde0c1f3fffffff9fc01effffffffbcce3e7fffffffbf9c7e7fffffffffffffffffffffffffffffffffffffffff9c999333f0fcc9f33a71f3fe87bfeff75ddf7fed7dd75dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfef6
53fffbf7bfcffffffffffffffffeed90324f1e7fffffffffffffffffffffffec081f3fffffff9fc01f7fffffffdccf1e7fffffffdf9e3e7fffffffffffffffffffffffffffffffffffffffff9c99933fe67cc833367ce7fd4bbfeff8e18e3ff37e18e3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfeef
a3fff7f7bfcffffffffffffffffde193f24f8e7fffffffffffffffffffffffde0c1f3fffffff9fc01effffffffbcce3e7fffffffbf9c7e7fffffffffffffffffffffffffffffffffffffffff9c99903fe67cc9932e7ccffe87800ffffffff07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800f4
53fffbf03fcffffffffffffffffef393399cce7fffffffffffffffffffffffef0e1f3fffffff9fc01f7fffffffdccc7e7fffffffdf98fe7fffffffffffffffffffffffffffffffffffffffff9c9993ffe67cc993203c9ffd4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec
a3fff7f03fcffffffffffffffffdf398799e1e7fffffffffffffffffffffffdf8f1f3fffffff9fc01effffffffbcc8fe7fffffffbf91fe7fffffffffffffffffffffffffffffffffffffffff9c999333e664c9933e4c9ffe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4
53fffaf7bdcffffffffffffffffefffffffffe7fffffffffffffffffffffffefcf9f3fffffff9fc01f7fffffffdcc1fe7fffffffdf83fe7fffffffffffffffffffffffffffffffffffffffff9c999873f0e61c387e6181fd4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec
a3fff70783cffffffffffffffffdfffffffffe7fffffffffffffffffffffffdfffff3fffffff9fc01effffffffbcc3fe7fffffffbf87fe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555554
53fffbc78fcffffffffffffffffefffffffffe7fffffffffffffffffffffffefffff3fffffff9fc01f7fffffffdcc7fe7fffffffdf8ffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad
a3fff7f03fcffffffffffffffffdfffffffffe7fffffffffffffffffffffffdfffff3fffffff9fc01effffffffbffffe7fffffffbffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7
53fffbfcffcffffffffffffffffefffffffffe7fffffffffffffffffffffffefffff3fffffff9fffff7fffffffdffffe7fffffffdffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec
a3fff7ffffcffffffffffffffffdfffffffffe7fffffffffffffffffffffffdfffff3fffffff9ffffeffffffffbffffe7fffffffbffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5
53fffbffffcffffffffffffffffe00000000007fffffffffffffffffffffffefffff3fffffff9fffff7fffffffdffffe7fffffffdffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed
a3fff7ffffcffffffffffffffffc00000000007fffffffffffffffffffffffdfffff3fffffff9ffffeffffffffbffffe7fffffffbffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5
53fff800000fffffffffffffffffffffffffffffffffffffffffffffffffffe000003fffffff9555557fffffffc000007fffffffc000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef
a3fff000000fffffffffffffffffffffffffffffffffffffffffffffffffffc000003fffffffaaaaaaffffffff8000007fffffff8000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6
53fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef
a3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5
53fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed
a3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5
53fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bfff3ffff9fc0ffffff3f81ffff00fffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed
a3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87fff3ffff9fcfffffff3f9cffffe7fffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5
53fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bfff3e1c30fcf9cc3261f9c864fe7870cccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed
a3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87fff3cc999fcf9c99133f9c320fe732649cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5
53fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bfff3fc8f9fc0c999333f81323fe7f23c3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef
a3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87fff3e0e39fcfc981333f9f027fe7838c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7
53ffffffffffffffffffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fc000000000000000000001fe0000000000000000000000fd4bfff3ccf19fcfe39f333f9f3e7fe733c49fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef
a3ffffffffffffffffffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001fc000000000000000000001fe0000000000000000000000fe87fff3cc9997cfe399332f9f327fe73264ccfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5
53ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefcffffffffffffffffffffbfe7ffffffffffffffffffffdfd4bfff02243cfc0f7c3339f9f867fe7890ce4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef
a3ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcffffffffffffffffffffdfe7ffffffffffffffffffffefe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7
53ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefcffffffffffffffffffffbfe7ffffffffffffffffffffdfd4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef
a3ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcffffffffffffffffffffdfe7ffffffffffffffffffffefe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7
53fe01fffffffc027fffce4fffffcfffffffffcffffffff3ffcf9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefcffbfffffffffffffffffbfe7fdffffffffffffffffffdfd4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef
a3ffcffffffffcfe7fffce4fffffcfffffffffcffffffff3ffcf9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcff5fff027fffc0ffff3fdfe7fafffe1fffffcccf99ffefe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7
53ffce4870e1fcf261cfce851193d324ce511f8490e1c3f330c99fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefcfeafff387fffce7fff3fbfe7f57ffccfffffcccff9ffdfd4bff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fef
a3ffce03264cfcf24ccfcccccc8993224e4ccfcc064c99f266449fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfd17ff38619cce61c333dfe7ebbff9e4e6190cc210c3efe87ff000010000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000007ff7
53ffce3f27ccfc124cffcccccc99986664cccfcc7e4f99f0e64c9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefcfa0bff384c9cce4c9927bfe7d7dff9e4e4c82cd01999dfd4bff3fdfe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
a3ffce7827c0fcf240ffcdcccc99bce664cccfccf04f81f0e64c9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcf405ff027cc9c0fc9f0fdfe7afeff9e64cc8e4919999efe87ff3fcfd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
53ffce7327cffcf24fffcdcccc99b86671cccfcce64f9ff2664c9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefce0007f3e60c9ce609f0fbfe71fe3f9e64c09e4939981dfd4bff3f8fe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
a3ffce73264cfcf24ccfc9c8cc89332271ccccc8e64c9993264c9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcf000ff3e4ce3ce4c9f27dfe78fc7f9e71cf9f333999fefe87ff3f47d3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
53ffce7890e1fcf261cfc9e4cc933324fbcccce4f121c39390cc9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefcf801ff3e4ce3ce4c9933bfe7c78ffccf1cc9f3339919dfd4bff3ea7e3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
a3ffffffffffffffffffcfffff9fffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfc03ff3e6273c0e24339dfe7e31ffe1fbe19f3339cc3efe87ff3f73d3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
53ffffffffffffffffffcfffff9fffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefcfe07fffffff7ffffffffbfe7f03fffffffffffffffffdfd4bff3ef3e3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
a3ffffffffffffffffffcfffff9fffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcff0fffffffe7ffffffffdfe7f87fffffffffffffffffefe87ff3df9d3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
53ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefcff9fffffffcfffffffffbfe7fcffffffffffffffffffdfd4bff3bf9e3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
a3ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcffffffffffffffffffffdfe7ffffffffffffffffffffefe87ff37fcd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
53ffffffffffffffffffcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcaaaaaaaaaaaaaaaaaaaabfe5555555555555555555555fd4bff3bfce3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
a3ffffffffffffffffffd5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555fd555555555555555555555feaaaaaaaaaaaaaaaaaaaaaafe87ff37fe53fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
53fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bff200063fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
a3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87ff000013fcf9fe7cff87e7ccfffffffffffffffffffffffffffd3ffffffffffffffffe1f3f0ffe318c6318c7ffc39fffffffffffff7ff7
53fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bff2aaae3fcfffe7cff33e7fcfffffffffffffffffffffffffffe3ffffffffffffffffcce7e67fce739ce739fff99cffffffffffffeffec
a3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe87ff355553fc99924c993324c861fffffffffffffffffffffffffd3fc99ca23fe4870ce4ce7e64c8421084210ffff9cfffffffffffff7ff4
53fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd4bff2ffe63fc4922249933224cccfffffffffffffffffffffffffe3fc49c999fe03264e4ccfe64cce739ce739ffff3e7fffffffffffeffef
a2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa87ff37fe53fcc932649933e64ccffffffffffffffffffffffffffd3fccc9999fe3327e4cccfe661ce739ce739fffe7e7ffffffffffff7ff5
555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555554bff2ffe63fcc932649933e64ccffffffffffffffffffffffffffe3fccc9999fe7027e4cccfe673ce739ce739fffcfe7fffffffffffeffed
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ff37fe53fcc932649933e64ccffffffffffffffffffffffffffd3fcce3999fe73e7f1cccfe661ce739ce739fff9fe7ffffffffffff7ff5
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bff2ffe63fc4922249133264c8cfffffffffffffffffffffffffe3fc4e3999fe732671cccfe64cce739ce739cff9fe7fffffffffffeffee
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ff37fe53fc99924cc987264e61fffffffffffffffffffffffffd3fc9f7999fe7870fbe1cff0ccce739ce739cff81e7ffffffffffff7ff6
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bff2ffe63fffff3fffffffffffffffffffffffffffffffffffffe3fcffffffffffffffffe7ffffffffffffffeffffcffffffffffffeffef
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ff37fe53ffff33fffffffffffffffffffffffffffffffffffffd3fcffffffffffffffffe7ffffffffffffffdffffcfffffffffffff7ff4
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bff2ffe63ffff87fffffffffffffffffffffffffffffffffffffe3fcffffff01fffffffff3fffffffffffffffffff9ffffffffffffeffec
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ff37fe53fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bff2ffe63fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffec
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ff37fe53fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bff280063fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ff300053fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffff83fffffffff003ffffff807ffe7fffffffff003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffec
afffffffffffffffffffffffffffffffffffffffffffffffffffffffff39fffffffffe7ffffffff3fffe7fffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffff39270e1c3ffe7288e1cff3c386661f9cc3ffe7288e1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
afffffffffffffffffffffffffffffffffffffffffffffffffffffffff8f1264c99ffe72664ccff399324ccf9c99ffe72664cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ff3fffd3fcf9fe7cff87e7ccfffffe7ffffffffffffffffffffd3ffffffffffffffff30f99fe7fffcc3870ffffffffffe7fffff87f7ff5
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe333e4f99ffe72664cfff3f91e1c7fc98fffe72664cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bff3fffe3fcfffe7cff33e7fcfffffe7ffffffffffffffffffffe3ffffffffffffffff2673cfe7fff8993267fffffffffe7fffff33effef
affffffffffffffffffffffffffffffffffffffffffffffffffffffffff13304f8183e726640fff3c1c61f1fc9e3ffe726640fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ff3fffd3fc99924c993324c861ff86619cc3fffffffffffffffd3fc99ca23ff0e19392673cfc30ff49932661ffa23872430e4fff3f7ff6
5fffffffffffffffffffffffffffffffffffffffffffffffffffffffff393264f9fffe72664ffff399e24f8fe3f1ffe72664ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bff3fffe3fc4922249933224cccff324c9c99fffffffffffffffe3fc49c999fe64c8922667e7e667f4993264cff99932466648ffe7effef
afffffffffffffffffffffffffffffffffffffffffffffffffffffffff391264c99ffe72664ccff3993264cfe3999fe72664cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ff3fffd3fcc932649933e64ccfff1e7cc999fffffffffffffffd3fccc9999fe3cc9932667e7e667ec993264fff9991e667e4c81cff7ff5
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8327121c3ffe726661cff3c486721ff7c39fe726661fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bff3fffe3fcc932649933e64ccfffc660c981fffffffffffffffe3fccc9999ff8c09932667e7e667dc993264fff999c666704cff9feffed
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ff3fffd3fcc932649933e64ccfffe24ce39ffffffffffffffffd3fcce3999ffc4f9932667e7e667c0193264fff999e266664c813ff7ff5
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bff3fffe3fc4922249133264c8cff324ce399fffffffffffffffe3fc4e3999fe64c9922667e7e467fc993264ccf99932464648ff3feffed
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ff3fffd3fc99924cc987264e61ff866277c3fffffffffffffffd3fc9f7999ff0e199930e7e7f30ffcc3870e1cf99987273124ff03f7ff5
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bff3fffe3fffff3fffffffffffffffffffffffffffffffffffffe3fcfffffffffffffffff3cffffffffffffffeffffffe7fffcffffeffed
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87ff3fffd3ffff33fffffffffffffffffffffffffffffffffffffd3fcfffffffffffffffff3cffffffffffffffdfffffe67ffccfffff7ff5
1ffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ff4bff3fffe3ffff87ffffffffffff80fffffffffffffffffffffffe3fcffffff01fffffffff99fffffffffffffffffffff0fffe1ffffeffef
2ffc00004000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcff7f8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcff3f4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcfe3f8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcfd1f4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcfa9f8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcfdcf4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcfbcf8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcf7e74ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffe7ccfffffe7fffffffffffffffffffffffd3fffffffffffffffff3f33f9fff8ffe7ffcf9fff9fffff8fffffff7ff7
1ffcefe78ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffe7fcfffffe7fffffffffffffffffffffffe3ffffffffffffffffc3e79f9fff3ffc7ff8f9fff9fffff3ffffffeffef
2ffcdff34ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fe19cc32724c861ff86619cc3ffffffffffffffffffd3fc99ca23fe4870ce73e79f93321ffa7ff4f93390c387e1243447f7ff7
1ffceff38ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fcc9c9913224cccff324c9c99ffffffffffffffffffe3fc49c999fe03264e73cfcf89333ffa7ff4f893999933f3019333effef
2ffcdff94ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fcfc9f933e64ccfff1e7cc999ffffffffffffffffffd3fccc9999fe3327e4f3cfcf993330367fecf99939991ff3199333f7ff7
1ffc80018ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fcfc9c133e64ccfffc660c981ffffffffffffffffffe3fccc9999fe7027e4f3cfcf99333fee7fdcf9993981c7f3399333effee
2ffc00004ff3e7f9f3fe1f9f33fffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fcfe39933e64ccfffe24ce39fffffffffffffffffffd3fcce3999fe73e7f1f3cfcf993330203fc0799c799fe3f3399333f7ff6
1ffcaaab8ff3fff9f3fccf9ff3fffffffffffffffffffffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fcce39933264c8cff324ce399ffffffffffffffffffe3fc4e3999fe732671f3cfcf89233ffe67fcf89c791933f3399333effee
2ffcd5554ff266493264cc932187fffffffffffffffffffffffff400000003e3fffffffffffffffffffffffffffcfffffffffffffffffffffffffffff9fffffffffffffffffffff9ffffffffffcffffffffffffffffff7ff87ff3fffd3fe1f3c433264e61ff866277c3ffffffffffffffffffd3fc9f7999fe7870fbf3cfcf93933ffe67fcf93e7cc387f33c3333f7ff6
1ffcbff98ff124889264cc893333fffffffffffffffffffffffff800000003e3fffffffffffffffffffffffffffcfffffffffffffffffffffffffffff9fffffffffffffffffffff9ffffffffffcffffffffffffffffffbff4bff3fffe3ffff7ffffffffffffffffffffffffffffffffffffffe3fcffffffffffffffffe79ffffffffff7fffffeffffffffffffffeffee
2ffcdff94ff324c99264cf99333ffffffffffffffffffffffffff400000003e3fffffffffffffffffffffffffffcfffffffffffffffffffffffffffff9fffffffffffffffffffff9ffffffffffcffffffffffffffffff7ff87ff3fffd3fffe7ffffffffffffffffffffffffffffffffffffffd3fcffffffffffffffffe79fffffffffeffffffcfffffffffffffff7ff6
1ffcbff98ff324c99264cf99333ffffffffffffffffffffffffff800000003e3fffffffffffffffffffffffffffcfffffffffffffffffffffffffffff9fffffffffffffffffffff9ffffffffffcffffffffffffffffffbff4bff3fffe3fffcfffffffffff80ffffffffffffffffffffffffffe3fcffffff01fffffffff33ffffffffffffffff9ffffffffffffffeffee
2ffcdff94ff324c99264cf99333ffffffffffffffffffffffffff400000003e3fffffffffffffffffffffffffffcfffffffffffffffffffffffffffff9fffffffffffffffffffff9ffffffffffcffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcbff98ff124889244cc993233fffffffffffffffffffffffff800000003e3fffffffffffffffffffffffffffcfffffffffffffffffffffffffffff9fffffffffffffffffffff9ffffffffffcffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcdff94ff2664933261c993987fffffffffffffffffffffffff400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcbff98fffffcffffffffffffffffffffffffffffffffffffff8fffffffff3fffffffffffffffffffffffffffefffffffffffffffffffffffffffffdfffffffffffffffffffffdffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcc0014ffffccffffffffffffffffffffffffffffffffffffff4fffffffff07ffffffffffffffffffffffffffefffffffffffffffffffffffffffffdfffffffffffffffffffffdffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffc80018ffffe1ffffffffffffffffffffffffffffffffffffff8fffffffff01ffffffffffffffffffffffffffefffffffffffffffffffffffffffffdfffffffffffffffffffffdffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffec
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffa63fffffffffffffffffffffffffefffffffffffffffffffffffffffffdfffffffffffffffffffffdffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffff91c7ffffffffffffffffffffffffefffffffffffffffffffffffffffffdfffffffffffffffffffffdffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffff98f1ffffffffffffffffffffffffefffffffffffffffffffffffffffffdfffffffffffffffffffffdffffffffffeffffffffffffffffff7ff87ff3fffd3fcfffffffffcf99fffffcffffffffffffffffffffffd3fffffffffffffffff3f33f9fff8ff07ffcf9fff9fffff8fffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffff8c7e3fffffffffffffffffffffffcfffffffffffffffffffffffffffff9fffffffffffffffffffffdffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffcff9fffffcffffffffffffffffffffffe3ffffffffffffffffc3e79f9fff3ff3fff8f9fff9fffff3ffffffeffed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffce1fc7ffffffffffffffffffffffcfffffffffffffffffffffffffffff9fffffffffffffffffffffdffffffffffeffffffffffffffffff7ff87ff3fffd3fcc3864330e4990c3ff0cc33987ffffffffffffffffd3fc99ca23fe4870ce73e79f93321fe7fff4f93390c387e1243447f7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffd70ff1ffffffffffffffffffffffcfffffffffffffffffffffffffffff9fffffffffffffffffffffdffffffffffeffffffffffffffffffbff4bff3fffe3fc993203266449999fe64993933ffffffffffffffffe3fc49c999fe03264e73cfcf89333fe0fff4f893999933f3019333effee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffc787fe3fffffffffffffffffffffcfffffffffffffffffffffffffffff9fffffffffffffffffffffdffffffffffeffffffffffffffffff7ff87ff3fffd3fc9ff23323fcc999ffe3cf99333ffffffffffffffffd3fccc9999fe3327e4f3cfcf9933303e7fecf99939991ff3199333f7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffcbcbffc7ffffffffffffffffffffcfffffffffffffffffffffffffffff9fffffffffffffffffffffdffffffffffeffffffffffffffffffbff4bff3fffe3fc9f827338fcc999fff8cc19303ffffffffffffffffe3fccc9999fe7027e4f3cfcf99333ffe7fdcf9993981c7f3399333effef
2ffcffff4ff3e7f9f3fe1f9f33fffff9fffffffffffffffffffff4fffffffffebf4fff1ffffffffffffffffffffcfffffffffffffffffffffffffffff9fffffffffffffffffffffdffffffffffeffffffffffffffffff7ff87ff3fffd3fc9f32733c7cc999fffc499c73fffffffffffffffffd3fcce3999fe73e7f1f3cfcf993330267fc0799c799fe3f3399333f7ff4
1ffcffff8ff3fff9f3fccf9ff3fffff9fffffffffffffffffffff8fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fc9932722664c9919fe6499c733ffffffffffffffffe3fc4e3999fe732671f3cfcf89233fe667fcf89c791933f3399333effec
2ffcffff4ff266493264cc932187fe1986730ffffffffffffffff4fffffffc000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fcc3887930e4c9cc3ff0cc4ef87ffffffffffffffffd3fc9f7999fe7870fbf3cfcf93933ff0e7fcf93e7cc387f33c3333f7ff4
1ffcffff8ff124889264cc893333fcc9327267fffffffffffffff8fffffffc000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3fcffffffffffffffffe79ffffffffff7fffffeffffffffffffffeffec
2ffcffff4ff324c99264cf99333ffc79f32667fffffffffffffff4fffffffc000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fcffffffffffffffffe79fffffffffeffffffcfffffffffffffff7ff4
1ffcffff8ff324c99264cf99333fff19832607fffffffffffffff8fffffffc000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffff01ffffffffffffffffffffffffe3fcffffff01fffffffff33ffffffffffffffff9ffffffffffffffeffed
2ffcffff4ff324c99264cf99333fff89338e7ffffffffffffffff4fffffffc000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ff124889244cc993233fcc9338e67fffffffffffffff8fffffffc000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffec
2ffcffff4ff2664933261c993987fe1989df0ffffffffffffffff4fffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8fffffcffffffffffffffffffffffffffffffffffffff8ffffffffff9bff9cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
2ffcffff4ffffccffffffffffffffffffffffffffffffffffffff4ffffffffff9dffce7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffe1ffffffffffffe03fffffffffffffffffffffff8ffffffffff9dffe7bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffccfff3cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffcefff9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffcefffef3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffeffffffffffffffffff7ff87ff3fffd3ffffffff9f33fffff9fffffffffffffffffffffffffd3fffffffffffffffff3f33f9fff8fe07ffcf9fff9fffff8fffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffc77fff7dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffeffffffffffffffffffbff4bff3fffe3ffffffff9ff3fffff9fffffffffffffffffffffffffe3ffffffffffffffffc3e79f9fff3ffe7ff8f9fff9fffff3ffffffeffed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffe77fffbe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffeffffffffffffffffff7ff87ff3fffd3fd11c324932187fe1986730ffffffffffffffffffffd3fc99ca23fe4870ce73e79f93321ffcfff4f93390c387e1243447f7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffe7bfffdf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffeffffffffffffffffffbff4bff3fffe3fccc9904893333fcc9327267fffffffffffffffffffe3fc49c999fe03264e73cfcf89333ffcfff4f893999933f3019333effed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffe3bfffefdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffeffffffffffffffffff7ff87ff3fffd3fccc8f1f99333ffc79f32667fffffffffffffffffffd3fccc9999fe3327e4f3cfcf99333039ffecf99939991ff3199333f7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffe3dffff7e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffeffffffffffffffffffbff4bff3fffe3fccce33f99333fff19832607fffffffffffffffffffe3fccc9999fe7027e4f3cfcf99333ff9ffdcf9993981c7f3399333effed
2ffcffff4ffffffffff9f33fffff9ffffffffffffffffffffffff4fffffffffff3dffffbf3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffeffffffffffffffffff7ff87ff3fffd3fcccf13f99333fff89338e7ffffffffffffffffffffd3fcce3999fe73e7f1f3cfcf99333039ffc0799c799fe3f3399333f7ff5
1ffcffff8ffffffffff9ff3fffff9ffffffffffffffffffffffff8ffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fccc993c993233fcc9338e67fffffffffffffffffffe3fc4e3999fe732671f3cfcf89233ff3e7fcf89c791933f3399333effef
2ffcffff4ff86730c9c932187fe1986730fffffffffffffffffff4ffffffffc00000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fcccc33c993987fe1989df0ffffffffffffffffffffd3fc9f7999fe7870fbf3cfcf93933ff3e7fcf93e7cc387f33c3333f7ff7
1ffcffff8ff3272644c893333fcc9327267ffffffffffffffffff8ffffffffc00000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3fcffffffffffffffffe79ffffffffff7fffffeffffffffffffffeffef
2ffcffff4ff3f27e4cf99333ffc79f32667ffffffffffffffffff4ffffffffc00000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fcffffffffffffffffe79fffffffffeffffffcfffffffffffffff7ff5
1ffcffff8ff3f2704cf99333fff19832607ffffffffffffffffff8ffffffffc00000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffe03fffffffffffffffffffffffffffe3fcffffff01fffffffff33ffffffffffffffff9ffffffffffffffeffef
2ffcffff4ff3f8e64cf99333fff89338e7fffffffffffffffffff4ffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ff338e64cc993233fcc9338e67ffffffffffffffffff8ffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ff87cf10cc993987fe1989df0fffffffffffffffffff4ffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffffdfffffffffffffffffffffffffffffffffffffff8fffffffffffd7dfffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffff9fffffffffffffffffffffffffffffffffffffff4fffffffffffd7effffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffff3ffffffffffe03ffffffffffffffffffffffffff8fffffffffffc7effffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffffebf7fffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffffebf7fffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffffebf3ffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3ffe7fff3e7ccfffffe7ffffffffffffffffffffffffd3fffffffffffffffff3f33f9fff8ff07ffcf9fff9fffff8fffffff7ff7
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffffe1fbffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffff3e7fcfffffe7ffffffffffffffffffffffffe3ffffffffffffffffc3e79f9fff3ff3fff8f9fff9fffff3ffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffff5fbffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fc864c3324c861ff86619cc3fffffffffffffffffffd3fc99ca23fe4870ce73e79f93321fe7fff4f93390c387e1243447f7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffff5fdffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fc048993224cccff324c9c99fffffffffffffffffffe3fc49c999fe03264e73cfcf89333fe0fff4f893999933f3019333effee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffff5fdfffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fc64c993e64ccfff1e7cc999fffffffffffffffffffd3fccc9999fe3327e4f3cfcf9933303e7fecf99939991ff3199333f7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffff2fefffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fce4c813e64ccfffc660c981fffffffffffffffffffe3fccc9999fe7027e4f3cfcf99333ffe7fdcf9993981c7f3399333effee
2ffcffff4ff3fffffffff3e67fffff3ffffffffffffffffffffff4ffffffffffffafefffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fce4c9f3e64ccfffe24ce39ffffffffffffffffffffd3fcce3999fe73e7f1f3cfcf993330267fc0799c799fe3f3399333f7ff6
1ffcffff8ffffffffffff3fe7fffff3ffffffffffffffffffffff8ffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fce48993264c8cff324ce399fffffffffffffffffffe3fc4e3999fe732671f3cfcf89233fe667fcf89c791933f3399333effee
2ffcffff4ff30e190cc3926430ffc330ce61fffffffffffffffff4ffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fce64c33264e61ff866277c3fffffffffffffffffffd3fc9f7999fe7870fbf3cfcf93933ff0e7fcf93e7cc387f33c3333f7ff6
1ffcffff8ff264c80c999126667f99264e4cfffffffffffffffff8ffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3ffffcffffffffffffffffffffffffffffffffffffffe3fcffffffffffffffffe79ffffffffff7fffffeffffffffffffffeffee
2ffcffff4ff27fc8cc8ff32667ff8f3e64ccfffffffffffffffff4ffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffccffffffffffffffffffffffffffffffffffffffd3fcffffffffffffffffe79fffffffffeffffffcfffffffffffffff7ff6
1ffcffff8ff27e09cce3f32667ffe33064c0fffffffffffffffff8ffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffe1fffffffff80fffffffffffffffffffffffffffe3fcffffff01fffffffff33ffffffffffffffff9ffffffffffffffeffee
2ffcffff4ff27cc9ccf1f32667fff12671cffffffffffffffffff4ffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ff264c9c8999326467f992671ccfffffffffffffffff8ffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffec
2ffcffff4ff30e21e4c3932730ffc3313be1fffffffffffffffff4ffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffffffdfefffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffffffdff7ffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8fffffffffffffffffc07ffffffffffffffffffffffff8fffffffffffffdff7ffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffffffcffbffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffffffeffbfffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffffffeffdfffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3ffe7fff87e7ccfffffe7fffffffffffffffffffffffd3fffffffffffffffff3f33f9fff8fe07ffcf9fff9fffff8fffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffffffeffdfffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffff33e7fcfffffe7fffffffffffffffffffffffe3ffffffffffffffffc3e79f9fff3ffe7ff8f9fff9fffff3ffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffff7fcfffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fc861c3f324c861ff86619cc3ffffffffffffffffffd3fc99ca23fe4870ce73e79f93321ffcfff4f93390c387e1243447f7ff4
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffff7feffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fc04c99e7224cccff324c9c99ffffffffffffffffffe3fc49c999fe03264e73cfcf89333ffcfff4f893999933f3019333effec
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffff7feffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fc64c8fcfe64ccfff1e7cc999ffffffffffffffffffd3fccc9999fe3327e4f3cfcf99333039ffecf99939991ff3199333f7ff4
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffbff7fffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fce4ce39fe64ccfffc660c981ffffffffffffffffffe3fccc9999fe7027e4f3cfcf99333ff9ffdcf9993981c7f3399333effec
2ffcffff4ffffffffe7ccfffffe7fffffffffffffffffffffffff4ffffffffffffffbff7ffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fce4cf13fe64ccfffe24ce39fffffffffffffffffffd3fcce3999fe73e7f1f3cfcf99333039ffc0799c799fe3f3399333f7ff4
1ffcffff8ffffffffe7fcfffffe7fffffffffffffffffffffffff8ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fce4c993f264c8cff324ce399ffffffffffffffffffe3fc4e3999fe732671f3cfcf89233ff3e7fcf89c791933f3399333effed
2ffcffff4ff4470c924c861ff86619cc3ffffffffffffffffffff4ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fce61c303264e61ff866277c3ffffffffffffffffffd3fc9f7999fe7870fbf3cfcf93933ff3e7fcf93e7cc387f33c3333f7ff7
1ffcffff8ff332641224cccff324c9c99ffffffffffffffffffff8ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3fcffffffffffffffffe79ffffffffff7fffffeffffffffffffffeffec
2ffcffff4ff3323c7e64ccfff1e7cc999ffffffffffffffffffff4ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fcffffffffffffffffe79fffffffffeffffffcfffffffffffffff7ff5
1ffcffff8ff3338cfe64ccfffc660c981ffffffffffffffffffff8ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffff80ffffffffffffffffffffffffffe3fcffffff01fffffffff33ffffffffffffffff9ffffffffffffffeffed
2ffcffff4ff333c4fe64ccfffe24ce39fffffffffffffffffffff4ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ff33264f264c8cff324ce399ffffffffffffffffffff8ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ff3330cf264e61ff866277c3ffffffffffffffffffff4ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffefff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffffffff7ffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffff80ffffffffffffffffffffffffffff8fffffffffffffff7ffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffffffff7ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffffffffbffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffffffffbffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffffffffbffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffffffffdfff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffffffffdfff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffffffffdfff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffffffffdfffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4fff9fffcf9f33fffff9fffffffffffffffffffffffff4fffffffffffffffefffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8fffffffcf9ff3fffff9fffffffffffffffffffffffff8ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ff21930cc932187fe1986730ffffffffffffffffffff4ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ff012264c893333fcc9327267fffffffffffffffffff8ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ff193264f99333ffc79f32667fffffffffffffffffff4ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ff393204f99333fff19832607fffffffffffffffffff8ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ff39327cf99333fff89338e7ffffffffffffffffffff4ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ff392264c993233fcc9338e67fffffffffffffffffff8ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ff39930cc993987fe1989df0ffffffffffffffffffff4ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8fffff3ffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffff33ffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffff87ffffffffe03fffffffffffffffffffffffffff8ffffffffffffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4fffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8fffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4fff9fffe1f9f33fffff9ffffffffffffffffffffffff4fffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8fffffffccf9ff3fffff9ffffffffffffffffffffffff8ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ff21870fcc932187fe1986730fffffffffffffffffff4ffffffff8000000000001c0000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ff0132679c893333fcc9327267ffffffffffffffffff8ffffffff8000000000001c0000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffec
2ffcffff4ff19323f3f99333ffc79f32667ffffffffffffffffff4ffffffff8000000000001c0000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4
1ffcffff8ff39338e7f99333fff19832607ffffffffffffffffff8ffffffff8000000000001c0000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ff3933c4ff99333fff89338e7fffffffffffffffffff4ffffffff8000000000001c0000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ff393264fc993233fcc9338e67ffffffffffffffffff8ffffffff8000000000001c0000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
2ffcffff4ff39870c0c993987fe1989df0fffffffffffffffffff4ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8fffffffffffffffe03ffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffec
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffec
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffec
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffec
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff5
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffee
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff6
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffef
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffec
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fffe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffec
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fffd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff2aaaa3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffed
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff355513fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff7
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3ffe63fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffe8
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff37fe53fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff1
1ffcffff8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3bfce3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffe9
2ffcffff4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3dfcd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff1
1ffcaaaa8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3ef9e3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffeb
2ffcd5544ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3dfbd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff2
1ffcfff98ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3ef3e3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffeb
2ffcdff94ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3f77d3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff1
1ffceff38ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3fa7e3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffe9
2ffcf7f34ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fcfd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff1
1ffcfbe78ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff3f8fe3fffffffffffffffffffffffffffffffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffffffffeffe9
2ffcf7ef4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff3fdfd3fffffffffffffffffffffffffffffffffffffffffffd3fffffffffffffffffffffffffffffffffffffffffffffffffffff7ff1
1ffcfbcf8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bff2aaaa2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffe9
2ffcfddf4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ff555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555557ff1
1ffcfe9f8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000007feb
2ffcff3f4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000007ff3
1ffcfe3f8ffffffffffffffffffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffbff4bffffffffffffffffffffffffffffffffffffffffffffffffffff3ffeffffffffffffffffffffffffffffffffffffffffffffffbffeffeb
2ffcff7f4ffffffffffffffffffffffffffffffffffffffffffff4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff7ff87ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffc55555fffffffffffffffffffffffffffffffffffffffffd7ff7ff1
1ffcaaaa8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa8aaaaaab55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555552aaaaaaaaaaaaaaaaabff4bffffffffffffffffffffffffffffffffffffffffffffffffffff3ff8aaaaafffffffffffffffffffffffffffffffffffffffffabfeffeb
2ffd555555555555555555555555555555555555555555555555555555554aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad555555555555555557ff87ffaaaaaaaaabffffffffffffffffffffffffffffffffffffffff3fd47fffcfffffffffffffffffffffffffffffffffffffffffddff7ff3
1ffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ff4bff5555555553ffffffffffffffffffffffffffffffffffffffff3fbcbfffcfffffffffffffffffffffffffffffffffffffffffbefeffeb
2ffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ff87ffbffffffff3ffffffffffffffffffffffffffffffffffffffff3f7c7fffcfffffffffffffffffffffffffffffffffffffffffdf5f7ff3
1ffffffffffffffffffffffffffffffffffffffffffffffffffffcfffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffbff4bff7ffffffff3ffffffffffffffffffffffffffffffffffffffff3efcbfffcfffffffffffffffffffffffffffffffffffffffffbfaeffeb
2ffffffffffffffffffffffffffffffffffffffffffffffffffffcfff155555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555557ff7ff87ffbffffffff3ffffffffffffffffffffffffffffffffffffffff35fc7fffcfffffffffffffffffffffffffffffffffffffffffdff77ff3
1ffffffffffffffffffffffffffffffffffffffffffffffffffffcffe2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabffbff4bff784ffffff3ffffffffffffffffffffffffffffffffffffffff07fcbfffcfffffffffffffffffffffffffffffffffffffffffbff0ffeb
2ffeaaaaaaaaaffffffffffeaaaaabfffffffaaaaaaffffffffffcff51fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1d7f7ff87ffb30ffffff3ffffffffffffffffffffffffffffffffffffffff31fc7fffcfffffffffffffffffffffffffffffffffffffffffdfe37ff3
1ffd555555554ffffffffffd555553fffffff555554ffffffffffcfef2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2ebfbff4bff67cc3870f3ffffffffffffffffffffffffffffffffffffffff3c7cbfffcfffffffffffffffffffffffffffffffffffffffffbf8effeb
2ffeffffffffcffffffffffefffff3fffffffbffffcffffffffffcfdf1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1fdf7ff87ffa7c9932673ffffffffffffffffffffffffffffffffffffffff3f1c7fffcfffffffffffffffffffffffffffffffffffffffffde3f7ff3
1ffdffffffffcffffffffffdff3ff3fffffff7fcffcffffffffffcfbf2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2fefbff4bff67c991e673ffffffffffffffffffffffffffffffffffffffff3f84bfffcfffffffffffffffffffffffffffffffffffffffffb8feffea
2ffeffffffffcffffffffffef927f3fffffffbf87fcffffffffffcd7f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1ff57ff87ffa7c99c6073ffffffffffffffffffffffffffffffffffffffff3fe040000fffffffffffffffffffffffffffffffffffffffffc1ff7ff2
1ffde13fffffcffffffffffdfc0ff3fffffff7f03fcffffffffffc1ff2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2ff8bff4bff67c99e27f3ffffffffffffffffffffffffffffffffffffffff3ff880000fffffffffffffffffffffffffffffffffffffffffa7feffea
2ffecc3fffffcffffffffffefe1ff3fffffffbe49fcffffffffffcc7f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1ff17ff87ffb309932673ffffffffffffffffffffffffffffffffffffffff3ffeffffffffffffffffffffffffffffffffffffffffffffffdfff7ff2
1ffd9f30e1c3cffffffffffdff3ff3fffffff7fcffcffffffffffcf1f2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2fc7bff4bff784c3870f3ffffffffffffffffffffffffffffffffffffffff2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffea
2ffe9f264c99cffffffffffe800073fffffffa0001cffffffffffcfc71fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1f1f7ff87ffbffffffff3ffffffffffffffffffffffffffffffffffffffff5555555555555555555555555555555555555555555555555555557ff2
1ffd9f264799cffffffffffd800073fffffff60001cffffffffffcfe12fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2c7fbff4bff7ffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea
2ffe9f267181cffffffffffefffff3fffffffbffffcffffffffffcff8100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010ff7ff87ffbffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2
1ffd9f26789fcffffffffffdfffff3fffffff7ffffcffffffffffcffe200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023ffbff4bff7ffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea
2ffecc264c99cffffffffffe800073fffffffa0001cffffffffffcfffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfff7ff87ffbffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2
1ffde130e1c3cffffffffffd800073fffffff60001cffffffffffcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabff4bff7ffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea
2ffeffffffffcffffffffffeff3ff3fffffffbfcffcffffffffffd555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555557ff87ff8000000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3
1ffdffffffffcffffffffffdfe1ff3fffffff7e49fcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bff0000000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8
2ffeffffffffcffffffffffefc0ff3fffffffbf03fcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
1ffdffffffffcffffffffffdf927f3fffffff7f87fcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb
2ffeffffffffcffffffffffeff3ff3fffffffbfcffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1
1ffdffffffffcffffffffffdfffff3fffffff7ffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9
2ffe000000000ffffffffffefffff3fffffffbffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1
1ffc000000000ffffffffffdfffff3fffffff7ffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea
2ffffffffffffffffffffffe000003fffffff800000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2
1ffffffffffffffffffffffc000003fffffff000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9
2ffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3
1ffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ff4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8
2ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1
1ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9
2ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff8555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555551
1ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab
2ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000022
1ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000003
2ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000001
1ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000001
2ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000001
1ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000001
2ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000001
1ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000001
2ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000001
1ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000003
2ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000003
1ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000003
2ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000001
1ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000003
2ffcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000003
1ffd55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555557ff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000003
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000003
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000003
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000003
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000003
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000003
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000003
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000003
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000002
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000002
1ffffffffffc3ffffffff33ffffffffffffffffffffffffffffffffffc3fffff9fffffcffffffffffffffffffffffffffffff333f999ffffffffffffffffffffffffffffffff3e7fffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000002
2ffffffffff99ffffffff3fffffffffffffffffffffffffffffffffff99fffff9fffffcffffffffffffffffffffffffffffff333ff9fffffffffffffffffffffffffffffffff3e7fffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000002
1ffffffffff3f0d119332124e4fffffffffffffffffffffffffffffff3c9cc3213870e4f00000003fffffffffffffffffffff3321909272780000001ffffffffffffffffffff1c61c3870e4c3fffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000002
2ffffffffff3e64cc893332248f80000003ffffffffffffffffffffff3c9c9900932648f7ffffffffffffffffffffffffffffb34c9991247bfffffffffffffffffffffffffff1c4c993264899fffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000002
1ffffffffff3e64cc99333264cf80000007ffffffffffffffffffffff3cc99919933e4cf7ffffffbfffffffffffffffffffff927c9993267bffffffdffffffffffffffffffff084c8f1fe4c99fffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000002
2ffffffffff3e64cc99333264cf80000003ffffffffffffffffffffff3cc9813990304cf7ffffffffffffffffffffffffffff92609993267bfffffffffffffffffffffffffff2a40e3c704c81fffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000002
1ffffffffff3e64cc99333264cf80000007ffffffffffffffffffffff3ce39f3993e64cf7ffffffbfffffffffffffffffffffcccc9993267bffffffdffffffffffffffffffff224ff1e264c9ff55555557ffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000002
2ffffffffff9864cc892322648f80000003ffffffffffffffffffffff99e39939932648f7ffffffffffffffffffffffffffffcccc9913247bfffffffffffffffffffffffffff364c993264899fffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000002
1ffffffffffc30ccc939392664f80000007ffffffffffffffffffffffc3f7c339987124f7ffffffbfffffffffffffffffffffcce21c93327bffffffdffffffffffffffffffff3661c387124c3fffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000002
2ffffffffffffffff9fffffffcf80000003fffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffe7bfffffffffffffffffffffffffffffffffffffcfffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000003
1ffffffffffffffff9ffffffccf80000007fffffffffffffffffffffffffffffffffffff7ffffffbfffffffffffffffffffffffffffffe67bffffffdfffffffffffffffffffffffffffffccfffffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000000
2ffffffffffffffff9ffffffe1faaaaaaabfffffffffffffffffffffffffffffffffffff55555557ffffffffffffffffffffffffffffff0faaaaaaabfffffffffffffffffffffffffffffe1fffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000000
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000003
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000001
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000001
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000001
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000002
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000002
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000003
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000000
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000000
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000000
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000000
2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000000
155555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555554000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000001
2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa8000000000000000000000000000000000000000000000000000000000000000000000000000080000000080000000000000000000000003
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000000

showpage
%%EndDocument

 endTexFig
 249 2171 a Fo(Figure)g(8.1)249 2209 y Fy(XPVM)g(in)o(terface)c(-)j
(snapshot)d(during)h(use)p eop
%%Page: 137 156
137 155 bop 249 251 a Fu(Adv)n(anced)14 b(T)m(opics)1252
b(137)249 507 y FA(XPVM)13 b(while)f(lea)o(ving)f(PVM)i(running.)k(If)
12 b(XPVM)h(is)f(b)q(eing)h(used)g(to)f(collect)h(trace)g(information,)
249 561 y(the)g(information)d(will)h(not)h(b)q(e)i(collected)f(if)f
(XPVM)h(is)f(stopp)q(ed.)19 b(The)13 b FB(Halt)f FA(button)h(is)f(used)
i(when)249 615 y(one)j(is)g(through)g(with)g(PVM.)g(Clic)o(king)e(on)i
(this)g(button)h(kills)d(all)h(running)h(PVM)g(tasks,)h(sh)o(uts)249
669 y(do)o(wn)c(PVM)i(cleanly)m(,)d(and)i(exits)g(the)g(XPVM)g(in)o
(terface.)22 b(The)15 b FB(Help)f FA(button)h(brings)g(up)g(a)f(men)o
(u)249 723 y(of)f(topics)h(the)h(user)g(can)f(get)g(help)g(ab)q(out.)
291 777 y(During)e(startup,)h(XPVM)h(joins)e(a)h(group)g(called)g(xp)o
(vm.)j(The)d(in)o(ten)o(tion)f(is)h(that)g(tasks)h(started)249
831 y(outside)j(the)h(XPVM)f(in)o(terface)h(can)f(get)g(the)h(TID)e(of)
h(XPVM)g(b)o(y)g(doing)f Fs(tid)21 b(=)g(pvm)p 1678 831
14 2 v 16 w(gettid\()249 885 y(xpvm,)g(0)g(\))p FA(.)29
b(This)18 b(TID)f(w)o(ould)g(b)q(e)h(needed)h(if)e(the)i(user)f(w)o(an)
o(ted)g(to)f(man)o(ually)e(turn)j(on)g(trac-)249 939
y(ing)f(inside)h(suc)o(h)h(a)f(task)g(and)g(pass)g(the)h(ev)o(en)o(ts)g
(bac)o(k)f(to)g(XPVM)g(for)g(displa)o(y)m(.)29 b(The)18
b(exp)q(ected)249 993 y(T)m(raceCo)q(de)d(for)e(these)j(ev)o(en)o(ts)f
(is)e(666.)291 1047 y(While)h(an)h(application)e(is)i(running,)g(XPVM)g
(collects)h(and)e(displa)o(ys)h(the)g(information)e(in)h(real)249
1101 y(time.)j(Although)12 b(XPVM)i(up)q(dates)g(the)g(views)f(as)h
(fast)f(as)g(it)g(can,)g(there)i(are)e(cases)i(when)f(XPVM)249
1155 y(cannot)g(k)o(eep)h(up)f(with)f(the)i(ev)o(en)o(ts)g(and)e(it)h
(falls)f(b)q(ehind)h(the)g(actual)g(run)g(time.)291 1209
y(In)e(the)h(middle)d(of)i(the)h(XPVM)g(in)o(terface)g(are)g
(trace\014le)g(con)o(trols.)18 b(It)12 b(is)g(here)i(that)e(the)h(user)
h(can)249 1263 y(sp)q(ecify)j(a)e(trace\014le|a)i(default)e
(trace\014le)i(in)f(/tmp)e(is)i(initially)d(displa)o(y)o(ed.)24
b(There)17 b(are)f(buttons)249 1317 y(to)g(sp)q(ecify)i(whether)f(the)h
(sp)q(eci\014ed)g(trace\014le)f(is)g(to)f(b)q(e)h(pla)o(y)o(ed)f(bac)o
(k)g(or)h(o)o(v)o(erwritten)g(b)o(y)f(a)h(new)249 1371
y(run.)24 b(XPVM)17 b(sa)o(v)o(es)f(trace)h(ev)o(en)o(ts)g(in)e(a)h
(\014le)g(using)f(the)i(\\self)e(de\014ning)h(data)g(format")d
(\(SDDF\))249 1425 y(describ)q(ed)k(in)e(Dan)f(Reed's)i(P)o(ablo)e([15)
o(])h(trace)h(pla)o(ying)d(pac)o(k)n(age.)22 b(The)15
b(analysis)g(of)f(PVM)i(traces)249 1479 y(can)e(b)q(e)h(carried)f(out)g
(on)g(an)o(y)f(of)g(a)h(n)o(um)o(b)q(er)f(of)g(systems)i(suc)o(h)f(as)g
(P)o(ablo.)291 1533 y(XPVM)f(can)h(pla)o(y)e(bac)o(k)h(its)h(o)o(wn)f
(SDDF)f(\014les.)19 b(The)13 b(tap)q(e-pla)o(y)o(er-lik)o(e)g(buttons)g
(allo)o(w)f(the)i(user)249 1587 y(to)f(rewind)g(the)g(trace\014le,)h
(stop)f(the)h(displa)o(y)d(at)i(an)o(y)g(p)q(oin)o(t,)f(and)g(step)i
(through)f(the)h(execution.)k(A)249 1641 y(time)13 b(displa)o(y)g(sp)q
(eci\014es)i(the)g(n)o(um)o(b)q(er)e(of)g(seconds)j(from)c(when)i(the)h
(trace)f(displa)o(y)f(b)q(egan.)291 1694 y(The)20 b FB(Views)f
FA(button)i(allo)o(ws)e(the)h(user)i(to)e(op)q(en)g(or)g(close)h(an)o
(y)f(of)f(sev)o(eral)i(views)f(presen)o(tly)249 1748
y(supplied)14 b(with)g(XPVM.)g(These)h(views)f(are)g(describ)q(ed)i(b)q
(elo)o(w.)249 1831 y Fr(8.1.1)48 b(Net)o(w)o(ork)15 b(View)249
1914 y FA(The)f FB(Network)e FA(view)h(displa)o(ys)f(the)i(presen)o(t)h
(virtual)d(mac)o(hine)g(con\014guration)h(and)g(the)g(activit)o(y)g(of)
249 1968 y(the)j(hosts.)21 b(Eac)o(h)15 b(host)g(is)g(represen)o(ted)j
(b)o(y)c(an)h(icon)g(that)f(includes)i(the)f(PVM)p 1535
1968 13 2 v 16 w(AR)o(CH)f(and)h(host)249 2022 y(name)e(inside)i(the)g
(icon.)k(In)14 b(the)h(initial)d(release)k(of)e(XPVM,)g(the)h(icons)g
(are)f(arranged)h(arbitrarily)249 2076 y(on)f(b)q(oth)f(sides)i(of)e(a)
g(bus)i(net)o(w)o(ork.)j(In)c(future)g(releases)h(the)g(view)e(will)f
(b)q(e)j(extended)g(to)e(visualize)249 2130 y(net)o(w)o(ork)20
b(activit)o(y)f(as)h(w)o(ell.)36 b(A)o(t)20 b(that)g(time)f(the)h(user)
h(will)e(b)q(e)h(able)g(to)g(sp)q(ecify)g(the)h(net)o(w)o(ork)249
2184 y(top)q(ology)13 b(to)g(displa)o(y)m(.)291 2238
y(These)e(icons)f(are)g(illuminated)d(in)j(di\013eren)o(t)h(colors)f
(to)g(indicate)f(their)i(status)f(in)g(executing)h(PVM)249
2292 y(tasks.)23 b(Green)16 b(implies)d(that)j(at)f(least)g(one)h(task)
f(on)g(that)h(host)f(is)h(busy)f(executing)h(useful)g(w)o(ork.)249
2346 y(Y)m(ello)o(w)e(indicates)i(that)f(no)h(tasks)f(are)h(executing)g
(user)h(computation,)d(but)h(at)g(least)h(one)g(task)f(is)249
2400 y(busy)f(executing)g(PVM)g(system)f(routines.)18
b(When)c(there)g(are)g(no)f(tasks)h(on)f(a)g(giv)o(en)g(host,)g(its)g
(icon)249 2454 y(is)h(left)f(uncolored)i(or)f(white.)k(The)c(sp)q
(eci\014c)h(colors)f(used)h(in)f(eac)o(h)g(case)h(are)f(user)h
(customizable.)291 2508 y(The)j(user)i(can)e(tell)g(at)g(a)g(glance)g
(ho)o(w)g(w)o(ell)g(the)g(virtual)g(mac)o(hine)f(is)h(b)q(eing)g
(utilized)g(b)o(y)g(his)p eop
%%Page: 138 157
138 156 bop 249 251 a Fu(138)1356 b(Chapter)13 b(8)249
507 y FA(PVM)g(application.)k(If)12 b(all)g(the)h(hosts)g(are)h(green)f
(most)f(of)g(the)i(time,)d(then)i(mac)o(hine)f(utilization)f(is)249
561 y(go)q(o)q(d.)18 b(The)d(Net)o(w)o(ork)f(view)g(do)q(es)h(not)f
(displa)o(y)f(activit)o(y)h(from)e(other)j(users')g(PVM)f(jobs)g(or)g
(other)249 615 y(pro)q(cesses)j(that)d(ma)o(y)d(b)q(e)k(running)f(on)f
(the)i(hosts.)291 669 y(In)h(future)i(releases)g(the)g(view)f(will)e
(allo)o(w)g(the)j(user)g(to)e(clic)o(k)h(on)g(a)f(m)o(ultipro)q(cessor)
h(icon)f(and)249 723 y(get)h(information)d(ab)q(out)j(the)g(n)o(um)o(b)
q(er)f(of)g(pro)q(cessors,)j(n)o(um)o(b)q(er)d(of)h(PVM)g(tasks,)g
(etc.,)h(that)f(are)249 777 y(running)d(on)f(the)i(host.)249
860 y Fr(8.1.2)48 b(Space-Time)14 b(View)249 943 y FA(The)e
FB(Sp)n(ac)n(e-Time)f FA(view)g(displa)o(ys)g(the)h(activities)f(of)g
(individual)e(PVM)j(tasks)g(that)f(are)h(running)f(on)249
997 y(the)16 b(virtual)e(mac)o(hine.)21 b(Listed)16 b(on)f(the)h
(left-hand)f(side)g(of)g(the)h(view)f(are)h(the)f(executable)i(names)
249 1051 y(of)12 b(the)h(tasks,)g(preceded)i(b)o(y)e(the)g(host)g(they)
g(are)g(running)g(on.)k(The)c(task)g(list)f(is)h(sorted)h(b)o(y)e(host)
h(so)249 1105 y(that)h(it)g(is)g(easy)h(to)f(see)h(whether)h(tasks)e
(are)h(b)q(eing)f(clump)q(ed)g(on)g(one)g(host.)19 b(This)14
b(list)g(also)g(sho)o(ws)249 1159 y(the)h(task-to-host)e(mappings)g
(\(whic)o(h)g(are)i(not)f(a)o(v)n(ailable)d(in)j(the)g(Net)o(w)o(ork)g
(view\).)291 1213 y(The)e(Space-Time)f(view)g(com)o(bines)g(three)i
(di\013eren)o(t)g(displa)o(ys.)j(The)c(\014rst)h(is)f(lik)o(e)e(a)i
(Gan)o(tt)f(c)o(hart.)249 1267 y(Beside)18 b(eac)o(h)f(listed)f(task)h
(is)f(a)g(horizon)o(tal)g(bar)g(stretc)o(hing)i(out)e(in)g(the)h
(\\time")e(direction.)26 b(The)249 1321 y(color)16 b(of)f(this)h(bar)g
(at)g(an)o(y)f(time)g(indicates)h(the)g(state)h(of)e(the)i(task.)24
b(Green)17 b(indicates)f(that)g(user)249 1375 y(computations)g(are)h(b)
q(eing)g(executed.)30 b(Y)m(ello)o(w)16 b(marks)g(the)i(times)e(when)h
(the)h(task)f(is)g(executing)249 1429 y(PVM)h(routines.)29
b(White)17 b(indicates)h(when)f(a)g(task)h(is)f(w)o(aiting)f(for)h
(messages.)29 b(The)17 b(bar)h(b)q(egins)249 1483 y(at)c(the)h(time)e
(when)i(the)f(task)h(starts)g(executing)g(and)f(ends)h(when)g(the)g
(task)f(exits)h(normally)m(.)h(The)249 1537 y(sp)q(eci\014c)f(colors)f
(used)h(in)f(eac)o(h)g(case)h(are)f(user)h(customizable.)291
1591 y(The)g(second)h(displa)o(y)d(o)o(v)o(erla)o(ys)i(the)g(\014rst)g
(displa)o(y)f(with)h(the)g(comm)o(unicatio)o(n)d(activit)o(y)i(among)
249 1645 y(tasks.)28 b(When)17 b(a)g(message)g(is)g(sen)o(t)h(b)q(et)o
(w)o(een)g(t)o(w)o(o)f(tasks,)h(a)e(red)i(line)f(is)g(dra)o(wn)g
(starting)g(at)f(the)249 1699 y(sending)d(task's)h(bar)f(at)g(the)h
(time)e(the)h(message)g(is)g(sen)o(t)h(and)f(ending)g(at)g(the)h
(receiving)g(task's)f(bar)249 1753 y(when)18 b(the)g(message)g(is)f
(receiv)o(ed.)31 b(Note)18 b(that)g(this)g(is)f(not)h(necessarily)g
(the)h(time)d(the)i(message)249 1807 y(arriv)o(ed,)g(but)f(rather)i
(the)f(time)e(the)i(task)f(returns)i(from)d(p)o(vm)p
1285 1807 13 2 v 13 w(recv\(\).)30 b(Visually)m(,)16
b(the)i(patterns)249 1861 y(and)13 b(slop)q(es)h(of)f(the)h(red)g
(lines)f(com)o(bined)f(with)h(white)g(\\w)o(aiting")f(regions)h(rev)o
(eal)h(a)f(lot)f(ab)q(out)h(the)249 1914 y(comm)o(unication)d
(e\016ciency)15 b(of)e(an)h(application.)291 1968 y(The)f(third)f
(displa)o(y)g(app)q(ears)h(only)f(when)h(a)f(user)i(clic)o(ks)e(on)h
(in)o(teresting)g(features)g(of)f(the)h(Space-)249 2022
y(Time)d(view)g(with)h(the)h(left)e(mouse)g(button.)18
b(A)11 b(small)d(\\p)q(op-up")j(windo)o(w)f(app)q(ears)i(giving)d
(detailed)249 2076 y(information)e(regarding)j(sp)q(eci\014c)i(task)e
(states)h(or)f(messages.)17 b(If)10 b(a)f(task)h(bar)g(is)g(clic)o(k)o
(ed)g(on,)h(the)f(state)249 2130 y(b)q(egin)k(and)g(end)g(times)f(are)i
(displa)o(y)o(ed,)d(along)h(with)h(the)g(last)g(PVM)g(system)g(call)f
(information.)i(If)249 2184 y(a)d(message)g(line)g(is)g(clic)o(k)o(ed)h
(on,)f(the)h(windo)o(w)e(displa)o(ys)h(the)h(send)g(and)f(receiv)o(e)i
(time)d(as)h(w)o(ell)g(as)g(the)249 2238 y(n)o(um)o(b)q(er)h(of)h(b)o
(ytes)g(in)g(the)g(message)g(and)f(the)i(message)e(tag.)291
2292 y(When)h(the)h(mouse)f(is)g(mo)o(v)o(ed)f(inside)h(the)h
(Space-Time)f(view,)g(a)g(blue)g(v)o(ertical)g(line)g(trac)o(ks)h(the)
249 2346 y(cursor)g(and)e(the)h(time)e(corresp)q(onding)j(to)e(this)h
(v)o(ertical)f(line)g(is)h(displa)o(y)o(ed)f(as)g(Query)i(time)d(at)h
(the)249 2400 y(b)q(ottom)f(of)i(the)g(displa)o(y)m(.)j(This)d(v)o
(ertical)f(line)h(also)f(app)q(ears)i(in)e(the)i(other)f(\\something)e
(vs.)19 b(time")249 2454 y(views)c(so)g(the)h(user)g(can)f(correlate)h
(a)e(feature)i(in)e(one)h(view)g(with)g(information)d(giv)o(en)i(in)h
(another)249 2508 y(view.)p eop
%%Page: 139 158
139 157 bop 249 251 a Fu(Adv)n(anced)14 b(T)m(opics)1252
b(139)291 507 y FA(The)13 b(user)h(can)g(zo)q(om)d(in)o(to)i(an)o(y)f
(area)i(of)e(the)i(Space-Time)e(view)h(b)o(y)g(dragging)f(the)i(v)o
(ertical)f(line)249 561 y(with)18 b(the)g(middle)e(mouse)h(button.)30
b(The)19 b(view)e(will)g(unzo)q(om)f(bac)o(k)i(one)g(lev)o(el)g(when)g
(the)g(righ)o(t)249 615 y(mouse)f(button)g(is)g(clic)o(k)o(ed.)28
b(It)18 b(is)f(often)g(the)h(case)h(that)e(v)o(ery)h(\014ne)f(comm)o
(unication)d(or)j(w)o(aiting)249 669 y(states)g(are)g(only)e(visible)g
(when)i(the)f(view)g(is)g(magni\014ed)e(with)i(the)h(zo)q(om)d
(feature.)25 b(As)17 b(with)e(the)249 723 y(Query)g(time,)d(the)i
(other)h(views)f(also)f(zo)q(om)g(along)g(with)g(the)i(Space-Time)e
(view.)249 806 y Fr(8.1.3)48 b(Other)14 b(Views)249 889
y FA(XPVM)h(is)f(designed)h(to)g(b)q(e)g(extensible.)20
b(New)15 b(views)g(can)g(b)q(e)g(created)h(and)e(added)h(to)f(the)h
FB(Views)249 943 y FA(men)o(u.)j(A)o(t)d(presen)o(t,)g(there)h(are)f
(three)g(other)g(views:)k(task)c(utilization)d(vs.)20
b(time)13 b(view,)h(call)f(trace)249 997 y(view,)g(and)h(task)f(output)
h(view.)k(Unlik)o(e)13 b(the)h(Net)o(w)o(ork)g(and)g(Space-Time)e
(views,)i(these)h(views)f(are)249 1051 y(closed)f(b)o(y)f(default.)17
b(XPVM)12 b(attempts)g(to)g(dra)o(w)g(the)g(views)g(in)g(real)g(time;)f
(hence,)i(the)g(few)o(er)g(op)q(en)249 1105 y(views,)h(the)g(faster)h
(XPVM)f(can)g(dra)o(w.)291 1159 y(The)e(Utilization)e(view)h(sho)o(ws)i
(the)f(n)o(um)o(b)q(er)f(of)g(tasks)h(computing,)e(in)h(o)o(v)o
(erhead,)h(or)g(w)o(aiting)e(for)249 1213 y(eac)o(h)i(instan)o(t.)18
b(It)11 b(is)h(a)g(summary)d(of)i(the)i(Space-Time)d(view)i(for)g(eac)o
(h)g(instan)o(t.)17 b(Since)12 b(the)h(n)o(um)o(b)q(er)249
1267 y(of)g(tasks)g(in)g(a)g(PVM)g(application)f(can)i(c)o(hange)f
(dynamically)m(,)c(the)14 b(scale)g(on)f(the)h(Utilization)d(view)249
1321 y(will)e(c)o(hange)h(dynamically)d(when)j(tasks)h(are)f(added,)h
(but)f(not)g(when)h(they)f(exit.)17 b(When)10 b(the)h(n)o(um)o(b)q(er)
249 1375 y(of)j(tasks)h(c)o(hanges,)g(the)g(displa)o(y)o(ed)f(p)q
(ortion)g(of)g(the)h(Utilization)e(view)h(is)h(completely)e(redra)o(wn)
i(to)249 1429 y(the)g(new)f(scale.)291 1483 y(The)f(Call)e(T)m(race)i
(view)f(pro)o(vides)h(a)f(textual)g(record)i(of)e(the)h(last)f(PVM)h
(call)f(made)f(in)h(eac)o(h)h(task.)249 1537 y(The)g(list)f(of)g(tasks)
h(is)g(the)g(same)f(as)g(in)g(the)i(Space-Time)d(view.)18
b(As)13 b(an)f(application)f(runs,)i(the)g(text)249 1591
y(c)o(hanges)g(to)g(re\015ect)h(the)f(most)e(recen)o(t)j(activit)o(y)e
(in)g(eac)o(h)h(task.)k(This)c(view)f(is)g(useful)h(as)g(a)f(call)f
(lev)o(el)249 1645 y(debugger)k(to)e(iden)o(tify)h(where)h(a)e(PVM)h
(program's)f(execution)h(hangs.)291 1699 y(Unlik)o(e)g(the)i(PVM)g
(console,)g(XPVM)g(has)f(no)g(natural)g(place)h(for)f(task)g(output)h
(to)f(b)q(e)h(prin)o(ted.)249 1753 y(Nor)j(is)h(there)g(a)f(\015ag)g
(in)g(XPVM)h(to)f(tell)g(tasks)h(to)f(redirect)i(their)f(standard)f
(output)h(bac)o(k)f(to)249 1807 y(XPVM.)e(This)f(\015ag)g(is)h(turned)g
(on)f(automatically)e(in)i(all)f(tasks)i(spa)o(wned)g(b)o(y)g(XPVM)g
(after)f(the)249 1861 y(T)m(ask)h(Output)h(view)f(is)f(op)q(ened.)29
b(This)17 b(view)g(giv)o(es)g(the)h(user)g(the)g(option)e(to)h(also)g
(redirect)h(the)249 1914 y(output)g(in)o(to)g(a)g(\014le.)30
b(If)18 b(the)h(user)g(t)o(yp)q(es)g(a)f(\014le)g(name)f(in)h(the)g
(\\T)m(ask)g(Output")g(b)q(o)o(x,)h(then)f(the)249 1968
y(output)c(is)g(prin)o(ted)g(in)g(the)g(windo)o(w)f(and)h(in)o(to)f
(the)h(\014le.)291 2022 y(As)i(with)f(the)i(trace)f(ev)o(en)o(ts,)h(a)f
(task)g(started)g(outside)h(XPVM)f(can)g(b)q(e)g(programmed)e(to)h
(send)249 2076 y(standard)k(output)f(to)g(XPVM)h(for)f(displa)o(y)f(b)o
(y)h(using)g(the)h(options)e(in)h(p)o(vm)p 1517 2076
13 2 v 13 w(setopt\(\).)33 b(XPVM)249 2130 y(exp)q(ects)16
b(the)e(OutputCo)q(de)h(to)f(b)q(e)h(set)f(to)g(667.)249
2251 y FD(8.2)52 b(P)o(orting)18 b(PVM)e(to)i(New)f(Arc)o(hitectures)
249 2359 y FA(PVM)d(has)g(b)q(een)h(p)q(orted)g(to)f(three)h(distinct)f
(classes)h(of)f(arc)o(hitecture:)208 2429 y Ft(\017)20
b FA(W)m(orkstations)13 b(and)h(PCs)g(running)g(some)f(v)o(ersion)h(of)
f(Unix)208 2500 y Ft(\017)20 b FA(Distributed-memory)12
b(m)o(ultipro)q(cessors)h(lik)o(e)h(the)g(In)o(tel)g(h)o(yp)q(ercub)q
(es)p eop
%%Page: 140 159
140 158 bop 249 251 a Fu(140)1356 b(Chapter)13 b(8)208
507 y Ft(\017)20 b FA(Shared-memory)12 b(m)o(ultipro)q(cessors)i(lik)o
(e)f(the)h(SGI)g(Challenge)249 578 y(Eac)o(h)f(of)g(these)h(classes)h
(requires)f(a)f(di\013eren)o(t)h(approac)o(h)f(to)g(mak)o(e)e(PVM)j
(exploit)e(the)i(capabilities)249 632 y(of)9 b(the)i(resp)q(ectiv)o(e)g
(arc)o(hitecture.)19 b(The)10 b(w)o(orkstations)g(use)g(TCP/IP)g(to)g
(mo)o(v)o(e)e(data)i(b)q(et)o(w)o(een)h(hosts,)249 686
y(the)h(distributed-memory)e(m)o(ultipro)q(cessors)h(use)i(the)f(nativ)
o(e)f(message-passing)g(routines)h(to)g(mo)o(v)o(e)249
740 y(data)e(b)q(et)o(w)o(een)i(no)q(des,)g(and)e(the)i(shared-memory)d
(m)o(ultipro)q(cessors)h(use)i(shared)f(memory)d(to)j(mo)o(v)o(e)249
794 y(data)16 b(b)q(et)o(w)o(een)i(the)f(pro)q(cessors.)27
b(The)17 b(follo)o(wing)d(sections)j(describ)q(e)h(the)f(steps)h(for)d
(p)q(orting)h(the)249 848 y(PVM)e(source)i(to)d(eac)o(h)i(of)e(these)i
(classes.)291 902 y(P)o(orting)10 b(PVM)h(to)f(non-Unix)g(op)q(erating)
h(systems)g(can)g(b)q(e)g(v)o(ery)g(di\016cult.)16 b(Nonetheless,)d
(groups)249 956 y(outside)18 b(the)h(PVM)g(team)d(ha)o(v)o(e)i(dev)o
(elop)q(ed)h(PVM)f(p)q(orts)h(for)f(DEC's)g(VMS)g(and)g(IBM's)g(OS/2)
249 1010 y(op)q(erating)c(systems.)k(Suc)o(h)d(p)q(orts)g(can)f
(require)h(extensiv)o(e)g(rewriting)f(of)f(the)i(source)g(and)f(are)g
(not)249 1064 y(describ)q(ed)i(here.)249 1147 y Fr(8.2.1)48
b(Unix)15 b(W)l(orkstations)249 1230 y FA(PVM)j(is)e(supp)q(orted)j(on)
e(most)f(Unix)g(platforms.)26 b(If)17 b(an)g(arc)o(hitecture)i(is)e
(not)g(listed)g(in)f(the)i(\014le)249 1284 y Fs($PVM)p
340 1284 14 2 v 15 w(ROOT/docs/arches)p FA(,)8 b(the)j(follo)o(wing)d
(description)k(should)e(help)h(y)o(ou)g(to)f(create)j(a)d(new)i(PVM)249
1337 y(p)q(ort.)31 b(An)o(ything)18 b(from)e(a)i(small)e(amoun)o(t)g
(of)i(t)o(w)o(eaking)f(to)h(ma)r(jor)e(surgery)k(ma)o(y)c(b)q(e)j
(required,)249 1391 y(dep)q(ending)c(on)e(ho)o(w)h(accomo)q(dating)e(y)
o(our)h(v)o(ersion)h(of)g(Unix)f(is.)291 1445 y(The)h(PVM)g(source)h
(directories)g(are)f(organized)g(in)g(the)g(follo)o(wing)d(manner:)17
b(Files)d(in)g Fs(src)f FA(form)249 1499 y(the)i(core)g(for)f(PVM)h
(\(p)o(vmd)e(and)h(libp)o(vm\);)e(\014les)j(in)f Fs(console)f
FA(are)i(for)f(the)h(PVM)g(console,)f(whic)o(h)249 1553
y(is)f(just)h(a)f(sp)q(ecial)h(task;)f(source)i(for)e(the)i(F)o(OR)m
(TRAN)d(in)o(terface)i(and)g(group)f(functions)g(are)h(in)f(the)249
1607 y Fs(libfpvm)f FA(and)i Fs(pvmgs)f FA(directories,)i(resp)q(ectiv)
o(ely)m(.)291 1661 y(In)e(eac)o(h)g(of)g(the)h(source)g(directories,)g
(the)g(\014le)f Fs(Makefile.aimk)e FA(is)i(the)h(generic)g(mak)o
(e\014le)d(for)i(all)249 1715 y(unipro)q(cessor)i(platforms.)i
(System-sp)q(eci\014c)d(de\014nitions)g(are)g(k)o(ept)h(in)e(the)i
Fs(conf)e FA(directory)h(under)249 1769 y Fs($\(PVM)p
362 1769 V 15 w(ARCH\).def)p FA(.)22 b(The)17 b(script)g
Fs(lib/aimk)p FA(,)d(in)o(v)o(ok)o(ed)h(b)o(y)h(the)h(top-lev)o(el)e
(mak)o(e\014le,)g(determines)249 1823 y(the)c(v)n(alue)f(of)g
Fs(PVM)p 534 1823 V 15 w(ARCH)p FA(,)f(then)i(c)o(ho)q(oses)g(the)g
(appropriate)g(mak)o(e\014le)d(for)j(a)f(particular)g(arc)o(hitecture.)
249 1877 y(It)i(\014rst)g(lo)q(oks)f(in)g(the)h Fs(PVM)p
663 1877 V 15 w(ARCH)e FA(sub)q(directory)j(for)e(a)g(mak)o(e\014le;)g
(if)f(none)i(is)f(found,)g(the)h(generic)h(one)249 1931
y(is)i(used.)21 b(The)15 b(custom)g(information)c(stored)16
b(in)f(the)g Fs(conf)f FA(directory)h(is)g(prep)q(ended)i(to)d(the)i
(head)249 1985 y(of)c(the)h(c)o(hosen)g(mak)o(e\014le,)d(and)i(the)h
(build)f(b)q(egins.)18 b(The)12 b(generic)h(mak)o(e\014les)f(for)f(MPP)
i(and)f(shared-)249 2039 y(memory)i(systems)i(are)g(Mak)o(e\014le.mimd)
d(and)j(Mak)o(e\014le.shmem,)e(resp)q(ectiv)o(ely)m(.)25
b(System-sp)q(eci\014c)249 2093 y(rules)15 b(are)f(k)o(ept)g(in)g(the)g
(mak)o(e\014le)e(under)j(the)g Fs(PVM)p 1050 2093 V 15
w(ARCH)e FA(sub)q(directory)m(.)291 2147 y(The)h(steps)h(to)f(create)h
(a)f(new)g(arc)o(hitecture)i(\(for)e(example)e FB(AR)o(CH)p
FA(\))i(are:)208 2218 y Ft(\017)20 b FA(Add)15 b(a)g(rule)g(to)g(the)g
(script)h Fs(lib/pvmgetarch)c FA(so)j(it)f(returns)i
FB(AR)o(CH)p FA(.)e(PVM)i(uses)g(this)f(program)249 2271
y(to)i(determine)f(mac)o(hine)f(arc)o(hitecture)k(at)d(run)h(time.)25
b Fs(pvmgetarch)15 b FA(tries)i(to)g(use)g(the)h Fs(uname)d
FA(or)249 2325 y Fs(arch)e FA(command)f(\(supplied)i(b)o(y)g(man)o(y)e
(v)o(endors\).)20 b(If)14 b(there)h(is)f(no)g(suc)o(h)h(command,)c(w)o
(e)j(c)o(hec)o(k)h(for)249 2379 y(the)d(existence)i(of)d(a)g(\014le)h
(or)g(device)g(unique)g(to)f(a)h(mac)o(hine)e({)i(try)g(to)f(\014nd)h
(one)g(that)g(do)q(esn't)g(dep)q(end)249 2433 y(on)g(con\014guration)g
(options.)17 b(Don't)12 b(break)h(the)f(existing)h(arc)o(hitectures)h
(when)f(adding)e(a)h(new)h(one,)249 2487 y(unless)h(y)o(ou)e(w)o(on't)g
(b)q(e)h(sharing)g(the)g(co)q(de)h(or)e(just)h(w)o(an)o(t)g(to)f(hac)o
(k)h(it)f(together.)19 b(A)o(t)13 b(w)o(orst,)g(y)o(ou)f(can)p
eop
%%Page: 141 160
141 159 bop 249 251 a Fu(Adv)n(anced)14 b(T)m(opics)1252
b(141)249 507 y FA(o)o(v)o(erride)14 b(p)o(vmgetarc)o(h)f(b)o(y)h
(setting)g Fs(PVM)p 895 507 14 2 v 15 w(ARCH)f FA(in)h(y)o(our)f
Fs(.cshrc)g FA(\014le.)208 578 y Ft(\017)20 b FA(Create)f(\014les)e
FB(AR)o(CH)p Fs(.def)g FA(and)g FB(AR)o(CH)p Fs(.m4)f
FA(in)i Fs(pvm3/conf)p FA(.)26 b(As)18 b(a)g(\014rst)g(try)m(,)g(cop)o
(y)f(them)g(from)249 632 y(another)j(arc)o(hitecture)h(similar)c(to)i
(y)o(ours)h(\(y)o(ou'll)e(ha)o(v)o(e)h(to)g(\014gure)h(that)f(out\).)35
b FB(AR)o(CH)p Fs(.def)18 b FA(is)249 686 y(a)g(mac)o(hine-dep)q(enden)
o(t)g(header)h(used)g(with)f(the)g(generic)h(mak)o(e\014les)e(\(for)h
(example)e(see)j(the)g(\014le)249 740 y Fs(src/Makefile.aimk)p
FA(\).)c(It)f(de\014nes)h(the)f(follo)o(wing)e(v)n(ariables)h(\(and)h
(p)q(ossibly)f(others\):)227 819 y Fb({)21 b Fg(PVM)p
332 819 12 2 v 13 w(ARCH)11 b Fu({)i(This)h(is)f(set)g(to)g(the)g(arc)o
(hitecture)i(name,)e Fd(AR)o(CH)p Fu(.)227 881 y Fb({)21
b Fg(ARCHCFLAG)o(S)11 b Fu({)j(This)g(lists)h(an)o(y)g(sp)q(ecial)h(C)d
(compiler)j(\015ags)f(needed,)f(for)g(example,)h(optimizer)h(limits)g
(or)249 927 y(\015oating-p)q(oin)o(t)d(switc)o(hes)d(\(Not,)g(for)f
(example,)j Fg(-O)p Fu(\).)c(It)i(also)g(de\014nes)h(macros)f(needed)h
(to)f(switc)o(h)g(in)h(optional)249 972 y(PVM)i(source)h(co)q(de,)f
(for)g(example,)h Fg(-DSYSVSIG)o(NA)o(L)p Fu(.)9 b(Common)14
b(compiler)h(macros)e(are)g(explained)j(b)q(elo)o(w.)227
1034 y Fb({)21 b Fg(ARCHDLIB)7 b Fu({)j(This)h(lists)h(an)o(y)f(sp)q
(ecial)h(libraries)h(needed)f(to)e(link)i(with)f(the)f(p)o(vmd,)i(for)e
(example)i Fg(-lsocket)o Fu(.)249 1080 y(Y)m(ou'll)f(need)g(to)f(set)g
(this)g(if)h(there)f(are)g(sym)o(b)q(ols)i(unde\014ned)g(while)f
(linking)i(the)d(p)o(vmd.)16 b(Y)m(ou)10 b(can)h(use)f
Fg(nm)f Fu(and)249 1126 y Fg(grep)j Fu(to)j(\014nd)f(the)h(missing)h
(functions)g(in)e Fg(/usr/lib/li)o(b*)o(.a)p Fu(.)j(They)d(ma)o(y)g(o)q
(ccur)h(in)g(m)o(ultiple)i(libraries,)249 1171 y(but)c(are)h(probably)h
(de\014ned)f(in)g(only)g(one.)227 1234 y Fb({)21 b Fg(ARCHLIB)16
b Fu({)i(This)i(lists)g(an)o(y)f(sp)q(ecial)i(libraries)g(needed)f(to)f
(link)h(with)g(tasks)f(\(an)o(ything)i(link)o(ed)f(with)249
1279 y Fd(libpvm)p Fu(\).)f(It)14 b(is)h(probably)h(a)e(sup)q(eset)h
(of)f Fg(ARCHDLIB)p Fu(,)c(b)q(ecause)16 b(libp)o(vm)g(uses)f(mostly)g
(the)f(same)g(functions)249 1325 y(as)f(the)g(p)o(vmd,)h(and)f(also)h
(uses)g(XDR.)227 1387 y Fb({)21 b Fg(HASRANLIB)6 b Fu({)k(This)h
(should)h(b)q(e)e(set)g(to)g Fg(t)g Fu(if)g(y)o(our)h(mac)o(hine)g(has)
g(the)f Fg(ranlib)e Fu(command,)j(and)g Fg(f)e Fu(otherwise.)249
1474 y FA(Compiler)i(macros)h(imp)q(orted)f(from)g Fs(conf/)p
FB(AR)o(CH)p Fs(.def)f FA(are)j(listed)g(at)g(the)g(top)f(of)g(the)i
(\014le)e(named)249 1528 y Fs(src/Makefile.aimk)p FA(.)j(They)g(enable)
f(options)g(that)g(are)g(common)d(to)j(sev)o(eral)h(mac)o(hines)e(and)h
(so)249 1582 y(generally)h(useful.)22 b(New)16 b(ones)g(are)g(added)f
(o)q(ccasionally)m(.)21 b(The)16 b(macro)e Fs(IMA)p 1479
1582 14 2 v 15 w FB(AR)o(CH)h FA(can)g(b)q(e)h(used)249
1636 y(to)d(enable)h(co)q(de)g(that)f(only)g(applies)g(to)g(a)g(single)
g(arc)o(hitecture.)20 b(The)13 b(ones)h(most)e(commonly)e(used)249
1690 y(are:)227 1769 y Fb({)21 b Fg(FDSETPATC)o(H)10
b Fu({)j(If)f Fg(fd)p 591 1769 12 2 v 13 w(set)g Fu(de\014nitions)k
(are)d(missing)i(from)e(the)g(system)g(\(rare)g(these)h(da)o(ys\).)227
1831 y Fb({)21 b Fg(HASSTDLIB)9 b Fu({)k(If)g(system)g(has)g
Fg(<stdlib.h>)p Fu(.)227 1894 y Fb({)21 b Fg(NOGETDTBL)o(SIZ)14
b Fu({)19 b(If)f(system)g(do)q(esn't)h(ha)o(v)o(e)g Fg(getdtablesi)o
(ze)o(\(\))c Fu(\(uses)k Fg(sysconf\()p 1547 1894 V 11
w(SC)p 1598 1894 V 13 w(OPEN)p 1691 1894 V 13 w(MAX\))d
Fu(in-)249 1939 y(stead\).)227 2002 y Fb({)21 b Fg(NOREXEC)10
b Fu({)j(If)f(system)i(do)q(esn't)f(ha)o(v)o(e)h Fg(rexec\(\))c
Fu(function.)227 2064 y Fb({)21 b Fg(NOSOCKOPT)9 b Fu({)k(If)g(system)g
(do)q(esn't)g(ha)o(v)o(e)h Fg(setsockopt)o(\(\))9 b Fu(function,)14
b(or)f(it)h(do)q(esn't)f(w)o(ork.)227 2126 y Fb({)21
b Fg(NOSTRCASE)9 b Fu({)j(If)g(system)h(do)q(esn't)h(ha)o(v)o(e)f
Fg(strcasecm)o(p\(\))c Fu(or)j Fg(strncasecm)o(p\(\))d
Fu(\(includes)15 b(replacemen)o(ts\).)227 2188 y Fb({)21
b Fg(NOTMPNAM)10 b Fu({)j(If)f(system)h(do)q(esn't)h(ha)o(v)o(e)f
Fg(tmpnam\(\))d Fu(function,)k(or)f(it's)g(brok)o(en.)227
2251 y Fb({)21 b Fg(NOUNIXDOM)9 b Fu({)k(T)m(o)g(disable)i(use)e(of)g
(Unix-domain)i(so)q(c)o(k)o(ets)f(for)f(lo)q(cal)h(comm)o(unication.)
227 2313 y Fb({)21 b Fg(NOWAIT3)10 b Fu({)j(If)f(system)i(do)q(esn't)f
(ha)o(v)o(e)h Fg(wait3\(\))c Fu(function)k(\(uses)g Fg(waitpid\(\))o
Fu(\).)227 2375 y Fb({)21 b Fg(NOWAITPID)9 b Fu({)k(If)g(system)g(do)q
(esn't)g(ha)o(v)o(e)h Fg(waitpid\(\))9 b Fu(function)15
b(either)f(\(uses)f Fg(wait\(\))p Fu(\).)227 2438 y Fb({)21
b Fg(RSHCOMMAN)o(D)10 b Fu({)j(If)f Fg(rsh)g Fu(command)i(isn't)f
(named)h Fg("/usr/ucb/)o(rs)o(h")p Fu(.)227 2500 y Fb({)21
b Fg(SHAREDTMP)9 b Fu({)k(If)g Fg(/tmp)e Fu(directory)j(is)g(shared)g
(b)q(et)o(w)o(een)f(mac)o(hines)i(in)e(a)g(cluster.)p
eop
%%Page: 142 161
142 160 bop 249 251 a Fu(142)1356 b(Chapter)13 b(8)227
507 y Fb({)21 b Fg(SOCKADHAS)o(LEN)9 b Fu({)k(If)f Fg(struct)18
b(sockaddr)9 b Fu(has)14 b(an)f Fg(sa)p 1059 507 12 2
v 14 w(len)e Fu(\014eld.)227 570 y Fb({)21 b Fg(SYSVBFUNC)9
b Fu({)k(If)g(system)g(do)q(esn't)g(ha)o(v)o(e)h Fg(bcopy\(\))c
Fu(but)j(do)q(es)h(ha)o(v)o(e)g Fg(memcpy\(\))p Fu(.)227
632 y Fb({)21 b Fg(SYSVSIGNA)o(L)14 b Fu({)j(If)f(system)i(has)g
(System-5)f(signal)i(handling)h(\(signal)f(handlers)g(are)f
(uninstalled)i(after)249 677 y(eac)o(h)13 b(signal\).)227
740 y Fb({)21 b Fg(SYSVSTR)10 b Fu({)j(If)f(system)i(do)q(esn't)f(ha)o
(v)o(e)h Fg(index\(\))c Fu(but)j(do)q(es)h(ha)o(v)o(e)f
Fg(strchr\(\))p Fu(.)227 802 y Fb({)21 b Fg(UDPMAXLEN)9
b Fu({)k(T)m(o)g(set)g(a)g(di\013eren)o(t)h(maxim)o(um)g(UDP)f(pac)o(k)
o(et)h(length)g(\(the)f(default)h(is)g(4096\).)249 889
y FB(AR)o(CH)p Fs(.m4)i FA(is)h(a)f(\014le)h(of)f(commands)f(for)i(the)
g Fs(m4)f FA(macro)g(pro)q(cessor,)j(that)e(edits)h(the)f(libfp)o(vm)d
(C)249 943 y(source)i(co)q(de)g(to)f(conform)e(to)i(F)o(OR)m(TRAN)e
(calling)h(con)o(v)o(en)o(tions,)h(whic)o(h)f(v)n(ary)h(from)e(mac)o
(hine)g(to)249 997 y(mac)o(hine.)k(The)d(t)o(w)o(o)f(main)e(things)i(y)
o(ou)g(m)o(ust)g(determine)g(ab)q(out)h(y)o(our)f(F)o(OR)m(TRAN)g(are:)
18 b(1.)f(Ho)o(w)249 1051 y(F)o(OR)m(TRAN)g(subroutine)h(names)f(are)h
(con)o(v)o(erted)g(to)g(link)o(er)f(sym)o(b)q(ols.)27
b(Some)17 b(systems)g(app)q(end)249 1105 y(an)i(underscore)h(to)f(the)g
(name;)h(others)g(con)o(v)o(ert)f(to)g(all)e(capital)h(letters.)34
b(2.)e(Ho)o(w)18 b(strings)i(are)249 1159 y(passed)13
b(in)f(F)o(OR)m(TRAN)g({)g(One)h(common)c(metho)q(d)j(is)g(to)g(pass)h
(the)g(address)g(in)f(a)g Fs(char*)p FA(,)f(and)i(pass)249
1213 y(corresp)q(onding)18 b(lengths)f(after)f(all)g(remaining)e
(parameters.)26 b(The)17 b(easiest)h(w)o(a)o(y)e(to)g(disco)o(v)o(er)h
(the)249 1267 y(correct)f(c)o(hoices)f(ma)o(y)d(b)q(e)j(to)f(try)g(ev)o
(ery)h(common)c(case)k(\(appro)o(ximately)d(three\))j(for)f(eac)o(h.)19
b(First,)249 1321 y(get)e(the)h(function)f(names)f(righ)o(t,)h(then)g
(mak)o(e)f(sure)i(y)o(ou)f(can)g(pass)g(string)g(data)g(to)g(F)o(OR)m
(TRAN)249 1375 y(tasks.)208 1445 y Ft(\017)j FA(Add)d
FB(AR)o(CH)f FA(to)g(the)h Fs(arches[])e FA(arra)o(y)h(in)g
Fs(src/pvmarchc.c)p FA(.)22 b(Y)m(ou)16 b(m)o(ust)f(determine)i(the)g
FB(data)249 1499 y(format)g FA(of)g(y)o(our)g(mac)o(hine)f(to)h(kno)o
(w)g(whic)o(h)g(class)h(to)f(assign)h(it)f(to.)28 b(Mac)o(hines)18
b(with)f(the)h(same)249 1553 y Fs(arches[i].archnum)8
b FA(ha)o(v)o(e)k(the)g(same)f(binary)g(represen)o(tations)j(for)d(in)o
(tegers)h(and)g(\015oating)f(p)q(oin)o(t)249 1607 y(n)o(um)o(b)q(ers.)
18 b(A)o(t)c(w)o(orst,)f(put)i(the)f(new)g(mac)o(hine)f(in)g(a)h(class)
g(b)o(y)g(itself.)208 1678 y Ft(\017)20 b FA(Mo)q(dify)12
b(the)i(source)h(if)d(it)h(still)f(do)q(esn't)i(w)o(ork.)k(Use)c
Fs(cpp)e FA(sym)o(b)q(ol)g Fs(IMA)p 1377 1678 14 2 v
15 w FB(AR)o(CH)h FA(to)g(include)g(mo)q(di\014-)249
1732 y(cations)h(that)g(only)f(apply)g(to)h FB(AR)o(CH)p
FA(,)f(so)h(they)g(don't)g(a\013ect)h(other)f(p)q(orts.)249
1815 y Fr(8.2.2)48 b(Multipro)q(cessors)249 1898 y FA(P)o(orting)14
b(to)g(MPP)h(systems)f(is)g(more)g(di\016cult)f(b)q(ecause)j(most)d(of)
h(them)f(do)i(not)f(o\013er)h(a)f(standard)249 1952 y(Unix)g(en)o
(vironmen)o(t)e(on)i(the)g(no)q(des.)19 b(W)m(e)14 b(discuss)h(some)e
(of)g(these)i(limitations)c(b)q(elo)o(w.)291 2006 y(Pro)q(cesses)19
b(running)d(on)g(the)h(no)q(des)g(of)e(an)h(In)o(tel)g(iPSC/860)g(ha)o
(v)o(e)g(no)g(Unix)f(pro)q(cess)k(id's)c(and)249 2060
y(they)f(cannot)f(receiv)o(e)h(Unix)e(signals.)17 b(There)e(is)d(a)h
(similar)d(problem)i(for)h(the)g(Thinking)f(Mac)o(hine's)249
2114 y(CM-5.)291 2168 y(If)g(a)h(no)q(de)h(pro)q(cess)h(forks,)e(the)h
(b)q(eha)o(vior)f(of)f(the)i(new)g(pro)q(cess)h(is)e(mac)o(hine)f(dep)q
(enden)o(t.)19 b(In)14 b(an)o(y)249 2222 y(ev)o(en)o(t)h(it)f(w)o(ould)
f(not)h(b)q(e)h(allo)o(w)o(ed)e(to)h(b)q(ecome)h(a)f(new)g(PVM)h(task.)
k(In)14 b(general,)g(pro)q(cesses)j(on)d(the)249 2276
y(no)q(des)h(are)f(not)g(allo)o(w)o(ed)e(to)i(enroll)g(unless)g(they)h
(w)o(ere)g(spa)o(wned)f(b)o(y)g(PVM.)291 2330 y(By)19
b(default,)g(p)o(vm)p 600 2330 13 2 v 13 w(spa)o(wn\(\))g(starts)h
(tasks)f(on)g(the)g(\(compute\))g(no)q(des.)33 b(T)m(o)19
b(spa)o(wn)f(m)o(ultiple)249 2384 y(copies)12 b(of)e(the)i(same)e
(executable,)j(the)f(programmer)c(should)j(call)g(p)o(vm)p
1383 2384 V 13 w(spa)o(wn\(\))h(once)f(and)g(sp)q(ecify)249
2438 y(the)k(n)o(um)o(b)q(er)e(of)g(copies.)p eop
%%Page: 143 162
143 161 bop 249 251 a Fu(Adv)n(anced)14 b(T)m(opics)1252
b(143)291 507 y FA(On)19 b(some)g(mac)o(hines)g(\(e.g.,)h(iPSC/860\),)f
(only)g(one)h(pro)q(cess)h(is)e(allo)o(w)o(ed)g(on)g(eac)o(h)h(no)q
(de,)h(so)249 561 y(the)16 b(total)f(n)o(um)o(b)q(er)g(of)g(PVM)h
(tasks)g(on)f(these)i(mac)o(hines)e(cannot)h(exceed)h(the)f(n)o(um)o(b)
q(er)f(of)g(no)q(des)249 615 y(a)o(v)n(ailable.)291 669
y(Sev)o(eral)e(functions)g(serv)o(e)i(as)e(the)h(m)o(ultipro)q(cessor)f
(\\in)o(terface")g(for)g(PVM.)g(They)h(are)f(called)g(b)o(y)249
723 y(p)o(vmd)e(to)i(spa)o(wn)g(new)h(tasks)f(and)g(to)g(comm)o
(unicate)e(with)h(them.)17 b(The)d(implemen)o(tati)o(on)c(of)j(these)
249 777 y(functions)f(is)g(system)g(dep)q(enden)o(t;)i(the)e(source)i
(co)q(de)f(is)e(k)o(ept)i(in)e(the)i Fs(src/PVM)p 1505
777 14 2 v 14 w(ARCH/pvmdmimd.c)249 831 y FA(\(message)19
b(passing\))h(or)f Fs(src/PVM)p 811 831 V 14 w(ARCH/pvmdshmem.c)d
FA(\(shared)21 b(memory\).)32 b(W)m(e)19 b(giv)o(e)g(a)g(brief)249
885 y(description)13 b(of)f(eac)o(h)h(of)f(these)h(functions)g(b)q(elo)
o(w.)k(Note)c(that)f(p)o(vmdmim)o(d.)o(c)e(can)j(b)q(e)g(found)f(in)f
(the)249 939 y(sub)q(directory)16 b(PVM)p 589 939 13
2 v 16 w(AR)o(CH)e(b)q(ecause)j(MPP)e(platforms)e(are)i(v)o(ery)g
(di\013eren)o(t)h(from)d(one)i(another,)249 993 y(ev)o(en)g(those)f
(from)e(the)j(same)e(v)o(endor.)249 1080 y Fg(void)18
b(mpp_init\(i)o(nt)e(argc,)i(char)g(**argv\);)328 1126
y(Initiali)o(zat)o(io)o(n.)e(Called)i(once)g(when)g(PVM)g(is)h
(started.)e(Arguments)f(argc)i(and)g(argv)328 1171 y(are)g(passed)f
(from)h(pvmd)g(main\(\).)249 1263 y(int)h(mpp_load)o(\(in)o(t)d(flags,)
i(char)g(*name,)f(char)h(*argv,)g(int)g(count,)f(int)i(*tids,)e(int)h
(ptid\);)328 1308 y(Create)f(partition)f(if)j(necessary)o(.)e(Load)h
(executabl)o(e)e(onto)i(nodes;)g(create)f(new)328 1354
y(entries)f(in)j(task)f(table,)g(encode)f(node)h(number)f(and)i
(process)e(type)h(into)g(task)g(IDs.)328 1400 y(flags:)36
b(exec)18 b(options;)328 1445 y(name:)56 b(executable)16
b(to)j(be)g(loaded;)328 1491 y(argv:)56 b(command)17
b(line)h(argument)f(for)h(executable;)328 1537 y(count:)36
b(number)18 b(of)h(tasks)e(to)i(be)g(created;)328 1582
y(tids:)56 b(array)18 b(to)h(store)f(new)g(task)g(IDs;)328
1628 y(ptid:)56 b(parent)18 b(task)g(ID.)249 1719 y(void)g(mpp_output)o
(\(s)o(tru)o(ct)e(task)i(*tp,)g(struct)g(pkt)g(*pp\);)328
1765 y(Send)g(all)g(pending)f(packets)g(to)i(nodes)e(via)i(native)e
(send.)h(Node)g(number)f(and)i(process)328 1811 y(type)f(are)g
(extracted)e(from)i(task)g(ID.)328 1856 y(tp:)g(destinati)o(on)e(task;)
328 1902 y(pp:)i(packet.)249 1993 y(int)h(mpp_mcas)o(t\(s)o(tr)o(uct)d
(pkt)i(pp,)h(int)f(*tids,)g(int)g(ntask\);)328 2039 y(Global)f(send.)
328 2085 y(pp:)96 b(packet;)328 2130 y(tids:)56 b(list)18
b(of)h(destinatio)o(n)e(task)h(IDs;)328 2176 y(ntask:)36
b(how)19 b(many.)249 2267 y(int)g(mpp_prob)o(e\(\))o(;)328
2313 y(Probe)e(for)i(pending)e(packets)f(from)j(nodes)e(\(non-block)o
(ing)o(\).)f(Returns)h(1)i(if)g(packets)328 2359 y(are)f(found,)f
(otherwise)f(0.)249 2450 y(void)i(mpp_input\()o(\);)328
2496 y(Receive)e(pending)h(packets)g(\(from)h(nodes\))f(via)i(native)e
(receive.)p eop
%%Page: 144 163
144 162 bop 249 251 a Fu(144)1356 b(Chapter)13 b(8)249
553 y Fg(void)18 b(mpp_free\(i)o(nt)e(tid\))328 599 y(Remove)h
(node/proc)o(ess)o(-t)o(ype)f(from)i(active)f(list.)328
644 y(tid:)h(task)g(ID.)291 740 y FA(In)h(addition)g(to)g(these)i
(functions,)g(the)f(message)g(exc)o(hange)g(routine)g(in)f(libp)o(vm,)f
(mroute\(\),)249 794 y(m)o(ust)c(also)h(b)q(e)h(implemen)o(ted)d(in)i
(the)h(most)e(e\016cien)o(t)i(nativ)o(e)f(message-passing)g(primitiv)o
(es.)21 b(The)249 848 y(follo)o(wing)11 b(macros)i(are)i(de\014ned)g
(in)e Fs(src/pvmmimd.h)p FA(:)249 935 y Fg(ASYNCRECV\()o(bu)o(f,l)o(en)
o(\))328 981 y(Non-bloc)o(kin)o(g)j(receive.)h(Returns)g(immediate)o
(ly)f(with)i(a)i(message)d(handle.)328 1026 y(buf:)h(\(char)f(*\),)i
(buffer)e(to)i(place)f(the)g(data;)328 1072 y(len:)g(\(int\),)f(size)h
(of)h(buffer)e(in)i(bytes.)249 1163 y(ASYNCSEND\()o(ta)o(g,b)o(uf)o
(,le)o(n,d)o(es)o(t,p)o(ty)o(pe\))328 1209 y(Non-bloc)o(kin)o(g)d
(send.)i(Returns)f(immediatel)o(y)f(with)j(a)g(message)e(handle.)328
1254 y(tag:)h(\(int\),)f(message)g(tag;)328 1300 y(buf:)h(\(char)f
(*\),)i(location)d(of)j(data;)328 1346 y(len:)f(\(int\),)f(size)h(of)h
(data)f(in)h(bytes;)328 1391 y(dest:)e(\(long\),)g(address)g(of)i
(destinati)o(on)d(node;)328 1437 y(ptype:)h(instance)f(number)i(of)g
(destination)e(task.)249 1528 y(ASYNCWAIT\()o(mi)o(d\))328
1574 y(Blocks)h(until)g(operation)g(associate)o(d)f(with)i(mid)h(has)f
(completed.)328 1620 y(mid:)g(message)e(handle)i(\(its)g(type)g(is)h
(system-de)o(pen)o(de)o(nt\))o(.)249 1711 y(ASYNCDONE\()o(mi)o(d\))328
1757 y(Returns)d(1)k(if)e(operation)f(associate)o(d)f(with)i(mid)h(has)
f(completed,)e(and)j(0)g(otherwise)o(.)328 1802 y(mid:)f(message)e
(handle)i(\(its)g(type)g(is)h(system-de)o(pen)o(de)o(nt\))o(.)249
1894 y(MSGSIZE\(mi)o(d\))328 1939 y(Returns)d(size)i(of)h(message)e
(most)h(recently)f(arrived.)328 1985 y(mid:)h(message)e(handle)i(\(its)
g(type)g(is)h(system-de)o(pen)o(de)o(nt\))o(.)249 2076
y(MSGSENDER\()o(mi)o(d\))328 2122 y(Returns)d(node)i(number)g(of)h(the)
f(sender)f(of)i(most)f(recently)f(received)f(message.)328
2168 y(mid:)i(message)e(handle)i(\(its)g(type)g(is)h(system-de)o(pen)o
(de)o(nt\))o(.)249 2259 y(PVMCRECV\(t)o(ag)o(,bu)o(f,)o(len)o(\))328
2305 y(Blocks)e(until)g(message)g(has)i(been)f(received)e(into)j
(buffer.)328 2350 y(tag:)f(\(int\),)f(expected)f(message)h(tag;)328
2396 y(buf:)h(\(char)f(*\),)i(buffer)e(to)i(place)f(the)g(data;)328
2442 y(len:)g(\(int\),)f(size)h(of)h(buffer)e(in)i(bytes;)p
eop
%%Page: 145 164
145 163 bop 249 251 a Fu(Adv)n(anced)14 b(T)m(opics)1252
b(145)249 507 y Fg(PVMCSEND\(t)o(ag)o(,bu)o(f,)o(len)o(,de)o(st)o(,pt)o
(yp)o(e\))328 553 y(Blocks)17 b(until)g(send)i(operatio)o(n)e(is)i
(complete)d(and)j(buffer)e(can)h(be)h(reused.)328 599
y(Non-bloc)o(kin)o(g)d(send.)i(Returns)f(immediatel)o(y)f(with)j(a)g
(message)e(handle.)328 644 y(tag:)h(\(int\),)f(message)g(tag;)328
690 y(buf:)h(\(char)f(*\),)i(location)d(of)j(data;)328
736 y(len:)f(\(int\),)f(size)h(of)h(data)f(in)h(bytes;)328
781 y(dest:)e(\(long\),)g(address)g(of)i(destinati)o(on)d(node;)328
827 y(ptype:)h(instance)f(number)i(of)g(destination)e(task.)291
922 y FA(These)g(functions)f(are)h(used)g(b)o(y)f(mroute\(\))f(on)h
(MPP)h(systems.)22 b(The)16 b(source)g(co)q(de)g(for)f(mroute)249
976 y(for)f(m)o(ultipro)q(cessors)f(is)h(in)g Fs(src/lpvmmimd.c)d
FA(or)i Fs(src/lpvmshmem.c)e FA(dep)q(ending)k(on)e(the)i(class.)291
1022 y(F)m(or)e(shared-memory)f(implemen)o(tations,)f(the)j(follo)o
(wing)d(macros)i(are)i(de\014ned)g(in)e(the)h(\014le)249
1068 y Fs(src/pvmshmem.h)p FA(:)249 1147 y Fg(PAGEINITLO)o(CK)o(\(lp)o
(\))328 1192 y(Initiali)o(ze)i(the)j(lock)f(pointed)f(to)i(by)f(lp.)249
1284 y(PAGELOCK\(l)o(p\))328 1329 y(Locks)f(the)i(lock)f(pointed)f(to)h
(by)h(lp.)249 1421 y(PAGEUNLOCK)o(\(l)o(p\))328 1466
y(Unlocks)d(the)j(lock)f(pointed)f(to)i(by)g(lp.)291
1553 y FA(In)13 b(addition,)g(the)h(\014le)g Fs(pvmshmem.c)e
FA(con)o(tains)i(routines)g(used)h(b)o(y)f(b)q(oth)g(p)o(vmd)e(and)i
(libp)o(vm.)p eop
%%Page: 146 165
146 164 bop eop
%%Page: 147 166
147 165 bop 249 325 a Fp(9)25 b FD(T)l(roublesho)q(oting)249
561 y FA(This)17 b(c)o(hapter)h(attempts)f(to)g(answ)o(er)h(some)e(of)g
(the)i(most)e(common)e(questions)k(encoun)o(tered)h(b)o(y)249
615 y(users)f(when)f(installing)e(PVM)i(and)f(running)g(PVM)h
(programs.)25 b(It)16 b(also)g(co)o(v)o(ers)h(debugging)f(the)249
669 y(system)c(itself,)g(whic)o(h)g(is)g(sometimes)f(necessary)j(when)f
(doing)e(new)i(p)q(orts)g(or)f(trying)g(to)g(determine)249
723 y(whether)h(an)f(application)e(or)i(PVM)g(is)g(at)f(fault.)17
b(The)12 b(material)e(here)j(is)e(mainly)e(tak)o(en)j(from)e(other)249
777 y(sections)16 b(of)e(the)h(b)q(o)q(ok,)f(and)g(rearranged)i(to)e
(mak)o(e)f(answ)o(ers)j(easier)f(to)g(\014nd.)20 b(As)15
b(alw)o(a)o(ys,)e(R)m(TFM)249 831 y(pages)i(\014rst.)k(Prin)o(ted)c
(material)d(alw)o(a)o(ys)h(lags)g(b)q(ehind)i(realit)o(y)m(,)d(while)i
(the)h(online)e(do)q(cumen)o(tation)249 885 y(is)k(k)o(ept)g
(up-to-date)h(with)e(eac)o(h)i(release.)29 b(The)17 b(newsgroup)h
FB(c)n(omp.p)n(ar)n(al)r(lel.pvm)e FA(is)h(a)o(v)n(ailable)e(to)249
939 y(p)q(ost)f(questions)h(and)f(discussions.)291 993
y(If)d(y)o(ou)h(\014nd)g(a)f(problem)g(with)h(PVM,)g(please)g(tell)g
(us)g(ab)q(out)g(it.)17 b(A)12 b(bug)g(rep)q(ort)h(form)d(is)i
(included)249 1047 y(with)19 b(the)i(distribution)e(in)g
Fs($PVM)p 804 1047 14 2 v 15 w(ROOT/doc/bugrepor)o(t)p
FA(.)33 b(Please)20 b(use)h(this)e(form)f(or)i(include)249
1101 y(equiv)n(alen)o(t)13 b(information.)291 1155 y(Some)8
b(of)h(the)h(information)d(in)i(this)g(c)o(hapter)i(applies)e(only)g
(to)g(the)h(generic)g(Unix)g(implem)o(en)o(tation)249
1209 y(of)16 b(PVM,)g(or)g(describ)q(es)i(features)g(more)d(v)o
(olatile)f(than)j(the)f(standard)h(do)q(cumen)o(ted)f(ones.)26
b(It)16 b(is)249 1263 y(presen)o(ted)g(here)f(to)f(aid)f(with)h
(debugging,)e(and)i(tagged)g(with)f(a)h Ft(|)f FA(to)h(w)o(arn)g(y)o
(ou)f(of)g(its)h(nature.)291 1317 y(Examples)c(of)h(shell)g(scripts)i
(are)f(for)f(either)h(C-shell)g(\()p Fs(csh,)21 b(tcsh)p
FA(\))10 b(or)i(Bourne)g(shell)g(\()p Fs(sh,)21 b(ksh)p
FA(\).)249 1371 y(If)15 b(y)o(ou)f(use)i(some)f(other)g(shell,)g(y)o
(ou)g(ma)o(y)e(need)j(to)f(mo)q(dify)e(them)h(somewhat,)g(or)h(use)h
Fs(csh)f FA(while)249 1425 y(troublesho)q(oting.)249
1545 y FD(9.1)52 b(Getting)19 b(PVM)d(Installed)249 1653
y FA(Y)m(ou)g(can)i(get)f(a)g(cop)o(y)g(of)f(PVM)h(for)g(y)o(our)g(o)o
(wn)f(use)i(or)f(share)h(an)f(already-installed)e(cop)o(y)i(with)249
1707 y(other)e(users.)k(The)14 b(installation)e(pro)q(cess)k(for)e
(either)g(case)h(more)e(or)h(less)h(the)f(same.)249 1790
y Fr(9.1.1)48 b(Set)15 b(PVM)p 595 1790 15 2 v 17 w(R)o(OOT)249
1873 y FA(Mak)o(e)g(certain)g(y)o(ou)g(ha)o(v)o(e)f(en)o(vironmen)o(t)g
(v)n(ariable)g Fs(PVM)p 1143 1873 14 2 v 15 w(ROOT)g
FA(set)h(\(and)g(exp)q(orted,)h(if)e(applicable\))249
1927 y(to)e(directory)h(where)h(PVM)f(is)f(installed)g(b)q(efore)h(y)o
(ou)f(do)g(an)o(ything)f(else.)18 b(This)13 b(directory)g(is)f(where)
249 1981 y(the)i(system)e(executables)j(and)e(libraries)f(reside.)19
b(Y)m(our)13 b(application)e(executables)k(go)d(in)h(a)f(priv)n(ate)249
2035 y(directory)m(,)18 b(b)o(y)e(default)h Fs($HOME/pvm3/bin/$)o(PVM)p
1060 2035 V 13 w(ARCH)p FA(.)e(If)i(PVM)g(is)g(already)f(installed)h
(at)f(y)o(our)249 2089 y(site)g(y)o(ou)f(can)h(share)h(it)e(b)o(y)g
(setting)h Fs(PVM)p 905 2089 V 15 w(ROOT)f FA(to)h(that)f(path,)h(for)f
(example)g Fs(/usr/local/pvm3)p FA(.)249 2143 y(If)f(y)o(ou)f(ha)o(v)o
(e)h(y)o(our)f(o)o(wn)h(cop)o(y)m(,)f(y)o(ou)g(could)h(install)f(it)g
(in)h Fs($HOME/pvm3)p FA(.)291 2197 y(If)f(y)o(ou)g(normally)f(use)i
Fs(csh)p FA(,)f(add)h(a)g(line)f(lik)o(e)g(this)h(to)g(y)o(our)f
Fs(.cshrc)g FA(\014le:)766 2284 y Fs(setenv)20 b(PVM)p
987 2284 V 15 w(ROOT)h($HOME/pvm3)249 2371 y FA(If)14
b(y)o(ou)f(normally)e(use)k Fs(sh)p FA(,)e(add)h(these)h(lines)f(to)f
(y)o(our)h Fs(.profile)p FA(:)249 2458 y Fs(PVM)p 318
2458 V 15 w(ROOT=$HOME/pvm3)d(PVM)p 740 2458 V 15 w(DPATH=$HOME/pvm3/)o
(lib/p)o(vmd)f(export)21 b(PVM)p 1532 2458 V 15 w(ROOT)g(PVM)p
1722 2458 V 15 w(DPATH)p eop
%%Page: 148 167
148 166 bop 249 251 a Fu(148)1356 b(Chapter)13 b(9)249
507 y FA(Mak)o(e)h(sure)h(these)g(are)g(set)f(in)g(y)o(our)f(curren)o
(t)j(session)f(to)q(o.)291 561 y(Older)e(v)o(ersions)h(of)e(PVM)h
(assumed)g(an)g(installation)e(path)i(of)f Fs($HOME/pvm3)p
FA(.)k(V)m(ersions)d(3.3)f(and)249 615 y(later)18 b(require)h(that)f
(the)h Fs(PVM)p 733 615 14 2 v 15 w(ROOT)e FA(v)n(ariable)g(alw)o(a)o
(ys)g(b)q(e)i(set.)31 b(Note:)c(F)m(or)18 b(compatibili)o(t)o(y)d(with)
249 669 y(older)d(v)o(ersions)h(of)f(PVM)h(and)f(some)f(command)f
(shells)i(that)h(don't)f(execute)i(a)e(startup)h(\014le,)f(new)o(er)249
723 y(v)o(ersions)i(guess)h Fs($HOME/pvm3)d FA(if)h(it's)h(not)f(set,)i
(but)f(y)o(ou)f(shouldn't)h(dep)q(end)h(on)e(that.)249
806 y Fr(9.1.2)48 b(On-Line)14 b(Man)o(ual)g(P)o(ages)249
889 y FA(On-line)f(man)o(ual)e(pages)j(compatible)e(with)h(most)g(Unix)
g(mac)o(hines)f(are)i(shipp)q(ed)g(with)g(the)g(source)249
943 y(distribution.)j(These)e(reside)g(in)e Fs($PVM)p
868 943 V 15 w(ROOT/man)f FA(and)h(can)h(b)q(e)g(copied)g(to)g(some)e
(other)i(place)g(\(for)249 997 y(example)d Fs(/usr/local/man)e
FA(or)j(used)h(in-place.)k(If)11 b(the)i Fs(man)e FA(program)g(on)h(y)o
(our)f(mac)o(hine)g(uses)i(the)249 1051 y Fs(MANPATH)h
FA(en)o(vironmen)o(t)h(v)n(ariable,)f(try)i(adding)e(something)h(lik)o
(e)f(the)j(follo)o(wing)12 b(near)k(the)h(end)f(of)249
1105 y(y)o(our)e Fs(.cshrc)e FA(or)i Fs(.login)f FA(\014le:)336
1192 y Fs(if)22 b(\(!)f($?MANPATH\))f(setenv)g(MANPATH)h
(/usr/man:/usr/lo)o(cal/)o(man)336 1246 y(setenv)g(MANPATH)f
(${MANPATH}:$PVM_RO)o(OT/ma)o(n)291 1333 y FA(Then)13
b(y)o(ou)f(should)g(b)q(e)i(able)e(to)g(read)i(b)q(oth)e(normal)f
(system)h(man)f(pages)i(and)g(PVM)g(man)e(pages)249 1387
y(b)o(y)j(simply)e(t)o(yping)h Fs(man)21 b FB(subje)n(ct)p
FA(.)249 1470 y Fr(9.1.3)48 b(Buildin)o(g)13 b(the)i(Release)249
1553 y FA(The)f(follo)o(wing)e(commands)f(do)o(wnload,)h(unpac)o(k,)i
(build)f(and)h(install)e(a)i(release:)p 291 1627 1324
2 v 315 1659 a Fu(\(start)f(in)h(directory)h(just)e(ab)q(o)o(v)o(e)g
(PVM)g(ro)q(ot,)g(for)g(example)h Fg($HOME)d Fu(or)i
Fg(/usr/local)o Fu(\))315 1705 y Fg(\045)20 b(ftp)e(netlib2.cs)o(.ut)o
(k.)o(edu)315 1751 y(Name:)38 b(anonymous)315 1796 y(Password:)e
Fd(your)13 b(id,)g(user@host.domain)315 1842 y Fg(ftp>)19
b(cd)f(pvm3)315 1888 y(ftp>)h(bin)315 1933 y(ftp>)g(get)f(pvm3.3.tar)o
(.z)o(.uu)29 b Fu(\(or)13 b(the)g(most)g(recen)o(t)g(v)o(ersion\))315
1979 y Fg(ftp>)19 b(quit)315 2024 y(\045)h(uudecode)c(pvm3.3.tar)o(.z.)
o(uu)315 2070 y(\045)k(zcat)e(pvm3.3.ta)o(r.Z)e(|)j(tar)f(xf)h(-)315
2116 y(\045)h(cd)f(pvm3)315 2161 y(\045)h(setenv)d(PVM)p
554 2161 12 2 v 13 w(ROOT)h($cwd)315 2207 y(\045)i(make)p
291 2223 1324 2 v 249 2310 a Fr(9.1.4)48 b(Errors)15
b(During)e(Build)249 2393 y FA(The)h(compiler)e(ma)o(y)g(prin)o(t)h(a)h
(few)f(w)o(arning)g(messages;)g(w)o(e)h(suggest)h(y)o(ou)e(ignore)g
(these)i(unless)f(the)249 2447 y(build)c(do)q(esn't)i(complete)e(or)h
(un)o(til)f(y)o(ou)h(ha)o(v)o(e)f(some)g(other)i(reason)g(to)e(think)h
(there)h(is)f(a)g(problem.)k(If)p eop
%%Page: 149 168
149 167 bop 249 251 a Fu(T)m(roublesho)q(oting)1268 b(149)249
507 y FA(y)o(ou)11 b(can't)g(build)f(the)i(unmo)q(di\014ed)e
(distribution)g(\\out)h(of)f(the)i(b)q(o)o(x")f(on)f(a)h(supp)q(orted)i
(arc)o(hitecture,)249 561 y(let)h(us)g(kno)o(w.)249 644
y Fr(9.1.5)48 b(Compatible)13 b(V)l(ersions)249 727 y
FA(The)f(proto)q(cols)h(used)g(in)e(building)g(PVM)h(are)g(ev)o
(olving,)f(with)h(the)g(result)h(that)f(new)o(er)h(releases)h(are)249
781 y(not)e(compatible)d(with)j(older)f(ones.)18 b(Compatibilit)o(y)8
b(is)j(determined)h(b)o(y)f(the)i(p)o(vmd-task)d(and)h(task-)249
835 y(task)17 b(proto)q(col)f(revision)g(n)o(um)o(b)q(ers.)26
b(These)18 b(are)e(compared)g(when)h(t)o(w)o(o)f(PVM)h(en)o(tities)g
(connect;)249 889 y(they)f(will)e(refuse)i(to)f(in)o(terop)q(erate)i
(if)d(the)i(n)o(um)o(b)q(ers)f(don't)g(matc)o(h.)21 b(The)16
b(proto)q(col)f(n)o(um)o(b)q(ers)g(are)249 943 y(de\014ned)g(in)e
Fs(src/ddpro.h)f FA(and)i Fs(src/tdpro.h)d FA(\()p Fs(DDPROTOCOL)p
FA(,)h Fs(TDPROTOCOL)p FA(\).)291 997 y(As)j(a)f(general)i(rule,)e(PVM)
i(releases)g(with)f(the)g(same)f(second)i(digit)e(in)g(their)h(v)o
(ersion)g(n)o(um)o(b)q(ers)249 1051 y(\(for)h(example)g(3.2.0)e(and)j
(3.2.6\))e(will)g(in)o(terop)q(erate.)27 b(Changes)17
b(that)f(result)i(in)e(incompatibili)o(t)o(y)249 1105
y(are)e(held)g(un)o(til)f(a)h(ma)r(jor)e(v)o(ersion)i(c)o(hange)g
(\(for)g(example,)e(from)g(3.2)h(to)h(3.3\).)249 1225
y FD(9.2)52 b(Getting)19 b(PVM)d(Running)249 1333 y FA(T)m(o)10
b(get)g(PVM)h(running,)g(y)o(ou)f(m)o(ust)f(start)i(either)g(a)f(p)o
(vmd)f(or)i(the)g(PVM)f(console)h(b)o(y)f(hand.)17 b(The)11
b(ex-)249 1387 y(ecutables)g(are)g(named)e Fs(pvmd3)g
FA(and)h Fs(pvm)p FA(,)f(resp)q(ectiv)o(ely)m(,)j(and)e(reside)h(in)e
(directory)i Fs($PVM)p 1635 1387 14 2 v 15 w(ROOT/lib/)249
1441 y($PVM)p 340 1441 V 15 w(ARCH)p FA(.)j(W)m(e)h(suggest)i(using)e
(the)h Fs(pvmd)f FA(or)g Fs(pvm)g FA(script)i(in)e Fs($PVM)p
1365 1441 V 15 w(ROOT/lib)e FA(instead,)j(as)g(this)249
1495 y(simpli\014es)c(setting)i(y)o(our)f(shell)g(path.)18
b(These)d(scripts)f(determine)g(the)g(host)f(arc)o(hitecture)i(and)f
(run)249 1549 y(the)h(correct)g(executable,)g(passing)f(on)f(their)h
(command)e(line)h(argumen)o(ts.)291 1603 y(Problems)i(when)i(starting)f
(PVM)h(can)f(b)q(e)h(caused)g(b)o(y)f(system)g(or)g(net)o(w)o(ork)h
(trouble,)f(running)249 1657 y(out)e(of)f(resources)j(\(suc)o(h)f(as)f
(disk)g(space\),)g(incorrect)i(installation)c(or)i(a)f(bug)h(in)f(the)i
(PVM)f(co)q(de.)249 1740 y Fr(9.2.1)48 b(Pvmd)15 b(Log)g(File)249
1823 y FA(The)f(p)o(vmd)f(writes)i(errors)g(on)f(b)q(oth)g(its)g
(standard)g(error)h(stream)e(\(only)h(un)o(til)f(it)g(is)h(fully)f
(started\))249 1877 y(and)g(a)g(log)g(\014le,)g(named)f
Fs(/tmp/pvml.)p FB(uid)p FA(.)k FB(uid)d FA(is)h(y)o(our)f(n)o(umeric)f
(user)j(id)e(\(generally)g(the)h(n)o(um)o(b)q(er)249
1931 y(in)19 b(the)g(third)g(colon-separated)h(\014eld)f(of)f(y)o(our)h
FB(p)n(asswd)g FA(en)o(try\).)34 b(If)18 b(PVM)i(w)o(as)f(built)f(with)
g(the)249 1985 y Fs(SHAREDTMP)11 b FA(option)h(\(used)i(when)f(a)f
(cluster)i(of)e(mac)o(hines)g(shares)i(a)f Fs(/tmp)f
FA(directory\),)h(the)g(log)f(\014le)249 2039 y(will)g(instead)j(b)q(e)
f(named)f Fs(/tmp/pvml.)p FB(uid)p Fs(.)p FB(hostname)p
FA(.)291 2093 y(If)18 b(y)o(ou)g(ha)o(v)o(e)h(trouble)f(getting)h(PVM)g
(started,)h(alw)o(a)o(ys)e(c)o(hec)o(k)i(the)f(log)f(\014le)g(for)h
(hin)o(ts)f(ab)q(out)249 2147 y(what)13 b(w)o(en)o(t)h(wrong.)j(If)c
(more)g(than)g(one)g(host)h(is)f(in)o(v)o(olv)o(ed,)f(c)o(hec)o(k)i
(the)g(log)e(\014le)h(on)h(eac)o(h)f(host.)18 b(F)m(or)249
2201 y(example,)11 b(when)j(adding)e(a)h(new)g(host)g(to)g(a)g(virtual)
f(mac)o(hine,)f(c)o(hec)o(k)j(the)g(log)e(\014les)h(on)g(the)h
FB(master)249 2255 y FA(host)g(and)g(the)g(new)h(host.)291
2309 y(T)m(ry)e(the)i(follo)o(wing)c(command)g(to)j(get)g(y)o(our)g
(uid:)328 2396 y Fg(\(grep)j(`whoami`)g(/etc/pass)o(wd)f(||)j(ypmatch)e
(`whoami`)f(passwd\))h(\\)367 2442 y(|)i(awk)f(-F:)h('{print)e
($3;exit}')p eop
%%Page: 150 169
150 168 bop 249 251 a Fu(150)1356 b(Chapter)13 b(9)249
507 y Fr(9.2.2)48 b(Pvmd)15 b(So)q(c)o(k)o(et)g(Address)f(File)249
590 y FA(The)e(p)o(vmd)d(publishes)j(the)f(address)i(of)d(the)i(so)q(c)
o(k)o(et)g(to)f(whic)o(h)g(lo)q(cal)f(tasks)h(connect)i(in)d(a)h
(\014le)g(named)249 644 y Fs(/tmp/pvmd.)p FB(uid)p FA(.)19
b FB(uid)d FA(is)e(y)o(our)h(n)o(umeric)f(user)i(id)f(\(generally)g(in)
f(the)i(third)f(\014eld)g(of)f(y)o(our)h FB(p)n(asswd)249
698 y FA(en)o(try\).)22 b(If)14 b(PVM)i(w)o(as)e(built)h(with)f(the)i
Fs(SHAREDTMP)d FA(option)h(\(used)i(when)f(a)g(cluster)h(of)e(mac)o
(hines)249 752 y(shares)g(a)e Fs(/tmp)f FA(directory\),)j(the)f(\014le)
f(will)f(b)q(e)i(named)f Fs(/tmp/pvmd.)p FB(uid)p Fs(.)p
FB(hostname)p FA(.)k(See)d Ft(x)q FA(7.4.2)d(for)249
806 y(more)j(information)e(on)j(ho)o(w)f(this)h(\014le)g(is)g(used.)291
860 y(The)f(p)o(vmd)e(creates)k(the)f(so)q(c)o(k)o(et)f(address)i
(\014le)e(while)f(starting)h(up,)g(and)f(remo)o(v)o(es)h(it)f(while)h
(sh)o(ut-)249 914 y(ting)g(do)o(wn.)k(If)c(while)g(starting)g(up,)g(it)
f(\014nds)i(the)g(\014le)f(already)g(exists,)g(it)g(prin)o(ts)g(an)g
(error)h(message)249 968 y(and)19 b(exits.)34 b(If)19
b(the)h(p)o(vmd)d(can't)i(create)i(the)f(\014le)f(b)q(ecause)h(the)g(p)
q(ermissions)f(of)f Fs(/tmp)h FA(are)g(set)249 1022 y(incorrectly)c(or)
f(the)g(\014lesystem)g(is)g(full,)e(it)h(w)o(on't)g(b)q(e)i(able)e(to)h
(start)h(up.)291 1076 y(If)e(the)h(p)o(vmd)f(is)g(killed)g(with)h(un)g
(uncatc)o(hable)g(signal)f(or)g(other)i(catastrophic)f(ev)o(en)o(t)h
(suc)o(h)f(as)g(a)249 1130 y(\(Unix\))f(mac)o(hine)e(crash,)j(y)o(ou)e
(m)o(ust)g(remo)o(v)o(e)g(the)h(so)q(c)o(k)o(et)h(address)g(\014le)f(b)
q(efore)g(another)g(p)o(vmd)f(will)249 1184 y(start)j(on)e(that)h
(host.)291 1238 y(Note)h(that)f(if)g(the)h(p)o(vmd)f(is)g(compiled)f
(with)h(option)g Fs(OVERLOADHOST)p FA(,)e(it)i(will)g(start)h(up)g(ev)o
(en)g(if)249 1292 y(the)f(address)g(\014le)f(already)f(exists)i
(\(creating)g(it)e(if)g(it)h(do)q(esn't\).)18 b(It)13
b(do)q(esn't)h(consider)g(the)f(existence)249 1346 y(of)e(the)i
(address)g(\014le)e(an)h(error.)18 b(This)12 b(allo)o(ws)e(disjoin)o(t)
h(virtual)g(mac)o(hines)f(o)o(wned)i(b)o(y)g(the)g(same)f(user)249
1400 y(to)16 b(use)i(o)o(v)o(erlapping)d(sets)j(of)e(hosts.)26
b(T)m(asks)16 b(not)h(spa)o(wned)g(b)o(y)f(PVM)h(can)g(only)e(connect)j
(to)e(the)249 1454 y(\014rst)f(p)o(vmd)e(running)i(on)f(an)g(o)o(v)o
(erloaded)g(host,)h(ho)o(w)o(ev)o(er,)f(unless)i(they)f(can)g(someho)o
(w)e(guess)i(the)249 1508 y(correct)h(so)q(c)o(k)o(et)e(address)i(of)d
(one)h(of)f(the)i(other)f(p)o(vmds.)249 1591 y Fr(9.2.3)48
b(Starting)13 b(PVM)j(from)f(the)g(Console)249 1674 y
FA(PVM)e(is)g(normally)d(started)k(b)o(y)e(in)o(v)o(oking)f(the)i
(console)h(program,)c(whic)o(h)j(starts)h(a)e(p)o(vmd)f(if)h(one)h(is)
249 1728 y(not)h(already)f(running)h(and)g(connects)h(to)f(it.)k(The)c
(syn)o(tax)g(for)f(starting)h(a)g(PVM)g(console)g(is:)627
1869 y Fs(pvm)21 b([-d)p FB(debugmask)p Fs(])h([-n)p
FB(hostname)p Fs(])g([)p FB(host\014le)p Fs(])291 1956
y FA(If)13 b(the)i(console)g(can't)f(start)h(the)g(p)o(vmd)d(for)i
(some)g(reason,)g(y)o(ou)g(ma)o(y)e(see)k(one)e(of)g(the)h(follo)o
(wing)249 2010 y(error)g(messages.)j(Chec)o(k)c(the)g(p)o(vmd)e(log)h
(\014le)g(for)h(error)g(messages.)k(The)c(most)f(common)d(ones)15
b(are)249 2064 y(describ)q(ed)h(b)q(elo)o(w.)291 2118
y Fs(Can't)k(start)h(pvmd)12 b FA({)h(This)g(message)g(means)g(that)g
(the)h(console)f(either)h(can't)f(\014nd)h(the)g(p)o(vmd)249
2172 y(executable)19 b(or)f(the)g(p)o(vmd)f(is)g(ha)o(ving)g(trouble)h
(starting)g(up.)30 b(If)17 b(the)h(p)o(vmd)f(complains)f(that)h(it)249
2226 y(can't)f(bind)g(a)g(so)q(c)o(k)o(et,)h(p)q(erhaps)g(the)f(host)h
(name)e(set)i(for)e(the)i(mac)o(hine)e(do)q(es)i(not)f(resolv)o(e)g(to)
g(an)249 2280 y(IP)f(address)i(of)d(one)i(of)e(its)i(in)o(terfaces,)g
(or)f(that)g(in)o(terface)h(is)f(do)o(wn.)21 b(The)16
b(console/p)o(vmd)e(option)249 2334 y Fs(-n)p FB(name)g
FA(can)g(b)q(e)h(used)f(to)g(c)o(hange)g(the)h(default.)291
2388 y Fs(Can't)20 b(contact)h(local)f(daemon)9 b FA({)h(If)g(a)g
(previously)g(running)f(p)o(vmd)g(crashed,)j(lea)o(ving)d(b)q(ehind)249
2442 y(its)20 b FB(so)n(cket)g(addr)n(ess)f FA(\014le,)i(the)f(console)
g(ma)o(y)e(prin)o(t)h(this)h(message.)34 b(The)20 b(p)o(vmd)e(will)h
(log)f(error)249 2496 y(message)c Fs(pvmd)21 b(already)f(running?)p
FA(.)c(Find)e(and)g(delete)h(the)f(address)h(\014le.)p
eop
%%Page: 151 170
151 169 bop 249 251 a Fu(T)m(roublesho)q(oting)1268 b(151)291
507 y Fs(Version)20 b(mismatch)10 b FA({)i(The)h(console)f(\(libp)o
(vm\))e(and)i(p)o(vmd)e(proto)q(col)i(revision)g(n)o(um)o(b)q(ers)g
(don't)249 561 y(matc)o(h.)k(The)e(proto)q(col)e(has)h(a)f(revision)h
(n)o(um)o(b)q(er)f(so)g(that)h(incompatible)e(v)o(ersions)i(w)o(on't)f
(attempt)249 615 y(to)k(in)o(terop)q(erate.)25 b(Note)17
b(that)f(ha)o(ving)f(di\013eren)o(t)i(proto)q(col)e(revisions)i(do)q
(esn't)f(necessarily)h(cause)249 669 y(this)d(message)g(to)f(b)q(e)i
(prin)o(ted;)f(instead)g(the)g(connecting)h(side)f(ma)o(y)e(simply)g
(hang.)249 752 y Fr(9.2.4)48 b(Starting)13 b(the)i(Pvmd)g(b)o(y)g(Hand)
249 835 y FA(It)i(is)f(necessary)j(to)d(start)h(the)h(master)e(p)o(vmd)
f(b)o(y)h(hand)h(if)e(y)o(ou)i(will)e(use)i(the)g FB(so=pw)g
FA(or)f FB(so=ms)249 889 y FA(options)g(in)g(the)h(host)f(\014le)g(or)h
(when)f(adding)g(hosts.)26 b(These)17 b(options)f(require)h(direct)g
(in)o(teraction)249 943 y(with)d(the)h(p)o(vmd)e(when)i(adding)f(a)g
(host.)20 b(If)14 b(the)h(p)o(vmd)e(is)h(started)i(b)o(y)e(the)h
(console,)g(or)f(otherwise)249 997 y(bac)o(kgrounded,)g(it)f(will)g
(not)h(b)q(e)g(able)g(to)g(read)g(passw)o(ords)h(from)d(a)h(TTY.)291
1051 y(The)h(syn)o(tax)g(to)f(start)i(the)f(master)g(p)o(vmd)e(b)o(y)i
(hand)g(is:)467 1188 y Fs($PVM)p 558 1188 14 2 v 15 w(ROOT/lib/pvmd)19
b([-d)p FB(debugmask)p Fs(])j([-n)p FB(hostname)p Fs(])g([)p
FB(host\014le)p Fs(])291 1271 y FA(If)c(y)o(ou)h(start)h(a)f(PVM)h
(console)f(or)h(application,)e(use)i(another)g(windo)o(w.)33
b(When)20 b(the)g(p)o(vmd)249 1325 y(\014nishes)15 b(starting)f(up,)f
(it)h(prin)o(ts)g(out)g(a)f(line)h(lik)o(e)f(either:)18
b Fs(80a95ee4:0a9a)12 b FA(or)h Fs(/tmp/aaa026175)p FA(.)249
1379 y(If)e(it)g(can't)g(start)h(up,)g(y)o(ou)f(ma)o(y)e(not)i(see)i
(an)e(error)h(message,)g(dep)q(ending)g(on)f(whether)h(the)g(problem)
249 1433 y(o)q(ccurs)18 b(b)q(efore)f(or)f(after)g(the)h(p)o(vmd)e
(stops)i(logging)d(to)i(its)g(standard)h(error)g(output.)26
b(Chec)o(k)16 b(the)249 1487 y(p)o(vmd)c(log)h(\014le)h(for)g(a)f
(complete)h(record.)249 1570 y Fr(9.2.5)48 b(Adding)14
b(Hosts)h(to)g(the)g(Virtual)f(Mac)o(hine)249 1653 y
FA(This)j(section)g(also)f(applies)h(to)f(hosts)i(started)f(via)f(a)h
(host)g(\014le,)g(b)q(ecause)h(the)g(same)d(mec)o(hanism)249
1707 y(is)g(used)h(in)f(b)q(oth)g(cases.)24 b(The)16
b(master)e(p)o(vmd)g(starts)i(up,)f(reads)h(the)g(host)g(\014le,)f
(then)h(sends)g(itself)249 1761 y(a)e(request)j(to)d(add)h(more)e
(hosts.)21 b(The)15 b(PVM)g(console)g(\(or)g(an)g(application\))e(can)i
(return)h(an)e(error)249 1815 y(when)i(adding)e(hosts)i(to)f(the)g
(virtual)f(mac)o(hine.)21 b(Chec)o(k)15 b(the)h(p)o(vmd)e(log)g(\014le)
h(on)f(the)i(master)f(host)249 1869 y(and)f(the)g(failing)e(host)i(for)
g(additional)e(clues)i(to)g(what)g(w)o(en)o(t)g(wrong.)291
1923 y Fs(No)21 b(such)g(host)12 b FA({)h(The)h(master)f(p)o(vmd)e
(couldn't)i(resolv)o(e)h(the)g(the)g(host)f(name)f(\(or)h(name)g(giv)o
(en)249 1977 y(in)g Fs(ip=)h FA(option\))f(to)h(an)f(IP)h(address.)20
b(Mak)o(e)14 b(sure)h(y)o(ou)e(ha)o(v)o(e)h(the)g(correct)i(host)e
(name.)291 2022 y Fs(Can't)20 b(start)h(pvmd)c FA({)g(This)g(message)g
(means)f(that)i(the)g(master)e(p)o(vmd)g(failed)g(to)i(start)f(the)249
2068 y(sla)o(v)o(e)c(p)o(vmd)f(pro)q(cess.)20 b(This)13
b(can)h(b)q(e)g(caused)g(b)o(y)f(incorrect)i(installation,)c(net)o(w)o
(ork)j(or)f(p)q(ermission)249 2114 y(problems.)18 b(The)d(master)f(p)o
(vmd)e(m)o(ust)h(b)q(e)i(able)f(to)g(resolv)o(e)h(the)g(host)f(name)f
(\(get)i(its)f(IP)h(address\))249 2159 y(and)c(route)g(pac)o(k)o(ets)g
(to)g(it.)16 b(The)11 b(p)o(vmd)e(executable)j(and)f(shell)f(script)i
(to)e(start)i(it)e(m)o(ust)f(b)q(e)j(installed)249 2205
y(in)g(the)g(correct)i(lo)q(cation.)j(Y)m(ou)11 b(m)o(ust)h(a)o(v)o
(oid)e(prin)o(ting)i(an)o(ything)f(in)h(y)o(our)g Fs(.cshrc)e
FA(\(or)j(equiv)n(alen)o(t\))249 2251 y(script,)k(b)q(ecause)h(it)e
(will)e(confuse)j(the)g(p)o(vmd)e(comm)o(unicatio)o(n.)22
b(If)16 b(y)o(ou)g(m)o(ust)f(prin)o(t)h(something,)249
2296 y(either)f(mo)o(v)o(e)d(it)i(to)f(y)o(our)h Fs(.login)f
FA(\014le)g(or)h(enclose)h(it)f(in)f(a)h(conditional:)328
2371 y Fg(if)k(\()i({)f(tty)f(-s)h(})g(&&)g($?prompt)e(\))i(then)406
2417 y(echo)f(terminal)f(type)h(is)g($TERM)406 2462 y(stty)g(erase)g
('^?')g(kill)g('^u')g(intr)g('^c')g(echo)328 2508 y(endif)p
eop
%%Page: 152 171
152 170 bop 249 251 a Fu(152)1356 b(Chapter)13 b(9)291
507 y FA(T)m(o)e(test)j(all)d(the)i(ab)q(o)o(v)o(e,)f(try)h(running)f
(the)h(follo)o(wing)d(command)f(b)o(y)k(hand)f(on)g(the)h(master)f
(host:)729 592 y Fs(rsh)21 b FB(host)h Fs($PVM)p 1002
592 14 2 v 15 w(ROOT/lib/pvmd)d(-s)249 668 y FA(where)f
FB(host)g FA(is)f(the)g(name)f(of)h(the)g(sla)o(v)o(e)g(host)h(y)o(ou)e
(w)o(an)o(t)h(to)g(test.)29 b(Y)m(ou)16 b(should)h(see)i(a)d(message)
249 714 y(similar)11 b(to)j(the)h(follo)o(wing)c(from)h(the)j(sla)o(v)o
(e)e(p)o(vmd)f(and)i(nothing)f(else:)328 790 y Fg([pvmd)k(pid12360])f
(slave_conf)o(ig:)g(bad)i(args)328 836 y([pvmd)f(pid12360])f
(pvmbailout)o(\(0\))291 920 y Fs(Version)k(mismatch)11
b FA({)i(This)g(message)g(indicates)h(that)f(the)h(proto)q(col)f
(revisions)g(of)g(the)h(master)249 974 y(and)i(sla)o(v)o(e)h(p)o(vmd)e
(are)i(incompatible.)24 b(Y)m(ou)16 b(m)o(ust)f(install)h(the)h(same)f
(\(or)h(compatible\))e(v)o(ersions)249 1028 y(ev)o(erywhere.)291
1082 y Fs(Duplicate)20 b(host)h FA({)g(This)h(message)g(means)f(that)h
(PVM)g(thinks)g(there)h(is)f(another)h(p)o(vmd)249 1136
y(\(o)o(wned)d(b)o(y)g(the)g(same)f(user\))i(already)f(running)f(on)h
(the)g(host.)36 b(If)20 b(y)o(ou're)f(not)h(already)f(using)249
1190 y(the)14 b(host)f(in)f(the)i(curren)o(t)g(virtual)e(mac)o(hine)g
(or)h(a)g(di\013eren)o(t)h(one,)e(the)i(so)q(c)o(k)o(et)g(address)g
(\014le)f(\()p Ft(x)q FA(9.2.2\))249 1244 y(m)o(ust)g(b)q(e)h(left)g(o)
o(v)o(er)g(from)e(a)i(previous)g(run.)k(Find)c(and)g(delete)h(it.)249
1327 y Fr(9.2.6)48 b(PVM)16 b(Host)f(File)249 1410 y
FA(A)g FB(host)h(\014le)e FA(ma)o(y)f(b)q(e)i(supplied)g(to)f(the)i(p)o
(vmd)d(\(or)h(console,)h(whic)o(h)f(passes)i(it)f(to)f(the)h(p)o(vmd\))
f(as)g(a)249 1464 y(command-li)o(ne)e(parameter.)21 b(Eac)o(h)15
b(line)f(of)g(the)i(\014le)e(con)o(tains)h(a)g(host)g(name)e(follo)o(w)
o(ed)g(b)o(y)i(option)249 1518 y(parameters.)20 b(Hosts)c(not)e
(preceded)j(b)o(y)d('&')g(are)h(started)h(automatically)11
b(as)k(so)q(on)g(as)f(the)i(master)249 1572 y(p)o(vmd)c(is)i(ready)m(.)
k(The)c(syn)o(tax:)423 1657 y Fs(*)22 b(option)f(option)f(...)249
1741 y FA(c)o(hanges)12 b(the)f(default)f(parameters)h(for)g(subsequen)
o(t)h(hosts)g(\(b)q(oth)f(those)g(in)f(the)i(host)f(\014le)g(and)f
(those)249 1795 y(added)i(later\).)18 b(Default)11 b(statemen)o(ts)h
(are)g(not)g(cum)o(ulativ)o(e;)e(eac)o(h)i(applies)g(to)f(the)i
FB(system)e FA(defaults.)249 1849 y(F)m(or)j(example,)e(after)i(the)g
(follo)o(wing)e(t)o(w)o(o)h(host)h(\014le)g(en)o(tries:)423
1934 y Fs(*)22 b(dx=pvm3/lib/pvmd)423 1988 y(*)g(ep=/bin:/usr/bin:)o
(pvm3/)o(bin/$)o(PVM_A)o(RCH)249 2072 y FA(only)10 b
Fs(ep)g FA(is)h(c)o(hanged)g(from)d(its)j(system)g(default)f(\()p
Fs(dx)g FA(is)h(reset)h(b)o(y)e(the)i(second)f(line\).)17
b(T)m(o)10 b(set)h(m)o(ultiple)249 2126 y(defaults,)i(com)o(bine)g
(them)g(in)o(to)g(a)h(single)f(line.)249 2209 y Fr(9.2.7)48
b(Sh)o(uttin)o(g)13 b(Do)o(wn)249 2292 y FA(The)i(preferred)g(w)o(a)o
(y)f(to)g(sh)o(ut)g(do)o(wn)g(a)g(virtual)f(mac)o(hine)g(is)h(to)f(t)o
(yp)q(e)i Fs(halt)e FA(at)h(the)h(PVM)f(console,)249
2346 y(or)e(to)g(call)g(libp)o(vm)e(function)h Fs(pvm)p
788 2346 V 16 w(halt\(\))p FA(.)16 b(When)c(sh)o(utting)g(PVM)h(do)o
(wn)f(from)e(the)j(console,)g(y)o(ou)249 2400 y(ma)o(y)d(see)i(an)g
(error)g(message)f(suc)o(h)h(as)g FB(EOF)h(on)g(pvmd)g(so)n(ck)p
FA(.)k(This)12 b(is)f(normal)f(and)h(can)h(b)q(e)g(ignored.)291
2454 y(Y)m(ou)i(can)h(instead)g(kill)e(the)i(p)o(vmd)f(pro)q(cess;)i
(it)f(will)e(sh)o(ut)i(do)o(wn,)f(killing)f(an)o(y)h(lo)q(cal)g(tasks)h
(with)249 2508 y Fs(SIGTERM)p FA(.)g(If)i(y)o(ou)f(kill)f(a)i(sla)o(v)o
(e)f(p)o(vmd,)g(it)h(will)e(b)q(e)j(deleted)g(from)d(the)i(virtual)f
(mac)o(hine.)26 b(If)17 b(y)o(ou)p eop
%%Page: 153 172
153 171 bop 249 251 a Fu(T)m(roublesho)q(oting)1268 b(153)249
507 y FA(kill)13 b(the)h(master)g(p)o(vmd,)e(the)i(sla)o(v)o(es)g(will)
f(all)g(exit)h(to)q(o.)k(Alw)o(a)o(ys)13 b(kill)f(the)j(p)o(vmd)d(with)
i(a)g FB(c)n(atchable)249 561 y FA(signal,)j(for)f(example)g
Fs(SIGTERM)p FA(.)g(If)g(y)o(ou)h(kill)f(it)g(with)h
Fs(SIGKILL)p FA(,)f(it)g(w)o(on't)h(b)q(e)h(able)f(to)g(clean)g(up)249
615 y(after)d(itself,)f(and)h(y)o(ou'll)e(ha)o(v)o(e)i(to)f(do)h(that)g
(b)o(y)g(hand.)249 736 y FD(9.3)52 b(Compiling)19 b(Applications)249
844 y Fr(9.3.1)48 b(Header)15 b(Files)249 927 y FA(PVM)f(applications)f
(written)i(in)e(C)h(should)g(include)g(header)g(\014le)g
Fs(pvm3.h)p FA(,)e(as)i(follo)o(ws:)861 1007 y Fs(#include)20
b(<pvm3.h>)249 1088 y FA(Programs)14 b(using)h(the)g(trace)h(functions)
f(should)g(additionally)d(include)j Fs(pvmtev.h)p FA(,)e(and)i
(resource)249 1142 y(manager)8 b(programs)g(should)h(include)h
Fs(pvmsdpro.h)p FA(.)k(Y)m(ou)9 b(ma)o(y)e(need)j(to)f(sp)q(ecify)h
(the)g(PVM)g(include)249 1196 y(directory)15 b(in)e(the)i(compiler)d
(\015ags)i(as)g(follo)o(ws:)711 1277 y Fs(cc)22 b(...)43
b(-I$PVM)p 1021 1277 14 2 v 14 w(ROOT/include)19 b(...)291
1358 y FA(A)g(header)i(\014le)f(for)f(F)m(ortran)h(\()p
Fs(fpvm3.h)p FA(\))e(is)i(also)f(supplied.)36 b(Syn)o(tax)19
b(for)h(including)e(\014les)i(in)249 1412 y(F)m(ortran)13
b(is)g(v)n(ariable;)f(the)i(header)g(\014le)f(ma)o(y)e(need)k(to)e(b)q
(e)g(pasted)h(in)o(to)f(y)o(our)g(source.)19 b(A)13 b(statemen)o(t)249
1466 y(commonly)e(used)j(is:)610 1547 y Fs(INCLUDE)21
b('/usr/local/pvm)o(/incl)o(ude/f)o(pvm3.)o(h')249 1627
y Fr(9.3.2)48 b(Linking)249 1710 y FA(PVM)20 b(applications)f(written)i
(in)e(C)h(m)o(ust)f(b)q(e)i(link)o(ed)e(with)h(at)g(least)g(the)h(base)
f(PVM)h(library)m(,)249 1764 y FB(libpvm3)p FA(.)c(F)m(ortran)12
b(applications)f(m)o(ust)h(b)q(e)g(link)o(ed)g(with)g(b)q(oth)g
FB(libfpvm3)g FA(and)g FB(libpvm3)p FA(.)17 b(Programs)249
1818 y(that)12 b(use)i(group)e(functions)g(m)o(ust)f(also)h(b)q(e)h
(link)o(ed)f(with)g FB(lib)n(gpvm3)p FA(.)17 b(On)c(some)e(op)q
(erating)h(systems,)249 1872 y(PVM)f(programs)e(m)o(ust)g(b)q(e)i(link)
o(ed)e(with)h(still)f(other)i(libraries)f(\(for)g(the)h(so)q(c)o(k)o
(et)g(or)f(XDR)f(functions\).)291 1926 y(Note)19 b(that)g(the)h(order)f
(of)g(libraries)f(in)h(the)g(link)f(command)e(is)j(imp)q(ortan)o(t;)g
(Unix)g(mac)o(hines)249 1980 y(generally)d(pro)q(cess)h(the)g(list)e
(from)g(left)g(to)h(righ)o(t,)f(searc)o(hing)i(eac)o(h)f(library)g
(once.)24 b(Y)m(ou)16 b(ma)o(y)e(also)249 2034 y(need)e(to)f(sp)q
(ecify)h(the)g(PVM)f(library)g(directory)h(in)f(the)g(link)g(command.)j
(A)d(correct)i(order)f(is)f(sho)o(wn)249 2088 y(b)q(elo)o(w)j(\(y)o
(our)f(compiler)g(ma)o(y)f(b)q(e)i(called)g(something)f(other)h(than)g
Fs(cc)f FA(or)h Fs(f77)p FA(\).)328 2167 y Fg(cc/f77)j([)i(compiler)e
(flags)g(])i([)h(source)d(files)h(])h([)g(loader)e(flags)h(])465
2213 y(-L$PVM_RO)o(OT/)o(li)o(b/$)o(PV)o(M_A)o(RCH)e(-lfpvm3)h(-lgpvm3)
g(-lpvm3)465 2259 y([)i(libraries)d(needed)h(by)i(PVM)g(])g([)g(other)f
(libraries)e(])291 2346 y FA(The)9 b Fs(aimk)g FA(program)e(supplied)j
(with)f(PVM)g(automatically)d(sets)11 b(en)o(vironmen)o(t)d(v)n
(ariable)g Fs(PVM)p 1773 2346 V 15 w(ARCH)249 2400 y
FA(to)16 b(the)i(PVM)f(arc)o(hitecture)h(name)d(and)i
Fs(ARCHLIB)e FA(to)h(the)h(necessary)i(system)d(libraries.)26
b(Before)249 2454 y(running)12 b(aimk,)e(y)o(ou)i(m)o(ust)g(ha)o(v)o(e)
g Fs(PVM)p 857 2454 V 15 w(ROOT)f FA(set)j(to)e(the)h(path)f(where)i
(PVM)f(is)f(installed.)17 b(Y)m(ou)12 b(can)249 2508
y(use)j(these)g(v)n(ariables)e(to)h(write)g(a)g(p)q(ortable,)f(shared)i
(mak)o(e\014le)e(\()p Fs(Makefile.aimk)p FA(\).)p eop
%%Page: 154 173
154 172 bop 249 251 a Fu(154)1356 b(Chapter)13 b(9)249
507 y FD(9.4)52 b(Running)19 b(Applications)249 615 y
Fr(9.4.1)48 b(Spa)o(wn)15 b(Can't)h(Find)e(Executables)249
698 y Fs(No)21 b(such)g(file)13 b FA({)h(This)g(error)h(co)q(de)f(is)g
(returned)i(instead)e(of)f(a)h(task)g(id)f(when)i(the)f(p)o(vmd)e
(fails)h(to)249 752 y(\014nd)h(a)g(program)e(executable)j(during)f(spa)
o(wn.)291 806 y(Remem)o(b)q(er)i(that)h(task)h(placemen)o(t)f
(decisions)h(are)g(made)f(b)q(efore)h(c)o(hec)o(king)g(the)g(existence)
i(of)249 860 y(executables.)f(If)13 b(an)f(executable)i(is)f(not)g
(installed)f(on)h(the)g(selected)i(host,)e(PVM)g(returns)h(an)f(error)
249 914 y(instead)j(of)f(trying)h(another)g(one.)24 b(F)m(or)16
b(example,)e(if)h(y)o(ou)h(ha)o(v)o(e)f(installed)g FB(mypr)n(o)n(g)h
FA(on)g(4)f(hosts)i(of)249 968 y(a)c(7)h(host)g(virtual)e(mac)o(hine,)g
(and)i(spa)o(wn)f(7)h(instances)g(of)f FB(mypr)n(o)n(g)h
FA(with)f(default)g(placemen)o(t,)g(only)249 1022 y(4)i(will)g
(succeed.)25 b(Mak)o(e)16 b(sure)h(executables)g(are)f(built)f(for)h
(eac)o(h)g(arc)o(hitecture)h(y)o(ou're)f(using,)f(and)249
1076 y(installed)c(in)f(the)i(correct)h(directory)m(.)k(By)11
b(default,)g(PVM)g(searc)o(hes)i(\014rst)f(in)f Fs(pvm3/bin/$PVM)p
1746 1076 14 2 v 13 w(ARCH)249 1130 y FA(\(the)16 b(p)o(vmd)e(default)g
(w)o(orking)h(directory)h(is)f Fs($HOME)p FA(\))f(and)h(then)h(in)f
Fs($PVM)p 1434 1130 V 14 w(ROOT/bin/$PVM)p 1734 1130
V 13 w(ARCH)p FA(.)249 1184 y(This)h(path)h(list)f(can)h(b)q(e)g(c)o
(hanged)g(with)f(host)g(\014le)h(option)f Fs(ep=)p FA(.)25
b(If)16 b(y)o(our)g(programs)f(aren't)i(on)f(a)249 1238
y(\014lesystem)e(shared)h(b)q(et)o(w)o(een)g(the)f(hosts,)g(y)o(ou)g(m)
o(ust)f(cop)o(y)h(them)f(to)g(eac)o(h)i(host)f(man)o(ually)m(.)249
1321 y Fr(9.4.2)48 b(Group)14 b(F)l(unctions)249 1404
y Fs(failed)21 b(to)g(start)g(group)g(server)16 b FA({)i(This)g
(message)g(means)g(that)g(a)g(function)g(in)f(the)i(group)249
1458 y(library)12 b(\()p Fs(libgpvm3.a)p FA(\))f(could)i(not)f(spa)o
(wn)h(a)f FB(gr)n(oup)j(server)e(task)f FA(to)h(manage)e(group)i(mem)o
(b)q(ership)249 1512 y(lists.)18 b(T)m(asks)13 b(using)g(group)g
(library)f(functions)i(m)o(ust)e(b)q(e)i(able)f(to)g(comm)o(unicate)e
(with)i(this)g(serv)o(er.)249 1566 y(It)k(is)g(started)h(automatically)
13 b(if)j(one)h(is)g(not)g(already)f(running.)27 b(The)17
b(group)g(serv)o(er)h(executable)249 1620 y(\()p Fs(pvmgs)p
FA(\))i(normally)e(resides)k(in)e Fs($PVM)p 879 1620
V 15 w(ROOT/bin/$PVM)p 1180 1620 V 13 w(ARCH)p FA(,)g(whic)o(h)g(m)o
(ust)g(b)q(e)h(in)f(the)i(p)o(vmd)249 1674 y(searc)o(h)f(path.)37
b(If)20 b(y)o(ou)g(c)o(hange)g(the)h(path)f(using)g(the)h(host)g
(\014le)f Fs(ep=)f FA(option,)i(mak)o(e)e(sure)i(this)249
1728 y(directory)13 b(is)g(still)e(included.)18 b(The)13
b(group)f(serv)o(er)j(ma)o(y)10 b(b)q(e)j(spa)o(wned)g(on)g(an)o(y)f
(host,)g(so)h(b)q(e)g(sure)h(one)249 1782 y(is)g(installed)f(and)h(y)o
(our)f(path)h(is)g(set)h(correctly)g(ev)o(erywhere.)249
1865 y Fr(9.4.3)48 b(Memory)16 b(Use)249 1948 y FA(T)m(asks)h(and)h(p)o
(vmds)e(allo)q(cate)h(some)f(memory)f(\(using)i Fs(malloc\(\))p
FA(\))f(as)i(they)g(run.)29 b(Mallo)q(c)16 b(nev)o(er)249
2002 y(giv)o(es)d(memory)d(bac)o(k)j(to)g(the)h(system,)e(so)h(the)h
(data)e(size)i(of)e(eac)o(h)i(pro)q(cess)g(only)e(increases)j(o)o(v)o
(er)e(its)249 2056 y(lifetime.)20 b(Message)c(and)f(pac)o(k)o(et)g
(bu\013ers)i(\(the)e(main)e(users)k(of)d(dynamic)g(memory)e(in)j(PVM\))
h(are)249 2110 y(recycled,)f(ho)o(w)o(ev)o(er.)291 2164
y(The)j(things)g(that)g(most)e(commonly)f(cause)k(PVM)f(to)g(use)h(a)e
(large)h(amoun)o(t)e(of)h(memory)f(are)249 2218 y(passing)e(h)o(uge)g
(messages,)f(certain)i(comm)o(unicatio)o(n)c(patterns)k(and)f(memory)d
(leaks.)291 2271 y(A)k(task)g(sending)h(a)f(PVM)h(message)f(do)q(esn't)
h(necessarily)g(blo)q(c)o(k)f(un)o(til)f(the)i(corresp)q(onding)h(re-)
249 2325 y(ceiv)o(e)g(is)g(executed.)28 b(Messages)18
b(are)f(stored)g(at)f(the)i(destination)e(un)o(til)g(claimed,)f(allo)o
(wing)f(some)249 2379 y(leew)o(a)o(y)d(when)h(programmi)o(ng)d(in)h
(PVM.)i(The)f(programmer)e(should)j(b)q(e)g(careful)f(to)g(limit)e(the)
j(n)o(um-)249 2433 y(b)q(er)j(of)f(outstanding)g(messages.)20
b(Ha)o(ving)13 b(to)q(o)h(man)o(y)f(causes)j(the)f(receiving)f(task)h
(\(and)f(its)h(p)o(vmd)249 2487 y(if)e(the)i(task)f(is)f(busy\))i(to)e
(accum)o(ulate)g(a)h(lot)f(of)h(dynamic)e(memory)f(to)j(hold)f(all)g
(the)h(messages.)p eop
%%Page: 155 174
155 173 bop 249 251 a Fu(T)m(roublesho)q(oting)1268 b(155)291
507 y FA(There)11 b(is)g(nothing)f(to)h(stop)g(a)f(task)h(from)e
(sending)i(a)f(message)g(whic)o(h)h(is)g(nev)o(er)g(claimed)e(\(b)q
(ecause)249 561 y(receiv)o(e)17 b(is)f(nev)o(er)i(called)d(with)h(a)g
(wildcard)g(pattern\).)25 b(This)16 b(message)g(will)f(b)q(e)i(held)f
(in)g(memory)249 615 y(un)o(til)d(the)i(task)f(exits.)291
669 y(Mak)o(e)i(sure)h(y)o(ou're)f(not)h(accum)o(ulating)d(old)i
(message)g(bu\013ers)i(b)o(y)e(mo)o(ving)d(them)j(aside.)26
b(The)249 723 y Fs(pvm)p 318 723 14 2 v 15 w(initsend\(\))14
b FA(and)h(receiv)o(e)i(functions)e(automatically)e(free)j(the)g
(curren)o(t)h(bu\013er,)g(but)f(if)f(y)o(ou)249 777 y(use)i(the)f
Fs(pvm)p 465 777 V 15 w(set[sr]buf\(\))d FA(routines,)j(then)g(the)h
(asso)q(ciated)f(bu\013ers)h(ma)o(y)d(not)h(b)q(e)h(freed.)24
b(F)m(or)249 831 y(example,)11 b(the)h(follo)o(wing)e(co)q(de)i
(fragmen)o(t)f(allo)q(cates)h(message)g(bu\013ers)h(un)o(til)e(the)i
(system)e(runs)i(out)249 885 y(of)g(memory:)328 972 y
Fg(while)k(\(1\))i({)406 1018 y(pvm_inits)o(end)o(\(Pv)o(mD)o(ata)o(De)
o(fau)o(lt\))o(;)75 b(/*)19 b(make)f(new)h(buffer)e(*/)406
1064 y(pvm_setsb)o(uf\()o(0\);)406 1109 y(/*)i(now)f(buffer)g(won't)f
(be)i(freed)f(by)h(next)f(initsend)e(*/)328 1155 y(})291
1250 y Ft(|)c FA(As)i(a)f(quic)o(k)h(c)o(hec)o(k,)g(lo)q(ok)e(at)i(the)
g(message)f(handles)h(returned)h(b)o(y)e(initsend)h(or)f(receiv)o(e)i
(func-)249 1304 y(tions.)22 b(Message)17 b(ids)e(are)h(tak)o(en)g(from)
d(a)i(p)q(o)q(ol,)g(whic)o(h)g(is)g(extended)i(as)f(the)g(n)o(um)o(b)q
(er)f(of)f(message)249 1358 y(bu\013ers)k(in)f(use)h(increases.)29
b(If)16 b(there)j(is)d(a)h(bu\013er)h(leak,)f(message)g(ids)g(will)e
(start)j(out)e(small)f(and)249 1412 y(increase)g(steadily)m(.)291
1466 y Ft(|)e FA(Tw)o(o)g(undo)q(cumen)o(ted)h(functions)g(in)g(libp)o
(vm)d(dump)i(information)d(ab)q(out)k(message)g(bu\013ers:)716
1553 y Fs(umbuf)p 829 1553 V 15 w(dump\(int)20 b(mid,)h(int)g(level\))p
FA(,)815 1607 y Fs(umbuf)p 928 1607 V 14 w(list\(int)f(level\))p
FA(.)249 1694 y(F)m(unction)12 b Fs(umbuf)p 534 1694
V 15 w(dump\(\))f FA(dumps)h(a)g(message)g(bu\013er)h(b)o(y)f(id)g(\()p
Fs(mid)p FA(\).)18 b(P)o(arameter)12 b Fs(level)f FA(is)h(one)h(of:)292
1747 y(Lev)o(el)50 b(Information)12 b(dump)q(ed)p 268
1765 689 2 v 292 1802 a(0)124 b(One-line)14 b(summary)292
1856 y(1)124 b(List)14 b(of)f(data)h(fragmen)o(ts)292
1910 y(2)124 b(All)13 b(data)h(pac)o(k)o(ed)g(in)g(message)p
268 1928 V 263 2021 a(F)m(unction)f Fs(umbuf)p 549 2021
14 2 v 15 w(list\(\))g FA(calls)g Fs(umbuf)p 911 2021
V 15 w(dump\(\))f FA(for)i(eac)o(h)g(message)g(in)f(the)i(message)e
(heap.)249 2164 y Fr(9.4.4)48 b(Input)14 b(and)h(Output)249
2247 y FA(Eac)o(h)e(task)g(spa)o(wned)g(through)g(PVM)g(has)f(its)h
FB(stdout)g FA(and)f FB(stderr)g FA(\014les)h(connected)h(to)f(a)f(pip)
q(e)h(that)249 2301 y(is)k(read)h(b)o(y)e(the)i(p)o(vmd)e(managing)e
(the)k(task.)28 b(An)o(ything)16 b(prin)o(ted)i(b)o(y)e(the)i(task)f
(is)g(pac)o(k)o(ed)h(in)o(to)249 2355 y(a)e(PVM)h(message)g(b)o(y)f
(the)h(p)o(vmd)e(and)i(sen)o(t)g(to)g(the)g(task's)g
FB(stdout)g(sink)p FA(.)27 b(The)17 b(implem)o(en)o(tation)249
2409 y(of)e(this)g(mec)o(hanism)e(is)i(describ)q(ed)j(in)d
Ft(x)p FA(7.7.2.)21 b(Eac)o(h)15 b(spa)o(wned)h(task)g(has)f
Fs(/dev/null)f FA(op)q(ened)i(as)249 2463 y FB(stdin)p
FA(.)p eop
%%Page: 156 175
156 174 bop 249 251 a Fu(156)1356 b(Chapter)13 b(9)291
507 y FA(Output)f(from)f(a)h(task)g(running)g(on)g(an)o(y)f(host)i(in)e
(a)h(virtual)f(mac)o(hine)g(\(unless)i(redirected)i(b)o(y)c(the)249
561 y(console,)j(or)g(a)f(paren)o(t)i(task\))f(is)g(written)g(in)f(the)
i(log)e(\014le)h(of)f(the)h FB(master)g FA(p)o(vmd)e(b)o(y)i(default.)
291 615 y(Y)m(ou)20 b(can)h(use)h(the)g(console)g(spa)o(wn)f(command)d
(with)j(\015ag)g Fs(->)f FA(to)h(collect)h(output)f(from)e(an)249
669 y(application)i(\(the)h(spa)o(wned)h(tasks)g(and)e(an)o(y)h(others)
h(they)g(in)e(turn)i(spa)o(wn\).)42 b(Use)23 b(function)249
723 y Fs(pvm)p 318 723 14 2 v 15 w(catchout\(\))12 b
FA(to)i(collect)g(output)g(within)f(an)h(application.)291
777 y(The)19 b(C)f FB(stdio)h FA(library)f(\()p Fs(fgets\(\))p
FA(,)g Fs(printf\(\))p FA(,)f(etc.\))34 b(bu\013ers)20
b(input)e(and)h(output)g(whenev)o(er)249 831 y(p)q(ossible,)d(to)g
(reduce)h(the)g(frequency)g(of)e(actual)h Fs(read\(\))e
FA(or)i Fs(write\(\))f FA(system)g(calls.)24 b(It)16
b(decides)249 885 y(whether)h(to)e(bu\013er)i(b)o(y)e(lo)q(oking)f(at)i
(the)g(underlying)f(\014le)h(descriptor)g(of)f(a)h(stream.)22
b(If)15 b(the)i(\014le)e(is)249 939 y(a)f(tt)o(y)m(,)f(it)h(bu\013ers)i
(only)d(a)h(line)g(at)g(a)g(time,)e(that)j(is,)e(the)i(bu\013er)g(is)f
(\015ushed)i(whenev)o(er)f(the)g(newline)249 993 y(c)o(haracter)f(is)d
(encoun)o(tered.)20 b(If)12 b(the)g(descriptor)i(is)e(a)f(\014le,)h
(pip)q(e,)h(or)f(so)q(c)o(k)o(et,)g(ho)o(w)o(ev)o(er,)h(stdio)f
(bu\013ers)249 1047 y(up)i(m)o(uc)o(h)f(more,)f(t)o(ypically)h(4k)g(b)o
(ytes.)291 1101 y(A)f(task)g(spa)o(wned)g(b)o(y)g(PVM)h(writes)f
(output)h(through)f(a)f(pip)q(e)i(bac)o(k)f(to)f(its)h(p)o(vmd,)f(so)h
(the)h(stdout)249 1155 y(bu\013er)i(isn't)e(\015ushed)h(after)g(ev)o
(ery)g(line)f(\(stderr)i(probably)e(is\).)18 b(The)c
Fs(pvm)p 1423 1155 V 15 w(exit\(\))e FA(function)h(closes)249
1209 y(the)e(stdio)e(streams,)i(causing)e(them)h(to)f(b)q(e)i
(\015ushed)g(so)f(y)o(ou)g(should)f(ev)o(en)o(tually)h(see)h(all)e(y)o
(our)g(output.)249 1263 y(Y)m(ou)16 b(can)h(\015ush)g(stdout)g(b)o(y)g
(calling)e Fs(fflush\(stdout\))e FA(an)o(ywhere)18 b(in)e(y)o(our)g
(program.)25 b(Y)m(ou)16 b(can)249 1317 y(c)o(hange)h(the)h
(bu\013ering)f(mo)q(de)f(of)g(stdout)i(to)f(line-orien)o(ted)g(for)f
(the)i(en)o(tire)f(program)f(b)o(y)g(calling)249 1371
y Fs(setlinebuf\(stdout\))10 b FA(near)15 b(the)f(top)g(of)f(the)i
(program.)291 1425 y(F)m(ortran)g(systems)g(handle)h(output)f
(bu\013ering)h(in)f(man)o(y)f(di\013eren)o(t)i(w)o(a)o(ys.)22
b(Sometimes)13 b(there)k(is)249 1479 y(a)d Fs(FLUSH)e
FA(subroutine,)j(sometimes)d(not.)291 1533 y(In)18 b(a)g(PVM)h(task,)g
(y)o(ou)e(can)i(op)q(en)g(a)f(\014le)g(to)g(read)h(or)f(write,)h(but)g
(remem)o(b)q(er)e(that)h(spa)o(wned)249 1587 y(comp)q(onen)o(ts)d
(inherit)g(the)g(w)o(orking)f(directory)i(\(b)o(y)f(default)f
Fs($HOME)p FA(\))g(from)g(the)h(p)o(vmd)e(so)i(the)h(\014le)249
1641 y(path)f(y)o(ou)f(op)q(en)h(m)o(ust)f(b)q(e)h(relativ)o(e)f(to)h
(y)o(our)f(home)g(directory)h(\(or)g(an)f(absolute)h(path\).)21
b(Y)m(ou)14 b(can)249 1694 y(c)o(hange)f(the)g(p)o(vmd)e(\(and)i
(therefore)h(task\))f(w)o(orking)f(directory)h(\(p)q(er-host\))h(b)o(y)
e(using)h(the)g(host)g(\014le)249 1748 y(option)g Fs(wd=)p
FA(.)249 1831 y Fr(9.4.5)48 b(Sc)o(heduli)o(ng)13 b(Priorit)n(y)249
1914 y Ft(|)j FA(PVM)g(do)q(esn't)h(ha)o(v)o(e)g(a)f(built-in)f
(facilit)o(y)g(for)h(running)g(programs)f(at)h(di\013eren)o(t)i
(priorities)e(\(as)249 1968 y(with)11 b Fs(nice)p FA(\),)g(but)g(y)o
(ou)g(can)h(do)f(it)g(y)o(ourself.)17 b(Y)m(ou)11 b(can)g(call)g
Fs(setpriority\(\))d FA(\(or)k(p)q(erhaps)g Fs(nice\(\))p
FA(\))249 2022 y(in)h(y)o(our)h(co)q(de)h(or)f(replace)h(y)o(our)e
(program)f(with)i(a)g(shell)f(script)i(wrapp)q(er)g(as)f(follo)o(ws:)
328 2110 y Fg(cd)k(~/pvm3/bin)o(/SU)o(N4)328 2155 y(mv)g(prog)g(prog-)
328 2201 y(echo)g('P=$0"-")o(;)f(shift;)g(exec)h(nice)g(-10)h($P)f($@')
h(>)g(prog)328 2247 y(chmod)e(755)i(prog)291 2342 y FA(When)14
b Fs(prog)f FA(is)g(spa)o(wned,)h(the)h(shell)f(script)g(execs)i
Fs(prog-)d FA(at)g(a)h(new)g(priorit)o(y)f(lev)o(el.)291
2396 y(Y)m(ou)h(could)h(b)q(e)h(ev)o(en)g(more)f(creativ)o(e)h(and)f
(pass)h(an)f(en)o(vironmen)o(t)f(v)n(ariable)g(through)h(PVM)h(to)249
2450 y(the)g(shell)f(script,)g(to)g(allo)o(w)e(v)n(arying)h(the)i
(priorit)o(y)e(without)g(editing)h(the)g(script.)23 b(If)14
b(y)o(ou)h(w)o(an)o(t)f(to)p eop
%%Page: 157 176
157 175 bop 249 251 a Fu(T)m(roublesho)q(oting)1268 b(157)249
507 y FA(ha)o(v)o(e)15 b(real)h(fun,)f(hac)o(k)h(the)g
FB(tasker)f FA(example)f(to)i(do)f(the)h(w)o(ork,)f(then)h(y)o(ou)g(w)o
(on't)e(ha)o(v)o(e)i(to)f(replace)249 561 y(all)e(the)h(programs)f
(with)g(wrapp)q(ers.)291 615 y(One)18 b(reason)f(for)g(c)o(hanging)g
(the)g(sc)o(heduling)h(priorit)o(y)e(of)h(a)g(task)g(is)g(to)g(allo)o
(w)f(it)h(to)g(run)g(on)g(a)249 669 y(w)o(orkstation)f(without)h
(impacting)e(the)i(p)q(erformance)g(of)f(the)i(mac)o(hine)d(for)i
(someone)f(sitting)g(at)249 723 y(the)e(console.)k(Longer)c(resp)q
(onse)i(time)c(seems)i(to)f FB(fe)n(el)g FA(w)o(orse)h(than)f(lo)o(w)o
(er)h(throughput.)k(Resp)q(onse)249 777 y(time)c(is)h(a\013ected)i
(most)e(b)o(y)g(tasks)h(that)f(use)h(a)g(lot)e(of)h(memory)m(,)e
(stealing)i(all)f(the)i(ph)o(ysical)f(pages)249 831 y(from)10
b(other)i(programs.)k(When)c(in)o(teractiv)o(e)g(input)g(arriv)o(es,)g
(it)f(tak)o(es)h(the)g(system)g(time)e(to)i(reclaim)249
885 y(all)i(the)h(pages.)21 b(Decreasing)16 b(the)f(priorit)o(y)f(of)g
(suc)o(h)i(a)e(task)h(ma)o(y)e(not)i(help)g(m)o(uc)o(h,)e(b)q(ecause)k
(if)d(it's)249 939 y(allo)o(w)o(ed)i(to)h(run)g(for)g(a)g(few)g
(seconds,)h(it)f(accum)o(ulates)g(pages)g(again.)26 b(In)17
b(con)o(trast,)h(cpu)g(b)q(ound)249 993 y(jobs)d(with)f(small)f(w)o
(orking)h(set)h(sizes)h(ma)o(y)d(hardly)h(a\013ect)i(the)g(resp)q(onse)
g(time)e(at)h(all,)e(unless)j(y)o(ou)249 1047 y(ha)o(v)o(e)e(man)o(y)e
(of)h(them)g(running.)249 1130 y Fr(9.4.6)48 b(Resource)15
b(Limitati)o(on)o(s)249 1213 y FA(Av)n(ailable)i(memory)f(limits)g(the)
j(maxim)n(um)14 b(size)20 b(and)e(n)o(um)o(b)q(er)g(of)g(outstanding)g
(messages)g(the)249 1267 y(system)c(can)g(handle.)k(The)c(n)o(um)o(b)q
(er)g(of)f(\014le)h(descriptors)h(\(I/O)f(c)o(hannels\))h(a)o(v)n
(ailable)d(to)i(a)f(pro)q(cess)249 1321 y(limits)d(the)j(n)o(um)o(b)q
(er)f(of)g FB(dir)n(e)n(ct)h(r)n(oute)f FA(connections)i(a)e(task)g
(can)h(establish)g(to)f(other)h(tasks,)g(and)f(the)249
1375 y(n)o(um)o(b)q(er)i(of)g(tasks)h(a)f(single)g(p)o(vmd)f(can)i
(manage.)j(The)d(n)o(um)o(b)q(er)e(of)h(pro)q(cesses)j(allo)o(w)o(ed)c
(to)i(a)f(user)249 1429 y(limits)e(the)i(n)o(um)o(b)q(er)f(of)h(tasks)g
(that)g(can)g(run)g(on)g(a)f(single)h(host,)g(and)f(so)h(on.)291
1483 y(An)k(imp)q(ortan)o(t)e(thing)i(to)g(kno)o(w)g(is)g(that)g(y)o
(ou)g(ma)o(y)e(not)i(see)h(a)f(message)g(when)h(y)o(ou)e(reac)o(h)i(a)
249 1537 y(resource)h(limit.)26 b(PVM)17 b(tries)i(to)e(return)h(an)g
(error)g(co)q(de)g(to)g(the)g(o\013ending)f(task)h(and)f(con)o(tin)o
(ue)249 1591 y(op)q(eration,)c(but)h(can't)g(reco)o(v)o(er)h(from)d
(certain)j(ev)o(en)o(ts)g(\(running)f(out)f(of)h(memory)d(is)j(the)g(w)
o(orst\).)291 1645 y(See)g Ft(x)q FA(7.9)f(for)g(more)g(information)e
(on)j(ho)o(w)f(resource)j(limits)c(a\013ect)j(PVM.)249
1765 y FD(9.5)52 b(Debugging)19 b(and)f(T)l(racing)249
1873 y FA(First,)11 b(the)f(bad)g(news.)17 b(Adding)10
b Fs(printf\(\))e FA(calls)h(to)h(y)o(our)g(co)q(de)g(is)g(still)f(a)h
(state-of-the-art)g(metho)q(d-)249 1927 y(ology)m(.)291
1981 y(PVM)19 b(tasks)h(can)f(b)q(e)g(started)i(in)d(a)h(debugger)h(on)
f(systems)g(that)g(supp)q(ort)h(X-Windo)o(ws.)32 b(If)249
2035 y Fs(PvmTaskDebug)11 b FA(is)i(sp)q(eci\014ed)h(in)f
Fs(pvm)p 848 2035 14 2 v 15 w(spawn\(\))p FA(,)f(PVM)h(runs)h
Fs($PVM)p 1331 2035 V 15 w(ROOT/lib/debugger)o FA(,)c(whic)o(h)249
2089 y(op)q(ens)k(an)e FB(xterm)h FA(in)f(whic)o(h)h(it)f(runs)h(the)h
(task)f(in)f(a)g(debugger)i(de\014ned)g(in)e Fs(pvm3/lib/debugger2)p
FA(.)249 2143 y(The)17 b Fs(PvmTaskDebug)e FA(\015ag)h(is)g(not)h
(inherited,)h(so)f(y)o(ou)f(m)o(ust)g(mo)q(dify)e(eac)o(h)j(call)f(to)h
(spa)o(wn.)27 b(The)249 2197 y Fs(DISPLAY)16 b FA(en)o(vironmen)o(t)g
(v)n(ariable)g(can)h(b)q(e)h(exp)q(orted)g(to)f(a)g(remote)g(host)g(so)
g(the)h(xterm)e(will)g(al-)249 2251 y(w)o(a)o(ys)g(b)q(e)h(displa)o(y)o
(ed)e(on)h(the)h(lo)q(cal)f(screen.)27 b(Use)17 b(the)f(follo)o(wing)e
(command)f(b)q(efore)k(running)f(the)249 2305 y(application:)406
2392 y Fg(setenv)h(PVM_EXPORT)f(DISPLAY)291 2487 y FA(Mak)o(e)f(sure)i
Fs(DISPLAY)c FA(is)j(set)g(to)f(the)h(name)f(of)f(y)o(our)i(host)f
(\(not)h Fs(unix:0)p FA(\))e(and)h(the)i(host)e(name)p
eop
%%Page: 158 177
158 176 bop 249 251 a Fu(158)1356 b(Chapter)13 b(9)249
507 y FA(is)h(fully)f(quali\014ed)h(if)f(y)o(our)h(virtual)g(mac)o
(hine)f(includes)i(hosts)g(at)f(more)f(than)i(one)f(administrativ)o(e)
249 561 y(site.)19 b(T)m(o)13 b(spa)o(wn)h(a)f(task)h(in)g(a)f
(debugger)i(from)d(the)j(console,)e(use)i(the)f(command:)406
634 y Fg(spawn)k(-?)g([)i(rest)e(of)h(spawn)e(command)g(])291
715 y FA(Y)m(ou)g(ma)o(y)e(b)q(e)k(able)e(to)g(use)i(the)f(libp)o(vm)d
(trace)k(facilit)o(y)d(to)h(isolate)g(problems,)g(suc)o(h)i(as)e(h)o
(ung)249 769 y(pro)q(cesses.)j(A)11 b(task)g(has)h(a)f
FB(tr)n(ac)n(e)g(mask)p FA(,)h(whic)o(h)f(allo)o(ws)f(eac)o(h)h
(function)g(in)g(libp)o(vm)e(to)i(b)q(e)h(selectiv)o(ely)249
823 y(traced,)i(and)f(a)f FB(tr)n(ac)n(e)i(sink)p FA(,)f(whic)o(h)g(is)
f(another)i(task)f(to)g(whic)o(h)g(trace)h(data)e(is)h(sen)o(t)h(\(as)f
(messages\).)249 877 y(A)h(task's)g(trace)h(mask)d(and)i(sink)g(are)g
(inherited)g(b)o(y)g(an)o(y)f(tasks)i(spa)o(wned)f(b)o(y)g(it.)291
931 y(The)h(console)g(can)g(spa)o(wn)g(a)f(task)h(with)g(tracing)f
(enabled)h(\(using)g(the)g Fs(spawn)21 b(-@)p FA(\),)14
b(collect)h(the)249 985 y(trace)e(data)e(and)g(prin)o(t)g(it)g(out.)18
b(In)11 b(this)h(w)o(a)o(y)m(,)e(a)h(whole)g FB(job)h
FA(\(group)f(of)g(tasks)h(related)g(b)o(y)f(paren)o(tage\))249
1039 y(can)16 b(b)q(e)h(traced.)26 b(The)17 b(console)f(has)g(a)g
Fs(trace)f FA(command)f(to)i(edit)g(the)h(mask)e(passed)i(to)f(tasks)g
(it)249 1093 y(spa)o(wns.)i(Or,)c(XPVM)h(can)f(b)q(e)g(used)h(to)f
(collect)g(and)g(displa)o(y)f(trace)i(data)e(graphically)m(.)291
1147 y(It)d(is)h(di\016cult)f(to)g(start)h(an)g(application)e(b)o(y)h
(hand)h(and)f(trace)i(it,)f(though.)16 b(T)m(asks)11
b(with)f(no)h(paren)o(t)249 1201 y(\(anon)o(ymous)g(tasks\))j(ha)o(v)o
(e)e(a)h(default)g(trace)g(mask)f(and)h(sink)f(of)g(NULL.)h(Not)g(only)
f(m)o(ust)g(the)h(\014rst)249 1254 y(task)h(call)g Fs(pvm)p
484 1254 14 2 v 15 w(setopt\(\))f FA(and)h Fs(pvm)p 835
1254 V 15 w(settmask\(\))e FA(to)i(initialize)f(the)i(tracing)f
(parameters,)g(but)g(it)249 1308 y(m)o(ust)f(collect)i(and)f(in)o
(terpret)h(the)g(trace)g(data.)k(If)14 b(y)o(ou)g(m)o(ust)f(start)i(a)f
(traced)h(application)e(from)f(a)249 1362 y(TTY,)i(w)o(e)g(suggest)g
(spa)o(wning)g(an)f(xterm)g(from)g(the)h(console:)423
1443 y Fs(spawn)21 b(-@)h(/usr/local/X11R)o(5/bin)o(/xter)o(m)d(-n)i
(PVMTASK)291 1524 y FA(The)13 b(task)h(con)o(text)g(held)f(op)q(en)h(b)
o(y)f(the)h(xterm)f(has)h(tracing)f(enabled.)18 b(If)13
b(y)o(ou)g(no)o(w)g(run)h(a)f(PVM)249 1578 y(program)h(in)h(the)g
(xterm,)g(it)g(will)f(reconnect)j(to)e(the)h(task)f(con)o(text)h(and)f
(trace)i(data)e(will)e(b)q(e)j(sen)o(t)249 1632 y(bac)o(k)e(to)g(the)h
(PVM)g(console.)k(Once)c(the)g(PVM)g(program)d(exits,)i(y)o(ou)g(m)o
(ust)f(spa)o(wn)h(a)g(new)h(xterm)249 1686 y(to)f(run)g(again,)e(since)
j(the)f(task)g(con)o(text)h(will)d(b)q(e)j(closed.)291
1740 y(Because)21 b(the)g(libp)o(vm)c(library)i(is)h(link)o(ed)f(with)g
(y)o(our)h(program,)f(it)g(can't)h(b)q(e)g(trusted)i(when)249
1794 y(debugging.)17 b(If)12 b(y)o(ou)g(o)o(v)o(erwrite)g(part)h(of)e
(its)h(memory)e(\(for)i(example)f(b)o(y)h(o)o(v)o(erstepping)h(the)g(b)
q(ounds)249 1848 y(of)k(an)g(arra)o(y\))g(it)g(ma)o(y)e(start)j(to)f(b)
q(eha)o(v)o(e)h(erratically)m(,)e(making)f(the)j(fault)f(hard)g(to)g
(isolate.)28 b(The)249 1902 y(p)o(vmds)12 b(are)h(somewhat)f(more)g
(robust)h(and)g(attempt)f(to)h(sanit)o(y-c)o(hec)o(k)g(messages)g(from)
e(tasks,)i(but)249 1956 y(can)h(still)f(b)q(e)i(killed)d(b)o(y)i(erran)
o(t)h(programs.)291 2010 y(The)j Fs(pvm)p 449 2010 V
15 w(setopt\(\))f FA(function)h(can)g(b)q(e)h(used)g(to)f(set)i(the)f
(debug)f(mask)f(for)h(PVM)h(message-)249 2064 y(passing)14
b(functions,)h(as)f(describ)q(ed)j(in)d Ft(x)p FA(9.6.1.)k(Setting)d
(this)f(mask)f(to)i(3,)e(for)i(example,)d(will)h(force)249
2118 y(PVM)18 b(to)g(log)f(for)g(ev)o(ery)i(message)e(sen)o(t)i(or)f
(receiv)o(ed)h(b)o(y)f(that)g(task,)g(information)d(suc)o(h)k(as)e(the)
249 2172 y(source,)i(destination,)e(and)f(length)h(of)g(the)g(message.)
27 b(Y)m(ou)16 b(can)h(use)h(this)f(information)d(to)j(trace)249
2226 y(lost)d(or)g(stra)o(y)g(messages.)249 2346 y FD(9.6)52
b(Debugging)19 b(the)e(System)249 2454 y FA(Y)m(ou)9
b(ma)o(y)e(need)k(to)e(debug)h(the)g(PVM)g(system)f(when)h(p)q(orting)f
(it)g(to)g(a)g(new)h(arc)o(hitecture,)i(or)d(b)q(ecause)249
2508 y(an)17 b(application)e(is)i(not)f(running)h(correctly)m(.)27
b(If)17 b(y)o(ou'v)o(e)f(thoroughly)g(c)o(hec)o(k)o(ed)i(y)o(our)e
(application)p eop
%%Page: 159 178
159 177 bop 249 251 a Fu(T)m(roublesho)q(oting)1268 b(159)249
507 y FA(and)16 b(can't)f(\014nd)h(a)f(problem,)f(then)j(it)e(ma)o(y)f
(lie)h(in)g(the)h(system)g(itself.)23 b(This)15 b(section)i(describ)q
(es)g(a)249 561 y(few)d(tric)o(ks)g(and)g(undo)q(cumen)o(ted)g
(features)h(of)e(PVM)i(to)e(help)h(y)o(ou)g(\014nd)g(out)g(what's)f
(going)g(on.)249 644 y Fr(9.6.1)48 b(Run)o(time)13 b(Debug)h(Masks)249
727 y Ft(|)d FA(The)g(p)o(vmd)f(and)h(libp)o(vm)e(eac)o(h)i(ha)o(v)o(e)
h(a)e(debugging)h(mask)f(that)h(can)h(b)q(e)g(set)g(to)f(enable)g
(logging)f(of)249 781 y(v)n(arious)h(information.)k(Logging)10
b(information)g(is)h(divided)h(in)o(to)f(classes,)j(eac)o(h)e(enabled)g
(separately)249 835 y(b)o(y)h(a)g(bit)h(in)f(the)h(debug)g(mask.)i(The)
e(p)o(vmd)e(and)h(console)h(ha)o(v)o(e)f(a)g(command)e(line)i(option)g
(\()p Fs(-d)p FA(\))g(to)249 889 y(set)g(the)g(debug)g(mask)e(of)h(the)
h(p)o(vmd)e(to)h(the)h(\(hexadecimal\))e(v)n(alue)h(sp)q(eci\014ed;)i
(the)f(default)f(is)h(zero.)249 943 y(Sla)o(v)o(e)g(p)o(vmds)f(inherit)
h(the)h(debug)g(mask)e(of)h(the)h(master)f(as)g(they)h(are)g(started.)
19 b(The)14 b(debug)f(mask)249 997 y(of)g(a)g(p)o(vmd)f(can)i(b)q(e)g
(set)g(at)g(an)o(y)f(time)f(using)h(the)h(console)g Fs(tickle)e
FA(command)f(on)i(that)g(host.)19 b(The)249 1051 y(debug)14
b(mask)f(in)g(libp)o(vm)f(can)i(b)q(e)g(set)h(in)e(the)i(task)f(with)f
Fs(pvm)p 1235 1051 14 2 v 16 w(setopt\(\))p FA(.)291
1105 y(The)f(p)o(vmd)e(debug)j(mask)d(bits)i(are)h(de\014ned)g(in)e
(ddpro.h,)h(and)g(the)g(libp)o(vm)e(bits)i(in)f(lp)o(vm.c.)16
b(The)249 1159 y(meanings)f(of)g(the)h(bits)g(are)h(not)f(w)o(ell)f
(de\014ned,)i(since)g(they're)g(only)e(in)o(tended)h(to)g(b)q(e)h(used)
g(when)249 1213 y(\014xing)d(or)h(mo)q(difying)d(the)j(p)o(vmd)f(or)g
(libp)o(vm.)19 b(A)o(t)c(presen)o(t,)h(the)f(bits)g(in)g(the)g(debug)g
(mask)f(are)h(as)249 1267 y(follo)o(ws:)328 1363 y Fu(Name)d(Bit)63
b(Debug)14 b(Messages)g(ab)q(out)p 291 1378 956 2 v 335
1410 a Fg(pkt)49 b Fu(0x1)h(P)o(ac)o(k)o(et)13 b(routing)335
1456 y Fg(msg)88 b Fu(2)50 b(Message)14 b(routing)335
1502 y Fg(tsk)88 b Fu(4)50 b(T)m(ask)13 b(managemen)o(t)335
1547 y Fg(slv)88 b Fu(8)50 b(Sla)o(v)o(e)14 b(p)o(vmd)g(startup)335
1593 y Fg(hst)69 b Fu(10)50 b(Host)13 b(table)h(up)q(dates)335
1639 y Fg(sel)69 b Fu(20)50 b(Select)14 b(lo)q(op)g(\(b)q(elo)o(w)g
(pac)o(k)o(et)g(routing)g(la)o(y)o(er\))335 1684 y Fg(net)69
b Fu(40)50 b(Net)o(w)o(ork)13 b(t)o(widdling)335 1730
y Fg(mpp)69 b Fu(80)50 b(MPP)13 b(p)q(ort)h(sp)q(eci\014c)335
1776 y Fg(sch)50 b Fu(100)g(Resource)14 b(manager)g(in)o(terface)p
291 1791 V 249 1938 a Fr(9.6.2)48 b(Tic)o(kle)15 b(the)f(Pvmd)249
2021 y Ft(|)h FA(The)h(tic)o(kle)g(function)f(is)h(a)f(simple,)f
(extensible)j(in)o(terface)f(that)g(allo)o(ws)f(a)g(task)h(to)g(p)q(ok)
o(e)f(at)h(its)249 2075 y(lo)q(cal)i(p)o(vmd)f(as)i(it)f(runs.)33
b(It)19 b(is)f(not)h(formally)d(sp)q(eci\014ed,)21 b(but)d(has)h(pro)o
(v)o(en)g(to)g(b)q(e)g(v)o(ery)g(useful)249 2129 y(in)e(debugging)g
(the)i(system.)29 b(Tic)o(kle)17 b(is)g(accessible)i(from)d(the)j
(console)f(\()p Fs(tickle)e FA(command\))f(or)249 2183
y(libp)o(vm.)31 b(F)m(unction)19 b Fs(pvm)p 667 2183
14 2 v 15 w(tickle\(\))e FA(sends)k(a)d Fs(TM)p 1075
2183 V 16 w(TICKLE)f FA(message)i(to)g(the)h(p)o(vmd)d(con)o(taining)
249 2237 y(a)h(short)h(\(maxim)n(um)14 b(of)k(ten\))h(arra)o(y)f(of)g
(in)o(tegers)h(and)f(receiv)o(es)i(an)e(arra)o(y)g(in)g(reply)m(.)31
b(The)19 b(\014rst)249 2291 y(elemen)o(t)12 b(of)g(the)h(arra)o(y)g(is)
f(a)h(sub)q(command,)d(and)j(the)g(remaining)d(elemen)o(ts)j(are)g
(parameters.)18 b(The)249 2345 y(commands)12 b(curren)o(tly)i
(de\014ned)h(are:)p eop
%%Page: 160 179
160 178 bop 249 251 a Fu(160)1356 b(Chapter)13 b(9)p
291 467 1247 2 v 315 499 a(Args)89 b(Return)50 b(Action)p
291 515 V 315 547 a(0)200 b(-)102 b(Dump)14 b(instrumen)o(ted)h(heap)f
(\()p Ff(x)p Fu(9.6.4\))e(to)h(p)o(vmd)h(log)g(\014le)315
592 y(1)200 b(-)102 b(Dump)14 b(host)g(table)315 638
y(2)200 b(-)102 b(Dump)14 b(task)f(table)315 684 y(3)200
b(-)102 b(Dump)14 b(w)o(aitc)f(list)315 729 y(4)200 b(-)102
b(Dump)14 b(class-name)h(list)315 775 y(5)164 b Fd(mask)66
b Fu(Get)13 b(p)o(vmd)h(debug)g(mask)315 821 y(6)f Fd(mask)102
b Fu(-)g(Set)13 b(p)o(vmd)h(debug)g(mask)g(to)f Fd(mask)315
866 y Fu(7)g Fd(max)118 b Fu(-)102 b(Set)13 b(max)h(outstanding)h(pac)o
(k)o(ets)f(to)f Fd(max)315 912 y Fu(8)g Fd(tid)142 b
Fu(-)102 b(T)m(rigger)14 b(host)f(fail)h(for)f(host)g
Fd(tid)315 958 y Fu(9)g Fd(\015ag)126 b Fu(-)102 b(Dump)14
b(p)o(vmd)g(statistics)g(\()p Ff(x)p Fu(9.6.5\);)f(clear)h(if)f
Fd(\015ag)e Fu(nonzero)p 291 973 V 291 1031 a FA(New)j(tic)o(kle)g
(commands)d(are)j(generally)g(added)g(to)g(the)g(end)h(of)e(the)i
(list.)249 1114 y Fr(9.6.3)48 b(Starting)13 b(Pvmd)i(under)f(a)i
(Debugger)249 1197 y FA(If)f(the)g(p)o(vmd)f(breaks,)h(y)o(ou)g(ma)o(y)
e(need)j(to)f(start)h(it)e(under)i(a)f(debugger.)22 b(The)16
b(master)e(p)o(vmd)g(can)249 1251 y(b)q(e)f(started)g(b)o(y)e(hand)h
(under)h(a)e(debugger,)i(and)e(the)i(PVM)f(console)g(started)h(on)f
(another)g(terminal.)249 1305 y(T)m(o)g(start)h(a)f(sla)o(v)o(e)g(p)o
(vmd)f(under)i(a)f(debugger,)h(use)h(the)f(man)o(ual)d(startup)j(\()p
Fs(so=ms)p FA(\))f(host)g(\014le)h(option)249 1359 y(so)i(the)g(master)
f(p)o(vmd)f(will)h(allo)o(w)f(y)o(ou)h(to)h(start)g(the)g(sla)o(v)o(e)f
(b)o(y)h(hand.)20 b(Or,)15 b(use)h(the)f Fs(dx=)f FA(host)h(\014le)249
1413 y(option)e(to)h(execute)i(a)e(script)h(similar)c(to)j
Fs(lib/debugger)p FA(,)d(and)j(run)g(the)h(p)o(vmd)d(in)i(a)g(debugger)
g(in)249 1467 y(an)g FB(xterm)f FA(windo)o(w.)249 1550
y Fr(9.6.4)48 b(Sane)15 b(Heap)249 1633 y Ft(|)e FA(T)m(o)f(help)h
(catc)o(h)h(memory)d(allo)q(cation)g(errors)k(in)e(the)g(system)g(co)q
(de,)h(the)g(p)o(vmd)d(and)j(libp)o(vm)c(use)249 1687
y(a)15 b(sanit)o(y-c)o(hec)o(king)g(library)g(called)g
FB(imal)r(lo)n(c)p FA(.)22 b(Imallo)q(c)14 b(functions)h(are)h(wrapp)q
(ers)h(for)e(the)h(regular)249 1741 y FB(lib)n(c)e FA(functions)h
Fs(malloc\(\))p FA(,)e Fs(realloc\(\))p FA(,)g(and)i
Fs(free\(\))p FA(.)k(Up)q(on)c(detecting)h(an)f(error,)g(the)h(imalloc)
249 1795 y(functions)e(ab)q(ort)g(the)g(program)f(so)h(the)g(fault)f
(can)h(b)q(e)h(traced.)291 1849 y(The)f(follo)o(wing)d(c)o(hec)o(ks)k
(and)f(functions)g(are)g(p)q(erformed)g(b)o(y)g(imalloc:)196
1916 y(1.)20 b(The)14 b(length)f(argumen)o(t)g(to)g(mallo)q(c)e(is)i(c)
o(hec)o(k)o(ed)i(for)e(insane)h(v)n(alues.)j(A)d(length)f(of)g(zero)h
(is)g(c)o(hanged)249 1970 y(to)g(one)g(so)g(it)f(succeeds.)196
2037 y(2.)20 b(Eac)o(h)e(allo)q(cated)f(blo)q(c)o(k)g(is)h(trac)o(k)o
(ed)g(in)f(a)g(hash)h(table)f(to)h(detect)h(when)f Fs(free\(\))e
FA(is)i(called)f(more)249 2091 y(than)d(once)g(on)g(a)g(blo)q(c)o(k)f
(or)h(on)g(something)e(not)i(from)e Fs(malloc\(\))p FA(.)196
2158 y(3.)20 b Fs(i)p 274 2158 14 2 v 16 w(malloc\(\))9
b FA(and)h Fs(i)p 574 2158 V 16 w(realloc\(\))f FA(write)i(pads)g
(\014lled)g(with)f(a)h(pseudo-random)f(pattern)h(outside)g(the)249
2212 y(b)q(ounds)16 b(of)e(eac)o(h)i(blo)q(c)o(k,)f(whic)o(h)g(are)g(c)
o(hec)o(k)o(ed)i(b)o(y)e Fs(i)p 1089 2212 V 15 w(free\(\))f
FA(to)h(detect)i(when)f(something)d(writes)249 2266 y(past)h(the)h(end)
f(of)f(a)h(blo)q(c)o(k.)196 2333 y(4.)20 b Fs(i)p 274
2333 V 16 w(free\(\))e FA(zeros)j(eac)o(h)g(blo)q(c)o(k)e(b)q(efore)i
(it)e(frees)j(it)d(so)h(further)h(references)i(ma)o(y)17
b(fail)i(and)h(mak)o(e)249 2387 y(themselv)o(es)14 b(kno)o(wn.)196
2454 y(5.)20 b(Eac)o(h)g(blo)q(c)o(k)f(is)g(tagged)g(with)h(a)f(serial)
g(n)o(um)o(b)q(er)g(and)g(string)g(to)h(indicate)f(its)g(use.)36
b(The)20 b(heap)249 2508 y(space)14 b(can)f(b)q(e)g(dump)q(ed)f(or)g
(sanit)o(y-c)o(hec)o(k)o(ed)i(at)e(an)o(y)h(time)e(b)o(y)h(calling)f
Fs(i)p 1402 2508 V 16 w(dump\(\))p FA(.)16 b(This)d(helps)g(\014nd)p
eop
%%Page: 161 180
161 179 bop 249 251 a Fu(T)m(roublesho)q(oting)1268 b(161)249
507 y FA(memory)11 b(leaks.)291 578 y(Since)16 b(the)h(o)o(v)o(erhead)g
(of)e(this)i(c)o(hec)o(king)f(is)g(quite)h(sev)o(ere,)h(it)e(is)g
(disabled)g(at)g(compile)e(time)h(b)o(y)249 632 y(default.)j
(De\014ning)13 b Fs(USE)p 639 632 14 2 v 15 w(PVM)p 720
632 V 15 w(ALLOC)g FA(in)h(the)g(source)h(mak)o(e\014le\(s\))e(switc)o
(hes)i(it)f(on.)249 715 y Fr(9.6.5)48 b(Statistics)249
798 y Ft(|)17 b FA(The)g(p)o(vmd)f(includes)i(sev)o(eral)g(registers)g
(and)g(coun)o(ters)g(to)f(sample)f(certain)i(ev)o(en)o(ts,)h(suc)o(h)f
(as)249 852 y(the)g(n)o(um)o(b)q(er)f(of)f(calls)h(made)f(to)h
Fs(select\(\))f FA(or)h(the)h(n)o(um)o(b)q(er)f(of)f(pac)o(k)o(ets)i
(refragmen)o(ted)f(b)o(y)g(the)249 906 y(net)o(w)o(ork)11
b(co)q(de.)17 b(These)12 b(v)n(alues)e(can)h(b)q(e)g(computed)f(from)f
(a)h(debug)h(log,)e(but)i(the)g(coun)o(ters)h(ha)o(v)o(e)e(less)249
960 y(adv)o(erse)17 b(impact)c(on)j(the)g(p)q(erformance)f(of)g(the)h
(p)o(vmd)e(than)h(w)o(ould)g(generating)g(a)h(h)o(uge)f(log)g(\014le.)
249 1014 y(The)i(coun)o(ters)h(can)f(b)q(e)g(dump)q(ed)g(or)f(reset)j
(using)d(the)h Fs(pvm)p 1217 1014 V 15 w(tickle\(\))e
FA(function)i(or)f(the)i(console)249 1068 y(tic)o(kle)13
b(command.)i(The)e(co)q(de)h(to)f(gather)g(statistics)h(is)f(normally)d
(switc)o(hed)k(out)f(at)g(compile)e(time.)249 1122 y(T)m(o)i(enable)h
(it,)f(one)h(edits)h(the)f(mak)o(e\014le)f(and)h(adds)g
Fs(-DSTATISTICS)d FA(to)j(the)g(compile)e(options.)p
eop
%%Page: 162 181
162 180 bop eop
%%Page: 163 182
163 181 bop 249 260 a FD(Glossary)249 583 y Fr(async)o(hronous)18
b FA(Not)11 b(guaran)o(teed)g(to)g(enforce)h(coincidence)f(in)g(clo)q
(c)o(k)g(time.)k(In)c(an)f(async)o(hronous)249 637 y(comm)o(unication)i
(op)q(eration,)j(the)h(sender)h(and)f(receiv)o(er)h(ma)o(y)c(or)i(ma)o
(y)f(not)h(b)q(oth)h(b)q(e)g(engaged)f(in)249 691 y(the)g(op)q(eration)
e(at)h(the)h(same)e(instan)o(t)g(in)h(clo)q(c)o(k)g(time.)249
759 y Fr(atomic)20 b FA(Not)12 b(in)o(terruptible.)18
b(An)12 b(atomic)e(op)q(eration)i(is)g(one)g(that)g(alw)o(a)o(ys)f(app)
q(ears)i(to)f(ha)o(v)o(e)g(b)q(een)249 813 y(executed)k(as)e(a)f(unit.)
249 882 y Fr(bandwidth)18 b FA(A)e(measure)f(of)g(the)i(sp)q(eed)g(of)e
(information)e(transfer)k(t)o(ypically)d(used)j(to)e(quan)o(tify)249
936 y(the)e(comm)o(uni)o(cation)c(capabilit)o(y)i(of)g(m)o(ulticom)o
(puter)f(and)i(m)o(ultipro)q(cessor)f(systems.)18 b(Bandwidth)249
990 y(can)h(express)i(p)q(oin)o(t-to-p)q(oin)o(t)d(or)h(collectiv)o(e)g
(\(bus\))h(comm)o(unicatio)o(ns)d(rates.)34 b(Bandwidths)20
b(are)249 1043 y(usually)13 b(expressed)j(in)e(megab)o(ytes)f(p)q(er)i
(second.)249 1112 y Fr(barrier)f(sync)o(hronizati)o(on)j
FA(An)e(ev)o(en)o(t)f(in)g(whic)o(h)f(t)o(w)o(o)h(or)g(more)f(pro)q
(cesses)j(b)q(elonging)d(to)h(some)249 1166 y(implicit)e(or)i(explicit)
f(group)h(blo)q(c)o(k)g(un)o(til)f(all)g(mem)o(b)q(ers)g(of)h(the)h
(group)f(ha)o(v)o(e)g(blo)q(c)o(k)o(ed.)k(They)d(ma)o(y)249
1220 y(then)h(all)d(pro)q(ceed.)23 b(No)15 b(mem)o(b)q(er)e(of)h(the)i
(group)e(ma)o(y)f(pass)j(a)e(barrier)i(un)o(til)e(all)f(pro)q(cesses)18
b(in)c(the)249 1274 y(group)g(ha)o(v)o(e)g(reac)o(hed)h(it.)249
1342 y Fr(big-endian)i FA(A)d(binary)g(data)f(format)f(in)i(whic)o(h)f
(the)i(most)d(signi\014can)o(t)i(b)o(yte)g(or)g(bit)f(comes)h(\014rst.)
249 1396 y(See)h(also)e FB(little-endian)p FA(.)249 1465
y Fr(bisection)g(bandwidth)18 b FA(The)f(rate)h(at)e(whic)o(h)h(comm)o
(unication)c(can)18 b(tak)o(e)e(place)i(b)q(et)o(w)o(een)g(one)249
1519 y(half)10 b(of)h(a)g(computer)g(and)g(the)g(other.)18
b(A)11 b(lo)o(w)g(bisection)g(bandwidth)g(or)g(a)g(large)g(disparit)o
(y)g(b)q(et)o(w)o(een)249 1572 y(the)18 b(maxim)o(um)13
b(and)18 b(minim)n(um)13 b(bisection)18 b(bandwidths)g(ac)o(hiev)o(ed)g
(b)o(y)g(cutting)g(the)g(computers)249 1626 y(elemen)o(ts)f(in)g
(di\013eren)o(t)h(w)o(a)o(ys)f(is)h(a)f(w)o(arning)f(that)i(comm)o(uni)
o(cations)d(b)q(ottlenec)o(ks)j(ma)o(y)e(arise)h(in)249
1680 y(some)c(calculations.)249 1749 y Fr(broadcast)19
b FA(T)m(o)13 b(send)h(a)f(message)g(to)h(all)e(p)q(ossible)h(recipien)
o(ts.)19 b(Broadcast)c(can)e(b)q(e)h(implemen)o(ted)249
1803 y(as)e(a)f(rep)q(eated)i(send)g(or)e(in)h(a)f(more)g(e\016cien)o
(t)h(metho)q(d,)e(for)i(example,)e(o)o(v)o(er)i(a)f(spanning)g(tree)i
(where)249 1857 y(eac)o(h)h(no)q(de)h(propagates)f(the)g(message)g(to)g
(its)g(descenden)o(ts.)249 1925 y Fr(bu\013er)19 b FA(A)d(temp)q(orary)
f(storage)h(area)g(in)f(memory)m(.)20 b(Man)o(y)15 b(metho)q(ds)g(for)h
(routing)f(messages)h(b)q(e-)249 1979 y(t)o(w)o(een)e(pro)q(cessors)h
(use)f(bu\013ers)g(at)e(the)i(source)g(and)f(destination)g(or)f(at)h
(in)o(termediate)f(pro)q(cessors.)249 2048 y Fr(bus)20
b FA(A)f(single)f(ph)o(ysical)g(comm)o(unications)e(medium)g(shared)k
(b)o(y)f(t)o(w)o(o)f(or)h(more)f(devices.)34 b(The)249
2101 y(net)o(w)o(ork)16 b(shared)h(b)o(y)e(pro)q(cessors)j(in)e(man)o
(y)e(distributed)i(computers)g(is)f(a)h(bus,)g(as)g(is)g(the)g(shared)
249 2155 y(data)e(path)f(in)h(man)o(y)e(m)o(ultipro)q(cessors.)249
2224 y Fr(cac)o(he)k(consistency)i FA(The)11 b(problem)d(of)h(ensuring)
h(that)g(the)g(v)n(alues)g(asso)q(ciated)g(with)g(a)f(particular)249
2278 y(v)n(ariable)k(in)g(the)i(cac)o(hes)g(of)e(sev)o(eral)i(pro)q
(cessors)h(are)e(nev)o(er)h(visibly)e(di\013eren)o(t.)249
2346 y Fr(c)o(hannel)19 b FA(A)e(p)q(oin)o(t-to-p)q(oin)o(t)f
(connection)i(through)f(whic)o(h)g(messages)g(can)h(b)q(e)g(sen)o(t.)29
b(Program-)249 2400 y(ming)12 b(systems)j(that)f(rely)h(on)f(c)o
(hannels)h(are)f(sometimes)f(called)h(connection)h(orien)o(ted,)f(to)h
(distin-)249 2454 y(guish)10 b(them)f(from)g(connectionless)i(systems)g
(in)f(whic)o(h)g(messages)g(are)h(sen)o(t)g(to)f(named)f(destinations)
249 2508 y(rather)15 b(than)f(through)g(named)e(c)o(hannels.)p
eop
%%Page: 164 183
164 182 bop 249 251 a Fu(164)1392 b(Glossary)249 507
y Fr(circuit)19 b FA(A)h(net)o(w)o(ork)g(where)i(connections)f(are)g
(established)g(b)q(et)o(w)o(een)g(senders)i(and)d(receiv)o(ers,)249
561 y(reserving)15 b(net)o(w)o(ork)f(resources.)20 b(Compare)13
b(with)h FB(p)n(acket)h(switching)p FA(.)249 632 y Fr(com)o(bining)i
FA(Joining)e(messages)h(together)g(as)g(they)g(tra)o(v)o(erse)h(a)e
(net)o(w)o(ork.)24 b(Com)o(bining)13 b(ma)o(y)g(b)q(e)249
686 y(done)h(to)g(reduce)h(the)g(total)e(tra\016c)h(in)f(the)h(net)o(w)
o(ork,)g(to)f(reduce)j(the)e(n)o(um)o(b)q(er)f(of)g(times)g(the)i
(start-)249 740 y(up)j(p)q(enalt)o(y)g(of)g(messaging)e(is)i(incurred,)
i(or)e(to)g(reduce)i(the)e(n)o(um)o(b)q(er)g(of)f(messages)h(reac)o
(hing)g(a)249 794 y(particular)c(destination.)249 864
y Fr(comm)o(unication)e(o)o(v)o(erhead)19 b FA(A)11 b(measure)g(of)g
(the)g(additional)f(w)o(orkload)g(incurred)i(in)e(a)h(parallel)249
918 y(algorithm)g(as)j(a)g(result)h(of)e(comm)o(unicatio)o(n)e(b)q(et)o
(w)o(een)k(the)g(no)q(des)g(of)e(the)h(parallel)f(system.)249
989 y Fr(computation-t)o(o-comm)o(u)o(ni)o(cati)o(on)f(ratio)20
b FA(The)10 b(ratio)g(of)f(the)i(n)o(um)o(b)q(er)e(of)h(calculations)f
(a)h(pro-)249 1043 y(cess)15 b(do)q(es)g(to)f(the)g(total)f(size)i(of)e
(the)i(messages)e(it)h(sends;)h(alternativ)o(ely)m(,)d(the)i(ratio)f
(of)h(time)e(sp)q(en)o(t)249 1097 y(calculating)k(to)g(time)g(sp)q(en)o
(t)i(comm)o(unicati)o(ng,)c(whic)o(h)j(dep)q(ends)h(on)f(the)g(relativ)
o(e)g(sp)q(eeds)h(of)e(the)249 1151 y(pro)q(cessor)g(and)d(comm)o
(unications)e(medium,)f(and)k(on)f(the)i(startup)f(cost)g(and)g
(latency)g(of)f(comm)o(u-)249 1205 y(nication.)249 1275
y Fr(con)o(ten)o(tion)33 b FA(Con\015ict)14 b(that)h(arises)g(when)g(t)
o(w)o(o)f(or)h(more)e(requests)j(are)f(made)f(concurren)o(tly)h(for)249
1329 y(a)f(resource)i(that)f(cannot)f(b)q(e)h(shared.)20
b(Pro)q(cesses)e(running)c(on)g(a)g(single)g(pro)q(cessor)i(ma)o(y)c
(con)o(tend)249 1383 y(for)k(CPU)g(time,)e(or)i(a)g(net)o(w)o(ork)g(ma)
o(y)e(su\013er)j(from)d(con)o(ten)o(tion)i(if)f(sev)o(eral)h(messages)g
(attempt)f(to)249 1437 y(tra)o(v)o(erse)g(the)g(same)e(link)g(at)g(the)
i(same)e(time.)249 1508 y Fr(con)o(text)h(switc)o(hing)34
b FA(Sa)o(ving)15 b(the)i(state)g(of)f(one)g(pro)q(cess)i(and)e
(replacing)g(it)g(with)g(that)g(of)f(an-)249 1562 y(other.)38
b(If)20 b(little)f(time)g(is)h(required)h(to)f(switc)o(h)h(con)o
(texts,)h(pro)q(cessor)g(o)o(v)o(erloading)d(can)h(b)q(e)h(an)249
1616 y(e\013ectiv)o(e)15 b(w)o(a)o(y)f(to)f(hide)h(latency)g(in)g(a)f
(message-passing)h(system.)249 1686 y Fr(daemon)20 b
FA(A)14 b(sp)q(ecial-purp)q(ose)h(pro)q(cess)h(that)e(runs)h(on)f(b)q
(ehalf)g(of)f(the)i(system,)e(for)h(example,)e(the)249
1740 y(p)o(vmd)g(pro)q(cess)k(or)e(group)g(serv)o(er)h(task.)249
1811 y Fr(data)g(enco)q(ding)k FA(A)e(binary)e(represen)o(tation)j(for)
e(data)g(ob)r(jects)i(\(e.g.,)d(in)o(tegers,)j(\015oating-p)q(oin)o(t)
249 1865 y(n)o(um)o(b)q(ers\))f(suc)o(h)g(as)h(XDR)e(or)h(the)g(nativ)o
(e)g(format)e(of)h(a)h(micropro)q(cessor.)27 b(PVM)18
b(messages)f(can)249 1919 y(con)o(tain)d(data)f(in)g(XDR,)g(nativ)o(e,)
g(or)h FB(fo)n(o)g FA(format.)249 1989 y Fr(data)h(parallelism)33
b FA(A)17 b(mo)q(del)f(of)g(parallel)g(computing)f(in)h(whic)o(h)h(a)g
(single)f(op)q(eration)h(can)g(b)q(e)249 2043 y(applied)9
b(to)g(all)f(elemen)o(ts)h(of)g(a)g(data)g(structure)i(sim)o
(ultaneously)m(.)j(T)o(ypically)m(,)8 b(these)j(data)e(structures)249
2097 y(are)18 b(arra)o(ys,)g(and)g(the)g(op)q(erations)g(act)f(indep)q
(enden)o(tly)i(on)e(ev)o(ery)h(arra)o(y)g(elemen)o(t)f(or)g(reduction)
249 2151 y(op)q(erations.)249 2222 y Fr(deadlo)q(c)o(k)35
b FA(A)13 b(situation)f(in)g(whic)o(h)g(eac)o(h)h(p)q(ossible)g
(activit)o(y)f(is)g(blo)q(c)o(k)o(ed,)g(w)o(aiting)g(on)g(some)f(other)
249 2276 y(activit)o(y)i(that)h(is)g(also)f(blo)q(c)o(k)o(ed.)249
2346 y Fr(distribu)o(ted)f(computer)35 b FA(A)15 b(computer)g(made)f
(up)i(of)f(smaller)e(and)j(p)q(oten)o(tially)e(indep)q(enden)o(t)249
2400 y(computers,)h(suc)o(h)g(as)g(a)g(net)o(w)o(ork)g(of)f(w)o
(orkstations.)21 b(This)15 b(arc)o(hitecture)h(is)f(increasingly)f
(studied)249 2454 y(b)q(ecause)j(of)d(its)h(cost)h(e\013ectiv)o(eness)i
(and)d(\015exibilit)o(y)m(.)k(Distributed)c(computers)h(are)f(often)g
(hetero-)249 2508 y(geneous.)p eop
%%Page: 165 184
165 183 bop 249 251 a Fu(Glossary)1393 b(165)249 507
y Fr(distribu)o(ted)12 b(memory)36 b FA(Memory)14 b(that)h(is)h(ph)o
(ysically)e(distributed)i(among)d(sev)o(eral)j(mo)q(dules.)249
561 y(A)g(distributed-memory)e(arc)o(hitecture)j(ma)o(y)d(app)q(ear)i
(to)g(users)h(to)f(ha)o(v)o(e)f(a)h(single)f(address)i(space)249
615 y(and)11 b(a)f(single)g(shared)i(memory)c(or)j(ma)o(y)e(app)q(ear)i
(as)g(disjoin)o(t)e(memory)g(made)g(up)i(of)f(man)o(y)f(separate)249
669 y(address)15 b(spaces.)249 740 y Fr(DMA)21 b FB(Dir)n(e)n(ct)16
b(memory)h(ac)n(c)n(ess,)f FA(allo)o(wing)e(devices)j(on)f(a)f(bus)i
(to)f(access)i(memory)13 b(without)j(in-)249 794 y(terfering)e(with)g
(the)h(CPU.)249 864 y Fr(e\016ciency)20 b FA(A)13 b(measure)f(of)h
(hardw)o(are)g(utilization,)e(equal)h(to)h(the)g(ratio)g(of)f(sp)q
(eedup)i(ac)o(hiev)o(ed)f(on)249 918 y FB(P)h FA(pro)q(cessors)i(to)e
FB(P)g FA(itself.)249 989 y Fr(Ethernet)19 b FA(A)i(p)q(opular)f(LAN)h
(tec)o(hnology)f(in)o(v)o(en)o(ted)h(b)o(y)f(Xero)o(x.)39
b(Ethernet)22 b(is)f(a)f(10-Mbit/S)249 1043 y(CSMA/CD)d(\(Carrier)i
(Sense)g(Multiple)d(Access)k(with)e(Collision)d(Detection\))k(bus.)29
b(Computers)249 1097 y(on)15 b(an)h(Ethernet)h(send)f(data)f(pac)o(k)o
(ets)h(directly)g(to)g(one)f(another.)23 b(They)16 b(listen)g(for)f
(the)h(net)o(w)o(ork)249 1151 y(to)g(b)q(ecome)h(idle)f(b)q(efore)h
(transmitting,)e(and)i(retransmit)f(in)g(the)h(ev)o(en)o(t)g(that)g(m)o
(ultiple)d(stations)249 1205 y(sim)o(ultaneously)e(attempt)h(to)h
(send.)249 1275 y Fr(FDDI)20 b FB(Fib)n(er)12 b(Distribute)n(d)h(Data)g
(Interfac)n(e,)f FA(a)f(standard)h(for)f(lo)q(cal)g(area)h(net)o(w)o
(orks)g(using)g(optical)249 1329 y(\014b)q(er)i(and)e(a)h(100-Mbit/s)e
(data)h(rate.)19 b(A)12 b FB(token)i FA(is)e(passed)i(among)c(the)k
(stations)e(to)h(con)o(trol)f(access)249 1383 y(to)g(send)i(on)e(the)h
(net)o(w)o(ork.)18 b(Net)o(w)o(orks)13 b(can)f(b)q(e)h(arranged)g(in)f
(top)q(ologies)g(suc)o(h)h(as)f(stars,)h(trees,)h(and)249
1437 y(rings.)25 b(Indep)q(enden)o(t)18 b FB(c)n(ounter-r)n(otating)e
FA(rings)g(allo)o(w)f(the)i(net)o(w)o(ork)f(to)g(con)o(tin)o(ue)g(to)h
(function)e(in)249 1491 y(the)g(ev)o(en)o(t)f(that)g(a)g(station)f(or)h
(link)f(fails.)249 1562 y Fr(FLOPS)20 b FB(Flo)n(ating-Point)h(Op)n(er)
n(ations)g(p)n(er)h(Se)n(c)n(ond)p FA(,)h(a)e(measure)g(of)g(memory)e
(access)k(p)q(erfor-)249 1616 y(mance,)13 b(equal)h(to)g(the)h(rate)f
(at)g(whic)o(h)g(a)g(mac)o(hine)f(can)h(p)q(erform)g(single-precision)g
(\015oating-p)q(oin)o(t)249 1670 y(calculations.)249
1740 y Fr(fork)20 b FA(T)m(o)d(create)i(another)f(cop)o(y)g(of)f(a)g
(running)g(pro)q(cess;)k(fork)c(returns)i(t)o(wice.)30
b(Compare)16 b(with)249 1794 y FB(sp)n(awn)p FA(.)249
1865 y Fr(fragmen)o(t)j FA(A)11 b(con)o(tiguous)h(part)f(of)g(a)h
(message.)17 b(Messages)c(are)f(fragmen)o(ted)e(so)i(they)g(can)g(b)q
(e)g(sen)o(t)249 1919 y(o)o(v)o(er)i(a)g(net)o(w)o(ork)g(ha)o(ving)e
(\014nite)i(maxim)o(um)9 b(pac)o(k)o(et)15 b(length.)249
1989 y Fr(group)k FA(A)14 b(set)h(of)e(tasks)i(assigned)f(a)f(common)f
(sym)o(b)q(olic)g(name,)g(for)h(addressing)i(purp)q(oses.)249
2060 y Fr(gran)o(ularit)n(y)j FA(The)d(size)g(of)e(op)q(erations)i
(done)g(b)o(y)f(a)g(pro)q(cess)i(b)q(et)o(w)o(een)f(comm)o(unications)c
(ev)o(en)o(ts.)249 2114 y(A)h(\014ne-grained)h(pro)q(cess)h(ma)o(y)c(p)
q(erform)h(only)h(a)g(few)g(arithmetic)f(op)q(erations)h(b)q(et)o(w)o
(een)i(pro)q(cessing)249 2168 y(one)g(message)g(and)f(the)i(next,)f
(whereas)h(a)f(coarse-grained)g(pro)q(cess)i(ma)o(y)c(p)q(erform)h
(millio)o(ns.)249 2238 y Fr(heterogeneous)18 b FA(Con)o(taining)10
b(comp)q(onen)o(ts)i(of)g(more)f(than)h(one)h(kind.)k(A)12
b(heterogeneous)i(arc)o(hi-)249 2292 y(tecture)j(ma)o(y)c(b)q(e)i(one)g
(in)g(whic)o(h)f(some)g(comp)q(onen)o(ts)h(are)g(pro)q(cessors,)i(and)e
(others)g(memories,)e(or)249 2346 y(it)h(ma)o(y)e(b)q(e)i(one)g(that)g
(uses)h(di\013eren)o(t)g(t)o(yp)q(es)g(of)e(pro)q(cessor)j(together.)
249 2417 y Fr(hierarc)o(hical)d(routing)18 b FA(Messages)e(are)f
(routed)g(in)f(PVM)h(based)h(on)e(a)h(hierarc)o(hical)f(address)i(\(a)
249 2471 y(TID\).)9 b(TIDs)h(are)g(divided)f(in)o(to)h(host)g(and)f(lo)
q(cal)g(parts)h(to)g(allo)o(w)e(e\016cien)o(t)i(lo)q(cal)f(and)h
(global)e(routing.)p eop
%%Page: 166 185
166 184 bop 249 251 a Fu(166)1392 b(Glossary)249 507
y Fr(HiPPI)20 b FB(High)c(Performanc)n(e)g(Par)n(al)r(lel)f(Interfac)n
(e)p FA(,)h(a)f(p)q(oin)o(t-to-p)q(oin)o(t)f(100-MByte/sec)i(in)o
(terface)249 561 y(standard)c(used)h(for)f(net)o(w)o(orking)g(comp)q
(onen)o(ts)f(of)h(high-p)q(erformance)f(m)o(ulticom)o(puters)g
(together.)249 632 y Fr(host)20 b FA(A)d(computer,)g(esp)q(ecially)h(a)
f(self-complete)g(one)g(on)g(a)g(net)o(w)o(ork)h(with)f(others.)29
b(Also,)17 b(the)249 686 y(fron)o(t-end)d(supp)q(ort)h(mac)o(hine)d
(for,)h(for)h(example,)e(a)i(m)o(ultipro)q(cessor.)249
756 y Fr(hoster)19 b FA(A)14 b(sp)q(ecial)g(PVM)h(task)f(that)f(p)q
(erforms)h(sla)o(v)o(e)f(p)o(vmd)g(startup)h(for)g(the)g(master)g(p)o
(vmd.)249 827 y Fr(in)o(terv)m(al)g(routing)k FA(A)12
b(routing)g(algorithm)d(that)j(assigns)h(an)f(in)o(teger)g(iden)o
(ti\014er)h(to)f(eac)o(h)h(p)q(ossible)249 881 y(destination)19
b(and)g(then)h(lab)q(els)f(the)h(outgoing)d(links)i(of)g(eac)o(h)g(no)q
(de)h(with)f(a)f(single)h(con)o(tiguous)249 935 y(in)o(terv)n(al)13
b(or)h(windo)o(w)f(so)h(that)g(a)f(message)h(can)g(b)q(e)g(routed)h
(simply)c(b)o(y)j(sending)g(it)g(out)f(the)i(link)d(in)249
989 y(whose)j(in)o(terv)n(al)e(its)g(destination)h(iden)o(ti\014er)g
(falls.)249 1059 y Fr(in)o(terrup)o(t-d)o(ri)o(v)o(en)e(system)20
b FA(A)c(t)o(yp)q(e)g(of)f(message-passing)g(system.)24
b(When)15 b(a)h(message)f(is)h(de-)249 1113 y(liv)o(ered)i(to)g(its)g
(destination)g(pro)q(cess,)j(it)d(in)o(terrupts)h(execution)g(of)e
(that)i(pro)q(cess)h(and)e(initiates)249 1167 y(execution)e(of)f(an)g
(in)o(terrupt)h(handler,)f(whic)o(h)g(ma)o(y)e(either)j(pro)q(cess)h
(the)f(message)f(or)g(store)i(it)d(for)249 1221 y(subsequen)o(t)f
(retriev)n(al.)k(On)12 b(completion)d(of)i(the)g(in)o(terrupt)h
(handler)g(\(whic)o(h)f(ma)o(y)e(set)j(some)e(\015ag)h(or)249
1275 y(sends)g(some)e(signal)g(to)h(denote)h(an)f(a)o(v)n(ailable)e
(message\),)i(the)g(original)e(pro)q(cess)k(resumes)f(execution.)249
1346 y Fr(IP)21 b FB(Internet)e(Pr)n(oto)n(c)n(ol)p FA(,)h(the)f(In)o
(ternet)i(standard)e(proto)q(col)g(that)g(enables)h(sending)g
(datagrams)249 1400 y(\(blo)q(c)o(ks)13 b(of)f(data\))h(b)q(et)o(w)o
(een)h(hosts)g(on)e(in)o(terconnected)j(net)o(w)o(orks.)k(It)13
b(pro)o(vides)g(a)f(connectionless,)249 1454 y(b)q(est-e\013ort)18
b(deliv)o(ery)f(service.)27 b(IP)17 b(and)f(the)h(ICMP)g(con)o(trol)f
(proto)q(col)h(are)g(the)g(building)e(blo)q(c)o(ks)249
1508 y(for)f(other)g(proto)q(cols)g(suc)o(h)h(as)f(TCP)g(and)g(UDP)m(.)
249 1578 y Fr(k)o(ernel)19 b FA(A)c(program)f(pro)o(viding)h(basic)g
(services)i(on)f(a)f(computer,)g(suc)o(h)h(as)g(managing)c(memory)m(,)
249 1632 y(devices,)j(and)e(\014le)h(systems.)k(A)c(k)o(ernel)g(ma)o(y)
e(pro)o(vide)h(minima)o(l)e(service)k(\(as)f(on)f(a)g(m)o(ultipro)q
(cessor)249 1686 y FB(no)n(de)p FA(\))j(or)f(man)o(y)e(features)j(\(as)
f(on)g(a)f(Unix)h(mac)o(hine\).)20 b(Alternativ)o(ely)m(,)14
b(a)g(k)o(ernel)i(ma)o(y)d(b)q(e)i(a)g(basic)249 1740
y(computational)h(building-blo)q(c)o(k)g(\(suc)o(h)j(as)f(a)f(fast)h(F)
m(ourier)g(transform\))f(used)i(iterativ)o(ely)f(or)f(in)249
1794 y(parallel)c(to)h(p)q(erform)f(a)g(larger)h(computation.)249
1865 y Fr(latency)20 b FA(The)d(time)e(tak)o(en)h(to)h(service)g(a)g
(request)h(or)e(deliv)o(er)h(a)f(message)g(that)g(is)h(indep)q(enden)o
(t)249 1919 y(of)f(the)h(size)f(or)h(nature)g(of)e(the)i(op)q(eration.)
25 b(The)17 b(latency)f(of)g(a)g(message-passing)f(system)h(is)g(the)
249 1973 y(minim)n(um)10 b(time)i(to)i(deliv)o(er)g(an)o(y)f(message.)
249 2043 y Fr(Libp)o(vm)18 b FA(The)11 b(core)g(PVM)g(programming)c
(library)m(,)i(allo)o(wing)f(a)i(task)h(to)f(in)o(terface)h(with)f(the)
h(p)o(vmd)249 2097 y(and)j(other)g(tasks.)249 2168 y
Fr(linear)g(sp)q(eedup)19 b FA(The)9 b(case)i(when)f(a)f(program)f
(runs)i(faster)h(in)e(direct)h(prop)q(ortion)f(to)h(the)g(n)o(um)o(b)q
(er)249 2222 y(of)j(pro)q(cessors)j(used.)249 2292 y
Fr(little-en)o(di)o(an)h FA(A)c(binary)e(data)h(format)e(is)i(whic)o(h)
g(the)g(least)h(signi\014can)o(t)e(b)o(yte)h(or)g(bit)g(comes)g
(\014rst.)249 2346 y(See)j(also)e FB(big-endian)p FA(.)249
2417 y Fr(load)i(balance)k FA(The)d(degree)h(to)e(whic)o(h)g(w)o(ork)g
(is)g(ev)o(enly)h(distributed)g(among)d(a)o(v)n(ailable)g(pro)q(ces-)
249 2471 y(sors.)19 b(A)14 b(program)e(executes)k(most)c(quic)o(kly)h
(when)h(it)f(is)h(p)q(erfectly)h(load)d(balanced,)i(that)f(is,)h(when)p
eop
%%Page: 167 186
167 185 bop 249 251 a Fu(Glossary)1393 b(167)249 507
y FA(ev)o(ery)17 b(pro)q(cessor)h(has)e(a)f(share)i(of)e(the)i(total)e
(amoun)o(t)f(of)i(w)o(ork)f(to)h(p)q(erform)f(so)h(that)g(all)f(pro)q
(ces-)249 561 y(sors)h(complete)e(their)i(assigned)f(tasks)h(at)f(the)h
(same)e(time.)20 b(One)c(measure)f(of)g(load)f(im)o(balance)f(is)249
615 y(the)i(ratio)f(of)g(the)i(di\013erence)g(b)q(et)o(w)o(een)g(the)f
(\014nishing)f(times)g(of)g(the)h(\014rst)h(and)e(last)g(pro)q(cessors)
j(to)249 669 y(complete)c(their)i(p)q(ortion)e(of)g(the)i(calculation)e
(to)h(the)g(time)f(tak)o(en)h(b)o(y)f(the)i(last)e(pro)q(cessor.)249
740 y Fr(lo)q(calit)o(y)35 b FA(The)15 b(degree)i(to)e(whic)o(h)g
(computations)f(done)h(b)o(y)g(a)g(pro)q(cessor)i(dep)q(end)g(only)d
(on)h(data)249 794 y(held)f(in)g(memory)e(that)i(is)g
FB(close)g FA(to)g(that)g(pro)q(cessor.)21 b(Also,)13
b(the)i(degree)g(to)f(whic)o(h)g(computations)249 848
y(done)k(on)f(part)g(of)g(a)g(data)g(structure)i(dep)q(end)g(only)d(on)
h(neigh)o(b)q(oring)g(v)n(alues.)28 b(Lo)q(calit)o(y)16
b(can)h(b)q(e)249 902 y(measured)10 b(b)o(y)f(the)i(ratio)e(of)g(lo)q
(cal)g(to)g(nonlo)q(cal)g(data)g(accesses,)k(or)d(b)o(y)f(the)i
(distribution)e(of)g(distances)249 956 y(of,)k(or)h(times)f(tak)o(en)h
(b)o(y)m(,)e(nonlo)q(cal)h(accesses.)249 1026 y Fr(lo)q(c)o(k)36
b FA(A)16 b(device)g(or)f(algorithm)e(the)j(use)g(of)f(whic)o(h)g
(guaran)o(tees)h(some)f(t)o(yp)q(e)h(of)e(exclusiv)o(e)i(access)249
1080 y(to)e(a)f(shared)i(resource.)249 1151 y Fr(lo)q(ose)g(sync)o
(hronizatio)o(n)34 b FA(The)14 b(situation)g(when)g(the)h(no)q(des)g
(on)f(a)g(computer)g(are)g(constrained)249 1205 y(to)d(in)o(termitten)o
(tly)e(sync)o(hronize)k(with)d(eac)o(h)i(other)f(via)f(some)g(comm)o
(unication.)k(F)m(requen)o(tly)m(,)d(some)249 1259 y(global)17
b(computational)g(parameter)i(suc)o(h)g(as)g(a)g(time)f(or)h(iteration)
f(coun)o(t)i(pro)o(vides)f(a)g(natural)249 1313 y(sync)o(hronization)f
(reference.)31 b(This)18 b(parameter)f(divides)h(the)g(running)g
(program)e(in)o(to)h(compute)249 1367 y(and)d(comm)o(unicatio)o(n)d
(cycles.)249 1437 y Fr(mapping)34 b FA(An)14 b(allo)q(cation)d(of)i
(pro)q(cesses)j(to)d(pro)q(cessors;)i(allo)q(cating)c(w)o(ork)i(to)g
(pro)q(cesses)j(is)d(usu-)249 1491 y(ally)g(called)g(sc)o(heduling.)249
1562 y Fr(memory)i(protection)34 b FA(An)o(y)12 b(system)g(that)h(prev)
o(en)o(ts)h(one)f(pro)q(cess)h(from)d(accessing)i(a)f(region)h(of)249
1616 y(memory)e(b)q(eing)i(used)h(b)o(y)f(another.)18
b(Memory)13 b(protection)h(is)f(supp)q(orted)h(in)f(most)f(serial)h
(comput-)249 1670 y(ers)18 b(b)o(y)g(the)f(hardw)o(are)h(and)f(the)h
(op)q(erating)f(system)h(and)f(in)g(most)f(parallel)g(computers)h(b)o
(y)g(the)249 1724 y(hardw)o(are)d(k)o(ernel)h(and)e(service)j(k)o
(ernel)e(of)f(the)i(pro)q(cessors.)249 1794 y Fr(mesh)20
b FA(A)d(top)q(ology)e(in)i(whic)o(h)g(no)q(des)g(form)f(a)g(regular)h
(acyclic)g Fn(d)p FA(-dimensional)d(grid,)j(and)g(eac)o(h)249
1848 y(edge)d(is)e(parallel)g(to)h(a)f(grid)h(axis)f(and)h(joins)f(t)o
(w)o(o)g(no)q(des)i(that)f(are)g(adjacen)o(t)g(along)f(that)g(axis.)18
b(The)249 1902 y(arc)o(hitecture)h(of)e(man)o(y)e(m)o(ulticomputers)g
(is)i(a)g(t)o(w)o(o-)g(or)g(three-dimensional)f(mesh;)i(meshes)g(are)
249 1956 y(also)e(the)h(basis)f(of)g(man)o(y)e(scien)o(ti\014c)k
(calculations,)e(in)g(whic)o(h)g(eac)o(h)h(no)q(de)f(represen)o(ts)k(a)
c(p)q(oin)o(t)f(in)249 2010 y(space,)g(and)e(the)i(edges)g(de\014ne)g
(the)f(neigh)o(b)q(ors)g(of)f(a)h(no)q(de.)249 2081 y
Fr(message)h(ID)21 b FA(An)14 b(in)o(teger)g(handle)g(used)h(to)e
(reference)k(a)c(message)h(bu\013er)h(in)e(libp)o(vm.)249
2151 y Fr(message)i(passing)35 b FA(A)15 b(st)o(yle)g(of)f(in)o(terpro)
q(cess)j(comm)o(unicatio)o(n)12 b(in)j(whic)o(h)f(pro)q(cesses)k(send)d
(dis-)249 2205 y(crete)h(messages)e(to)g(one)g(another.)19
b(Some)13 b(computer)g(arc)o(hitectures)j(are)f(called)f
(message-passing)249 2259 y(arc)o(hitectures)f(b)q(ecause)f(they)f
(supp)q(ort)g(this)g(mo)q(del)e(in)h(hardw)o(are,)h(although)e(message)
i(passing)f(has)249 2313 y(often)15 b(b)q(een)i(used)f(to)f(construct)i
(op)q(erating)f(systems)f(and)g(net)o(w)o(ork)h(soft)o(w)o(are)f(for)g
(unipro)q(cessors)249 2367 y(and)f(distributed)g(computers.)249
2438 y Fr(message)h(tag)21 b FA(An)14 b(in)o(teger)g(co)q(de)h(\(c)o
(hosen)f(b)o(y)g(the)g(programmer\))e(b)q(ound)i(to)g(a)f(message)h(as)
g(it)f(is)249 2492 y(sen)o(t.)19 b(Messages)c(can)f(b)q(e)h(accepted)h
(b)o(y)d(tag)h(v)n(alue)f(and/or)g(source)j(address)f(at)f(the)g
(destination.)p eop
%%Page: 168 187
168 186 bop 249 251 a Fu(168)1392 b(Glossary)249 507
y Fr(message)15 b(t)o(yping)35 b FA(The)21 b(asso)q(ciation)f(of)g
(information)e(with)i(a)g(message)h(that)f(iden)o(ti\014es)h(the)249
561 y(nature)13 b(of)f(its)g(con)o(ten)o(ts.)18 b(Most)13
b(message-passing)e(systems)i(automatically)c(transfer)k(information)
249 615 y(ab)q(out)h(a)g(message's)g(sender)h(to)f(its)g(receiv)o(er.)
21 b(Man)o(y)13 b(also)h(require)h(the)f(sender)i(to)e(sp)q(ecify)h(a)f
(t)o(yp)q(e)249 669 y(for)d(the)h(message,)f(and)f(let)i(the)f(receiv)o
(er)i(select)g(whic)o(h)e(t)o(yp)q(es)h(of)e(messages)h(it)g(is)g
(willing)e(to)i(receiv)o(e.)249 723 y(See)k FB(message)g(tag)p
FA(.)249 794 y Fr(MIMD)37 b FB(Multiple-Instruction)16
b(Multiple-Data)p FA(,)g(a)f(category)i(of)e(Flynn's)g(taxonom)o(y)f
(in)h(whic)o(h)249 848 y(man)o(y)f(instruction)i(streams)g(are)g
(concurren)o(tly)h(applied)e(to)g(m)o(ultiple)f(data)h(sets.)25
b(A)16 b(MIMD)f(ar-)249 902 y(c)o(hitecture)h(is)d(one)i(in)e(whic)o(h)
h(heterogeneous)i(pro)q(cesses)g(ma)o(y)c(execute)k(at)e(di\013eren)o
(t)g(rates.)249 972 y Fr(m)o(ulticast)k FA(T)m(o)f(send)h(a)f(message)h
(to)f(man)o(y)m(,)f(but)i(not)f(necessarily)i(all)d(p)q(ossible)i
(recipien)o(t)g(pro-)249 1026 y(cesses.)249 1097 y Fr(m)o(ulticompu)o
(te)o(r)g FA(A)9 b(computer)g(in)g(whic)o(h)g(pro)q(cessors)j(can)d
(execute)i(separate)g(instruction)e(streams,)249 1151
y(can)j(ha)o(v)o(e)f(their)h(o)o(wn)f(priv)n(ate)g(memories,)e(and)j
(cannot)f(directly)h(access)h(one)f(another's)g(memories.)249
1205 y(Most)h(m)o(ulticomputers)e(are)j(disjoin)o(t)e(memory)f(mac)o
(hines,)h(constructed)j(b)o(y)e(joining)e(no)q(des)j(\(eac)o(h)249
1259 y(con)o(taining)f(a)g(micropro)q(cessor)i(and)e(some)g(memory\))f
(via)h(links.)249 1329 y Fr(m)o(ultipr)o(o)q(cessor)18
b FA(A)9 b(computer)g(in)g(whic)o(h)g(pro)q(cessors)i(can)f(execute)h
(separate)f(instruction)g(streams,)249 1383 y(but)20
b(ha)o(v)o(e)g(access)h(to)f(a)f(single)h(address)h(space.)37
b(Most)20 b(m)o(ultipro)q(cessors)g(are)g(shared-memory)249
1437 y(mac)o(hines,)c(constructed)j(b)o(y)e(connecting)g(sev)o(eral)g
(pro)q(cessors)i(to)e(one)g(or)g(more)f(memory)e(banks)249
1491 y(through)g(a)g(bus)g(or)g(switc)o(h.)249 1562 y
Fr(m)o(ultipr)o(o)q(cessor)f(host)19 b FA(The)11 b(fron)o(t-end)g(supp)
q(ort)g(mac)o(hine)e(of,)h(for)g(example,)f(a)h(m)o(ulticomputer.)249
1616 y(It)h(ma)o(y)e(serv)o(e)j(to)e(b)q(o)q(ot)h(the)g(m)o
(ulticomputer,)e(pro)o(vide)h(net)o(w)o(ork)h(access,)i(\014le)d
(service,)j(etc.)18 b(Utilities)249 1670 y(suc)o(h)d(as)f(compilers)f
(ma)o(y)e(run)k(only)e(on)g(the)i(fron)o(t-end)f(mac)o(hine.)249
1740 y Fr(m)o(ultitaski)o(ng)j FA(Executing)e(man)o(y)c(pro)q(cesses)17
b(on)c(a)h(single)f(pro)q(cessor.)20 b(This)14 b(is)f(usually)g(done)h
(b)o(y)249 1794 y(time-slicing)f(the)i(execution)h(of)e(individual)f
(pro)q(cesses)k(and)e(p)q(erforming)e(a)i(con)o(text)g(switc)o(h)h(eac)
o(h)249 1848 y(time)g(a)h(pro)q(cess)i(is)e(sw)o(app)q(ed)h(in)f(or)g
(out,)g(but)h(is)f(supp)q(orted)h(b)o(y)f(sp)q(ecial-purp)q(ose)i
(hardw)o(are)e(in)249 1902 y(some)e(computers.)24 b(Most)17
b(op)q(erating)e(systems)i(supp)q(ort)f(m)o(ultitasking,)d(but)k(it)e
(can)h(b)q(e)h(costly)f(if)249 1956 y(the)d(need)g(to)f(switc)o(h)g
(large)g(cac)o(hes)i(or)e(execution)h(pip)q(elines)f(mak)o(es)f(con)o
(text)i(switc)o(hing)f(exp)q(ensiv)o(e)249 2010 y(in)h(time.)249
2081 y Fr(m)o(utual)h(exclusion)k FA(A)13 b(situation)g(in)g(whic)o(h)h
(at)f(most)g(one)g(pro)q(cess)j(can)d(b)q(e)i(engaged)e(in)h(a)f(sp)q
(ec-)249 2135 y(i\014ed)h(activit)o(y)f(at)h(an)o(y)f(time.)k
(Semaphores)d(are)g(often)g(used)h(to)e(implemen)o(t)e(this.)249
2205 y Fr(net)o(w)o(ork)19 b FA(A)f(ph)o(ysical)e(comm)o(unication)e
(medium.)25 b(A)17 b(net)o(w)o(ork)h(ma)o(y)d(consist)j(of)e(one)i(or)f
(more)249 2259 y(buses,)e(a)e(switc)o(h,)h(or)g(the)g(links)g(joining)e
(pro)q(cessors)k(in)d(a)h(m)o(ulticomputer.)249 2330
y Fr(net)o(w)o(ork)g(b)o(yte)h(order)20 b FA(The)14 b(In)o(ternet)h
(standard)f(b)o(yte)h(order)f(\(big-endian\).)249 2400
y Fr(no)q(de)20 b FA(Basic)g(compute)g(building)e(blo)q(c)o(k)i(of)f(a)
g(m)o(ulticomputer.)34 b(T)o(ypically)18 b(a)i(no)q(de)g(refers)h(to)
249 2454 y(a)f(pro)q(cessor)j(with)d(a)g(memory)e(system)i(and)h(a)f
(mec)o(hanism)e(for)i(comm)o(unicating)d(with)j(other)249
2508 y(pro)q(cessors)c(in)e(the)g(system.)p eop
%%Page: 169 188
169 187 bop 249 251 a Fu(Glossary)1393 b(169)249 507
y Fr(non-blo)q(c)o(king)17 b FA(An)f(op)q(eration)f(that)g(do)q(es)i
(not)e(blo)q(c)o(k)g(the)h(execution)g(of)f(the)h(pro)q(cess)h(using)e
(it.)249 561 y(The)k(term)f(is)h(usually)f(applied)g(to)h(comm)o
(unicatio)o(ns)e(op)q(erations,)i(where)h(it)f(implies)e(that)h(the)249
615 y(comm)o(unicating)f(pro)q(cess)22 b(ma)o(y)c(p)q(erform)h(other)i
(op)q(erations)g(b)q(efore)f(the)h(comm)o(unication)c(has)249
669 y(completed.)249 738 y Fr(notify)i FA(A)d(message)h(generated)g(b)o
(y)g(PVM)f(on)h(a)f(sp)q(eci\014ed)i(ev)o(en)o(t.)26
b(A)17 b(task)g(ma)o(y)d(request)k(to)e(b)q(e)249 792
y(noti\014ed)e(when)g(another)h(task)f(exits)g(or)g(the)g(virtual)f
(mac)o(hine)g(con\014guration)g(c)o(hanges.)249 861 y
Fr(NUMA)37 b FB(Non-Uniform)12 b(Memory)g(A)n(c)n(c)n(ess)p
FA(,)f(an)f(arc)o(hitecture)j(that)e(do)q(es)g(not)g(supp)q(ort)h
(constan)o(t-)249 915 y(time)j(read)h(and)g(write)g(op)q(erations.)24
b(In)16 b(most)f(NUMA)h(systems,)g(memory)d(is)j(organized)g(hierar-)
249 969 y(c)o(hically)m(,)f(so)g(that)h(some)f(p)q(ortions)h(can)g(b)q
(e)h(read)f(and)g(written)g(more)f(quic)o(kly)g(than)h(others)h(b)o(y)e
(a)249 1023 y(giv)o(en)e(pro)q(cessor.)249 1092 y Fr(pac)o(k)o(et)20
b FA(A)14 b(quan)o(tit)o(y)f(of)g(data)h(sen)o(t)g(o)o(v)o(er)g(the)h
(net)o(w)o(ork.)249 1161 y Fr(pac)o(k)o(et)g(switc)o(hing)j
FA(A)12 b(net)o(w)o(ork)h(in)f(whic)o(h)g(limited-length)e(pac)o(k)o
(ets)j(are)g(routed)g(indep)q(enden)o(tly)249 1215 y(from)f(source)j
(to)f(destination.)k(Net)o(w)o(ork)c(resources)i(are)f(not)e(reserv)o
(ed.)21 b(Compare)12 b(with)i FB(cir)n(cuit)p FA(.)249
1284 y Fr(parallel)f(computer)35 b FA(A)12 b(computer)h(system)f(made)f
(up)i(of)f(man)o(y)e(iden)o(ti\014able)i(pro)q(cessing)i(units)249
1338 y(w)o(orking)19 b(together)i(in)f(parallel.)35 b(The)20
b(term)g(is)g(often)g(used)h(synon)o(ymously)d(with)h(concurren)o(t)249
1392 y(computer)e(to)h(include)g(b)q(oth)f(m)o(ultipro)q(cessor)g(and)h
(m)o(ulticom)o(puter.)28 b(The)18 b(term)f FB(c)n(oncurr)n(ent)g
FA(is)249 1446 y(more)12 b(commonly)d(used)14 b(in)e(the)i(United)f
(States,)g(whereas)h(the)f(term)g FB(p)n(ar)n(al)r(lel)e
FA(is)i(more)f(common)d(in)249 1500 y(Europ)q(e.)249
1569 y Fr(parallel)k(slac)o(kness)35 b FA(Hiding)9 b(the)h(latency)f
(of)g(comm)o(unicati)o(on)e(b)o(y)i(giving)e(eac)o(h)j(pro)q(cessor)h
(man)o(y)249 1623 y(di\013eren)o(t)16 b(tasks,)f(and)g(ha)o(ving)f(the)
i(pro)q(cessors)h(w)o(ork)e(on)g(the)g(tasks)h(that)f(are)g(ready)h
(while)e(other)249 1677 y(tasks)g(are)h(blo)q(c)o(k)o(ed)f(\(w)o
(aiting)e(on)i(comm)o(unicatio)o(n)d(or)j(other)h(op)q(erations\).)249
1746 y Fr(PID)20 b FB(Pr)n(o)n(c)n(ess)15 b(Identi\014er)f
FA(\(in)f(UNIX\))i(that)f(is)f(nativ)o(e)h(to)g(a)f(mac)o(hine)g(or)h
(op)q(erating)f(system.)249 1815 y Fr(p)q(olling)34 b
FA(An)12 b(alternativ)o(e)g(to)g(in)o(terrupting)g(in)g(a)g(comm)o
(unication)d(system.)17 b(A)c(no)q(de)f(insp)q(ects)i(its)249
1869 y(comm)o(unication)c(hardw)o(are)j(\(t)o(ypically)f(a)h(\015ag)f
(bit\))h(to)g(see)h(whether)h(information)10 b(has)j(arriv)o(ed)g(or)
249 1923 y(departed.)249 1992 y Fr(priv)m(ate)i(memory)35
b FA(Memory)15 b(that)h(app)q(ears)h(to)f(the)h(user)g(to)f(b)q(e)g
(divided)g(b)q(et)o(w)o(een)h(man)o(y)d(ad-)249 2046
y(dress)g(spaces,)f(eac)o(h)g(of)e(whic)o(h)i(can)f(b)q(e)h(accessed)h
(b)o(y)e(only)g(one)g(pro)q(cess.)19 b(Most)13 b(op)q(erating)f
(systems)249 2100 y(rely)k(on)g(some)f(memory)e(protection)j(mec)o
(hanism)e(to)i(prev)o(en)o(t)h(one)f(pro)q(cess)h(from)d(accessing)j
(the)249 2154 y(priv)n(ate)c(memory)e(of)i(another;)g(in)g(disjoin)o
(t-memo)o(ry)e(mac)o(hines,)h(the)i(problem)e(is)h(usually)g(\014nding)
249 2208 y(a)h(w)o(a)o(y)f(to)h(em)o(ulate)e(shared)j(memory)c(using)j
(a)g(set)g(of)g(priv)n(ate)f(memories.)249 2277 y Fr(pro)q(cess)20
b FA(An)14 b(address)h(space,)g(I/O)e(state,)i(and)e(one)i(or)e(more)g
(threads)i(of)e(program)g(con)o(trol.)249 2346 y Fr(pro)q(cess)i
(creation)35 b FA(The)15 b(act)h(of)e(forking)g(or)g(spa)o(wning)h(a)f
(new)i(pro)q(cess.)23 b(If)14 b(a)h(system)g(p)q(ermits)249
2400 y(only)e(static)h(pro)q(cess)i(creation,)e(then)g(all)f(pro)q
(cesses)j(are)f(created)g(at)f(the)g(same)f(logical)f(time,)g(and)249
2454 y(no)i(pro)q(cess)i(ma)o(y)c(in)o(teract)j(with)f(an)o(y)f(other)i
(un)o(til)e(all)g(ha)o(v)o(e)h(b)q(een)i(created.)k(If)14
b(a)g(system)g(p)q(ermits)249 2508 y(dynamic)g(pro)q(cess)k(creation,)e
(then)g(one)g(pro)q(cess)i(can)e(create)h(another)f(at)g(an)o(y)f
(time.)22 b(Most)16 b(\014rst)p eop
%%Page: 170 189
170 188 bop 249 251 a Fu(170)1392 b(Glossary)249 507
y FA(and)11 b(second)g(generation)g(m)o(ulticomputers)e(only)g(supp)q
(orted)j(static)f(pro)q(cess)i(creation,)e(while)f(most)249
561 y(m)o(ultipro)q(cessors,)i(and)h(most)e(op)q(erating)i(systems)g
(on)f(unipro)q(cessors,)j(supp)q(ort)e(dynamic)e(pro)q(cess)249
615 y(creation.)249 679 y Fr(pro)q(cess)k(group)35 b
FA(A)14 b(set)h(of)f(pro)q(cesses)j(that)d(can)g(b)q(e)h(treated)g(as)f
(a)g(single)g(en)o(tit)o(y)g(for)g(some)f(pur-)249 733
y(p)q(oses,)j(suc)o(h)h(as)e(sync)o(hronization)g(and)h(broadcast)g(or)
f(m)o(ulticast)f(op)q(erations.)22 b(In)16 b(some)e(parallel)249
787 y(programming)c(systems)k(there)g(is)g(only)f(one)g(pro)q(cess)j
(group,)d(whic)o(h)g(implicitly)d(con)o(tains)k(all)e(pro-)249
841 y(cesses;)i(in)e(others,)g(programmers)e(can)i(assign)f(pro)q
(cesses)j(to)e(groups)g(statically)e(when)i(con\014guring)249
895 y(their)j(program,)e(or)i(dynamically)d(b)o(y)i(ha)o(ving)g(pro)q
(cesses)j(create,)f(join)e(and)h(lea)o(v)o(e)f(groups)h(during)249
949 y(execution.)249 1013 y Fr(pro)q(cess)g(migration)34
b FA(Changing)11 b(the)i(pro)q(cessor)h(resp)q(onsible)f(for)f
(executing)h(a)f(pro)q(cess)i(during)249 1067 y(the)j(lifetime)e(of)h
(that)h(pro)q(cess.)28 b(Pro)q(cess)19 b(migration)14
b(is)i(sometimes)f(used)j(to)e(dynamically)e(load)249
1121 y(balance)g(a)g(program)e(or)i(system.)249 1185
y Fr(p)o(vmd)20 b FB(PVM)f(daemon)p FA(,)h(a)e(pro)q(cess)i(that)f
(serv)o(es)h(as)f(a)f(message)g(router)h(and)g(virtual)e(mac)o(hine)249
1239 y(co)q(ordinator.)h(One)d(PVD)f(daemon)e(runs)j(on)e(eac)o(h)i
(host)f(of)f(a)h(virtual)f(mac)o(hine.)249 1304 y Fr(race)j(condition)h
FA(A)d(situation)f(in)h(whic)o(h)f(the)i(result)f(of)g(op)q(erations)g
(b)q(eing)f(executed)j(b)o(y)e(t)o(w)o(o)f(or)249 1357
y(more)j(pro)q(cesses)j(dep)q(ends)f(on)e(the)h(order)g(in)f(whic)o(h)h
(those)g(pro)q(cesses)i(execute,)f(for)f(example,)e(if)249
1411 y(t)o(w)o(o)e(pro)q(cesses)k Fn(A)d FA(and)g Fn(B)i
FA(are)e(to)g(write)g(di\013eren)o(t)h(v)n(alues)f Fn(V)1218
1417 y Fk(A)1259 1411 y FA(and)g Fn(V)1364 1417 y Fk(B)1406
1411 y FA(to)g(the)g(same)f(v)n(ariable.)249 1476 y Fr(randomized)g
(routing)34 b FA(A)11 b(routing)f(tec)o(hnique)i(in)e(whic)o(h)g(eac)o
(h)h(message)g(is)f(sen)o(t)h(to)g(a)f(randomly)249 1530
y(c)o(hosen)16 b(no)q(de,)g(whic)o(h)f(then)h(forw)o(ards)g(it)f(to)g
(its)g(\014nal)g(destination.)23 b(Theory)15 b(and)h(practice)g(sho)o
(w)249 1584 y(that)e(this)g(can)g(greatly)g(reduce)i(the)e(amoun)o(t)f
(of)g(con)o(ten)o(tion)h(for)g(access)h(to)f(links)g(in)f(a)h(m)o
(ulticom)o(-)249 1638 y(puter.)249 1702 y Fr(resource)g(manager)20
b FA(A)d(sp)q(ecial)g(task)g(that)g(manages)e(other)i(tasks)h(and)e
(the)h(virtual)f(mac)o(hine)249 1756 y(con\014guration.)i(It)c(in)o
(tercepts)h(requests)h(to)e(create/destro)o(y)i(tasks)e(and)g
(add/delete)g(hosts.)249 1820 y Fr(route)19 b FA(The)d(act)f(of)g(mo)o
(ving)e(a)h(message)h(from)f(its)h(source)h(to)g(its)f(destination.)21
b(A)16 b(routing)e(algo-)249 1874 y(rithm)f(is)i(a)f(rule)h(for)f
(deciding,)g(at)h(an)o(y)f(in)o(termediate)g(no)q(de,)h(where)h(to)e
(send)i(a)e(message)g(next;)h(a)249 1928 y(routing)c(tec)o(hnique)i(is)
e(a)h(w)o(a)o(y)e(of)i(handling)e(the)i(message)f(as)h(it)f(passes)i
(through)f(individual)e(no)q(des.)249 1992 y Fr(R)l(TFM)21
b FB(R)n(e)n(ad)16 b(The)e(Fine)i(Manual)249 2056 y Fr(scalable)35
b FA(Capable)15 b(of)f(b)q(eing)h(increased)h(in)e(size;)i(More)f(imp)q
(ortan)o(t,)e(capable)i(of)f(deliv)o(ering)g(an)249 2110
y(increase)h(in)f(p)q(erformance)f(prop)q(ortional)g(to)h(an)g
(increase)h(in)e(size.)249 2174 y Fr(sc)o(hedulin)o(g)34
b FA(Deciding)15 b(the)h(order)h(in)e(whic)o(h)h(the)g(calculations)f
(in)h(a)f(program)f(are)i(to)g(b)q(e)g(exe-)249 2228
y(cuted)f(and)g(b)o(y)f(whic)o(h)g(pro)q(cesses.)22 b(Allo)q(cating)13
b(pro)q(cesses)k(to)d(pro)q(cessors)i(is)e(usually)g(called)g(map-)249
2282 y(ping.)249 2346 y Fr(self-sc)o(hedul)o(i)o(ng)33
b FA(Automatically)11 b(allo)q(cating)g(w)o(ork)i(to)g(pro)q(cesses.)21
b(If)12 b Fn(T)20 b FA(tasks)13 b(are)h(to)f(b)q(e)h(done)249
2400 y(b)o(y)k Fn(P)24 b FA(pro)q(cessors,)d(and)d Fn(P)24
b(<)19 b(T)6 b FA(,)19 b(then)g(they)g(ma)o(y)d(b)q(e)j(self-sc)o
(heduled)h(b)o(y)e(k)o(eeping)g(them)g(in)f(a)249 2454
y(cen)o(tral)g(p)q(o)q(ol)e(from)f(whic)o(h)i(eac)o(h)h(pro)q(cessor)g
(claims)e(a)g(new)i(job)e(when)i(it)e(\014nishes)i(executing)g(its)249
2508 y(old)c(one.)p eop
%%Page: 171 190
171 189 bop 249 251 a Fu(Glossary)1393 b(171)249 507
y Fr(semaphore)35 b FA(A)15 b(data)f(t)o(yp)q(e)h(for)f(con)o(trolling)
f(concurrency)m(.)22 b(A)15 b(semaphore)f(is)h(initialized)e(to)h(an)
249 561 y(in)o(teger)i(v)n(alue.)21 b(Tw)o(o)15 b(op)q(erations)g(ma)o
(y)e(b)q(e)j(applied)f(to)g(it:)20 b FB(signal)15 b FA(incremen)o(ts)h
(the)f(semaphore's)249 615 y(v)n(alue)e(b)o(y)h(one,)g(and)g
FB(wait)f FA(blo)q(c)o(ks)h(its)g(caller)g(un)o(til)f(the)i
(semaphore's)e(v)n(alue)h(is)g(greater)h(than)f(zero,)249
669 y(then)i(decremen)o(ts)h(the)g(semaphore.)23 b(A)16
b(binary)f(semaphore)g(is)h(one)g(that)f(can)h(only)f(tak)o(e)h(on)f
(the)249 723 y(v)n(alues)c(0)h(and)f(1.)17 b(An)o(y)11
b(other)i(sync)o(hronization)e(primitiv)o(e)e(can)j(b)q(e)g(built)f(in)
g(terms)g(of)g(semaphores.)249 788 y Fr(sequen)o(tial)i(b)q(ottlenec)o
(k)34 b FA(A)15 b(part)g(of)f(a)h(computation)e(for)i(whic)o(h)g(there)
h(is)f(little)f(or)h(no)g(paral-)249 842 y(lelism.)249
907 y Fr(sequen)o(tial)e(computer)34 b FA(Synon)o(ymous)15
b(with)h(a)g(V)m(on)f(Neumann)g(computer,)h(that)g(is,)g(a)g(\\con-)249
961 y(v)o(en)o(tional")10 b(computer)i(in)f(whic)o(h)h(only)f(one)h
(pro)q(cessing)h(elemen)o(t)e(w)o(orks)h(on)g(a)f(problem)f(at)i(a)g
(giv)o(en)249 1015 y(time.)249 1081 y Fr(shared)j(memory)20
b FA(Real)15 b(or)i(virtual)f(memory)e(that)i(app)q(ears)i(to)e(users)i
(to)e(constitute)i(a)e(single)249 1135 y(address)f(space,)g(but)f(whic)
o(h)g(is)g(actually)f(ph)o(ysically)g(disjoin)o(t.)18
b(Virtual)13 b(shared)i(memory)d(is)i(often)249 1188
y(implemen)o(ted)8 b(using)i(some)f(com)o(bination)f(of)i(hashing)g
(and)g(lo)q(cal)f(cac)o(hing.)17 b(Memory)9 b(that)h(app)q(ears)249
1242 y(to)16 b(the)h(user)h(to)e(b)q(e)h(con)o(tained)f(in)g(a)g
(single)g(address)h(space)h(and)e(that)g(can)h(b)q(e)g(accessed)h(b)o
(y)f(an)o(y)249 1296 y(pro)q(cess.)23 b(In)15 b(a)f(unipro)q(cessor)j
(or)d(m)o(ultipro)q(cessor)h(there)h(is)f(t)o(ypically)e(a)i(single)f
(memory)f(unit,)h(or)249 1350 y(sev)o(eral)g(memory)e(units)i(in)o
(terlea)o(v)o(ed)g(to)g(giv)o(e)f(the)h(app)q(earance)h(of)f(a)f
(single)h(memory)d(unit.)249 1416 y Fr(shared)k(v)m(ariables)35
b FA(V)m(ariables)12 b(to)h(whic)o(h)f(t)o(w)o(o)h(or)f(more)g(pro)q
(cesses)k(ha)o(v)o(e)d(access,)h(or)f(a)f(mo)q(del)g(of)249
1469 y(parallel)i(computing)g(in)i(whic)o(h)f(in)o(terpro)q(cess)j
(comm)o(unicatio)o(n)13 b(and)i(sync)o(hronization)h(are)g(man-)249
1523 y(aged)e(through)g(suc)o(h)g(v)n(ariables.)249 1589
y Fr(signal)249 1654 y(SIMD)36 b FB(Single-Instruction)19
b(Multiple-Data)p FA(,)g(a)f(category)g(of)g(Flynn's)g(taxonom)o(y)e
(in)h(whic)o(h)h(a)249 1708 y(single)12 b(instruction)g(stream)f(is)h
(concurren)o(tly)h(applied)e(to)h(m)o(ultiple)e(data)h(sets.)19
b(A)12 b(SIMD)f(arc)o(hitec-)249 1762 y(ture)i(is)f(one)h(in)e(whic)o
(h)h(homogeneous)g(pro)q(cesses)j(sync)o(hronously)d(execute)i(the)f
(same)e(instructions)249 1816 y(on)k(their)g(o)o(wn)g(data,)f(or)h(one)
g(in)g(whic)o(h)g(an)g(op)q(eration)g(can)g(b)q(e)g(executed)i(on)e(v)o
(ectors)h(of)f(\014xed)g(or)249 1870 y(v)n(arying)e(size.)249
1935 y Fr(so)q(c)o(k)o(et)20 b FA(An)d(endp)q(oin)o(t)g(for)f(net)o(w)o
(ork)h(comm)o(unication.)24 b(F)m(or)16 b(example,)g(on)h(a)f(Unix)h
(mac)o(hine,)e(a)249 1989 y(TCP/IP)f(connection)h(ma)o(y)e(terminate)g
(in)h(a)g(so)q(c)o(k)o(et,)g(whic)o(h)g(can)h(b)q(e)g(read)f(or)g
(written)h(through)f(a)249 2043 y(\014le)g(descriptor.)249
2108 y Fr(space)i(sharing)34 b FA(Dividing)10 b(the)i(resources)i(of)e
(a)f(parallel)g(computer)g(among)f(man)o(y)f(programs)i(so)249
2162 y(they)j(can)h(run)f(sim)o(ultaneously)e(without)h(a\013ecting)h
(one)g(another's)h(p)q(erformance.)249 2227 y Fr(spanning)e(tree)36
b FA(A)14 b(tree)g(con)o(taining)f(a)g(subset)i(of)e(the)h(edges)h(in)e
(a)g(graph)g(and)h(including)e(ev)o(ery)249 2281 y(no)q(de)17
b(in)e(that)h(graph.)25 b(A)16 b(spanning)g(tree)h(can)g(alw)o(a)o(ys)e
(b)q(e)i(constructed)h(so)e(that)g(its)g(depth)h(\(the)249
2335 y(greatest)g(distance)f(b)q(et)o(w)o(een)h(its)f(ro)q(ot)g(and)f
(an)o(y)g(leaf)s(\))g(is)h(no)f(greater)i(than)e(the)i(diameter)d(of)h
(the)249 2389 y(graph.)j(Spanning)13 b(trees)j(are)e(frequen)o(tly)g
(used)h(to)f(implem)o(en)o(t)e(broadcast)i(op)q(erations.)249
2454 y Fr(spa)o(wn)20 b FA(T)m(o)13 b(create)i(a)e(new)h(pro)q(cess)h
(or)f(PVM)g(task,)f(p)q(ossibly)g(di\013eren)o(t)i(from)c(the)j(paren)o
(t.)19 b(Com-)249 2508 y(pare)14 b(with)g(fork.)p eop
%%Page: 172 191
172 190 bop 249 251 a Fu(172)1392 b(Glossary)249 507
y Fr(sp)q(eedup)35 b FA(The)14 b(ratio)g(of)g(t)o(w)o(o)g(program)e
(execution)j(times,)e(particularly)h(when)h(times)e(are)i(from)249
561 y(execution)j(on)e(1)h(and)f(P)h(no)q(des)h(of)e(the)i(same)e
(computer.)26 b(Sp)q(eedup)18 b(is)f(usually)f(discussed)i(as)f(a)249
615 y(function)e(of)g(the)h(n)o(um)o(b)q(er)f(of)g(pro)q(cessors,)i
(but)f(is)f(also)g(a)g(function)g(\(implicitly\))e(of)h(the)i(problem)
249 669 y(size.)249 734 y Fr(SPMD)36 b FB(Single-Pr)n(o)n(gr)n(am)15
b(Multiple-Data)p FA(,)g(a)g(category)g(sometimes)f(added)h(to)g
(Flynn's)g(taxon-)249 788 y(om)o(y)f(to)h(describ)q(e)j(programs)c
(made)h(up)g(of)g(man)o(y)f(instances)j(of)e(a)g(single)h(t)o(yp)q(e)g
(of)f(pro)q(cess,)j(eac)o(h)249 842 y(executing)d(the)g(same)f(co)q(de)
h(indep)q(enden)o(tly)m(.)20 b(SPMD)15 b(can)g(b)q(e)g(view)o(ed)f
(either)i(as)e(an)g(extension)i(of)249 896 y(SIMD)e(or)g(as)g(a)f
(restriction)i(of)e(MIMD.)249 961 y Fr(startup)h(cost)36
b FA(The)12 b(time)f(tak)o(en)g(to)h(initiate)f(an)o(y)g(transaction)h
(with)g(some)e(en)o(tit)o(y)m(.)17 b(The)12 b(startup)249
1015 y(cost)k(of)e(a)g(message-passing)h(system,)f(for)h(example,)e(is)
i(the)g(time)f(needed)i(to)f(send)h(a)e(message)h(of)249
1069 y(zero)g(length)f(to)f(no)o(where.)249 1135 y Fr(sup)q(ercomputer)
33 b FA(A)12 b(time-dep)q(enden)o(t)h(term)e(that)h(refers)h(to)f(the)h
(class)f(of)f(most)g(p)q(o)o(w)o(erful)g(com-)249 1188
y(puter)k(systems)f(w)o(orldwide)f(at)h(the)g(time)f(of)g(reference.)
249 1254 y Fr(switc)o(h)35 b FA(A)17 b(ph)o(ysical)g(comm)o(unication)d
(medium)g(con)o(taining)i(no)q(des)i(that)f(p)q(erform)f(only)g(com-)
249 1308 y(m)o(unications)11 b(functions.)18 b(Examples)11
b(include)i(crossbar)h(switc)o(hes,)g(in)e(whic)o(h)g
Fn(N)g FA(+)7 b Fn(M)18 b FA(buses)c(cross)249 1362 y(orthogonally)e
(at)i Fn(N)5 b(M)18 b FA(switc)o(hing)c(p)q(oin)o(ts)f(to)h(connect)h
Fn(N)k FA(ob)r(jects)c(of)e(one)h(t)o(yp)q(e)g(to)g Fn(M)19
b FA(ob)r(jects)c(of)249 1416 y(another,)i(and)e(m)o(ultistage)g(switc)
o(hes)i(in)e(whic)o(h)h(sev)o(eral)h(la)o(y)o(ers)f(of)f(switc)o(hing)h
(no)q(des)h(connect)g Fn(N)249 1469 y FA(ob)r(jects)e(of)e(one)i(t)o
(yp)q(e)f(to)g Fn(N)k FA(ob)r(jects)d(of)f(another)g(t)o(yp)q(e.)249
1535 y Fr(sync)o(hronizatio)o(n)34 b FA(The)15 b(act)g(of)f(bringing)g
(t)o(w)o(o)g(or)h(more)f(pro)q(cesses)j(to)e(kno)o(wn)g(p)q(oin)o(ts)f
(in)h(their)249 1589 y(execution)h(at)e(the)i(same)e(clo)q(c)o(k)h
(time.)k(Explicit)c(sync)o(hronization)f(is)h(not)g(needed)h(in)f(SIMD)
f(pro-)249 1643 y(grams)i(\(in)h(whic)o(h)h(ev)o(ery)g(pro)q(cessor)h
(either)g(executes)g(the)f(same)f(op)q(eration)g(as)h(ev)o(ery)g(other)
g(or)249 1697 y(do)q(es)e(nothing\))f(but)h(is)f(often)g(necessary)j
(in)d(SPMD)g(and)g(MIMD)g(programs.)22 b(The)15 b(time)f(w)o(asted)249
1751 y(b)o(y)e(pro)q(cesses)k(w)o(aiting)11 b(for)h(other)h(pro)q
(cesses)i(to)e(sync)o(hronize)h(with)e(them)g(can)g(b)q(e)i(a)e(ma)r
(jor)f(source)249 1804 y(of)i(ine\016ciency)i(in)e(parallel)g
(programs.)249 1870 y Fr(sync)o(hronous)34 b FA(Occurring)11
b(at)f(the)g(same)f(clo)q(c)o(k)h(time.)15 b(F)m(or)10
b(example,)e(if)h(a)h(comm)o(unication)c(ev)o(en)o(t)249
1924 y(is)17 b(sync)o(hronous,)g(then)h(there)f(is)g(some)f(momen)o(t)e
(at)i(whic)o(h)h(b)q(oth)f(the)i(sender)g(and)e(the)h(receiv)o(er)249
1978 y(are)d(engaged)g(in)g(the)g(op)q(eration.)249 2043
y Fr(task)21 b FA(The)15 b(smallest)f(comp)q(onen)o(t)g(of)h(a)g
(program)e(addressable)j(in)f(PVM.)g(A)g(task)h(is)f(generally)f(a)249
2097 y(nativ)o(e)g(\\pro)q(cess")h(to)f(the)g(mac)o(hine)f(on)g(whic)o
(h)h(it)g(runs.)249 2162 y Fr(task)o(er)20 b FA(A)c(sp)q(ecial)h(task)g
(that)f(manages)f(other)j(tasks)f(on)f(the)h(same)f(host.)26
b(It)16 b(is)h(the)g(paren)o(t)g(of)249 2216 y(the)c(target)g(tasks,)g
(allo)o(wing)e(it)h(to)g(manipulate)f(them)h(\(e.g.,)g(for)g(debugging)
g(or)g(other)i(instrumen-)249 2270 y(tation\).)249 2335
y Fr(TCP)21 b FB(T)m(r)n(ansmission)e(Contr)n(ol)f(Pr)n(oto)n(c)n(ol)p
FA(,)g(a)h(reliable)f(host-host)g(stream)g(proto)q(col)h(for)f(pac)o(k)
o(et-)249 2389 y(switc)o(hed)d(in)o(terconnected)h(net)o(w)o(orks)e
(suc)o(h)h(as)f(IP)m(.)249 2454 y Fr(thread)19 b FA(A)c(thread)g(of)g
(program)e(con)o(trol)h(sharing)h(resources)i(\(memory)m(,)12
b(I/O)i(state\))i(with)e(other)249 2508 y(threads.)19
b(A)14 b(ligh)o(t)o(w)o(eigh)o(t)e(pro)q(cess.)p eop
%%Page: 173 192
173 191 bop 249 251 a Fu(Glossary)1393 b(173)249 507
y Fr(TID)21 b FB(T)m(ask)14 b(Identi\014er)p FA(,)g(an)g(address)h
(used)f(in)g(PVM)g(for)g(tasks,)g(p)o(vmds,)e(and)i(m)o(ulticast)e
(groups.)249 575 y Fr(time)i(sharing)35 b FA(Sharing)15
b(a)g(pro)q(cessor)j(among)13 b(m)o(ultiple)g(programs.)22
b(Time)14 b(sharing)h(attempts)249 629 y(to)d(b)q(etter)h(utilize)e(a)h
(CPU)g(b)o(y)f(o)o(v)o(erlapping)g(I/O)g(in)h(one)f(program)g(with)g
(computation)f(in)h(another.)249 697 y Fr(trace)16 b(sc)o(heduli)o(ng)h
FA(A)j(compiler)e(optimization)f(tec)o(hnique)j(that)g(v)o(ectorizes)h
(the)f(most)e(lik)o(ely)249 751 y(path)c(through)h(a)f(program)f(as)h
(if)g(it)g(w)o(ere)h(a)f(single)g(basic)h(blo)q(c)o(k,)e(includes)i
(extra)g(instructions)g(at)249 805 y(eac)o(h)i(branc)o(h)h(to)e(undo)h
(an)o(y)f(ill)g(e\013ects)i(of)f(ha)o(ving)e(made)h(a)g(wrong)h(guess,)
h(v)o(ectorizes)g(the)g(next)249 859 y(most)13 b(lik)o(ely)f(branc)o
(hes,)j(and)f(so)g(on.)249 927 y Fr(top)q(ology)35 b
FA(the)15 b(con\014guration)f(of)g(the)h(pro)q(cessors)i(in)d(a)g(m)o
(ulticom)o(puter)f(and)h(the)h(circuits)g(in)f(a)249
981 y(switc)o(h.)k(Among)11 b(the)j(most)e(common)e(top)q(ologies)j
(are)g(the)h(mesh,)e(the)i(h)o(yp)q(ercub)q(e,)g(the)g(butter\015y)m(,)
249 1034 y(the)h(torus,)f(and)f(the)i(sh)o(u\017e)f(exc)o(hange)h(net)o
(w)o(ork.)249 1102 y Fr(tuple)34 b FA(An)13 b(ordered)h(sequence)g(of)e
(\014xed)h(length)f(of)g(v)n(alues)g(of)g(arbitrary)g(t)o(yp)q(es.)19
b(T)m(uples)12 b(are)h(used)249 1156 y(for)h(b)q(oth)g(data)g(storage)g
(and)g(in)o(terpro)q(cess)i(comm)o(unication)11 b(in)i(the)i(generativ)
o(e)g(comm)o(uni)o(cation)249 1210 y(paradigm.)249 1278
y Fr(tuple)f(space)36 b FA(A)20 b(rep)q(ository)h(for)f(tuples)g(in)g
(a)g(generativ)o(e)g(comm)o(unication)d(system.)36 b(T)m(uple)249
1332 y(space)15 b(is)f(an)f(asso)q(ciativ)o(e)h(memory)m(.)249
1400 y Fr(UDP)20 b FA(User)d(Datagram)c(Proto)q(col,)i(a)h(simple)e
(proto)q(col)h(allo)o(wing)e(datagrams)h(\(blo)q(c)o(ks)i(of)f(data\))
249 1454 y(to)g(b)q(e)h(sen)o(t)f(b)q(et)o(w)o(een)i(hosts)e(in)o
(terconnected)i(b)o(y)e(net)o(w)o(orks)h(suc)o(h)g(as)f(IP)m(.)f(UDP)h
(can)g(duplicate)g(or)249 1508 y(lose)f(messages,)g(and)f(imp)q(oses)g
(a)h(length)g(limit)d(of)i(64)h(kb)o(ytes.)249 1575 y
Fr(unipro)q(cessor)34 b FA(A)17 b(computer)g(con)o(taining)f(a)g
(single)h(pro)q(cessor.)29 b(The)18 b(term)e(is)h(generally)g(syn-)249
1629 y(on)o(ymous)12 b(with)i(scalar)g(pro)q(cessor.)249
1697 y Fr(virtual)g(c)o(hannel)34 b FA(A)20 b(logical)f(p)q(oin)o
(t-to-p)q(oin)o(t)g(connection)i(b)q(et)o(w)o(een)h(t)o(w)o(o)e(pro)q
(cesses.)39 b(Man)o(y)249 1751 y(virtual)13 b(c)o(hannels)i(ma)o(y)c
(time)i(share)i(a)e(single)h(link)f(to)g(hide)h(latency)h(and)e(to)h(a)
o(v)o(oid)f(deadlo)q(c)o(k.)249 1819 y Fr(virtual)h(concurren)o(t)f
(computer)35 b FA(A)14 b(computer)g(system)g(that)g(is)g(programmed)e
(as)i(a)g(concur-)249 1873 y(ren)o(t)20 b(computer)f(of)g(some)f(n)o
(um)o(b)q(er)g(of)h(no)q(des)h Fn(P)k FA(but)c(that)f(is)g(implemen)o
(ted)e(either)j(on)f(a)g(real)249 1927 y(concurren)o(t)d(computer)d(of)
g(some)g(n)o(um)o(b)q(er)g(of)g(no)q(des)i(less)f(than)g(P)g(or)f(on)h
(a)f(unipro)q(cessor)i(running)249 1981 y(soft)o(w)o(are)d(to)f(em)o
(ulate)f(the)i(en)o(vironmen)o(t)f(of)g(a)g(concurren)o(t)i(mac)o
(hine.)j(Suc)o(h)c(an)f(em)o(ulation)e(system)249 2035
y(is)14 b(said)f(to)h(pro)o(vide)g(virtual)f(no)q(des)i(to)e(the)i
(user.)249 2103 y Fr(virtual)f(cut-through)33 b FA(A)15
b(tec)o(hnique)h(for)f(routing)f(messages)h(in)f(whic)o(h)h(the)h(head)
f(and)g(tail)f(of)249 2157 y(the)f(message)g(b)q(oth)g(pro)q(ceed)h(as)
f(rapidly)e(as)i(they)g(can.)18 b(If)12 b(the)i(head)f(is)f(blo)q(c)o
(k)o(ed)h(b)q(ecause)h(a)f(link)e(it)249 2211 y(w)o(an)o(ts)k(to)g
(cross)h(is)f(b)q(eing)g(used)h(b)o(y)f(some)f(other)i(message,)f(the)h
(tail)e(con)o(tin)o(ues)h(to)g(adv)n(ance,)g(and)249
2265 y(the)g(message's)e(con)o(ten)o(ts)i(are)f(put)g(in)o(to)g
(bu\013ers)h(on)f(in)o(termediate)f(no)q(des.)249 2332
y Fr(virtual)h(mac)o(hine)k FA(A)e(m)o(ulticom)o(puter)e(comp)q(osed)h
(of)f(separate)j(\(p)q(ossibly)e(self-complete\))g(ma-)249
2386 y(c)o(hines)g(and)e(a)h FB(softwar)n(e)g(b)n(ackplane)h
FA(to)e(co)q(ordinate)h(op)q(eration.)249 2454 y Fr(virtual)g(memory)35
b FA(Con\014guration)15 b(in)h(whic)o(h)f(p)q(ortions)h(of)f(the)i
(address)g(space)g(are)f(k)o(ept)g(on)f(a)249 2508 y(secondary)h
(medium,)11 b(suc)o(h)16 b(as)f(a)f(disk)g(or)h(auxiliary)e(memory)m(.)
k(When)e(a)g(reference)i(is)d(made)g(to)g(a)p eop
%%Page: 174 193
174 192 bop 249 251 a Fu(174)1392 b(Glossary)249 507
y FA(lo)q(cation)15 b(not)h(residen)o(t)i(in)e(main)e(memory)m(,)f(the)
k(virtual)e(memory)f(manager)h(loads)g(the)i(lo)q(cation)249
561 y(from)g(secondary)j(storage)f(b)q(efore)g(the)h(access)g
(completes.)32 b(If)19 b(no)f(space)i(is)e(a)o(v)n(ailable)f(in)h(main)
249 615 y(memory)m(,)9 b(data)i(is)h(written)g(to)g(secondary)h
(storage)f(to)f(mak)o(e)g(some)g(a)o(v)n(ailable.)k(Virtual)c(memory)e
(is)249 669 y(used)15 b(b)o(y)f(almost)e(all)g(unipro)q(cessors)k(and)e
(m)o(ultipro)q(cessors)g(to)g(increase)h(apparen)o(t)f(memory)e(size,)
249 723 y(but)i(is)g(not)g(a)o(v)n(ailable)d(on)j(some)f(arra)o(y)h
(pro)q(cessors)i(and)d(m)o(ulticomputers.)249 794 y Fr(virtual)h
(shared)g(memory)36 b FA(Memory)11 b(that)i(app)q(ears)g(to)g(users)h
(to)e(constitute)h(a)g(single)f(address)249 848 y(space,)19
b(but)f(that)g(is)f(actually)g(ph)o(ysically)f(disjoin)o(t.)28
b(Virtual)17 b(shared)i(memory)c(is)i(often)h(imple-)249
902 y(men)o(ted)c(using)f(some)g(com)o(bination)f(of)h(hashing)g(and)h
(lo)q(cal)f(cac)o(hing.)249 972 y Fr(V)l(on)i(Neumann)g(arc)o
(hitecture)34 b FA(An)o(y)20 b(computer)h(that)f(do)q(es)i(not)e(emplo)
o(y)f(concurrency)k(or)249 1026 y(parallelism.)31 b(Named)18
b(after)h(John)g(V)m(on)f(Neumann)g(\(1903{1957\),)g(who)h(is)g
(credited)h(with)e(the)249 1080 y(in)o(v)o(en)o(tion)13
b(of)g(the)i(basic)f(arc)o(hitecture)h(of)f(curren)o(t)h(sequen)o(tial)
f(computers.)249 1151 y Fr(w)o(ait)h(con)o(text)k FA(A)c(data)f
(structure)i(used)g(in)e(the)h(p)o(vmd)e(to)h(hold)g(state)h(when)g(a)f
(thread)h(of)f(op)q(er-)249 1205 y(ation)f(m)o(ust)g(b)q(e)i(susp)q
(ended,)g(for)f(example,)e(when)i(calling)e(a)i(p)o(vmd)e(on)i(another)
g(host.)249 1275 y Fr(w)o(orking)h(set)35 b FA(Those)15
b(v)n(alues)f(from)e(shared)j(memory)c(that)j(a)g(pro)q(cess)i(has)e
(copied)g(in)o(to)f(its)h(pri-)249 1329 y(v)n(ate)k(memory)m(,)f(or)h
(those)h(pages)g(of)f(virtual)g(memory)e(b)q(eing)i(used)h(b)o(y)g(a)f
(pro)q(cess.)33 b(Changes)19 b(a)249 1383 y(pro)q(cess)e(mak)o(es)d(to)
g(the)i(v)n(alues)f(in)f(its)h(w)o(orking)f(set)i(are)f(not)g
(automatically)d(seen)k(b)o(y)f(other)g(pro-)249 1437
y(cesses.)249 1508 y Fr(XDR)20 b FB(eXternal)f(Data)h(R)n(epr)n
(esentation)g FA(An)f(In)o(ternet)h(standard)f(data)g(enco)q(ding)g
(\(essen)o(tially)249 1562 y(just)c(big-endian)f(in)o(tegers)i(and)f
(IEEE)g(format)e(\015oating)h(p)q(oin)o(t)g(n)o(um)o(b)q(ers\).)21
b(PVM)15 b(con)o(v)o(erts)h(data)249 1616 y(to)10 b(XDR)g(format)f(to)i
(allo)o(w)d(comm)o(unication)g(b)q(et)o(w)o(een)k(hosts)f(with)f
(di\013eren)o(t)i(nativ)o(e)e(data)g(formats.)p eop
%%Page: 175 194
175 193 bop 249 331 a Fp(A)25 b FD(History)17 b(of)g(PVM)g(V)l(ersions)
249 561 y FA(This)f(app)q(endix)g(con)o(tains)h(a)e(list)h(of)g(all)f
(the)i(v)o(ersions)f(of)g(PVM)h(that)f(ha)o(v)o(e)g(b)q(een)h(released)
h(from)249 615 y(the)13 b(\014rst)h(one)f(in)f(F)m(ebruary)h(1991)e
(through)i(August)g(1994.)k(Along)12 b(with)g(eac)o(h)h(v)o(ersion)g(w)
o(e)g(include)249 669 y(a)f(brief)g(synopsis)h(of)e(the)i(impro)o(v)o
(emen)o(ts)d(made)h(in)h(this)g(v)o(ersion.)17 b(Although)12
b(not)g(listed)g(here,)i(new)249 723 y(p)q(orts)i(w)o(ere)g(b)q(eing)e
(added)i(to)e(PVM)i(with)e(eac)o(h)i(release.)22 b(PVM)15
b(con)o(tin)o(ues)h(to)f(ev)o(olv)o(e)f(driv)o(en)h(b)o(y)249
777 y(new)d(tec)o(hnology)g(and)f(user)i(feedbac)o(k.)18
b(New)o(er)13 b(v)o(ersions)f(of)f(PVM)i(b)q(ey)o(ond)f(those)g(listed)
g(here)h(ma)o(y)249 831 y(exist)h(at)g(the)h(time)d(of)h(reading.)18
b(The)d(latest)f(v)o(ersion)g(can)g(alw)o(a)o(ys)f(b)q(e)h(found)g(on)f
FB(netlib)p FA(.)249 981 y Fs(PVM)21 b(1.0)43 b(\(never)21
b(released\))336 1034 y(any)g(of)h(the)f(several)f(initial)h
(experimental)e(PVM)i(versions)336 1088 y(used)g(to)h(study)e
(heterogeneous)f(distributed)h(computing)g(issues.)249
1196 y(PVM)h(2.0)43 b(\(Feb.)21 b(1991\))336 1250 y(+)h(Complete)e
(rewrite)g(of)i(in-house)e(experimental)f(PVM)i(software)f(\(v1.0\),)
336 1304 y(+)i(cleaned)e(up)i(the)f(specification)e(and)i
(implementation)380 1358 y(to)g(improve)g(robustness)e(and)i
(portablility.)249 1466 y(PVM)g(2.1)43 b(\(Mar.)21 b(1991\))336
1520 y(+)h(process-process)d(messages)h(switched)g(to)h(XDR)380
1574 y(to)g(improve)g(protability)e(of)i(source)g(in)g(heterogeneous)e
(environments.)336 1628 y(+)j(Simple)e(console)h(interpreter)e(added)i
(to)g(master)g(pvmd.)249 1736 y(PVM)g(2.2)43 b(\(April)21
b(1991\))336 1790 y(+)h(pvmd-pvmd)e(message)g(format)h(switched)f(to)h
(XDR.)336 1844 y(+)h(Get)f(and)g(put)g(functions)f(vectorized)g(to)h
(improve)g(performance.)336 1898 y(+)h(broadcast)e(function)g(-->)h
(deprecated)249 2006 y(PVM)g(2.3.2)43 b(\(June)21 b(1991\))336
2060 y(+)h(improved)e(password-less)f(startup)h(via)i(rsh/rcmd)336
2114 y(+)g(added)f(per-host)f(options)g(to)h(hostfile)g(format:)423
2168 y(ask)h(for)f(password)423 2222 y(specify)g(alternate)f(loginname)
423 2276 y(specify)h(alternate)f(pvmd)h(executable)e(location)336
2330 y(+)j(pvmd-pvmd)e(protocol)g(version)g(checked)h(to)g(prevent)f
(mixed)h(versions)380 2384 y(interoperating.)336 2438
y(+)h(added)f(support)f(for)h(short)g(and)g(long)g(integers)f(in)i
(messages.)336 2492 y(+)g(added)f('reset')f(pvmd)h(command)f(to)i
(reset)e(the)i(vm.)p eop
%%Page: 176 195
176 194 bop 249 251 a Fu(176)1320 b(App)q(endix)14 b(A)336
507 y Fs(+)22 b(can)f(specify)f(".")i(as)f(host)g(to)g(initiateM\(\))f
(to)h(create)g(on)g(localhost)249 615 y(PVM)g(2.3.3)43
b(\(July)21 b(1991\))336 669 y(+)h(added)f('barr')f(command)g(to)i
(check)f(barrier/ready)e(status)336 723 y(+)j(pstatus\(\))e(libpvm)g
(call)h(added)g(to)g(return)g(size)g(of)g(virtual)g(machine)249
831 y(PVM)g(2.3.4)43 b(\(Oct.)21 b(1991\))336 885 y(+)h(pvmds)f
(negotiate)f(maximum)g(UDP)h(message)f(length)h(at)g(startup.)336
939 y(+)h(removed)e(static)h(limitation)e(on)j(number)e(of)i(hosts)f
(\(used)f(to)i(be)f(40\).)249 1047 y(PVM)g(2.4.0)43 b(\(Feb.)21
b(1992\))336 1101 y(+)h(added)f(direct-connect)d(TCP)k(message)e
(transfer)g(available)g(through)380 1155 y(vsnd\(\))g(and)i(vrcv\(\))e
(to)h(improve)g(communication)e(performance.)336 1209
y(+)j(added)f(option)f(to)i(specify)e(user)h(executable)f(path)h(on)g
(each)g(host.)336 1263 y(+)h(version)e(check)h(added)g(between)f(pvmd)h
(and)g(libpvm)g(to)g(prevent)f(running)380 1317 y(incompatible)f
(versions.)336 1371 y(+)j(libpvm)e(automatically)f(prints)i(error)g
(messages.)336 1425 y(+)h(libpvm)e(error)h(codes)g(standardized)e(and)i
(exported)g(in)g("pvmuser.h".)336 1479 y(+)h(includes)e(instrumented)f
(heap)i(to)h(aid)f(system)f(debugging.)336 1533 y(+)i(host)f(file)g
(default)f(parameters)g(can)h(be)g(set)h(with)f('*'.)336
1587 y(+)h(libpvm)e(returns)h(error)f(code)h(instead)g(of)g(exiting)g
(in)g(case)380 1641 y(of)g(fatal)g(error.)249 1748 y(PVM)g(2.4.1)43
b(\(June)21 b(1992\))336 1802 y(+)h(added)f(new)g(ports)g(and)g(bug)g
(fixes)249 1910 y(PVM)g(2.4.2)43 b(\(Dec.)21 b(1992\))336
1964 y(+)h(pvmuser.h)e(made)h(compatible)e(with)i(C++.)336
2018 y(+)h(can)f(force)g(messages)f(to)h(be)h(packed)e(in)i(raw)f(data)
g(format)f(to)i(avoid)e(XDR.)336 2072 y(+)i(rcv\(\))f(will)g(return)f
(BadMsg)h(if)g(message)f(can't)h(be)h(decoded.)249 2180
y(PVM)f(3.0)43 b(\(Feb.)21 b(1993\))336 2234 y(Complete)f(redesign)h
(of)g(PVM)g(software)f(both)h(the)g(user)g(interface)f(and)336
2288 y(the)h(implementation)e(in)j(order)e(to:)336 2342
y(+)i(allow)f(scalability)e(to)i(hundreds)g(of)g(hosts.)336
2396 y(+)h(allow)f(portability)e(to)i(multiprocessors)e(/)j(operating)e
(systems)380 2450 y(other)h(than)g(Unix.)336 2504 y(+)h(allows)e
(dynamic)h(reconfiguration)d(of)k(the)f(virtual)f(machine,)p
eop
%%Page: 177 196
177 195 bop 249 251 a Fu(History)14 b(of)f(PVM)g(V)m(ersions)1114
b(177)336 507 y Fs(+)22 b(allows)e(fault)h(tolerance)336
561 y(+)h(allows)e(asynchronous)g(task)h(notification)e(-)j(task)f
(exit,)380 615 y(machine)f(reconfiguration.)336 669 y(+)i(includes)e
(dynamic)g(process)h(groups,)336 723 y(+)h(separate)e(PVM)h(console)f
(task.)249 885 y(PVM)h(3.1)43 b(\(April)21 b(1993\))336
939 y(+)h(added)f(task-task)f(direct)g(routing)g(via)i(TCP)380
993 y(using)f(normal)f(send)h(and)g(receive)g(calls.)249
1101 y(PVM)g(3.1.1)43 b(\(May)21 b(1993\))42 b(Five)21
b(bug)g(fix)h(patches)e(released)g(for)h(PVM)g(3.1)249
1155 y(PVM)g(3.1.2)43 b(\(May)21 b(1993\))249 1209 y(PVM)g(3.1.3)43
b(\(June)21 b(1993\))249 1263 y(PVM)g(3.1.4)43 b(\(July)21
b(1993\))249 1317 y(PVM)g(3.1.5)43 b(\(Aug.)21 b(1993\))249
1425 y(PVM)g(3.2)43 b(\(Aug.)21 b(1993\))336 1479 y(+)h(distributed)d
(memory)i(ports)g(merged)f(with)h(Unix)g(port)g(source.)380
1533 y(Ports)g(include)f(I860,)h(PGON,)f(CM5.)336 1641
y(+)i(conf/ARCH.def)d(files)i(created)f(for)h(per-machine)f
(configuration)380 1694 y(to)h(improve)g(source)f(portability)g(and)h
(package)f(size.)336 1802 y(+)i(pvmd)f(adds)g(new)g(slave)g(hosts)f(in)
i(parallel)e(to)h(improve)g(performance.)336 1910 y(+)h(stdout)e(and)i
(stderr)e(from)h(tasks)g(can)g(be)g(redirected)f(to)h(a)h
(task/console.)336 2018 y(+)g(option)e(OVERLOADHOST)g(allows)g(virtual)
h(machines)f(running)g(under)h(the)380 2072 y(same)g(login)g(to)g
(overlap)f(i.e.)h(user)g(can)g(have)g(multiple)f(overlapping)g(vm.)336
2180 y(+)i(new)f(printf-like)f(pack)g(and)i(unpack)e(routines)g
(pvm_packf\(\))g(and)380 2234 y(pvm_unpackf\(\))f(available)h(to)h(C)h
(and)f(C++)g(programmers.)336 2342 y(+)h(added)f(pack,)f(unpack)h
(routines)f(for)h(unsigned)f(integers.)336 2450 y(+)i(environment)d
(passed)i(through)f(spawn\(\),)g(controlled)g(by)380
2504 y(variable)g(PVM_EXPORT.)p eop
%%Page: 178 197
178 196 bop 249 251 a Fu(178)1320 b(App)q(endix)14 b(A)336
561 y Fs(+)22 b(many)f(enhancements)e(and)i(features)f(added)h(to)h
(PVM)f(console)f(program.)336 669 y(+)i(pvmd)f(and)g(libpvm)g(use)g
(PVM_ROOT)f(and)h(PVM_ARCH)f(environment)380 723 y(variables)g(if)h
(set.)249 831 y(PVM)g(3.2.1)43 b(\(Sept.)20 b(1993\))43
b(Six)21 b(bug)g(fix)g(patches)g(released)f(for)h(PVM)g(3.2)249
885 y(PVM)g(3.2.2)43 b(\(Sept.)20 b(1993\))249 939 y(PVM)h(3.2.3)43
b(\(Oct.)21 b(1993\))249 993 y(PVM)g(3.2.4)43 b(\(Nov.)21
b(1993\))249 1047 y(PVM)g(3.2.5)43 b(\(Dec.)21 b(1993\))249
1101 y(PVM)g(3.2.6)43 b(\(Jan.)21 b(1994\))249 1209 y(PVM)g(3.3.0)43
b(\(June)21 b(1994\))336 1317 y(+)h(PVM_ROOT)e(environment)f(variable)i
(now)g(must)g(be)g(set.)380 1371 y($HOME/pvm3)f(is)h(no)g(longer)g
(assumed.)336 1479 y(+)h(shared-memory)d(ports)i(merged)f(with)h(Unix)g
(and)g(distributed)f(memory)g(ports.)380 1533 y(Ports)h(include)f
(SUNMP)h(and)g(SGIMP.)336 1641 y(+)h(New)f(functions)f(pvm_psend\(\))f
(and)j(pvm_precv\(\))d(send)i(and)g(receive)g(raw)380
1694 y(data)g(buffers,)f(enabling)g(more)h(efficient)f(implementation)f
(on)i(machines)380 1748 y(such)g(as)g(multiprocessors.)336
1856 y(+)h(new)f(function)f(pvm_trecv\(\))g(blocks)g(until)h(a)h
(message)e(is)h(received)f(or)i(a)380 1910 y(specified)e(timeout)g
(\(in)h(seconds)g(and)g(usec\))g(improves)f(fault)g(tolerance.)336
2018 y(+)i(Inplace)e(packing)h(implemented)e(for)i(dense)g(data)g
(reducing)f(packing)g(costs.)336 2126 y(+)i(Resource)e(Manager,)g
(Hoster)h(and)g(Tasker)f(interfaces)g(defined)380 2180
y(to)h(allow)g(third)g(party)f(debuggers)g(and)i(resource)e(managers)g
(to)h(use)g(PVM.)336 2288 y(+)h(libpvm)e(parameter/result)f(tracing)h
(implemented)g(to)h(drive)g(XPVM)g(tool.)380 2342 y(tasks)g(inherit)f
(trace)h(destination)e(and)i(per-call)g(event)f(mask.)336
2450 y(+)i(XPVM,)f(a)g(graphical)f(user)h(interface)f(for)h(PVM,)g(is)h
(released.)p eop
%%Page: 179 198
179 197 bop 249 251 a Fu(History)14 b(of)f(PVM)g(V)m(ersions)1114
b(179)336 507 y Fs(+)22 b(added)f(collective)e(communication)g
(routines)i(to)g(group)g(library.)380 561 y(global)f(reduce)h(and)g
(scatter/gather)336 669 y(+)h(libpvm)e(function)h(pvm_catchout\(\))d
(collects)j(output)f(of)h(children)g(tasks.)445 723 y(output)g(can)g
(be)g(appended)f(to)i(any)f(FILE*)g(\(e.g.)g(stdout\).)336
831 y(+)h(new)f(hostfile)f(option)h("wd=")f(sets)h(the)h(working)e
(directory)g(of)h(the)g(pvmd.)336 939 y(+)h(environment)d(variables)h
(expanded)g(when)h(setting)g(ep=)g(or)380 993 y(bp=)g(in)g(the)h
(hostfile.)249 1101 y(PVM)f(3.3.1)65 b(\(June)20 b(1994\))65
b(bug)21 b(fix)g(patches)f(for)i(PVM)f(3.3)249 1155 y(PVM)g(3.3.2)65
b(\(July)20 b(1994\))249 1209 y(PVM)h(3.3.3)65 b(\(August)20
b(1994\))p eop
%%Page: 180 199
180 198 bop eop
%%Page: 181 200
181 199 bop 249 331 a Fp(B)25 b FD(PVM)17 b(3)g(Routines)291
561 y FA(This)11 b(app)q(endix)g(con)o(tains)g(an)g(alphab)q(etical)g
(listing)f(of)h(all)f(the)i(PVM)f(3)g(routines.)18 b(Eac)o(h)12
b(routine)249 615 y(is)k(describ)q(ed)i(in)d(detail)g(for)h(b)q(oth)g
(C)g(and)g(F)m(ortran)f(use.)25 b(There)17 b(are)g(examples)e(and)g
(diagnostics)249 669 y(for)f(eac)o(h)g(routine.)p eop
%%Page: 182 201
182 200 bop 249 251 a Fu(182)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfaddhost\(\))641 b(p)n(vm)p 1506 511 21
2 v 24 w(addhosts\(\))p 249 595 1591 16 v 249 658 a FA(Adds)15
b(one)f(or)f(more)g(hosts)i(to)f(the)g(virtual)f(mac)o(hine.)249
770 y Fr(Synopsis)274 836 y(C)173 b Fs(int)21 b(info)g(=)h(pvm)p
790 836 14 2 v 15 w(addhosts\()e(char)h(**hosts,)f(int)h(nhost,)g(int)g
(*infos)g(\))274 890 y Fr(F)l(ortran)48 b Fs(call)21
b(pvmfaddhost\()f(host,)g(info)h(\))249 997 y Fr(P)o(arameters)274
1056 y Fs(hosts)49 b FA({)g(an)14 b(arra)o(y)f(of)g(p)q(oin)o(ters)h
(to)g(c)o(haracter)g(strings)g(con)o(taining)f(the)h(names)f(of)503
1110 y(the)i(mac)o(hines)e(to)h(b)q(e)g(added.)274 1164
y Fs(nhost)49 b FA({)g(in)o(teger)15 b(sp)q(ecifying)e(the)i(n)o(um)o
(b)q(er)e(of)g(hosts)i(to)f(b)q(e)g(added.)274 1217 y
Fs(infos)49 b FA({)g(in)o(teger)15 b(arra)o(y)g(of)f(length)g
Fs(nhost)g FA(whic)o(h)g(con)o(tains)h(the)g(status)g(co)q(de)h(re-)503
1271 y(turned)h(b)o(y)e(the)h(routine)g(for)f(the)h(individual)e
(hosts.)24 b(V)m(alues)15 b(less)h(than)503 1325 y(zero)f(indicate)f
(an)g(error.)274 1379 y Fs(host)71 b FA({)49 b(c)o(haracter)13
b(string)f(con)o(taining)f(the)h(name)f(of)g(the)h(mac)o(hine)f(to)g(b)
q(e)h(added.)274 1433 y Fs(info)71 b FA({)49 b(in)o(teger)21
b(status)f(co)q(de)h(returned)h(b)o(y)d(the)i(routine.)36
b(V)m(alues)20 b(less)g(than)503 1487 y(nhost)g(indicate)f(partial)g
(failure;)i(v)n(alues)e(less)h(than)f(1)h(indicate)f(total)503
1541 y(failure.)249 1649 y Fr(Discussion)249 1719 y FA(The)13
b(routine)f Fs(pvm)p 543 1719 V 15 w(addhosts)f FA(adds)h(the)h(list)f
(of)f(computers)h(p)q(oin)o(ted)h(to)f(in)f Fs(hosts)h
FA(to)g(the)g(existing)249 1773 y(con\014guration)e(of)g(computers)h
(making)d(up)j(the)g(virtual)f(mac)o(hine.)16 b(If)10
b(p)o(vm)p 1437 1773 13 2 v 13 w(addhosts)h(is)g(successful,)249
1827 y Fs(info)h FA(will)f(b)q(e)i(equal)f(to)g Fs(nhost)p
FA(.)17 b(P)o(artial)11 b(success)k(is)d(indicated)h(b)o(y)f(1)g
Fn(<)p FA(=)p Fs(info)p Fn(<)p Fs(nhost)p FA(,)f(and)i(total)249
1881 y(failure)f(b)o(y)g Fs(info)p Fn(<)f FA(1.)18 b(The)12
b(arra)o(y)g Fs(infos)g FA(can)g(b)q(e)h(c)o(hec)o(k)o(ed)h(to)e
(determine)g(whic)o(h)g(host)h(caused)g(the)249 1935
y(error.)249 1997 y(The)h(F)m(ortran)e(routine)i Fs(pvmfaddhost)c
FA(adds)j(a)g(single)g(host)g(to)g(the)h(con\014guration)e(with)h(eac)o
(h)g(call.)249 2059 y(If)h(a)g(host)g(fails,)e(the)j(PVM)g(system)f
(will)e(con)o(tin)o(ue)i(to)g(function.)19 b(The)14 b(user)h(can)g(use)
g(this)f(routine)249 2113 y(to)20 b(increase)i(the)f(fault)f(tolerance)
h(of)f(his)g(PVM)h(application.)36 b(The)21 b(status)g(of)f(hosts)h
(can)f(b)q(e)249 2167 y(requested)f(b)o(y)d(the)i(application)d(using)h
(p)o(vm)p 983 2167 V 14 w(mstat)f(and)i(p)o(vm)p 1281
2167 V 13 w(con\014g.)27 b(If)16 b(a)h(host)g(has)g(failed,)e(it)249
2221 y(will)c(b)q(e)j(automatically)c(deleted)k(from)d(the)i
(con\014guration.)k(With)c(p)o(vm)p 1408 2221 V 13 w(addhosts)g(a)g
(replacemen)o(t)249 2275 y(host)19 b(can)g(b)q(e)g(added)g(b)o(y)f(the)
h(application.)31 b(It)19 b(is)f(still)g(the)h(resp)q(onsibilit)o(y)f
(of)g(the)h(application)249 2329 y(dev)o(elop)q(er)e(to)g(mak)o(e)d
(the)j(application)e(toleran)o(t)i(of)e(host)i(failure.)25
b(Another)17 b(use)g(of)f(this)g(feature)249 2383 y(w)o(ould)e(b)q(e)h
(to)f(add)g(more)g(hosts)h(as)f(they)h(b)q(ecome)f(a)o(v)n(ailable)f
(\(for)h(example,)f(on)h(a)g(w)o(eek)o(end\))h(or)g(if)249
2437 y(the)g(application)d(dynamically)f(determines)j(it)g(could)f(use)
i(more)e(computational)e(p)q(o)o(w)o(er.)p eop
%%Page: 183 202
183 201 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(183)249
507 y Fr(Examples)274 574 y(C:)495 628 y Fs(static)20
b(char)h(*hosts[])f(=)i({)756 682 y("sparky",)756 736
y("thud.cs.utk.edu",)495 790 y(};)495 844 y(info)f(=)g(pvm_addhosts\()e
(hosts,)i(2,)g(infos)g(\);)274 898 y Fr(F)l(ortran:)495
952 y Fs(CALL)g(PVMFADDHOST\()e('azure',)h(INFO)h(\))249
1059 y Fr(Errors)249 1129 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 1129 14 2 v 15 w(addhosts)274 1197 y FA(Name)221
b(P)o(ossible)14 b(Cause)p 249 1215 1338 2 v 274 1252
a(PvmBadP)o(aram)47 b(giving)13 b(an)g(in)o(v)n(alid)f(argumen)o(t)h(v)
n(alue.)274 1306 y(PvmAlready)98 b(already)14 b(b)q(een)h(added.)274
1360 y(PvmSysErr)120 b(lo)q(cal)13 b(p)o(vmd)g(is)g(not)h(resp)q
(onding.)249 1426 y(The)g(follo)o(wing)e(error)i(conditions)g(can)g(b)q
(e)h(returned)g(in)f Fs(infos)274 1493 y FA(Name)236
b(P)o(ossible)14 b(Cause)p 249 1511 1352 2 v 274 1548
a(PvmBadP)o(aram)62 b(bad)14 b(hostname)f(syn)o(tax.)274
1602 y(PvmNoHost)120 b(no)14 b(suc)o(h)g(host.)274 1656
y(PvmCan)o(tStart)75 b(failed)13 b(to)g(start)i(p)o(vmd)d(on)i(host.)
274 1710 y(PvmDupHost)94 b(host)14 b(already)g(in)f(con\014guration.)
274 1764 y(PvmBadV)m(ersion)49 b(remote)13 b(p)o(vmd)g(v)o(ersion)h(do)
q(esn't)g(matc)o(h.)274 1818 y(PvmOutOfRes)75 b(PVM)14
b(has)g(run)g(out)g(of)f(system)h(resources.)p eop
%%Page: 184 203
184 202 bop 249 251 a Fu(184)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfbarrier\(\))725 b(p)n(vm)p 1562 511 21
2 v 24 w(barrier\(\))p 249 595 1591 16 v 249 658 a FA(Blo)q(c)o(ks)14
b(the)h(calling)d(pro)q(cess)k(un)o(til)d(all)g(pro)q(cesses)j(in)e(a)f
(group)h(ha)o(v)o(e)g(called)f(it.)249 770 y Fr(Synopsis)274
836 y(C)173 b Fs(int)21 b(info)g(=)h(pvm)p 790 836 14
2 v 15 w(barrier\()e(char)h(*group,)g(int)g(count)f(\))274
890 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfbarrier\()f(group,)g(count,)h
(info)g(\))249 997 y Fr(P)o(arameters)274 1056 y Fs(group)49
b FA({)g(c)o(haracter)15 b(string)e(group)g(name.)k(The)d(group)f(m)o
(ust)f(exist)h(and)g(the)h(call-)503 1110 y(ing)g(pro)q(cess)h(m)o(ust)
e(b)q(e)i(a)e(mem)o(b)q(er)f(of)i(the)g(group.)274 1164
y Fs(count)49 b FA({)g(in)o(teger)17 b(sp)q(ecifying)f(the)h(n)o(um)o
(b)q(er)f(of)f(group)h(mem)o(b)q(ers)f(that)i(m)o(ust)e(call)503
1217 y(p)o(vm)p 585 1217 13 2 v 14 w(barrier)e(b)q(efore)g(they)g(are)f
(all)g(released.)18 b(Though)12 b(it)g(can)h(b)q(e)g(di\013er-)503
1271 y(en)o(t,)h(the)h(coun)o(t)f(is)g(exp)q(ected)j(to)c(b)q(e)i(the)g
(total)e(n)o(um)o(b)q(er)h(of)f(mem)o(b)q(ers)g(of)503
1325 y(the)i(sp)q(eci\014ed)g(group.)274 1379 y Fs(info)71
b FA({)49 b(in)o(teger)12 b(status)h(co)q(de)f(returned)h(b)o(y)f(the)g
(routine.)17 b(V)m(alues)12 b(less)g(than)f(zero)503
1433 y(indicate)j(an)g(error.)249 1541 y Fr(Discussion)249
1611 y FA(The)i(routine)g Fs(pvm)p 550 1611 14 2 v 15
w(barrier)e FA(blo)q(c)o(ks)i(the)g(calling)e(pro)q(cess)j(un)o(til)e
Fs(count)g FA(mem)o(b)q(ers)f(of)h(the)h Fs(group)249
1665 y FA(ha)o(v)o(e)i(called)g(p)o(vm)p 553 1665 13
2 v 14 w(barrier.)32 b(The)19 b(coun)o(t)f(argumen)o(t)g(is)g(required)
h(b)q(ecause)h(pro)q(cesses)h(could)d(b)q(e)249 1719
y(joining)9 b(the)j(giv)o(en)e(group)h(after)g(other)h(pro)q(cesses)i
(ha)o(v)o(e)c(called)h(p)o(vm)p 1339 1719 V 13 w(barrier.)18
b(Th)o(us)11 b(PVM)h(do)q(esn't)249 1773 y(kno)o(w)k(ho)o(w)f(man)o(y)f
(group)i(mem)o(b)q(ers)f(to)h(w)o(ait)f(for)h(at)g(an)o(y)f(giv)o(en)h
(instan)o(t.)24 b(Although)16 b(coun)o(t)g(can)249 1827
y(b)q(e)f(set)h(less,)f(it)f(is)g(t)o(ypically)g(the)h(total)f(n)o(um)o
(b)q(er)f(of)h(mem)o(b)q(ers)g(of)g(the)h(group.)20 b(Hence,)c(the)f
(logical)249 1881 y(function)e(of)f(the)h(p)o(vm)p 609
1881 V 14 w(barrier)g(call)f(is)h(to)f(pro)o(vide)h(a)g(group)f(sync)o
(hronization.)18 b(During)12 b(an)o(y)h(giv)o(en)249
1935 y(barrier)g(call)e(all)g(participating)h(group)g(mem)o(b)q(ers)f
(m)o(ust)g(call)h(barrier)g(with)g(the)h(same)f(coun)o(t)g(v)n(alue.)
249 1989 y(Once)18 b(a)e(giv)o(en)g(barrier)i(has)e(b)q(een)i
(successfully)g(passed,)g(p)o(vm)p 1277 1989 V 13 w(barrier)f(can)g(b)q
(e)g(called)g(again)e(b)o(y)249 2043 y(the)g(same)e(group)g(using)h
(the)g(same)f(group)h(name.)249 2105 y(As)f(a)g(sp)q(ecial)g(case,)h
(if)e Fs(count)f FA(equals)i(-1)g(then)g(PVM)h(will)d(use)j(the)f(v)n
(alue)f(of)h(p)o(vm)p 1564 2105 V 13 w(gsize\(\))h(\(i.e.,)d(all)249
2159 y(the)17 b(group)f(mem)o(b)q(ers\).)23 b(This)16
b(case)h(is)f(useful)g(after)g(a)g(group)f(is)h(established)h(and)f
(not)g(c)o(hanging)249 2213 y(during)e(an)f(application.)249
2275 y(If)h(p)o(vm)p 373 2275 V 13 w(barrier)g(is)g(successful,)h
Fs(info)e FA(will)g(b)q(e)h(0.)k(If)13 b(some)g(error)i(o)q(ccurs,)g
Fs(info)e FA(will)g(b)q(e)h Fn(<)e FA(0.)p eop
%%Page: 185 204
185 203 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(185)249
507 y Fr(Examples)274 574 y(C:)495 628 y Fs(inum)21 b(=)g
(pvm_joingroup\()e("worker")h(\);)669 682 y(.)669 736
y(.)495 790 y(info)h(=)g(pvm_barrier\()e("worker",)h(5)i(\);)274
844 y Fr(F)l(ortran:)495 898 y Fs(CALL)f(PVMFJOINGROUP\()d("shakers",)i
(INUM)h(\))495 952 y(COUNT)f(=)i(10)495 1006 y(CALL)f(PVMFBARRIER\()e
("shakers",)h(COUNT,)g(INFO)h(\))249 1112 y Fr(Errors)249
1183 y FA(The)14 b(follo)o(wing)e(error)i(conditions)g(can)g(b)q(e)h
(returned)g(b)o(y)f Fs(pvm)p 1238 1183 14 2 v 15 w(barrier)p
FA(.)274 1251 y(Name)250 b(P)o(ossible)14 b(Cause)p 249
1269 1367 2 v 274 1306 a(PvmSysErr)149 b(p)o(vmd)13 b(w)o(as)g(not)h
(started)h(or)f(has)g(crashed.)274 1360 y(PvmBadP)o(aram)76
b(giving)13 b(a)g(coun)o(t)h Fn(<)e FA(1.)274 1414 y(PvmNoGroup)102
b(giving)13 b(a)g(nonexisten)o(t)i(group)f(name.)274
1468 y(PvmNotInGroup)48 b(calling)13 b(pro)q(cess)i(is)f(not)g(in)f(sp)
q(eci\014ed)j(group.)p eop
%%Page: 186 205
186 204 bop 249 251 a Fu(186)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfb)r(cast\(\))823 b(p)n(vm)p 1611 511
21 2 v 25 w(b)r(cast\(\))p 249 595 1591 16 v 249 658
a FA(Broadcasts)15 b(the)g(data)e(in)h(the)g(activ)o(e)g(message)g
(bu\013er.)249 770 y Fr(Synopsis)274 836 y(C)173 b Fs(int)21
b(info)g(=)h(pvm)p 790 836 14 2 v 15 w(bcast\()f(char)g(*group,)f(int)h
(msgtag)g(\))274 890 y Fr(F)l(ortran)48 b Fs(call)21
b(pvmfbcast\()f(group,)h(msgtag,)f(info)h(\))249 997
y Fr(P)o(arameters)274 1056 y Fs(group)71 b FA({)49 b(c)o(haracter)15
b(string)f(group)g(name)f(of)g(an)h(existing)f(group.)274
1110 y Fs(msgtag)49 b FA({)g(in)o(teger)11 b(message)e(tag)h(supplied)g
(b)o(y)g(the)h(user.)18 b(msgtag)8 b(should)i(b)q(e)h
Fn(>)p FA(=)h(0.)525 1164 y(It)e(allo)o(ws)f(the)i(user's)g(program)e
(to)h(distinguish)f(b)q(et)o(w)o(een)j(di\013eren)o(t)f(kinds)525
1217 y(of)i(messages.)274 1271 y Fs(info)93 b FA({)49
b(in)o(teger)12 b(status)g(co)q(de)h(returned)g(b)o(y)e(the)i(routine.)
k(V)m(alues)11 b(less)i(than)e(zero)525 1325 y(indicate)j(an)g(error.)
249 1433 y Fr(Discussion)249 1503 y FA(The)i(routine)f
Fs(pvm)p 549 1503 V 15 w(bcast)f FA(broadcasts)i(a)f(message)g(stored)h
(in)f(the)g(activ)o(e)g(send)h(bu\013er)h(to)e(all)e(the)249
1557 y(mem)o(b)q(ers)i(of)g Fs(group)p FA(.)23 b(In)15
b(PVM)i(3.2)e(the)h(broadcast)g(message)g(is)g(not)f(sen)o(t)i(bac)o(k)
f(to)f(the)i(sender.)249 1611 y(An)o(y)12 b(PVM)g(task)g(can)h(call)e
(p)o(vm)p 763 1611 13 2 v 13 w(b)q(cast\(\);)j(it)d(need)i(not)f(b)q(e)
h(a)e(mem)o(b)q(er)g(of)g(the)i(group.)k(The)12 b(con)o(ten)o(t)249
1665 y(of)i(the)g(message)g(can)h(b)q(e)f(distinguished)g(b)o(y)g
Fs(msgtag)p FA(.)k(If)c(p)o(vm)p 1257 1665 V 13 w(b)q(cast)h(is)f
(successful,)h Fs(info)f FA(will)e(b)q(e)249 1719 y(0.)18
b(If)13 b(some)g(error)i(o)q(ccurs,)g Fs(info)e FA(will)f(b)q(e)j
Fn(<)d FA(0.)249 1781 y(p)o(vm)p 331 1781 V 13 w(b)q(cast)17
b(is)e(async)o(hronous.)23 b(Computation)14 b(on)h(the)h(sending)g(pro)
q(cessor)h(resumes)f(as)f(so)q(on)h(as)249 1835 y(the)d(message)e(is)h
(safely)f(on)h(its)g(w)o(a)o(y)f(to)h(the)g(receiving)g(pro)q(cessors.)
20 b(This)11 b(pro)q(cedure)j(is)e(in)f(con)o(trast)249
1889 y(to)f(sync)o(hronous)i(comm)o(uni)o(cation,)c(during)i(whic)o(h)g
(computation)e(on)j(the)f(sending)h(pro)q(cessor)h(halts)249
1943 y(un)o(til)h(a)h(matc)o(hing)e(receiv)o(e)j(is)f(executed)h(b)o(y)
f(all)f(the)h(receiving)g(pro)q(cessors.)249 2006 y(p)o(vm)p
331 2006 V 13 w(b)q(cast)g(\014rst)f(determines)g(the)g(tids)g(of)f
(the)h(group)f(mem)o(b)q(ers)f(b)o(y)i(c)o(hec)o(king)g(a)f(group)g
(database.)249 2059 y(A)j(m)o(ulticast)e(is)i(p)q(erformed)f(to)h
(these)h(tids.)21 b(If)14 b(the)i(group)e(is)h(c)o(hanged)g(during)g(a)
f(broadcast,)h(the)249 2113 y(c)o(hange)j(will)f(not)g(b)q(e)i
(re\015ected)h(in)d(the)i(broadcast.)30 b(Multicasting)17
b(is)h(not)f(supp)q(orted)j(b)o(y)d(most)249 2167 y(m)o(ultipro)q
(cessor)c(v)o(endors.)18 b(T)o(ypically)12 b(their)h(nativ)o(e)g(calls)
g(supp)q(ort)h(only)e(broadcasting)h(to)g FB(al)r(l)f
FA(the)249 2221 y(user's)17 b(pro)q(cesses)j(on)c(a)g(m)o(ultipro)q
(cessor.)25 b(Because)18 b(of)e(this)h(omission,)d(p)o(vm)p
1508 2221 V 13 w(b)q(cast)k(ma)o(y)c(not)i(b)q(e)249
2275 y(an)e(e\016cien)o(t)g(comm)o(unication)d(metho)q(d)i(on)g(some)g
(m)o(ultipro)q(cessors.)p eop
%%Page: 187 206
187 205 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(187)249
507 y Fr(Examples)274 574 y(C:)495 628 y Fs(info)21 b(=)g
(pvm_initsend\()e(PvmDataRaw)h(\);)495 682 y(info)h(=)g(pvm_pkint\()f
(array,)g(10,)i(1)f(\);)495 736 y(msgtag)f(=)i(5)f(;)495
790 y(info)g(=)g(pvm_bcast\()f("worker",)g(msgtag)g(\);)274
844 y Fr(F)l(ortran:)495 898 y Fs(CALL)h(PVMFINITSEND\()e(PVMDEFAULT)g
(\))495 952 y(CALL)i(PVMFPKFLOAT\()e(DATA,)i(100,)g(1,)g(INFO)g(\))495
1006 y(CALL)g(PVMFBCAST\()e('worker',)h(5,)i(INFO)f(\))249
1112 y Fr(Errors)249 1183 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 1183 14 2 v 15 w(bcast)p FA(.)274 1251 y(Name)221
b(P)o(ossible)14 b(Cause)p 249 1269 1338 2 v 274 1306
a(PvmSysErr)120 b(p)o(vmd)13 b(w)o(as)g(not)h(started)h(or)f(has)g
(crashed.)274 1360 y(PvmBadP)o(aram)47 b(giving)13 b(a)g(negativ)o(e)h
(msgtag.)274 1414 y(PvmNoGroup)73 b(giving)13 b(a)g(nonexisten)o(t)i
(group)f(name.)p eop
%%Page: 188 207
188 206 bop 249 251 a Fu(188)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfbu\014nfo\(\))724 b(p)n(vm)p 1561 511
21 2 v 24 w(bu\014nfo\(\))p 249 595 1591 16 v 249 658
a FA(Returns)15 b(information)c(ab)q(out)j(the)g(requested)i(message)e
(bu\013er.)249 770 y Fr(Synopsis)274 836 y(C)195 b Fs(int)21
b(info)g(=)h(pvm_bufinfo\()d(int)i(bufid,)g(int)g(*bytes,)1048
890 y(int)g(*msgtag,)f(int)h(*tid)g(\))274 944 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfbufinfo\()f(bufid,)g(bytes,)h(msgtag,)f(tid,)h(info)
g(\))249 1051 y Fr(P)o(arameters)274 1110 y Fs(bufid)71
b FA({)49 b(in)o(teger)14 b(sp)q(ecifying)g(a)g(particular)f(message)h
(bu\013er)h(iden)o(ti\014er.)274 1164 y Fs(bytes)71 b
FA({)49 b(in)o(teger)14 b(returning)h(the)f(length)g(in)g(b)o(ytes)g
(of)g(the)g(en)o(tire)h(message.)274 1217 y Fs(msgtag)49
b FA({)g(in)o(teger)14 b(returning)h(the)f(message)g(lab)q(el.)274
1271 y Fs(tid)115 b FA({)49 b(in)o(teger)14 b(returning)h(the)f(source)
i(of)d(the)h(message.)274 1325 y Fs(info)93 b FA({)49
b(in)o(teger)12 b(status)g(co)q(de)h(returned)g(b)o(y)e(the)i(routine.)
k(V)m(alues)11 b(less)i(than)e(zero)525 1379 y(indicate)j(an)g(error.)
249 1487 y Fr(Discussion)249 1557 y FA(The)f(routine)h
Fs(pvm)p 545 1557 14 2 v 15 w(bufinfo)d FA(returns)k(information)10
b(ab)q(out)i(the)i(requested)h(message)e(bu\013er.)18
b(T)o(yp-)249 1611 y(ically)e(it)h(is)h(used)g(to)f(determine)h(facts)g
(ab)q(out)f(the)h(last)f(receiv)o(ed)i(message)f(suc)o(h)g(as)f(its)h
(size)g(or)249 1665 y(source.)29 b(p)o(vm)p 484 1665
13 2 v 13 w(bu\014nfo)17 b(is)f(esp)q(ecially)i(useful)f(when)g(an)g
(application)e(is)i(able)g(to)g(receiv)o(e)h(an)o(y)f(in-)249
1719 y(coming)10 b(message.)17 b(The)c(action)e(tak)o(en)h(dep)q(ends)i
(on)d(the)i(source)g Fs(tid)e FA(and)h(the)h Fs(msgtag)d
FA(asso)q(ciated)249 1773 y(with)i(the)g(message)g(that)g(comes)f(in)h
(\014rst.)18 b(If)11 b(p)o(vm)p 1046 1773 V 14 w(bu\014nfo)g(is)h
(successful,)h Fs(info)e FA(will)g(b)q(e)h(0.)17 b(If)12
b(some)249 1827 y(error)j(o)q(ccurs,)g Fs(info)e FA(will)f(b)q(e)j
Fn(<)c FA(0.)249 1939 y Fr(Examples)274 2006 y(C:)538
2060 y Fs(bufid)21 b(=)h(pvm_recv\()d(-1,)j(-1)f(\);)538
2114 y(info)g(=)h(pvm_bufinfo\()d(bufid,)i(&bytes,)f(&type,)g(&source)h
(\);)274 2168 y Fr(F)l(ortran:)560 2222 y Fs(CALL)g(PVMFRECV\()f(-1,)h
(-1,)g(BUFID)g(\))560 2276 y(CALL)g(PVMFBUFINFO\()e(BUFID,)i(BYTES,)f
(TYPE,)h(SOURCE,)f(INFO)h(\))249 2382 y Fr(Errors)249
2453 y FA(The)14 b(follo)o(wing)e(error)i(conditions)g(can)g(b)q(e)h
(returned)g(b)o(y)f Fs(pvm)p 1238 2453 14 2 v 15 w(bufinfo)p
FA(.)p eop
%%Page: 189 208
189 207 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(189)274
504 y FA(Name)232 b(P)o(ossible)14 b(Cause)p 249 521
1348 2 v 274 559 a(PvmNoSuc)o(hBuf)49 b(sp)q(eci\014ed)15
b(bu\013er)g(do)q(es)g(not)f(exist.)274 613 y(PvmBadP)o(aram)58
b(in)o(v)n(alid)12 b(argumen)o(t.)p eop
%%Page: 190 209
190 208 bop 249 251 a Fu(190)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfcatc)n(hout\(\))625 b(p)n(vm)p 1512 511
21 2 v 25 w(catc)n(hout\(\))p 249 595 1591 16 v 249 658
a FA(Catc)o(hes)15 b(output)f(from)e(c)o(hild)h(tasks.)249
770 y Fr(Synopsis)274 836 y(C)173 b Fs(#include)20 b(<stdio.h>)481
890 y(int)h(bufid)g(=)h(pvm)p 812 890 14 2 v 15 w(catchout\()e(FILE)h
(*ff)g(\))274 944 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfcatchout\()e
(onoff)i(\))249 1051 y Fr(P)o(arameters)274 1110 y Fs(ff)115
b FA({)49 b(File)14 b(descriptor)h(on)f(whic)o(h)f(to)h(write)g
(collected)h(output.)274 1164 y Fs(onoff)49 b FA({)g(In)o(teger)15
b(parameter.)j(T)m(urns)c(output)g(collection)f(on)h(or)g(o\013.)249
1271 y Fr(Discussion)249 1341 y FA(The)d(routine)g Fs(pvm)p
540 1341 V 15 w(catchout)e FA(causes)j(the)f(calling)e(task)i(\(the)g
(paren)o(t\))g(to)g(catc)o(h)g(output)g(from)e(tasks)249
1395 y(spa)o(wned)i(after)f(the)h(call)e(to)h(p)o(vm)p
776 1395 13 2 v 13 w(catc)o(hout.)17 b(Characters)12
b(prin)o(ted)e(on)g FB(stdout)g FA(or)g FB(stderr)f FA(in)h(c)o
(hildren)249 1449 y(tasks)k(are)h(collected)f(b)o(y)g(the)g(p)o(vmds)f
(and)g(sen)o(t)i(in)e(con)o(trol)h(messages)f(to)h(the)g(paren)o(t)h
(task,)e(whic)o(h)249 1503 y(tags)h(eac)o(h)g(line)g(and)f(app)q(ends)i
(it)e(to)h(the)g(sp)q(eci\014ed)i(\014le.)i(Output)c(from)e(grandc)o
(hildren)i(\(spa)o(wned)249 1557 y(b)o(y)g(c)o(hildren\))g(tasks)g(is)g
(also)f(collected,)i(pro)o(vided)e(the)i(c)o(hildren)f(don't)f(reset)j
(PvmOutputTid.)249 1619 y(Eac)o(h)e(line)g(of)f(output)h(has)g(one)g
(of)f(the)i(follo)o(wing)c(forms:)249 1698 y Fs([txxxxx])20
b(BEGIN)249 1752 y([txxxxx])g(\(text)h(from)g(child)g(task\))249
1806 y([txxxxx])f(END)249 1885 y FA(The)c(output)f(from)e(eac)o(h)j
(task)f(includes)h(one)f(BEGIN)h(line)e(and)h(one)h(END)f(line,)f(with)
h(whatev)o(er)249 1939 y(the)g(task)f(prin)o(ts)g(in)f(b)q(et)o(w)o
(een.)249 2001 y(In)18 b(C,)f(the)i(output)e(\014le)h(descriptor)h(ma)o
(y)d(b)q(e)j(sp)q(eci\014ed.)31 b(Giving)16 b(a)h(n)o(ull)g(p)q(oin)o
(ter)h(turns)h(output)249 2055 y(collection)c(o\013.)22
b Fr(Note:)f FA(The)16 b(\014le)f(option)g(is)g(not)g(implemen)o(ted)e
(in)i(PVM)g(3.3.0;)f(output)h(go)q(es)h(to)249 2109 y(calling)d(task's)
g(stdout.)249 2172 y(In)g(F)m(ortran,)g(output)g(collection)g(can)g
(only)f(b)q(e)i(turned)g(on)f(or)g(o\013,)f(and)h(is)g(logged)g(to)f
(stdout)i(of)e(the)249 2226 y(paren)o(t)i(task.)249 2288
y(If)c Fs(pvm)p 356 2288 14 2 v 15 w(exit)g FA(is)g(called)g(while)g
(output)g(collection)g(is)g(in)g(e\013ect,)j(it)c(will)g(blo)q(c)o(k)h
(un)o(til)g(all)f(tasks)i(sending)249 2342 y(it)j(output)h(ha)o(v)o(e)f
(exited,)h(in)f(order)i(to)e(prin)o(t)g(all)g(their)h(output.)20
b(T)m(o)14 b(a)o(v)o(oid)f(this,)h(one)h(can)g(turn)g(o\013)249
2396 y(the)g(output)f(collection)f(b)o(y)h(calling)e(p)o(vm)p
912 2396 13 2 v 14 w(catc)o(hout\(0\))i(b)q(efore)h(calling)d(p)o(vm)p
1484 2396 V 14 w(exit.)249 2458 y(p)o(vm)p 331 2458 V
13 w(catc)o(hout\(\))j(alw)o(a)o(ys)e(returns)i(PvmOk.)p
eop
%%Page: 191 210
191 209 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(191)249
507 y Fr(Examples)274 574 y(C:)495 628 y Fs(#include)20
b(<stdio.h>)495 682 y(pvm_catchout\(st)o(dout\))o(;)274
736 y Fr(F)l(ortran:)495 790 y Fs(CALL)h(PVMFCATCHOUT\()e(1)i(\))249
897 y Fr(Errors)249 967 y FA(No)14 b(error)h(conditions)e(are)h
(returned)i(b)o(y)e Fs(pvm)p 980 967 14 2 v 15 w(catchout)p
FA(.)p eop
%%Page: 192 211
192 210 bop 249 251 a Fu(192)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfcon\014g\(\))788 b(p)n(vm)p 1593 511
21 2 v 25 w(con\014g\(\))p 249 595 1591 16 v 249 658
a FA(Returns)15 b(information)c(ab)q(out)j(the)g(presen)o(t)i(virtual)d
(mac)o(hine)f(con\014guration.)249 770 y Fr(Synopsis)274
836 y(C)173 b Fs(int)21 b(info)g(=)h(pvm)p 790 836 14
2 v 15 w(config\()e(int)i(*nhost,)e(int)h(*narch,)743
890 y(struct)f(pvmhostinfo)g(**hostp)g(\))481 944 y(struct)h
(pvmhostinfo)e({)568 998 y(int)43 b(hi_tid;)568 1052
y(char)21 b(*hi_name;)568 1106 y(char)g(*hi_arch;)568
1160 y(int)43 b(hi_speed;)481 1214 y(})22 b(hostp;)274
1268 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfconfig\()f(nhost,)g(narch,)h
(dtid,)874 1322 y(name,)f(arch,)h(speed,)g(info)g(\))249
1429 y Fr(P)o(arameters)274 1487 y Fs(nhost)49 b FA({)g(in)o(teger)22
b(returning)g(the)g(n)o(um)o(b)q(er)f(of)g(hosts)h(\(p)o(vmds\))f(in)g
(the)h(virtual)503 1541 y(mac)o(hine.)274 1595 y Fs(narch)49
b FA({)g(in)o(teger)11 b(returning)g(the)f(n)o(um)o(b)q(er)g(of)f
(di\013eren)o(t)i(data)f(formats)f(b)q(eing)h(used.)274
1649 y Fs(hostp)49 b FA({)g(p)q(oin)o(ter)15 b(to)f(an)f(arra)o(y)h(of)
g(structures)i(that)f(con)o(tain)e(information)e(ab)q(out)503
1703 y(eac)o(h)18 b(host,)f(including)f(its)h(p)o(vmd)f(task)h(ID,)f
(name,)g(arc)o(hitecture,)j(and)503 1757 y(relativ)o(e)14
b(sp)q(eed.)274 1811 y Fs(dtid)71 b FA({)49 b(In)o(teger)15
b(returning)g(p)o(vmd)d(task)i(ID)f(for)h(this)g(host.)274
1865 y Fs(name)71 b FA({)49 b(Character)15 b(string)f(returning)h(name)
d(of)i(this)g(host.)274 1919 y Fs(arch)71 b FA({)49 b(Character)15
b(string)f(returning)h(name)d(of)i(host)g(arc)o(hitecture.)274
1973 y Fs(speed)49 b FA({)g(In)o(teger)21 b(returning)g(relativ)o(e)e
(sp)q(eed)j(of)d(this)h(host.)37 b(Default)19 b(v)n(alue)g(is)503
2027 y(1000.)274 2081 y Fs(info)71 b FA({)49 b(in)o(teger)12
b(status)h(co)q(de)f(returned)h(b)o(y)f(the)g(routine.)17
b(V)m(alues)12 b(less)g(than)f(zero)503 2135 y(indicate)j(an)g(error.)
249 2242 y Fr(Discussion)249 2313 y FA(The)19 b(routine)f
Fs(pvm)p 555 2313 V 15 w(config)f FA(returns)j(information)15
b(ab)q(out)j(the)h(presen)o(t)h(virtual)d(mac)o(hine.)30
b(The)249 2367 y(information)9 b(returned)14 b(is)e(similar)d(to)j
(that)g(a)o(v)n(ailable)e(from)g(the)j(console)f(command)d
Fs(conf)p FA(.)17 b(The)12 b(C)249 2421 y(function)j(returns)i
(information)12 b(ab)q(out)j(the)h(en)o(tire)g(virtual)f(mac)o(hine)f
(in)h(one)g(call.)21 b(The)16 b(F)m(ortran)249 2475 y(function)h
(returns)h(information)c(ab)q(out)j(one)g(host)g(p)q(er)h(call)e(and)h
(cycles)h(through)f(all)e(the)j(hosts.)p eop
%%Page: 193 212
193 211 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(193)249
507 y FA(Th)o(us,)13 b(if)g(p)o(vmfcon\014g)f(is)h(called)g(nhost)h
(times,)e(the)i(en)o(tire)g(virtual)f(mac)o(hine)f(will)g(b)q(e)i
(represen)o(ted.)249 561 y(If)g(p)o(vm)p 373 561 13 2
v 13 w(con\014g)g(is)g(successful,)h Fs(info)e FA(will)f(b)q(e)j(0.)i
(If)d(some)f(error)i(o)q(ccurs,)g Fs(info)e FA(will)f(b)q(e)j
Fn(<)c FA(0.)249 673 y Fr(Examples)274 740 y(C:)495 794
y Fs(info)21 b(=)g(pvm_config\()f(&nhost,)g(&narch,)g(&hostp)h(\);)274
848 y Fr(F)l(ortran:)495 902 y Fs(Do)g(i=1,)g(NHOST)538
956 y(CALL)g(PVMFCONFIG\()f(NHOST,NARCH,DTID)o(\(i\),H)o(OST\()o
(i\),AR)o(CH\(i\))o(,)909 1010 y(SPEED\(i\),INFO)f(\))495
1064 y(Enddo)249 1225 y Fr(Errors)249 1295 y FA(The)14
b(follo)o(wing)e(error)i(condition)g(can)g(b)q(e)g(returned)i(b)o(y)e
Fs(pvm)p 1222 1295 14 2 v 15 w(config)274 1363 y FA(Name)151
b(P)o(ossible)14 b(Cause)p 249 1381 1267 2 v 274 1418
a(PvmSysErr)50 b(p)o(vmd)12 b(not)i(resp)q(onding.)p
eop
%%Page: 194 213
194 212 bop 249 251 a Fu(194)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfdelhost\(\))681 b(p)n(vm)p 1527 511 21
2 v 24 w(delhosts\(\))p 249 595 1591 16 v 249 658 a FA(Deletes)15
b(one)f(or)g(more)f(hosts)h(from)f(the)h(virtual)f(mac)o(hine.)249
770 y Fr(Synopsis)274 836 y(C)173 b Fs(int)21 b(info)g(=)h(pvm)p
790 836 14 2 v 15 w(delhosts\()e(char)h(**hosts,)f(int)h(nhost,)g(int)g
(*infos)g(\))274 890 y Fr(F)l(ortran)48 b Fs(call)21
b(pvmfdelhost\()f(host,)g(info)h(\))249 997 y Fr(P)o(arameters)274
1056 y Fs(hosts)49 b FA({)g(an)14 b(arra)o(y)f(of)g(p)q(oin)o(ters)h
(to)g(c)o(haracter)g(strings)g(con)o(taining)f(the)h(names)f(of)503
1110 y(the)i(mac)o(hines)e(to)h(b)q(e)g(deleted.)274
1164 y Fs(nhost)49 b FA({)g(in)o(teger)15 b(sp)q(ecifying)e(the)i(n)o
(um)o(b)q(er)e(of)g(hosts)i(to)f(b)q(e)g(deleted.)274
1217 y Fs(infos)49 b FA({)g(in)o(teger)15 b(arra)o(y)g(of)f(length)g
Fs(nhost)g FA(whic)o(h)g(con)o(tains)h(the)g(status)g(co)q(de)h(re-)503
1271 y(turned)h(b)o(y)e(the)h(routine)g(for)f(the)h(individual)e
(hosts.)24 b(V)m(alues)15 b(less)h(than)503 1325 y(zero)f(indicate)f
(an)g(error.)274 1379 y Fs(host)71 b FA({)49 b(c)o(haracter)11
b(string)f(con)o(taining)f(the)h(name)e(of)h(the)i(mac)o(hine)d(to)h(b)
q(e)i(deleted.)274 1433 y Fs(info)71 b FA({)49 b(in)o(teger)21
b(status)f(co)q(de)h(returned)h(b)o(y)d(the)i(routine.)36
b(V)m(alues)20 b(less)g(than)503 1487 y(nhost)g(indicate)f(partial)g
(failure;)i(v)n(alues)e(less)h(than)f(1)h(indicate)f(total)503
1541 y(failure.)249 1649 y Fr(Discussion)249 1719 y FA(The)i(routine)g
Fs(pvm)p 560 1719 V 15 w(delhosts)e FA(deletes)j(from)d(the)i(virtual)f
(mac)o(hine)g(one)h(or)f(more)g(computers)249 1773 y(p)q(oin)o(ted)f
(to)g(in)f Fs(hosts)p FA(.)32 b(All)18 b(PVM)h(pro)q(cesses)i(and)e
(the)g(p)o(vmd)f(running)g(on)h(these)h(computers)249
1827 y(are)15 b(killed)f(as)g(the)i(computer)e(is)h(deleted.)21
b(If)14 b(p)o(vm)p 1069 1827 13 2 v 13 w(delhosts)i(is)e(successful,)i
Fs(info)e FA(will)f(b)q(e)j Fs(nhost)p FA(.)249 1881
y(P)o(artial)d(success)k(is)d(indicated)g(b)o(y)g(1)g
Fn(<)p FA(=)h Fs(info)e Fn(<)i Fs(nhost)p FA(,)d(and)i(total)g(failure)
f(b)o(y)h Fs(info)f Fn(<)i FA(1.)k(The)249 1935 y(arra)o(y)14
b Fs(infos)e FA(can)j(b)q(e)f(c)o(hec)o(k)o(ed)h(to)f(determine)g(whic)
o(h)g(host)g(caused)h(the)f(error.)249 1997 y(The)g(F)m(ortran)e
(routine)i Fs(pvmfdelhost)c FA(deletes)15 b(a)d(single)h(host)g(from)f
(the)h(con\014guration)g(with)g(eac)o(h)249 2051 y(call.)249
2113 y(If)i(a)h(host)f(fails,)g(the)h(PVM)g(system)f(will)g(con)o(tin)o
(ue)g(to)h(function)f(and)g(will)g(automatically)d(delete)249
2167 y(this)k(host)g(from)e(the)i(virtual)f(mac)o(hine.)22
b(An)16 b(application)e(can)i(b)q(e)g(noti\014ed)g(of)f(a)g(host)h
(failure)f(b)o(y)249 2221 y(calling)e(p)o(vm)p 463 2221
V 14 w(notify)m(.)19 b(It)c(is)f(still)g(the)i(resp)q(onsibilit)o(y)e
(of)g(the)h(application)f(dev)o(elop)q(er)h(to)g(mak)o(e)e(his)249
2275 y(application)g(toleran)o(t)g(of)h(host)g(failure.)p
eop
%%Page: 195 214
195 213 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(195)249
507 y Fr(Examples)274 574 y(C:)495 628 y Fs(static)20
b(char)h(*hosts[])f(=)i({)756 682 y("sparky",)756 736
y("thud.cs.utk.edu",)495 790 y(};)495 844 y(info)f(=)g(pvm_delhosts\()e
(hosts,)i(2)g(\);)274 898 y Fr(F)l(ortran:)495 952 y
Fs(CALL)g(PVMFDELHOST\()e('azure',)h(INFO)h(\))249 1059
y Fr(Errors)249 1129 y FA(The)14 b(follo)o(wing)e(error)i(conditions)g
(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p 1238 1129
14 2 v 15 w(delhosts)p FA(.)274 1197 y(Name)221 b(P)o(ossible)14
b(cause)p 249 1215 1338 2 v 274 1252 a(PvmBadP)o(aram)47
b(giving)13 b(an)g(in)o(v)n(alid)f(argumen)o(t)h(v)n(alue.)274
1306 y(PvmSysErr)120 b(lo)q(cal)13 b(p)o(vmd)g(not)g(resp)q(onding.)274
1360 y(PvmOutOfRes)60 b(PVM)14 b(has)h(run)f(out)g(of)f(system)g
(resources.)p eop
%%Page: 196 215
196 214 bop 249 251 a Fu(196)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfexit\(\))910 b(p)n(vm)p 1655 511 21 2
v 25 w(exit\(\))p 249 595 1591 16 v 249 658 a FA(T)m(ells)13
b(the)i(lo)q(cal)e(p)o(vmd)f(that)i(this)g(pro)q(cess)i(is)d(lea)o
(ving)g(PVM.)249 770 y Fr(Synopsis)274 836 y(C)173 b
Fs(int)21 b(info)g(=)h(pvm)p 790 836 14 2 v 15 w(exit\()f(void)g(\))274
890 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfexit\()f(info)h(\))249
997 y Fr(P)o(arameters)274 1056 y Fs(info)49 b FA({)h(in)o(teger)12
b(status)g(co)q(de)g(returned)i(b)o(y)d(the)h(routine.)17
b(V)m(alues)12 b(less)g(than)g(zero)482 1110 y(indicate)h(an)h(error.)
249 1217 y Fr(Discussion)249 1287 y FA(The)e(routine)g
Fs(pvm)p 542 1287 V 15 w(exit)e FA(tells)i(the)g(lo)q(cal)e(p)o(vmd)g
(that)i(this)f(pro)q(cess)j(is)d(lea)o(ving)f(PVM.)h(This)h(routine)249
1341 y(do)q(es)k(not)e(kill)g(the)h(pro)q(cess,)i(whic)o(h)d(can)h(con)
o(tin)o(ue)g(to)g(p)q(erform)f(tasks)h(just)g(lik)o(e)f(an)o(y)h(other)
g(serial)249 1395 y(pro)q(cess.)249 1458 y(Pvm)p 337
1458 13 2 v 14 w(exit)h(should)h(b)q(e)g(called)g(b)o(y)f(all)f(PVM)i
(pro)q(cesses)j(b)q(efore)d(they)g(stop)g(or)g(exit)g(for)f(go)q(o)q
(d.)26 b(It)249 1512 y FB(must)14 b FA(b)q(e)g(called)g(b)o(y)g(pro)q
(cesses)i(that)e(w)o(ere)h(not)f(started)h(with)e(p)o(vm)p
1338 1512 V 14 w(spa)o(wn.)249 1624 y Fr(Examples)274
1690 y(C:)495 1744 y Fs(/*)21 b(Program)f(done)h(*/)495
1798 y(pvm_exit\(\);)495 1852 y(exit\(\);)274 1906 y
Fr(F)l(ortran:)495 1960 y Fs(CALL)g(PVMFEXIT\(INFO\))495
2014 y(STOP)249 2121 y Fr(Errors)249 2191 y FA(The)14
b(follo)o(wing)e(error)i(condition)g(can)g(b)q(e)g(returned)i(b)o(y)e
Fs(pvm)p 1222 2191 14 2 v 15 w(exit\(\))p FA(.)274 2259
y(Name)151 b(P)o(ossible)14 b(Cause)p 249 2277 1267 2
v 274 2315 a(PvmSysErr)50 b(p)o(vmd)12 b(not)i(resp)q(onding)p
eop
%%Page: 197 216
197 215 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(197)291
511 y FE(p)n(vm\013reebuf\(\))721 b(p)n(vm)p 1559 511
21 2 v 25 w(freebuf\(\))p 249 595 1591 16 v 249 658 a
FA(Disp)q(oses)15 b(of)e(a)h(message)f(bu\013er.)249
770 y Fr(Synopsis)274 836 y(C)173 b Fs(int)21 b(info)g(=)h(pvm)p
790 836 14 2 v 15 w(freebuf\()e(int)h(bufid)g(\))274
890 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmffreebuf\()f(bufid,)g(info)h
(\))249 997 y Fr(P)o(arameters)274 1056 y Fs(bufid)49
b FA({)g(in)o(teger)15 b(message)e(bu\013er)i(iden)o(ti\014er.)274
1110 y Fs(info)71 b FA({)49 b(in)o(teger)12 b(status)h(co)q(de)f
(returned)h(b)o(y)f(the)g(routine.)17 b(V)m(alues)12
b(less)g(than)f(zero)503 1164 y(indicate)j(an)g(error.)249
1271 y Fr(Discussion)249 1341 y FA(The)f(routine)f Fs(pvm)p
543 1341 V 15 w(freebuf)f FA(frees)i(the)g(memory)c(asso)q(ciated)k
(with)f(the)h(message)f(bu\013er)h(iden)o(ti\014ed)249
1395 y(b)o(y)i Fs(bufid)p FA(.)22 b(Message)16 b(bu\013ers)h(are)f
(created)h(b)o(y)e(p)o(vm)p 1112 1395 13 2 v 14 w(mkbuf,)e(p)o(vm)p
1348 1395 V 14 w(initsend,)i(and)g(p)o(vm)p 1694 1395
V 14 w(recv.)23 b(If)249 1449 y(p)o(vm)p 331 1449 V 13
w(freebuf)15 b(is)f(successful,)h Fs(info)e FA(will)f(b)q(e)j(0.)i(If)d
(some)f(error)i(o)q(ccurs,)g Fs(info)e FA(will)f(b)q(e)j
Fn(<)c FA(0.)249 1512 y(p)o(vm)p 331 1512 V 13 w(freebuf)j(can)f(b)q(e)
g(called)g(for)f(a)h(send)h(bu\013er)f(created)i(b)o(y)d(p)o(vm)p
1317 1512 V 14 w(mkbuf)f(after)i(the)g(message)g(has)249
1566 y(b)q(een)i(sen)o(t)g(and)f(is)f(no)h(longer)g(needed.)249
1628 y(Receiv)o(e)19 b(bu\013ers)i(t)o(ypically)c(do)i(not)f(ha)o(v)o
(e)h(to)g(b)q(e)g(freed)h(unless)f(they)h(ha)o(v)o(e)e(b)q(een)i(sa)o
(v)o(ed)f(in)f(the)249 1682 y(course)d(of)f(using)f(m)o(ultiple)f
(bu\013ers.)20 b(But)14 b(p)o(vm)p 1011 1682 V 14 w(freebuf)g(can)g(b)q
(e)h(used)g(to)f(destro)o(y)g(receiv)o(e)i(bu\013ers)249
1736 y(as)h(w)o(ell.)27 b(Therefore,)19 b(messages)e(that)g(arriv)o(e)g
(but)g(are)h(no)e(longer)h(needed)i(as)e(a)g(result)g(of)g(some)249
1790 y(other)e(ev)o(en)o(t)f(in)g(an)f(application)g(can)h(b)q(e)g
(destro)o(y)o(ed)h(so)f(they)h(will)d(not)i(consume)f(bu\013er)i
(space.)249 1852 y(T)o(ypically)m(,)c(m)o(ultiple)g(send)j(and)g
(receiv)o(e)g(bu\013ers)h(are)f(not)f(needed,)i(and)e(the)h(user)g(can)
g(simply)d(use)249 1906 y(the)k(p)o(vm)p 403 1906 V 13
w(initsend)f(routine)g(to)g(reset)h(the)g(default)e(send)i(bu\013er.)
249 1968 y(There)f(are)g(sev)o(eral)f(cases)h(where)h(m)o(ultiple)10
b(bu\013ers)15 b(are)e(useful.)18 b(One)c(example)d(in)o(v)o(olv)o(es)h
(libraries)249 2022 y(or)i(graphical)f(in)o(terfaces)i(that)f(use)g
(PVM)g(and)g(in)o(teract)h(with)e(a)h(running)f(PVM)h(application)f
(but)249 2076 y(do)20 b(not)f(w)o(an)o(t)h(to)f(in)o(terfere)i(with)e
(the)i(application's)d(o)o(wn)h(comm)o(unication.)32
b(When)20 b(m)o(ultiple)249 2130 y(bu\013ers)c(are)f(used,)g(they)g
(generally)f(are)h(made)e(and)h(freed)i(for)e(eac)o(h)h(message)f(that)
h(is)f(pac)o(k)o(ed.)20 b(In)249 2184 y(fact,)c(p)o(vm)p
427 2184 V 13 w(initsend)g(simply)d(do)q(es)k(a)e(p)o(vm)p
945 2184 V 14 w(freebuf)h(follo)o(w)o(ed)e(b)o(y)h(a)h(p)o(vm)p
1437 2184 V 13 w(mkbuf)e(for)h(the)h(default)249 2238
y(bu\013er.)p eop
%%Page: 198 217
198 216 bop 249 251 a Fu(198)1321 b(App)q(endix)15 b(B)249
507 y Fr(Examples)274 574 y(C:)495 628 y Fs(bufid)20
b(=)i(pvm_mkbuf\()e(PvmDataDefault)f(\);)625 682 y(:)495
736 y(info)i(=)g(pvm_freebuf\()e(bufid)i(\);)274 790
y Fr(F)l(ortran:)495 844 y Fs(CALL)g(PVMFMKBUF\()e(PVMDEFAULT,)h(BUFID)
h(\))625 898 y(:)495 952 y(CALL)g(PVMFFREEBUF\()e(BUFID,)h(INFO)h(\))
249 1059 y Fr(Errors)249 1129 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 1129 14 2 v 15 w(freebuf)p FA(.)274 1197 y(Name)232
b(P)o(ossible)14 b(Cause)p 249 1215 1348 2 v 274 1252
a(PvmBadP)o(aram)58 b(giving)12 b(an)i(in)o(v)n(alid)e(argumen)o(t)h(v)
n(alue.)274 1306 y(PvmNoSuc)o(hBuf)49 b(giving)12 b(an)i(in)o(v)n(alid)
e(bu\014d)i(v)n(alue.)p eop
%%Page: 199 218
199 217 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(199)291
511 y FE(p)n(vmfgetinst\(\))730 b(p)n(vm)p 1565 511 21
2 v 25 w(getinst\(\))p 249 595 1591 16 v 249 658 a FA(Returns)15
b(the)f(instance)h(n)o(um)o(b)q(er)e(in)h(a)f(group)h(of)f(a)h(PVM)g
(pro)q(cess.)249 770 y Fr(Synopsis)274 836 y(C)173 b
Fs(int)21 b(inum)g(=)h(pvm)p 790 836 14 2 v 15 w(getinst\()e(char)h
(*group,)g(int)g(tid)g(\))274 890 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfgetinst\()f(group,)g(tid,)h(inum)g(\))249
997 y Fr(P)o(arameters)274 1056 y Fs(group)49 b FA({)g(c)o(haracter)16
b(string)e(group)f(name)g(of)g(an)h(existing)f(group.)274
1110 y Fs(tid)93 b FA({)49 b(in)o(teger)15 b(task)f(iden)o(ti\014er)g
(of)f(a)h(PVM)g(pro)q(cess.)274 1164 y Fs(inum)71 b FA({)49
b(in)o(teger)15 b(instance)g(n)o(um)o(b)q(er)f(returned)i(b)o(y)e(the)h
(routine.)k(Instance)d(n)o(um-)503 1217 y(b)q(ers)i(start)e(at)g(0)g
(and)g(coun)o(t)h(up.)25 b(V)m(alues)15 b(less)i(than)f(zero)h
(indicate)g(an)503 1271 y(error.)249 1379 y Fr(Discussion)249
1449 y FA(The)d(routine)f Fs(pvm)p 545 1449 V 15 w(getinst)f
FA(tak)o(es)h(a)g(group)g(name)f Fs(group)g FA(and)h(a)g(PVM)h(task)f
(iden)o(ti\014er)h Fs(tid)e FA(and)249 1503 y(returns)20
b(the)f(unique)g(instance)g(n)o(um)o(b)q(er)f(that)h(corresp)q(onds)h
(to)f(the)g(input.)32 b(If)18 b(p)o(vm)p 1663 1503 13
2 v 13 w(getinst)h(is)249 1557 y(successful,)c Fs(inum)e
FA(will)g(b)q(e)h Fn(>)p FA(=)e(0.)18 b(If)c(some)f(error)h(o)q(ccurs,)
h Fs(inum)e FA(will)g(b)q(e)h Fn(<)e FA(0.)249 1669 y
Fr(Examples)274 1736 y(C:)495 1790 y Fs(inum)21 b(=)g(pvm_getinst\()e
("worker",)h(pvm_mytid\(\))g(\);)495 1844 y(--------)495
1898 y(inum)h(=)g(pvm_getinst\()e("worker",)h(tid[i])h(\);)274
1952 y Fr(F)l(ortran:)495 2006 y Fs(CALL)g(PVMFGETINST\()e('GROUP3',)h
(TID,)h(INUM)g(\))249 2113 y Fr(Errors)249 2183 y FA(The)14
b(follo)o(wing)e(error)i(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f
Fs(pvm)p 1238 2183 14 2 v 15 w(getinst)p FA(.)274 2251
y(Name)250 b(P)o(ossible)14 b(Cause)p 249 2269 1367 2
v 274 2307 a(PvmSysErr)149 b(p)o(vmd)13 b(w)o(as)g(not)h(started)h(or)f
(has)g(crashed.)274 2361 y(PvmBadP)o(aram)76 b(giving)13
b(an)g(in)o(v)n(alid)f(tid)i(v)n(alue.)274 2414 y(PvmNoGroup)102
b(giving)13 b(a)g(nonexisten)o(t)i(group)f(name.)274
2468 y(PvmNotInGroup)48 b(sp)q(ecifying)14 b(a)g(group)f(in)h(whic)o(h)
g(the)g(tid)g(is)f(not)h(a)g(mem)o(b)q(er.)p eop
%%Page: 200 219
200 218 bop 249 251 a Fu(200)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfgetopt\(\))755 b(p)n(vm)p 1577 511 21
2 v 25 w(getopt\(\))p 249 595 1591 16 v 249 658 a FA(Sho)o(ws)14
b(v)n(arious)f(libp)o(vm)f(options.)249 770 y Fr(Synopsis)274
836 y(C)173 b Fs(int)21 b(val)h(=)f(pvm)p 768 836 14
2 v 15 w(getopt\()g(int)g(what)g(\))274 890 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfgetrbuf\()f(what,)g(val)i(\))249 997
y Fr(P)o(arameters)274 1056 y Fs(what)49 b FA({)h(In)o(teger)14
b(de\014ning)g(what)g(to)g(get.)k(Options)c(include)g(the)h(follo)o
(wing:)577 1110 y(Option)f(v)n(alue)120 b(Meaning)p 482
1127 1244 2 v 528 1165 a Fs(PvmRoute)157 b FA(1)50 b(routing)13
b(p)q(olicy)528 1219 y Fs(PvmDebugMask)69 b FA(2)50 b(debugmask)528
1273 y Fs(PvmAutoErr)113 b FA(3)50 b(auto)13 b(error)i(rep)q(orting)528
1327 y Fs(PvmOutputTid)69 b FA(4)50 b(stdout)14 b(device)h(for)f(c)o
(hildren)528 1381 y Fs(PvmOutputCode)47 b FA(5)j(output)14
b(msgtag)528 1435 y Fs(PvmTraceTid)91 b FA(6)50 b(trace)15
b(device)f(for)g(c)o(hildren)528 1489 y Fs(PvmTraceCode)69
b FA(7)50 b(trace)15 b(msgtag)528 1543 y Fs(PvmFragSize)91
b FA(8)50 b(message)14 b(fragmen)o(t)e(size)528 1597
y Fs(PvmResvTids)91 b FA(9)50 b(Allo)o(w)13 b(messages)g(to)h(reserv)o
(ed)i(tags)e(and)g(TIDs)p 482 1615 V 274 1706 a Fs(val)71
b FA({)50 b(In)o(teger)13 b(sp)q(ecifying)g(v)n(alue)g(of)f(option.)17
b(Prede\014ned)e(route)e(v)n(alues)g(are)g(as)482 1760
y(follo)o(ws:)588 1814 y(Option)h(v)n(alue)131 b(Meaning)p
482 1832 751 2 v 528 1870 a Fs(PvmRoute)179 b FA(1)50
b(routing)13 b(p)q(olicy)528 1924 y Fs(PvmDontRoute)91
b FA(1)528 1978 y Fs(PvmAllowDirect)47 b FA(2)528 2032
y Fs(PvmRouteDirect)g FA(3)p 482 2050 V 249 2195 a Fr(Discussion)249
2265 y FA(The)19 b(routine)g Fs(pvm)p 556 2265 14 2 v
15 w(getopt)e FA(allo)o(ws)h(the)h(user)h(to)e(see)i(the)f(v)n(alue)f
(of)h(options)f(set)h(in)g(PVM.)f(See)249 2319 y(p)o(vm)p
331 2319 13 2 v 13 w(setopt)d(for)f(a)f(description)i(of)e(options)h
(that)g(can)g(b)q(e)g(set.)p eop
%%Page: 201 220
201 219 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(201)249
507 y Fr(Examples)274 574 y(C:)495 628 y Fs(route_method)19
b(=)i(pvm_getopt\()f(PvmRoute)g(\);)274 682 y Fr(F)l(ortran:)495
736 y Fs(CALL)h(PVMFGETOPT\()e(PVMAUTOERR,)h(VAL)h(\))249
843 y Fr(Errors)249 913 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 913 14 2 v 15 w(getopt)p FA(.)274 981 y(Name)221
b(P)o(ossible)14 b(Cause)p 249 999 1338 2 v 274 1037
a(PvmBadP)o(aram)47 b(giving)13 b(an)g(in)o(v)n(alid)f(argumen)o(t.)p
eop
%%Page: 202 221
202 220 bop 249 251 a Fu(202)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfgetrbuf\(\))703 b(p)n(vm)p 1551 511 21
2 v 24 w(getrbuf\(\))p 249 595 1591 16 v 249 658 a FA(Returns)15
b(the)f(message)g(bu\013er)h(iden)o(ti\014er)f(for)g(the)g(activ)o(e)g
(receiv)o(e)h(bu\013er.)249 770 y Fr(Synopsis)274 836
y(C)173 b Fs(int)21 b(bufid)g(=)h(pvm)p 812 836 14 2
v 15 w(getrbuf\()e(void)h(\))274 890 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfgetrbuf\()f(bufid)g(\))249 997 y Fr(P)o(arameters)
274 1056 y Fs(bufid)49 b FA({)g(in)o(teger)10 b(the)h(returned)g
(message)f(bu\013er)g(iden)o(ti\014er)g(for)g(the)g(activ)o(e)g(receiv)
o(e)503 1110 y(bu\013er.)249 1217 y Fr(Discussion)249
1287 y FA(The)g(routine)g Fs(pvm)p 538 1287 V 15 w(getrbuf)f
FA(returns)i(the)f(message)g(bu\013er)g(iden)o(ti\014er)h
Fs(bufid)d FA(for)i(the)g(activ)o(e)g(receiv)o(e)249
1341 y(bu\013er)15 b(or)f(0)f(if)g(there)j(is)d(no)h(curren)o(t)h
(bu\013er.)249 1453 y Fr(Examples)274 1520 y(C:)495 1574
y Fs(bufid)20 b(=)i(pvm_getrbuf\(\);)274 1628 y Fr(F)l(ortran:)495
1682 y Fs(CALL)f(PVMFGETRBUF\()e(BUFID)i(\))249 1789
y Fr(Errors)249 1859 y FA(No)14 b(error)h(conditions)e(are)h(returned)i
(b)o(y)e Fs(pvm)p 980 1859 V 15 w(getrbuf)p FA(.)p eop
%%Page: 203 222
203 221 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(203)291
511 y FE(p)n(vmfgetsbuf\(\))705 b(p)n(vm)p 1552 511 21
2 v 25 w(getsbuf\(\))p 249 595 1591 16 v 249 658 a FA(Returns)15
b(the)f(message)g(bu\013er)h(iden)o(ti\014er)f(for)g(the)g(activ)o(e)g
(send)h(bu\013er.)249 770 y Fr(Synopsis)274 836 y(C)173
b Fs(int)21 b(bufid)g(=)h(pvm)p 812 836 14 2 v 15 w(getsbuf\()e(void)h
(\))274 890 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfgetsbuf\()f(bufid)g
(\))249 997 y Fr(P)o(arameters)274 1056 y Fs(bufid)49
b FA({)g(in)o(teger)15 b(the)g(returned)h(message)e(bu\013er)h(iden)o
(ti\014er)g(for)f(the)h(activ)o(e)f(send)503 1110 y(bu\013er.)249
1217 y Fr(Discussion)249 1287 y FA(The)g(routine)f Fs(pvm)p
545 1287 V 15 w(getsbuf)f FA(returns)j(the)e(message)g(bu\013er)i(iden)
o(ti\014er)e Fs(bufid)f FA(for)h(the)h(activ)o(e)f(send)249
1341 y(bu\013er)i(or)f(0)f(if)g(there)j(is)d(no)h(curren)o(t)h
(bu\013er.)249 1453 y Fr(Examples)274 1520 y(C:)495 1574
y Fs(bufid)20 b(=)i(pvm_getsbuf\(\);)274 1628 y Fr(F)l(ortran:)495
1682 y Fs(CALL)f(PVMFGETSBUF\()e(BUFID)i(\))249 1789
y Fr(Errors)249 1859 y FA(No)14 b(error)h(conditions)e(are)h(returned)i
(b)o(y)e Fs(pvm)p 980 1859 V 15 w(getsbuf)p FA(.)p eop
%%Page: 204 223
204 222 bop 249 251 a Fu(204)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfgettid\(\))784 b(p)n(vm)p 1592 511 21
2 v 25 w(gettid\(\))p 249 595 1591 16 v 249 658 a FA(Returns)15
b(the)f(tid)g(of)f(the)i(pro)q(cess)g(iden)o(ti\014ed)f(b)o(y)g(a)g
(group)f(name)g(and)h(instance)g(n)o(um)o(b)q(er.)249
770 y Fr(Synopsis)274 836 y(C)173 b Fs(int)21 b(tid)h(=)f(pvm)p
768 836 14 2 v 15 w(gettid\()g(char)g(*group,)f(int)h(inum)g(\))274
890 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfgettid\()f(group,)g(inum,)h
(tid)g(\))249 997 y Fr(P)o(arameters)274 1056 y Fs(group)49
b FA({)g(c)o(haracter)16 b(string)e(that)f(con)o(tains)h(the)h(name)d
(of)i(an)f(existing)h(group.)274 1110 y Fs(inum)71 b
FA({)49 b(in)o(teger)15 b(instance)f(n)o(um)o(b)q(er)f(of)h(the)g(pro)q
(cess)i(in)d(the)i(group.)274 1164 y Fs(tid)93 b FA({)49
b(in)o(teger)15 b(task)f(iden)o(ti\014er)g(returned.)249
1271 y Fr(Discussion)249 1341 y FA(The)e(routine)f Fs(pvm)p
541 1341 V 15 w(gettid)f FA(returns)i(the)g(tid)f(of)f(the)i(PVM)g(pro)
q(cess)g(iden)o(ti\014ed)g(b)o(y)f(the)g(group)g(name)249
1395 y Fs(group)16 b FA(and)g(the)i(instance)f(n)o(um)o(b)q(er)f
Fs(inum)p FA(.)26 b(If)16 b(p)o(vm)p 1103 1395 13 2 v
13 w(gettid)h(is)g(successful,)h Fs(tid)e FA(will)f(b)q(e)j
Fn(>)e FA(0.)26 b(If)249 1449 y(some)13 b(error)i(o)q(ccurs,)g
Fs(tid)e FA(will)f(b)q(e)j Fn(<)d FA(0.)249 1561 y Fr(Examples)274
1628 y(C:)538 1682 y Fs(tid)21 b(=)h(pvm_gettid\("worke)o(r",0\))o(;)
274 1736 y Fr(F)l(ortran:)560 1790 y Fs(CALL)f(PVMFGETTID\('worke)o
(r',5,)o(TID\))249 1897 y Fr(Errors)249 1967 y FA(The)14
b(follo)o(wing)e(error)i(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f
Fs(pvm)p 1238 1967 14 2 v 15 w(gettid)p FA(.)274 2035
y(Name)221 b(P)o(ossible)14 b(Cause)p 249 2053 1338 2
v 274 2091 a(PvmSysErr)120 b(Cannot)14 b(con)o(tact)h(the)g(lo)q(cal)e
(p)o(vmd)f(\(most)i(lik)o(ely)m(,)d(it)j(is)g(not)601
2145 y(running\).)274 2199 y(PvmBadP)o(aram)47 b(Bad)32
b(parameter)f(\(most)f(lik)o(ely)m(,)j(a)e(NULL)h(c)o(haracter)601
2253 y(string\).)274 2307 y(PvmNoGroup)73 b(No)14 b(group)g(exists)g(b)
o(y)g(that)g(name.)274 2361 y(PvmNoInst)119 b(No)14 b(suc)o(h)h
(instance)f(in)g(the)g(group.)p eop
%%Page: 205 224
205 223 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(205)291
511 y FE(p)n(vmfgsize\(\))852 b(p)n(vm)p 1626 511 21
2 v 25 w(gsize\(\))p 249 595 1591 16 v 249 658 a FA(Returns)15
b(the)f(n)o(um)o(b)q(er)f(of)h(mem)o(b)q(ers)e(curren)o(tly)j(in)f(the)
g(named)f(group.)249 770 y Fr(Synopsis)274 836 y(C)173
b Fs(int)21 b(size)g(=)h(pvm)p 790 836 14 2 v 15 w(gsize\()f(char)g
(*group)f(\))274 890 y Fr(F)l(ortran)48 b Fs(call)21
b(pvmfgsize\()f(group,)h(size)g(\))249 997 y Fr(P)o(arameters)274
1056 y Fs(group)49 b FA({)g(c)o(haracter)16 b(string)e(group)f(name)g
(of)g(an)h(existing)f(group.)274 1110 y Fs(size)71 b
FA({)49 b(in)o(teger)14 b(returning)f(the)h(n)o(um)o(b)q(er)e(of)g(mem)
o(b)q(ers)g(presen)o(tly)i(in)e(the)i(group.)503 1164
y(V)m(alues)g(less)h(than)e(zero)i(indicate)f(an)g(error.)249
1271 y Fr(Discussion)249 1341 y FA(The)h(routine)g Fs(pvm)p
548 1341 V 15 w(gsize)f FA(returns)i(the)f(size)g(of)f(the)i(group)e
(named)f Fs(group)p FA(.)20 b(If)14 b(there)i(is)e(an)h(error,)249
1395 y Fs(size)e FA(will)f(b)q(e)j(negativ)o(e.)249 1458
y(Since)c(groups)g(can)g(c)o(hange)g(dynamically)c(in)j(PVM)h(3,)g
(this)f(routine)h(can)g(guaran)o(tee)g(only)e(to)i(return)249
1512 y(the)k(instan)o(taneous)f(size)g(of)g(a)f(giv)o(en)h(group.)249
1624 y Fr(Examples)274 1690 y(C:)495 1744 y Fs(size)21
b(=)g(pvm_gsize\()f("worker")g(\);)274 1798 y Fr(F)l(ortran:)495
1852 y Fs(CALL)h(PVMFGSIZE\()e('group2',)h(SIZE)h(\))249
1959 y Fr(Errors)249 2030 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 2030 V 15 w(gsize)p FA(.)274 2097 y(Name)221 b(P)o(ossible)14
b(Cause)p 249 2115 1338 2 v 274 2153 a(PvmSysErr)120
b(p)o(vmd)13 b(w)o(as)g(not)h(started)h(or)f(has)g(crashed.)274
2207 y(PvmBadP)o(aram)47 b(giving)13 b(an)g(in)o(v)n(alid)f(group)i
(name.)p eop
%%Page: 206 225
206 224 bop 249 251 a Fu(206)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfhalt)958 b(p)n(vm)p 1652 511 21 2 v 24
w(halt\(\))p 249 595 1591 16 v 249 658 a FA(Sh)o(uts)14
b(do)o(wn)g(the)g(en)o(tire)h(PVM)f(system.)249 770 y
Fr(Synopsis)274 836 y(C)173 b Fs(int)21 b(info)g(=)h(pvm)p
790 836 14 2 v 15 w(halt\()f(void)g(\))274 890 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfhalt\()f(info)h(\))249 997 y Fr(P)o(arameters)274
1068 y Fs(info)49 b FA({)h(In)o(teger)14 b(returns)i(the)e(error)h
(status.)249 1180 y Fr(Discussion)249 1250 y FA(The)d(routine)f
Fs(pvm)p 541 1250 V 15 w(halt)g FA(sh)o(uts)h(do)o(wn)f(the)h(en)o
(tire)g(PVM)f(system)g(including)g(remote)g(tasks,)g(remote)249
1304 y(p)o(vmd,)h(the)i(lo)q(cal)f(tasks)i(\(including)e(the)h(calling)
f(task\),)g(and)h(the)h(lo)q(cal)e(p)o(vmd.)249 1416
y Fr(Errors)249 1487 y FA(The)h(follo)o(wing)e(error)i(condition)g(can)
g(b)q(e)g(returned)i(b)o(y)e Fs(pvm)p 1222 1487 V 15
w(halt)p FA(.)274 1555 y(Name)151 b(P)o(ossible)14 b(Cause)p
249 1572 1267 2 v 274 1610 a(PvmSysErr)50 b(lo)q(cal)13
b(p)o(vmd)f(is)i(not)g(resp)q(onding.)p eop
%%Page: 207 226
207 225 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(207)291
511 y FE(p)n(vmfhostsync\(\))622 b(p)n(vm)p 1510 511
21 2 v 25 w(hostsync\(\))p 249 595 1591 16 v 249 658
a FA(Gets)14 b(time-of-da)o(y)e(clo)q(c)o(k)i(from)e(PVM)i(host.)249
767 y Fr(Synopsis)274 827 y(C)173 b Fs(#include)20 b(<sys/time.h>)481
881 y(int)h(info)g(=)h(pvm)p 790 881 14 2 v 15 w(hostsync\()e(int)h
(host,)g(struct)g(timeval)f(*clk,)1048 935 y(struct)g(timeval)h(*delta)
f(\))274 989 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfhostsync\()e(host,)i
(clksec,)f(clkusec,)895 1043 y(deltasec,)g(deltausec,)g(info)h(\))249
1147 y Fr(P)o(arameters)274 1199 y Fs(host)217 b FA({)49
b(TID)14 b(of)f(host.)274 1253 y Fs(clk)g FA(or)274 1307
y Fs(clksec)g FA(and)274 1361 y Fs(clkusec)p FA(\))135
b({)49 b(Returns)15 b(time-of-da)o(y)c(clo)q(c)o(k)j(sample)f(from)f
(host.)274 1415 y Fs(delta)h FA(or)274 1469 y Fs(deltasec)f
FA(and)274 1523 y Fs(deltausec)p FA(\))91 b({)49 b(Returns)15
b(di\013erence)h(b)q(et)o(w)o(een)f(lo)q(cal)e(clo)q(c)o(k)h(and)g
(remote)f(host)i(clo)q(c)o(k.)249 1627 y Fr(Discussion)249
1691 y Fs(pvm)p 318 1691 V 15 w(hostsync\(\))j FA(samples)g(the)i
(time-of)e(da)o(y)h(clo)q(c)o(k)g(of)g(a)g(host)h(in)f(the)h(virtual)f
(mac)o(hine)f(and)249 1745 y(returns)e(b)q(oth)e(the)g(clo)q(c)o(k)g(v)
n(alue)f(and)h(the)g(di\013erence)i(b)q(et)o(w)o(een)f(lo)q(cal)e(and)h
(remote)g(clo)q(c)o(ks.)249 1804 y(T)m(o)k(reduce)i(the)g(delta)e
(error)i(due)f(to)g(message)f(transit)h(time,)f(lo)q(cal)g(clo)q(c)o(k)
h(samples)f(are)h(tak)o(en)249 1858 y(b)q(efore)13 b(and)e(after)i
(reading)e(the)i(remote)e(clo)q(c)o(k.)18 b(Delta)11
b(is)h(the)h(di\013erence)g(b)q(et)o(w)o(een)h(the)e(mean)f(lo)q(cal)
249 1912 y(clo)q(c)o(ks)j(and)g(remote)g(clo)q(c)o(k.)249
1971 y(Note)i(that)f(the)h(delta)f(time)f(can)i(b)q(e)g(negativ)o(e.)22
b(The)16 b(microseconds)f(\014eld)g(is)g(alw)o(a)o(ys)g(normalized)249
2025 y(to)f(0..999999,)d(while)i(the)h(sign)g(of)f(the)i(seconds)g
(\014eld)f(giv)o(es)g(the)g(sign)g(of)f(the)i(delta.)249
2084 y(In)f(C,)f(if)g Fs(clk)h FA(or)f Fs(delta)g FA(is)h(input)g(as)g
(a)f(n)o(ull)g(p)q(oin)o(ter,)h(that)g(parameter)f(is)h(not)g
(returned.)249 2193 y Fr(Errors)249 2257 y FA(The)g(follo)o(wing)e
(error)i(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f(.)p
Fs(pvm)p 1250 2257 V 14 w(synchost)274 2318 y FA(Name)180
b(P)o(ossible)14 b(Cause)p 249 2336 1297 2 v 274 2374
a(PvmSysErr)79 b(Lo)q(cal)14 b(p)o(vmd)e(is)i(not)g(resp)q(onding.)274
2428 y(PvmNoHost)64 b(no)14 b(suc)o(h)h(host.)274 2482
y(PvmHostF)m(ail)47 b(host)15 b(is)e(unreac)o(hable)i(\(and)f(th)o(us)g
(p)q(ossibly)g(failed\).)p eop
%%Page: 208 227
208 226 bop 249 251 a Fu(208)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vm\014nitsend\(\))664 b(p)n(vm)p 1531 511
21 2 v 25 w(initsend\(\))p 249 595 1591 16 v 249 658
a FA(Clears)14 b(default)g(send)h(bu\013er)f(and)g(sp)q(eci\014es)i
(message)d(enco)q(ding.)249 770 y Fr(Synopsis)274 836
y(C)173 b Fs(int)21 b(bufid)g(=)h(pvm)p 812 836 14 2
v 15 w(initsend\()e(int)h(encoding)f(\))274 890 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfinitsend\()e(encoding,)h(bufid)h(\))249
997 y Fr(P)o(arameters)274 1056 y Fs(encoding)48 b FA({)i(in)o(teger)14
b(sp)q(ecifying)g(the)g(next)h(message's)e(enco)q(ding)h(sc)o(heme.)569
1110 y(Options)g(in)f(C)h(are)g(as)g(follo)o(ws:)654
1164 y(Enco)q(ding)g(v)n(alue)109 b(Meaning)p 569 1181
805 2 v 615 1219 a Fs(PvmDataDefault)47 b FA(0)j(XDR)615
1273 y Fs(PvmDataRaw)135 b FA(1)50 b(no)14 b(enco)q(ding)615
1327 y Fs(PvmDataInPlace)47 b FA(2)j(data)13 b(left)h(in)g(place)p
569 1345 V 274 1437 a Fs(bufid)114 b FA({)50 b(in)o(teger)17
b(message)f(bu\013er)i(iden)o(ti\014er.)27 b(V)m(alues)16
b(less)i(than)e(zero)i(indicate)569 1491 y(an)13 b(error.)249
1598 y Fr(Discussion)249 1668 y FA(The)h(routine)f Fs(pvm)p
545 1668 14 2 v 15 w(initsend)e FA(clears)j(the)g(send)f(bu\013er)h
(and)f(prepares)i(it)e(for)f(pac)o(king)h(a)f(new)i(mes-)249
1722 y(sage.)21 b(The)15 b(enco)q(ding)h(sc)o(heme)f(used)g(for)g(this)
g(pac)o(king)f(is)g(set)i(b)o(y)f Fs(encoding)p FA(.)k(XDR)14
b(enco)q(ding)h(is)249 1776 y(used)f(b)o(y)f(default)g(b)q(ecause)i
(PVM)e(cannot)h(kno)o(w)e(whether)j(the)f(user)g(is)f(going)f(to)h(add)
g(a)g(heteroge-)249 1830 y(neous)i(mac)o(hine)d(b)q(efore)j(this)f
(message)g(is)g(sen)o(t.)19 b(If)13 b(the)i(user)g(kno)o(ws)f(that)g
(the)g(next)h(message)f(will)249 1884 y(b)q(e)g(sen)o(t)h(only)e(to)g
(a)h(mac)o(hine)e(that)i(understands)h(the)f(nativ)o(e)f(format,)f(he)i
(can)g(use)g FB(PvmDataR)n(aw)249 1938 y FA(enco)q(ding)g(and)g(sa)o(v)
o(e)g(on)g(enco)q(ding)g(costs.)249 2001 y(PvmDataInPlace)e(enco)q
(ding)i(sp)q(eci\014es)i(that)e(data)f(b)q(e)i(left)e(in)h(place)g
(during)f(pac)o(king.)18 b(The)c(mes-)249 2055 y(sage)f(bu\013er)h(con)
o(tains)f(only)f(the)i(sizes)g(and)e(p)q(oin)o(ters)i(to)f(the)g(items)
f(to)h(b)q(e)g(sen)o(t.)19 b(When)13 b(p)o(vm)p 1751
2055 13 2 v 13 w(send)249 2108 y(is)i(called,)g(the)g(items)f(are)i
(copied)f(directly)g(out)g(of)g(the)h(user's)g(memory)m(.)i(This)d
(option)f(decreases)249 2162 y(the)i(n)o(um)o(b)q(er)f(of)g(times)f(a)i
(message)f(is)g(copied,)h(at)f(the)h(exp)q(ense)i(of)d(requiring)g
(that)g(the)i(user)f(not)249 2216 y(mo)q(dify)f(the)j(items)f(b)q(et)o
(w)o(een)i(the)f(time)e(they)i(are)g(pac)o(k)o(ed)g(and)f(the)i(time)d
(they)i(are)g(sen)o(t.)30 b(The)249 2270 y(PvmDataInPlace)13
b(is)g(not)h(implemen)o(ted)e(in)h(PVM)h(3.2.)249 2333
y(If)i(p)o(vm)p 375 2333 V 14 w(initsend)h(is)f(successful,)j
Fs(bufid)d FA(will)f(con)o(tain)h(the)i(message)e(bu\013er)i(iden)o
(ti\014er.)27 b(If)16 b(some)249 2387 y(error)f(o)q(ccurs,)g
Fs(bufid)e FA(will)f(b)q(e)i Fn(<)e FA(0.)249 2449 y(See)j(also)e(p)o
(vm)p 488 2449 V 13 w(mkbuf.)p eop
%%Page: 209 228
209 227 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(209)249
507 y Fr(Examples)274 574 y(C:)495 628 y Fs(bufid)20
b(=)i(pvm_initsend\()d(PvmDataDefault)g(\);)495 682 y(info)i(=)g
(pvm_pkint\()f(array,)g(10,)i(1)f(\);)495 736 y(msgtag)f(=)i(3)f(;)495
790 y(info)g(=)g(pvm_send\()f(tid,)h(msgtag)g(\);)274
844 y Fr(F)l(ortran:)495 898 y Fs(CALL)g(PVMFINITSEND\(PV)o(MRAW,)d
(BUFID\))495 952 y(CALL)j(PVMFPACK\()e(REAL4,)i(DATA,)g(100,)g(1,)g
(INFO)g(\))495 1006 y(CALL)g(PVMFSEND\()e(TID,)i(3,)h(INFO)f(\))249
1112 y Fr(Errors)249 1183 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 1183 14 2 v 15 w(initsend)p FA(.)274 1251 y(Name)221
b(P)o(ossible)14 b(Cause)p 249 1269 1338 2 v 274 1306
a(PvmBadP)o(aram)47 b(giving)13 b(an)g(in)o(v)n(alid)f(enco)q(ding)i(v)
n(alue.)274 1360 y(PvmNoMem)97 b(Mallo)q(c)18 b(has)h(failed.)30
b(There)20 b(is)e(not)h(enough)f(memory)e(to)601 1414
y(create)g(the)e(bu\013er.)p eop
%%Page: 210 229
210 228 bop 249 251 a Fu(210)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfjoingroup\(\))568 b(p)n(vm)p 1483 511
21 2 v 25 w(joingroup\(\))p 249 595 1591 16 v 249 658
a FA(Enrolls)14 b(the)g(calling)f(pro)q(cess)i(in)f(a)f(named)g(group.)
249 770 y Fr(Synopsis)274 836 y(C)173 b Fs(int)21 b(inum)g(=)h(pvm)p
790 836 14 2 v 15 w(joingroup\()e(char)h(*group)f(\))274
890 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfjoingroup\()e(group,)i(inum)g
(\))249 997 y Fr(P)o(arameters)274 1056 y Fs(group)49
b FA({)g(c)o(haracter)16 b(string)e(group)f(name)g(of)g(an)h(existing)f
(group.)274 1110 y Fs(inum)71 b FA({)49 b(in)o(teger)15
b(instance)g(n)o(um)o(b)q(er)f(returned)i(b)o(y)e(the)h(routine.)k
(Instance)d(n)o(um-)503 1164 y(b)q(ers)i(start)e(at)g(0)g(and)g(coun)o
(t)h(up.)25 b(V)m(alues)15 b(less)i(than)f(zero)h(indicate)g(an)503
1217 y(error.)249 1325 y Fr(Discussion)249 1395 y FA(The)10
b(routine)g Fs(pvm)p 538 1395 V 15 w(joingroup)e FA(enrolls)i(the)g
(calling)e(task)i(in)g(the)g(group)g(named)e Fs(group)h
FA(and)g(returns)249 1449 y(the)17 b(instance)g(n)o(um)o(b)q(er)f
Fs(inum)f FA(of)h(this)g(task)g(in)g(this)g(group.)25
b(If)16 b(there)i(is)e(an)g(error,)h Fs(inum)f FA(will)e(b)q(e)249
1503 y(negativ)o(e.)249 1566 y(Instance)19 b(n)o(um)o(b)q(ers)e(start)h
(at)f(0)g(and)g(coun)o(t)h(up.)28 b(When)18 b(using)f(groups,)h(a)f
(\(group,)h(in)o(um\))d(pair)249 1619 y(uniquely)h(iden)o(ti\014es)h(a)
g(PVM)g(pro)q(cess.)28 b(This)16 b(is)h(consisten)o(t)h(with)e(the)h
(previous)g(PVM)g(naming)249 1673 y(sc)o(hemes.)g(If)10
b(a)g(task)h(lea)o(v)o(es)f(a)g(group)g(b)o(y)g(calling)f(p)o(vm)p
1101 1673 13 2 v 13 w(lvgroup)h(and)g(later)g(rejoins)g(the)h(same)f
(group,)249 1727 y(the)18 b(task)f(is)g(not)g(guaran)o(teed)g(to)g(get)
g(the)h(same)e(instance)i(n)o(um)o(b)q(er.)27 b(PVM)17
b(attempts)g(to)f(reuse)249 1781 y(old)g(instance)i(n)o(um)o(b)q(ers;)f
(th)o(us,)g(when)g(a)g(task)g(joins)f(a)g(group,)h(it)f(will)f(get)i
(the)h(lo)o(w)o(est)e(a)o(v)n(ailable)249 1835 y(instance)f(n)o(um)o(b)
q(er.)i(A)d(PVM)g(3)g(task)g(can)g(b)q(e)g(a)g(mem)o(b)q(er)e(of)i(m)o
(ultiple)d(groups)j(sim)o(ultaneously)m(.)249 1947 y
Fr(Examples)274 2014 y(C:)495 2068 y Fs(inum)21 b(=)g(pvm_joingroup\()e
("worker")h(\);)274 2122 y Fr(F)l(ortran:)495 2176 y
Fs(CALL)h(PVMFJOINGROUP\()d('group2',)i(INUM)h(\))249
2283 y Fr(Errors)249 2353 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 2353 14 2 v 15 w(joingroup)p FA(.)p eop
%%Page: 211 230
211 229 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(211)274
504 y FA(Name)222 b(P)o(ossible)14 b(Cause)p 249 521
1338 2 v 274 559 a(PvmSysErr)121 b(p)o(vmd)12 b(w)o(as)i(not)g(started)
h(or)f(has)g(crashed.)274 613 y(PvmBadP)o(aram)48 b(giving)12
b(a)i(NULL)g(group)g(name.)274 667 y(PvmDupGroup)48 b(trying)14
b(to)f(join)g(a)h(group)g(one)g(is)f(already)h(in.)p
eop
%%Page: 212 231
212 230 bop 249 251 a Fu(212)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfkill\(\))949 b(p)n(vm)p 1675 511 21 2
v 25 w(kill\(\))p 249 595 1591 16 v 249 658 a FA(T)m(erminates)13
b(a)h(sp)q(eci\014ed)h(PVM)f(pro)q(cess.)249 770 y Fr(Synopsis)274
836 y(C)173 b Fs(int)21 b(info)g(=)h(pvm)p 790 836 14
2 v 15 w(kill\()f(int)g(tid)g(\))274 890 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfkill\()f(tid,)h(info)g(\))249 997
y Fr(P)o(arameters)274 1056 y Fs(tid)71 b FA({)50 b(in)o(teger)24
b(task)g(iden)o(ti\014er)g(of)f(the)i(PVM)f(pro)q(cess)h(to)f(b)q(e)h
(killed)d(\(not)482 1110 y(y)o(ourself)s(\).)274 1164
y Fs(info)49 b FA({)h(in)o(teger)12 b(status)g(co)q(de)g(returned)i(b)o
(y)d(the)h(routine.)17 b(V)m(alues)12 b(less)g(than)g(zero)482
1217 y(indicate)h(an)h(error.)249 1325 y Fr(Discussion)249
1395 y FA(The)i(routine)g Fs(pvm)p 550 1395 V 15 w(kill)e
FA(sends)j(a)e(terminate)g(\(SIGTERM\))g(signal)g(to)g(the)h(PVM)g(pro)
q(cess)h(iden-)249 1449 y(ti\014ed)i(b)o(y)g Fs(tid)p
FA(.)33 b(In)19 b(the)h(case)g(of)e(m)o(ultipro)q(cessors)h(the)h
(terminate)f(signal)f(is)h(replaced)h(with)e(a)249 1503
y(host-dep)q(enden)o(t)e(metho)q(d)e(for)f(killing)f(a)i(pro)q(cess.)21
b(If)14 b(p)o(vm)p 1202 1503 13 2 v 13 w(kill)f(is)h(successful,)i
Fs(info)d FA(will)g(b)q(e)i(0.)j(If)249 1557 y(some)13
b(error)i(o)q(ccurs,)g Fs(info)e FA(will)f(b)q(e)j Fn(<)c
FA(0.)249 1619 y(p)o(vm)p 331 1619 V 13 w(kill)j(is)g(not)h(designed)g
(to)g(kill)e(the)i(calling)f(pro)q(cess.)22 b(T)m(o)14
b(kill)f(y)o(ourself)i(in)f(C)g(call)g(p)o(vm)p 1731
1619 V 14 w(exit\(\))249 1673 y(follo)o(w)o(ed)e(b)o(y)i(exit\(\).)k(T)
m(o)13 b(kill)g(y)o(ourself)g(in)h(F)m(ortran,)f(call)g(p)o(vmfexit)f
(follo)o(w)o(ed)g(b)o(y)i(stop.)249 1785 y Fr(Examples)274
1852 y(C:)495 1906 y Fs(info)21 b(=)g(pvm_kill\()f(tid)h(\);)274
1960 y Fr(F)l(ortran:)495 2014 y Fs(CALL)g(PVMFKILL\()e(TID,)i(INFO)g
(\))249 2121 y Fr(Errors)249 2191 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 2191 14 2 v 15 w(kill)p FA(.)274 2259 y(Name)221
b(P)o(ossible)14 b(Cause)p 249 2277 1338 2 v 274 2315
a(PvmBadP)o(aram)47 b(giving)13 b(an)g(in)o(v)n(alid)f(tid)i(v)n(alue.)
274 2369 y(PvmSysErr)120 b(p)o(vmd)13 b(not)g(resp)q(onding.)p
eop
%%Page: 213 232
213 231 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(213)291
511 y FE(p)n(vm\015vgroup\(\))685 b(p)n(vm)p 1540 511
21 2 v 25 w(lvgroup\(\))p 249 595 1591 16 v 249 658 a
FA(Unenrolls)14 b(the)h(calling)d(pro)q(cess)k(from)c(a)h(named)g
(group.)249 770 y Fr(Synopsis)274 836 y(C)173 b Fs(int)21
b(info)g(=)h(pvm)p 790 836 14 2 v 15 w(lvgroup\()e(char)h(*group)g(\))
274 890 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmflvgroup\()f(group,)g
(info)h(\))249 997 y Fr(P)o(arameters)274 1056 y Fs(group)49
b FA({)g(c)o(haracter)16 b(string)e(group)f(name)g(of)g(an)h(existing)f
(group.)274 1110 y Fs(info)71 b FA({)49 b(in)o(teger)12
b(status)h(co)q(de)f(returned)h(b)o(y)f(the)g(routine.)17
b(V)m(alues)12 b(less)g(than)f(zero)503 1164 y(indicate)j(an)g(error.)
249 1271 y Fr(Discussion)249 1341 y FA(The)h(routine)f
Fs(pvm)p 547 1341 V 15 w(lvgroup)f FA(unenrolls)h(the)h(calling)e(pro)q
(cess)j(from)c(the)j(group)f(named)f Fs(group)p FA(.)18
b(If)249 1395 y(there)d(is)f(an)g(error,)g Fs(info)f
FA(will)f(b)q(e)j(negativ)o(e.)249 1458 y(If)g(a)f(pro)q(cess)j(lea)o
(v)o(es)e(a)g(group)g(b)o(y)g(calling)e(either)j(p)o(vm)p
1140 1458 13 2 v 14 w(lvgroup)e(or)h(p)o(vm)p 1438 1458
V 13 w(exit,)g(and)g(later)g(rejoins)249 1512 y(the)20
b(same)f(group,)h(the)g(pro)q(cess)h(ma)o(y)d(b)q(e)i(assigned)g(a)f
(new)h(instance)g(n)o(um)o(b)q(er.)34 b(Old)19 b(instance)249
1566 y(n)o(um)o(b)q(ers)14 b(are)g(reassigned)h(to)f(pro)q(cesses)i
(calling)d(p)o(vm)p 1129 1566 V 13 w(joingroup.)249 1678
y Fr(Examples)274 1744 y(C:)495 1798 y Fs(info)21 b(=)g(pvm_lvgroup\()e
("worker")i(\);)274 1852 y Fr(F)l(ortran:)495 1906 y
Fs(CALL)g(PVMFLVGROUP\()e('group2',)h(INFO)h(\))249 2013
y Fr(Errors)249 2084 y FA(The)14 b(follo)o(wing)e(error)i(conditions)g
(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p 1238 2084
14 2 v 15 w(lvgroup)p FA(.)274 2151 y(Name)250 b(P)o(ossible)14
b(Cause)p 249 2169 1367 2 v 274 2207 a(PvmSysErr)149
b(p)o(vmd)13 b(not)g(resp)q(onding.)274 2261 y(PvmBadP)o(aram)76
b(giving)13 b(a)g(NULL)h(group)g(name.)274 2315 y(PvmNoGroup)102
b(giving)13 b(a)g(nonexisten)o(t)i(group)f(name.)274
2369 y(PvmNotInGroup)48 b(asking)14 b(to)f(lea)o(v)o(e)h(a)g(group)f
(one)h(is)g(not)g(a)f(mem)o(b)q(er)g(of.)p eop
%%Page: 214 233
214 232 bop 249 251 a Fu(214)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfmcast\(\))788 b(p)n(vm)p 1594 511 21
2 v 25 w(mcast\(\))p 249 595 1591 16 v 249 658 a FA(Multicasts)14
b(the)h(data)e(in)h(the)g(activ)o(e)g(message)g(bu\013er)h(to)e(a)h
(set)h(of)e(tasks.)249 770 y Fr(Synopsis)274 836 y(C)173
b Fs(int)21 b(info)g(=)h(pvm)p 790 836 14 2 v 15 w(mcast\()f(int)g
(*tids,)f(int)i(ntask,)e(int)h(msgtag)g(\))274 890 y
Fr(F)l(ortran)48 b Fs(call)21 b(pvmfmcast\()f(ntask,)h(tids,)f(msgtag,)
h(info)g(\))249 997 y Fr(P)o(arameters)274 1056 y Fs(ntask)71
b FA({)49 b(in)o(teger)14 b(sp)q(ecifying)g(the)h(n)o(um)o(b)q(er)e(of)
g(tasks)i(to)e(b)q(e)i(sen)o(t)g(to.)274 1110 y Fs(tids)93
b FA({)49 b(in)o(teger)15 b(arra)o(y)f(of)g(length)h(at)f(least)h
Fs(ntask)e FA(con)o(taining)g(the)j(task)e(IDs)h(of)525
1164 y(the)g(tasks)f(to)g(b)q(e)g(sen)o(t)h(to.)274 1217
y Fs(msgtag)49 b FA({)g(in)o(teger)11 b(message)e(tag)h(supplied)g(b)o
(y)g(the)h(user.)18 b(msgtag)8 b(should)i(b)q(e)h Fn(>)p
FA(=)h(0.)274 1271 y Fs(info)93 b FA({)49 b(in)o(teger)12
b(status)g(co)q(de)h(returned)g(b)o(y)e(the)i(routine.)k(V)m(alues)11
b(less)i(than)e(zero)525 1325 y(indicate)j(an)g(error.)249
1433 y Fr(Discussion)249 1503 y FA(The)j(routine)f Fs(pvm)p
551 1503 V 15 w(mcast)g FA(m)o(ulticasts)f(a)h(message)g(stored)h(in)f
(the)h(activ)o(e)f(send)i(bu\013er)f(to)f Fs(ntask)249
1557 y FA(tasks)f(sp)q(eci\014ed)h(in)f(the)g Fs(tids)f
FA(arra)o(y)m(.)19 b(The)d(message)e(is)g(not)h(sen)o(t)h(to)e(the)h
(caller)g(ev)o(en)g(if)f(its)h(tid)f(is)249 1611 y(in)h
Fs(tids)p FA(.)23 b(The)16 b(con)o(ten)o(t)g(of)f(the)h(message)g(can)f
(b)q(e)i(distinguished)e(b)o(y)h Fs(msgtag)p FA(.)22
b(If)15 b(p)o(vm)p 1682 1611 13 2 v 13 w(mcast)g(is)249
1665 y(successful,)g Fs(info)e FA(will)g(b)q(e)h(0.)k(If)13
b(some)g(error)i(o)q(ccurs,)g Fs(info)e FA(will)g(b)q(e)h
Fn(<)e FA(0.)249 1727 y(The)f(receiving)h(pro)q(cesses)h(can)e(call)g
(either)g(p)o(vm)p 1022 1727 V 14 w(recv)h(or)f(p)o(vm)p
1250 1727 V 13 w(nrecv)h(to)f(receiv)o(e)h(their)f(cop)o(y)g(of)f(the)
249 1781 y(m)o(ulticast.)19 b(p)o(vm)p 531 1781 V 13
w(mcast)14 b(is)h(async)o(hronous.)21 b(Computation)12
b(on)j(the)g(sending)g(pro)q(cessor)i(resumes)249 1835
y(as)12 b(so)q(on)g(as)g(the)g(message)f(is)h(safely)g(on)f(its)h(w)o
(a)o(y)f(to)h(the)g(receiving)g(pro)q(cessors.)20 b(This)11
b(is)h(in)f(con)o(trast)249 1889 y(to)f(sync)o(hronous)i(comm)o(uni)o
(cation,)c(during)i(whic)o(h)g(computation)e(on)j(the)f(sending)h(pro)q
(cessor)h(halts)249 1943 y(un)o(til)h(the)i(matc)o(hing)d(receiv)o(e)j
(is)f(executed)h(b)o(y)f(the)g(receiving)h(pro)q(cessor.)249
2006 y(p)o(vm)p 331 2006 V 13 w(mcast)e(\014rst)i(determines)f(whic)o
(h)g(other)g(p)o(vmds)f(con)o(tain)g(the)i(sp)q(eci\014ed)g(tasks.)j
(Then)d(passes)249 2059 y(the)j(message)e(to)h(these)h(p)o(vmds,)e
(whic)o(h)h(in)f(turn)i(distribute)f(the)h(message)e(to)h(their)h(lo)q
(cal)e(tasks)249 2113 y(without)e(further)g(net)o(w)o(ork)g(tra\016c.)
249 2176 y(Multicasting)j(is)g(not)h(supp)q(orted)g(b)o(y)g(most)e(m)o
(ultipro)q(cessor)h(v)o(endors.)30 b(T)o(ypically)16
b(their)h(nativ)o(e)249 2230 y(calls)d(supp)q(ort)h(only)e
(broadcasting)i(to)f FB(al)r(l)f FA(the)i(user's)h(pro)q(cesses)g(on)f
(a)e(m)o(ultipro)q(cessor.)19 b(Because)249 2284 y(of)f(this)g
(omission,)f(p)o(vm)p 654 2284 V 13 w(mcast)g(ma)o(y)g(not)h(b)q(e)g
(an)g(e\016cien)o(t)h(comm)o(unicatio)o(n)d(metho)q(d)h(on)h(some)249
2338 y(m)o(ultipro)q(cessors)c(except)h(in)f(the)g(sp)q(ecial)g(case)h
(of)e(broadcasting)h(to)g(all)f(PVM)h(pro)q(cesses.)p
eop
%%Page: 215 234
215 233 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(215)249
507 y Fr(Examples)274 574 y(C:)495 628 y Fs(info)21 b(=)g
(pvm_initsend\()e(PvmDataRaw)h(\);)495 682 y(info)h(=)g(pvm_pkint\()f
(array,)g(10,)i(1)f(\);)495 736 y(msgtag)f(=)i(5)f(;)495
790 y(info)g(=)g(pvm_mcast\()f(tids,)h(ntask,)f(msgtag)h(\);)274
844 y Fr(F)l(ortran:)495 898 y Fs(CALL)g(PVMFINITSEND\(PV)o(MDEFA)o
(ULT\))495 952 y(CALL)g(PVMFPACK\()e(REAL4,)i(DATA,)g(100,)g(1,)g(INFO)
g(\))495 1006 y(CALL)g(PVMFMCAST\()e(NPROC,)i(TIDS,)g(5,)g(INFO)g(\))
249 1112 y Fr(Errors)249 1183 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 1183 14 2 v 15 w(mcast)p FA(..)274 1251 y(Name)221
b(P)o(ossible)14 b(Cause)p 249 1269 1338 2 v 274 1306
a(PvmBadP)o(aram)47 b(giving)13 b(a)g(msgtag)f Fn(<)g
FA(0.)274 1360 y(PvmSysErr)120 b(p)o(vmd)13 b(not)g(resp)q(onding.)274
1414 y(PvmNoBuf)124 b(no)14 b(send)h(bu\013er.)p eop
%%Page: 216 235
216 234 bop 249 251 a Fu(216)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfmkbuf\(\))757 b(p)n(vm)p 1578 511 21
2 v 25 w(mkbuf\(\))p 249 595 1591 16 v 249 658 a FA(Creates)15
b(a)f(new)g(message)g(bu\013er.)249 770 y Fr(Synopsis)274
836 y(C)173 b Fs(int)21 b(bufid)g(=)h(pvm)p 812 836 14
2 v 15 w(mkbuf\()e(int)i(encoding)e(\))274 890 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfmkbuf\()f(encoding,)g(bufid)h(\))249
997 y Fr(P)o(arameters)274 1056 y Fs(encoding)48 b FA({)i(in)o(teger)14
b(sp)q(ecifying)g(the)g(bu\013er's)h(enco)q(ding)f(sc)o(heme.)569
1110 y(Options)g(in)f(C)h(are)g(as)g(follo)o(ws:)654
1164 y(Enco)q(ding)g(v)n(alue)109 b(Meaning)p 569 1181
805 2 v 615 1219 a Fs(PvmDataDefault)47 b FA(0)j(XDR)615
1273 y Fs(PvmDataRaw)135 b FA(1)50 b(no)14 b(enco)q(ding)615
1327 y Fs(PvmDataInPlace)47 b FA(2)j(data)13 b(left)h(in)g(place)p
569 1345 V 274 1437 a Fs(bufid)114 b FA({)50 b(in)o(teger)16
b(message)f(bu\013er)h(iden)o(ti\014er)g(returned.)25
b(V)m(alues)15 b(less)h(than)g(zero)569 1491 y(indicate)e(an)f(error.)
249 1598 y Fr(Discussion)249 1668 y FA(The)20 b(routine)f
Fs(pvm)p 557 1668 14 2 v 16 w(mkbuf)f FA(creates)j(a)e(new)h(message)f
(bu\013er)h(and)f(sets)i(its)e(enco)q(ding)h(status)g(to)249
1722 y Fs(encoding)p FA(.)25 b(If)16 b(p)o(vm)p 588 1722
13 2 v 14 w(mkbuf)f(is)h(successful,)j Fs(bufid)d FA(will)f(b)q(e)i
(the)h(iden)o(ti\014er)f(for)f(the)h(new)h(bu\013er,)249
1776 y(whic)o(h)c(can)g(b)q(e)g(used)h(as)f(a)g(send)h(bu\013er.)k(If)
13 b(some)g(error)i(o)q(ccurs,)g Fs(bufid)e FA(will)f(b)q(e)j
Fn(<)c FA(0.)249 1839 y(With)h(the)h(default)e(setting)i(XDR)f(enco)q
(ding)g(is)g(used)i(when)e(pac)o(king)g(the)h(message)f(b)q(ecause)i
(PVM)249 1893 y(cannot)21 b(kno)o(w)f(whether)j(the)e(user)h(is)f
(going)e(to)i(add)g(a)f(heterogeneous)j(mac)o(hine)c(b)q(efore)j(this)
249 1947 y(message)d(is)g(sen)o(t.)36 b(The)20 b(other)g(options)f(to)g
(enco)q(ding)h(allo)o(w)e(the)i(user)g(to)g(tak)o(e)f(adv)n(an)o(tage)g
(of)249 2001 y(kno)o(wledge)14 b(ab)q(out)f(his)h(virtual)f(mac)o(hine)
f(ev)o(en)i(when)g(it)g(is)f(heterogeneous.)20 b(F)m(or)14
b(example,)e(if)g(the)249 2055 y(user)17 b(kno)o(ws)e(that)h(the)g
(next)g(message)f(will)f(b)q(e)j(sen)o(t)f(only)f(to)g(a)g(mac)o(hine)g
(that)g(understands)i(the)249 2108 y(nativ)o(e)d(format,)d(he)k(can)f
(use)g Fs(PvmDataRaw)e FA(enco)q(ding)i(and)g(sa)o(v)o(e)g(on)g(enco)q
(ding)g(costs.)249 2171 y(PvmDataInPlace)e(enco)q(ding)i(sp)q
(eci\014es)i(that)e(data)f(b)q(e)i(left)e(in)h(place)g(during)f(pac)o
(king.)18 b(The)c(mes-)249 2225 y(sage)f(bu\013er)h(con)o(tains)f(only)
f(the)i(sizes)g(and)e(p)q(oin)o(ters)i(to)f(the)g(items)f(to)h(b)q(e)g
(sen)o(t.)19 b(When)13 b(p)o(vm)p 1751 2225 V 13 w(send)249
2279 y(is)i(called,)g(the)g(items)f(are)i(copied)f(directly)g(out)g(of)
g(the)h(user's)g(memory)m(.)i(This)d(option)f(decreases)249
2333 y(the)j(n)o(um)o(b)q(er)e(of)h(times)f(a)h(message)g(is)g(copied)h
(at)f(the)h(exp)q(ense)h(of)e(requiring)g(that)g(the)h(user)g(not)249
2387 y(mo)q(dify)e(the)j(items)f(b)q(et)o(w)o(een)i(the)f(time)e(they)i
(are)g(pac)o(k)o(ed)g(and)f(the)i(time)d(they)i(are)g(sen)o(t.)30
b(The)249 2441 y(PvmDataInPlace)13 b(is)g(also)h(not)f(implemen)o(ted)f
(in)h(PVM)i(3.2.)p eop
%%Page: 217 236
217 235 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(217)249
507 y FA(p)o(vm)p 331 507 13 2 v 13 w(mkbuf)11 b(is)h(required)i(if)d
(the)i(user)h(wishes)f(to)f(manage)f(m)o(ultiple)f(message)i(bu\013ers)
i(and)e(should)249 561 y(b)q(e)i(used)g(in)f(conjunction)g(with)g(p)o
(vm)p 847 561 V 13 w(freebuf.)18 b(p)o(vm)p 1094 561
V 14 w(freebuf)c(should)f(b)q(e)g(called)g(for)g(a)g(send)h(bu\013er)
249 615 y(after)g(a)g(message)f(has)h(b)q(een)h(sen)o(t)g(and)f(is)g
(no)f(longer)h(needed.)249 677 y(Receiv)o(e)h(bu\013ers)h(are)f
(created)h(automatically)c(b)o(y)i(the)i(p)o(vm)p 1228
677 V 13 w(recv)g(and)e(p)o(vm)p 1492 677 V 13 w(nrecv)i(routines)f
(and)249 731 y(do)f(not)g(ha)o(v)o(e)f(to)h(b)q(e)g(freed)h(unless)g
(they)f(ha)o(v)o(e)g(b)q(een)h(explicitly)e(sa)o(v)o(ed)h(with)g(p)o
(vm)p 1565 731 V 13 w(setrbuf.)249 794 y(T)o(ypically)e(m)o(ultiple)g
(send)j(and)f(receiv)o(e)h(bu\013ers)g(are)g(not)f(needed,)h(and)e(the)
i(user)g(can)f(simply)e(use)249 848 y(the)j(p)o(vm)p
403 848 V 13 w(initsend)f(routine)g(to)g(reset)h(the)g(default)e(send)i
(bu\013er.)249 910 y(There)20 b(are)e(sev)o(eral)h(cases)h(where)f(m)o
(ultiple)d(bu\013ers)k(are)f(useful.)31 b(One)19 b(example)e(where)j(m)
o(ulti-)249 964 y(ple)d(message)f(bu\013ers)i(are)g(needed)g(in)o(v)o
(olv)o(es)e(libraries)g(or)h(graphical)f(in)o(terfaces)h(that)g(use)h
(PVM)249 1018 y(and)h(in)o(teract)h(with)f(a)g(running)g(PVM)g
(application)f(but)h(do)g(not)g(w)o(an)o(t)g(to)g(in)o(terfere)i(with)d
(the)249 1072 y(application's)12 b(o)o(wn)i(comm)o(unicatio)o(n.)249
1134 y(When)e(m)o(ultiple)e(bu\013ers)j(are)g(used,)f(they)h(generally)
e(are)i(made)e(and)g(freed)i(for)f(eac)o(h)g(message)g(that)249
1188 y(is)i(pac)o(k)o(ed.)249 1300 y Fr(Examples)274
1367 y(C:)495 1421 y Fs(bufid)20 b(=)i(pvm_mkbuf\()e(PvmDataRaw)f(\);)
538 1475 y(/*)j(send)f(the)g(message)f(*/)495 1529 y(info)h(=)g
(pvm_freebuf\()e(bufid)i(\);)274 1583 y Fr(F)l(ortran:)495
1637 y Fs(CALL)g(PVMFMKBUF\(PVMDE)o(FAULT)o(,)e(MBUF\))274
1690 y(*)220 b(SEND)21 b(MESSAGE)g(HERE)495 1744 y(CALL)g
(PVMFFREEBUF\()e(MBUF,)i(INFO)g(\))249 1851 y Fr(Errors)249
1922 y FA(The)14 b(follo)o(wing)e(error)i(condition)g(can)g(b)q(e)g
(returned)i(b)o(y)e Fs(pvm)p 1222 1922 14 2 v 15 w(mkbuf)p
FA(.)274 1990 y(Name)221 b(P)o(ossible)14 b(Cause)p 249
2008 1338 2 v 274 2045 a(PvmBadP)o(aram)47 b(giving)13
b(an)g(in)o(v)n(alid)f(enco)q(ding)i(v)n(alue.)274 2099
y(PvmNoMem)97 b(Mallo)q(c)18 b(has)h(failed.)30 b(There)20
b(is)e(not)h(enough)f(memory)e(to)601 2153 y(create)g(the)e(bu\013er.)p
eop
%%Page: 218 237
218 236 bop 249 251 a Fu(218)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfmstat\(\))796 b(p)n(vm)p 1598 511 21
2 v 24 w(mstat\(\))p 249 595 1591 16 v 249 658 a FA(Returns)15
b(the)f(status)h(of)e(a)h(host)g(in)f(the)i(virtual)e(mac)o(hine.)249
770 y Fr(Synopsis)274 836 y(C)173 b Fs(int)21 b(mstat)g(=)h(pvm)p
812 836 14 2 v 15 w(mstat\()e(char)h(*host)g(\))274 890
y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfmstat\()f(host,)h(mstat)g(\))249
997 y Fr(P)o(arameters)274 1056 y Fs(host)71 b FA({)49
b(c)o(haracter)16 b(string)e(con)o(taining)e(the)j(host)f(name.)274
1110 y Fs(mstat)49 b FA({)g(in)o(teger)15 b(returning)f(mac)o(hine)f
(status:)596 1164 y(V)m(alue)117 b(Meaning)p 503 1181
1160 2 v 528 1219 a(PvmOk)147 b(host)14 b(is)g(OK)528
1273 y(PvmNoHost)65 b(host)14 b(is)g(not)f(in)h(virtual)f(mac)o(hine)
528 1327 y(PvmHostF)m(ail)48 b(host)14 b(is)g(unreac)o(hable)g(\(and)g
(th)o(us)g(p)q(ossibly)g(failed\))p 503 1345 V 249 1436
a Fr(Discussion)249 1507 y FA(The)c(routine)f Fs(pvm)p
537 1507 14 2 v 15 w(mstat)g FA(returns)h(the)g(status)g
Fs(mstat)f FA(of)f(the)i(computer)f(named)f Fs(host)h
FA(with)g(resp)q(ect)249 1561 y(to)14 b(running)f(PVM)i(pro)q(cesses.)
20 b(This)14 b(routine)g(can)h(b)q(e)f(used)h(to)f(determine)f(whether)
j(a)d(particular)249 1614 y(host)h(has)g(failed)f(and)h(whether)h(the)g
(virtual)e(mac)o(hine)f(needs)j(to)f(b)q(e)h(recon\014gured.)249
1727 y Fr(Examples)274 1793 y(C:)495 1847 y Fs(mstat)20
b(=)i(pvm_mstat\()e("msr.ornl.gov")f(\);)274 1901 y Fr(F)l(ortran:)495
1955 y Fs(CALL)i(PVMFMSTAT\()e('msr.ornl.gov',)g(MSTAT)i(\))249
2062 y Fr(Errors)249 2133 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 2133 V 15 w(mstat)p FA(.)274 2200 y(Name)180 b(P)o(ossible)14
b(Cause)p 249 2218 1297 2 v 274 2256 a(PvmSysErr)79 b(p)o(vmd)13
b(not)h(resp)q(onding.)274 2310 y(PvmNoHost)64 b(giving)13
b(a)g(host)i(name)d(not)i(in)f(the)i(virtual)e(mac)o(hine.)274
2364 y(PvmHostF)m(ail)47 b(host)15 b(is)e(unreac)o(hable)i(\(and)f(th)o
(us)g(p)q(ossibly)g(failed\).)p eop
%%Page: 219 238
219 237 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(219)291
511 y FE(p)n(vmfm)n(ytid\(\))786 b(p)n(vm)p 1593 511
21 2 v 25 w(m)n(ytid\(\))p 249 595 1591 16 v 249 658
a FA(Returns)15 b(the)f FB(tid)g FA(of)f(the)i(pro)q(cess.)249
769 y Fr(Synopsis)274 835 y(C)173 b Fs(int)21 b(tid)h(=)f(pvm)p
768 835 14 2 v 15 w(mytid\()g(void)g(\))274 889 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfmytid\()f(tid)h(\))249 995 y Fr(P)o(arameters)274
1053 y Fs(tid)49 b FA({)h(in)o(teger)20 b(task)g(iden)o(ti\014er)h(of)e
(the)i(calling)d(PVM)j(pro)q(cess)h(is)d(returned.)460
1107 y(V)m(alues)13 b(less)i(than)f(zero)h(indicate)e(an)h(error.)249
1214 y Fr(Discussion)249 1283 y FA(The)g(routine)g(enrolls)g(this)g
(pro)q(cess)i(in)o(to)d(PVM)h(on)g(its)f(\014rst)i(call)e(and)h
(generates)h(a)f(unique)g Fs(tid)f FA(if)249 1337 y(this)j(pro)q(cess)i
(w)o(as)e(not)g(created)i(b)o(y)d(p)o(vm)p 926 1337 13
2 v 14 w(spa)o(wn.)24 b(p)o(vm)p 1168 1337 V 14 w(m)o(ytid)14
b(returns)j(the)g Fs(tid)e FA(of)h(the)g(calling)249
1391 y(pro)q(cess)h(and)e(can)g(b)q(e)h(called)e(m)o(ultiple)f(times)h
(in)h(an)g(application.)20 b(An)o(y)15 b(PVM)g(system)g(call)f(\(not)
249 1445 y(just)g(p)o(vm)p 413 1445 V 14 w(m)o(ytid\))e(will)g(enroll)h
(a)h(task)g(in)f(PVM)i(if)e(the)h(task)g(is)g(not)g(enrolled)g(b)q
(efore)g(the)h(call.)249 1507 y(The)h(tid)f(is)h(a)f(32-bit)f(p)q
(ositiv)o(e)i(in)o(teger)g(created)h(b)o(y)e(the)h(lo)q(cal)f(p)o(vmd.)
21 b(The)16 b(32)f(bits)h(are)f(divided)249 1561 y(in)o(to)j(\014elds)g
(that)h(enco)q(de)g(v)n(arious)f(information)d(ab)q(out)j(this)h(pro)q
(cess,)h(suc)o(h)f(as)g(its)f(lo)q(cation)f(in)249 1615
y(the)g(virtual)e(mac)o(hine)f(\(i.e.,)h(lo)q(cal)h(p)o(vmd)e
(address\),)j(the)g(CPU)f(n)o(um)o(b)q(er)f(in)h(the)g(case)h(where)g
(the)249 1669 y(pro)q(cess)e(is)e(on)g(a)f(m)o(ultipro)q(cessor,)h(and)
g(a)f(pro)q(cess)j(ID)e(\014eld.)18 b(This)13 b(information)d(is)j
(used)h(b)o(y)f(PVM)249 1723 y(and)h(is)g(not)f(exp)q(ected)j(to)e(b)q
(e)h(used)f(b)o(y)g(applications.)249 1785 y(If)i(PVM)h(has)g(not)f(b)q
(een)i(started)f(b)q(efore)h(an)e(application)f(calls)h(p)o(vm)p
1386 1785 V 14 w(m)o(ytid,)e(the)j(returned)i Fs(tid)249
1839 y FA(will)12 b(b)q(e)j Fn(<)d FA(0.)249 1950 y Fr(Examples)274
2016 y(C:)495 2070 y Fs(tid)21 b(=)g(pvm_mytid\()f(\);)274
2124 y Fr(F)l(ortran:)495 2178 y Fs(CALL)h(PVMFMYTID\()e(TID)i(\))249
2284 y Fr(Errors)249 2354 y FA(The)14 b(follo)o(wing)e(error)i
(condition)g(can)g(b)q(e)g(returned)i(b)o(y)e Fs(pvm)p
1222 2354 14 2 v 15 w(mytid)p FA(.)274 2421 y(Name)151
b(P)o(ossible)14 b(cause)p 249 2438 1267 2 v 274 2476
a(PvmSysErr)50 b(p)o(vmd)12 b(not)i(resp)q(onding.)p
eop
%%Page: 220 239
220 238 bop 249 251 a Fu(220)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfnotify\(\))787 b(p)n(vm)p 1593 511 21
2 v 25 w(notify\(\))p 249 595 1591 16 v 249 658 a FA(Requests)15
b(noti\014cation)e(of)h(PVM)g(ev)o(en)o(t)g(suc)o(h)h(as)f(host)g
(failure.)249 770 y Fr(Synopsis)274 836 y(C)195 b Fs(int)21
b(info)g(=)h(pvm_notify\()d(int)j(what,)e(int)h(msgtag,)1026
890 y(int)g(cnt,)g(int)g(*tids)g(\))274 944 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfnotify\()f(what,)h(msgtag,)f(cnt,)h(tids,)g(info)g
(\))249 1051 y Fr(P)o(arameters)274 1110 y Fs(what)93
b FA({)49 b(in)o(teger)20 b(iden)o(ti\014er)g(of)e(what)i(ev)o(en)o(t)g
(should)f(trigger)g(the)h(noti\014cation.)525 1164 y(Presen)o(tly)15
b(the)g(options)e(are:)641 1217 y(V)m(alue)141 b(Meaning)p
525 1235 803 2 v 550 1273 a(PvmT)m(askExit)84 b(notify)13
b(if)g(task)h(exits)550 1327 y(PvmHostDelete)50 b(notify)13
b(if)g(host)h(is)g(deleted)550 1381 y(PvmHostAdd)87 b(notify)13
b(if)g(host)h(is)g(added)p 525 1399 V 274 1437 a Fs(msgtag)49
b FA({)g(in)o(teger)14 b(message)g(tag)g(to)f(b)q(e)i(used)g(in)e
(noti\014cation.)274 1491 y Fs(cnt)115 b FA({)49 b(in)o(teger)17
b(sp)q(ecifying)f(the)h(length)f(of)g(the)h(tids)f(arra)o(y)g(for)g
(PvmT)m(askExit)525 1545 y(and)g(PvmHostDelete.)26 b(F)m(or)16
b(PvmHostAdd)g(sp)q(eci\014es)j(the)e(n)o(um)o(b)q(er)f(of)525
1599 y(times)d(to)h(notify)m(.)274 1653 y Fs(tids)93
b FA({)49 b(in)o(teger)23 b(arra)o(y)g(of)f(length)g
Fs(ntask)g FA(that)h(con)o(tains)g(a)f(list)g(of)g(task)h(or)525
1706 y(p)o(vmd)15 b(tids)i(to)g(b)q(e)h(noti\014ed.)27
b(The)17 b(arra)o(y)g(should)f(b)q(e)i(empt)o(y)e(with)g(the)525
1760 y(PvmHostAdd)d(option.)274 1814 y Fs(info)93 b FA({)49
b(in)o(teger)12 b(status)g(co)q(de)h(returned)g(b)o(y)e(the)i(routine.)
k(V)m(alues)11 b(less)i(than)e(zero)525 1868 y(indicate)j(an)g(error.)
249 1976 y Fr(Discussion)249 2046 y FA(The)i(routine)f
Fs(pvm)p 549 2046 14 2 v 15 w(notify)f FA(requests)j(PVM)f(to)f(notify)
f(the)i(caller)f(on)g(detecting)h(certain)f(ev)o(en)o(ts.)249
2100 y(In)f(resp)q(onse)j(to)d(a)g(notify)f(request,)j(some)d(n)o(um)o
(b)q(er)h(of)f(messages)i(\(see)h(b)q(elo)o(w\))e(are)g(sen)o(t)i(b)o
(y)e(PVM)249 2154 y(bac)o(k)i(to)g(the)h(calling)e(task.)24
b(The)17 b(messages)f(are)h(tagged)f(with)g(the)g(co)q(de)h(\(msgtag\))
e(supplied)h(to)249 2208 y(notify)m(.)249 2270 y(The)f(tids)f(arra)o(y)
g(sp)q(eci\014es)i(who)d(to)h(monitor)f(when)h(using)g(T)m(askExit)f
(or)i(HostDelete;)f(it)g(con)o(tains)249 2324 y(nothing)i(when)g(using)
g(HostAdd.)26 b(If)16 b(required,)h(the)g(routines)g(p)o(vm)p
1363 2324 13 2 v 13 w(con\014g)g(and)f(p)o(vm)p 1662
2324 V 13 w(tasks)h(can)249 2378 y(b)q(e)e(used)f(to)g(obtain)f(task)h
(and)g(p)o(vmd)e(tids.)249 2441 y(The)i(noti\014cation)f(messages)h(ha)
o(v)o(e)g(the)h(follo)o(wing)c(format:)p eop
%%Page: 221 240
221 239 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(221)249
507 y Fs(PvmTaskExit)13 b FA(One)j(notify)e(message)g(for)h(eac)o(h)h
(tid)e(requested.)24 b(The)16 b(message)e(b)q(o)q(dy)h(con)o(tains)g(a)
249 561 y(single)f(tid)f(of)g(exited)i(task.)249 624
y Fs(PvmHostDelete)9 b FA(One)k(message)e(for)h(eac)o(h)g(tid)g
(requested.)19 b(The)13 b(message)e(b)q(o)q(dy)h(con)o(tains)g(a)f
(single)249 677 y(p)o(vmd-tid)h(of)h(exited)i(p)o(vmd.)249
740 y Fs(PvmHostAdd)d FA(Up)i(to)g Fs(cnt)f FA(notify)h(messages)g(are)
g(sen)o(t.)19 b(The)c(message)f(b)q(o)q(dy)g(con)o(tains)g(an)g(in)o
(teger)249 794 y(coun)o(t)i(follo)o(w)o(ed)f(b)o(y)h(a)f(list)h(of)f(p)
o(vmd-tids)g(of)g(the)i(new)f(p)o(vmds.)24 b(The)16 b(coun)o(ter)h(of)f
(PvmHostAdd)249 848 y(messages)f(remaining)e(is)i(up)q(dated)g(b)o(y)g
(successiv)o(e)i(calls)d(to)h(p)o(vm)p 1306 848 13 2
v 13 w(notify)m(.)20 b(Sp)q(ecifying)14 b(a)h(cn)o(t)g(of)f(-1)249
902 y(turns)h(on)e(PvmHostAdd)h(messages)g(un)o(til)f(a)g(future)i
(notify;)d(a)i(coun)o(t)g(of)f(zero)i(disables)f(them.)249
964 y(Tids)g(in)f(the)i(notify)e(messages)h(are)g(pac)o(k)o(ed)g(as)g
(in)o(tegers.)249 1026 y(The)i(calling)f(task\(s\))i(are)f(resp)q
(onsible)h(for)f(receiving)g(the)g(message)g(with)g(the)g(sp)q
(eci\014ed)i(msgtag)249 1080 y(and)13 b(taking)f(appropriate)i(action.)
j(F)m(uture)d(v)o(ersions)f(of)g(PVM)h(ma)o(y)d(expand)i(the)h(list)f
(of)f(a)o(v)n(ailable)249 1134 y(noti\014cation)h(ev)o(en)o(ts.)249
1196 y(Note)h(that)f(the)h(notify)f(request)h(is)g(\\consumed";)e(for)h
(example,)f(a)h(PvmHostAdd)f(request)j(gener-)249 1250
y(ates)g(a)e(single)h(reply)g(message.)249 1362 y Fr(Examples)274
1429 y(C:)538 1483 y Fs(info)21 b(=)h(pvm_notify\()d(PvmHostAdd,)h
(9999,)h(1,)g(dummy)g(\))274 1537 y Fr(F)l(ortran:)560
1591 y Fs(CALL)g(PVMFNOTIFY\()e(PVMHOSTDELETE,)g(1111,)i(NPROC,)g
(TIDS,)f(INFO)h(\))249 1698 y Fr(Errors)249 1768 y FA(The)14
b(follo)o(wing)e(error)i(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f
Fs(pvm)p 1238 1768 14 2 v 15 w(notify)p FA(.)274 1836
y(Name)221 b(P)o(ossible)14 b(Cause)p 249 1854 1338 2
v 274 1892 a(PvmSysErr)120 b(p)o(vmd)13 b(not)g(resp)q(onding.)274
1946 y(PvmBadP)o(aram)47 b(giving)13 b(an)g(in)o(v)n(alid)f(argumen)o
(t)h(v)n(alue.)p eop
%%Page: 222 241
222 240 bop 249 251 a Fu(222)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfnrecv\(\))809 b(p)n(vm)p 1604 511 21
2 v 25 w(nrecv\(\))p 249 595 1591 16 v 249 658 a FA(Chec)o(ks)15
b(for)f(non)o(blo)q(c)o(king)e(message)i(with)f(lab)q(el)h
Fs(msgtag)p FA(.)249 770 y Fr(Synopsis)274 836 y(C)173
b Fs(int)21 b(bufid)g(=)h(pvm)p 812 836 14 2 v 15 w(nrecv\()e(int)i
(tid,)f(int)g(msgtag)f(\))274 890 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfnrecv\()f(tid,)h(msgtag,)f(bufid)h(\))249
997 y Fr(P)o(arameters)274 1056 y Fs(tid)115 b FA({)49
b(in)o(teger)13 b(task)f(iden)o(ti\014er)g(of)g(sending)g(pro)q(cess)i
(supplied)e(b)o(y)g(the)g(user.)19 b(\(A)525 1110 y(-1)14
b(in)f(this)h(argumen)o(t)f(matc)o(hes)g(an)o(y)h(tid)f
(\(wildcard\).\))274 1164 y Fs(msgtag)49 b FA({)g(in)o(teger)11
b(message)e(tag)h(supplied)g(b)o(y)g(the)h(user.)18 b(msgtag)8
b(should)i(b)q(e)h Fn(>)p FA(=)h(0.)525 1217 y(\(A)i(-1)g(in)f(this)h
(argumen)o(t)f(matc)o(hes)g(an)o(y)h(message)f(tag)h(\(wildcard\).\))
274 1271 y Fs(bufid)71 b FA({)49 b(in)o(teger)15 b(returning)f(the)h(v)
n(alue)f(of)f(the)i(new)f(activ)o(e)h(receiv)o(e)g(bu\013er)g(iden-)525
1325 y(ti\014er.)k(V)m(alues)13 b(less)i(than)f(zero)g(indicate)g(an)g
(error.)249 1433 y Fr(Discussion)249 1503 y FA(The)i(routine)g
Fs(pvm)p 550 1503 V 15 w(nrecv)e FA(c)o(hec)o(ks)j(to)f(see)g(whether)h
(a)f(message)f(with)g(lab)q(el)g Fs(msgtag)f FA(has)i(arriv)o(ed)249
1557 y(from)10 b Fs(tid)p FA(.)17 b(If)11 b(a)g(matc)o(hing)f(message)i
(has)g(arriv)o(ed,)f(p)o(vm)p 1152 1557 13 2 v 14 w(nrecv)h
(immediately)d(places)j(the)g(message)249 1611 y(in)17
b(a)f(new)i FB(active)f FA(receiv)o(e)h(bu\013er,)g(whic)o(h)f(also)f
(clears)i(the)g(curren)o(t)g(receiv)o(e)g(bu\013er,)h(if)d(an)o(y)m(,)g
(and)249 1665 y(returns)g(the)e(bu\013er)h(iden)o(ti\014er)f(in)g
Fs(bufid)p FA(.)249 1727 y(If)g(the)h(requested)h(message)e(has)h(not)f
(arriv)o(ed,)g(then)h(p)o(vm)p 1188 1727 V 13 w(nrecv)h(imm)o(ediately)
11 b(returns)16 b(with)e(a)g(0)249 1781 y(in)f Fs(bufid)p
FA(.)k(If)d(some)f(error)i(o)q(ccurs,c)g(/whic)o(h)f
Fs(bufid)e FA(will)h(b)q(e)h Fn(<)e FA(0.)249 1844 y(A)j(-1)f(in)g
Fs(msgtag)f FA(or)i Fs(tid)f FA(matc)o(hes)g(an)o(ything.)20
b(This)14 b(allo)o(ws)f(the)j(user)f(the)h(follo)o(wing)c(options.)19
b(If)249 1898 y(tid)13 b(=)f Ft(\000)p FA(1)i(and)f(msgtag)f(is)i
(de\014ned)g(b)o(y)g(the)g(user,)g(then)g(p)o(vm)p 1235
1898 V 14 w(nrecv)g(will)e(accept)j(a)f(message)f(from)249
1952 y(an)o(y)g(pro)q(cess)i(that)f(has)f(a)g(matc)o(hing)f(msgtag.)k
(If)d(msgtag)e(=)h Ft(\000)p FA(1)i(and)f(tid)g(is)g(de\014ned)h(b)o(y)
f(the)h(user,)249 2006 y(p)o(vm)p 331 2006 V 13 w(nrecv)g(will)c
(accept)k(an)o(y)d(message)h(that)g(is)g(sen)o(t)h(from)d(pro)q(cess)k
(tid.)j(If)12 b(tid)g(=)g Ft(\000)p FA(1)g(and)g(msgtag)249
2059 y(=)g Ft(\000)p FA(1,)h(then)i(p)o(vm)p 548 2059
V 13 w(nrecv)g(will)e(accept)i(an)o(y)e(message)h(from)e(an)o(y)h(pro)q
(cess.)249 2122 y(p)o(vm)p 331 2122 V 13 w(nrecv)f(is)d(non-blo)q(c)o
(king)g(in)h(the)g(sense)i(that)e(the)h(routine)f(alw)o(a)o(ys)f
(returns)j(imm)o(ediately)7 b(either)249 2176 y(with)14
b(the)h(message)g(or)f(with)h(the)g(information)c(that)k(the)g(message)
f(has)h(not)g(arriv)o(ed)f(at)h(the)g(lo)q(cal)249 2230
y(p)o(vmd)c(y)o(et.)18 b(p)o(vm)p 530 2230 V 13 w(nrecv)13
b(can)g(b)q(e)g(called)f(m)o(ultiple)e(times)i(to)g(c)o(hec)o(k)h
(whether)h(a)e(giv)o(en)g(message)g(has)249 2284 y(arriv)o(ed)i(y)o
(et.)k(In)c(addition,)e(p)o(vm)p 784 2284 V 14 w(recv)j(can)f(b)q(e)g
(called)g(for)f(the)i(same)d(message)i(if)f(the)h(application)249
2338 y(runs)h(out)e(of)h(w)o(ork)f(it)h(could)g(do)f(b)q(efore)i
(receiving)f(the)h(data.)249 2400 y(If)h(p)o(vm)p 375
2400 V 13 w(nrecv)i(returns)g(with)e(the)h(message,)f(the)h(data)f(in)g
(the)g(message)g(can)h(b)q(e)g(unpac)o(k)o(ed)g(in)o(to)249
2454 y(the)e(user's)f(memory)e(using)h(the)i(unpac)o(k)f(routines.)p
eop
%%Page: 223 242
223 241 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(223)249
507 y FA(The)14 b(PVM)g(mo)q(del)e(guaran)o(tees)i(the)g(follo)o(wing)d
(ab)q(out)j(message)f(order.)19 b(If)13 b(task)g(1)h(sends)g(message)
249 561 y(A)k(to)g(task)h(2,)f(then)h(task)f(1)g(sends)i(message)e(B)g
(to)g(task)g(2,)h(message)f(A)g(will)f(arriv)o(e)h(at)g(task)g(2)249
615 y(b)q(efore)c(message)f(B.)g(Moreo)o(v)o(er,)h(if)e(b)q(oth)i
(messages)f(arriv)o(e)g(b)q(efore)i(task)e(2)g(do)q(es)h(a)f(receiv)o
(e,)h(then)g(a)249 669 y(wildcard)g(receiv)o(e)h(will)d(alw)o(a)o(ys)h
(return)i(message)f(A.)249 781 y Fr(Examples)274 848
y(C:)495 902 y Fs(tid)21 b(=)g(pvm_parent\(\);)495 956
y(msgtag)f(=)i(4)f(;)495 1010 y(arrived)f(=)i(pvm_nrecv\()d(tid,)i
(msgtag)g(\);)495 1064 y(if)g(\()h(arrived)e(>)h(0)h(\))538
1118 y(info)f(=)h(pvm_upkint\()d(tid_array,)h(10,)h(1)h(\);)495
1172 y(else)495 1226 y(/*)f(go)g(do)h(other)e(computing)g(*/)274
1280 y Fr(F)l(ortran:)495 1333 y Fs(CALL)h(PVMFNRECV\()e(-1,)i(4,)h
(ARRIVED)e(\))495 1387 y(IF)h(\()h(ARRIVED)e(.GT.)h(0)g(\))h(THEN)560
1441 y(CALL)f(PVMFUNPACK\()e(INTEGER4,)h(TIDS,)h(25,)g(1,)h(INFO)f(\))
560 1495 y(CALL)g(PVMFUNPACK\()e(REAL8,)i(MATRIX,)f(100,)h(100,)g(INFO)
g(\))495 1549 y(ELSE)274 1603 y(*)264 b(GO)21 b(DO)h(USEFUL)e(WORK)495
1657 y(ENDIF)249 1764 y Fr(Errors)249 1835 y FA(The)14
b(follo)o(wing)e(error)i(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f
Fs(pvm)p 1238 1835 14 2 v 15 w(nrecv)p FA(.)274 1903
y(Name)221 b(P)o(ossible)14 b(Cause)p 249 1920 1338 2
v 274 1958 a(PvmBadP)o(aram)47 b(giving)13 b(an)g(in)o(v)n(alid)f(tid)i
(v)n(alue)f(or)h(msgtag.)274 2012 y(PvmSysErr)120 b(p)o(vmd)13
b(not)g(resp)q(onding.)p eop
%%Page: 224 243
224 242 bop 249 251 a Fu(224)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfpac)n(k\(\))897 b(p)n(vm)p 1663 511 21
2 v 25 w(pk)p Fa(*)p FE(\(\))p 249 595 1591 16 v 249
658 a FA(P)o(ac)o(ks)14 b(the)h(activ)o(e)f(message)f(bu\013er)i(with)f
(arra)o(ys)g(of)f(prescrib)q(ed)j(data)e(t)o(yp)q(e.)249
770 y Fr(Synopsis)274 836 y(C)296 890 y Fs(int)21 b(info)g(=)g
(pvm_packf\()f(const)h(char)g(*fmt,)g(...)g(\))296 944
y(int)g(info)g(=)g(pvm_pkbyte\()42 b(char)64 b(*xp,)21
b(int)g(nitem,)g(int)g(stride)g(\))296 998 y(int)g(info)g(=)g
(pvm_pkcplx\()42 b(float)g(*cp,)21 b(int)g(nitem,)g(int)g(stride)g(\))
296 1052 y(int)g(info)g(=)g(pvm_pkdcplx\()f(double)g(*zp,)h(int)g
(nitem,)g(int)g(stride)g(\))296 1106 y(int)g(info)g(=)g
(pvm_pkdouble\(double)d(*dp,)j(int)g(nitem,)g(int)g(stride)g(\))296
1160 y(int)g(info)g(=)g(pvm_pkfloat\()f(float)42 b(*fp,)21
b(int)g(nitem,)g(int)g(stride)g(\))296 1214 y(int)g(info)g(=)g
(pvm_pkint\()64 b(int)86 b(*ip,)21 b(int)g(nitem,)g(int)g(stride)g(\))
296 1268 y(int)g(info)g(=)g(pvm_pkuint\()f(unsigned)g(int)h(*ip,)g(int)
g(nitem,)g(int)g(stride)g(\))296 1322 y(int)g(info)g(=)g
(pvm_pkushort\()f(unsigned)g(short)g(*ip,)h(int)h(nitem,)e(int)h
(stride)g(\))296 1376 y(int)g(info)g(=)g(pvm_pkulong\()f(unsigned)g
(long)h(*ip,)g(int)g(nitem,)g(int)g(stride)f(\))296 1430
y(int)h(info)g(=)g(pvm_pklong\()42 b(long)64 b(*ip,)21
b(int)g(nitem,)g(int)g(stride)g(\))296 1484 y(int)g(info)g(=)g
(pvm_pkshort\()f(short)42 b(*jp,)21 b(int)g(nitem,)g(int)g(stride)g(\))
296 1538 y(int)g(info)g(=)g(pvm_pkstr\()64 b(char)g(*sp)22
b(\))274 1612 y Fr(F)l(ortran)274 1666 y Fs(call)f(pvmfpack\()f(what,)h
(xp,)g(nitem,)f(stride,)h(info)g(\))249 1773 y Fr(P)o(arameters)274
1832 y Fs(fmt)115 b FA({)49 b(prin)o(tflik)o(e)13 b(format)f
(expression)j(sp)q(ecifying)f(what)f(to)h(pac)o(k)g(\(see)h
(discussion\).)274 1886 y Fs(nitem)71 b FA({)49 b(the)15
b(total)e(n)o(um)o(b)q(er)g(of)g FB(items)h FA(to)f(b)q(e)i(pac)o(k)o
(ed)f(\(not)g(the)g(n)o(um)o(b)q(er)g(of)f(b)o(ytes\).)274
1940 y Fs(stride)49 b FA({)g(the)15 b(stride)f(to)g(b)q(e)h(used)f
(when)h(pac)o(king)e(the)h(items.)k(F)m(or)13 b(example,)f(if)h
(stride=)g(2)h(in)525 1994 y(p)o(vm)p 607 1994 13 2 v
13 w(pk)o(cplx,)g(then)g(ev)o(ery)h(other)f(complex)f(n)o(um)o(b)q(er)g
(will)f(b)q(e)j(pac)o(k)o(ed.)274 2048 y Fs(xp)137 b
FA({)49 b(p)q(oin)o(ter)17 b(to)g(the)g(b)q(eginning)f(of)g(a)h(blo)q
(c)o(k)f(of)g(b)o(ytes.)28 b(Can)16 b(b)q(e)i(an)o(y)e(data)g(t)o(yp)q
(e,)i(but)525 2102 y(m)o(ust)13 b(matc)o(h)g(the)h(corresp)q(onding)h
(unpac)o(k)f(data)g(t)o(yp)q(e.)274 2156 y Fs(cp)137
b FA({)49 b(complex)13 b(arra)o(y)g(at)h(least)g(nitem*stride)f(items)g
(long.)274 2210 y Fs(zp)137 b FA({)49 b(double)14 b(precision)g
(complex)f(arra)o(y)g(at)h(least)g(nitem*stride)f(items)g(long.)274
2264 y Fs(dp)137 b FA({)49 b(double)14 b(precision)g(real)g(arra)o(y)g
(at)f(least)h(nitem*stride)g(items)f(long.)274 2318 y
Fs(fp)137 b FA({)49 b(real)14 b(arra)o(y)g(at)f(least)h(nitem*stride)g
(items)f(long.)274 2371 y Fs(ip)137 b FA({)49 b(in)o(teger)14
b(arra)o(y)g(at)g(least)g(nitem*stride)f(items)g(long.)274
2425 y Fs(jp)137 b FA({)49 b(in)o(teger*2)14 b(arra)o(y)g(at)f(least)h
(nitem*stride)g(items)f(long.)274 2479 y Fs(sp)137 b
FA({)49 b(p)q(oin)o(ter)14 b(to)g(a)g(n)o(ull)e(terminated)i(c)o
(haracter)h(string.)p eop
%%Page: 225 244
225 243 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(225)274
504 y Fs(what)49 b FA({)h(in)o(teger)14 b(sp)q(ecifying)g(the)g(t)o(yp)
q(e)h(of)e(data)g(b)q(eing)h(pac)o(k)o(ed.)703 558 y
Fs(what)g FA(options)p 482 575 677 2 v 528 613 a Fs(STRING)92
b FA(0)72 b Fs(REAL4)157 b FA(4)528 667 y Fs(BYTE1)114
b FA(1)72 b Fs(COMPLEX8)91 b FA(5)528 721 y Fs(INTEGER2)48
b FA(2)72 b Fs(REAL8)157 b FA(6)528 775 y Fs(INTEGER4)48
b FA(3)72 b Fs(COMPLEX16)d FA(7)p 482 793 V 274 831 a
Fs(info)49 b FA({)h(in)o(teger)14 b(status)h(co)q(de)g(returned)g(b)o
(y)f(the)h(routine.)j(V)m(alues)c(less)h(than)f(zero)h(indicate)482
885 y(an)e(error.)249 991 y Fr(Discussion)249 1058 y
FA(Eac)o(h)19 b(of)f(the)40 b Fs(pvm_pk*)17 b FA(routines)i(pac)o(ks)g
(an)f(arra)o(y)g(of)g(the)h(giv)o(en)f(data)g(t)o(yp)q(e)h(in)o(to)f
(the)h(activ)o(e)249 1112 y(send)c(bu\013er.)k(The)14
b(argumen)o(ts)f(for)h(eac)o(h)g(of)f(the)h(routines)h(are)f(a)g(p)q
(oin)o(ter)g(to)f(the)i(\014rst)f(item)f(to)g(b)q(e)249
1166 y(pac)o(k)o(ed,)j Fs(nitem)f FA(whic)o(h)g(is)h(the)g(total)f(n)o
(um)o(b)q(er)g(of)g(items)f(to)i(pac)o(k)f(from)f(this)i(arra)o(y)m(,)f
(and)g Fs(stride)249 1220 y FA(whic)o(h)f(is)g(the)g(stride)h(to)e(use)
i(when)g(pac)o(king.)249 1281 y(An)k(exception)g(is)f(p)o(vm)p
640 1281 13 2 v 13 w(pkstr\(\))i(whic)o(h)e(b)o(y)g(de\014nition)g(pac)
o(ks)g(a)g(NULL)h(terminated)f(c)o(haracter)249 1334
y(string)d(and)g(th)o(us)h(do)q(es)g(not)f(need)h Fs(nitem)e
FA(or)h Fs(stride)f FA(argumen)o(ts.)21 b(The)16 b(F)m(ortran)f
(routine)g(p)o(vmf-)249 1388 y(pac)o(k\()k(STRING,)e(...\))31
b(exp)q(ects)20 b Fs(nitem)e FA(to)g(b)q(e)h(the)h(n)o(um)o(b)q(er)d
(of)h(c)o(haracters)i(in)f(the)g(string)f(and)249 1442
y Fs(stride)13 b FA(to)g(b)q(e)i(1.)249 1503 y(If)f(the)g(pac)o(king)f
(is)h(successful,)h Fs(info)e FA(will)g(b)q(e)h(0.)k(If)13
b(some)g(error)i(o)q(ccurs,)g Fs(info)e FA(will)f(b)q(e)j
Fn(<)d FA(0.)249 1564 y(A)j(single)f(v)n(ariable)g(\(not)h(an)g(arra)o
(y\))f(can)h(b)q(e)h(pac)o(k)o(ed)f(b)o(y)g(setting)g
Fs(nitem)p FA(=)d(1)j(and)f Fs(stride)p FA(=)f(1.)20
b(C)249 1618 y(structures)c(ha)o(v)o(e)e(to)g(b)q(e)g(pac)o(k)o(ed)h
(one)f(data)f(t)o(yp)q(e)i(at)e(a)h(time.)249 1678 y(The)g(routine)g(p)
o(vm)p 559 1678 V 14 w(pac)o(kf\(\))f(uses)i(a)f(prin)o(tflik)o(e)f
(format)e(expression)k(to)f(sp)q(ecify)g(what)g(and)g(ho)o(w)f(to)249
1732 y(pac)o(k)h(data)g(in)o(to)g(the)h(send)g(bu\013er.)20
b(All)14 b(v)n(ariables)f(are)i(passed)g(as)g(addresses)h(if)e(coun)o
(t)g(and)g(stride)249 1786 y(are)j(sp)q(eci\014ed)h(otherwise,)g(v)n
(ariables)d(are)i(assumed)g(to)f(b)q(e)h(v)n(alues.)26
b(A)16 b(BNF-lik)o(e)h(description)g(of)249 1840 y(the)e(format)d(syn)o
(tax)h(is:)336 1914 y Fs(format)21 b(:)g(null)g(|)h(init)f(|)g(format)g
(fmt)336 1968 y(init)g(:)h(null)f(|)g('\045')h('+')336
2022 y(fmt)f(:)h('\045')f(count)g(stride)f(modifiers)g(fchar)336
2076 y(fchar)h(:)h('c')f(|)g('d')h(|)f('f')g(|)h('x')f(|)h('s')336
2130 y(count)f(:)h(null)f(|)g([0-9]+)g(|)g('*')336 2184
y(stride)g(:)g(null)g(|)h('.')f(\()h([0-9]+)e(|)i('*')f(\))336
2238 y(modifiers)f(:)i(null)f(|)g(modifiers)f(mchar)336
2292 y(mchar)h(:)h('h')f(|)g('l')h(|)f('u')249 2400 y(Formats:)293
2454 y(+)43 b(means)21 b(initsend)f(-)i(must)e(match)h(an)h(int)f
(\(how\))g(in)g(the)g(param)g(list.)293 2508 y(c)43 b(pack/unpack)20
b(bytes)p eop
%%Page: 226 245
226 244 bop 249 251 a Fu(226)1321 b(App)q(endix)15 b(B)293
507 y Fs(d)43 b(integers)293 561 y(f)g(float)293 615
y(x)g(complex)20 b(float)293 669 y(s)43 b(string)249
777 y(Modifiers:)293 831 y(h)g(short)21 b(\(int\))293
885 y(l)43 b(long)g(\(int,)21 b(float,)f(complex)g(float\))293
939 y(u)43 b(unsigned)20 b(\(int\))249 1047 y('*')h(count)g(or)g
(stride)g(must)g(match)g(an)g(int)g(in)h(the)f(param)g(list.)249
1126 y FA(F)m(uture)12 b(extensions)g(to)f(the)h Fs(what)e
FA(argumen)o(t)g(in)h(p)o(vmfpac)o(k)e(will)g(include)j(64)e(bit)h(t)o
(yp)q(es)h(when)g(XDR)249 1180 y(enco)q(ding)h(of)f(these)i(t)o(yp)q
(es)g(is)e(a)o(v)n(ailable.)j(Mean)o(while)e(users)h(should)e(b)q(e)i
(a)o(w)o(are)e(that)h(precision)g(can)249 1234 y(b)q(e)j(lost)e(when)h
(passing)g(data)g(from)e(a)h(64)h(bit)f(mac)o(hine)g(lik)o(e)g(a)g(Cra)
o(y)h(to)f(a)h(32)f(bit)h(mac)o(hine)e(lik)o(e)h(a)249
1288 y(SP)m(AR)o(Cstation.)20 b(As)15 b(a)g(mnemonic)d(the)k
Fs(what)e FA(argumen)o(t)f(name)h(includes)h(the)h(n)o(um)o(b)q(er)e
(of)g(b)o(ytes)249 1342 y(of)e(precision)g(to)g(exp)q(ect.)19
b(By)12 b(setting)h(enco)q(ding)f(to)g(PVMRA)-5 b(W)12
b(\(see)i(p)o(vm\014nitsend\))d(data)h(can)g(b)q(e)249
1396 y(transferred)g(b)q(et)o(w)o(een)f(t)o(w)o(o)f(64)g(bit)g(mac)o
(hines)f(with)h(full)e(precision)j(ev)o(en)g(if)e(the)i(PVM)f
(con\014guration)249 1450 y(is)k(heterogeneous.)249 1512
y(Messages)21 b(should)f(b)q(e)g(unpac)o(k)o(ed)g(exactly)f(lik)o(e)g
(they)h(w)o(ere)h(pac)o(k)o(ed)f(to)f(insure)h(data)g(in)o(tegrit)o(y)m
(.)249 1566 y(P)o(ac)o(king)d(in)o(tegers)g(and)g(unpac)o(king)g(them)f
(as)h(\015oats)g(will)f(often)h(fail)f(b)q(ecause)i(a)f(t)o(yp)q(e)h
(enco)q(ding)249 1620 y(will)8 b(ha)o(v)o(e)i(o)q(ccurred)h
(transferring)f(the)h(data)e(b)q(et)o(w)o(een)i(heterogeneous)h(hosts.)
17 b(P)o(ac)o(king)9 b(10)g(in)o(tegers)249 1674 y(and)14
b(100)f(\015oats)h(then)g(trying)g(to)g(unpac)o(k)g(only)f(3)g(in)o
(tegers)i(and)f(the)g(100)f(\015oats)h(will)f(also)g(fail.)p
eop
%%Page: 227 246
227 245 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(227)249
507 y Fr(Examples)274 574 y(C:)495 628 y Fs(info)21 b(=)g
(pvm_initsend\()e(PvmDataDefault)g(\);)495 682 y(info)i(=)g
(pvm_pkstr\()f("initial)g(data")h(\);)495 736 y(info)g(=)g(pvm_pkint\()
f(&size,)g(1,)i(1)f(\);)495 790 y(info)g(=)g(pvm_pkint\()f(array,)g
(size,)h(1)h(\);)495 844 y(info)f(=)g(pvm_pkdouble\()e(matrix,)i
(size*size,)e(1)j(\);)495 898 y(msgtag)e(=)i(3)f(;)495
952 y(info)g(=)g(pvm_send\()f(tid,)h(msgtag)g(\);)274
1006 y Fr(F)l(ortran:)495 1060 y Fs(CALL)g(PVMFINITSEND\(PV)o(MRAW,)d
(INFO\))495 1114 y(CALL)j(PVMFPACK\()e(INTEGER4,)h(NSIZE,)h(1,)g(1,)h
(INFO)f(\))495 1167 y(CALL)g(PVMFPACK\()e(STRING,)i('row)g(5)g(of)h
(NXN)f(matrix',)f(19,)h(1,)h(INFO)f(\))495 1221 y(CALL)g(PVMFPACK\()e
(REAL8,)i(A\(5,1\),)f(NSIZE,)h(NSIZE)g(,)g(INFO)g(\))495
1275 y(CALL)g(PVMFSEND\()e(TID,)i(MSGTAG,)g(INFO)g(\))249
1382 y Fr(Errors)249 1453 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 1453 14 2 v 15 w(pk*)p FA(.)274 1521 y(Name)172
b(P)o(ossible)14 b(Cause)p 249 1538 1288 2 v 274 1576
a(PvmNoMem)48 b(Mallo)q(c)16 b(has)h(failed.)26 b(Message)18
b(bu\013er)g(size)f(has)g(exceeded)552 1630 y(the)d(a)o(v)n(ailable)e
(memory)f(on)j(this)g(host.)274 1684 y(PvmNoBuf)75 b(There)11
b(is)e(no)h(activ)o(e)g(send)h(bu\013er)g(to)e(pac)o(k)h(in)o(to.)16
b(T)m(ry)10 b(calling)552 1738 y(p)o(vm)p 634 1738 13
2 v 13 w(initsend)k(b)q(efore)h(pac)o(king)e(message.)p
eop
%%Page: 228 247
228 246 bop 249 251 a Fu(228)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfparen)n(t\(\))751 b(p)n(vm)p 1575 511
21 2 v 24 w(paren)n(t\(\))p 249 595 1591 16 v 249 658
a FA(Returns)15 b(the)f(tid)g(of)f(the)i(pro)q(cess)g(that)f(spa)o
(wned)h(the)f(calling)f(pro)q(cess.)249 770 y Fr(Synopsis)274
836 y(C)173 b Fs(int)21 b(tid)h(=)f(pvm)p 768 836 14
2 v 15 w(parent\()g(void)g(\))274 890 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfparent\()f(tid)h(\))249 997 y Fr(P)o(arameters)274
1056 y Fs(tid)49 b FA({)h(in)o(teger)21 b(returns)h(the)g(task)f(iden)o
(ti\014er)g(of)f(the)h(paren)o(t)h(of)e(the)h(calling)460
1110 y(pro)q(cess.)h(If)15 b(the)g(calling)e(pro)q(cess)k(w)o(as)d(not)
h(created)h(with)f(p)o(vm)p 1495 1110 13 2 v 13 w(spa)o(wn,)460
1164 y(then)f(tid)g(=)g(PvmNoP)o(aren)o(t.)249 1271 y
Fr(Discussion)249 1341 y FA(The)f(routine)f Fs(pvm)p
543 1341 14 2 v 15 w(parent)f FA(returns)j(the)f Fs(tid)f
FA(of)g(the)h(pro)q(cess)h(that)e(spa)o(wned)h(the)g(calling)e(pro)q
(cess.)249 1395 y(If)h(the)h(calling)e(pro)q(cess)k(w)o(as)d(not)g
(created)i(with)f(p)o(vm)p 1103 1395 13 2 v 13 w(spa)o(wn,)f(then)h
Fs(tid)f FA(is)h(set)g(to)f(PvmNoP)o(aren)o(t.)249 1507
y Fr(Examples)274 1574 y(C:)538 1628 y Fs(tid)21 b(=)h(pvm_parent\(\);)
274 1682 y Fr(F)l(ortran:)560 1736 y Fs(CALL)f(PVMFPARENT\()e(TID)j(\))
249 1843 y Fr(Errors)249 1913 y FA(The)14 b(follo)o(wing)e(error)i
(condition)g(can)g(b)q(e)g(returned)i(b)o(y)e Fs(pvm)p
1222 1913 14 2 v 15 w(parent)p FA(.)274 1981 y(Name)201
b(P)o(ossible)14 b(Cause)p 249 1999 1317 2 v 274 2037
a(PvmNoP)o(aren)o(t)49 b(The)13 b(calling)d(pro)q(cess)k(w)o(as)e(not)h
(created)g(with)f(p)o(vm)p 1406 2037 13 2 v 13 w(spa)o(wn.)p
eop
%%Page: 229 248
229 247 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(229)291
511 y FE(p)n(vmfp)r(error\(\))758 b(p)n(vm)p 1578 511
21 2 v 25 w(p)r(error\(\))p 249 595 1591 16 v 249 658
a FA(Prin)o(ts)14 b(the)h(error)g(status)f(of)g(the)g(last)g(PVM)g
(call.)249 770 y Fr(Synopsis)274 836 y(C)173 b Fs(int)21
b(info)g(=)h(pvm)p 790 836 14 2 v 15 w(perror\()e(char)h(*msg)g(\))274
890 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfperror\()f(msg,)h(info)g(\))
249 997 y Fr(P)o(arameters)274 1056 y Fs(msg)71 b FA({)50
b(c)o(haracter)15 b(string)e(supplied)h(b)o(y)f(the)h(user)h(whic)o(h)f
(will)e(b)q(e)i(prep)q(ended)i(to)482 1110 y(the)e(error)h(message)e
(of)h(the)g(last)g(PVM)g(call.)274 1164 y Fs(info)49
b FA({)h(in)o(teger)12 b(status)g(co)q(de)g(returned)i(b)o(y)d(the)h
(routine.)17 b(V)m(alues)12 b(less)g(than)g(zero)482
1217 y(indicate)h(an)h(error.)249 1325 y Fr(Discussion)249
1395 y FA(The)i(routine)g Fs(pvm)p 550 1395 V 15 w(perror)e
FA(returns)j(the)g(error)f(message)f(of)g(the)i(last)e(PVM)h(call.)22
b(The)16 b(user)h(can)249 1449 y(use)e Fs(msg)e FA(to)h(add)f
(additional)f(information)f(to)j(the)h(error)f(message,)g(for)f
(example,)f(its)i(lo)q(cation.)249 1512 y(All)h(stdout)i(and)f(stderr)i
(messages)e(are)h(placed)f(in)g(the)g(\014le)h(/tmp/p)o(vm)o(l.)o
Fn(<)p FA(uid)p Fn(>)d FA(on)i(the)h(master)249 1566
y(p)o(vmd's)12 b(host.)249 1678 y Fr(Examples)274 1744
y(C:)495 1798 y Fs(if)21 b(\()h(pvm_send\()d(tid,)i(msgtag)g(\))538
1852 y(pvm_perror\(\);)274 1906 y Fr(F)l(ortran:)560
1960 y Fs(CALL)g(PVMFSEND\()f(TID,)h(MSGTAG)f(\))560
2014 y(IF\()h(INFO)g(.LT.)g(0)h(\))f(CALL)g(PVMFPERROR\()f('Step)g(6',)
i(INFO)f(\))249 2121 y Fr(Errors)249 2191 y FA(No)14
b(error)h(condition)e(is)h(returned)h(b)o(y)f Fs(pvm)p
936 2191 V 15 w(perror)p FA(.)p eop
%%Page: 230 249
230 248 bop 249 251 a Fu(230)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfprecv\(\))809 b(p)n(vm)p 1604 511 21
2 v 25 w(precv\(\))p 249 595 1591 16 v 249 658 a FA(Receiv)o(es)15
b(a)f(message)f(directly)h(in)o(to)f(a)h(bu\013er.)249
770 y Fr(Synopsis)274 836 y(C)173 b Fs(int)21 b(info)g(=)h(pvm)p
790 836 14 2 v 15 w(psend\()f(int)g(tid,)g(int)g(msgtag,)481
890 y(char)g(*buf,)g(int)g(len,)g(int)g(datatype)f(\))481
944 y(int)h(atid,)g(int)g(atag,)g(int)g(alen)g(\))274
998 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfpsend\()f(tid,)h(msgtag,)f
(buf,)h(len,)g(datatype,)481 1052 y(atid,)g(atag,)g(alen,)g(info)g(\))
249 1159 y Fr(P)o(arameters)274 1217 y Fs(tid)158 b FA({)50
b(in)o(teger)14 b(task)g(iden)o(ti\014er)g(of)g(sending)g(pro)q(cess)h
(\(to)f(matc)o(h\).)274 1271 y Fs(msgtag)92 b FA({)50
b(in)o(teger)14 b(message)g(tag)f(\(to)h(matc)o(h\))f(msgtag)f(should)i
(b)q(e)g Fn(>)p FA(=)e(0.)274 1325 y Fs(buf)158 b FA({)50
b(p)q(oin)o(ter)14 b(to)g(a)f(bu\013er)i(to)f(receiv)o(e)h(in)o(to.)274
1379 y Fs(len)158 b FA({)50 b(length)14 b(of)f(bu\013er)i(\(in)e(m)o
(ultiple)f(of)h(data)h(t)o(yp)q(e)g(size\).)274 1433
y Fs(datatype)48 b FA({)i(t)o(yp)q(e)14 b(of)f(data)h(to)g(whic)o(h)f
(buf)h(p)q(oin)o(ts)g(\(see)h(b)q(elo)o(w\).)274 1487
y Fs(atid)136 b FA({)50 b(returns)15 b(actual)f(TID)f(of)g(sender.)274
1541 y Fs(atag)136 b FA({)50 b(returns)15 b(actual)f(message)f(tag.)274
1595 y Fs(atid)136 b FA({)50 b(returns)15 b(actual)f(message)f(length.)
274 1649 y Fs(info)136 b FA({)50 b(in)o(teger)12 b(status)g(co)q(de)g
(returned)i(b)o(y)d(the)h(routine.)18 b(V)m(alues)11
b(less)h(than)g(zero)569 1703 y(indicate)i(an)f(error.)249
1810 y Fr(Discussion)249 1881 y FA(The)i(routine)g Fs(pvm)p
548 1881 V 15 w(recv)f FA(blo)q(c)o(ks)g(the)h(pro)q(cess)i(un)o(til)c
(a)i(message)f(with)g(lab)q(el)g Fs(msgtag)f FA(has)i(arriv)o(ed)249
1935 y(from)e Fs(tid)p FA(.)19 b(p)o(vm)p 527 1935 13
2 v 14 w(precv;)c(it)f(then)h(places)h(the)f(con)o(ten)o(ts)g(of)f(the)
h(message)g(in)f(the)h(supplied)g(bu\013er,)249 1989
y Fs(buf)p FA(,)e(up)h(to)g(a)f(maxim)n(um)d(length)k(of)f(len)h(*)f
(\(size)i(of)e(data)h(t)o(yp)q(e\).)249 2051 y(p)o(vm)p
331 2051 V 13 w(precv)d(can)e(receiv)o(e)i(messages)e(sen)o(t)h(b)o(y)g
(p)o(vm)p 1042 2051 V 13 w(psend,)h(p)o(vm)p 1261 2051
V 13 w(send,)g(p)o(vm)p 1457 2051 V 13 w(mcast,)e(or)g(p)o(vm)p
1724 2051 V 14 w(b)q(cast.)249 2113 y(A)15 b(-1)f(in)g
Fs(msgtag)f FA(or)i Fs(tid)f FA(matc)o(hes)g(an)o(ything.)20
b(This)14 b(allo)o(ws)f(the)j(user)f(the)h(follo)o(wing)c(options.)19
b(If)249 2167 y(tid)d(=)f Ft(\000)p FA(1)h(and)g(msgtag)e(is)i
(de\014ned)h(b)o(y)e(the)i(user,)g(p)o(vm)p 1166 2167
V 13 w(recv)g(will)e(accept)i(a)f(message)f(from)g(an)o(y)249
2221 y(pro)q(cess)20 b(that)d(has)h(a)f(matc)o(hing)f(msgtag.)28
b(If)17 b(msgtag)f(=)i Ft(\000)p FA(1)g(and)f(tid)h(is)f(de\014ned)i(b)
o(y)e(the)h(user,)249 2275 y(p)o(vm)p 331 2275 V 13 w(recv)d(will)d
(accept)j(an)o(y)f(message)f(that)h(is)f(sen)o(t)i(from)d(pro)q(cess)j
(tid.)j(If)13 b(tid)h(=)d Ft(\000)p FA(1)j(and)g(msgtag)249
2329 y(=)e Ft(\000)p FA(1,)h(p)o(vm)p 453 2329 V 14 w(recv)i(will)d
(accept)j(an)o(y)f(message)f(from)f(an)o(y)i(pro)q(cess.)249
2392 y(In)e(C)f(the)h(datat)o(yp)q(e)g(parameter)f(m)o(ust)g(b)q(e)h
(one)g(of)f(the)h(follo)o(wing,)d(dep)q(ending)j(on)f(the)h(t)o(yp)q(e)
g(of)f(data)249 2446 y(to)j(b)q(e)g(sen)o(t:)p eop
%%Page: 231 250
231 249 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(231)423
507 y Fs(datatype)173 b(Data)21 b(Type)423 561 y(PVM_STR)195
b(string)423 615 y(PVM_BYTE)173 b(byte)423 669 y(PVM_SHORT)151
b(short)423 723 y(PVM_INT)195 b(int)423 777 y(PVM_FLOAT)151
b(real)423 831 y(PVM_CPLX)173 b(complex)423 885 y(PVM_DOUBLE)129
b(double)423 939 y(PVM_DCPLX)151 b(double)21 b(complex)423
993 y(PVM_LONG)173 b(long)21 b(integer)423 1047 y(PVM_USHORT)129
b(unsigned)20 b(short)h(int)423 1101 y(PVM_UINT)173 b(unsigned)20
b(int)423 1155 y(PVM_ULONG)151 b(unsigned)20 b(long)h(int)249
1242 y FA(In)14 b(F)m(ortran)g(the)g(same)f(data)h(t)o(yp)q(es)g(sp)q
(eci\014ed)i(for)d(unpac)o(k)h(should)g(b)q(e)h(used.)249
1304 y(The)f(PVM)g(mo)q(del)e(guaran)o(tees)i(the)g(follo)o(wing)d(ab)q
(out)j(message)f(order.)19 b(If)13 b(task)g(1)h(sends)g(message)249
1358 y(A)k(to)g(task)h(2,)f(then)h(task)f(1)g(sends)i(message)e(B)g(to)
g(task)g(2,)h(message)f(A)g(will)f(arriv)o(e)h(at)g(task)g(2)249
1412 y(b)q(efore)c(message)f(B.)g(Moreo)o(v)o(er,)h(if)e(b)q(oth)i
(messages)f(arriv)o(e)g(b)q(efore)i(task)e(2)g(do)q(es)h(a)f(receiv)o
(e,)h(then)g(a)249 1466 y(wildcard)g(receiv)o(e)h(will)d(alw)o(a)o(ys)h
(return)i(message)f(A.)249 1528 y(p)o(vm)p 331 1528 13
2 v 13 w(recv)i(is)e(blo)q(c)o(king,)f(whic)o(h)h(means)g(the)h
(routine)g(w)o(aits)f(un)o(til)f(a)h(message)g(matc)o(hing)f(the)i
(user)249 1582 y(sp)q(eci\014ed)k(tid)d(and)h(msgtag)e(v)n(alues)i
(arriv)o(es)g(at)g(the)h(lo)q(cal)e(p)o(vmd.)25 b(If)17
b(the)h(message)e(has)h(already)249 1636 y(arriv)o(ed,)d(p)o(vm)p
484 1636 V 13 w(recv)h(returns)g(immediately)c(with)i(the)i(message.)
249 1699 y(p)o(vm)p 331 1699 V 13 w(precv)f(do)q(es)f(not)g(a\013ect)g
(the)h(state)f(of)f(the)h(curren)o(t)h(receiv)o(e)g(message)e(bu\013er)
i(\(created)g(b)o(y)e(the)249 1753 y(other)j(receiv)o(e)g(functions\).)
249 1865 y Fr(Examples)274 1931 y(C:)495 1985 y Fs(info)21
b(=)g(pvm_precv\()f(tid,)h(msgtag,)f(array,)h(cnt,)g(PVM_FLOAT,)887
2039 y(&src,)g(&atag,)f(&acnt)h(\);)274 2093 y Fr(F)l(ortran:)495
2147 y Fs(CALL)g(PVMFPRECV\()e(-1,)i(4,)h(BUF,)f(CNT,)g(REAL4,)843
2201 y(SRC,)g(ATAG,)g(ACNT,)g(INFO)g(\))p eop
%%Page: 232 251
232 250 bop 249 251 a Fu(232)1321 b(App)q(endix)15 b(B)249
507 y Fr(Errors)249 578 y FA(The)f(follo)o(wing)e(error)i(conditions)g
(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p 1238 578 14
2 v 15 w(send)p FA(.)274 646 y(Name)221 b(P)o(ossible)14
b(Cause)p 249 663 1338 2 v 274 701 a(PvmBadP)o(aram)47
b(giving)13 b(an)g(in)o(v)n(alid)f(tid)i(or)f(a)h(msgtag.)274
755 y(PvmSysErr)120 b(p)o(vmd)13 b(not)g(resp)q(onding.)p
eop
%%Page: 233 252
233 251 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(233)291
511 y FE(p)n(vmfprob)r(e\(\))795 b(p)n(vm)p 1597 511
21 2 v 24 w(prob)r(e\(\))p 249 595 1591 16 v 249 658
a FA(Chec)o(ks)15 b(whether)g(message)f(has)g(arriv)o(ed.)249
770 y Fr(Synopsis)274 836 y(C)173 b Fs(int)21 b(bufid)g(=)h(pvm)p
812 836 14 2 v 15 w(probe\()e(int)i(tid,)f(int)g(msgtag)f(\))274
890 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfprobe\()f(tid,)h(msgtag,)f
(bufid)h(\))249 997 y Fr(P)o(arameters)274 1056 y Fs(tid)115
b FA({)49 b(in)o(teger)13 b(task)f(iden)o(ti\014er)g(of)g(sending)g
(pro)q(cess)i(supplied)e(b)o(y)g(the)g(user.)19 b(\(A)525
1110 y(-1)14 b(in)f(this)h(argumen)o(t)f(matc)o(hes)g(an)o(y)h(tid)f
(\(wildcard\).\))274 1164 y Fs(msgtag)49 b FA({)g(in)o(teger)11
b(message)e(tag)h(supplied)g(b)o(y)g(the)h(user.)18 b(msgtag)8
b(should)i(b)q(e)h Fn(>)p FA(=)h(0.)525 1217 y(\(A)i(-1)g(in)f(this)h
(argumen)o(t)f(matc)o(hes)g(an)o(y)h(message)f(tag)h(\(wildcard\).\))
274 1271 y Fs(bufid)71 b FA({)49 b(in)o(teger)15 b(returning)f(the)h(v)
n(alue)f(of)f(the)i(new)f(activ)o(e)h(receiv)o(e)g(bu\013er)g(iden-)525
1325 y(ti\014er.)k(V)m(alues)13 b(less)i(than)f(zero)g(indicate)g(an)g
(error.)249 1433 y Fr(Discussion)249 1503 y FA(The)d(routine)g
Fs(pvm)p 540 1503 V 15 w(probe)f FA(c)o(hec)o(ks)i(to)f(see)h(if)e(a)h
(message)f(with)h(lab)q(el)f Fs(msgtag)f FA(has)i(arriv)o(ed)g(from)e
Fs(tid)p FA(.)249 1557 y(If)14 b(a)f(matc)o(hing)f(message)i(has)g
(arriv)o(ed,)g(p)o(vm)p 975 1557 13 2 v 13 w(prob)q(e)h(returns)g(a)f
(bu\013er)h(iden)o(ti\014er)f(in)g Fs(bufid)p FA(.)j(This)249
1611 y Fs(bufid)f FA(can)i(b)q(e)g(used)g(in)f(a)h(p)o(vm)p
786 1611 V 13 w(bu\014nfo)f(call)g(to)g(determine)g(information)e(ab)q
(out)i(the)h(message)249 1665 y(suc)o(h)d(as)f(its)g(source)h(and)e
(length.)249 1727 y(If)h(the)g(requested)i(message)d(has)h(not)g(arriv)
o(ed,)f(p)o(vm)p 1089 1727 V 14 w(prob)q(e)h(returns)i(with)d(a)h(0)f
(in)h Fs(bufid)p FA(.)i(If)e(some)249 1781 y(error)h(o)q(ccurs,)g
Fs(bufid)e FA(will)f(b)q(e)i Fn(<)e FA(0.)249 1844 y(A)19
b(-1)f(in)g Fs(msgtag)g FA(or)h Fs(tid)f FA(matc)o(hes)g(an)o(ything.)
32 b(This)18 b(feature)i(allo)o(ws)d(the)i(user)h(the)g(follo)o(wing)
249 1898 y(options.)25 b(If)16 b(tid)g(=)g Ft(\000)p
FA(1)g(and)g(msgtag)f(is)h(de\014ned)h(b)o(y)f(the)h(user,)h(then)f(p)o
(vm)p 1480 1898 V 13 w(prob)q(e)g(will)e(accept)i(a)249
1952 y(message)11 b(from)f(an)o(y)g(pro)q(cess)j(that)f(has)f(a)g(matc)
o(hing)f(msgtag.)15 b(If)c(msgtag)f(=)h Ft(\000)p FA(1)h(and)f(tid)g
(is)g(de\014ned)249 2006 y(b)o(y)h(the)i(user,)f(then)h(p)o(vm)p
650 2006 V 13 w(prob)q(e)f(will)e(accept)j(an)o(y)e(message)h(that)f
(is)h(sen)o(t)g(from)e(pro)q(cess)k(tid.)i(If)12 b(tid)249
2059 y(=)g Ft(\000)p FA(1)i(and)f(msgtag)g(=)f Ft(\000)p
FA(1,)h(then)h(p)o(vm)p 882 2059 V 14 w(prob)q(e)g(will)f(accept)i(an)o
(y)e(message)h(from)e(an)o(y)h(pro)q(cess.)249 2122 y(p)o(vm)p
331 2122 V 13 w(prob)q(e)18 b(can)e(b)q(e)i(called)e(m)o(ultiple)e
(times)i(to)g(c)o(hec)o(k)i(whether)g(a)e(giv)o(en)g(message)g(has)h
(arriv)o(ed)249 2176 y(y)o(et.)j(After)15 b(the)g(message)f(has)h
(arriv)o(ed,)f(p)o(vm)p 987 2176 V 13 w(recv)i(m)o(ust)d(b)q(e)i
(called)f(b)q(efore)i(the)f(message)f(can)g(b)q(e)249
2230 y(unpac)o(k)o(ed)g(in)o(to)g(the)g(user's)h(memory)c(using)j(the)g
(unpac)o(k)g(routines.)p eop
%%Page: 234 253
234 252 bop 249 251 a Fu(234)1321 b(App)q(endix)15 b(B)249
507 y Fr(Examples)274 574 y(C:)495 628 y Fs(tid)21 b(=)g
(pvm_parent\(\);)495 682 y(msgtag)f(=)i(4)f(;)495 736
y(arrived)f(=)i(pvm_probe\()d(tid,)i(msgtag)g(\);)495
790 y(if)g(\()h(arrived)e(>)h(0)h(\))538 844 y(info)f(=)h
(pvm_bufinfo\()d(arrived,)h(&len,)h(&tag,)g(&tid)g(\);)495
898 y(else)495 952 y(/*)g(go)g(do)h(other)e(computing)g(*/)274
1006 y Fr(F)l(ortran:)495 1060 y Fs(CALL)h(PVMFPROBE\()e(-1,)i(4,)h
(ARRIVED)e(\))495 1114 y(IF)h(\()h(ARRIVED)e(.GT.)h(0)g(\))h(THEN)560
1167 y(CALL)f(PVMFBUFINFO\()e(ARRIVED,)h(LEN,)h(TAG,)g(TID,)g(INFO)g
(\))495 1221 y(ELSE)274 1275 y(*)264 b(GO)21 b(DO)h(USEFUL)e(WORK)495
1329 y(ENDIF)249 1436 y Fr(Errors)249 1507 y FA(The)14
b(follo)o(wing)e(error)i(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f
Fs(pvm)p 1238 1507 14 2 v 15 w(probe)p FA(.)274 1575
y(Name)221 b(P)o(ossible)14 b(Cause)p 249 1592 1338 2
v 274 1630 a(PvmBadP)o(aram)47 b(giving)13 b(an)g(in)o(v)n(alid)f(tid)i
(v)n(alue)f(or)h(msgtag.)274 1684 y(PvmSysErr)120 b(p)o(vmd)13
b(not)g(resp)q(onding.)p eop
%%Page: 235 254
235 253 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(235)291
511 y FE(p)n(vmfpsend\(\))793 b(p)n(vm)p 1596 511 21
2 v 24 w(psend\(\))p 249 595 1591 16 v 249 658 a FA(P)o(ac)o(ks)14
b(and)g(sends)h(data)f(in)f(one)h(call.)249 770 y Fr(Synopsis)274
836 y(C)173 b Fs(int)21 b(info)g(=)h(pvm)p 790 836 14
2 v 15 w(psend\()f(int)g(tid,)g(int)g(msgtag,)f(char)h(*buf,)983
890 y(int)g(len,)g(int)g(datatype)f(\))274 944 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfpsend\()f(tid,)h(msgtag,)f(buf,)h(len,)g(datatype,)f
(info)h(\))249 1051 y Fr(P)o(arameters)274 1110 y Fs(tid)158
b FA({)50 b(in)o(teger)14 b(task)g(iden)o(ti\014er)g(of)g(destination)f
(pro)q(cess.)274 1164 y Fs(msgtag)92 b FA({)50 b(in)o(teger)10
b(message)g(tag)g(supplied)g(b)o(y)g(the)g(user.)18 b(msgtag)9
b(should)h(b)q(e)g Fn(>)p FA(=)i(0.)274 1217 y Fs(buf)158
b FA({)50 b(p)q(oin)o(ter)14 b(to)g(a)f(bu\013er)i(to)f(send.)274
1271 y Fs(len)158 b FA({)50 b(length)14 b(of)f(bu\013er)i(\(in)e(m)o
(ultiple)f(of)h(data)h(t)o(yp)q(e)g(size\).)274 1325
y Fs(datatype)48 b FA({)i(t)o(yp)q(e)14 b(of)f(data)h(to)g(whic)o(h)f
(buf)h(p)q(oin)o(ts)g(\(see)h(b)q(elo)o(w\).)274 1379
y Fs(info)136 b FA({)50 b(in)o(teger)12 b(status)g(co)q(de)g(returned)i
(b)o(y)d(the)h(routine.)18 b(V)m(alues)11 b(less)h(than)g(zero)569
1433 y(indicate)i(an)f(error.)249 1541 y Fr(Discussion)249
1611 y FA(The)h(routine)g Fs(pvm)p 546 1611 V 15 w(psend)e
FA(tak)o(es)i(a)g(p)q(oin)o(ter)f(to)h(a)f(bu\013er)h
Fs(buf)p FA(,)f(its)g(length)h Fs(len)p FA(,)e(and)i(its)f(data)h(t)o
(yp)q(e)249 1665 y Fs(datatype)e FA(and)i(sends)h(this)f(data)g
(directly)g(to)g(the)g(PVM)g(task)g(iden)o(ti\014ed.)249
1727 y(p)o(vm)p 331 1727 13 2 v 13 w(psend)h(data)f(can)g(b)q(e)g
(receiv)o(ed)i(b)o(y)d(p)o(vm)p 986 1727 V 14 w(precv,)h(p)o(vm)p
1203 1727 V 14 w(recv,)g(p)o(vm)p 1397 1727 V 13 w(trecv,)h(or)f(p)o
(vm)p 1658 1727 V 13 w(nrecv.)249 1790 y Fs(msgtag)f
FA(is)i(used)g(to)f(lab)q(el)g(the)i(con)o(ten)o(t)f(of)f(the)h
(message.)20 b(If)14 b(p)o(vm)p 1327 1790 V 13 w(send)h(is)g
(successful,)h Fs(info)e FA(will)249 1844 y(b)q(e)h(0.)i(If)d(some)f
(error)i(o)q(ccurs,)g Fs(info)e FA(will)f(b)q(e)i Fn(<)e
FA(0.)249 1906 y(The)g(p)o(vm)p 414 1906 V 14 w(psend)h(routine)f(is)g
(async)o(hronous.)18 b(Computation)9 b(on)j(the)h(sending)f(pro)q
(cessor)i(resumes)249 1960 y(as)j(so)q(on)g(as)g(the)h(message)f(is)g
(safely)g(on)f(its)h(w)o(a)o(y)g(to)g(the)g(receiving)h(pro)q(cessor.)
29 b(This)17 b(approac)o(h)249 2014 y(is)d(in)f(con)o(trast)h(to)g
(sync)o(hronous)g(comm)o(unication,)c(during)k(whic)o(h)f(computation)f
(on)i(the)g(sending)249 2068 y(pro)q(cessor)i(halts)d(un)o(til)h(the)g
(matc)o(hing)e(receiv)o(e)j(is)f(executed)i(b)o(y)d(the)i(receiving)f
(pro)q(cessor.)249 2130 y(In)e(C)f(the)h(datat)o(yp)q(e)g(parameter)f
(m)o(ust)g(b)q(e)h(one)g(of)f(the)h(follo)o(wing,)d(dep)q(ending)j(on)f
(the)h(t)o(yp)q(e)g(of)f(data)249 2184 y(to)j(b)q(e)g(sen)o(t:)423
2271 y Fs(datatype)173 b(Data)21 b(Type)423 2325 y(PVM_STR)195
b(string)423 2379 y(PVM_BYTE)173 b(byte)423 2433 y(PVM_SHORT)151
b(short)423 2487 y(PVM_INT)195 b(int)p eop
%%Page: 236 255
236 254 bop 249 251 a Fu(236)1321 b(App)q(endix)15 b(B)423
507 y Fs(PVM_FLOAT)151 b(real)423 561 y(PVM_CPLX)173
b(complex)423 615 y(PVM_DOUBLE)129 b(double)423 669 y(PVM_DCPLX)151
b(double)21 b(complex)423 723 y(PVM_LONG)173 b(long)21
b(integer)423 777 y(PVM_USHORT)129 b(unsigned)20 b(short)h(int)423
831 y(PVM_UINT)173 b(unsigned)20 b(int)423 885 y(PVM_ULONG)151
b(unsigned)20 b(long)h(int)249 972 y FA(In)14 b(F)m(ortran)g(the)g
(same)f(data)h(t)o(yp)q(es)g(sp)q(eci\014ed)i(for)d(pac)o(k)h(should)g
(b)q(e)g(used.)249 1034 y(The)g(PVM)g(mo)q(del)e(guaran)o(tees)i(the)g
(follo)o(wing)d(ab)q(out)j(message)f(order.)19 b(If)13
b(task)g(1)h(sends)g(message)249 1088 y(A)k(to)g(task)h(2,)f(then)h
(task)f(1)g(sends)h(message)f(B)h(to)f(task)g(2;)h(message)f(A)g(will)f
(arriv)o(e)h(at)g(task)g(2)249 1142 y(b)q(efore)c(message)f(B.)g(Moreo)
o(v)o(er,)h(if)e(b)q(oth)i(messages)f(arriv)o(e)g(b)q(efore)i(task)e(2)
g(do)q(es)h(a)f(receiv)o(e,)h(then)g(a)249 1196 y(wildcard)g(receiv)o
(e)h(will)d(alw)o(a)o(ys)h(return)i(message)f(A.)249
1259 y(p)o(vm)p 331 1259 13 2 v 13 w(psend)i(do)q(es)g(not)f(a\013ect)g
(the)h(state)g(of)e(the)h(curren)o(t)i(outgoing)c(message)i(bu\013er)h
(\(created)g(b)o(y)249 1313 y(p)o(vm)p 331 1313 V 13
w(initsend)e(and)g(used)h(b)o(y)f(p)o(vm)p 815 1313 V
13 w(send\).)249 1425 y Fr(Examples)274 1491 y(C:)495
1545 y Fs(info)21 b(=)g(pvm_psend\()f(tid,)h(msgtag,)f(array,)h(1000,)f
(PVM_FLOAT)g(\);)274 1599 y Fr(F)l(ortran:)495 1653 y
Fs(CALL)h(PVMFPSEND\()e(TID,)i(MSGTAG,)g(BUF,)g(CNT,)g(REAL4,)f(INFO)h
(\))p eop
%%Page: 237 256
237 255 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(237)249
507 y Fr(Errors)249 578 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 578 14 2 v 15 w(send)p FA(.)274 646 y(Name)221 b(P)o(ossible)14
b(Cause)p 249 663 1338 2 v 274 701 a(PvmBadP)o(aram)47
b(giving)13 b(an)g(in)o(v)n(alid)f(tid)i(or)f(a)h(msgtag.)274
755 y(PvmSysErr)120 b(p)o(vmd)13 b(not)g(resp)q(onding.)p
eop
%%Page: 238 257
238 256 bop 249 251 a Fu(238)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfpstat\(\))835 b(p)n(vm)p 1617 511 21
2 v 24 w(pstat\(\))p 249 595 1591 16 v 249 658 a FA(Returns)15
b(the)f(status)h(of)e(the)i(sp)q(eci\014ed)g(PVM)f(pro)q(cess.)249
770 y Fr(Synopsis)274 836 y(C)173 b Fs(int)21 b(status)g(=)h(pvm)p
834 836 14 2 v 15 w(pstat\()e(tid)h(\))274 890 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfpstat\()f(tid,)h(status)g(\))249 997
y Fr(P)o(arameters)274 1056 y Fs(tid)115 b FA({)49 b(in)o(teger)14
b(task)g(iden)o(ti\014er)h(of)e(the)h(PVM)h(pro)q(cess)g(in)f
(question.)274 1110 y Fs(status)49 b FA({)g(in)o(teger)15
b(returns)h(the)f(status)g(of)f(the)h(PVM)f(pro)q(cess)j(iden)o
(ti\014ed)d(b)o(y)g Fs(tid)p FA(.)525 1164 y(Status)i(is)f(PvmOk)e(if)i
(the)g(task)h(is)e(running,)h(PvmNoT)m(ask)e(if)h(not,)h(and)525
1217 y(PvmBadP)o(aram)c(if)i(the)i Fs(tid)e FA(is)h(bad.)249
1325 y Fr(Discussion)249 1395 y FA(The)k(routine)g Fs(pvm)p
554 1395 V 15 w(pstat)e FA(returns)j(the)f(status)h(of)e(the)h(pro)q
(cess)h(iden)o(ti\014ed)f(b)o(y)f Fs(tid)p FA(.)28 b(Also)18
b(note)249 1449 y(that)c(p)o(vm)p 421 1449 13 2 v 13
w(notify\(\))g(can)g(b)q(e)g(used)h(to)f(notify)f(the)h(caller)g(that)g
(a)f(task)h(has)g(failed.)249 1561 y Fr(Examples)274
1628 y(C:)538 1682 y Fs(tid)21 b(=)h(pvm_parent\(\);)538
1736 y(status)f(=)g(pvm_pstat\()f(tid)h(\);)274 1790
y Fr(F)l(ortran:)560 1844 y Fs(CALL)g(PVMFPARENT\()e(TID)j(\))560
1898 y(CALL)f(PVMFPSTAT\()f(TID,)h(STATUS)f(\))249 2005
y Fr(Errors)249 2075 y FA(The)14 b(follo)o(wing)e(error)i(conditions)g
(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p 1238 2075
14 2 v 15 w(pstat)p FA(.)274 2143 y(Name)221 b(P)o(ossible)14
b(Cause)p 249 2161 1338 2 v 274 2199 a(PvmBadP)o(aram)47
b(bad)14 b(parameter)f(\(most)g(lik)o(ely)m(,)f(an)i(in)o(v)n(alid)d
(tid)j(v)n(alue\).)274 2253 y(PvmSysErr)120 b(p)o(vmd)13
b(not)g(resp)q(onding.)274 2307 y(PvmNoT)m(ask)103 b(task)14
b(not)g(running.)p eop
%%Page: 239 258
239 257 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(239)291
511 y FE(p)n(vmfrecv\(\))885 b(p)n(vm)p 1642 511 21 2
v 25 w(recv\(\))p 249 595 1591 16 v 249 657 a FA(Receiv)o(es)15
b(a)f(message.)249 769 y Fr(Synopsis)274 836 y(C)173
b Fs(int)21 b(bufid)g(=)h(pvm)p 812 836 14 2 v 15 w(recv\()f(int)g
(tid,)g(int)g(msgtag)g(\))274 890 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfrecv\()f(tid,)h(msgtag,)g(bufid)f(\))249
997 y Fr(P)o(arameters)274 1055 y Fs(tid)115 b FA({)49
b(in)o(teger)13 b(task)f(iden)o(ti\014er)g(of)g(sending)g(pro)q(cess)i
(supplied)e(b)o(y)g(the)g(user.)19 b(\(A)525 1109 y(-1)14
b(in)f(this)h(argumen)o(t)f(matc)o(hes)g(an)o(y)h(tid)f
(\(wildcard\).\))274 1163 y Fs(msgtag)49 b FA({)g(in)o(teger)11
b(message)e(tag)h(supplied)g(b)o(y)g(the)h(user.)18 b(msgtag)8
b(should)i(b)q(e)h Fn(>)p FA(=)h(0.)525 1217 y(It)e(allo)o(ws)f(the)i
(user's)g(program)e(to)h(distinguish)f(b)q(et)o(w)o(een)j(di\013eren)o
(t)f(kinds)525 1271 y(of)16 b(messages)h(.)26 b(\(A)17
b(-1)f(in)g(this)h(argumen)o(t)f(matc)o(hes)g(an)o(y)g(message)g(tag)
525 1325 y(\(wildcard\).\))274 1379 y Fs(bufid)71 b FA({)49
b(in)o(teger)10 b(returns)i(the)e(v)n(alue)f(of)h(the)g(new)g(activ)o
(e)g(receiv)o(e)h(bu\013er)g(iden)o(ti\014er.)525 1433
y(V)m(alues)j(less)g(than)g(zero)h(indicate)f(an)f(error.)249
1540 y Fr(Discussion)249 1611 y FA(The)i(routine)g Fs(pvm)p
548 1611 V 15 w(recv)f FA(blo)q(c)o(ks)g(the)h(pro)q(cess)i(un)o(til)c
(a)i(message)f(with)g(lab)q(el)g Fs(msgtag)f FA(has)i(arriv)o(ed)249
1665 y(from)f Fs(tid)p FA(.)22 b(p)o(vm)p 531 1665 13
2 v 14 w(recv)16 b(then)h(places)f(the)g(message)g(in)f(a)g(new)h
FB(active)g FA(receiv)o(e)h(bu\013er,)f(whic)o(h)g(also)249
1719 y(clears)f(the)f(curren)o(t)i(receiv)o(e)f(bu\013er.)249
1781 y(A)g(-1)f(in)g Fs(msgtag)f FA(or)i Fs(tid)f FA(matc)o(hes)g(an)o
(ything.)20 b(This)14 b(allo)o(ws)f(the)j(user)f(the)h(follo)o(wing)c
(options.)19 b(If)249 1835 y(tid)c(=)e Ft(\000)p FA(1)i(and)g(msgtag)e
(is)i(de\014ned)h(b)o(y)f(the)h(user,)g(then)f(p)o(vm)p
1251 1835 V 14 w(recv)h(will)d(accept)j(a)f(message)g(from)249
1889 y(an)o(y)i(pro)q(cess)i(whic)o(h)e(has)g(a)g(matc)o(hing)f
(msgtag.)26 b(If)17 b(msgtag)e(=)j Ft(\000)p FA(1)f(and)g(tid)g(is)g
(de\014ned)h(b)o(y)f(the)249 1943 y(user,)f(then)g(p)o(vm)p
528 1943 V 14 w(recv)g(will)e(accept)j(an)o(y)d(message)h(that)h(is)f
(sen)o(t)h(from)e(pro)q(cess)j(tid.)22 b(If)15 b(tid)g(=)f
Ft(\000)p FA(1)249 1997 y(and)g(msgtag)e(=)g Ft(\000)p
FA(1,)h(then)i(p)o(vm)p 772 1997 V 13 w(recv)g(will)d(accept)k(an)o(y)d
(message)h(from)e(an)o(y)h(pro)q(cess.)249 2059 y(The)h(PVM)g(mo)q(del)
e(guaran)o(tees)i(the)g(follo)o(wing)d(ab)q(out)j(message)f(order.)19
b(If)13 b(task)g(1)h(sends)g(message)249 2113 y(A)k(to)g(task)h(2,)f
(then)h(task)f(1)g(sends)i(message)e(B)g(to)g(task)g(2,)h(message)f(A)g
(will)f(arriv)o(e)h(at)g(task)g(2)249 2167 y(b)q(efore)c(message)f(B.)g
(Moreo)o(v)o(er,)h(if)e(b)q(oth)i(messages)f(arriv)o(e)g(b)q(efore)i
(task)e(2)g(do)q(es)h(a)f(receiv)o(e,)h(then)g(a)249
2221 y(wildcard)g(receiv)o(e)h(will)d(alw)o(a)o(ys)h(return)i(message)f
(A.)249 2283 y(If)c(p)o(vm)p 369 2283 V 13 w(recv)h(is)f(successful,)i
Fs(bufid)c FA(will)h(b)q(e)h(the)h(v)n(alue)e(of)g(the)i(new)f(activ)o
(e)g(receiv)o(e)h(bu\013er)g(iden)o(ti\014er.)249 2337
y(If)j(some)f(error)h(o)q(ccurs,)h Fs(bufid)e FA(will)f(b)q(e)j
Fn(<)d FA(0.)249 2399 y(p)o(vm)p 331 2399 V 13 w(recv)k(is)e(blo)q(c)o
(king,)f(whic)o(h)h(means)g(the)h(routine)g(w)o(aits)f(un)o(til)f(a)h
(message)g(matc)o(hing)f(the)i(user)249 2453 y(sp)q(eci\014ed)k(tid)d
(and)h(msgtag)e(v)n(alues)i(arriv)o(es)g(at)g(the)h(lo)q(cal)e(p)o
(vmd.)25 b(If)17 b(the)h(message)e(has)h(already)249
2507 y(arriv)o(ed,)d(then)g(p)o(vm)p 578 2507 V 13 w(recv)h(returns)h
(imm)o(ediately)11 b(with)j(the)g(message.)p eop
%%Page: 240 259
240 258 bop 249 251 a Fu(240)1321 b(App)q(endix)15 b(B)249
507 y FA(Once)e(p)o(vm)p 435 507 13 2 v 13 w(recv)g(returns,)h(the)e
(data)f(in)h(the)g(message)g(can)g(b)q(e)g(unpac)o(k)o(ed)g(in)o(to)f
(the)i(user's)g(memory)249 561 y(using)h(the)g(unpac)o(k)g(routines.)
249 673 y Fr(Examples)274 740 y(C:)495 794 y Fs(tid)21
b(=)g(pvm_parent\(\);)495 848 y(msgtag)f(=)i(4)f(;)495
902 y(bufid)f(=)i(pvm_recv\()e(tid,)h(msgtag)f(\);)495
956 y(info)h(=)g(pvm_upkint\()f(tid_array,)f(10,)j(1)f(\);)495
1010 y(info)g(=)g(pvm_upkint\()f(problem_size,)f(1,)i(1)h(\);)495
1064 y(info)f(=)g(pvm_upkfloat\()e(input_array,)h(100,)h(1)g(\);)274
1118 y Fr(F)l(ortran:)495 1172 y Fs(CALL)g(PVMFRECV\()e(-1,)j(4,)f
(BUFID)g(\))495 1226 y(CALL)g(PVMFUNPACK\()e(INTEGER4,)h(TIDS,)h(25,)g
(1,)g(INFO)g(\))495 1280 y(CALL)g(PVMFUNPACK\()e(REAL8,)i(MATRIX,)f
(100,)h(100,)g(INFO)g(\))249 1386 y Fr(Errors)249 1457
y FA(The)14 b(follo)o(wing)e(error)i(conditions)g(can)g(b)q(e)h
(returned)g(b)o(y)f Fs(pvm)p 1238 1457 14 2 v 15 w(recv)p
FA(.)274 1525 y(Name)221 b(P)o(ossible)14 b(Cause)p 249
1543 1338 2 v 274 1580 a(PvmBadP)o(aram)47 b(giving)13
b(an)g(in)o(v)n(alid)f(tid)i(v)n(alue,)e(or)i(msgtag)e
Fn(<)g Ft(\000)p FA(1.)274 1634 y(PvmSysErr)120 b(p)o(vmd)13
b(not)g(resp)q(onding.)p eop
%%Page: 241 260
241 259 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(241)291
511 y FE(|||{)955 b(p)n(vm)p 1621 511 21 2 v 25 w(recvf\(\))p
249 595 1591 16 v 249 658 a FA(Rede\014nes)15 b(the)g(comparison)d
(function)i(used)h(to)e(accept)j(messages.)249 770 y
Fr(Synopsis)274 836 y(C)195 b Fs(int)21 b(\(*old\)\(\))f(=)i
(pvm_recvf\()e(int)h(\(*new\)\()f(int)h(bufid,)1092 890
y(int)g(tid,)g(int)g(tag)g(\)\))274 944 y Fr(F)l(ortran)48
b FA(NOT)15 b(A)-5 b(V)g(AILABLE)249 1051 y Fr(P)o(arameters)274
1110 y Fs(tid)93 b FA({)49 b(in)o(teger)15 b(task)f(iden)o(ti\014er)g
(of)f(sending)h(pro)q(cess)i(supplied)e(b)o(y)g(the)g(user.)274
1164 y Fs(tag)93 b FA({)49 b(in)o(teger)15 b(message)e(tag)h(supplied)g
(b)o(y)f(the)i(user.)274 1217 y Fs(bufid)49 b FA({)g(in)o(teger)15
b(message)e(bu\013er)i(iden)o(ti\014er.)249 1325 y Fr(Discussion)249
1395 y FA(The)f(routine)f Fs(pvm)p 545 1395 14 2 v 15
w(recvf)f FA(de\014nes)j(the)f(comparison)e(function)h(to)g(b)q(e)h
(used)g(b)o(y)f(the)h(p)o(vm)p 1677 1395 13 2 v 13 w(recv)g(and)249
1449 y(p)o(vm)p 331 1449 V 13 w(nrecv)20 b(functions.)33
b(It)18 b(is)h(a)o(v)n(ailable)d(as)j(a)f(means)g(to)h(customize)f(PVM)
h(message)g(passing.)249 1503 y(p)o(vm)p 331 1503 V 13
w(recvf)d(sets)g(a)e(user)i(supplied)f(comparison)f(function)g(to)h(ev)
n(aluate)f(messages)h(for)f(receiving)i(.)249 1557 y(The)g(default)f
(comparison)g(function)g(ev)n(aluates)h(the)g(source)h(and)e(message)h
(tag)f(asso)q(ciated)h(with)249 1611 y(all)d(incoming)e(messages.)249
1673 y(p)o(vm)p 331 1673 V 13 w(recvf)16 b(is)e(in)o(tended)h(for)f
(sophisticated)h(C)g(programmers)d(who)j(understand)g(the)g(function)g
(of)249 1727 y(suc)o(h)k(routines)f(\(lik)o(e)f(signal\))g(and)g(who)h
(require)g(a)g(receiv)o(e)h(routine)e(that)h(can)g(matc)o(h)f(on)g
(more)249 1781 y(complex)c(message)g(con)o(texts)i(than)f(the)h
(default)e(pro)o(vides.)249 1844 y(p)o(vm)p 331 1844
V 13 w(recvf)i(returns)g(0)e(if)g(the)h(default)f(matc)o(hing)f
(function;)h(otherwise,)h(it)g(returns)h(the)f(matc)o(hing)249
1898 y(function.)k(The)c(matc)o(hing)e(function)i(should)f(return)i
(the)g(follo)o(wing:)274 1956 y(V)m(alue)49 b(Action)14
b(T)m(ak)o(en)p 249 1974 1228 2 v 311 2012 a Fn(<)e FA(0)49
b(return)15 b(immediately)c(with)i(this)h(error)h(co)q(de)355
2065 y(0)49 b(do)14 b(not)g(pic)o(k)f(this)h(message)355
2119 y(1)49 b(pic)o(k)14 b(this)g(message,)f(and)h(do)f(not)h(scan)h
(the)f(rest)311 2173 y Fn(>)e FA(1)49 b(pic)o(k)14 b(this)g(highest)g
(rank)o(ed)g(message)g(after)g(scanning)g(them)f(all)p
249 2191 V eop
%%Page: 242 261
242 260 bop 249 251 a Fu(242)1321 b(App)q(endix)15 b(B)249
507 y Fr(Example:)21 b(Implemen)o(ti)o(n)o(g)13 b(prob)q(e)i(with)g
(recvf)249 594 y Fs(#include)20 b("pvm3.h")249 702 y(static)h(int)g
(foundit)f(=)i(0;)249 810 y(static)f(int)249 864 y(foo_match\(mid,)e
(tid,)i(code\))423 918 y(int)h(mid;)423 972 y(int)g(tid;)423
1026 y(int)g(code;)249 1080 y({)423 1134 y(int)g(t,)f(c,)g(cc;)423
1242 y(if)h(\(\(cc)f(=)g(pvm_bufinfo\(mid,)e(\(int*\)0,)h(&c,)h(&t\)\))
g(<)h(0\))598 1296 y(return)e(cc;)423 1350 y(if)i(\(\(tid)f(==)g(-1)g
(||)h(tid)f(==)g(t\))423 1404 y(&&)h(\(code)f(==)g(-1)g(||)h(code)f(==)
g(c\)\))598 1458 y(foundit)f(=)i(1;)423 1512 y(return)f(0;)249
1566 y(})249 1620 y(int)249 1674 y(probe\(src,)f(code\))249
1728 y({)423 1782 y(int)i(\(*omatch\)\(\);)423 1836 y(int)g(cc;)423
1944 y(omatch)f(=)h(pvm_recvf\(foo_m)o(atch\))o(;)423
1998 y(foundit)f(=)g(0;)423 2051 y(if)h(\(\(cc)f(=)g(pvm_nrecv\(src,)e
(code\)\))i(<)g(0\))598 2105 y(return)f(cc;)423 2159
y(pvm_recvf\(omatch\);)423 2213 y(return)h(foundit;)249
2267 y(})249 2379 y Fr(Errors)249 2450 y FA(No)14 b(error)h(condition)e
(is)h(returned)h(b)o(y)f Fs(pvm)p 936 2450 14 2 v 15
w(recvf)p FA(.)p eop
%%Page: 243 262
243 261 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(243)291
511 y FE(p)n(vmfreduce\(\))742 b(p)n(vm)p 1571 511 21
2 v 24 w(reduce\(\))p 249 595 1591 16 v 249 658 a FA(P)o(erforms)13
b(a)h(reduce)i(op)q(eration)d(o)o(v)o(er)h(mem)o(b)q(ers)f(of)g(the)i
(sp)q(eci\014ed)g(group.)249 770 y Fr(Synopsis)274 836
y(C)173 b Fs(int)21 b(info)g(=)h(pvm)p 790 836 14 2 v
15 w(reduce\()e(void)h(\(*func\)\(\),)699 890 y(void)g(*data,)g(int)g
(count,)f(int)i(datatype,)699 944 y(int)f(msgtag,)g(char)g(*group,)f
(int)h(root\))274 998 y Fr(F)l(ortran)48 b Fs(call)21
b(pvmfreduce\()f(func,)h(data,)f(count,)h(datatype,)721
1052 y(msgtag,)f(group,)h(root,)g(info)g(\))249 1159
y Fr(P)o(arameters)274 1217 y Fs(func)136 b FA({)50 b(function)11
b(that)h(de\014nes)h(the)g(op)q(eration)f(p)q(erformed)f(on)h(the)g
(global)e(data.)569 1271 y(Prede\014ned)17 b(are)e(PvmMax,)e(PvmMin,)g
(PvmSum,)f(and)i(PvmPro)q(duct.)569 1325 y(Users)h(can)f(de\014ne)h
(their)f(o)o(wn)g(function.)274 1379 y Fs(data)136 b
FA({)50 b(-oin)o(ter)18 b(to)g(the)h(starting)f(address)i(of)e(an)g
(arra)o(y)g(of)g(lo)q(cal)f(v)n(alues.)31 b(On)569 1433
y(return,)18 b(the)f(data)f(arra)o(y)h(on)f(the)h(ro)q(ot)g(will)e(b)q
(e)i(o)o(v)o(erwritten)h(with)e(the)569 1487 y(result)e(of)g(the)g
(reduce)i(op)q(eration)d(o)o(v)o(er)h(the)h(group.)274
1541 y Fs(count)114 b FA({)50 b(in)o(teger)14 b(sp)q(ecifying)g(the)g
(n)o(um)o(b)q(er)f(of)h(elemen)o(ts)f(in)h(data)f(arra)o(y)m(.)274
1595 y Fs(datatype)48 b FA({)i(in)o(teger)14 b(sp)q(ecifying)g(the)g(t)
o(yp)q(e)h(of)e(the)h(en)o(tries)h(in)f(the)g(data)g(arra)o(y)m(.)274
1649 y Fs(msgtag)92 b FA({)50 b(in)o(teger)14 b(message)f(tag)g
(supplied)h(b)o(y)f(the)h(user.)19 b(msgtag)12 b(should)h(b)q(e)i
Ft(\025)c FA(0.)274 1703 y Fs(group)114 b FA({)50 b(c)o(haracter)15
b(string)f(group)g(name)e(of)i(an)f(existing)h(group.)274
1757 y Fs(root)136 b FA({)50 b(in)o(teger)14 b(instance)h(n)o(um)o(b)q
(er)e(of)g(group)h(mem)o(b)q(er)e(who)i(gets)g(the)h(result.)274
1811 y Fs(info)136 b FA({)50 b(in)o(teger)12 b(status)g(co)q(de)g
(returned)i(b)o(y)d(the)h(routine.)18 b(V)m(alues)11
b(less)h(than)g(zero)569 1865 y(indicate)i(an)f(error.)249
1972 y Fr(Discussion)249 2043 y FA(The)i(routine)h Fs(pvm)p
549 2043 V 15 w(reduce\(\))d FA(p)q(erforms)h(global)g(op)q(erations)h
(suc)o(h)h(as)f(max,)d(min,)h(and)i(sum)f(o)o(v)o(er)249
2097 y(all)e(the)h(tasks)g(in)f(a)h(group.)k(All)12 b(group)g(mem)o(b)q
(ers)g(call)g(p)o(vm)p 1209 2097 13 2 v 13 w(reduce\(\))j(with)d(their)
h(lo)q(cal)f(data,)g(and)249 2151 y(the)j(result)h(of)e(the)h
(reduction)h(op)q(eration)f(app)q(ears)g(on)g(the)g(user-sp)q
(eci\014ed)i(ro)q(ot)e(task)g Fs(root)p FA(.)20 b(The)249
2205 y(ro)q(ot)14 b(task)g(is)g(iden)o(ti\014ed)g(b)o(y)f(its)h
(instance)h(n)o(um)o(b)q(er)e(in)h(the)g(group.)249 2267
y(The)e(p)o(vm)f(supplies)h(the)g(follo)o(wing)d(prede\014ned)14
b(global)c(functions)i(that)g(can)g(b)q(e)h(sp)q(eci\014ed)g(in)e
Fs(func)p FA(.)445 2346 y Fs(PvmMin)445 2400 y(PvmMax)445
2454 y(PvmSum)445 2508 y(PvmProduct)p eop
%%Page: 244 263
244 262 bop 249 251 a Fu(244)1321 b(App)q(endix)15 b(B)249
507 y FA(PvmMax)g(and)h(PvmMin)f(are)h(implemen)o(ted)f(for)h(datat)o
(yp)q(es)g(b)o(yte,)h(short,)g(in)o(teger,)g(long,)f(\015oat,)249
561 y(double,)e(complex,)f(and)i(double)f(complex.)19
b(F)m(or)14 b(complex)g(v)n(alues)g(the)h(minim)n(um)10
b(\(maxim)o(um)n(\))i(is)249 615 y(that)i(complex)f(pair)h(with)g(the)g
(minim)n(um)c(\(maxim)o(um)n(\))h(mo)q(dulus.)18 b(PvmSum)11
b(and)j(PvmPro)q(duct)249 669 y(are)j(implemen)o(ted)d(for)i(datat)o
(yp)q(es)h(short,)g(in)o(teger,)g(long,)e(\015oat,)h(double,)h
(complex,)e(and)h(double)249 723 y(complex.)249 785 y(C)e(and)g(F)m
(ortran)f(de\014ned)i Fs(datatypes)34 b FA(are)14 b(as)g(follo)o(ws:)
489 864 y Fs(C)21 b(Data)g(Types)65 b(Fortran)20 b(Data)h(Types)445
918 y(------------------)o(-----)o(-----)o(-----)o(--)489
972 y(PVM_BYTE)151 b(BYTE1)489 1026 y(PVM_SHORT)129 b(INT2)489
1080 y(PVM_INT)173 b(INT4)489 1134 y(PVM_FLOAT)129 b(REAL4)489
1188 y(PVM_CPLX)151 b(COMPLEX8)489 1242 y(PVM_DOUBLE)107
b(REAL8)489 1296 y(PVM_DCPLX)129 b(COMPLEX16)489 1350
y(PVM_LONG)249 1429 y FA(A)14 b(user-de\014ned)i(function)e(ma)o(y)e(b)
q(e)i(used)h(used)g(in)e Fs(func)p FA(,)g(the)h(synax)g(is:)293
1516 y Fs(C)65 b(void)21 b(func\(int)f(*datatype,)g(void)h(*x,)g(void)g
(*y,)598 1570 y(int)g(*num,)g(int)g(*info\))293 1678
y(Fortran)85 b(call)21 b(func\(datatype,)e(x,)j(y,)f(num,)g(info\))249
1765 y FA(func)16 b(is)g(the)g(base)h(function)e(used)i(for)e(the)i
(reduction)f(op)q(eration.)24 b(Both)16 b(x)g(and)g(y)f(are)i(arra)o
(ys)f(of)249 1819 y(t)o(yp)q(e)h(sp)q(eci\014ed)g(b)o(y)f(datat)o(yp)q
(e)h(with)e(n)o(um)g(en)o(tries.)26 b(The)17 b(argumen)o(ts)e(datat)o
(yp)q(e)h(and)g(info)f(are)i(as)249 1873 y(sp)q(eci\014ed)h(ab)q(o)o(v)
o(e.)24 b(The)17 b(argumen)o(ts)e(x)h(and)g(n)o(um)f(corresp)q(ond)j
(to)e(data)g(and)g(coun)o(t)g(ab)q(o)o(v)o(e.)25 b(The)249
1927 y(argumen)o(t)13 b(y)h(con)o(tains)f(receiv)o(ed)j(v)n(alues.)249
1989 y Fr(Note:)h FA(p)o(vm)p 463 1989 13 2 v 13 w(reduce\(\))c(do)q
(es)f(not)f(blo)q(c)o(k.)16 b(if)10 b(a)h(task)g(calls)f(p)o(vm)p
1245 1989 V 14 w(reduce)i(and)f(then)h(lea)o(v)o(es)f(the)g(group)249
2043 y(b)q(efore)k(the)f(ro)q(ot)g(has)g(called)g(p)o(vm)p
808 2043 V 13 w(reduce,)h(an)f(error)h(ma)o(y)d(o)q(ccur.)249
2105 y(The)17 b(curren)o(t)h(algorithm)c(is)i(v)o(ery)h(simple)e(and)i
(robust.)26 b(A)17 b(future)g(implemen)o(tatio)o(n)d(ma)o(y)h(mak)o(e)
249 2159 y(more)e(e\016cien)o(t)h(use)h(of)e(the)i(arc)o(hitecture)h
(to)d(allo)o(w)f(greater)j(parallelism.)p eop
%%Page: 245 264
245 263 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(245)249
507 y Fr(Examples)274 574 y(C:)495 628 y Fs(info)21 b(=)43
b(pvm_reduce\(PvmMax)o(,)19 b(&myvals,)h(10,)h(PVM_INT,)909
682 y(msgtag,)f("workers",)g(roottid\);)274 736 y Fr(F)l(ortran:)495
790 y Fs(CALL)h(PVMFREDUCE\(PvmM)o(ax,)e(MYVALS,)h(COUNT,)h(INT4,)843
844 y(MTAG,)g('workers',)f(ROOT,)h(INFO\))249 951 y Fr(Errors)249
1021 y FA(The)14 b(follo)o(wing)e(error)i(conditions)g(can)g(b)q(e)h
(returned)g(b)o(y)f Fs(pvm)p 1238 1021 14 2 v 15 w(reduce)p
FA(.)274 1089 y(Name)221 b(P)o(ossible)14 b(Cause)p 249
1107 1338 2 v 274 1145 a(PvmBadP)o(aram)47 b(giving)13
b(an)g(in)o(v)n(alid)f(argumen)o(t)h(v)n(alue.)274 1199
y(PvmNoInst)119 b(calling)13 b(task)h(is)f(not)h(in)g(the)g(group.)274
1252 y(PvmSysErr)120 b(lo)q(cal)13 b(p)o(vmd)g(is)g(not)h(resp)q
(onding.)p eop
%%Page: 246 265
246 264 bop 249 251 a Fu(246)1321 b(App)q(endix)15 b(B)291
511 y FE(||{)867 b(p)n(vm)p 1464 511 21 2 v 24 w(reg)p
1582 511 V 25 w(hoster\(\))p 249 595 1591 16 v 249 658
a FA(Registers)15 b(this)f(task)g(as)g(resp)q(onsible)h(for)e(adding)g
(new)i(PVM)f(hosts.)249 769 y Fr(Synopsis)274 833 y(C)50
b Fs(#include)20 b(<pvmsdpro.h>)358 887 y(int)h(info)g(=)h(pvm)p
667 887 14 2 v 15 w(reg)p 748 887 V 15 w(hoster\(\))249
993 y Fr(P)o(arameters)274 1061 y Fs(info)49 b FA({)h(in)o(teger)14
b(status)h(co)q(de)f(returned)i(b)o(y)d(the)i(routine.)249
1172 y Fr(Discussion)249 1240 y FA(The)k(routine)g Fs(pvm)p
556 1240 V 15 w(reg)p 637 1240 V 15 w(hoster)f FA(registers)i(the)f
(calling)f(task)g(as)h(a)g(PVM)g(sla)o(v)o(e)f(p)o(vmd)f(starter.)249
1294 y(When)e(the)g(master)f(p)o(vmd)f(receiv)o(es)j(a)f(DM)p
957 1294 13 2 v 15 w(ADD)f(message,)g(instead)h(of)f(starting)g(the)h
(new)g(sla)o(v)o(e)249 1348 y(p)o(vmd)e(pro)q(cesses)18
b(itself,)c(it)g(passes)i(a)f(message)f(to)h(the)g(hoster,)h(whic)o(h)e
(do)q(es)i(the)f(dirt)o(y)g(w)o(ork)f(and)249 1402 y(sends)h(a)f
(message)f(bac)o(k)h(to)g(the)g(p)o(vmd.)249 1463 y Fr(Note:)21
b FA(This)15 b(function)g(isn't)g(for)g(b)q(eginners.)23
b(If)15 b(one)h(do)q(esn't)f(grok)g(what)g(it)g(do)q(es,)h(he)g
(probably)249 1517 y(do)q(esn't)e(need)h(it.)249 1578
y(F)m(or)h(a)g(more)f(complete)h(explanation)f(of)h(what's)g(going)f
(on)h(here,)i(the)f(user)g(should)f(refer)h(to)f(the)249
1632 y(PVM)e(source)g(co)q(de)h(and/or)d(user)j(guide)e(section)h(on)f
(implemen)o(tation;)d(this)j(is)g(just)h(a)f(man)f(page.)249
1686 y(That)i(said...)249 1747 y(When)i(the)g(master)f(p)o(vmd)f
(receiv)o(es)j(a)e Fs(DM)p 937 1747 14 2 v 15 w(ADD)g
FA(message)g(\(request)j(to)d(add)g(hosts)h(to)g(the)g(virtual)249
1801 y(mac)o(hine\),)g(it)h(lo)q(oks)f(up)h(the)g(new)g(host)h(IP)f
(addresses,)i(gets)e(parameters)g(from)e(the)j(host)f(\014le)g(if)249
1855 y(it)g(w)o(as)f(started)i(with)f(one,)g(and)g(sets)h(default)e
(parameters.)27 b(It)17 b(then)h(either)f(attempts)g(to)f(start)249
1909 y(the)h(pro)q(cesses)h(\(using)e FB(rsh)g FA(or)f
FB(r)n(exe)n(c\(\))p FA(\))h(or,)g(if)f(a)h(hoster)h(has)f(registered,)
i(sends)f(it)e(a)h Fs(SM)p 1700 1909 V 15 w(STHOST)249
1963 y FA(message.)249 2024 y(The)e(format)e(of)i(the)g(SM)p
651 2024 13 2 v 15 w(STHOST)h(message)e(is)h(as)g(follo)o(ws:)274
2074 y Fs(int)21 b(nhosts)404 b FA(n)o(um)o(b)q(er)13
b(of)g(hosts)274 2128 y Ft(f)542 2182 y Fs(int)21 b(tid)202
b FA(of)13 b(host)542 2236 y Fs(string)20 b(options)49
b FA(from)12 b(host\014le)i(so=)g(\014eld)542 2290 y
Fs(string)20 b(login)93 b FA(in)13 b(form)f Fs([username@]hostnam)o
(e.dom)o(ain)542 2344 y(string)20 b(command)49 b FA(to)13
b(run)i(on)e(remote)h(host)274 2398 y Ft(g)22 b Fs([nhosts])249
2454 y FA(The)14 b(hoster)h(should)f(attempt)f(to)h(run)g(eac)o(h)g
(command)e(on)h(eac)o(h)i(host)f(and)g(record)h(the)f(result.)19
b(A)249 2508 y(command)11 b(usually)i(lo)q(oks)h(lik)o(e)p
eop
%%Page: 247 266
247 265 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(247)249
507 y Fs($PVM_ROOT/lib/pvmd)18 b(-s)k(-d8)f(-nhonk)f(1)i(80a9ca95:0f5a)
d(4096)i(3)g(80a95c43:0000)249 586 y FA(and)14 b(a)f(reply)h(from)f(a)g
(sla)o(v)o(e)h(p)o(vmd)e(lik)o(e)249 665 y Fs(ddpro<2312>)20
b(arch<ALPHA>)f(ip<80a95c43:0b3f>)f(mtu<4096>)249 744
y FA(When)e(\014nished,)g(the)g(hoster)h(should)e(send)h(a)g
Fs(SM)p 1051 744 14 2 v 15 w(STHOSTACK)d FA(message)j(bac)o(k)f(to)h
(the)g(address)h(of)249 798 y(the)e(sender)g(\(the)g(master)e(p)o
(vmd\).)k(The)d(format)e(of)h(the)i(reply)f(message)f(is)h(as)g(follo)o
(ws:)274 850 y Ft(f)410 904 y Fs(int)21 b(tid)180 b FA(of)13
b(host,)h(m)o(ust)f(matc)o(h)g(request)410 958 y Fs(string)20
b(status)49 b FA(result)15 b(line)e(from)f(sla)o(v)o(e)i(or)g(error)g
(co)q(de)274 1012 y Ft(g)22 b Fs([])382 b FA(implied)12
b(coun)o(t)249 1061 y(The)18 b(TIDs)g(in)g(the)g(reply)g(m)o(ust)f
(matc)o(h)g(those)i(in)e(the)i(request.)31 b(They)19
b(ma)o(y)c(b)q(e)k(in)e(a)h(di\013eren)o(t)249 1115 y(order,)c(ho)o(w)o
(ev)o(er.)249 1177 y(The)d(result)h(string)f(should)f(con)o(tain)g(the)
i(en)o(tire)f(reply)g(\(a)g(single)f(line\))g(from)f(eac)o(h)j(new)f
(sla)o(v)o(e)f(p)o(vmd,)249 1231 y(or)j(an)h(error)g(co)q(de)g(if)f
(something)f(w)o(en)o(t)i(wrong.)k(Legal)12 b(error)j(co)q(des)f(are)g
(the)g(literal)f(names)g(of)f(the)249 1285 y(p)o(vm)p
331 1285 13 2 v 13 w(errno)19 b(co)q(des,)i(for)d(example)f(\\PvmCan)o
(tStart".)29 b(The)19 b(default)f(PVM)h(hoster)g(can)g(return)249
1339 y(PvmDSysErr)13 b(or)h(PvmCan)o(tStart,)f(and)g(the)i(sla)o(v)o(e)
e(p)o(vmd)g(itself)g(can)h(return)h(PvmDupHost.)249 1402
y(The)h(hoster)g(task)g(m)o(ust)e(use)j(p)o(vm)p 813
1402 V 13 w(setopt\(PvmResvTids,)e(1\))h(to)f(allo)o(w)f(sending)h
(reserv)o(ed)j(mes-)249 1456 y(sages.)h(Messages)c(m)o(ust)e(b)q(e)i
(pac)o(k)o(ed)f(using)f(data)h(format)e(PvmDataF)m(o)q(o.)p
eop
%%Page: 248 267
248 266 bop 249 251 a Fu(248)1321 b(App)q(endix)15 b(B)291
511 y FE(||{)967 b(p)n(vm)p 1564 511 21 2 v 25 w(reg)p
1683 511 V 25 w(rm\(\))p 249 595 1591 16 v 249 658 a
FA(Registers)15 b(this)f(task)g(as)g(PVM)g(resource)i(manager.)249
770 y Fr(Synopsis)274 836 y(C)50 b Fs(#include)20 b(<pvmsdpro.h>)358
890 y(int)h(info)g(=)h(pvm)p 667 890 14 2 v 15 w(reg)p
748 890 V 15 w(rm\()f(struct)g(hostinfo)f(**hip)h(\))358
944 y(struct)g(hostinfo{)445 998 y(int)43 b(hi_tid;)445
1052 y(char)21 b(*hi_name;)445 1106 y(char)g(*hi_arch;)445
1160 y(int)43 b(hi_speed;)358 1214 y(})22 b(hip;)249
1321 y Fr(P)o(arameters)274 1379 y Fs(hostp)49 b FA({)g(p)q(oin)o(ter)
15 b(to)f(an)f(arra)o(y)h(of)g(structures)i(that)f(con)o(tain)e
(information)e(ab)q(out)503 1433 y(eac)o(h)18 b(host,)f(including)f
(its)h(p)o(vmd)f(task)h(ID,)f(name,)g(arc)o(hitecture,)j(and)503
1487 y(relativ)o(e)14 b(sp)q(eed.)274 1541 y Fs(info)71
b FA({)49 b(in)o(teger)12 b(status)h(co)q(de)f(returned)h(b)o(y)f(the)g
(routine.)17 b(V)m(alues)12 b(less)g(than)f(zero)503
1595 y(indicate)j(an)g(error.)249 1702 y Fr(Discussion)249
1773 y FA(The)f(routine)f Fs(pvm)p 543 1773 V 15 w(reg)p
624 1773 V 15 w(rm\(\))g FA(registers)h(the)g(calling)e(task)h(as)h(a)f
(PVM)g(task)h(and)f(sla)o(v)o(e)g(host)g(sc)o(hed-)249
1827 y(uler.)25 b(This)15 b(means)h(it)f(in)o(tercepts)j(certain)e
(libp)o(vm)e(calls)h(from)g(other)h(tasks)h(in)e(order)i(to)f(ha)o(v)o
(e)f(a)249 1881 y(sa)o(y)f(in)f(sc)o(heduling)h(p)q(olicy)m(.)j(The)d
(sc)o(heduler)i(will)c(async)o(hronously)i(receiv)o(e)h(messages)f
(from)f(tasks)249 1935 y(con)o(taining)j(requests)j(for)e(service,)h
(as)f(w)o(ell)g(as)g(messages)g(from)e(p)o(vmds)h(notifying)f(it)i(of)f
(system)249 1989 y(failures.)249 2051 y Fr(Note:)i FA(this)12
b(is)h(not)g(a)f(trivial)f(task.)18 b(It)13 b(cannot)f(b)q(e)i(called)e
(simply)e(to)j(turn)g(o\013)g(the)g(default)f(round-)249
2105 y(robin)h(task)g(assignmen)o(t.)k(Rather,)c(it)g(allo)o(ws)f(the)i
(user)h(to)e(write)g(his)h(o)o(wn)f(sc)o(heduler)h(and)g(ho)q(ok)e(it)
249 2159 y(to)i(PVM.)249 2221 y(T)m(o)k(understand)h(what)g(the)g
(follo)o(wing)d(messages)i(mean,)g(the)h(user)h(should)e(refer)h(to)g
(the)g(PVM)249 2275 y(source)d(co)q(de)f(and/or)f(user)i(guide)e
(section)h(on)f(implemen)o(tation;)d(There's)16 b(just)e(to)q(o)h(m)o
(uc)o(h)e(to)h(sa)o(y)249 2329 y(ab)q(out)g(them.)249
2392 y(When)j(one)g(of)g(the)g(follo)o(wing)e(libp)o(vm)f(functions)j
(is)g(called)g(in)f(a)h(task)g(with)f(resource)j(manager)249
2446 y(set,)14 b(the)h(giv)o(en)e(message)h(tag)f(is)h(sen)o(t)h(to)f
(to)f(sc)o(heduler.)p eop
%%Page: 249 268
249 267 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(249)274
558 y FA(Libp)o(vm)12 b(call)128 b(Sc)o(hed.)19 b(message)56
b(Normal)12 b(message)p 249 575 1026 2 v 274 613 a(p)o(vm)p
356 613 13 2 v 13 w(addhosts\(\))60 b(SM)p 681 613 V
15 w(ADDHOST)50 b(TM)p 1025 613 V 15 w(ADDHOST)274 667
y(p)o(vm)p 356 667 V 13 w(con\014g\(\))113 b(SM)p 681
667 V 15 w(CONFIG)93 b(TM)p 1025 667 V 15 w(CONFIG)274
721 y(p)o(vm)p 356 721 V 13 w(delhosts\(\))74 b(SM)p
681 721 V 15 w(DELHOST)59 b(TM)p 1025 721 V 15 w(DELHOST)274
775 y(p)o(vm)p 356 775 V 13 w(notify\(\))112 b(SM)p 681
775 V 15 w(NOTIFY)95 b(TM)p 1025 775 V 15 w(NOTIFY)274
829 y(p)o(vm)p 356 829 V 13 w(spa)o(wn\(\))107 b(SM)p
681 829 V 15 w(SP)m(A)-5 b(WN)113 b(TM)p 1025 829 V 15
w(SP)m(A)-5 b(WN)274 883 y(p)o(vm)p 356 883 V 13 w(tasks\(\))128
b(SM)p 681 883 V 15 w(T)m(ASK)148 b(TM)p 1025 883 V 15
w(T)m(ASK)274 937 y(p)o(vm)p 356 937 V 13 w(reg)p 424
937 V 16 w(sc)o(hed\(\))51 b(SM)p 681 937 V 15 w(SCHED)117
b(TM)p 1025 937 V 15 w(SCHED)p 249 955 1026 2 v 249 1056
a(The)16 b(resource)i(manager)d(m)o(ust)g(in)g(turn)h(comp)q(ose)g(the)
g(follo)o(wing)e(messages)i(and)f(send)i(them)e(to)249
1110 y(the)g(p)o(vmds:)274 1222 y(Sc)o(hed.)k(Message)54
b(Normal)12 b(Message)p 249 1240 686 2 v 274 1278 a(SM)p
337 1278 13 2 v 15 w(EXEC)144 b(DM)p 683 1278 V 15 w(EXEC)274
1332 y(SM)p 337 1332 V 15 w(EXECA)o(CK)52 b(DM)p 683
1332 V 15 w(EXECA)o(CK)274 1386 y(SM)p 337 1386 V 15
w(ADD)166 b(DM)p 683 1386 V 15 w(ADD)274 1440 y(SM)p
337 1440 V 15 w(ADD)o(A)o(CK)75 b(DM)p 683 1440 V 15
w(ADD)o(A)o(CK)274 1494 y(SM)p 337 1494 V 15 w(HANDOFF)50
b(\(none\))p 249 1512 686 2 v 249 1613 a(The)14 b(follo)o(wing)d
(messages)i(are)h(sen)o(t)g(async)o(hronously)g(to)f(the)h(resource)i
(manager)c(b)o(y)h(the)h(system:)274 1777 y(Sc)o(hed.)19
b(Message)51 b(Meaning)p 249 1795 825 2 v 274 1833 a(SM)p
337 1833 13 2 v 15 w(T)m(ASKX)114 b(notify)13 b(of)g(task)h(exit/fail)
274 1887 y(SM)p 337 1887 V 15 w(HOSTX)111 b(notify)13
b(of)g(host)h(delete/fail)p 249 1905 825 2 v 249 2008
a(The)21 b(resource)i(manager)d(task)g(m)o(ust)g(use)i(p)o(vm)p
1052 2008 13 2 v 13 w(setopt\(PvmResvTids,)g(1\))f(to)g(allo)o(w)e
(sending)249 2062 y(reserv)o(ed)d(messages.)i(Messages)d(m)o(ust)e(b)q
(e)i(pac)o(k)o(ed)f(using)g(data)f(format)f(PvmDataF)m(o)q(o.)p
eop
%%Page: 250 269
250 268 bop 249 251 a Fu(250)1321 b(App)q(endix)15 b(B)291
511 y FE(||{)872 b(p)n(vm)p 1469 511 21 2 v 24 w(reg)p
1587 511 V 25 w(task)n(er\(\))p 249 595 1591 16 v 249
658 a FA(Registers)15 b(this)f(task)g(as)g(resp)q(onsible)h(for)e
(starting)h(new)g(PVM)h(tasks.)249 770 y Fr(Synopsis)274
836 y(C)50 b Fs(#include)20 b(<pvmsdpro.h>)358 890 y(int)h(info)g(=)h
(pvm)p 667 890 14 2 v 15 w(reg)p 748 890 V 15 w(tasker\(\))249
997 y Fr(P)o(arameters)274 1068 y Fs(info)49 b FA({)h(in)o(teger)14
b(status)h(co)q(de)f(returned)i(b)o(y)d(the)i(routine.)249
1180 y Fr(Discussion)249 1250 y FA(The)h(routine)g Fs(pvm)p
550 1250 V 15 w(reg)p 631 1250 V 15 w(tasker)e FA(registers)j(the)f
(calling)e(task)i(as)g(a)f(PVM)h(task)f(starter.)25 b(When)15
b(a)249 1304 y(task)o(er)h(is)e(registered)j(with)d(a)h(p)o(vmd,)e(and)
i(the)g(p)o(vmd)e(receiv)o(es)k(a)d(DM)p 1396 1304 13
2 v 15 w(EXEC)h(message,)g(instead)249 1358 y(of)g(fork\(\)ing)g(and)g
(exec\(\)ing)i(the)f(task)f(itself,)h(it)f(passes)i(a)e(message)g(to)h
(the)g(task)o(er,)g(whic)o(h)f(do)q(es)249 1412 y(the)g(dirt)o(y)e(w)o
(ork)h(and)f(sends)j(a)d(message)h(bac)o(k)g(to)f(the)i(p)o(vmd.)249
1474 y Fr(Note:)22 b FA(If)15 b(this)h(do)q(esn't)g(mak)o(e)e(sense,)j
(don't)e(w)o(orry)h(ab)q(out)f(it.)23 b(This)16 b(function)f(is)g(for)g
(folks)g(who)249 1528 y(are)i(writing)f(stu\013)i(lik)o(e)e(debugger)h
(serv)o(ers)i(and)d(so)h(on.)26 b(F)m(or)17 b(a)f(more)g(complete)g
(explanation)g(of)249 1582 y(what's)f(going)g(on)g(here,)i(the)f(user)h
(should)e(refer)i(to)e(the)h(PVM)g(source)h(co)q(de)f(and/or)g(user)g
(guide)249 1636 y(section)f(on)e(implemen)o(tation;)d(this)k(is)g(only)
f(a)h(man)e(page.)249 1699 y(When)j(the)h(p)o(vmd)d(receiv)o(es)k(a)d
(DM)p 821 1699 V 15 w(EXEC)i(message)e(\(request)j(to)e(exec)h(new)f
(tasks\),)h(it)e(searc)o(hes)249 1753 y FB(ep)n(ath)d
FA(\(the)g(PVM)g(executable)g(searc)o(h)h(path\))e(for)g(the)h(\014le)f
(name.)16 b(If)10 b(it)g(\014nds)h(the)g(\014le,)f(it)g(then)h(either)
249 1807 y(attempts)16 b(to)g(start)h(the)g(pro)q(cesses)i(\(using)e
(fork\(\))f(and)g(exec\(\)\))i(or,)f(if)e(a)h(task)o(er)h(has)g
(registered,)249 1860 y(sends)e(it)f(a)f(SM)p 499 1860
V 15 w(STT)m(ASK)h(message.)249 1923 y(The)g(format)e(of)i(the)g(SM)p
651 1923 V 15 w(STT)m(ASK)g(message)g(is)f(as)h(follo)o(ws:)274
1973 y Fs(int)21 b(tid)267 b FA(of)14 b(task)274 2027
y Fs(int)21 b(flags)223 b FA(as)14 b(passed)h(to)f(spa)o(wn\(\))274
2081 y Fs(string)21 b(path)179 b FA(absolute)14 b(path)g(of)f(the)i
(executable)274 2135 y Fs(int)21 b(argc)245 b FA(n)o(um)o(b)q(er)13
b(of)h(argumen)o(ts)f(to)h(pro)q(cess)274 2189 y Fs(string)21
b(argv[argc])47 b FA(argumen)o(t)13 b(strings)274 2243
y Fs(int)21 b(nenv)245 b FA(n)o(um)o(b)q(er)13 b(of)h(en)o(vironmen)o
(t)f(v)n(ariables)g(to)g(pass)i(to)f(task)274 2297 y
Fs(string)21 b(env[nenv])69 b FA(en)o(vironmen)o(t)13
b(strings)249 2354 y(The)j(task)o(er)g(m)o(ust)f(attempt)g(to)g(start)h
(the)h(pro)q(cess)g(when)f(it)f(gets)i(one)e(of)g(these)i(messages.)24
b(The)249 2408 y(task)o(er)12 b(do)q(esn't)f(reply)g(to)g(the)h(p)o
(vmd)d(if)h(the)i(task)f(is)g(successfully)h(started;)h(the)e(task)g
(will)f(reconnect)249 2462 y(to)k(the)g(p)o(vmd)f(on)g(its)h(o)o(wn)g
(\(using)f(the)i(iden)o(ti\014er)f(in)g(en)o(v)n(ar)f(PVMEPID\).)p
eop
%%Page: 251 270
251 269 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(251)249
507 y FA(The)16 b(task)o(er)g(m)o(ust)f(send)i(a)e(SM)p
761 507 13 2 v 15 w(T)m(ASKX)h(message)f(to)h(the)g(p)o(vmd)e(when)i
(an)o(y)f(task)h(that)g(it)f(o)o(wns)249 561 y(\(has)g(started\))h
(exits,)f(or)f(if)g(it)g(can't)h(start)g(a)f(particular)h(task.)20
b(The)15 b(format)e(of)h(the)h(SM)p 1686 561 V 15 w(T)m(ASKX)249
615 y(message)f(is)f(as)h(follo)o(ws:)274 665 y Fs(int)21
b(tid)115 b FA(of)13 b(task)274 719 y Fs(int)21 b(status)49
b FA(the)14 b(Unix)g(exit)g(status)g(\(from)f Fs(wait\(\))p
FA(\))274 773 y Fs(int)21 b(u)p 386 773 14 2 v 16 w(sec)77
b FA(user)15 b(time)d(used)j(b)o(y)f(the)g(task,)g(seconds)274
827 y Fs(int)21 b(u)p 386 827 V 16 w(usec)55 b FA(microseconds)274
881 y Fs(int)21 b(s)p 386 881 V 16 w(sec)77 b FA(system)13
b(time)g(used)i(b)o(y)e(the)i(task,)e(seconds)274 935
y Fs(int)21 b(s)p 386 935 V 16 w(usec)55 b FA(microseconds)249
995 y(The)16 b(task)o(er)g(task)g(m)o(ust)f(use)h(p)o(vm)p
811 995 13 2 v 14 w(setopt\(PvmResvTids,)f(1\))h(to)f(allo)o(w)f
(sending)i(reserv)o(ed)i(mes-)249 1049 y(sages.)h(Messages)c(m)o(ust)e
(b)q(e)i(pac)o(k)o(ed)f(using)f(data)h(format)e(PvmDataF)m(o)q(o.)p
eop
%%Page: 252 271
252 270 bop 249 251 a Fu(252)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfsend\(\))869 b(p)n(vm)p 1634 511 21 2
v 25 w(send\(\))p 249 595 1591 16 v 249 658 a FA(Sends)15
b(the)f(data)g(in)f(the)i(activ)o(e)f(message)f(bu\013er.)249
768 y Fr(Synopsis)274 830 y(C)173 b Fs(int)21 b(info)g(=)h(pvm)p
790 830 14 2 v 15 w(send\()f(int)g(tid,)g(int)g(msgtag)g(\))274
884 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfsend\()f(tid,)h(msgtag,)g
(info)f(\))249 989 y Fr(P)o(arameters)274 1043 y Fs(tid)115
b FA({)49 b(in)o(teger)14 b(task)g(iden)o(ti\014er)h(of)e(destination)h
(pro)q(cess.)274 1097 y Fs(msgtag)49 b FA({)g(in)o(teger)11
b(message)e(tag)h(supplied)g(b)o(y)g(the)h(user.)18 b(msgtag)8
b(should)i(b)q(e)h Fn(>)p FA(=)h(0.)274 1151 y Fs(info)93
b FA({)49 b(in)o(teger)12 b(status)g(co)q(de)h(returned)g(b)o(y)e(the)i
(routine.)k(V)m(alues)11 b(less)i(than)e(zero)525 1205
y(indicate)j(an)g(error.)249 1311 y Fr(Discussion)249
1377 y FA(The)c(routine)g Fs(pvm)p 538 1377 V 15 w(send)f
FA(sends)i(a)e(message)g(stored)i(in)e(the)h(activ)o(e)g(send)g
(bu\013er)h(to)e(the)h(PVM)g(pro)q(cess)249 1431 y(iden)o(ti\014ed)17
b(b)o(y)g Fs(tid)p FA(.)26 b Fs(msgtag)16 b FA(is)g(used)i(to)f(lab)q
(el)f(the)i(con)o(ten)o(t)f(of)f(the)i(message.)27 b(If)16
b(p)o(vm)p 1706 1431 13 2 v 13 w(send)i(is)249 1485 y(successful,)d
Fs(info)e FA(will)g(b)q(e)h(0.)k(If)13 b(some)g(error)i(o)q(ccurs,)g
Fs(info)e FA(will)g(b)q(e)h Fn(<)e FA(0.)249 1545 y(The)j(p)o(vm)p
417 1545 V 13 w(send)g(routine)g(is)f(async)o(hronous.)20
b(Computation)12 b(on)i(the)h(sending)f(pro)q(cessor)j(resumes)249
1599 y(as)c(so)q(on)g(as)g(the)g(message)g(is)f(safely)h(on)f(its)h(w)o
(a)o(y)f(to)h(the)g(receiving)g(pro)q(cessor.)20 b(This)12
b(is)h(in)f(con)o(trast)249 1653 y(to)e(sync)o(hronous)i(comm)o(uni)o
(cation,)c(during)i(whic)o(h)g(computation)e(on)j(the)f(sending)h(pro)q
(cessor)h(halts)249 1707 y(un)o(til)h(the)i(matc)o(hing)d(receiv)o(e)j
(is)f(executed)h(b)o(y)f(the)g(receiving)h(pro)q(cessor.)249
1767 y(p)o(vm)p 331 1767 V 13 w(send)h(\014rst)g(c)o(hec)o(ks)g(to)f
(see)h(whether)g(the)f(destination)g(is)f(on)h(the)g(same)f(mac)o
(hine.)20 b(If)14 b(so)h(and)249 1821 y(this)f(host)g(is)g(a)g(m)o
(ultipro)q(cessor,)f(then)h(the)h(v)o(endor's)f(underlying)g
(message-passing)f(routines)i(are)249 1875 y(used)g(to)f(mo)o(v)o(e)e
(the)i(data)g(b)q(et)o(w)o(een)h(pro)q(cesses.)249 1985
y Fr(Examples)274 2048 y(C:)495 2102 y Fs(info)21 b(=)g(pvm_initsend\()
e(PvmDataDefault)g(\);)495 2156 y(info)i(=)g(pvm_pkint\()f(array,)g
(10,)i(1)f(\);)495 2210 y(msgtag)f(=)i(3)f(;)495 2264
y(info)g(=)g(pvm_send\()f(tid,)h(msgtag)g(\);)274 2318
y Fr(F)l(ortran:)495 2372 y Fs(CALL)g(PVMFINITSEND\(PV)o(MRAW,)d
(INFO\))495 2426 y(CALL)j(PVMFPACK\()e(REAL8,)i(DATA,)g(100,)g(1,)g
(INFO)g(\))495 2480 y(CALL)g(PVMFSEND\()e(TID,)i(3,)h(INFO)f(\))p
eop
%%Page: 253 272
253 271 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(253)249
507 y Fr(Errors)249 578 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 578 14 2 v 15 w(send)p FA(.)274 646 y(Name)221 b(P)o(ossible)14
b(Cause)p 249 663 1338 2 v 274 701 a(PvmBadP)o(aram)47
b(giving)13 b(an)g(in)o(v)n(alid)f(tid)i(or)f(a)h(msgtag.)274
755 y(PvmSysErr)120 b(p)o(vmd)13 b(not)g(resp)q(onding.)274
809 y(PvmNoBuf)124 b(no)14 b(activ)o(e)h(send)g(bu\013er.)20
b(T)m(ry)14 b(calling)f(p)o(vm)p 1304 809 13 2 v 13 w(initsend\(\))i(b)
q(e-)601 863 y(fore)f(sending.)p eop
%%Page: 254 273
254 272 bop 249 251 a Fu(254)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfsendsig\(\))707 b(p)n(vm)p 1553 511 21
2 v 25 w(sendsig\(\))p 249 595 1591 16 v 249 658 a FA(Sends)15
b(a)f(signal)e(to)i(another)g(PVM)h(pro)q(cess.)249 767
y Fr(Synopsis)274 828 y(C)173 b Fs(int)21 b(info)g(=)h(pvm)p
790 828 14 2 v 15 w(sendsig\()e(int)h(tid,)g(int)h(signum)e(\))274
882 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfsendsig\()f(tid,)h(signum,)f
(info)h(\))249 986 y Fr(P)o(arameters)274 1039 y Fs(tid)115
b FA({)49 b(in)o(teger)14 b(task)g(iden)o(ti\014er)h(of)e(PVM)h(pro)q
(cess)i(to)e(receiv)o(e)h(the)f(signal.)274 1093 y Fs(signum)49
b FA({)g(in)o(teger)14 b(signal)f(n)o(um)o(b)q(er.)274
1147 y Fs(info)93 b FA({)49 b(in)o(teger)12 b(status)g(co)q(de)h
(returned)g(b)o(y)e(the)i(routine.)k(V)m(alues)11 b(less)i(than)e(zero)
525 1201 y(indicate)j(an)g(error.)249 1306 y Fr(Discussion)249
1371 y FA(The)e(routine)h Fs(pvm)p 543 1371 V 15 w(sendsig)d
FA(sends)j(the)g(signal)e(n)o(um)o(b)q(er)g Fs(signum)g
FA(to)g(the)i(PVM)f(pro)q(cess)i(iden)o(ti\014ed)249
1425 y(b)o(y)h Fs(tid)p FA(.)21 b(If)15 b(p)o(vm)p 532
1425 13 2 v 13 w(sendsig)h(is)f(successful,)h Fs(info)f
FA(will)e(b)q(e)j(0.)21 b(If)15 b(some)f(error)i(o)q(ccurs,)h
Fs(info)d FA(will)f(b)q(e)249 1479 y Fn(<)f FA(0.)249
1538 y(p)o(vm)p 331 1538 V 13 w(sendsig)18 b(should)f(b)q(e)h(used)g
(only)f(b)o(y)g(programmers)e(with)i(signal-handling)e(exp)q(erience.)
30 b(It)249 1592 y(is)14 b(v)o(ery)g(easy)g(in)f(a)h(parallel)e(en)o
(vironmen)o(t)h(for)g(in)o(terrupts)i(to)f(cause)h(nondeterministic)e
(b)q(eha)o(vior,)249 1646 y(deadlo)q(c)o(ks,)e(and)f(ev)o(en)g(system)g
(crashes.)19 b(F)m(or)9 b(example,)g(if)g(an)h(in)o(terrupt)h(is)f
(caugh)o(t)g(while)f(a)h(pro)q(cess)249 1700 y(is)k(inside)g(a)f(Unix)h
(k)o(ernel)g(call,)f(then)h(a)g(graceful)g(reco)o(v)o(ery)h(ma)o(y)d
(not)h(b)q(e)i(p)q(ossible.)249 1809 y Fr(Examples)274
1870 y(C:)516 1924 y Fs(tid)22 b(=)f(pvm_parent\(\);)495
1978 y(info)g(=)g(pvm_sendsig\()e(tid,)i(SIGKILL\);)274
2032 y Fr(F)l(ortran:)495 2086 y Fs(CALL)g(PVMFBUFINFO\()e(BUFID,)h
(BYTES,)h(TYPE,)g(TID,)g(INFO)g(\);)495 2140 y(CALL)g(PVMFSENDSIG\()e
(TID,)i(SIGNUM,)f(INFO)h(\))249 2245 y Fr(Errors)249
2309 y FA(The)14 b(follo)o(wing)e(error)i(conditions)g(can)g(b)q(e)h
(returned)g(b)o(y)f Fs(pvm)p 1238 2309 14 2 v 15 w(sendsig)p
FA(.)274 2371 y(Name)221 b(P)o(ossible)14 b(Cause)p 249
2389 1338 2 v 274 2427 a(PvmSysErr)120 b(p)o(vmd)13 b(not)g(resp)q
(onding.)274 2481 y(PvmBadP)o(aram)47 b(giving)13 b(an)g(in)o(v)n(alid)
f(tid)i(v)n(alue.)p eop
%%Page: 255 274
255 273 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(255)291
511 y FE(p)n(vmfsetopt\(\))769 b(p)n(vm)p 1584 511 21
2 v 25 w(setopt\(\))p 249 595 1591 16 v 249 658 a FA(Sets)15
b(v)n(arious)e(libp)o(vm)e(options)249 770 y Fr(Synopsis)274
836 y(C)173 b Fs(int)21 b(oldval)g(=)h(pvm)p 834 836
14 2 v 15 w(setopt\()e(int)h(what,)g(int)g(val)g(\))274
890 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfsetrbuf\()f(what,)g(val,)h
(oldval)g(\))249 997 y Fr(P)o(arameters)274 1056 y Fs(what)93
b FA({)49 b(In)o(teger)15 b(de\014ning)f(what)g(is)f(b)q(eing)h(set.)19
b(Options)14 b(include:)617 1110 y(Option)f(V)m(alue)117
b(Meaning)p 525 1127 1233 2 v 572 1165 a Fs(PvmRoute)157
b FA(1)50 b(routing)13 b(p)q(olicy)572 1219 y Fs(PvmDebugMask)69
b FA(2)50 b(debugmask)572 1273 y Fs(PvmAutoErr)113 b
FA(3)50 b(auto)13 b(error)i(rep)q(orting)572 1327 y Fs(PvmOutputTid)69
b FA(4)50 b(stdout)14 b(device)h(for)e(c)o(hildren)572
1381 y Fs(PvmOutputCode)47 b FA(5)j(output)14 b(msgtag)572
1435 y Fs(PvmTraceTid)91 b FA(6)50 b(trace)14 b(device)h(for)f(c)o
(hildren)572 1489 y Fs(PvmTraceCode)69 b FA(7)50 b(trace)14
b(msgtag)572 1543 y Fs(PvmFragSize)91 b FA(8)50 b(message)13
b(fragmen)o(t)f(size)572 1597 y Fs(PvmResvTids)91 b FA(9)50
b(allo)o(w)12 b(messages)i(to)f(reserv)o(ed)j(tags)e(and)g(TIDs)p
525 1615 V 274 1706 a Fs(val)115 b FA({)49 b(In)o(teger)15
b(sp)q(ecifying)e(new)h(setting)g(of)f(option.)k(Prede\014ned)f(route)e
(v)n(alues)525 1760 y(are)g(as)g(follo)o(ws:)628 1814
y(Option)f(V)m(alue)127 b(Meaning)p 525 1832 751 2 v
572 1870 a Fs(PvmRoute)179 b FA(1)49 b(routing)14 b(p)q(olicy)572
1924 y Fs(PvmDontRoute)91 b FA(1)572 1978 y Fs(PvmAllowDirect)47
b FA(2)572 2032 y Fs(PvmRouteDirect)g FA(3)p 525 2050
V 274 2142 a Fs(oldval)i FA({)g(In)o(teger)15 b(returning)f(the)h
(previous)f(setting)g(of)g(the)g(option.)249 2303 y Fr(Discussion)249
2373 y FA(The)g(routine)f Fs(pvm)p 545 2373 14 2 v 15
w(setopt)f FA(is)h(a)f(general-purp)q(ose)j(function)e(to)g(allo)o(w)e
(the)j(user)g(to)f(set)h(options)e(in)249 2427 y(the)j(PVM)g(system.)k
(In)14 b(PVM)h(3.2)e(p)o(vm)p 901 2427 13 2 v 13 w(setopt)j(can)e(b)q
(e)h(used)g(to)f(set)i(sev)o(eral)e(options,)g(including)p
eop
%%Page: 256 275
256 274 bop 249 251 a Fu(256)1321 b(App)q(endix)15 b(B)249
507 y FA(automatic)e(error)j(message)f(prin)o(ting,)e(debugging)i(lev)o
(el,)f(and)h(comm)o(unication)c(routing)k(metho)q(d)249
561 y(for)f(all)e(subsequen)o(t)k(PVM)e(calls.)k(Pvm)p
891 561 13 2 v 13 w(setopt)d(returns)h(the)e(previous)g(v)n(alue)g(of)f
(set)i(in)e(oldv)n(al.)249 622 y(PvmRoute:)j(In)d(the)h(case)g(of)e
(comm)o(unication)e(routing,)i(p)o(vm)p 1254 622 V 13
w(setopt)i(advises)g(PVM)f(on)g(whether)249 676 y(to)g(set)h(up)f
(direct)h(task-to-task)f(links)g Fs(PvmRouteDirect)d
FA(\(using)j(TCP\))g(for)g(all)f(subsequen)o(t)i(com-)249
730 y(m)o(unication.)h(Once)c(a)e(link)g(is)h(established,)h(it)f
(remains)f(un)o(til)g(the)i(application)d(\014nishes.)18
b(If)9 b(a)h(direct)249 784 y(link)i(can)h(not)g(b)q(e)h(established)g
(b)q(ecause)h(one)e(of)f(the)i(t)o(w)o(o)f(tasks)g(has)g(requested)j
Fs(PvmDontRoute)10 b FA(or)249 838 y(b)q(ecause)16 b(no)d(resources)k
(are)d(a)o(v)n(ailable,)d(then)k(the)f(default)g(route)g(through)g(the)
h(PVM)f(daemons)f(is)249 892 y(used.)20 b(On)14 b(m)o(ultipro)q
(cessors)g(suc)o(h)h(as)f(In)o(tel)g(P)o(aragon)g(this)g(option)f(is)h
(ignored)g(b)q(ecause)i(the)e(com-)249 946 y(m)o(unication)g(b)q(et)o
(w)o(een)j(tasks)f(on)g(these)h(mac)o(hines)e(alw)o(a)o(ys)f(uses)j
(the)g(nativ)o(e)e(proto)q(col)h(for)f(direct)249 1000
y(comm)o(unication.)20 b(p)o(vm)p 642 1000 V 14 w(setopt)d(can)f(b)q(e)
g(called)g(m)o(ultiple)d(times)i(to)h(selectiv)o(ely)g(establish)g
(direct)249 1054 y(links,)d(but)h(is)g(t)o(ypically)e(set)j(only)e
(once)h(near)h(the)f(b)q(eginning)f(of)h(eac)o(h)g(task.)k
Fs(PvmAllowDirect)11 b FA(is)249 1108 y(the)j(default)e(route)h
(setting.)19 b(This)12 b(setting)i(on)e(task)h(A)g(allo)o(ws)f(other)h
(tasks)h(to)e(set)i(up)f(direct)h(links)249 1162 y(to)h(A.)g(Once)h(a)f
(direct)h(link)e(is)h(established)h(b)q(et)o(w)o(een)g(tasks,)g(b)q
(oth)f(tasks)h(will)d(use)j(it)f(for)g(sending)249 1216
y(messages.)249 1277 y(PvmDebugMask:)j(F)m(or)d(this)f(option)g(v)n(al)
g(is)g(the)i(debugging)e(lev)o(el.)20 b(When)14 b(debugging)h(is)f
(turned)249 1331 y(on,)j(PVM)h(will)d(log)i(detailed)g(information)d
(ab)q(out)j(its)g(op)q(erations)g(and)g(progress)i(on)d(its)i(stderr)
249 1385 y(stream.)g(The)c(default)f(is)h(no)g(debug)g(information.)249
1446 y(PvmAutoErr:)25 b(In)18 b(the)g(case)g(of)f(automatic)f(error)j
(prin)o(ting,)e(an)o(y)g(PVM)h(routines)g(that)g(return)249
1500 y(an)c(error)h(condition)f(will)f(automatically)e(prin)o(t)j(the)h
(asso)q(ciated)g(error)g(message.)k(The)c(argumen)o(t)249
1554 y(v)n(al)d(de\014nes)j(whether)g(this)e(rep)q(orting)h(is)f(to)g
(b)q(e)h(turned)g(on)f(\(1\))g(or)h(turned)g(o\013)f(\(0\))g(for)g
(subsequen)o(t)249 1608 y(calls.)18 b(A)13 b(v)n(alue)g(of)g(\(2\))g
(will)f(cause)j(the)f(program)e(to)h(exit)h(after)g(prin)o(ting)e(the)i
(error)h(message)e(\(not)249 1662 y(implemen)o(ted)f(in)h(3.2\).)k(The)
e(default)e(is)h(rep)q(orting)g(turned)h(on.)249 1724
y(PvmOutputTid:)20 b(F)m(or)15 b(this)h(option)f(v)n(al)f(is)h(the)h
(stdout)g(device)h(for)e(c)o(hildren.)23 b(All)15 b(the)h(standard)249
1778 y(output)f(from)e(the)j(calling)d(task)i(and)g(an)o(y)f(tasks)i
(it)e(spa)o(wns)h(will)f(b)q(e)h(redirected)i(to)e(the)g(sp)q
(eci\014ed)249 1831 y(device.)23 b(V)m(al)14 b(is)h(the)h(tid)f(of)f(a)
h(PVM)h(task)f(or)g(p)o(vmd.)20 b(The)c(default)f(v)n(al)f(of)h(0)f
(redirects)k(stdout)d(to)249 1885 y(master)e(host,)h(whic)o(h)g(writes)
h(to)e(the)i(log)e(\014le)h Fs(/tmp/pvml.<uid>)249 1947
y FA(PvmOutputCo)q(de:)24 b(Only)17 b(meaningful)d(on)j(task)g(with)g
(PvmOutputTid)f(set)i(to)e(itself.)27 b(This)17 b(is)249
2001 y(the)d(message)e(tag)h(v)n(alue)f(to)h(b)q(e)h(used)f(in)g
(receiving)g(messages)g(con)o(taining)f(standard)i(output)f(from)249
2055 y(other)i(tasks.)249 2116 y(PvmT)m(raceTid:)i(F)m(or)d(this)g
(option)g(v)n(al)f(is)h(the)h(task)f(resp)q(onsible)h(for)f(writing)f
(out)h(trace)i(ev)o(en)o(t)e(for)249 2170 y(the)h(calling)d(task)j(and)
f(all)e(its)j(c)o(hildren.)j(V)m(al)13 b(is)h(the)h(tid)f(of)f(a)h(PVM)
h(task)f(or)g(p)o(vmd.)j(The)d(default)249 2224 y(v)n(al)f(of)g(0)h
(redirects)h(trace)g(to)f(master)g(host.)249 2285 y(PvmT)m(raceCo)q
(de:)23 b(Only)16 b(meaningful)e(on)i(task)h(with)f(PvmT)m(raceTid)f
(set)i(to)f(itself.)26 b(This)16 b(is)g(the)249 2339
y(message)f(tag)g(v)n(alue)g(to)g(b)q(e)i(used)f(in)f(receiving)h
(messages)f(con)o(taining)g(trace)h(output)g(from)d(other)249
2393 y(tasks.)249 2454 y(PvmF)m(ragSize:)28 b(F)m(or)19
b(this)h(option)f(v)n(al)f(sp)q(eci\014es)k(the)e(message)f(fragmen)o
(t)f(size)j(in)e(b)o(ytes.)36 b(The)249 2508 y(default)14
b(v)n(alue)f(v)n(aries)h(with)f(host)h(arc)o(hitecture.)p
eop
%%Page: 257 276
257 275 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(257)249
507 y FA(PvmResvTids:)21 b(A)15 b(v)n(al)g(of)g(1)g(enables)i(the)f
(task)g(to)g(send)g(messages)g(with)f(reserv)o(ed)j(tags)e(and)f(to)249
561 y(non-task)f(destinations.)k(The)c(default)g(\(0\))g(results)h(in)e
(a)h(PvmBadP)o(aram)d(error)k(instead.)249 673 y Fr(Examples)274
740 y(C:)495 794 y Fs(oldval)20 b(=)i(pvm_setopt\()d(PvmRoute,)h
(PvmRouteDirect)f(\);)274 848 y Fr(F)l(ortran:)495 902
y Fs(CALL)i(PVMFSETOPT\()e(PVMAUTOERR,)h(1,)h(OLDVAL)g(\))249
1009 y Fr(Errors)249 1079 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 1079 14 2 v 15 w(setopt)p FA(.)274 1147 y(Name)221
b(P)o(ossible)14 b(Cause)p 249 1165 1338 2 v 274 1203
a(PvmBadP)o(aram)47 b(giving)13 b(an)g(in)o(v)n(alid)f(arg.)p
eop
%%Page: 258 277
258 276 bop 249 251 a Fu(258)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfsetrbuf\(\))717 b(p)n(vm)p 1558 511 21
2 v 25 w(setrbuf\(\))p 249 595 1591 16 v 249 658 a FA(Switc)o(hes)15
b(the)f(activ)o(e)g(receiv)o(e)h(bu\013er)g(and)f(sa)o(v)o(es)g(the)h
(previous)f(bu\013er.)249 770 y Fr(Synopsis)274 836 y(C)173
b Fs(int)21 b(oldbuf)g(=)h(pvm)p 834 836 14 2 v 15 w(setrbuf\()e(int)h
(bufid)g(\))274 890 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmfsetrbuf\()f
(bufid,)g(oldbuf)h(\))249 997 y Fr(P)o(arameters)274
1056 y Fs(bufid)71 b FA({)49 b(in)o(teger)13 b(sp)q(ecifying)g(the)g
(message)g(bu\013er)g(iden)o(ti\014er)g(for)g(the)g(new)g(activ)o(e)525
1110 y(receiv)o(e)i(bu\013er.)274 1164 y Fs(oldbuf)49
b FA({)g(in)o(teger)19 b(returning)h(the)f(message)g(bu\013er)h(iden)o
(ti\014er)f(for)f(the)i(previous)525 1217 y(activ)o(e)14
b(receiv)o(e)h(bu\013er.)249 1325 y Fr(Discussion)249
1395 y FA(The)g(routine)f Fs(pvm)p 547 1395 V 15 w(setrbuf)f
FA(switc)o(hes)j(the)f(activ)o(e)f(receiv)o(e)i(bu\013er)f(to)f
Fs(bufid)g FA(and)g(sa)o(v)o(es)h(the)f(pre-)249 1449
y(vious)g(activ)o(e)g(receiv)o(e)i(bu\013er)f Fs(oldbuf)p
FA(.)j(If)c Fs(bufid)f FA(is)h(set)h(to)f(0)p Fn(;)g
FA(the)g(presen)o(t)i(activ)o(e)f(receiv)o(e)g(bu\013er)249
1503 y(is)f(sa)o(v)o(ed,)f(and)h(no)g(activ)o(e)g(receiv)o(e)h
(bu\013er)g(exists.)249 1566 y(A)20 b(successful)i(receiv)o(e)f
(automatically)c(creates)22 b(a)d(new)i(activ)o(e)f(receiv)o(e)h
(bu\013er.)37 b(If)20 b(a)g(previous)249 1619 y(receiv)o(e)d(has)e(not)
g(b)q(een)h(unpac)o(k)o(ed)g(and)f(needs)h(to)g(b)q(e)f(sa)o(v)o(ed)h
(for)f(later,)g(then)h(the)f(previous)h(bu\014d)249 1673
y(can)e(b)q(e)h(sa)o(v)o(ed)f(and)f(reset)j(later)e(to)g(the)g(activ)o
(e)g(bu\013er)h(for)f(unpac)o(king.)249 1736 y(The)d(routine)g(is)g
(required)g(when)h(managing)c(m)o(ultiple)g(message)i(bu\013ers.)19
b(F)m(or)10 b(example,)g(in)g(switc)o(h-)249 1790 y(ing)j(bac)o(k)g
(and)h(forth)f(b)q(et)o(w)o(een)i(t)o(w)o(o)e(bu\013ers,)i(one)e
(bu\013er)i(could)e(b)q(e)h(used)h(to)e(send)i(information)10
b(to)249 1844 y(a)j(graphical)g(in)o(terface)h(while)f(a)g(second)h
(bu\013er)h(could)e(b)q(e)h(used)h(send)f(data)f(to)g(other)h(tasks)g
(in)f(the)249 1898 y(application.)249 2010 y Fr(Examples)274
2076 y(C:)495 2130 y Fs(rbuf1)20 b(=)i(pvm_setrbuf\()d(rbuf2)i(\);)274
2184 y Fr(F)l(ortran:)495 2238 y Fs(CALL)g(PVMFSETRBUF\()e(NEWBUF,)h
(OLDBUF)h(\))249 2345 y Fr(Errors)249 2416 y FA(The)14
b(follo)o(wing)e(error)i(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f
Fs(pvm)p 1238 2416 V 15 w(setrbuf)p FA(.)p eop
%%Page: 259 278
259 277 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(259)274
504 y FA(Name)232 b(P)o(ossible)14 b(Cause)p 249 521
1348 2 v 274 559 a(PvmBadP)o(aram)58 b(giving)12 b(an)i(in)o(v)n(alid)e
(bu\014d.)274 613 y(PvmNoSuc)o(hBuf)49 b(switc)o(hing)14
b(to)f(a)h(nonexisten)o(t)h(message)e(bu\013er.)p eop
%%Page: 260 279
260 278 bop 249 251 a Fu(260)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfsetsbuf\(\))719 b(p)n(vm)p 1559 511 21
2 v 25 w(setsbuf\(\))p 249 595 1591 16 v 249 658 a FA(Switc)o(hes)15
b(the)f(activ)o(e)g(send)h(bu\013er.)249 770 y Fr(Synopsis)274
836 y(C)173 b Fs(int)21 b(oldbuf)g(=)h(pvm)p 834 836
14 2 v 15 w(setsbuf\()e(int)h(bufid)g(\))274 890 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmfsetsbuf\()f(bufid,)g(oldbuf)h(\))249
997 y Fr(P)o(arameters)274 1056 y Fs(bufid)71 b FA({)49
b(in)o(teger)10 b(the)g(message)g(bu\013er)g(iden)o(ti\014er)g(for)f
(the)h(new)g(activ)o(e)g(send)h(bu\013er.)525 1110 y(A)j(v)n(alue)f(of)
h(0)f(indicates)h(the)h(default)e(receiv)o(e)j(bu\013er.)274
1164 y Fs(oldbuf)49 b FA({)g(in)o(teger)19 b(returning)h(the)f(message)
g(bu\013er)h(iden)o(ti\014er)f(for)f(the)i(previous)525
1217 y(activ)o(e)14 b(send)h(bu\013er.)249 1325 y Fr(Discussion)249
1395 y FA(The)d(routine)f Fs(pvm)p 541 1395 V 16 w(setsbuf)e
FA(switc)o(hes)k(the)f(activ)o(e)f(send)i(bu\013er)f(to)f
Fs(bufid)g FA(and)g(sa)o(v)o(es)h(the)g(previous)249
1449 y(activ)o(e)k(send)g(bu\013er)h Fs(oldbuf)p FA(.)22
b(If)15 b Fs(bufid)f FA(is)i(set)g(to)g(0)p Fn(;)f FA(the)h(presen)o(t)
h(activ)o(e)f(send)g(bu\013er)h(is)e(sa)o(v)o(ed,)249
1503 y(and)f(no)f(activ)o(e)h(send)h(bu\013er)g(exists.)249
1566 y(The)c(routine)g(is)g(required)g(when)h(managing)c(m)o(ultiple)g
(message)i(bu\013ers.)19 b(F)m(or)10 b(example,)g(in)g(switc)o(h-)249
1619 y(ing)j(bac)o(k)g(and)h(forth)f(b)q(et)o(w)o(een)i(t)o(w)o(o)e
(bu\013ers,)i(one)e(bu\013er)i(could)e(b)q(e)h(used)h(to)e(send)i
(information)10 b(to)249 1673 y(a)j(graphical)g(in)o(terface)h(while)f
(a)g(second)h(bu\013er)h(could)e(b)q(e)h(used)h(send)f(data)f(to)g
(other)h(tasks)g(in)f(the)249 1727 y(application.)249
1839 y Fr(Examples)274 1906 y(C:)495 1960 y Fs(sbuf1)20
b(=)i(pvm_setsbuf\()d(sbuf2)i(\);)274 2014 y Fr(F)l(ortran:)495
2068 y Fs(CALL)g(PVMFSETSBUF\()e(NEWBUF,)h(OLDBUF)h(\))249
2175 y Fr(Errors)249 2245 y FA(The)14 b(follo)o(wing)e(error)i
(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p
1238 2245 V 15 w(setsbuf)p FA(.)274 2313 y(Name)232 b(P)o(ossible)14
b(Cause)p 249 2331 1348 2 v 274 2369 a(PvmBadP)o(aram)58
b(giving)12 b(an)i(in)o(v)n(alid)e(bu\014d.)274 2423
y(PvmNoSuc)o(hBuf)49 b(switc)o(hing)14 b(to)f(a)h(nonexisten)o(t)h
(message)e(bu\013er.)p eop
%%Page: 261 280
261 279 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(261)291
511 y FE(p)n(vmfspa)n(wn\(\))770 b(p)n(vm)p 1584 511
21 2 v 25 w(spa)n(wn\(\))p 249 595 1591 16 v 249 657
a FA(Starts)15 b(new)f(PVM)g(pro)q(cesses.)249 769 y
Fr(Synopsis)274 836 y(C)50 b Fs(int)21 b(numt)g(=)h(pvm)p
667 836 14 2 v 15 w(spawn\()49 b(char)21 b(*task,)f(char)h(**argv,)860
890 y(int)g(flag,)g(char)g(*where,)860 944 y(int)g(ntask,)f(int)i
(*tids)e(\))274 1072 y Fr(F)l(ortran)48 b Fs(call)21
b(pvmfspawn\()48 b(task,)21 b(flag,)g(where,)858 1126
y(ntask,)g(tids,)f(numt)h(\))249 1233 y Fr(P)o(arameters)274
1292 y Fs(task)49 b FA({)h(c)o(haracter)15 b(string)f(con)o(taining)e
(the)j(executable)g(\014le)f(name)e(of)i(the)g(PVM)482
1346 y(pro)q(cess)g(to)f(b)q(e)g(started.)19 b(The)13
b(executable)h(m)o(ust)d(already)i(reside)g(on)g(the)482
1400 y(host)e(on)g(whic)o(h)g(it)g(is)g(to)g(b)q(e)h(started.)18
b(The)11 b(default)g(lo)q(cation)f(PVM)i(lo)q(oks)482
1454 y(at)h(is)36 b Fs($HOME/pvm3/bin/$)o(PVM_A)o(RCH/f)o(ilena)o(me)19
b FA(.)274 1508 y Fs(argv)49 b FA({)h(p)q(oin)o(ter)14
b(to)g(an)g(arra)o(y)g(of)g(argumen)o(ts)f(to)h(the)h(executable)g
(with)f(the)h(end)482 1562 y(of)e(the)i(arra)o(y)f(sp)q(eci\014ed)h(b)o
(y)f(NULL.)g(If)f(the)i(executable)g(tak)o(es)g(no)f(argu-)482
1616 y(men)o(ts,)e(then)j(the)f(second)h(argumen)o(t)e(to)h(p)o(vm)p
1233 1616 13 2 v 13 w(spa)o(wn)g(is)g(NULL.)274 1669
y Fs(flag)49 b FA({)h(in)o(teger)14 b(sp)q(ecifying)g(spa)o(wn)g
(options.)482 1723 y(In)f(C)h Fs(flag)f FA(should)h(b)q(e)g(the)h
Fr(sum)e FA(of)g(the)i(follo)o(wing:)599 1777 y(Option)e(v)n(alue)141
b(Meaning)p 482 1795 1304 2 v 528 1833 a Fs(PvmTaskDefault)68
b FA(0)49 b(PVM)15 b(can)f(c)o(ho)q(ose)h(an)o(y)e(mac)o(hine)g(to)g
(start)i(task)528 1887 y Fs(PvmTaskHost)134 b FA(1)49
b Fs(where)13 b FA(sp)q(eci\014es)j(a)e(particular)f(host)528
1941 y Fs(PvmTaskArch)134 b FA(2)49 b Fs(where)13 b FA(sp)q(eci\014es)j
(a)e(t)o(yp)q(e)g(of)f(arc)o(hitecture)528 1995 y Fs(PvmTaskDebug)112
b FA(4)49 b(start)15 b(pro)q(cesses)i(under)d(debugger)528
2049 y Fs(PvmTaskTrace)112 b FA(8)49 b(pro)q(cesses)17
b(will)12 b(generate)k(PVM)e(trace)h(data)e(*)528 2103
y Fs(PvmMppFront)113 b FA(16)49 b(start)15 b(pro)q(cess)h(on)d(MPP)i
(fron)o(t-end)528 2157 y Fs(PvmHostCompl)91 b FA(32)49
b(use)15 b(complemen)o(t)d(host)i(set)p 482 2175 V eop
%%Page: 262 281
262 280 bop 249 251 a Fu(262)1321 b(App)q(endix)15 b(B)274
558 y Fs(where)49 b FA({)g(c)o(haracter)15 b(string)e(sp)q(ecifying)g
(where)h(to)f(start)h(the)f(PVM)h(pro)q(cess.)19 b(Dep)q(ending)14
b(on)503 611 y(the)h(v)n(alue)e(of)g Fs(flag)p FA(,)g
Fs(where)g FA(can)h(b)q(e)g(a)g(host)g(name)f(suc)o(h)h(as)g
(\\ibm1.epm.)o(ornl.)o(go)o(v")503 665 y(or)d(a)g(PVM)h(arc)o
(hitecture)h(class)e(suc)o(h)h(as)f(\\SUN4".)17 b(If)11
b Fs(flag)f FA(is)h(0,)g Fs(where)f FA(is)h(ignored,)503
719 y(and)j(PVM)g(will)f(select)i(the)f(most)f(appropriate)h(host.)274
773 y Fs(ntask)49 b FA({)g(in)o(teger)15 b(sp)q(ecifying)e(the)i(n)o
(um)o(b)q(er)e(of)g(copies)i(of)e(the)i(executable)g(to)e(start)i(up.)
274 827 y Fs(tids)71 b FA({)49 b(in)o(teger)18 b(arra)o(y)f(of)f
(length)i(at)f(least)g Fs(ntask)p FA(.)27 b(On)17 b(return)i(the)f
(arra)o(y)f(con)o(tains)g(the)503 881 y(tids)h(of)f(the)i(PVM)f(pro)q
(cesses)i(started)f(b)o(y)f(this)f(p)o(vm)p 1386 881
13 2 v 14 w(spa)o(wn)h(call.)28 b(If)18 b(there)h(is)f(a)503
935 y(error)d(starting)e(a)h(giv)o(en)f(task,)g(then)h(that)g(lo)q
(cation)f(in)g(the)h(arra)o(y)f(will)g(con)o(tain)g(the)503
989 y(asso)q(ciated)i(error)g(co)q(de.)274 1043 y Fs(numt)71
b FA({)49 b(in)o(teger)21 b(returning)h(the)f(actual)f(n)o(um)o(b)q(er)
g(of)h(tasks)g(started.)39 b(V)m(alues)21 b(less)g(than)503
1097 y(zero)16 b(indicate)g(a)f(system)g(error.)23 b(A)15
b(p)q(ositiv)o(e)g(v)n(alue)g(less)h(than)f Fs(ntask)f
FA(indicates)i(a)503 1151 y(partial)g(failure.)27 b(In)17
b(this)g(case)h(the)f(user)h(should)f(c)o(hec)o(k)h(the)f
Fs(tids)f FA(arra)o(y)h(for)g(the)503 1205 y(error)e(co)q(de\(s\).)249
1312 y Fr(Discussion)249 1383 y FA(The)c(routine)g Fs(pvm)p
540 1383 14 2 v 15 w(spawn)e FA(starts)i(up)g Fs(ntask)e
FA(copies)i(of)f(the)h(executable)h(named)d Fs(task)p
FA(.)16 b(On)11 b(systems)249 1437 y(that)h(supp)q(ort)g(en)o(vironmen)
o(t,)f(spa)o(wn)h(passes)h(selected)g(v)n(ariables)e(in)g(paren)o(t)i
(en)o(vironmen)o(t)d(to)i(c)o(hil-)249 1491 y(dren)g(tasks.)18
b(if)11 b(set,)h(the)g(en)o(vironmen)o(t)e(v)n(ariable)h(PVM)p
1130 1491 13 2 v 15 w(EXPOR)m(T)h(is)f(passed.)18 b(if)11
b(PVM)p 1653 1491 V 15 w(EXPOR)m(T)249 1545 y(con)o(tains)h(the)h
(names)e(of)h(other)h(v)n(ariables)e(\(separated)j(b)o(y)e(':'\),)e
(they)j(are)g(passed)g(to)q(o.)k(This)12 b(is)g(use-)249
1599 y(ful,)h(for)g(example,)f(for)i(the)g(follo)o(wing:)249
1732 y Fs(setenv)21 b(DISPLAY)f(myworkstation:0.0)249
1786 y(setenv)h(MYSTERYVAR)e(13)249 1840 y(setenv)i(PVM_EXPORT)e
(DISPLAY:MYSTERYVAR)249 1918 y FA(The)d(hosts)f(on)g(whic)o(h)g(the)h
(PVM)f(pro)q(cesses)j(are)d(started)h(is)f(set)h(b)o(y)f(the)g
Fs(flag)g FA(and)f Fs(where)g FA(argu-)249 1972 y(men)o(ts.)28
b(On)18 b(return,)h(the)f(arra)o(y)f Fs(tids)g FA(con)o(tains)g(the)h
(PVM)g(task)g(iden)o(ti\014ers)g(for)f(eac)o(h)h(pro)q(cess)249
2026 y(started.)249 2089 y(If)13 b(p)o(vm)p 372 2089
V 14 w(spa)o(wn)g(starts)i(one)f(or)f(more)g(tasks,)g
Fs(numt)g FA(will)f(b)q(e)i(the)g(actual)g(n)o(um)o(b)q(er)e(of)h
(tasks)h(started.)249 2143 y(If)g(a)g(system)g(error)i(o)q(ccurs,)f
Fs(numt)f FA(will)f(b)q(e)i Fn(<)e FA(0,)g(If)i Fs(numt)e
FA(is)h(less)h(than)g Fs(ntask)p FA(,)e(some)g(executables)249
2197 y(ha)o(v)o(e)f(failed)f(to)h(start)h(and)f(the)g(user)h(should)f
(c)o(hec)o(k)h(the)g(last)f Fs(ntask)f FA(-)h Fs(numt)f
FA(lo)q(cations)h(in)f(the)i Fs(tids)249 2250 y FA(arra)o(y)18
b(that)h(will)e(con)o(tain)h(the)h(asso)q(ciated)g(error)g(co)q(des)h
(\(see)f(b)q(elo)o(w)f(for)h(meaning\).)29 b(The)19 b(\014rst)249
2304 y(n)o(um)o(t)12 b(tids)h(in)g(the)h(arra)o(y)g(are)f(go)q(o)q(d,)g
(whic)o(h)g(can)h(b)q(e)g(useful)f(for)g(functions)h(suc)o(h)g(as)g(p)o
(vm)p 1682 2304 V 13 w(mcast\(\).)249 2367 y(When)g Fs(flag)f
FA(is)g(set)h(to)g(0)f(and)h Fs(where)e FA(is)i(set)g(to)g(NULL)f(\(or)
h(\\)p Fs(*)p FA(")f(in)g(F)m(ortran\),)g(a)g(heuristic)i(is)e(used)249
2421 y(to)h(distribute)h(the)g Fs(ntask)e FA(pro)q(cesses)k(across)f
(the)f(virtual)e(mac)o(hine.)18 b(Curren)o(tly)m(,)c(the)h(heuristic)g
(is)249 2475 y(round-robin)d(assignmen)o(t)f(starting)h(with)g(the)h
(next)f(host)h(in)e(the)i(table.)18 b(Later)12 b(PVM)h(will)d(use)j
(the)p eop
%%Page: 263 282
263 281 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(263)249
507 y FA(metrics)12 b(of)f(mac)o(hine)g(load)f(and)i(rated)h(p)q
(erformance)e(\(sp=\))i(to)f(determine)g(the)g(most)f(appropriate)249
561 y(hosts.)249 624 y(If)17 b(the)g(PvmHostCompl)d(\015ag)i(is)h(set,)
h(the)g(resulting)f(host)g(set)h(gets)f(complemen)o(ted.)26
b(Also,)16 b(the)249 677 y(T)m(askHost)f(hostname)g(".")f(is)i(tak)o
(en)f(as)h(lo)q(calhost.)22 b(This)15 b(allo)o(ws)f(spa)o(wning)h
(tasks)h(on)f(\\.")f(to)i(get)249 731 y(the)f(lo)q(calhost)e(or)h(to)f
(spa)o(wn)h Fn(n)9 b Ft(\000)h FA(1)j(things)h(on)g(T)m
(askHost|HostCompl)d(\\.")i(to)h(get)g(an)o(y)f(but)h(the)249
785 y(lo)q(calhost.)249 848 y(In)i(the)h(sp)q(ecial)g(case)g(where)g(a)
f(m)o(ultipro)q(cessor)g(is)g(sp)q(eci\014ed)i(b)o(y)e
Fs(where)p FA(,)f(p)o(vm)p 1537 848 13 2 v 13 w(spa)o(wn)i(will)d
(start)249 902 y(all)f Fs(ntask)g FA(copies)h(on)g(this)g(single)f(mac)
o(hine)g(using)g(the)i(v)o(endor's)f(underlying)f(routines.)249
964 y(If)h(PvmT)m(askDebug)e(is)i(set,)g(the)h(p)o(vmd)d(will)h(start)h
(the)h(task\(s\))g(in)e(a)h(debugger.)19 b(In)14 b(this)g(case,)h(in-)
249 1018 y(stead)f(of)f(executing)h Fs(pvm3/bin/ARCH/task)k(args)p
FA(,)12 b(p)o(vmd)g(will)g(executes)k Fs(pvm3/lib/debugge)o(r)249
1072 y(pvm3/bin/ARCH/task)i(args)p FA(.)f(The)d(debugger)g(is)f(a)h
(shell)f(script)h(that)g(the)g(users)g(can)g(mo)q(dify)d(to)249
1126 y(their)16 b(individual)d(tastes.)22 b(Curren)o(tly)m(,)15
b(the)h(script)g(starts)g(an)f(xterm)f(with)h(db)o(x)g(or)g(a)f
(comparable)249 1180 y(debugger)h(in)e(it.)249 1292 y
Fr(Examples)274 1358 y(C:)495 1412 y Fs(numt)21 b(=)g(pvm_spawn\()f
("host",)g(0,)i(PvmTaskHost,)887 1466 y("sparky",)e(1,)h(&tid[0])g(\);)
495 1520 y(numt)g(=)g(pvm_spawn\()f("host",)g(0,)i(\(PvmTaskHost+Pv)o
(mTask)o(Debug)o(\),)887 1574 y("sparky",)e(1,)h(&tid[0])g(\);)495
1628 y(numt)g(=)g(pvm_spawn\()f("node",)g(0,)i(PvmTaskArch,)887
1682 y("RIOS",)e(1,)i(&tid[i])e(\);)495 1736 y(numt)h(=)g(pvm_spawn\()f
("FEM1",)g(args,)h(0,)g(0,)h(16,)f(tids)g(\);)495 1790
y(numt)g(=)g(pvm_spawn\()f("pde",)g(0,)i(PvmTaskHost,)887
1844 y("paragon.ornl",)d(512,)i(tids)f(\);)274 1898 y
Fr(F)l(ortran:)495 1952 y Fs(FLAG)h(=)g(PVMARCH)f(+)i(PVMDEBUG)495
2006 y(CALL)f(PVMFSPAWN\()e('node',)i(FLAG,)f('SUN4',)h(1,)g(TID\(3\),)
f(NUMT)h(\))495 2060 y(CALL)g(PVMFSPAWN\()e('FEM1',)i(PVMDEFAULT,)e
('*',)i(16,)g(TIDS,)g(NUMT)g(\))495 2114 y(CALL)g(PVMFSPAWN\()e
('TBMD',)i(PVMHOST,)f('cm5.utk.edu',)f(32,)i(TIDS,)g(NUMT)g(\))249
2221 y Fr(Errors)249 2291 y FA(The)d(follo)o(wing)c(error)k(conditions)
f(can)h(b)q(e)f(returned)i(b)o(y)e Fs(pvm)p 1264 2291
14 2 v 15 w(spawn)f FA(either)j(in)d Fs(numt)h FA(or)g(in)f(the)249
2345 y Fs(tids)d FA(arra)o(y)m(.)p eop
%%Page: 264 283
264 282 bop 249 251 a Fu(264)1321 b(App)q(endix)15 b(B)274
504 y FA(Name)221 b(V)m(alue)50 b(P)o(ossible)14 b(Cause)p
249 521 1489 2 v 274 559 a(PvmBadP)o(aram)96 b Ft(\000)p
FA(2)50 b(giving)12 b(an)i(in)o(v)n(alid)d(argumen)o(t)i(v)n(alue.)274
613 y(PvmNoHost)154 b Ft(\000)p FA(6)50 b(Sp)q(eci\014ed)15
b(host)f(is)g(not)f(in)h(the)g(virtual)f(mac)o(hine.)274
667 y(PvmNoFile)169 b Ft(\000)p FA(7)50 b(Sp)q(eci\014ed)20
b(executable)h(cannot)f(b)q(e)g(found.)35 b(The)20 b(default)753
721 y(lo)q(cation)26 b(PVM)i(lo)q(oks)e(in)49 b Fs(~/pvm3/bin/ARCH)24
b FA(where)753 775 y(AR)o(CH)13 b(is)h(PVM)g(arc)o(hitecture)i(name.)
274 829 y(PvmNoMem)125 b Ft(\000)p FA(10)50 b(Mallo)q(c)13
b(failed.)k(Not)c(enough)h(memory)e(on)h(host.)274 883
y(PvmSysErr)148 b Ft(\000)p FA(14)50 b(p)o(vmd)12 b(not)i(resp)q
(onding.)274 937 y(PvmOutOfRes)88 b Ft(\000)p FA(27)50
b(out)13 b(of)h(resources.)p eop
%%Page: 265 284
265 283 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(265)291
511 y FE(p)n(vmftasks\(\))838 b(p)n(vm)p 1618 511 21
2 v 25 w(tasks\(\))p 249 595 1591 16 v 249 658 a FA(Returns)15
b(information)c(ab)q(out)j(the)g(tasks)g(running)g(on)g(the)g(virtual)f
(mac)o(hine.)249 770 y Fr(Synopsis)274 836 y(C)195 b
Fs(int)21 b(info)g(=)h(pvm_tasks\()e(int)h(where,)f(int)h(*ntask,)1004
890 y(struct)g(pvmtaskinfo)e(**taskp)i(\))481 944 y(struct)g
(pvmtaskinfo{)568 998 y(int)43 b(ti_tid;)568 1052 y(int)g(ti_ptid;)568
1106 y(int)g(ti_host;)568 1160 y(int)g(ti_flag;)568 1214
y(char)21 b(*ti_a_out;)568 1268 y(int)43 b(ti_pid;)481
1322 y(})22 b(taskp;)274 1376 y Fr(F)l(ortran)48 b Fs(call)21
b(pvmftasks\()f(where,)h(ntask,)f(tid,)h(ptid,)852 1430
y(dtid,)g(flag,)f(aout,info)g(\))249 1537 y Fr(P)o(arameters)274
1595 y Fs(where)49 b FA({)g(in)o(teger)17 b(sp)q(ecifying)f(what)g
(tasks)g(to)g(return)h(information)c(ab)q(out.)25 b(The)503
1649 y(options)14 b(are)g(the)h(follo)o(wing:)528 1703
y(0)195 b(for)14 b(all)e(the)j(tasks)f(on)g(the)g(virtual)f(mac)o(hine)
528 1757 y(p)o(vmd)g(tid)49 b(for)14 b(all)e(tasks)j(on)e(a)h(giv)o(en)
f(host)528 1811 y(tid)165 b(for)14 b(a)f(sp)q(eci\014c)j(task)274
1865 y Fs(ntask)49 b FA({)g(in)o(teger)15 b(returning)f(the)h(n)o(um)o
(b)q(er)e(of)g(tasks)h(b)q(eing)g(rep)q(orted)i(on.)274
1919 y Fs(taskp)49 b FA({)g(p)q(oin)o(ter)11 b(to)g(an)g(arra)o(y)f(of)
h(structures)i(whic)o(h)e(con)o(tain)f(information)e(ab)q(out)503
1973 y(eac)o(h)18 b(task)g(including)e(its)h(task)h(ID,)e(paren)o(t)i
(tid,)f(p)o(vmd)f(task)i(ID,)e(sta-)503 2027 y(tus)i(\015ag,)f(the)h
(name)e(of)h(this)g(task's)g(executable)i(\014le,)f(and)f(task)g(\(O/S)
503 2081 y(dep)q(enden)o(t\))i(pro)q(cess)f(id.)26 b(The)18
b(status)f(\015ag)f(v)n(alues)h(are)g(w)o(aiting)e(for)i(a)503
2135 y(message,)c(w)o(aiting)g(for)g(the)i(p)o(vmd,)d(and)h(running.)
274 2189 y Fs(tid)93 b FA({)49 b(in)o(teger)15 b(returning)f(task)g(ID)
g(of)f(one)h(task)274 2243 y Fs(ptid)71 b FA({)49 b(in)o(teger)15
b(returning)f(paren)o(t)g(task)h(ID)274 2297 y Fs(dtid)71
b FA({)49 b(in)o(teger)15 b(returning)f(p)o(vmd)e(task)i(ID)g(of)f
(host)h(task)g(is)g(on.)p eop
%%Page: 266 285
266 284 bop 249 251 a Fu(266)1321 b(App)q(endix)15 b(B)274
504 y Fs(flag)49 b FA({)h(in)o(teger)14 b(returning)g(status)h(of)e
(task)274 558 y Fs(aout)49 b FA({)h(c)o(haracter)16 b(string)g
(returning)g(the)g(name)f(of)g(spa)o(wned)h(task.)23
b(Man)o(ually)482 611 y(started)15 b(tasks)f(return)h(blank.)274
665 y Fs(info)49 b FA({)h(in)o(teger)12 b(status)g(co)q(de)g(returned)i
(b)o(y)d(the)h(routine.)17 b(V)m(alues)12 b(less)g(than)g(zero)482
719 y(indicate)h(an)h(error.)249 827 y Fr(Discussion)249
897 y FA(The)f(routine)h Fs(pvm)p 545 897 14 2 v 15 w(tasks)e
FA(returns)i(information)c(ab)q(out)j(tasks)h(running)e(on)h(the)h
(virtual)e(mac)o(hine.)249 951 y(The)17 b(information)c(returned)18
b(is)e(the)g(same)g(as)g(that)g(a)o(v)n(ailable)e(from)g(the)j(console)
g(command)c Fs(ps)p FA(.)249 1005 y(The)k(C)g(function)f(returns)i
(information)c(ab)q(out)i(the)i(en)o(tire)f(virtual)f(mac)o(hine)f(in)h
(one)h(call.)26 b(The)249 1059 y(F)m(ortran)20 b(function)h(returns)h
(information)17 b(ab)q(out)j(one)h(task)g(p)q(er)g(call)f(and)g(cycles)
i(through)e(all)249 1113 y(the)f(tasks.)31 b(Th)o(us,)19
b(if)e(where)j(=)e(0,)h(and)f(p)o(vmftasks)e(is)i(called)g(n)o(task)g
(times,)g(all)f(tasks)i(will)d(b)q(e)249 1167 y(represen)o(ted.)249
1229 y(If)e(p)o(vm)p 373 1229 13 2 v 13 w(tasks)g(is)g(successful,)h
Fs(info)e FA(will)g(b)q(e)h(0.)k(If)13 b(some)g(error)i(o)q(ccurs,)g
Fs(info)e FA(will)g(b)q(e)h Fn(<)e FA(0.)249 1341 y Fr(Examples)274
1408 y(C:)495 1462 y Fs(info)21 b(=)g(pvm_tasks\()f(0,)h(&ntask,)g
(&taskp)f(\);)274 1516 y Fr(F)l(ortran:)495 1570 y Fs(CALL)h
(PVMFTASKS\()e(DTID,)i(NTASK,)g(INFO)g(\))249 1677 y
Fr(Errors)249 1747 y FA(The)14 b(follo)o(wing)e(error)i(conditions)g
(can)g(b)q(e)h(returned)g(b)o(y)f Fs(pvm)p 1238 1747
14 2 v 15 w(tasks)p FA(.)274 1815 y(Name)221 b(P)o(ossible)14
b(Cause)p 249 1833 1338 2 v 274 1871 a(PvmBadP)o(aram)47
b(in)o(v)n(alid)12 b(v)n(alue)h(for)h Fs(where)f FA(argumen)o(t.)274
1925 y(PvmSysErr)120 b(p)o(vmd)13 b(not)g(resp)q(onding.)274
1979 y(PvmNoHost)105 b(sp)q(eci\014ed)16 b(host)e(not)g(in)f(virtual)g
(mac)o(hine.)p eop
%%Page: 267 286
267 285 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(267)291
511 y FE(p)n(vmftidtohost\(\))596 b(p)n(vm)p 1498 511
21 2 v 24 w(tidtohost\(\))p 249 595 1591 16 v 249 658
a FA(Returns)15 b(the)f(host)g(ID)g(on)g(whic)o(h)f(the)i(sp)q
(eci\014ed)g(task)f(is)g(running.)249 770 y Fr(Synopsis)274
836 y(C)173 b Fs(int)21 b(dtid)g(=)h(pvm)p 790 836 14
2 v 15 w(tidtohost\()e(int)h(tid)g(\))274 890 y Fr(F)l(ortran)48
b Fs(call)21 b(pvmftidtohost\()e(tid,)i(dtid)g(\))249
997 y Fr(P)o(arameters)274 1056 y Fs(tid)71 b FA({)50
b(in)o(teger)14 b(task)g(iden)o(ti\014er)g(sp)q(eci\014ed.)274
1110 y Fs(dtid)49 b FA({)h(in)o(teger)14 b(tid)f(of)h(the)g(host's)g(p)
o(vmd)f(returned.)249 1217 y Fr(Discussion)249 1287 y
FA(The)h(routine)g Fs(pvm)p 546 1287 V 15 w(tidtohost)e
FA(returns)j(the)f(host)g(ID)f Fs(dtid)g FA(on)h(whic)o(h)f(the)h(sp)q
(eci\014ed)h(task)f Fs(tid)f FA(is)249 1341 y(running.)249
1453 y Fr(Examples)274 1520 y(C:)538 1574 y Fs(host)21
b(=)h(pvm_tidtohost\()d(tid[0])h(\);)274 1628 y Fr(F)l(ortran:)560
1682 y Fs(CALL)h(PVMFTIDTOHOST\(TID)o(,)e(HOSTID\))249
1789 y Fr(Errors)249 1859 y FA(These)c(error)g(conditions)f(can)g(b)q
(e)g(returned)i(b)o(y)d Fs(pvm)p 1097 1859 V 16 w(tidtohost)p
FA(.)274 1927 y(Name)221 b(P)o(ossible)14 b(cause)p 249
1945 1338 2 v 274 1983 a(PvmBadP)o(aram)47 b(giving)13
b(an)g(in)o(v)n(alid)f(tid.)p eop
%%Page: 268 287
268 286 bop 249 251 a Fu(268)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmftrecv\(\))832 b(p)n(vm)p 1616 511 21
2 v 24 w(trecv\(\))p 249 595 1591 16 v 249 658 a FA(Receiv)o(es)15
b(with)e(timeout.)249 770 y Fr(Synopsis)274 836 y(C)173
b Fs(int)21 b(bufid)g(=)h(pvm)p 812 836 14 2 v 15 w(trecv\()e(int)i
(tid,)f(int)g(msgtag,)983 890 y(struct)f(timeval)g(*tmout)h(\))274
944 y Fr(F)l(ortran)48 b Fs(call)21 b(pvmftrecv\()f(tid,)h(msgtag,)f
(sec,)h(usec,)g(bufid)g(\))249 1051 y Fr(P)o(arameters)274
1110 y Fs(tid)180 b FA({)49 b(in)o(teger)15 b(to)f(matc)o(h)e(task)i
(iden)o(ti\014er)g(of)g(sending)g(pro)q(cess.)274 1164
y Fs(msgtag)114 b FA({)49 b(in)o(teger)15 b(to)f(matc)o(h)e(message)i
(tag;)f(should)h(b)q(e)g Ft(\025)g FA(0.)274 1217 y Fs(tmout)136
b FA({)49 b(time)13 b(to)h(w)o(ait)f(b)q(efore)i(returning)f(without)f
(a)h(message.)274 1271 y Fs(sec,)21 b(usec)49 b FA({)g(in)o(tegers)31
b(de\014ning)f(Time)e(to)i(w)o(ait)f(b)q(efore)h(returning)g(without)g
(a)590 1325 y(message.)274 1379 y Fs(bufid)136 b FA({)49
b(in)o(teger)11 b(returns)g(the)g(v)n(alue)e(of)g(the)h(new)h(activ)o
(e)f(receiv)o(e)h(bu\013er)g(iden)o(ti\014er.)590 1433
y(V)m(alues)j(less)h(than)f(zero)g(indicate)g(an)g(error.)249
1541 y Fr(Discussion)249 1611 y FA(The)f(routine)g Fs(pvm)p
544 1611 V 16 w(trecv)e FA(blo)q(c)o(ks)i(the)h(pro)q(cess)g(un)o(til)e
(a)h(message)g(with)f(lab)q(el)g Fs(msgtag)g FA(has)h(arriv)o(ed)249
1665 y(from)c Fs(tid)p FA(.)17 b(p)o(vm)p 521 1665 13
2 v 13 w(trecv,)c(then)e(places)h(the)g(message)f(in)g(a)f(new)i
FB(active)f FA(receiv)o(e)i(bu\013er,)f(also)e(clearing)249
1719 y(the)17 b(curren)o(t)h(receiv)o(e)f(bu\013er.)26
b(If)16 b(no)g(matc)o(hing)e(message)i(arriv)o(es)h(within)e(the)i(sp)q
(eci\014ed)g(w)o(aiting)249 1773 y(time,)12 b(p)o(vm)p
437 1773 V 14 w(trecv)j(returns)g(without)f(a)f(message.)249
1835 y(A)i(-1)f(in)g Fs(msgtag)f FA(or)i Fs(tid)f FA(matc)o(hes)g(an)o
(ything.)20 b(This)14 b(allo)o(ws)f(the)j(user)f(the)h(follo)o(wing)c
(options.)19 b(If)249 1889 y(tid)c(=)e Ft(\000)p FA(1)i(and)g(msgtag)e
(is)i(de\014ned)h(b)o(y)f(the)h(user,)g(then)f(p)o(vm)p
1251 1889 V 14 w(recv)h(will)d(accept)j(a)f(message)g(from)249
1943 y(an)o(y)e(pro)q(cess)i(that)f(has)f(a)g(matc)o(hing)f(msgtag.)k
(If)d(msgtag)e(=)h Ft(\000)p FA(1)i(and)f(tid)g(is)g(de\014ned)h(b)o(y)
f(the)h(user,)249 1997 y(then)j(p)o(vm)p 428 1997 V 13
w(recv)h(will)d(accept)i(an)o(y)f(message)g(that)h(is)f(sen)o(t)h(from)
e(pro)q(cess)j(tid.)25 b(If)16 b(tid)g(=)g Ft(\000)p
FA(1)g(and)249 2051 y(msgtag)c(=)g Ft(\000)p FA(1,)i(then)g(p)o(vm)p
691 2051 V 13 w(recv)h(will)e(accept)i(an)o(y)e(message)h(from)e(an)o
(y)h(pro)q(cess.)249 2113 y(In)i(C,)g(the)h Fs(tmout)e
FA(\014elds)i(tv)p 704 2113 V 15 w(sec)g(and)g(tv)p 908
2113 V 15 w(usec)g(sp)q(ecify)g(ho)o(w)f(long)f(p)o(vm)p
1412 2113 V 14 w(trecv)i(will)e(w)o(ait)g(without)249
2167 y(returning)h(a)f(matc)o(hing)f(message.)20 b(In)14
b(F)m(ortran,)g(t)o(w)o(o)g(separate)i(parameters,)e
Fs(sec)g FA(and)g Fs(usec)p FA(,)g(are)249 2221 y(passed.)19
b(With)13 b(b)q(oth)h(set)h(to)f(zero,)g(p)o(vm)p 899
2221 V 13 w(trecv)h(b)q(eha)o(v)o(es)g(the)g(same)e(as)h(p)o(vm)p
1479 2221 V 13 w(nrecv\(\),)h(whic)o(h)e(is)h(to)249
2275 y(prob)q(e)d(for)g(messages)f(and)h(return)h(immedia)o(tely)c(ev)o
(en)j(if)f(none)h(are)g(matc)o(hed.)16 b(In)11 b(C,)f(passing)h(a)f(n)o
(ull)249 2329 y(p)q(oin)o(ter)16 b(in)e(tmout)g(mak)o(es)h(p)o(vm)p
778 2329 V 13 w(trecv)h(act)g(lik)o(e)e(p)o(vm)p 1125
2329 V 14 w(recv\(\);)j(that)e(is,)g(it)g(will)f(w)o(ait)g
(inde\014nitely)m(.)249 2383 y(In)g(F)m(ortran,)f(setting)h(sec)i(to)d
(-1)h(has)g(the)g(same)f(e\013ect.)249 2446 y(The)h(PVM)g(mo)q(del)e
(guaran)o(tees)i(the)g(follo)o(wing)d(ab)q(out)j(message)f(order.)19
b(If)13 b(task)g(1)h(sends)g(message)249 2500 y(A)k(to)g(task)h(2,)f
(then)h(task)f(1)g(sends)i(message)e(B)g(to)g(task)g(2,)h(message)f(A)g
(will)f(arriv)o(e)h(at)g(task)g(2)p eop
%%Page: 269 288
269 287 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(269)249
507 y FA(b)q(efore)14 b(message)f(B.)g(Moreo)o(v)o(er,)h(if)e(b)q(oth)i
(messages)f(arriv)o(e)g(b)q(efore)i(task)e(2)g(do)q(es)h(a)f(receiv)o
(e,)h(then)g(a)249 561 y(wildcard)g(receiv)o(e)h(will)d(alw)o(a)o(ys)h
(return)i(message)f(A.)249 624 y(If)g(p)o(vm)p 373 624
13 2 v 13 w(trecv)i(is)e(successful,)i Fs(bufid)d FA(will)g(b)q(e)i
(the)g(v)n(alue)e(of)h(the)h(new)g(activ)o(e)f(receiv)o(e)i(bu\013er)f
(iden-)249 677 y(ti\014er.)j(If)c(some)f(error)i(o)q(ccurs,)g
Fs(bufid)d FA(will)h(b)q(e)h Fn(<)e FA(0.)249 740 y(Once)g(p)o(vm)p
434 740 V 13 w(trecv)g(returns,)g(the)g(data)e(in)g(the)h(message)g
(can)f(b)q(e)i(unpac)o(k)o(ed)f(in)o(to)f(the)h(user's)h(memory)249
794 y(using)i(the)g(unpac)o(k)g(routines.)249 906 y Fr(Examples)274
972 y(C:)495 1026 y Fs(struct)20 b(timeval)g(tmout;)495
1134 y(tid)h(=)g(pvm_parent\(\);)495 1188 y(msgtag)f(=)i(4)f(;)495
1242 y(if)g(\(\(bufid)f(=)i(pvm_trecv\()e(tid,)h(msgtag,)f(&tmout)g
(\)\))i(>0\))f({)538 1296 y(pvm_upkint\()f(tid_array,)f(10,)j(1)f(\);)
538 1350 y(pvm_upkint\()f(problem_size,)f(1,)i(1)h(\);)538
1404 y(pvm_upkfloat\()d(input_array,)h(100,)h(1)g(\);)495
1458 y(})274 1512 y Fr(F)l(ortran:)495 1566 y Fs(CALL)g(PVMFRECV\()e
(-1,)j(4,)f(60,)g(0,)h(BUFID)e(\))495 1620 y(IF)h(\(BUFID)g(.GT.)f(0\))
i(THEN)495 1674 y(CALL)f(PVMFUNPACK\()e(INTEGER4,)h(TIDS,)h(25,)g(1,)g
(INFO)g(\))495 1728 y(CALL)g(PVMFUNPACK\()e(REAL8,)i(MATRIX,)f(100,)h
(100,)g(INFO)g(\))495 1782 y(ENDIF)249 1889 y Fr(Errors)249
1959 y FA(The)14 b(follo)o(wing)e(error)i(conditions)g(can)g(b)q(e)h
(returned)g(b)o(y)f Fs(pvm)p 1238 1959 14 2 v 15 w(trecv)p
FA(.)274 2027 y(Name)221 b(P)o(ossible)14 b(Cause)p 249
2045 1338 2 v 274 2083 a(PvmBadP)o(aram)47 b(giving)13
b(an)g(in)o(v)n(alid)f(tid)i(v)n(alue,)e(or)i(msgtag)e
Fn(<)g Ft(\000)p FA(1.)274 2137 y(PvmSysErr)120 b(p)o(vmd)13
b(not)g(resp)q(onding.)p eop
%%Page: 270 289
270 288 bop 249 251 a Fu(270)1321 b(App)q(endix)15 b(B)291
511 y FE(p)n(vmfunpac)n(k\(\))783 b(p)n(vm)p 1625 511
21 2 v 25 w(upk)p Fa(*)p FE(\(\))p 249 595 1591 16 v
249 658 a FA(Unpac)o(ks)14 b(the)h(activ)o(e)f(message)f(bu\013er)i(in)
o(to)f(arra)o(ys)g(of)f(prescrib)q(ed)j(data)d(t)o(yp)q(e.)249
770 y Fr(Synopsis)274 836 y(C)296 890 y Fs(int)21 b(info)g(=)g
(pvm_unpackf\()f(const)h(char)g(*fmt,)f(...)h(\))296
944 y(int)g(info)g(=)g(pvm_upkbyte\()42 b(char)64 b(*xp,)21
b(int)g(nitem,)g(int)g(stride)g(\))296 998 y(int)g(info)g(=)g
(pvm_upkcplx\()42 b(float)g(*cp,)21 b(int)g(nitem,)g(int)g(stride)g(\))
296 1052 y(int)g(info)g(=)g(pvm_upkdcplx\()f(double)g(*zp,)h(int)g
(nitem,)g(int)g(stride)g(\))296 1106 y(int)g(info)g(=)g
(pvm_upkdouble\(double)d(*dp,)j(int)g(nitem,)g(int)g(stride)g(\))296
1160 y(int)g(info)g(=)g(pvm_upkfloat\()f(float)42 b(*fp,)21
b(int)g(nitem,)g(int)g(stride)g(\))296 1214 y(int)g(info)g(=)g
(pvm_upkint\()64 b(int)86 b(*ip,)21 b(int)g(nitem,)g(int)g(stride)g(\))
296 1268 y(int)g(info)g(=)g(pvm_upklong\()42 b(long)64
b(*ip,)21 b(int)g(nitem,)g(int)g(stride)g(\))296 1322
y(int)g(info)g(=)g(pvm_upkshort\()f(short)42 b(*jp,)21
b(int)g(nitem,)g(int)g(stride)g(\))296 1376 y(int)g(info)g(=)g
(pvm_upkstr\()64 b(char)g(*sp)21 b(\))274 1451 y Fr(F)l(ortran)274
1505 y Fs(call)g(pvmfunpack\()e(what,)i(xp,)g(nitem,)g(stride,)f(info)h
(\))249 1611 y Fr(P)o(arameters)274 1670 y Fs(fmt)115
b FA({)49 b(prin)o(tf-lik)o(e)13 b(format)f(expression)j(sp)q(ecifying)
f(what)f(to)h(pac)o(k)g(\(see)h(discussion\).)274 1724
y Fs(nitem)71 b FA({)49 b(the)15 b(total)e(n)o(um)o(b)q(er)g(of)g
FB(items)h FA(to)f(b)q(e)i(unpac)o(k)o(ed)f(\(not)g(the)h(n)o(um)o(b)q
(er)e(of)g(b)o(ytes\).)274 1778 y Fs(stride)49 b FA({)g(the)15
b(stride)f(to)g(b)q(e)h(used)f(when)h(pac)o(king)e(the)h(items.)k(F)m
(or)13 b(example,)f(if)h(stride=)g(2)h(in)525 1832 y(p)o(vm)p
607 1832 13 2 v 13 w(upk)o(cplx,)g(then)g(ev)o(ery)h(other)f(complex)f
(n)o(um)o(b)q(er)g(will)g(b)q(e)h(unpac)o(k)o(ed.)274
1886 y Fs(xp)137 b FA({)49 b(p)q(oin)o(ter)17 b(to)g(the)g(b)q
(eginning)f(of)g(a)h(blo)q(c)o(k)f(of)g(b)o(ytes.)28
b(Can)16 b(b)q(e)i(an)o(y)e(data)g(t)o(yp)q(e,)i(but)525
1940 y(m)o(ust)13 b(matc)o(h)g(the)h(corresp)q(onding)h(pac)o(k)f(data)
f(t)o(yp)q(e.)274 1994 y Fs(cp)137 b FA({)49 b(complex)13
b(arra)o(y)g(at)h(least)g(nitem*stride)f(items)g(long.)274
2048 y Fs(zp)137 b FA({)49 b(double)14 b(precision)g(complex)f(arra)o
(y)g(at)h(least)g(nitem*stride)f(items)g(long.)274 2102
y Fs(dp)137 b FA({)49 b(double)14 b(precision)g(real)g(arra)o(y)g(at)f
(least)h(nitem*stride)g(items)f(long.)274 2156 y Fs(fp)137
b FA({)49 b(real)14 b(arra)o(y)g(at)f(least)h(nitem*stride)g(items)f
(long.)274 2210 y Fs(ip)137 b FA({)49 b(in)o(teger)14
b(arra)o(y)g(at)g(least)g(nitem*stride)f(items)g(long.)274
2264 y Fs(jp)137 b FA({)49 b(in)o(teger*2)14 b(arra)o(y)g(at)f(least)h
(nitem*stride)g(items)f(long.)274 2318 y Fs(sp)137 b
FA({)49 b(p)q(oin)o(ter)14 b(to)g(a)g(n)o(ull)e(terminated)i(c)o
(haracter)h(string.)p eop
%%Page: 271 290
271 289 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(271)274
504 y Fs(what)49 b FA({)h(in)o(teger)14 b(sp)q(ecifying)g(the)g(t)o(yp)
q(e)h(of)e(data)g(b)q(eing)h(unpac)o(k)o(ed.)703 558
y Fs(what)g FA(options)p 482 575 677 2 v 528 613 a Fs(STRING)92
b FA(0)72 b Fs(REAL4)157 b FA(4)528 667 y Fs(BYTE1)114
b FA(1)72 b Fs(COMPLEX8)91 b FA(5)528 721 y Fs(INTEGER2)48
b FA(2)72 b Fs(REAL8)157 b FA(6)528 775 y Fs(INTEGER4)48
b FA(3)72 b Fs(COMPLEX16)d FA(7)274 829 y Fs(info)49
b FA({)h(in)o(teger)14 b(status)h(co)q(de)g(returned)g(b)o(y)f(the)h
(routine.)j(V)m(alues)c(less)h(than)f(zero)h(indicate)482
883 y(an)e(error.)249 989 y Fr(Discussion)249 1057 y
FA(Eac)o(h)g(of)g(the)35 b Fs(pvm_upk*)11 b FA(routines)j(unpac)o(ks)f
(an)g(arra)o(y)g(of)f(the)i(giv)o(en)e(data)h(t)o(yp)q(e)g(from)e(the)j
(activ)o(e)249 1111 y(receiv)o(e)j(bu\013er.)24 b(The)16
b(argumen)o(ts)e(for)i(eac)o(h)g(of)e(the)j(routines)f(are)g(a)f(p)q
(oin)o(ter)g(to)h(the)g(arra)o(y)f(to)g(b)q(e)249 1165
y(unpac)o(k)o(ed)h(in)o(to,)e Fs(nitem)g FA(whic)o(h)g(is)h(the)h
(total)e(n)o(um)o(b)q(er)g(of)h(items)f(to)h(unpac)o(k,)g(and)f
Fs(stride)g FA(whic)o(h)249 1219 y(is)g(the)g(stride)h(to)f(use)g(when)
h(unpac)o(king.)249 1280 y(An)d(exception)h(is)f(p)o(vm)p
621 1280 13 2 v 13 w(upkstr\(\))h(whic)o(h)f(b)o(y)g(de\014nition)g
(unpac)o(ks)g(a)g(NULL)g(terminated)g(c)o(haracter)249
1333 y(string)k(and)g(th)o(us)g(do)q(es)h(not)f(need)h
Fs(nitem)e FA(or)h Fs(stride)f FA(argumen)o(ts.)23 b(The)17
b(F)m(ortran)f(routine)g(p)o(vm-)249 1387 y(funpac)o(k\()f(STRING,)e
(...\))20 b(exp)q(ects)d Fs(nitem)d FA(to)h(b)q(e)g(the)h(n)o(um)o(b)q
(er)e(of)g(c)o(haracters)i(in)f(the)g(string)g(and)249
1441 y Fs(stride)e FA(to)g(b)q(e)i(1.)249 1502 y(If)f(the)g(unpac)o
(king)f(is)h(successful,)h Fs(info)e FA(will)g(b)q(e)h(0.)k(If)13
b(some)g(error)i(o)q(ccurs,)g Fs(info)e FA(will)g(b)q(e)h
Fn(<)e FA(0.)249 1563 y(A)i(single)g(v)n(ariable)e(\(not)i(an)g(arra)o
(y\))g(can)g(b)q(e)g(unpac)o(k)o(ed)h(b)o(y)e(setting)i
Fs(nitem)p FA(=)10 b(1)k(and)g Fs(stride)p FA(=)c(1.)249
1624 y(The)k(routine)f(p)o(vm)p 558 1624 V 13 w(unpac)o(kf\(\))g(uses)h
(a)f(prin)o(tf-lik)o(e)f(format)f(expression)j(to)f(sp)q(ecify)h(what)f
(and)f(ho)o(w)249 1678 y(to)f(unpac)o(k)g(data)g(from)e(the)j(receiv)o
(e)g(bu\013er.)19 b(All)10 b(v)n(ariables)g(are)i(passed)g(as)f
(addresses.)19 b(A)11 b(BNF-lik)o(e)249 1732 y(description)k(of)e(the)h
(format)e(syn)o(tax)i(is)g(as)g(follo)o(ws:)336 1807
y Fs(format)21 b(:)g(null)g(|)h(init)f(|)g(format)g(fmt)336
1861 y(init)g(:)h(null)f(|)g('\045')h('+')336 1914 y(fmt)f(:)h('\045')f
(count)g(stride)f(modifiers)g(fchar)336 1968 y(fchar)h(:)h('c')f(|)g
('d')h(|)f('f')g(|)h('x')f(|)h('s')336 2022 y(count)f(:)h(null)f(|)g
([0-9]+)g(|)g('*')336 2076 y(stride)g(:)g(null)g(|)h('.')f(\()h([0-9]+)
e(|)i('*')f(\))336 2130 y(modifiers)f(:)i(null)f(|)g(modifiers)f(mchar)
336 2184 y(mchar)h(:)h('h')f(|)g('l')h(|)f('u')249 2292
y(Formats:)293 2346 y(+)43 b(means)21 b(initsend)f(-)i(must)e(match)h
(an)h(int)f(\(how\))g(in)g(the)g(param)g(list.)293 2400
y(c)43 b(pack/unpack)20 b(bytes)293 2454 y(d)43 b(integer)293
2508 y(f)g(float)p eop
%%Page: 272 291
272 290 bop 249 251 a Fu(272)1321 b(App)q(endix)15 b(B)293
507 y Fs(x)43 b(complex)20 b(float)293 561 y(s)43 b(string)249
669 y(Modifiers:)293 723 y(h)g(short)21 b(\(int\))293
777 y(l)43 b(long)g(\(int,)21 b(float,)f(complex)g(float\))293
831 y(u)43 b(unsigned)20 b(\(int\))249 939 y('*')h(count)g(or)g(stride)
g(must)g(match)g(an)g(int)g(in)h(the)f(param)g(list.)249
1018 y FA(F)m(uture)16 b(extensions)h(to)f(the)h Fs(what)e
FA(argumen)o(t)f(will)h(include)h(64-bit)f(t)o(yp)q(es)h(when)h(XDR)e
(enco)q(ding)249 1072 y(of)k(these)j(t)o(yp)q(es)e(is)g(a)o(v)n
(ailable.)34 b(Mean)o(while,)20 b(users)h(should)f(b)q(e)h(a)o(w)o(are)
e(that)h(precision)g(can)g(b)q(e)249 1126 y(lost)e(when)h(passing)f
(data)g(from)e(a)i(64-bit)g(mac)o(hine)f(lik)o(e)g(a)h(Cra)o(y)g(to)g
(a)g(32)g(bit)g(mac)o(hine)f(lik)o(e)g(a)249 1180 y(SP)m(AR)o
(Cstation.)j(As)15 b(a)g(mnemonic)d(the)k Fs(what)e FA(argumen)o(t)f
(name)h(includes)h(the)h(n)o(um)o(b)q(er)e(of)g(b)o(ytes)249
1234 y(of)d(precision)g(to)g(exp)q(ect.)19 b(By)11 b(setting)h(enco)q
(ding)f(to)g(PVMRA)-5 b(W)11 b(\(see)i(p)o(vm\014nitsend\),)d(data)h
(can)g(b)q(e)249 1288 y(transferred)h(b)q(et)o(w)o(een)f(t)o(w)o(o)e
(64-bit)g(mac)o(hines)g(with)g(full)g(precision)h(ev)o(en)h(if)e(the)h
(PVM)g(con\014guration)249 1342 y(is)k(heterogeneous.)249
1404 y(Messages)f(should)e(b)q(e)h(unpac)o(k)o(ed)f(exactly)h(as)f
(they)h(w)o(ere)g(pac)o(k)o(ed)f(to)g(ensure)i(data)e(in)o(tegrit)o(y)m
(.)16 b(P)o(ac)o(k-)249 1458 y(ing)10 b(in)o(tegers)i(and)f(unpac)o
(king)f(them)g(as)h(\015oats)g(will)e(often)i(fail)e(b)q(ecause)k(a)d
(t)o(yp)q(e)i(enco)q(ding)f(will)e(ha)o(v)o(e)249 1512
y(o)q(ccurred)k(transferring)f(the)g(data)f(b)q(et)o(w)o(een)i
(heterogeneous)g(hosts.)18 b(P)o(ac)o(king)11 b(10)f(in)o(tegers)j(and)
e(100)249 1566 y(\015oats,)j(then)g(trying)g(to)f(unpac)o(k)h(only)f(3)
h(in)o(tegers)h(and)e(the)i(100)e(\015oats,)g(will)g(also)g(fail.)249
1678 y Fr(Examples)274 1744 y(C:)495 1798 y Fs(info)21
b(=)g(pvm_recv\()f(tid,)h(msgtag)g(\);)495 1852 y(info)g(=)g
(pvm_upkstr\()f(string)g(\);)495 1906 y(info)h(=)g(pvm_upkint\()f
(&size,)g(1,)i(1)f(\);)495 1960 y(info)g(=)g(pvm_upkint\()f(array,)g
(size,)h(1)h(\);)495 2014 y(info)f(=)g(pvm_upkdouble\()e(matrix,)h
(size*size,)g(1)i(\);)274 2068 y Fr(F)l(ortran:)495 2122
y Fs(CALL)f(PVMFRECV\()e(TID,)i(MSGTAG)g(\);)495 2176
y(CALL)g(PVMFUNPACK\()e(INTEGER4,)h(NSIZE,)h(1,)g(1,)g(INFO)g(\))495
2230 y(CALL)g(PVMFUNPACK\()e(STRING,)h(STEPNAME,)g(8,)i(1,)f(INFO)g(\))
495 2284 y(CALL)g(PVMFUNPACK\()e(REAL4,)i(A\(5,1\),)f(NSIZE,)h(NSIZE)f
(,)i(INFO)f(\))249 2391 y Fr(Errors)249 2462 y FA(The)14
b(follo)o(wing)e(error)i(conditions)g(can)g(b)q(e)h(returned)g(b)o(y)f
Fs(pvm)p 1238 2462 14 2 v 15 w(upk*)p FA(.)p eop
%%Page: 273 292
273 291 bop 249 251 a Fu(PVM)13 b(3)g(Routines)1255 b(273)274
504 y FA(Name)177 b(P)o(ossible)14 b(Cause)p 249 521
1293 2 v 274 559 a(PvmNoData)55 b(Reading)15 b(b)q(ey)o(ond)i(the)f
(end)h(of)f(the)g(receiv)o(e)i(bu\013er.)26 b(Most)557
613 y(lik)o(ely)11 b(cause)j(is)e(trying)g(to)g(unpac)o(k)h(more)e
(items)h(than)g(w)o(ere)557 667 y(originally)f(pac)o(k)o(ed)k(in)o(to)e
(the)h(bu\013er.)274 721 y(PvmBadMsg)49 b(The)12 b(receiv)o(ed)h
(message)e(cannot)h(b)q(e)h(deco)q(ded.)18 b(Most)12
b(lik)o(ely)557 775 y(b)q(ecause)25 b(the)f(hosts)f(are)h
(heterogeneous)h(and)e(the)h(user)557 829 y(sp)q(eci\014ed)19
b(an)d(incompatible)f(enco)q(ding.)28 b(T)m(ry)17 b(setting)g(the)557
883 y(enco)q(ding)d(to)g(PvmDataDefault)d(\(see)k(p)o(vm)p
1269 883 13 2 v 14 w(mkbuf)s(\).)274 937 y(PvmNoBuf)80
b(There)15 b(is)f(no)f(activ)o(e)h(receiv)o(e)h(bu\013er)g(to)f(unpac)o
(k.)p eop
%%Page: 274 293
274 292 bop eop
%%Page: 275 294
275 293 bop 249 260 a FD(Bibliograph)o(y)276 487 y Fy([1])20
b(R.)14 b(Butler)e(and)g(E.)h(Lusk.)20 b(Monitors,)12
b(messages,)g(and)g(clusters:)17 b(The)d(p4)e(parallel)g(programm)o
(ing)e(system.)334 524 y(T)m(ec)o(hnical)g(Rep)q(ort)g(Preprin)o(t)g
(MCS-P362-0493,)f(Argonne)h(National)g(Lab)q(oratory)m(,)f(Argonne,)h
(IL,)h(1993.)276 578 y([2])20 b(L.E.)11 b(Cannon.)i(A)f(cellular)c
(computer)g(to)i(implemen)o(t)e(the)i(k)n(alman)e(\014lter)h
(algorithm.)j(Phd)e(thesis,)g(Mon)o(tana)334 615 y(State)h(Univ)o
(ersit)o(y)m(,)e(1969.)276 669 y([3])20 b(Nic)o(holas)e(Carriero)g(and)
h(Da)o(vid)f(Gelern)o(ter.)36 b(LIND)o(A)20 b(in)e(con)o(text.)36
b Fm(Communic)n(ations)21 b(of)f(the)g(A)o(CM)p Fy(,)334
707 y(32\(4\):444{45)o(8,)9 b(April)i(1989.)276 760 y([4])20
b(Da)o(vid)10 b(Cheriton.)j(VMTP:)e(Versatile)e(Message)g(Transaction)f
(Proto)q(col.)13 b(RF)o(C)e(1045,)e(Stanford)f(Univ)o(ersit)o(y)m(,)334
798 y(F)m(ebruary)i(1988.)276 852 y([5])20 b(J.)10 b(W)m(ang)f(et.)f
(al.)14 b(LSBA)m(TCH:)d(A)f(Distributed)d(Load)h(Sharing)f(Batc)o(h)i
(System.)j(Csri)e(tec)o(hnical)c(rep)q(ort)i(#286,)334
889 y(Univ)o(ersit)o(y)i(of)h(T)m(oron)o(to,)f(April)i(1993.)276
943 y([6])20 b(J.)13 b(Flo)o(w)o(er,)f(A.)h(Kola)o(w)o(a,)f(and)g(S.)g
(Bharadw)o(a)r(j.)k(The)c(Express)f(w)o(a)o(y)i(to)f(distributed)d(pro)
q(cessing.)15 b Fm(Sup)n(er)n(c)n(om-)334 981 y(puting)f(R)n(eview)p
Fy(,)e(pages)e(54{55,)g(Ma)o(y)i(1991.)276 1034 y([7])20
b(Message)11 b(P)o(assing)g(In)o(terface)e(F)m(orum.)15
b(Mpi:)g(A)e(message-pass)o(ing)8 b(in)o(terface)i(standard.)j
(Computer)d(Science)334 1072 y(Dept.)e(Tec)o(hnical)f(Rep)q(ort)h
(CS-94-230,)f(Univ)o(ersit)o(y)g(of)i(T)m(ennessee,)e(Kno)o(xville,)h
(TN,)i(April)e(1994.)13 b(\(T)m(o)c(app)q(ear)334 1109
y(in)j(the)e(In)o(ternationa)o(l)f(Journal)h(of)h(Sup)q(ercompu)o(ter)d
(Applications,)h(V)m(olume)h(8,)i(Num)o(b)q(ers)e(3/4,)g(1994\).)276
1163 y([8])20 b(G.)8 b(C.)g(F)m(o)o(x,)g(S.)f(W.)h(Otto,)h(and)d(A.)j
(J.)f(G.)f(Hey)m(.)14 b(Matrix)7 b(algorithms)e(on)i(a)g(h)o(yp)q
(ercub)q(e)e(I:)j(Matrix)f(m)o(ultiplicat)o(ion)o(.)334
1201 y Fm(Par)n(al)r(lel)14 b(Computing)p Fy(,)e(4:17{31,)e(1987.)276
1254 y([9])20 b(Da)o(vid)c(Gelern)o(ter)f(and)h(Da)o(vid)f(Kaminsky)m
(.)30 b(Sup)q(ercompu)o(tin)o(g)14 b(out)i(of)h(recycled)d(garbage:)24
b(Preliminary)334 1292 y(exp)q(erience)12 b(with)i(Piranha.)21
b(In)14 b Fm(1992)i(International)g(Confer)n(enc)n(e)h(on)e(Sup)n(er)n
(c)n(omputing)p Fy(,)j(pages)13 b(417{427.)334 1329 y(A)o(CM,)g(A)o(CM)
g(Press,)e(July)g(1992.)259 1383 y([10])19 b(T.)d(Green)d(and)h(J.)h
(Sn)o(yder.)22 b(DQS,)15 b(A)h(Distributed)c(Queuing)h(System.)23
b(Scri)14 b(tec)o(hnical)e(rep)q(ort)h(#92-115,)334 1421
y(Florida)d(State)h(Univ)o(ersit)o(y)m(,)e(August)i(1992.)259
1474 y([11])19 b(M.)13 b(Litzk)o(o)o(w,)e(M.)h(Livn)o(y)m(,)f(and)g(M.)
h(Mutk)n(a.)k(Condor)11 b({)h(A)g(h)o(un)o(ter)f(of)g(idle)g(w)o
(orkstations.)k(In)c Fm(Pr)n(o)n(c)n(e)n(e)n(dings)16
b(of)334 1512 y(the)e(Eighth)f(Confer)n(enc)n(e)i(on)e(Distribute)n(d)g
(Computing)g(Systems)p Fy(,)e(San)g(Jose,)g(California,)e(June)i(1988.)
259 1566 y([12])19 b(John)11 b(K.)h(Ousterhout.)h Fm(Tcl)g(and)g(the)g
(Tk)g(T)m(o)n(olkit)p Fy(.)j(Addison-W)m(esley)m(,)9
b(1994.)259 1620 y([13])19 b(J.)d(P)o(ostel.)26 b(T)m(ransmission)14
b(con)o(trol)f(proto)q(col.)25 b(RF)o(C)16 b(793,)g(Information)c
(Sciences)h(Institute,)h(Septem)o(b)q(er)334 1657 y(1981.)259
1711 y([14])19 b(J.)12 b(P)o(ostel.)i(User)e(datagram)d(proto)q(col.)k
(RF)o(C)f(768,)e(Information)e(Sciences)i(Institute,)f(Septem)o(b)q(er)
f(1981.)259 1765 y([15])19 b(Daniel)9 b(A.)h(Reed,)e(Rob)q(ert)h(D.)g
(Olson,)g(Ruth)g(A.)h(Aydt,)f(T)m(ara)h(M.)g(Madh)o(y)o(astha,)d
(Thomas)h(Birk)o(ett,)h(Da)o(vid)f(W.)334 1802 y(Jensen,)k(Bobb)o(y)f
(A.)i(A.)f(Nazief,)g(and)f(Brian)h(K.)h(T)m(ott)o(y)m(.)k(Scalable)10
b(p)q(erformance)f(en)o(vironmen)n(ts)h(for)h(parallel)334
1840 y(systems.)j(In)d(Quen)o(tin)f(Stout)f(and)i(Mic)o(hael)f(W)m
(olfe,)g(editors,)g Fm(The)i(Sixth)h(Distribute)n(d)g(Memory)h
(Computing)334 1877 y(Confer)n(enc)n(e)p Fy(,)g(pages)c(562{569.)f
(IEEE,)i(IEEE)h(Computer)d(So)q(ciet)o(y)h(Press,)h(April)g(1991.)259
1931 y([16])19 b(Sun)11 b(Microsystems,)d(Inc.)15 b(XDR:)c(External)e
(Data)i(Represen)o(tatio)o(n)d(Standard.)13 b(RF)o(C)f(1014,)d(Sun)i
(Microsys-)334 1968 y(tems,)g(Inc.,)f(June)h(1987.)259
2022 y([17])19 b(Louis)11 b(T)m(urcotte.)j(A)f(surv)o(ey)d(of)h(soft)o
(w)o(are)g(en)o(vironme)o(n)o(ts)e(for)i(exploiting)d(net)o(w)o(ork)o
(ed)i(computing)f(resources.)334 2060 y(Draft)i(rep)q(ort,)f
(Mississippi)g(State)g(Univ)o(ersit)o(y)m(,)g(Jac)o(kson,)f
(Mississippi,)h(Jan)o(uary)g(1993.)p eop
%%Page: 276 295
276 294 bop eop
%%Page: 277 296
277 295 bop 249 218 a FD(Index)249 507 y Fy(A)m(TM,)13
b(5)249 586 y(b)q(ottlenec)o(k,)8 b(125)249 665 y(C)269
702 y(language)h(binding,)g(12)249 740 y(C++)269 777
y(language)g(binding,)g(12)249 814 y(c)o(hat)h(script,)h(107)249
852 y(commen)o(ts,)e(xvi)249 889 y(comp.parall)o(el.p)n(vm)o(,)g(xvi)
249 927 y(console)h(program,)f(124)249 964 y(con)o(trol)h(messages,)f
(101)249 1001 y(Cra)o(y)i(Researc)o(h's)f(CS6400,)g(127)249
1039 y(cro)o(wd)h(computing,)d(33)249 1117 y(daemon,)h(12)249
1155 y(data)h(parallelism,)f(12)249 1192 y(debugging,)f(124,)j(157)269
1230 y(imallo)q(c,)e(160)269 1267 y(log,)i(161)269 1304
y(mask,)f(159)269 1342 y(p)o(vm)p 339 1342 11 2 v 11
w(setopt\(\),)g(159)269 1379 y(run)o(time,)f(159)269
1416 y(system,)h(158)269 1454 y(tic)o(kle,)g(159)249
1491 y(debugmask,)e(159)249 1528 y(DEC's)k(VMS,)g(140)249
1566 y(distributed)d(computing)o(,)g(1)249 1603 y(dynamic)g
(con\014guration)o(,)g(50{51)249 1641 y(dynamic)g(pro)q(cess)h(groups,)
g(60{62)249 1719 y(en)o(vironmen)n(t)f(v)n(ariables,)g(121)249
1757 y(ethernet,)g(4)249 1794 y(examples)269 1831 y(Cannon's)h
(algorithm,)f(36)269 1869 y(dot)i(pro)q(duct,)e(68{73)269
1906 y(em)o(barrassing)o(ly)g(parallel,)g(34)269 1944
y(failure,)h(73{76)269 1981 y(fork)h(join,)f(63{68)269
2018 y(heat)g(equation,)f(83{89)269 2056 y(Mandelbrot,)g(34)269
2093 y(matrix)h(m)o(ultiply)m(,)f(36,)i(76{78)269 2130
y(tree)g(computati)o(ons,)d(37)249 2168 y(Express,)i(6,)h(7)249
2247 y(fault)f(detection,)f(106)249 2284 y(fault)h(tolerance,)f(113)249
2321 y(FDDI,)i(4)249 2359 y(\014le)g(descriptor,)e(125)249
2396 y(\014rew)o(all)i(mac)o(hines,)e(107)249 2433 y(F)m(ortran,)h(111)
269 2471 y(language)f(binding,)g(13)249 2508 y(functional)g
(parallelism,)f(12)1119 507 y(Gan)o(tt)i(c)o(hart,)g(138)1119
545 y(getting)f(options,)h(52{53)1119 582 y(global)g(max,)g(62)1119
619 y(global)g(sum,)g(62)1119 657 y(Grand)g(Challenge)f(problems,)g(1)
1119 694 y(group)h(of)h(tasks,)f(14)1119 773 y(heterogene)o(it)o(y)m(,)
e(2)1119 810 y(HiPPI,)j(4)1119 848 y(host)f(p)q(o)q(ol,)h(11)1119
885 y(host)f(table,)g(102)1119 922 y(host-no)q(de,)e(33)1119
960 y(hoster,)i(109)1119 997 y(host\014le,)f(23,)i(29)1119
1034 y(hostless,)e(129)1119 1113 y(IBM's)i(OS/2,)g(140)1119
1151 y(inplace)e(message,)h(126)1119 1188 y(In)o(tel)1139
1225 y(iPSC/860,)g(127,)g(129)1139 1263 y(P)o(aragon,)f(127,)i(128)1119
1300 y(In)o(tel)f(iPSC/860,)g(142)1119 1337 y(In)o(tel)g(NX)j(op)q
(erating)8 b(system,)i(128)1119 1416 y(libfp)o(vm3.a)o(,)f(111)1119
1454 y(libgp)o(vm3.a)o(,)g(15)1119 1491 y(Linda,)h(6,)h(8)1139
1528 y(Pirhana,)e(8)1139 1566 y(tuple-space)o(,)g(8)1119
1645 y(m4,)h(111)1119 1682 y(mac)o(hine)f(con\014guratio)o(n,)f(102)
1119 1719 y(man)o(ual)h(startup,)h(107)1119 1757 y(massiv)o(ely)f
(parallel)g(pro)q(cessors)h(MPP)m(,)i(1)1119 1794 y(master-sla)o(v)o(e)
o(,)d(33)1119 1831 y(memory)g(limit,)h(125)1119 1869
y(message)1139 1906 y(maxim)o(um)e(size,)j(126)1119 1944
y(message)e(bu\013ers,)h(53{55)1119 1981 y(message)f(passing,)h(1,)h
(53)1119 2018 y(message)e(routing,)h(117)1119 2056 y(MID,)h(98)1119
2093 y(MPI,)g(6{7)1119 2130 y(MPP)m(,)h(129)1119 2168
y(MPSD,)f(41)1119 2205 y(m)o(ulticast)e(address,)g(121)1119
2242 y(m)o(ulticastin)o(g,)g(120)1119 2280 y(m)o(ultiple)g(consoles,)g
(28)1119 2317 y(m)o(ultipro)q(ce)o(ssor)f(systems,)i(126)1119
2355 y(m)o(ultipro)q(ce)o(ssors,)e(142)1119 2433 y(netlib,)h(135)1119
2471 y(no)q(de-only)m(,)f(33)1119 2508 y(non-Unix)i(systems,)f(140)p
eop
%%Page: 278 297
278 296 bop 249 251 a Fu(278)1443 b(Index)249 507 y Fy(Ousterhout,)9
b(135)249 545 y(o)o(v)o(erhead,)g(113)249 624 y(P4,)i(6)249
661 y(P)o(ablo,)f(137)249 698 y(pac)o(king)f(data,)i(55{56)249
736 y(passw)o(ord,)f(107)249 773 y(p)q(orting)g(existing)f
(applications,)f(43{44)249 810 y(p)q(orting)i(PVM,)i(139)249
848 y(prob)q(e)e(function,)f(59)249 885 y(pro)q(cess)h(con)o(trol,)f
(46)249 922 y(pro)q(cesses)269 960 y(limit,)h(125)249
997 y(proto)q(col)269 1034 y(p)o(vmd-p)o(vmd)o(,)f(106,)h(112)269
1072 y(p)o(vmd-task,)e(116)269 1109 y(task-task,)h(116)269
1147 y(TCP)m(,)k(112)269 1184 y(UDP)m(,)f(112)269 1221
y(VMTP)m(,)h(112)249 1259 y(proto)q(cols,)c(112{117)249
1296 y(PVM)269 1333 y(computing)f(mo)q(del,)i(12)269
1371 y(console,)g(27{28)269 1408 y(deamon,)f(101{110)269
1445 y(GUI,)i(135)269 1483 y(host)g(\014le,)f(29{30)269
1520 y(instance)f(n)o(um)o(b)q(er,)h(15)269 1558 y(PVM)p
353 1558 11 2 v 13 w(AR)o(CH,)j(20)269 1595 y(PVM)p 353
1595 V 13 w(R)o(OOT,)g(20)269 1632 y(running)c(programs,)g(25{26)269
1670 y(setup,)h(19{20)269 1707 y(signal)g(handlers,)f(101)269
1744 y(starting,)g(22{24)269 1782 y(TID,)j(14)249 1819
y(PVM)p 333 1819 V 14 w(AR)o(CH,)g(122)249 1856 y(PVM)p
333 1856 V 14 w(DEBUGGER,)f(121)249 1894 y(PVM)p 333
1894 V 14 w(DP)m(A)m(TH,)h(121)249 1931 y(PVM)p 333 1931
V 14 w(EXPOR)m(T,)g(121)249 1968 y(PVM)p 333 1968 V 14
w(R)o(OOT,)g(121)249 2006 y(p)o(vmd,)e(12)269 2043 y(connecting,)e(111)
269 2081 y(delete)i(hosts,)g(102)269 2118 y(direct)g(message)g
(routing,)f(119)269 2155 y(dynamic)g(memory)m(,)g(125)269
2193 y(foreign)h(tasks,)g(118)269 2230 y(libp)o(vmd,)f(119)269
2267 y(message)h(routing,)f(117)269 2305 y(messages,)g(98)269
2342 y(MPP)m(,)j(128)269 2379 y(pac)o(k)o(et)e(bu\013ers,)f(117)269
2417 y(pac)o(k)o(et)h(routing,)f(117)269 2454 y(refragmen)o(ta)o(tio)o
(n,)g(118)269 2492 y(sh)o(utdo)o(wn,)h(102)1139 507 y(sla)o(v)o(e,)g
(107)1139 545 y(startup,)f(101)1139 582 y(task)h(limit,)g(126)1139
619 y(task)g(manager,)f(104)1139 657 y(w)o(ait)i(con)o(text,)e(105)1119
694 y(p)o(vmd',)g(106)1119 731 y(p)o(vmd-task,)f(125,)j(126)1119
769 y(p)o(vmd3,)e(12)1119 806 y(PVMEPID,)j(122)1119 844
y(PVMSOCK,)h(122)1119 881 y(PVMTMASK,)g(122)1119 960
y(questions,)c(xvi)1119 1039 y(receiving)g(data,)h(57{59)1119
1076 y(reduction)f(op)q(eration,)f(62)1119 1113 y(Reed,)i(137)1119
1151 y(resoruce)f(limitations,)g(125{126)1119 1188 y(resource)g
(manager,)g(109)1119 1225 y(rexec,)h(107)1119 1263 y(rlogin,)g(107)1119
1300 y(rsh,)h(107)1119 1379 y(scalabilit)o(y)m(,)d(112)1119
1416 y(SDDF,)j(137)1119 1454 y(self)g(de\014ning)e(data)h(format,)g
(137)1119 1491 y(sending)f(data,)i(57{59)1119 1528 y(service)f(no)q
(des,)g(128)1119 1566 y(setting)g(options,)f(52{53)1119
1603 y(shado)o(w)h(p)o(vmd,)g(106)1119 1641 y(shared)g(memory)m(,)f
(130)1119 1678 y(signaling,)g(51)1119 1715 y(Solaris,)g(127)1119
1753 y(SONET,)j(5)1119 1790 y(SPMD,)f(12)1119 1827 y(SPMD)g(program,)e
(129)1119 1865 y(standard)g(I/O,)i(122)1119 1902 y(stderr,)f(48)1119
1939 y(stdout,)f(48)1119 1977 y(Sun)h(Microsystems,)f(127)1119
2056 y(task,)h(11)1119 2093 y(task-task,)f(126)1119 2130
y(TCL/TK,)k(135)1119 2168 y(telnet,)c(107)1119 2205 y(Thinking)h(Mac)o
(hine's)f(CM-5,)j(127,)f(142)1119 2242 y(trace)f(ev)o(en)o(ts,)g(47)
1119 2280 y(tracing,)f(124,)i(157)1119 2317 y(tree)f(computation)o(,)f
(33)1119 2355 y(troublesho)q(o)o(tin)o(g)1139 2392 y(startup)g
(problems,)g(24)1119 2471 y(Unix)i(w)o(orkstations,)e(140)1119
2508 y(unpac)o(king)f(data,)i(59{60)p eop
%%Page: 279 298
279 297 bop 249 251 a Fu(Index)1443 b(279)249 507 y Fy(user)11
b(output,)e(48)249 586 y(virtual)h(mac)o(hine,)f(1)249
665 y(w)o(orkload)269 702 y(data)h(decomp)q(ositio)o(n,)f(40{41)269
740 y(function)g(decomp)q(ositio)o(n,)f(41{43)249 777
y(wrapp)q(er)i(functions,)f(111)249 856 y(XDR,)j(56)249
893 y(XPVM,)h(23,)e(135{139)269 931 y(net)o(w)o(ork)f(view,)h(137{138)
269 968 y(space-time)e(view,)i(138)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF