Subject: Interim (August 13) draft (post first reading)

From: Tony Skjellum <[email-masked]>
Date: Fri, 13 Aug 93 17:04:34 CDT

Dear colleagues,

We successfully made the first reading of the context chapter, with
significant improvements and "tuning."

Here is an intermediate draft, reflecting much of the tuning made during
the first reading of the context proposal.  It is still "rough" in some
respects, but this information is provided you now to give you the most
possible opportunity to see what we have evolved.  

Over next four weeks, we will be doing the following
	i) bullet-proofing the cacheing section
	ii) adding further explanations to the intra-communication section
	iii) leaving inter-communication as is.
        iv) fixing (and possibly extending) the examples

At this point we seek to clarify, and polish rather than significantly
change this chapter.

Comments?
- Tony Skjellum

%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: mpi-report.dvi
%%Pages: 35 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 72 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<0FE03FF8387C783E7C1E78
1E781E001E003C003C00F807F007E00078003C001E000F000F000F700FF80FF80FF81EF01E787C
3FF80FE0101B7E9A15>I<001C00001C00003C00007C00007C0000DC0001DC00039C00031C0007
1C000E1C000C1C00181C00381C00301C00601C00E01C00FFFFC0FFFFC0001C00001C00001C0000
1C00001C00001C0001FFC001FFC0121B7F9A15>I<01F807FC0F8E1E1E3C1E381E781E78007000
F080F7F8FFFCFC1CF81EF80FF00FF00FF00FF00FF00F700F700F781E381E1E3C0FF807E0101B7E
9A15>54 D<70F8F8F870000000000000000070F8F8F87005127D910C>58
D<70F8F8F870000000000000000070F8F8F878181818383070E060051A7D910C>I<1FE03FF878
7CE01EF01EF01EF01E603E007C00F801F001E003C0038003000300030003000300030000000000
0000000007000F800F800F8007000F1D7E9C14>63 D<00060000000F0000000F0000000F000000
1F8000001F8000001F8000003FC0000033C0000033C0000073E0000061E0000061E00000E1F000
00C0F00000C0F00001C0F8000180780001FFF80003FFFC0003003C0003003C0007003E0006001E
0006001E001F001F00FFC0FFF0FFC0FFF01C1C7F9B1F>65 D<FFFFC0FFFFF00F00F80F003C0F00
1C0F001E0F001E0F001E0F001E0F001C0F003C0F00780FFFF00FFFE00F00F80F003C0F001E0F00
1E0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F007CFFFFF8FFFFC0181C7E9B1D>I<00
3FC18001FFF18003F07B800FC01F801F000F801E0007803C0003807C0003807800038078000180
F0000180F0000000F0000000F0000000F0000000F0000000F0000000F000000078000180780001
807C0001803C0003801E0003001F0007000FC00E0003F03C0001FFF000003FC000191C7E9B1E>
I<FFFFFCFFFFFC0F007C0F001C0F000C0F000E0F00060F03060F03060F03060F03000F07000FFF
000FFF000F07000F03000F03000F03030F03030F00030F00060F00060F00060F000E0F001E0F00
7CFFFFFCFFFFFC181C7E9B1C>69 D<FFFFF8FFFFF80F00780F00380F00180F001C0F000C0F000C
0F030C0F030C0F03000F03000F07000FFF000FFF000F07000F03000F03000F03000F03000F0000
0F00000F00000F00000F00000F0000FFF800FFF800161C7E9B1B>I<003FC18001FFF18003F07B
800FC01F801F000F801E0007803C0003807C0003807800038078000180F0000180F0000000F000
0000F0000000F0000000F0000000F000FFF0F000FFF078000780780007807C0007803C0007801E
0007801F0007800FC00F8003F03F8001FFFB80003FE1801C1C7E9B21>I<FFF3FFC0FFF3FFC00F
003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00
0FFFFC000FFFFC000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
000F003C000F003C000F003C000F003C00FFF3FFC0FFF3FFC01A1C7E9B1F>I<FFF0FFF00F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F00FFF0FFF00C1C7F9B0F>I<1FFF1FFF007800780078007800780078007800780078
0078007800780078007800780078007800780078F878F878F878F8F8F1F07FE01F80101C7F9B15
>I<FFF07FE0FFF07FE00F003E000F003C000F0078000F0070000F00E0000F01C0000F0380000F
0700000F0E00000F1E00000F3F00000F7F80000FFF80000FE7C0000FC3C0000F83E0000F01F000
0F00F0000F00F8000F007C000F007C000F003E000F001E000F001F00FFF07FF0FFF07FF01C1C7E
9B20>I<FFF800FFF8000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00180F00180F00180F00180F00380F00300F00700F00
F00F01F0FFFFF0FFFFF0151C7E9B1A>I<FF8000FF80FFC001FF800FC001F8000FC001F8000DE0
0378000DE00378000DE00378000CF00678000CF00678000CF00678000C780C78000C780C78000C
780C78000C3C1878000C3C1878000C3C1878000C1E3078000C1E3078000C1E3078000C0F607800
0C0F6078000C0F6078000C07C078000C07C078000C07C078001E03807800FFC387FF80FFC387FF
80211C7E9B26>I<FF00FFC0FF80FFC00FC01E000FC00C000FE00C000DE00C000DF00C000CF80C
000CF80C000C7C0C000C3C0C000C3E0C000C1E0C000C1F0C000C0F8C000C078C000C07CC000C03
CC000C03EC000C01FC000C00FC000C00FC000C007C000C007C000C003C001E001C00FFC01C00FF
C00C001A1C7E9B1F>I<003F800001FFF00003E0F80007001C000E000E001C0007003C00078038
000380780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0
F00001E0780003C0780003C0380003803C0007801E000F000E000E0007803C0003E0F80001FFF0
00003F80001B1C7E9B20>I<FFFF80FFFFE00F00F00F00380F003C0F001E0F001E0F001E0F001E
0F001E0F001E0F003C0F00380F00F00FFFE00FFF800F00000F00000F00000F00000F00000F0000
0F00000F00000F00000F0000FFF000FFF000171C7E9B1C>I<FFFF0000FFFFE0000F00F0000F00
38000F003C000F001E000F001E000F001E000F001E000F001E000F003C000F0038000F00F0000F
FFE0000FFFC0000F03F0000F00F0000F00F8000F0078000F0078000F0078000F0078000F007800
0F0078000F007C300F007E70FFF03FE0FFF00FC01C1C7E9B1F>82 D<07F1801FFD803C1F807007
80700380E00380E00180E00180F00000F80000FE00007FE0003FFC001FFE000FFF0000FF80000F
800007C00003C00001C0C001C0C001C0E001C0E00380F00780FE0F00DFFE00C7F800121C7E9B17
>I<7FFFFFC07FFFFFC0780F03C0700F01C0600F00C0E00F00E0C00F0060C00F0060C00F0060C0
0F0060000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F000003FFFC0003FFFC001B1C7F
9B1E>I<FFF0FFC0FFF0FFC00F001E000F000C000F000C000F000C000F000C000F000C000F000C
000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F00
0C000F000C000F000C000F001C00078018000780380003C0700001F0F00000FFC000003F80001A
1C7E9B1F>I<FFE01FF0FFE01FF01F0007800F0003000F800700078006000780060007C00E0003
C00C0003C00C0001E0180001E0180001E0180000F0300000F0300000F870000078600000786000
007CE000003CC000003CC000001F8000001F8000001F8000000F0000000F0000000F0000000600
001C1C7F9B1F>I<FFE0FFE1FFFFE0FFE1FF1F001E007C0F001E00380F003F00300F003F003007
803F00600780678060078067806007C06780E003C0C3C0C003C0C3C0C003C0C3C0C001E1C3E180
01E181E18001E181E18000F181E30000F300F30000F300F30000FB00F700007E007E00007E007E
00007E007E00003E007C00003C003C00003C003C00001C0038000018001800281C7F9B2B>I<FF
F00FFCFFF00FFC0FC003C007C0038003C0030003E0060001F0060000F00C0000F81C0000781800
007C3800003C3000001E6000001F6000000FC000000FC000000780000007800000078000000780
00000780000007800000078000000780000007800000078000007FF800007FF8001E1C809B1F>
89 D<18183C3C383870706060E0E0C0C0C0C0F8F8FCFCFCFC7C7C38380E0D7B9C15>92
D<183C387060E0C0C0F8FCFC7C38060D7E9C0C>96 D<1FE0003FF8003C3C003C1E00180E00000E
00001E0007FE003FFE007E0E00F80E00F80E00F00E60F00E60F81E607C7E607FFFC01FC7801312
7F9115>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C
FE001FFF801F87C01E03E01C01E01C00F01C00F01C00F01C00F01C00F01C00F01C00F01C01E01E
01E01E03C01F87C01BFF8018FE00141D7F9C17>I<07F80FFC3E3C3C3C78187800F000F000F000
F000F000F000780078063C0E3F1C0FF807F00F127F9112>I<001F80001F800003800003800003
8000038000038000038000038000038000038007F3801FFF803E1F807C0780780380F80380F003
80F00380F00380F00380F00380F00380F003807807807C0F803E1F801FFBF007E3F0141D7F9C17
>I<07E01FF83E7C781C781EF01EFFFEFFFEF000F000F000F000780078063C0E3F1C0FF807F00F
127F9112>I<00FC03FE079E071E0F1E0E000E000E000E000E000E00FFE0FFE00E000E000E000E
000E000E000E000E000E000E000E000E000E000E007FE07FE00F1D809C0D>I<07E7C01FFFC03C
3DC0781E00781E00781E00781E00781E00781E003C3C003FF80037E0007000007000007800003F
FC003FFF007FFF807807C0F003C0E001C0E001C0F003C0F807C07C0F801FFE0007F800121B7F91
15>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001CFE00
1DFF001F8F801F07801E03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C0380FF9FF0FF9FF0141D7F9C17>I<3C007C007C007C003C0000000000000000000000
0000FC00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80FF8009
1D7F9C0C>I<01C003E003E003E001C00000000000000000000000000FE00FE000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0F0E0F1E0F3C0FF80
7E000B25839C0D>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C0000
1C00001C7FC01C7FC01C3E001C3C001C78001CF0001DE0001FE0001FF0001FF0001E78001C7C00
1C3C001C1E001C1E001C0F00FF9FE0FF9FE0131D7F9C16>I<FC00FC001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
00FF80FF80091D7F9C0C>I<FC7F07F000FDFF9FF8001F87F87C001F03F03C001E01E01C001C01
C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C
01C01C001C01C01C001C01C01C00FF8FF8FF80FF8FF8FF8021127F9124>I<FCFE00FDFF001F8F
801F07801E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03
80FF9FF0FF9FF014127F9117>I<03F0000FFC001E1E00380700780780700380F003C0F003C0F0
03C0F003C0F003C0F003C07003807807803807001E1E000FFC0003F00012127F9115>I<FCFE00
FFFF801F87C01E03E01C01E01C01F01C00F01C00F01C00F01C00F01C00F01C00F01C01E01E01E0
1E03C01F8FC01FFF801CFE001C00001C00001C00001C00001C00001C0000FF8000FF8000141A7F
9117>I<07F1801FF9803F1F803C0F80780780780380F00380F00380F00380F00380F00380F003
80F803807807807C0F803E1F801FFB8007E380000380000380000380000380000380000380001F
F0001FF0141A7F9116>I<FDF0FFF81F781E781E301C001C001C001C001C001C001C001C001C00
1C001C00FFC0FFC00D127F9110>I<1FB07FF0F0F0E070E030F030F8007FC07FE01FF000F8C078
C038E038F078F8F0FFF0CFC00D127F9110>I<0C000C000C000C000C001C001C003C00FFE0FFE0
1C001C001C001C001C001C001C001C001C301C301C301C301C301E700FE007C00C1A7F9910>I<
FC1F80FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1C07801C0F801E1F800FFFF007F3F014127F9117>I<FF0FE0FF0FE01C07801C07000E06000E06
000E0600070C00070C00071C0003980003980003F80001F00001F00000E00000E00000E0001312
7F9116>I<FF3FCFE0FF3FCFE03C0F07801C0F03001C1F03000E1B06000E1B86000E1B86000E31
8E000731CC000731CC000760CC0003E0F80003E0F80003E0F80001C0700001C0700001C070001B
127F911E>I<7F8FF07F8FF00F0F80070F00038E0001DC0001D80000F00000700000780000F800
01DC00038E00030E000707001F0780FF8FF8FF8FF81512809116>I<FF0FE0FF0FE01C07801C07
000E06000E06000E0600070C00070C00071C0003980003980003F80001F00001F00000E00000E0
0000E00000C00000C00000C000F18000F18000C700007E00003C0000131A7F9116>I<7FFC7FFC
783C707860F061E061E063C00780078C0F0C1E0C1E1C3C187818F078FFF8FFF80E127F9112>I<
FFFFF0FFFFF01402808B15>I E /Fk 8 118 df<7CFEFEFEFEFE7C000000007CFEFEFEFEFE7C07
127D910D>58 D<FFFFF800FFFFFF000FC01FC00FC007E00FC003F00FC001F80FC001F80FC000FC
0FC000FC0FC000FC0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000
FE0FC000FC0FC000FC0FC000FC0FC001F80FC001F80FC003F00FC007E00FC01FC0FFFFFF00FFFF
F8001F1C7E9B25>68 D<03FC001FFF003F1F007E1F007E1F00FC0E00FC0000FC0000FC0000FC00
00FC0000FC0000FC00007E01807F03803F87001FFE0003F80011127E9115>99
D<1E003F007F007F007F003F001E0000000000000000000000FF00FF001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>105
D<FF1FE0FF7FF01FF1F81FC0F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>110 D<01FC000FFF801F07C03E03E07C01
F07C01F0FC01F8FC01F8FC01F8FC01F8FC01F8FC01F87C01F07C01F03E03E01F07C00FFF8001FC
0015127F9118>I<1FF87FF87078E018E018F000FF80FFF07FF83FF80FFC007CC03CE01CE01CF8
78FFF8CFE00E127E9113>115 D<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F01F81F01F81F87F80FFFFF03FCFF18127F911B>117
D E /Fl 35 91 df<0007000E001C0038007000E001C001C00380070007000E000E001C001C00
1C00380038003800700070007000700070006000E000E000E000E000E000E000E000E000E00060
006000700070003000380038001C001C000E0007000300102E7CA112>40
D<00C000E00070003000380018001C001C000C000E000E000E0006000600060006000600060006
000E000E000E000E000E000E001C001C001C001C0038003800380070007000E000E001C001C003
80070007000E001C0038007000E0000F2E7FA112>I<3C3E7E7E3E060E0C0C1C3870E0C0070E7D
840D>44 D<7FE07FE0FFC00B037E8A0F>I<7878F8F87005057C840D>I<007E0001FF0003C38007
01C00E01C00E01E01C00E01C01E03C01E03C01E07801E07801E07801E07801E07801E0F003C0F0
03C0F003C0F003C0F003C0F00380F00780E00780E00700E00F00E00E00701E00701C003878003F
F0000FC000131F7C9D17>48 D<000C001C00FC0FFC0F3800380038003800380078007000700070
0070007000F000E000E000E000E000E001E001C001C001C001C001C003C07FFEFFFE0F1E7C9D17
>I<007F0001FFC003C3E00701F00F01F00F80F00F01F00F01F00001E00003E00003C00007C000
1F8000FE0000FC00000F000007800007C00007C00003C00007C07007C0F807C0F807C0F807C0F0
0F80E00F80F01F00787E003FF8000FE000141F7D9D17>51 D<0001C00003C00003C0000780000F
80001B80003B8000738000638000C7000187000307000707000E07000C0700180E00300E00600E
00E00E00FFFFF0FFFFF0001E00001C00001C00001C00001C00003C00003C0003FFC003FFC0141E
7D9D17>I<03807003FFF003FFE003FF8007FE000600000600000600000600000600000E00000C
7E000DFF000F87800F03C00E01C00C01C00001E00001E00001E00003E07003E0F003C0F003C0F0
07C0C00780E00F00701E00787C003FF8000FE000141F7D9D17>I<001F80007FE001F0E003C0E0
0781E00F01E00F01E01E00001C00003C00003C300079FE007BFF007F07807E0780FC0380F803C0
F803C0F003C0F003C0F007C0F00780E00780E00780E00780F00F00701E00701E003C7C003FF000
0FC000131F7C9D17>I<3000003FFFE07FFFE07FFFC0600380E00300C00700C00E00001C000038
0000700000600000E00001C0000380000380000700000700000F00000E00001E00001E00001C00
003C00003C00003C00003C00007C0000780000780000780000131F799D17>I<003F0000FFC003
E3E00780E00700F00E00700E00700E00700E00F00F00E00F81E00FE3C007FF0003FE0001FE0007
FF000F3F801E1FC03C0FC07803C07001C0F001C0E001C0E001C0E001C0E00380F00780780F003C
3E001FFC000FE000141F7D9D17>I<007E0001FF0007C7800F03C01E01C01E01E03C01E03C01E0
3C01E07C01E07801E07801E07801E07803E07803E07807C0380FC03C1FC01FFBC00FF3C0010780
000780000700000F00E01E00F01C00F03C00E07800E1F000FFC0003F0000131F7C9D17>I<0000
180000003800000038000000780000007C000000FC000000FC000001BC000001BC0000033C0000
033E0000061E0000061E00000C1E00000C1E0000181E0000181F0000300F0000300F0000600F00
007FFF0000FFFF0000C00F0001800780018007800300078003000780060007800E0007801F0007
C0FFC07FFCFFC07FFC1E207E9F22>65 D<0003FC08001FFE18007F073800FC03F801F001F803E0
00F807C000F00F8000700F0000701F0000703E0000703E0000703E0000607C0000007C0000007C
0000007C000000FC000000F8000000F8000000F8000000F80000C0780001C0780001807C000180
7C0003803C0007003E0006001F000E000F803C0007E0F00003FFE000007F80001D217B9F21>67
D<07FFFF0007FFFFE0003C01F0003C00F8007C007C0078003C0078001E0078001E0078001E0078
001F00F8001F00F0001F00F0001F00F0001F00F0001F00F0001F01F0001E01E0003E01E0003E01
E0003E01E0003C01E0007C03E0007803C000F003C000F003C001E003C003C003C00F8007C03F00
7FFFFC00FFFFE000201F7E9E23>I<07FFFFF807FFFFF8003C00F8003C0078007C003800780038
00780038007800380078003800780C3000F8183000F0180000F0180000F0380000FFF80000FFF8
0001F0700001E0300001E0300001E0301801E0303001E0003003E0003003C0006003C0006003C0
00E003C001C003C003C007C00FC07FFFFF80FFFFFF801D1F7E9E1F>I<07FFFFF807FFFFF8003C
00F8003C0078007C00380078003800780038007800380078003800780C3000F8183000F0180000
F0180000F0380000FFF80000FFF80001F0700001E0300001E0300001E0300001E0300001E00000
03E0000003C0000003C0000003C0000003C0000003C0000007C000007FFE0000FFFE00001D1F7E
9E1E>I<0003FC04000FFF0C003F079C00FC01FC01F000FC03E0007C07C000780F8000380F8000
381F0000383E0000383E0000383E0000307C0000007C0000007C0000007C000000FC000000F800
0000F8007FFCF8007FFCF80001E0780003E07C0003E07C0003C07C0003C03E0003C03E0007C01F
0007C00FC01FC007F07D8001FFF080007FC0001E217B9F24>I<07FFC7FFC007FFC7FFC0003C00
7800003C00F800007C00F800007800F000007800F000007800F000007800F000007801F00000F8
01F00000F001E00000F001E00000F001E00000FFFFE00000FFFFE00001F003E00001E003C00001
E003C00001E003C00001E003C00001E007C00003E007C00003C007800003C007800003C0078000
03C007800003C00F800007C00F80007FFCFFF800FFF8FFF800221F7E9E22>I<07FFE007FFE000
3C00003C00007C0000780000780000780000780000780000F80000F00000F00000F00000F00000
F00001F00001E00001E00001E00001E00001E00003E00003C00003C00003C00003C00003C00007
C000FFFC00FFFC00131F7F9E10>I<07FFF00007FFF000003C0000003C0000007C000000780000
0078000000780000007800000078000000F8000000F0000000F0000000F0000000F0000000F000
0001F0000001E0000001E0000001E0018001E0018001E0030003E0030003C0030003C0070003C0
060003C00E0003C01E0007C07E007FFFFC00FFFFFC00191F7E9E1C>76 D<07FC0000FFC007FC00
01FFC0003E0001F800003E0003F800007E0003F800006E0006F000006E0006F000006E000CF000
0067000CF00000670019F00000E70019F00000C70031E00000C70031E00000C70061E00000C380
61E00000C380C3E00001C380C3E00001838183C00001838183C0000181C303C0000181C303C000
0181C607C0000381C607C0000301CC0780000301CC0780000300F80780000300F80780000700F0
0F80000F80F00F80007FF0E0FFF800FFF0E1FFF8002A1F7E9E2A>I<07FC03FFC007FE03FFC000
3E007C00003E003800007F003800006F003000006F803000006780300000678030000067C07000
00E3C0700000C3E0600000C1E0600000C1E0600000C1F0600000C0F0E00001C0F8E000018078C0
00018078C00001807CC00001803CC00001803FC00003801FC00003001F800003001F800003000F
800003000F800007000780000F800780007FF0070000FFF0030000221F7E9E22>I<0003F80000
1FFE00003C1F0000F0078001E003C003C001E0078001E00F8000F00F0000F01F0000F01E0000F8
3E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8F80001F0F80001F0F80001F0F80001
F0F80003E0780003E0780007C07C0007C07C000F803C000F003E001E001E003C000F00780007C1
F00003FFC00000FE00001D217B9F23>I<07FFFF0007FFFFC0003C03E0003C01F0007C00F00078
00F8007800F8007800F8007800F8007800F800F801F000F001F000F001E000F003C000F00F8000
FFFE0001FFF80001E0000001E0000001E0000001E0000001E0000003E0000003C0000003C00000
03C0000003C0000003C0000007C000007FFC0000FFFC00001D1F7E9E1F>I<07FFFC0007FFFF00
003C07C0003C03E0007C01E0007801F0007801F0007801F0007801F0007801E000F803E000F003
C000F0078000F01F0000FFFC0000FFF00001F0780001E03C0001E03C0001E01C0001E01E0001E0
1E0003E03E0003C03E0003C03E0003C03E0003C03E0603C03E0E07C03F0C7FFC1F1CFFFC1FF800
0007F01F207E9E21>82 D<003F8C00FFCC01E1FC03C07C07803C07003C0F00380E00180E00180E
00180E00000F00000F80000FF00007FF0007FF8003FFC000FFE0000FE00001E00000F00000F000
00F06000E06000E06000E07000E07001C07803C0FC0780FE0F00EFFE00C3F80016217D9F19>I<
1FFFFFF81FFFFFF81E03C0F83803C0383807C03830078038700780186007801860078038600780
30C00F8030000F0000000F0000000F0000000F0000000F0000001F0000001E0000001E0000001E
0000001E0000001E0000003E0000003C0000003C0000003C0000003C0000003C0000007C00001F
FFF0003FFFF0001D1F7B9E21>I<FFFC7FF8FFFC7FF807800F80078007000F8007000F0006000F
0006000F0006000F0006000F000E001F000E001E000C001E000C001E000C001E000C001E001C00
3E001C003C0018003C0018003C0018003C0018003C0038003C00300038003000380070003C0060
003C00E0003C01C0001E0380000F0F000007FE000001F800001D20799E22>I<FFF007FEFFF007
FE1F0001F00F0000E00F0000C00F0001800780018007800300078007000780060007800E0007C0
0C0003C01C0003C0180003C0300003C0300003C0600001E0600001E0C00001E0C00001E1800001
E1800000F3000000F3000000F6000000F6000000FC000000FC0000007800000078000000700000
007000001F207A9E22>I<03FFC1FFC003FFC1FFC0003E00FC00001E007000001E006000000F00
C000000F01C000000F83800000078300000007C600000003CC00000003FC00000001F800000001
F000000000F000000000F800000001F800000003FC000000033C000000063C0000000C1E000000
1C1E000000381F000000300F000000600F800000C007800001C007C000038003C0000FC007E000
FFF01FFE00FFE01FFE00221F7F9E22>88 D<7FF803FF80FFF803FF0007C000F80007C000E00003
C000C00003E001C00001E003800001F003000000F006000000F80E000000F80C00000078180000
007C300000003C700000003E600000001EC00000001F800000000F800000000F000000000F0000
00000F000000000E000000001E000000001E000000001E000000001E000000001E000000001C00
0000003C00000003FFE0000007FFE00000211F7B9E22>I<03FFFFC003FFFFC003F0078007C00F
8007001F0007003E000E007C000C007C000C00F8000C01F0001803E0000003E0000007C000000F
8000001F0000001F0000003E0000007C000000F8030000F0030001F0030003E0060007C0060007
8006000F800E001F001C003E001C003C007C007C01FC00FFFFF800FFFFF8001A1F7D9E1C>I
E /Fm 81 126 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8000000000070F8F8F870051C77
9B18>33 D<4010F078F078F078E038E038E038E038E038E038E038E038E038E0380D0E7B9C18>
I<078F00078F00078F00078F00078F00078F00078F00FFFFE0FFFFE0FFFFE07FFFE00F1E000F1E
000F1E000F1E000F1E000F1E007FFFE0FFFFE0FFFFE0FFFFE01E3C001E3C001E3C001E3C001E3C
001E3C001E3C00131C7E9B18>I<3803807C0780FE0780FE0F80EE0F00EE0F00EE1F00EE1E00EE
1E00FE3E00FE3C007C3C00387C0000780000780000F80000F00001F00001E00001E00003E00003
C00003C00007C0000783800787C00F8FE00F0FE00F0EE01F0EE01E0EE01E0EE03E0FE03C0FE03C
07C01C038013247E9F18>37 D<03C0000FF0000FF0001E78001E78001C38001C38001C78001C7B
F01CF3F01FF3F01FE7800FC7800F87000F0F001F0F003F8E007FDE00FBDE00F1FC00E1FC00E0F8
00E0F870F0FC70F9FEF07FFFF03FCFE01F03C0141C7F9B18>I<387C7E7E3E0E0E1E1E3C7CF8F0
E0070E789B18>I<007000F003F007E00F800F001E003E003C007800780070007000F000F000E0
00E000E000E000E000E000F000F00070007000780078003C003E001E000F000F8007E003F000F0
00700C24799F18>I<E000F000FC007E001F000F00078007C003C001E001E000E000E000F000F0
00700070007000700070007000F000F000E000E001E001E003C007C007800F001F007E00FC00F0
00E0000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007F0
0007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D9718>I<00
F00000F00000F00000F00000F00000F00000F00000F000FFFFE0FFFFE0FFFFE0FFFFE000F00000
F00000F00000F00000F00000F00000F00000F00013147E9718>I<3C7E7F7F7F3F0F0F3EFEF8F0
080C788518>I<FFFF80FFFF80FFFF80FFFF8011047D8F18>I<78FCFCFCFC780606778518>I<00
0380000780000780000F80000F00001F00001E00001E00003E00003C00007C0000780000780000
F80000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F00001F00001E
00003E00003C00003C00007C0000780000F80000F00000F00000E0000011247D9F18>I<01F000
07FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E000E0E000E0E000E0E000E0
E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803801C07001F1F000FFE0007FC00
01F000131C7E9B18>I<0380038007800F800F803F80FF80FB8063800380038003800380038003
800380038003800380038003800380038003800380FFFEFFFEFFFE0F1C7B9B18>I<07F8001FFE
003FFF807C0FC0F803C0F001E0F001E0F000E0F000E00000E00001E00001E00003C00003C00007
80000F80001F00003E0000FC0001F80003E00007C0000F80003F00E07E00E0FFFFE0FFFFE0FFFF
E0131C7E9B18>I<07F8001FFE007FFF807C0FC07803C07801C07801C00001C00003C00007C000
0F8003FF0003FE0003FF80000FC00003C00001E00001E00000E00000E0F000E0F001E0F001E0F0
03C0FC0FC07FFF801FFE0007F800131C7E9B18>I<001F00003F00007F0000770000F70001E700
01C70003C7000787000707000E07001E07003C0700380700780700F00700FFFFF8FFFFF8FFFFF8
00070000070000070000070000070000070000FFF800FFF800FFF8151C7F9B18>I<3FFF803FFF
803FFF803800003800003800003800003800003800003800003800003BFC003FFF003FFF803E07
C03803C00001E00001E00000E06000E0F000E0F001E0F003E0F007C07C0F807FFF001FFE0007F8
00131C7E9B18>I<007E0003FF8007FFC00FC3C01F03C03E03C03C03C0780000780000F00000F3
F800EFFE00FFFF80FE0F80FC03C0F803E0F001E0F000E0F000E0F000E07000E07801E07803E03C
07C03E0F801FFF000FFE0003F800131C7E9B18>I<03F8000FFE001FFF003E0F803803807001C0
7001C07001C07001C03803803C07801FFF0007FC000FFE001F1F003C07807001C0F001E0E000E0
E000E0E000E0E000E07001C07803C03E0F801FFF000FFE0003F800131C7E9B18>56
D<78FCFCFCFC78000000000000000078FCFCFCFC780614779318>58 D<3C7E7E7E7E3C00000000
000000003C7E7E7E7E3E1E1E3CFCF8E0071A789318>I<000380000F80001F80003F8000FE0001
FC0003F8000FE0001FC0003F8000FE0000FC0000FC0000FE00003F80001FC0000FE00003F80001
FC0000FE00003F80001F80000F8000038011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000
000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<E00000F80000FC0000FE00
003F80001FC0000FE00003F80001FC0000FE00003F80001F80001F80003F8000FE0001FC0003F8
000FE0001FC0003F8000FE0000FC0000F80000E0000011187D9918>I<00700000F80000F80000
D80000D80001DC0001DC0001DC00018C00038E00038E00038E00038E0003060007070007070007
07000707000FFF800FFF800FFF800E03800E03801C01C01C01C0FF8FF8FF8FF8FF8FF8151C7F9B
18>65 D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07
C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00701C00701C00F01C00E01C03
E0FFFFC0FFFF80FFFE00141C7F9B18>I<01FCE007FFE00FFFE01F07E03E03E03C01E07801E078
00E07000E0F00000F00000E00000E00000E00000E00000E00000E00000F00000F000007000E078
00E07800E03C01E03E03E01F07C00FFF8007FF0001FC00131C7E9B18>I<FFF800FFFE00FFFF00
1C0F801C03C01C03C01C01E01C00E01C00E01C00F01C00701C00701C00701C00701C00701C0070
1C00701C00701C00F01C00E01C00E01C01E01C01C01C03C01C0F80FFFF00FFFE00FFF800141C7F
9B18>I<FFFFF0FFFFF0FFFFF01C00701C00701C00701C00701C00001C00001C0E001C0E001C0E
001FFE001FFE001FFE001C0E001C0E001C0E001C00001C00001C00381C00381C00381C00381C00
38FFFFF8FFFFF8FFFFF8151C7F9B18>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C
00001C00001C1C001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C1C001C00001C00001C
00001C00001C00001C00001C0000FFC000FFC000FFC000131C7E9B18>I<01F9C007FFC00FFFC0
1F0FC03E07C03C03C07803C07801C07001C0F00000F00000E00000E00000E00000E00000E01FF0
E01FF0F01FF0F001C07003C07803C07803C03C07C03E0FC01F1FC00FFFC007FDC001F9C0141C7E
9B18>I<FF8FF8FF8FF8FF8FF81C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01
C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01
C0FF8FF8FF8FF8FF8FF8151C7F9B18>I<FFFF80FFFF80FFFF8001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C000FFFF80FFFF80FFFF80111C7D9B18>I<FF87F8FF87F8FF87F8
1C03C01C07801C0F801C1F001C1E001C3C001C7C001CF8001CF0001DF0001FF8001FF8001FBC00
1F3C001F1E001E1E001C0F001C0F001C07801C07801C03C01C03C0FF87F8FF87F8FF87F8151C7F
9B18>75 D<FFE000FFE000FFE0000E00000E00000E00000E00000E00000E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00700E
0070FFFFF0FFFFF0FFFFF0141C7F9B18>I<FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E0
3B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E03870E03870E03800E0
3800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<FE0FF8FF0FF8FF0F
F81D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31
C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC0FF87C0FF87C0FF83C0151C
7F9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E0
0380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F0078070070078
0F007FFF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C0070
1C00701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C0000
1C00001C00001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<FFF800FFFE00FFFF
001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFF001C0F
001C07801C07801C03801C03801C03801C03801C039C1C039C1C03FCFF83FCFF81F8FF80F0161C
7F9B18>82 D<07F3801FFF803FFF807C1F80F80780F00780E00380E00380F00000F00000780000
7F00003FF0000FFE0001FF80001FC00003C00001E00001E00000E0E000E0E000E0E001E0F003E0
FC07C0FFFF80FFFF00E7FC00131C7E9B18>I<FFFFF8FFFFF8FFFFF8E07038E07038E07038E070
380070000070000070000070000070000070000070000070000070000070000070000070000070
0000700000700000700000700000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF83FEFF
83FE1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C
00701C00701C00701C00701C00701C00701E00F01E00F00F01E00FC7E007FFC001FF00007C0017
1C809B18>I<FE03F8FE03F8FE03F87000707000707000703800E03800E03800E03800E03800E0
38F8E038F8E039DCE039DCE019DCC019DCC019DCC0198CC01D8DC01D8DC01D8DC01D8DC00D8D80
0D05800F07800F07800E0380151C7F9B18>87 D<FF07F8FF07F8FF07F81C01C01E03C00E03800F
0780070700070700038E00038E0001DC0001DC0001FC0000F80000F80000700000700000700000
700000700000700000700000700000700003FE0003FE0003FE00151C7F9B18>89
D<FFF8FFF8FFF8E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFF8FFF8FFF80D24779F18
>91 D<E00000F00000F00000F800007800007C00003C00003C00003E00001E00001F00000F0000
0F00000F800007800007C00003C00003C00003E00001E00001F00000F00000F800007800007800
007C00003C00003E00001E00001E00001F00000F00000F8000078000078000038011247D9F18>
I<FFF8FFF8FFF80038003800380038003800380038003800380038003800380038003800380038
00380038003800380038003800380038003800380038003800380038FFF8FFF8FFF80D247F9F18
>I<FFFF80FFFF80FFFF80FFFF8011047D7F18>95 D<0E1E3E7C78F0F0E0E0F8FCFC7C38070E78
9E18>I<1FE0007FF8007FFE00783E00780F00000F0000070001FF000FFF003FFF007F0700F807
00F00700E00700E00700F00F00F83F007FFFF03FFFF00FE1F014147D9318>I<FE0000FE0000FE
00000E00000E00000E00000E00000E00000E3E000EFF800FFFE00FE3E00F80F00F00F00F00780E
00780E00380E00380E00380E00380F00780F00780F80F00F81F00FE3E00FFFC00EFF800E7E0015
1C809B18>I<01FE000FFF801FFF803F07807C0780780000F00000F00000E00000E00000E00000
E00000F00000F000007801C07C03C03F07C01FFF800FFF0001FC0012147D9318>I<003F80003F
80003F8000038000038000038000038000038003F3800FFF801FFF803E1F807C0F80780780F007
80F00380E00380E00380E00380E00380F00780F00780780F80781F803E3F803FFFF80FFBF803E3
F8151C7E9B18>I<03F0000FFE001FFF003E1F807C0780780380F003C0F003C0E001C0FFFFC0FF
FFC0FFFFC0F00000F000007801C07C03C03F07C01FFF800FFF0001FC0012147D9318>I<001FC0
007FE000FFE001F1E001E0C001C00001C00001C000FFFFC0FFFFC0FFFFC001C00001C00001C000
01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF007FFF00
7FFF00131C7F9B18>I<03F1F00FFFF81FFFF81E1F383C0F003C0F003807003807003807003C0F
003C0F001E1E001FFE003FFC003FF0003C00003C00001FFF003FFFC07FFFF07801F0F00078F000
78E00038E00038F00078F800F87E03F03FFFE00FFF8003FE00151F7F9318>I<FE0000FE0000FE
00000E00000E00000E00000E00000E00000E3F000EFFC00FFFC00FE1E00F81E00F00E00F00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE7FEFFE7FEFFE7FE17
1C809B18>I<03800007C00007C00007C000038000000000000000000000000000FFC000FFC000
FFC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C000FFFF80FFFF80FFFF80111D7C9C18>I<FE0000FE0000FE00000E00000E00000E00
000E00000E00000E7FF00E7FF00E7FF00E0F800E1F000E3E000E7C000EF8000FF8000FF8000FFC
000FBE000F1E000E0F000E0F800E07C00E03C0FFC7F8FFC7F8FFC7F8151C7F9B18>107
D<FFE000FFE000FFE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000FFFF
E0FFFFE0FFFFE0131C7E9B18>I<FDF1F000FFFBF800FFFFFC001FBFBC001F1F1C001E1E1C001E
1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C00
1C1C1C00FFBFBF80FFBFBF80FFBFBF801914819318>I<FE3F00FEFFC0FFFFC00FE1E00F81E00F
00E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE7FEFF
E7FEFFE7FE1714809318>I<01F0000FFE001FFF003E0F803803807001C07001C0E000E0E000E0
E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF000FFE0001F00013147E9318>
I<FE3E00FEFF80FFFFE00FE3E00F80F00F00F00F00780E00780E00380E00380E00380E00380F00
780F00780F80F00F81F00FE3E00FFFC00EFF800E7E000E00000E00000E00000E00000E00000E00
000E0000FFE000FFE000FFE000151E809318>I<03F3800FFF801FFF803E1F807C0F80780780F0
0780F00780E00380E00380E00380E00380F00780F00780780F807C0F803E1F801FFF800FFF8003
F380000380000380000380000380000380000380000380003FF8003FF8003FF8151E7E9318>I<
FF87F0FF9FF8FFFFF803FC7803F07803E00003E00003C00003C000038000038000038000038000
038000038000038000038000FFFF00FFFF00FFFF0015147F9318>I<0FF7003FFF007FFF00F81F
00F00F00E00700F00700FC00007FF0001FFC0007FF00001F80E00780E00380F00380F80780FC0F
80FFFF00FFFE00E7F80011147D9318>I<038000038000038000038000038000FFFFC0FFFFC0FF
FFC00380000380000380000380000380000380000380000380000380000380400380E00380E003
C1E003E3E001FFC000FF80007E0013197F9818>I<FE0FE0FE0FE0FE0FE00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00E01E00F07E00FFFFE07FFFE
01FCFE1714809318>I<FF8FF8FF8FF8FF8FF81E03C00E03800E03800E03800707000707000707
00038E00038E00038E00038E0001DC0001DC0001DC0000F80000F80000700015147F9318>I<FF
8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C00D
DD800DDD800DDD800D8D800F8F800F8F8007070015147F9318>I<7F9FF07F9FF07F9FF0070700
078E00039E0001DC0001F80000F80000700000F00000F80001DC00039E00038E000707000F0780
FF8FF8FF8FF8FF8FF815147F9318>I<FF8FF8FF8FF8FF8FF80E01C00E03800E03800703800707
00070700038700038600038E0001CE0001CE0000CC0000CC0000DC000078000078000078000070
0000700000700000F00000E00079E0007BC0007F80003F00001E0000151E7F9318>I<7FFFF07F
FFF07FFFF07003E07007C0700F80001F00003E00007C0000F80001F00003E00007C0000F80701F
00703E00707C0070FFFFF0FFFFF0FFFFF014147F9318>I<0007E0003FE0007FE000FC0000F000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00001E0007FE000FFC000
FFC0007FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
00F00000FC00007FE0003FE00007E013247E9F18>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F00424769F18>I<FC0000FF8000FFC00007E00001
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000F00000FFC000
7FE0007FE000FFC000F00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00001E00007E000FFC000FF8000FC000013247E9F18>I E /Fn 13 119
df<1C3C3C3C3C0C1C18383070E0C0C0060E7D840E>44 D<70F8F8F0F005057B840E>46
D<00F9C003FFC0078FC00F0F801E07803C07803C0780780700780700780F00F80F00F00E00F00E
00F01E30F01E70F03C60707C6078FEE03FCFC01F078014147C9317>97 D<07803F803F80070007
000F000F000E000E001E001E001C001CF83FFC3F1E3E0E3C0F780F780F700F700F701FF01FE01E
E01EE03CE03CE07870F071E03FC01F0010207B9F15>I<007E0003FF0007C3800F07801E07803C
07803C0200780000780000780000F80000F00000F00000F00000F000007003007807003C3E003F
FC000FE00011147C9315>I<00FE0003FF0007C7800F03801E01803C03807C0700781F007FFC00
7FF000F80000F00000F00000F000007000007003007807003C3E001FFC000FE00011147C9315>
101 D<003E7000FFF001E3F003C3E00781E00F01E00F01E01E01C01E01C01E03C03E03C03C0380
3C03803C07803C07803C0F001C1F001E3F000FFF0007CE00000E00001E00001E00001C00703C00
787800F8F0007FE0003F8000141D7E9315>103 D<00F000F000F000E000000000000000000000
000000000F001F803BC071C063C06380E380078007000F000F000E001E001C701C603C6038E03D
C01F800F000C1F7D9E0E>105 D<1E1F003F3F8077F1C063E3C063C3C0E783C0C7838007000007
00000F00000F00000E00000E00001E00001E00001C00001C00003C00003C000038000012147D93
13>114 D<01FC03FE07870F0F0E0F0E0F1E000F800FF80FFC03FC007E001E701EF01CF01CF03C
F0787FF01FC010147D9313>I<01C003C003C003800380078007800700FFF0FFF00F000E000E00
1E001E001C001C003C003C00380038007870786070E070C079C03F801F000C1C7C9B0F>I<0F00
701F80F03BC0F071C0E063C0E06381E0E381E00781C00701C00703C00F03C00E03800E03800E07
8C0E079C0E0F180E0F180F3FB807FBF003E1E016147D9318>I<0F01C01F83E03BC3E071C3E063
C1E06380E0E380C00780C00700C00701C00F01800E01800E01800E03000E03000E07000E0E000F
1C0007F80003F00013147D9315>I E /Fo 46 123 df<001E003C007800F001F001E003C007C0
07800F800F001F001F001E003E003E003E007C007C007C007C007C007800F800F800F800F800F8
00F800F800F800F800F800F800F800F800F800F80078007C007C007C007C007C003E003E003E00
1E001F001F000F000F80078007C003C001E001F000F00078003C001E0F3D7CAC17>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<0003FFC000003FFFF80000FFFFFE0001FE07FF8003F001FFC007C000FFE00FF8007F
F00FFC007FF01FFC007FF81FFE007FF81FFE007FF81FFE007FF81FFE007FF81FFE007FF80FFC00
7FF80FFC007FF007F800FFF000C000FFE0000000FFE0000001FFC0000001FF80000003FF000000
07FE0000003FF800000FFFE000000FFFC000000FFFFC00000007FF00000001FFC00000007FE000
00007FF00000003FF80000003FFC0000001FFE0000001FFE0000001FFF0200001FFF1FC0001FFF
3FE0001FFF7FF0001FFFFFF8001FFFFFF8001FFFFFF8001FFFFFF8001FFEFFF8001FFEFFF8003F
FE7FF0003FFC7FE0007FF83FC0007FF83FE000FFF01FFC07FFE007FFFFFF8003FFFFFE00007FFF
F8000007FF800028377CB631>51 D<0003FF800380003FFFF8078000FFFFFE0F8003FFFFFF9F80
F83FFFFFF000F007FFFFC000E0007FFC00002C3B7BBA37>83 D<0001FFF800000FFFFF00003FFF
FFC000FFC03FE001FF003FF007FE007FF00FFC007FF00FF8007FF01FF8007FF03FF0007FF03FF0
003FE07FF0001FC07FE0000F807FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF
E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00000007FE00000007FF0000000
7FF00000003FF00000003FF80000781FF80000780FFC0000F80FFE0001F007FF0003E003FF8007
C000FFF03F80003FFFFF00000FFFFC000001FFE00025267DA52C>99 D<0001FFC000001FFFF800
007FFFFE0001FFC1FF8003FF007FC007FE003FE00FFC001FF01FF8000FF01FF8000FF83FF00007
F87FF00007F87FF00007FC7FE00007FC7FE00003FCFFE00003FCFFE00003FCFFFFFFFFFCFFFFFF
FFFCFFFFFFFFFCFFE0000000FFE0000000FFE0000000FFE0000000FFE00000007FE00000007FE0
0000007FF00000003FF000003C3FF000003C1FF800007C1FF80000FC0FFC0001F807FE0003F003
FF0007E000FFE03FC0003FFFFF80000FFFFC000000FFE00026267DA52D>101
D<01F80007FC000FFF001FFF001FFF801FFF801FFF801FFF801FFF801FFF801FFF000FFF0007FC
0001F80000000000000000000000000000000000000000000000000000000000FF00FFFF00FFFF
00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
0003FF0003FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8153D7DBC1B>105
D<00FE007FE000FFFE03FFF800FFFE0FFFFE00FFFE1F83FF00FFFE3E01FF0007FE7801FF8003FE
F000FF8003FFE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FF
C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF30267CA537
>110 D<0000FFC00000000FFFFC0000003FFFFF000000FFC0FFC00001FE001FE00007FC000FF8
0007F80007F8000FF00003FC001FF00003FE003FF00003FF003FE00001FF007FE00001FF807FE0
0001FF807FE00001FF807FE00001FF80FFE00001FFC0FFE00001FFC0FFE00001FFC0FFE00001FF
C0FFE00001FFC0FFE00001FFC0FFE00001FFC0FFE00001FFC0FFE00001FFC07FE00001FF807FE0
0001FF807FE00001FF803FF00003FF003FF00003FF001FF00003FE000FF80007FC000FF80007FC
0007FC000FF80003FE001FF00000FFC0FFC000003FFFFF0000000FFFFC00000001FFE000002A26
7DA531>I<0007800000078000000780000007800000078000000F8000000F8000000F8000000F
8000001F8000001F8000003F8000003F8000007F800000FF800001FF800007FF80001FFFFFF0FF
FFFFF0FFFFFFF0FFFFFFF001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF80
0001FF800001FF800001FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF
803C00FF807800FFC078007FC0F8007FF1F0003FFFE0000FFFC00001FF001E377EB626>116
D E /Fq 1 98 df<001800001800001800003C00003C00004E00004E00004E0000870000870001
87800103800103800201C00201C003FFC00400E00400E00800700800701800703C0078FE01FF18
177F961C>97 D E /Fr 10 58 df<1F003F8060C04040C060C060C060C060C060C060C060C060
60C060C03F801F000B107F8F0F>48 D<18007800F8009800180018001800180018001800180018
0018001800FF80FF8009107E8F0F>I<3F00FFC0F3E0F0E0F0E000E000E001E001C007800F001C
0038607060FFC0FFC00B107F8F0F>I<1F007F8071C079C071C003C00F800F8001C000E060E0F0
E0F0E0F1C07FC03F000B107F8F0F>I<070007000F001F001B003B0033006300E300FFE0FFE003
00030003001FE01FE00B107F8F0F>I<61807F807F007C00600060006F807FC079E070E000E0E0
E0E0E0E1C0FFC03F000B107F8F0F>I<0F801FC039C071C06000C200FFC0FFC0E0E0C060C060C0
6060E071C03FC01F000B107F8F0F>I<60007FE07FE0C0E0C1C00380070006000E000E000C001C
001C001C001C001C001C000B117E900F>I<1F003F8071C060C070C07DC03F803F807FC0E3E0C0
E0C060C060F1E07FC01F000B107F8F0F>I<1F007F8071C0E0C0C060C060C060E0E07FE07FE008
6000C071C073807F803E000B107F8F0F>I E /Fs 1 59 df<70F8F8F87005057C840D>58
D E /Ft 81 125 df<001FC3F0007FEFF801F0FE7803C0FC780780F87807007000070070000700
700007007000070070000700700007007000FFFFFF80FFFFFF8007007000070070000700700007
007000070070000700700007007000070070000700700007007000070070000700700007007000
0700700007007000070070007FE3FF007FE3FF001D20809F1B>11 D<001F8000FFC001F1E003C1
E00781E00701E0070000070000070000070000070000070000FFFFE0FFFFE00700E00700E00700
E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E07FC3FE7FC3FE1720809F19>I<001FE000FFE001F1E003C1E00781E00700E00700E00700E007
00E00700E00700E00700E0FFFFE0FFFFE00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E00700E00700E00700E07FE7FE7FE7FE1720809F19>I<
001FC1FC00007FE7FE0001F0FF0F0003C0FC0F000780F80F000700F00F00070070000007007000
000700700000070070000007007000000700700000FFFFFFFF00FFFFFFFF000700700700070070
070007007007000700700700070070070007007007000700700700070070070007007007000700
7007000700700700070070070007007007000700700700070070070007007007007FE3FE3FF07F
E3FE3FF02420809F26>I<7038F87CFC7EFC7E7C3E0C060C060C061C0E180C381C7038F0786030
0F0E7E9F17>34 D<000300C0000300C0000300C0000701C0000601800006018000060180000601
80000E0380000C0300000C0300000C0300000C0300001C070000180600FFFFFFFEFFFFFFFE0030
0C0000300C0000300C0000701C0000601800006018000060180000601800FFFFFFFEFFFFFFFE01
C07000018060000180600001806000018060000380E0000300C0000300C0000300C0000300C000
0701C0000601800006018000060180001F297D9F26>I<70F8FCFC7C0C0C0C1C183870F060060E
7C9F0D>39 D<00E001C003C0038007000E000E001C001C003800380030007000700070006000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000600070007000700030003800
38001C001C000E000E000700038003C001C000E00B2E7DA112>I<E0007000780038001C000E00
0E000700070003800380018001C001C001C000C000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000C001C001C001C0018003800380070007000E000E001C00380078007000
E0000B2E7DA112>I<70F8FCFC7C0C0C0C1C183870F060060E7C840D>44
D<FFC0FFC0FFC00A037F8A0F>I<70F8F8F87005057C840D>I<00030003000700060006000E000C
000C001C0018001800380030003000700060006000E000C000C001C00180018001800380030003
000700060006000E000C000C001C0018001800380030003000700060006000E000C000C000102D
7DA117>I<03F0000FFC001E1E001C0E00380700780780700380700380700380F003C0F003C0F0
03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C070038070038070
03807807803807001C0E001E1E000FFC0003F000121F7E9D17>I<018003801F80FF80E3800380
038003800380038003800380038003800380038003800380038003800380038003800380038003
8003800380FFFEFFFE0F1E7C9D17>I<07F0001FFC003C3E00701F00600F80E00780F807C0F807
C0F803C0F803C07007C00007C00007C0000F80000F00001F00003E00003C0000780000F00001E0
000380000700000E00C01C00C03800C0700180FFFF80FFFF80FFFF80121E7E9D17>I<07F0001F
FC003C3F00380F00780F80780F807C0780780F80000F80000F80001F00001E00007E0003F80003
F000003C00001F00000F80000F800007C00007C07007C0F807C0F807C0F807C0F80F80E00F8070
1F003C3E001FFC0007F000121F7E9D17>I<000E00000E00001E00003E00003E00006E0000EE00
00CE00018E00038E00030E00060E000E0E000C0E00180E00380E00300E00600E00E00E00FFFFF0
FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE000FFE0141E7F9D17>I<3807
003FFF003FFE003FFC003FF00030000030000030000030000030000030000031F80037FC003F1E
003C0F003807803807800003C00003C00003C00003C07003C0F003C0F003C0F003C0E007806007
80700F003C3E001FFC0007F000121F7E9D17>I<00FE0003FF0007C7800F07801E07803C07803C
0780780000780000700000F06000F3FC00F7FE00FE0F00FC0780F80780F80380F003C0F003C0F0
03C0F003C0F003C07003C07003C07803C07807803807803C0F001E1E000FFC0003F000121F7E9D
17>I<6000007FFFC07FFFC07FFFC0600380C00300C00700C00E00000C00001C00003800003000
00700000E00000E00000C00001C00001C00003C000038000038000038000038000078000078000
078000078000078000078000078000078000121F7D9D17>I<03F0000FFC001E1E003C0F003807
807003807003807003807803807C07807E07003F8E001FFC000FF80007F8000FFE001EFF003C3F
80781F807007C0F003C0E003C0E001C0E001C0E001C0F003C07003807807003E1F001FFC0007F0
00121F7E9D17>I<03F0000FFC001E1E003C0F00780700780780F00780F00380F00380F003C0F0
03C0F003C0F003C0F003C07007C07807C0780FC03C1FC01FFBC00FF3C00183C000038000078000
0780780700780F00781E00783C007878003FF0000FC000121F7E9D17>I<70F8F8F87000000000
00000000000070F8F8F87005147C930D>I<70F8F8F8700000000000000000000070F8F8F87818
181838303070E040051D7C930D>I<FFFFFFF0FFFFFFF000000000000000000000000000000000
00000000000000000000000000000000FFFFFFF0FFFFFFF01C0C7D9023>61
D<0003800000038000000380000007C0000007C0000007C000000DE000000DE000000DE0000018
F0000018F0000018F00000307800003078000030780000603C0000603C0000603C0000E01E0000
C01E0000FFFE0001FFFF0001800F0001800F0003800F800300078003000780070007C0070003C0
0F8003C0FFE03FFEFFE03FFE1F207F9F22>65 D<FFFFE000FFFFF80007803E0007801F0007800F
0007800F8007800F8007800F8007800F8007800F8007800F0007801F0007803E0007807C0007FF
F80007FFFC0007801E0007800F0007800F8007800780078007C0078007C0078007C0078007C007
8007C00780078007800F8007801F0007803E00FFFFFC00FFFFF0001A1F7E9E20>I<001FC0C000
FFF0C001F83DC007E00FC00F8007C00F0007C01F0003C03E0001C03C0001C07C0001C07C0000C0
7C0000C0F80000C0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
007C0000C07C0000C07C0000C03C0001C03E0001801F0001800F0003800F80070007E00E0001F8
3C0000FFF800001FE0001A217D9F21>I<FFFFE000FFFFFC0007803E0007800F00078007800780
03C0078003E0078001E0078001F0078000F0078000F0078000F8078000F8078000F8078000F807
8000F8078000F8078000F8078000F8078000F8078000F0078000F0078001F0078001E0078001E0
078003C00780078007800F0007803E00FFFFFC00FFFFE0001D1F7E9E23>I<FFFFFF00FFFFFF00
07801F000780070007800300078003000780038007800180078001800780C1800780C1800780C0
000780C0000781C00007FFC00007FFC0000781C0000780C0000780C0000780C0600780C0600780
0060078000C0078000C0078000C0078001C0078001C0078003C007800F80FFFFFF80FFFFFF801B
1F7E9E1F>I<FFFFFF00FFFFFF0007801F00078007000780030007800300078003800780018007
8001800780C1800780C1800780C0000780C0000781C00007FFC00007FFC0000781C0000780C000
0780C0000780C0000780C000078000000780000007800000078000000780000007800000078000
0007800000FFFE0000FFFE0000191F7E9E1E>I<001FE060007FF86001F83CE003E00FE007C007
E00F8003E01F0001E03E0000E03E0000E07C0000E07C0000607C000060F8000060F8000000F800
0000F8000000F8000000F8000000F8000000F8007FFCF8007FFC7C0001E07C0001E07C0001E03E
0001E03E0001E01F0001E00F8001E007C003E003E007E001FC1FE0007FFC60001FF0001E217D9F
24>I<FFF8FFF8FFF8FFF807800F0007800F0007800F0007800F0007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007FFFF0007FFFF0007800F0007800F0007800F
0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000780
0F00FFF8FFF8FFF8FFF81D1F7E9E22>I<FFFCFFFC078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780FFFCFF
FC0E1F7F9E10>I<0FFFC00FFFC0003C00003C00003C00003C00003C00003C00003C00003C0000
3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0070
3C00F83C00F83C00F83C00F87C00E0780078F0003FE0000FC00012207E9E17>I<FFFC1FFCFFFC
1FFC078007E00780078007800F0007801E0007801C0007803800078070000780E0000781C00007
83800007878000078F8000079FC00007BBC00007FBE00007F1F00007E1F00007C0F80007807800
07807C0007803E0007803E0007801F0007800F0007800F80078007C007800FE0FFFC3FFCFFFC3F
FC1E1F7E9E23>I<FFFE00FFFE0007800007800007800007800007800007800007800007800007
800007800007800007800007800007800007800007800007800007800607800607800607800607
800E07800E07800C07801C07803C0780FCFFFFFCFFFFFC171F7E9E1C>I<FF80001FF8FFC0003F
F807C0003F0007C0003F0006E0006F0006E0006F0006E0006F00067000CF00067000CF00067000
CF000638018F000638018F000638018F00061C030F00061C030F00061C030F00060E060F00060E
060F00060E060F0006070C0F0006070C0F0006070C0F000603980F000603980F000603980F0006
01F00F000601F00F000601F00F000F00E00F00FFF0E1FFF8FFF0E1FFF8251F7E9E2A>I<FF807F
F8FFC07FF807C0078007E0030007F0030006F0030006F8030006780300067C0300063C0300063E
0300061F0300060F0300060F8300060783000607C3000603C3000603E3000601E3000601F30006
00FB0006007B0006007F0006003F0006003F0006001F0006001F0006000F000F000700FFF00700
FFF003001D1F7E9E22>I<001F800000FFF00001E0780007C03E000F801F000F000F001E000780
3C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F80001F0F80001F0F80001
F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03E0007C01E00
07800F000F000F801F0007C03E0001F0F80000FFF000001F80001C217D9F23>I<FFFFE000FFFF
F80007807C0007801E0007801F0007800F0007800F8007800F8007800F8007800F8007800F8007
800F0007801F0007801E0007807C0007FFF80007FFE00007800000078000000780000007800000
0780000007800000078000000780000007800000078000000780000007800000FFFC0000FFFC00
00191F7E9E1F>I<001F800000FFF00001E0780007C03E000F801F000F000F001E0007803E0007
C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F800
01F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03E0F07C01E1F87800F
38CF000FB05F0007F07E0001F8780000FFF010001FB010000030100000383000003C7000003FF0
00001FE000001FE000001FC000000F801C297D9F23>I<FFFF8000FFFFF0000780F80007803C00
07803E0007801E0007801F0007801F0007801F0007801F0007801E0007803E0007803C000780F8
0007FFF00007FFC0000781E0000780F0000780F000078078000780780007807800078078000780
7C0007807C0007807C0007807C0C07807E0C07803E1CFFFC3F1CFFFC1FF8000007F01E207E9E21
>I<07E1801FF9803C3F80780F80700780E00380E00380E00180E00180E00180F00000F800007C
00007F80003FF8003FFE000FFF0003FF00003F80000F800003C00003C00001C0C001C0C001C0C0
01C0E001C0E00380F00380F80780FE0F00CFFE00C3F80012217D9F19>I<7FFFFFE07FFFFFE078
0F01E0700F00E0600F0060600F0060E00F0070C00F0030C00F0030C00F0030C00F0030000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F000007FFFE0007FFFE001C1F
7E9E21>I<FFFC7FF8FFFC7FF80780078007800300078003000780030007800300078003000780
030007800300078003000780030007800300078003000780030007800300078003000780030007
80030007800300078003000780030007800300078003000780070003C0060003C00E0001E00C00
00F01C0000F87800003FF000000FC0001D207E9E22>I<FFF007FEFFF007FE0F8001F00F0000E0
078000C0078000C007C001C003C0018003C0018003E0038001E0030001E0030000F0060000F006
0000F0060000780C0000780C0000780C00003C1800003C1800003C1800001E3000001E3000001F
7000000F6000000F6000000FE0000007C0000007C0000003800000038000000380001F207F9E22
>I<FFF07FF83FF0FFF07FF83FF01F000F800F800F00078003000F000780030007800FC0060007
800FC0060007800FC00600078019E00E0003C019E00C0003C019E00C0003C039E00C0001E030F0
180001E030F0180001E030F0180000F06078300000F06078300000F06078300000F0E07C300000
78C03C60000078C03C60000078C03C6000003D801EC000003D801EC000003D801EC000003F000F
C000001F000F8000001F000F8000001F000F8000000E00070000000E00070000000E000700002C
207F9E2F>I<7FF83FF87FF83FF807E00F8003C00F0001E00E0001F00C0000F018000078380000
7C3000003C7000003E6000001EC000000FC000000F8000000780000007C0000007E000000DE000
001DF0000018F8000038780000307C0000603C0000E01E0000C01F0001800F0003800780078007
C00FC007E0FFE01FFEFFE01FFE1F1F7F9E22>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>91
D<180C3C1E381C70386030E070C060C060C060F87CFC7EFC7E7C3E381C0F0E7B9F17>I<FEFE06
060606060606060606060606060606060606060606060606060606060606060606060606060606
06FEFE072D7FA10D>I<3FE0007FF800787C00781E00781E00000E00000E00000E0007FE001FFE
003F0E007C0E00F80E00F00E30F00E30F01E30F81E307C7F703FFFE01FC78014147E9317>97
D<0E0000FE0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3F
000EFFC00FC3E00F81E00F00F00E00F00E00780E00780E00780E00780E00780E00780E00780E00
780E00F00F00F00F81E00FC3C00CFF800C7F0015207F9F19>I<03FC0FFE1E1E3C1E781E7800F0
00F000F000F000F000F000F000F80078007C033E071F0E0FFC03F010147E9314>I<000380003F
80003F8000038000038000038000038000038000038000038000038000038007F3800FFF801E1F
803C0780780780780380F00380F00380F00380F00380F00380F00380F00380F003807803807807
803C0F803E1F801FFBF807E3F815207E9F19>I<03F0000FFC001E1E003C0F00780700780780F0
0780F00380FFFF80FFFF80F00000F00000F00000F800007800007C01803E03801F87000FFE0003
F80011147F9314>I<007E00FF01EF038F078F0700070007000700070007000700FFF0FFF00700
0700070007000700070007000700070007000700070007000700070007007FF07FF01020809F0E
>I<0001E007F7F00FFF703E3E703C1E00780F00780F00780F00780F00780F00780F003C1E003E
3E003FF80037F0003000003000003800003FFE001FFFC03FFFE07803E0F000F0E00070E00070E0
0070F000F07801E03E07C01FFF8003FC00141F7F9417>I<0E0000FE0000FE00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E7F000EFF800FC7C00F83C00F01C00F01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC
FFE7FC16207F9F19>I<1E003E003E003E001E000000000000000000000000000E007E007E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC0FFC00A1F809E0C>
I<00E001F001F001F000E0000000000000000000000000007007F007F000F00070007000700070
0070007000700070007000700070007000700070007000700070007000700070F0F0F0E0F1E0FF
C03F000C28829E0E>I<0E0000FE0000FE00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E1FF00E1FF00E0F800E0F000E1E000E3C000E78000EF0000FF0000FF8000FBC
000F3C000E1E000E0F000E0F000E07800E07800E03C0FFCFF8FFCFF815207F9F18>I<0E00FE00
FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E00FFE0FFE00B20809F0C>I<0E3F03F000FEFFCFFC00FF
C3DC3C000F81F81E000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E00
0E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E
00FFE7FE7FE0FFE7FE7FE023147F9326>I<0E7F00FEFF80FFC7C00F83C00F01C00F01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FCFFE7FC
16147F9319>I<01F80007FE001E07803C03C03801C07000E07000E0F000F0F000F0F000F0F000
F0F000F0F000F07000E07801E03801C03C03C01E078007FE0001F80014147F9317>I<0E3F00FE
FFC0FFC3E00F81E00F01F00E00F00E00F80E00780E00780E00780E00780E00780E00780E00F80E
00F00F01F00F81E00FC7C00EFF800E7F000E00000E00000E00000E00000E00000E00000E0000FF
E000FFE000151D7F9319>I<07F1800FF9801F1F803C0F807C0780780380F80380F00380F00380
F00380F00380F00380F00380F803807807807C07803C0F803E1F801FFB8007E380000380000380
000380000380000380000380000380003FF8003FF8151D7E9318>I<0E7CFFFEFFDE0F9E0F1E0F
000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00F147F9312>I<1FB07F
F078F0E070E030E030F000FC007FC03FE00FF000F8C078C038E038E038F078F8F0FFE0CFC00D14
7E9312>I<06000600060006000E000E001E003E00FFF8FFF80E000E000E000E000E000E000E00
0E000E000E000E180E180E180E180E180F3007F003E00D1C7F9B12>I<0E01C0FE1FC0FE1FC00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00E
07C00F0FC007FDFC03F9FC16147F9319>I<FF87F8FF87F81E03E00E01C00E01800E0180070300
070300070300038600038600038E0001CC0001CC0001FC0000F80000F800007000007000007000
15147F9318>I<FF9FF3FCFF9FF3FC1C07C0F01C0780E01C07C0E00E0FC0C00E0CC0C00E0CE0C0
070CE18007186180071871800398730003B0330003B0330003B03F0001F03E0001E01E0001E01E
0000E01C0000C00C001E147F9321>I<7FC7FC7FC7FC0F03E007038003830001C70000EE0000EC
00007800003800003C00007C0000EE0001C7000187000303800701C01F01E0FF87FEFF87FE1714
809318>I<FF87F8FF87F81E03E00E01C00E01800E018007030007030007030003860003860003
8E0001CC0001CC0001FC0000F80000F80000700000700000700000600000600000600000C000F0
C000F18000F380007F00003C0000151D7F9318>I<3FFF3FFF381F301E703C6078607860F001E0
03C003C007830F031E031E073C067806F81EFFFEFFFE10147F9314>I<FFFFFCFFFFFC1602808C
17>I<FFFFFFFFFFF0FFFFFFFFFFF02C02808C2D>I E /Fu 28 121 df<000FF07F00007FFFFF80
01FC3FEFC003F07F8FC007E07F8FC007C07F0FC007C07F078007C03F000007C01F000007C01F00
0007C01F000007C01F0000FFFFFFF800FFFFFFF80007C01F000007C01F000007C01F000007C01F
000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007C0
1F000007C01F000007C01F000007C01F000007C01F00003FF8FFF0003FF8FFF0002220809F1F>
11 D<7CFEFEFFFFFF7F030707060E1C3C787008107C860F>44 D<FFF0FFF0FFF0FFF00C047F8B
11>I<00700000F0000FF000FFF000F3F00003F00003F00003F00003F00003F00003F00003F000
03F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000
03F00003F000FFFF80FFFF80111D7C9C1A>49 D<03FC000FFF801F1FC01F0FE03F87E03F87E03F
87E03F8FE03F8FE01F0FC0001F80003F0001FE0001FE00001F800007E00007F00003F03C03F87E
03F8FF03F8FF03F8FF03F8FF03F8FF07F07E07E03E0FE01FFF8003FE00151D7E9C1A>51
D<0000E000000000E000000001F000000001F000000001F000000003F800000003F800000007FC
00000007FC0000000FFE0000000CFE0000000CFE000000187F000000187F000000307F80000030
3F800000703FC00000601FC00000601FC00000C01FE00000C00FE00001FFFFF00001FFFFF00001
8007F000030003F800030003F800060003FC00060001FC000E0001FE00FFE01FFFE0FFE01FFFE0
231F7E9E28>65 D<000FFC06007FFF8E01FE03DE03F800FE0FE0007E1FC0003E1F80001E3F8000
0E7F00000E7F00000E7F000006FE000006FE000000FE000000FE000000FE000000FE000000FE00
0000FE000000FE0000007F0000067F0000067F0000063F80000E1F80000C1FC0001C0FE0003803
F800F001FF03E0007FFF80000FFC001F1F7D9E26>67 D<000FFC0600007FFF8E0001FE03DE0003
F800FE000FE0007E001FC0003E001F80001E003F80000E007F00000E007F00000E007F00000600
FE00000600FE00000000FE00000000FE00000000FE00000000FE00000000FE007FFFE0FE007FFF
E0FE0000FE007F0000FE007F0000FE007F0000FE003F8000FE001F8000FE001FC000FE000FE000
FE0003F801FE0001FF07FE00007FFF3E00000FFC0600231F7D9E29>71 D<FFFFFE00FFFFFF8007
F00FE007F003F007F001F807F001F807F001FC07F001FC07F001FC07F001FC07F001FC07F001F8
07F001F807F003F007F00FE007FFFF8007FFFE0007F0000007F0000007F0000007F0000007F000
0007F0000007F0000007F0000007F0000007F0000007F0000007F00000FFFF8000FFFF80001E1F
7E9E24>80 D<001FF80000FFFF0001F81F8007E007E00FC003F01F8001F81F8001F83F0000FC7F
0000FE7F0000FE7E00007EFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F
FE00007FFE00007F7E00007E7E00007E7F0000FE3F0000FC3F87C1FC1F8FF1F80FDC3BF007F83F
E001FC1F8000FFFF00001FFE0300000F0300000F8700000FFF00000FFF000007FE000007FE0000
03FC000003FC000001F020287D9E27>I<07FC001FFF803F0FC03F07C03F03E03F03E01E03E000
03E001FFE00FFFE03FC3E07E03E0FC03E0F803E0F803E0F803E0FC07E07E1FE03FFDFE0FF0FE17
147F9319>97 D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00
001F00001F1FC01FFFF01FE1F81F807C1F007E1F003E1F003F1F003F1F003F1F003F1F003F1F00
3F1F003F1F003F1F003E1F007E1F80FC1FE1F81CFFF0183FC018207E9F1D>I<03FE000FFF801F
8FC03F0FC07E0FC07C0FC0FC0780FC0000FC0000FC0000FC0000FC0000FC0000FC00007E00007E
00603F00E01FC3C00FFF8003FE0013147E9317>I<0007F80007F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F803FCF80FFFF81F87F83F01F87E00F87C00F8FC00F8
FC00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87E01F83E03F81F87F80FFEFF03F8FF
18207E9F1D>I<01FF0007FFC01F87E03F01F07E00F07E00F8FC00F8FC00F8FFFFF8FFFFF8FC00
00FC0000FC00007C00007E00003E00183F00381FC0F007FFE001FF8015147F9318>I<03FE7C0F
FFFE1F8FDE1F07DE3E03E03E03E03E03E03E03E03E03E01F07C01F8FC01FFF801FFE001800001C
00001E00001FFFC01FFFF00FFFF83FFFFC7C00FEF8003EF0001EF0001EF0001EF8003E7C007C3F
01F81FFFF003FF80171E7F931A>103 D<1E003F007F007F007F003F001E000000000000000000
00000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
00FFE0FFE00B217EA00E>105 D<007C00FE00FE00FE00FE00FE007C0000000000000000000000
0001FE01FE003E003E003E003E003E003E003E003E003E003E003E003E003E003E003E003E003E
003E003E003E783EFC3EFC7EFC7CFCF87FF01FC00F2A83A010>I<FF0000FF00001F00001F0000
1F00001F00001F00001F00001F00001F00001F00001F00001F01FE1F01FE1F00F01F01E01F0380
1F07001F1E001F3C001F7C001FFE001FFF001F9F001E0F801E07C01E07E01E03F01E01F01E00F8
FFC3FFFFC3FF18207E9F1C>I<FE1FE07F80FE7FF9FFE01EF0FBC3E01FC0FF03F01F807E01F01F
807E01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F0
1F007C01F01F007C01F01F007C01F01F007C01F01F007C01F0FFE3FF8FFEFFE3FF8FFE27147D93
2C>109 D<FE1FC0FE7FF01EF1F01FC0F81F80F81F80F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE3FFFFE3FF18147D931D>I<01FF0007FFC0
1F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C
3E00F83E00F81F83F007FFC001FF0017147F931A>I<FF1FC0FFFFF01FE1F81F80FC1F007E1F00
7E1F003F1F003F1F003F1F003F1F003F1F003F1F003F1F007F1F007E1F007E1F80FC1FE3F81FFF
F01F3FC01F00001F00001F00001F00001F00001F00001F0000FFE000FFE000181D7E931D>I<FE
3F00FEFF801EEFC01FCFC01F8FC01F8FC01F07801F00001F00001F00001F00001F00001F00001F
00001F00001F00001F00001F0000FFF000FFF00012147E9316>114 D<0FF63FFE781EE00EE006
F006F800FFC07FF87FFC1FFE03FF003FC00FE007E007F00FFC1EFFFCCFF010147E9315>I<0180
0180018003800380038007800F803F80FFFCFFFC0F800F800F800F800F800F800F800F800F800F
800F860F860F860F860F860FCC07FC01F80F1D7F9C14>I<FF07F8FF07F81F00F81F00F81F00F8
1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F01F81F03F81F87F8
0FFEFF03FCFF18147D931D>I<FFE1FF00FFE1FF000F80700007C0E00007E0C00003E1800001F3
800000FF0000007E0000003E0000003F0000007F8000006F800000C7C0000183E0000381F00007
01F8000E00FC00FF81FF80FF81FF8019147F931C>120 D E /Fv 17 121
df<07E0001FF8003FFC007FFE00FFFE00FFFF00FFFF00FFFF80FFFF80FFFF80FFFF80FFFF807F
FF803FFF801FFF8007E780000780000F80000F80000F00000F00001F00001F00003E00003E0000
7C00007C0000F80001F80003F00007E0000FE0001FC0001F80001F00000E00001124788F21>44
D<000000007FFE00001E0000000FFFFFE0003E000000FFFFFFF8007E000003FFFFFFFE00FE0000
>67 D<000000007FFE00001E000000000FFFFFE0003E00000000FFFFFFF8007E00000003FFFFFF
00000000FFFFFFFC003E000000000FFFFFF0000E00000000007FFF000000004F4979C75D>71
D<0007FFFE000000007FFFFFE0000001FFFFFFF8000003FFFFFFFE000007FF001FFF80000FFF80
07FFC0000FFF8003FFE0000FFF8001FFF0000FFF8000FFF8000FFF80007FF8000FFF80007FFC00
0FFF80007FFC0007FF00003FFC0003FE00003FFC0001FC00003FFC00000000003FFC0000000000
3FFC00000000003FFC00000000003FFC00000007FFFFFC000000FFFFFFFC00000FFFFFFFFC0000
3FFFF03FFC0001FFFE003FFC0003FFF0003FFC000FFFC0003FFC001FFF80003FFC003FFE00003F
FC007FFE00003FFC007FFC00003FFC00FFF800003FFC00FFF800003FFC00FFF000003FFC00FFF0
00003FFC00FFF000003FFC00FFF000007FFC00FFF800007FFC00FFF80000FFFC007FFC0001FFFC
007FFE0003EFFC003FFF000FCFFF001FFFC07F8FFFFC0FFFFFFF07FFFC03FFFFFC03FFFC007FFF
F001FFFC0007FF80007FFC362E7DAD3A>97 D<00001FFFC0000001FFFFFC000007FFFFFF00001F
FFFFFF80007FFC01FFC000FFF003FFE003FFC003FFE007FF8003FFE00FFF8003FFE00FFF0003FF
E01FFE0003FFE01FFE0003FFE03FFC0001FFC03FFC0000FF807FFC00007F007FFC000000007FF8
00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000
00FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000007FFC
000000007FFC000000007FFC000000003FFC000000003FFE000000F81FFE000000F81FFF000001
F80FFF000003F80FFF800003F007FFC00007E003FFE0000FE000FFF8003FC0007FFE01FF80001F
FFFFFE000007FFFFF8000001FFFFE00000001FFF00002D2E7CAD35>99 D<00000000007FC00000
FFE3FFFF800003FFFF83FFFF8000003FF803FFFF8039487CC742>I<00001FFE00000001FFFFE0
000007FFFFF800001FFFFFFE00007FFC07FF0000FFE001FF8001FFC000FFC003FF80003FE007FF
00003FF00FFE00001FF01FFE00000FF81FFC00000FF83FFC00000FFC3FFC000007FC7FFC000007
FC7FF8000007FC7FF8000007FE7FF8000007FEFFF8000007FEFFF8000007FEFFFFFFFFFFFEFFFF
FFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFF800000000FFF800000000FFF800000000FFF8000000
007FF8000000007FF8000000007FFC000000003FFC000000003FFC000000003FFC0000003E1FFE
0000003E0FFE0000007E0FFF0000007E07FF800000FC03FFC00001F801FFE00007F800FFF0001F
F0003FFE00FFE0001FFFFFFF800007FFFFFE000000FFFFF80000000FFF80002F2E7DAD36>I<00
FC0003FF0007FF800FFFC00FFFC01FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFFC00FFFC007
FF8003FF0000FC0000000000000000000000000000000000000000000000000000000000000000
0000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001FFC001FFC001FFC001FFC001
FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001
FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001
FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18497CC820>105
D<007FC001FFC00000FFE00000FFFFC00FFFF80007FFFC0000FFFFC03FFFFE001FFFFF0000FFFF
FFFFE03FFFFFF05C2E7CAD63>109 D<007FC001FFC00000FFFFC00FFFF80000FFFFC03FFFFE00
E0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE03B2E7CAD42>
I<00000FFF0000000000FFFFF000000007FFFFFE0000001FFFFFFF8000003FFC03FFC00000FFE0
007FF00001FF80001FF80003FF00000FFC0007FE000007FE000FFE000007FF000FFC000003FF00
1FFC000003FF803FFC000003FFC03FF8000001FFC03FF8000001FFC07FF8000001FFE07FF80000
01FFE07FF8000001FFE0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FF
F8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001
FFF07FF8000001FFE07FF8000001FFE07FF8000001FFE07FF8000001FFE03FFC000003FFC03FFC
000003FFC01FFC000003FF801FFE000007FF800FFE000007FF0007FF00000FFE0003FF80001FFC
0001FFC0003FF80000FFE0007FF000007FFC03FFE000001FFFFFFF80000007FFFFFE00000000FF
FFF0000000000FFF000000342E7DAD3B>I<007FC01FFE000000FFFFC0FFFFE00000FFFFC3FFFF
39427CAD42>I<00FF803FC000FFFF81FFF000FFFF83FFFC00FFFF87FFFE00FFFF8FE7FF00FFFF
9F8FFF8003FFBF0FFF8001FFBE0FFF8001FFFC0FFF8001FFF80FFF8001FFF80FFF8001FFF00FFF
8001FFF007FF0001FFF003FE0001FFE001FC0001FFE000000001FFE000000001FFE000000001FF
C000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FF
C000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
0001FFC000000001FFC000000001FFC0000000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFF
FFE00000FFFFFFE00000292E7CAD31>114 D<000FFF81E000FFFFF7E003FFFFFFE00FFFFFFFE0
1FFC01FFE03FE0003FE03FC0000FE07F80000FE07F000007E0FF000003E0FF000003E0FF800003
E0FF800003E0FFC0000000FFF0000000FFFF000000FFFFF80000FFFFFFC0007FFFFFF8007FFFFF
FE003FFFFFFF001FFFFFFFC00FFFFFFFE003FFFFFFF000FFFFFFF0003FFFFFF80007FFFFF80000
1FFFFC000000FFFC0000003FFCF800001FFCF800000FFCFC000007FCFC000003FCFC000003FCFE
000003FCFF000003F8FF000007F8FF800007F8FFE0000FF0FFF0001FE0FFFE00FFC0FFFFFFFF80
FEFFFFFE00FC3FFFF800F003FFC000262E7CAD2F>I<0001F000000001F000000001F000000001
0024427EC12E>I<007FE000003FF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE0007FFFF0
E0000FFFFFF07FFFE00003FFFFC07FFFE000003FFE007FFFE03B2E7CAD42>I<7FFFFF801FFFFF
FFC0FFFFF8003FFFFFC03A2E7EAD3F>120 D E /Fw 46 122 df<0000C018000000C018000000
C018000001C0380000018030000001803000000180300000038070000003006000000300600000
03006000000700E000000600C000000600C000000600C000000E01C000000C018000FFFFFFFFC0
FFFFFFFFC000180300000018030000001803000000380700000030060000003006000000300600
000030060000FFFFFFFFC0FFFFFFFFC000600C000000E01C000000C018000000C018000000C018
000001C03800000180300000018030000001803000000380700000030060000003006000000300
6000000700E000000600C000000600C00000222D7DA229>35 D<70F8FCFC7C0C0C0C1C18183870
E0E0060F7C840E>44 D<FFE0FFE0FFE00B037F8B10>I<70F8F8F87005057C840E>I<01F00007FC
000E0E001C07003803803803807803C07001C07001C07001C0F001E0F001E0F001E0F001E0F001
E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001C07001C07803
C03803803803801C07000E0E0007FC0001F00013227EA018>48 D<018003800F80FF80F3800380
038003800380038003800380038003800380038003800380038003800380038003800380038003
8003800380038003800380FFFEFFFE0F217CA018>I<03F8000FFE001E1F00380F807007C07807
C07C07C07807C07807C00007C00007C0000780000F80001F00003E0003FC0003F800001E00000F
000007800007C00003E00003E07003E0F803E0F803E0F803E0F803E0E007C07007C0780F803E1F
000FFE0003F80013227EA018>51 D<000E00000E00001E00001E00003E00003E00006E0000EE00
00CE0001CE00018E00030E00070E00060E000E0E000C0E00180E00180E00300E00700E00600E00
E00E00FFFFF8FFFFF8000E00000E00000E00000E00000E00000E00000E0001FFF001FFF015217F
A018>I<1801801E07801FFF801FFF001FFC001FF0001800001800001800001800001800001800
0019F8001FFE001F0F001E07801C03C01803C00001C00001E00001E00001E00001E07001E0F001
E0F001E0F001E0E003C0E003C0700780380F803E1F000FFC0007F00013227EA018>I<007E0001
FF8003C3C00703C00E03C01E03C03C03C0380000780000780000780000702000F3FC00F7FF00FE
0F80FC0780F803C0F803C0F801E0F001E0F001E0F001E0F001E0F001E07001E07001E07801E078
01C03803C03C03801E07800F1F0007FE0003F80013227EA018>I<03F8000FFE001F1F003C0780
3803807003C07001C07001C07001C07801C07C03C03E07803F87001FDE000FFC0007F80007FE00
0FFF001E3F803C1FC07807C07003E0F001E0E001E0E000E0E000E0E000E0F000E07001C07803C0
3C07801E0F000FFE0003F80013227EA018>56 D<03F8000FFC001F1E003C070038078078038070
03C0F003C0F001C0F001C0F001E0F001E0F001E0F001E0F001E0F003E07803E07803E03C07E03E
0FE01FFDE007F9E00081E00001C00003C00003C0000380780780780700780F00781E00787C003F
F8000FE00013227EA018>I<000180000003C0000003C0000003C0000007E0000007E0000007E0
00000FF000000CF000000CF000001CF800001878000018780000383C0000303C0000303C000060
1E0000601E0000601E0000C00F0000C00F0000C00F0001FFFF8001FFFF8001800780030003C003
0003C0030003C0060001E0060001E0060001E00E0000F01F0001F0FFC00FFFFFC00FFF20237EA2
25>65 D<000FF030007FFC3000FC1E7003F0077007C003F00F8001F01F0001F01F0000F03E0000
F03C0000707C0000707C0000707C000030F8000030F8000030F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F80000307C0000307C0000307C0000303E0000703E0000601F
0000E01F0000C00F8001C007C0038003F0070000FC1E00007FFC00000FF0001C247DA223>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(11,)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(3)42 b(Groups,)17
b(Con)o(texts,)f(and)i(Comm)o(unicators)809 b(1)143 702 y Ft(3.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(3.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(3.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(3.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(3.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(3.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(3.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(3.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(3.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(3.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(3.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(3.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(3.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(3.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(3.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(3.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(3.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(3.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(12)248 1718 y(3.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(3.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(3.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(3.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(3.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(3.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(3.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(21)248 2113 y(3.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(21)248 2169
y(3.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(3.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(23)248
2282 y(3.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(23)248 2339 y(3.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(3.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(24)248 2452 y(3.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(3.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(3.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(3.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(28)-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(11,)
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(3)75 573 y Fv(Groups,)40 b(Con)m(texts,)g(and)75
697 y(Comm)m(unicators)75 943 y Fo(3.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(3.)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)h(start)f(b)o(y)h(discussing)i
(in)o(tra-comm)o(unication)e(in)h(full)h(detail;)f(then)g(w)o(e)e(discuss)j
(in)o(ter-com-)75 561 y(m)o(unication,)14 b(whic)o(h)f(builds)i(on)e(the)g
(data)f(structures)g(and)h(requiremen)o(ts)h(of)e(the)h(in)o(tra-comm)o
(unicat-)75 617 y(ion)j(sections.)22 b(W)l(e)16 b(follo)o(w)g(with)g
(discussion)h(of)e(formalizations)i(of)e(the)h(lo)q(osely)g(sync)o(hronous)g
(mo)q(del)75 674 y(of)f(computing)h(\(vis)f(a)g(vis)g(message)g(passing\))g
(and)h(o\013er)e(examples.)75 860 y Fo(3.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(3.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(3.4.)34 b(COMMUNICA)l(TORS)1246 b Ft(3)75
45 y Fi(3.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(3.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(3.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(3.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fi(3.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(3.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(3.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(3.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(3.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(3.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(3.)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(3.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(3.)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(3.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(3.6)59 b(Op)r(erations)19 b(on)h(Contexts)75 2019
y Fi(3.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(3.6.)34 b(OPERA)l(TIONS)17 b(ON)f(CONTEXTS)1008
b Ft(9)75 45 y Fi(3.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(3.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(3.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fo(3.7)59 b(Op)r(erations)19
b(on)h(Communicato)n(rs)75 151 y Fi(3.7.1)49 b(Lo)q(cal)18
b(Comm)o(unicato)o(r)13 b(Op)q(erations)75 240 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
346 y Fh(MPI)p 160 346 14 2 v 16 w(COMM)p 318 346 V 16 w(SIZE\(comm)m(,)d
(size\))117 425 y Fj(IN)171 b Fh(comm)450 b Fj(handle)14 b(to)g(comm)o
(unicator)d(ob)r(ject.)117 503 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 560 y Ff(comm)m Fj(.)75 733 y Fh(MPI)p 160 733 V 16
w(COMM)p 318 733 V 16 w(RANK\(comm)m(,)12 b(rank\))117 812
y Fj(IN)171 b Fh(comm)450 b Fj(handle)14 b(to)g(comm)o(unicator)d(ob)r(ject.)
117 890 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 947 y Ff(comm)m
Fj(,)g(or)39 b Ff(MPI)p 1195 947 13 2 v 14 w(UNDEFINED)18 b
Fj(if)g(the)i(pro)q(cess)h(is)e(not)g(a)905 1003 y(mem)o(b)q(er.)75
1202 y Fi(3.7.2)49 b(Lo)q(cal)18 b(Constructo)o(rs)75 1338
y Fh(MPI)p 160 1338 14 2 v 16 w(COMM)p 318 1338 V 16 w(GROUP\(comm)n(,)12
b(group\))117 1417 y Fj(IN)171 b Fh(comm)450 b Fj(comm)o(unicator)11
b(ob)r(ject)k(handle)117 1496 y(OUT)124 b Fh(group)463 b Fj(group)14
b(ob)r(ject)h(handle)75 1622 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 1727 y Fh(MPI)p 160 1727 V 16 w(COMM)p 318 1727 V 16
w(CONTEXT\(comm)n(,)12 b(context\))117 1806 y Fj(IN)171 b Fh(comm)450
b Fj(comm)o(unicator)11 b(ob)r(ject)k(handle)117 1885 y(OUT)124
b Fh(context)432 b Fj(con)o(text)75 2011 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 2116 y Fh(MPI)p 160 2116 V 16 w(COMM)p 318 2116 V 16
w(BIND\(group,)15 b(context,)h(comm)p 882 2116 V 10 w(new\))117
2195 y Fj(IN)171 b Fh(group)463 b Fj(ob)r(ject)15 b(handle)f(to)f(b)q(e)i(b)q
(ound)f(to)g(new)g(comm)o(unicator)117 2273 y(IN)171 b Fh(context)432
b Fj(con)o(text)15 b(to)f(b)q(e)g(b)q(ound)g(to)g(new)g(comm)o(unicator)117
2352 y(OUT)124 b Fh(comm)p 454 2352 V 10 w(new)366 b Fj(the)15
b(new)f(comm)o(unicator.)166 2478 y Ft(The)j(ab)q(o)o(v)o(e)f(function)i
(creates)e(a)h(new)g(comm)o(unicator)f(ob)s(ject,)h(whic)o(h)g(is)h(asso)q
(ciated)f(with)g(the)75 2534 y(group)h(de\014ned)i(b)o(y)f(group,)f(and)h
(the)g(sp)q(eci\014ed)i(con)o(text.)29 b(The)19 b(op)q(eration)g(do)q(es)f
(not)h(require)g(com-)75 2591 y(m)o(unication.)24 b(It)17 b(is)g(correct)f
(to)f(b)q(egin)j(using)f(a)f(comm)o(unicator)g(as)g(so)q(on)h(as)f(it)g(is)h
(de\014ned.)25 b(It)16 b(is)h(not)75 2647 y(erroneous)d(to)g(in)o(v)o(ok)o(e)
g(this)h(function)g(t)o(wice)g(in)g(the)f(same)g(pro)q(cess)h(with)f(the)h
(same)f(con)o(text.)19 b(Finally)l(,)75 2704 y(there)c(is)h(no)f(explicit)i
(sync)o(hronization)g(o)o(v)o(er)d(the)h(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: 11 14
bop 75 -100 a Fl(3.7.)34 b(OPERA)l(TIONS)17 b(ON)f(COMMUNICA)l(TORS)819
b Ft(11)75 45 y Fh(MPI)p 160 45 14 2 v 16 w(COMM)p 318 45 V
16 w(UNBIND\(comm)m(\))117 124 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
250 y Ft(This)23 b(routine)g(disasso)q(ciates)g(the)f(group)g
Fh(MPI)p 928 250 V 16 w(COMM)p 1086 250 V 16 w(GROUP\(comm)o(\))d
Ft(asso)q(ciated)j(with)h Fh(comm)75 307 y Ft(from)10 b(the)i(con)o(text)e
Fh(MPI)p 495 307 V 16 w(COMM)p 653 307 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 363 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 363 V 16 w(COMM)p 1659 363 V 16 w(BIND)14 b
Ft(call,)75 420 y(remain)19 b(a)o(v)m(ailable)h(for)e(further)g(use.)30
b(If)38 b Fh(MPI)p 908 420 V 15 w(COMM)p 1065 420 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
476 y Fh(MPI)p 160 476 V 16 w(COMM)p 318 476 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 532 y(is)g(freed)f(b)o(y)30
b Fh(MPI)p 396 532 V 16 w(COMM)p 554 532 V 17 w(UNBIND)p Ft(.)75
638 y Fh(MPI)p 160 638 V 16 w(COMM)p 318 638 V 16 w(DUP\(comm)m(,)12
b(new)p 662 638 V 17 w(context,)k(new)p 921 638 V 17 w(comm)m(\))117
717 y Fj(IN)171 b Fh(comm)450 b Fj(comm)o(unicator)11 b(ob)r(ject)k(handle)
117 795 y(IN)171 b Fh(new)p 411 795 V 17 w(context)341 b Fj(new)15
b(con)o(text)f(to)g(use)h(with)e(new)p 1428 795 13 2 v 16 w(comm)117
874 y(OUT)124 b Fh(new)p 411 874 14 2 v 17 w(comm)359 b Fj(comm)o(unicator)11
b(ob)r(ject)k(handle)75 1000 y Fh(MPI)p 160 1000 V 16 w(COMM)p
318 1000 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 1056 y(the)h(con)o(text.)75
1188 y Fi(3.7.3)49 b(Collective)17 b(Comm)o(unicato)o(r)c(Constructo)o(rs)75
1324 y Fh(MPI)p 160 1324 V 16 w(COMM)p 318 1324 V 16 w(MAKE\(sync)p
562 1324 V 17 w(comm)m(,)f(comm)p 840 1324 V 11 w(group,)i(comm)p
1107 1324 V 11 w(new\))117 1403 y Fj(IN)171 b Fh(sync)p 418
1403 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 1403 13 2 v 15 w(COMM)p 1891 1403
V 14 w(GROUP\(com)o(m)m(\))p Fj(\))905 1460 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 1460
V 9 w(new)905 1516 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 1572 y(c)o(hronizing)k(op)q(eration.)
117 1651 y(IN)171 b Fh(comm)p 454 1651 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 1707 y(same)18 b(as)37 b Ff(sync)p 1164 1707 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 1764 y(thereof;)117 1842 y(OUT)124 b Fh(comm)p 454 1842
14 2 v 10 w(new)366 b Fj(the)15 b(new)f(comm)o(unicator.)90
1969 y Fh(MPI)p 175 1969 V 16 w(COMM)p 333 1969 V 16 w(MAKE)h
Ft(is)h(equiv)m(alen)o(t)h(to:)166 2027 y Fh(MPI)p 251 2027
V 16 w(CONTEXTS)p 505 2027 V 17 w(ALLOC\(sync)p 763 2027 V
18 w(comm)m(,)e(context,)20 b(1,)f(len\))f(MPI)p 1326 2027
V 16 w(COMM)p 1484 2027 V 16 w(BIND\(comm)p 1744 2027 V 10
w(group,)75 2083 y(context,)e(comm)p 364 2083 V 11 w(new\))75
2141 y Ft(plus,)25 b(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
2198 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
2254 y(b)o(y)33 b Fh(MPI)p 241 2254 V 16 w(COMM)p 399 2254
V 16 w(UNBIND)p Ft(\).)17 b(It)g(is)g(erroneous)f(if)34 b Fh(comm)p
1116 2254 V 11 w(group)16 b Ft(is)h(not)g(a)f(subset)h(of)33
b Fh(sync)p 1715 2254 V 17 w(comm)m Ft('s)75 2311 y(underlying)17
b(group.)166 2452 y Fk(Discussion:)34 b Ff(MPI)p 511 2452 13
2 v 14 w(COMM)p 655 2452 V 15 w(MAKE)13 b Fj(and)27 b Ff(MPI)p
970 2452 V 15 w(CONTEXTS)p 1204 2452 V 14 w(ALLOC)14 b Fj(b)q(oth)f(require)i
(b)q(o)q(otstrap)f(via)f(a)75 2508 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 2564 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 2621 y(more)c(con)o(texts.)-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(3.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fo(3.8)59 b(Intro)r(duction)18
b(to)i(Inter-Communicat)o(ion)75 148 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 205 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 261 y(serv)o(ers.)k(It)16 b(also)h(describ)q
(es)h(a)e(name)g(service)h(whic)o(h)h(simpli\014es)g(writing)f(programs)e
(con)o(taining)j(in)o(t-)75 317 y(er-comm)o(unication.)166
457 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
514 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)75 570 y(b)q(e)i(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 627 y(c)o(hapter.)75 836 y Fi(3.8.1)49
b(De\014nitions)17 b(of)f(Inter-Comm)n(unication)f(and)h(Inter-Comm)n
(unicato)o(rs)75 923 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 979 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 1036 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
1092 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
1149 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
1205 y(used)h(is)f(called)i(an)e(\\in)o(tra-comm)o(unicator.")166
1262 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 1319
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 1375
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
1432 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
1488 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 1545 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 1601 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
1658 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 1714 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
1771 y(\\in)o(ter-comm)o(unicator.")166 1828 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 1884 y(cesses)16 b(in)h(di\013eren)o
(t)f(groups.)21 b(The)16 b(group)f(con)o(taining)h(a)g(pro)q(cess)g(that)f
(initiates)i(an)e(in)o(ter-comm)o(un-)75 1941 y(ication)i(op)q(eration)f(is)g
(called)h(the)f(\\lo)q(cal)h(group,")e(that)g(is,)h(the)g(sender)h(in)f(a)g
(send)g(and)g(the)g(receiv)o(er)75 1997 y(in)g(a)e(receiv)o(e.)21
b(The)15 b(group)g(con)o(taining)g(the)g(target)f(pro)q(cess)h(is)g(called)i
(the)e(\\remote)f(group,")g(that)g(is,)75 2054 y(the)j(receiv)o(er)i(in)f(a)f
(send)h(and)f(the)h(sender)g(in)g(a)f(receiv)o(e.)27 b(As)17
b(in)i(in)o(tra-comm)o(unication,)f(the)f(target)75 2110 y(pro)q(cess)12
b(is)g(sp)q(eci\014ed)i(using)e(a)f Fh(\(comm)m(unicato)o(r,)e(rank\))j
Ft(pair.)19 b(Unlik)o(e)13 b(in)o(tra-comm)o(unication,)g(the)e(rank)75
2167 y(is)16 b(relativ)o(e)f(to)g(the)g(remote)g(group.)166
2224 y(One)k(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 2280 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
2337 y(serv)o(ers,)d(and)i(elsewhere.)75 2463 y Fi(3.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 2550 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 2647 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 2704 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.)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(3.8.)34 b(INTR)o(ODUCTION)16 b(TO)g(INTER-COMMUNICA)l(TION)
600 b Ft(13)143 45 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
154 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
210 y(comm)o(unications)i(that)g(use)h(a)e(di\013eren)o(t)i(comm)o(unicator.)
143 318 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 427 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 535 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
592 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.)166 700 y(The)k(routine)g
Fh(MPI)p 508 700 14 2 v 16 w(COMM)p 666 700 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 757 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 813 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 870 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 926 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 982 y(relev)m(an)o(t)h Fh(MPI)p 332 982 V 16
w(COMM)p 490 982 V 16 w(*)f Ft(functions:)p 222 1060 1506 2
v 221 1116 2 57 v 664 1100 a Fh(MPI)p 749 1100 14 2 v 16 w(COMM)p
907 1100 V 31 w Ft(F)l(unction)h(Beha)o(vior)p 1727 1116 2
57 v 221 1173 V 655 1156 a(\(in)g(In)o(ter-Comm)o(unication)f(Mo)q(de\))p
1727 1173 V 222 1175 1506 2 v 222 1185 V 221 1241 2 57 v 247
1224 a Fh(MPI)p 332 1224 14 2 v 16 w(COMM)p 490 1224 V 17 w(SIZE\(\))p
777 1241 2 57 v 170 w Ft(returns)g(the)g(size)h(of)f(the)g(remote)g(group.)p
1727 1241 V 221 1297 V 247 1281 a Fh(MPI)p 332 1281 14 2 v
16 w(COMM)p 490 1281 V 17 w(GROUP\(\))p 777 1297 2 57 v 111
w Ft(returns)g(the)g(remote)g(group.)p 1727 1297 V 221 1354
V 247 1337 a Fh(MPI)p 332 1337 14 2 v 16 w(COMM)p 490 1337
V 17 w(RANK\(\))p 777 1354 2 57 v 140 w Ft(returns)g Ff(MPI)p
1037 1337 13 2 v 14 w(UNDEFINED)p 1727 1354 2 57 v 221 1410
V 247 1393 a Fh(MPI)p 332 1393 14 2 v 16 w(COMM)p 490 1393
V 17 w(CONTEXT\(\))p 777 1410 2 57 v 50 w Ft(erroneous)p 1727
1410 V 221 1467 V 247 1450 a Fh(MPI)p 332 1450 14 2 v 16 w(COMM)p
490 1450 V 17 w(UNBIND\(\))p 777 1467 2 57 v 92 w Ft(erroneous)p
1727 1467 V 221 1523 V 247 1506 a Fh(MPI)p 332 1506 14 2 v
16 w(COMM)p 490 1506 V 17 w(DUP\(\))p 777 1523 2 57 v 170 w
Ft(erroneous)p 1727 1523 V 222 1525 1506 2 v 75 1648 a Fh
(Construction/Destruction)j(of)d(Inter-Comm)m(unicato)o(rs)75
1741 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
1797 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 1853 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 1910 y(groups)e(b)o(y)h(calling)h Fh(MPI)p
503 1910 14 2 v 16 w(COMM)p 661 1910 V 17 w(PEER)p 790 1910
V 17 w(MAKE\(\))p Ft(.)k(The)12 b(explicit)i(sync)o(hronization)f(can)e
(cause)h(dead-)75 1966 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 2023 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 2079 y(the)d(t)o(w)o(o)f(routines)i Fh(MPI)p 484
2079 V 15 w(COMM)p 641 2079 V 17 w(PEER)p 770 2079 V 17 w(MAKE)p
916 2079 V 16 w(ST)l(ART\(\))f Ft(and)h Fh(MPI)p 1286 2079
V 16 w(COMM)p 1444 2079 V 16 w(PEER)p 1572 2079 V 17 w(MAKE)p
1718 2079 V 16 w(FINISH\(\))p Ft(.)166 2222 y Fk(Discussion:)67
b Ff(MPI)p 544 2222 13 2 v 14 w(COMM)p 688 2222 V 15 w(PEER)p
807 2222 V 14 w(MAKE)p 939 2222 V 14 w(ST)m(ART\(\))16 b Fj(and)33
b Ff(MPI)p 1307 2222 V 14 w(COMM)p 1451 2222 V 15 w(PEER)p
1570 2222 V 14 w(MAKE)p 1702 2222 V 14 w(FINISH\(\))75 2279
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 2335 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 2391 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 2531 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 2587
y(allo)o(wing)e(amortization)f(of)g(the)g(sync)o(hronization)h(o)o(v)o
(erhead.)166 2647 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 2704 y(ob)s(jects,)g(b)o(y)h(calling)i Fh(MPI)p
535 2704 14 2 v 16 w(COMM)p 693 2704 V 16 w(FREE\(\))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: 14 17
bop 75 -100 a Ft(14)409 b Fl(SECTION)16 b(3.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fh(Supp)q(o)o(rt)i(fo)o(r)d
(User-Level)h(Servers)75 197 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 253 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 310 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 366 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 456 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 513 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 569 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
569 14 2 v 15 w(COMM)p 1769 569 V 17 w(ALL)p Ft(.)75 626 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 682 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 739 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)75
795 y(assign)h(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
852 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 942 y(MPI)22 b(pro)o(vides)h(a)f(routine,)i
Fh(MPI)p 772 942 V 15 w(COMM)p 929 942 V 17 w(SPLITL\(\))p
Ft(,)e(that)f(splits)i(a)f(paren)o(t)g(group,)h(creates)75
998 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
1055 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
1111 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 1168
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
1224 y(as)e(input)h(to)f Fh(MPI)p 393 1224 V 15 w(COMM)p 550
1224 V 17 w(PEER)p 679 1224 V 17 w(MAKE\(\))p Ft(,)f(for)g(example.)75
1538 y Fh(Name)f(Service)75 1690 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 1746 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 1803 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 1859 y(pro)o(vided)h(b)o(y)f(routine)g
Fh(MPI)p 554 1859 V 16 w(COMM)p 712 1859 V 17 w(NAME)p 858
1859 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 1916 y(b)o(y)j(routines)h Fh(MPI)p
396 1916 V 16 w(COMM)p 554 1916 V 17 w(NAME)p 700 1916 V 16
w(MAKE)p 845 1916 V 17 w(ST)l(ART\(\))f Ft(and)h Fh(MPI)p 1224
1916 V 16 w(COMM)p 1382 1916 V 16 w(NAME)p 1527 1916 V 17 w(MAKE)p
1673 1916 V 16 w(FINISH\(\))p Ft(.)75 2231 y Fi(3.8.3)49 b(Inter-Comm)n
(unication)14 b(Routines)75 2383 y Fh(Synchronous)j(Inter-Comm)m(unicato)o(r)
c(Constructo)o(rs)75 2534 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 2591 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 2647 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 2704 y(nication)j(using)g(an)o(y)f(of)g(the)g
(others.)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(3.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(PEER)p 446 45 V 17 w(MAKE\(my)p 670 45 V 13 w(comm)m(,)15
b(p)q(eer)p 909 45 V 17 w(comm)m(,)g(p)q(eer)p 1152 45 V 17
w(rank,)i(tag,)h(num)p 1459 45 V 14 w(comm)n(s,)d(new)p 1711
45 V 17 w(comm)m(s\))117 202 y Fj(IN)171 b Fh(my)p 396 202
V 13 w(comm)377 b Fj(lo)q(cal)13 b(in)o(tra-comm)o(unicator)117
324 y(IN)171 b Fh(p)q(eer)p 417 324 V 17 w(comm)353 b Fj(\\paren)o(t")14
b(in)o(tra-comm)o(uni)o(cator)117 445 y(IN)171 b Fh(p)q(eer)p
417 445 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 445 13 2 v 17 w(comm)117 567 y Fj(IN)171
b Fh(tag)510 b Fj(\\safe")14 b(tag)117 689 y(IN)171 b Fh(num)p
422 689 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 810 y(OUT)124 b
Fh(new)p 411 810 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 958 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 958 V 17 w(comm)m(s)p Ft(.)75 1015 y(In)o(tra-comm)o(unicator)h
Fh(my)p 552 1015 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
1015 V 17 w(comm)75 1071 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 1128 y(and)f(remote)e(groups.)19
b(In)o(teger)12 b Fh(p)q(eer)p 707 1128 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 1128 V
17 w(comm)m Ft(.)j(In)o(teger)75 1184 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 1184 V 14 w(comm)n(s)75
1240 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 1297 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
1353 y(pro)o(videsin)o(ter-comm)o(unication)i(with)e(the)h(remote)e(group.)75
1480 y Fh(MPI)p 160 1480 V 16 w(COMM)p 318 1480 V 16 w(NAME)p
463 1480 V 17 w(MAKE\(my)p 686 1480 V 13 w(comm)m(,)e(name,)g(num)p
1057 1480 V 15 w(comm)m(s,)g(new)p 1306 1480 V 17 w(comm)m(s\))117
1581 y Fj(IN)171 b Fh(my)p 396 1581 V 13 w(comm)377 b Fj(lo)q(cal)13
b(in)o(tra-comm)o(unicator)117 1703 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 1824 y(IN)171 b Fh(num)p 422 1824 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 1946 y(OUT)124 b Fh(new)p 411 1946 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
2094 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 2094 V 15 w(COMM)p 1198 2094 V 17 w(PEER)p 1327
2094 V 17 w(MAKE)g Ft(in)g(whic)o(h)h(the)f(caller)75 2150
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
2207 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
2263 y(b)q(oth)15 b(groups)g(ha)o(v)o(e)g(completed)h Fh(MPI)p
736 2263 V 16 w(COMM)p 894 2263 V 16 w(NAME)p 1039 2263 V 17
w(MAKE\(\))p Ft(.)75 2516 y Fh(Lo)q(osely)f(Synchronous)i(Inter-Comm)m
(unicato)o(r)c(Constructo)o(rs)75 2647 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 2704 y(construction)j(routines)h(describ)q(ed)h(ab)q
(o)o(v)o(e.)-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(3.)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(PEER)p 446 45 V 17 w(MAKE)p
592 45 V 16 w(ST)l(ART\(my)p 828 45 V 15 w(comm)m(,)7 b(p)q(eer)p
1061 45 V 17 w(comm)n(,)g(p)q(eer)p 1297 45 V 17 w(rank,)k(tag,)g(num)p
1591 45 V 14 w(comm)n(s,)d(mak)o(e)p 1864 45 V 13 w(id\))117
181 y Fj(IN)171 b Fh(my)p 396 181 V 13 w(comm)377 b Fj(lo)q(cal)13
b(in)o(tra-comm)o(unicator)117 259 y(IN)171 b Fh(p)q(eer)p
417 259 V 17 w(comm)353 b Fj(\\paren)o(t")14 b(in)o(tra-comm)o(uni)o(cator)
117 338 y(IN)171 b Fh(p)q(eer)p 417 338 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
338 13 2 v 17 w(comm)117 417 y Fj(IN)171 b Fh(tag)510 b Fj(\\safe")14
b(tag)117 496 y(IN)171 b Fh(num)p 422 496 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 575 y(OUT)124 b Fh(mak)o(e)p 438 575 V 13 w(id)422
b Fj(handle)14 b(for)27 b Ff(MPI)p 1193 575 13 2 v 15 w(COMM)p
1338 575 V 14 w(PEER)p 1456 575 V 14 w(MAKE)p 1588 575 V 15
w(FINISH\(\))166 701 y Ft(This)d(starts)e(o\013)g(a)p 533 701
14 2 v 39 w Fh(PEER)p 662 701 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 758 y(\\)p Fh(mak)o(e)p
203 758 V 13 w(id)p Ft(.")42 b(It)23 b(is)g(collectiv)o(e)i(in)e
Fh(my)p 763 758 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 814 y Fh(MPI)p 160
814 V 16 w(COMM)p 318 814 V 16 w(MAKE)p 463 814 V 16 w(ST)l(ART\(\))p
Ft(.)34 b(The)20 b(\\)p Fh(m)o(ak)o(e)p 926 814 V 14 w(id)p
Ft(")f(handle)i(is)f(conceptually)i(similar)e(to)f(the)h(com-)75
870 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
870 V 13 w(id)g Ft(handle)h(is)g(con-)75 927 y(structed)f(b)o(y)f(a)g(\\)p
380 927 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 927 V 16 w Fh(FINISH)p Ft(")f(routine.)22
b(These)75 983 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 1040 y(same)f Fh(p)q(eer)p 273 1040 V 17 w(comm)m
Ft(,)c Fh(p)q(eer)p 513 1040 V 17 w(rank)k Ft(and)g Fh(tag)p
Ft(,)g(without)g(calling)h Fh(MPI)p 1204 1040 V 16 w(COMM)p
1362 1040 V 16 w(MAKE)p 1507 1040 V 17 w(FINISH\(\))d Ft(to)i(\014nish)75
1096 y(the)f(\014rst)g(call.)75 1202 y Fh(MPI)p 160 1202 V
16 w(COMM)p 318 1202 V 16 w(PEER)p 446 1202 V 17 w(MAKE)p 592
1202 V 16 w(FINISH\(mak)o(e)p 869 1202 V 13 w(id,)g(new)p 1018
1202 V 18 w(comm)m(s\))117 1281 y Fj(IN)171 b Fh(mak)o(e)p
438 1281 V 13 w(id)422 b Fj(handle)14 b(from)26 b Ff(MPI)p
1228 1281 13 2 v 14 w(COMM)p 1372 1281 V 15 w(PEER)p 1491 1281
V 14 w(MAKE)p 1623 1281 V 14 w(ST)m(ART\(\))117 1360 y Fj(OUT)124
b Fh(new)p 411 1360 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 1486 y Ft(This)f(completes)g(a)p
512 1486 V 29 w Fh(PEER)p 641 1486 V 17 w(MAKE)f Ft(op)q(eration,)h
(returning)g(an)f(arra)o(y)f(of)h Fh(num)p 1520 1486 V 15 w(comm)m(s)e
Ft(new)j(in)o(ter-)75 1542 y(comm)o(unicators)k(in)h Fh(new)p
524 1542 V 17 w(comm)m(s)p Ft(.)23 b(\(Note)17 b(that)f Fh(num)p
1027 1542 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 1599 y(call)i(to)d Fh(MPI)p 303 1599 V 16 w(COMM)p
461 1599 V 17 w(PEER)p 590 1599 V 17 w(MAKE)p 736 1599 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 1599 V 14 w(comm)11 b Ft(of)75 1655 y(the)h(corresp)q
(onding)h(call)g(to)e Fh(MPI)p 656 1655 V 16 w(COMM)p 814 1655
V 16 w(PEER)p 942 1655 V 17 w(MAKE)p 1088 1655 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
1712 y(to)16 b(call)i Fh(MPI)p 302 1712 V 16 w(COMM)p 460 1712
V 16 w(PEER)p 588 1712 V 17 w(MAKE)p 734 1712 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
1768 y Fh(MPI)p 160 1768 V 16 w(COMM)p 318 1768 V 16 w(PEER)p
446 1768 V 17 w(MAKE)p 592 1768 V 16 w(FINISH\(\))p Ft(.)75
1874 y Fh(MPI)p 160 1874 V 16 w(COMM)p 318 1874 V 16 w(NAME)p
463 1874 V 17 w(MAKE)p 609 1874 V 16 w(ST)l(ART\(my)p 845 1874
V 14 w(comm)m(,)c(name,)h(num)p 1217 1874 V 14 w(comm)m(s,)f(mak)o(e)p
1493 1874 V 14 w(id\))117 1953 y Fj(IN)171 b Fh(my)p 396 1953
V 13 w(comm)377 b Fj(lo)q(cal)13 b(in)o(tra-comm)o(unicator)117
2032 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 2111 y(IN)171 b Fh(num)p
422 2111 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 2189 y(OUT)124 b
Fh(mak)o(e)p 438 2189 V 13 w(id)422 b Fj(handle)14 b(for)g(MPI)p
1186 2189 13 2 v 15 w(COMM)p 1339 2189 V 15 w(NAME)p 1482 2189
V 16 w(MAKE)p 1627 2189 V 15 w(FINISH\(\))75 2363 y Fh(MPI)p
160 2363 14 2 v 16 w(COMM)p 318 2363 V 16 w(NAME)p 463 2363
V 17 w(MAKE)p 609 2363 V 16 w(FINISH\(mak)o(e)p 885 2363 V
13 w(id,)h(new)p 1035 2363 V 17 w(comm)m(s\))117 2442 y Fj(IN)171
b Fh(mak)o(e)p 438 2442 V 13 w(id)422 b Fj(handle)14 b(from)e(MPI)p
1220 2442 13 2 v 15 w(COMM)p 1373 2442 V 16 w(NAME)p 1517 2442
V 15 w(MAKE)p 1661 2442 V 16 w(ST)m(AR)m(T\(\))117 2521 y(OUT)124
b Fh(new)p 411 2521 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 2647 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 2647 V 16 w(COMM)p 1283 2647 V 17 w(NAME)p 1429 2647 V
16 w(MAKE\(\))p Ft(.)41 b(They)22 b(ha)o(v)o(e)75 2704 y(sync)o(hronization)
16 b(prop)q(erties)g(analogous)f(to)f(the)i(corresp)q(onding)p
1254 2704 V 32 w Fh(PEER)p 1382 2704 V 32 w Ft(routines.)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(3.8.)34 b(INTR)o(ODUCTION)16 b(TO)g(INTER-COMMUNICA)l(TION)
600 b Ft(17)75 45 y Fh(Comm)m(unicato)o(r)12 b(Status)75 141
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
197 y(comm)o(unicator)15 b(or)g(an)g(in)o(tra-comm)o(unicator.)75
306 y Fh(MPI)p 160 306 14 2 v 16 w(COMM)p 318 306 V 16 w(ST)l(A)l(T\(comm)n
(,)d(status\))117 388 y Fj(IN)171 b Fh(comm)450 b Fj(comm)o(unicator)117
473 y(OUT)124 b Fh(status)460 b Fj(in)o(teger)15 b(status)166
603 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 603 13 2 v 15 w(INTRA)p Ft(,)75 659 y Ff(MPI)p
152 659 V 14 w(INTER)p Ft(,)c Ff(MPI)p 404 659 V 14 w(INV)m(ALID)p
Ft(.)166 804 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 1035 y Fh(Supp)q(o)o(rt)i(fo)o(r)d
(User-Level)h(Servers)75 1131 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 1187 y(user-lev)o(el)17 b(serv)o(ers.)75
1296 y Fh(MPI)p 160 1296 14 2 v 16 w(COMM)p 318 1296 V 16 w(SPLITL\(com)o(m)m
(,)12 b(k)o(ey)l(,)j(nk)o(eys,)h(leaders,)f(sub)p 1079 1296
V 18 w(comm)m(\))117 1378 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 1463
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 1549 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
1634 y(OUT)124 b Fh(leaders)442 b Fj(ranks)14 b(of)g(sub-group)g(leaders)g
(in)g(comm)117 1719 y(OUT)124 b Fh(sub)p 400 1719 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 1776 y(cess)166 1905 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 1962 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
2018 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
2074 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 2131 y(returns)f(a)g(new)h(in)o(tra-comm)o(unicator,)f
Fh(sub)p 862 2131 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 2187 y(calling)e(pro)q(cess)e(b)q(elongs.)75
2338 y Fi(3.8.4)49 b(Implem)o(e)o(ntation)14 b(Notes)75 2434
y Fh(Securit)o(y)i(and)g(P)o(erfo)o(rm)n(ance)d(Issues)75 2529
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
2586 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
2647 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
2704 y(mance)g(of)g(in)o(tra-comm)o(unication.)-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(3.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fh(\\Under)h(the)g(Ho)q(o)q(d")
75 161 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
217 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 274 y(in)o(ter-comm)o(unicators)e(basically)i(the)e(same)g(ob)s(ject.)166
346 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
402 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
459 y(pro)q(cess)e(in)h(the)g(group.)166 530 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 587 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 643 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 700
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
756 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 813 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
869 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 926 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 998 y(It)h(is)g(easy)g(to)f(see)i(that)e(in)i(terms)e
(of)g(these)i(\014elds,)g(the)f(in)o(tra-comm)o(unicator)f(is)i(a)e(sp)q
(ecial)j(case)75 1054 y(of)f(the)g(in)o(ter-comm)o(unicator.)26
b(It)17 b(has)h Fg(G)g Ft(=)f Fg(H)h Ft(and)f(b)q(oth)h(con)o(texts)e(the)h
(same.)26 b(This)18 b(ensures)g(that)75 1110 y(the)d(p)q(oin)o(t-to-p)q(oin)o
(t)h(comm)o(unication)g(implemen)o(tation)g(for)f(in)o(tra-comm)o(unication)g
(and)h(in)o(ter-com-)75 1167 y(m)o(unication)g(can)f(b)q(e)h(iden)o(tical.)75
1398 y Fo(3.9)59 b(Cacheing)75 1530 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 1586 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 1643 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 1699 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
1683 y Fb(1)1163 1699 y Ft(.)19 b(This)13 b(facilit)o(y)h(is)e(in)o(tended)i
(to)e(supp)q(ort)75 1755 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 1812 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 1868 y(b)o(y)f(sp)q(eci\014c)i(MPI)e(routines.)166 1940
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 1997
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 2151 y Fk(Discussion:)g
Fj(A)o(ttribute)g(propagation)e(m)o(ust)g(b)q(e)h(discussed)i(carefully)m(.)
75 2444 y Fi(3.9.1)49 b(F)o(unctionalit)o(y)75 2560 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.)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(3.9.)34 b(CA)o(CHEING)1399 b Ft(19)75 45 y
Fh(MPI)p 160 45 14 2 v 16 w(A)l(TTRIBUTE)p 425 45 V 17 w(ALLOC\(n,handle)p
760 45 V 18 w(a)o(rra)o(y)l(,len\))117 132 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
225 y(OUT)124 b Fh(handle)p 459 225 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 319 y(OUT)124 b Fh(len)517 b Fj(length)14 b(of)f(eac)o(h)i
(opaque)f(structure)75 453 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 509 y(access)d(attribute)g(tec)o(hnology)l(.)75
622 y Fh(MPI)p 160 622 V 16 w(A)l(TTRIBUTE)p 425 622 V 17 w(FREE\(handle)p
691 622 V 18 w(a)o(rra)o(y)l(,n\))117 708 y Fj(IN)171 b Fh(handle)p
459 708 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 765 y(tures)117
859 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 992 y Ft(F)l(rees)h(attribute)g(handle.)75 1105 y
Fh(MPI)p 160 1105 V 16 w(GET)p 264 1105 V 17 w(A)l(TTRIBUTE)p
530 1105 V 17 w(KEY\(k)o(eyval\))117 1192 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 1325 y Ft(Generates)h(a)g(new)g(cac)o(he)h(k)o(ey)l(.)75
1438 y Fh(MPI)p 160 1438 V 16 w(SET)p 259 1438 V 17 w(A)l(TTRIBUTE\(handle,)c
(k)o(eyval,)f(attribute)p 993 1438 V 18 w(val,)f(attribute)p
1251 1438 V 18 w(len,)h(attribute)p 1510 1438 V 19 w(destructo)o(r)p
1718 1438 V 17 w(routine\))117 1581 y Fj(IN)171 b Fh(handle)449
b Fj(opaque)14 b(attribute)g(handle)117 1675 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
1769 y(IN)171 b Fh(attribute)p 500 1769 V 18 w(val)336 b Fj(attribute)15
b(v)n(alue)e(\(opaque)h(p)q(oin)o(ter\))117 1862 y(IN)171 b
Fh(attribute)p 500 1862 V 18 w(len)336 b Fj(length)14 b(of)f(attribute)i
(\(in)e(b)o(ytes\))117 1956 y(IN)171 b Fh(attribute)p 500 1956
V 18 w(destructo)o(r)p 707 1956 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
2090 y Ft(Stores)h(attribute)g(in)h(cac)o(he)f(b)o(y)g(k)o(ey)l(.)75
2202 y Fh(MPI)p 160 2202 V 16 w(TEST)p 290 2202 V 16 w(A)l
(TTRIBUTE\(handle,k)o(eyval,attribute)p 1000 2202 V 20 w(ptr,len\))117
2289 y Fj(IN)171 b Fh(handle)449 b Fj(opaque)14 b(attribute)g(handle)117
2383 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 2476 y(OUT)124 b Fh(attribute)p
500 2476 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 2570 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
2704 y Ft(Retriev)o(e)j(attribute)f(from)g(cac)o(he)g(b)o(y)g(k)o(ey)l(.)-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)414 b Fl(SECTION)16 b(3.)30 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(DELETE)p 346 45 V 16 w(A)l(TTRIBUTE\(handle,)i(k)o(eyval\))117
124 y Fj(IN)171 b Fh(handle)449 b Fj(opaque)14 b(attribute)g(handle)117
204 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 330 y Ft(Delete)i(attribute)f(from)f(cac)o(he)i
(b)o(y)f(k)o(ey)l(.)75 462 y Fh(Example)75 552 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 609 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
665 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
722 y(\014rst)f(call)h(migh)o(t)f(lo)q(ok)h(lik)o(e)g(this:)147
841 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 897 y(static)g(int)g(gop_key;)190
b(/*)23 b(key)h(for)f(this)h(module's)e(stuff)i(*/)147 1010
y(efficient_global_op)d(\(comm,)i(...\))147 1066 y(void)g(*comm;)147
1123 y({)194 1179 y(struct)g(gop_stuff_type)f(*gop_stuff;)70
b(/*)24 b(whatever)f(we)g(need)h(*/)194 1236 y(void)47 b(*group)24
b(=)f(mpi_comm_group\(comm\);)194 1349 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
1405 y({)h(gop_key_assigned)e(=)h(1;)242 1462 y(if)h(\()f(!)h(\(gop_key)f(=)h
(mpi_Get_Attribute_Key\(\))o(\))d(\))j({)290 1518 y(mpi_abort)e
(\("Insufficient)g(keys)i(available"\);)242 1574 y(})194 1631
y(})194 1687 y(if)g(\(mpi_Test_Attribute)d(\(mpi_group_attr\(group\),gop_)o
(key,&gop)o(_stuff\))o(\))194 1744 y({)j(/*)g(This)f(module)g(has)g(executed)
g(in)h(this)f(group)g(before.)314 1800 y(We)g(will)h(use)f(the)g(cached)g
(information)g(*/)194 1857 y(})194 1913 y(else)194 1970 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
2026 y(We)h(will)h(now)f(do)h(so.)266 2083 y(*/)242 2139 y(gop_stuff)f(=)g
(/*)h(malloc)f(a)h(gop_stuff_type)e(*/)242 2252 y(/*)i(...)f(fill)g(in)h
(*gop_stuff)e(with)i(whatever)f(we)g(want)g(...)h(*/)242 2365
y(mpi_set_attribute)e(\(mpi_group_attr\(group\),)e(gop_key,)j(gop_stuff,)958
2421 y(gop_stuff_destructor\);)194 2478 y(})194 2534 y(/*)h(...)f(use)h
(contents)f(of)g(*gop_stuff)g(to)g(do)h(the)f(global)g(op)h(...)f(*/)170
2591 y(})170 2704 y(gop_stuff_destructor)f(\(gop_stuff\))70
b(/*)23 b(called)g(by)h(MPI)f(on)h(group)f(delete)g(*/)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(3.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)170 45 y Fm(struct)23
b(gop_stuff_type)f(*gop_stuff;)170 102 y({)218 158 y(/*)i(...)f(free)h
(storage)e(pointed)h(to)h(by)g(gop_stuff)e(...)i(*/)170 214
y(})166 404 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 461 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 517 y(T)m(op)q(ologies.)75
744 y Fo(3.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 847 y Fi(3.10.1)49 b(Basic)17
b(Statement)o(s)75 933 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 989 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 1046 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 1102 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 1159 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 1215 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
1272 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 1328
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 1385 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 1441
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.)75 1564 y Fi(3.10.2)49 b(Mo)q(dels)18 b(of)e(Execution)75
1650 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 1706 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 1763 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 1819 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 1876 y(the)j(co)q(de)h(of)f(this)g(pro)q(cedure.)
75 1996 y Fh(Nonreentrant)i(pa)o(rallel)d(p)o(ro)q(cedures)75
2082 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 2139 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 2195 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 2252 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 2308 y(recursiv)o(e)h(in)o(v)o
(o)q(cations.)166 2365 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 2421 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 2478 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 2534 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 2591 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 2647 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 2704 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)
-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)409 b Fl(SECTION)16 b(3.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Ft(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 102 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 236 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 327 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 383 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 439 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 496 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 552 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
611 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
668 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
724 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
781 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 837
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
894 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
953 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
1009 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
1065 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
1122 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
1178 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
1235 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
1291 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
1348 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
1404 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 1461 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)75
1517 y(n)o(um)o(b)q(er)c(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 1574 y(b)q(e)g(used)g(for)e(other)h(parallel)i(libraries.)75
1708 y Fh(W)o(ell-nested)g(pa)o(rallel)d(p)o(ro)q(cedures)75
1799 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 1855 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
1912 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 1970 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 2027 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 2083 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 2140
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
2196 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
2253 y Fh(MPI)p 160 2253 14 2 v 16 w(COMM)p 318 2253 V 16 w(MAKE)p
Ft(\))g(for)f(eac)o(h)i(new)f(in)o(v)o(o)q(cation.)75 2387
y Fh(The)h(General)f(case)75 2478 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 2534 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 2591 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
2647 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
2704 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.)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(3.11.)29 b(MOTIV)-5 b(A)l(TING)15 b(EXAMPLES)1056
b Ft(23)75 45 y Fo(3.11)59 b(Motivating)19 b(Examples)75 230
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
287 y(in)o(ter-comm)o(unication)g(routines)j(\(when)h(added\))f(are)g(new.)75
494 y Fi(3.11.1)49 b(Current)15 b(Practice)h(#1)75 581 y Ft(Example)g(#1a:)
170 678 y Fm(int)24 b(me,)f(size;)170 734 y(...)170 791 y(mpi_init\(\);)170
847 y(mpi_comm_rank\(MPI_COMM_ALL,)e(&me\);)170 904 y
(mpi_comm_size\(MPI_COMM_ALL,)g(&size\);)170 1017 y(printf\("Process)h(\045d)
i(size)f(\045d\\n",)g(me,)h(size\);)170 1073 y(...)170 1130
y(mpi_end\(\);)75 1226 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 1282 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
1339 y(prin)o(tf-lik)o(e)17 b(comm)o(unication)f(itself.)75
1396 y(Example)g(#1b:)170 1492 y Fm(int)24 b(me,)f(size;)170
1549 y(...)170 1605 y(mpi_init\(\);)170 1662 y(mpi_comm_rank\(MPI_COMM_ALL,)e
(&me\);)71 b(/*)23 b(local)g(*/)170 1718 y(mpi_comm_size\(MPI_COMM_ALL,)e
(&size\);)i(/*)g(local)g(*/)170 1831 y(if\(\(me)g(\045)h(2\))g(==)f(0\))242
1888 y(mpi_send\(...,)f(MPI_COMM_ALL,)g(\(\(me)i(+)f(1\))h(\045)g(size\)\);)
170 1944 y(else)242 2000 y(mpi_recv\(...,)e(MPI_COMM_ALL,)g(\(\(me)i(-)f(1)h
(+)g(size\))f(\045)h(size\)\);)170 2113 y(...)170 2170 y(mpi_end\(\);)75
2266 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
2322 y(cesses)h(in)g(the)f(\\all")g(comm)o(unicator.)75 2447
y Fi(3.11.2)49 b(Current)15 b(Practice)h(#2)170 2534 y Fm(void)24
b(*data;)170 2591 y(int)g(me;)170 2647 y(...)170 2704 y(mpi_init\(\);)-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)414 b Fl(SECTION)16 b(3.)30 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)170 45 y Fm
(mpi_comm_rank\(MPI_COMM_ALL,)21 b(&me\);)170 158 y(if\(me)j(==)f(0\))170
214 y({)266 271 y(/*)g(get)h(input,)f(create)g(buffer)g(``data'')g(*/)266
327 y(...)170 384 y(})170 497 y(mpi_broadcast\(MPI_COMM_ALL,)e(0,)i(data\);)
170 610 y(...)170 666 y(mpi_end\(\);)75 747 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
865 y Fi(3.11.3)49 b(\(App)o(ro)o(ximate\))14 b(Current)h(Practice)g(#3)170
951 y Fm(int)24 b(me;)170 1007 y(void)g(*grp0,)f(*grprem,)g(*commslave;)170
1064 y(...)170 1120 y(mpi_init\(\);)170 1177 y(mpi_comm_rank\(MPI_COMM_ALL,)e
(&me\);)47 b(/*)23 b(local)g(*/)170 1233 y(mpi_local_subgroup\(MPI_GROUP_)o
(ALL,)e(1,)i(``[0]'',)g(&grp0\);)g(/*)h(local)f(*/)170 1290
y(mpi_group_difference\(MPI_GROU)o(P_ALL,)e(grp0,)i(&grprem\);)f(/*)i(local)f
(*/)170 1346 y(mpi_comm_make\(MPI_COMM_ALL,)e(grprem,)i(&commslave\);)170
1459 y(if\(me)h(!=)f(0\))170 1515 y({)266 1572 y(/*)g(compute)g(on)h(slave)f
(*/)266 1628 y(...)266 1685 y(mpi_reduce\(commslave,)e(...\);)266
1741 y(...)170 1798 y(})170 1854 y(/*)j(zero)f(falls)h(through)e(immediately)
h(to)g(this)h(reduce,)f(others)g(do)g(later...)g(*/)170 1911
y(mpi_reduce\(MPI_COMM_ALL,)e(...\);)75 1991 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 2048 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
2104 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
2161 y(call)k(in)g(the)40 b Ff(MPI)p 403 2161 13 2 v 15 w(COMM)p
548 2161 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 2217 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 2274 y Ff(MPI)p
152 2274 V 14 w(COMM)p 296 2274 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
2330 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 2387 y(m)o(ust)d(b)q(e)g
(distinct.)75 2505 y Fi(3.11.4)49 b(Example)15 b(#4)75 2591
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 2647 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 2704 y(collectiv)o(e)j(comm)o(unication.)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(3.11.)29 b(MOTIV)-5 b(A)l(TING)15 b(EXAMPLES)1056
b Ft(25)75 45 y Fm(#define)23 b(TAG_ARBITRARY)f(12345)75 102
y(#define)h(SOME_COUNT)166 b(50)170 158 y(int)24 b(me;)170
214 y(int)g(len;)170 271 y(void)g(*contexts;)170 327 y(void)g(*subgroup;)170
440 y(...)170 497 y(mpi_init\(\);)170 553 y(mpi_contexts_alloc\(MPI_COMM_A)o
(LL,)d(1,)j(&contexts,)e(&len\);)170 610 y(mpi_local_subgroup\(MPI_GROUP_)o
(ALL,)f(4,)i(``[2,4,6,8]'',)f(&subgroup\);)h(/*)g(local)g(*/)170
666 y(mpi_group_rank\(subgroup,)e(&me\);)119 b(/*)23 b(local)g(*/)170
779 y(if\(me)h(!=)f(MPI_UNDEFINED\))170 835 y({)266 892 y
(mpi_comm_bind\(subgroup,)e(context,)h(&the_comm\);)h(/*)g(local)h(*/)266
1005 y(/*)f(asynchronous)g(receive:)f(*/)266 1061 y(mpi_irecv\(...,)g
(MPI_SRC_ANY,)g(TAG_ARBITRARY,)g(the_comm\);)170 1118 y(})170
1231 y(for\(i)i(=)f(0;)h(i)g(<)f(SOME_COUNT,)g(i++\))266 1287
y(mpi_reduce\(the_comm,)e(...\);)75 1407 y Fi(3.11.5)49 b(Lib)o(ra)o(ry)17
b(Example)d(#1)75 1492 y Ft(The)h(main)h(program:)170 1574
y Fm(int)24 b(done)f(=)h(0;)170 1631 y(user_lib_t)f(*libh_a,)g(*libh_b;)170
1687 y(void)h(*dataset1,)e(*dataset2;)170 1744 y(...)170 1800
y(mpi_init\(\);)170 1857 y(...)170 1913 y(init_user_lib\(MPI_COMM_ALL,)f
(&libh_a\);)170 1970 y(init_user_lib\(MPI_COMM_ALL,)g(&libh_b\);)170
2026 y(...)170 2083 y(user_start_op\(libh_a,)g(dataset1\);)170
2139 y(user_start_op\(libh_a,)g(dataset2\);)170 2195 y(...)170
2252 y(while\(!done\))170 2308 y({)266 2365 y(/*)i(work)h(*/)266
2421 y(...)266 2478 y(mpi_reduce\(MPI_COMM_ALL,)c(...\);)266
2534 y(...)266 2591 y(/*)j(see)h(if)g(done)f(*/)266 2647 y(...)170
2704 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: 26 29
bop 75 -100 a Ft(26)414 b Fl(SECTION)16 b(3.)30 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)170 45 y Fm(user_end_op\(libh_a\);)170
102 y(user_end_op\(libh_b\);)75 194 y Ft(The)g(user)h(library)g
(initialization)i(co)q(de:)75 286 y Fm(void)23 b(init_user_lib\(void)f
(*comm,)h(user_lib_t)f(**handle\))75 342 y({)147 399 y(user_lib_t)g(*save;)
147 455 y(void)h(*context;)147 512 y(void)g(*group;)147 568
y(int)g(len;)147 681 y(user_lib_initsave\(&save)o(\);)e(/*)j(local)f(*/)147
737 y(mpi_comm_group\(comm,)e(&group\);)147 794 y(mpi_contexts_alloc\(comm)o
(,)g(1,)j(&context,)e(&len\);)147 850 y(mpi_comm_dup\(comm,)f(context,)i
(save)g(->)h(comm\);)147 963 y(/*)f(other)g(inits)h(*/)147
1020 y(*handle)e(=)i(save;)75 1076 y(})75 1168 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
1225 y(texts.)75 1281 y(User)e(start-up)g(co)q(de:)75 1373
y Fm(void)23 b(user_start_op\(user_lib_t)e(*handle,)i(void)g(*data\))75
1430 y({)170 1486 y(user_lib_state)f(*state;)170 1543 y(state)i(=)f(handle)g
(->)h(state;)170 1599 y(mpi_irecv\(save)e(->)i(comm,)f(...,)g(data,)h(...)f
(&\(state)g(->)h(irecv_handle\)\);)170 1656 y(mpi_isend\(save)e(->)i(comm,)f
(...,)g(data,)h(...)f(&\(state)g(->)h(isend_handle\)\);)75
1712 y(})75 1804 y Ft(User)15 b(clean-up)i(co)q(de:)75 1896
y Fm(void)23 b(user_end_op\(user_lib_t)e(*handle\))75 1953
y({)170 2009 y(mpi_wait\(save)i(->)g(state)g(->)h(isend_handle\);)170
2066 y(mpi_wait\(save)f(->)g(state)g(->)h(irecv_handle\);)75
2122 y(})75 2243 y Fi(3.11.6)49 b(Lib)o(ra)o(ry)17 b(Example)d(#2)75
2329 y Ft(The)h(main)h(program:)170 2421 y Fm(int)24 b(ma,)f(mb;)170
2478 y(...)170 2534 y(list_a)g(:=)h(``[0,1]'';)170 2591 y(list_b)f(:=)h
(``[0,2{,3}]'';)170 2704 y(mpi_local_subgroup\(MPI_GROUP_)o(ALL,)d(2,)i
(list_a,)g(&group_a\);)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(3.11.)29 b(MOTIV)-5 b(A)l(TING)15 b(EXAMPLES)1056
b Ft(27)170 45 y Fm(mpi_local_subgroup\(MPI_GROUP_)o(ALL,)21
b(2\(3\),)i(list_b,)g(&group_b\);)170 158 y(mpi_comm_make\(MPI_COMM_ALL,)e
(group_a,)h(&comm_a\);)170 214 y(mpi_comm_make\(MPI_COMM_ALL,)f(group_b,)h
(&comm_b\);)170 327 y(mpi_comm_rank\(comm_a,)f(&ma\);)170 384
y(mpi_comm_rank\(comm_b,)g(&mb\);)170 497 y(if\(ma)j(!=)f(MPI_UNDEFINED\))242
553 y(lib_call\(comm_a\);)170 610 y(if\(mb)h(!=)f(MPI_UNDEFINED\))170
666 y({)242 723 y(lib_call\(comm_b\);)242 779 y(lib_call\(comm_b\);)170
835 y(})75 912 y Ft(The)15 b(library:)75 989 y Fm(void)23 b(lib_call\(void)f
(*comm\))75 1046 y({)170 1102 y(int)i(me,)f(done)h(=)f(0;)170
1159 y(mpi_comm_rank\(comm,)f(&me\);)170 1215 y(if\(me)i(==)f(0\))266
1272 y(while\(!done\))266 1328 y({)361 1385 y(mpi_recv\(...,)f(comm,)i
(MPI_SRC_ANY\);)361 1441 y(...)266 1498 y(})170 1554 y(else)170
1610 y({)266 1667 y(/*)f(work)h(*/)266 1723 y(mpi_send\(...,)e(comm,)h(0\);)
266 1780 y(....)170 1836 y(})170 1893 y(MPI_SYNC\(comm\);)70
b(/*)24 b(include/no)e(safety)h(for)h(safety/no)e(safety)h(*/)75
1949 y(})75 2026 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 2083 y(3)e(in)h Fm(list)p 267 2083 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 2083
V 17 w(call)75 2139 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 2195 y(realized)g(if)e(the)37 b Fh(MPI)p
474 2195 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
2252 y(written)e(carefully)l(,)i(ev)o(en)e(with)h(con)o(texts.)166
2308 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
2365 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
2421 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 2478 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
2534 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
2591 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
2647 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 2704 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.)-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(3.)30 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)75 45 y Fi(3.11.7)49 b(Inter-Comm)o
(unication)14 b(Examples)75 133 y Fh(Example)f(1:)19 b(Three-Group)e(\\Pip)q
(eline")409 277 y Fm(+---------+)213 b(+---------+)h(+---------+)409
334 y(|)h(|)f(|)h(|)g(|)f(|)409 390 y(|)24 b(Group)f(0)h(|)f(<----->)g(|)h
(Group)f(1)h(|)g(<----->)f(|)g(Group)h(2)f(|)409 447 y(|)215
b(|)f(|)h(|)g(|)f(|)409 503 y(+---------+)f(+---------+)h(+---------+)166
671 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)75
728 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 784
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 841 y(\()p
Fh(MPI)p 178 841 14 2 v 15 w(COMM)p 335 841 V 17 w(PEER)p 464
841 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 953 y Fm(void)24
b(*)f(myComm;)453 b(/*)24 b(intra-communicator)d(of)j(local)f(sub-group)f(*/)
170 1010 y(void)i(*)f(myFirstComm;)786 b(/*)24 b(inter-communicator)d(*/)170
1066 y(void)j(*)f(mySecondComm;)237 b(/*)24 b(second)f(inter-communicator)e
(\(group)i(B)h(only\))f(*/)170 1123 y(int)h(membershipKey;)170
1179 y(int)g(subGroupLeaders[3];)170 1292 y(MPI_INIT\(\);)170
1349 y(...)170 1462 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 1518 y(membershipKey)f(=)g(...)h
(;)170 1631 y(/*)g(Build)f(intra-communicator)f(for)h(local)g(sub-group)g
(and)g(get)h(group)f(leaders)g(*/)170 1687 y(/*)h(of)g(each)f(sub-group)g
(\(relative)f(to)i(MPI_COMM_ALL\).)e(*/)170 1744 y
(MPI_COMM_SPLITL\(MPI_COMM_ALL,)e(membershipKey,)i(3,)i(subGroupLeaders,)e
(&myComm\);)170 1857 y(/*)i(Build)f(inter-communicators.)45
b(Tags)24 b(are)f(hard-coded.)f(*/)170 1913 y(if)i(\(membershipKey)e(==)i
(0\))266 1970 y({)692 b(/*)23 b(Group)h(0)f(communicates)g(with)g(group)g(1.)
h(*/)266 2026 y(MPI_COMM_PEER_MAKE\(myComm)o(,)d(MPI_COMM_ALL,)h
(subGroupLeaders[1],)g(10,)h(1,)719 2083 y(&myFirstComm\);)266
2139 y(})170 2195 y(else)h(if)f(\(membershipKey)f(==)i(1\))266
2252 y({)525 b(/*)23 b(Group)h(1)f(communicates)f(with)i(groups)f(0)h(and)f
(2.)h(*/)266 2308 y(MPI_COMM_PEER_MAKE\(myComm)o(,)d(MPI_COMM_ALL,)h
(subGroupLeaders[0],)g(10,)h(1,)719 2365 y(&myFirstComm\);)266
2421 y(MPI_COMM_PEER_MAKE\(myComm)o(,)e(MPI_COMM_ALL,)h(subGroupLeaders[2],)g
(21,)h(1,)719 2478 y(&mySecondComm\);)266 2534 y(})170 2591
y(else)h(if)f(\(membershipKey)f(==)i(2\))266 2647 y({)692 b(/*)23
b(Group)h(2)f(communicates)g(with)g(group)g(1.)h(*/)266 2704
y(MPI_COMM_PEER_MAKE\(myComm)o(,)d(MPI_COMM_ALL,)h(subGroupLeaders[1],)g(21,)
h(1,)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(3.11.)29 b(MOTIV)-5 b(A)l(TING)15 b(EXAMPLES)1056
b Ft(29)719 45 y Fm(&myFirstComm\);)266 102 y(})75 333 y Fh(Example)13
b(2:)19 b(Three-Group)e(\\Ring")290 419 y Fm(+-----------------------)o
(--------)o(-------)o(-------)o(--------)o(------+)290 476
y(|)1408 b(|)290 532 y(|)95 b(+---------+)213 b(+---------+)h(+---------+)94
b(|)290 589 y(|)h(|)215 b(|)f(|)h(|)g(|)f(|)96 b(|)290 645
y(+-->)23 b(|)h(Group)f(0)h(|)f(<----->)g(|)h(Group)f(1)h(|)g(<----->)f(|)g
(Group)h(2)f(|)h(<--+)409 701 y(|)215 b(|)f(|)h(|)g(|)f(|)409
758 y(+---------+)f(+---------+)h(+---------+)166 856 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 912 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 969
y(sync)o(hronous")f(in)o(ter-comm)o(unicator)g(constructor)f(\()h
Fh(MPI)p 1154 969 14 2 v 16 w(COMM)p 1312 969 V 16 w(PEER)p
1440 969 V 17 w(MAKE)p 1586 969 V 16 w(ST)l(ART\(\))h Ft(and)75
1025 y Fh(MPI)p 160 1025 V 16 w(COMM)p 318 1025 V 16 w(PEER)p
446 1025 V 17 w(MAKE)p 592 1025 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
1082 y(cation.)170 1179 y Fm(void)h(*)f(myComm;)453 b(/*)24
b(intra-communicator)d(of)j(local)f(sub-group)f(*/)170 1236
y(void)i(*)f(myFirstComm;)762 b(/*)24 b(inter-communicators)d(*/)170
1292 y(void)j(*)f(mySecondComm;)170 1349 y(make_id)g(firstMakeID,)g
(secondMakeID;)332 b(/*)23 b(handles)g(for)h("FINISH")f(*/)170
1405 y(int)h(membershipKey;)170 1462 y(int)g(subGroupLeaders[3];)170
1574 y(MPI_INIT\(\);)170 1631 y(...)170 1744 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
1800 y(membershipKey)f(=)g(...)h(;)170 1913 y(/*)g(Build)f
(intra-communicator)f(for)h(local)g(sub-group)g(and)g(get)h(group)f(leaders)g
(*/)170 1970 y(/*)h(of)g(each)f(sub-group)g(\(relative)f(to)i
(MPI_COMM_ALL\).)e(*/)170 2026 y(MPI_COMM_SPLITL\(MPI_COMM_ALL,)e
(membershipKey,)i(3,)i(subGroupLeaders,)e(&myComm\);)170 2139
y(/*)i(Build)f(inter-communicators.)45 b(Tags)24 b(are)f(hard-coded.)f(*/)170
2195 y(if)i(\(membershipKey)e(==)i(0\))266 2252 y({)525 b(/*)23
b(Group)h(0)f(communicates)f(with)i(groups)f(1)h(and)f(2.)h(*/)266
2308 y(MPI_COMM_PEER_MAKE_START\()o(myComm,)c(MPI_COMM_ALL,)i
(subGroupLeaders[2],)g(20,)862 2365 y(1,)i(&firstMakeID\);)266
2421 y(MPI_COMM_PEER_MAKE_START\()o(myComm,)c(MPI_COMM_ALL,)i
(subGroupLeaders[1],)g(10,)862 2478 y(1,)i(&secondMakeID\);)266
2534 y(})170 2591 y(else)g(if)f(\(membershipKey)f(==)i(1\))266
2647 y({)525 b(/*)23 b(Group)h(1)f(communicates)f(with)i(groups)f(0)h(and)f
(2.)h(*/)266 2704 y(MPI_COMM_PEER_MAKE_START\()o(myComm,)c(MPI_COMM_ALL,)i
(subGroupLeaders[0],)g(10,)-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(3.)30 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)862 45 y Fm(1,)24 b(&firstMakeID\);)266
102 y(MPI_COMM_PEER_MAKE_START\()o(myComm,)c(MPI_COMM_ALL,)i
(subGroupLeaders[2],)g(21,)862 158 y(1,)i(&secondMakeID\);)266
214 y(})170 271 y(else)g(if)f(\(membershipKey)f(==)i(2\))266
327 y({)525 b(/*)23 b(Group)h(2)f(communicates)f(with)i(groups)f(0)h(and)f
(1.)h(*/)266 384 y(MPI_COMM_PEER_MAKE_START\()o(myComm,)c(MPI_COMM_ALL,)i
(subGroupLeaders[1],)g(21,)862 440 y(1,)i(&firstMakeID\);)266
497 y(MPI_COMM_PEER_MAKE_START\()o(myComm,)c(MPI_COMM_ALL,)i
(subGroupLeaders[0],)g(20,)862 553 y(1,)i(&secondMakeID\);)266
610 y(})170 723 y(/*)g(Everyone)f(has)g(the)h(same)f("FINISH")g(code...)g(*/)
170 779 y(MPI_COMM_PEER_MAKE_FINISH\(fir)o(stMakeID)o(,)e(&myFirstComm\);)170
835 y(MPI_COMM_PEER_MAKE_FINISH\(sec)o(ondMakeI)o(D,)g(&mySecondComm\);)75
954 y Fh(Example)13 b(3:)19 b(Three-Group)e(\\Pip)q(eline")e(Using)h(Name)d
(Service)409 1040 y Fm(+---------+)213 b(+---------+)h(+---------+)409
1097 y(|)h(|)f(|)h(|)g(|)f(|)409 1153 y(|)24 b(Group)f(0)h(|)f(<----->)g(|)h
(Group)f(1)h(|)g(<----->)f(|)g(Group)h(2)f(|)409 1210 y(|)215
b(|)f(|)h(|)g(|)f(|)409 1266 y(+---------+)f(+---------+)h(+---------+)166
1364 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)75
1420 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 1477
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 1533 y(\()p
Fh(MPI)p 178 1533 14 2 v 15 w(COMM)p 335 1533 V 17 w(NAME)p
481 1533 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 1590 y(tion.)170
1687 y Fm(void)24 b(*)f(myComm;)453 b(/*)24 b(intra-communicator)d(of)j
(local)f(sub-group)f(*/)170 1744 y(void)i(*)f(myFirstComm;)786
b(/*)24 b(inter-communicator)d(*/)170 1800 y(void)j(*)f(mySecondComm;)237
b(/*)24 b(second)f(inter-communicator)e(\(group)i(B)h(only\))f(*/)170
1913 y(MPI_INIT\(\);)170 1970 y(...)170 2083 y(/*)h(User)f(builds)g
(intra-communicator)f(myComm)h(describing)f(the)i(local)f(sub-group)g(*/)170
2139 y(/*)h(using)f(any)h(appropriate)e(MPI)h(routine\(s\).)47
b(\(For)23 b(example,)g(myComm)g(could)g(*/)170 2195 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
2252 y(myComm)h(=)h(...)g(;)170 2365 y(/*)g(Build)f(inter-communicators.)45
b(Group)23 b(membership)g(conditions)f(must)i(be)f(*/)170 2421
y(/*)h(provided)f(by)g(the)h(user.)f(*/)170 2478 y(if)h(\(<I)f(am)h(in)g
(group)f(0>\))266 2534 y({)692 b(/*)23 b(Group)h(0)f(communicates)g(with)g
(group)g(1.)h(*/)266 2591 y(MPI_COMM_NAME_MAKE\(myComm)o(,)d("Connect)i(10",)
g(1,)h(&myFirstComm\);)266 2647 y(})170 2704 y(else)g(if)f(\(<I)h(am)f(in)h
(group)f(1>\))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(3.11.)29 b(MOTIV)-5 b(A)l(TING)15 b(EXAMPLES)1056
b Ft(31)266 45 y Fm({)525 b(/*)23 b(Group)h(1)f(communicates)f(with)i(groups)
f(0)h(and)f(2.)h(*/)266 102 y(MPI_COMM_NAME_MAKE\(myComm)o(,)d("Connect)i
(10",)g(1,)h(&myFirstComm\);)266 158 y(MPI_COMM_NAME_MAKE\(myComm)o(,)d
("Connect)i(21",)g(1,)h(&mySecondComm\);)266 214 y(})170 271
y(else)g(if)f(\(<I)h(am)f(in)h(group)f(2>\))266 327 y({)692
b(/*)23 b(Group)h(2)f(communicates)g(with)g(group)g(1.)h(*/)266
384 y(MPI_COMM_NAME_MAKE\(myComm)o(,)d("Connect)i(21",)g(1,)h
(&myFirstComm\);)266 440 y(})75 559 y Fh(Example)13 b(4:)19
b(Three-Group)e(\\Ring")e(Using)g(Name)e(Service)290 645 y
Fm(+-----------------------)o(--------)o(-------)o(-------)o(--------)o
(------+)290 701 y(|)1408 b(|)290 758 y(|)95 b(+---------+)213
b(+---------+)h(+---------+)94 b(|)290 814 y(|)h(|)215 b(|)f(|)h(|)g(|)f(|)96
b(|)290 871 y(+-->)23 b(|)h(Group)f(0)h(|)f(<----->)g(|)h(Group)f(1)h(|)g
(<----->)f(|)g(Group)h(2)f(|)h(<--+)409 927 y(|)215 b(|)f(|)h(|)g(|)f(|)409
984 y(+---------+)f(+---------+)h(+---------+)166 1082 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 1138 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 1194
y(sync)o(hronous")20 b(in)o(ter-comm)o(unicator)h(constructor)f(\()h
Fh(MPI)p 1141 1194 14 2 v 15 w(COMM)p 1298 1194 V 17 w(NAME)p
1444 1194 V 17 w(MAKE)p 1590 1194 V 16 w(ST)l(ART\(\))g Ft(and)75
1251 y Fh(MPI)p 160 1251 V 16 w(COMM)p 318 1251 V 16 w(NAME)p
463 1251 V 17 w(MAKE)p 609 1251 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 1307 y(tion.)170 1405 y Fm(void)24 b(*)f(myComm;)453
b(/*)24 b(intra-communicator)d(of)j(local)f(sub-group)f(*/)170
1462 y(void)i(*)f(myFirstComm;)762 b(/*)24 b(inter-communicators)d(*/)170
1518 y(void)j(*)f(mySecondComm;)170 1574 y(make_id)g(firstMakeID,)g
(secondMakeID;)332 b(/*)23 b(handles)g(for)h("FINISH")f(*/)170
1687 y(MPI_INIT\(\);)170 1744 y(...)170 1857 y(/*)h(User)f(builds)g
(intra-communicator)f(myComm)h(describing)f(the)i(local)f(sub-group)g(*/)170
1913 y(/*)h(using)f(any)h(appropriate)e(MPI)h(routine\(s\).)47
b(\(For)23 b(example,)g(myComm)g(could)g(*/)170 1970 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
2026 y(myComm)h(=)h(...)g(;)170 2139 y(/*)g(Build)f(inter-communicators.)45
b(Group)23 b(membership)g(conditions)f(must)i(be)f(*/)170 2195
y(/*)h(provided)f(by)g(the)h(user.)f(*/)170 2252 y(if)h(\(<I)f(am)h(in)g
(group)f(0>\))266 2308 y({)525 b(/*)23 b(Group)h(0)f(communicates)f(with)i
(groups)f(1)h(and)f(2.)h(*/)266 2365 y(MPI_COMM_NAME_MAKE_START\()o(myComm,)c
("Connect)j(20",)g(1,)h(&firstMakeID\);)266 2421 y
(MPI_COMM_NAME_MAKE_START\()o(myComm,)c("Connect)j(10",)g(1,)h
(&secondMakeID\);)266 2478 y(})170 2534 y(else)g(if)f(\(<I)h(am)f(in)h(group)
f(1>\))266 2591 y({)525 b(/*)23 b(Group)h(1)f(communicates)f(with)i(groups)f
(0)h(and)f(2.)h(*/)266 2647 y(MPI_COMM_NAME_MAKE_START\()o(myComm,)c
("Connect)j(10",)g(1,)h(&firstMakeID\);)266 2704 y
(MPI_COMM_NAME_MAKE_START\()o(myComm,)c("Connect)j(21",)g(1,)h
(&secondMakeID\);)-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: 32 35
bop 75 -100 a Ft(32)409 b Fl(SECTION)16 b(3.)35 b(GR)o(OUPS,)15
b(CONTEXTS,)g(AND)g(COMMUNICA)l(TORS)266 45 y Fm(})170 102
y(else)24 b(if)f(\(<I)h(am)f(in)h(group)f(2>\))266 158 y({)525
b(/*)23 b(Group)h(2)f(communicates)f(with)i(groups)f(0)h(and)f(1.)h(*/)266
214 y(MPI_COMM_NAME_MAKE_START\()o(myComm,)c("Connect)j(21",)g(1,)h
(&firstMakeID\);)266 271 y(MPI_COMM_NAME_MAKE_START\()o(myComm,)c("Connect)j
(20",)g(1,)h(&secondMakeID\);)266 327 y(})170 440 y(/*)g(Everyone)f(has)g
(the)h(same)f("FINISH")g(code...)g(*/)170 497 y
(MPI_COMM_NAME_MAKE_FINISH\(fir)o(stMakeID)o(,)e(&myFirstComm\);)170
553 y(MPI_COMM_NAME_MAKE_FINISH\(sec)o(ondMakeI)o(D,)g(&mySecondComm\);)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
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF

---

From: Tony Skjellum <[email-masked]>
Date: Tue, 17 Aug 93 00:04:03 CDT

I believe this to be the postscript (uuencoded) of our
best draft.
- Tony