Subject: further revised context chapter

From: Tony Skjellum <[email-masked]>
Date: Tue, 10 Aug 93 01:02:01 CDT

This is the postscript (bug fixes, missing inter-communication examples added).
- Tony Skjellum

--- cut here ---
%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: mpi-report.dvi
%%Pages: 34 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
/FBB[0 0 0 0]N /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}N /eop{clear SI restore
showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load 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 statusdict begin /product where{pop product dup length 7 ge{0
7 getinterval(Display)eq}{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 /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{clear SS restore}B end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 19 118 df<007F0001FF0007CF00070F000F0F00
0E07000E07000E07000E07000E0700FFFF00FFFF000E07000E07000E07000E07000E07000E0700
0E07000E07000E07000E07000E07000E07007F9FE07F9FE0131A809915>13
D<F0F0F0F004047D830B>46 D<000C000C001C0018001800380030003000700060006000E000C0
00C001C001800180038003000700060006000E000C000C001C0018001800380030003000700060
006000E000C000C0000E257E9B13>I<7FFFFF007FFFFF00781E0F00601E0300601E0300E01E03
80C01E0180C01E0180C01E0180001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000003FFF00003
FFF000191A7F991C>84 D<7F80FFE0F1F0F0F0607000F01FF03FF07870F070E070E073E0F3F1F3
7FFE3F3C10107E8F13>97 D<007E00007E00000E00000E00000E00000E00000E00000E00000E00
000E000FEE001FFE003C3E00781E00700E00E00E00E00E00E00E00E00E00E00E00E00E00700E00
781E003C3E001FFFC00FCFC0121A7F9915>100 D<07E01FF03C78701C701CFFFCFFFCE000E000
E000F0007000780C3E1C1FF807E00E107F8F11>I<00F803FC07BC0F3C0E3C0E000E000E000E00
0E00FFC0FFC00E000E000E000E000E000E000E000E000E000E000E000E007FE07FE00E1A80990C
>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001CF8001FFC001F
1E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00FF9FC0FF
9FC0121A7F9915>104 D<3C003C003C003C00000000000000000000000000FC00FC001C001C00
1C001C001C001C001C001C001C001C001C001C00FF80FF80091A80990A>I<FC0000FC00001C00
001C00001C00001C00001C00001C00001C00001C00001C7F801C7F801C7C001C70001CE0001DC0
001FC0001FE0001EF0001CF0001C78001C3C001C3C001C1E00FF3FC0FF3FC0121A7F9914>107
D<FC00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C001C00FF80FF80091A80990A>I<FCFC3F00FFFEFF801F0FC3C01E0781C01C07
01C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF
9FE7F8FF9FE7F81D107F8F20>I<FCF800FFFC001F1E001E0E001C0E001C0E001C0E001C0E001C
0E001C0E001C0E001C0E001C0E001C0E00FF9FC0FF9FC012107F8F15>I<07E01FF8381C700E60
06E007E007E007E007E007E007700E700E3C3C1FF807E010107F8F13>I<FCFC00FFFE001F0F00
1E07801C03801C03C01C01C01C01C01C01C01C01C01C03C01C03801E07801F1F001FFE001DF800
1C00001C00001C00001C00001C0000FF8000FF800012177F8F15>I<3FE07FE0F0E0E060E060F0
00FF807FC01FE001F0C0F0E070E070F0F0FFE0DF800C107F8F0F>115 D<0C000C000C000C001C
001C003C00FFC0FFC01C001C001C001C001C001C001C001C601C601C601C601EE00FC007800B17
7F960F>I<FC7E00FC7E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C
0E001C1E001E3E000FFFC007EFC012107F8F15>I E /Fb 1 50 df<03000F00FF00F700070007
0007000700070007000700070007000700070007000700070007007FF07FF00C157E9412>49
D E /Fc 12 122 df<01FE07FE0F8F1E0E3C0E3C00780078007800F800F000F0007800780E7C0C
3E1C1FF807E010127E9112>99 D<01F807FE0F1E1E0F3C0F7C077FFF7FFF7800F800F000F00070
00780E7C0C3E3C1FF807E010127E9112>101 D<01C003E003E003E003C0000000000000000000
0000001F801F8007800780070007000700070007000F000E000E000E000E000E001E00FF80FF80
0B1D7F9C0C>105 D<1F9FC01FFFE007F1E007C0E00780E00780E00700E00700E00701E00F01E0
0E01C00E01C00E01C00E01C00E03C01E03C0FF8FF0FF9FF014127F9117>110
D<00FC0003FF000F07801E03C03C01C03801C07801E07801E07801E0F003C0F003C0F003C07003
80700780780F003C1E001FF80007E00013127E9115>I<0FCFE00FFFF803F8F803E07C03C03C03
803E03801E03801E03803E07803E07003C07003C0700780700F80781F00FC3E00EFFC00E7F000E
00000E00001E00001E00001C00001C0000FF8000FF8000171A809117>I<01F86007FEE00F87E0
1F03C03E01C03C01C07801C07801C07803C0F803C0F00380F00380F803807807807C0F803E3F80
1FF7000FC700000700000700000F00000E00000E00000E00007FC0007FC0131A7E9116>I<1FBE
1FFE07EF07CE078E07800700070007000F000E000E000E000E000E001E00FFC0FFC010127F9110
>I<03F60FFE1E1E3C0E380C3C0C3E003FE01FF807FC007C603C601C701C7038F878FFF0CFC00F
127F9110>I<0600060006000E000E000C001C003C00FFE0FFE01C003C00380038003800380038
00780070C070C070C070C071C073807F003E000B1A7C9910>I<FC1F80FC1F803C07803C078038
0700380700380700380700380F00780F00700E00700E00700E00701E00703E0070FE007FFF803F
9F8011127C9117>I<0FF1FE0FF1FE03C07801C06001C06001C0C001C1C001C18000E38000E300
00E60000E60000EC00007C0000780000780000700000700000600000600000C00070C000F18000
C70000FE00007C0000171A809116>121 D E /Fd 3 106 df<3078F06005047C830D>46
D<01E007100C1018083810701070607F80E000E000E000E000E000E0086010602030C01F000D12
7B9113>101 D<01800380010000000000000000000000000000001C002600470047008E008E00
0E001C001C001C0038003800710071007100720072003C00091C7C9B0D>105
D E /Fe 1 59 df<70F8F8F87005057D840C>58 D E /Ff 40 122 df<01E003C0038007800F00
0E001E001C003C0038007800700070007000F000E000E000E000E000E000E000E000E000E000E0
00E000E000F000700070007000780038003C001C001E000E000F000780038003C001E00B2A7E9E
10>40 D<F000780038003C001E000E000F0007000780038003C001C001C001C001E000E000E000
E000E000E000E000E000E000E000E000E000E001E001C001C001C003C00380078007000F000E00
1E003C0038007800F0000B2A7E9E10>I<7878787838307060E005097D830C>44
D<001C0000003E0000003E0000002E0000006700000067000000E7800000C7800000C3800001C3
C0000183C0000181C0000381E0000381E0000700F0000700F0000600F0000E0078000FFFF8000F
FFF8001FFFFC001C003C0018003C0038001E0038001E0070001F0070000F0070000F00E0000780
191D7F9C1C>65 D<007FC001FFF007FFF00FE0F01F80301F00003E00007C0000780000780000F8
0000F00000F00000F00000F00000F00000F00000F00000F800007800007800007C00003E00001F
00001F80180FE07807FFF801FFF0007FC0151D7D9C1B>67 D<FFFC00FFFF00FFFF80F00FE0F003
F0F000F0F00078F00078F0003CF0003CF0001CF0001EF0001EF0001EF0001EF0001EF0001EF000
1EF0001EF0003CF0003CF0007CF00078F000F0F001F0F007E0FFFFC0FFFF00FFFC00171D7C9C1E
>I<FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F00000FF
FF80FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000FFFFC0FFFFC0FFFFC0121D7C9C19>I<FFFF80FFFF80FFFF80F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000FFFF00FFFF00FFFF00F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000111D7C9C18>I<007F8001FF
F007FFF80FE0F81F80381F00183E00007C0000780000780000F80000F00000F00000F00000F000
00F00000F007F8F007F8F807F87800387800387C00383E00381F00381F80380FE0F807FFF801FF
F0007F80151D7D9C1C>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0F000F0FFFFF0FFFFF0FFFFF0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F0141D7C9C1D>I<F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0041D7C9C0C>I<F0003CF00078F000F0F001E0F003C0
F00780F00F00F01E00F03C00F07800F0F000F0E000F1F000F3F000F77800FE7C00FC3C00FC1E00
F81F00F00F00F00F80F00780F003C0F003E0F001E0F000F0F000F0F00078F0007C161D7C9C1D>
75 D<F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
F000F000F000F000F000F000F000F000FFFEFFFEFFFE0F1D7C9C16>I<FC0007E0FC0007E0FC00
07E0EE000DE0EE000DE0EE000DE0EF001DE0E70019E0E70019E0E78039E0E78039E0E38031E0E3
C071E0E3C071E0E1C061E0E1E0E1E0E1E0E1E0E0E0C1E0E0F1C1E0E0F1C1E0E07181E0E07181E0
E07B81E0E03B01E0E03B01E0E03B01E0E01E01E0E01E01E0E01E01E01B1D7C9C24>I<FC0070FC
0070FE0070EE0070EF0070E70070E70070E78070E38070E3C070E3C070E1E070E1E070E0E070E0
F070E07070E07870E07870E03C70E03C70E01C70E01E70E00E70E00E70E00F70E00770E007F0E0
03F0E003F0141D7C9C1D>I<003F000001FFE00003FFF00007C0F8000F003C001E001E003C000F
003C000F00780007807800078070000380F00003C0F00003C0F00003C0F00003C0F00003C0F000
03C0F00003C0F80007C078000780780007803C000F003E001F001E001E000F807C0007C0F80003
FFF00001FFE000003F00001A1D7E9C1F>I<FFFC00FFFF00FFFF80F007C0F003E0F001E0F000F0
F000F0F000F0F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFFC00F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000141D7C9C1B>I<FFF800FFFF
00FFFF80F007C0F001E0F000E0F000F0F000F0F000F0F000F0F000E0F001E0F007C0FFFF80FFFF
00FFF800F03C00F01C00F01E00F00F00F00F00F00780F00780F003C0F003C0F001E0F000F0F000
F0F00078151D7C9C1B>82 D<07F8001FFE003FFF007E0F007C0700F80300F00000F00000F00000
F80000FC00007F00003FF0003FFC000FFF0001FF00003F80000FC00007C00003C00003C00003C0
C003C0E007C0F00F80FC1F807FFF003FFC0007F000121D7E9C17>I<FFFFFF80FFFFFF80FFFFFF
80001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000191D7F9C1C>I<F00070F000
70F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F000
70F00070F00070F00070F00070F00070F00070F000707800E07800E03C01C03F07C01FFF8007FE
0001F800141D7C9C1D>I<F0000380F00003807800070078000700780007003C000E003C000E00
3E000E001E001C001E001C000F0038000F0038000F003800078070000780700003C0600003C0E0
0003C0E00001E0C00001E1C00001E1C00000F1800000F380000073000000730000007B0000003E
0000003E0000001C0000191D7F9C1C>I<78000E007C001E003C003C001E0038000F0070000F00
F0000781E00003C1C00001C3C00001E7800000F70000007E0000003E0000003C0000003C000000
7E00000077000000E7800001E3800003C1C0000381E0000700F0000F00F8000E0078001C003C00
3C003E0078001F0070000F00F0000F80191D7F9C1C>88 D<0FE03FF07FF8707C603C001C001C01
FC1FFC7FFCF81CF01CE01CF03CF87CFFFC7FFC3F1C0E127E9114>97 D<07F01FF83FFC7C3C780C
F000F000E000E000E000E000F000F000780C7C3C3FFC1FF807E00E127E9112>99
D<07C01FE03FF078787018601CFFFCFFFCFFFCE000E000E0007000700C3C3C3FFC1FF807E00E12
7E9112>101 D<07E7C00FFFC01FFFC03E7C003C3C00381C00381C00381C003C3C003E7C001FF8
003FF0003FE0003800003800003FFC003FFF007FFF80F807C0F003C0E001C0E001C0F003C07C0F
807FFF801FFE0007F800121B7F9115>103 D<E000E000E000E000E000E000E000E000E000E000
E000E03CE078E0F0E1E0E3C0E780EF00FF00FF80FB80F9C0F1E0E0E0E0F0E078E038E03CE01E0F
1D7D9C14>107 D<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0031D
7D9C0A>I<E3F03F00EFFCFFC0FFFDFFC0FC3FC3E0F01F01E0F00F00E0E00E00E0E00E00E0E00E
00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E01B
127D9124>I<E7F0EFF8FFFCF87CF03CF01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE0
1CE01C0E127D9115>I<03F0000FFC001FFE003C0F00780780700380E001C0E001C0E001C0E001
C0E001C0F003C07003807807803C0F001FFE000FFC0003F00012127F9115>I<E3F0EFF8FFF8F8
7CF03CE01EE01EE00EE00EE00EE00EE01EE01EF03CF8FCFFF8EFF0E7E0E000E000E000E000E000
E000E000E0000F1A7D9115>I<E380EF80FF80FE00F800F000F000E000E000E000E000E000E000
E000E000E000E000E00009127D910E>114 D<1FE07FF0FFF0F070E000E000F0007F007FE01FF0
01F800780038C038F078FFF07FF01FC00D127F9110>I<1C001C001C001C001C001C00FFE0FFE0
FFE01C001C001C001C001C001C001C001C001C001C001C001E601FF00FF00FC00C187F970F>I<
E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE03CF07CFFFCFFDC7F1C0E127D
9115>I<E03E0380E03E0380E03E03807037030070770700707707007073070038E38E0038E38E
0038E38E0018E18C001CC1CC001DC1DC001DC1DC000D80D8000F80F8000F80F800078070001912
7F911C>119 D<7003807807003C0E001C1C000E1C0007380003F00001E00001C00001E00003F0
000738000E18000E1C001C0E00380700700380F003C01212809113>I<E007E007700E700E780E
381C381C1C181C380C380E300E7006700760036003C001C001C001800180030003000700FE00FC
00F800101A7F9113>I E /Fg 3 73 df<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFF7FFE7FFE3FFC1FF807E010127D9317>15 D<0001FE000FFF001FFF00701F01C00F0380
0F07000E0E001E1E001C1C00383C0020380000780000780000700000F00006F0000EF0001CF000
3CF0003CF0003CF80078F80078FC00F87E01F07F83F03FFEF01FF8E007E1E00001C00003C00003
800007003E0E00FFF800FFF0001FC00018257E9F1B>71 D<007C00002001FE0000E007FE0001E0
1C3E0001C0381E0003C0701E000380F01E000780F01E000700C01C000F00003C000E00003C001E
00003C001C00003FFFFC00003FFFFC00007FFFB80000780078000078007800007000700000F000
F00000F000F00000E000F00001E000E00001E001E00001C001E00003C001E00003C001E0000380
01E000078001E060078001E0E0070001F1C00E0001FF800C0001FE00000000F80023217F9E26>
I E /Fh 62 123 df<783C783C783C783C381C3018301870386030E0700E0A7F9F17>34
D<787878783830307060E0050A7D9F0D>39 D<00F001E003E003C007800F000F001E001E003C00
3C003C007800780078007800F800F000F000F000F000F000F000F000F000F000F000F000F000F8
0078007800780078003C003C003C001E001E000F000F00078003C003E001E000F00C2E7EA112>
I<F00078007C003C001E000F000F000780078003C003C003C001E001E001E001E001F000F000F0
00F000F000F000F000F000F000F000F000F000F001F001E001E001E001E003C003C003C0078007
800F000F001E003C007C007800F0000C2E7DA112>I<018001C001800180C183E187F99F7DBE1F
F807E007E01FF87DBEF99FE187C1830180018001C0018010147DA117>I<787878783830307060
E0050A7D830D>44 D<FFC0FFC0FFC00A037F8B0F>I<00030003000700060006000E000C000C00
1C0018001800380030003000700060006000E000C000C001C00180018001800380030003000700
060006000E000C000C001C0018001800380030003000700060006000E000C000C000102D7DA117
>47 D<00C001C00FC0FFC0FFC0F3C003C003C003C003C003C003C003C003C003C003C003C003C0
03C003C003C003C003C003C003C003C003C003C0FFFEFFFEFFFE0F1F7C9E17>49
D<07F0001FFC003FFE007C3F00701F80F00F80E007C0E003C0C003C04003C00003C00003C00007
C0000780000780000F00001F00003E00007C0000F80001F00003E00007C0000F80001F00003E00
007C0000F80000FFFFC0FFFFC0FFFFC0121F7E9E17>I<07F0001FFC003FFE007E1F00780F8070
0780200780000780000780000780000F00001F00003E0003FC0003F80003FC00001F00000F8000
07800007C00003C00003C00003C00003C08003C0C007C0E00780F00F807C1F003FFE001FFC0007
F00012207E9E17>I<003E00003E00005E00005E0000DE0001DE00019E00039E00039E00079E00
071E000F1E000E1E001E1E003C1E003C1E00781E00781E00F01E00FFFFF0FFFFF0FFFFF0001E00
001E00001E00001E00001E00001E00001E00001E00141E7F9D17>I<F0F0F0F000000000000000
0000000000F0F0F0F004147C930D>58 D<001F0000001F0000003F8000003B8000003B8000007B
C0000073C0000071C00000F1E00000E1E00000E0E00001E0F00001E0F00001C0F00003C0780003
C078000380780007803C0007803C0007003C000FFFFE000FFFFE000FFFFE001E000F001E000F00
3C000F803C0007803C000780780007C0780003C0780003C0F00003E01B207F9F1E>65
D<FFF800FFFF00FFFF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F003
C0F01F80FFFF00FFFF00FFFF80F007E0F001E0F000F0F00078F00078F00078F00078F00078F000
78F000F0F001F0F007E0FFFFC0FFFF80FFFC0015207B9F1E>I<003FE000FFF803FFFC07F07C0F
C01C1F800C1F00003E00003C00007C0000780000780000F80000F00000F00000F00000F00000F0
0000F00000F00000F00000F800007800007800007C00003C00003E00001F00001F80060FC00E07
F03E03FFFC00FFF8003FE017227DA01D>I<FFFC00FFFF80FFFFC0F007E0F001F0F000F8F00078
F0003CF0003CF0001EF0001EF0000EF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000F
F0000FF0001EF0001EF0001EF0003CF0007CF000F8F001F0F007E0FFFFC0FFFF80FFFC0018207B
9F21>I<FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000FFFF80FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000FFFFE0FFFFE0FFFFE013207B9F1B>I<FFFFC0FFFFC0FFFFC0F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF00FFFF00FF
FF00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F0000012207B9F1A>I<003FE000FFFC03FFFE07F07E0FC00E1F80061F00003E0000
3C00007C0000780000780000F80000F00000F00000F00000F00000F00000F00000F003FEF003FE
F803FE78001E78001E7C001E3C001E3E001E1F001E1F801E0FC01E07F03E03FFFE00FFFC003FE0
17227DA01E>I<F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F000
78F00078F00078F00078FFFFF8FFFFF8FFFFF8F00078F00078F00078F00078F00078F00078F000
78F00078F00078F00078F00078F00078F00078F00078F0007815207B9F20>I<F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207C9F0D>I<F0003EF0007CF0
00F8F001F0F003E0F007C0F00780F00F00F01F00F03E00F07C00F0F800F1F000F3F800F3F800F7
FC00FFBC00FF1E00FE1F00FC0F00F80780F00780F003C0F003E0F001E0F000F0F000F8F00078F0
003CF0003CF0001EF0001F18207B9F20>75 D<F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80FFFF801120
7B9F19>I<F80001F8FC0003F8FC0003F8F4000378F6000778F6000778F6000778F7000F78F300
0E78F3000E78F3801E78F3801E78F1801C78F1C03C78F1C03C78F1C03C78F0C03878F0E07878F0
E07878F0607078F070F078F070F078F030E078F039E078F039E078F019C078F019C078F019C078
F00F8078F00F8078F00F8078F00000781D207B9F28>I<FC0078FE0078FE0078F60078F70078F7
0078F38078F38078F38078F3C078F1C078F1E078F1E078F0E078F0F078F07078F07078F07878F0
3878F03C78F03C78F01C78F01E78F00E78F00E78F00E78F00778F00778F00378F003F8F003F8F0
01F815207B9F20>I<003F000000FFC00003FFF00007E1F8000F807C001F003E001E001E003C00
0F003C000F00780007807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F0
0003C0F00003C0F00003C0F00003C0F80007C07800078078000780780007803C000F003C000F00
1E001E001F003E000F807C0007E1F80003FFF00000FFC000003F00001A227DA021>I<FFF800FF
FF00FFFF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F001E0F0
03E0F00FC0FFFF80FFFF00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F0000014207B9F1D>I<FFF800FFFF00FFFF80F007C0F003E0F001E0
F000F0F000F0F000F0F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFF800F03C00F01E00
F01E00F00F00F00F00F00780F00780F003C0F001C0F001E0F000F0F000F0F00078F00078F0003C
16207B9F1D>82 D<01FE0007FF801FFFC01F07C03E01C03C00C07C000078000078000078000078
00007C00003E00003F00001FE0001FFC000FFF0003FF80003F80000FC00007C00003E00001E000
01E00001E00001E00001E0C003E0E003C0F007C0FE0F807FFF001FFE0007F80013227EA019>I<
FFFFFFC0FFFFFFC0FFFFFFC0001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E00001A207E9F1F>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03C03C01F0F800FFF0007FE0001F800
14217B9F1F>I<F0007C000FF0007E000FF0007E000F78006E000E7800EE001E7800E7001E7800
E7001E3C00E7003C3C01E7803C3C01C7803C3C01C3803C1E01C380781E03C3C0781E0383C0780E
0381C0700F0381C0F00F0781E0F00F0701E0F0070700E0E0078700E1E0078F00F1E0078E00F1E0
038E0071C0038E0071C003CE0073C001DC007B8001DC003B8001DC003B8001DC003B8000F8003F
0000F8001F0000F8001F0028207F9F2B>87 D<780007807C000F003E001F001E001E000F003C00
0F807C000780780003C0F00003E1F00001F1E00000F3C000007FC000007F8000003F0000001F00
00001E0000003F0000007F8000007FC00000F3C00001F1E00001E0F00003C0F80007C078000780
3C000F003E001F001E001E000F003C000F807C0007C0780003C0F00003E01B207F9F1E>I<F800
00F87C0001F03C0001E03E0003E01F0003C00F0007800F800F8007C00F0003C01F0003E01E0001
F03C0000F07C00007878000078F000003CF000001DE000001FE000000FC0000007800000078000
000780000007800000078000000780000007800000078000000780000007800000078000000780
0000078000000780001D20809F1E>I<FFFFF8FFFFF8FFFFF80000F00001F00001E00003C00007
C0000780000F80000F00001E00003E00003C00007C0000780000F00001F00001E00003E00003C0
000780000F80000F00001F00001E00003C00007C0000780000FFFFFCFFFFFCFFFFFC16207D9F1C
>I<381C3018703860306030E070F078F078F078F0780E0A799F17>92 D<03C007E00FF01FF83E
7C7C3EF81FF00F10087D9F17>94 D<0FF03FFC7FFE783E601F000F000F000F007F0FFF3FFF7E0F
F80FF00FF00FF81FFC3F7FFF7FFF3F8F10147E9316>97 D<F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F1F800F7FC00FFFE00FE3F00F81F00F00F00
F00F80F00780F00780F00780F00780F00780F00780F00F80F00F00F81F00FC7E00FFFE00F7FC00
F3F00011207D9F17>I<03F80FFC1FFE3E1E7C067800F800F000F000F000F000F000F000F80078
007C033E0F1FFF0FFE03F810147E9314>I<000780000780000780000780000780000780000780
00078000078000078000078000078007E7801FFF803FFF803F1F807C0F80780780F80780F00780
F00780F00780F00780F00780F00780F80780780F807C0F803E3F803FFF801FF78007C78011207E
9F17>I<03F0000FFC001FFE003E1F003C0700780700700380FFFF80FFFF80FFFF80F00000F000
00F000007000007800003C03003E0F001FFF0007FE0001F80011147F9314>I<00FE01FE03FE07
C00F800F000F000F000F000F000F000F00FFF0FFF0FFF00F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F20809F0E>I<07F1F00FFFF01FFFF03E3E007C1F
00780F00780F00780F00780F00780F007C1F003E3E003FFC003FF80037F0003000003800003FFE
003FFFC03FFFE07FFFE0F803F0F001F0F000F0F000F0F801F07E07E03FFFC01FFF8003FC00141E
7F9317>I<F000F000F000F000F000F000F000F000F000F000F000F000F1F8F7FEFFFEFE3FFC1F
F80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10207D9F17>I<F0F0
F0F00000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F01F00F01E
00F03C00F07800F0F000F1E000F3C000F78000FFC000FFC000FFE000F9F000F8F000F0F800F07C
00F07C00F03E00F01E00F01F00F00F8011207D9F16>107 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F1FC0FE0F7FF3FF8FFFF7FF8FE1F
F0FCFC0FE07CF807C03CF807C03CF007803CF007803CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803CF007803CF007803CF007803CF007803C1E147D9327>I<F1F8F7FEFF
FEFE3FFC1FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10147D93
17>I<01F80007FE001FFF803F0FC03C03C07801E07801E0F000F0F000F0F000F0F000F0F000F0
F000F07801E07801E03C03C03F0FC01FFF8007FE0001F80014147F9317>I<F1F800F7FC00FFFE
00FE3F00F81F00F00F00F00F80F00780F00780F00780F00780F00780F00780F00F80F00F00F81F
00FC7E00FFFE00F7FC00F3F000F00000F00000F00000F00000F00000F00000F00000F00000F000
00111D7D9317>I<F1E0F3E0F7E0FF80FE00FC00F800F800F000F000F000F000F000F000F000F0
00F000F000F000F0000B147D9310>114 D<0FF03FFC3FFC7C1C780078007C007E003FE03FF01F
F803FC007C003C003CC03CF87CFFF87FF01FE00E147F9311>I<1E001E001E001E001E001E00FF
F0FFF0FFF01E001E001E001E001E001E001E001E001E001E001E001E001E001F601FF00FF00FC0
0C1A7F9910>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01F
F87FFFFF7FEF3F8F10147D9317>I<F003C0F003C07803807807807807803C0F003C0F003C0F00
1E0E001E1E001E1E000F1C000F3C000F3C0007380007380007B80003F00003F00001E00012147F
9315>I<F01F00F0F01F80F0F01F80F0781B81E0783B81E0783BC1E07839C1E03C31C3C03C71C3
C03C71E3C01C70E3801E60E7801E60E7801EE0E7800EE077000EC077000EC0770007C07E0007C0
3E0007803E001C147F931F>I<7801E07C03C03E07801E0F000F0F00079E0003FC0003F80001F8
0000F00001F00001F80003FC00079E000F0F000E0F001E07803C03C07801E0F801F01414809315
>I<F003C0F003C07807807807807C07803C0F003C0F001E0F001E1E000E1E000F1C000F1C0007
3C0007380003B80003B80003B00001F00001F00000E00000E00001C00001C00001C00003800007
80007F00007E00007C0000121D7F9315>I<7FFF7FFF7FFF003E003C007800F800F001E003E007
C007800F001F001E003C007C00FFFFFFFFFFFF10147F9314>I E /Fi 50
122 df<00007800FC7801FC7803FC7803CC000780000780000780000780000780000780000780
00078000078000FFFC78FFFC78FFFC780780780780780780780780780780780780780780780780
78078078078078078078078078078078078078078078078078078078078078078078152480A31A
>12 D<0000C018000000C018000000C018000001C0380000018030000001803000000180300000
03807000000300600000030060000003006000000700E000000600C000000600C000000600C000
000E01C000000C018000FFFFFFFFC0FFFFFFFFC000180300000018030000001803000000380700
000030060000003006000000300600000030060000FFFFFFFFC0FFFFFFFFC000600C000000E01C
000000C018000000C018000000C018000001C03800000180300000018030000001803000000380
7000000300600000030060000003006000000700E000000600C000000600C00000222D7DA229>
35 D<00F001F001E003C0078007800F001E001E001E003C003C003C007800780078007800F800
F000F000F000F000F000F000F000F000F000F000F000F000F000F000F80078007800780078003C
003C003C001E001E001E000F000780078003C001E001F000F00C327DA413>40
D<F000F80078003C001E001E000F0007800780078003C003C003C001E001E001E001E001F000F0
00F000F000F000F000F000F000F000F000F000F000F000F000F001F001E001E001E001E003C003
C003C00780078007800F001E001E003C007800F800F0000C327DA413>I<FFE0FFE0FFE00B037F
8C10>45 D<F0F0F0F004047B830E>I<01F00007FC000FFE001F1F003C07803C07807803C07803
C07803C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001
E0F001E0F001E0F001E0F001E07803C07803C07803C07803C03C07803C07801F1F000FFE0007FC
0001F00013237EA118>48 D<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003C003C003
C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0FFFFFFFF
FFFF10227CA118>I<07F8000FFE001FFF003C3F80780F807807C0F003C0F003E0F001E06001E0
2001E00001E00001E00003E00003C00003C00007C0000F80000F00001E00003C00007C0000F000
01E00003C0000780000F80001F00003E00007C0000F80000FFFFE0FFFFE0FFFFE013227EA118>
I<03F8000FFE001FFF003E1F807C07807007C07003C02003C00003C00003C00003C00007800007
80000F80003F0003FE0003FC0003FE00001F000007800003C00003C00001E00001E00001E00001
E00001E08001E0C003E0E003C0F807C07E1F803FFF000FFE0003F80013237EA118>I<001F0000
1F00002F00002F00006F0000EF0000CF0001CF0001CF00038F00038F00078F00070F000F0F000E
0F001E0F003C0F003C0F00780F00780F00F00F00FFFFF8FFFFF8FFFFF8000F00000F00000F0000
0F00000F00000F00000F00000F00000F0015217FA018>I<3FFF803FFF803FFF803C00003C0000
3C00003C00003C00003C00003C00003C00003C00003CF8003FFE003FFF003F0F803E07C03C03C0
3803C00001E00001E00001E00001E00001E00001E00001E04003E0E003C0F007C0F80F807E1F80
3FFF001FFC0007F00013227EA018>I<007E0001FF0003FF0007C3000F80001F00003E00003C00
003C000078000078000078FC00F3FE00FFFF00FF1F80FE0780FC07C0F803C0F803E0F001E0F001
E0F001E0F001E0F001E0F001E07801E07801E07803E07C03C03C07C03E07801F1F000FFF0007FE
0001F80013237EA118>I<FFFFE0FFFFE0FFFFE00001E00003C0000380000780000F00000E0000
1E00001C00003C0000380000780000780000F00000F00000E00001E00001E00001E00003C00003
C00003C00003C00003C00007800007800007800007800007800007800007800013217EA018>I<
01F00007FC000FFE001E0F003C07803C07807803C07803C07803C07803C07803C03803803C0780
1E0F000F1E0007FC0003F8000FFE001E0F003C07807803C07803C0F001E0F001E0F001E0F001E0
F001E0F001E07803C07803C03C07803E0F801FFF0007FC0001F00013237EA118>I<03F80007FC
001FFE001F1F003E0F807C07807803C0F803C0F003C0F003C0F001E0F001E0F001E0F001E0F001
E0F001E0F803E07803E07C07E03C0FE03F1FE01FFFE00FF9E007E3C00003C00003C00007C00007
80000F80000F00101E003C7E003FFC001FF0000FE00013237EA118>I<001F0000001F0000003F
8000003F8000003B8000007BC0000073C0000071C00000F1E00000F1E00000E0E00001E0F00001
E0F00001C0F00003C0780003C078000380780007803C0007803C0007003C000F001E000F001E00
0FFFFE001FFFFF001FFFFF001C000F003C0007803C00078038000780780003C0780003C0700003
C0F00001E0F00001E0E00001E01B237EA220>65 D<FFFC00FFFF80FFFFC0F007F0F001F0F00078
F0003CF0003CF0003CF0003CF0003CF00038F00078F000F0F003E0FFFFC0FFFF00FFFFC0F00FE0
F001F8F00078F0003CF0001CF0001EF0001EF0001EF0001EF0001EF0003CF0007CF000F8F003F0
FFFFE0FFFFC0FFFE0017237BA220>I<001FF000007FFE0001FFFF0003F83F0007E00F000FC007
001F0002001F0000003E0000003C0000007C0000007800000078000000F8000000F0000000F000
0000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F80000007800000078
0000007C0000003C0000003E0000001F0000001F0000800FC0018007E0078003F81F8001FFFF00
007FFE00001FF00019257DA31F>I<FFFE0000FFFFC000FFFFE000F003F000F000F800F0007C00
F0003E00F0001E00F0000F00F0000F00F0000780F0000780F0000780F00003C0F00003C0F00003
C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F0000380F0000780F0000780F000
0780F0000F00F0001F00F0001E00F0003C00F000FC00F003F800FFFFE000FFFFC000FFFE00001A
237BA223>I<FFFFF0FFFFF0FFFFF0F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000FFFFE0FFFFE0FFFFE0F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000FFFFF8FFFFF8FFFFF815237BA21D>
I<FFFFF0FFFFF0FFFFF0F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F0000014237BA21C>I<000FF800
007FFF0001FFFF8003F81F8007E007800FC003800F8001001F0000003E0000003C0000007C0000
007800000078000000F8000000F0000000F0000000F0000000F0000000F0000000F0000000F000
FFC0F000FFC0F000FFC0F80003C0780003C0780003C07C0003C03C0003C03E0003C01F0003C00F
8003C00FC003C007E003C003F81FC001FFFFC0007FFF80000FF8001A257DA321>I<F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237CA20D>73
D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0FFFFC012237BA21A>76
D<FC00007EFE0000FEFE0000FEFE0000FEF70001DEF70001DEF70001DEF78003DEF380039EF380
039EF3C0079EF3C0079EF1C0071EF1C0071EF1E00F1EF0E00E1EF0E00E1EF0F01E1EF0F01E1EF0
701C1EF0783C1EF0783C1EF038381EF03C781EF03C781EF01C701EF01C701EF01EF01EF00EE01E
F00EE01EF00FE01EF007C01EF007C01EF007C01EF000001E1F237BA22A>I<FC001EFE001EFE00
1EFE001EF7001EF7001EF3801EF3801EF3C01EF1C01EF1C01EF1E01EF0E01EF0F01EF0F01EF078
1EF0781EF0381EF03C1EF03C1EF01E1EF01E1EF00E1EF00F1EF0071EF0071EF0079EF0039EF003
9EF001DEF001DEF000FEF000FEF000FEF0007E17237BA222>I<001FC000007FF00001FFFC0003
F07E0007C01F000F800F801F0007C01E0003C03C0001E03C0001E0780000F0780000F0780000F0
70000070F0000078F0000078F0000078F0000078F0000078F0000078F0000078F0000078F00000
78780000F0780000F0780000F07C0001F03C0001E03E0003E01E0003C01F0007C00F800F8007C0
1F0003F07E0001FFFC00007FF000001FC0001D257DA324>I<FFFE00FFFF80FFFFC0F003E0F000
F0F00078F00078F0003CF0003CF0003CF0003CF0003CF0003CF00078F00078F000F0F003E0FFFF
C0FFFF80FFFE00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F0000016237BA21F>I<FFFC00FFFF80FFFFC0F003E0F000F0F00078F0
0038F0003CF0003CF0003CF0003CF0003CF00038F00078F000F0F003E0FFFFC0FFFF80FFFE00F0
1E00F00F00F00700F00780F00380F003C0F001E0F001E0F000F0F000F0F00078F00038F0003CF0
001EF0001EF0000F18237BA21F>82 D<01FF0007FFE00FFFF01F83F03E00F03C00707C00207800
007800007800007800007C00007C00003E00003F00001FE0001FFC0007FF0003FFC0007FE00007
E00003F00001F00000F80000F8000078000078000078400078C000F8E000F0F001F0FC03E07F07
E03FFFC00FFF8001FC0015257EA31B>I<07F01FFC3FFE3C3E301F200F000F000F000F03FF1FFF
3FFF7F0FFC0FF80FF00FF00FF81FFC3F7FFF7FFF3FCF10167E9517>97 D<F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F3F800FFFC00FFFE00
FE3F00F80F80F00F80F00780F007C0F003C0F003C0F003C0F003C0F003C0F003C0F007C0F00780
F00F80F81F00FC3F00FFFE00FFFC00F3F00012237CA219>I<01FC0007FF001FFF803F07803E03
807C0080780000F80000F00000F00000F00000F00000F00000F00000F800007800007C00C03E01
C03F07C01FFFC007FF8001FC0012167E9516>I<0003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00003C00003C00003C003F3C00FFFC01FFFC03F0FC07E07C07C03C078
03C0F803C0F003C0F003C0F003C0F003C0F003C0F003C0F803C07803C07C07C07C07C03F1FC01F
FFC00FFFC007F3C012237EA219>I<03F00007FC001FFE003E0F003C0780780380780380F001C0
FFFFC0FFFFC0FFFFC0F00000F00000F000007000007800007800003C01801F07800FFF8007FF00
01FC0012167E9516>I<007F00FF01FF03E303C007800780078007800780078007800780FFF8FF
F8FFF8078007800780078007800780078007800780078007800780078007800780078007800780
0780102380A20F>I<F0F0F0F0000000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F004237DA20B>105 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F004237DA20B>108 D<F1FC0FE0F7FE3FF0FFFF7FF8FE1FF0FCFC0FE07C
F807C03CF807C03CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF00780
3CF007803CF007803CF007803CF007803CF007803CF007803CF007803C1E167C9529>I<F1F8F7
FEFFFEFE3FFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00F10167C9519>I<01FC0007FF000FFF801F07C03C01E07800F07800F0700070F00078F00078
F00078F00078F00078F000787800F07800F07C01F03E03E01F07C00FFF8007FF0001FC0015167F
9518>I<F3F800FFFC00FFFE00FE3F00F81F80F00F80F00780F007C0F003C0F003C0F003C0F003
C0F003C0F003C0F007C0F00780F00F80F81F00FC3F00FFFE00FFFC00F3F000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F0000012207C9519>I<F1E0F7E0FFE0FFE0FF80
FE00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F000F0000B167C9511
>114 D<07F81FFE3FFF7C1F7807780178007C007F003FF01FFC0FFE01FE003F001F000FC00FE0
1FFC3FFFFE7FFC0FF010167F9513>I<0F000F000F000F000F000F00FFF8FFF8FFF80F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F080F9C0FFC07F803E00E1C7F9B12>
I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01FF01FF87F
FFFF7FFF3F8F10167C9519>I<F001E0F001E07803C07803C07803C03C07803C07803C07801E07
001E0F001E0F000F0E000F1E000F1E00071C00079C0007BC0003B80003B80003F80001F00001F0
0013167F9516>I<7801F07C01E03E03C01E07C00F0780078F0007DE0003FC0001FC0000F80000
700000F80001FC0003DC00039E00078F000F07801E07801E03C03C01E07800F0F800F815168095
16>120 D<F001E0F001E07803C07803C07C03C03C07803C07801E07801E07001E0F000F0F000F
0E00071E00079E00039C00039C00039C0001980001D80000F80000F00000F00000F00000E00000
E00001E00001C00001C0006380007F80007F00007E000013207F9516>I
E /Fj 71 124 df<003F1F8001FFFFC003C3F3C00783E3C00F03E3C00E01C0000E01C0000E01C0
000E01C0000E01C0000E01C000FFFFFC00FFFFFC000E01C0000E01C0000E01C0000E01C0000E01
C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F
87FC007F87FC001A1D809C18>11 D<003F0001FF8003C3C00783C00F03C00E03C00E00000E0000
0E00000E00000E0000FFFFC0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C07F87F87F87F8151D809C17>I<003F83F00001FFDF
F80003E1FC3C000781F83C000F01F03C000E01E03C000E00E000000E00E000000E00E000000E00
E000000E00E00000FFFFFFFC00FFFFFFFC000E00E01C000E00E01C000E00E01C000E00E01C000E
00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00
0E00E01C000E00E01C007FC7FCFF807FC7FCFF80211D809C23>14 D<70F8F8F8F8F8F8F8F87070
7070707070707070700000000070F8F8F870051D7D9C0C>33 D<7070F8F8FCFCFCFC7C7C0C0C0C
0C1C1C181838387070F0F060600E0D7F9C15>I<70F8FCFC7C0C0C1C183870F060060D7D9C0C>
39 D<01C00380038007000E000C001C001800380038007000700070007000E000E000E000E000
E000E000E000E000E000E000E000E000E000E00070007000700070003800380018001C000C000E
0007000380038001C00A2A7D9E10>I<E0007000700038001C000C000E00060007000700038003
800380038001C001C001C001C001C001C001C001C001C001C001C001C001C001C0038003800380
03800700070006000E000C001C00380070007000E0000A2A7E9E10>I<018001C0018001806186
F99F7DBE1FF807E007E01FF87DBEF99F61860180018001C0018010127E9E15>I<70F8F8F87818
1818383070E060050D7D840C>44 D<FFE0FFE0FFE00B0380890E>I<70F8F8F87005057D840C>I<
07E00FF01C38381C781E700E700EF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
0F700E700E781E381C1C380FF007E0101B7E9A15>48 D<030007003F00FF00C700070007000700
07000700070007000700070007000700070007000700070007000700070007000700FFF8FFF80D
1B7C9A15>I<0FE03FF878FC603EF01EF81FF80FF80F700F000F001F001E003E003C007800F001
E001C0038007000E031C0338037006FFFEFFFEFFFE101B7E9A15>I<001C00001C00003C00007C
00007C0000DC0001DC00039C00031C00071C000E1C000C1C00181C00381C00301C00601C00E01C
00FFFFC0FFFFC0001C00001C00001C00001C00001C00001C0001FFC001FFC0121B7F9A15>52
D<01F807FC0F8E1E1E3C1E381E781E78007000F080F7F8FFFCFC1CF81EF80FF00FF00FF00FF00F
F00F700F700F781E381E1E3C0FF807E0101B7E9A15>54 D<70F8F8F870000000000000000070F8
F8F87005127D910C>58 D<70F8F8F870000000000000000070F8F8F878181818383070E060051A
7D910C>I<1FE03FF8787CE01EF01EF01EF01E603E007C00F801F001E003C00380030003000300
030003000300000000000000000007000F800F800F8007000F1D7E9C14>63
D<00060000000F0000000F0000000F0000001F8000001F8000001F8000003FC0000033C0000033
C0000073E0000061E0000061E00000E1F00000C0F00000C0F00001C0F8000180780001FFF80003
FFFC0003003C0003003C0007003E0006001E0006001E001F001F00FFC0FFF0FFC0FFF01C1C7F9B
1F>65 D<FFFFC0FFFFF00F00F80F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00
780FFFF00FFFE00F00F80F003C0F001E0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F00
3E0F007CFFFFF8FFFFC0181C7E9B1D>I<003FC18001FFF18003F07B800FC01F801F000F801E00
07803C0003807C0003807800038078000180F0000180F0000000F0000000F0000000F0000000F0
000000F0000000F000000078000180780001807C0001803C0003801E0003001F0007000FC00E00
03F03C0001FFF000003FC000191C7E9B1E>I<FFFFFCFFFFFC0F007C0F001C0F000C0F000E0F00
060F03060F03060F03060F03000F07000FFF000FFF000F07000F03000F03000F03030F03030F00
030F00060F00060F00060F000E0F001E0F007CFFFFFCFFFFFC181C7E9B1C>69
D<FFFFF8FFFFF80F00780F00380F00180F001C0F000C0F000C0F030C0F030C0F03000F03000F07
000FFF000FFF000F07000F03000F03000F03000F03000F00000F00000F00000F00000F00000F00
00FFF800FFF800161C7E9B1B>I<003FC18001FFF18003F07B800FC01F801F000F801E0007803C
0003807C0003807800038078000180F0000180F0000000F0000000F0000000F0000000F0000000
F000FFF0F000FFF078000780780007807C0007803C0007801E0007801F0007800FC00F8003F03F
8001FFFB80003FE1801C1C7E9B21>I<FFF3FFC0FFF3FFC00F003C000F003C000F003C000F003C
000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC000FFFFC000F003C000F00
3C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F
003C00FFF3FFC0FFF3FFC01A1C7E9B1F>I<FFF0FFF00F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF0FFF00C1C7F9B
0F>I<1FFF1FFF0078007800780078007800780078007800780078007800780078007800780078
007800780078F878F878F878F8F8F1F07FE01F80101C7F9B15>I<FFF07FE0FFF07FE00F003E00
0F003C000F0078000F0070000F00E0000F01C0000F0380000F0700000F0E00000F1E00000F3F00
000F7F80000FFF80000FE7C0000FC3C0000F83E0000F01F0000F00F0000F00F8000F007C000F00
7C000F003E000F001E000F001F00FFF07FF0FFF07FF01C1C7E9B20>I<FFF800FFF8000F00000F
00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
00000F00180F00180F00180F00180F00380F00300F00700F00F00F01F0FFFFF0FFFFF0151C7E9B
1A>I<FF8000FF80FFC001FF800FC001F8000FC001F8000DE00378000DE00378000DE00378000C
F00678000CF00678000CF00678000C780C78000C780C78000C780C78000C3C1878000C3C187800
0C3C1878000C1E3078000C1E3078000C1E3078000C0F6078000C0F6078000C0F6078000C07C078
000C07C078000C07C078001E03807800FFC387FF80FFC387FF80211C7E9B26>I<FF00FFC0FF80
FFC00FC01E000FC00C000FE00C000DE00C000DF00C000CF80C000CF80C000C7C0C000C3C0C000C
3E0C000C1E0C000C1F0C000C0F8C000C078C000C07CC000C03CC000C03EC000C01FC000C00FC00
0C00FC000C007C000C007C000C003C001E001C00FFC01C00FFC00C001A1C7E9B1F>I<003F8000
01FFF00003E0F80007001C000E000E001C0007003C00078038000380780003C0700001C0F00001
E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0780003C0780003C03800
03803C0007801E000F000E000E0007803C0003E0F80001FFF000003F80001B1C7E9B20>I<FFFF
80FFFFE00F00F00F00380F003C0F001E0F001E0F001E0F001E0F001E0F001E0F003C0F00380F00
F00FFFE00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000FFF0
00FFF000171C7E9B1C>I<FFFF0000FFFFE0000F00F0000F0038000F003C000F001E000F001E00
0F001E000F001E000F001E000F003C000F0038000F00F0000FFFE0000FFFC0000F03F0000F00F0
000F00F8000F0078000F0078000F0078000F0078000F0078000F0078000F007C300F007E70FFF0
3FE0FFF00FC01C1C7E9B1F>82 D<07F1801FFD803C1F80700780700380E00380E00180E00180F0
0000F80000FE00007FE0003FFC001FFE000FFF0000FF80000F800007C00003C00001C0C001C0C0
01C0E001C0E00380F00780FE0F00DFFE00C7F800121C7E9B17>I<7FFFFFC07FFFFFC0780F03C0
700F01C0600F00C0E00F00E0C00F0060C00F0060C00F0060C00F0060000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F000003FFFC0003FFFC001B1C7F9B1E>I<FFF0FFC0FFF0FFC00F00
1E000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F
000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F001C00
078018000780380003C0700001F0F00000FFC000003F80001A1C7E9B1F>I<FFE01FF0FFE01FF0
1F0007800F0003000F800700078006000780060007C00E0003C00C0003C00C0001E0180001E018
0001E0180000F0300000F0300000F870000078600000786000007CE000003CC000003CC000001F
8000001F8000001F8000000F0000000F0000000F0000000600001C1C7F9B1F>I<FFE0FFE1FFFF
E0FFE1FF1F001E007C0F001E00380F003F00300F003F003007803F006007806780600780678060
07C06780E003C0C3C0C003C0C3C0C003C0C3C0C001E1C3E18001E181E18001E181E18000F181E3
0000F300F30000F300F30000FB00F700007E007E00007E007E00007E007E00003E007C00003C00
3C00003C003C00001C0038000018001800281C7F9B2B>I<FFF00FFCFFF00FFC0FC003C007C003
8003C0030003E0060001F0060000F00C0000F81C0000781800007C3800003C3000001E6000001F
6000000FC000000FC0000007800000078000000780000007800000078000000780000007800000
0780000007800000078000007FF800007FF8001E1C809B1F>89 D<18183C3C383870706060E0E0
C0C0C0C0F8F8FCFCFCFC7C7C38380E0D7B9C15>92 D<183C387060E0C0C0F8FCFC7C38060D7E9C
0C>96 D<1FE0003FF8003C3C003C1E00180E00000E00001E0007FE003FFE007E0E00F80E00F80E
00F00E60F00E60F81E607C7E607FFFC01FC78013127F9115>I<FC0000FC00001C00001C00001C
00001C00001C00001C00001C00001C00001C00001CFE001FFF801F87C01E03E01C01E01C00F01C
00F01C00F01C00F01C00F01C00F01C00F01C01E01E01E01E03C01F87C01BFF8018FE00141D7F9C
17>I<07F80FFC3E3C3C3C78187800F000F000F000F000F000F000780078063C0E3F1C0FF807F0
0F127F9112>I<001F80001F800003800003800003800003800003800003800003800003800003
8007F3801FFF803E1F807C0780780380F80380F00380F00380F00380F00380F00380F00380F003
807807807C0F803E1F801FFBF007E3F0141D7F9C17>I<07E01FF83E7C781C781EF01EFFFEFFFE
F000F000F000F000780078063C0E3F1C0FF807F00F127F9112>I<00FC03FE079E071E0F1E0E00
0E000E000E000E000E00FFE0FFE00E000E000E000E000E000E000E000E000E000E000E000E000E
000E007FE07FE00F1D809C0D>I<07E7C01FFFC03C3DC0781E00781E00781E00781E00781E0078
1E003C3C003FF80037E0007000007000007800003FFC003FFF007FFF807807C0F003C0E001C0E0
01C0F003C0F807C07C0F801FFE0007F800121B7F9115>I<FC0000FC00001C00001C00001C0000
1C00001C00001C00001C00001C00001C00001CFE001DFF001F8F801F07801E03801C03801C0380
1C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0FF9FF0141D7F9C17>
I<3C007C007C007C003C00000000000000000000000000FC00FC001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C00FF80FF80091D7F9C0C>I<01C003E003E003E001C00000
000000000000000000000FE00FE000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E0F0E0F1E0F3C0FF807E000B25839C0D>I<FC0000FC00001C0000
1C00001C00001C00001C00001C00001C00001C00001C00001C7FC01C7FC01C3E001C3C001C7800
1CF0001DE0001FE0001FF0001FF0001E78001C7C001C3C001C1E001C1E001C0F00FF9FE0FF9FE0
131D7F9C16>I<FC00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C00FF80FF80091D7F9C0C>I<FC7F07F000FD
FF9FF8001F87F87C001F03F03C001E01E01C001C01C01C001C01C01C001C01C01C001C01C01C00
1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF
80FF8FF8FF8021127F9124>I<FCFE00FDFF001F8F801F07801E03801C03801C03801C03801C03
801C03801C03801C03801C03801C03801C03801C0380FF9FF0FF9FF014127F9117>I<03F0000F
FC001E1E00380700780780700380F003C0F003C0F003C0F003C0F003C0F003C070038078078038
07001E1E000FFC0003F00012127F9115>I<FCFE00FFFF801F87C01E03E01C01E01C01F01C00F0
1C00F01C00F01C00F01C00F01C00F01C01E01E01E01E03C01F8FC01FFF801CFE001C00001C0000
1C00001C00001C00001C0000FF8000FF8000141A7F9117>I<07F1801FF9803F1F803C0F807807
80780380F00380F00380F00380F00380F00380F00380F803807807807C0F803E1F801FFB8007E3
80000380000380000380000380000380000380001FF0001FF0141A7F9116>I<FDF0FFF81F781E
781E301C001C001C001C001C001C001C001C001C001C001C00FFC0FFC00D127F9110>I<1FB07F
F0F0F0E070E030F030F8007FC07FE01FF000F8C078C038E038F078F8F0FFF0CFC00D127F9110>
I<0C000C000C000C000C001C001C003C00FFE0FFE01C001C001C001C001C001C001C001C001C30
1C301C301C301C301E700FE007C00C1A7F9910>I<FC1F80FC1F801C03801C03801C03801C0380
1C03801C03801C03801C03801C03801C03801C03801C07801C0F801E1F800FFFF007F3F014127F
9117>I<FF0FE0FF0FE01C07801C07000E06000E06000E0600070C00070C00071C000398000398
0003F80001F00001F00000E00000E00000E00013127F9116>I<FF3FCFE0FF3FCFE03C0F07801C
0F03001C1F03000E1B06000E1B86000E1B86000E318E000731CC000731CC000760CC0003E0F800
03E0F80003E0F80001C0700001C0700001C070001B127F911E>I<7F8FF07F8FF00F0F80070F00
038E0001DC0001D80000F00000700000780000F80001DC00038E00030E000707001F0780FF8FF8
FF8FF81512809116>I<FF0FE0FF0FE01C07801C07000E06000E06000E0600070C00070C00071C
0003980003980003F80001F00001F00000E00000E00000E00000C00000C00000C000F18000F180
00C700007E00003C0000131A7F9116>I<7FFC7FFC783C707860F061E061E063C00780078C0F0C
1E0C1E1C3C187818F078FFF8FFF80E127F9112>I<FFFFF0FFFFF01402808B15>I
E /Fk 8 118 df<7CFEFEFEFEFE7C000000007CFEFEFEFEFE7C07127D910D>58
D<FFFFF800FFFFFF000FC01FC00FC007E00FC003F00FC001F80FC001F80FC000FC0FC000FC0FC0
00FC0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FC0F
C000FC0FC000FC0FC001F80FC001F80FC003F00FC007E00FC01FC0FFFFFF00FFFFF8001F1C7E9B
25>68 D<03FC001FFF003F1F007E1F007E1F00FC0E00FC0000FC0000FC0000FC0000FC0000FC00
00FC00007E01807F03803F87001FFE0003F80011127E9115>99 D<1E003F007F007F007F003F00
1E0000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F
001F001F00FFE0FFE00B1E7F9D0E>105 D<FF1FE0FF7FF01FF1F81FC0F81F80F81F00F81F00F8
1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>
110 D<01FC000FFF801F07C03E03E07C01F07C01F0FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8
7C01F07C01F03E03E01F07C00FFF8001FC0015127F9118>I<1FF87FF87078E018E018F000FF80
FFF07FF83FF80FFC007CC03CE01CE01CF878FFF8CFE00E127E9113>115
D<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F01F81F01F81F87F80FFFFF03FCFF18127F911B>117 D E /Fl 33 91
df<0007000E001C0038007000E001C001C00380070007000E000E001C001C001C003800380038
00700070007000700070006000E000E000E000E000E000E000E000E000E0006000600070007000
3000380038001C001C000E0007000300102E7CA112>40 D<00C000E00070003000380018001C00
1C000C000E000E000E0006000600060006000600060006000E000E000E000E000E000E001C001C
001C001C0038003800380070007000E000E001C001C00380070007000E001C0038007000E0000F
2E7FA112>I<3C3E7E7E3E060E0C0C1C3870E0C0070E7D840D>44 D<7FE07FE0FFC00B037E8A0F>
I<7878F8F87005057C840D>I<007E0001FF0003C3800701C00E01C00E01E01C00E01C01E03C01
E03C01E07801E07801E07801E07801E07801E0F003C0F003C0F003C0F003C0F003C0F00380F007
80E00780E00700E00F00E00E00701E00701C003878003FF0000FC000131F7C9D17>48
D<000C001C00FC0FFC0F38003800380038003800780070007000700070007000F000E000E000E0
00E000E001E001C001C001C001C001C003C07FFEFFFE0F1E7C9D17>I<0001C00003C00003C000
0780000F80001B80003B8000738000638000C7000187000307000707000E07000C0700180E0030
0E00600E00E00E00FFFFF0FFFFF0001E00001C00001C00001C00001C00003C00003C0003FFC003
FFC0141E7D9D17>52 D<03807003FFF003FFE003FF8007FE000600000600000600000600000600
000E00000C7E000DFF000F87800F03C00E01C00C01C00001E00001E00001E00003E07003E0F003
C0F003C0F007C0C00780E00F00701E00787C003FF8000FE000141F7D9D17>I<001F80007FE001
F0E003C0E00781E00F01E00F01E01E00001C00003C00003C300079FE007BFF007F07807E0780FC
0380F803C0F803C0F003C0F003C0F007C0F00780E00780E00780E00780F00F00701E00701E003C
7C003FF0000FC000131F7C9D17>I<003F0000FFC003E3E00780E00700F00E00700E00700E0070
0E00F00F00E00F81E00FE3C007FF0003FE0001FE0007FF000F3F801E1FC03C0FC07803C07001C0
F001C0E001C0E001C0E001C0E00380F00780780F003C3E001FFC000FE000141F7D9D17>56
D<007E0001FF0007C7800F03C01E01C01E01E03C01E03C01E03C01E07C01E07801E07801E07801
E07803E07803E07807C0380FC03C1FC01FFBC00FF3C0010780000780000700000F00E01E00F01C
00F03C00E07800E1F000FFC0003F0000131F7C9D17>I<00001800000038000000380000007800
00007C000000FC000000FC000001BC000001BC0000033C0000033E0000061E0000061E00000C1E
00000C1E0000181E0000181F0000300F0000300F0000600F00007FFF0000FFFF0000C00F000180
0780018007800300078003000780060007800E0007801F0007C0FFC07FFCFFC07FFC1E207E9F22
>65 D<0003FC08001FFE18007F073800FC03F801F001F803E000F807C000F00F8000700F000070
1F0000703E0000703E0000703E0000607C0000007C0000007C0000007C000000FC000000F80000
00F8000000F8000000F80000C0780001C0780001807C0001807C0003803C0007003E0006001F00
0E000F803C0007E0F00003FFE000007F80001D217B9F21>67 D<07FFFF0007FFFFE0003C01F000
3C00F8007C007C0078003C0078001E0078001E0078001E0078001F00F8001F00F0001F00F0001F
00F0001F00F0001F00F0001F01F0001E01E0003E01E0003E01E0003E01E0003C01E0007C03E000
7803C000F003C000F003C001E003C003C003C00F8007C03F007FFFFC00FFFFE000201F7E9E23>
I<07FFFFF807FFFFF8003C00F8003C0078007C0038007800380078003800780038007800380078
0C3000F8183000F0180000F0180000F0380000FFF80000FFF80001F0700001E0300001E0300001
E0301801E0303001E0003003E0003003C0006003C0006003C000E003C001C003C003C007C00FC0
7FFFFF80FFFFFF801D1F7E9E1F>I<07FFFFF807FFFFF8003C00F8003C0078007C003800780038
00780038007800380078003800780C3000F8183000F0180000F0180000F0380000FFF80000FFF8
0001F0700001E0300001E0300001E0300001E0300001E0000003E0000003C0000003C0000003C0
000003C0000003C0000007C000007FFE0000FFFE00001D1F7E9E1E>I<0003FC04000FFF0C003F
079C00FC01FC01F000FC03E0007C07C000780F8000380F8000381F0000383E0000383E0000383E
0000307C0000007C0000007C0000007C000000FC000000F8000000F8007FFCF8007FFCF80001E0
780003E07C0003E07C0003C07C0003C03E0003C03E0007C01F0007C00FC01FC007F07D8001FFF0
80007FC0001E217B9F24>I<07FFC7FFC007FFC7FFC0003C007800003C00F800007C00F8000078
00F000007800F000007800F000007800F000007801F00000F801F00000F001E00000F001E00000
F001E00000FFFFE00000FFFFE00001F003E00001E003C00001E003C00001E003C00001E003C000
01E007C00003E007C00003C007800003C007800003C007800003C007800003C00F800007C00F80
007FFCFFF800FFF8FFF800221F7E9E22>I<07FFE007FFE0003C00003C00007C00007800007800
00780000780000780000F80000F00000F00000F00000F00000F00001F00001E00001E00001E000
01E00001E00003E00003C00003C00003C00003C00003C00007C000FFFC00FFFC00131F7F9E10>
I<07FFF00007FFF000003C0000003C0000007C0000007800000078000000780000007800000078
000000F8000000F0000000F0000000F0000000F0000000F0000001F0000001E0000001E0000001
E0018001E0018001E0030003E0030003C0030003C0070003C0060003C00E0003C01E0007C07E00
7FFFFC00FFFFFC00191F7E9E1C>76 D<07FC0000FFC007FC0001FFC0003E0001F800003E0003F8
00007E0003F800006E0006F000006E0006F000006E000CF0000067000CF00000670019F00000E7
0019F00000C70031E00000C70031E00000C70061E00000C38061E00000C380C3E00001C380C3E0
0001838183C00001838183C0000181C303C0000181C303C0000181C607C0000381C607C0000301
CC0780000301CC0780000300F80780000300F80780000700F00F80000F80F00F80007FF0E0FFF8
00FFF0E1FFF8002A1F7E9E2A>I<07FC03FFC007FE03FFC0003E007C00003E003800007F003800
006F003000006F803000006780300000678030000067C0700000E3C0700000C3E0600000C1E060
0000C1E0600000C1F0600000C0F0E00001C0F8E000018078C000018078C00001807CC00001803C
C00001803FC00003801FC00003001F800003001F800003000F800003000F800007000780000F80
0780007FF0070000FFF0030000221F7E9E22>I<0003F800001FFE00003C1F0000F0078001E003
C003C001E0078001E00F8000F00F0000F01F0000F01E0000F83E0000F83C0000F87C0000F87C00
00F87C0000F87C0000F8F80001F0F80001F0F80001F0F80001F0F80003E0780003E0780007C07C
0007C07C000F803C000F003E001E001E003C000F00780007C1F00003FFC00000FE00001D217B9F
23>I<07FFFF0007FFFFC0003C03E0003C01F0007C00F0007800F8007800F8007800F8007800F8
007800F800F801F000F001F000F001E000F003C000F00F8000FFFE0001FFF80001E0000001E000
0001E0000001E0000001E0000003E0000003C0000003C0000003C0000003C0000003C0000007C0
00007FFC0000FFFC00001D1F7E9E1F>I<07FFFC0007FFFF00003C07C0003C03E0007C01E00078
01F0007801F0007801F0007801F0007801E000F803E000F003C000F0078000F01F0000FFFC0000
FFF00001F0780001E03C0001E03C0001E01C0001E01E0001E01E0003E03E0003C03E0003C03E00
03C03E0003C03E0603C03E0E07C03F0C7FFC1F1CFFFC1FF8000007F01F207E9E21>82
D<003F8C00FFCC01E1FC03C07C07803C07003C0F00380E00180E00180E00180E00000F00000F80
000FF00007FF0007FF8003FFC000FFE0000FE00001E00000F00000F00000F06000E06000E06000
E07000E07001C07803C0FC0780FE0F00EFFE00C3F80016217D9F19>I<1FFFFFF81FFFFFF81E03
C0F83803C0383807C0383007803870078018600780186007803860078030C00F8030000F000000
0F0000000F0000000F0000000F0000001F0000001E0000001E0000001E0000001E0000001E0000
003E0000003C0000003C0000003C0000003C0000003C0000007C00001FFFF0003FFFF0001D1F7B
9E21>I<FFFC7FF8FFFC7FF807800F80078007000F8007000F0006000F0006000F0006000F0006
000F000E001F000E001E000C001E000C001E000C001E000C001E001C003E001C003C0018003C00
18003C0018003C0018003C0038003C00300038003000380070003C0060003C00E0003C01C0001E
0380000F0F000007FE000001F800001D20799E22>I<FFF007FEFFF007FE1F0001F00F0000E00F
0000C00F0001800780018007800300078007000780060007800E0007C00C0003C01C0003C01800
03C0300003C0300003C0600001E0600001E0C00001E0C00001E1800001E1800000F3000000F300
0000F6000000F6000000FC000000FC0000007800000078000000700000007000001F207A9E22>
I<03FFC1FFC003FFC1FFC0003E00FC00001E007000001E006000000F00C000000F01C000000F83
800000078300000007C600000003CC00000003FC00000001F800000001F000000000F000000000
F800000001F800000003FC000000033C000000063C0000000C1E0000001C1E000000381F000000
300F000000600F800000C007800001C007C000038003C0000FC007E000FFF01FFE00FFE01FFE00
221F7F9E22>88 D<7FF803FF80FFF803FF0007C000F80007C000E00003C000C00003E001C00001
E003800001F003000000F006000000F80E000000F80C00000078180000007C300000003C700000
003E600000001EC00000001F800000000F800000000F000000000F000000000F000000000E0000
00001E000000001E000000001E000000001E000000001E000000001C000000003C00000003FFE0
000007FFE00000211F7B9E22>I<03FFFFC003FFFFC003F0078007C00F8007001F0007003E000E
007C000C007C000C00F8000C01F0001803E0000003E0000007C000000F8000001F0000001F0000
003E0000007C000000F8030000F0030001F0030003E0060007C00600078006000F800E001F001C
003E001C003C007C007C01FC00FFFFF800FFFFF8001A1F7D9E1C>I E /Fm
83 126 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8000000000070F8F8F870051C779B18>
33 D<4010F078F078F078E038E038E038E038E038E038E038E038E038E0380D0E7B9C18>I<078F
00078F00078F00078F00078F00078F00078F00FFFFE0FFFFE0FFFFE07FFFE00F1E000F1E000F1E
000F1E000F1E000F1E007FFFE0FFFFE0FFFFE0FFFFE01E3C001E3C001E3C001E3C001E3C001E3C
001E3C00131C7E9B18>I<3803807C0780FE0780FE0F80EE0F00EE0F00EE1F00EE1E00EE1E00FE
3E00FE3C007C3C00387C0000780000780000F80000F00001F00001E00001E00003E00003C00003
C00007C0000783800787C00F8FE00F0FE00F0EE01F0EE01E0EE01E0EE03E0FE03C0FE03C07C01C
038013247E9F18>37 D<03C0000FF0000FF0001E78001E78001C38001C38001C78001C7BF01CF3
F01FF3F01FE7800FC7800F87000F0F001F0F003F8E007FDE00FBDE00F1FC00E1FC00E0F800E0F8
70F0FC70F9FEF07FFFF03FCFE01F03C0141C7F9B18>I<387C7E7E3E0E0E1E1E3C7CF8F0E0070E
789B18>I<007000F003F007E00F800F001E003E003C007800780070007000F000F000E000E000
E000E000E000E000F000F00070007000780078003C003E001E000F000F8007E003F000F000700C
24799F18>I<E000F000FC007E001F000F00078007C003C001E001E000E000E000F000F0007000
70007000700070007000F000F000E000E001E001E003C007C007800F001F007E00FC00F000E000
0C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007F00007F0
001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D9718>I<00F00000
F00000F00000F00000F00000F00000F00000F000FFFFE0FFFFE0FFFFE0FFFFE000F00000F00000
F00000F00000F00000F00000F00000F00013147E9718>I<3C7E7F7F7F3F0F0F3EFEF8F0080C78
8518>I<FFFF80FFFF80FFFF80FFFF8011047D8F18>I<78FCFCFCFC780606778518>I<00038000
0780000780000F80000F00001F00001E00001E00003E00003C00007C0000780000780000F80000
F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F00001F00001E00003E
00003C00003C00007C0000780000F80000F00000F00000E0000011247D9F18>I<01F00007FC00
0FFE001F1F001C07003803807803C07001C07001C0E000E0E000E0E000E0E000E0E000E0E000E0
E000E0E000E0E000E0F001E07001C07001C07803C03803801C07001F1F000FFE0007FC0001F000
131C7E9B18>I<0380038007800F800F803F80FF80FB8063800380038003800380038003800380
038003800380038003800380038003800380FFFEFFFEFFFE0F1C7B9B18>I<07F8001FFE003FFF
807C0FC0F803C0F001E0F001E0F000E0F000E00000E00001E00001E00003C00003C0000780000F
80001F00003E0000FC0001F80003E00007C0000F80003F00E07E00E0FFFFE0FFFFE0FFFFE0131C
7E9B18>I<07F8001FFE007FFF807C0FC07803C07801C07801C00001C00003C00007C0000F8003
FF0003FE0003FF80000FC00003C00001E00001E00000E00000E0F000E0F001E0F001E0F003C0FC
0FC07FFF801FFE0007F800131C7E9B18>I<001F00003F00007F0000770000F70001E70001C700
03C7000787000707000E07001E07003C0700380700780700F00700FFFFF8FFFFF8FFFFF8000700
00070000070000070000070000070000FFF800FFF800FFF8151C7F9B18>I<3FFF803FFF803FFF
803800003800003800003800003800003800003800003800003BFC003FFF003FFF803E07C03803
C00001E00001E00000E06000E0F000E0F001E0F003E0F007C07C0F807FFF001FFE0007F800131C
7E9B18>I<007E0003FF8007FFC00FC3C01F03C03E03C03C03C0780000780000F00000F3F800EF
FE00FFFF80FE0F80FC03C0F803E0F001E0F000E0F000E0F000E07000E07801E07803E03C07C03E
0F801FFF000FFE0003F800131C7E9B18>I<E00000FFFFE0FFFFE0FFFFE0E007C0E00780000F00
001F00001E00003C00003C0000780000780000F00000F00000E00001E00001E00001C00001C000
03C00003C00003C000038000038000038000038000038000038000131D7E9C18>I<03F8000FFE
001FFF003E0F803803807001C07001C07001C07001C03803803C07801FFF0007FC000FFE001F1F
003C07807001C0F001E0E000E0E000E0E000E0E000E07001C07803C03E0F801FFF000FFE0003F8
00131C7E9B18>I<78FCFCFCFC78000000000000000078FCFCFCFC780614779318>58
D<3C7E7E7E7E3C00000000000000003C7E7E7E7E3E1E1E3CFCF8E0071A789318>I<000380000F
80001F80003F8000FE0001FC0003F8000FE0001FC0003F8000FE0000FC0000FC0000FE00003F80
001FC0000FE00003F80001FC0000FE00003F80001F80000F8000038011187D9918>I<7FFFC0FF
FFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<
E00000F80000FC0000FE00003F80001FC0000FE00003F80001FC0000FE00003F80001F80001F80
003F8000FE0001FC0003F8000FE0001FC0003F8000FE0000FC0000F80000E0000011187D9918>
I<00700000F80000F80000D80000D80001DC0001DC0001DC00018C00038E00038E00038E00038E
000306000707000707000707000707000FFF800FFF800FFF800E03800E03801C01C01C01C0FF8F
F8FF8FF8FF8FF8151C7F9B18>65 D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E0
1C00E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C0070
1C00701C00F01C00E01C03E0FFFFC0FFFF80FFFE00141C7F9B18>I<01FCE007FFE00FFFE01F07
E03E03E03C01E07801E07800E07000E0F00000F00000E00000E00000E00000E00000E00000E000
00F00000F000007000E07800E07800E03C01E03E03E01F07C00FFF8007FF0001FC00131C7E9B18
>I<FFF800FFFE00FFFF001C0F801C03C01C03C01C01E01C00E01C00E01C00F01C00701C00701C
00701C00701C00701C00701C00701C00701C00F01C00E01C00E01C01E01C01C01C03C01C0F80FF
FF00FFFE00FFF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C00701C00701C00701C00701C0000
1C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E001C0E001C00001C00001C0038
1C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18>I<FFFFE0FFFFE0FFFFE01C00
E01C00E01C00E01C00E01C00001C00001C1C001C1C001C1C001FFC001FFC001FFC001C1C001C1C
001C1C001C00001C00001C00001C00001C00001C00001C0000FFC000FFC000FFC000131C7E9B18
>I<01F9C007FFC00FFFC01F0FC03E07C03C03C07803C07801C07001C0F00000F00000E00000E0
0000E00000E00000E01FF0E01FF0F01FF0F001C07003C07803C07803C03C07C03E0FC01F1FC00F
FFC007FDC001F9C0141C7E9B18>I<FF8FF8FF8FF8FF8FF81C01C01C01C01C01C01C01C01C01C0
1C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C0
1C01C01C01C01C01C01C01C0FF8FF8FF8FF8FF8FF8151C7F9B18>I<FFFF80FFFF80FFFF8001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF80111C7D9B18
>I<FF87F8FF87F8FF87F81C03C01C07801C0F801C1F001C1E001C3C001C7C001CF8001CF0001D
F0001FF8001FF8001FBC001F3C001F1E001E1E001C0F001C0F001C07801C07801C03C01C03C0FF
87F8FF87F8FF87F8151C7F9B18>75 D<FFE000FFE000FFE0000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
700E00700E00700E00700E0070FFFFF0FFFFF0FFFFF0141C7F9B18>I<FC01F8FE03F8FE03F83B
06E03B06E03B06E03B06E03B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038
F8E03870E03870E03800E03800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B
18>I<FE0FF8FF0FF8FF0FF81D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C0
1C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC0
FF87C0FF87C0FF83C0151C7F9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E003
80E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E003
80E00380F00780700700780F007FFF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC01C
03C01C01E01C00E01C00701C00701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801F
FE001C00001C00001C00001C00001C00001C00001C00001C0000FF8000FF8000FF8000141C7F9B
18>I<FFF800FFFE00FFFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F80
1FFF001FFE001FFF001C0F001C07801C07801C03801C03801C03801C03801C039C1C039C1C03FC
FF83FCFF81F8FF80F0161C7F9B18>82 D<07F3801FFF803FFF807C1F80F80780F00780E00380E0
0380F00000F000007800007F00003FF0000FFE0001FF80001FC00003C00001E00001E00000E0E0
00E0E000E0E001E0F003E0FC07C0FFFF80FFFF00E7FC00131C7E9B18>I<FFFFF8FFFFF8FFFFF8
E07038E07038E07038E07038007000007000007000007000007000007000007000007000007000
00700000700000700000700000700000700000700000700000700007FF0007FF0007FF00151C7F
9B18>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C00701C00701C00701C00701C00
701C00701C00701C00701C00701C00701C00701C00701C00701C00701E00F01E00F00F01E00FC7
E007FFC001FF00007C00171C809B18>I<FE03F8FE03F8FE03F87000707000707000703800E038
00E03800E03800E03800E038F8E038F8E039DCE039DCE019DCC019DCC019DCC0198CC01D8DC01D
8DC01D8DC01D8DC00D8D800D05800F07800F07800E0380151C7F9B18>87
D<7F9FE07F9FE07F9FE00E07000F0700070E00078E00039C0003DC0001F80001F80000F00000F0
0000700000F00000F80001F80001DC00039E00038E00070F000707000E07800E03801E03C0FF8F
F8FF8FF8FF8FF8151C7F9B18>I<FF07F8FF07F8FF07F81C01C01E03C00E03800F078007070007
0700038E00038E0001DC0001DC0001FC0000F80000F80000700000700000700000700000700000
700000700000700000700003FE0003FE0003FE00151C7F9B18>I<FFF8FFF8FFF8E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000FFF8FFF8FFF80D24779F18>91 D<E00000F00000F00000F8
00007800007C00003C00003C00003E00001E00001F00000F00000F00000F800007800007C00003
C00003C00003E00001E00001F00000F00000F800007800007800007C00003C00003E00001E0000
1E00001F00000F00000F8000078000078000038011247D9F18>I<FFF8FFF8FFF8003800380038
003800380038003800380038003800380038003800380038003800380038003800380038003800
380038003800380038003800380038FFF8FFF8FFF80D247F9F18>I<FFFF80FFFF80FFFF80FFFF
8011047D7F18>95 D<0E1E3E7C78F0F0E0E0F8FCFC7C38070E789E18>I<1FE0007FF8007FFE00
783E00780F00000F0000070001FF000FFF003FFF007F0700F80700F00700E00700E00700F00F00
F83F007FFFF03FFFF00FE1F014147D9318>I<FE0000FE0000FE00000E00000E00000E00000E00
000E00000E3E000EFF800FFFE00FE3E00F80F00F00F00F00780E00780E00380E00380E00380E00
380F00780F00780F80F00F81F00FE3E00FFFC00EFF800E7E00151C809B18>I<01FE000FFF801F
FF803F07807C0780780000F00000F00000E00000E00000E00000E00000F00000F000007801C07C
03C03F07C01FFF800FFF0001FC0012147D9318>I<003F80003F80003F80000380000380000380
00038000038003F3800FFF801FFF803E1F807C0F80780780F00780F00380E00380E00380E00380
E00380F00780F00780780F80781F803E3F803FFFF80FFBF803E3F8151C7E9B18>I<03F0000FFE
001FFF003E1F807C0780780380F003C0F003C0E001C0FFFFC0FFFFC0FFFFC0F00000F000007801
C07C03C03F07C01FFF800FFF0001FC0012147D9318>I<001FC0007FE000FFE001F1E001E0C001
C00001C00001C000FFFFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<03F1F0
0FFFF81FFFF81E1F383C0F003C0F003807003807003807003C0F003C0F001E1E001FFE003FFC00
3FF0003C00003C00001FFF003FFFC07FFFF07801F0F00078F00078E00038E00038F00078F800F8
7E03F03FFFE00FFF8003FE00151F7F9318>I<FE0000FE0000FE00000E00000E00000E00000E00
000E00000E3F000EFFC00FFFC00FE1E00F81E00F00E00F00E00E00E00E00E00E00E00E00E00E00
E00E00E00E00E00E00E00E00E00E00E0FFE7FEFFE7FEFFE7FE171C809B18>I<03800007C00007
C00007C000038000000000000000000000000000FFC000FFC000FFC00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FF
FF80111D7C9C18>I<FE0000FE0000FE00000E00000E00000E00000E00000E00000E7FF00E7FF0
0E7FF00E0F800E1F000E3E000E7C000EF8000FF8000FF8000FFC000FBE000F1E000E0F000E0F80
0E07C00E03C0FFC7F8FFC7F8FFC7F8151C7F9B18>107 D<FFE000FFE000FFE00000E00000E000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E00000E000FFFFE0FFFFE0FFFFE0131C7E9B18>I<FDF1
F000FFFBF800FFFFFC001FBFBC001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C
1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C00FFBFBF80FFBFBF80FFBFBF80
1914819318>I<FE3F00FEFFC0FFFFC00FE1E00F81E00F00E00F00E00E00E00E00E00E00E00E00
E00E00E00E00E00E00E00E00E00E00E00E00E0FFE7FEFFE7FEFFE7FE1714809318>I<01F0000F
FE001FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C078
03C03C07803E0F801FFF000FFE0001F00013147E9318>I<FE3E00FEFF80FFFFE00FE3E00F80F0
0F00F00F00780E00780E00380E00380E00380E00380F00780F00780F80F00F81F00FE3E00FFFC0
0EFF800E7E000E00000E00000E00000E00000E00000E00000E0000FFE000FFE000FFE000151E80
9318>I<03F3800FFF801FFF803E1F807C0F80780780F00780F00780E00380E00380E00380E003
80F00780F00780780F807C0F803E1F801FFF800FFF8003F3800003800003800003800003800003
80000380000380003FF8003FF8003FF8151E7E9318>I<FF87F0FF9FF8FFFFF803FC7803F07803
E00003E00003C00003C000038000038000038000038000038000038000038000038000FFFF00FF
FF00FFFF0015147F9318>I<0FF7003FFF007FFF00F81F00F00F00E00700F00700FC00007FF000
1FFC0007FF00001F80E00780E00380F00380F80780FC0F80FFFF00FFFE00E7F80011147D9318>
I<038000038000038000038000038000FFFFC0FFFFC0FFFFC00380000380000380000380000380
000380000380000380000380000380400380E00380E003C1E003E3E001FFC000FF80007E001319
7F9818>I<FE0FE0FE0FE0FE0FE00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E
00E00E00E00E00E00E01E00E01E00F07E00FFFFE07FFFE01FCFE1714809318>I<FF8FF8FF8FF8
FF8FF81E03C00E03800E03800E0380070700070700070700038E00038E00038E00038E0001DC00
01DC0001DC0000F80000F80000700015147F9318>I<FF8FF8FF8FF8FF8FF83800E03800E03800
E01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F
8007070015147F9318>I<7F9FF07F9FF07F9FF0070700078E00039E0001DC0001F80000F80000
700000F00000F80001DC00039E00038E000707000F0780FF8FF8FF8FF8FF8FF815147F9318>I<
FF8FF8FF8FF8FF8FF80E01C00E03800E0380070380070700070700038700038600038E0001CE00
01CE0000CC0000CC0000DC0000780000780000780000700000700000700000F00000E00079E000
7BC0007F80003F00001E0000151E7F9318>I<7FFFF07FFFF07FFFF07003E07007C0700F80001F
00003E00007C0000F80001F00003E00007C0000F80701F00703E00707C0070FFFFF0FFFFF0FFFF
F014147F9318>I<0007E0003FE0007FE000FC0000F00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00001E0007FE000FFC000FFC0007FE00001E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000F00000FC00007FE0003FE00007E013
247E9F18>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F00424769F18>I<FC0000FF8000FFC00007E00001E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000F00000FFC0007FE0007FE000FFC000F00000E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00001E00007E000FFC000FF8000FC00
0013247E9F18>I E /Fn 13 119 df<1C3C3C3C3C0C1C18383070E0C0C0060E7D840E>44
D<70F8F8F0F005057B840E>46 D<00F9C003FFC0078FC00F0F801E07803C07803C078078070078
0700780F00F80F00F00E00F00E00F01E30F01E70F03C60707C6078FEE03FCFC01F078014147C93
17>97 D<07803F803F80070007000F000F000E000E001E001E001C001CF83FFC3F1E3E0E3C0F78
0F780F700F700F701FF01FE01EE01EE03CE03CE07870F071E03FC01F0010207B9F15>I<007E00
03FF0007C3800F07801E07803C07803C0200780000780000780000F80000F00000F00000F00000
F000007003007807003C3E003FFC000FE00011147C9315>I<00FE0003FF0007C7800F03801E01
803C03807C0700781F007FFC007FF000F80000F00000F00000F000007000007003007807003C3E
001FFC000FE00011147C9315>101 D<003E7000FFF001E3F003C3E00781E00F01E00F01E01E01
C01E01C01E03C03E03C03C03803C03803C07803C07803C0F001C1F001E3F000FFF0007CE00000E
00001E00001E00001C00703C00787800F8F0007FE0003F8000141D7E9315>103
D<00F000F000F000E000000000000000000000000000000F001F803BC071C063C06380E3800780
07000F000F000E001E001C701C603C6038E03DC01F800F000C1F7D9E0E>105
D<1E1F003F3F8077F1C063E3C063C3C0E783C0C783800700000700000F00000F00000E00000E00
001E00001E00001C00001C00003C00003C000038000012147D9313>114
D<01FC03FE07870F0F0E0F0E0F1E000F800FF80FFC03FC007E001E701EF01CF01CF03CF0787FF0
1FC010147D9313>I<01C003C003C003800380078007800700FFF0FFF00F000E000E001E001E00
1C001C003C003C00380038007870786070E070C079C03F801F000C1C7C9B0F>I<0F00701F80F0
3BC0F071C0E063C0E06381E0E381E00781C00701C00703C00F03C00E03800E03800E078C0E079C
0E0F180E0F180F3FB807FBF003E1E016147D9318>I<0F01C01F83E03BC3E071C3E063C1E06380
E0E380C00780C00700C00701C00F01800E01800E01800E03000E03000E07000E0E000F1C0007F8
0003F00013147D9315>I E /Fo 46 123 df<001E003C007800F001F001E003C007C007800F80
0F001F001F001E003E003E003E007C007C007C007C007C007800F800F800F800F800F800F800F8
00F800F800F800F800F800F800F800F80078007C007C007C007C007C003E003E003E001E001F00
1F000F000F80078007C003C001E001F000F00078003C001E0F3D7CAC17>40
D<F00078003C001E001F000F00078007C003C003E001E001F001F000F000F800F800F8007C007C
007C007C007C003C003E003E003E003E003E003E003E003E003E003E003E003E003E003E003E00
3C007C007C007C007C007C00F800F800F800F001F001F001E003E003C007C007800F001F001E00
3C007800F0000F3D7DAC17>I<F8F8F8F8F8383070706060E0050C7A8411>44
D<FFFEFFFEFFFE0F037F8E14>I<F8F8F8F8F805057A8411>I<007F000001FFC00007FFF0000FFF
F8000FC1F8001F007C003F007E003E003E003C001E007C001F007C001F007C001F0078000F00F8
000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80
F8000F80F8000F80F8000F80F8000F80F8000F8078000F007C001F007C001F007C001F003E003E
003E003E003F007E001F80FC000FC1F8000FFFF80007FFF00001FFC000007F000019297EA71E>
48 D<00180000380000F80007F800FFF800FFF800F8F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8007FFFF0
7FFFF07FFFF014287BA71E>I<00FE0003FFC007FFE00FFFF01F03F83C00FC38007E78003E7000
3EF0001FF0001F60001F20001F00001F00001F00001F00003E00003E00007C00007C0000F80001
F00001E00003C0000780000F00001E00003C0000780000F00001E00003C0000780000F00001E00
003C00007FFFFF7FFFFF7FFFFF7FFFFF18287EA71E>I<007F000001FFC00007FFF0000FFFF800
1FC1F8003E007C003C003E0078003E0038003E0010003E0000003E0000003E0000003C0000007C
000000FC000001F8000007F00000FFE00000FFC00000FFE00000FFF0000001FC0000007C000000
3E0000001F0000001F0000000F8000000F8000000F8000000F8000000F8040000F8060001F00F0
001F00F8003F007E007E003F81FC001FFFF8000FFFF00003FFE000007F000019297EA71E>I<00
03F0000007F0000005F000000DF000000DF000001DF0000039F0000039F0000079F0000079F000
00F1F00000F1F00001E1F00003E1F00003E1F00007C1F00007C1F0000F81F0000F81F0001F01F0
001F01F0003E01F0007C01F0007C01F000F801F000FFFFFF80FFFFFF80FFFFFF80FFFFFF800001
F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00019
277EA61E>I<3FFFFC3FFFFC3FFFFC3FFFFC3E00003E00003E00003E00003E00003E00003E0000
3E00003E00003E00003E3F003EFFC03FFFE03FFFF03FE1F83F807C3F003E3E003E00003E00001F
00001F00001F00001F00001F00001F00001F20001F60003E70003EF8007C7C00FC3F03F81FFFF0
0FFFE007FF8000FE0018287EA61E>I<000FF000003FFC0000FFFC0001FFFC0003F80C0007E000
000FC000000F8000001F0000001E0000003E0000003C0000007C0000007C0000007C3FE000F8FF
F000F9FFF800FBFFFC00FF807E00FF003E00FE003F00FC001F00FC001F00FC000F80F8000F80F8
000F80F8000F80F8000F8078000F807C000F807C000F807C000F003E001F003E001F001F003E00
1F807C000FC1FC0007FFF80003FFF00001FFC000007F000019297EA71E>I<FFFFFF80FFFFFF80
FFFFFF80FFFFFF800000078000000F0000001E0000003C0000007C00000078000000F0000001F0
000001E0000003C0000007C00000078000000F8000000F0000001F0000001F0000001E0000003E
0000003E0000007C0000007C0000007C00000078000000F8000000F8000000F8000000F8000000
F8000001F0000001F0000001F0000001F0000001F0000001F0000001F0000019277EA61E>I<00
7F000001FFC00007FFF0000FFFF8001FC1FC003F007E003E003E007E003F007C001F007C001F00
7C001F007C001F007C001F003E003E003E003E001F007C000FC1F80007FFF00003FFE00003FFE0
000FFFF8001FC1FC003F007E003E003E007C001F007C001F00F8000F80F8000F80F8000F80F800
0F80F8000F80F8000F807C001F007C001F007E003F003F007E001FC1FC000FFFF80007FFF00003
FFE000007F000019297EA71E>I<007F000001FFC00003FFE0000FFFF0000FC1F8001F007C003E
007C007C003E007C001E007C001F00F8001F00F8001F00F8000F00F8000F80F8000F80F8000F80
F8000F80F8001F807C001F807C001F807E003F803E007F803F00FF801FFFEF800FFFCF8007FF8F
8003FE1F0000001F0000001F0000001E0000003E0000003E0000007C0000007C000000F8001801
F0001E07E0003FFFC0001FFF80000FFE000003F8000019297EA71E>I<0001FF00000FFFE0003F
FFF8007FFFF801FE01F803F8003007E0001007C000000F8000001F8000001F0000003E0000003E
0000007C0000007C0000007C0000007C000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F80000007C0000007C0000007C0000007C0000003E0000003E0000
001F0000001F8000000F80000007C0000007E0000403F8001C01FE00FC007FFFFC003FFFF8000F
FFE00001FF001E2B7CA926>67 D<FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000FFFFFF80FFFFFF80FFFFFF80FFFFFF80F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF01C297BA824>69 D<FFFFFFC0FFFFFFC0FF
FFFFC0FFFFFFC0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000FFFFFE00FFFFFE00FFFFFE00FFFFFE
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000001A
297BA822>I<0001FF00000FFFE0003FFFFC007FFFFE01FE01FE03F8003E07F0000C07C000000F
8000001F8000001F0000003E0000003E0000007C0000007C0000007C0000007C000000F8000000
F8000000F8000000F8000000F8000000F8000000F8001FFEF8001FFEF8001FFE7C001FFE7C0000
3E7C00003E7C00003E3E00003E3E00003E1F00003E1F80003E0F80003E07C0003E07F0003E03F8
003E01FE00FE007FFFFE003FFFFC000FFFE00001FF001F2B7CA928>I<F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F805297AA811>73
D<F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000FFFFFFFFFF
FFFFFFFFFFFFFF18297BA820>76 D<FE0000007F80FE0000007F80FE0000007F80FF000000FF80
FB000000EF80FB800001EF80FB800001EF80F9800001CF80F9C00003CF80F9C00003CF80F9E000
07CF80F8E000078F80F8E000078F80F8F0000F8F80F870000F0F80F870000F0F80F878001F0F80
F838001E0F80F83C003E0F80F83C003E0F80F81C003C0F80F81E007C0F80F81E007C0F80F80E00
780F80F80F00F80F80F80F00F80F80F80781F00F80F80781F00F80F80381E00F80F803C3E00F80
F803C3E00F80F801C3C00F80F801E7C00F80F801E7C00F80F800E7800F80F800E7800F80F8007F
000F80F8007F000F80F8007F000F80F8003E000F80F80000000F8029297BA834>I<0001FC0000
000FFF8000003FFFE00000FFFFF80001FE03FC0003F800FE0007E0003F000FC0001F800F80000F
801F000007C01F000007C03E000003E03E000003E07C000001F07C000001F07C000001F0780000
00F0F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F800
0000F8F8000000F8FC000001F87C000001F07C000001F07E000003F03E000003E03E000003E01F
000007C01F80000FC00F80000F800FC0001F8007F0007F0003F800FE0001FE03FC0000FFFFF800
003FFFE000000FFF80000001FC0000252B7DA92C>79 D<007FC00001FFF80007FFFE000FFFFF00
1FC07F003F000F007E0006007C000000F8000000F8000000F8000000F8000000F8000000FC0000
007C0000007E0000007F0000003FE000001FFE00000FFFC00007FFF00001FFF800003FFC000003
FE0000007F0000001F8000001F8000000FC0000007C0000007C0000007C0000007C0000007C000
0007C000000F8060000F80F0001F00FC003F00FF80FE007FFFFC001FFFF80007FFE00000FF8000
1A2B7DA921>83 D<F800007CF800007CF800007CF800007CF800007CF800007CF800007CF80000
7CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF800
007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF8
00007CF800007CF800007CF800007C7C0000F87C0000F87C0000F83E0001F01F0003E01F8007E0
0FC00FC007F03F8001FFFE0000FFFC00001FE0001E2A7BA829>85 D<00FE0007FF801FFFC03FFF
E03E03F03801F02001F80000F80000F80000F80000F80000F8007FF807FFF81FFFF83FE0F87F00
F8FC00F8F800F8F800F8F800F8FC01F87E07F87FFFF83FFFF81FFCF80FE0F8151B7E9A1D>97
D<007F8001FFE007FFF80FFFFC1FC07C1F001C3E00087C00007C00007C0000F80000F80000F800
00F80000F80000F80000F800007C00007C00007E00003E00001F000C1FC07C0FFFFC07FFFC01FF
F0007F80161B7E9A1B>99 D<00003E00003E00003E00003E00003E00003E00003E00003E00003E
00003E00003E00003E00003E00003E00FC3E03FF3E07FFFE0FFFFE1FC1FE3F007E3E003E7C003E
7C003EFC003EF8003EF8003EF8003EF8003EF8003EF8003EF8003EFC003E7C003E7C003E3E007E
3F00FE1FC1FE0FFFFE07FFBE03FF3E00FC3E17297EA81F>I<007E0003FF8007FFC00FFFE01F83
F03F00F03E00787C00787C003878003CFFFFFCFFFFFCFFFFFCFFFFFCF80000F80000F800007800
007C00007C00003E00003F000C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>I<001FC000
7FC000FFC001FFC003E00003C00007C00007C00007C00007C00007C00007C00007C00007C000FF
FE00FFFE00FFFE0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00012297FA812>I<00F8078003FE7FC00FFFFFC01FFFFFC01F07C0003E03E0003E03E0007C01
F0007C01F0007C01F0007C01F0007C01F0007C01F0003E03E0003E03E0001F07C0001FFFC0003F
FF80003BFE000038F8000078000000780000003C0000003FFFC0003FFFF8001FFFFC001FFFFE00
3FFFFF007C007F00F8001F80F8000F80F8000F80F8000F80FC001F807E003F003F80FE003FFFFE
000FFFF80007FFF00000FF80001A287E9A1E>I<F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F83F00F8FF80FBFFC0FFFFE0FF07E0FE
03F0FC01F0FC01F0FC01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F8
01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F014297BA81F>I<F8F8F8F8F800
000000000000000000F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7C
A90E>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F805297CA80E>108 D<F83F003F00F8FFC0FFC0FBFFE3FFE0FFFFF7FFF0FF83F783
F0FE01FE01F8FC00FC00F8FC00FC00F8FC00FC00F8F800F800F8F800F800F8F800F800F8F800F8
00F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800
F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8251B7B9A30>
I<F83F00F8FF80FBFFC0FFFFE0FF07E0FE03F0FC01F0FC01F0FC01F0F801F0F801F0F801F0F801
F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801
F0F801F0141B7B9A1F>I<007F000001FFC00007FFF0000FFFF8001FC1FC003F007E003E003E00
7C001F007C001F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F
807C001F007C001F007E003F003E003E003F007E001FC1FC000FFFF80007FFF00001FFC000007F
0000191B7E9A1E>I<F83F00F9FF80FBFFE0FFFFF0FF07F0FC01F8F800FCF800FCF8007CF8007E
F8003EF8003EF8003EF8003EF8003EF8003EF8003EF8007CF8007CF800FCFC00F8FC03F8FF07F0
FFFFE0FBFFC0F9FF80F87E00F80000F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F8000017277B9A1F>I<F838F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC00F800F8
00F800F800F800F800F800F800F800F800F800F800F800F800F800F800F8000D1B7B9A14>114
D<03FC001FFF803FFFC07FFFC07C07C0F80080F80000F80000F80000FC00007F80007FF8003FFE
001FFF0007FF8000FFC0000FE00007E00003E00003E04003E0E007E0FC0FC0FFFFC07FFF801FFE
0003F800131B7E9A17>I<07C00007C00007C00007C00007C00007C00007C000FFFFC0FFFFC0FF
FFC007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C04007E1C003FFE003FFE001FF8000FC0013227FA1
16>I<F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0
F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F803F0F803F0FC0FF0FFFFF07FFDF0
3FF9F01FC1F0141B7B9A1F>I<F8000F80FC000F807C001F007C001F007E001F003E003E003E00
3E001F003C001F007C001F007C000F8078000F80F8000F80F80007C0F00007C1F00007C1F00003
E1E00003E3E00001E3C00001E3C00001F3C00000F7800000F7800000F78000007F0000007F0000
007F0000191B7F9A1C>I<7C000FC03E001F803F001F001F803E000F807C0007C0FC0003E0F800
01F1F00001FBE00000FFC000007FC000003F8000001F0000001F0000003F8000007FC00000FBC0
0000F3E00001F1F00003E0F80007C07C000F807C000F803E001F001F003E000F807E000FC0FC00
07E01B1B809A1C>120 D<F8000F80FC000F807C001F007C001F003E003E003E003E001F003E00
1F007C001F007C000F807C000F80F80007C0F80007C0F00007C1F00003E1F00003E1E00001E1E0
0001E3E00001F3C00000F3C00000F38000007380000073800000370000003F0000003E0000001E
0000001E0000003C0000003C0000003C0000007800000078000000F0000000F000007FE000007F
E000007FC000007F00000019277F9A1C>I<FFFFF8FFFFF8FFFFF8FFFFF00003F00007E00007C0
000FC0001F80001F00003E00007E0000FC0000F80001F80003F00003E00007C0000FC0001F8000
1F00003F00007E00007FFFFCFFFFFCFFFFFCFFFFFC161B7E9A1A>I E /Fp
8 117 df<00000007C0000000000FC0000000000FC0000000001FC0000000003FC0000000007F
C000000000FFC000000000FFC000000001FFC000000003FFC000000007FFC00000000FFFC00000
000FFFC00000001EFFC00000003CFFC00000007CFFC0000000F8FFC0000000F0FFC0000001E0FF
C0000003C0FFC0000007C0FFC000000F80FFC000000F00FFC000001E00FFC000003C00FFC00000
7C00FFC00000F800FFC00000F000FFC00001E000FFC00003C000FFC00007C000FFC0000F8000FF
C0000F0000FFC0001E0000FFC0003C0000FFC0007C0000FFC000F80000FFC000FFFFFFFFFFC0FF
FFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0000001FFC000000001FFC000000001FFC000000001FF
C000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
07FFFFFFC00007FFFFFFC00007FFFFFFC00007FFFFFFC02A377DB631>52
D<0003FF800380003FFFF8078000FFFFFE0F8003FFFFFF9F8007FE00FFFF800FF8001FFF801FE0
7FFC00002C3B7BBA37>83 D<0001FFF800000FFFFF00003FFFFFC000FFC03FE001FF003FF007FE
007FF00FFC007FF00FF8007FF01FF8007FF03FF0007FF03FF0003FE07FF0001FC07FE0000F807F
E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000
FFE0000000FFE0000000FFE00000007FE00000007FF00000007FF00000003FF00000003FF80000
781FF80000780FFC0000F80FFE0001F007FF0003E003FF8007C000FFF03F80003FFFFF00000FFF
FC000001FFE00025267DA52C>99 D<0001FFC000001FFFF800007FFFFE0001FFC1FF8003FF007F
C007FE003FE00FFC001FF01FF8000FF01FF8000FF83FF00007F87FF00007F87FF00007FC7FE000
07FC7FE00003FCFFE00003FCFFE00003FCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFE0000000FFE0
000000FFE0000000FFE0000000FFE00000007FE00000007FE00000007FF00000003FF000003C3F
F000003C1FF800007C1FF80000FC0FFC0001F807FE0003F003FF0007E000FFE03FC0003FFFFF80
000FFFFC000000FFE00026267DA52D>101 D<01F80007FC000FFF001FFF001FFF801FFF801FFF
801FFF801FFF801FFF801FFF000FFF0007FC0001F8000000000000000000000000000000000000
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF
0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFFF8FFFF
F8FFFFF8FFFFF8153D7DBC1B>105 D<00FE007FE000FFFE03FFF800FFFE0FFFFE00FFFE1F83FF
00FFFE3E01FF0007FE7801FF8003FEF000FF8003FFE000FFC003FFC000FFC003FFC000FFC003FF
8000FFC003FF8000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFF
FC3FFFFFFFFFFC3FFFFF30267CA537>110 D<0000FFC00000000FFFFC0000003FFFFF000000FF
C0FFC00001FE001FE00007FC000FF80007F80007F8000FF00003FC001FF00003FE003FF00003FF
003FE00001FF007FE00001FF807FE00001FF807FE00001FF807FE00001FF80FFE00001FFC0FFE0
0001FFC0FFE00001FFC0FFE00001FFC0FFE00001FFC0FFE00001FFC0FFE00001FFC0FFE00001FF
C0FFE00001FFC07FE00001FF807FE00001FF807FE00001FF803FF00003FF003FF00003FF001FF0
0003FE000FF80007FC000FF80007FC0007FC000FF80003FE001FF00000FFC0FFC000003FFFFF00
00000FFFFC00000001FFE000002A267DA531>I<00078000000780000007800000078000000780
00000F8000000F8000000F8000000F8000001F8000001F8000003F8000003F8000007F800000FF
800001FF800007FF80001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FF800001FF800001FF800001
FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
01FF800001FF800001FF800001FF800001FF800001FF800001FF803C01FF803C01FF803C01FF80
3C01FF803C01FF803C01FF803C01FF803C00FF807800FFC078007FC0F8007FF1F0003FFFE0000F
FFC00001FF001E377EB626>116 D E /Fq 1 98 df<001800001800001800003C00003C00004E
00004E00004E000087000087000187800103800103800201C00201C003FFC00400E00400E00800
700800701800703C0078FE01FF18177F961C>97 D E /Fr 10 58 df<1F003F8060C04040C060
C060C060C060C060C060C060C06060C060C03F801F000B107F8F0F>48 D<18007800F800980018
00180018001800180018001800180018001800FF80FF8009107E8F0F>I<3F00FFC0F3E0F0E0F0
E000E000E001E001C007800F001C0038607060FFC0FFC00B107F8F0F>I<1F007F8071C079C071
C003C00F800F8001C000E060E0F0E0F0E0F1C07FC03F000B107F8F0F>I<070007000F001F001B
003B0033006300E300FFE0FFE00300030003001FE01FE00B107F8F0F>I<61807F807F007C0060
0060006F807FC079E070E000E0E0E0E0E0E1C0FFC03F000B107F8F0F>I<0F801FC039C071C060
00C200FFC0FFC0E0E0C060C060C06060E071C03FC01F000B107F8F0F>I<60007FE07FE0C0E0C1
C00380070006000E000E000C001C001C001C001C001C001C000B117E900F>I<1F003F8071C060
C070C07DC03F803F807FC0E3E0C0E0C060C060F1E07FC01F000B107F8F0F>I<1F007F8071C0E0
C0C060C060C060E0E07FE07FE0086000C071C073807F803E000B107F8F0F>I
E /Fs 1 59 df<70F8F8F87005057C840D>58 D E /Ft 84 125 df<001FC3F0007FEFF801F0FE
7803C0FC780780F87807007000070070000700700007007000070070000700700007007000FFFF
FF80FFFFFF80070070000700700007007000070070000700700007007000070070000700700007
007000070070000700700007007000070070000700700007007000070070007FE3FF007FE3FF00
1D20809F1B>11 D<001F8000FFC001F1E003C1E00781E00701E007000007000007000007000007
0000070000FFFFE0FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E00700E07FC3FE7FC3FE1720809F19>I<001FE000FFE0
01F1E003C1E00781E00700E00700E00700E00700E00700E00700E00700E0FFFFE0FFFFE00700E0
0700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0
0700E00700E07FE7FE7FE7FE1720809F19>I<001FC1FC00007FE7FE0001F0FF0F0003C0FC0F00
0780F80F000700F00F000700700000070070000007007000000700700000070070000007007000
00FFFFFFFF00FFFFFFFF0007007007000700700700070070070007007007000700700700070070
070007007007000700700700070070070007007007000700700700070070070007007007000700
700700070070070007007007007FE3FE3FF07FE3FE3FF02420809F26>I<7038F87CFC7EFC7E7C
3E0C060C060C061C0E180C381C7038F07860300F0E7E9F17>34 D<000300C0000300C0000300C0
000701C000060180000601800006018000060180000E0380000C0300000C0300000C0300000C03
00001C070000180600FFFFFFFEFFFFFFFE00300C0000300C0000300C0000701C00006018000060
18000060180000601800FFFFFFFEFFFFFFFE01C070000180600001806000018060000180600003
80E0000300C0000300C0000300C0000300C0000701C0000601800006018000060180001F297D9F
26>I<70F8FCFC7C0C0C0C1C183870F060060E7C9F0D>39 D<00E001C003C0038007000E000E00
1C001C003800380030007000700070006000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E00060007000700070003000380038001C001C000E000E000700038003C001C000E0
0B2E7DA112>I<E0007000780038001C000E000E000700070003800380018001C001C001C000C0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000C001C001C001C0018003
800380070007000E000E001C00380078007000E0000B2E7DA112>I<0006000000060000000600
000006000000060000000600000006000000060000000600000006000000060000000600000006
00000006000000060000FFFFFFF0FFFFFFF0000600000006000000060000000600000006000000
060000000600000006000000060000000600000006000000060000000600000006000000060000
1C207D9A23>43 D<70F8FCFC7C0C0C0C1C183870F060060E7C840D>I<FFC0FFC0FFC00A037F8A
0F>I<70F8F8F87005057C840D>I<00030003000700060006000E000C000C001C00180018003800
30003000700060006000E000C000C001C00180018001800380030003000700060006000E000C00
0C001C0018001800380030003000700060006000E000C000C000102D7DA117>I<03F0000FFC00
1E1E001C0E00380700780780700380700380700380F003C0F003C0F003C0F003C0F003C0F003C0
F003C0F003C0F003C0F003C0F003C0F003C0F003C07003807003807003807807803807001C0E00
1E1E000FFC0003F000121F7E9D17>I<018003801F80FF80E38003800380038003800380038003
800380038003800380038003800380038003800380038003800380038003800380FFFEFFFE0F1E
7C9D17>I<07F0001FFC003C3E00701F00600F80E00780F807C0F807C0F803C0F803C07007C000
07C00007C0000F80000F00001F00003E00003C0000780000F00001E0000380000700000E00C01C
00C03800C0700180FFFF80FFFF80FFFF80121E7E9D17>I<07F0001FFC003C3F00380F00780F80
780F807C0780780F80000F80000F80001F00001E00007E0003F80003F000003C00001F00000F80
000F800007C00007C07007C0F807C0F807C0F807C0F80F80E00F80701F003C3E001FFC0007F000
121F7E9D17>I<000E00000E00001E00003E00003E00006E0000EE0000CE00018E00038E00030E
00060E000E0E000C0E00180E00380E00300E00600E00E00E00FFFFF0FFFFF0000E00000E00000E
00000E00000E00000E00000E0000FFE000FFE0141E7F9D17>I<3807003FFF003FFE003FFC003F
F00030000030000030000030000030000030000031F80037FC003F1E003C0F0038078038078000
03C00003C00003C00003C07003C0F003C0F003C0F003C0E00780600780700F003C3E001FFC0007
F000121F7E9D17>I<00FE0003FF0007C7800F07801E07803C07803C0780780000780000700000
F06000F3FC00F7FE00FE0F00FC0780F80780F80380F003C0F003C0F003C0F003C0F003C07003C0
7003C07803C07807803807803C0F001E1E000FFC0003F000121F7E9D17>I<6000007FFFC07FFF
C07FFFC0600380C00300C00700C00E00000C00001C0000380000300000700000E00000E00000C0
0001C00001C00003C0000380000380000380000380000780000780000780000780000780000780
00078000078000121F7D9D17>I<03F0000FFC001E1E003C0F0038078070038070038070038078
03807C07807E07003F8E001FFC000FF80007F8000FFE001EFF003C3F80781F807007C0F003C0E0
03C0E001C0E001C0E001C0F003C07003807807003E1F001FFC0007F000121F7E9D17>I<03F000
0FFC001E1E003C0F00780700780780F00780F00380F00380F003C0F003C0F003C0F003C0F003C0
7007C07807C0780FC03C1FC01FFBC00FF3C00183C0000380000780000780780700780F00781E00
783C007878003FF0000FC000121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F870
05147C930D>I<70F8F8F8700000000000000000000070F8F8F87818181838303070E040051D7C
930D>I<70F8F8F870000000000070707070707070707070707070F8F8F8F8F8F8F8F8F8700521
7C960D>I<FFFFFFF0FFFFFFF00000000000000000000000000000000000000000000000000000
000000000000FFFFFFF0FFFFFFF01C0C7D9023>I<07000F800F800F8007000000000000000000
000003000300070006000600060006000E000E001C003C007C007800F000F03CF03CF03CF01CF0
3878783FF01FC00E207D9615>I<0003800000038000000380000007C0000007C0000007C00000
0DE000000DE000000DE0000018F0000018F0000018F00000307800003078000030780000603C00
00603C0000603C0000E01E0000C01E0000FFFE0001FFFF0001800F0001800F0003800F80030007
8003000780070007C0070003C00F8003C0FFE03FFEFFE03FFE1F207F9F22>65
D<FFFFE000FFFFF80007803E0007801F0007800F0007800F8007800F8007800F8007800F800780
0F8007800F0007801F0007803E0007807C0007FFF80007FFFC0007801E0007800F0007800F8007
800780078007C0078007C0078007C0078007C0078007C00780078007800F8007801F0007803E00
FFFFFC00FFFFF0001A1F7E9E20>I<001FC0C000FFF0C001F83DC007E00FC00F8007C00F0007C0
1F0003C03E0001C03C0001C07C0001C07C0000C07C0000C0F80000C0F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F80000007C0000C07C0000C07C0000C03C0001C03E00
01801F0001800F0003800F80070007E00E0001F83C0000FFF800001FE0001A217D9F21>I<FFFF
E000FFFFFC0007803E0007800F0007800780078003C0078003E0078001E0078001F0078000F007
8000F0078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F8
078000F0078000F0078001F0078001E0078001E0078003C00780078007800F0007803E00FFFFFC
00FFFFE0001D1F7E9E23>I<FFFFFF00FFFFFF0007801F00078007000780030007800300078003
8007800180078001800780C1800780C1800780C0000780C0000781C00007FFC00007FFC0000781
C0000780C0000780C0000780C0600780C06007800060078000C0078000C0078000C0078001C007
8001C0078003C007800F80FFFFFF80FFFFFF801B1F7E9E1F>I<FFFFFF00FFFFFF0007801F0007
80070007800300078003000780038007800180078001800780C1800780C1800780C0000780C000
0781C00007FFC00007FFC0000781C0000780C0000780C0000780C0000780C00007800000078000
00078000000780000007800000078000000780000007800000FFFE0000FFFE0000191F7E9E1E>
I<001FE060007FF86001F83CE003E00FE007C007E00F8003E01F0001E03E0000E03E0000E07C00
00E07C0000607C000060F8000060F8000000F8000000F8000000F8000000F8000000F8000000F8
007FFCF8007FFC7C0001E07C0001E07C0001E03E0001E03E0001E01F0001E00F8001E007C003E0
03E007E001FC1FE0007FFC60001FF0001E217D9F24>I<FFF8FFF8FFF8FFF807800F0007800F00
07800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F
0007FFFF0007FFFF0007800F0007800F0007800F0007800F0007800F0007800F0007800F000780
0F0007800F0007800F0007800F0007800F0007800F00FFF8FFF8FFF8FFF81D1F7E9E22>I<FFFC
FFFC07800780078007800780078007800780078007800780078007800780078007800780078007
8007800780078007800780078007800780FFFCFFFC0E1F7F9E10>I<0FFFC00FFFC0003C00003C
00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C
00003C00003C00003C00003C00003C00003C00703C00F83C00F83C00F83C00F87C00E0780078F0
003FE0000FC00012207E9E17>I<FFFC1FFCFFFC1FFC078007E00780078007800F0007801E0007
801C0007803800078070000780E0000781C0000783800007878000078F8000079FC00007BBC000
07FBE00007F1F00007E1F00007C0F8000780780007807C0007803E0007803E0007801F0007800F
0007800F80078007C007800FE0FFFC3FFCFFFC3FFC1E1F7E9E23>I<FFFE00FFFE000780000780
000780000780000780000780000780000780000780000780000780000780000780000780000780
0007800007800007800607800607800607800607800E07800E07800C07801C07803C0780FCFFFF
FCFFFFFC171F7E9E1C>I<FF80001FF8FFC0003FF807C0003F0007C0003F0006E0006F0006E000
6F0006E0006F00067000CF00067000CF00067000CF000638018F000638018F000638018F00061C
030F00061C030F00061C030F00060E060F00060E060F00060E060F0006070C0F0006070C0F0006
070C0F000603980F000603980F000603980F000601F00F000601F00F000601F00F000F00E00F00
FFF0E1FFF8FFF0E1FFF8251F7E9E2A>I<FF807FF8FFC07FF807C0078007E0030007F0030006F0
030006F8030006780300067C0300063C0300063E0300061F0300060F0300060F83000607830006
07C3000603C3000603E3000601E3000601F3000600FB0006007B0006007F0006003F0006003F00
06001F0006001F0006000F000F000700FFF00700FFF003001D1F7E9E22>I<001F800000FFF000
01E0780007C03E000F801F000F000F001E0007803C0003C03C0003C07C0003E07C0003E0780001
E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F07800
01E07C0003E07C0003E03C0003C03E0007C01E0007800F000F000F801F0007C03E0001F0F80000
FFF000001F80001C217D9F23>I<FFFFE000FFFFF80007807C0007801E0007801F0007800F0007
800F8007800F8007800F8007800F8007800F8007800F0007801F0007801E0007807C0007FFF800
07FFE0000780000007800000078000000780000007800000078000000780000007800000078000
00078000000780000007800000FFFC0000FFFC0000191F7E9E1F>I<001F800000FFF00001E078
0007C03E000F801F000F000F001E0007803E0007C03C0003C07C0003E07C0003E0780001E0F800
01F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C
0003E07C0003E03C0003C03E0F07C01E1F87800F38CF000FB05F0007F07E0001F8780000FFF010
001FB010000030100000383000003C7000003FF000001FE000001FE000001FC000000F801C297D
9F23>I<FFFF8000FFFFF0000780F80007803C0007803E0007801E0007801F0007801F0007801F
0007801F0007801E0007803E0007803C000780F80007FFF00007FFC0000781E0000780F0000780
F0000780780007807800078078000780780007807C0007807C0007807C0007807C0C07807E0C07
803E1CFFFC3F1CFFFC1FF8000007F01E207E9E21>I<07E1801FF9803C3F80780F80700780E003
80E00380E00180E00180E00180F00000F800007C00007F80003FF8003FFE000FFF0003FF00003F
80000F800003C00003C00001C0C001C0C001C0C001C0E001C0E00380F00380F80780FE0F00CFFE
00C3F80012217D9F19>I<7FFFFFE07FFFFFE0780F01E0700F00E0600F0060600F0060E00F0070
C00F0030C00F0030C00F0030C00F0030000F0000000F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F000007FFFE0007FFFE001C1F7E9E21>I<FFFC7FF8FFFC7FF8078007800780
030007800300078003000780030007800300078003000780030007800300078003000780030007
800300078003000780030007800300078003000780030007800300078003000780030007800300
078003000780070003C0060003C00E0001E00C0000F01C0000F87800003FF000000FC0001D207E
9E22>I<FFF007FEFFF007FE0F8001F00F0000E0078000C0078000C007C001C003C0018003C001
8003E0038001E0030001E0030000F0060000F0060000F0060000780C0000780C0000780C00003C
1800003C1800003C1800001E3000001E3000001F7000000F6000000F6000000FE0000007C00000
07C0000003800000038000000380001F207F9E22>I<FFF07FF83FF0FFF07FF83FF01F000F800F
800F00078003000F000780030007800FC0060007800FC0060007800FC00600078019E00E0003C0
19E00C0003C019E00C0003C039E00C0001E030F0180001E030F0180001E030F0180000F0607830
0000F06078300000F06078300000F0E07C30000078C03C60000078C03C60000078C03C6000003D
801EC000003D801EC000003D801EC000003F000FC000001F000F8000001F000F8000001F000F80
00000E00070000000E00070000000E000700002C207F9E2F>I<7FF83FF87FF83FF807E00F8003
C00F0001E00E0001F00C0000F0180000783800007C3000003C7000003E6000001EC000000FC000
000F8000000780000007C0000007E000000DE000001DF0000018F8000038780000307C0000603C
0000E01E0000C01F0001800F0003800780078007C00FC007E0FFE01FFEFFE01FFE1F1F7F9E22>
I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0FEFE072D7CA10D>91 D<180C3C1E381C70386030E070C060C060C060F87CFC7EFC7E
7C3E381C0F0E7B9F17>I<FEFE0606060606060606060606060606060606060606060606060606
060606060606060606060606060606FEFE072D7FA10D>I<3FE0007FF800787C00781E00781E00
000E00000E00000E0007FE001FFE003F0E007C0E00F80E00F00E30F00E30F01E30F81E307C7F70
3FFFE01FC78014147E9317>97 D<0E0000FE0000FE00000E00000E00000E00000E00000E00000E
00000E00000E00000E00000E3F000EFFC00FC3E00F81E00F00F00E00F00E00780E00780E00780E
00780E00780E00780E00780E00780E00F00F00F00F81E00FC3C00CFF800C7F0015207F9F19>I<
03FC0FFE1E1E3C1E781E7800F000F000F000F000F000F000F000F80078007C033E071F0E0FFC03
F010147E9314>I<000380003F80003F8000038000038000038000038000038000038000038000
038000038007F3800FFF801E1F803C0780780780780380F00380F00380F00380F00380F00380F0
0380F00380F003807803807807803C0F803E1F801FFBF807E3F815207E9F19>I<03F0000FFC00
1E1E003C0F00780700780780F00780F00380FFFF80FFFF80F00000F00000F00000F80000780000
7C01803E03801F87000FFE0003F80011147F9314>I<007E00FF01EF038F078F07000700070007
00070007000700FFF0FFF007000700070007000700070007000700070007000700070007000700
070007007FF07FF01020809F0E>I<0001E007F7F00FFF703E3E703C1E00780F00780F00780F00
780F00780F00780F003C1E003E3E003FF80037F0003000003000003800003FFE001FFFC03FFFE0
7803E0F000F0E00070E00070E00070F000F07801E03E07C01FFF8003FC00141F7F9417>I<0E00
00FE0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E7F000EFF
800FC7C00F83C00F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C0FFE7FCFFE7FC16207F9F19>I<1E003E003E003E001E00000000000000
0000000000000E007E007E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E00FFC0FFC00A1F809E0C>I<00E001F001F001F000E0000000000000000000000000007007
F007F000F000700070007000700070007000700070007000700070007000700070007000700070
007000700070F0F0F0E0F1E0FFC03F000C28829E0E>I<0E0000FE0000FE00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E1FF00E1FF00E0F800E0F000E1E000E3C000E
78000EF0000FF0000FF8000FBC000F3C000E1E000E0F000E0F000E07800E07800E03C0FFCFF8FF
CFF815207F9F18>I<0E00FE00FE000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B20809F0C
>I<0E3F03F000FEFFCFFC00FFC3DC3C000F81F81E000F00F00E000F00F00E000E00E00E000E00
E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E
00E00E000E00E00E000E00E00E00FFE7FE7FE0FFE7FE7FE023147F9326>I<0E7F00FEFF80FFC7
C00F83C00F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C0FFE7FCFFE7FC16147F9319>I<01F80007FE001E07803C03C03801C07000E070
00E0F000F0F000F0F000F0F000F0F000F0F000F07000E07801E03801C03C03C01E078007FE0001
F80014147F9317>I<0E3F00FEFFC0FFC3E00F81E00F01F00E00F00E00F80E00780E00780E0078
0E00780E00780E00780E00F80E00F00F01F00F81E00FC7C00EFF800E7F000E00000E00000E0000
0E00000E00000E00000E0000FFE000FFE000151D7F9319>I<07F1800FF9801F1F803C0F807C07
80780380F80380F00380F00380F00380F00380F00380F00380F803807807807C07803C0F803E1F
801FFB8007E380000380000380000380000380000380000380000380003FF8003FF8151D7E9318
>I<0E7CFFFEFFDE0F9E0F1E0F000E000E000E000E000E000E000E000E000E000E000E000E00FF
E0FFE00F147F9312>I<1FB07FF078F0E070E030E030F000FC007FC03FE00FF000F8C078C038E0
38E038F078F8F0FFE0CFC00D147E9312>I<06000600060006000E000E001E003E00FFF8FFF80E
000E000E000E000E000E000E000E000E000E000E180E180E180E180E180F3007F003E00D1C7F9B
12>I<0E01C0FE1FC0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C00E03C00E07C00F0FC007FDFC03F9FC16147F9319>I<FF87F8FF87F81E03
E00E01C00E01800E0180070300070300070300038600038600038E0001CC0001CC0001FC0000F8
0000F80000700000700000700015147F9318>I<FF9FF3FCFF9FF3FC1C07C0F01C0780E01C07C0
E00E0FC0C00E0CC0C00E0CE0C0070CE18007186180071871800398730003B0330003B0330003B0
3F0001F03E0001E01E0001E01E0000E01C0000C00C001E147F9321>I<7FC7FC7FC7FC0F03E007
038003830001C70000EE0000EC00007800003800003C00007C0000EE0001C70001870003038007
01C01F01E0FF87FEFF87FE1714809318>I<FF87F8FF87F81E03E00E01C00E01800E0180070300
070300070300038600038600038E0001CC0001CC0001FC0000F80000F800007000007000007000
00600000600000600000C000F0C000F18000F380007F00003C0000151D7F9318>I<3FFF3FFF38
1F301E703C6078607860F001E003C003C007830F031E031E073C067806F81EFFFEFFFE10147F93
14>I<FFFFFCFFFFFC1602808C17>I<FFFFFFFFFFF0FFFFFFFFFFF02C02808C2D>I
E /Fu 28 121 df<000FF07F00007FFFFF8001FC3FEFC003F07F8FC007E07F8FC007C07F0FC007
C07F078007C03F000007C01F000007C01F000007C01F000007C01F0000FFFFFFF800FFFFFFF800
07C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F00
0007C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F
00003FF8FFF0003FF8FFF0002220809F1F>11 D<7CFEFEFFFFFF7F030707060E1C3C787008107C
860F>44 D<FFF0FFF0FFF0FFF00C047F8B11>I<00700000F0000FF000FFF000F3F00003F00003
F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003
F00003F00003F00003F00003F00003F00003F00003F000FFFF80FFFF80111D7C9C1A>49
D<0001C00003C00007C00007C0000FC0001FC0003FC00077C00067C000C7C00187C00387C00707
C00E07C00C07C01807C03807C07007C0E007C0FFFFFEFFFFFE000FC0000FC0000FC0000FC0000F
C0000FC001FFFE01FFFE171D7F9C1A>52 D<0000E000000000E000000001F000000001F0000000
01F000000003F800000003F800000007FC00000007FC0000000FFE0000000CFE0000000CFE0000
00187F000000187F000000307F800000303F800000703FC00000601FC00000601FC00000C01FE0
0000C00FE00001FFFFF00001FFFFF000018007F000030003F800030003F800060003FC00060001
FC000E0001FE00FFE01FFFE0FFE01FFFE0231F7E9E28>65 D<000FFC06007FFF8E01FE03DE03F8
00FE0FE0007E1FC0003E1F80001E3F80000E7F00000E7F00000E7F000006FE000006FE000000FE
000000FE000000FE000000FE000000FE000000FE000000FE0000007F0000067F0000067F000006
3F80000E1F80000C1FC0001C0FE0003803F800F001FF03E0007FFF80000FFC001F1F7D9E26>67
D<000FFC0600007FFF8E0001FE03DE0003F800FE000FE0007E001FC0003E001F80001E003F8000
0E007F00000E007F00000E007F00000600FE00000600FE00000000FE00000000FE00000000FE00
000000FE00000000FE007FFFE0FE007FFFE0FE0000FE007F0000FE007F0000FE007F0000FE003F
8000FE001F8000FE001FC000FE000FE000FE0003F801FE0001FF07FE00007FFF3E00000FFC0600
231F7D9E29>71 D<FFFFFE00FFFFFF8007F00FE007F003F007F001F807F001F807F001FC07F001
FC07F001FC07F001FC07F001FC07F001F807F001F807F003F007F00FE007FFFF8007FFFE0007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
F0000007F00000FFFF8000FFFF80001E1F7E9E24>80 D<001FF80000FFFF0001F81F8007E007E0
0FC003F01F8001F81F8001F83F0000FC7F0000FE7F0000FE7E00007EFE00007FFE00007FFE0000
7FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F7E00007E7E00007E7F0000FE3F00
00FC3F87C1FC1F8FF1F80FDC3BF007F83FE001FC1F8000FFFF00001FFE0300000F0300000F8700
000FFF00000FFF000007FE000007FE000003FC000003FC000001F020287D9E27>I<07FC001FFF
803F0FC03F07C03F03E03F03E01E03E00003E001FFE00FFFE03FC3E07E03E0FC03E0F803E0F803
E0F803E0FC07E07E1FE03FFDFE0FF0FE17147F9319>97 D<FF0000FF00001F00001F00001F0000
1F00001F00001F00001F00001F00001F00001F00001F1FC01FFFF01FE1F81F807C1F007E1F003E
1F003F1F003F1F003F1F003F1F003F1F003F1F003F1F003F1F003E1F007E1F80FC1FE1F81CFFF0
183FC018207E9F1D>I<03FE000FFF801F8FC03F0FC07E0FC07C0FC0FC0780FC0000FC0000FC00
00FC0000FC0000FC0000FC00007E00007E00603F00E01FC3C00FFF8003FE0013147E9317>I<00
07F80007F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F803FCF80F
FFF81F87F83F01F87E00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C
00F87E01F83E03F81F87F80FFEFF03F8FF18207E9F1D>I<01FF0007FFC01F87E03F01F07E00F0
7E00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007E00003E00183F00381FC0F0
07FFE001FF8015147F9318>I<03FE7C0FFFFE1F8FDE1F07DE3E03E03E03E03E03E03E03E03E03
E01F07C01F8FC01FFF801FFE001800001C00001E00001FFFC01FFFF00FFFF83FFFFC7C00FEF800
3EF0001EF0001EF0001EF8003E7C007C3F01F81FFFF003FF80171E7F931A>103
D<1E003F007F007F007F003F001E00000000000000000000000000FF00FF001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B217EA00E>105
D<007C00FE00FE00FE00FE00FE007C00000000000000000000000001FE01FE003E003E003E003E
003E003E003E003E003E003E003E003E003E003E003E003E003E003E003E003E783EFC3EFC7EFC
7CFCF87FF01FC00F2A83A010>I<FF0000FF00001F00001F00001F00001F00001F00001F00001F
00001F00001F00001F00001F01FE1F01FE1F00F01F01E01F03801F07001F1E001F3C001F7C001F
FE001FFF001F9F001E0F801E07C01E07E01E03F01E01F01E00F8FFC3FFFFC3FF18207E9F1C>I<
FE1FE07F80FE7FF9FFE01EF0FBC3E01FC0FF03F01F807E01F01F807E01F01F007C01F01F007C01
F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C
01F01F007C01F01F007C01F0FFE3FF8FFEFFE3FF8FFE27147D932C>109
D<FE1FC0FE7FF01EF1F01FC0F81F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F8FFE3FFFFE3FF18147D931D>I<01FF0007FFC01F83F03E
00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F83E
00F81F83F007FFC001FF0017147F931A>I<FF1FC0FFFFF01FE1F81F80FC1F007E1F007E1F003F
1F003F1F003F1F003F1F003F1F003F1F003F1F007F1F007E1F007E1F80FC1FE3F81FFFF01F3FC0
1F00001F00001F00001F00001F00001F00001F0000FFE000FFE000181D7E931D>I<FE3F00FEFF
801EEFC01FCFC01F8FC01F8FC01F07801F00001F00001F00001F00001F00001F00001F00001F00
001F00001F00001F0000FFF000FFF00012147E9316>114 D<0FF63FFE781EE00EE006F006F800
FFC07FF87FFC1FFE03FF003FC00FE007E007F00FFC1EFFFCCFF010147E9315>I<018001800180
03800380038007800F803F80FFFCFFFC0F800F800F800F800F800F800F800F800F800F800F860F
860F860F860F860FCC07FC01F80F1D7F9C14>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F01F81F03F81F87F80FFEFF03
FCFF18147D931D>I<FFE1FF00FFE1FF000F80700007C0E00007E0C00003E1800001F3800000FF
0000007E0000003E0000003F0000007F8000006F800000C7C0000183E0000381F0000701F8000E
00FC00FF81FF80FF81FF8019147F931C>120 D E /Fv 17 121 df<07E0001FF8003FFC007FFE
00FFFE00FFFF00FFFF00FFFF80FFFF80FFFF80FFFF80FFFF807FFF803FFF801FFF8007E7800007
80000F80000F80000F00000F00001F00001F00003E00003E00007C00007C0000F80001F80003F0
0007E0000FE0001FC0001F80001F00000E00001124788F21>44 D<000000007FFE00001E000000
FC00000000000FFFFFE00000000000007FFE000000474979C756>67 D<000000007FFE00001E00
000FFFFFF0000E00000000007FFF000000004F4979C75D>71 D<0007FFFE000000007FFFFFE000
AD3A>97 D<00001FFFC0000001FFFFFC000007FFFFFF00001FFFFFFF80007FFC01FFC000FFF003
FFE003FFC003FFE007FF8003FFE00FFF8003FFE00FFF0003FFE01FFE0003FFE01FFE0003FFE03F
FC0001FFC03FFC0000FF807FFC00007F007FFC000000007FF800000000FFF800000000FFF80000
0000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FF
F800000000FFF800000000FFF800000000FFF8000000007FFC000000007FFC000000007FFC0000
00003FFC000000003FFE000000F81FFE000000F81FFF000001F80FFF000003F80FFF800003F007
FFC00007E003FFE0000FE000FFF8003FC0007FFE01FF80001FFFFFFE000007FFFFF8000001FFFF
E00000001FFF00002D2E7CAD35>99 D<00000000007FC00000000000FFFFC00000000000FFFFC0
003FF803FFFF8039487CC742>I<00001FFE00000001FFFFE0000007FFFFF800001FFFFFFE0000
7FFC07FF0000FFE001FF8001FFC000FFC003FF80003FE007FF00003FF00FFE00001FF01FFE0000
0FF81FFC00000FF83FFC00000FFC3FFC000007FC7FFC000007FC7FF8000007FC7FF8000007FE7F
F8000007FEFFF8000007FEFFF8000007FEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFF
FFFEFFF800000000FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000007F
FC000000003FFC000000003FFC000000003FFC0000003E1FFE0000003E0FFE0000007E0FFF0000
007E07FF800000FC03FFC00001F801FFE00007F800FFF0001FF0003FFE00FFE0001FFFFFFF8000
07FFFFFE000000FFFFF80000000FFF80002F2E7DAD36>I<00FC0003FF0007FF800FFFC00FFFC0
1FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFFC00FFFC007FF8003FF0000FC00000000000000
000000000000000000000000000000000000000000000000000000007FC0FFFFC0FFFFC0FFFFC0
FFFFC0FFFFC003FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0
01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0
01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFFFFFF
FFFFFFFFFFFFFFFFFF18497CC820>105 D<007FC001FFC00000FFE00000FFFFC00FFFF80007FF
FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF05C2E7CAD63>109
D<007FC001FFC00000FFFFC00FFFF80000FFFFC03FFFFE0000FFFFC0FFFFFF8000FFFFC1FE07FF
FFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE03B2E7CAD42>I<00000FFF0000000000FFFFF00000
3B>I<007FC01FFE000000FFFFC0FFFFE00000FFFFC3FFFFF80000FFFFCFFFFFFE0000FFFFFFF0
FFFFFFC000000000FFFFFFC000000000FFFFFFC00000000039427CAD42>I<00FF803FC000FFFF
81FFF000FFFF83FFFC00FFFF87FFFE00FFFF8FE7FF00FFFF9F8FFF8003FFBF0FFF8001FFBE0FFF
8001FFFC0FFF8001FFF80FFF8001FFF80FFF8001FFF00FFF8001FFF007FF0001FFF003FE0001FF
E001FC0001FFE000000001FFE000000001FFE000000001FFC000000001FFC000000001FFC00000
0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FF
C000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FF
C0000000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000292E7CAD31
>114 D<000FFF81E000FFFFF7E003FFFFFFE00FFFFFFFE01FFC01FFE03FE0003FE03FC0000FE0
7F80000FE07F000007E0FF000003E0FF000003E0FF800003E0FF800003E0FFC0000000FFF00000
00FFFF000000FFFFF80000FFFFFFC0007FFFFFF8007FFFFFFE003FFFFFFF001FFFFFFFC00FFFFF
FFE003FFFFFFF000FFFFFFF0003FFFFFF80007FFFFF800001FFFFC000000FFFC0000003FFCF800
001FFCF800000FFCFC000007FCFC000003FCFC000003FCFE000003FCFF000003F8FF000007F8FF
800007F8FFE0000FF0FFF0001FE0FFFE00FFC0FFFFFFFF80FEFFFFFE00FC3FFFF800F003FFC000
262E7CAD2F>I<0001F000000001F000000001F000000001F000000001F000000001F000000003
F000000003F000000003F000000007F000000007F000000007F00000000FF00000000FF0000000
1FF00000003FF00000003FF00000007FF0000001FFF0000003FFF000000FFFFFFFC0FFFFFFFFC0
FFFFFFFFC0FFFFFFFFC0FFFFFFFFC000FFF0000000FFF0000000FFF0000000FFF0000000FFF000
0000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0
000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FF
F0000000FFF0000000FFF0000000FFF001F000FFF001F000FFF001F000FFF001F000FFF001F000
FFF001F000FFF001F000FFF001F000FFF001F000FFF803F0007FF803E0007FF807E0003FFC0FE0
003FFE1FC0001FFFFF800007FFFF000001FFFC0000003FF00024427EC12E>I<007FE000003FF0
FFE000003FFE007FFFE03B2E7CAD42>I<7FFFFF801FFFFF007FFFFF801FFFFF007FFFFF801FFF
>120 D E /Fw 46 122 df<0000C018000000C018000000C018000001C0380000018030000001
80300000018030000003807000000300600000030060000003006000000700E000000600C00000
0600C000000600C000000E01C000000C018000FFFFFFFFC0FFFFFFFFC000180300000018030000
001803000000380700000030060000003006000000300600000030060000FFFFFFFFC0FFFFFFFF
C000600C000000E01C000000C018000000C018000000C018000001C03800000180300000018030
0000018030000003807000000300600000030060000003006000000700E000000600C000000600
C00000222D7DA229>35 D<70F8FCFC7C0C0C0C1C18183870E0E0060F7C840E>44
D<FFE0FFE0FFE00B037F8B10>I<70F8F8F87005057C840E>I<01F00007FC000E0E001C07003803
803803807803C07001C07001C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001
E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001C07001C07803C03803803803801C07
000E0E0007FC0001F00013227EA018>48 D<018003800F80FF80F3800380038003800380038003
800380038003800380038003800380038003800380038003800380038003800380038003800380
0380FFFEFFFE0F217CA018>I<03F8000FFE001E1F00380F807007C07807C07C07C07807C07807
C00007C00007C0000780000F80001F00003E0003FC0003F800001E00000F000007800007C00003
E00003E07003E0F803E0F803E0F803E0F803E0E007C07007C0780F803E1F000FFE0003F8001322
7EA018>51 D<000E00000E00001E00001E00003E00003E00006E0000EE0000CE0001CE00018E00
030E00070E00060E000E0E000C0E00180E00180E00300E00700E00600E00E00E00FFFFF8FFFFF8
000E00000E00000E00000E00000E00000E00000E0001FFF001FFF015217FA018>I<1801801E07
801FFF801FFF001FFC001FF00018000018000018000018000018000018000019F8001FFE001F0F
001E07801C03C01803C00001C00001E00001E00001E00001E07001E0F001E0F001E0F001E0E003
C0E003C0700780380F803E1F000FFC0007F00013227EA018>I<007E0001FF8003C3C00703C00E
03C01E03C03C03C0380000780000780000780000702000F3FC00F7FF00FE0F80FC0780F803C0F8
03C0F801E0F001E0F001E0F001E0F001E0F001E07001E07001E07801E07801C03803C03C03801E
07800F1F0007FE0003F80013227EA018>I<03F8000FFE001F1F003C07803803807003C07001C0
7001C07001C07801C07C03C03E07803F87001FDE000FFC0007F80007FE000FFF001E3F803C1FC0
7807C07003E0F001E0E001E0E000E0E000E0E000E0F000E07001C07803C03C07801E0F000FFE00
03F80013227EA018>56 D<03F8000FFC001F1E003C07003807807803807003C0F003C0F001C0F0
01C0F001E0F001E0F001E0F001E0F001E0F003E07803E07803E03C07E03E0FE01FFDE007F9E000
81E00001C00003C00003C0000380780780780700780F00781E00787C003FF8000FE00013227EA0
18>I<000180000003C0000003C0000003C0000007E0000007E0000007E000000FF000000CF000
000CF000001CF800001878000018780000383C0000303C0000303C0000601E0000601E0000601E
0000C00F0000C00F0000C00F0001FFFF8001FFFF8001800780030003C0030003C0030003C00600
01E0060001E0060001E00E0000F01F0001F0FFC00FFFFFC00FFF20237EA225>65
D<000FF030007FFC3000FC1E7003F0077007C003F00F8001F01F0001F01F0000F03E0000F03C00
00707C0000707C0000707C000030F8000030F8000030F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F80000307C0000307C0000307C0000303E0000703E0000601F0000E0
1F0000C00F8001C007C0038003F0070000FC1E00007FFC00000FF0001C247DA223>67
D<FFFFFFC0FFFFFFC007800FC0078003C0078001C0078000C0078000E0078000E0078000600780
60600780606007806060078060000780E0000781E00007FFE00007FFE0000781E0000780E00007
806000078060000780601807806018078000180780003007800030078000300780003007800070
078000F0078001F0078007E0FFFFFFE0FFFFFFE01D227EA121>69 D<FFFFFFC0FFFFFFC007800F
C0078003C0078001C0078000C0078000E0078000E0078000600780006007806060078060600780
6000078060000780E0000781E00007FFE00007FFE0000781E0000780E000078060000780600007
806000078060000780000007800000078000000780000007800000078000000780000007800000
FFFE0000FFFE00001B227EA120>I<FFFCFFFC0780078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
80FFFCFFFC0E227EA112>73 D<FFC00003FFFFE00007FF07E00007E007E00007E006F0000DE006
F0000DE006F0000DE006780019E006780019E006780019E0063C0031E0063C0031E0063C0031E0
061E0061E0061E0061E0061E0061E0060F00C1E0060F00C1E006078181E006078181E006078181
E00603C301E00603C301E00603C301E00601E601E00601E601E00601E601E00600FC01E00600FC
01E00600FC01E006007801E01F807801E0FFF0783FFFFFF0303FFF28227EA12D>77
D<FF800FFFFFC00FFF07E001F807E0006007F0006006F0006006F80060067C0060063C0060063E
0060061E0060061F0060060F8060060780600607C0600603C0600603E0600601F0600600F06006
00F86006007C6006007C6006003E6006001E6006001F6006000FE006000FE0060007E0060003E0
060003E0060001E01F8001E0FFF000E0FFF0006020227EA125>I<FFFFF000FFFFFC0007803F00
07800F8007800780078003C0078003C0078003E0078003E0078003E0078003E0078003E0078003
C0078003C00780078007800F8007803F0007FFFC0007FFF0000780000007800000078000000780
0000078000000780000007800000078000000780000007800000078000000780000007800000FF
FC0000FFFC00001B227EA121>80 D<FFFFE00000FFFFF8000007803E000007800F000007800780
00078007C000078003E000078003E000078003E000078003E000078003E000078003E000078007
C000078007800007800F000007803E000007FFF8000007FFF000000780F8000007803C00000780
1E000007801E000007800F000007800F000007800F000007800F800007800F800007800F800007
800F800007800F818007800FC180078007C380FFFC07E700FFFC03FF00000000FE0021237EA124
>82 D<07F0600FFE601E1FE03807E07003E07001E0E000E0E000E0E00060E00060F00060F00000
F800007C00007F00003FF0001FFE000FFF8003FFC0007FC00007E00001E00001F00000F00000F0
C00070C00070C00070E00070E000F0F000E0F801E0FC01C0FF0780C7FF00C1FC0014247DA21B>
I<7FFFFFF87FFFFFF87C0780F8700780386007801860078018E007801CC007800CC007800CC007
800CC007800CC007800C0007800000078000000780000007800000078000000780000007800000
078000000780000007800000078000000780000007800000078000000780000007800000078000
00078000000780000007800003FFFF0003FFFF001E227EA123>I<1FF0003FFC003C3E003C0F00
3C0F00000700000700000F0003FF001FFF003F07007C0700F80700F80700F00718F00718F00F18
F81F187C3FB83FF3F01FC3C015157E9418>97 D<0E0000FE0000FE00001E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E00000E3FC00EFFE00FE1F00F80780F003C0E
003C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0F007C0F80F80F
E1F00CFFE00C3F8017237FA21B>I<03FE000FFF801F07803E07803C0780780000780000F00000
F00000F00000F00000F00000F00000F000007800007800C03C01C03E01801F87800FFF0003FC00
12157E9416>I<0000E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E003F8E00FFEE01F0FE03E03E07C01E07800E07800E0F000E0F000E0F000
E0F000E0F000E0F000E0F000E07000E07801E07801E03C03E01F0FF00FFEFE03F0FE17237EA21B
>I<01FC0007FF001F0F803E03C03C01C07801E07801E0FFFFE0FFFFE0F00000F00000F00000F0
0000F000007800007800603C00E03E01C00F83C007FF0001FC0013157F9416>I<003E00FF01EF
03CF038F070007000700070007000700070007000700FFF8FFF807000700070007000700070007
0007000700070007000700070007000700070007007FF87FF8102380A20F>I<0000F003FBF807
FFB80F1F381E0F003C07803C07803C07803C07803C07803C07803C07801E0F001F1E001FFC001B
F8001800001800001C00001FFF000FFFC03FFFF07C01F0700078F00078E00038E00038E00038F0
00787800F03F07E01FFFC003FE0015217F9518>I<0E0000FE0000FE00001E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E3F800EFFE00FE1E00F80F00F0070
0F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
0E0070FFE7FFFFE7FF18237FA21B>I<1E003E003E003E001E0000000000000000000000000000
0000000E00FE00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E00FFC0FFC00A227FA10E>I<01C003E003E003E001C000000000000000000000000000000000
01E00FE00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E0F1E0F1C0F3C0FF803E000B2C82A10F>I<0E0000FE0000FE0000
1E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FFC0E0FFC
0E07E00E07800E07000E1E000E3C000E78000EF8000FFC000FFC000F1E000E0F000E0F800E0780
0E03C00E03E00E01E00E01F0FFE3FEFFE3FE17237FA21A>I<0E00FE00FE001E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E00FFE0FFE00B237FA20E>I<0E3FC0FF00FEFFF3FFC0FFE0F783C0
1F807E01E00F003C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800
E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E0038
00E0FFE3FF8FFEFFE3FF8FFE27157F942A>I<0E3F80FEFFE0FFE1E01F80F00F00700F00700E00
700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7
FFFFE7FF18157F941B>I<01FC0007FF000F07801C01C03800E07800F0700070F00078F00078F0
0078F00078F00078F00078F000787000707800F03800E01C01C00F078007FF0001FC0015157F94
18>I<0E3FC0FEFFE0FFE1F00F80F80F007C0E003C0E003E0E001E0E001E0E001E0E001E0E001E
0E001E0E003E0E003C0E003C0F007C0F80F80FE1F00EFFE00E3F800E00000E00000E00000E0000
0E00000E00000E00000E0000FFE000FFE000171F7F941B>I<0E7EFEFFFFEF1F8F0F0F0F000F00
0E000E000E000E000E000E000E000E000E000E000E000E00FFF0FFF010157F9413>114
D<1FD83FF87878F038E018E018F018F8007F807FE01FF003F8007CC03CC01CE01CE01CF03CF878
FFF0CFE00E157E9413>I<060006000600060006000E000E000E001E003E00FFF8FFF80E000E00
0E000E000E000E000E000E000E000E000E0C0E0C0E0C0E0C0E0C0F1C073807F803E00E1F7F9E13
>I<0E0070FE07F0FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E00700E
00700E00700E00700E00F00E00F00E01F00787F807FF7F01FC7F18157F941B>I<FFC3FEFFC3FE
1E00F80E00700E00E00700C00700C00700C003818003818003C38001C30001C30000E60000E600
00E600007C00007C00007C0000380000380017157F941A>I<FF8FF9FFFF8FF9FF1E01E07C1C03
C0380E03E0300E03E0300E0660300706706007067060070E7060038C30C0038C38C0039C38C001
D8198001D81D8001D81D8001F00F8000F00F0000F00F0000E007000060060020157F9423>I<FF
C3FEFFC3FE1E00F80E00700E00E00700C00700C00700C003818003818003C38001C30001C30000
E60000E60000E600007C00007C00007C00003800003800003000003000007000006000006000F0
C000F1C000F380007F00003E0000171F7F941A>121 D E /Fx 20 118 df<FFFF80FFFF80FFFF
8011037F9016>45 D<FFFFFFE00000FFFFFFFC000007E0007F000003E0000F800003E00007C000
03E00001E00003E00000F00003E00000780003E000007C0003E000003E0003E000003E0003E000
001F0003E000001F0003E000000F8003E000000F8003E000000FC003E000000FC003E0000007C0
03E0000007C003E0000007E003E0000007E003E0000007E003E0000007E003E0000007E003E000
0007E003E0000007E003E0000007E003E0000007E003E0000007E003E0000007E003E0000007C0
03E0000007C003E0000007C003E000000FC003E000000F8003E000000F8003E000000F8003E000
001F0003E000001F0003E000003E0003E000007C0003E00000780003E00000F80003E00001F000
03E00007E00003E0000F800007E0007F0000FFFFFFFC0000FFFFFFE000002B317CB033>68
D<FFFF80FFFF8007F00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00007F000FFFF80FFFF8011317DB017>73
D<FFF00000007FF8FFF8000000FFF807F8000000FF0003F8000000FE00037C000001BE00037C00
0001BE00037C000001BE00033E0000033E00033E0000033E00033E0000033E00031F0000063E00
031F0000063E00031F0000063E00030F80000C3E00030F80000C3E00030F80000C3E000307C000
183E000307C000183E000307C000183E000303E000303E000303E000303E000303E000303E0003
01F000603E000301F000603E000301F000C03E000300F800C03E000300F800C03E0003007C0180
3E0003007C01803E0003007C01803E0003003E03003E0003003E03003E0003003E03003E000300
1F06003E0003001F06003E0003001F06003E0003000F8C003E0003000F8C003E0003000F8C003E
00030007D8003E00030007D8003E00030007D8003E00030003F0003E00030003F0003E00030003
F0003E00078001E0003E000FC001E0007F00FFFC01E00FFFF8FFFC00C00FFFF835317CB03D>77
D<FFFFFFC000FFFFFFF80007E000FE0003E0001F0003E0000F8003E00007C003E00003E003E000
03F003E00001F003E00001F003E00001F803E00001F803E00001F803E00001F803E00001F803E0
0001F803E00001F003E00001F003E00003F003E00003E003E00007C003E0000F8003E0001F0003
E000FE0003FFFFF80003FFFFC00003E000000003E000000003E000000003E000000003E0000000
03E000000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000003E000000003E000000003E000000003E000000003E000000003E000000007F000
0000FFFF800000FFFF80000025317CB02D>80 D<007F806003FFF06007C0F8E00F003CE01E000F
E03C0007E03C0003E0780003E0780001E0F00001E0F00000E0F00000E0F00000E0F0000060F800
0060F8000060F80000007C0000007E0000007F0000003FC000001FFC00001FFFC0000FFFF80003
FFFE0000FFFF00001FFF800001FFC000001FE0000007E0000003F0000001F0000001F8000000F8
000000F8C0000078C0000078C0000078C0000078E0000078E0000078E0000070F00000F0F00000
F0F80001E0FC0001E0FF0003C0E7800F80E3F01F00C0FFFC00C01FF0001D337CB125>83
D<03FF00000FFFC0001E03F0003E00F8003E007C003E003C003E003E001C001E0000001E000000
1E0000001E0000001E000003FE00007FFE0003FF1E0007F01E001FC01E003F001E007E001E007C
001E00FC001E00F8001E0CF8001E0CF8001E0CF8003E0CFC007E0C7C007E0C7E01FF1C3F87CFB8
1FFF07F003FC03C01E1F7D9E21>97 D<003FE001FFF803E03C07C03E0F003E1F003E3E003E3C00
1C7C00007C0000780000F80000F80000F80000F80000F80000F80000F80000F80000F800007C00
007C00007C00003E00033E00071F00060F800E07C01C03F07801FFF0003F80181F7D9E1D>99
D<000001E000003FE000003FE0000003E0000001E0000001E0000001E0000001E0000001E00000
01E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000
3F81E001FFF1E003F079E007C01FE00F800FE01F0007E03E0003E03C0001E07C0001E07C0001E0
780001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001
E0780001E07C0001E07C0001E03C0003E03E0003E01E0007E01F000FE00FC03DE007E0F9F001FF
E1FF007F81FF20327DB125>I<003F800001FFF00003E1F80007807C000F003E001E001E003E00
1F003C000F007C000F807C000F8078000F80F8000780FFFFFF80FFFFFF80F8000000F8000000F8
000000F8000000F8000000F80000007C0000007C0000007C0000003E0001803E0003801F000300
0F80070007E00E0003F83C0000FFF800003FC000191F7E9E1D>I<0007F0001FF8007C3C00F87C
00F07C01E07C01E03803E00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C000FFFFC0FFFFC003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00007E0007FFF007FFF0016327FB114>I<000001F8007F07FC01FFCF
1C07E3FC3C0F80F81C0F0078001F007C001E003C003E003E003E003E003E003E003E003E003E00
3E003E003E003E003E001E003C001F007C000F0078000F80F8000FE3F0000DFFC0001C7F00001C
0000001C0000001C0000001E0000001F0000000FFFF8000FFFFF0007FFFFC00FFFFFE03E000FF0
7C0001F0780000F0F0000078E0000038E0000038E0000038E0000038F000007870000070780000
F03C0001E01F0007C00FE03F8003FFFE00007FF0001E2F7E9F21>I<0F001F801F801F801F800F
00000000000000000000000000000000000000000000000780FF80FF800F800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
800FC0FFF8FFF80D307EAF12>105 D<0781FE003FC000FF87FF80FFF000FF9E0FC3C1F8000FB8
03E7007C0007F001EE003C0007E001FC003E0007E000FC001E0007C000F8001E0007C000F8001E
00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00
078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF034
1F7E9E38>109 D<0781FE0000FF87FF8000FF9E0FC0000FB803E00007F001E00007E001F00007
E000F00007C000F00007C000F000078000F000078000F000078000F000078000F000078000F000
078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F000078000F0000FC001F800FFFC1F
FF80FFFC1FFF80211F7E9E25>I<001FC00000FFF80001E03C0007800F000F0007801E0003C01E
0003C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8
F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003
C00F00078007C01F0001F07C0000FFF800001FC0001D1F7E9E21>I<0787F0FF8FF8FFBC7C0FB8
7C07F07C07E07C07E00007C00007C00007C0000780000780000780000780000780000780000780
000780000780000780000780000780000780000780000780000780000780000780000FC000FFFE
00FFFE00161F7E9E19>114 D<03FE300FFFF03E07F07801F07000F0E00070E00070E00030E000
30F00030F800007F00007FF0003FFF000FFFC003FFE0003FF00003F80000F8C0007CC0003CE000
1CE0001CE0001CF0001CF80038F80038FC00F0EF03F0C7FFC0C1FF00161F7E9E1A>I<00C00000
C00000C00000C00000C00001C00001C00001C00003C00003C00007C0000FC0001FC000FFFFE0FF
FFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C03003C03003C03003C03003C03003C03003C03003C07001E06001
E0E000F9C000FFC0003F00142C7FAB19>I<078000F000FF801FF000FF801FF0000F8001F00007
8000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F000
078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078001F000078001F000078001F000078003F00003C007F00003C00E
F00001F03CF80000FFF8FF80003FC0FF80211F7E9E25>I E /Fy 5 85 df<00000000C0000000
0000E00000000001E00000000003E00000000003E00000000007E00000000007E0000000000FE0
000000000FE0000000001FE0000000001FE00000000037E00000000067E00000000067E0000000
00C7E000000000C7F00000000183F00000000183F00000000303F00000000703F00000000603F0
0000000C03F00000000C03F00000001803F00000001803F00000003003F00000003003F0000000
6003F0000000C003F0000000C003F00000018003F00000018003F8000003FFFFF8000003FFFFF8
0000060001F800000E0001F800000C0001F80000180001F80000180001F80000300001F8000030
0001F80000600001F80000E00001F80000C00001F80001C00001F80001C00001F80007C00001FC
001FC00003FC00FFF8007FFFE0FFF8007FFFE02B327BB135>65 D<000FFFFFFE0000000FFFFFFF
007F000000FFFFFFFC000000FFFFFFE000000031317BB036>68 D<000FFFFFFFFC000FFFFFFFFC
00007F0001FC00007E00007C00007E00003C00007E00003C00007E0000180000FC0000180000FC
0000180000FC0000180000FC0000180001F80000180001F80000180001F80000180001F8000018
0003F00080100003F00180000003F00180000003F00180000007E00300000007E00300000007E0
0700000007E01F0000000FFFFE0000000FFFFE0000000FC01E0000000FC00E0000001F800C0000
001F800C0000001F800C0000001F800C0000003F00180000003F00080000003F00000000003F00
000000007E00000000007E00000000007E00000000007E0000000000FC0000000000FC00000000
00FC0000000000FC0000000001F80000000001F80000000001F80000000003F800000000FFFFF0
000000FFFFF00000002E317BB02F>70 D<000FFFFFF000000FFFFFFE0000007F003F8000007E00
0FC000007E0007E000007E0003F000007E0001F80000FC0001F80000FC0001F80000FC0001F800
00FC0001F80001F80003F80001F80003F80001F80003F80001F80003F00003F00007F00003F000
07E00003F0000FC00003F0000FC00007E0001F000007E0007E000007E000FC000007E007F00000
0FFFFFC000000FFFFF0000000FC00F8000000FC003C000001F8003E000001F8001F000001F8001
F000001F8001F800003F0001F800003F0001F800003F0001F800003F0001F800007E0003F80000
7E0003F800007E0003F000007E0003F00000FC0007F00000FC0007F00000FC0007F00800FC0007
F00C01F80007F01801F80007F01801F80003F03003F80003F030FFFFE001F0E0FFFFE000FFC000
0000003F002E327BB034>82 D<07FFFFFFFFF00FFFFFFFFFF00FC00FE003F01E000FC000F01C00
0FC000E018000FC000E038000FC0006030001F8000E030001F8000E060001F8000C060001F8000
C060003F0000C0C0003F0000C0C0003F0000C0C0003F0000C080007E00008000007E0000000000
7E00000000007E0000000000FC0000000000FC0000000000FC0000000000FC0000000001F80000
000001F80000000001F80000000001F80000000003F00000000003F00000000003F00000000003
F00000000007E00000000007E00000000007E00000000007E0000000000FC0000000000FC00000
00000FC0000000000FC0000000001F80000000001F80000000001F80000000001F80000000003F
00000000003F00000000003F0000000000FF00000000FFFFFF000000FFFFFF0000002C3173B033
>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin 
%%EndSetup
%%Page: 0 1
bop 795 908 a Fy(D)26 b(R)g(A)f(F)h(T)225 999 y Fx(Do)r(cumen)n(t)20
b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n(terface)621
1194 y Fw(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum)802
1320 y(August)i(10,)f(1993)87 1378 y(This)g(w)o(ork)g(w)o(as)h(supp)q(orted)g
(b)o(y)f(ARP)l(A)g(and)g(NSF)g(under)g(con)o(tract)g(n)o(um)o(b)q(er)f(###,)g
(b)o(y)g(the)192 1436 y(National)h(Science)f(F)l(oundation)i(Science)e(and)i
(T)l(ec)o(hnology)f(Cen)o(ter)f(Co)q(op)q(erativ)o(e)76 1494
y(Agreemen)o(t)e(No.)22 b(CCR-8809615,)d(and)e(b)o(y)e(the)h(Commission)e(of)
j(the)f(Europ)q(ean)i(Comm)o(unit)n(y)654 1552 y(through)f(Esprit)f(pro)s
(ject)g(P6643.)p eop
%%Page: 1 2
bop 75 377 a Fv(Con)m(ten)m(ts)75 645 y Fu(4)42 b(Groups,)17
b(Con)o(texts,)f(and)i(Comm)o(unicators)809 b(1)143 702 y Ft(4.1)46
b(In)o(tro)q(duction)15 b Fs(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)91 b Ft(1)143 758 y(4.2)46 b(Con)o(text)32
b Fs(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)91 b Ft(2)143 815 y(4.3)46 b(Groups)12 b Fs(:)22 b(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b
Ft(2)248 871 y(4.3.1)50 b(Prede\014ned)17 b(Groups)29 b Fs(:)23
b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Ft(3)143 927 y(4.4)46 b(Comm)o(unicators)
20 b Fs(:)j(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91
b Ft(3)248 984 y(4.4.1)50 b(Prede\014ned)17 b(Comm)o(unicators)38
b Fs(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)91 b Ft(4)143 1040 y(4.5)46 b(Group)15
b(Managemen)o(t)41 b Fs(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91
b Ft(4)248 1097 y(4.5.1)50 b(Lo)q(cal)16 b(Op)q(erations)24
b Fs(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Ft(4)248 1153
y(4.5.2)50 b(Lo)q(cal)16 b(Group)f(Constructors)20 b Fs(:)i(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91
b Ft(5)248 1210 y(4.5.3)50 b(Collectiv)o(e)17 b(Group)e(Constructors)39
b Fs(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)91 b Ft(8)143 1266 y(4.6)46 b(Op)q(erations)16
b(on)f(Con)o(texts)35 b Fs(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91
b Ft(8)248 1323 y(4.6.1)50 b(Lo)q(cal)16 b(Op)q(erations)24
b Fs(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Ft(8)248 1379
y(4.6.2)50 b(Collectiv)o(e)17 b(Op)q(erations)43 b Fs(:)22
b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)91 b Ft(9)143 1436 y(4.7)46 b(Op)q(erations)16
b(on)f(Comm)o(unicators)41 b Fs(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)
g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69
b Ft(10)248 1492 y(4.7.1)50 b(Lo)q(cal)16 b(Comm)o(unicator)f(Op)q(erations)
32 b Fs(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)69 b Ft(10)248 1548 y(4.7.2)50 b(Lo)q(cal)16 b(Constructors)k
Fs(:)j(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Ft(10)248 1605 y(4.7.3)50
b(Collectiv)o(e)17 b(Comm)o(unicator)d(Constructors)f Fs(:)23
b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69
b Ft(11)143 1661 y(4.8)46 b(In)o(tro)q(duction)16 b(to)e(In)o(ter-Comm)o
(unication)g Fs(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Ft(11)248 1718 y(4.8.1)50
b(De\014nitions)17 b(of)d(In)o(ter-Comm)o(unication)i(and)g(In)o(ter-Comm)o
(unicators)e Fs(:)22 b(:)h(:)f(:)69 b Ft(12)248 1774 y(4.8.2)50
b(Prop)q(erties)16 b(of)f(In)o(ter-Comm)o(unication)g(and)h(In)o(ter-Comm)o
(unicators)24 b Fs(:)e(:)h(:)f(:)69 b Ft(12)248 1831 y(4.8.3)50
b(In)o(ter-Comm)o(unication)16 b(Routines)33 b Fs(:)22 b(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69
b Ft(14)248 1887 y(4.8.4)50 b(Implemen)o(tation)16 b(Notes)30
b Fs(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Ft(17)143 1944 y(4.9)46
b(Cac)o(heing)12 b Fs(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)69 b Ft(18)248 2000 y(4.9.1)50 b(F)l(unctionalit)o(y)
32 b Fs(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)
g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69
b Ft(18)143 2057 y(4.10)23 b(F)l(ormalizing)16 b(the)f(Lo)q(osely)h(Sync)o
(hronous)g(Mo)q(del)g(\(Usage,)e(Safet)o(y\))j Fs(:)22 b(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)69 b Ft(20)248 2113 y(4.10.1)27 b(Basic)16 b(Statemen)o(ts)22
b Fs(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Ft(20)248 2169
y(4.10.2)27 b(Mo)q(dels)16 b(of)f(Execution)29 b Fs(:)22 b(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)69 b Ft(21)143 2226 y(4.11)23 b(Motiv)m(ating)15 b(Examples)h
Fs(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Ft(22)248
2282 y(4.11.1)27 b(Curren)o(t)15 b(Practice)g(#1)27 b Fs(:)22
b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Ft(22)248 2339 y(4.11.2)27
b(Curren)o(t)15 b(Practice)g(#2)27 b Fs(:)22 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69
b Ft(23)248 2395 y(4.11.3)27 b(\(Appro)o(ximate\))15 b(Curren)o(t)f(Practice)
i(#3)35 b Fs(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)69 b Ft(23)248 2452 y(4.11.4)27 b(Example)16 b(#4)44
b Fs(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b
Ft(24)248 2508 y(4.11.5)27 b(Library)16 b(Example)g(#1)22 b
Fs(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Ft(25)248 2565 y(4.11.6)27
b(Library)16 b(Example)g(#2)22 b Fs(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69
b Ft(26)248 2621 y(4.11.7)27 b(In)o(ter-Comm)o(unication)16
b(Examples)g Fs(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)69 b Ft(27)-32 46 y Fr(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 0 3
bop 875 722 a Fu(Abstract)75 828 y Ft(The)18 b(Message)f(P)o(assing)h(In)o
(terface)f(F)l(orum)h(\(MPIF\),)e(with)i(participation)h(from)e(o)o(v)o(er)g
(40)g(organiza-)75 885 y(tions,)f(has)h(b)q(een)g(meeting)g(since)h(Jan)o
(uary)e(1993)f(to)h(discuss)h(and)g(de\014ne)g(a)f(set)h(of)f(library)h(in)o
(terface)75 941 y(standards)f(for)h(message)f(passing.)25 b(MPIF)16
b(is)i(not)e(sanctioned)i(or)e(supp)q(orted)h(b)o(y)g(an)o(y)g(o\016cial)g
(stan-)75 998 y(dards)e(organization.)166 1054 y(This)22 b(is)f(a)g(draft)f
(of)h(what)g(will)h(b)q(ecome)g(the)f(Final)h(Rep)q(ort,)h(V)l(ersion)f(1.0,)
f(of)f(the)i(Message)75 1111 y(P)o(assing)c(In)o(terface)h(F)l(orum.)29
b(This)19 b(do)q(cumen)o(t)g(con)o(tains)g(all)g(the)g(tec)o(hnical)h
(features)e(prop)q(osed)h(for)75 1167 y(the)c(in)o(terface.)20
b(This)c(cop)o(y)f(of)g(the)g(draft)g(w)o(as)f(pro)q(cessed)i(b)o(y)f(L)1174
1161 y Fq(a)1195 1167 y Ft(T)1220 1181 y(E)1246 1167 y(X)g(on)g(August)g(10,)
g(1993.)166 1224 y(MPIF)j(in)o(vites)h(commen)o(ts)f(on)h(the)f(tec)o(hnical)
i(con)o(ten)o(t)e(of)g(MPI,)g(as)g(w)o(ell)i(as)e(on)g(the)h(editorial)75
1280 y(presen)o(tation)14 b(in)g(the)g(do)q(cumen)o(t.)19 b(Commen)o(ts)13
b(receiv)o(ed)i(b)q(efore)e(July)i(1,)e(1993)g(will)i(b)q(e)f(considered)h
(in)75 1336 y(pro)q(ducing)i(the)e(\014nal)h(draft)e(of)h(V)l(ersion)h(1.0)e
(of)h(the)g(Message)g(P)o(assing)g(In)o(terface)g(Sp)q(eci\014cation.)166
1393 y(The)i(goal)f(of)g(the)g(Message)g(P)o(assing)g(In)o(terface,)g(simply)
i(stated,)e(is)g(to)g(dev)o(elop)h(a)g(widely)g(used)75 1449
y(standard)g(for)f(writing)i(message-passing)f(programs.)24
b(As)17 b(suc)o(h)h(the)f(in)o(terface)g(should)h(establishing)75
1506 y(a)d(practical,)h(p)q(ortable,)f(e\016cien)o(t,)g(and)h(\015exible)h
(standard)e(for)f(message)h(passing.)p eop
%%Page: 1 4
bop 75 361 a Fp(Section)35 b(4)75 573 y Fv(Groups,)40 b(Con)m(texts,)g(and)75
697 y(Comm)m(unicators)75 943 y Fo(4.1)59 b(Intro)r(duction)75
1053 y Ft(W)l(e)17 b(de\014ne)h(the)e(concepts)h(of)g(group,)f(con)o(text,)g
(and)h(comm)o(unicator)f(here.)25 b(W)l(e)17 b(discuss)h(op)q(erations)75
1109 y(for)13 b(ho)o(w)g(these)h(should)g(b)q(e)g(used)g(to)f(pro)o(vide)h
(safe)f(\(safer\))g(comm)o(unication)h(in)g(the)g(MPI)f(system.)19
b(W)l(e)75 1166 y(start)11 b(b)o(y)h(discussing)i(in)o(tra-comm)o(unication)f
(in)g(full)h(detail;)g(then)f(w)o(e)f(discuss)h(in)o(ter-comm)o(unication,)75
1222 y(whic)o(h)j(builds)g(on)f(the)g(data)f(structures)g(and)h(requiremen)o
(ts)g(of)g(the)f(in)o(tra-comm)o(unication)i(sections.)75 1279
y(W)l(e)f(follo)o(w)g(with)g(discussion)h(of)e(formalizations)h(of)f(the)h
(lo)q(osely)h(sync)o(hronous)f(mo)q(del)g(of)f(computing)75
1335 y(\(vis)h(a)g(vis)h(message)f(passing\))g(and)g(o\013er)g(examples.)166
1396 y(It)c(is)h(highly)g(desirable)h(that)d(pro)q(cesses)i(executing)g(a)f
(parallel)i(pro)q(cedure)f(use)f(a)g(\\virtual)h(pro)q(cess)75
1453 y(name)20 b(space")f(lo)q(cal)i(to)e(the)h(in)o(v)o(o)q(cation.)34
b(Th)o(us,)20 b(the)g(co)q(de)g(of)g(the)f(parallel)j(pro)q(cedure)e(will)i
(lo)q(ok)75 1509 y(iden)o(tical,)d(irresp)q(ectiv)o(e)g(of)e(the)g(absolute)h
(addresses)f(of)g(the)h(executing)g(pro)q(cesses.)27 b(It)17
b(is)h(often)f(the)75 1566 y(case)h(that)f(parallel)i(application)h(co)q(de)e
(is)h(built)g(b)o(y)f(comp)q(osing)g(sev)o(eral)g(parallel)i(mo)q(dules)f(\()
p Fn(e.g.)p Ft(,)e(a)75 1622 y(n)o(umerical)f(solv)o(er,)f(and)g(a)g(graphic)
h(displa)o(y)g(mo)q(dule\).)21 b(Supp)q(ort)15 b(of)g(a)g(virtual)h(name)f
(space)g(for)g(eac)o(h)75 1678 y(mo)q(dule)j(will)h(allo)o(w)e(for)f(the)h
(comp)q(osition)g(of)g(mo)q(dules)h(that)e(w)o(ere)h(dev)o(elop)q(ed)h
(separately)f(without)75 1735 y(c)o(hanging)e(all)h(message)e(passing)h
(calls)g(within)h(eac)o(h)f(mo)q(dule.)21 b(The)15 b(set)f(of)g(pro)q(cesses)
h(that)f(execute)h(a)75 1791 y(parallel)i(pro)q(cedure)f(ma)o(y)f(b)q(e)h
(\014xed,)g(or)f(ma)o(y)g(b)q(e)h(determined)h(dynamically)g(b)q(efore)f(the)
g(in)o(v)o(o)q(cation.)75 1848 y(Th)o(us,)23 b(MPI)e(has)g(to)g(pro)o(vide)h
(a)f(mec)o(hanism)h(for)f(dynamically)j(creating)d(sets)g(of)g(lo)q(cally)j
(named)75 1904 y(pro)q(cesses.)35 b(W)l(e)20 b(alw)o(a)o(ys)f(n)o(um)o(b)q
(er)h(pro)q(cesses)h(that)e(execute)h(a)g(parallel)i(pro)q(cedure)f
(consecutiv)o(ely)l(,)75 1961 y(starting)15 b(from)g(zero,)h(and)g(call)g
(this)h(n)o(um)o(b)q(ering)f Fu(rank)i(in)h(group)p Ft(.)i(Th)o(us,)16
b(a)f Fu(group)h Ft(is)g(an)g(ordered)75 2017 y(set)f(of)f(pro)q(cesses,)h
(where)h(pro)q(cesses)f(are)g(iden)o(ti\014ed)i(b)o(y)e(their)g(ranks)g(when)
g(comm)o(unication)h(o)q(ccurs.)166 2078 y(Comm)o(unication)23
b Fm(contexts)f Ft(partition)h(the)h(message-passing)f(space)g(in)o(to)g
(separate,)h(man-)75 2135 y(ageable)f(\\univ)o(erses.")44 b(Sp)q
(eci\014cally)l(,)27 b(a)c(send)g(made)g(in)h(a)f(con)o(text)f(cannot)h(b)q
(e)g(receiv)o(ed)h(in)g(an-)75 2191 y(other)18 b(con)o(text.)29
b(Con)o(texts)17 b(are)i(iden)o(ti\014ed)h(in)f(MPI)g(using)g(opaque)f
Fu(con)o(texts)h Ft(that)e(reside)j(within)75 2247 y Fm(communicator)e
Ft(ob)s(jects.)31 b(The)20 b(con)o(text)e(mec)o(hanism)i(is)g(need)g(to)f
(allo)o(w)g(predictable)i(b)q(eha)o(vior)f(in)75 2304 y(subprograms,)14
b(and)g(to)g(allo)o(w)h(dynamicism)h(in)g(message)e(usage)g(that)g(cannot)h
(b)q(e)g(reasonably)g(an)o(tici-)75 2360 y(pated)g(or)e(managed.)20
b(Normally)l(,)15 b(a)f(parallel)i(pro)q(cedure)f(is)g(written)g(so)f(that)f
(all)j(messages)e(pro)q(duced)75 2417 y(during)f(its)g(execution)h(are)e
(also)g(consumed)h(b)o(y)g(the)f(pro)q(cesses)h(that)f(execute)h(the)f
(parallel)i(pro)q(cedure.)75 2473 y(Ho)o(w)o(ev)o(er,)d(if)h(one)g(parallel)i
(pro)q(cedure)f(calls)g(another,)e(then)i(it)f(migh)o(t)f(b)q(e)i(desirable)g
(to)f(allo)o(w)g(suc)o(h)g(call)75 2530 y(to)17 b(pro)q(ceed)i(while)g
(messages)e(are)g(p)q(ending)j(\(the)d(messages)h(will)h(b)q(e)f(consumed)h
(b)o(y)e(the)h(pro)q(cedure)75 2586 y(after)d(the)g(call)h(returns\).)k(In)c
(suc)o(h)g(case,)f(a)g(new)g(comm)o(unication)h(con)o(text)f(is)h(needed)g
(for)f(the)g(called)75 2643 y(parallel)i(pro)q(cedure,)e(ev)o(en)h(if)g(the)f
(transfer)f(of)h(con)o(trol)g(is)h(sync)o(hronized.)166 2704
y(The)e(comm)o(unication)i(domain)e(used)h(b)o(y)f(a)g(parallel)i(pro)q
(cedure)g(is)e(iden)o(ti\014ed)j(b)o(y)d(a)g Fu(comm)o(uni-)-32
46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 2 5
bop 75 -100 a Ft(2)432 b Fl(SECTION)16 b(4.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fu(cator)p Ft(.)29
b(Comm)o(unicators)17 b(bring)h(together)f(the)h(concepts)h(of)e(pro)q(cess)h
(group)g(and)g(comm)o(unication)75 102 y(con)o(text.)29 b(A)18
b(comm)o(unicator)g(is)h(an)f(explicit)j(parameter)c(in)j(eac)o(h)e(p)q(oin)o
(t-to-p)q(oin)o(t)h(comm)o(unication)75 158 y(op)q(eration.)31
b(The)19 b(comm)o(unicator)f(iden)o(ti\014es)j(the)d(comm)o(unication)i(con)o
(text)e(of)g(that)g(op)q(eration;)j(it)75 214 y(iden)o(ti\014es)f(the)f
(group)f(of)g(pro)q(cesses)g(that)g(can)g(b)q(e)h(in)o(v)o(olv)o(ed)h(in)f
(this)g(comm)o(unication;)h(and)e(it)h(pro-)75 271 y(vides)g(the)g
(translation)f(from)g(virtual)h(pro)q(cess)g(names,)g(whic)o(h)g(are)f(ranks)
g(within)i(the)e(group,)h(in)o(to)75 327 y(absolute)13 b(addresses.)20
b(Collectiv)o(e)14 b(comm)o(unication)g(calls)g(also)f(tak)o(e)f(a)h(comm)o
(unicator)f(as)h(parameter;)75 384 y(it)k(is)h(exp)q(ected)g(that)e(parallel)
j(libraries)g(will)f(b)q(e)g(built)g(to)f(accept)g(a)g(comm)o(unicator)f(as)h
(parameter.)75 440 y(Comm)o(unicators)d(are)h(represen)o(ted)h(b)o(y)f
(opaque)g(MPI)h(ob)s(jects.)166 504 y(W)l(e)38 b(start)f(b)o(y)h(discussing)i
(in)o(tra-comm)o(unication)e(in)h(full)h(detail;)50 b(then)38
b(w)o(e)g(discuss)75 561 y(in)o(ter-comm)o(unication,)21 b(whic)o(h)e(builds)
i(on)e(the)g(data)f(structures)h(and)g(requiremen)o(ts)h(of)e(the)h(in)o
(tra-)75 617 y(comm)o(unication)i(sections.)34 b(W)l(e)20 b(follo)o(w)g(with)
h(discussion)g(of)f(formalizations)g(of)g(the)g(lo)q(osely)h(syn-)75
674 y(c)o(hronous)15 b(mo)q(del)h(of)f(computing)h(\(vis)f(a)g(vis)h(message)
e(passing\))i(and)f(o\013er)f(examples.)75 860 y Fo(4.2)59
b(Context)75 976 y Ft(A)15 b Fu(con)o(text)h Ft(is)g(the)f(MPI)g(mec)o
(hanism)h(for)f(partitioning)h(comm)o(unication)g(space.)21
b(A)15 b(de\014ning)i(prop-)75 1032 y(ert)o(y)c(of)h(a)f(con)o(text)h(is)g
(that)f(a)h(send)g(made)g(in)h(a)e(con)o(text)h(cannot)f(b)q(e)i(receiv)o(ed)
g(in)g(another)e(con)o(text.)19 b(A)75 1089 y(con)o(text)c(is)g(an)g(opaque)h
(ob)s(ject.)j(Only)d(one)g(comm)o(unicator)e(in)i(a)f(pro)q(cess)h(ma)o(y)e
(bind)j(the)e(same)g(con-)75 1145 y(text.)24 b(Con)o(texts)15
b(ha)o(v)o(e)i(additional)h(attributes)e(for)g(in)o(ter-comm)o(unication,)i
(to)e(b)q(e)i(discussed)g(b)q(elo)o(w.)75 1201 y(F)l(or)e(in)o(tra-comm)o
(unication,)g(a)g(con)o(text)g(is)h(essen)o(tially)h(a)d(h)o(yp)q(er-tag)h
(needed)i(to)e(mak)o(e)f(a)h(comm)o(uni-)75 1258 y(cator)e(safe)h(for)g(p)q
(oin)o(t-to-p)q(oin)o(t)h(and)f(MPI-de\014ned)i(collectiv)o(e)g(comm)o
(unication.)166 1405 y Fk(Discussion:)34 b Fj(Some)12 b(implemen)o(tations)f
(ma)o(y)h(mak)o(e)g(a)h(con)o(text)i(to)e(b)q(e)i(a)e(pair)g(of)g(in)o
(tegers,)h(eac)o(h)h(repre-)75 1461 y(sen)o(ting)g(\\h)o(yp)q(er)h(tags")f({)
g(one)h(for)e(p)q(oin)o(t-to-p)q(oin)o(t)g(and)h(one)h(for)f
(\(MPI-de\014ned\))h(collectiv)o(e)g(op)q(erations)f(on)g(a)75
1517 y(comm)o(unicator.)g(By)e(making)d(this)j(concept)h(opaque,)e(w)o(e)h
(reliev)o(e)g(the)h(implemen)o(tor)c(of)i(the)h(requiremen)o(t)g(that)75
1574 y(this)h(is)g(the)g(only)f(w)o(a)o(y)g(to)h(implemen)o(t)d(con)o(texts)k
(correctly)g(for)f(MPI.)166 1803 y Fk(Discussion:)19 b Fj(Among)14
b(other)i(reasons,)h(including)e(to)g(address)i(Jim)e(Co)o(wnie's)g(concerns)
i(ab)q(out)f(safet)o(y)75 1860 y(and)c(to)g(mak)o(e)e(b)q(oth)i(p)q(oin)o
(t-to-p)q(oin)o(t)f(and)h(collectiv)o(e)g(comm)o(unicati)o(on)d(safer)k(on)e
(an)h(in)o(tra-comm)o(uni)o(ncator,)e(w)o(e)75 1916 y(ha)o(v)o(e)k(opted)h
(to)g(mak)o(e)e(con)o(texts)i(opaque,)f(at)h(the)g(exp)q(ense)h(of)e
(upsetting)h(those)h(who)e(w)o(an)o(t)g(to)g(b)q(e)h(able)g(to)f(set)75
1973 y(con)o(text)g(v)n(alues.)j(This)d(c)o(hange)f(is)g(crucial)g(to)g
(abstracting)h(MPI)f(from)f(sp)q(eci\014c)i(implemen)o(tations,)c(and)j
(forces)75 2029 y(sp)q(eci\014c)19 b(implem)o(en)o(tations)c(to)i(pro)o(vide)
g(implem)o(en)o(tation-sp)q(eci\014c)e(functions)j(to)f(mak)o(e)e(the)j
(connotation)f(of)75 2086 y(con)o(texts)e(with)f(sp)q(eci\014c)h(in)o(teger)f
(v)n(alues.)75 2354 y Fo(4.3)59 b(Groups)75 2470 y Ft(A)17
b Fu(group)g Ft(is)g(an)g(ordered)g(set)f(of)h(pro)q(cess)g(iden)o(ti\014ers)
h(\(henceforth)f(pro)q(cesses\);)g(pro)q(cess)g(iden)o(ti\014ers)75
2527 y(are)h(implemen)o(tation)j(dep)q(enden)o(t;)g(a)e(group)f(is)i(an)e
(opaque)h(ob)s(ject.)30 b(Eac)o(h)19 b(pro)q(cess)g(in)g(a)g(group)f(is)75
2583 y(asso)q(ciated)d(with)h(an)f(in)o(teger)g Fu(rank)p Ft(,)g(starting)f
(from)h(zero.)166 2647 y(Groups)d(are)g(represen)o(ted)h(b)o(y)f(opaque)h
Fu(group)h(ob)s(jects)p Ft(,)e(and)h(hence)g(cannot)g(b)q(e)g(directly)g
(trans-)75 2704 y(ferred)i(from)g(one)g(pro)q(cess)h(to)e(another.)1967
46 y Fr(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 3 6
bop 75 -100 a Fl(4.4.)34 b(COMMUNICA)l(TORS)1246 b Ft(3)75
45 y Fi(4.3.1)49 b(Prede\014ned)15 b(Groups)75 134 y Ft(.)20
b(Initial)d(groups)e(de\014ned)h(once)31 b Fh(MPI)p 750 134
14 2 v 16 w(INIT)14 b Ft(has)h(b)q(een)i(called)g(are)d(as)h(follo)o(ws:)143
233 y Fg(\017)23 b Fh(MPI)p 274 233 V 15 w(GROUP)p 441 233
V 18 w(ALL)p Ft(,)45 b(SPMD-lik)o(e)16 b(siblings)h(of)e(a)g(pro)q(cess.)143
332 y Fg(\017)23 b Fh(MPI)p 274 332 V 15 w(GROUP)p 441 332
V 18 w(HOST)p Ft(,)46 b(A)15 b(group)g(including)j(one's)d(self)h(and)f
(one's)g(HOST)143 432 y Fg(\017)23 b Fh(MPI)p 274 432 V 15
w(GROUP)p 441 432 V 18 w(P)l(ARENT)p Ft(,)39 b(A)13 b(group)g(con)o(taining)g
(one's)g(self)g(and)g(one's)g(P)l(ARENT)g(\(spa)o(wner\).)143
531 y Fg(\017)23 b Fh(MPI)p 274 531 V 15 w(GROUP)p 441 531
V 18 w(SELF)p Ft(,)45 b(A)15 b(group)g(comprising)i(one's)d(self)166
630 y(MPI)j(implemen)o(tations)h(are)f(required)h(to)e(pro)o(vide)h(these)h
(groups;)f(ho)o(w)o(ev)o(er,)f(not)g(all)i(forms)e(of)75 687
y(comm)o(unication)22 b(mak)o(e)f(sense)h(for)f(all)h(systems,)g(so)g(not)f
(all)h(of)f(these)h(groups)f(ma)o(y)g(b)q(e)h(relev)m(an)o(t.)75
743 y(En)o(vironmen)o(tal)17 b(inquiry)i(will)g(b)q(e)e(pro)o(vided)h(to)e
(determine)j(whic)o(h)e(of)g(these)g(are)g(usable)h(in)g(a)e(giv)o(en)75
800 y(implemen)o(tation.)24 b(The)17 b(analogous)f(comm)o(unicators)f
(corresp)q(onding)j(to)d(these)i(groups)f(are)g(de\014ned)75
856 y(b)q(elo)o(w)g(in)g(section)g(4.4.1.)166 997 y Fk(Discussion:)f
Fj(En)o(vironmen)o(tal)d(sub-committee)h(needs)i(to)f(pro)o(vide)f(suc)o(h)i
(inquiry)e(functions)h(for)f(us.)75 1231 y Fo(4.4)59 b(Communicato)n(rs)75
1335 y Ft(All)20 b(MPI)f(comm)o(unication)h(\(b)q(oth)f(p)q(oin)o(t-to-p)q
(oin)o(t)h(and)f(collectiv)o(e\))i(functions)f(use)f Fu(comm)o(unica-)75
1391 y(tors)c Ft(to)g(pro)o(vide)i(a)e(sp)q(eci\014c)j(scop)q(e)e(\(con)o
(text)f(and)h(group)f(sp)q(eci\014cations\))j(for)d(the)h(comm)o(unication.)
75 1448 y(In)d(short,)g(comm)o(unicators)f(bring)h(together)f(the)h(concepts)
g(of)g(group)f(and)h(con)o(text;)g(\(furthermore,)f(to)75 1504
y(supp)q(ort)18 b(implemen)o(tation-sp)q(eci\014c)j(optimizations,)d(and)g
(virtual)g(top)q(ologies,)g(they)g(\\cac)o(he")f(addi-)75 1561
y(tional)f(information)g(opaquely\).)22 b(The)16 b(source)f(and)h
(destination)h(of)e(a)g(message)g(is)i(iden)o(ti\014ed)g(b)o(y)f(the)75
1617 y(rank)h(of)f(that)g(pro)q(cess)h(within)h(the)f(group;)g(no)g(a)g
(priori)h(mem)o(b)q(ership)g(restrictions)f(on)g(the)g(pro)q(cess)75
1674 y(sending)f(or)f(receiving)i(the)e(message)f(are)h(implied.)22
b(F)l(or)15 b(collectiv)o(e)i(comm)o(unication,)e(the)g(comm)o(uni-)75
1730 y(cator)i(sp)q(eci\014es)j(the)e(set)f(of)h(pro)q(cesses)g(that)f
(participate)i(in)g(the)f(collectiv)o(e)h(op)q(eration.)29
b(Th)o(us,)18 b(the)75 1786 y(comm)o(unicator)g(restricts)h(the)f(\\spatial")
h(scop)q(e)g(of)f(comm)o(unication,)i(and)f(pro)o(vides)g(lo)q(cal)h(pro)q
(cess)75 1843 y(addressing.)166 1983 y Fk(Discussion:)48 b
Fj(`Comm)n(unicator')14 b(replaces)k(the)g(w)o(ord)g(`con)o(text')f(ev)o
(erywhere)i(in)e(curren)o(t)i(pt2pt)e(and)75 2040 y(collcomm)10
b(drafts.)166 2180 y Ft(Comm)o(unicators)g(are)h(represen)o(ted)h(b)o(y)g
(opaque)f Fu(comm)o(unicator)i(ob)s(jects)p Ft(,)f(and)g(hence)g(cannot)75
2237 y(b)q(e)k(directly)g(transferred)f(from)g(one)g(pro)q(cess)g(to)g
(another.)75 2365 y Fh(Raison)h(d')o(^)-21 b(etre)16 b(fo)o(r)e(sepa)o(rate)j
(Contexts)g(and)f(Comm)m(unicato)o(rs)44 b Ft(Within)16 b(a)g(comm)o
(unicator,)f(a)h(con)o(text)75 2421 y(is)h(separately)f(brok)o(en)h(out,)f
(rather)f(than)i(b)q(eing)g(inheren)o(t)h(in)f(the)f(comm)o(unicator)g(for)g
(one)g(sp)q(eci\014c,)75 2478 y(essen)o(tial)j(purp)q(ose.)27
b(W)l(e)18 b(w)o(an)o(t)f(to)g(mak)o(e)g(it)h(p)q(ossible)h(for)e(libraries)i
(quic)o(kly)g(to)e(ac)o(hiev)o(e)i(additional)75 2534 y(safe)i(comm)o
(unication)h(space)f(without)g(MPI-comm)o(unicator-based)h(sync)o
(hronization.)38 b(The)21 b(only)75 2591 y(w)o(a)o(y)15 b(to)g(do)h(this)g
(is)h(to)e(pro)o(vide)i(a)e(means)h(to)g(preallo)q(cate)g(man)o(y)g(con)o
(texts,)f(and)h(bind)h(them)f(lo)q(cally)l(,)75 2647 y(as)c(needed.)21
b(This)13 b(c)o(hoice)h(w)o(eak)o(ens)e(the)h(o)o(v)o(erall,)g(inheren)o(t)h
(\\safet)o(y")d(of)h(MPI,)h(if)g(programmed)f(in)i(this)75
2704 y(w)o(a)o(y)l(,)g(but)h(pro)o(vides)h(added)g(p)q(erformance)f(whic)o(h)
h(library)g(designers)g(will)h(demand.)-32 46 y Fr(1)-32 103
y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385
y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175
y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40
1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699
y(48)p eop
%%Page: 4 7
bop 75 -100 a Ft(4)432 b Fl(SECTION)16 b(4.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fi(4.4.1)49 b(Prede\014ned)15
b(Comm)o(unicato)o(r)o(s)75 186 y Ft(Initial)i(comm)o(unicators)e(de\014ned)h
(once)31 b Fh(MPI)p 885 186 14 2 v 16 w(INIT)14 b Ft(has)i(b)q(een)g(called)h
(are)e(as)f(follo)o(ws:)143 394 y Fg(\017)23 b Ff(MPI)p 266
394 13 2 v 14 w(COMM)p 410 394 V 15 w(ALL)p Ft(,)45 b(SPMD-lik)o(e)16
b(siblings)i(of)c(a)h(pro)q(cess.)143 602 y Fg(\017)23 b Ff(MPI)p
266 602 V 14 w(COMM)p 410 602 V 15 w(HOST)p Ft(,)45 b(A)15
b(comm)o(unicator)g(for)g(talking)g(to)g(one's)g(HOST.)143
810 y Fg(\017)23 b Ff(MPI)p 266 810 V 14 w(COMM)p 410 810 V
15 w(P)m(ARENT)p Ft(,)44 b(A)15 b(comm)o(unicator)g(for)f(talking)i(to)f
(one's)g(P)l(ARENT)g(\(spa)o(wner\).)143 1018 y Fg(\017)23
b Ff(MPI)p 266 1018 V 14 w(COMM)p 410 1018 V 15 w(SELF)p Ft(,)32
b(A)12 b(comm)o(unicator)e(for)h(talking)g(to)g(one's)g(self)g(\(useful)h
(for)f(getting)g(con)o(texts)189 1074 y(for)j(serv)o(er)h(purp)q(oses,)g
(etc.\).)166 1282 y(MPI)j(implemen)o(tations)h(are)f(required)h(to)f(pro)o
(vide)h(these)f(comm)o(unicators;)h(ho)o(w)o(ev)o(er,)e(not)h(all)75
1339 y(forms)12 b(of)f(comm)o(unication)j(mak)o(e)d(sense)i(for)f(all)h
(systems.)19 b(En)o(vironmen)o(tal)12 b(inquiry)i(will)g(b)q(e)f(pro)o(vided)
75 1395 y(to)20 b(determine)h(whic)o(h)h(of)e(these)h(comm)o(unicators)f(are)
g(usable)h(in)h(a)e(giv)o(en)h(implemen)o(tation.)37 b(The)75
1451 y(groups)20 b(corresp)q(onding)h(to)f(these)g(comm)o(unicators)g(are)g
(also)g(a)o(v)m(ailable)i(as)d(prede\014ned)j(quan)o(tities)75
1508 y(\(see)15 b(section)h(4.3.1\).)166 1676 y Fk(Discussion:)f
Fj(En)o(vironmen)o(tal)d(sub-committee)h(needs)i(to)f(pro)o(vide)f(suc)o(h)i
(inquiry)e(functions)h(for)f(us.)75 2064 y Fo(4.5)59 b(Group)20
b(Management)75 2221 y Ft(This)14 b(section)h(describ)q(es)g(the)f
(manipulation)h(of)f(groups)f(under)i(v)m(arious)f(subheadings:)20
b(general,)15 b(con-)75 2278 y(structors,)f(and)h(so)g(on.)75
2562 y Fi(4.5.1)49 b(Lo)q(cal)18 b(Op)q(erations)75 2704 y
Ft(The)d(follo)o(wing)h(are)f(all)h(lo)q(cal)h(\(non-comm)o(unicating\))e(op)
q(erations.)1967 46 y Fr(1)1967 103 y(2)1967 159 y(3)1967 215
y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959
1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959
1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959
1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959
1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959
1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959
2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959
2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959
2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 5 8
bop 75 -100 a Fl(4.5.)34 b(GR)o(OUP)15 b(MANA)o(GEMENT)1138
b Ft(5)75 45 y Fh(MPI)p 160 45 14 2 v 16 w(GROUP)p 328 45 V
18 w(SIZE\(group,)14 b(size\))117 124 y Fj(IN)171 b Fh(group)463
b Fj(handle)14 b(to)g(group)f(ob)r(ject.)117 202 y(OUT)124
b Fh(size)503 b Fj(is)14 b(the)g(in)o(teger)h(n)o(um)o(b)q(er)e(of)g(pro)q
(cesses)k(in)c(the)i(group.)75 376 y Fh(MPI)p 160 376 V 16
w(GROUP)p 328 376 V 18 w(RANK\(group,)f(rank\))117 455 y Fj(IN)171
b Fh(group)463 b Fj(handle)14 b(to)g(group)f(ob)r(ject.)117
533 y(OUT)124 b Fh(rank)488 b Fj(is)15 b(the)h(in)o(teger)g(rank)f(of)g(the)g
(calling)f(pro)q(cess)j(in)e(group,)g(or)905 589 y Ff(MPI)p
982 589 13 2 v 15 w(UNDEFINED)d Fj(if)h(the)i(pro)q(cess)h(is)d(not)h(a)g
(mem)o(b)q(er.)75 763 y Fh(MPI)p 160 763 14 2 v 16 w(TRANSLA)l(TE)p
432 763 V 17 w(RANKS)i(\(group)p 739 763 V 16 w(a,)f(n,)g(ranks)p
956 763 V 17 w(a,)g(group)p 1131 763 V 16 w(b,)g(ranks)p 1298
763 V 17 w(b\))117 842 y Fj(IN)171 b Fh(group)p 445 842 V 16
w(a)425 b Fj(handle)14 b(to)g(group)f(ob)r(ject)i(\\A")117
920 y(IN)171 b Fh(n)548 b Fj(n)o(um)o(b)q(er)13 b(of)h(ranks)g(in)27
b Ff(ranks)p 1371 920 13 2 v 16 w(a)14 b Fj(arra)o(y)117 998
y(IN)171 b Fh(ranks)p 437 998 14 2 v 16 w(a)433 b Fj(arra)o(y)14
b(of)f(zero)i(or)f(more)f(v)n(alid)f(ranks)i(in)g(group)f(\\A")117
1077 y(IN)171 b Fh(group)p 445 1077 V 16 w(b)424 b Fj(handle)14
b(to)g(group)f(ob)r(ject)i(\\B")117 1155 y(OUT)124 b Fh(ranks)p
437 1155 V 16 w(b)432 b Fj(arra)o(y)9 b(of)g(corresp)q(onding)h(ranks)g(in)f
(group)g(\\B,")18 b Ff(MPI)p 1757 1155 13 2 v 14 w(UNDEFINED)905
1212 y Fj(when)d(no)e(corresp)q(ondence)k(exists.)75 1411 y
Fi(4.5.2)49 b(Lo)q(cal)18 b(Group)e(Constructo)o(rs)75 1500
y Ft(The)f(execution)i(of)d(the)i(follo)o(wing)g(op)q(erations)f(do)g(not)g
(require)h(in)o(terpro)q(cess)g(comm)o(unication.)75 1605 y
Fh(MPI)p 160 1605 14 2 v 16 w(LOCAL)p 318 1605 V 16 w(SUBGROUP\(group,)h(n,)e
(ranks,)g(new)p 981 1605 V 17 w(group\))117 1684 y Fj(IN)171
b Fh(group)463 b Fj(handle)14 b(to)g(group)f(ob)r(ject)117
1762 y(IN)171 b Fh(n)548 b Fj(n)o(um)o(b)q(er)9 b(of)f(elemen)o(ts)i(in)e
(arra)o(y)h(ranks)h(\(and)f(size)h(of)18 b Ff(new)p 1802 1762
13 2 v 16 w(group)p Fj(\))117 1841 y(IN)171 b Fh(ranks)471
b Fj(arra)o(y)11 b(of)f(in)o(teger)i(ranks)f(in)f Ff(group)i
Fj(to)f(app)q(ear)g(in)g Ff(new)p 1751 1841 V 16 w(group)p
Fj(.)117 1919 y(OUT)124 b Fh(new)p 411 1919 14 2 v 17 w(group)372
b Fj(new)18 b(group)g(deriv)o(ed)g(from)e(ab)q(o)o(v)o(e,)i(preserving)h(the)
f(order)905 1976 y(de\014ned)d(b)o(y)28 b Ff(ranks)p Fj(.)75
2102 y Ft(If)15 b(no)h(ranks)e(are)h(sp)q(eci\014ed,)i Fh(new)p
655 2102 V 17 w(group)f Ft(has)f(no)g(mem)o(b)q(ers.)75 2207
y Fh(MPI)p 160 2207 V 16 w(LOCAL)p 318 2207 V 16 w(EX)o(CL)p
444 2207 V 16 w(SUBGROUP\(group,)i(n,)e(ranks,)h(new)p 1108
2207 V 17 w(group\))117 2286 y Fj(IN)171 b Fh(group)463 b Fj(handle)14
b(to)g(group)f(ob)r(ject)117 2364 y(IN)171 b Fh(n)548 b Fj(n)o(um)o(b)q(er)9
b(of)f(elemen)o(ts)i(in)e(arra)o(y)h(ranks)h(\(and)f(size)h(of)18
b Ff(new)p 1802 2364 13 2 v 16 w(group)p Fj(\))117 2443 y(IN)171
b Fh(ranks)471 b Fj(arra)o(y)9 b(of)g(in)o(teger)h(ranks)f(in)g
Ff(group)h Fj(not)f(to)g(app)q(ear)h(in)f Ff(new)p 1805 2443
V 16 w(group)117 2521 y Fj(OUT)124 b Fh(new)p 411 2521 14 2
v 17 w(group)372 b Fj(new)18 b(group)g(deriv)o(ed)g(from)e(ab)q(o)o(v)o(e,)i
(preserving)h(the)f(order)905 2578 y(de\014ned)d(b)o(y)28 b
Ff(ranks)p Fj(.)75 2704 y Ft(If)15 b(no)h(ranks)e(are)h(sp)q(eci\014ed,)i
Fh(new)p 655 2704 V 17 w(group)f Ft(is)f(iden)o(tical)i(to)e
Fh(group)p Ft(.)-32 46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215
y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498
y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40
780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40
1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796
y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304
y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 6 9
bop 75 -100 a Ft(6)432 b Fl(SECTION)16 b(4.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fh(MPI)p 160 45
14 2 v 16 w(LOCAL)p 318 45 V 16 w(SUBGROUP)p 572 45 V 19 w(RANGES\(group,)h
(n,)f(ranges,)g(new)p 1193 45 V 17 w(group\))117 175 y Fj(IN)171
b Fh(group)463 b Fj(handle)14 b(to)g(group)f(ob)r(ject)117
354 y(IN)171 b Fh(n)548 b Fj(n)o(um)o(b)q(er)9 b(of)f(elemen)o(ts)i(in)e
(arra)o(y)h(ranks)h(\(and)f(size)h(of)18 b Ff(new)p 1802 354
13 2 v 16 w(group)p Fj(\))117 534 y(IN)171 b Fh(ranges)450
b Fj(a)19 b(one-dimensional)e(arra)o(y)i(of)g(in)o(teger)g(triplets:)29
b(pairs)20 b(of)905 590 y(ranks)c(\(form:)j(b)q(eginning)c(through)g(end,)h
(inclusiv)o(e\))f(to)g(b)q(e)905 647 y(included)i(in)g(the)g(output)g(group)g
Ff(new)p 1529 647 V 16 w(group)p Fj(,)h(plus)e(a)h(con-)905
703 y(stan)o(t)d(stride)h(\(often)f(1)g(or)g(-1\).)117 883
y(OUT)124 b Fh(new)p 411 883 14 2 v 17 w(group)372 b Fj(new)18
b(group)g(deriv)o(ed)g(from)e(ab)q(o)o(v)o(e,)i(preserving)h(the)f(order)905
939 y(de\014ned)d(b)o(y)28 b Ff(ranges)p Fj(.)75 1116 y Ft(If)15
b(an)o(y)g(of)g(the)g(rank)g(sets)g(o)o(v)o(erlap,)f(then)i(the)f(o)o(v)o
(erlap)g(is)g(ignored.)21 b(If)15 b(no)g(ranges)g(are)g(sp)q(eci\014ed,)i
(then)75 1172 y(the)e(output)g(group)g(has)g(no)g(mem)o(b)q(ers.)75
1328 y Fh(MPI)p 160 1328 V 16 w(LOCAL)p 318 1328 V 16 w(SUBGROUP)p
572 1328 V 19 w(EX)o(CL)p 701 1328 V 16 w(RANGES\(group,)h(n,)f(ranges,)g
(new)p 1319 1328 V 17 w(group\))117 1458 y Fj(IN)171 b Fh(group)463
b Fj(handle)14 b(to)g(group)f(ob)r(ject)117 1638 y(IN)171 b
Fh(n)548 b Fj(n)o(um)o(b)q(er)9 b(of)f(elemen)o(ts)i(in)e(arra)o(y)h(ranks)h
(\(and)f(size)h(of)18 b Ff(new)p 1802 1638 13 2 v 16 w(group)p
Fj(\))117 1817 y(IN)171 b Fh(ranges)450 b Fj(a)17 b(one-dimensional)e(arra)o
(y)i(of)g(\(three)i(in)o(teger\))f(consisting)905 1874 y(of)12
b(pairs)h(of)f(ranks)i(\(form:)h(b)q(eginning)e(through)f(end,)i(inclu-)905
1930 y(siv)o(e\))d(to)g(b)q(e)h(excluded)g(from)d(the)j(output)f(group)g
Ff(new)p 1751 1930 V 16 w(group)p Fj(,)905 1987 y(plus)j(a)g(constan)o(t)g
(stride)h(\(often)f(1)f(or)h(-1\).)117 2166 y(OUT)124 b Fh(new)p
411 2166 14 2 v 17 w(group)372 b Fj(new)18 b(group)g(deriv)o(ed)g(from)e(ab)q
(o)o(v)o(e,)i(preserving)h(the)f(order)905 2223 y(de\014ned)d(b)o(y)28
b Ff(ranges)p Fj(.)75 2399 y Ft(If)15 b(an)o(y)f(of)f(the)i(rank)f(sets)g(o)o
(v)o(erlap,)g(then)h(the)f(o)o(v)o(erlap)g(is)h(ignored.)20
b(If)15 b(there)f(are)g(no)g(ranges)g(sp)q(eci\014ed,)75 2456
y(the)h(output)g(group)g(is)h(the)f(same)g(as)g(the)g(original)h(group.)166
2647 y Fk(Discussion:)e Fj(Please)f(prop)q(ose)f(additional)e(subgroup)i
(functions,)g(b)q(efore)h(the)f(second)h(reading...Virtual)75
2704 y(T)m(op)q(ologies)f(supp)q(ort?)1967 46 y Fr(1)1967 103
y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967
385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959
667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119
y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345
y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570
y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796
y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022
y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248
y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474
y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699
y(48)p eop
%%Page: 7 10
bop 75 -100 a Fl(4.5.)34 b(GR)o(OUP)15 b(MANA)o(GEMENT)1138
b Ft(7)75 45 y Fh(MPI)p 160 45 14 2 v 16 w(LOCAL)p 318 45 V
16 w(GROUP)p 486 45 V 18 w(UNION\(group1,)15 b(group2,)f(group)p
1088 45 V 17 w(out\))117 124 y Fj(IN)171 b Fh(group1)440 b
Fj(\014rst)15 b(group)f(ob)r(ject)g(handle)117 203 y(IN)171
b Fh(group2)440 b Fj(second)15 b(group)f(ob)r(ject)h(handle)117
282 y(OUT)124 b Fh(group)p 445 282 V 16 w(out)385 b Fj(group)14
b(ob)r(ject)h(handle)75 455 y Fh(MPI)p 160 455 V 16 w(LOCAL)p
318 455 V 16 w(GROUP)p 486 455 V 18 w(INTERSECT\(group1,)g(group2,)f(group)p
1191 455 V 17 w(out\))117 534 y Fj(IN)171 b Fh(group1)440 b
Fj(\014rst)15 b(group)f(ob)r(ject)g(handle)117 613 y(IN)171
b Fh(group2)440 b Fj(second)15 b(group)f(ob)r(ject)h(handle)117
692 y(OUT)124 b Fh(group)p 445 692 V 16 w(out)385 b Fj(group)14
b(ob)r(ject)h(handle)75 865 y Fh(MPI)p 160 865 V 16 w(LOCAL)p
318 865 V 16 w(GROUP)p 486 865 V 18 w(DIFFERENCE\(group1,)f(group2,)h(group)p
1216 865 V 16 w(out\))117 944 y Fj(IN)171 b Fh(group1)440 b
Fj(\014rst)15 b(group)f(ob)r(ject)g(handle)117 1023 y(IN)171
b Fh(group2)440 b Fj(second)15 b(group)f(ob)r(ject)h(handle)117
1102 y(OUT)124 b Fh(group)p 445 1102 V 16 w(out)385 b Fj(group)14
b(ob)r(ject)h(handle)166 1228 y Ft(The)g(set-lik)o(e)i(op)q(erations)e(are)g
(de\014ned)h(as)f(follo)o(ws:)75 1330 y Fu(union)24 b Ft(All)19
b(elemen)o(ts)g(of)f(the)h(\014rst)f(group)g(\()p Fh(group1)p
Ft(\),)g(follo)o(w)o(ed)h(b)o(y)f(all)h(elemen)o(ts)g(of)f(second)h(group)189
1386 y(\()p Fh(group2)p Ft(\))14 b(not)h(in)h(\014rst)75 1487
y Fu(in)o(tersect)23 b Ft(all)16 b(elemen)o(ts)g(of)f(the)g(\014rst)g(group)g
(whic)o(h)h(are)e(also)i(in)g(the)f(second)h(group)75 1588
y Fu(di\013erence)22 b Ft(all)17 b(elemen)o(ts)e(of)g(the)g(\014rst)g(group)g
(whic)o(h)h(are)f(not)g(in)h(the)f(second)h(group)75 1689 y(Note)d(that)f
(for)g(these)i(op)q(erations)f(the)g(order)g(of)f(pro)q(cesses)i(in)g(the)f
(output)g(group)f(is)i(determined)g(\014rst)75 1746 y(b)o(y)f(order)f(in)i
(the)f(\014rst)f(group)h(\(if)g(p)q(ossible\))h(and)f(then)g(b)o(y)g(order)f
(in)i(the)f(second)g(group)g(\(if)f(necessary\).)166 1887 y
Fk(Discussion:)32 b Fj(What)22 b(do)g(p)q(eople)h(think)f(ab)q(out)g(these)i
(lo)q(cal)d(op)q(erations?)44 b(More?)g(Less?)g(Note:)75 1943
y(these)15 b(op)q(erations)g(do)f(not)f(explicitly)g(en)o(umerate)h(ranks,)g
(and)g(therefore)i(are)e(more)f(scalable)h(if)f(implemen)o(ted)75
2000 y(e\016cien)o(tly)p Fe(:)7 b(:)g(:)75 2188 y Fh(MPI)p
160 2188 V 16 w(GROUP)p 328 2188 V 18 w(FREE\(group\))117 2267
y Fj(IN)171 b Fh(group)463 b Fj(frees)29 b Ff(group)15 b Fj(previously)e
(de\014ned.)75 2393 y Ft(This)i(op)q(eration)f(frees)h(a)f(handle)29
b Fh(group)15 b Ft(whic)o(h)g(is)f(not)g(curren)o(tly)h(b)q(ound)g(to)f(a)g
(comm)o(unicator.)19 b(It)14 b(is)75 2450 y(erroneous)h(to)g(attempt)f(to)g
(free)i(a)f(group)f(curren)o(tly)i(b)q(ound)g(to)f(a)g(comm)o(unicator.)166
2591 y Fk(Discussion:)h Fj(The)f(p)q(oin)o(t-to-p)q(oin)o(t)e(c)o(hapter)i
(suggests)h(that)e(there)i(is)e(a)g(single)g(destructor)j(for)d(all)f(MPI)75
2647 y(opaque)g(ob)r(jects;)i(ho)o(w)o(ev)o(er,)e(it)g(is)h(arguable)f(that)g
(this)h(sp)q(eci\014es)h(the)f(implemen)o(tatio)o(n)d(of)i(MPI)g(v)o(ery)h
(strongly)m(.)75 2704 y(W)m(e)f(p)q(olitely)g(argue)i(against)e(this)h
(approac)o(h.)-32 46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215
y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498
y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40
780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40
1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796
y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304
y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 8 11
bop 75 -100 a Ft(8)432 b Fl(SECTION)16 b(4.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fh(MPI)p 160 45
14 2 v 16 w(GROUP)p 328 45 V 18 w(DUP\(group,)f(new)p 666 45
V 17 w(group\))117 129 y Fj(IN)171 b Fh(group)463 b Fj(extan)o(t)14
b(group)g(ob)r(ject)h(handle)117 219 y(OUT)124 b Fh(new)p 411
219 V 17 w(group)372 b Fj(new)15 b(group)e(ob)r(ject)i(handle)75
350 y Fh(MPI)p 160 350 V 16 w(GROUP)p 328 350 V 18 w(DUP)k
Ft(duplicates)j(a)d(group)h(with)g(all)h(its)f(cac)o(hed)g(information,)h
(replacing)g(nothing.)75 407 y(This)16 b(function)g(is)g(essen)o(tial)g(to)e
(the)h(supp)q(ort)h(of)f(virtual)g(top)q(ologies.)75 569 y
Fi(4.5.3)49 b(Collective)17 b(Group)f(Constructo)o(rs)75 669
y Ft(The)e(execution)h(of)f(the)g(follo)o(wing)h(op)q(erations)f(require)h
(collectiv)o(e)h(comm)o(unication)f(within)g(a)f(group.)75
779 y Fh(MPI)p 160 779 V 16 w(COLL)p 288 779 V 16 w(SUBGROUP\(comm)o(,)e(k)o
(ey)l(,)j(colo)o(r,)e(new)p 983 779 V 18 w(group\))117 864
y Fj(IN)171 b Fh(comm)450 b Fj(comm)o(unicator)11 b(ob)r(ject)k(handle)117
953 y(IN)171 b Fh(k)o(ey)509 b Fj(\(in)o(teger\))117 1042 y(IN)171
b Fh(colo)o(r)479 b Fj(\(in)o(teger\))117 1132 y(OUT)124 b
Fh(new)p 411 1132 V 17 w(group)372 b Fj(new)15 b(group)e(ob)r(ject)i(handle)
75 1263 y Ft(This)f(collectiv)o(e)h(function)f(is)f(called)i(b)o(y)e(all)h
(pro)q(cesses)g(in)f(the)h(group)f(asso)q(ciated)g(with)26
b Fh(comm)n Ft(.)35 b Fh(colo)o(r)75 1320 y Ft(de\014nes)16
b(the)g(particular)g(new)g(group)f(to)f(whic)o(h)j(the)e(pro)q(cess)h(b)q
(elongs.)42 b Fh(k)o(ey)15 b Ft(de\014nes)i(the)e(rank-order)75
1376 y(in)34 b Fh(new)p 223 1376 V 17 w(group)p Ft(;)17 b(a)g(stable)g(sort)f
(is)h(used)g(to)f(determine)i(rank)f(order)f(in)35 b Fh(new)p
1440 1376 V 17 w(group)16 b Ft(if)h(the)34 b Fh(k)o(eys)17
b Ft(are)75 1433 y(not)e(unique.)166 1579 y Fk(Discussion:)29
b Fj(According)22 b(to)e(the)i(op)q(eration)f(of)f(this)h(function,)h(the)f
(groups)h(so)f(created)h(are)f(non-)75 1635 y(o)o(v)o(erlapping.)c(Is)d
(there)h(a)f(need)h(for)e(a)h(more)f(complex)f(functionalit)o(y?)75
1902 y Fo(4.6)59 b(Op)r(erations)19 b(on)h(Contexts)75 2019
y Fi(4.6.1)49 b(Lo)q(cal)18 b(Op)q(erations)75 2118 y Ft(There)d(are)g(no)g
(lo)q(cal)i(op)q(erations)e(on)g(con)o(texts.)75 2229 y Fh(MPI)p
160 2229 V 16 w(CONTEXTS)p 414 2229 V 17 w(FREE\(n,)h(contexts\))117
2313 y Fj(IN)171 b Fh(n)548 b Fj(n)o(um)o(b)q(er)13 b(of)h(con)o(texts)h(to)e
(free)117 2403 y(IN)171 b Fh(contexts)415 b Fj(v)o(oid)13 b(*)h(arra)o(y)f
(of)h(con)o(texts)75 2534 y Ft(Lo)q(cal)e(deallo)q(cation)h(of)e(con)o(text)g
(allo)q(cated)i(b)o(y)22 b Fh(MPI)p 995 2534 V 16 w(CONTEXTS)p
1249 2534 V 18 w(ALLOC)11 b Ft(\(b)q(elo)o(w\).)19 b(It)11
b(is)h(erroneous)75 2591 y(to)i(free)h(a)g(con)o(text)f(that)g(is)i(b)q(ound)
g(to)e(an)o(y)g(comm)o(unicator)h(\(either)g(lo)q(cally)i(or)d(in)i(another)e
(pro)q(cess\).)75 2647 y(This)22 b(op)q(eration)f(is)h(lo)q(cal)g(\(as)f(it)g
(m)o(ust)g(b)q(e,)i(b)q(ecause)f(it)g(do)q(es)f(not)g(p)q(ose)h(a)f(comm)o
(unicator)g(in)h(its)75 2704 y(argumen)o(t)14 b(list\).)1967
46 y Fr(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 9 12
bop 75 -100 a Fl(4.6.)34 b(OPERA)l(TIONS)17 b(ON)f(CONTEXTS)1008
b Ft(9)75 45 y Fi(4.6.2)49 b(Collective)17 b(Op)q(erations)75
184 y Fh(MPI)p 160 184 14 2 v 16 w(CONTEXTS)p 414 184 V 17
w(ALLOC\(comm)m(,)12 b(n,)j(contexts,)i(len\))117 264 y Fj(IN)171
b Fh(comm)450 b Fj(Comm)o(unicator)11 b(whose)j(group)g(denotes)h(participan)
o(ts)117 345 y(IN)171 b Fh(n)548 b Fj(n)o(um)o(b)q(er)13 b(of)h(con)o(texts)h
(to)e(allo)q(cate)117 426 y(OUT)124 b Fh(contexts)415 b Fj(v)o(oid)13
b(*)h(arra)o(y)f(of)h(con)o(texts)117 507 y(OUT)124 b Fh(len)517
b Fj(length)14 b(of)f(con)o(texts)i(arra)o(y)166 634 y Ft(Allo)q(cates)22
b(an)e(arra)o(y)g(of)g(opaque)h(con)o(texts.)35 b(This)21 b(collectiv)o(e)i
(op)q(eration)e(is)g(executed)g(b)o(y)g(all)75 690 y(pro)q(cesses)16
b(in)g(the)f Fh(MPI)p 488 690 V 16 w(COMM)p 646 690 V 16 w(GROUP\(comm)n(\))p
Ft(.)i(MPI)e(pro)o(vides)h(sp)q(ecial)h(con)o(textual)e(space)g(to)g(its)75
747 y(collectiv)o(e)22 b(op)q(erations)f(\()e(includin)q(g)k
Fh(MPI)p 829 747 V 15 w(CONTEXTS)p 1082 747 V 18 w(ALLOC)p
Ft(\))d(so)g(that,)g(despite)i(an)o(y)e(on-going)75 803 y(of)d(p)q(oin)o
(t-to-p)q(oin)o(t)h(comm)o(unication)f(on)h Fh(comm)m Ft(,)c(this)j(op)q
(eration)h(can)f(execute)h(safely)l(.)26 b(MPI)17 b(collec-)75
860 y(tiv)o(e)h(functions)g(will)h(ha)o(v)o(e)e(to)f(lo)q(c)o(k)i(out)f(m)o
(ultiple)j(threads,)d(so)g(it)h(will)h(eviden)o(tly)g(ha)o(v)o(e)e
(capabilities)75 916 y(una)o(v)m(ailable)g(to)e(the)g(user)h(program.)166
975 y(Con)o(texts)9 b(that)g(are)h(allo)q(cated)h(b)o(y)21
b Fh(MPI)p 859 975 V 15 w(ALLOC)p 1016 975 V 17 w(CONTEXTS)11
b Ft(are)f(unique)i(within)f Fh(MPI)p 1714 975 V 16 w(COMM)p
1872 975 V 16 w(GROUP\(comm)o(\))o Ft(.)75 1032 y(The)16 b(arra)o(y)f(is)h
(the)g(same)f(on)h(all)h(pro)q(cesses)f(that)f(call)i(the)f(function)g
(\(same)f(order,)h(same)f(n)o(um)o(b)q(er)h(of)75 1088 y(elemen)o(ts\).)166
1224 y Fk(Discussion:)36 b Ff(MPI)p 513 1224 13 2 v 14 w(CONTEXTS)p
746 1224 V 14 w(ALLOC\(comm)m(,)11 b(n,)k(contexts\))g Fj(w)o(as)g(the)g
(previous)f(de\014nition)g(of)g(this)75 1274 y(function,)e(then)i(w)o(e)f(c)o
(hanged)g(to)f(a)h Ff(group)g Fj(argumen)o(t)f(in)g(the)h(\014rst)h(slot,)e
(arguing)g(that)h(the)g(comm)o(unicator)d(w)o(as)75 1323 y(unnecessary)m(.)24
b(W)m(e)15 b(ha)o(v)o(e)g(c)o(hanged)h(bac)o(k)f(b)q(ecause)i(the)f
(group-seman)o(tics)f(pro)o(v)o(ed)g(not)g(to)h(b)q(e)f(thread)h(safe,)g(so)
75 1373 y(w)o(e)g(had)f(to)h(retain)f(the)h(approac)o(h)g(discussed)h(at)e
(length)h(at)f(the)h(previous)g(MPI)g(meeting.)22 b(\(In)16
b(case)g(y)o(ou)f(did)75 1423 y(not)e(read)g(the)g(July)f(10)h(draft,)f(y)o
(ou)g(ha)o(v)o(e)h(not)f(seen)i(a)e(c)o(hange)h(in)g(this)f(draft)h(compared)
f(to)g(the)i(June)f(24)f(draft!\))75 1473 y(No)o(w,)f(w)o(e)i(ha)o(v)o(e)e
(stronger)i(justi\014cation)e(for)h(k)o(eeping)g(the)g(approac)o(h)g
(discussed)i(at)d(June)i(24)e(meeting.)17 b(W)m(e)11 b(ha)o(v)o(e)75
1523 y(added)18 b(the)g Ff(len)h Fj(parameter)e(yielding)f(the)j(curren)o(t)g
(form)o(ulation,)c(b)q(ecause)k(con)o(texts)g(are)f(no)o(w)f(opaque,)h(not)75
1572 y(in)o(tegers.)166 1625 y(W)m(e)10 b(ha)o(v)o(e)g(to)h(retain)g(the)g(c)
o(hic)o(k)o(en-and-egg)f(asp)q(ect)i(of)e(MPI)h(\()p Fd(i.e.)p
Fj(,)f(use)h(a)g(comm)o(uni)o(cator)d(to)j(get)g(con)o(text\(s\))75
1675 y(or)i(a)h(comm)o(unicator\),)c(to)j(get)h(thread)g(safet)o(y)m(.)k(Y)m
(et,)13 b(w)o(e)h(w)o(an)o(t)f(libraries)g(to)g(con)o(trol)h(their)g(o)o(wn)f
(fate)g(regarding)75 1725 y(safet)o(y)m(,)c(not)h(to)f(rely)g(on)g(the)h
(caller)f(to)h(pro)o(vide)f(a)g(quiescen)o(t)h(con)o(text.)17
b(W)m(e)9 b(ac)o(hiev)o(e)h(this)f(b)o(y)g(adding)g(the)h Fc(quiescen)o(t)75
1775 y(prop)q(ert)o(y)20 b Fj(for)15 b(MPI)h(collectiv)o(e)g(comm)o
(unication)c(functions.)24 b(W)m(e)15 b(m)o(ust,)g(in)g(fact,)h(push)g(this)f
(requiremen)o(t)h(to)75 1824 y(the)k(collectiv)o(e)e(c)o(hapter,)j(but)e(w)o
(e)g(demonstrate)g(here)h(wh)o(y)f(our)g(particular)g(collectiv)o(e)g
(routines)g(need)h(this)75 1874 y(prop)q(ert)o(y)m(.)28 b(In)17
b(a)g(m)o(ulti-threaded)f(en)o(vironmen)o(t,)g(it)h(is)g(clear)g(that)g(eac)o
(h)h(temp)q(orally)d(o)o(v)o(erlapping)h(call)g(to)h(a)75 1924
y(collectiv)o(e)f(op)q(eration)f(m)o(ust)g(b)q(e)h(with)f(a)h(di\013eren)o(t)
g(comm)o(unicator.)21 b(If)15 b(this)h(has)f(not)h(b)q(een)h(made)d
(explicit,)h(it)75 1974 y(m)o(ust)e(b)q(e.)166 2027 y(One)f(can)f(ha)o(v)o(e)
g(on-going)f(p)q(oin)o(t-to-p)q(oin)o(t)g(and)h(collectiv)o(e)g(comm)o
(unications)d(on)j(a)g(single)g(comm)o(unicator.)75 2076 y(A)i(con)o(text)g
(is)f(de\014ned)h(to)g(b)q(e)g(su\016cien)o(tly)f(p)q(o)o(w)o(erful)g(to)g(k)
o(eep)h(b)q(oth)g(p)q(oin)o(t-to-p)q(oin)o(t)e(and)h(collectiv)o(e)h(op)q
(erations)75 2126 y(distinct.)19 b(Hence,)c(it)f(is)g(alw)o(a)o(ys)f(safe)h
(to)g(call)27 b Ff(MPI)p 894 2126 V 15 w(COMM)p 1039 2126 V
14 w(MAKE)14 b Fj(and)28 b Ff(MPI)p 1355 2126 V 14 w(CONTEXTS)p
1588 2126 V 15 w(ALLOC)p Fj(,)13 b(ev)o(en)i(if)75 2176 y(p)q(ending)h(async)
o(hronous)h(p)q(oin)o(t-to-p)q(oin)o(t)e(op)q(erations)i(are)f(on-going,)f
(or)i(messages)f(ha)o(v)o(e)g(not)g(b)q(een)i(receiv)o(ed)75
2226 y(but)g(are)h(on)f(the)h(receipt)g(queue.)32 b(With)17
b(these)j(rules,)f(no)f(quiescen)o(t)h(comm)o(unicator)d(is)h(required)j(in)d
(order)75 2276 y(to)e(get)h(new)g(con)o(texts.)24 b(W)m(e)15
b(ha)o(v)o(e)h(added)g(demands)f(on)g(the)h(MPI)g(implem)o(en)o(tation)d
(while)i(making)e(con)o(texts)75 2325 y(opaque)h(to)g(mak)o(e)e(this)i
(simpler)f(to)g(realize)i(without)e(sa)o(ying)g(ho)o(w)h(it)f(m)o(ust)g(b)q
(e)h(done.)166 2385 y(In)e(summary)m(,)d(libraries)i(ha)o(v)o(e)h(to)g(get)g
(the)g(comm)o(unicator)e(as)i(a)f(base)i(argumen)o(t)d(to)i(retain)g(thread)h
(safet)o(y)m(,)75 2441 y(but)d(they)h(can)f(alw)o(a)o(ys)f(safely)h(get)g
(comm)o(unicatio)o(n)e(con)o(texts)j(to)e(do)h(further)h(w)o(ork.)17
b(The)10 b(concept)h(of)f(quiescence)75 2498 y(is)g(banished)h(to)f(b)q(e)g
(a)g(small)e(detail)i(of)f(implemen)o(tation,)e(rather)k(than)g(a)e(cen)o
(tral)i(tenet)g(of)f(library)f(design.)17 b(Users)75 2554 y(m)o(ust)9
b(still)h(w)o(orry)g(ab)q(out)h(temp)q(oral)e(safet)o(y)m(,)h(whic)o(h)g(is)g
(not)h(guaran)o(teed)g(b)o(y)f(con)o(texts)h(alone)f(\(see)i(example)d(b)q
(elo)o(w)75 2611 y(in)k(section)i(4.11.6\).)-32 46 y Fr(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40
667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175
y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40
1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699
y(48)p eop
%%Page: 10 13
bop 75 -100 a Ft(10)409 b Fl(SECTION)16 b(4.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fo(4.7)59 b(Op)r(erations)19
b(on)h(Communicato)n(rs)75 158 y Fi(4.7.1)49 b(Lo)q(cal)18
b(Comm)o(unicato)o(r)13 b(Op)q(erations)75 253 y Ft(The)i(follo)o(wing)h(are)
f(all)h(lo)q(cal)h(\(non-comm)o(unicating\))e(op)q(erations.)75
361 y Fh(MPI)p 160 361 14 2 v 16 w(COMM)p 318 361 V 16 w(SIZE\(comm)m(,)d
(size\))117 443 y Fj(IN)171 b Fh(comm)450 b Fj(handle)14 b(to)g(comm)o
(unicator)d(ob)r(ject.)117 528 y(OUT)124 b Fh(size)503 b Fj(is)22
b(the)g(in)o(teger)g(n)o(um)o(b)q(er)f(of)g(pro)q(cesses)k(in)c(the)h(group)g
(of)905 585 y Ff(comm)m Fj(.)75 761 y Fh(MPI)p 160 761 V 16
w(COMM)p 318 761 V 16 w(RANK\(comm)m(,)12 b(rank\))117 843
y Fj(IN)171 b Fh(comm)450 b Fj(handle)14 b(to)g(comm)o(unicator)d(ob)r(ject.)
117 928 y(OUT)124 b Fh(rank)488 b Fj(is)17 b(the)g(in)o(teger)g(rank)g(of)f
(the)i(calling)d(pro)q(cess)k(in)d(group)h(of)905 984 y Ff(comm)m
Fj(,)g(or)39 b Ff(MPI)p 1195 984 13 2 v 14 w(UNDEFINED)18 b
Fj(if)g(the)i(pro)q(cess)h(is)e(not)g(a)905 1041 y(mem)o(b)q(er.)75
1258 y Fi(4.7.2)49 b(Lo)q(cal)18 b(Constructo)o(rs)75 1401
y Fh(MPI)p 160 1401 14 2 v 16 w(COMM)p 318 1401 V 16 w(GROUP\(comm)n(,)12
b(group\))117 1483 y Fj(IN)171 b Fh(comm)450 b Fj(comm)o(unicator)11
b(ob)r(ject)k(handle)117 1568 y(OUT)124 b Fh(group)463 b Fj(group)14
b(ob)r(ject)h(handle)75 1697 y Ft(Accessor)g(that)g(returns)g(the)g(group)g
(corresp)q(onding)h(to)f(the)g(comm)o(unicator)30 b Fh(comm)m
Ft(.)75 1805 y Fh(MPI)p 160 1805 V 16 w(COMM)p 318 1805 V 16
w(CONTEXT\(comm)n(,)12 b(context\))117 1887 y Fj(IN)171 b Fh(comm)450
b Fj(comm)o(unicator)11 b(ob)r(ject)k(handle)117 1972 y(OUT)124
b Fh(context)432 b Fj(con)o(text)75 2101 y Ft(Returns)16 b(the)f(con)o(text)g
(asso)q(ciated)g(with)h(the)f(comm)o(unicator)30 b Fh(comm)m
Ft(.)75 2210 y Fh(MPI)p 160 2210 V 16 w(COMM)p 318 2210 V 16
w(UNBIND\(comm)m(\))117 2292 y Fj(IN)171 b Fh(comm)450 b Fj(the)15
b(comm)o(unicator)c(to)j(b)q(e)g(deallo)q(cated.)75 2421 y
Ft(This)23 b(routine)g(disasso)q(ciates)g(the)f(group)g Fh(MPI)p
928 2421 V 16 w(COMM)p 1086 2421 V 16 w(GROUP\(comm)o(\))d
Ft(asso)q(ciated)j(with)h Fh(comm)75 2478 y Ft(from)10 b(the)i(con)o(text)e
Fh(MPI)p 495 2478 V 16 w(COMM)p 653 2478 V 16 w(CONTEXT\(comm)n(\))e
Ft(asso)q(ciated)k(with)22 b Fh(comm)m Ft(.)16 b(The)11 b(opaque)h(ob)s(ject)
75 2534 y Fh(comm)c Ft(is)15 b(deallo)q(cated.)21 b(Both)14
b(the)h(group)f(and)g(con)o(text,)g(pro)o(vided)h(at)e(the)29
b Fh(MPI)p 1501 2534 V 16 w(COMM)p 1659 2534 V 16 w(BIND)14
b Ft(call,)75 2591 y(remain)19 b(a)o(v)m(ailable)h(for)e(further)g(use.)30
b(If)38 b Fh(MPI)p 908 2591 V 15 w(COMM)p 1065 2591 V 17 w(MAKE)18
b Ft(\(see)g(b)q(elo)o(w\))h(w)o(as)f(called)i(in)f(lieu)h(of)75
2647 y Fh(MPI)p 160 2647 V 16 w(COMM)p 318 2647 V 16 w(BIND)p
Ft(,)c(then)h(there)f(is)h(no)f(exp)q(osed)i(con)o(text)d(kno)o(wn)h(to)g
(the)h(user,)f(and)h(this)f(quan)o(tit)o(y)75 2704 y(is)g(freed)f(b)o(y)30
b Fh(MPI)p 396 2704 V 16 w(COMM)p 554 2704 V 17 w(UNBIND)p
Ft(.)1967 46 y Fr(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959
554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780
y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 11 14
bop 75 -100 a Fl(4.8.)34 b(INTR)o(ODUCTION)16 b(TO)g(INTER-COMMUNICA)l(TION)
600 b Ft(11)75 45 y Fh(MPI)p 160 45 14 2 v 16 w(COMM)p 318
45 V 16 w(DUP\(comm)m(,)12 b(new)p 662 45 V 17 w(context,)k(new)p
921 45 V 17 w(comm)m(\))117 122 y Fj(IN)171 b Fh(comm)450 b
Fj(comm)o(unicator)11 b(ob)r(ject)k(handle)117 194 y(IN)171
b Fh(new)p 411 194 V 17 w(context)341 b Fj(new)15 b(con)o(text)f(to)g(use)h
(with)e(new)p 1428 194 13 2 v 16 w(comm)117 266 y(OUT)124 b
Fh(new)p 411 266 14 2 v 17 w(comm)359 b Fj(comm)o(unicator)11
b(ob)r(ject)k(handle)75 390 y Fh(MPI)p 160 390 V 16 w(COMM)p
318 390 V 16 w(DUP)e Ft(duplicates)i(a)e(comm)o(unicator)g(with)g(all)h(its)g
(cac)o(hed)f(information,)h(replacing)g(just)75 447 y(the)h(con)o(text.)75
565 y Fi(4.7.3)49 b(Collective)17 b(Comm)o(unicato)o(r)c(Constructo)o(rs)75
698 y Fh(MPI)p 160 698 V 16 w(COMM)p 318 698 V 16 w(MAKE\(sync)p
562 698 V 17 w(comm)m(,)f(comm)p 840 698 V 11 w(group,)i(comm)p
1107 698 V 11 w(new\))117 776 y Fj(IN)171 b Fh(sync)p 418 776
V 17 w(comm)352 b Fj(Comm)o(unicator)6 b(whose)k(incorp)q(orated)g(group)f
(\()p Ff(MPI)p 1746 776 13 2 v 15 w(COMM)p 1891 776 V 14 w(GROUP\(com)o(m)m
(\))p Fj(\))905 832 y(is)g(the)h(group)f(o)o(v)o(er)h(whic)o(h)f(the)h(new)f
(comm)o(unicator)e Ff(comm)p 1845 832 V 9 w(new)905 889 y Fj(will)i(b)q(e)h
(de\014ned,)i(also)d(sp)q(ecifying)h(participan)o(ts)g(in)g(this)g(syn-)905
945 y(c)o(hronizing)k(op)q(eration.)117 1017 y(IN)171 b Fh(comm)p
454 1017 14 2 v 10 w(group)332 b Fj(Group)11 b(of)f(the)i(new)f(comm)o
(unicator;)e(often)i(this)g(will)f(b)q(e)h(the)905 1073 y(same)18
b(as)37 b Ff(sync)p 1164 1073 13 2 v 16 w(comm)m Fj(')o(s)16
b(group,)j(else)g(it)f(m)o(ust)g(b)q(e)h(subset)905 1130 y(thereof;)117
1201 y(OUT)124 b Fh(comm)p 454 1201 14 2 v 10 w(new)366 b Fj(the)15
b(new)f(comm)o(unicator.)90 1326 y Fh(MPI)p 175 1326 V 16 w(COMM)p
333 1326 V 16 w(MAKE)h Ft(is)h(equiv)m(alen)o(t)h(to:)147 1403
y Fm(MPI_CONTEXTS_ALLOC\(sync)o(\\_comm,)j(context,)j(1,)h(len\))147
1459 y(MPI_COMM_BIND\(comm\\_gro)o(up,)d(context,)i(comm_new\))75
1537 y Ft(plus,)i(notionally)l(,)g(in)o(ternal)e(\015ags)f(are)g(set)g(in)h
(the)f(comm)o(unicator,)i(denoting)f(that)e(con)o(text)h(w)o(as)75
1593 y(created)f(as)g(part)f(of)g(the)h(opaque)g(pro)q(cess)h(that)e(made)h
(the)g(comm)o(unicator)g(\(so)f(it)h(can)g(b)q(e)h(freed)75
1649 y(b)o(y)33 b Fh(MPI)p 241 1649 V 16 w(COMM)p 399 1649
V 16 w(UNBIND)p Ft(\).)17 b(It)g(is)g(erroneous)f(if)34 b Fh(comm)p
1116 1649 V 11 w(group)16 b Ft(is)h(not)g(a)f(subset)h(of)33
b Fh(sync)p 1715 1649 V 17 w(comm)m Ft('s)75 1706 y(underlying)17
b(group.)166 1845 y Fk(Discussion:)34 b Ff(MPI)p 511 1845 13
2 v 14 w(COMM)p 655 1845 V 15 w(MAKE)13 b Fj(and)27 b Ff(MPI)p
970 1845 V 15 w(CONTEXTS)p 1204 1845 V 14 w(ALLOC)14 b Fj(b)q(oth)f(require)i
(b)q(o)q(otstrap)f(via)f(a)75 1902 y(comm)o(unicator,)g(instead)j(of)f(just)h
(the)h(group)e(of)h(that)f(comm)o(unicator)e(for)j(thread)g(safet)o(y)m(.)24
b(W)m(e)15 b(ha)o(v)o(e)h(argued)75 1958 y(this)g(bac)o(k)h(and)f(forth)g
(carefully)m(,)g(and)g(conclude)h(that)f(eac)o(h)h(thread)g(of)f(an)g(MPI)h
(program)d(will)h(ha)o(v)o(e)h(one)h(or)75 2014 y(more)c(con)o(texts.)75
2237 y Fo(4.8)59 b(Intro)r(duction)18 b(to)i(Inter-Communicat)o(ion)75
2339 y Ft(This)e(section)h(in)o(tro)q(duces)f(the)g(concept)g(of)f(in)o
(ter-comm)o(unication)i(and)f(describ)q(es)i(the)d(p)q(ortions)h(of)75
2395 y(MPI)h(that)f(supp)q(ort)h(it.)32 b(It)19 b(describ)q(es)i(supp)q(ort)e
(for)f(writing)h(programs)f(whic)o(h)i(con)o(tain)f(user-lev)o(el)75
2452 y(serv)o(ers.)g(It)13 b(also)g(describ)q(es)i(a)e(name)h(service)g(whic)
o(h)g(simpli\014es)i(writing)d(programs)f(con)o(taining)j(in)o(ter-)75
2508 y(comm)o(unication.)166 2647 y Fk(Discussion:)26 b Fj(Recommendation)16
b(and)i(plea)h(for)g(patience:)29 b(MPI)19 b(Commi)o(ttee)f(tak)o(es)h(stra)o
(w)g(p)q(oll)f(on)75 2704 y(whether)c(to)f(ha)o(v)o(e)g(in)o(ter-comm)o
(unication)d(or)j(not)g({)f(as)h(a)g(whole)g({)g(in)f(MPI1.)18
b(The)13 b(most)f(suitable)h(time)f(w)o(ould)-32 46 y Fr(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40
667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175
y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40
1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699
y(48)p eop
%%Page: 12 15
bop 75 -100 a Ft(12)409 b Fl(SECTION)16 b(4.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fj(b)q(e)f(after)g(w)o(e)f(hear)
h(the)g(argumen)o(ts)e(ab)q(out)i(the)g(in)o(terface)f(at)h(a)f(high)f(lev)o
(el,)h(but)h(b)q(efore)g(w)o(e)f(this)h(section)g(of)e(the)75
102 y(c)o(hapter.)75 304 y Fi(4.8.1)49 b(De\014nitions)17 b(of)f(Inter-Comm)n
(unication)f(and)h(Inter-Comm)n(unicato)o(rs)75 390 y Ft(All)h(p)q(oin)o
(t-to-p)q(oin)o(t)g(comm)o(unication)g(describ)q(ed)h(th)o(us)e(far)g(has)g
(in)o(v)o(olv)o(ed)h(comm)o(unication)g(b)q(et)o(w)o(een)75
446 y(pro)q(cesses)12 b(that)e(are)h(mem)o(b)q(ers)h(of)f(the)g(same)g
(group.)18 b(The)12 b(source)f(pro)q(cess)h(in)g(send)g(or)f(the)g
(destination)75 502 y(pro)q(cess)j(in)h(receiv)o(e)f(\(the)g(\\target")e(pro)
q(cess\))i(is)g(sp)q(eci\014ed)i(using)e(a)g Fh(\(com)o(m)n(unicato)o(r,)c
(rank\))k Ft(pair.)20 b(The)75 559 y(target)14 b(pro)q(cess)i(is)g(that)f
(pro)q(cess)h(with)g(the)g(giv)o(en)g(rank)f(within)i(the)f(group)f(of)g(the)
h(giv)o(en)g(comm)o(uni-)75 615 y(cator.)j(This)c(t)o(yp)q(e)g(of)f(comm)o
(unication)i(is)f(called)i(\\in)o(tra-comm)o(unication")d(and)h(the)g(comm)o
(unicator)75 672 y(used)h(is)f(called)i(an)e(\\in)o(tra-comm)o(unicator.")166
728 y(In)20 b(mo)q(dular)g(and)g(m)o(ulti-discipli)q(nary)i(applications,)f
(di\013eren)o(t)f(pro)q(cess)g(groups)f(execute)h(dif-)75 785
y(feren)o(t)f(mo)q(dules)h(and)f(pro)q(cesses)g(within)h(di\013eren)o(t)f(mo)
q(dules)h(comm)o(unicate)f(with)h(one)f(another)f(in)75 841
y(a)h(pip)q(eline)k(or)c(a)g(more)g(general)h(mo)q(dule)h(graph.)32
b(In)20 b(these)g(applications)h(the)f(most)e(natural)i(w)o(a)o(y)75
898 y(for)f(a)h(pro)q(cess)g(to)f(sp)q(ecify)i(a)f(target)e(pro)q(cess)i(is)h
(b)o(y)e(the)h(rank)g(of)f(the)h(target)f(pro)q(cess)h(within)h(the)75
954 y(target)c(group.)27 b(In)19 b(applications)g(that)f(con)o(tain)g(in)o
(ternal)g(user)h(lev)o(el)g(serv)o(ers,)f(eac)o(h)g(serv)o(er)f(ma)o(y)g(b)q
(e)75 1011 y(a)i(pro)q(cess)h(group)g(that)f(pro)o(vides)h(services)g(to)f
(one)h(or)f(more)h(clien)o(ts,)h(and)f(eac)o(h)g(clien)o(t)h(ma)o(y)e(b)q(e)h
(a)75 1067 y(pro)q(cess)f(group)g(whic)o(h)h(uses)g(the)f(services)h(of)f
(one)g(or)g(more)g(serv)o(ers.)31 b(In)20 b(these)f(applications)i(it)e(is)75
1123 y(again)13 b(most)g(natural)g(to)g(sp)q(ecify)h(the)g(target)e(pro)q
(cess)h(b)o(y)g(rank)g(within)i(the)e(target)f(group.)19 b(This)14
b(t)o(yp)q(e)75 1180 y(of)h(comm)o(unication)g(is)h(called)g(\\in)o(ter-comm)
o(unication")g(and)f(the)g(comm)o(unicator)f(used)i(is)f(called)i(an)75
1236 y(\\in)o(ter-comm)o(unicator.")166 1293 y(An)23 b(in)o(ter-comm)o
(unication)g(op)q(eration)g(is)f(a)g(p)q(oin)o(t-to-p)q(oin)o(t)h(comm)o
(unication)g(b)q(et)o(w)o(een)g(pro-)75 1349 y(cesses)10 b(in)h(di\013eren)o
(t)g(groups.)18 b(The)10 b(group)g(con)o(taining)h(a)f(pro)q(cess)g(that)g
(initiates)h(an)f(in)o(ter-comm)o(unication)75 1406 y(op)q(eration)15
b(is)h(called)h(the)e(\\lo)q(cal)h(group,")f(that)f(is,)h(the)h(sender)g(in)g
(a)e(send)i(and)g(the)f(receiv)o(er)h(in)g(a)f(re-)75 1462
y(ceiv)o(e.)29 b(The)18 b(group)g(con)o(taining)h(the)f(target)f(pro)q(cess)h
(is)g(called)i(the)e(\\remote)f(group,")h(that)f(is,)i(the)75
1519 y(receiv)o(er)e(in)g(a)f(send)h(and)g(the)f(sender)h(in)g(a)f(receiv)o
(e.)24 b(As)17 b(in)g(in)o(tra-comm)o(unication,)g(the)f(target)f(pro-)75
1575 y(cess)f(is)h(sp)q(eci\014ed)h(using)e(a)g Fh(\(com)o(m)n(unicato)o(r,)d
(rank\))i Ft(pair.)20 b(Unlik)o(e)15 b(in)o(tra-comm)o(unication,)g(the)f
(rank)f(is)75 1632 y(relativ)o(e)j(to)e(the)i(remote)e(group.)166
1688 y(One)19 b(additional)i(needed)f(concept)f(is)g(the)g(\\group)f
(leader.")31 b(The)19 b(pro)q(cess)g(with)g(rank)f(0)h(in)g(a)75
1744 y(pro)q(cess)f(group)f(is)i(designated)f(\\group)f(leader.")28
b(This)19 b(concept)f(is)g(used)h(in)f(supp)q(ort)g(of)f(user-lev)o(el)75
1801 y(serv)o(ers,)d(and)i(elsewhere.)75 1920 y Fi(4.8.2)49
b(Prop)q(erties)15 b(of)i(Inter-Comm)n(unication)d(and)j(Inter-Comm)n
(unicato)o(rs)75 2006 y Ft(Here)e(is)h(a)f(summary)g(of)f(the)i(prop)q
(erties)g(of)e(in)o(ter-comm)o(unication)j(and)e(in)o(ter-comm)o(unicators:)
143 2088 y Fg(\017)23 b Ft(The)16 b(syn)o(tax)f(is)i(the)f(same)g(for)f(b)q
(oth)h(in)o(ter-)h(and)f(in)o(tra-comm)o(unication.)23 b(The)16
b(same)g(comm)o(u-)189 2145 y(nicator)f(can)g(b)q(e)h(used)g(for)e(b)q(oth)i
(send)f(and)h(receiv)o(e)g(op)q(erations.)143 2234 y Fg(\017)23
b Ft(A)15 b(target)f(pro)q(cess)h(is)h(addressed)g(b)o(y)f(its)g(rank)g(in)h
(the)f(remote)g(group.)143 2323 y Fg(\017)23 b Ft(Comm)o(unications)12
b(using)i(an)e(in)o(ter-comm)o(unicator)h(are)f(guaran)o(teed)g(not)g(to)g
(con\015ict)h(with)g(an)o(y)189 2380 y(comm)o(unications)i(that)g(use)h(a)e
(di\013eren)o(t)i(comm)o(unicator.)143 2469 y Fg(\017)23 b
Ft(An)15 b(in)o(ter-comm)o(unicator)g(cannot)g(b)q(e)h(used)g(for)f
(collectiv)o(e)i(comm)o(unication.)143 2558 y Fg(\017)23 b
Ft(A)15 b(comm)o(unicator)g(will)i(pro)o(vide)e(either)h(in)o(tra-)f(or)g(in)
o(ter-comm)o(unication,)h(nev)o(er)f(b)q(oth.)143 2647 y Fg(\017)23
b Ft(Once)18 b(constructed,)f(the)g(remote)f(group)h(of)g(an)f(in)o(ter-comm)
o(unicator)i(ma)o(y)e(not)g(b)q(e)i(c)o(hanged.)189 2704 y(Comm)o(unication)d
(with)h(an)o(y)f(pro)q(cess)g(outside)h(of)f(the)g(remote)g(group)f(is)i(not)
f(allo)o(w)o(ed.)1967 46 y Fr(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959
1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959
1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959
1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959
1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959
1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959
2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959
2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959
2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 13 16
bop 75 -100 a Fl(4.8.)34 b(INTR)o(ODUCTION)16 b(TO)g(INTER-COMMUNICA)l(TION)
600 b Ft(13)166 45 y(The)19 b(routine)g Fh(MPI)p 508 45 14
2 v 16 w(COMM)p 666 45 V 16 w(ST)l(A)l(T\(\))g Ft(ma)o(y)f(b)q(e)h(used)g(to)
f(determine)h(if)g(a)g(comm)o(unicator)f(is)h(an)75 102 y(in)o(ter-)g(or)e
(in)o(tra-comm)o(unicator.)29 b(In)o(ter-comm)o(unicators)18
b(can)g(b)q(e)h(used)g(as)f(argumen)o(ts)f(to)g(some)h(of)75
158 y(the)f(other)f(comm)o(unicator)g(inquiry)i(routines)f(\(de\014ned)g(ab)q
(o)o(v)o(e\).)24 b(In)o(ter-comm)o(unicators)16 b(cannot)g(b)q(e)75
214 y(used)i(as)f(input)h(to)f(an)o(y)g(of)g(the)h(lo)q(cal)g(constructor)f
(routines)h(for)e(in)o(tra-comm)o(unicators.)26 b(When)18 b(an)75
271 y(in)o(ter-comm)o(unicator)c(is)h(used)g(as)f(an)h(input)g(argumen)o(t,)e
(the)i(follo)o(wing)g(table)g(describ)q(es)g(b)q(eha)o(vior)g(of)75
327 y(relev)m(an)o(t)h Fh(MPI)p 332 327 V 16 w(COMM)p 490 327
V 16 w(*)f Ft(functions:)p 222 382 1506 2 v 221 438 2 57 v
664 421 a Fh(MPI)p 749 421 14 2 v 16 w(COMM)p 907 421 V 31
w Ft(F)l(unction)h(Beha)o(vior)p 1727 438 2 57 v 221 495 V
655 478 a(\(in)g(In)o(ter-Comm)o(unication)f(Mo)q(de\))p 1727
495 V 222 496 1506 2 v 222 506 V 221 563 2 57 v 247 546 a Fh(MPI)p
332 546 14 2 v 16 w(COMM)p 490 546 V 17 w(SIZE\(\))p 777 563
2 57 v 170 w Ft(returns)g(the)g(size)h(of)f(the)g(remote)g(group.)p
1727 563 V 221 619 V 247 602 a Fh(MPI)p 332 602 14 2 v 16 w(COMM)p
490 602 V 17 w(GROUP\(\))p 777 619 2 57 v 111 w Ft(returns)g(the)g(remote)g
(group.)p 1727 619 V 221 676 V 247 659 a Fh(MPI)p 332 659 14
2 v 16 w(COMM)p 490 659 V 17 w(RANK\(\))p 777 676 2 57 v 140
w Ft(returns)g Ff(MPI)p 1037 659 13 2 v 14 w(UNDEFINED)p 1727
676 2 57 v 221 732 V 247 715 a Fh(MPI)p 332 715 14 2 v 16 w(COMM)p
490 715 V 17 w(CONTEXT\(\))p 777 732 2 57 v 50 w Ft(erroneous)p
1727 732 V 221 788 V 247 772 a Fh(MPI)p 332 772 14 2 v 16 w(COMM)p
490 772 V 17 w(UNBIND\(\))p 777 788 2 57 v 92 w Ft(erroneous)p
1727 788 V 221 845 V 247 828 a Fh(MPI)p 332 828 14 2 v 16 w(COMM)p
490 828 V 17 w(DUP\(\))p 777 845 2 57 v 170 w Ft(erroneous)p
1727 845 V 222 847 1506 2 v 75 948 a Fh(Construction/Destruction)j(of)d
(Inter-Comm)m(unicato)o(rs)75 1034 y Ft(Construction)i(of)f(an)g(in)o
(ter-comm)o(unicator)h(requires)g(t)o(w)o(o)f(separate)g(collectiv)o(e)i(op)q
(erations)f(\(one)f(in)75 1091 y(the)11 b(lo)q(cal)h(group)f(and)g(one)g(in)h
(the)f(remote)g(group\))f(and)h(a)g(p)q(oin)o(t-to-p)q(oin)o(t)h(op)q
(eration)f(b)q(et)o(w)o(een)g(the)g(t)o(w)o(o)75 1147 y(group)i(leaders.)20
b(These)14 b(op)q(erations)g(ma)o(y)e(b)q(e)i(p)q(erformed)g(with)g(explicit)
h(sync)o(hronization)g(of)e(the)g(t)o(w)o(o)75 1203 y(groups)e(b)o(y)h
(calling)h Fh(MPI)p 503 1203 14 2 v 16 w(COMM)p 661 1203 V
17 w(PEER)p 790 1203 V 17 w(MAKE\(\))p Ft(.)k(The)12 b(explicit)i(sync)o
(hronization)f(can)e(cause)h(dead-)75 1260 y(lo)q(c)o(k)g(in)h(mo)q(dular)f
(programs)f(with)h(cyclic)h(comm)o(unication)g(graphs.)18 b(So,)12
b(the)g(lo)q(cal)h(and)e(remote)h(op)q(er-)75 1316 y(ations)i(can)f(b)q(e)i
(decoupled)g(and)f(the)g(construction)f(p)q(erformed)h(\\lo)q(osely)h(sync)o
(hronously")f(b)o(y)f(calling)75 1373 y(the)d(t)o(w)o(o)f(routines)i
Fh(MPI)p 484 1373 V 15 w(COMM)p 641 1373 V 17 w(PEER)p 770
1373 V 17 w(MAKE)p 916 1373 V 16 w(ST)l(ART\(\))f Ft(and)h
Fh(MPI)p 1286 1373 V 16 w(COMM)p 1444 1373 V 16 w(PEER)p 1572
1373 V 17 w(MAKE)p 1718 1373 V 16 w(FINISH\(\))p Ft(.)166 1512
y Fk(Discussion:)67 b Ff(MPI)p 544 1512 13 2 v 14 w(COMM)p
688 1512 V 15 w(PEER)p 807 1512 V 14 w(MAKE)p 939 1512 V 14
w(ST)m(ART\(\))16 b Fj(and)33 b Ff(MPI)p 1307 1512 V 14 w(COMM)p
1451 1512 V 15 w(PEER)p 1570 1512 V 14 w(MAKE)p 1702 1512 V
14 w(FINISH\(\))75 1568 y Fj(are)16 b(b)q(oth)f(collectiv)o(e)g(op)q
(erations)g(in)g(the)h(lo)q(cal)e(group.)22 b(They)15 b(ma)o(y)e(lea)o(v)o(e)
i(a)g(non-blo)q(c)o(king)f(send)i(and)f(receiv)o(e)75 1625
y(activ)o(e)k(b)q(et)o(w)o(een)h(the)f(t)o(w)o(o)g(calls,)g(where)h(the)f
(group)g(leaders)g(exc)o(hange)h(lo)q(cal)e(comm)o(unicator)e(information)75
1681 y(as)i(necessary)m(.)32 b(Ho)o(w)o(ev)o(er,)19 b(they)f(are)h(not)f(a)f
(non-blo)q(c)o(king)g(collectiv)o(e)h(op)q(eration.)64 b Ft(These)20
b(routines)g(can)75 1820 y(construct)d(m)o(ultiple)j(in)o(ter-comm)o
(unicators)d(with)h(a)f(single)i(call.)28 b(This)18 b(impro)o(v)o(es)f(p)q
(erformance)h(b)o(y)75 1877 y(allo)o(wing)e(amortization)f(of)g(the)g(sync)o
(hronization)h(o)o(v)o(erhead.)166 1933 y(The)e(in)o(ter-comm)o(unicator)h
(ob)s(jects)f(are)g(destro)o(y)o(ed)f(in)j(the)e(same)g(w)o(a)o(y)f(as)h(in)o
(tra-comm)o(unicator)75 1990 y(ob)s(jects,)g(b)o(y)h(calling)i
Fh(MPI)p 535 1990 14 2 v 16 w(COMM)p 693 1990 V 16 w(FREE\(\))p
Ft(.)75 2110 y Fh(Supp)q(o)o(rt)g(fo)o(r)d(User-Level)h(Servers)75
2195 y Ft(W)l(e)g(consider)g(the)f(primary)h(feature)f(of)g(user-lev)o(el)i
(serv)o(ers)e(that)g(can)h(require)g(additional)h(supp)q(ort)e(is)75
2252 y(that)c(the)h(serv)o(er)g(cannot)g(a)g(priori)g(kno)o(w)g(the)g(iden)o
(ti\014cation)i(of)d(the)i(clien)o(ts,)g(whereas)f(the)g(clien)o(ts)i(m)o
(ust)75 2308 y(a)g(priori)i(kno)o(w)e(the)h(iden)o(ti\014cation)h(of)e(the)h
(serv)o(ers.)19 b(In)14 b(addition,)h(a)e(user-lev)o(el)j(serv)o(er)d(is)h(a)
g(dedicated)75 2365 y(pro)q(cess)h(group)g(whic)o(h,)h(after)f(some)f
(initialization,)k(pro)o(vides)e(a)f(giv)o(en)g(service)i(un)o(til)f
(termination.)166 2421 y(The)h(supp)q(ort)f(for)g(user-lev)o(el)i(serv)o(ers)
f(tak)o(es)e(in)o(to)i(accoun)o(t)f(the)h(prev)m(ailing)i(view)e(that)f(all)h
(pro-)75 2478 y(cesses)g(\(p)q(ossibly)g(excepting)h(a)e(host)f(pro)q(cess\))
i(are)f(initially)j(equiv)m(alen)o(t)f(mem)o(b)q(ers)e(of)g(the)g(group)g(of)
75 2534 y(all)f(pro)q(cesses.)20 b(This)14 b(group)g(is)g(describ)q(ed)i(b)o
(y)e(pre-de\014ned)i(in)o(tra-comm)o(unicator)e Fh(MPI)p 1612
2534 V 15 w(COMM)p 1769 2534 V 17 w(ALL)p Ft(.)75 2591 y(The)k(user)h(splits)
g(this)g(group)f(suc)o(h)g(that)g(pro)q(cesses)g(in)h(eac)o(h)g(parallel)h
(serv)o(er)d(are)h(placed)i(within)f(a)75 2647 y(sp)q(eci\014c)e(sub-group.)
22 b(The)16 b(non-serv)o(er)f(pro)q(cesses)h(are)g(placed)h(in)f(a)f(group)h
(of)f(all)h(non-serv)o(ers.)21 b(Pro-)75 2704 y(vided)14 b(that)e(the)h(user)
g(can)g(determine)h(the)f(ranks)g(of)f(the)h(serv)o(er)g(group)f(leaders)i
(\()p Fn(i.e.,)f Ft(rank)f(zero\))h(and)-32 46 y Fr(1)-32 103
y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385
y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175
y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40
1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699
y(48)p eop
%%Page: 14 17
bop 75 -100 a Ft(14)409 b Fl(SECTION)16 b(4.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Ft(assign)f(some)f(tags)g(for)g
(clien)o(ts)i(to)e(send)h(a)f(message)g(to)g(the)h(group)f(leaders,)i(then)f
(a)f(group)g(leader)i(can)75 102 y(at)g(an)o(y)f(time)i(notify)f(a)g(serv)o
(er)g(that)f(it)i(wishes)g(to)e(b)q(ecome)i(a)f(clien)o(t.)166
166 y(MPI)22 b(pro)o(vides)h(a)f(routine,)i Fh(MPI)p 772 166
14 2 v 15 w(COMM)p 929 166 V 17 w(SPLITL\(\))p Ft(,)e(that)f(splits)i(a)f
(paren)o(t)g(group,)h(creates)75 222 y(sub-groups)14 b(\(in)o(tra-comm)o
(unicators\))g(according)g(to)g(supplied)i(k)o(eys,)e(and)h(returns)f(the)g
(rank)g(of)g(eac)o(h)75 278 y(sub-group)i(leader)h(\(relativ)o(e)f(to)g(the)g
(paren)o(t)f(group\).)22 b(This)16 b(allo)o(ws)g(a)g(pro)q(cess)g(that)g(do)q
(es)g(not)f(kno)o(w)75 335 y(ab)q(out)k(a)g(sub-group)h(to)f(con)o(tact)f
(that)h(sub-group)h(via)g(the)f(sub-group)h(leader,)h(using)f(the)f(paren)o
(t)75 391 y(comm)o(unicator.)k(The)16 b(k)o(eys)h(ma)o(y)e(b)q(e)i(used)g(as)
f(unique)i(tags.)k(This)17 b(information)f(ma)o(y)g(also)g(b)q(e)h(used)75
448 y(as)e(input)h(to)f Fh(MPI)p 393 448 V 15 w(COMM)p 550
448 V 17 w(PEER)p 679 448 V 17 w(MAKE\(\))p Ft(,)f(for)g(example.)75
611 y Fh(Name)f(Service)75 712 y Ft(MPI)h(pro)o(vides)h(a)g(name)f(service)h
(to)f(simplify)j(construction)d(of)g(in)o(ter-comm)o(unicators.)20
b(This)15 b(service)75 768 y(allo)o(ws)f(a)g(lo)q(cal)h(pro)q(cess)f(group)g
(to)f(create)h(an)g(in)o(ter-comm)o(unicator)g(when)g(the)g(only)h(a)o(v)m
(ailable)h(infor-)75 824 y(mation)11 b(ab)q(out)h(the)g(remote)f(group)g(is)h
(a)f(user-de\014ned)i(c)o(haracter)e(string.)19 b(A)12 b(sync)o(hronizing)h
(v)o(ersion)e(is)75 881 y(pro)o(vided)h(b)o(y)f(routine)g Fh(MPI)p
554 881 V 16 w(COMM)p 712 881 V 17 w(NAME)p 858 881 V 16 w(MAKE\(\))p
Ft(.)18 b(A)11 b(lo)q(osely)h(sync)o(hronous)f(v)o(ersion)h(is)f(pro)o(vided)
75 937 y(b)o(y)j(routines)h Fh(MPI)p 396 937 V 16 w(COMM)p
554 937 V 17 w(NAME)p 700 937 V 16 w(MAKE)p 845 937 V 17 w(ST)l(ART\(\))f
Ft(and)h Fh(MPI)p 1224 937 V 16 w(COMM)p 1382 937 V 16 w(NAME)p
1527 937 V 17 w(MAKE)p 1673 937 V 16 w(FINISH\(\))p Ft(.)75
1102 y Fi(4.8.3)49 b(Inter-Comm)n(unication)14 b(Routines)75
1203 y Fh(Synchronous)j(Inter-Comm)m(unicato)o(r)c(Constructo)o(rs)75
1303 y Ft(Both)k(of)g(these)h(routines)g(allo)o(w)g(construction)g(of)f(m)o
(ultiple)i(in)o(ter-comm)o(unicators.)27 b(Eac)o(h)18 b(of)f(these)75
1360 y(in)o(ter-comm)o(unicators)11 b(con)o(tains)g(the)h(same)e(remote)h
(group)g(and)g(di\013eren)o(t)h(in)o(ternal)g(con)o(texts.)18
b(There-)75 1416 y(fore,)13 b(comm)o(unication)h(using)g(an)o(y)e(of)h(these)
g(in)o(ter-comm)o(unicators)h(will)g(not)f(in)o(terfere)h(with)f(comm)o(u-)75
1473 y(nication)j(using)g(an)o(y)f(of)g(the)g(others.)75 1584
y Fh(MPI)p 160 1584 V 16 w(COMM)p 318 1584 V 16 w(PEER)p 446
1584 V 17 w(MAKE\(my)p 670 1584 V 13 w(comm)m(,)g(p)q(eer)p
909 1584 V 17 w(comm)m(,)g(p)q(eer)p 1152 1584 V 17 w(rank,)i(tag,)h(num)p
1459 1584 V 14 w(comm)n(s,)d(new)p 1711 1584 V 17 w(comm)m(s\))117
1725 y Fj(IN)171 b Fh(my)p 396 1725 V 13 w(comm)377 b Fj(lo)q(cal)13
b(in)o(tra-comm)o(unicator)117 1815 y(IN)171 b Fh(p)q(eer)p
417 1815 V 17 w(comm)353 b Fj(\\paren)o(t")14 b(in)o(tra-comm)o(uni)o(cator)
117 1906 y(IN)171 b Fh(p)q(eer)p 417 1906 V 17 w(rank)391 b
Fj(rank)14 b(of)f(remote)h(group)g(leader)g(in)27 b Ff(p)q(eer)p
1563 1906 13 2 v 17 w(comm)117 1996 y Fj(IN)171 b Fh(tag)510
b Fj(\\safe")14 b(tag)117 2086 y(IN)171 b Fh(num)p 422 2086
14 2 v 14 w(comm)m(s)337 b Fj(n)o(um)o(b)q(er)13 b(of)h(new)g(in)o(ter-comm)o
(unicators)e(to)h(construct)117 2176 y(OUT)124 b Fh(new)p 411
2176 V 17 w(comm)m(s)345 b Fj(arra)o(y)14 b(of)f(new)h(in)o(ter-comm)o
(unicators)166 2308 y Ft(This)k(routine)f(constructs)g(an)g(arra)o(y)f(of)h
(in)o(ter-comm)o(unicators)g(and)h(stores)e(it)i(in)g Fh(new)p
1716 2308 V 17 w(comm)m(s)p Ft(.)75 2365 y(In)o(tra-comm)o(unicator)h
Fh(my)p 552 2365 V 13 w(comm)14 b Ft(describ)q(es)20 b(the)g(lo)q(cal)g
(group.)32 b(In)o(tra-comm)o(unicator)19 b Fh(p)q(eer)p 1746
2365 V 17 w(comm)75 2421 y Ft(describ)q(es)c(a)f(group)f(that)g(con)o(tains)h
(the)g(leaders)h(\()p Fn(i.e.,)e Ft(mem)o(b)q(ers)h(with)g(rank)f(zero\))h
(of)f(b)q(oth)h(the)g(lo)q(cal)75 2478 y(and)f(remote)e(groups.)19
b(In)o(teger)12 b Fh(p)q(eer)p 707 2478 V 17 w(rank)h Ft(is)g(the)f(rank)g
(of)g(the)h(remote)f(leader)h(in)g Fh(p)q(eer)p 1575 2478 V
17 w(comm)m Ft(.)j(In)o(teger)75 2534 y(tag)11 b(is)h(used)g(to)f
(distinguish)i(this)f(op)q(eration)g(from)f(others)g(with)g(the)h(same)f(p)q
(eer.)20 b(In)o(teger)11 b Fh(num)p 1731 2534 V 14 w(comm)n(s)75
2591 y Ft(is)h(the)f(n)o(um)o(b)q(er)h(of)f(new)h(in)o(ter-comm)o(unicators)f
(constructed.)19 b(This)12 b(routine)g(is)g(collectiv)o(e)h(in)f(the)g(lo)q
(cal)75 2647 y(group)i(and)h(sync)o(hronizes)g(with)g(the)f(remote)g(group.)
19 b(Eac)o(h)14 b(of)g(the)g(in)o(ter-comm)o(unicators)h(pro)q(duced)75
2704 y(pro)o(vides)h(in)o(ter-comm)o(unication)g(with)g(the)f(remote)g
(group.)1967 46 y Fr(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959
554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780
y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 15 18
bop 75 -100 a Fl(4.8.)34 b(INTR)o(ODUCTION)16 b(TO)g(INTER-COMMUNICA)l(TION)
600 b Ft(15)75 45 y Fh(MPI)p 160 45 14 2 v 16 w(COMM)p 318
45 V 16 w(NAME)p 463 45 V 17 w(MAKE\(my)p 686 45 V 13 w(comm)m(,)12
b(name,)g(num)p 1057 45 V 15 w(comm)m(s,)g(new)p 1306 45 V
17 w(comm)m(s\))117 122 y Fj(IN)171 b Fh(my)p 396 122 V 13
w(comm)377 b Fj(lo)q(cal)13 b(in)o(tra-comm)o(unicator)117
198 y(IN)171 b Fh(name)467 b Fj(\\name)10 b(kno)o(wn)h(to)f(b)q(oth)i(lo)q
(cal)e(and)h(remote)f(group)h(leaders")117 273 y(IN)171 b Fh(num)p
422 273 V 14 w(comm)m(s)337 b Fj(n)o(um)o(b)q(er)13 b(of)h(new)g(in)o
(ter-comm)o(unicators)e(to)h(construct)117 349 y(OUT)124 b
Fh(new)p 411 349 V 17 w(comm)m(s)345 b Fj(Arra)o(y)14 b(of)f(new)i(in)o
(ter-comm)o(unicators)166 473 y Ft(This)21 b(is)h(the)f(name-serv)o(ed)g
(equiv)m(alen)o(t)h(of)f Fh(MPI)p 1041 473 V 15 w(COMM)p 1198
473 V 17 w(PEER)p 1327 473 V 17 w(MAKE)g Ft(in)g(whic)o(h)h(the)f(caller)75
530 y(need)16 b(only)h(kno)o(w)e(a)g(name)h(for)f(the)g(p)q(eer)i
(connection.)22 b(The)16 b(same)f(name)g(is)i(supplied)h(b)o(y)d(b)q(oth)h
(lo)q(cal)75 586 y(and)k(remote)f(groups.)34 b(The)20 b(name)g(is)g(remo)o(v)
o(ed)g(from)f(the)h(in)o(ternal)h(name-serv)o(er)e(database)h(after)75
643 y(b)q(oth)15 b(groups)g(ha)o(v)o(e)g(completed)h Fh(MPI)p
736 643 V 16 w(COMM)p 894 643 V 16 w(NAME)p 1039 643 V 17 w(MAKE\(\))p
Ft(.)75 763 y Fh(Lo)q(osely)f(Synchronous)i(Inter-Comm)m(unicato)o(r)c
(Constructo)o(rs)75 849 y Ft(These)f(routines)g(are)g(lo)q(osely)g(sync)o
(hronous)g(coun)o(terparts)f(of)g(the)h(sync)o(hronous)g(in)o(ter-comm)o
(unicator)75 906 y(construction)j(routines)h(describ)q(ed)h(ab)q(o)o(v)o(e.)
75 1010 y Fh(MPI)p 160 1010 V 16 w(COMM)p 318 1010 V 16 w(PEER)p
446 1010 V 17 w(MAKE)p 592 1010 V 16 w(ST)l(ART\(my)p 828 1010
V 15 w(comm)m(,)7 b(p)q(eer)p 1061 1010 V 17 w(comm)n(,)g(p)q(eer)p
1297 1010 V 17 w(rank,)k(tag,)g(num)p 1591 1010 V 14 w(comm)n(s,)d(mak)o(e)p
1864 1010 V 13 w(id\))117 1143 y Fj(IN)171 b Fh(my)p 396 1143
V 13 w(comm)377 b Fj(lo)q(cal)13 b(in)o(tra-comm)o(unicator)117
1219 y(IN)171 b Fh(p)q(eer)p 417 1219 V 17 w(comm)353 b Fj(\\paren)o(t")14
b(in)o(tra-comm)o(uni)o(cator)117 1294 y(IN)171 b Fh(p)q(eer)p
417 1294 V 17 w(rank)391 b Fj(rank)14 b(of)f(remote)h(group)g(leader)g(in)27
b Ff(p)q(eer)p 1563 1294 13 2 v 17 w(comm)117 1370 y Fj(IN)171
b Fh(tag)510 b Fj(\\safe")14 b(tag)117 1445 y(IN)171 b Fh(num)p
422 1445 14 2 v 14 w(comm)m(s)337 b Fj(n)o(um)o(b)q(er)13 b(of)h(new)g(in)o
(ter-comm)o(unicators)e(to)h(construct)117 1520 y(OUT)124 b
Fh(mak)o(e)p 438 1520 V 13 w(id)422 b Fj(handle)14 b(for)27
b Ff(MPI)p 1193 1520 13 2 v 15 w(COMM)p 1338 1520 V 14 w(PEER)p
1456 1520 V 14 w(MAKE)p 1588 1520 V 15 w(FINISH\(\))166 1645
y Ft(This)d(starts)e(o\013)g(a)p 533 1645 14 2 v 39 w Fh(PEER)p
662 1645 V 17 w(MAKE)h Ft(op)q(eration,)i(returning)f(a)f(handle)h(for)f(the)
g(op)q(eration)g(in)75 1701 y(\\)p Fh(mak)o(e)p 203 1701 V
13 w(id)p Ft(.")42 b(It)23 b(is)g(collectiv)o(e)i(in)e Fh(my)p
763 1701 V 14 w(comm)m Ft(.)39 b(It)22 b(do)q(es)h(not)g(w)o(ait)f(for)g(the)
h(remote)f(group)g(to)g(do)75 1758 y Fh(MPI)p 160 1758 V 16
w(COMM)p 318 1758 V 16 w(MAKE)p 463 1758 V 16 w(ST)l(ART\(\))p
Ft(.)34 b(The)20 b(\\)p Fh(m)o(ak)o(e)p 926 1758 V 14 w(id)p
Ft(")f(handle)i(is)f(conceptually)i(similar)e(to)f(the)h(com-)75
1814 y(m)o(unication)d(handle)g(used)f(b)o(y)g(non-blo)q(c)o(king)h(p)q(oin)o
(t-to-p)q(oin)o(t)f(routines.)22 b(A)16 b Fh(mak)o(e)p 1538
1814 V 13 w(id)g Ft(handle)h(is)g(con-)75 1871 y(structed)f(b)o(y)f(a)g(\\)p
380 1871 V 16 w Fh(ST)l(ART)p Ft(")i(routine)f(and)f(destro)o(y)o(ed)g(b)o(y)
h(the)f(matc)o(hing)h(\\)p 1391 1871 V 16 w Fh(FINISH)p Ft(")f(routine.)22
b(These)75 1927 y(handles)c(are)e(not)g(v)m(alid)j(for)c(an)o(y)i(other)f
(use.)24 b(It)17 b(is)g(erroneous)g(to)e(call)j(this)f(routine)g(again)g
(with)g(the)75 1984 y(same)f Fh(p)q(eer)p 273 1984 V 17 w(comm)m
Ft(,)c Fh(p)q(eer)p 513 1984 V 17 w(rank)k Ft(and)g Fh(tag)p
Ft(,)g(without)g(calling)h Fh(MPI)p 1204 1984 V 16 w(COMM)p
1362 1984 V 16 w(MAKE)p 1507 1984 V 17 w(FINISH\(\))d Ft(to)i(\014nish)75
2040 y(the)f(\014rst)g(call.)75 2144 y Fh(MPI)p 160 2144 V
16 w(COMM)p 318 2144 V 16 w(PEER)p 446 2144 V 17 w(MAKE)p 592
2144 V 16 w(FINISH\(mak)o(e)p 869 2144 V 13 w(id,)g(new)p 1018
2144 V 18 w(comm)m(s\))117 2221 y Fj(IN)171 b Fh(mak)o(e)p
438 2221 V 13 w(id)422 b Fj(handle)14 b(from)26 b Ff(MPI)p
1228 2221 13 2 v 14 w(COMM)p 1372 2221 V 15 w(PEER)p 1491 2221
V 14 w(MAKE)p 1623 2221 V 14 w(ST)m(ART\(\))117 2297 y Fj(OUT)124
b Fh(new)p 411 2297 14 2 v 17 w(comm)m(s)345 b Fj(arra)o(y)14
b(of)f(new)h(in)o(ter-comm)o(unicators)166 2421 y Ft(This)f(completes)g(a)p
512 2421 V 29 w Fh(PEER)p 641 2421 V 17 w(MAKE)f Ft(op)q(eration,)h
(returning)g(an)f(arra)o(y)f(of)h Fh(num)p 1520 2421 V 15 w(comm)m(s)e
Ft(new)j(in)o(ter-)75 2478 y(comm)o(unicators)k(in)h Fh(new)p
524 2478 V 17 w(comm)m(s)p Ft(.)23 b(\(Note)17 b(that)f Fh(num)p
1027 2478 V 14 w(comm)n(s)e Ft(w)o(as)i(sp)q(eci\014ed)k(in)e(the)f(corresp)q
(onding)75 2534 y(call)i(to)d Fh(MPI)p 303 2534 V 16 w(COMM)p
461 2534 V 17 w(PEER)p 590 2534 V 17 w(MAKE)p 736 2534 V 16
w(ST)l(ART\(\))p Ft(.\))26 b(This)18 b(routine)g(is)g(collectiv)o(e)i(in)e
(the)f Fh(my)p 1695 2534 V 14 w(comm)11 b Ft(of)75 2591 y(the)h(corresp)q
(onding)h(call)g(to)e Fh(MPI)p 656 2591 V 16 w(COMM)p 814 2591
V 16 w(PEER)p 942 2591 V 17 w(MAKE)p 1088 2591 V 16 w(ST)l(ART\(\))p
Ft(.)19 b(It)12 b(w)o(aits)g(for)f(the)h(remote)f(group)75
2647 y(to)16 b(call)i Fh(MPI)p 302 2647 V 16 w(COMM)p 460 2647
V 16 w(PEER)p 588 2647 V 17 w(MAKE)p 734 2647 V 16 w(ST)l(ART\(\))f
Ft(but)g(do)q(es)g(not)g(w)o(ait)f(for)g(the)h(remote)f(group)h(to)f(call)75
2704 y Fh(MPI)p 160 2704 V 16 w(COMM)p 318 2704 V 16 w(PEER)p
446 2704 V 17 w(MAKE)p 592 2704 V 16 w(FINISH\(\))p Ft(.)-32
46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 16 19
bop 75 -100 a Ft(16)409 b Fl(SECTION)16 b(4.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fh(MPI)p 160 45
14 2 v 16 w(COMM)p 318 45 V 16 w(NAME)p 463 45 V 17 w(MAKE)p
609 45 V 16 w(ST)l(ART\(my)p 845 45 V 14 w(comm)m(,)d(name,)h(num)p
1217 45 V 14 w(comm)m(s,)f(mak)o(e)p 1493 45 V 14 w(id\))117
142 y Fj(IN)171 b Fh(my)p 396 142 V 13 w(comm)377 b Fj(lo)q(cal)13
b(in)o(tra-comm)o(unicator)117 258 y(IN)171 b Fh(name)467 b
Fj(\\name")10 b(kno)o(wn)g(to)h(b)q(oth)g(lo)q(cal)g(and)g(remote)f(group)h
(leaders)117 373 y(IN)171 b Fh(num)p 422 373 V 14 w(comm)m(s)337
b Fj(n)o(um)o(b)q(er)13 b(of)h(new)g(in)o(ter-comm)o(unicators)e(to)h
(construct)117 488 y(OUT)124 b Fh(mak)o(e)p 438 488 V 13 w(id)422
b Fj(handle)14 b(for)g(MPI)p 1186 488 13 2 v 15 w(COMM)p 1339
488 V 15 w(NAME)p 1482 488 V 16 w(MAKE)p 1627 488 V 15 w(FINISH\(\))75
680 y Fh(MPI)p 160 680 14 2 v 16 w(COMM)p 318 680 V 16 w(NAME)p
463 680 V 17 w(MAKE)p 609 680 V 16 w(FINISH\(mak)o(e)p 885
680 V 13 w(id,)h(new)p 1035 680 V 17 w(comm)m(s\))117 777 y
Fj(IN)171 b Fh(mak)o(e)p 438 777 V 13 w(id)422 b Fj(handle)14
b(from)e(MPI)p 1220 777 13 2 v 15 w(COMM)p 1373 777 V 16 w(NAME)p
1517 777 V 15 w(MAKE)p 1661 777 V 16 w(ST)m(AR)m(T\(\))117
892 y(OUT)124 b Fh(new)p 411 892 14 2 v 17 w(comm)m(s)345 b
Fj(arra)o(y)14 b(of)f(new)h(in)o(ter-comm)o(unicators)166 1037
y Ft(These)23 b(are)f(the)g Fh(ST)l(ART/FINISH)h Ft(v)o(ersions)f(of)g
Fh(MPI)p 1125 1037 V 16 w(COMM)p 1283 1037 V 17 w(NAME)p 1429
1037 V 16 w(MAKE\(\))p Ft(.)41 b(They)22 b(ha)o(v)o(e)75 1093
y(sync)o(hronization)16 b(prop)q(erties)g(analogous)f(to)f(the)i(corresp)q
(onding)p 1254 1093 V 32 w Fh(PEER)p 1382 1093 V 32 w Ft(routines.)75
1328 y Fh(Comm)m(unicato)o(r)c(Status)75 1452 y Ft(This)20
b(lo)q(cal)g(routine)g(allo)o(ws)f(the)g(calling)i(pro)q(cess)f(to)e
(determine)i(if)g(a)f(comm)o(unicator)g(is)g(an)h(in)o(ter-)75
1509 y(comm)o(unicator)15 b(or)g(an)g(in)o(tra-comm)o(unicator.)75
1633 y Fh(MPI)p 160 1633 V 16 w(COMM)p 318 1633 V 16 w(ST)l(A)l(T\(comm)n(,)d
(status\))117 1730 y Fj(IN)171 b Fh(comm)450 b Fj(comm)o(unicator)117
1845 y(OUT)124 b Fh(status)460 b Fj(in)o(teger)15 b(status)166
1990 y Ft(This)j(returns)g(the)g(status)f(of)g(comm)o(unicator)g
Fh(comm)m Ft(.)25 b(V)l(alid)19 b(status)e(v)m(alues)i(are)33
b Ff(MPI)p 1726 1990 13 2 v 15 w(INTRA)p Ft(,)75 2046 y Ff(MPI)p
152 2046 V 14 w(INTER)p Ft(,)c Ff(MPI)p 404 2046 V 14 w(INV)m(ALID)p
Ft(.)166 2205 y Fk(Discussion:)15 b Fj(Should)f(there)h(b)q(e)f(an)o(y)g
(other)g(status)h(v)n(alues?)75 2522 y Fh(Supp)q(o)o(rt)i(fo)o(r)d
(User-Level)h(Servers)75 2647 y Ft(This)e(collectiv)o(e)h(routine)e(is)h
(used)f(to)g(mak)o(e)g(it)g(easier)g(for)g(pro)q(cesses)g(to)g(form)f
(sub-groups)i(and)f(con)o(tact)75 2704 y(user-lev)o(el)17 b(serv)o(ers.)1967
46 y Fr(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 17 20
bop 75 -100 a Fl(4.8.)34 b(INTR)o(ODUCTION)16 b(TO)g(INTER-COMMUNICA)l(TION)
600 b Ft(17)75 45 y Fh(MPI)p 160 45 14 2 v 16 w(COMM)p 318
45 V 16 w(SPLITL\(com)o(m)m(,)12 b(k)o(ey)l(,)j(nk)o(eys,)h(leaders,)f(sub)p
1079 45 V 18 w(comm)m(\))117 128 y Fj(IN)171 b Fh(comm)450
b Fj(extan)o(t)14 b(in)o(tra-comm)o(unicator)d(to)j(b)q(e)g(\\split")117
216 y(IN)171 b Fh(k)o(ey)509 b Fj(k)o(ey)14 b(for)g(sub-group)g(mem)o(b)q
(ership)117 303 y(IN)171 b Fh(nk)o(eys)469 b Fj(n)o(um)o(b)q(er)13
b(of)h(k)o(eys)g(\(n)o(um)o(b)q(er)f(of)h(sub-groups\))117
390 y(OUT)124 b Fh(leaders)442 b Fj(ranks)14 b(of)g(sub-group)g(leaders)g(in)
g(comm)117 477 y(OUT)124 b Fh(sub)p 400 477 V 17 w(comm)370
b Fj(in)o(tra-comm)o(unicator)6 b(describing)k(sub-group)f(of)g(calling)f
(pro-)905 534 y(cess)166 664 y Ft(This)17 b(routine)g(splits)h(the)f(group)f
(describ)q(ed)j(b)o(y)d(in)o(tra-comm)o(unicator)h(comm)f(in)o(to)h(nk)o(eys)
f(sub-)75 721 y(groups.)21 b(Eac)o(h)15 b(calling)j(pro)q(cess)e(m)o(ust)f
(sp)q(ecify)i(a)e(v)m(alue)i(of)e(k)o(ey)h(in)g(the)g(range)f([0)p
Fs(:)8 b(:)g(:)d Ft(\()p Fh(nk)o(eys)p Ft(-1\)].)21 b(Pro-)75
777 y(cesses)g(sp)q(ecifying)i(the)d(same)h(k)o(ey)f(are)g(placed)i(in)g(the)
f(same)f(sub-group.)36 b(Ranks)21 b(of)g(the)f(leaders)75 834
y(of)e(eac)o(h)h(sub-group)g(\(relativ)o(e)g(to)f Fh(comm)m
Ft(\))e(are)i(returned)h(in)h(in)o(teger)f(arra)o(y)e(leaders.)31
b(This)19 b(routine)75 890 y(returns)f(a)g(new)h(in)o(tra-comm)o(unicator,)f
Fh(sub)p 862 890 V 18 w(comm)m Ft(,)e(that)i(describ)q(es)i(the)e(sub-group)h
(to)f(whic)o(h)h(the)75 947 y(calling)e(pro)q(cess)e(b)q(elongs.)75
1103 y Fi(4.8.4)49 b(Implem)o(e)o(ntation)14 b(Notes)75 1200
y Fh(Securit)o(y)i(and)g(P)o(erfo)o(rm)n(ance)d(Issues)75 1298
y Ft(The)h(routines)g(in)g(this)g(section)g(do)f(not)g(in)o(tro)q(duce)i
(insecurit)o(y)g(in)o(to)e(the)h(basic)g(usage)f(of)g(MPI.)g(Sp)q(ecif-)75
1354 y(ically)l(,)k(they)e(do)g(not)g(allo)o(w)g(con)o(texts)g(to)g(b)q(e)g
(b)q(ound)i(in)f(m)o(ultiple)h(usable)f(comm)o(unicators.)166
1417 y(The)f(pro)o(vision)h(of)f(in)o(ter-comm)o(unication)i(do)q(es)e(not)g
(adv)o(ersely)h(a\013ect)e(the)i(\(p)q(oten)o(tial\))f(p)q(erfor-)75
1473 y(mance)g(of)g(in)o(tra-comm)o(unication.)75 1628 y Fh(\\Under)h(the)g
(Ho)q(o)q(d")75 1726 y Ft(A)j(p)q(ossible)h(implemen)o(tation)g(of)e(a)g
(comm)o(unicator)h(con)o(tains)f(a)h(single)h(group,)e(a)h(send)g(con)o
(text,)f(a)75 1782 y(receiv)o(e)f(con)o(text,)f(and)g(a)g(source)h(\(for)e
(the)i(message)f(en)o(v)o(elop)q(e\).)24 b(This)17 b(structure)f(mak)o(es)f
(in)o(tra-)i(and)75 1839 y(in)o(ter-comm)o(unicators)e(basically)i(the)e
(same)g(ob)s(ject.)166 1901 y(The)21 b(in)o(tra-comm)o(unicator)f(has)h(the)f
(prop)q(erties)i(that:)30 b(the)20 b(send-con)o(text)h(and)g(the)g(receiv)o
(e-)75 1958 y(con)o(text)c(are)g(iden)o(tical;)j(the)d(pro)q(cess)h(is)g(a)f
(mem)o(b)q(er)g(of)g(the)h(group;)g(the)f(source)g(is)h(the)g(rank)f(of)g
(the)75 2014 y(pro)q(cess)e(in)h(the)g(group.)166 2077 y(The)e(in)o(ter-comm)
o(unicator)h(cannot)e(b)q(e)i(discussed)h(sensibly)g(without)e(considering)i
(pro)q(cesses)e(in)75 2133 y(b)q(oth)19 b(the)g(lo)q(cal)h(and)f(remote)g
(groups.)31 b(Imagine)19 b(a)g(pro)q(cess)g Fu(P)g Ft(in)h(group)e(G)h(whic)o
(h)h(has)f(an)g(in)o(ter-)75 2189 y(comm)o(unicator)14 b Fm(Cp)p
Ft(,)f(and)i(a)f(pro)q(cess)g Fu(Q)g Ft(in)h(group)f(H)g(whic)o(h)h(has)f(an)
g(in)o(ter-comm)o(unicator)g Fm(Cq)p Ft(.)20 b(\(Note)75 2246
y(that)e(G)g(and)g(H)g(do)h(not)e(ha)o(v)o(e)h(to)g(b)q(e)h(distinct.\))30
b(The)19 b(in)o(ter-comm)o(unicators)f(ha)o(v)o(e)g(the)g(prop)q(erties)75
2302 y(that:)g(the)c(send)f(con)o(text)g(of)g Fm(Cp)g Ft(is)h(iden)o(tical)h
(to)e(the)g(receiv)o(e)h(con)o(text)f(of)g Fm(Cq)p Ft(,)g(and)g(is)h(unique)h
(in)f(H;)f(the)75 2359 y(receiv)o(e)i(con)o(text)e(of)h Fm(Cp)g
Ft(is)g(iden)o(tical)i(to)d(the)h(send)h(con)o(text)e(of)h
Fm(Cq)p Ft(,)f(and)i(is)f(unique)i(in)e(G;)g(the)g(group)f(of)75
2415 y Fm(Cp)i Ft(is)g(H;)g(the)h(group)e(of)h Fm(Cq)g Ft(is)h(G;)e(the)h
(source)g(of)g Fm(Cp)g Ft(is)h(the)f(rank)g(of)f Fu(P)h Ft(in)h(G,)f(whic)o
(h)h(is)f(the)h(group)e(of)75 2472 y Fm(Cq)p Ft(;)h(the)g(source)g(of)g
Fm(Cq)g Ft(is)g(the)h(rank)f(of)f(Q)i(in)g(H,)f(whic)o(h)h(is)g(the)f(group)g
(of)g Fm(Cp)p Ft(.)166 2534 y(It)22 b(is)h(easy)f(to)g(see)g(that)g(in)h
(terms)f(of)g(these)g(\014elds,)j(the)d(in)o(tra-comm)o(unicator)g(is)h(a)f
(sp)q(ecial)75 2591 y(case)17 b(of)g(the)h(in)o(ter-comm)o(unicator.)26
b(It)18 b(has)f Fg(G)i Ft(=)d Fg(H)i Ft(and)g(b)q(oth)f(con)o(texts)g(the)g
(same.)26 b(This)18 b(ensures)75 2647 y(that)c(the)h(p)q(oin)o(t-to-p)q(oin)o
(t)g(comm)o(unication)h(implemen)o(tation)g(for)e(in)o(tra-comm)o(unication)i
(and)f(in)o(ter-)75 2704 y(comm)o(unication)h(can)f(b)q(e)h(iden)o(tical.)-32
46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 18 21
bop 75 -100 a Ft(18)409 b Fl(SECTION)16 b(4.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fo(4.9)59 b(Cacheing)75
168 y Ft(MPI)16 b(pro)o(vides)g(a)g(\\cac)o(heing")g(facilit)o(y)h(that)f
(allo)o(ws)g(an)g(application)h(to)f(attac)o(h)f(arbitrary)g(pieces)i(of)75
225 y(information,)d(called)h Fn(attributes)p Ft(,)g(to)e(con)o(text,)g
(group,)g(and)i(comm)o(unicator)e(descriptors;)h(it)g(pro)o(vides)75
281 y(this)d(facilit)o(y)i(to)d(user)h(programs)f(as)h(w)o(ell.)19
b(A)o(ttributes)11 b(are)g(lo)q(cal)h(to)e(the)h(pro)q(cess)h(and)f(are)g
(not)f(included)75 337 y(if)j(the)f(descriptor)h(w)o(ere)f(someho)o(w)g(sen)o
(t)g(to)f(another)h(pro)q(cess)1143 321 y Fb(1)1163 337 y Ft(.)19
b(This)13 b(facilit)o(y)h(is)e(in)o(tended)i(to)e(supp)q(ort)75
394 y(optimizations)22 b(suc)o(h)g(as)f(sa)o(ving)g(p)q(ersisten)o(t)h(comm)o
(unication)g(handles)h(and)e(recording)h(top)q(ology-)75 450
y(based)c(decisions)h(b)o(y)e(adaptiv)o(e)h(algorithms.)26
b(Ho)o(w)o(ev)o(er,)17 b(attributes)g(are)h(propagated)e(in)o(ten)o(tionally)
75 507 y(b)o(y)f(sp)q(eci\014c)i(MPI)e(routines.)166 574 y(T)l(o)f
(summarize,)g(cac)o(heing)h(is,)f(in)h(particular,)g(the)f(pro)q(cess)g(b)o
(y)g(whic)o(h)h(implemen)o(tation-de\014ned)75 631 y(data)g(\(and)g(virtual)g
(top)q(ology)g(data\))g(is)g(propagated)g(in)h(groups)f(and)g(comm)o
(unicators.)166 781 y Fk(Discussion:)g Fj(A)o(ttribute)g(propagation)e(m)o
(ust)g(b)q(e)h(discussed)i(carefully)m(.)75 1049 y Fi(4.9.1)49
b(F)o(unctionalit)o(y)75 1156 y Ft(MPI)15 b(pro)o(vides)h(the)f(follo)o(wing)
h(services)g(related)g(to)e(cac)o(heing.)21 b(They)15 b(are)g(all)h(pro)q
(cess-lo)q(cal.)75 1271 y Fh(MPI)p 160 1271 14 2 v 16 w(A)l(TTRIBUTE)p
425 1271 V 17 w(ALLOC\(n,handle)p 760 1271 V 18 w(a)o(rra)o(y)l(,len\))117
1359 y Fj(IN)171 b Fh(n)548 b Fj(n)o(um)o(b)q(er)13 b(of)h(handles)g(to)g
(allo)q(cate)117 1457 y(OUT)124 b Fh(handle)p 459 1457 V 17
w(a)o(rra)o(y)337 b Fj(p)q(oin)o(ter)10 b(to)f(arra)o(y)g(of)g(opaque)g
(attribute)h(handling)e(structure)117 1554 y(OUT)124 b Fh(len)517
b Fj(length)14 b(of)f(eac)o(h)i(opaque)f(structure)75 1689
y Ft(Allo)q(cates)19 b(a)e(new)h(attribute,)g(so)f(user)h(programs)f(and)h
(functionalit)o(y)h(la)o(y)o(ered)f(on)f(top)h(of)f(MPI)h(can)75
1746 y(access)d(attribute)g(tec)o(hnology)l(.)75 1861 y Fh(MPI)p
160 1861 V 16 w(A)l(TTRIBUTE)p 425 1861 V 17 w(FREE\(handle)p
691 1861 V 18 w(a)o(rra)o(y)l(,n\))117 1949 y Fj(IN)171 b Fh(handle)p
459 1949 V 17 w(a)o(rra)o(y)337 b Fj(arra)o(y)16 b(of)e(p)q(oin)o(ters)j(to)e
(opaque)g(attribute)i(handling)d(struc-)905 2005 y(tures)117
2103 y(IN)171 b Fh(n)548 b Fj(n)o(um)o(b)q(er)13 b(of)h(handles)g(to)g
(deallo)q(cate)75 2238 y Ft(F)l(rees)h(attribute)g(handle.)75
2353 y Fh(MPI)p 160 2353 V 16 w(GET)p 264 2353 V 17 w(A)l(TTRIBUTE)p
530 2353 V 17 w(KEY\(k)o(eyval\))117 2441 y Fj(OUT)124 b Fh(k)o(eyval)455
b Fj(Pro)o(vide)14 b(the)h(in)o(teger)f(k)o(ey)g(v)n(alue)f(for)h(future)g
(storing.)75 2577 y Ft(Generates)h(a)g(new)g(cac)o(he)h(k)o(ey)l(.)p
75 2661 720 2 v 127 2688 a Fr(1)144 2704 y Fa(The)d(deletion)i(of)e
(\015atten/un\015atten)i(mak)o(es)f(this)f(p)q(oin)o(t)i(mo)q(ot.)1967
46 y Fr(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 19 22
bop 75 -100 a Fl(4.9.)29 b(CA)o(CHEING)1404 b Ft(19)75 45 y
Fh(MPI)p 160 45 14 2 v 16 w(SET)p 259 45 V 17 w(A)l(TTRIBUTE\(handle,)12
b(k)o(eyval,)f(attribute)p 993 45 V 18 w(val,)f(attribute)p
1251 45 V 18 w(len,)h(attribute)p 1510 45 V 19 w(destructo)o(r)p
1718 45 V 17 w(routine\))117 180 y Fj(IN)171 b Fh(handle)449
b Fj(opaque)14 b(attribute)g(handle)117 256 y(IN)171 b Fh(k)o(eyval)455
b Fj(The)15 b(in)o(teger)f(k)o(ey)g(v)n(alue)f(for)h(future)g(storing.)117
333 y(IN)171 b Fh(attribute)p 500 333 V 18 w(val)336 b Fj(attribute)15
b(v)n(alue)e(\(opaque)h(p)q(oin)o(ter\))117 410 y(IN)171 b
Fh(attribute)p 500 410 V 18 w(len)336 b Fj(length)14 b(of)f(attribute)i(\(in)
e(b)o(ytes\))117 486 y(IN)171 b Fh(attribute)p 500 486 V 18
w(destructo)o(r)p 707 486 V 17 w(routine)52 b Fj(What)14 b(one)g(calls)f(to)h
(get)g(rid)g(of)f(this)h(attribute)g(later)75 612 y Ft(Stores)h(attribute)g
(in)h(cac)o(he)f(b)o(y)g(k)o(ey)l(.)75 716 y Fh(MPI)p 160 716
V 16 w(TEST)p 290 716 V 16 w(A)l(TTRIBUTE\(handle,k)o(eyval,attribute)p
1000 716 V 20 w(ptr,len\))117 794 y Fj(IN)171 b Fh(handle)449
b Fj(opaque)14 b(attribute)g(handle)117 871 y(IN)171 b Fh(k)o(eyval)455
b Fj(The)15 b(in)o(teger)f(k)o(ey)g(v)n(alue)f(for)h(future)g(storing.)117
948 y(OUT)124 b Fh(attribute)p 500 948 V 18 w(ptr)335 b Fj(v)o(oid)13
b(p)q(oin)o(ter)h(to)g(attribute,)g(or)g(NULL)g(if)f(not)h(found)117
1024 y(OUT)124 b Fh(len)517 b Fj(length)14 b(in)f(b)o(ytes)i(of)e(attribute,)
h(if)f(found.)75 1149 y Ft(Retriev)o(e)j(attribute)f(from)g(cac)o(he)g(b)o(y)
g(k)o(ey)l(.)75 1254 y Fh(MPI)p 160 1254 V 16 w(DELETE)p 346
1254 V 16 w(A)l(TTRIBUTE\(handle,)i(k)o(eyval\))117 1332 y
Fj(IN)171 b Fh(handle)449 b Fj(opaque)14 b(attribute)g(handle)117
1409 y(IN)171 b Fh(k)o(eyval)455 b Fj(The)15 b(in)o(teger)f(k)o(ey)g(v)n
(alue)f(for)h(future)g(storing.)75 1534 y Ft(Delete)i(attribute)f(from)f(cac)
o(he)i(b)o(y)f(k)o(ey)l(.)75 1658 y Fh(Example)75 1746 y Ft(Eac)o(h)k
(attribute)g(consists)h(of)f(a)g(p)q(oin)o(ter)h(or)e(a)h(v)m(alue)i(of)e
(the)g(same)g(size)i(as)e(a)g(p)q(oin)o(ter,)h(and)g(w)o(ould)75
1802 y(t)o(ypically)14 b(b)q(e)f(a)f(reference)h(to)e(a)h(larger)g(blo)q(c)o
(k)h(of)f(storage)f(managed)h(b)o(y)h(the)f(mo)q(dule.)20 b(As)12
b(an)g(example,)75 1859 y(a)k(global)i(op)q(eration)e(using)i(cac)o(heing)f
(to)f(b)q(e)h(more)g(e\016cien)o(t)g(for)f(all)h(con)o(texts)f(of)g(a)h
(group)f(after)g(the)75 1915 y(\014rst)f(call)h(migh)o(t)f(lo)q(ok)h(lik)o(e)
g(this:)147 2026 y Fm(static)23 b(int)g(gop_key_assigned)f(=)h(0;)96
b(/*)23 b(0)h(only)f(on)h(first)f(entry)g(*/)147 2083 y(static)g(int)g
(gop_key;)190 b(/*)23 b(key)h(for)f(this)h(module's)e(stuff)i(*/)147
2195 y(efficient_global_op)d(\(comm,)i(...\))147 2252 y(void)g(*comm;)147
2308 y({)194 2365 y(struct)g(gop_stuff_type)f(*gop_stuff;)70
b(/*)24 b(whatever)f(we)g(need)h(*/)194 2421 y(void)47 b(*group)24
b(=)f(mpi_comm_group\(comm\);)194 2534 y(if)h(\(!gop_key_assigned\))117
b(/*)23 b(get)h(a)f(key)h(on)f(first)h(call)f(ever)g(*/)194
2591 y({)h(gop_key_assigned)e(=)h(1;)242 2647 y(if)h(\()f(!)h(\(gop_key)f(=)h
(mpi_Get_Attribute_Key\(\))o(\))d(\))j({)290 2704 y(mpi_abort)e
(\("Insufficient)g(keys)i(available"\);)-32 46 y Fr(1)-32 103
y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385
y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175
y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40
1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699
y(48)p eop
%%Page: 20 23
bop 75 -100 a Ft(20)409 b Fl(SECTION)16 b(4.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)242 45 y Fm(})194 102
y(})194 158 y(if)24 b(\(mpi_Test_Attribute)d(\(mpi_group_attr\(group\),gop_)o
(key,&gop)o(_stuff\))o(\))194 214 y({)j(/*)g(This)f(module)g(has)g(executed)g
(in)h(this)f(group)g(before.)314 271 y(We)g(will)h(use)f(the)g(cached)g
(information)g(*/)194 327 y(})194 384 y(else)194 440 y({)h(/*)g(This)f(is)h
(a)f(group)g(that)h(we)f(have)h(not)f(yet)h(cached)f(anything)f(in.)314
497 y(We)h(will)h(now)f(do)h(so.)266 553 y(*/)242 610 y(gop_stuff)f(=)g(/*)h
(malloc)f(a)h(gop_stuff_type)e(*/)242 723 y(/*)i(...)f(fill)g(in)h
(*gop_stuff)e(with)i(whatever)f(we)g(want)g(...)h(*/)242 835
y(mpi_set_attribute)e(\(mpi_group_attr\(group\),)e(gop_key,)j(gop_stuff,)958
892 y(gop_stuff_destructor\);)194 948 y(})194 1005 y(/*)h(...)f(use)h
(contents)f(of)g(*gop_stuff)g(to)g(do)h(the)f(global)g(op)h(...)f(*/)170
1061 y(})170 1174 y(gop_stuff_destructor)f(\(gop_stuff\))70
b(/*)23 b(called)g(by)h(MPI)f(on)h(group)f(delete)g(*/)170
1231 y(struct)g(gop_stuff_type)f(*gop_stuff;)170 1287 y({)218
1344 y(/*)i(...)f(free)h(storage)e(pointed)h(to)h(by)g(gop_stuff)e(...)i(*/)
170 1400 y(})166 1614 y Fk(Discussion:)15 b Fj(The)e(cac)o(he)i(facilit)o(y)c
(could)i(also)f(b)q(e)i(pro)o(vided)f(for)g(other)g(descriptors,)i(but)e(it)g
(is)g(less)h(clear)75 1671 y(ho)o(w)d(suc)o(h)g(pro)o(vision)g(w)o(ould)f(b)q
(e)h(useful.)18 b(It)11 b(is)g(suggested)h(that)f(this)g(issue)h(b)q(e)g
(review)o(ed)g(in)e(reference)k(to)d(Virtual)75 1727 y(T)m(op)q(ologies.)75
1982 y Fo(4.10)59 b(F)n(o)n(rmalizing)21 b(the)e(Lo)r(osely)g(Synchronous)g
(Mo)r(del)g(\(Usage,)g(Safet)n(y\))75 2095 y Fi(4.10.1)49 b(Basic)17
b(Statement)o(s)75 2190 y Ft(When)c(a)f(caller)i(passes)f(a)f(comm)o
(unicator)h(\(whic)o(h)g(con)o(tains)g(a)f(con)o(text)g(and)h(group\))f(to)g
(a)g(callee,)j(that)75 2247 y(comm)o(unicator)g(m)o(ust)h(b)q(e)g(free)g(of)f
(side)i(e\013ects)e(throughout)g(execution)i(of)e(the)h(subprogram)f
(\(quies-)75 2303 y(cen)o(t\).)26 b(This)18 b(pro)o(vides)g(one)f(mo)q(del)h
(in)g(whic)o(h)h(libraries)g(can)e(b)q(e)h(written,)f(and)h(w)o(ork)e
(\\safely)l(.")27 b(F)l(or)75 2360 y(libraries)13 b(so)f(designated,)h(the)f
(callee)h(has)f(p)q(ermission)h(to)e(do)h(whatev)o(er)f(comm)o(unication)i
(it)f(lik)o(es)h(with)75 2416 y(the)19 b(comm)o(unicator,)g(and)g(under)h
(the)f(ab)q(o)o(v)o(e)g(guaran)o(tee)f(kno)o(ws)g(that)h(no)g(other)f(comm)o
(unications)75 2473 y(will)e(in)o(terfere.)k(Since)c(w)o(e)e(p)q(ermit)h(the)
f(creation)g(of)g(new)h(comm)o(unicators)f(without)g(sync)o(hronization)75
2529 y(\(assuming)h(preallo)q(cated)i(con)o(texts\),)c(this)j(do)q(es)g(not)e
(imp)q(ose)i(a)f(signi\014can)o(t)h(o)o(v)o(erhead.)166 2591
y(This)k(form)e(of)h(safet)o(y)f(is)i(analogous)f(to)f(other)h(common)g
(computer)g(science)h(usages,)g(suc)o(h)f(as)75 2647 y(passing)c(a)f
(descriptor)h(of)f(an)h(arra)o(y)e(to)h(a)g(library)i(routine.)k(The)15
b(library)g(routine)g(has)g(ev)o(ery)f(righ)o(t)h(to)75 2704
y(exp)q(ect)h(suc)o(h)f(a)g(descriptor)h(to)f(b)q(e)g(v)m(alid)i(and)f(mo)q
(di\014able.)1967 46 y Fr(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959
1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959
1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959
1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959
1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959
1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959
2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959
2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959
2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 21 24
bop 75 -100 a Fl(4.10.)28 b(F)o(ORMALIZING)12 b(THE)f(LOOSEL)l(Y)i(SYNCHR)o
(ONOUS)g(MODEL)e(\(USA)o(GE,)f(SAFETY\))p Ft(21)75 45 y Fi(4.10.2)49
b(Mo)q(dels)18 b(of)e(Execution)75 138 y Ft(W)l(e)j(sa)o(y)f(that)f(a)i
(parallel)h(pro)q(cedure)f(is)g Fn(active)g Ft(at)f(a)g(pro)q(cess)h(if)g
(the)g(pro)q(cess)g(b)q(elongs)g(to)f(a)g(group)75 194 y(that)e(ma)o(y)h
(collectiv)o(ely)i(execute)f(the)f(pro)q(cedure,)h(and)f(some)f(mem)o(b)q(er)
h(of)g(that)f(group)h(is)g(curren)o(tly)75 251 y(executing)c(the)f(pro)q
(cedure)g(co)q(de.)20 b(If)12 b(a)f(parallel)j(pro)q(cedure)e(is)h(activ)o(e)
e(at)h(a)f(pro)q(cess,)h(then)g(this)h(pro)q(cess)75 307 y(ma)o(y)e(b)q(e)i
(receiving)g(messages)e(p)q(ertaining)i(to)f(this)g(pro)q(cedure,)h(ev)o(en)f
(if)g(it)g(do)q(es)h(not)e(curren)o(tly)h(execute)75 364 y(the)j(co)q(de)h
(of)f(this)g(pro)q(cedure.)75 504 y Fh(Nonreentrant)i(pa)o(rallel)d(p)o(ro)q
(cedures)75 597 y Ft(This)22 b(co)o(v)o(ers)f(the)h(case)g(where,)h(at)e(an)o
(y)g(p)q(oin)o(t)h(in)h(time,)g(at)e(most)g(one)h(in)o(v)o(o)q(cation)g(of)f
(a)g(parallel)75 653 y(pro)q(cedure)14 b(can)f(b)q(e)g(activ)o(e)g(at)f(an)o
(y)h(pro)q(cess.)19 b(That)12 b(is,)i(concurren)o(t)e(in)o(v)o(o)q(cations)i
(of)e(the)h(same)f(parallel)75 710 y(pro)q(cedure)k(ma)o(y)e(o)q(ccur)h(only)
g(within)h(disjoin)o(t)f(groups)f(of)h(pro)q(cesses.)20 b(F)l(or)14
b(example,)h(all)h(in)o(v)o(o)q(cations)75 766 y(of)f(parallel)i(pro)q
(cedures)f(in)o(v)o(olv)o(e)g(all)h(pro)q(cesses,)e(pro)q(cesses)h(are)f
(single-threaded,)i(and)e(there)h(are)f(no)75 823 y(recursiv)o(e)h(in)o(v)o
(o)q(cations.)166 883 y(In)21 b(suc)o(h)f(a)g(case,)h(a)f(con)o(text)f(can)i
(b)q(e)f(statically)h(allo)q(cated)g(to)f(eac)o(h)g(pro)q(cedure.)36
b(The)20 b(static)75 939 y(allo)q(cation)h(can)e(b)q(e)h(done)g(in)h(a)e
(pream)o(ble,)i(as)e(part)g(of)g(initialization)j(co)q(de.)34
b(Or,)20 b(it)g(can)f(b)q(e)i(done)75 996 y(a)d(compile/link)j(time,)e(if)g
(the)g(implemen)o(tation)g(has)g(additional)h(mec)o(hanisms)f(to)e(reserv)o
(e)i(con)o(text)75 1052 y(v)m(alues.)h(Comm)o(unicators)12
b(to)g(b)q(e)h(used)g(b)o(y)f(the)h(di\013eren)o(t)f(pro)q(cedures)i(can)e(b)
q(e)h(build)i(in)e(a)f(pream)o(ble,)h(if)75 1108 y(the)f(executing)g(groups)f
(are)h(statically)g(de\014ned;)i(if)e(the)f(executing)i(groups)e(c)o(hange)h
(dynamically)l(,)i(then)75 1165 y(a)j(new)g(comm)o(unicator)f(has)h(to)f(b)q
(e)i(built)g(whenev)o(er)f(the)g(executing)h(group)f(c)o(hanges,)f(but)h
(this)h(new)75 1221 y(comm)o(unicator)d(can)h(b)q(e)g(built)h(using)f(the)f
(same)g(preallo)q(cated)i(con)o(text.)j(If)c(the)f(parallel)i(pro)q(cedures)
75 1278 y(can)10 b(b)q(e)h(organized)g(in)o(to)f(libraries,)j(so)d(that)f
(only)i(one)f(pro)q(cedure)i(of)e(eac)o(h)g(library)h(can)f(b)q(e)h
(concurren)o(tly)75 1334 y(activ)o(e)k(at)g(eac)o(h)g(pro)q(cessor,)g(then)g
(it)h(is)f(su\016cien)o(t)h(to)f(allo)q(cate)h(one)f(con)o(text)g(p)q(er)g
(library)l(.)75 1475 y Fh(P)o(a)o(rallel)f(p)o(ro)q(cedures)i(that)g(a)o(re)f
(nonreentrant)i(within)f(each)g(executing)h(group)75 1567 y
Ft(This)k(co)o(v)o(ers)g(the)g(case)f(where,)j(at)d(an)o(y)g(p)q(oin)o(t)i
(in)f(time,)h(for)f(eac)o(h)g(pro)q(cess)g(group,)g(there)g(can)g(b)q(e)75
1624 y(at)d(most)g(one)h(activ)o(e)g(in)o(v)o(o)q(cation)g(of)g(a)f(parallel)
i(pro)q(cedure)g(b)o(y)f(a)f(pro)q(cess)h(mem)o(b)q(er.)31
b(Ho)o(w)o(ev)o(er,)19 b(it)75 1680 y(migh)o(t)i(b)q(e)h(p)q(ossible)i(that)c
(the)i(same)f(pro)q(cedure)h(is)g(concurren)o(tly)g(in)o(v)o(ok)o(ed)g(in)g
(t)o(w)o(o)e(partially)j(\(or)75 1737 y(completely\))17 b(o)o(v)o(erlapping)f
(groups.)k(F)l(or)15 b(example,)i(the)e(same)g(collectiv)o(e)j(comm)o
(unication)e(function)75 1793 y(ma)o(y)e(b)q(e)i(concurren)o(tly)g(in)o(v)o
(ok)o(ed)g(on)f(t)o(w)o(o)f(partially)i(o)o(v)o(erlapping)g(groups.)166
1853 y(In)f(suc)o(h)f(a)g(case,)g(a)f(con)o(text)h(is)g(asso)q(ciated)h(with)
f(eac)o(h)g(parallel)i(pro)q(cedure)f(and)f(eac)o(h)g(executing)75
1910 y(group,)j(so)h(that)e(o)o(v)o(erlapping)j(execution)f(groups)f(ha)o(v)o
(e)g(distinct)i(comm)o(unication)f(con)o(texts.)27 b(\(One)75
1966 y(do)q(es)19 b(not)f(need)i(a)f(di\013eren)o(t)f(con)o(text)h(from)f
(eac)o(h)h(group;)g(one)g(merely)h(needs)f(a)g(\\coloring")g(of)f(the)75
2023 y(groups,)d(so)g(that)g(One)h(can)g(generate)g(the)f(comm)o(unicators)g
(for)g(eac)o(h)h(parallel)h(pro)q(cedure)g(when)f(the)75 2079
y(execution)g(groups)e(are)h(de\014ned.)21 b(Here,)14 b(again,)h(one)g(only)g
(need)h(one)e(con)o(text)h(for)f(eac)o(h)g(library)l(,)i(if)f(no)75
2135 y(t)o(w)o(o)f(pro)q(cedures)i(from)e(the)i(same)f(library)h(can)f(b)q(e)
h(concurren)o(tly)g(activ)o(e)f(in)h(the)f(same)g(group.)166
2195 y(Note)f(that,)g(for)h(collectiv)o(e)h(comm)o(unication)g(libraries,)g
(w)o(e)f(do)g(allo)o(w)g(sev)o(eral)g(concurren)o(t)g(in)o(v)o(o-)75
2252 y(cations)h(within)h(the)f(same)g(group:)21 b(a)15 b(broadcast)h(in)g(a)
g(group)g(ma)o(y)f(b)q(e)h(started)g(at)f(a)g(pro)q(cess)i(b)q(efore)75
2308 y(the)e(previous)h(broadcast)f(in)h(that)e(group)h(ended)h(at)f(another)
g(pro)q(cess.)20 b(In)c(suc)o(h)f(a)g(case,)g(one)g(cannot)75
2365 y(rely)e(on)f(con)o(text)g(mec)o(hanisms)h(to)f(disam)o(biguate)h
(successiv)o(e)h(in)o(v)o(o)q(cations)e(of)g(the)h(same)f(parallel)i(pro-)75
2421 y(cedure)f(within)h(the)f(same)f(group:)18 b(the)13 b(pro)q(cedure)g
(need)h(b)q(e)f(implemen)o(ted)h(so)e(as)g(to)g(a)o(v)o(oid)h(confusion.)75
2478 y(F)l(or)f(example,)i(for)e(broadcast,)g(one)h(ma)o(y)f(need)i(to)e
(carry)g(additional)j(information)e(in)g(messages,)g(suc)o(h)75
2534 y(as)19 b(the)g(broadcast)g(ro)q(ot,)g(to)g(help)i(in)f(suc)o(h)g(disam)
o(biguation;)i(one)d(also)g(relies)i(on)e(preserv)m(ation)h(of)75
2591 y(message)e(order)f(b)o(y)h(MPI.)g(With)g(suc)o(h)g(an)g(approac)o(h,)g
(w)o(e)g(ma)o(y)f(b)q(e)i(gaining)g(p)q(erformance,)f(but)g(w)o(e)75
2647 y(lo)q(ose)f(mo)q(dularit)o(y)l(.)27 b(It)17 b(is)g(not)g(su\016cien)o
(t)g(to)g(implemen)o(t)h(the)f(parallel)i(pro)q(cedure)f(so)e(that)h(it)g(w)o
(orks)75 2704 y(correctly)k(in)h(isolation,)g(when)g(in)o(v)o(ok)o(ed)f(only)
g(once;)j(it)d(needs)g(to)g(b)q(e)g(implemen)o(ted)i(so)d(that)g(an)o(y)-32
46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 22 25
bop 75 -100 a Ft(22)414 b Fl(SECTION)16 b(4.)30 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Ft(n)o(um)o(b)q(er)h(of)g
(successiv)o(e)h(in)o(v)o(o)q(cations)f(will)i(execute)f(correctly)l(.)22
b(Of)17 b(course,)e(the)i(same)e(approac)o(h)h(can)75 102 y(b)q(e)g(used)g
(for)e(other)h(parallel)i(libraries.)75 226 y Fh(W)o(ell-nested)g(pa)o
(rallel)d(p)o(ro)q(cedures)75 313 y Ft(Calls)h(of)g(parallel)h(pro)q(cedures)
g(are)e(w)o(ell)i(nested)f(if)g(a)g(new)g(parallel)h(pro)q(cedure)g(is)f(alw)
o(a)o(ys)f(in)o(v)o(ok)o(ed)h(in)75 369 y(a)j(subset)h(of)e(a)h(group)g
(executing)i(the)e(same)g(parallel)i(pro)q(cedure.)30 b(Th)o(us,)19
b(pro)q(cesses)g(that)e(execute)75 426 y(the)e(same)g(parallel)i(pro)q
(cedure)f(ha)o(v)o(e)f(the)g(same)g(execution)h(stac)o(k.)166
483 y(In)i(suc)o(h)f(a)g(case,)h(a)f(new)g(con)o(text)g(need)h(to)f(b)q(e)h
(dynamically)h(allo)q(cated)f(for)f(eac)o(h)g(new)h(in)o(v)o(o)q(ca-)75
540 y(tion)g(of)f(a)g(parallel)i(pro)q(cedure.)28 b(Ho)o(w)o(ev)o(er,)16
b(a)i(stac)o(k)e(mec)o(hanism)i(can)g(b)q(e)g(used)g(for)f(allo)q(cating)i
(new)75 596 y(con)o(texts.)27 b(Th)o(us,)18 b(a)g(p)q(ossible)h(mec)o(hanism)
g(is)f(to)f(allo)q(cate)i(\014rst)e(a)h(large)f(n)o(um)o(b)q(er)i(of)e(con)o
(text's)g(\(up)75 652 y(to)f(the)h(upp)q(er)h(b)q(ound)g(on)f(the)g(depth)g
(of)g(nested)g(parallel)h(pro)q(cedure)g(calls\),)g(and)f(then)g(use)g(a)g
(lo)q(cal)75 709 y(stac)o(k)d(managemen)o(t)g(of)g(these)h(con)o(text's)f(on)
g(eac)o(h)h(pro)q(cess)g(to)f(create)h(a)f(new)h(comm)o(unicator)g(\(using)75
765 y Fh(MPI)p 160 765 14 2 v 16 w(COMM)p 318 765 V 16 w(MAKE)p
Ft(\))g(for)f(eac)o(h)i(new)f(in)o(v)o(o)q(cation.)75 890 y
Fh(The)h(General)f(case)75 977 y Ft(In)22 b(the)g(general)g(case,)h(there)e
(ma)o(y)g(b)q(e)h(m)o(ultiple)i(concurren)o(tly)e(activ)o(e)g(in)o(v)o(o)q
(cations)g(of)f(the)g(same)75 1033 y(parallel)i(pro)q(cedure)g(within)g(the)f
(same)f(group;)j(in)o(v)o(o)q(cations)e(ma)o(y)f(not)h(b)q(e)g(w)o
(ell-nested.)41 b(A)22 b(new)75 1090 y(con)o(text)17 b(need)i(to)e(b)q(e)h
(created)g(for)f(eac)o(h)g(in)o(v)o(o)q(cation.)28 b(It)18
b(is)g(the)g(user)g(resp)q(onsibilit)o(y)i(to)d(mak)o(e)g(sure)75
1146 y(that,)k(if)h(t)o(w)o(o)d(distinct)j(parallel)h(pro)q(cedures)e(are)g
(in)o(v)o(ok)o(ed)g(concurren)o(tly)h(on)e(o)o(v)o(erlapping)i(sets)e(of)75
1203 y(pro)q(cesses,)15 b(then)h(con)o(text)e(allo)q(cation)j(or)d(comm)o
(unicator)h(creation)h(is)f(prop)q(erly)h(co)q(ordinated.)75
1350 y Fo(4.11)59 b(Motivating)19 b(Examples)75 1535 y Fk(Discussion:)c
Fj(The)e(in)o(tra-comm)o(uni)o(cation)c(examples)j(w)o(ere)i(\014rst)f
(presen)o(ted)i(at)d(the)i(June)f(MPI)g(meeting;)e(the)75 1592
y(in)o(ter-comm)o(unication)g(routines)j(\(when)h(added\))f(are)g(new.)75
1800 y Fi(4.11.1)49 b(Current)15 b(Practice)h(#1)75 1888 y
Ft(Example)g(#1a:)170 1985 y Fm(int)24 b(me,)f(size;)170 2042
y(...)170 2098 y(mpi_init\(\);)170 2155 y(mpi_comm_rank\(MPI_COMM_ALL,)e
(&me\);)170 2211 y(mpi_comm_size\(MPI_COMM_ALL,)g(&size\);)170
2324 y(printf\("Process)h(\045d)i(size)f(\045d\\n",)g(me,)h(size\);)170
2380 y(...)170 2437 y(mpi_end\(\);)75 2534 y Ft(Example)19
b(#1a)f(is)h(a)f(do-nothing)h(program)e(that)h(initializes)k(itself)d
(legally)l(,)i(and)d(refers)g(to)g(the)h(the)75 2590 y(\\all")13
b(comm)o(unicator,)f(and)h(prin)o(ts)f(a)g(message.)19 b(This)13
b(example)g(do)q(es)g(not)f(imply)i(that)e(MPI)g(supp)q(orts)75
2646 y(prin)o(tf-lik)o(e)17 b(comm)o(unication)f(itself.)75
2704 y(Example)g(#1b:)1967 46 y Fr(1)1967 103 y(2)1967 159
y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 23 26
bop 75 -100 a Fl(4.11.)29 b(MOTIV)-5 b(A)l(TING)15 b(EXAMPLES)1056
b Ft(23)170 45 y Fm(int)24 b(me,)f(size;)170 102 y(...)170
158 y(mpi_init\(\);)170 214 y(mpi_comm_rank\(MPI_COMM_ALL,)e(&me\);)71
b(/*)23 b(local)g(*/)170 271 y(mpi_comm_size\(MPI_COMM_ALL,)e(&size\);)i(/*)g
(local)g(*/)170 384 y(if\(\(me)g(\045)h(2\))g(==)f(0\))242
440 y(mpi_send\(...,)f(MPI_COMM_ALL,)g(\(\(me)i(+)f(1\))h(\045)g(size\)\);)
170 497 y(else)242 553 y(mpi_recv\(...,)e(MPI_COMM_ALL,)g(\(\(me)i(-)f(1)h(+)
g(size\))f(\045)h(size\)\);)170 666 y(...)170 723 y(mpi_end\(\);)75
818 y Ft(Example)16 b(#1b)f(sc)o(hematically)i(illustrates)g(message)e(exc)o
(hanges)h(b)q(et)o(w)o(een)g(\\ev)o(en")f(and)h(\\o)q(dd")f(pro-)75
875 y(cesses)h(in)g(the)f(\\all")g(comm)o(unicator.)75 999
y Fi(4.11.2)49 b(Current)15 b(Practice)h(#2)170 1086 y Fm(void)24
b(*data;)170 1142 y(int)g(me;)170 1199 y(...)170 1255 y(mpi_init\(\);)170
1311 y(mpi_comm_rank\(MPI_COMM_ALL,)d(&me\);)170 1424 y(if\(me)j(==)f(0\))170
1481 y({)266 1537 y(/*)g(get)h(input,)f(create)g(buffer)g(``data'')g(*/)266
1594 y(...)170 1650 y(})170 1763 y(mpi_broadcast\(MPI_COMM_ALL,)e(0,)i
(data\);)170 1876 y(...)170 1932 y(mpi_end\(\);)75 2041 y Ft(This)16
b(example)g(illustrates)g(the)f(use)h(of)f(a)g(collectiv)o(e)h(comm)o
(unication.)75 2165 y Fi(4.11.3)49 b(\(App)o(ro)o(ximate\))14
b(Current)h(Practice)g(#3)170 2252 y Fm(int)24 b(me;)170 2308
y(void)g(*grp0,)f(*grprem,)g(*commslave;)170 2365 y(...)170
2421 y(mpi_init\(\);)170 2478 y(mpi_comm_rank\(MPI_COMM_ALL,)e(&me\);)47
b(/*)23 b(local)g(*/)170 2534 y(mpi_local_subgroup\(MPI_GROUP_)o(ALL,)e(1,)i
(``[0]'',)g(&grp0\);)g(/*)h(local)f(*/)170 2591 y
(mpi_group_difference\(MPI_GROU)o(P_ALL,)e(grp0,)i(&grprem\);)f(/*)i(local)f
(*/)170 2647 y(mpi_comm_make\(MPI_COMM_ALL,)e(grprem,)i(&commslave\);)-32
46 y Fr(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 24 27
bop 75 -100 a Ft(24)409 b Fl(SECTION)16 b(4.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)170 45 y Fm(if\(me)24
b(!=)f(0\))170 102 y({)266 158 y(/*)g(compute)g(on)h(slave)f(*/)266
214 y(...)266 271 y(mpi_reduce\(commslave,)e(...\);)266 327
y(...)170 384 y(})170 440 y(/*)j(zero)f(falls)h(through)e(immediately)h(to)g
(this)h(reduce,)f(others)g(do)g(later...)g(*/)170 497 y
(mpi_reduce\(MPI_COMM_ALL,)e(...\);)75 613 y Ft(This)d(example)h(illustrates)
g(ho)o(w)e(a)h(group)f(consisting)i(of)e(all)i(but)f(the)g(zeroth)f(pro)q
(cess)h(of)g(the)g(\\all")75 670 y(group)13 b(is)h(created,)f(and)h(then)g
(ho)o(w)f(a)g(comm)o(unicator)g(is)h(formed)f(\()g Fh(comm)m(slave)p
Ft(\))d(for)j(that)g(new)h(group.)75 726 y(The)19 b(new)g(comm)o(unicator)g
(is)g(used)h(in)f(a)g(collectiv)o(e)h(call,)h(and)e(all)h(pro)q(cesses)f
(execute)h(a)e(collectiv)o(e)75 783 y(call)k(in)g(the)40 b
Ff(MPI)p 403 783 13 2 v 15 w(COMM)p 548 783 V 14 w(ALL)22 b
Ft(con)o(text.)37 b(This)21 b(example)h(illustrates)g(ho)o(w)f(the)g(t)o(w)o
(o)e(comm)o(unica-)75 839 y(tors)d(\(whic)o(h)i(p)q(ossess)f(distinct)i(con)o
(texts\))d(protect)h(comm)o(unication.)27 b(That)16 b(is,)i(comm)o(unication)
g(in)75 896 y Ff(MPI)p 152 896 V 14 w(COMM)p 296 896 V 15 w(ALL)e
Ft(is)f(insulated)i(from)e(comm)o(unication)h(in)31 b Fh(comm)m(slave)p
Ft(,)12 b(and)j(vice)i(v)o(ersa.)166 954 y(In)h(summary)l(,)f(for)g(comm)o
(unication)h(with)g(\\group)e(safet)o(y)l(,")h(con)o(texts)g(within)h(comm)o
(unicators)75 1011 y(m)o(ust)d(b)q(e)g(distinct.)75 1144 y
Fi(4.11.4)49 b(Example)15 b(#4)75 1234 y Ft(The)g(follo)o(wing)g(example)g
(is)g(mean)o(t)f(to)f(illustrate)j(\\safet)o(y")d(b)q(et)o(w)o(een)h(p)q(oin)
o(t-to-p)q(oin)o(t)i(and)e(collectiv)o(e)75 1291 y(comm)o(unication.)20
b(MPI)12 b(guaran)o(tees)g(that)g(a)g(single)i(comm)o(unicator)e(can)h(do)f
(safe)g(p)q(oin)o(t-to-p)q(oin)o(t)i(and)75 1347 y(collectiv)o(e)j(comm)o
(unication.)75 1451 y Fm(#define)23 b(TAG_ARBITRARY)f(12345)75
1508 y(#define)h(SOME_COUNT)166 b(50)170 1564 y(int)24 b(me;)170
1621 y(int)g(len;)170 1677 y(void)g(*contexts;)170 1734 y(void)g(*subgroup;)
170 1847 y(...)170 1903 y(mpi_init\(\);)170 1960 y
(mpi_contexts_alloc\(MPI_COMM_A)o(LL,)d(1,)j(&contexts,)e(&len\);)170
2016 y(mpi_local_subgroup\(MPI_GROUP_)o(ALL,)f(4,)i(``[2,4,6,8]'',)f
(&subgroup\);)h(/*)g(local)g(*/)170 2072 y(mpi_group_rank\(subgroup,)e
(&me\);)119 b(/*)23 b(local)g(*/)170 2185 y(if\(me)h(!=)f(MPI_UNDEFINED\))170
2242 y({)266 2298 y(mpi_comm_bind\(subgroup,)e(context,)h(&the_comm\);)h(/*)g
(local)h(*/)266 2411 y(/*)f(asynchronous)g(receive:)f(*/)266
2468 y(mpi_irecv\(...,)g(MPI_SRC_ANY,)g(TAG_ARBITRARY,)g(the_comm\);)170
2524 y(})170 2637 y(for\(i)i(=)f(0;)h(i)g(<)f(SOME_COUNT,)g(i++\))266
2693 y(mpi_reduce\(the_comm,)e(...\);)1967 46 y Fr(1)1967 103
y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967
385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959
667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119
y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345
y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570
y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796
y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022
y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248
y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474
y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699
y(48)p eop
%%Page: 25 28
bop 75 -100 a Fl(4.11.)29 b(MOTIV)-5 b(A)l(TING)15 b(EXAMPLES)1056
b Ft(25)75 45 y Fi(4.11.5)49 b(Lib)o(ra)o(ry)17 b(Example)d(#1)75
136 y Ft(The)h(main)h(program:)170 242 y Fm(int)24 b(done)f(=)h(0;)170
298 y(user_lib_t)f(*libh_a,)g(*libh_b;)170 355 y(void)h(*dataset1,)e
(*dataset2;)170 411 y(...)170 468 y(mpi_init\(\);)170 524 y(...)170
581 y(init_user_lib\(MPI_COMM_ALL,)f(&libh_a\);)170 637 y
(init_user_lib\(MPI_COMM_ALL,)g(&libh_b\);)170 694 y(...)170
750 y(user_start_op\(libh_a,)g(dataset1\);)170 807 y(user_start_op\(libh_a,)g
(dataset2\);)170 863 y(...)170 919 y(while\(!done\))170 976
y({)266 1032 y(/*)i(work)h(*/)266 1089 y(...)266 1145 y
(mpi_reduce\(MPI_COMM_ALL,)c(...\);)266 1202 y(...)266 1258
y(/*)j(see)h(if)g(done)f(*/)266 1315 y(...)170 1371 y(})170
1428 y(user_end_op\(libh_a\);)170 1484 y(user_end_op\(libh_b\);)75
1588 y Ft(The)15 b(user)h(library)g(initialization)i(co)q(de:)75
1694 y Fm(void)23 b(init_user_lib\(void)f(*comm,)h(user_lib_t)f(**handle\))75
1751 y({)147 1807 y(user_lib_t)g(*save;)147 1863 y(void)h(*context;)147
1920 y(void)g(*group;)147 1976 y(int)g(len;)147 2089 y
(user_lib_initsave\(&save)o(\);)e(/*)j(local)f(*/)147 2146
y(mpi_comm_group\(comm,)e(&group\);)147 2202 y(mpi_contexts_alloc\(comm)o(,)g
(1,)j(&context,)e(&len\);)147 2259 y(mpi_comm_dup\(comm,)f(context,)i(save)g
(->)h(comm\);)147 2372 y(/*)f(other)g(inits)h(*/)147 2428 y(*handle)e(=)i
(save;)75 2484 y(})75 2588 y Ft(Notice)17 b(that)e(the)h(comm)o(unicator)32
b Fh(comm)10 b Ft(passed)16 b(to)f(the)i(library)f Fn(is)g
Ft(needed)h(to)f(allo)q(cate)g(new)h(con-)75 2645 y(texts.)75
2704 y(User)e(start-up)g(co)q(de:)-32 46 y Fr(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 26 29
bop 75 -100 a Ft(26)414 b Fl(SECTION)16 b(4.)30 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fm(void)23 b
(user_start_op\(user_lib_t)e(*handle,)i(void)g(*data\))75 102
y({)170 158 y(user_lib_state)f(*state;)170 214 y(state)i(=)f(handle)g(->)h
(state;)170 271 y(mpi_irecv\(save)e(->)i(comm,)f(...,)g(data,)h(...)f
(&\(state)g(->)h(irecv_handle\)\);)170 327 y(mpi_isend\(save)e(->)i(comm,)f
(...,)g(data,)h(...)f(&\(state)g(->)h(isend_handle\)\);)75
384 y(})75 478 y Ft(User)15 b(clean-up)i(co)q(de:)75 573 y
Fm(void)23 b(user_end_op\(user_lib_t)e(*handle\))75 630 y({)170
686 y(mpi_wait\(save)i(->)g(state)g(->)h(isend_handle\);)170
743 y(mpi_wait\(save)f(->)g(state)g(->)h(irecv_handle\);)75
799 y(})75 922 y Fi(4.11.6)49 b(Lib)o(ra)o(ry)17 b(Example)d(#2)75
1008 y Ft(The)h(main)h(program:)170 1103 y Fm(int)24 b(ma,)f(mb;)170
1159 y(...)170 1216 y(list_a)g(:=)h(``[0,1]'';)170 1272 y(list_b)f(:=)h
(``[0,2{,3}]'';)170 1385 y(mpi_local_subgroup\(MPI_GROUP_)o(ALL,)d(2,)i
(list_a,)g(&group_a\);)170 1442 y(mpi_local_subgroup\(MPI_GROUP_)o(ALL,)e
(2\(3\),)i(list_b,)g(&group_b\);)170 1554 y(mpi_comm_make\(MPI_COMM_ALL,)e
(group_a,)h(&comm_a\);)170 1611 y(mpi_comm_make\(MPI_COMM_ALL,)f(group_b,)h
(&comm_b\);)170 1724 y(mpi_comm_rank\(comm_a,)f(&ma\);)170
1780 y(mpi_comm_rank\(comm_b,)g(&mb\);)170 1893 y(if\(ma)j(!=)f
(MPI_UNDEFINED\))242 1950 y(lib_call\(comm_a\);)170 2006 y(if\(mb)h(!=)f
(MPI_UNDEFINED\))170 2063 y({)242 2119 y(lib_call\(comm_b\);)242
2175 y(lib_call\(comm_b\);)170 2232 y(})75 2327 y Ft(The)15
b(library:)75 2421 y Fm(void)23 b(lib_call\(void)f(*comm\))75
2478 y({)170 2534 y(int)i(me,)f(done)h(=)f(0;)170 2591 y
(mpi_comm_rank\(comm,)f(&me\);)170 2647 y(if\(me)i(==)f(0\))266
2704 y(while\(!done\))1967 46 y Fr(1)1967 103 y(2)1967 159
y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 27 30
bop 75 -100 a Fl(4.11.)29 b(MOTIV)-5 b(A)l(TING)15 b(EXAMPLES)1056
b Ft(27)266 45 y Fm({)361 102 y(mpi_recv\(...,)22 b(comm,)i(MPI_SRC_ANY\);)
361 158 y(...)266 214 y(})170 271 y(else)170 327 y({)266 384
y(/*)f(work)h(*/)266 440 y(mpi_send\(...,)e(comm,)h(0\);)266
497 y(....)170 553 y(})170 610 y(MPI_SYNC\(comm\);)70 b(/*)24
b(include/no)e(safety)h(for)h(safety/no)e(safety)h(*/)75 666
y(})75 764 y Ft(The)16 b(ab)q(o)o(v)o(e)g(example)g(is)h(really)g(t)o(w)o(o)d
(examples,)j(dep)q(ending)h(on)d(whether)i(or)e(not)g(y)o(ou)h(include)i
(rank)75 820 y(3)e(in)h Fm(list)p 267 820 15 2 v 17 w(b)p Ft(.)23
b(This)17 b(example)g(illustrates)g(that,)f(despite)h(con)o(texts,)f
(subsequen)o(t)h(calls)g(to)f Fm(lib)p 1766 820 V 17 w(call)75
876 y Ft(with)22 b(the)f(same)g(con)o(text)f(need)i(not)f(b)q(e)h(safe)f
(from)f(one)h(another)g(\(\\bac)o(k)g(masking"\).)37 b(Safet)o(y)20
b(is)75 933 y(realized)g(if)e(the)37 b Fh(MPI)p 474 933 14
2 v 16 w(SYNC)19 b Ft(is)f(added.)30 b(What)17 b(this)i(demonstrates)e(is)i
(that)e(libraries)j(ha)o(v)o(e)e(to)f(b)q(e)75 989 y(written)e(carefully)l(,)
i(ev)o(en)e(with)h(con)o(texts.)166 1047 y(Algorithms)i(lik)o(e)g(\\com)o
(bine")g(ha)o(v)o(e)f(strong)f(enough)i(source)g(selectivit)o(y)h(so)e(that)f
(they)i(are)f(in-)75 1103 y(heren)o(tly)k(OK.)g(So)g(are)g(m)o(ultiple)h
(calls)g(to)e(a)g(t)o(ypical)i(tree)f(broadcast)f(algorithm)g(with)h(the)g
(same)75 1160 y(ro)q(ot.)27 b(Ho)o(w)o(ev)o(er,)17 b(m)o(ultiple)j(calls)f
(to)e(a)h(t)o(ypical)g(tree)g(broadcast)f(algorithm)h({)g(with)g(di\013eren)o
(t)g(ro)q(ots)75 1216 y(|)h(could)i(break.)31 b(Therefore,)19
b(suc)o(h)h(algorithms)f(w)o(ould)g(ha)o(v)o(e)g(to)f(utilize)j(the)f(tag)e
(to)g(k)o(eep)i(things)75 1273 y(straigh)o(t.)f(All)c(of)g(the)f(foregoing)g
(is)h(a)f(discussion)i(of)e(\\collectiv)o(e)i(calls")g(implemen)o(ted)g(with)
f(p)q(oin)o(t)g(to)75 1329 y(p)q(oin)o(t)k(op)q(erations.)28
b(MPI)18 b(implemen)o(tations)h(ma)o(y)f(or)f(ma)o(y)g(not)h(implemen)o(t)h
(collectiv)o(e)h(calls)f(using)75 1386 y(p)q(oin)o(t-to-p)q(oin)o(t)e(op)q
(erations.)22 b(These)16 b(algorithms)g(are)f(used)i(to)e(illustrate)i(the)f
(issues)h(of)e(correctness)75 1442 y(and)g(safet)o(y)l(,)g(indep)q(enden)o(t)
i(of)e(ho)o(w)g(MPI)g(implemen)o(ts)h(its)g(collectiv)o(e)h(calls.)75
1569 y Fi(4.11.7)49 b(Inter-Comm)o(unication)14 b(Examples)75
1656 y Fh(Example)f(1:)19 b(Three-Group)e(\\Pip)q(eline")75
1744 y Ft(+|||+)k(+|||+)g(+|||+)g(|)f(|)f(|)h(|)f(|)h(|)f(|)g(Group)g(0)g(|)g
(<|{>)h(|)f(Group)g(1)g(|)75 1801 y(<|{>)c(|)h(Group)f(2)g(|)g(|)h(|)g(|)f(|)
h(|)f(|)h(+|||+)h(+|||+)g(+|||+)166 1858 y(Groups)k(0)g(and)h(1)f(comm)o
(unicate.)39 b(Groups)21 b(1)g(and)h(2)f(comm)o(unicate.)39
b(Therefore,)23 b(group)e(0)75 1914 y(requires)e(one)f(in)o(ter-comm)o
(unicator,)h(group)e(1)h(requires)h(t)o(w)o(o)e(in)o(ter-comm)o(unicators,)h
(and)g(group)g(2)75 1971 y(requires)d(1)f(in)o(ter-comm)o(unicator.)20
b(Note)14 b(that)g(the)h(sync)o(hronous)f(in)o(ter-comm)o(unicator)h
(constructor)75 2027 y(\()p Fh(MPI)p 178 2027 V 15 w(COMM)p
335 2027 V 17 w(PEER)p 464 2027 V 17 w(MAKE\(\))p Ft(\))9 b(can)i(b)q(e)h
(safely)e(used)i(here)f(since)h(there)e(is)i(no)e(cyclic)j(comm)o(unication.)
170 2139 y Fm(void)24 b(*)f(myComm;)453 b(/*)24 b(intra-communicator)d(of)j
(local)f(sub-group)f(*/)170 2195 y(void)i(*)f(myFirstComm;)786
b(/*)24 b(inter-communicator)d(*/)170 2252 y(void)j(*)f(mySecondComm;)237
b(/*)24 b(second)f(inter-communicator)e(\(group)i(B)h(only\))f(*/)170
2308 y(int)h(membershipKey;)170 2365 y(int)g(subGroupLeaders[3];)170
2478 y(MPI_INIT\(\);)170 2534 y(...)170 2647 y(/*)g(User)f(code)h(must)f
(generate)g(membershipKey)f(in)h(the)h(range)f([0,)h(1,)f(2])h(*/)170
2704 y(membershipKey)f(=)g(...)h(;)-32 46 y Fr(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 28 31
bop 75 -100 a Ft(28)414 b Fl(SECTION)16 b(4.)30 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)170 102 y Fm(/*)24 b(Build)f
(intra-communicator)f(for)h(local)g(sub-group)g(and)g(get)h(group)f(leaders)g
(*/)170 158 y(/*)h(of)g(each)f(sub-group)g(\(relative)f(to)i(MPI_COMM_ALL\).)
e(*/)170 214 y(MPI_COMM_SPLITL\(MPI_COMM_ALL,)e(membershipKey,)i(3,)i
(subGroupLeaders,)e(&myComm\);)170 327 y(/*)i(Build)f(inter-communicators.)45
b(Tags)24 b(are)f(hard-coded.)f(*/)170 384 y(if)i(\(membershipKey)e(==)i(0\))
266 440 y({)692 b(/*)23 b(Group)h(0)f(communicates)g(with)g(group)g(1.)h(*/)
266 497 y(MPI_COMM_PEER_MAKE\(myComm)o(,)d(MPI_COMM_ALL,)h
(subGroupLeaders[1],)g(10,)h(1,)719 553 y(&myFirstComm\);)266
610 y(})170 666 y(else)h(if)f(\(membershipKey)f(==)i(1\))266
723 y({)525 b(/*)23 b(Group)h(1)f(communicates)f(with)i(groups)f(0)h(and)f
(2.)h(*/)266 779 y(MPI_COMM_PEER_MAKE\(myComm)o(,)d(MPI_COMM_ALL,)h
(subGroupLeaders[0],)g(10,)h(1,)719 835 y(&myFirstComm\);)266
892 y(MPI_COMM_PEER_MAKE\(myComm)o(,)e(MPI_COMM_ALL,)h(subGroupLeaders[2],)g
(21,)h(1,)719 948 y(&mySecondComm\);)266 1005 y(})170 1061
y(else)h(if)f(\(membershipKey)f(==)i(2\))266 1118 y({)692 b(/*)23
b(Group)h(2)f(communicates)g(with)g(group)g(1.)h(*/)266 1174
y(MPI_COMM_PEER_MAKE\(myComm)o(,)d(MPI_COMM_ALL,)h(subGroupLeaders[1],)g(21,)
h(1,)719 1231 y(&myFirstComm\);)266 1287 y(})75 1513 y
(\\subsubsection{Example)e(2:)47 b(Three-Group)23 b(``Ring"})75
1569 y(\\label{context-ex7})75 1682 y(\\begin{verbatim})290
1739 y(+-----------------------)o(--------)o(-------)o(-------)o(--------)o
(------+)290 1795 y(|)1408 b(|)290 1852 y(|)95 b(+---------+)213
b(+---------+)h(+---------+)94 b(|)290 1908 y(|)h(|)215 b(|)f(|)h(|)g(|)f(|)
96 b(|)290 1965 y(+-->)23 b(|)h(Group)f(0)h(|)f(<----->)g(|)h(Group)f(1)h(|)g
(<----->)f(|)g(Group)h(2)f(|)h(<--+)409 2021 y(|)215 b(|)f(|)h(|)g(|)f(|)409
2077 y(+---------+)f(+---------+)h(+---------+)166 2192 y Ft(Groups)18
b(0)f(and)i(1)f(comm)o(unicate.)29 b(Groups)17 b(1)h(and)h(2)e(comm)o
(unicate.)29 b(Groups)18 b(0)g(and)g(2)g(com-)75 2249 y(m)o(unicate.)49
b(Therefore,)26 b(eac)o(h)f(requires)h(t)o(w)o(o)d(in)o(ter-comm)o
(unicators.)48 b(Note)24 b(that)g(the)h("lo)q(osely)75 2305
y(sync)o(hronous")f(in)o(ter-comm)o(unicator)g(constructor)f(\()h
Fh(MPI)p 1154 2305 14 2 v 16 w(COMM)p 1312 2305 V 16 w(PEER)p
1440 2305 V 17 w(MAKE)p 1586 2305 V 16 w(ST)l(ART\(\))h Ft(and)75
2361 y Fh(MPI)p 160 2361 V 16 w(COMM)p 318 2361 V 16 w(PEER)p
446 2361 V 17 w(MAKE)p 592 2361 V 16 w(FINISH\(\))p Ft(\))c(is)h(the)g(b)q
(est)g(c)o(hoice)g(here)h(due)f(to)f(the)h(cyclic)h(comm)o(uni-)75
2418 y(cation.)170 2534 y Fm(void)h(*)f(myComm;)453 b(/*)24
b(intra-communicator)d(of)j(local)f(sub-group)f(*/)170 2591
y(void)i(*)f(myFirstComm;)762 b(/*)24 b(inter-communicators)d(*/)170
2647 y(void)j(*)f(mySecondComm;)170 2704 y(make_id)g(firstMakeID,)g
(secondMakeID;)332 b(/*)23 b(handles)g(for)h("FINISH")f(*/)1967
46 y Fr(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 29 32
bop 75 -100 a Fl(4.11.)34 b(MOTIV)-5 b(A)l(TING)16 b(EXAMPLES)1050
b Ft(29)170 45 y Fm(int)24 b(membershipKey;)170 102 y(int)g
(subGroupLeaders[3];)170 214 y(MPI_INIT\(\);)170 271 y(...)170
384 y(/*)g(User)f(code)h(must)f(generate)g(membershipKey)f(in)h(the)h(range)f
([0,)h(1,)f(2])h(*/)170 440 y(membershipKey)f(=)g(...)h(;)170
553 y(/*)g(Build)f(intra-communicator)f(for)h(local)g(sub-group)g(and)g(get)h
(group)f(leaders)g(*/)170 610 y(/*)h(of)g(each)f(sub-group)g(\(relative)f(to)
i(MPI_COMM_ALL\).)e(*/)170 666 y(MPI_COMM_SPLITL\(MPI_COMM_ALL,)e
(membershipKey,)i(3,)i(subGroupLeaders,)e(&myComm\);)170 779
y(/*)i(Build)f(inter-communicators.)45 b(Tags)24 b(are)f(hard-coded.)f(*/)170
835 y(if)i(\(membershipKey)e(==)i(0\))266 892 y({)525 b(/*)23
b(Group)h(0)f(communicates)f(with)i(groups)f(1)h(and)f(2.)h(*/)266
948 y(MPI_COMM_PEER_MAKE_START\()o(myComm,)c(MPI_COMM_ALL,)i
(subGroupLeaders[2],)g(20,)862 1005 y(1,)i(&firstMakeID\);)266
1061 y(MPI_COMM_PEER_MAKE_START\()o(myComm,)c(MPI_COMM_ALL,)i
(subGroupLeaders[1],)g(10,)862 1118 y(1,)i(&secondMakeID\);)266
1174 y(})170 1231 y(else)g(if)f(\(membershipKey)f(==)i(1\))266
1287 y({)525 b(/*)23 b(Group)h(1)f(communicates)f(with)i(groups)f(0)h(and)f
(2.)h(*/)266 1344 y(MPI_COMM_PEER_MAKE_START\()o(myComm,)c(MPI_COMM_ALL,)i
(subGroupLeaders[0],)g(10,)862 1400 y(1,)i(&firstMakeID\);)266
1456 y(MPI_COMM_PEER_MAKE_START\()o(myComm,)c(MPI_COMM_ALL,)i
(subGroupLeaders[2],)g(21,)862 1513 y(1,)i(&secondMakeID\);)266
1569 y(})170 1626 y(else)g(if)f(\(membershipKey)f(==)i(2\))266
1682 y({)525 b(/*)23 b(Group)h(2)f(communicates)f(with)i(groups)f(0)h(and)f
(1.)h(*/)266 1739 y(MPI_COMM_PEER_MAKE_START\()o(myComm,)c(MPI_COMM_ALL,)i
(subGroupLeaders[1],)g(21,)862 1795 y(1,)i(&firstMakeID\);)266
1852 y(MPI_COMM_PEER_MAKE_START\()o(myComm,)c(MPI_COMM_ALL,)i
(subGroupLeaders[0],)g(20,)862 1908 y(1,)i(&secondMakeID\);)266
1965 y(})170 2077 y(/*)g(Everyone)f(has)g(the)h(same)f("FINISH")g(code...)g
(*/)170 2134 y(MPI_COMM_PEER_MAKE_FINISH\(fir)o(stMakeID)o(,)e
(&myFirstComm\);)170 2190 y(MPI_COMM_PEER_MAKE_FINISH\(sec)o(ondMakeI)o(D,)g
(&mySecondComm\);)75 2308 y Fh(Example)13 b(3:)19 b(Three-Group)e(\\Pip)q
(eline")e(Using)h(Name)d(Service)409 2393 y Fm(+---------+)213
b(+---------+)h(+---------+)409 2450 y(|)h(|)f(|)h(|)g(|)f(|)409
2506 y(|)24 b(Group)f(0)h(|)f(<----->)g(|)h(Group)f(1)h(|)g(<----->)f(|)g
(Group)h(2)f(|)409 2563 y(|)215 b(|)f(|)h(|)g(|)f(|)409 2619
y(+---------+)f(+---------+)h(+---------+)166 2704 y Ft(Groups)21
b(0)g(and)h(1)f(comm)o(unicate.)39 b(Groups)21 b(1)g(and)h(2)f(comm)o
(unicate.)39 b(Therefore,)23 b(group)e(0)-32 46 y Fr(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40
667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175
y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40
1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699
y(48)p eop
%%Page: 30 33
bop 75 -100 a Ft(30)414 b Fl(SECTION)16 b(4.)30 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Ft(requires)k(one)f(in)o
(ter-comm)o(unicator,)h(group)e(1)h(requires)h(t)o(w)o(o)e(in)o(ter-comm)o
(unicators,)h(and)g(group)g(2)75 102 y(requires)d(1)f(in)o(ter-comm)o
(unicator.)20 b(Note)14 b(that)g(the)h(sync)o(hronous)f(in)o(ter-comm)o
(unicator)h(constructor)75 158 y(\()p Fh(MPI)p 178 158 14 2
v 15 w(COMM)p 335 158 V 17 w(NAME)p 481 158 V 17 w(MAKE\(\))p
Ft(\))f(can)j(b)q(e)f(safely)h(used)f(here)h(since)g(there)f(is)h(no)f
(cyclic)h(comm)o(unica-)75 214 y(tion.)170 333 y Fm(void)24
b(*)f(myComm;)453 b(/*)24 b(intra-communicator)d(of)j(local)f(sub-group)f(*/)
170 390 y(void)i(*)f(myFirstComm;)786 b(/*)24 b(inter-communicator)d(*/)170
446 y(void)j(*)f(mySecondComm;)237 b(/*)24 b(second)f(inter-communicator)e
(\(group)i(B)h(only\))f(*/)170 559 y(MPI_INIT\(\);)170 615
y(...)170 728 y(/*)h(User)f(builds)g(intra-communicator)f(myComm)h
(describing)f(the)i(local)f(sub-group)g(*/)170 785 y(/*)h(using)f(any)h
(appropriate)e(MPI)h(routine\(s\).)47 b(\(For)23 b(example,)g(myComm)g(could)
g(*/)170 841 y(/*)h(have)f(been)h(passed)f(in)g(as)h(an)f(argument)g(to)h(a)g
(user)f(subroutine.\))f(*/)170 898 y(myComm)h(=)h(...)g(;)170
1011 y(/*)g(Build)f(inter-communicators.)45 b(Group)23 b(membership)g
(conditions)f(must)i(be)f(*/)170 1067 y(/*)h(provided)f(by)g(the)h(user.)f
(*/)170 1123 y(if)h(\(<I)f(am)h(in)g(group)f(0>\))266 1180
y({)692 b(/*)23 b(Group)h(0)f(communicates)g(with)g(group)g(1.)h(*/)266
1236 y(MPI_COMM_NAME_MAKE\(myComm)o(,)d("Connect)i(10",)g(1,)h
(&myFirstComm\);)266 1293 y(})170 1349 y(else)g(if)f(\(<I)h(am)f(in)h(group)f
(1>\))266 1406 y({)525 b(/*)23 b(Group)h(1)f(communicates)f(with)i(groups)f
(0)h(and)f(2.)h(*/)266 1462 y(MPI_COMM_NAME_MAKE\(myComm)o(,)d("Connect)i
(10",)g(1,)h(&myFirstComm\);)266 1519 y(MPI_COMM_NAME_MAKE\(myComm)o(,)d
("Connect)i(21",)g(1,)h(&mySecondComm\);)266 1575 y(})170 1632
y(else)g(if)f(\(<I)h(am)f(in)h(group)f(2>\))266 1688 y({)692
b(/*)23 b(Group)h(2)f(communicates)g(with)g(group)g(1.)h(*/)266
1744 y(MPI_COMM_NAME_MAKE\(myComm)o(,)d("Connect)i(21",)g(1,)h
(&myFirstComm\);)266 1801 y(})75 1933 y Fh(Example)13 b(4:)19
b(Three-Group)e(\\Ring")e(Using)g(Name)e(Service)290 2022 y
Fm(+-----------------------)o(--------)o(-------)o(-------)o(--------)o
(------+)290 2079 y(|)1408 b(|)290 2135 y(|)95 b(+---------+)213
b(+---------+)h(+---------+)94 b(|)290 2192 y(|)h(|)215 b(|)f(|)h(|)g(|)f(|)
96 b(|)290 2248 y(+-->)23 b(|)h(Group)f(0)h(|)f(<----->)g(|)h(Group)f(1)h(|)g
(<----->)f(|)g(Group)h(2)f(|)h(<--+)409 2305 y(|)215 b(|)f(|)h(|)g(|)f(|)409
2361 y(+---------+)f(+---------+)h(+---------+)166 2478 y Ft(Groups)18
b(0)f(and)i(1)f(comm)o(unicate.)29 b(Groups)17 b(1)h(and)h(2)e(comm)o
(unicate.)29 b(Groups)18 b(0)g(and)g(2)g(com-)75 2534 y(m)o(unicate.)49
b(Therefore,)26 b(eac)o(h)f(requires)h(t)o(w)o(o)d(in)o(ter-comm)o
(unicators.)48 b(Note)24 b(that)g(the)h("lo)q(osely)75 2591
y(sync)o(hronous")20 b(in)o(ter-comm)o(unicator)h(constructor)f(\()h
Fh(MPI)p 1141 2591 V 15 w(COMM)p 1298 2591 V 17 w(NAME)p 1444
2591 V 17 w(MAKE)p 1590 2591 V 16 w(ST)l(ART\(\))g Ft(and)75
2647 y Fh(MPI)p 160 2647 V 16 w(COMM)p 318 2647 V 16 w(NAME)p
463 2647 V 17 w(MAKE)p 609 2647 V 16 w(FINISH\(\))p Ft(\))15
b(is)h(the)g(b)q(est)g(c)o(hoice)g(here)h(due)f(to)f(the)h(cyclic)h(comm)o
(unica-)75 2704 y(tion.)1967 46 y Fr(1)1967 103 y(2)1967 159
y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 31 34
bop 75 -100 a Fl(4.11.)34 b(MOTIV)-5 b(A)l(TING)16 b(EXAMPLES)1050
b Ft(31)170 45 y Fm(void)24 b(*)f(myComm;)453 b(/*)24 b(intra-communicator)d
(of)j(local)f(sub-group)f(*/)170 102 y(void)i(*)f(myFirstComm;)762
b(/*)24 b(inter-communicators)d(*/)170 158 y(void)j(*)f(mySecondComm;)170
214 y(make_id)g(firstMakeID,)g(secondMakeID;)332 b(/*)23 b(handles)g(for)h
("FINISH")f(*/)170 327 y(MPI_INIT\(\);)170 384 y(...)170 497
y(/*)h(User)f(builds)g(intra-communicator)f(myComm)h(describing)f(the)i
(local)f(sub-group)g(*/)170 553 y(/*)h(using)f(any)h(appropriate)e(MPI)h
(routine\(s\).)47 b(\(For)23 b(example,)g(myComm)g(could)g(*/)170
610 y(/*)h(have)f(been)h(passed)f(in)g(as)h(an)f(argument)g(to)h(a)g(user)f
(subroutine.\))f(*/)170 666 y(myComm)h(=)h(...)g(;)170 779
y(/*)g(Build)f(inter-communicators.)45 b(Group)23 b(membership)g(conditions)f
(must)i(be)f(*/)170 835 y(/*)h(provided)f(by)g(the)h(user.)f(*/)170
892 y(if)h(\(<I)f(am)h(in)g(group)f(0>\))266 948 y({)525 b(/*)23
b(Group)h(0)f(communicates)f(with)i(groups)f(1)h(and)f(2.)h(*/)266
1005 y(MPI_COMM_NAME_MAKE_START\()o(myComm,)c("Connect)j(20",)g(1,)h
(&firstMakeID\);)266 1061 y(MPI_COMM_NAME_MAKE_START\()o(myComm,)c("Connect)j
(10",)g(1,)h(&secondMakeID\);)266 1118 y(})170 1174 y(else)g(if)f(\(<I)h(am)f
(in)h(group)f(1>\))266 1231 y({)525 b(/*)23 b(Group)h(1)f(communicates)f
(with)i(groups)f(0)h(and)f(2.)h(*/)266 1287 y(MPI_COMM_NAME_MAKE_START\()o
(myComm,)c("Connect)j(10",)g(1,)h(&firstMakeID\);)266 1344
y(MPI_COMM_NAME_MAKE_START\()o(myComm,)c("Connect)j(21",)g(1,)h
(&secondMakeID\);)266 1400 y(})170 1456 y(else)g(if)f(\(<I)h(am)f(in)h(group)
f(2>\))266 1513 y({)525 b(/*)23 b(Group)h(2)f(communicates)f(with)i(groups)f
(0)h(and)f(1.)h(*/)266 1569 y(MPI_COMM_NAME_MAKE_START\()o(myComm,)c
("Connect)j(21",)g(1,)h(&firstMakeID\);)266 1626 y
(MPI_COMM_NAME_MAKE_START\()o(myComm,)c("Connect)j(20",)g(1,)h
(&secondMakeID\);)266 1682 y(})170 1795 y(/*)g(Everyone)f(has)g(the)h(same)f
("FINISH")g(code...)g(*/)170 1852 y(MPI_COMM_NAME_MAKE_FINISH\(fir)o
(stMakeID)o(,)e(&myFirstComm\);)170 1908 y(MPI_COMM_NAME_MAKE_FINISH\(sec)o
(ondMakeI)o(D,)g(&mySecondComm\);)-32 46 y Fr(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF