Subject: new draft of context chapter

From: Tony Skjellum <[email-masked]>
Date: Sat, 10 Jul 93 17:34:51 CDT

Dear colleagues, given post-meeting discussions, recommendations, and further
thinking, here is the latest draft of the context chapter.  Please comment.

Notice that the semantics of 
	mpi_contexts_alloc() 
and
	mpi_comm_make()

have been changed.  These changes have been made to allow libraries/subprograms
to control safety without relying on the underlying quiescence of a passed-in
communicator.  As such, this change is an important step forward.  We also are
able to justify how MPI would implement both of these functions as statically
initialized, single-invocation collective operations (that lock out other
threads).  

Examples discussed on the Friday of the last meeting have been added to the
draft, appropriately modified for the new semantics of mpi_contexts_alloc()
and mpi_comm_make().

- Tony Skjellum
-------------------------------------------
%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: unify4.dvi
%%Pages: 19 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 33 122 df<01C003C007800F001E003C00380078
0070007000F000E000E000E000E000E000E000E000F00070007000780038003C001E000F000780
03C001C00A1D7A9914>40 D<E000F00078003C001E000F00070007800380038003C001C001C001
C001C001C001C001C003C003800380078007000F001E003C007800F000E0000A1D7D9914>I<38
7C7E7E3E1E1EFCF870070A7A8414>44 D<01C00003E00003E00003600003600007700007700007
70000770000630000E38000E38000E38000E38000E38001FFC001FFC001FFC001C1C003C1E00FE
3F80FE3F80FE3F8011177F9614>65 D<FFF800FFFE00FFFF001C0F001C03801C03801C03801C03
801C07001C3F001FFE001FFE001FFF001C07001C03801C03801C03801C03801C07801C0F00FFFF
00FFFE00FFFC001117809614>I<07E60FFE1FFE3E3E3C1E780E700EF00EE000E000E000E000E0
00E000E000F00E700E780E3C1E3E3C1FF80FF807E00F177E9614>I<FFFF80FFFF80FFFF801C03
801C03801C03801C03801C00001C38001C38001FF8001FF8001FF8001C38001C38001C00001C01
C01C01C01C01C01C01C0FFFFC0FFFFC0FFFFC01217809614>69 D<07E6000FFE001FFE003E3E00
3C1E00780E00700E00F00E00E00000E00000E00000E00000E07F80E07F80E07F80F00E00700E00
781E003C1E003E3E001FFE000FFE0007EE0011177F9614>71 D<FFFEFFFEFFFE03800380038003
800380038003800380038003800380038003800380038003800380FFFEFFFEFFFE0F177E9614>
73 D<FE7FFE7FFE7F383C387838F038F039E03BC03B803FC03FC03FE03EE03CF0387038783838
383C383CFE3FFE3FFE3F10177F9614>75 D<FFC000FFC000FFC0001C00001C00001C00001C0000
1C00001C00001C00001C00001C00001C00001C00001C00001C00001C03801C03801C03801C0380
FFFF80FFFF80FFFF8011177F9614>I<FE0FE0FE0FE0FE0FE03B1B803B1B803B1B803B1B803BBB
803BBB8039B38039B38039B38039F38038E38038E380380380380380380380380380380380FE0F
E0FE0FE0FE0FE01317809614>I<FE3F80FE3F80FE3F803B0E003B0E003B0E003B0E003B8E0039
8E00398E0039CE0039CE0039CE0038CE0038CE0038EE00386E00386E00386E00386E00FE3E00FE
3E00FE3E0011177F9614>I<1FF07FFC7FFC701CF01EE00EE00EE00EE00EE00EE00EE00EE00EE0
0EE00EE00EE00EE00EF01E783C7FFC7FFC1FF00F177E9614>I<FFF800FFFE00FFFF001C0F001C
07801C03801C03801C03801C03801C07801C0F001FFF001FFE001FF8001C00001C00001C00001C
00001C00001C0000FF8000FF8000FF80001117809614>I<FFE000FFF000FFF800383C00381E00
380E00380E00380E00381E00383C003FF8003FF0003FF800387C00381C00381C00381C00381C00
381DC0381DC0FE1FC0FE0FC0FE078012177F9614>82 D<0FCC3FFC7FFCF87CF03CE01CE01CF000
F8007F003FE01FF801FC003C001E000EE00EE00EF01EF83CFFFCFFF8CFE00F177E9614>I<FFFF
80FFFF80FFFF80E1C380E1C380E1C380E1C38001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C0000FF8000FF8000FF80011177F9614>I<FF8FF8FF
8FF8FF8FF81C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C
01C01C01C01C01C01E03C00E03800F8F8007FF0003FE0000F8001517819614>I<FE7F00FE7F00
FE7F001E38000E78000F700007F00007E00003E00003C00001C00003C00003E00003E000077000
0770000E78000E38001C3C001C1C00FE3F80FE3F80FE3F8011177F9614>88
D<07F81FFC3FFC7C3C7818F000E000E000E000E000F00E780E7E1E3FFC1FF807F00F107E8F14>
99 D<07E01FF83FFC7C3C781EF00EFFFEFFFEFFFEE000F00E780E7E1E3FFC1FF807E00F107E8F
14>101 D<07CF001FFF803FFF807C7F00783C00701C00701C00783C007C7C003FF8007FF00077
C0007800003FF8003FFE007FFF00F00F80E00780E00380E00380F007807C1F007FFF001FFC0007
F00011197F8F14>103 D<FFDF00FFFF80FFFF803CF3803CF38038E38038E38038E38038E38038
E38038E38038E38038E380FEFBE0FEFBE0FEFBE01310808F14>109 D<FCFC00FFFE00FFFF001F
0F001E07001C07001C07001C07001C07001C07001C07001C07001C0700FF9FE0FF9FE0FF9FE013
10808F14>I<07C01FF03FF8783C701CF01EE00EE00EE00EE00EF01E701C7C7C3FF81FF007C00F
107E8F14>I<FCFC00FFFE00FFFF001F8F801E03801C03C01C01C01C01C01C01C01C01C01E03C0
1E07801F8F801FFF001FFE001CFC001C00001C00001C00001C00001C0000FF8000FF8000FF8000
1218808F14>I<FF1F80FF7FC0FFFFC007F1C007C0000780000780000700000700000700000700
00070000070000FFFC00FFFC00FFFC001210808F14>114 D<1FF87FF8FFF8F038E038F0007F80
3FF80FFC003EE00EE00EF83EFFFCFFF8CFF00F107E8F14>I<07000700070007000700FFFCFFFC
FFFC070007000700070007000700070E070E070E079E07FC03F801F00F157F9414>I<FC3F00FC
3F00FC3F001C07001C07001C07001C07001C07001C07001C07001C07001C07001C1F001FFFE00F
FFE007F7E01310808F14>I<FE7F80FE7F80FE7F800E780007700007E00003E00001C00003C000
03E0000770000E78000E3800FF7F80FF7F80FF7F8011107F8F14>120 D<FF3F80FF3F80FF3F80
1C1C001C1C000E1C000E38000E380007380007300007300003700003700001E00001E00001E000
01C00001C00001C0007B80007F80007F00007E00003C000011187F8F14>I
E /Fb 3 104 df<7078F87005047C830C>46 D<03F00FF81E38381878387078FFF0FFC0E000E0
00E000E018E03870F03FE01F800D107C8F12>101 D<00FB8003FF80079F800E0F001E07001C0F
003C0F00380E00380E00381E00381E00381C00383C003CFC001FFC000FB8000038000078000078
00E0F000E1F000FFC000FF000011177E8F12>103 D E /Fc 1 59 df<F0F0F0F004047D830B>
58 D E /Fd 65 123 df<007E7E01FFFF07CFCF070F8F0F0F0F0E07000E07000E07000E07000E
0700FFFFF0FFFFF00E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E
07000E07007F0FF07F0FF0181A809916>11 D<007E0001FE0007CF00070F000F0F000E0F000E00
000E00000E00000E0000FFFF00FFFF000E07000E07000E07000E07000E07000E07000E07000E07
000E07000E07000E07000E07007F0FE07F0FE0131A809915>I<007F0001FF0007CF00070F000F
0F000E07000E07000E07000E07000E0700FFFF00FFFF000E07000E07000E07000E07000E07000E
07000E07000E07000E07000E07000E07000E07007F9FE07F9FE0131A809915>I<007E1F8001FF
7FC007C7F1E00707C1E00F07C1E00E0781E00E0380000E0380000E0380000E038000FFFFFFE0FF
FFFFE00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E0
0E0380E00E0380E00E0380E07F8FE3FC7F8FE3FC1E1A809920>I<F1E0F9F0F9F0F9F018301830
3870306070E0E1C0C1800C0B7F9913>34 D<F0F8F8F81818383070E0C0050B7D990B>39
D<01C00380070007000E001C001C00380038007000700070006000E000E000E000E000E000E000
E000E000E000E000E000E0006000700070007000380038001C001C000E0007000700038001C00A
267E9B0F>I<E0007000380038001C000E000E0007000700038003800380018001C001C001C001
C001C001C001C001C001C001C001C001C00180038003800380070007000E000E001C0038003800
7000E0000A267E9B0F>I<E0F0F0F03030307060E0C0040B7D830B>44 D<FFC0FFC0FFC00A0380
880D>I<F0F0F0F004047D830B>I<03000700FF00FF000700070007000700070007000700070007
00070007000700070007000700070007000700FFF0FFF00C187D9713>49
D<1FC03FF071F8F078F83CF83CF81C701C003C003C0038007800F000E001C0038007000E0C1C0C
380C7018FFF8FFF8FFF80E187E9713>I<F0F0F0F00000000000000000F0F0F0F004107D8F0B>
58 D<F0F0F0F00000000000000000E0F0F0F03030307060E0C004177D8F0B>I<1FC07FF07070F0
38F038F038F038007800F001E003C0038007000700060006000600060000000000000000000F00
0F000F000F000D1A7E9912>63 D<000C0000001E0000001E0000001E0000003F0000003F000000
3F000000778000006780000067800000C3C00000C3C00000C3C0000181E0000181E0000181E000
0300F00003FFF00003FFF0000600780006007800060078000E003C001E003C00FF81FFC0FF81FF
C01A1A7F991D>65 D<FFFF80FFFFE00F00F00F00780F003C0F003C0F003C0F003C0F003C0F0078
0F00F00FFFE00FFFE00F01F00F00780F003C0F001E0F001E0F001E0F001E0F001E0F003C0F003C
0F00F8FFFFF0FFFFC0171A7F991B>I<007F0601FFE607E0FE0F803E1E001E3C001E3C000E7800
0E780006F00006F00000F00000F00000F00000F00000F00000F000067800067800063C000E3C00
0C1E001C0F803807E0F001FFE0007F80171A7E991C>I<FFFF8000FFFFE0000F00F0000F003800
0F001C000F000E000F000E000F000F000F0007000F0007800F0007800F0007800F0007800F0007
800F0007800F0007800F0007800F0007000F0007000F000F000F000E000F001C000F003C000F00
F800FFFFE000FFFF8000191A7F991D>I<FFFFF8FFFFF80F00780F00380F00180F001C0F000C0F
030C0F030C0F03000F07000FFF000FFF000F07000F03000F03000F03060F00060F000C0F000C0F
000C0F001C0F001C0F0078FFFFF8FFFFF8171A7F991A>I<FFFFF0FFFFF00F00F00F00700F0030
0F00380F00180F00180F06180F06000F06000F0E000FFE000FFE000F0E000F06000F06000F0600
0F00000F00000F00000F00000F00000F0000FFF800FFF800151A7F9919>I<007F060001FFE600
07E0FE000F803E001E001E003C001E003C000E0078000E0078000600F0000600F0000000F00000
00F0000000F0000000F0000000F003FFC0F003FFC078001E0078001E003C001E003C001E001E00
1E000F803E0007E07E0001FFFE00007FC6001A1A7E991E>I<FFF0FFF00F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF0FFF00C
1A7F990E>73 D<FFF07FC0FFF07FC00F003E000F003C000F0078000F00F0000F01E0000F03C000
0F0780000F0F00000F1E00000F3E00000F7F00000FFF80000FE780000FC7C0000F83E0000F03E0
000F01F0000F00F0000F00F8000F007C000F003C000F003E00FFF0FFC0FFF0FFC01A1A7F991E>
75 D<FFF800FFF8000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F00000F00000F00000F00000F00300F00300F00300F00700F00700F00600F00E00F03E0FFFFE0
FFFFE0141A7F9918>I<FF8001FFFFC003FF0FC003F00FC003F00DE006F00DE006F00DE006F00C
F00CF00CF00CF00CF00CF00C7818F00C7818F00C7818F00C3C30F00C3C30F00C3C30F00C1E60F0
0C1E60F00C1E60F00C0FC0F00C0FC0F00C0FC0F00C0780F01E0780F0FFC78FFFFFC30FFF201A7F
9923>I<FF00FFC0FF80FFC00FC01E000FC00C000FE00C000DF00C000CF00C000CF80C000C7C0C
000C7C0C000C3E0C000C1F0C000C1F0C000C0F8C000C078C000C07CC000C03EC000C01EC000C01
FC000C00FC000C00FC000C007C000C003C001E003C00FFC01C00FFC00C001A1A7F991D>I<007F
000001FFC00007C1F0000F0078001E003C003C001E0038000E0078000F0070000700F0000780F0
000780F0000780F0000780F0000780F0000780F0000780F000078078000F0078000F0038000E00
3C001E001E003C000F00780007C1F00001FFC000007F0000191A7E991E>I<FFFF80FFFFE00F00
F00F00780F00380F003C0F003C0F003C0F003C0F003C0F00380F00780F00F00FFFE00FFF800F00
000F00000F00000F00000F00000F00000F00000F00000F0000FFF000FFF000161A7F991A>I<FF
FE0000FFFFC0000F01E0000F00F0000F0070000F0078000F0078000F0078000F0078000F007000
0F00F0000F01E0000FFFC0000FFFC0000F03E0000F01F0000F00F0000F00F0000F00F0000F00F0
000F00F0000F00F0000F00F0C00F00F9C0FFF07FC0FFF01F801A1A7F991C>82
D<0FC63FF6787E701EE00EE00EE006E006F000FC007F807FF03FFC0FFE01FE003F000F000FC007
C007E007E00FF00EFC3CDFFCC7F0101A7E9915>I<7FFFFF007FFFFF00781E0F00601E0300601E
0300E01E0380C01E0180C01E0180C01E0180001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000
03FFF00003FFF000191A7F991C>I<FFF0FFC0FFF0FFC00F001E000F000C000F000C000F000C00
0F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C
000F000C000F000C000F000C000F000C000F801C000780180003C0380001E0F00000FFE000003F
80001A1A7F991D>I<FFC03FC0FFC03FC01F000E000F000C000F000C000F801C00078018000780
180003C0300003C0300003C0300001E0600001E0600001E0600000F0C00000F0C00000F9C00000
79800000798000003F0000003F0000003F0000001E0000001E0000001E0000000C00001A1A7F99
1D>I<FFC7FF1FF0FFC7FF1FF01E00F803C01E007803800F007803000F007803000F00FC030007
80FC06000780FC060007819E060007819E0E0003C19E0C0003C30F0C0003C30F0C0001E30F1800
01E70F980001E607980000F607B00000F607B00000FC03F000007C03E000007C03E000007801E0
00007801E000003801C000003000C000241A7F9927>I<FFE1FF00FFE1FF000F80F80007C07000
03C0E00003E0C00001E1800000F3800000FB0000007F0000007E0000003E0000001E0000001F00
00003F0000007780000067C00000E3C00000C3E0000181F0000380F0000300F800070078001F00
7C00FFC1FFC0FFC1FFC01A1A7F991D>I<1830387070E060C0E1C0C180C180F9F0F9F0F9F078F0
0C0B7B9913>92 D<18387060E0C0C0F8F8F878050B7E990B>96 D<7F80FFE0F1F0F0F0607000F0
1FF03FF07870F070E070E073E0F3F1F37FFE3F3C10107E8F13>I<FC0000FC00001C00001C0000
1C00001C00001C00001C00001C00001C00001CFC001FFE001F0F001E07801C03801C01C01C01C0
1C01C01C01C01C01C01C01C01C03801E07801F0F001BFE0019F800121A7F9915>I<07F81FFC3C
3C783C7018E000E000E000E000E000F0007000780C3E1C1FF807E00E107F8F11>I<007E00007E
00000E00000E00000E00000E00000E00000E00000E00000E000FEE001FFE003C3E00781E00700E
00E00E00E00E00E00E00E00E00E00E00E00E00700E00781E003C3E001FFFC00FCFC0121A7F9915
>I<07E01FF03C78701C701CFFFCFFFCE000E000E000F0007000780C3E1C1FF807E00E107F8F11>
I<00F803FC07BC0F3C0E3C0E000E000E000E000E00FFC0FFC00E000E000E000E000E000E000E00
0E000E000E000E000E007FE07FE00E1A80990C>I<0FDF1FFF3877703870387038703870383870
3FE07FC0700070007FF83FFC7FFEF01FE00FE007E007F00F7C3E3FFC0FF010187F8F13>I<FC00
00FC00001C00001C00001C00001C00001C00001C00001C00001C00001CF8001FFC001F1E001E0E
001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00FF9FC0FF9FC0121A
7F9915>I<3C003C003C003C00000000000000000000000000FC00FC001C001C001C001C001C00
1C001C001C001C001C001C001C00FF80FF80091A80990A>I<01E001E001E001E0000000000000
00000000000007E007E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E060E0F1E0F3C0FF807F000B2183990C>I<FC0000FC00001C00001C00001C00001C00001C
00001C00001C00001C00001C7F801C7F801C7C001C70001CE0001DC0001FC0001FE0001EF0001C
F0001C78001C3C001C3C001C1E00FF3FC0FF3FC0121A7F9914>I<FC00FC001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80FF
80091A80990A>I<FCFC3F00FFFEFF801F0FC3C01E0781C01C0701C01C0701C01C0701C01C0701
C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F8FF9FE7F81D107F8F20>
I<FCF800FFFC001F1E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E
001C0E00FF9FC0FF9FC012107F8F15>I<07E01FF8381C700E6006E007E007E007E007E007E007
700E700E3C3C1FF807E010107F8F13>I<FCFC00FFFE001F0F001E07801C03801C03C01C01C01C
01C01C01C01C01C01C03C01C03801E07801F1F001FFE001DF8001C00001C00001C00001C00001C
0000FF8000FF800012177F8F15>I<07C6001FF6003E3E00781E00700E00F00E00E00E00E00E00
E00E00E00E00F00E00700E00781E003C7E001FFE000FCE00000E00000E00000E00000E00000E00
007FC0007FC012177F8F14>I<FDE0FFF01F701E701E001C001C001C001C001C001C001C001C00
1C00FFC0FFC00C107F8F0F>I<3FE07FE0F0E0E060E060F000FF807FC01FE001F0C0F0E070E070
F0F0FFE0DF800C107F8F0F>I<0C000C000C000C001C001C003C00FFC0FFC01C001C001C001C00
1C001C001C001C601C601C601C601EE00FC007800B177F960F>I<FC7E00FC7E001C0E001C0E00
1C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C1E001E3E000FFFC007EFC012107F
8F15>I<FF3F80FF3F803C0E001C0C001C0C000E18000E18000E380007300007300007F00003E0
0003E00001C00001C00001C00011107F8F14>I<FF3F9F80FF3F9F803C1E0E001C3E0C001C360C
001C370C000E3718000E6318000E6398000763B00007C1B00007C1F00007C1F0000380E0000380
E0000380E00019107F8F1C>I<7F1FC07F1FC00F1E00071C0003B80003B00001E00000E00000F0
0001F00003B800071C00061C001E0E00FF1FE0FF1FE01310808F14>I<FF3F80FF3F803C0E001C
0C001C0C000E18000E18000E380007300007300007F00003E00003E00001C00001C00001C00001
8000018000618000F30000C70000FE000078000011177F8F14>I<7FF87FF870F860F061E063C0
63C007800F181E181E183C387830F870FFF0FFF00D107F8F11>I E /Fe
8 118 df<78FCFCFCFC78000000000078FCFCFCFC7806117D900C>58 D<FFFFF000FFFFFC000F
C03F000FC00F800FC007C00FC003E00FC003E00FC001F00FC001F00FC001F80FC001F80FC001F8
0FC001F80FC001F80FC001F80FC001F80FC001F80FC001F00FC001F00FC003F00FC003E00FC007
C00FC00F800FC03F00FFFFFE00FFFFF0001D1A7E9922>68 D<03FC001FFF003F1F007C1F007C1F
00F80E00F80000F80000F80000F80000F80000FC00007C00007E01803F87801FFF0003FC001111
7F9014>99 D<1E003F003F003F003F001E0000000000000000007F007F001F001F001F001F001F
001F001F001F001F001F001F001F001F00FFC0FFC00A1B809A0C>105 D<FF3F80FF7FC01FE7E0
1FC3E01F83E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E0FFE7FC
FFE7FC16117F9019>110 D<03F8000FFE003E0F803C07807803C07803C0F803E0F803E0F803E0
F803E0F803E0F803E07803C07C07C03E0F800FFE0003F80013117F9016>I<1FF07FF07070E030
F030FC00FFE07FF07FF81FFC01FCC03CE01CE01CF838FFF8CFE00E117F9011>115
D<FF1FE0FF1FE01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03
E01F07E01F0FE00FFFFC07FBFC16117F9019>117 D E /Ff 1 16 df<07E01FF83FFC7FFE7FFE
FFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E010107E9115>15 D
E /Fg 45 122 df<000FF800007FFC0001FC1E0003F01F0007E03F000FE03F000FC03F000FC03F
000FC00C000FC000000FC000000FC000000FC00000FFFFFF00FFFFFF000FC03F000FC03F000FC0
3F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000F
C03F000FC03F000FC03F000FC03F000FC03F000FC03F007FF0FFE07FF0FFE01B237FA21F>12
D<00003801C000003801C000007803C000007803C0000070038000007003800000F007800000F0
07800000E007000000E007000001E00F000001E00F000001C00E000001C00E000003C01E007FFF
FFFFFEFFFFFFFFFFFFFFFFFFFF0007003800000F007800000F007800000E007000000E00700000
0E007000001E00F000001E00F000001C00E000FFFFFFFFFFFFFFFFFFFF7FFFFFFFFE007803C000
0070038000007003800000F007800000F007800000E007000000E007000001E00F000001E00F00
0001C00E000001C00E000003C01E000003C01E000003801C000003801C0000282D7DA22F>35
D<0038007800F001E003C003C007800F000F001F001E003E003E003C007C007C007C007800F800
F800F800F800F800F800F800F800F800F800F800F800F80078007C007C007C003C003E003E001E
001F000F000F00078003C003C001E000F0007800380D317BA416>40 D<E000F00078003C001E00
1E000F000780078007C003C003E003E001E001F001F001F000F000F800F800F800F800F800F800
F800F800F800F800F800F800F800F001F001F001F001E003E003E003C007C0078007800F001E00
1E003C007800F000E0000D317DA416>I<7CFEFEFEFEFE7C07077C8610>46
D<00FE0007FFC00F83E01F01F03E00F83E00F87C007C7C007C7C007CFC007CFC007EFC007EFC00
7EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C7C00
7C3E00F83E00F81F01F00F83E007FFC000FE0017207E9F1C>48 D<00180000780001F800FFF800
FFF80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800
01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800
7FFFE07FFFE013207C9F1C>I<03FC001FFF803C1FC0700FE0FC07F0FE03F0FE03F8FE03F8FE01
F87C01F83803F80003F80003F00007F00007E0000FC0000F80001F00003E00007C0000F80001F0
1801C0180380180700180E00381FFFF03FFFF07FFFF0FFFFF0FFFFF0FFFFF015207D9F1C>I<01
FF0007FFC01F07E01E03F03F03F83F01F83F81F83F01F83F03F80E03F80003F00007F0000FE000
1F8001FF0001FF000007E00003F80001FC0000FC0000FE0000FE7C00FEFE00FEFE00FEFE00FEFE
00FCFE01FC7803F83E07F01FFFE003FF0017207E9F1C>I<0000E00001E00003E00003E00007E0
000FE0001FE0001FE00037E00077E000E7E001C7E00187E00307E00707E00E07E00C07E01807E0
3807E07007E0E007E0FFFFFEFFFFFE0007E00007E00007E00007E00007E00007E00007E000FFFE
00FFFE17207E9F1C>I<1800601E03E01FFFE01FFFC01FFF801FFF001FFC001BE0001800001800
0018000018000019FE001FFF801F0FC01C07E01803F00003F00003F80003F80003F87803F8FC03
F8FC03F8FC03F8FC03F8FC03F06007F0780FE03C1FC01FFF0007FC0015207D9F1C>I<003FC001
FFE003F07007C0F80F81F81F01F83E01F83E01F87E00F07C00007C0000FC0800FCFFC0FDFFF0FF
81F8FF00F8FE007CFE007CFE007EFC007EFC007EFC007EFC007E7C007E7C007E7E007E3E007C3E
00FC1F01F80FC3F007FFC000FF0017207E9F1C>I<6000007800007FFFFE7FFFFE7FFFFE7FFFFC
7FFFF87FFFF0E000E0E000C0C001C0C00380C00700000E00000E00001C00003C00003800007800
00780000F80000F00001F00001F00001F00001F00003F00003F00003F00003F00003F00003F000
03F00001E00017227DA11C>I<01FF0007FFC01F83E03F01F07E00F87C00F8FC007CFC007CFC00
7CFC007EFC007EFC007EFC007EFC00FE7C00FE7C00FE3E01FE3F03FE1FFF7E07FE7E00207E0000
7C00007C1E00FC3F00F83F00F83F01F03F03F03E07E01E1FC00FFF0003F80017207E9F1C>57
D<000070000000007000000000F800000000F800000000F800000001FC00000001FC00000003FE
00000003FE00000003FE00000006FF000000067F0000000E7F8000000C3F8000000C3F80000018
3FC00000181FC00000381FE00000300FE00000300FE00000600FF000006007F00000E007F80000
FFFFF80000FFFFF800018001FC00018001FC00038001FE00030000FE00030000FE000600007F00
0600007F00FFE00FFFF8FFE00FFFF825227EA12A>65 D<FFFFFF8000FFFFFFE00007F001F80007
F000FC0007F0007E0007F0007E0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F00
07F0007E0007F000FE0007F000FC0007F003F80007FFFFF00007FFFFF00007F001FC0007F0007E
0007F0003F0007F0003F8007F0001F8007F0001FC007F0001FC007F0001FC007F0001FC007F000
1FC007F0001FC007F0003F8007F0003F8007F0007F0007F001FE00FFFFFFF800FFFFFFC0002222
7EA128>I<0007FE0180003FFFC38000FF01E78003FC007F8007F0001F800FE0000F801FC0000F
801F800007803F800003807F000003807F000003807F00000180FE00000180FE00000000FE0000
0000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000007F00
0001807F000001807F000001803F800003801F800003001FC00007000FE0000E0007F0001C0003
FC00380000FF01F000003FFFC0000007FF000021227DA128>I<FFFFFFFCFFFFFFFC07F000FC07
F0003C07F0001C07F0000C07F0000E07F0000E07F0000607F0180607F0180607F0180607F01800
07F0380007F0780007FFF80007FFF80007F0780007F0380007F0180007F0180007F0180307F018
0307F0000307F0000607F0000607F0000607F0000E07F0000E07F0001E07F0003E07F001FCFFFF
FFFCFFFFFFFC20227EA125>69 D<0003FF00C0003FFFE1C000FF80F3C001FC003FC007F0001FC0
0FE0000FC01FC00007C01F800003C03F800001C07F000001C07F000001C07F000000C0FE000000
C0FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000F
FFFCFE000FFFFC7F00001FC07F00001FC07F00001FC03F80001FC01F80001FC01FC0001FC00FE0
001FC007F0003FC001FC003FC000FF80FFC0003FFFE3C00003FF00C026227DA12C>71
D<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
F0000007F0000007F0001807F0001807F0001807F0001807F0003807F0003807F0007007F00070
07F000F007F001F007F007F0FFFFFFF0FFFFFFF01D227EA122>76 D<FFF000000FFFFFF800001F
FF07F800001FE006FC000037E006FC000037E006FC000037E0067E000067E0067E000067E0063F
0000C7E0063F0000C7E0061F800187E0061F800187E0060FC00307E0060FC00307E0060FC00307
E00607E00607E00607E00607E00603F00C07E00603F00C07E00601F81807E00601F81807E00601
F81807E00600FC3007E00600FC3007E006007E6007E006007E6007E006003FC007E006003FC007
E006001F8007E006001F8007E006001F8007E006000F0007E0FFF00F00FFFFFFF00600FFFF3022
7EA135>I<0007FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E001F80003F
001F80003F003F00001F803F00001F807F00001FC07E00000FC07E00000FC0FE00000FE0FE0000
0FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00
000FC07F00001FC07F00001FC03F00001F803F80003F801F80003F000FC0007E0007E000FC0003
F001F80000FC07E000003FFF80000007FC000023227DA12A>79 D<FFFFFF00FFFFFFE007F007F0
07F001FC07F000FC07F0007E07F0007E07F0007F07F0007F07F0007F07F0007F07F0007F07F000
7E07F0007E07F000FC07F001FC07F007F007FFFFE007FFFF0007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000FF
FF8000FFFF800020227EA126>I<03FE0C0FFF9C1F03FC3E00FC7C007C78003CF8001CF8001CF8
000CFC000CFE0000FF0000FFF0007FFF007FFFE03FFFF01FFFF80FFFFC03FFFE007FFE0003FF00
00FF00007F00003FC0001FC0001FC0001FE0001FE0001EF0003EFC007CFF80F8E7FFF0C0FFC018
227DA11F>83 D<07FE001FFF803F0FC03F07E03F07F03F03F01E03F00003F00003F001FFF00FFF
F03FE3F07F03F07E03F0FE03F0FC03F0FC03F0FC07F0FE0FF07F1FF83FFDFF0FF0FF18167E951B
>97 D<FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000
1F8000001F8000001F8000001F8000001F8FE0001FBFFC001FF07E001FC03F001F801F801F801F
801F800F801F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F80
0F801F801F801F801F001FC03F001FF0FE001E7FF8001C1FE0001A237EA21F>I<01FF8007FFE0
1FC3F03F03F03E03F07E03F07C01E0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000
7E00007E00003F00303F80701FE1E007FFC001FF0014167E9519>I<0003FE000003FE0000007E
0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000000
7E0001FE7E0007FFFE001FC3FE003F00FE003E007E007E007E007C007E00FC007E00FC007E00FC
007E00FC007E00FC007E00FC007E00FC007E00FC007E007C007E007E007E003E00FE003F01FE00
1F83FE000FFF7FC001FC7FC01A237EA21F>I<01FE0007FF801F87E03F03E03E01F07E00F07C00
F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC0000FC00007E00007E00003F00181F80380FE0
F007FFE000FF8015167E951A>I<003F8001FFC003F7E007E7E007E7E00FC7E00FC3C00FC0000F
C0000FC0000FC0000FC0000FC000FFFC00FFFC000FC0000FC0000FC0000FC0000FC0000FC0000F
C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0007FFC007F
FC0013237FA211>I<01FE1F0007FFFF800F87F7801F03E7803E01F3003E01F0003E01F0003E01
F0003E01F0003E01F0003E01F0001F03E0000F87C0001FFF80001DFE0000180000001C0000001E
0000001FFFE0001FFFFC001FFFFE000FFFFF003FFFFF007E007F80FC001F80F8000F80F8000F80
F8000F80FC001F807E003F003F80FE000FFFF80001FFC00019217F951C>I<FF800000FF800000
1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
001F8000001F87F0001F9FFC001FF8FC001FF07E001FE07E001FC07E001FC07E001F807E001F80
7E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F
807E001F807E00FFF1FFC0FFF1FFC01A237EA21F>I<1F003F803F803F803F803F801F00000000
0000000000000000000000FF80FF801F801F801F801F801F801F801F801F801F801F801F801F80
1F801F801F801F801F801F80FFF0FFF00C247FA30F>I<FF80FF801F801F801F801F801F801F80
1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
801F801F801F801F801F80FFF0FFF00C237FA20F>108 D<FF87F80FF000FF9FFC3FF8001FBC7E
78FC001FF07FE0FE001FE03FC07E001FC03F807E001FC03F807E001F803F007E001F803F007E00
1F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F
007E001F803F007E001F803F007E001F803F007E001F803F007E00FFF1FFE3FFC0FFF1FFE3FFC0
2A167E952F>I<FF87F000FF9FFC001FF8FC001FF07E001FE07E001FC07E001FC07E001F807E00
1F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E
001F807E001F807E00FFF1FFC0FFF1FFC01A167E951F>I<00FE0007FFC00F83E01E00F03E00F8
7C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F8
1F01F00F83E007FFC000FE0017167E951C>I<FF8FE000FFBFFC001FF0FE001FC03F001F803F80
1F801F801F801F801F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800F
C01F801F801F801F801F803F001FC07F001FF0FE001FFFF8001F9FE0001F8000001F8000001F80
00001F8000001F8000001F8000001F8000001F800000FFF00000FFF000001A207E951F>I<FF1F
80FF7FC01F77E01FE7E01FC7E01FC7E01F83C01F80001F80001F80001F80001F80001F80001F80
001F80001F80001F80001F80001F80001F8000FFF800FFF80013167E9517>114
D<0FFB003FFF007C1F00780700F00300F00300F80000FF0000FFF8007FFC007FFE001FFF000FFF
80007F80C00F80C00F80E00780F00780F80F00FC1F00FFFE00C7F80011167E9516>I<00C00000
C00000C00000C00001C00001C00003C00007C0000FC0001FC000FFFF00FFFF000FC0000FC0000F
C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC1800FC1800FC1800FC1800F
C1800FE38007E70003FF0000FC0011207F9F16>I<FF83FE00FF83FE001F807E001F807E001F80
7E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F
807E001F807E001F80FE001F80FE001F81FE000FC3FE000FFF7FC003FC7FC01A167E951F>I<FF
F01FE0FFF01FE00FC007000FC006000FE00E0007E00C0007F01C0003F0180003F8180001F83000
01F8300000FC600000FC6000007EC000007EC000007FC000003F8000003F8000001F0000001F00
00000E0000000E00001B167F951E>I<FFF07FC0FFF07FC00FC01C0007E0380007F0700003F8E0
0001F8C00000FD8000007F0000007F0000003F0000001F8000003FC000003FE0000067F00000E3
F00001C1F8000381FC000700FE000E007E00FF81FFE0FF81FFE01B167F951E>120
D<FFF01FE0FFF01FE00FC007000FC006000FE00E0007E00C0007F01C0003F0180003F8180001F8
300001F8300000FC600000FC6000007EC000007EC000007FC000003F8000003F8000001F000000
1F0000000E0000000E0000000C0000000C00000018000078180000FC380000FC300000FC600000
69C000007F8000001F0000001B207F951E>I E /Fh 82 126 df<60F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F06000000000F0F0F0F00419779816>33 D<6030F078F078F078F078F078F078F078F078
F078E038E0380D0C7C9916>I<0387000387000387000387000387000387007FFFC0FFFFE0FFFF
E0070E00070E000F1E000F1E000E1C000E1C000E1C00FFFFE0FFFFE07FFFC01C38001C38001C38
001C38001C38001C380013197F9816>I<3803807C0380FE0780FE0780EE0F00EE0F00EE0E00EE
1E00FE1E00FE3C007C3C0038780000780000700000F00000F00001E00001E00001C00003C00003
C0000783800787C00F0FE00F0EE00E0EE01E0EE01E0EE03C0EE03C0FE03807C038038013207F9C
16>37 D<03C0000FE0001FF0001EF0001C70001C70001C70001CF7E01DF7E01FE7E01FCF000F8F
001F8E003F1E007F1E007F9C00F7FC00F3FC00E1F800E1F9C0F0F1C0F1F9C07FFFC07FFFC01F0F
0013197F9816>I<1C3C3E1E0E0E0E1E1C3C78F060070D799816>I<00E001E007C007800F001E00
3C0038007800700070007000F000E000E000E000E000E000E000E000F000700070007000780038
003C001E000F00078007C001E000E00B217A9C16>I<E000F0007C003C001E000F000780038003
C001C001C001C001E000E000E000E000E000E000E000E001E001C001C001C003C0038007800F00
1E003C007C00F000E0000B217C9C16>I<01C00001C00001C00001C00071C700F9CF807FFF001F
FC0007F00007F0001FFC007FFF00F9CF8071C70001C00001C00001C00001C00011127E9516>I<
01C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8001C00001C000
01C00001C00001C00001C00001C00001C00011137E9516>I<387C7E7E3E0E1E3CFCF860070B79
8416>I<FFFF80FFFF80FFFF8011037E8D16>I<70F8F8F8700505788416>I<0003800003800007
80000780000F00000F00001E00001E00003C00003C0000780000780000F00000F00001E00001E0
0003C00003C0000780000780000F00000F00001E00001E00003C00003C0000780000780000F000
00F00000E00000E0000011207E9C16>I<03E0000FF8001FFC001E3C00380E00780F0070070070
0700E00380E00380E00380E00380E00380E00380E00380E00380F00780700700700700780F003C
1E001E3C001FFC000FF80003E00011197E9816>I<0380038007800F801F80FF80FF80F3800380
03800380038003800380038003800380038003800380038003807FFC7FFC7FFC0E197C9816>I<
0FF0001FFC007FFE00783F00F00F00F00780F00380F00380000380000380000780000700000F00
001E00003C0000780000F00003E00007C0000F00001E03803C0380FFFF80FFFF80FFFF8011197E
9816>I<0FF0003FFC007FFE00781F00780F00780700300700000F00000F00003E0007FC0007F8
0007FC00001E00000F00000780000380600380F00380F00780F00F00F81F007FFE003FFC000FF0
0011197E9816>I<007C0000FC0000DC0001DC00039C00039C00071C000F1C000E1C001E1C003C
1C00381C00781C00F01C00FFFFE0FFFFE0FFFFE0001C00001C00001C00001C00001C0001FFC001
FFC001FFC013197F9816>I<3FFE003FFE003FFE00380000380000380000380000380000380000
3800003FF0003FFC003FFE003C1F00380700000780000380600380F00380F00780F00F00F83F00
7FFE003FFC000FF00011197E9816>I<00FC0003FE000FFF001F8F003E0F003C0F007806007000
00F04000F7F800FFFE00FFFE00F80F00F00780F00780E00380F00380F00380700380780780780F
003E1F001FFE000FFC0007F00011197E9816>I<07F0001FFC003FFE007C1F00F00780E00380E0
0380E003807007007C1F001FFC0007F0001FFC003C1E00700700F00780E00380E00380E00380F0
07807007007C1F003FFE001FFC0007F00011197E9816>56 D<70F8F8F870000000000000000070
F8F8F8700512789116>58 D<387C7C7C380000000000000000387C7C7C3C1C3C38F8F060061879
9116>I<000380000F80001F80007E0000FC0003F00007E0001F80003F0000FC0000F80000FC00
003F00001F800007E00003F00000FC00007E00001F80000F8000038011157E9616>I<7FFF00FF
FF80FFFF80000000000000000000000000000000FFFF80FFFF807FFF00110B7E9116>I<E00000
F80000FC00003F00001F800007E00003F00000FC00007E00001F80000F80001F80007E0000FC00
03F00007E0001F80003F0000FC0000F80000E0000011157E9616>I<00E00001F00001F00001B0
0001B00003B80003B80003B800031800071C00071C00071C00071C00071C000E0E000E0E000FFE
000FFE001FFF001C07001C07001C0700FF1FE0FF1FE0FF1FE013197F9816>65
D<FFF800FFFE00FFFF001C0F001C07801C03801C03801C03801C07801C07001FFF001FFE001FFE
001C1F001C03801C03C01C01C01C01C01C01C01C01C01C03C01C0780FFFF80FFFF00FFFC001219
7F9816>I<03F18007FF800FFF801F0F803C0780780780780380700380F00000E00000E00000E0
0000E00000E00000E00000E00000F000007003807803807803803C07801F0F000FFE0007FC0003
F00011197E9816>I<FFF800FFFE00FFFF001C0F001C07801C03C01C01C01C01C01C01E01C00E0
1C00E01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C0F80FFFF00
FFFE00FFF8001319809816>I<FFFFC0FFFFC0FFFFC01C01C01C01C01C01C01C01C01C00001C00
001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00
E0FFFFE0FFFFE0FFFFE013197F9816>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C
00001C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00001C00001C00001C
00001C0000FFC000FFC000FFC00013197F9816>I<03F3000FFF001FFF003F1F003C0F00780F00
780700700700F00000E00000E00000E00000E00000E07FC0E07FC0E07FC0F00700700700780F00
780F003C0F003F1F001FFF000FFF0003E70012197E9816>I<FFBFE0FFBFE0FFBFE01C07001C07
001C07001C07001C07001C07001C07001FFF001FFF001FFF001C07001C07001C07001C07001C07
001C07001C07001C07001C0700FFBFE0FFBFE0FFBFE013197F9816>I<FFFEFFFEFFFE03800380
03800380038003800380038003800380038003800380038003800380038003800380FFFEFFFEFF
FE0F197D9816>I<FF8FF0FF8FF0FF8FF01C07801C0F001C1F001C3E001C7C001C78001CF0001D
F0001FF0001FF8001FF8001FBC001F3C001E1E001C1E001C0F001C0F001C07801C0780FF8FF0FF
8FF0FF8FF01419809816>75 D<FFC000FFC000FFC0001C00001C00001C00001C00001C00001C00
001C00001C00001C00001C00001C00001C00001C00001C00001C00401C00E01C00E01C00E01C00
E0FFFFE0FFFFE0FFFFE013197F9816>I<FC07E0FE0FE0FE0FE03A0B803B1B803B1B803B1B803B
1B803BBB803BBB8039B38039B38039B38039B38039F38038E38038E38038038038038038038038
0380380380FE0FE0FE0FE0FE0FE013197F9816>I<FE3FE0FF3FE0FF3FE01D07001D87001D8700
1D87001DC7001DC7001CC7001CC7001CE7001CE7001CE7001C67001C67001C77001C77001C3700
1C37001C37001C1700FF9F00FF9F00FF8F0013197F9816>I<1FFC003FFE007FFF00780F00F007
80E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E003
80E00380F00780F00780780F007FFF003FFE001FFC0011197E9816>I<FFF800FFFE00FFFF001C
0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FF8001C00001C
00001C00001C00001C00001C00001C0000FF8000FF8000FF800012197F9816>I<FFE000FFF800
FFFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E001FFC001FF8001FFC001C3E00
1C1E001C0E001C0E001C0E001C0E701C0E701C0FF0FF8FF0FF87E0FF83C014197F9816>82
D<0FF3001FFF007FFF00781F00F00F00E00700E00700E00000F000007800007F80003FF8000FFC
0000FE00000F00000780000380000380E00380E00380F00780F81F00FFFE00FFFC00CFF8001119
7E9816>I<FFFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE000FFE000F
FE0013197F9816>I<FF8FF8FF8FF8FF8FF81C01C01C01C01C01C01C01C01C01C01C01C01C01C0
1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01E03C01E03C00F07800F8F8007FF00
03FE0000F8001519809816>I<FF1FE0FF1FE0FF1FE03803801C07001C07001C07001C07000E0E
000E0E000E0E000E0E00060C00071C00071C00071C00071C0003180003B80003B80003B80001B0
0001F00001F00000E00013197F9816>I<FE0FE0FE0FE0FE0FE07001C07001C07001C030018038
038038038038038038E38039F38039F38039B38019B30019B30019B30019B30019B30019B30019
13001B1B000F1E000F1E000E0E0013197F9816>I<7F3F807F3F807F3F800E1E000E1C00073C00
07380003B80003F00001F00001E00000E00001E00001F00003F00003B80007B800071C00071C00
0E0E000E0E001C0700FF1FE0FF1FE0FF1FE013197F9816>I<FF1FE0FF1FE0FF1FE01C07001C07
000E0E000E0E00071C00071C00071C0003B80003B80001F00001F00000E00000E00000E00000E0
0000E00000E00000E00000E00007FC0007FC0007FC0013197F9816>I<FFF0FFF0FFF0E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000FFF0FFF0FFF00C20789C16>91 D<E00000E00000F00000F0000078000078
00003C00003C00001E00001E00000F00000F000007800007800003C00003C00001E00001E00000
F00000F000007800007800003C00003C00001E00001E00000F00000F0000078000078000038000
038011207E9C16>I<FFF0FFF0FFF0007000700070007000700070007000700070007000700070
00700070007000700070007000700070007000700070007000700070FFF0FFF0FFF00C207F9C16
>I<FFFF80FFFF80FFFF8011037E7E16>95 D<0C1E3C7870F0E0E0E0F0F87870070D789B16>I<1F
E0007FF8007FFC00783C00301E00000E00007E000FFE003FFE007FCE00F80E00E00E00E00E00F0
1E00F83E007FFFE03FFFE01FC3E013127E9116>I<FE0000FE0000FE00000E00000E00000E0000
0E00000E7E000FFF800FFFC00FC7E00F01E00F00F00E00F00E00700E00700E00700E00700F00F0
0F00E00F81E00FC7C00FFFC00FFF800E7E001419809816>I<03FC0FFE1FFE3E1E780C7000F000
E000E000E000E000F00070077C073E1F1FFE0FFC03F010127D9116>I<007F00007F00007F0000
070000070000070000070007E7001FFF003FFF003E3F00780F00700F00F00700E00700E00700E0
0700E00700F00F00F00F00781F007E3F003FFFF01FF7F007E7F014197F9816>I<07E01FF83FFC
7C3E781FF00FF007FFFFFFFFFFFFE000F000F007780F7E1F3FFE0FFC03F010127D9116>I<001F
00007F8000FF8001E78001C30001C00001C000FFFF00FFFF00FFFF0001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C0007FFF007FFF007FFF0011197F9816
>I<03E7C00FFFE01FFFE01E3CE03C1E00380E00380E00380E003C1E001E3C001FFC003FF8003B
E0003800003C00001FFE003FFF807FFFC07807C0F001E0E000E0E000E0E000E0F001E07E0FC03F
FF801FFF0007FC00131C7F9116>I<FE0000FE0000FE00000E00000E00000E00000E00000E7E00
0FFF000FFF800FC7800F03800F03800E03800E03800E03800E03800E03800E03800E03800E0380
0E0380FFE7F8FFE7F8FFE7F81519809816>I<03C003C003C003C000000000000000007FC07FC0
7FC001C001C001C001C001C001C001C001C001C001C001C001C0FFFFFFFFFFFF101A7D9916>I<
007800780078007800000000000000001FF81FF81FF80038003800380038003800380038003800
380038003800380038003800380038003800380078F078F0F0FFF0FFE03F800D237E9916>I<FE
0000FE0000FE00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E1F000E3E000E7C000E
F8000FF0000FF8000FFC000FBC000F1E000E1F000E0F800E0780FFCFF0FFCFF0FFCFF014198098
16>I<FFC000FFC000FFC00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF80
11197E9816>I<FBC780FFEFC0FFFFE03E7CE03C78E03870E03870E03870E03870E03870E03870
E03870E03870E03870E03870E0FE7CF8FE7CF8FE7CF81512809116>I<FE7E00FFFF00FFFF800F
C7800F03800F03800E03800E03800E03800E03800E03800E03800E03800E03800E0380FFE7F8FF
E7F8FFE7F81512809116>I<03E0000FF8001FFC003C1E00780F00700700E00380E00380E00380
E00380E00380F00780700700780F003C1E001FFC000FF80003E00011127E9116>I<FE7E00FFFF
80FFFFC00FC7E00F01E00F00F00E00F00E00700E00700E00700E00700F00F00F00E00F81E00FC7
C00FFFC00FFF800E7E000E00000E00000E00000E00000E00000E0000FFE000FFE000FFE000141B
809116>I<FF1FC0FF7FE0FFFFE007F1E007E0C007C00007800007800007000007000007000007
0000070000070000070000FFFC00FFFC00FFFC0013127F9116>114 D<1FEC3FFC7FFCF03CE01C
E01CF8007FC03FF007FC003EE00EE00EF00EF83EFFFCFFF8CFF00F127D9116>I<070000070000
070000070000070000FFFF00FFFF00FFFF00070000070000070000070000070000070000070000
070100070380070380070780078F8003FF0003FE0000F80011177F9616>I<FE3F80FE3F80FE3F
800E03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E07800F0F800FFF
F807FFF803F3F81512809116>I<FF1FE0FF1FE0FF1FE01C07001E0F000E0E000E0E000E0E0007
1C00071C00071C00071C0003B80003B80003B80001F00001F00000E00013127F9116>I<FFBFE0
FFBFE0FFBFE038038038038038038038038038E38019F30019F30019B3001DB7001DB7001DB700
1DB7000F1E000F1E000F1E0013127F9116>I<7F3FC07F3FC07F3FC00F1C00073C0003B80003F0
0001F00000E00001E00001F00003B800073C00071C000E0E00FF3FE0FF3FE0FF3FE013127F9116
>I<FF9FE0FF9FE0FF9FE01C07000E07000E0E000E0E00070E00071C00071C00039C00039C0003
980001B80001B80000F00000F00000F00000E00000E00000E00001C00079C0007BC0007F80003F
00003C0000131B7F9116>I<7FFFC07FFFC07FFFC0700F80701F00703E00007C0000F80001F000
03E00007C0000F80001F01C03E01C07C01C0FFFFC0FFFFC0FFFFC012127F9116>I<003F8000FF
8001FF8001E00001C00001C00001C00001C00001C00001C00001C00001C00001C00003C000FF80
00FF0000FF0000FF800003C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001E00001FF8000FF80003F8011207E9C16>I<FE0000FF8000FFC00003C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001E00000FF80007F80007F8000FF8001E00001
C00001C00001C00001C00001C00001C00001C00001C00001C00003C000FFC000FF8000FE000011
207E9C16>125 D E /Fi 57 123 df<001FF3F800FFFFFE03F87F3E07E07E3E0FC07E3E0F807C
1C0F807C000F807C000F807C000F807C000F807C00FFFFFFC0FFFFFFC00F807C000F807C000F80
7C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F
807C000F807C007FE1FFC07FE1FFC01F1D809C1C>11 D<001FFC0000FFFC0003F87C0007E07C00
0FC07C000F807C000F807C000F807C000F807C000F807C000F807C00FFFFFC00FFFFFC000F807C
000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F80
7C000F807C000F807C000F807C007FF3FF807FF3FF80191D809C1B>13 D<007000E001C003C007
800F000F001E001E003C003C007C00780078007800F800F800F000F000F000F000F000F000F000
F800F8007800780078007C003C003C001E001E000F000F00078003C001C000E000700C297D9E13
>40 D<E000700038003C001E000F000F000780078003C003C003E001E001E001E001F001F000F0
00F000F000F000F000F000F001F001F001E001E001E003E003C003C0078007800F000F001E003C
0038007000E0000C297D9E13>I<7CFEFFFFFFFF7F0307060E1C3C7830080F7D860D>44
D<FFE0FFE0FFE0FFE00B047F8A10>I<00600001E0000FE000FFE000F3E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E0007FFF807FFF80111B7D9A18>49 D<07F8003FFF00787F80F81FC0
FC0FC0FC0FE0FC0FE0FC07E07807E0000FE0000FE0000FC0001F80003F00003E00007C0000F000
01E00003C0600780600F00601C00E03FFFC07FFFC0FFFFC0FFFFC0FFFFC0131B7E9A18>I<0003
8000000380000007C0000007C0000007C000000FE000000FE000001FF000001BF000001BF00000
31F8000031F8000061FC000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF80
03001F8003001F8006000FC006000FC00E000FE00C0007E0FFC07FFEFFC07FFE1F1C7E9B24>65
D<FFFFF800FFFFFF000FC01F800FC00FC00FC00FC00FC00FE00FC00FE00FC00FE00FC00FE00FC0
0FE00FC00FC00FC01F800FFFFF000FFFFE000FC03F800FC00FC00FC007E00FC007E00FC007F00F
C007F00FC007F00FC007F00FC007F00FC007E00FC00FE00FC01FC0FFFFFF80FFFFFC001C1C7E9B
22>I<001FF06000FFFCE003FC1FE00FE007E01FC003E01F8001E03F0000E07F0000E07F0000E0
7E000060FE000060FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000
607F0000607F0000603F0000E01F8000C01FC001C00FE0078003FC1F0000FFFC00001FF0001B1C
7D9B22>I<FFFFF800FFFFFF000FC01FC00FC007E00FC003F00FC001F80FC001F80FC000FC0FC0
00FC0FC000FC0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0F
C000FC0FC000FC0FC000FC0FC001F80FC001F80FC003F00FC007E00FC01FC0FFFFFF00FFFFF800
1F1C7E9B25>I<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003800FC18180
0FC181800FC181800FC180000FC380000FFF80000FFF80000FC380000FC180000FC180000FC180
600FC180600FC000E00FC000C00FC000C00FC001C00FC001C00FC003C00FC00F80FFFFFF80FFFF
FF801B1C7E9B1F>I<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003800FC0
01800FC181800FC181800FC180000FC180000FC380000FFF80000FFF80000FC380000FC180000F
C180000FC180000FC180000FC000000FC000000FC000000FC000000FC000000FC00000FFFF0000
FFFF0000191C7E9B1E>I<001FF81800FFFE3803FC0FF807F003F80FC000F81F8000783F800078
7F0000387F0000387E000018FE000018FE000000FE000000FE000000FE000000FE000000FE007F
FFFE007FFF7E0001F87F0001F87F0001F83F8001F81F8001F80FE001F807F003F803FE07F800FF
FE78001FF818201C7D9B26>I<FFFC3FFFFFFC3FFF0FC003F00FC003F00FC003F00FC003F00FC0
03F00FC003F00FC003F00FC003F00FC003F00FC003F00FFFFFF00FFFFFF00FC003F00FC003F00F
C003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F0
FFFC3FFFFFFC3FFF201C7E9B25>I<FFFFFFFF07E007E007E007E007E007E007E007E007E007E0
07E007E007E007E007E007E007E007E007E007E007E007E007E007E0FFFFFFFF101C7F9B12>I<
07FFF007FFF0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80
001F80001F80001F80001F80001F80001F80001F80301F80FC1F80FC1F80FC1F80FC3F80F87F00
7FFE001FF000141C7F9B19>I<FFFC07FFFFFC07FF0FC000E00FC003C00FC007800FC00F000FC0
1E000FC03C000FC070000FC0E0000FC3C0000FC7C0000FCFE0000FDFF0000FFFF0000FF3F8000F
E1FC000FC1FC000FC0FE000FC07F000FC03F000FC03F800FC01FC00FC00FE00FC00FE00FC007F0
FFFC3FFFFFFC3FFF201C7E9B25>I<FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC000
0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0030FC0030FC0030FC007
0FC0070FC0060FC00E0FC01E0FC07EFFFFFEFFFFFE181C7E9B1D>I<FFC00003FFFFE00007FF0F
E00007F00DF0000DF00DF0000DF00DF0000DF00CF80019F00CF80019F00C7C0031F00C7C0031F0
0C3E0061F00C3E0061F00C1F00C1F00C1F00C1F00C1F00C1F00C0F8181F00C0F8181F00C07C301
F00C07C301F00C03E601F00C03E601F00C01FC01F00C01FC01F00C01FC01F00C00F801F00C00F8
01F0FFC0701FFFFFC0701FFF281C7E9B2D>I<FFE003FFFFF003FF0FF800300FF800300DFC0030
0CFE00300CFF00300C7F80300C3F80300C1FC0300C0FE0300C07F0300C07F8300C03FC300C01FC
300C00FE300C007F300C007FB00C003FF00C001FF00C000FF00C0007F00C0003F00C0003F00C00
01F00C0000F0FFC00070FFC00030201C7E9B25>I<003FE00001FFFC0003F07E000FC01F801F80
0FC01F0007C03F0007E07F0007F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8FE
0003F8FE0003F8FE0003F8FE0003F87E0003F07E0003F07F0007F03F0007E03F800FE01F800FC0
0FC01F8003F07E0001FFFC00003FE0001D1C7D9B24>I<FFFFF800FFFFFE000FC03F800FC01F80
0FC00FC00FC00FE00FC00FE00FC00FE00FC00FE00FC00FE00FC00FE00FC00FC00FC01F800FC03F
800FFFFE000FFFF8000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0
00000FC000000FC00000FFFC0000FFFC00001B1C7E9B21>I<FFFFF00000FFFFFE00000FC03F00
000FC01F80000FC00FC0000FC00FE0000FC00FE0000FC00FE0000FC00FE0000FC00FE0000FC00F
C0000FC01F80000FC03F00000FFFFE00000FFFF800000FC0FC00000FC07E00000FC03E00000FC0
3F00000FC03F00000FC03F00000FC03F80000FC03F80000FC03F80000FC03FC1800FC03FE380FF
FC1FFF00FFFC07FE00211C7E9B24>82 D<07F8601FFFE03E0FE07803E07001E0F000E0F00060F8
0060F80000FE0000FFF0007FFE007FFF803FFFC01FFFE007FFE0007FF00007F00001F00001F0C0
00F0C000F0E000F0E001E0F001E0FE07C0FFFF80C3FE00141C7D9B1B>I<7FFFFFE07FFFFFE078
1F81E0701F80E0601F8060E01F8070C01F8030C01F8030C01F8030C01F8030001F8000001F8000
001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80
00001F8000001F8000001F8000001F800007FFFE0007FFFE001C1C7E9B21>I<FFFC03FFFFFC03
FF0FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC0
00300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300F
C0007007E0006007E000E003F001C001FC0F80007FFF00000FF800201C7E9B25>I<FFFC01FF80
FFFC01FF800FC000180007E000300007E000300007F000700003F000600003F800E00001F800C0
0001FC00C00000FC01800000FC018000007E030000007E030000007F070000003F060000003F8E
0000001F8C0000001FCC0000000FD80000000FD800000007F000000007F000000007F000000003
E000000003E000000001C000000001C00000211C7F9B24>I<FFFC7FFE0FFCFFFC7FFE0FFC0FC0
07E000C00FC007F000C00FE003F001C007E003F0018007E007F8018003F007F8030003F007F803
0003F80CFC070001F80CFC060001F81CFE060001FC187E0E0000FC187E0C0000FC387F0C00007E
303F1800007E303F1800007F601FB800003F601FB000003FE01FF000003FC00FF000001FC00FE0
00001FC00FE000000F8007C000000F8007C000000F0003C0000007000380000007000380002E1C
7F9B31>I<7FFE1FFE007FFE1FFE0007F001800003F803800001FC07000000FC06000000FE0C00
00007F1C0000003F380000003FB00000001FE00000000FE00000000FE000000007F000000003F8
00000007F80000000FFC0000000CFE000000187E000000387F000000703F800000601F800000C0
1FC00001C00FE000018007F000030007F000FFF03FFF80FFF03FFF80211C7F9B24>I<7FFFFC7F
FFFC7E01FC7803F87007F0E007F0E00FE0C01FE0C01FC0C03F80003F80007F0000FE0000FE0001
FC0001FC0003F80607F00607F0060FE0061FE00E1FC00E3F801C3F801C7F003CFE00FCFFFFFCFF
FFFC171C7D9B1D>90 D<0FFC003FFF003E1F803E0FC03E07C01C07C00007C003FFC01FFFC07F87
C07F07C0FE07C0FC07C0FC07C0FE0FC07E3FE03FFBF80FE1F815127F9117>97
D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F3FC01FFF
F01FE1F81F80FC1F007C1F007E1F007E1F007E1F007E1F007E1F007E1F007E1F007E1F00FC1F80
FC1FE1F81CFFF0183FC0171D7F9C1B>I<03FC001FFF003F1F007E1F007E1F00FC0E00FC0000FC
0000FC0000FC0000FC0000FC0000FC00007E01807F03803F87001FFE0003F80011127E9115>I<
000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F007F9F01FFFF0
3F0FF07E03F07E01F0FC01F0FC01F0FC01F0FC01F0FC01F0FC01F0FC01F0FC01F07C01F07E03F0
3F0FF01FFFFE07F1FE171D7E9C1B>I<03FC000FFF003F0F803E07C07E03C07C03E0FC03E0FFFF
E0FFFFE0FC0000FC0000FC00007C00007E00603F00E01FC3C00FFF8003FE0013127F9116>I<00
7F0001FFC003E7C007C7C00FC7C00F83800F80000F80000F80000F80000F8000FFF800FFF8000F
80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F
80007FF8007FF800121D809C0F>I<07F9F01FFFF83E1F787C0FB87C0F807C0F807C0F807C0F80
7C0F803E1F003FFE0037F8007000007000007800003FFF803FFFE01FFFF07FFFF0F801F8F000F8
F00078F00078F800F87E03F03FFFE007FF00151B7F9118>I<FF0000FF00001F00001F00001F00
001F00001F00001F00001F00001F00001F00001F1FE01F7FF01FF1F81FC0F81F80F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF181D7F9C1B
>I<1E003F007F007F007F003F001E0000000000000000000000FF00FF001F001F001F001F001F
001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>I<00F801FC01FC01FC01
FC01FC00F80000000000000000000003FC03FC007C007C007C007C007C007C007C007C007C007C
007C007C007C007C007C007C007C007C707CF87CF8FCF9F87FF03F800E26839D0F>I<FF0000FF
00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FF81F0FF81F03801F
0F001F1E001F3C001F78001FF8001FFC001FFE001F3E001F1F001F1F801F0F801F07C01F03E0FF
C7FCFFC7FC161D7F9C19>I<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1D7F9C0E>I<FF
1FE0FF00FF7FF3FF801FF1FF8FC01FC0FE07C01F80FC07C01F00F807C01F00F807C01F00F807C0
1F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807
C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF1FE0FF7FF01FF1F81FC0F81F80F81F00F81F00F8
1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>
I<01FC000FFF801F07C03E03E07C01F07C01F0FC01F8FC01F8FC01F8FC01F8FC01F8FC01F87C01
F07C01F03E03E01F07C00FFF8001FC0015127F9118>I<FF3FC0FFFFF01FE3F81F80FC1F00FC1F
00FE1F007E1F007E1F007E1F007E1F007E1F007E1F00FE1F00FC1F81FC1FE3F81FFFF01F3FC01F
00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B>I<FE3E00FEFF801EEF80
1FCF801F8F801F87001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0000
FFF000FFF00011127F9114>114 D<1FF87FF87078E018E018F000FF80FFF07FF83FF80FFC007C
C03CE01CE01CF878FFF8CFE00E127E9113>I<030003000300070007000F000F003F00FFFCFFFC
1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C1F9C0FF803F00E1A7F9913>I<
FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8
1F01F81F01F81F87F80FFFFF03FCFF18127F911B>I<FFC1FCFFC1FC1F00601F80E00F80C00FC0
C007C18007C18003E30003E30001F60001F60001FE0000FC0000FC000078000078000030001612
7F9119>I<FF8FF8FEFF8FF8FE1F03E0301F03E0301F83E0700F83F0600F86F06007C6F0C007CE
F8C007EC79C003EC7D8003F83D8001F83F0001F83F0001F01F0000F01E0000E00E0000E00E001F
127F9122>I<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F80000F800007C0000FE00
01DF00039F00070F800607C00C03E0FF07FCFF07FC16127F9119>I<FFC1FCFFC1FC1F00601F80
E00F80C00FC0C007C18007C18003E30003E30001F60001F60001FE0000FC0000FC000078000078
00003000003000006000706000F8E000C0C000E380007F00003E0000161A7F9119>I<3FFF803F
FF803C3F80307F00707E0060FC0061FC0063F80003F00007E1800FE1801FC1801F83803F03007F
0700FE0F00FFFF00FFFF0011127F9115>I E /Fj 11 122 df<3078F06005047C830D>46
D<03CC063C0C3C181C3838303870387038E070E070E070E070E0E2C0E2C0E261E462643C380F12
7B9115>97 D<01F007080C08181C3838300070007000E000E000E000E000E000E008E010602030
C01F000E127B9113>99 D<01E007100C1018083810701070607F80E000E000E000E000E000E008
6010602030C01F000D127B9113>101 D<00F3018F030F06070E0E0C0E1C0E1C0E381C381C381C
381C383830383038187818F00F700070007000E000E0C0C0E1C0C3007E00101A7D9113>103
D<01800380010000000000000000000000000000001C002600470047008E008E000E001C001C00
1C0038003800710071007100720072003C00091C7C9B0D>105 D<3C1E0780266318C04683A0E0
4703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C0701C01C0701C01C070380380E03
88380E0388380E0708380E0710701C0320300C01C01D127C9122>109 D<3C3C00264600468700
4707008E07008E07000E07000E07001C0E001C0E001C0E001C1C00381C40381C40383840383880
701900300E0012127C9117>I<00C001C001C001C00380038003800380FFE00700070007000E00
0E000E000E001C001C001C001C00384038403840388019000E000B1A7D990E>116
D<1E06270E470E4706870287020E020E021C041C041C041C0818083808181018200C4007800F12
7C9113>118 D<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C1C1C3838383818381838
1C7007F00070007000E0E0C0E1C0818047003C00101A7C9114>121 D E
/Fk 48 123 df<0003F0000000000FFC000000001F1C000000003E0E000000007C0F00000000FC
0700000000FC0700000001F80700000001F80700000001F80700000001FC0E00000001FC0E0000
0001FC1C00000001FC3800000001FC7000000001FEF0007FFC00FFE0007FFC00FF80007FFC00FF
0000078000FF00000F00007F80000E00007F80001E00007FC0003C0001FFC000380003FFE00078
00079FF000F0000F8FF000E0001F0FF801E0003F07FC03C0007F03FE0780007F03FF0F0000FF01
FF0E0000FF00FF9E0000FF007FFC0000FF803FF80000FF801FF000387F800FFC00387FC01FFE00
703FE07FFF81F01FFFFC7FFFE007FFF01FFFC000FF8001FE002E2A7DA935>38
D<00030007001E003C007800F800F001E003E007C007C00F800F801F801F003F003F003E003E00
7E007E007E007C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC007C007E
007E007E003E003E003F003F001F001F800F800F8007C007C003E001E000F000F80078003C001E
00070003103C7AAC1B>40 D<C000E00078003C001E001F000F00078007C003E003E001F001F001
F800F800FC00FC007C007C007E007E007E003E003F003F003F003F003F003F003F003F003F003F
003F003F003F003F003E007E007E007E007C007C00FC00FC00F801F801F001F003E003E007C007
800F001F001E003C007800E000C000103C7CAC1B>I<3E007F00FF80FF80FFC0FFC0FFC07FC03E
C000C000C001C0018001800380070006000E001C00380030000A157B8813>44
D<FFFF80FFFF80FFFF80FFFF80FFFF80FFFF8011067F9017>I<3E007F00FF80FF80FF80FF80FF
807F003E0009097B8813>I<003F800001FFF00007E0FC000FC07E001F803F001F803F003F001F
803F001F807F001FC07F001FC07F001FC07F001FC0FF001FE0FF001FE0FF001FE0FF001FE0FF00
1FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF
001FE07F001FC07F001FC07F001FC07F001FC03F001F803F001F801F803F001F803F000FC07E00
07E0FC0001FFF000003F80001B277DA622>48 D<000700000F00007F0007FF00FFFF00FFFF00F8
FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
FF0000FF0000FF0000FF007FFFFE7FFFFE7FFFFE17277BA622>I<00FFC00007FFF8001FFFFE00
3F03FF007E00FF807F007FC0FF807FC0FF803FE0FF803FE0FF803FE0FF801FE07F001FE03E003F
E000003FE000003FC000003FC000007F8000007F800000FF000001FE000001FC000003F8000007
E000000FC000001F8000003E00E0007C00E0007800E000F001C001E001C0038001C007FFFFC00F
FFFFC01FFFFFC03FFFFFC07FFFFF80FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007FC00003
FFF00007FFFC000FC1FE001F80FF003FC0FF003FE07F803FE07F803FE07F803FE07F803FE07F80
1FC0FF800F80FF000000FF000001FE000003FC000007F00000FFC00000FFF8000001FE000000FF
0000007F8000007FC000003FC000003FE01E003FE07F803FE07F803FE0FFC03FE0FFC03FE0FFC0
3FE0FFC03FC0FFC07FC07F807F807F00FF803F81FF001FFFFC0007FFF80000FFC0001B277DA622
>I<0000070000000F0000001F0000003F0000007F000000FF000000FF000001FF000003FF0000
077F00000F7F00000E7F00001C7F0000387F0000707F0000F07F0000E07F0001C07F0003807F00
07007F000F007F000E007F001C007F0038007F0070007F00E0007F00FFFFFFF8FFFFFFF8FFFFFF
F80000FF000000FF000000FF000000FF000000FF000000FF000000FF00007FFFF8007FFFF8007F
FFF81D277EA622>I<0C0007000FC03F000FFFFE000FFFFE000FFFFC000FFFF8000FFFF0000FFF
C0000FFF00000E0000000E0000000E0000000E0000000E0000000E0000000E7FC0000FFFF8000F
C1FE000E007F000C007F8000003F8000003FC000003FC000003FE000003FE03E003FE07F003FE0
FF803FE0FF803FE0FF803FE0FF803FC0FF003FC07E007FC078007F803C00FF001F83FE000FFFFC
0007FFF00000FF80001B277DA622>I<0007F800003FFC0000FFFE0001FE1F0007F81F000FE03F
800FC07F801FC07F803F807F803F807F807F803F007F001E007F0000007F000000FF000000FF1F
E000FF3FF800FF70FE00FFE03F00FFC03F80FF801FC0FF801FC0FF801FC0FF001FE0FF001FE0FF
001FE0FF001FE07F001FE07F001FE07F001FE07F001FE03F801FC03F801FC01F803F800FC03F80
07F0FF0003FFFC0001FFF800007FE0001B277DA622>I<380000003E0000003FFFFFF03FFFFFF0
3FFFFFF03FFFFFE07FFFFFC07FFFFF807FFFFF807FFFFF0070001E0070003C0070007800E00070
00E000F000E001E0000003C0000007C00000078000000F8000000F0000001F0000003F0000003F
0000003F0000007E0000007E000000FE000000FE000000FE000000FE000001FE000001FE000001
FE000001FE000001FE000001FE000001FE000001FE000000FC0000007800001C297CA822>I<00
7FC00001FFF80007FFFC000FC0FE000F003F001E001F001E001F803E000F803E000F803F000F80
3FC00F803FF01F803FF81F003FFE3F001FFFFE001FFFFC000FFFF00007FFFC0003FFFE0003FFFF
000FFFFF801FBFFFC03F0FFFC07E03FFE07C00FFE0FC007FE0F8001FE0F80007E0F80007E0F800
03E0F80003E0FC0003C07C0007C07E0007803F000F801FC07F000FFFFE0007FFF80000FFC0001B
277DA622>I<007FC00003FFF00007FFFC000FE0FE001FC07E003F803F007F003F807F003F80FF
001FC0FF001FC0FF001FC0FF001FC0FF001FE0FF001FE0FF001FE0FF001FE07F003FE07F003FE0
7F003FE03F807FE01F80FFE00FE1DFE003FF9FE000FF1FE000001FE000001FC000001FC00F001F
C01F803FC03FC03F803FC03F803FC07F003FC07F003F80FE001F01FC001F07F8000FFFE00007FF
C00001FE00001B277DA622>I<00007FF801800007FFFE0780001FFFFF8F80007FF80FFF8000FF
8001FF8003FE00007F8007FC00003F8007F800001F800FF000000F801FE000000F803FE0000007
803FC0000007807FC0000003807FC0000003807FC000000380FF8000000000FF8000000000FF80
00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
00FF8000000000FF80000000007FC0000000007FC0000003807FC0000003803FC0000003803FE0
000003801FE0000007800FF00000070007F800000F0007FC00001E0003FE00003C0000FF8000F8
00007FF807F000001FFFFFC0000007FFFF000000007FF8000029297CA832>67
D<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FE001FE003FE0007F003FE0001F003FE0000F003FE00
00F003FE00007003FE00007003FE00007003FE01C07803FE01C03803FE01C03803FE01C03803FE
03C00003FE03C00003FE0FC00003FFFFC00003FFFFC00003FFFFC00003FE0FC00003FE03C00003
FE03C00003FE01C00E03FE01C00E03FE01C00E03FE01C01C03FE00001C03FE00001C03FE00001C
03FE00003C03FE00003803FE00007803FE0000F803FE0001F803FE0003F803FE001FF8FFFFFFFF
F0FFFFFFFFF0FFFFFFFFF027297DA82D>69 D<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FE003FC0
03FE000FE003FE0003E003FE0001E003FE0001E003FE0000E003FE0000E003FE0000E003FE0000
F003FE03807003FE03807003FE03807003FE03800003FE03800003FE07800003FE0F800003FFFF
800003FFFF800003FFFF800003FE0F800003FE07800003FE03800003FE03800003FE03800003FE
03800003FE03800003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003
FE00000003FE00000003FE000000FFFFFE0000FFFFFE0000FFFFFE000024297DA82B>I<00007F
F003000007FFFE0F00001FFFFF9F00007FF00FFF0000FF8003FF0003FE0000FF0007FC00007F00
0FF800003F000FF000001F001FE000001F003FE000000F003FC000000F007FC0000007007FC000
0007007FC000000700FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000
FF8000000000FF8000000000FF8000000000FF8000000000FF8003FFFFF8FF8003FFFFF87FC003
FFFFF87FC00001FF007FC00001FF003FC00001FF003FE00001FF001FE00001FF000FF00001FF00
0FF80001FF0007FC0001FF0003FE0003FF0000FF8003FF00007FF01FFF00001FFFFF3F000007FF
FE1F0000007FF007002D297CA836>I<FFFFFEFFFFFEFFFFFE01FF0001FF0001FF0001FF0001FF
0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF
0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF
0001FF0001FF0001FF0001FF00FFFFFEFFFFFEFFFFFE17297FA81A>73 D<FFFFFE0000FFFFFE00
00FFFFFE000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00
000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE
00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE0001C003
FE0001C003FE0001C003FE0001C003FE0003C003FE00038003FE00038003FE00078003FE000780
03FE000F8003FE000F8003FE001F8003FE007F8003FE01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF
0022297DA829>76 D<FFFF0000003FFFC0FFFF0000003FFFC0FFFF8000007FFFC003FF8000007F
F00003FF8000007FF00003BFC00000EFF00003BFC00000EFF000039FE00001CFF000039FE00001
CFF000038FF000038FF000038FF000038FF000038FF000038FF0000387F800070FF0000387F800
070FF0000383FC000E0FF0000383FC000E0FF0000381FE001C0FF0000381FE001C0FF0000381FE
001C0FF0000380FF00380FF0000380FF00380FF00003807F80700FF00003807F80700FF0000380
3FC0E00FF00003803FC0E00FF00003803FC0E00FF00003801FE1C00FF00003801FE1C00FF00003
800FF3800FF00003800FF3800FF000038007FF000FF000038007FF000FF000038007FF000FF000
038003FE000FF000038003FE000FF000038001FC000FF000038001FC000FF000038000F8000FF0
00FFFE00F803FFFFC0FFFE00F803FFFFC0FFFE007003FFFFC03A297DA841>I<0000FFE0000000
07FFFC0000003FC07F8000007F001FC00001FC0007F00003F80003F80007F00001FC000FF00001
FE001FE00000FF001FE00000FF003FC000007F803FC000007F807FC000007FC07F8000003FC07F
8000003FC07F8000003FC0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF800000
3FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE07F8000003FC07F
C000007FC07FC000007FC03FC000007F803FC000007F801FE00000FF001FE00000FF000FF00001
FE0007F00001FC0003F80003F80001FC0007F00000FF001FE000003FC07F8000000FFFFE000000
00FFE000002B297CA834>79 D<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FE007FE00003FE
000FF00003FE0007F80003FE0007FC0003FE0003FC0003FE0003FE0003FE0003FE0003FE0003FE
0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FC0003FE0007F80003FE0007F80003FE
001FE00003FE007FC00003FFFFFE000003FFFFFC000003FE01FF000003FE007FC00003FE007FE0
0003FE003FE00003FE003FF00003FE001FF00003FE001FF00003FE001FF00003FE001FF00003FE
001FF00003FE001FF00003FE001FF00003FE001FF00003FE001FF00703FE001FF00703FE000FF8
0703FE000FF80FFFFFF807FE1EFFFFF801FFFCFFFFF8003FF030297DA834>82
D<00FF806003FFF0E00FFFFFE01FC0FFE03F001FE03E0007E07E0003E07C0003E0FC0001E0FC00
01E0FC0000E0FE0000E0FF0000E0FF800000FFF80000FFFFC0007FFFF8007FFFFE003FFFFF801F
FFFFC00FFFFFC007FFFFE001FFFFF0003FFFF00003FFF800001FF800000FF8000007F8E00003F8
E00001F8E00001F8E00001F8F00001F8F00001F0F80003F0FC0003E0FF0007E0FFE01FC0FFFFFF
80E1FFFE00C03FF8001D297CA826>I<FFFFF801FFFCFFFFF801FFFCFFFFF801FFFC03FE000007
0003FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE
0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE000007
0003FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE
0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE000007
0003FE00000F0001FE00000E0001FF00000E0000FF00001E0000FF80003C00007F80007800003F
E001F800001FF807F0000007FFFFC0000001FFFF800000003FFC00002E297DA835>85
D<03FFC0000FFFF0001F81FC003FC0FE003FC07F003FC07F003FC03F803FC03F801F803F800000
3F8000003F80001FFF8001FFFF8007FE3F801FE03F803FC03F807F803F807F003F80FE003F80FE
003F80FE003F80FE007F80FF007F807F00FFC03FC3DFFC1FFF8FFC03FE07FC1E1B7E9A21>97
D<003FF80001FFFE0007F83F000FE07F801FC07F803F807F803F807F807F807F807F003F00FF00
0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000007F0000007F
8000003F8001C03FC001C01FC003C00FE0078007F83F0001FFFC00003FF0001A1B7E9A1F>99
D<00003FF80000003FF80000003FF800000003F800000003F800000003F800000003F800000003
F800000003F800000003F800000003F800000003F800000003F800000003F800000003F800003F
E3F80001FFFBF80003F83FF8000FE00FF8001FC007F8003F8003F8003F8003F8007F8003F8007F
0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800
FF0003F800FF0003F8007F0003F8007F0003F8003F8003F8003F8007F8001FC00FF8000FE01FF8
0007F07FFF8001FFFBFF80003FC3FF80212A7EA926>I<003FE00001FFFC0007F07E000FE03F00
1FC01F803F800FC03F800FC07F000FC07F0007E0FF0007E0FF0007E0FF0007E0FFFFFFE0FFFFFF
E0FF000000FF000000FF000000FF0000007F0000007F8000003F8000E03F8001E01FC001C00FE0
07C003F81F8001FFFE00003FF8001B1B7E9A20>I<000FF800003FFE0000FF3F0001FC7F8003F8
7F8003F87F8007F07F8007F07F8007F03F0007F0000007F0000007F0000007F0000007F0000007
F00000FFFFC000FFFFC000FFFFC00007F0000007F0000007F0000007F0000007F0000007F00000
07F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
0007F0000007F0000007F0000007F0000007F000007FFF80007FFF80007FFF8000192A7EA915>
I<00FF81F007FFF7FC0FE3FF7C1F80FCFC3F80FE7C3F007E787F007F007F007F007F007F007F00
7F007F007F007F007F003F007E003F80FE001F80FC000FE3F8001FFFF00018FF8000380000003C
0000003C0000003E0000003FFFFC003FFFFF001FFFFFC00FFFFFE007FFFFF03FFFFFF07E000FF8
7C0001F8F80001F8F80000F8F80000F8F80000F8FC0001F87E0003F03F0007E01FE03FC007FFFF
0000FFF8001E287E9A22>I<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE0
0000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
E00000000FE00000000FE0FF00000FE3FFC0000FE787E0000FEE07F0000FFC03F8000FF803F800
0FF003F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80212A7DA926>I<0F801FC01F
E03FE03FE03FE01FE01FC00F800000000000000000000000000000FFE0FFE0FFE00FE00FE00FE0
0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFF
FEFFFE0F2B7DAA14>I<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7DA914>108 D<FFC07F800FF000FFC1FFE03FFC00
FFC7C3F0F87E000FCF03F9E07F000FDC01FB803F000FF801FF003F800FF001FE003F800FF001FE
003F800FF001FE003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800F
E001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC00
3F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F80FFFE
1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3FFF8351B7D9A3A>I<FFC0FF0000FFC3FFC000FFC787
E0000FCE07F0000FDC03F8000FF803F8000FF003F8000FF003F8000FF003F8000FE003F8000FE0
03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80
FFFE3FFF80211B7D9A26>I<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007
E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF00
07F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC0000
3FE0001D1B7E9A22>I<FFE3FE0000FFEFFFC000FFFF0FF0000FFC03F8000FF001FC000FE001FE
000FE000FE000FE000FF000FE000FF000FE0007F800FE0007F800FE0007F800FE0007F800FE000
7F800FE0007F800FE0007F800FE0007F800FE0007F800FE000FF000FE000FF000FE000FE000FF0
01FE000FF003FC000FF807F8000FFE0FE0000FEFFFC0000FE3FE00000FE00000000FE00000000F
E00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000000FFFE000000
FFFE000000FFFE00000021277E9A26>I<FFC7F0FFCFFCFFDC7E0FD8FF0FF8FF0FF0FF0FF0FF0F
F0FF0FE07E0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F
E0000FE0000FE0000FE000FFFF00FFFF00FFFF00181B7E9A1C>114 D<03FE701FFFF03E03F078
01F07000F0F00070F00070F80070FE0000FFF000FFFF007FFFC03FFFE01FFFF007FFF800FFFC00
07FC0000FCE0007CE0003CF0003CF0003CF80078FC0078FF01F0FFFFC0E1FF00161B7E9A1B>I<
00700000700000700000700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0
FFFFF007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000
07F00007F03807F03807F03807F03807F03807F03807F03803F87001FCF000FFE0003FC015267F
A51B>I<FFE03FF800FFE03FF800FFE03FF8000FE003F8000FE003F8000FE003F8000FE003F800
0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE007F8000FE007F8000FE00F
F80007E01FF80003F83BFF8001FFF3FF80007FE3FF80211B7D9A26>I<FFFE03FF80FFFE03FF80
FFFE03FF8007F000700007F000700007F800F00003F800E00003FC01E00001FC01C00001FC01C0
0000FE03800000FE038000007F070000007F070000007F8F0000003F8E0000003FDE0000001FDC
0000001FDC0000000FF80000000FF80000000FF800000007F000000007F000000003E000000003
E000000001C00000211B7F9A24>I<FFFC0FFF00FFFC0FFF00FFFC0FFF0007F003C00003F80780
0001FC07800000FE0F000000FF1E0000007F3C0000003FF80000001FF00000000FF00000000FF0
00000007F000000007F80000000FFC0000001FFE0000001EFE0000003C7F000000783F800000F0
1FC00001E01FE00001C00FE00003C007F000FFF01FFF80FFF01FFF80FFF01FFF80211B7F9A24>
120 D<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F00003F800E00003
FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F070000007F8F0000
003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000FF800000007F000
000007F000000003E000000003E000000001C000000001C0000000038000000003800000380780
00007C07000000FE0F000000FE0E000000FE1E000000FE3C0000007C780000003FE00000000FC0
00000021277F9A24>I<3FFFFF803FFFFF803F00FF803C00FF003801FE007803FC007807FC0070
07F800700FF000701FE000001FE000003FC000007F800000FF800000FF000001FE038003FC0380
03FC038007F803800FF007801FF007801FE007003FC00F007F801F00FF807F00FFFFFF00FFFFFF
00191B7E9A1F>I E /Fl 76 125 df<003F1F8001FFFFC003C3F3C00783E3C00F03E3C00E01C0
000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC00FFFFFC000E01C0000E01C0000E01
C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E
01C0000E01C0007F87FC007F87FC001A1D809C18>11 D<003F0001FF8003C3C00783C00F03C00E
03C00E00000E00000E00000E00000E0000FFFFC0FFFFC00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F87F87F8151D809C17>I<
003FC001FFC003C3C00783C00F03C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC0FFFFC0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C07FCFF87FCFF8151D809C17>I<003F83F00001FFDFF80003E1FC3C000781F83C000F01F0
3C000E01E03C000E00E000000E00E000000E00E000000E00E000000E00E00000FFFFFFFC00FFFF
FFFC000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E
00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80
7FC7FCFF80211D809C23>I<7070F8F8FCFCFCFC7C7C0C0C0C0C1C1C181838387070F0F060600E
0D7F9C15>34 D<00030180000301800003018000070380000603000006030000060300000E0700
000C0600000C0600000C0600000C0600001C0E00FFFFFFFCFFFFFFFC0030180000301800003018
000070380000603000006030000060300000603000FFFFFFFCFFFFFFFC01C0E0000180C0000180
C0000180C0000381C000030180000301800003018000070380000603000006030000060300001E
257E9C23>I<00F0000001F80000039C0000070C0000070C0000070C0000070C0000071C000007
1C0000073800000770000007F07FE003E07FE003C01F0007C00E000FC01C001FC018003DE03800
78F0300070F07000F0786000F03CE000F03FC000F01F8000F80F0060780FC0E07C3FE1C03FF9FF
800FE03F001B1D7E9C20>38 D<70F8FCFC7C0C0C1C183870F060060D7D9C0C>I<01C003800380
07000E000C001C001800380038007000700070007000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E00070007000700070003800380018001C000C000E0007000380038001C0
0A2A7D9E10>I<E0007000700038001C000C000E00060007000700038003800380038001C001C0
01C001C001C001C001C001C001C001C001C001C001C001C003800380038003800700070006000E
000C001C00380070007000E0000A2A7E9E10>I<70F8F8F878181818383070E060050D7D840C>
44 D<FFE0FFE0FFE00B0380890E>I<70F8F8F87005057D840C>I<00030003000700060006000E
000C001C0018001800380030003000700060006000E000C000C001C00180038003000300070006
0006000E000C000C001C001800180038003000700060006000E000C000C00010297E9E15>I<07
E00FF01C38381C781E700E700EF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
700E700E781E381C1C380FF007E0101B7E9A15>I<030007003F00FF00C7000700070007000700
0700070007000700070007000700070007000700070007000700070007000700FFF8FFF80D1B7C
9A15>I<0FE03FF878FC603EF01EF81FF80FF80F700F000F001F001E003E003C007800F001E001
C0038007000E031C0338037006FFFEFFFEFFFE101B7E9A15>I<0FE03FF8387C783E7C1E781E78
1E001E003C003C00F807F007E00078003C001E000F000F000F700FF80FF80FF81EF01E787C3FF8
0FE0101B7E9A15>I<001C00001C00003C00007C00007C0000DC0001DC00039C00031C00071C00
0E1C000C1C00181C00381C00301C00601C00E01C00FFFFC0FFFFC0001C00001C00001C00001C00
001C00001C0001FFC001FFC0121B7F9A15>I<301C3FFC3FF83FE0300030003000300030003000
37E03FF83C3C381E301E000F000F000F000FF00FF00FF00FF01E703E787C3FF80FE0101B7E9A15
>I<01F807FC0F8E1E1E3C1E381E781E78007000F080F7F8FFFCFC1CF81EF80FF00FF00FF00FF0
0FF00F700F700F781E381E1E3C0FF807E0101B7E9A15>I<6000007FFF807FFF807FFF80600700
C00600C00E00C01C0000380000300000700000600000E00000C00001C00001C00003C000038000
038000038000078000078000078000078000078000078000078000078000111C7E9B15>I<07E0
1FF83C3C381E701E700E700E780E7C1E7F3C3FF81FF00FF01FFC3DFC787E703FF00FE00FE007E0
07E007F00E781E3C3C1FF807E0101B7E9A15>I<07E01FF83C38781C781EF00EF00EF00FF00FF0
0FF00FF00FF01F781F383F3FFF1FEF010F000E001E781E781C783C787878F03FE01F80101B7E9A
15>I<70F8F8F870000000000000000070F8F8F87005127D910C>I<70F8F8F87000000000000000
0070F8F8F878181818383070E060051A7D910C>I<00060000000F0000000F0000000F0000001F
8000001F8000001F8000003FC0000033C0000033C0000073E0000061E0000061E00000E1F00000
C0F00000C0F00001C0F8000180780001FFF80003FFFC0003003C0003003C0007003E0006001E00
06001E001F001F00FFC0FFF0FFC0FFF01C1C7F9B1F>65 D<FFFFC0FFFFF00F00F80F003C0F001C
0F001E0F001E0F001E0F001E0F001C0F003C0F00780FFFF00FFFE00F00F80F003C0F001E0F001E
0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F007CFFFFF8FFFFC0181C7E9B1D>I<003F
C18001FFF18003F07B800FC01F801F000F801E0007803C0003807C0003807800038078000180F0
000180F0000000F0000000F0000000F0000000F0000000F0000000F00000007800018078000180
7C0001803C0003801E0003001F0007000FC00E0003F03C0001FFF000003FC000191C7E9B1E>I<
FFFFC000FFFFF0000F007C000F001E000F000F000F0007000F0003800F0003C00F0003C00F0001
C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F00
01C00F0003C00F0003800F0007800F000F000F001E000F007C00FFFFF000FFFFC0001B1C7E9B20
>I<FFFFFCFFFFFC0F007C0F001C0F000C0F000E0F00060F03060F03060F03060F03000F07000F
FF000FFF000F07000F03000F03000F03030F03030F00030F00060F00060F00060F000E0F001E0F
007CFFFFFCFFFFFC181C7E9B1C>I<FFFFF8FFFFF80F00780F00380F00180F001C0F000C0F000C
0F030C0F030C0F03000F03000F07000FFF000FFF000F07000F03000F03000F03000F03000F0000
0F00000F00000F00000F00000F0000FFF800FFF800161C7E9B1B>I<003FC18001FFF18003F07B
800FC01F801F000F801E0007803C0003807C0003807800038078000180F0000180F0000000F000
0000F0000000F0000000F0000000F000FFF0F000FFF078000780780007807C0007803C0007801E
0007801F0007800FC00F8003F03F8001FFFB80003FE1801C1C7E9B21>I<FFF3FFC0FFF3FFC00F
003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00
0FFFFC000FFFFC000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
000F003C000F003C000F003C000F003C00FFF3FFC0FFF3FFC01A1C7E9B1F>I<FFF0FFF00F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F00FFF0FFF00C1C7F9B0F>I<FFF07FE0FFF07FE00F003E000F003C000F0078000F00
70000F00E0000F01C0000F0380000F0700000F0E00000F1E00000F3F00000F7F80000FFF80000F
E7C0000FC3C0000F83E0000F01F0000F00F0000F00F8000F007C000F007C000F003E000F001E00
0F001F00FFF07FF0FFF07FF01C1C7E9B20>75 D<FFF800FFF8000F00000F00000F00000F00000F
00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00180F00180F
00180F00180F00380F00300F00700F00F00F01F0FFFFF0FFFFF0151C7E9B1A>I<FF8000FF80FF
C001FF800FC001F8000FC001F8000DE00378000DE00378000DE00378000CF00678000CF0067800
0CF00678000C780C78000C780C78000C780C78000C3C1878000C3C1878000C3C1878000C1E3078
000C1E3078000C1E3078000C0F6078000C0F6078000C0F6078000C07C078000C07C078000C07C0
78001E03807800FFC387FF80FFC387FF80211C7E9B26>I<FF00FFC0FF80FFC00FC01E000FC00C
000FE00C000DE00C000DF00C000CF80C000CF80C000C7C0C000C3C0C000C3E0C000C1E0C000C1F
0C000C0F8C000C078C000C07CC000C03CC000C03EC000C01FC000C00FC000C00FC000C007C000C
007C000C003C001E001C00FFC01C00FFC00C001A1C7E9B1F>I<003F800001FFF00003E0F80007
001C000E000E001C0007003C00078038000380780003C0700001C0F00001E0F00001E0F00001E0
F00001E0F00001E0F00001E0F00001E0F00001E0780003C0780003C0380003803C0007801E000F
000E000E0007803C0003E0F80001FFF000003F80001B1C7E9B20>I<FFFF80FFFFE00F00F00F00
380F003C0F001E0F001E0F001E0F001E0F001E0F001E0F003C0F00380F00F00FFFE00FFF800F00
000F00000F00000F00000F00000F00000F00000F00000F00000F0000FFF000FFF000171C7E9B1C
>I<FFFF0000FFFFE0000F00F0000F0038000F003C000F001E000F001E000F001E000F001E000F
001E000F003C000F0038000F00F0000FFFE0000FFFC0000F03F0000F00F0000F00F8000F007800
0F0078000F0078000F0078000F0078000F0078000F007C300F007E70FFF03FE0FFF00FC01C1C7E
9B1F>82 D<07F1801FFD803C1F80700780700380E00380E00180E00180F00000F80000FE00007F
E0003FFC001FFE000FFF0000FF80000F800007C00003C00001C0C001C0C001C0E001C0E00380F0
0780FE0F00DFFE00C7F800121C7E9B17>I<7FFFFFC07FFFFFC0780F03C0700F01C0600F00C0E0
0F00E0C00F0060C00F0060C00F0060C00F0060000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
00000F000003FFFC0003FFFC001B1C7F9B1E>I<FFF0FFC0FFF0FFC00F001E000F000C000F000C
000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F00
0C000F000C000F000C000F000C000F000C000F000C000F000C000F001C00078018000780380003
C0700001F0F00000FFC000003F80001A1C7E9B1F>I<FFE01FF0FFE01FF01F0007800F0003000F
800700078006000780060007C00E0003C00C0003C00C0001E0180001E0180001E0180000F03000
00F0300000F870000078600000786000007CE000003CC000003CC000001F8000001F8000001F80
00000F0000000F0000000F0000000600001C1C7F9B1F>I<FFE0FFE1FFFFE0FFE1FF1F001E007C
0F001E00380F003F00300F003F003007803F00600780678060078067806007C06780E003C0C3C0
C003C0C3C0C003C0C3C0C001E1C3E18001E181E18001E181E18000F181E30000F300F30000F300
F30000FB00F700007E007E00007E007E00007E007E00003E007C00003C003C00003C003C00001C
0038000018001800281C7F9B2B>I<18183C3C383870706060E0E0C0C0C0C0F8F8FCFCFCFC7C7C
38380E0D7B9C15>92 D<1FE0003FF8003C3C003C1E00180E00000E00001E0007FE003FFE007E0E
00F80E00F80E00F00E60F00E60F81E607C7E607FFFC01FC78013127F9115>97
D<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001CFE001FFF
801F87C01E03E01C01E01C00F01C00F01C00F01C00F01C00F01C00F01C00F01C01E01E01E01E03
C01F87C01BFF8018FE00141D7F9C17>I<07F80FFC3E3C3C3C78187800F000F000F000F000F000
F000780078063C0E3F1C0FF807F00F127F9112>I<001F80001F80000380000380000380000380
00038000038000038000038000038007F3801FFF803E1F807C0780780380F80380F00380F00380
F00380F00380F00380F00380F003807807807C0F803E1F801FFBF007E3F0141D7F9C17>I<07E0
1FF83E7C781C781EF01EFFFEFFFEF000F000F000F000780078063C0E3F1C0FF807F00F127F9112
>I<00FC03FE079E071E0F1E0E000E000E000E000E000E00FFE0FFE00E000E000E000E000E000E
000E000E000E000E000E000E000E000E007FE07FE00F1D809C0D>I<07E7C01FFFC03C3DC0781E
00781E00781E00781E00781E00781E003C3C003FF80037E0007000007000007800003FFC003FFF
007FFF807807C0F003C0E001C0E001C0F003C0F807C07C0F801FFE0007F800121B7F9115>I<FC
0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001CFE001DFF001F
8F801F07801E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
0380FF9FF0FF9FF0141D7F9C17>I<3C007C007C007C003C00000000000000000000000000FC00
FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80FF80091D7F9C0C
>I<01C003E003E003E001C00000000000000000000000000FE00FE000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E0F0E0F1E0F3C0FF807E000B25
839C0D>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C
7FC01C7FC01C3E001C3C001C78001CF0001DE0001FE0001FF0001FF0001E78001C7C001C3C001C
1E001C1E001C0F00FF9FE0FF9FE0131D7F9C16>I<FC00FC001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80FF
80091D7F9C0C>I<FC7F07F000FDFF9FF8001F87F87C001F03F03C001E01E01C001C01C01C001C
01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00
1C01C01C001C01C01C00FF8FF8FF80FF8FF8FF8021127F9124>I<FCFE00FDFF001F8F801F0780
1E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0
FF9FF014127F9117>I<03F0000FFC001E1E00380700780780700380F003C0F003C0F003C0F003
C0F003C0F003C07003807807803807001E1E000FFC0003F00012127F9115>I<FCFE00FFFF801F
87C01E03E01C01E01C01F01C00F01C00F01C00F01C00F01C00F01C00F01C01E01E01E01E03C01F
8FC01FFF801CFE001C00001C00001C00001C00001C00001C0000FF8000FF8000141A7F9117>I<
07F1801FF9803F1F803C0F80780780780380F00380F00380F00380F00380F00380F00380F80380
7807807C0F803E1F801FFB8007E380000380000380000380000380000380000380001FF0001FF0
141A7F9116>I<FDF0FFF81F781E781E301C001C001C001C001C001C001C001C001C001C001C00
FFC0FFC00D127F9110>I<1FB07FF0F0F0E070E030F030F8007FC07FE01FF000F8C078C038E038
F078F8F0FFF0CFC00D127F9110>I<0C000C000C000C000C001C001C003C00FFE0FFE01C001C00
1C001C001C001C001C001C001C301C301C301C301C301E700FE007C00C1A7F9910>I<FC1F80FC
1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C07801C
0F801E1F800FFFF007F3F014127F9117>I<FF0FE0FF0FE01C07801C07000E06000E06000E0600
070C00070C00071C0003980003980003F80001F00001F00000E00000E00000E00013127F9116>
I<FF3FCFE0FF3FCFE03C0F07801C0F03001C1F03000E1B06000E1B86000E1B86000E318E000731
CC000731CC000760CC0003E0F80003E0F80003E0F80001C0700001C0700001C070001B127F911E
>I<7F8FF07F8FF00F0F80070F00038E0001DC0001D80000F00000700000780000F80001DC0003
8E00030E000707001F0780FF8FF8FF8FF81512809116>I<FF0FE0FF0FE01C07801C07000E0600
0E06000E0600070C00070C00071C0003980003980003F80001F00001F00000E00000E00000E000
00C00000C00000C000F18000F18000C700007E00003C0000131A7F9116>I<7FFC7FFC783C7078
60F061E061E063C00780078C0F0C1E0C1E1C3C187818F078FFF8FFF80E127F9112>I<FFFFF0FF
FFF01402808B15>I<FFFFFFFFFF80FFFFFFFFFF802902808B2A>I E /Fm
33 91 df<001F0000003F8000007B80000071800000E1800000E1800000E1800000C3800001C7
000001CE000001DE000001FC1FF801F81FF801E0078001E0070007E006000FE00E001EF01C003C
7038007878300078787000F03CE000F01FC000F01F8000F00F0060F80F80C07C7FE1C03FF1FF80
1FC07E001D1D7D9C20>38 D<001C0038007000E001E001C00380070007000E000E001C001C003C
0038003800380070007000700070006000E000E000E000E000E000E000E000E000E000E0006000
6000700070003000380018001C000E0006000E2A7C9E10>40 D<01C000C000E000700070003800
380018001C001C001C001C001C001C000C001C001C001C001C001C001C001C0018003800380038
00380070007000E000E000E001C001C00380070007000E001C0038007000E0000E2A809E10>I<
3C3C7C7C3C0C1C18383870E040060D7E840C>44 D<7FF0FFE0FFE00C037F890E>I<7878F8F870
05057D840C>I<00F80003FE00070E000E07001C07001C07803C07803807807807807807807807
80780780F00F00F00F00F00F00F00F00F00F00F00E00E01E00E01E00E01C00E01C00E038007078
0078F0003FE0001F8000111B7C9A15>48 D<0010007003F01FF01C70007000F000E000E000E000
E000E001E001C001C001C001C001C003C0038003800380038003800780FFF8FFF80D1B7C9A15>
I<00FE0003FF00078F800F07C00F03C00F03C00F0780000780000F80001F00003E0003FC0003F8
00001C00000E00000F00000F00000F00000F00780F00F80F00F81F00F81E00F03C00F07C007FF0
001FC000121B7D9A15>51 D<07018007FF8007FF0007FC000600000E00000C00000C00000C0000
0C00000DF8001FFE001F1E001C0F00180700000700000780000F80000F00F00F00F00F00F01F00
F01E00E03C0070F8007FF0001FC000111B7D9A15>53 D<1800003FFFC03FFFC03FFFC070038060
0700600E00C00C00001C0000380000700000E00000C00001C0000380000380000780000700000F
00000F00000E00001E00001E00001E00001E00003E00003C00001C0000121C7B9B15>55
D<00FE0003FF0007C7800F03800E03C00E03C01E03801E03801F07801F8F000FFE000FFC0003F8
0007FE001EFE003C3F00781F00700F00F00700E00700E00700E00700F00E00701E007C7C003FF0
000FC000121B7D9A15>I<00007000000070000000F0000000F0000001F0000001F80000037800
000378000006780000067800000C7800000C3C0000183C0000183C0000303C0000303C0000603C
0000601E0000FFFE0000FFFE0001801E0001801E0003001F0003000F0007000F000F000F007FC0
FFF0FFC0FFF01C1C7F9B1F>65 D<000FF030003FFC7000FC0EE003F007E007C003E00F8001E01F
0001E01E0000E03C0000C03C0000C0780000C07800000078000000F8000000F0000000F0000000
F0000000F0000000F0000380F000030078000300780007003C000E003E001C001F003C000FC0F0
0003FFE00000FF00001C1C7C9B1E>67 D<0FFFFC000FFFFF8000F007C000F001E000F000F000F0
007000F0007801F0007801E0003801E0003801E0003801E0003C01E0003803E0003803C0007803
C0007803C0007803C0007003C000F007C000E0078001E0078001C0078003800780078007800E00
0F807C00FFFFF000FFFFC0001E1C7E9B20>I<0FFFFFE00FFFFFE000F003E000F001C000F000C0
00F000C000F000C001F060C001E060C001E060C001E0600001E1E00001FFE00003FFC00003C1C0
0003C0C00003C0C00003C0C0C003C0C18007C00180078001800780030007800300078007000780
0E000F803E00FFFFFE00FFFFFC001B1C7E9B1C>I<0FFFFFC00FFFFFC000F007C000F0038000F0
018000F0018000F0018001F0018001E0618001E0618001E0600001E0E00001E1E00003FFC00003
FFC00003C1C00003C0C00003C0C00003C0C00007C1800007800000078000000780000007800000
078000000F800000FFFC0000FFF800001A1C7E9B1B>I<000FF030003FFC7000FC0EE003F007E0
07C003E00F8001E01F0001E01E0000E03C0000C03C0000C0780000C07800000078000000F80000
00F0000000F0000000F000FFF0F000FFF0F0000F80F0000F8078000F0078000F003C000F003E00
1F001F001F000FC07F0003FFF60000FF82001C1C7C9B21>I<0FFF9FFE0FFF3FFE00F003C000F0
03C000F003C000F003C000F007C001F007C001E0078001E0078001E0078001E0078001FFFF8003
FFFF8003C00F0003C00F0003C00F0003C00F0003C01F0007C01F0007801E0007801E0007801E00
07801E0007803E000F803E00FFF3FFE0FFF3FFC01F1C7E9B1F>I<0FFF800FFF8000F00000F000
00F00000F00000F00001F00001E00001E00001E00001E00001E00003E00003C00003C00003C000
03C00003C00007C0000780000780000780000780000780000F8000FFF800FFF800111C7F9B0F>
I<0FFFC00FFFC000F00000F00000F00000F00000F00001F00001E00001E00001E00001E00001E0
0003E00003C00003C00003C00003C00603C00C07C00C07800C07801C0780180780380780780F81
F8FFFFF0FFFFF0171C7E9B1A>76 D<0FFC000FFC0FFC000FFC00FC001F8000FC001F8000FC0037
8000DE00378000DE006F8001DE006F80019E00CF00019E00CF00019E018F00018F018F00018F03
1F00038F031F00030F061E00030F061E0003078C1E0003078C1E000307983E000707983E000607
B03C000607B03C000603E03C000603E03C000603C07C001E03C07C00FFE387FFC0FFC387FF8026
1C7E9B26>I<0FF80FFE0FF80FFE00FC01E000FC00C000FE00C000DE00C000DE01C001DF01C001
8F0180018F8180018781800187C1800187C3800383C3800303E3000301E3000301F3000300F300
0300FF000700FF0006007E0006007E0006003E0006003E0006001E001E001E00FFE01C00FFC00C
001F1C7E9B1F>I<0007F000003FFC0000F81E0001E0070003800380070003C00E0001C01E0001
E03C0001E03C0000E0780000E0780000F0780000E0F00001E0F00001E0F00001E0F00001E0F000
03C0F00003C0F00007807800078078000F0038001E003C003C001E0078000F81F00003FFC00000
FE00001C1C7C9B20>I<0FFFFC000FFFFF0000F00F8000F0038000F003C000F001C000F001C001
F003C001E003C001E003C001E0038001E0078001E00F0003E03E0003FFF80003FFE00003C00000
03C0000003C0000007C00000078000000780000007800000078000000F8000000F800000FFF800
00FFF000001A1C7E9B1C>I<0FFFF8000FFFFE0000F00F8000F0038000F003C000F001C000F001
C001F003C001E003C001E003C001E0078001E00F0001E03E0003FFF80003FFF80003C0FC0003C0
3C0003C03C0003C03E0007C03C0007803C0007803C0007803C0007803C0007803C380F803E70FF
F81FF0FFF00FE01D1C7E9B1F>82 D<007F0C01FFDC03C1F80780780F00380E00380E00381E0038
1E00001F00001F80000FF8000FFF0007FFC001FFE0003FE00003E00001E00000E00000E06000E0
6000E06001E07001C0780380FE0F80FFFE00C3F800161C7E9B17>I<1FFFFFF03FFFFFF03C0781
F038078060700780606007806060078060600F8060C00F0060C00F0060000F0000000F0000000F
0000001F0000001E0000001E0000001E0000001E0000001E0000003E0000003C0000003C000000
3C0000003C0000003C0000007C00001FFFE0001FFFE0001C1C7C9B1E>I<FFF8FFE0FFF8FFE00F
001E000F000C000F000C000F000C000F001C001F001C001E0018001E0018001E0018001E001800
1E0038003E0038003C0030003C0030003C0030003C0030003C0070007C006000780060007800E0
003800C0003C01C0003E0380001F0F00000FFE000003F800001B1C7A9B1F>I<FFF01FF8FFF01F
F80F0007C00F0003000F0007000780060007800C0007800C00078018000780180003C0300003C0
300003C0600003C0600003C0C00003E0C00001E1800001E3800001E3000001E7000001F6000000
FE000000FC000000F8000000F8000000F0000000700000006000001D1C7B9B1F>I<07FF8FFE07
FF8FFE007C03E0003C0380003E0300001E0600001E0E00001F1C00000F1800000FB0000007E000
0007E0000003C0000003E0000003E0000007F000000EF000000CF0000018F8000030780000707C
0000E03C0000C03E0001801E0003801F000F801F00FFE07FF0FFE0FFF01F1C7F9B1F>88
D<FFF01FF8FFF01FF80F8007C00F8007000780060007C00C0003C0180003E0380003E0300001E0
600001F0C00000F1C00000F98000007B0000007E0000007E0000003C0000003C00000038000000
780000007800000078000000780000007800000070000000F000000FFF00000FFF00001D1C7B9B
1F>I<03FFFF8007FFFF0007E01F0007803E0007007C00060078000600F8000E01F0000C03E000
0C07C0000007C000000F8000001F0000003E0000007C0000007C000000F80C0001F00C0003E018
0003C0180007C018000F8038001F0030003E0070003E00F0007C03F000FFFFE000FFFFE000191C
7E9B19>I E /Fn 28 122 df<70F8FCFC7C0C0C0C1C18183870E0E0060F7C840E>44
D<01F00007FC000E0E001C07003803803803807803C07001C07001C07001C0F001E0F001E0F001
E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001
C07001C07803C03803803803801C07000E0E0007FC0001F00013227EA018>48
D<018003800F80FF80F38003800380038003800380038003800380038003800380038003800380
038003800380038003800380038003800380038003800380FFFEFFFE0F217CA018>I<03F8000F
FE001E1F00380F807007C07807C07C07C07807C07807C00007C00007C0000780000F80001F0000
3E0003FC0003F800001E00000F000007800007C00003E00003E07003E0F803E0F803E0F803E0F8
03E0E007C07007C0780F803E1F000FFE0003F80013227EA018>51 D<03F8000FFC001F1E003C07
003807807803807003C0F003C0F001C0F001C0F001E0F001E0F001E0F001E0F001E0F003E07803
E07803E03C07E03E0FE01FFDE007F9E00081E00001C00003C00003C0000380780780780700780F
00781E00787C003FF8000FE00013227EA018>57 D<000180000003C0000003C0000003C0000007
E0000007E0000007E000000FF000000CF000000CF000001CF800001878000018780000383C0000
303C0000303C0000601E0000601E0000601E0000C00F0000C00F0000C00F0001FFFF8001FFFF80
01800780030003C0030003C0030003C0060001E0060001E0060001E00E0000F01F0001F0FFC00F
FFFFC00FFF20237EA225>65 D<000FF030007FFC3000FC1E7003F0077007C003F00F8001F01F00
01F01F0000F03E0000F03C0000707C0000707C0000707C000030F8000030F8000030F8000000F8
000000F8000000F8000000F8000000F8000000F8000000F80000307C0000307C0000307C000030
3E0000703E0000601F0000E01F0000C00F8001C007C0038003F0070000FC1E00007FFC00000FF0
001C247DA223>67 D<03FFF003FFF0000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00F80F00F80F00F80F00F81F00F01E00703E00787C003FF8000FE00014237E
A119>74 D<FFFE0000FFFE00000780000007800000078000000780000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
800000078000000780000007800180078001800780018007800180078003800780038007800300
078007000780070007800F0007803F00FFFFFF00FFFFFF0019227EA11E>76
D<FFC00003FFFFE00007FF07E00007E007E00007E006F0000DE006F0000DE006F0000DE0067800
19E006780019E006780019E0063C0031E0063C0031E0063C0031E0061E0061E0061E0061E0061E
0061E0060F00C1E0060F00C1E006078181E006078181E006078181E00603C301E00603C301E006
03C301E00601E601E00601E601E00601E601E00600FC01E00600FC01E00600FC01E006007801E0
1F807801E0FFF0783FFFFFF0303FFF28227EA12D>I<07F0600FFE601E1FE03807E07003E07001
E0E000E0E000E0E00060E00060F00060F00000F800007C00007F00003FF0001FFE000FFF8003FF
C0007FC00007E00001E00001F00000F00000F0C00070C00070C00070E00070E000F0F000E0F801
E0FC01C0FF0780C7FF00C1FC0014247DA21B>83 D<1FF0003FFC003C3E003C0F003C0F00000700
000700000F0003FF001FFF003F07007C0700F80700F80700F00718F00718F00F18F81F187C3FB8
3FF3F01FC3C015157E9418>97 D<03FE000FFF801F07803E07803C0780780000780000F00000F0
0000F00000F00000F00000F00000F000007800007800C03C01C03E01801F87800FFF0003FC0012
157E9416>99 D<0000E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E003F8E00FFEE01F0FE03E03E07C01E07800E07800E0F000E0F000E0F000
E0F000E0F000E0F000E0F000E07000E07801E07801E03C03E01F0FF00FFEFE03F0FE17237EA21B
>I<01FC0007FF001F0F803E03C03C01C07801E07801E0FFFFE0FFFFE0F00000F00000F00000F0
0000F000007800007800603C00E03E01C00F83C007FF0001FC0013157F9416>I<0E0000FE0000
FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3F80
0EFFE00FE1E00F80F00F00700F00700E00700E00700E00700E00700E00700E00700E00700E0070
0E00700E00700E00700E00700E0070FFE7FFFFE7FF18237FA21B>104 D<1E003E003E003E001E
00000000000000000000000000000000000E00FE00FE001E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E00FFC0FFC00A227FA10E>I<01C003E003E003E001C00000
000000000000000000000000000001E00FE00FE001E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E0F1E0F1C0F3C0FF803E000B2C
82A10F>I<0E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E
00000E00000E00000E0FFC0E0FFC0E07E00E07800E07000E1E000E3C000E78000EF8000FFC000F
FC000F1E000E0F000E0F800E07800E03C00E03E00E01E00E01F0FFE3FEFFE3FE17237FA21A>I<
0E00FE00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B237FA20E>I<0E
3FC0FF00FEFFF3FFC0FFE0F783C01F807E01E00F003C00E00F003C00E00E003800E00E003800E0
0E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800
E00E003800E00E003800E00E003800E0FFE3FF8FFEFFE3FF8FFE27157F942A>I<0E3F80FEFFE0
FFE1E01F80F00F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
0E00700E00700E00700E0070FFE7FFFFE7FF18157F941B>I<01FC0007FF000F07801C01C03800
E07800F0700070F00078F00078F00078F00078F00078F00078F000787000707800F03800E01C01
C00F078007FF0001FC0015157F9418>I<0E7EFEFFFFEF1F8F0F0F0F000F000E000E000E000E00
0E000E000E000E000E000E000E000E00FFF0FFF010157F9413>114 D<1FD83FF87878F038E018
E018F018F8007F807FE01FF003F8007CC03CC01CE01CE01CF03CF878FFF0CFE00E157E9413>I<
060006000600060006000E000E000E001E003E00FFF8FFF80E000E000E000E000E000E000E000E
000E000E000E0C0E0C0E0C0E0C0E0C0F1C073807F803E00E1F7F9E13>I<0E0070FE07F0FE07F0
1E00F00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00F0
0E00F00E01F00787F807FF7F01FC7F18157F941B>I<FFC3FEFFC3FE1E00F80E00700E00E00700
C00700C00700C003818003818003C38001C30001C30000E60000E60000E600007C00007C00007C
00003800003800003000003000007000006000006000F0C000F1C000F380007F00003E0000171F
7F941A>121 D E /Fo 16 121 df<78FCFCFEFE7E06060606060E0C0C1C383870E0C007147A85
12>44 D<00003FE0030001FFFC030007F01E07001F800787003E0001CF00FC0000EF01F800007F
03F000007F03E000003F07C000001F0FC000001F0F8000000F1F8000000F3F000000073F000000
073E000000077E000000077E000000037E000000037C00000003FC00000000FC00000000FC0000
0000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00
0000007C000000007E000000037E000000037E000000033E000000033F000000073F000000061F
800000060F8000000E0FC000000C07C000001C03E000001803F000003801F800007000FC0000E0
003F0001C0001F8007800007F01F000001FFFC0000003FE00028337CB130>67
D<00003FF001800001FFFC01800007F81F0380001FC0038380003F0001E780007C0000E78001F8
00007F8001F000003F8003E000001F8007C000000F800FC000000F800F80000007801F80000007
801F00000003803F00000003803E00000003807E00000003807E00000001807E00000001807C00
00000180FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC00000000
00FC0000000000FC0000000000FC0000000000FC0000000000FC00000FFFFC7E00000FFFFC7E00
00001FC07E0000000F807E0000000F803E0000000F803F0000000F801F0000000F801F8000000F
800F8000000F800FC000000F8007E000000F8003E000000F8001F000001F8001F800001F80007E
00003F80003F00007780001FC001E3800007F80FC1800001FFFF008000003FF800002E337CB134
>71 D<03FF00000FFFC0001E03F0003E00F8003E007C003E003C003E003E001C001E0000001E00
00001E0000001E0000001E000003FE00007FFE0003FF1E0007F01E001FC01E003F001E007E001E
007C001E00FC001E00F8001E0CF8001E0CF8001E0CF8003E0CFC007E0C7C007E0C7E01FF1C3F87
CFB81FFF07F003FC03C01E1F7D9E21>97 D<003FE001FFF803E03C07C03E0F003E1F003E3E003E
3C001C7C00007C0000780000F80000F80000F80000F80000F80000F80000F80000F80000F80000
7C00007C00007C00003E00033E00071F00060F800E07C01C03F07801FFF0003F80181F7D9E1D>
99 D<003F800001FFF00003E1F80007807C000F003E001E001E003E001F003C000F007C000F80
7C000F8078000F80F8000780FFFFFF80FFFFFF80F8000000F8000000F8000000F8000000F80000
00F80000007C0000007C0000007C0000003E0001803E0003801F0003000F80070007E00E0003F8
3C0000FFF800003FC000191F7E9E1D>101 D<0F001F801F801F801F800F000000000000000000
00000000000000000000000000000780FF80FF800F800780078007800780078007800780078007
800780078007800780078007800780078007800780078007800780078007800FC0FFF8FFF80D30
7EAF12>105 D<0781FE003FC000FF87FF80FFF000FF9E0FC3C1F8000FB803E7007C0007F001EE
003C0007E001FC003E0007E000FC001E0007C000F8001E0007C000F8001E00078000F0001E0007
8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F000
1E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780
00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E
00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>109
D<0781FE0000FF87FF8000FF9E0FC0000FB803E00007F001E00007E001F00007E000F00007C000
F00007C000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078000F000078000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF80
211F7E9E25>I<001FC00000FFF80001E03C0007800F000F0007801E0003C01E0003C03C0001E0
3C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000
F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003C00F00078007C0
1F0001F07C0000FFF800001FC0001D1F7E9E21>I<0781FE00FF87FF80FF9F0FE00FB803F007F0
01F807E000F807C0007C0780007C0780003E0780003E0780003E0780001F0780001F0780001F07
80001F0780001F0780001F0780001F0780001F0780003F0780003E0780003E0780007E07C0007C
07C000FC07E000F807F001F007B803E0079E0FC0078FFF800781FC000780000007800000078000
0007800000078000000780000007800000078000000780000007800000078000000FC00000FFFC
0000FFFC0000202D7E9E25>I<0787F0FF8FF8FFBC7C0FB87C07F07C07E07C07E00007C00007C0
0007C0000780000780000780000780000780000780000780000780000780000780000780000780
000780000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114
D<03FE300FFFF03E07F07801F07000F0E00070E00070E00030E00030F00030F800007F00007FF0
003FFF000FFFC003FFE0003FF00003F80000F8C0007CC0003CE0001CE0001CE0001CF0001CF800
38F80038FC00F0EF03F0C7FFC0C1FF00161F7E9E1A>I<00C00000C00000C00000C00000C00001
C00001C00001C00003C00003C00007C0000FC0001FC000FFFFE0FFFFE003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C03003C03003C03003C03003C03003C03003C03003C07001E06001E0E000F9C000FFC0003F0014
2C7FAB19>I<078000F000FF801FF000FF801FF0000F8001F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8001F000078001F000078001F000078003F00003C007F00003C00EF00001F03CF80000FFF8FF80
003FC0FF80211F7E9E25>I<FFF807FF00FFF807FF000FE003F80007E003E00003E003C00001E0
03800000F00700000078060000007C0C0000003C1C0000001E380000000F300000000FE0000000
07E000000003C000000003E000000003F000000007F00000000E780000000C7C000000183E0000
00381E000000700F000000600F800000C007C00001C003C00003C001E00007C001F0001FC003F8
00FFE007FFC0FFE007FFC0221F7F9E23>120 D E /Fp 5 85 df<00000000C00000000000E000
00000001E00000000003E00000000003E00000000007E00000000007E0000000000FE000000000
0FE0000000001FE0000000001FE00000000037E00000000067E00000000067E000000000C7E000
000000C7F00000000183F00000000183F00000000303F00000000703F00000000603F00000000C
03F00000000C03F00000001803F00000001803F00000003003F00000003003F00000006003F000
0000C003F0000000C003F00000018003F00000018003F8000003FFFFF8000003FFFFF800000600
01F800000E0001F800000C0001F80000180001F80000180001F80000300001F80000300001F800
00600001F80000E00001F80000C00001F80001C00001F80001C00001F80007C00001FC001FC000
03FC00FFF8007FFFE0FFF8007FFFE02B327BB135>65 D<000FFFFFFE0000000FFFFFFF80000000
00FFFFFFFC000000FFFFFFE000000031317BB036>68 D<000FFFFFFFFC000FFFFFFFFC00007F00
01FC00007E00007C00007E00003C00007E00003C00007E0000180000FC0000180000FC00001800
00FC0000180000FC0000180001F80000180001F80000180001F80000180001F80000180003F000
80100003F00180000003F00180000003F00180000007E00300000007E00300000007E007000000
07E01F0000000FFFFE0000000FFFFE0000000FC01E0000000FC00E0000001F800C0000001F800C
0000001F800C0000001F800C0000003F00180000003F00080000003F00000000003F0000000000
7E00000000007E00000000007E00000000007E0000000000FC0000000000FC0000000000FC0000
000000FC0000000001F80000000001F80000000001F80000000003F800000000FFFFF0000000FF
FFF00000002E317BB02F>70 D<000FFFFFF000000FFFFFFE0000007F003F8000007E000FC00000
7E0007E000007E0003F000007E0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001
F80001F80003F80001F80003F80001F80003F80001F80003F00003F00007F00003F00007E00003
F0000FC00003F0000FC00007E0001F000007E0007E000007E000FC000007E007F000000FFFFFC0
00000FFFFF0000000FC00F8000000FC003C000001F8003E000001F8001F000001F8001F000001F
8001F800003F0001F800003F0001F800003F0001F800003F0001F800007E0003F800007E0003F8
00007E0003F000007E0003F00000FC0007F00000FC0007F00000FC0007F00800FC0007F00C01F8
0007F01801F80007F01801F80003F03003F80003F030FFFFE001F0E0FFFFE000FFC0000000003F
002E327BB034>82 D<07FFFFFFFFF00FFFFFFFFFF00FC00FE003F01E000FC000F01C000FC000E0
18000FC000E038000FC0006030001F8000E030001F8000E060001F8000C060001F8000C060003F
0000C0C0003F0000C0C0003F0000C0C0003F0000C080007E00008000007E00000000007E000000
00007E0000000000FC0000000000FC0000000000FC0000000000FC0000000001F80000000001F8
0000000001F80000000001F80000000003F00000000003F00000000003F00000000003F0000000
0007E00000000007E00000000007E00000000007E0000000000FC0000000000FC0000000000FC0
000000000FC0000000001F80000000001F80000000001F80000000001F80000000003F00000000
003F00000000003F0000000000FF00000000FFFFFF000000FFFFFF0000002C3173B033>84
D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin 
%%EndSetup
%%Page: 0 1
bop 795 996 a Fp(D)26 b(R)g(A)f(F)h(T)476 1088 y Fo(Groups,)c(Con)n(texts,)f
(Comm)n(unicators)353 1270 y Fn(Lyndon)c(Clark)o(e,)e(Mark)h(Sears,)g(An)o
(thon)o(y)g(Skjellum,)d(Marc)j(Snir)833 1391 y(July)g(10,)g(1993)p
eop
%%Page: 1 2
bop 75 -100 a Fm(3.1.)31 b(INTR)o(ODUCTION)1343 b Fl(1)75 45
y Fk(3.1)70 b(In)n(tro)r(duction)75 147 y Fl(It)11 b(is)f(highly)f(desirable)
i(that)g(pro)q(cesses)i(executing)e(a)f(parallel)f(pro)q(cedure)k(use)e(a)f
(\\virtual)g(pro)q(cess)i(name)d(space")75 197 y(lo)q(cal)14
b(to)h(the)g(in)o(v)o(o)q(cation.)20 b(Th)o(us,)15 b(the)h(co)q(de)g(of)e
(the)i(parallel)d(pro)q(cedure)k(will)d(lo)q(ok)g(iden)o(tical,)g(irresp)q
(ectiv)o(e)j(of)75 247 y(the)12 b(absolute)f(addresses)i(of)d(the)h
(executing)h(pro)q(cesses.)20 b(It)11 b(is)g(often)g(the)g(case)h(that)f
(parallel)f(application)f(co)q(de)j(is)75 296 y(built)f(b)o(y)g(comp)q(osing)
f(sev)o(eral)i(parallel)f(mo)q(dules)f(\()p Fj(e.g.)p Fl(,)h(a)h(n)o
(umerical)e(solv)o(er,)h(and)h(a)f(graphic)g(displa)o(y)g(mo)q(dule\).)75
346 y(Supp)q(ort)h(of)f(a)h(virtual)f(name)f(space)j(for)e(eac)o(h)h(mo)q
(dule)f(will)f(allo)o(w)g(for)h(the)i(comp)q(osition)d(of)h(mo)q(dules)f
(that)i(w)o(ere)75 396 y(dev)o(elop)q(ed)18 b(separately)h(without)e(c)o
(hanging)g(all)f(message)i(passing)f(calls)h(within)f(eac)o(h)h(mo)q(dule.)28
b(The)18 b(set)h(of)75 446 y(pro)q(cesses)d(that)d(execute)i(a)e(parallel)f
(pro)q(cedure)j(ma)o(y)c(b)q(e)j(\014xed,)g(or)f(ma)o(y)e(b)q(e)j(determined)
f(dynamically)d(b)q(efore)75 496 y(the)19 b(in)o(v)o(o)q(cation.)31
b(Th)o(us,)20 b(MPI)f(has)g(to)f(pro)o(vide)h(a)f(mec)o(hanism)e(for)j
(dynamically)c(creating)k(sets)h(of)e(lo)q(cally)75 545 y(named)h(pro)q
(cesses.)37 b(W)m(e)20 b(alw)o(a)o(ys)e(n)o(um)o(b)q(er)h(pro)q(cesses)j
(that)e(execute)i(a)d(parallel)f(pro)q(cedure)k(consecutiv)o(ely)m(,)75
595 y(starting)17 b(from)d(zero,)k(and)e(call)g(this)h(n)o(um)o(b)q(ering)e
Fi(rank)k(in)f(group)p Fl(.)24 b(Th)o(us,)17 b(a)f Fi(group)f
Fl(is)i(an)f(ordered)i(set)g(of)75 645 y(pro)q(cesses,)e(where)f(pro)q
(cesses)i(are)d(iden)o(ti\014ed)g(b)o(y)g(their)g(ranks)g(when)g(comm)o
(unication)d(o)q(ccurs.)158 701 y(Comm)o(uni)o(cation)f Fh(contexts)h
Fl(partition)g(the)j(message-passing)e(space)h(in)o(to)f(separate,)i
(manageable)d(\\uni-)75 751 y(v)o(erses.")31 b(Sp)q(eci\014cally)m(,)17
b(a)h(send)g(made)f(in)g(a)g(con)o(text)i(cannot)f(b)q(e)g(receiv)o(ed)h(in)e
(another)h(con)o(text.)30 b(Con)o(texts)75 800 y(are)14 b(iden)o(ti\014ed)g
(in)g(MPI)g(using)g(in)o(teger-v)n(alued)f Fi(con)o(texts)g
Fl(that)h(reside)h(within)e Fh(communicator)e Fl(ob)r(jects.)20
b(The)75 850 y(con)o(text)14 b(mec)o(hanism)e(is)i(need)g(to)g(allo)o(w)e
(predictable)i(b)q(eha)o(vior)g(in)f(subprograms,)g(and)g(to)h(allo)o(w)e
(dynamicism)75 900 y(in)g(message)g(usage)g(that)h(cannot)f(b)q(e)h
(reasonably)f(an)o(ticipated)g(or)g(managed.)k(Normally)m(,)9
b(a)j(parallel)f(pro)q(cedure)75 950 y(is)g(written)g(so)g(that)g(all)f
(messages)h(pro)q(duced)h(during)f(its)g(execution)h(are)f(also)f(consumed)h
(b)o(y)g(the)g(pro)q(cesses)j(that)75 1000 y(execute)i(the)f(pro)q(cedure.)22
b(Ho)o(w)o(ev)o(er,)15 b(if)f(one)g(parallel)g(pro)q(cedure)i(calls)e
(another,)h(then)g(it)f(migh)o(t)e(b)q(e)k(desirable)75 1049
y(to)h(allo)o(w)e(suc)o(h)j(call)e(to)h(pro)q(ceed)i(while)e(messages)g(are)g
(p)q(ending)g(\(the)h(messages)f(will)f(b)q(e)i(consumed)f(b)o(y)f(the)75
1099 y(pro)q(cedure)d(after)f(the)g(call)f(returns\).)19 b(In)12
b(suc)o(h)g(case,)h(a)e(new)h(comm)o(unicatio)o(n)d(con)o(text)j(is)g(needed)
h(for)e(the)h(called)75 1149 y(parallel)h(pro)q(cedure,)i(ev)o(en)g(if)e(the)
h(transfer)h(of)e(con)o(trol)h(is)g(sync)o(hronized.)158 1205
y(The)k(comm)o(unication)c(domain)h(used)k(b)o(y)e(a)h(parallel)e(pro)q
(cedure)k(is)d(iden)o(ti\014ed)h(b)o(y)f(a)g Fi(comm)o(unicator)p
Fl(.)75 1255 y(Comm)o(uni)o(cators)c(bring)h(together)i(the)f(concepts)i(of)d
(pro)q(cess)j(group)d(and)h(comm)o(unicatio)o(n)d(con)o(text.)22
b(A)14 b(com-)75 1304 y(m)o(unicator)g(is)i(an)g(explicit)g(parameter)g(in)f
(eac)o(h)i(p)q(oin)o(t-to-p)q(oin)o(t)d(comm)o(unication)f(op)q(eration.)24
b(The)17 b(comm)o(u-)75 1354 y(nicator)f(iden)o(ti\014es)g(the)g(comm)o
(unicatio)o(n)d(con)o(text)j(of)f(that)h(op)q(eration;)g(it)f(iden)o
(ti\014es)i(the)f(group)f(of)g(pro)q(cesses)75 1404 y(that)j(can)f(b)q(e)h
(in)o(v)o(olv)o(ed)f(in)g(this)g(comm)o(unication;)f(and)h(it)g(pro)o(vides)h
(the)g(translation)f(from)e(virtual)i(pro)q(cess)75 1454 y(names,)e(whic)o(h)
g(are)h(ranks)g(within)f(the)h(group,)f(in)o(to)g(absolute)h(addresses.)25
b(Collectiv)o(e)15 b(comm)o(unication)d(calls)75 1504 y(also)i(tak)o(e)g(a)g
(comm)o(unicator)d(as)k(parameter;)e(it)h(is)h(exp)q(ected)h(that)e(parallel)
f(libraries)h(will)f(b)q(e)i(built)f(to)g(accept)75 1553 y(a)g(comm)o(uni)o
(cator)e(as)i(parameter.)j(Comm)o(unicators)11 b(are)k(represen)o(ted)h(b)o
(y)e(opaque)g(MPI)g(ob)r(jects.)158 1609 y(MPI)i(do)q(es)g(not)g(rev)o(eal)f
(absolute)h(pro)q(cess)i(names.)k(Rather,)16 b(pro)q(cesses)i(are)e(alw)o(a)o
(ys)e(iden)o(ti\014ed)i(b)o(y)g(their)75 1659 y(rank)c(inside)h(a)f(group.)17
b(New)c(pro)q(cess)h(groups)f(are)g(built)e(b)o(y)h(subsetting)i(and)e
(reordering)h(pro)q(cesses)i(within)d(ex-)75 1709 y(isting)e(groups,)g(as)h
(w)o(ell)e(as)h(b)o(y)g(\\publishing)f(and)i(subscribing")f(or)g
(\\\015attening)g(and)g(un\015attening.")17 b(Publishing)75
1759 y(and)g(subscribing)h(pro)o(vides)f(a)g(serv)o(er-lik)o(e)h(mec)o
(hanism)c(to)j(allo)o(w)f(rendezv)o(ous)j(b)q(et)o(w)o(een)f(disjoin)o(t)e
(comm)o(uni-)75 1808 y(cating)d(pro)q(cesses.)21 b(Flatten)14
b(and)f(un\015atten)h(allo)o(ws)f(the)h(transmission)e(of)h(groups)h(or)g
(comm)o(uni)o(cators)e(in)h(user)75 1858 y(messages.)k(Subsetting)c(and)f
(reordering)g(allo)o(ws)f(the)h(user)h(to)f(construct)h(subgroups)g(giv)o(en)
e(an)h(existing)g(group.)75 2027 y Fk(3.2)70 b(Con)n(text)75
2129 y Fl(A)15 b Fi(con)o(text)e Fl(is)i(the)h(MPI)f(mec)o(hanism)d(for)j
(partitioning)f(comm)o(uni)o(cation)e(space.)22 b(A)15 b(de\014ning)g(prop)q
(ert)o(y)h(of)e(a)75 2178 y(con)o(text)j(is)g(that)g(a)f(send)i(made)d(in)h
(a)h(con)o(text)g(cannot)g(b)q(e)g(receiv)o(ed)h(in)e(another)h(con)o(text.)
28 b(A)16 b(con)o(text)i(is)e(an)75 2228 y(in)o(teger.)75 2397
y Fk(3.3)70 b(Groups)75 2498 y Fl(A)16 b Fi(group)f Fl(is)h(an)f(ordered)j
(set)f(of)e(pro)q(cess)j(iden)o(ti\014ers)f(\(henceforth)g(pro)q(cesses\);)j
(pro)q(cess)e(iden)o(ti\014ers)f(are)f(im-)75 2548 y(plemen)o(tation)e(dep)q
(enden)o(t;)k(a)e(group)f(is)h(an)g(opaque)f(ob)r(ject.)25
b(Eac)o(h)16 b(pro)q(cess)i(in)d(a)g(group)h(is)g(asso)q(ciated)g(with)75
2598 y(an)e(in)o(teger)g Fi(rank)p Fl(,)f(starting)h(from)e(zero.)158
2654 y(Groups)17 b(are)g(represen)o(ted)i(b)o(y)e(opaque)f
Fi(group)i(ob)s(jects)p Fl(,)d(and)h(hence)i(cannot)f(b)q(e)g(directly)g
(transferred)75 2704 y(from)12 b(one)i(pro)q(cess)i(to)e(another.)p
eop
%%Page: 2 3
bop 75 -100 a Fl(2)75 45 y Fg(3.3.1)55 b(Prede\014ned)18 b(Groups)75
122 y Fl(.)g(Initial)12 b(groups)i(de\014ned)h(once)g Fh(MPI)p
669 122 14 2 v 15 w(INIT)e Fl(has)h(b)q(een)h(called)f(are)g(as)g(follo)o
(ws:)137 205 y Ff(\017)21 b Fh(MPI)p 248 205 V 15 w(GROUP)p
373 205 V 15 w(ALL)p Fl(,)40 b(SPMD-lik)o(e)13 b(siblings)g(of)g(a)h(pro)q
(cess.)137 288 y Ff(\017)21 b Fh(MPI)p 248 288 V 15 w(GROUP)p
373 288 V 15 w(HOST)p Fl(,)40 b(A)14 b(group)f(including)g(one's)h(self)g
(and)g(one's)g(HOST)137 372 y Ff(\017)21 b Fh(MPI)p 248 372
V 15 w(GROUP)p 373 372 V 15 w(PARENT)p Fl(,)39 b(A)14 b(group)g(con)o
(taining)f(one's)h(self)g(and)f(one's)h(P)m(ARENT)g(\(spa)o(wner\).)137
455 y Ff(\017)21 b Fh(MPI)p 248 455 V 15 w(GROUP)p 373 455
V 15 w(SELF)p Fl(,)40 b(A)14 b(group)f(comprising)g(one's)h(self)158
538 y(MPI)f(implemen)o(tatio)o(ns)d(are)j(required)h(to)e(pro)o(vide)h(these)
h(groups;)e(ho)o(w)o(ev)o(er,)h(not)g(all)e(forms)g(of)h(comm)o(uni-)75
588 y(cation)g(mak)o(e)e(sense)k(for)e(all)f(systems,)h(so)h(not)f(all)f(of)g
(these)j(groups)e(ma)o(y)e(b)q(e)j(relev)n(an)o(t.)18 b(En)o(vironmen)o(tal)
10 b(inquiry)75 638 y(will)j(b)q(e)j(pro)o(vided)e(to)h(determine)f(whic)o(h)
h(of)f(these)i(are)f(usable)g(in)f(a)h(giv)o(en)f(implemen)o(tation.)j(The)e
(analogous)75 688 y(comm)o(unicators)c(corresp)q(onding)k(to)f(these)h
(groups)f(are)h(de\014ned)g(b)q(elo)o(w)e(in)h(section)g(3.4.1.)158
820 y Fe(Discussion:)k Fd(En)o(vironmen)o(tal)e(sub-committee)e(needs)g(to)f
(pro)o(vide)h(suc)o(h)g(inquiry)h(functions)g(for)e(us.)75
1040 y Fk(3.4)70 b(Comm)n(unicators)75 1131 y Fl(All)12 b(MPI)g(comm)o
(unication)d(\(b)q(oth)k(p)q(oin)o(t-to-p)q(oin)o(t)e(and)i(collectiv)o(e\))f
(functions)h(use)g Fi(comm)o(unicators)d Fl(to)i(pro-)75 1181
y(vide)i(a)f(sp)q(eci\014c)j(scop)q(e)f(\(con)o(text)f(and)g(group)g(sp)q
(eci\014cations\))h(for)e(the)i(comm)o(unicatio)o(n.)g(In)f(short,)g(comm)o
(uni-)75 1231 y(cators)h(bring)e(together)i(the)g(concepts)h(of)d(group)h
(and)g(con)o(text;)g(\(furthermore,)g(to)g(supp)q(ort)h(implem)o(en)o
(tation-)75 1281 y(sp)q(eci\014c)i(optimizations,)12 b(and)j(virtual)g(top)q
(ologies,)f(they)i(\\cac)o(he")f(additional)f(information)e(opaquely\).)22
b(The)75 1331 y(source)17 b(and)f(destination)f(of)g(a)h(message)f(is)h(iden)
o(ti\014ed)g(b)o(y)f(the)i(rank)e(of)g(that)h(pro)q(cess)i(within)d(the)h
(group;)g(no)75 1381 y(a)f(priori)h(mem)o(b)q(ership)e(restrictions)j(on)e
(the)i(pro)q(cess)g(sending)f(or)g(receiving)g(the)g(message)g(are)g
(implied.)21 b(F)m(or)75 1430 y(collectiv)o(e)d(comm)o(unicati)o(on,)d(the)k
(comm)o(unicator)c(sp)q(eci\014es)k(the)f(set)h(of)e(pro)q(cesses)k(that)c
(participate)h(in)f(the)75 1480 y(collectiv)o(e)f(op)q(eration.)23
b(Th)o(us,)16 b(the)h(comm)o(uni)o(cator)c(restricts)18 b(the)e(\\spatial")f
(scop)q(e)i(of)e(comm)o(unicatio)o(n,)e(and)75 1530 y(pro)o(vides)h(lo)q(cal)
f(pro)q(cess)j(addressing.)158 1663 y Fe(Discussion:)37 b Fd(`Comm)o
(unicator')14 b(replaces)h(the)f(w)o(ord)f(`con)o(text')h(ev)o(erywhere)g(in)
g(curren)o(t)g(pt2pt)g(and)g(collcomm)75 1712 y(drafts.)158
1845 y Fl(Comm)o(uni)o(cators)19 b(are)h(represen)o(ted)k(b)o(y)c(opaque)g
Fi(comm)o(unicator)h(ob)s(jects)p Fl(,)f(and)g(hence)i(cannot)e(b)q(e)75
1895 y(directly)14 b(transferred)i(from)c(one)i(pro)q(cess)i(to)d(another.)75
2011 y Fg(3.4.1)55 b(Prede\014ned)18 b(Comm)n(unicators)75
2088 y Fl(Initial)12 b(comm)o(unicators)g(de\014ned)j(once)f
Fh(MPI)p 792 2088 V 15 w(INIT)f Fl(has)h(b)q(een)h(called)f(are)g(as)g(follo)
o(ws:)137 2171 y Ff(\017)21 b Fh(MPI)p 248 2171 V 15 w(COMM)p
351 2171 V 15 w(ALL)p Fl(,)40 b(SPMD-lik)o(e)13 b(siblings)g(of)g(a)h(pro)q
(cess.)137 2255 y Ff(\017)21 b Fh(MPI)p 248 2255 V 15 w(COMM)p
351 2255 V 15 w(HOST)p Fl(,)40 b(A)14 b(comm)o(unicator)d(for)j(talking)e(to)
i(one's)g(HOST.)137 2338 y Ff(\017)21 b Fh(MPI)p 248 2338 V
15 w(COMM)p 351 2338 V 15 w(PARENT)p Fl(,)40 b(A)13 b(comm)o(unicator)f(for)h
(talking)g(to)g(one's)h(P)m(ARENT)g(\(spa)o(wner\).)137 2421
y Ff(\017)21 b Fh(MPI)p 248 2421 V 15 w(COMM)p 351 2421 V 15
w(SELF)p Fl(,)30 b(A)11 b(comm)o(unicator)d(for)i(talking)g(to)g(one's)h
(self)g(\(useful)g(for)f(getting)g(con)o(texts)i(for)e(serv)o(er)179
2471 y(purp)q(oses,)15 b(etc.\).)158 2554 y(MPI)h(implemen)o(tatio)o(ns)d
(are)k(required)f(to)g(pro)o(vide)f(these)i(comm)o(unicators;)d(ho)o(w)o(ev)o
(er,)i(not)g(all)e(forms)h(of)75 2604 y(comm)o(unication)f(mak)o(e)h(sense)k
(for)d(all)g(systems.)28 b(En)o(vironmen)o(tal)15 b(inquiry)h(will)g(b)q(e)h
(pro)o(vided)g(to)g(determine)75 2654 y(whic)o(h)e(of)f(these)j(comm)o
(unicators)12 b(are)k(usable)f(in)f(a)h(giv)o(en)g(implem)o(en)o(tation.)j
(The)e(groups)f(corresp)q(onding)h(to)75 2704 y(these)f(comm)o(unicators)d
(are)i(also)f(a)o(v)n(ailable)f(as)i(prede\014ned)i(quan)o(tities)d(\(see)j
(section)e(3.3.1\).)p eop
%%Page: 3 4
bop 75 -100 a Fm(3.5.)31 b(GR)o(OUP)13 b(MANA)o(GEMENT)1197
b Fl(3)158 45 y Fe(Discussion:)18 b Fd(En)o(vironmen)o(tal)e(sub-committee)e
(needs)g(to)f(pro)o(vide)h(suc)o(h)g(inquiry)h(functions)g(for)e(us.)75
263 y Fk(3.5)70 b(Group)24 b(Managemen)n(t)75 354 y Fl(This)12
b(section)i(describ)q(es)g(the)f(manipulation)c(of)j(groups)h(under)g(v)n
(arious)f(subheadings:)18 b(general,)12 b(constructors,)75
404 y(and)i(so)g(on.)75 518 y Fg(3.5.1)55 b(Lo)r(cal)19 b(Op)r(erations)75
594 y Fl(The)14 b(follo)o(wing)e(are)i(all)f(lo)q(cal)g(\(non-comm)o(uni)o
(cating\))e(op)q(erations.)89 644 y Fi(MPI)p 188 644 15 2 v
17 w(GR)o(OUP)p 384 644 V 15 w(SIZE\(group,)k(size\))75 793
y(IN)h(group)k Fl(handle)13 b(to)h(group)g(ob)r(ject.)75 871
y Fi(OUT)i(size)k Fl(is)13 b(the)i(in)o(teger)f(n)o(um)o(b)q(er)f(of)h(pro)q
(cesses)i(in)e(the)g(group.)89 949 y Fi(MPI)p 188 949 V 17
w(GR)o(OUP)p 384 949 V 15 w(RANK\(group,)h(rank\))75 1099 y(IN)h(group)k
Fl(handle)13 b(to)h(group)g(ob)r(ject.)75 1177 y Fi(OUT)i(rank)k
Fl(is)15 b(the)h(in)o(teger)g(rank)f(of)f(the)i(calling)e(pro)q(cess)j(in)e
(group,)f(or)i Fh(MPI)p 1366 1177 14 2 v 15 w(UNDEFINED)d Fl(if)h(the)i(pro)q
(cess)h(is)179 1226 y(not)d(a)f(mem)o(b)q(er.)89 1305 y Fi(MPI)p
188 1305 15 2 v 17 w(TRANSLA)l(TE)p 499 1305 V 18 w(RANKS)j(\(group)p
847 1305 V 15 w(a,)g(n,)g(ranks)p 1084 1305 V 17 w(a,)g(group)p
1275 1305 V 16 w(b,)f(ranks)p 1460 1305 V 17 w(b\))75 1454
y(IN)h(group)p 271 1454 V 16 w(a)21 b Fl(handle)14 b(to)f(group)h(ob)r(ject)h
(\\A")75 1532 y Fi(IN)h(n)21 b Fl(n)o(um)o(b)q(er)13 b(of)g(ranks)h(in)g
Fh(ranks)p 666 1532 14 2 v 14 w(a)g Fl(arra)o(y)75 1610 y Fi(IN)i(ranks)p
263 1610 15 2 v 17 w(a)21 b Fl(arra)o(y)14 b(of)f(zero)i(or)e(more)g(v)n
(alid)g(ranks)h(in)f(group)h(\\A")75 1688 y Fi(IN)i(group)p
271 1688 V 16 w(b)k Fl(handle)14 b(to)g(group)f(ob)r(ject)i(\\B")75
1765 y Fi(OUT)h(ranks)p 314 1765 V 16 w(b)21 b Fl(arra)o(y)10
b(of)g(corresp)q(onding)i(ranks)f(in)g(group)g(\\B,")f Fh(MPI)p
1220 1765 14 2 v 15 w(UNDEFINED)f Fl(when)i(no)g(corresp)q(ondence)179
1815 y(exists.)89 1894 y Fi(MPI)p 188 1894 15 2 v 17 w(GR)o(OUP)p
384 1894 V 15 w(FLA)l(TTEN\(group,)16 b(max)p 882 1894 V 17
w(length,)e(bu\013er,)g(actual)p 1337 1894 V 17 w(length\))75
2043 y(IN)i(group)k Fl(handle)13 b(to)h(ob)r(ject)75 2121 y
Fi(IN)i(max)p 237 2121 V 18 w(length)i Fl(maxim)n(um)10 b(length)k(of)f
(bu\013er)i(in)e(b)o(ytes)75 2199 y Fi(OUT)j(bu\013er)j Fl(b)o(yte-aligned)13
b(bu\013er)75 2277 y Fi(OUT)j(actual)p 327 2277 V 16 w(length)i
Fl(actual)c(b)o(yte)g(length)g(of)f(bu\013er)i(con)o(taining)e(\015attened)i
(group)e(information)75 2355 y(If)f(insu\016cien)o(t)h(space)g(is)g(a)o(v)n
(ailable)d(in)i Fh(buffer)f Fl(\(as)i(sp)q(eci\014ed)h(b)o(y)e
Fh(max)p 1189 2355 14 2 v 15 w(length)p Fl(\),)f(then)j(the)f(con)o(ten)o(ts)
g(of)f Fh(buffer)75 2405 y Fl(are)j(unde\014ned)g(at)g(exit.)k(The)c(quan)o
(tit)o(y)f Fh(actual)p 873 2405 V 14 w(length)f Fl(is)i(alw)o(a)o(ys)e(w)o
(ell-de\014ned)i(at)f(exit)g(as)h(the)g(n)o(um)o(b)q(er)f(of)75
2455 y(b)o(ytes)h(needed)g(to)f(store)h(the)f(\015attened)h(group.)158
2504 y(Though)g(implemen)o(tations)e(ma)o(y)h(v)n(ary)h(on)h(ho)o(w)f(they)i
(store)g(\015attened)g(groups,)f(the)g(information)d(m)o(ust)75
2554 y(b)q(e)h(su\016cien)o(t)f(to)h(reconstruct)h(the)f(group)f(using)g
Fh(MPI)p 936 2554 V 15 w(GROUP)p 1061 2554 V 15 w(UNFLATTEN)e
Fl(b)q(elo)o(w.)17 b(The)d(purp)q(ose)g(of)f(\015attening)75
2604 y(and)h(un\015attening)g(is)f(to)h(allo)o(w)e(in)o(terpro)q(cess)k
(transmission)d(of)g(group)h(ob)r(jects.)158 2654 y(The)g(purp)q(ose)g(of)f
(the)h(\015attening)g(and)f(un\015attening)g(pro)q(cedures)j(is)d(to)h(allo)o
(w)d(groups)j(to)f(b)q(e)h(transmitted)75 2704 y(b)q(et)o(w)o(een)h(pro)q
(cesses)i(in)c(a)h(p)q(ortable)g(w)o(a)o(y)m(.)p eop
%%Page: 4 5
bop 75 -100 a Fl(4)75 45 y Fg(3.5.2)55 b(Lo)r(cal)19 b(Group)g(Constructors)
75 122 y Fl(The)14 b(execution)h(of)e(the)i(follo)o(wing)c(op)q(erations)j
(do)g(not)g(require)g(in)o(terpro)q(cess)i(comm)o(unication.)89
172 y Fi(MPI)p 188 172 15 2 v 17 w(GR)o(OUP)p 384 172 V 15
w(UNFLA)l(TTEN\(max)p 805 172 V 19 w(length,)d(bu\013er,)i(group\))75
330 y(IN)h(max)p 237 330 V 18 w(length)i Fl(maxim)n(um)10 b(length)k(of)f
(bu\013er)i(in)e(b)o(ytes)75 411 y Fi(IN)j(bu\013er)k Fl(b)o(yte-aligned)13
b(bu\013er)i(pro)q(duced)g(b)o(y)e Fh(MPI)p 951 411 14 2 v
16 w(GROUP)p 1077 411 V 14 w(FLATTEN)75 493 y Fi(OUT)j(group)j
Fl(handle)14 b(to)f(ob)r(ject)75 580 y(The)20 b(purp)q(ose)g(of)f(the)h
(\015attening)f(and)h(un\015attening)f(pro)q(cedures)j(is)d(to)g(allo)o(w)f
(groups)h(to)h(b)q(e)f(transmitted)75 630 y(b)q(et)o(w)o(een)c(pro)q(cesses)i
(in)c(a)h(p)q(ortable)g(w)o(a)o(y)m(.)j(See)d(also)g Fh(MPI)p
986 630 V 15 w(GROUP)p 1111 630 V 14 w(FLATTEN)f Fl(ab)q(o)o(v)o(e.)89
680 y Fi(MPI)p 188 680 15 2 v 17 w(LOCAL)p 369 680 V 17 w(SUBGR)o(OUP\(grou)o
(p,)g(n,)i(ranks,)h(new)p 1110 680 V 17 w(group\))75 838 y(IN)g(group)k
Fl(handle)13 b(to)h(group)g(ob)r(ject)75 919 y Fi(IN)i(n)21
b Fl(n)o(um)o(b)q(er)13 b(of)g(elemen)o(ts)h(in)f(arra)o(y)h(ranks)g(\(and)g
(size)h(of)e Fh(new)p 1123 919 14 2 v 15 w(group)p Fl(\))75
1001 y Fi(IN)j(ranks)21 b Fl(arra)o(y)13 b(of)g(in)o(teger)i(ranks)f(in)f
(group)75 1082 y Fi(OUT)j(new)p 283 1082 15 2 v 17 w(group)j
Fl(new)14 b(group)g(deriv)o(ed)g(from)f(ab)q(o)o(v)o(e,)g(preserving)i(the)f
(order)h(de\014ned)g(b)o(y)e Fh(ranks)p Fl(.)89 1169 y Fi(MPI)p
188 1169 V 17 w(LOCAL)p 369 1169 V 17 w(SUBGR)o(OUP)p 663 1169
V 15 w(RANGES\(group,)h(n,)h(ranges,)g(new)p 1352 1169 V 17
w(group\))75 1328 y(IN)h(group)k Fl(handle)13 b(to)h(group)g(ob)r(ject)75
1409 y Fi(IN)i(n)21 b Fl(n)o(um)o(b)q(er)13 b(of)g(elemen)o(ts)h(in)f(arra)o
(y)h(ranks)g(\(and)g(size)h(of)e Fh(new)p 1123 1409 14 2 v
15 w(group)p Fl(\))75 1490 y Fi(IN)j(ranges)k Fl(a)14 b(one-dimensional)d
(arra)o(y)j(of)f(pairs)h(of)f(ranks)i(\(form:)h(b)q(egin)e(through)g(end\))75
1572 y Fi(OUT)i(new)p 283 1572 15 2 v 17 w(group)j Fl(new)14
b(group)g(deriv)o(ed)g(from)f(ab)q(o)o(v)o(e,)g(preserving)i(the)f(order)h
(de\014ned)g(b)o(y)e Fh(ranges)p Fl(.)158 1742 y Fe(Discussion:)k
Fd(Please)12 b(prop)q(ose)g(additional)i(subgroup)e(functions,)g(b)q(efore)f
(the)g(second)h(reading...Virtual)h(T)m(op)q(olo-)75 1792 y(gies)h(supp)q
(ort?)89 1924 y Fi(MPI)p 188 1924 V 17 w(LOCAL)p 369 1924 V
17 w(GR)o(OUP)p 565 1924 V 16 w(UNION\(group1,)g(group2,)g(group)p
1233 1924 V 16 w(out\))89 2045 y(MPI)p 188 2045 V 17 w(LOCAL)p
369 2045 V 17 w(GR)o(OUP)p 565 2045 V 16 w(INTERSECT\(group1,)h(group2,)f
(group)p 1349 2045 V 16 w(out\))89 2166 y(MPI)p 188 2166 V
17 w(LOCAL)p 369 2166 V 17 w(GR)o(OUP)p 565 2166 V 16 w(DIFFERENCE\(group1,)h
(group2,)g(group)p 1385 2166 V 15 w(out\))75 2324 y(IN)h(group1)j
Fl(\014rst)c(group)f(ob)r(ject)h(handle)75 2405 y Fi(IN)h(group2)j
Fl(second)c(group)f(ob)r(ject)h(handle)75 2487 y Fi(OUT)h(group)p
322 2487 V 15 w(out)k Fl(group)14 b(ob)r(ject)g(handle)75 2574
y(The)g(set-lik)o(e)g(op)q(erations)g(are)h(de\014ned)g(as)f(follo)o(ws:)75
2654 y Fi(union)k Fl(All)d(elemen)o(ts)g(of)g(the)g(\014rst)h(group)f
(\(group1\),)g(follo)o(w)o(ed)f(b)o(y)h(all)f(elemen)o(ts)h(of)g(second)h
(group)f(\(group2\))179 2704 y(not)f(in)f(\014rst)p eop
%%Page: 5 6
bop 75 -100 a Fm(3.5.)31 b(GR)o(OUP)13 b(MANA)o(GEMENT)1197
b Fl(5)75 45 y Fi(in)o(tersect)18 b Fl(all)12 b(elemen)o(ts)i(of)f(the)i
(\014rst)g(group)e(whic)o(h)h(are)g(also)g(in)f(the)i(second)g(group)75
131 y Fi(di\013erence)j Fl(all)13 b(elemen)o(ts)h(of)f(the)i(\014rst)f(group)
g(whic)o(h)g(are)g(not)g(in)f(the)i(second)g(group)75 216 y(Note)e(the)g(for)
g(these)h(op)q(erations)f(the)g(order)g(of)f(pro)q(cesses)k(in)c(the)h
(output)g(group)f(is)h(determined)f(\014rst)i(b)o(y)e(order)75
266 y(in)h(the)i(\014rst)g(group)e(\(if)h(p)q(ossible\))g(and)g(then)g(b)o(y)
g(order)g(in)g(the)g(second)h(group)f(\(if)f(necessary\).)158
399 y Fe(Discussion:)k Fd(What)c(do)f(p)q(eople)h(think)g(ab)q(out)f(these)g
(lo)q(cal)i(op)q(erations?)k(More?)g(Less?)f(Note:)f(these)c(op)q(erations)75
449 y(do)h(not)h(explicitly)i(en)o(umerate)e(ranks,)f(and)h(therefore)f(are)g
(more)g(scalable)i(if)f(implemen)o(ted)h(e\016cien)o(tly)p
Fc(:)8 b(:)e(:)89 582 y Fi(MPI)p 188 582 15 2 v 17 w(GR)o(OUP)p
384 582 V 15 w(FREE\(group\))75 738 y(IN)16 b(group)k Fl(frees)15
b Fh(group)d Fl(previously)i(de\014ned.)75 823 y(This)d(op)q(eration)g(frees)
i(a)e(handle)g Fh(group)f Fl(whic)o(h)h(is)g(not)g(curren)o(tly)h(b)q(ound)g
(to)f(a)g(comm)o(unicator.)j(It)d(is)h(erroneous)75 873 y(to)i(attempt)f(to)h
(free)g(a)g(group)g(curren)o(tly)g(b)q(ound)g(to)g(a)g(comm)o(unicator.)158
1006 y Fe(Discussion:)19 b Fd(The)14 b(p)q(oin)o(t-to-p)q(oin)o(t)i(c)o
(hapter)f(suggests)f(that)g(there)g(is)h(a)e(single)j(destructor)e(for)g(all)
h(MPI)f(opaque)75 1056 y(ob)r(jects;)f(ho)o(w)o(ev)o(er,)g(it)g(is)h
(arguable)h(that)e(this)h(sp)q(eci\014es)h(the)e(implemen)o(tation)j(of)d
(MPI)g(v)o(ery)g(strongly)m(.)89 1189 y Fi(MPI)p 188 1189 V
17 w(GR)o(OUP)p 384 1189 V 15 w(DUP\(group,)h(new)p 757 1189
V 17 w(group\))75 1345 y(IN)i(group)k Fl(extan)o(t)14 b(group)f(ob)r(ject)i
(handle)75 1431 y Fi(OUT)h(new)p 283 1431 V 17 w(group)j Fl(new)14
b(group)g(ob)r(ject)h(handle)75 1516 y Fh(MPI)p 144 1516 14
2 v 15 w(GROUP)p 269 1516 V 15 w(DUP)e Fl(duplicates)g(a)h(group)f(with)g
(all)f(its)i(cac)o(hed)g(information,)c(replacing)k(nothing.)j(This)c
(function)75 1565 y(is)h(essen)o(tial)g(to)g(the)g(supp)q(ort)h(of)e(virtual)
g(top)q(ologies.)75 1685 y Fg(3.5.3)55 b(Collectiv)n(e)20 b(Group)f
(Constructors)75 1763 y Fl(The)14 b(execution)h(of)e(the)i(follo)o(wing)c(op)
q(erations)j(require)h(collectiv)o(e)f(comm)o(unicatio)o(n)d(within)i(a)h
(group.)89 1814 y Fi(MPI)p 188 1814 15 2 v 17 w(COLL)p 333
1814 V 17 w(SUBGR)o(OUP\(comm,)f(mem)o(b)q(ership)p 1054 1814
V 14 w(k)o(ey)l(,)j(new)p 1248 1814 V 17 w(group\))75 1970
y(IN)g(comm)21 b Fl(comm)o(unicator)11 b(ob)r(ject)k(handle)75
2055 y Fi(IN)h(mem)o(b)q(ership)p 407 2055 V 14 w(k)o(ey)21
b Fl(\(in)o(teger\))75 2141 y Fi(OUT)16 b(new)p 283 2141 V
17 w(group)j Fl(new)14 b(group)g(ob)r(ject)h(handle)75 2226
y(This)c(collectiv)o(e)g(function)g(is)g(called)g(b)o(y)h(all)e(pro)q(cesses)
j(in)e(the)h(group)f(asso)q(ciated)h(with)f Fh(comm)p Fl(.)16
b(A)c(separate,)g(non-)75 2276 y(o)o(v)o(erlapping)g(group)h(of)g(pro)q
(cesses)j(is)d(formed)f(for)h(eac)o(h)h(distinct)g(v)n(alue)e(of)h
Fh(key)p Fl(,)g(with)g(the)g(pro)q(cesses)j(retaining)75 2326
y(their)e(relativ)o(e)g(order)h(compared)e(to)h(the)g(group)g(of)f
Fh(comm)p Fl(.)89 2376 y Fi(MPI)p 188 2376 V 17 w(COLL)p 333
2376 V 17 w(GR)o(OUP)p 529 2376 V 15 w(PERMUTE\(comm,)j(new)p
1046 2376 V 17 w(rank,)g(new)p 1270 2376 V 17 w(group\))75
2532 y(IN)g(comm)21 b Fl(comm)o(unicator)11 b(ob)r(ject)k(handle)75
2618 y Fi(IN)h(new)p 232 2618 V 17 w(rank)21 b Fl(\(in)o(teger\))75
2704 y Fi(OUT)16 b(new)p 283 2704 V 17 w(group)j Fl(new)14
b(group)g(ob)r(ject)h(handle)p eop
%%Page: 6 7
bop 75 -100 a Fl(6)75 45 y(This)11 b(collectiv)o(e)g(function)g(op)q(erates)i
(o)o(v)o(er)e(all)f(elemen)o(ts)h(of)g(the)h(group)f(of)g(comm.)j(A)d
(correct)i(program)d(sp)q(eci\014es)75 95 y(a)k(distinct)g
Fh(new)p 329 95 14 2 v 15 w(rank)f Fl(in)g(eac)o(h)i(pro)q(cess,)g(whic)o(h)f
(de\014nes)h(a)f(p)q(erm)o(utation)e(of)h(the)i(original)d(ordering.)158
224 y Fe(Discussion:)k Fd(Before,)10 b(w)o(e)e(had)i(one)g(function)g(that)f
(implemen)o(ted)j(collectiv)o(e)f(subsetting,)h(as)d(w)o(ell)h(as)f(p)q(erm)o
(utation)75 270 y(of)18 b(ranks.)33 b(W)m(e)18 b(con)o(vinced)i(ourselv)o(es)
g(that)e(it)g(is)h(b)q(etter)f(to)g(ha)o(v)o(e)h(the)f(ab)q(o)o(v)o(e)h(t)o
(w)o(o)f(functions,)i(eac)o(h)f(of)e(whic)o(h)i(has)75 315
y(clear)g(usage)f(and)h(implemen)o(tation.)34 b(W)m(e)18 b(do)g(not)g(b)q
(eliev)o(e)i(that)e(the)g(p)q(erformance)g(of)g(the)g(t)o(w)o(o-function)h
(sequence)75 361 y(needed)12 b(to)g(subset)g(and)g(p)q(erm)o(ute)g(will)h
(signi\014can)o(tl)q(y)h(di\013er)f(from)e(the)h(all-encompassing)j(function)
e(previously)h(de\014ned.)75 407 y(Commen)o(ts?)158 453 y(F)m(or)g(instance,)
g(to)g(pro)o(vide)h(the)f(sorting)h(function)g(capabilit)o(y)i(originally)g
(an)o(ticipated)f(b)o(y)e(Marc)g(Snir,)g(one)g(could)75 499
y(use)c(MPI)p 215 499 12 2 v 14 w(COLL)p 335 499 V 13 w(SUBGR)o(OUP)g
(preceeded)g(b)o(y)g(a)f(stable)h(sort.)16 b(W)m(e)10 b(therefore)f(see)h
(the)f(giv)o(en)i(functionalit)o(y)h(as)e(su\016cien)o(t)75
544 y(and)k(clearly)g(explicabl)q(e.)158 595 y(By)d(the)f(w)o(a)o(y)m(,)g(w)o
(e)g(ha)o(v)o(e)h(in)o(ten)o(tionall)q(y)i(a)o(v)o(oided)f(making)g(con)o(v)o
(enience)g(functions)g(that)f(do)f(analogous)j(p)q(erm)o(utation)75
645 y(or)j(subsetting,)j(while)f(creating)g(new)e(comm)o(unicators,)j(b)q
(ecause)f(the)e(user)h(can)g(easily)h(do)f(this)g(without)g(additional)75
694 y(sync)o(hronization)q(s)g(b)q(ey)o(ond)e(getting)h(additional)h(needed)e
(con)o(texts.)21 b(Are)14 b(these)h(so)f(con)o(v)o(enien)o(t)i(that)e(w)o(e)g
(w)o(an)o(t)g(to)g(add)75 744 y(them)f(\()p Fb(e.g.)p Fd(,)e
Fa(MPI)p 332 744 V 13 w(COLL)p 425 744 V 13 w(COMM)p 518 744
V 12 w(PERMUTE)p Fd(\).)75 968 y Fk(3.6)70 b(Op)r(erations)22
b(on)h(Con)n(texts)75 1069 y Fg(3.6.1)55 b(Lo)r(cal)19 b(Op)r(erations)89
1147 y Fi(MPI)p 188 1147 15 2 v 17 w(CONTEXTS)p 472 1147 V
18 w(RESER)-5 b(VE\(n,)16 b(con)o(texts\))75 1312 y(IN)g(n)21
b Fl(n)o(um)o(b)q(er)13 b(of)g(con)o(texts)i(to)f(reserv)o(e)i(\(resp,)e
(unreserv)o(e\))75 1397 y Fi(IN)i(con)o(texts)j Fl(in)o(teger)c(arra)o(y)e
(of)h(con)o(texts)75 1492 y(Reserv)o(es)k(zero)g(or)f(more)e(con)o(texts.)28
b(A)16 b(reserv)o(ed)j(con)o(text)f(will)d(not)h(b)q(e)i(allo)q(cated)e(b)o
(y)g(a)h(subsequen)o(t)h(call)e(to)75 1541 y Fh(MPI)p 144 1541
14 2 v 15 w(CONTEXTS)p 335 1541 V 14 w(ALLOC)g Fl(in)h(the)h(same)f(pro)q
(cess)i(\(see)g(b)q(elo)o(w\).)28 b(If)18 b(one)f(or)h(more)e(con)o(texts)i
(had)g(already)f(b)q(een)75 1591 y(allo)q(cated)12 b(b)o(y)g
Fh(MPI)p 375 1591 V 15 w(CONTEXTS)p 566 1591 V 14 w(ALLOC)f
Fl(or)i(reserv)o(ed)h(b)o(y)e Fh(MPI)p 1033 1591 V 15 w(CONTEXTS)p
1224 1591 V 14 w(RESERVE)p Fl(,)f(then)i(this)f(function)g(returns)75
1641 y(an)i(error,)g(and)g(no)f(c)o(hange)i(of)e(con)o(text)h(reserv)n(ation)
h(state)g(shall)e(ha)o(v)o(e)g(o)q(ccured.)158 1692 y(The)19
b(purp)q(ose)g(of)f Fh(MPI)p 529 1692 V 15 w(CONTEXTS)p 720
1692 V 14 w(RESERVE)f Fl(is)h(to)g(pro)o(vide)g(a)g(\\w)o(ell-kno)o(wn)f(con)
o(text")h(mec)o(hanism)e(for)75 1741 y(those)f(who)e(will)g(dev)o(elop)h
(serv)o(er-lik)o(e)g(programs.)89 1792 y Fi(MPI)p 188 1792
15 2 v 17 w(CONTEXTS)p 472 1792 V 18 w(FREE\(n,)i(con)o(texts\))75
1948 y(IN)g(n)21 b Fl(n)o(um)o(b)q(er)13 b(of)g(con)o(texts)i(to)f(free)75
2034 y Fi(IN)i(con)o(texts)j Fl(in)o(teger)c(arra)o(y)e(of)h(con)o(texts)75
2119 y(Lo)q(cal)19 b(deallo)q(cation)g(of)h(con)o(text)g(allo)q(cated)g(b)o
(y)f Fh(MPI)p 953 2119 14 2 v 15 w(CONTEXTS)p 1144 2119 V 14
w(RESERVE)g Fl(or)h Fh(MPI)p 1454 2119 V 15 w(CONTEXTS)p 1645
2119 V 14 w(ALLOC)p Fl(.)e(It)i(is)75 2169 y(erroneous)13 b(to)f(free)g(a)f
(con)o(text)i(that)f(is)f(b)q(ound)h(to)f(an)o(y)h(comm)o(unicator)d
(\(either)j(lo)q(cally)e(or)i(in)f(another)h(pro)q(cess\).)75
2289 y Fg(3.6.2)55 b(Collectiv)n(e)20 b(Op)r(erations)89 2367
y Fi(MPI)p 188 2367 15 2 v 17 w(CONTEXTS)p 472 2367 V 18 w(ALLOC\(group,)14
b(n,)i(con)o(texts\))75 2532 y(IN)g(group)k Fl(group)13 b(ob)r(ject)i(handle)
f(represen)o(ting)h(participan)o(ts)75 2618 y Fi(IN)h(n)21
b Fl(n)o(um)o(b)q(er)13 b(of)g(con)o(texts)i(to)f(allo)q(cate)75
2704 y Fi(OUT)i(con)o(texts)j Fl(in)o(teger)14 b(arra)o(y)g(of)f(con)o(texts)
p eop
%%Page: 7 8
bop 75 -100 a Fm(3.7.)31 b(OPERA)m(TIONS)14 b(ON)g(COMMUNICA)m(TORS)924
b Fl(7)158 45 y(Allo)q(cates)14 b(an)g(arra)o(y)g(of)g(con)o(texts.)20
b(This)14 b(collectiv)o(e)h(op)q(eration)f(is)g(executed)i(b)o(y)e(all)f(pro)
q(cesses)k(in)d Fh(group)p Fl(.)75 95 y(MPI)e(pro)o(vides)h(a)f(static)g
(initialization)d(of)j(the)h(collectiv)o(e)f(op)q(eration)g
Fh(MPI)p 1262 95 14 2 v 15 w(CONTEXT)p 1431 95 V 14 w(ALLOC)f
Fl(and)h(therefore)i(has)75 145 y(the)k(abilit)o(y)e(to)i(pro)o(vide)f(a)h
(safe)g(comm)o(unicatio)o(n)d Fj(at)j(any)i(time)d Fl(to)g(pro)o(vide)h(new)g
(con)o(texts.)31 b(This)17 b(function)75 195 y(will)d(ha)o(v)o(e)g(to)h(lo)q
(c)o(k)g(out)g(m)o(ultiple)d(threads,)k(so)f(it)g(will)f(ha)o(v)o(e)g
(capabilities)h(una)o(v)n(ailable)d(to)j(the)h(user)g(program.)75
244 y(Con)o(texts)c(that)g(are)f(allo)q(cated)g(b)o(y)h Fh(MPI)p
701 244 V 15 w(ALLOC)p 826 244 V 14 w(CONTEXTS)e Fl(are)i(unique)g(within)e
Fh(group)p Fl(.)16 b(The)c(arra)o(y)f(is)h(the)g(same)75 294
y(on)i(all)e(pro)q(cesses)17 b(that)d(call)f(the)h(function)g(\(same)f
(order,)h(same)f(n)o(um)o(b)q(er)g(of)h(elemen)o(ts\).)158
427 y Fe(Discussion:)24 b Fa(MPI)p 457 427 12 2 v 13 w(CONTEXTS)p
630 427 V 11 w(ALLOC\(comm)o(,)17 b(n,)h(contexts\))13 b Fd(w)o(as)j(the)g
(previous)i(de\014nition)h(of)d(this)h(function.)75 476 y(The)e(revision)h
(is)g(seen)f(as)g(a)f(m)o(uc)o(h)h(more)g(consisten)o(t,)h(explicable)q(,)h
(and)e(reasonable)i(c)o(hoice)f(for)e(MPI1.)22 b(It)15 b(a)o(v)o(oids)h(the)
75 526 y(c)o(hic)o(k)o(en-and-egg)i(feel)e(of)f(MPI)g(\(ie,)i(use)e(a)h(comm)
o(unicator)h(to)e(get)h(con)o(text\(s\))g(or)f(a)h(comm)o(unicator\),)h(and)f
(it)g(means)75 576 y(that)c(libraries)j(con)o(trol)f(their)f(o)o(wn)f(fate)g
(regarding)i(safet)o(y)m(.)j(No)12 b(quiescen)o(t)i(comm)o(unicator)g(is)f
(required)h(in)f(order)g(to)f(get)75 626 y(new)i(con)o(texts.)22
b(MPI)15 b(manages)g(this)h(call)f(as)g(a)f(single-in)o(vo)q(cati)q(on)j
(library)m(,)g(so)d Fa(MPI)p 1342 626 V 13 w(INIT)f Fd(can)i(assign)h(it)f(a)
f(con)o(text)h(of)75 676 y(comm)o(unication)h(statically)m(.)87
808 y Fi(MPI)p 186 808 15 2 v 18 w(CONTEXTS)p 471 808 V 18
w(JOIN\(lo)q(cal)p 721 808 V 16 w(comm,)e(remote)p 1036 808
V 16 w(comm)p 1177 808 V 17 w(send,)g(remote)p 1463 808 V 15
w(comm)p 1603 808 V 17 w(recv,)h(n,)f(con-)75 893 y(texts\))75
1014 y(IN)i(lo)q(cal)p 246 1014 V 17 w(comm)k Fl(comm)o(unicator)11
b(ob)r(ject)k(handle)75 1094 y Fi(IN)h(remote)p 296 1094 V
16 w(comm)p 437 1094 V 17 w(send)k Fl(comm)o(uni)o(cator)12
b(ob)r(ject)i(handle)75 1174 y Fi(IN)i(remote)p 296 1174 V
16 w(comm)p 437 1174 V 17 w(recv)21 b Fl(comm)o(unicator)11
b(ob)r(ject)k(handle)75 1255 y Fi(IN)h(n)21 b Fl(n)o(um)o(b)q(er)13
b(of)g(con)o(texts)i(to)f(allo)q(cate)75 1335 y Fi(OUT)i(con)o(texts)j
Fl(in)o(teger)14 b(arra)o(y)g(of)f(con)o(texts)75 1420 y(This)f(is)f(an)h
(adv)n(anced)g(function)f(needed)i(to)f(supp)q(ort)g(\\safe")g(in)o(tergroup)
g(comm)o(uni)o(cation.)i(The)f(function)e(cre-)75 1470 y(ates)j
Fh(n)e Fl(con)o(texts)i(unique)f(on)g(the)g(union)f(of)h(the)g(underlying)g
(groups)g(of)f Fh(local)p 1347 1470 14 2 v 15 w(comm)g Fl(and)h
Fh(remote)p 1674 1470 V 14 w(comm)p 1776 1470 V 15 w(send)75
1520 y Fl(\(whic)o(h)k(is)f(the)h(same)f(as)g Fh(remote)p 626
1520 V 15 w(comm)p 729 1520 V 15 w(recv)p Fl('s)f(group\).)26
b Fh(remote)p 1165 1520 V 15 w(comm)p 1268 1520 V 15 w(send)15
b Fl(and)i Fh(remote)p 1602 1520 V 14 w(comm)p 1704 1520 V
15 w(recv)f Fl(are)75 1569 y(created)f(b)o(y)f Fh(MPI)p 347
1569 V 15 w(COMM)p 450 1569 V 15 w(MERGE)f Fl(\(b)q(elo)o(w\).)75
1705 y Fk(3.7)70 b(Op)r(erations)22 b(on)h(Comm)n(unicators)75
1805 y Fg(3.7.1)55 b(Lo)r(cal)19 b(Comm)n(unicator)h(Op)r(erations)75
1881 y Fl(The)14 b(follo)o(wing)e(are)i(all)f(lo)q(cal)g(\(non-comm)o(uni)o
(cating\))e(op)q(erations.)89 1931 y Fi(MPI)p 188 1931 15 2
v 17 w(COMM)p 365 1931 V 18 w(SIZE\(comm,)16 b(size\))75 2087
y(IN)g(comm)21 b Fl(handle)14 b(to)f(comm)o(unicator)e(ob)r(ject.)75
2167 y Fi(OUT)16 b(size)k Fl(is)13 b(the)i(in)o(teger)f(n)o(um)o(b)q(er)f(of)
h(pro)q(cesses)i(in)e(the)g(group)g(of)f Fh(comm)p Fl(.)89
2252 y Fi(MPI)p 188 2252 V 17 w(COMM)p 365 2252 V 18 w(RANK\(comm,)j(rank\))
75 2407 y(IN)g(comm)21 b Fl(handle)14 b(to)f(comm)o(unicator)e(ob)r(ject.)75
2488 y Fi(OUT)16 b(rank)k Fl(is)e(the)g(in)o(teger)g(rank)g(of)f(the)h
(calling)e(pro)q(cess)k(in)d(group)h(of)f Fh(comm)p Fl(,)g(or)h
Fh(MPI)p 1550 2488 14 2 v 15 w(UNDEFINED)d Fl(if)i(the)179
2538 y(pro)q(cess)e(is)f(not)g(a)g(mem)o(b)q(er.)89 2622 y
Fi(MPI)p 188 2622 15 2 v 17 w(COMM)p 365 2622 V 18 w(FLA)l(TTEN\(comm,)j(max)
p 870 2622 V 17 w(length,)d(bu\013er,)g(actual)p 1325 2622
V 17 w(length\))p eop
%%Page: 8 9
bop 75 -100 a Fl(8)75 45 y Fi(IN)16 b(comm)21 b Fl(handle)14
b(to)f(comm)o(unicator)e(ob)r(ject.)75 134 y Fi(IN)16 b(max)p
237 134 15 2 v 18 w(length)i Fl(maxim)n(um)10 b(length)k(of)f(bu\013er)i(in)e
(b)o(ytes)75 223 y Fi(OUT)j(bu\013er)j Fl(b)o(yte-aligned)13
b(bu\013er)75 311 y Fi(OUT)j(actual)p 327 311 V 16 w(length)i
Fl(actual)c(b)o(yte)g(length)g(of)f(bu\013er)i(con)o(taining)e(\015attened)i
(comm)o(unicator)c(information)75 409 y(If)h(insu\016cien)o(t)h(space)g(is)g
(a)o(v)n(ailable)d(in)i Fh(buffer)f Fl(\(as)i(sp)q(eci\014ed)h(b)o(y)e
Fh(max)p 1189 409 14 2 v 15 w(length)p Fl(\),)f(then)j(the)f(con)o(ten)o(ts)g
(of)f Fh(buffer)75 458 y Fl(are)j(unde\014ned)g(at)g(exit.)k(The)c(quan)o
(tit)o(y)f Fh(actual)p 873 458 V 14 w(length)f Fl(is)i(alw)o(a)o(ys)e(w)o
(ell-de\014ned)i(at)f(exit)g(as)h(the)g(n)o(um)o(b)q(er)f(of)75
508 y(b)o(ytes)h(needed)g(to)f(store)h(the)f(\015attened)h(comm)o(unicator.)
158 559 y(Though)c(implemen)o(tations)d(ma)o(y)i(v)n(ary)h(on)g(ho)o(w)g
(they)h(store)g(\015attened)h(comm)o(unicators,)c(the)j(information)75
609 y(m)o(ust)g(b)q(e)i(su\016cien)o(t)f(to)g(reconstruct)j(the)d(comm)o
(unicator)e(using)i Fh(MPI)p 1191 609 V 15 w(COMM)p 1294 609
V 15 w(UNFLATTEN)e Fl(b)q(elo)o(w.)17 b(The)d(purp)q(ose)75
659 y(of)c(\015attening)g(and)h(un\015attening)f(is)h(to)f(allo)o(w)f(p)q
(ortable)i(in)o(terpro)q(cess)h(transmission)e(of)g(comm)o(uni)o(cator)e(ob)r
(jects.)75 783 y Fg(3.7.2)55 b(Lo)r(cal)19 b(Constructors)89
862 y Fi(MPI)p 188 862 15 2 v 17 w(COMM)p 365 862 V 18 w(UNFLA)l(TTEN\(max)p
789 862 V 18 w(length,)14 b(bu\013er,)h(comm\))75 1020 y(IN)h(max)p
237 1020 V 18 w(length)i Fl(maxim)n(um)10 b(length)k(of)f(bu\013er)i(in)e(b)o
(ytes)75 1109 y Fi(IN)j(bu\013er)k Fl(b)o(yte-aligned)13 b(bu\013er)i(pro)q
(duced)g(b)o(y)e Fh(MPI)p 951 1109 14 2 v 16 w(COMM)p 1055
1109 V 14 w(FLATTEN)75 1198 y Fi(OUT)j(comm)k Fl(handle)14
b(to)g(ob)r(ject)75 1285 y(See)h Fh(MPI)p 218 1285 V 15 w(COMM)p
321 1285 V 15 w(FLATTEN)d Fl(ab)q(o)o(v)o(e.)89 1337 y Fi(MPI)p
188 1337 15 2 v 17 w(COMM)p 365 1337 V 18 w(BIND\(group,)i(con)o(text,)h
(comm)p 986 1337 V 17 w(new\))75 1495 y(IN)h(group)k Fl(ob)r(ject)14
b(handle)g(to)g(b)q(e)g(b)q(ound)g(to)g(new)g(comm)o(unicator)75
1584 y Fi(IN)i(con)o(text)k Fl(con)o(text)14 b(to)g(b)q(e)g(b)q(ound)g(to)g
(new)h(comm)o(uni)o(cator)75 1672 y Fi(OUT)h(comm)p 325 1672
V 17 w(new)k Fl(the)15 b(new)f(comm)o(unicator.)158 1760 y(The)19
b(ab)q(o)o(v)o(e)e(function)h(creates)i(a)e(new)h(comm)o(unicator)c(ob)r
(ject,)20 b(whic)o(h)e(is)g(asso)q(ciated)h(with)e(the)i(group)75
1810 y(de\014ned)e(b)o(y)e(group,)g(and)h(the)g(sp)q(eci\014ed)h(con)o(text.)
23 b(The)16 b(op)q(eration)g(do)q(es)g(not)g(require)g(comm)o(unication.)j
(It)d(is)75 1859 y(correct)i(to)e(b)q(egin)h(using)f(a)g(comm)o(unicator)e
(as)i(so)q(on)h(as)f(it)g(is)g(de\014ned.)27 b(It)17 b(is)f(not)g(erroneous)i
(to)e(in)o(v)o(ok)o(e)g(this)75 1909 y(function)10 b(t)o(wice)g(in)f(the)h
(same)f(pro)q(cess)j(with)d(the)i(same)e(con)o(text.)17 b(Finally)m(,)8
b(there)j(is)f(no)g(explicit)f(sync)o(hronization)75 1959 y(o)o(v)o(er)14
b(the)g(group.)89 2010 y Fi(MPI)p 188 2010 V 17 w(COMM)p 365
2010 V 18 w(UNBIND\(comm\))75 2169 y(IN)i(comm)21 b Fl(the)14
b(comm)o(unicator)d(to)j(b)q(e)h(deallo)q(cated.)75 2256 y(This)f(routine)h
(disasso)q(ciates)h(the)f(group)f(asso)q(ciated)i(with)e(comm)e(from)g(the)k
(con)o(text)f(asso)q(ciated)g(with)f Fh(comm)p Fl(.)75 2306
y(The)e(opaque)g(ob)r(ject)h Fh(comm)e Fl(is)h(deallo)q(cated.)17
b(Both)12 b(the)h(group)f(and)f(con)o(text,)i(pro)o(vided)f(at)f(the)i
Fh(MPI)p 1673 2306 14 2 v 15 w(COMM)p 1776 2306 V 15 w(BIND)75
2356 y Fl(call,)c(remain)f(a)o(v)n(ailable)f(for)i(further)h(use.)17
b(If)9 b Fh(MPI)p 845 2356 V 15 w(COMM)p 948 2356 V 15 w(MAKE)f
Fl(\(see)j(b)q(elo)o(w\))e(w)o(as)g(called)g(in)g(lieu)g(of)g
Fh(MPI)p 1682 2356 V 15 w(COMM)p 1785 2356 V 15 w(BIND)p Fl(,)75
2405 y(then)14 b(there)g(is)f(no)g(exp)q(osed)h(con)o(text)f(kno)o(wn)g(to)g
(the)g(user,)h(and)f(this)g(quan)o(tit)o(y)f(is)h(freed)h(b)o(y)f
Fh(MPI)p 1618 2405 V 15 w(COMM)p 1721 2405 V 15 w(UNBIND)p
Fl(.)89 2457 y Fi(MPI)p 188 2457 15 2 v 17 w(COMM)p 365 2457
V 18 w(GR)o(OUP\(comm,)h(group\))75 2615 y(IN)i(comm)21 b Fl(comm)o(unicator)
11 b(ob)r(ject)k(handle)75 2704 y Fi(OUT)h(group)j Fl(group)14
b(ob)r(ject)g(handle)p eop
%%Page: 9 10
bop 75 -100 a Fm(3.7.)31 b(OPERA)m(TIONS)14 b(ON)g(COMMUNICA)m(TORS)924
b Fl(9)75 45 y(Accessor)16 b(that)e(returns)h(the)g(group)f(corresp)q(onding)
h(to)e(the)i(comm)o(unicator)c Fh(comm)p Fl(.)89 98 y Fi(MPI)p
188 98 15 2 v 17 w(COMM)p 365 98 V 18 w(CONTEXT\(comm,)17 b(con)o(text\))75
259 y(IN)f(comm)21 b Fl(comm)o(unicator)11 b(ob)r(ject)k(handle)75
353 y Fi(OUT)h(con)o(text)j Fl(con)o(text)75 443 y(Returns)c(the)f(con)o
(text)h(asso)q(ciated)f(with)g(the)h(comm)o(uni)o(cator)d Fh(comm)p
Fl(.)89 496 y Fi(MPI)p 188 496 V 17 w(COMM)p 365 496 V 18 w(DUP\(comm,)j(new)
p 745 496 V 17 w(con)o(text,)f(new)p 1028 496 V 17 w(comm\))75
657 y(IN)i(comm)21 b Fl(comm)o(unicator)11 b(ob)r(ject)k(handle)75
751 y Fi(IN)h(new)p 232 751 V 17 w(con)o(text)k Fl(new)14 b(con)o(text)h(to)e
(use)i(with)f(new)p 945 751 13 2 v 15 w(comm)75 844 y Fi(OUT)i(new)p
283 844 15 2 v 17 w(comm)k Fl(comm)o(unicator)11 b(ob)r(ject)k(handle)75
935 y Fh(MPI)p 144 935 14 2 v 15 w(COMM)p 247 935 V 15 w(DUP)c
Fl(duplicates)h(a)g(comm)o(unicator)d(with)j(all)f(its)g(cac)o(hed)i
(information,)c(replacing)j(just)g(the)h(con)o(text.)89 987
y Fi(MPI)p 188 987 15 2 v 17 w(COMM)p 365 987 V 18 w(MER)o(GE\(comm,)j(comm)p
861 987 V 16 w(remote,)f(comm)p 1177 987 V 17 w(send,)g(comm)p
1442 987 V 17 w(recv\))75 1149 y(IN)h(comm)21 b Fl(comm)o(unicator)11
b(ob)r(ject)k(handle)75 1242 y Fi(IN)h(comm)p 274 1242 V 17
w(remote)k Fl(comm)o(uni)o(cator)12 b(ob)r(ject)i(handle)75
1336 y Fi(OUT)i(comm)p 325 1336 V 17 w(send)j Fl(comm)o(unicator)11
b(ob)r(ject)k(handle)75 1429 y Fi(OUT)h(comm)p 325 1429 V 17
w(recv)k Fl(comm)o(unicator)11 b(ob)r(ject)k(handle)75 1520
y Fh(MPI)p 144 1520 14 2 v 15 w(COMM)p 247 1520 V 15 w(MERGE)i
Fl(is)i(a)f(call)f(used)j(after)f(a)f(publish)g(&)h(subscrib)q(e)h(\(equiv)n
(alen)o(tly)m(,)d(\015atten)i(&)g(un\015atten\))g(se-)75 1570
y(quence)g(to)f(pro)o(vide)g(comm)o(unicators)e(that)i(can)g(b)q(e)h(used)g
(to)f(transmit)f(to)g(remote)h(group)g(using)g(\\correct")75
1620 y(rank)c(notation.)j(It)d(is)g(motiv)n(ated)e(further)i(b)q(elo)o(w.)75
1750 y Fg(3.7.3)55 b(Collectiv)n(e)20 b(Comm)n(unicator)g(Constructors)89
1831 y Fi(MPI)p 188 1831 15 2 v 17 w(COMM)p 365 1831 V 18 w(MAKE\(sync)p
643 1831 V 18 w(group,)15 b(comm)p 936 1831 V 16 w(group,)g(comm)p
1227 1831 V 17 w(new\))75 1993 y(IN)h(sync)p 241 1993 V 17
w(group)k Fl(Group)13 b(o)o(v)o(er)g(whic)o(h)g(comm)o(unicator)e(will)g(b)q
(e)j(de\014ned,)g(and)g(sp)q(eci\014es)h(participan)o(ts)e(in)g(this)179
2043 y(sync)o(hronizing)h(op)q(eration.)75 2136 y Fi(IN)i(comm)p
274 2136 V 17 w(group)j Fl(Group)c(of)e(the)i(new)g(comm)o(unicator;)d(often)
i(this)h(will)e(b)q(e)i(the)g(same)f(as)g Fh(sync)p 1691 2136
14 2 v 15 w(group)p Fl(,)f(or)179 2186 y(b)q(e)h(a)g(subset)h(thereof;)75
2279 y Fi(OUT)h(comm)p 325 2279 15 2 v 17 w(new)k Fl(the)15
b(new)f(comm)o(unicator.)75 2370 y Fh(MPI)p 144 2370 14 2 v
15 w(COMM)p 247 2370 V 15 w(MAKE)f Fl(is)h(equiv)n(alen)o(t)f(to:)140
2463 y Fh(MPI_CONTEXTS_ALLOC\()o(sync\\)o(_grou)o(p,)19 b(context,)h(1\))140
2513 y(MPI_COMM_BIND\(comm\\)o(_grou)o(p,)f(context,)h(comm_new\))75
2604 y Fl(plus,)d(notionally)m(,)d(in)o(ternal)j(\015ags)f(are)i(set)f(in)g
(the)g(comm)o(unicator,)d(denoting)j(that)f(con)o(text)i(w)o(as)f(created)h
(as)75 2654 y(part)d(of)g(the)g(opaque)g(pro)q(cess)i(that)e(made)f(the)i
(comm)o(unicator)c(\(so)j(it)g(can)g(b)q(e)h(freed)g(b)o(y)f
Fh(MPI)p 1602 2654 V 15 w(COMM)p 1705 2654 V 15 w(UNBIND)p
Fl(\).)75 2704 y(It)f(is)g(not)g(erroneous)h(if)e Fh(comm)p
552 2704 V 15 w(group)f Fl(is)i(not)g(a)g(subset)h(of)e Fh(sync)p
1102 2704 V 15 w(group)p Fl(.)p eop
%%Page: 10 11
bop 75 -100 a Fl(10)75 45 y Fk(3.8)70 b(In)n(ter-comm)n(unicati)o(on)21
b(Initializ)o(ati)o(on)g(&)i(Rendezv)n(ous)75 219 y Fe(Discussion:)c
Fd(Before,)14 b Fa(MPI)p 501 219 12 2 v 13 w(COMM)p 594 219
V 12 w(MAKE)e Fd(required)j(a)f(comm)o(unicator,)h(instead)g(of)f
Fa(sync)p 1402 219 V 12 w(group)p Fd(.)j(This)d(is)h(unnecessary)m(,)75
269 y(b)q(ecause)10 b(MPI)p 290 269 V 14 w(COMM)p 432 269 V
14 w(MAKE)e(can)h(b)q(e)g(treated)g(b)o(y)g(MPI)g(as)g(a)g(statically)i
(initiali)q(zed)h(library)m(,)f(that)e(also)h(lo)q(c)o(ks)f(out)g(other)75
318 y(threads.)17 b(Th)o(us,)10 b(regardless)i(of)e(the)h(curren)o(t)f(state)
g(of)g(comm)o(unication)j(in)e(MPI,)f(a)g(program)h(can)g(initiate)h(a)e(lo)q
(osely)i(syn-)75 368 y(c)o(hronous)f(call)g(to)f Fa(MPI)p 406
368 V 13 w(COMM)p 499 368 V 12 w(MAKE)e Fd(and)i(get)g(a)g(quiescen)o(t)h
(comm)o(unicator)g(bac)o(k.)17 b(As)9 b(with)h(MPI)p 1486 368
V 14 w(CONTEXTS)p 1719 368 V 13 w(ALLOC,)75 418 y(this)16 b(c)o(hoice)h(giv)o
(es)g(full)f(con)o(trol)h(to)e(libraries)j(concerning)g(their)e(safet)o(y)m
(.)25 b(If)14 b(they)i(ha)o(v)o(e)g(p)q(ersisten)o(t)h(ob)r(jects,)g(they)e
(can)75 468 y(sa)o(v)o(e)c(needed)h(comm)o(unicators)g(for)f(reuse)g(on)g
(subsequen)o(t)i(in)o(v)o(o)q(cations)g(of)d(that)h(library)m(,)i(or)e
(\\friend)h(functions")g(thereof,)75 518 y(op)q(erating)j(on)e(the)g(same)h
(p)q(ersisten)o(t)g(data.)89 650 y Fi(MPI)p 188 650 15 2 v
17 w(COMM)p 365 650 V 18 w(PUBLISH\(comm,)h(lab)q(el,)f(p)q(ersistence)p
1131 650 V 15 w(\015ag\))75 804 y(IN)i(comm)21 b Fl(Comm)o(uni)o(cator)11
b(to)j(b)q(e)h(published)f(under)g(the)h(name)e Fh(label)p
Fl(.)75 887 y Fi(IN)j(lab)q(el)k Fl(String)13 b(lab)q(el)h(describing)g
(published)g(comm)o(unicator.)75 970 y Fi(IN)i(p)q(ersistence)p
382 970 V 15 w(\015ag)k Fl(Either)15 b Fh(MPI)p 685 970 14
2 v 15 w(EPHEMERAL)d Fl(or)i Fh(MPI)p 1027 970 V 15 w(PERSISTENT)p
Fl(.)75 1052 y(This)e(op)q(eration)g(results)h(in)f(the)h(asso)q(ciation)f
(of)f(the)i(comm)o(unicator)d Fh(comm)h Fl(with)h(the)h(name)e(sp)q
(eci\014ed)i(in)f(lab)q(el,)75 1102 y(with)32 b(global)f(scop)q(e.)75
b(P)o(ersistence)35 b(is)d(either)i(ephemeral)e(\(one)g(subscrib)q(e)j
(causes)f(an)e(automatic)75 1152 y Fh(MPI)p 144 1152 V 15 w(COMM)p
247 1152 V 15 w(UNPUBLISH)p Fl(\),)11 b(or)j(p)q(ersisten)o(t)i(\(an)d
(explicit)g Fh(MPI)p 1025 1152 V 16 w(COMM)p 1129 1152 V 14
w(UNPUBLISH)f Fl(m)o(ust)h(b)q(e)h(subsequen)o(tly)h(called\))75
1202 y(and)e(an)o(y)f(n)o(um)o(b)q(er)h(of)f(subscriptions)i(can)f(o)q(ccur.)
19 b(This)13 b(op)q(eration)g(do)q(es)g(not)g(w)o(ait)f(for)h(subscriptions)h
(to)f(o)q(ccur)75 1252 y(b)q(efore)i(returning.)j(Only)c(one)g(pro)q(cess)i
(calls)d(this)h(function.)158 1302 y(Subsequen)o(t)108 b(calls)e(to)g
Fh(MPI)p 867 1302 V 15 w(COMM)p 970 1302 V 15 w(PUBLISH)f Fl(with)h(the)h
(same)f(lab)q(el)75 1351 y(\(without)14 b(an)f(in)o(terv)o(ening)h
Fh(MPI)p 588 1351 V 15 w(COMM)p 691 1351 V 15 w(UNPUBLISH)p
Fl(\))e(is)i(erroneous.)158 1484 y Fe(Discussion:)k Fd(Should)d(w)o(e)e(ha)o
(v)o(e)g(a)g(p)q(ermissions)j(\015ag)d(that)g(implemen)o(ts)i(access)f
(restrictions)h(similar)g(to)e(Unix.)89 1616 y Fi(MPI)p 188
1616 15 2 v 17 w(COMM)p 365 1616 V 18 w(UNPUBLISH\(lab)q(el\))75
1770 y(IN)j(lab)q(el)k Fl(String)13 b(lab)q(el)h(describing)g(published)g
(comm)o(unicator.)75 1853 y(This)j(is)g(an)h(op)q(eration)f(undertak)o(en)h
(b)o(y)f(a)g(single)g(pro)q(cess,)j(whose)e(e\013ect)h(is)e(to)g(remo)o(v)o
(e)g(the)h(asso)q(ciation)f(of)75 1903 y(the)c(comm)o(unicator)d(sp)q
(eci\014ed)k(in)d(a)i(preceding)g Fh(MPI)p 915 1903 14 2 v
15 w(COMM)p 1018 1903 V 15 w(PUBLISH)e Fl(call)g(with)h(the)h(name)f(sp)q
(eci\014ed)i(in)e Fh(label)p Fl(.)75 1952 y Fh(MPI)p 144 1952
V 15 w(COMM)p 247 1952 V 15 w(UNPUBLISH)g Fl(on)i(an)f(unde\014ned)i(lab)q
(el)f(will)e(b)q(e)j(ignored.)89 2002 y Fi(MPI)p 188 2002 15
2 v 17 w(COMM)p 365 2002 V 18 w(SUBSCRIBE\(m)o(y)p 744 2002
V 16 w(comm,)h(lab)q(el,)f(comm\))75 2156 y(IN)h(m)o(y)p 213
2156 V 17 w(comm)21 b Fl(Comm)n(unicator)11 b(of)j(participan)o(ts)f(in)h
(subscrib)q(e.)75 2239 y Fi(IN)i(lab)q(el)k Fl(String)13 b(lab)q(el)h
(describing)g(comm)o(unicator)d(to)j(whic)o(h)g(w)o(e)g(wish)f(to)h(subscrib)
q(e)75 2322 y Fi(OUT)i(comm)k Fl(Comm)o(unicator)11 b(created)k(through)f
(subscription)h(pro)q(cess.)75 2405 y(This)d(is)f(a)h(collectiv)o(e)g(comm)o
(unicatio)o(n)d(in)j(the)g(group)g(sp)q(eci\014ed)h(in)f Fh(my)p
1196 2405 14 2 v 15 w(comm)p Fl(,)f(whic)o(h)g(has)h(the)h(e\013ect)g(of)f
(creating)75 2455 y(in)g(eac)o(h)h(group)g(pro)q(cess)h(a)e(cop)o(y)h(of)f
(the)h(previously)f(published)h(comm)o(unicator)c(asso)q(ciated)14
b(with)e(the)h(name)e(in)75 2504 y(lab)q(el.)17 b(This)d(op)q(eration)g(blo)q
(c)o(ks)g(un)o(til)f(suc)o(h)i(an)e(asso)q(ciation)h(is)f(p)q(ossible.)158
2554 y(Once)22 b(an)e Fh(MPI)p 404 2554 V 15 w(COMM)p 507 2554
V 15 w(PUBLISH)f Fl(and)i(an)f Fh(MPI)p 913 2554 V 15 w(COMM)p
1016 2554 V 15 w(SUBSCRIBE)f Fl(on)h(the)h(same)f(lab)q(el)g(ha)o(v)o(e)h(o)q
(ccurred,)75 2604 y(the)d(subscrib)q(er)i Fh(my)p 399 2604
V 16 w(comm)d Fl(has)h(the)g(abilit)o(y)e(to)i(send)h(messages)f(to)f(the)i
(publisher;)h(group)d(mem)o(b)q(ers)g(of)g(the)75 2654 y(published)h(comm)o
(unicator)e(ha)o(v)o(e)i(the)g(abilit)o(y)f(to)h(receiv)o(e)h(messages)f
(using)g(the)h(published)f(comm)o(unicator.)75 2704 y(The)c(comm)o(unicators)
e(so)i(de\014ned)h(ma)o(y)d(only)h(b)q(e)h(used)h(in)e(p)q(oin)o(t-to-p)q
(oin)o(t)g(comm)o(unication.)p eop
%%Page: 11 12
bop 75 -100 a Fm(3.8.)26 b(INTER-COMMUNICA)m(TION)15 b(INITIALIZA)m(TION)f(&)
g(RENDEZV)o(OUS)431 b Fl(11)158 45 y Fe(Discussion:)92 b Fd(Do)50
b(w)o(e)g(w)o(an)o(t)g(an)o(y)g(of)g(the)g(follo)o(wing)i Fa(MPI)p
1340 45 12 2 v 13 w(COMM)p 1433 45 V 13 w(SUBSCRIBE)p 1625
45 V 10 w(NON)p 1696 45 V 13 w(BLOCKING)p Fd(,)75 95 y Fa(MPI)p
137 95 V 13 w(COMM)p 230 95 V 13 w(SUBSCRIB)o(E)p 422 95 V
11 w(PROBE)p Fd(,)11 b(etc...)75 285 y Fi(The)17 b(symmetric)e(case)42
b Fl(is)15 b(constructed)i(as)e(follo)o(ws:)j(Group)d(\\A")g(and)f(\\B")h
(wish)g(to)g(build)f(a)h(symmetric)75 335 y(in)o(ter-group)f(comm)o(unicatio)
o(n)d(structure.)75 385 y(\\A")i(group:)249 467 y Fh(mpi_comm_group\(A_co)o
(mm,)19 b(A_group\))249 517 y(mpi_contexts_alloc\()o(A_gro)o(up,)g(1,)i
(context1\))249 566 y(mpi_comm_dup\(A_comm)o(,)e(context1,)h(A_comm1\))249
616 y(mpi_comm_rank\(A_com)o(m,)f(rank\))249 666 y(if\(rank)i(==)g(0\))g
(then)315 716 y(mpi_comm_publish)o(\(A_co)o(mm1,)d("A_comm1",)i
(MPI_EPHEMERAL\))249 766 y(endif)249 815 y(/*)i([OTHER)e(WORK)h(UNRELATED)f
(TO)i(THIS)f(OPERATION])e(*/)249 865 y(mpi_comm_subscribe\()o(A_com)o(m,)g
("B_comm1",)g(B_comm1\))249 915 y(mpi_comm_merge\(A_co)o(mm1,)f(B_comm1,)j
(Send_to_B,)e(Recv_from_B\))249 965 y(mpi_comm_free\(A_com)o(m1\))249
1015 y(mpi_comm_free\(B_com)o(m1\))75 1097 y Fl(\\B")14 b(group:)249
1178 y Fh(mpi_comm_group\(B_co)o(mm,)19 b(B_group\))249 1228
y(mpi_contexts_alloc\()o(B_gro)o(up,)g(1,)i(context1\))249
1278 y(mpi_comm_dup\(B_comm)o(,)e(context1,)h(B_comm1\))249
1328 y(mpi_comm_rank\(B_com)o(m,)f(rank\))249 1378 y(if\(rank)i(==)g(0\))g
(then)315 1427 y(mpi_comm_publish)o(\(B_co)o(mm1,)d("B_comm1",)i
(MPI_EPHEMERAL\))249 1477 y(endif)249 1527 y(/*)i([OTHER)e(WORK)h(UNRELATED)f
(TO)i(THIS)f(OPERATION])e(*/)249 1577 y(mpi_comm_subscribe\()o(B_com)o(m,)g
("A_comm1",)g(A_comm1\))249 1627 y(mpi_comm_merge\(B_co)o(mm1,)f(A_comm1,)j
(Send_to_B,)e(Recv_from_B\))249 1677 y(mpi_comm_free\(B_com)o(m1\))249
1726 y(mpi_comm_free\(A_com)o(m1\))75 1808 y Fl(F)m(or)d(example,)f(elemen)o
(ts)h(of)g(the)h(\\B")f(group)g(use)h Fh(Send)p 997 1808 14
2 v 15 w(to)p 1056 1808 V 15 w(A)f Fl(to)g(send)h(to)f(elemen)o(ts)g(of)g
(\\A,")g(whic)o(h)g(receiv)o(e)75 1858 y(suc)o(h)e(messages)f(in)f
Fh(Recv)p 481 1858 V 15 w(from)p 584 1858 V 15 w(B)p Fl(.)h(Alternativ)o(ely)
m(,)e(the)j(follo)o(wing)c(function)j(is)g(rather)h(more)e(con)o(v)o(enien)o
(t)h(when)75 1908 y(one)g(do)q(es)h(not)f(need)h(to)e(exploit)h(the)g
(decoupling)g(of)f(publish)h(and)f(subscrib)q(e)j(transactions,)e(and)g(is)g
(as)g(follo)o(ws:)130 1958 y Fi(MPI)p 229 1958 15 2 v 17 w(COMM)p
406 1958 V 18 w(PUBLISH)p 639 1958 V 16 w(SUBSCRIBE\(comm)p
1077 1958 V 16 w(A,)63 b(lab)q(el)p 1306 1958 V 16 w(A,)g(lab)q(el)p
1535 1958 V 15 w(B,)g(send)p 1755 1958 V 16 w(to)p 1814 1958
V 17 w(B,)75 2043 y(recv)p 166 2043 V 17 w(from)p 282 2043
V 16 w(B\))75 2160 y(IN)16 b(comm)p 274 2160 V 17 w(A)21 b
Fl(Comm)o(uni)o(cator)12 b(to)h(b)q(e)i(duplicated)f(and)g(published)75
2243 y Fi(IN)i(lab)q(el)p 250 2243 V 16 w(A)21 b Fl(Lab)q(el)14
b(of)f(published,)g(duplicated)h(comm)o(unicator)75 2325 y
Fi(IN)i(lab)q(el)p 250 2325 V 16 w(B)21 b Fl(Lab)q(el)13 b(of)h(comm)o
(unicator)d(to)j(whic)o(h)f(w)o(e)h(w)o(an)o(t)g(to)g(subscrib)q(e)75
2408 y Fi(OUT)i(send)p 295 2408 V 16 w(to)p 354 2408 V 16 w(B)21
b Fl(V)m(alid)12 b(send)j(comm)o(unicator)c(for)j(talking)e(to)i(the)h(other)
f(group.)75 2490 y Fi(OUT)i(recv)p 288 2490 V 17 w(from)p 404
2490 V 16 w(B)21 b Fl(V)m(alid)12 b(receiv)o(e)j(comm)o(unicator)c(for)j
(talking)e(to)i(the)h(other)f(group.)75 2572 y(This)g(call)f(is)h(alw)o(a)o
(ys)e(done)j(in)e(pairs)h(as)g(follo)o(ws:)i(\\A")e(group:)140
2654 y Fh(MPI_COMM_PUBLISH_SU)o(BSCRI)o(BE\(co)o(mm_A,)k("comm_A",)i
("comm_B",)g(Send_to_B,)729 2704 y(Recv_from_B\))p eop
%%Page: 12 13
bop 75 -100 a Fl(12)75 45 y(\\B")14 b(group:)140 134 y Fh
(MPI_COMM_PUBLISH_SU)o(BSCRI)o(BE\(co)o(mm_B,)k("comm_B",)i("comm_A",)g
(Send_to_A,)729 184 y(Recv_from_A\))89 271 y Fi(MPI)p 188 271
15 2 v 17 w(COMM)p 365 271 V 18 w(JOIN\(lo)q(cal)p 615 271
V 16 w(comm,)c(remote)p 932 271 V 16 w(comm)p 1073 271 V 17
w(send,)75 357 y(remote)p 225 357 V 16 w(comm)p 366 357 V 17
w(recv,)g(order,)f(joined)p 770 357 V 14 w(comm\))75 479 y(IN)h(lo)q(cal)p
246 479 V 17 w(comm)k Fl(Comm)o(unicator)11 b(describing)j(lo)q(cal)f(group)
75 568 y Fi(IN)j(remote)p 296 568 V 16 w(comm)p 437 568 V 17
w(send)k Fl(Comm)n(unicator)11 b(describing)k(remote)e(group)75
657 y Fi(IN)j(remote)p 296 657 V 16 w(comm)p 437 657 V 17 w(recv)21
b Fl(Comm)o(uni)o(cator)11 b(describing)k(remote)e(group)75
746 y Fi(IN)j(order)k Fl(If)13 b Fh(local)p 433 746 14 2 v
15 w(comm)g Fl(is)h(\014rst,)g(then)g Fh(MPI)p 848 746 V 15
w(TRUE)p Fl(,)f(else)i Fh(MPI)p 1121 746 V 15 w(FALSE)75 835
y Fi(OUT)h(joined)p 329 835 15 2 v 15 w(comm)k Fl(Merged)15
b(comm)o(unicator)75 923 y(This)9 b(function)g(creates)i(the)f(merged)f(comm)
o(unicator)d Fh(joined)p 1066 923 14 2 v 15 w(comm)i Fl(giv)o(en)h(a)g(lo)q
(cal)f(comm)o(unicator)f(\()p Fh(local)p 1797 923 V 15 w(comm)p
Fl(\))75 973 y(and)17 b(a)f(pair)h(of)f(remote)g(comm)o(unicators)f
(\(obtained)h(from)f Fh(MPI)p 1126 973 V 15 w(COMM)p 1229 973
V 15 w(MERGE)p Fl(\).)h(The)h(function)f(sync)o(hronizes)75
1022 y(o)o(v)o(er)i(the)h(underlying)f(groups)g(of)g(b)q(oth)g(comm)o
(unicators,)f(and)h(pro)q(duces)h(a)f(new,)i(merged)d(comm)o(unicator,)75
1072 y(whose)h(group)f(is)g(the)h(ordered)g(union)f(of)g(the)h(t)o(w)o(o)e
(underlying)h(groups)h(\(see)g Fh(MPI)p 1424 1072 V 15 w(GROUP)p
1549 1072 V 15 w(UNION)p Fl(\).)e(The)i(new)75 1122 y(comm)o(unicator)11
b(has)j(a)g(unique)g(con)o(text)g(of)f(comm)o(unication.)75
1267 y Fk(3.9)70 b(Cac)n(heing)75 1361 y Fl(Cac)o(heing)13
b(is)f(the)i(pro)q(cess)h(b)o(y)d(whic)o(h)h(implemen)o(tation-)o(de\014ned)e
(data)i(is)g(propagated)g(in)f(groups)h(and)g(comm)o(u-)75
1411 y(nicators.)75 1535 y Fg(3.9.1)55 b(Cac)n(heing)20 b(in)g(Groups)75
1622 y(3.9.2)55 b(Cac)n(heing)20 b(in)g(Comm)n(unicators)75
1702 y Fl(TBD.)75 1847 y Fk(3.10)70 b(F)-6 b(ormalizing)26
b(the)i(Lo)r(osely)g(Sync)n(hronous)i(Mo)r(del)d(\(Usage,)266
1922 y(Safet)n(y\))75 2023 y Fg(3.10.1)55 b(Basic)20 b(Statemen)n(ts)75
2103 y Fl(When)15 b(a)g(caller)g(passes)i(a)e(comm)o(unicator)d(\(whic)o(h)j
(con)o(tains)g(a)g(con)o(text)h(and)f(group\))g(to)g(a)g(callee,)g(that)g
(com-)75 2153 y(m)o(unicator)g(m)o(ust)i(b)q(e)g(free)h(of)e(side)i
(e\013ects)h(throughout)e(execution)h(of)e(the)i(subprogram)e(\(quiescen)o
(t\).)29 b(This)75 2202 y(pro)o(vides)13 b(one)f(mo)q(del)f(in)h(whic)o(h)h
(libraries)f(can)g(b)q(e)i(written,)e(and)h(w)o(ork)f(\\safely)m(.")k(F)m(or)
c(libraries)g(so)h(designated,)75 2252 y(the)k(callee)f(has)h(p)q(ermission)f
(to)g(do)g(whatev)o(er)h(comm)o(unication)c(it)j(lik)o(es)g(with)g(the)h
(comm)o(unicator,)d(and)i(un-)75 2302 y(der)h(the)g(ab)q(o)o(v)o(e)g(guaran)o
(tee)f(kno)o(ws)h(that)f(no)h(other)g(comm)o(unicati)o(ons)d(will)h(in)o
(terfere.)27 b(Since)17 b(w)o(e)g(p)q(ermit)e(the)75 2352 y(creation)e(of)f
(new)g(comm)o(unicators)e(without)i(sync)o(hronization)h(\(assuming)e
(preallo)q(cated)h(con)o(texts\),)i(this)e(do)q(es)75 2402
y(not)i(imp)q(ose)f(a)g(signi\014can)o(t)h(o)o(v)o(erhead.)158
2453 y(This)h(form)f(of)h(safet)o(y)g(is)h(analogous)e(to)h(other)h(common)d
(computer)i(science)i(usages,)f(suc)o(h)g(as)g(passing)f(a)75
2503 y(descriptor)k(of)e(an)g(arra)o(y)g(to)g(a)h(library)e(routine.)29
b(The)18 b(library)f(routine)h(has)f(ev)o(ery)i(righ)o(t)e(to)g(exp)q(ect)i
(suc)o(h)f(a)75 2553 y(descriptor)d(to)f(b)q(e)g(v)n(alid)f(and)g(mo)q
(di\014able.)158 2604 y(Note)h(that)g Fh(MPI)p 417 2604 V 15
w(UNDEFINED)e Fl(is)h(the)h(rank)g(for)f(pro)q(cesses)j(that)e(are)g(sending)
g(to)g(the)g(comm)o(unicator)d(from)75 2654 y(outside)j(the)h(group.)k(This)
14 b(can)g(result)h(through)f(the)g(publish)g(&)g(subscrib)q(e)i(mec)o
(hanism,)c(or)i(b)o(y)f(virtue)i(of)e(the)75 2704 y(transmission)g(of)g
(\015attened)i(comm)o(unicators)c(\(and)j(their)g(subsequen)o(t)i
(un\015attening)e(and)g(use\).)p eop
%%Page: 13 14
bop 75 -100 a Fm(3.10.)31 b(F)o(ORMALIZING)13 b(THE)i(LOOSEL)m(Y)f(SYNCHR)o
(ONOUS)g(MODEL)h(\(USA)o(GE,)e(SAFETY\))129 b Fl(13)75 45 y
Fg(3.10.2)55 b(Mo)r(dels)19 b(of)g(Execution)75 124 y Fl(W)m(e)h(sa)o(y)g
(that)h(a)f(parallel)f(pro)q(cedure)k(is)d Fj(active)h Fl(at)f(a)g(pro)q
(cess)i(if)e(the)h(pro)q(cess)h(b)q(elongs)f(to)f(a)h(group)f(that)75
174 y(ma)o(y)13 b(collectiv)o(ely)h(execute)i(the)f(pro)q(cedure,)i(and)d
(some)g(mem)o(b)q(er)f(of)h(that)g(group)h(is)f(curren)o(tly)i(executing)f
(the)75 224 y(pro)q(cedure)j(co)q(de.)27 b(If)16 b(a)h(parallel)e(pro)q
(cedure)j(is)f(activ)o(e)f(at)h(a)f(pro)q(cess,)j(then)e(this)f(pro)q(cess)j
(ma)o(y)14 b(b)q(e)k(receiving)75 274 y(messages)10 b(p)q(ertaining)f(to)h
(this)g(pro)q(cedure,)i(ev)o(en)e(if)f(it)g(do)q(es)i(not)e(curren)o(tly)i
(execute)h(the)e(co)q(de)h(of)e(this)h(pro)q(cedure.)75 388
y Fi(Nonreen)o(tran)o(t)i(parallel)i(pro)q(cedures)75 467 y
Fl(This)f(co)o(v)o(ers)h(the)f(case)h(where,)g(at)f(an)o(y)g(p)q(oin)o(t)f
(in)h(time,)e(at)i(most)f(one)h(in)o(v)o(o)q(cation)f(of)g(a)h(parallel)f
(pro)q(cedure)j(can)75 517 y(b)q(e)g(activ)o(e)f(at)f(an)o(y)h(pro)q(cess.)20
b(That)14 b(is,)f(concurren)o(t)j(in)o(v)o(ok)n(ations)c(of)h(the)i(same)e
(parallel)g(pro)q(cedure)j(ma)o(y)c(o)q(ccur)75 567 y(only)h(within)g
(disjoin)o(t)g(groups)i(of)e(pro)q(cesses.)21 b(F)m(or)14 b(example,)e(all)h
(in)o(v)o(ok)n(ations)f(of)h(parallel)g(pro)q(cedures)j(in)o(v)o(olv)o(e)75
617 y(all)d(pro)q(cesses,)j(pro)q(cesses)g(are)f(single-threaded,)f(and)f
(there)j(are)e(no)g(recursiv)o(e)h(in)o(v)o(ok)n(ations.)158
668 y(In)c(suc)o(h)i(a)e(case,)h(a)f(con)o(text)i(can)e(b)q(e)h(statically)f
(allo)q(cated)g(to)g(eac)o(h)h(pro)q(cedure.)19 b(The)12 b(static)g(allo)q
(cation)e(can)75 718 y(b)q(e)15 b(done)f(in)g(a)f(pream)o(ble,)g(as)h(part)g
(of)g(initialization)d(co)q(de.)20 b(Or,)14 b(it)f(can)i(b)q(e)f(done)h(a)f
(compile/link)d(time,)h(if)h(the)75 768 y(implemen)o(tatio)o(n)d(has)i
(additional)f(mec)o(hanisms)f(to)i(reserv)o(e)i(con)o(text)f(v)n(alues.)18
b(Comm)n(unicators)10 b(to)i(b)q(e)h(used)g(b)o(y)75 817 y(the)j(di\013eren)o
(t)h(pro)q(cedures)g(can)f(b)q(e)g(build)f(in)g(a)g(pream)o(ble,)g(if)g(the)h
(executing)g(groups)g(are)g(statically)e(de\014ned;)75 867
y(if)j(the)i(executing)f(groups)h(c)o(hange)f(dynamically)m(,)d(then)k(a)e
(new)i(comm)o(unicator)c(has)j(to)g(b)q(e)g(built)g(whenev)o(er)75
917 y(the)d(executing)h(group)e(c)o(hanges,)h(but)g(this)g(new)g(comm)o(uni)o
(cator)d(can)j(b)q(e)g(built)f(using)h(the)g(same)f(preallo)q(cated)75
967 y(con)o(text.)29 b(If)17 b(the)g(parallel)f(pro)q(cedures)k(can)d(b)q(e)h
(organized)f(in)o(to)g(libraries,)g(so)g(that)h(only)e(one)h(pro)q(cedure)j
(of)75 1017 y(eac)o(h)13 b(library)e(can)i(b)q(e)g(concurren)o(tly)g(activ)o
(e)g(at)f(eac)o(h)h(pro)q(cessor,)h(then)f(it)f(is)g(su\016cien)o(t)h(to)f
(allo)q(cate)g(one)g(con)o(text)75 1067 y(p)q(er)j(library)m(.)75
1181 y Fi(P)o(arallel)e(pro)q(cedures)h(that)h(are)g(nonreen)o(tran)n(t)e
(within)g(eac)o(h)j(executing)e(group)75 1260 y Fl(This)g(co)o(v)o(ers)i(the)
f(case)h(where,)f(at)g(an)o(y)f(p)q(oin)o(t)g(in)g(time,)f(for)h(eac)o(h)h
(pro)q(cess)i(group,)d(there)i(can)f(b)q(e)g(at)f(most)g(one)75
1310 y(activ)o(e)h(in)o(v)o(ok)n(ation)e(of)h(a)g(parallel)g(pro)q(cedure)j
(b)o(y)d(a)h(pro)q(cess)i(mem)o(b)q(er.)i(Ho)o(w)o(ev)o(er,)c(it)g(migh)o(t)d
(b)q(e)k(p)q(ossible)f(that)75 1360 y(the)e(same)e(pro)q(cedure)j(is)e
(concurren)o(tly)i(in)o(v)o(ok)o(ed)d(in)h(t)o(w)o(o)g(partially)e(\(or)j
(completely\))e(o)o(v)o(erlapping)g(groups.)17 b(F)m(or)75
1410 y(example,)12 b(the)h(same)g(collectiv)o(e)g(comm)o(unicati)o(on)d
(function)j(ma)o(y)e(b)q(e)j(concurren)o(tly)h(in)o(v)o(ok)o(ed)d(on)h(t)o(w)
o(o)g(partially)75 1460 y(o)o(v)o(erlapping)g(groups.)158 1511
y(In)i(suc)o(h)g(a)g(case,)g(a)f(con)o(text)i(is)e(asso)q(ciated)i(with)e
(eac)o(h)h(parallel)f(pro)q(cedure)i(and)f(eac)o(h)g(executing)h(group,)75
1561 y(so)f(that)g(o)o(v)o(erlapping)e(execution)j(groups)e(ha)o(v)o(e)h
(distinct)g(comm)o(unication)c(con)o(texts.)22 b(\(One)15 b(do)q(es)h(not)f
(need)g(a)75 1610 y(di\013eren)o(t)j(con)o(text)g(from)d(eac)o(h)j(group;)g
(one)g(merely)e(needs)j(a)d(\\coloring")g(of)h(the)h(groups,)f(so)h(that)f
(One)h(can)75 1660 y(generate)j(the)f(comm)o(unicators)d(for)i(eac)o(h)h
(parallel)f(pro)q(cedure)i(when)f(the)g(execution)h(groups)e(are)h
(de\014ned.)75 1710 y(Here,)15 b(again,)d(one)i(only)g(need)h(one)f(con)o
(text)g(for)g(eac)o(h)h(library)m(,)d(if)h(no)h(t)o(w)o(o)f(pro)q(cedures)k
(from)12 b(the)j(same)e(library)75 1760 y(can)h(b)q(e)h(concurren)o(tly)g
(activ)o(e)f(in)f(the)i(same)e(group.)158 1811 y(Note)18 b(that,)f(for)g
(collectiv)o(e)h(comm)o(unicati)o(on)c(libraries,)k(w)o(e)f(do)g(allo)o(w)f
(sev)o(eral)i(concurren)o(t)h(in)o(v)o(o)q(cations)75 1861
y(within)e(the)i(same)e(group:)25 b(a)18 b(broadcast)g(in)g(a)f(group)h(ma)o
(y)e(b)q(e)j(started)g(at)e(a)h(pro)q(cess)h(b)q(efore)g(the)g(previous)75
1911 y(broadcast)h(in)f(that)h(group)g(ended)g(at)g(another)g(pro)q(cess.)37
b(In)20 b(suc)o(h)g(a)g(case,)h(one)f(cannot)g(rely)g(on)f(con)o(text)75
1960 y(mec)o(hanisms)12 b(to)i(disam)o(biguate)e(successiv)o(e)17
b(in)o(v)o(o)q(cations)c(of)g(the)i(same)f(parallel)f(pro)q(cedure)j(within)d
(the)i(same)75 2010 y(group:)i(the)12 b(pro)q(cedure)h(need)f(b)q(e)g
(implemen)o(ted)d(so)i(as)h(to)f(a)o(v)o(oid)f(confusion.)17
b(F)m(or)11 b(example,)f(for)h(broadcast,)h(one)75 2060 y(ma)o(y)h(need)k(to)
e(carry)h(additional)d(information)f(in)j(messages,)h(suc)o(h)g(as)f(the)h
(broadcast)g(ro)q(ot,)f(to)g(help)g(in)g(suc)o(h)75 2110 y(disam)o
(biguation;)9 b(one)i(also)g(relies)h(on)f(preserv)n(ation)h(of)f(message)g
(order)i(b)o(y)e(MPI.)g(With)g(suc)o(h)h(an)f(approac)o(h,)h(w)o(e)75
2160 y(ma)o(y)g(b)q(e)i(gaining)e(p)q(erformance,)h(but)h(w)o(e)g(lo)q(ose)g
(mo)q(dularit)o(y)m(.)h(It)f(is)f(not)h(su\016cien)o(t)g(to)g(implemen)o(t)d
(the)j(parallel)75 2210 y(pro)q(cedure)f(so)e(that)h(it)e(w)o(orks)i
(correctly)g(in)f(isolation,)e(when)j(in)o(v)o(ok)o(ed)e(only)h(once;)h(it)f
(needs)h(to)f(b)q(e)h(implemen)o(ted)75 2259 y(so)j(that)h(an)o(y)f(n)o(um)o
(b)q(er)f(of)h(successiv)o(e)i(in)o(v)o(o)q(cations)e(will)f(execute)j
(correctly)m(.)23 b(Of)15 b(course,)i(the)f(same)e(approac)o(h)75
2309 y(can)g(b)q(e)h(used)f(for)g(other)g(parallel)f(libraries.)75
2424 y Fi(W)l(ell-nested)g(parallel)g(pro)q(cedures)75 2503
y Fl(Calls)f(of)h(parallel)f(pro)q(cedures)j(are)f(w)o(ell)f(nested)h(if)f(a)
g(new)g(parallel)f(pro)q(cedure)j(is)e(alw)o(a)o(ys)g(in)o(v)o(ok)o(ed)f(in)h
(a)g(subset)75 2553 y(of)j(a)g(group)g(executing)h(the)g(same)e(parallel)g
(pro)q(cedure.)27 b(Th)o(us,)17 b(pro)q(cesses)i(that)d(execute)i(the)f(same)
e(parallel)75 2603 y(pro)q(cedure)h(ha)o(v)o(e)e(the)g(same)f(execution)i
(stac)o(k.)158 2654 y(In)i(suc)o(h)g(a)f(case,)i(a)e(new)h(con)o(text)g(need)
h(to)e(b)q(e)h(dynamically)d(allo)q(cated)i(for)g(eac)o(h)h(new)g(in)o(v)o(o)
q(cation)e(of)h(a)75 2704 y(parallel)e(pro)q(cedure.)24 b(Ho)o(w)o(ev)o(er,)
16 b(a)f(stac)o(k)h(mec)o(hanism)d(can)i(b)q(e)h(used)g(for)f(allo)q(cating)f
(new)h(con)o(texts.)24 b(Th)o(us,)15 b(a)p eop
%%Page: 14 15
bop 75 -100 a Fl(14)75 45 y(p)q(ossible)16 b(mec)o(hanism)d(is)i(to)h(allo)q
(cate)f(\014rst)h(a)f(large)h(n)o(um)o(b)q(er)e(of)h(con)o(text's)i(\(up)e
(to)h(the)g(upp)q(er)g(b)q(ound)g(on)f(the)75 95 y(depth)g(of)e(nested)i
(parallel)e(pro)q(cedure)j(calls\),)d(and)h(then)h(use)f(a)g(lo)q(cal)f(stac)
o(k)h(managemen)o(t)e(of)h(these)i(con)o(text's)75 145 y(on)f(eac)o(h)g(pro)q
(cess)i(to)e(create)h(a)e(new)i(comm)o(unicator)c(\(using)j
Fh(MPI)p 1129 145 14 2 v 15 w(COMM)p 1232 145 V 15 w(MAKE)p
Fl(\))f(for)g(eac)o(h)i(new)f(in)o(v)o(o)q(cation.)75 252 y
Fi(The)i(General)d(case)75 329 y Fl(In)20 b(the)g(general)g(case,)i(there)f
(ma)o(y)d(b)q(e)j(m)o(ultiple)c(concurren)o(tly)22 b(activ)o(e)d(in)o(v)o(o)q
(cations)g(of)h(the)g(same)f(parallel)75 379 y(pro)q(cedure)f(within)d(the)i
(same)e(group;)i(in)o(v)o(o)q(cations)e(ma)o(y)f(not)i(b)q(e)h(w)o
(ell-nested.)25 b(A)16 b(new)h(con)o(text)f(need)h(to)f(b)q(e)75
429 y(created)h(for)e(eac)o(h)h(in)o(v)o(o)q(cation.)22 b(It)16
b(is)f(the)h(user)h(resp)q(onsibilit)o(y)e(to)g(mak)o(e)f(sure)j(that,)f(if)e
(t)o(w)o(o)h(distinct)h(parallel)75 478 y(pro)q(cedures)21
b(are)e(in)o(v)o(ok)o(ed)f(concurren)o(tly)j(on)d(o)o(v)o(erlapping)g(sets)i
(of)e(pro)q(cesses,)23 b(then)c(con)o(text)h(allo)q(cation)d(or)75
528 y(comm)o(unicator)11 b(creation)j(is)g(prop)q(erly)g(co)q(ordinated.)75
665 y Fk(3.11)70 b(Motiv)l(ating)23 b(Examples)75 764 y Fg(3.11.1)55
b(Curren)n(t)19 b(Practice)g(#1)75 841 y Fl(Example)12 b(#1a:)162
922 y Fh(int)21 b(me,)h(size;)162 972 y(...)162 1022 y(mpi_init\(\);)162
1072 y(mpi_comm_rank\(MPI_)o(COMM_)o(ALL,)c(&me\);)162 1121
y(mpi_comm_size\(MPI_)o(COMM_)o(ALL,)g(&size\);)162 1221 y(printf\("Process)h
(\045d)i(size)g(\045d\\n",)g(me,)g(size\);)162 1271 y(...)162
1321 y(mpi_end\(\);)75 1402 y Fl(Example)e(#1a)g(is)i(a)f(do-nothing)f
(program)g(that)h(initializes)g(itself)g(legally)m(,)f(and)i(refers)g(to)g
(the)g(the)g(\\all")75 1452 y(comm)o(unicator,)13 b(and)j(prin)o(ts)h(a)e
(message.)25 b(This)15 b(example)g(do)q(es)i(not)f(imply)e(that)i(MPI)g(supp)
q(orts)h(prin)o(tf-lik)o(e)75 1502 y(comm)o(unication)10 b(itself.)75
1551 y(Example)i(#1b:)162 1633 y Fh(int)21 b(me,)h(size;)162
1683 y(...)162 1732 y(mpi_init\(\);)162 1782 y(mpi_comm_rank\(MPI_)o(COMM_)o
(ALL,)c(&me\);)65 b(/*)21 b(local)g(*/)162 1832 y(mpi_comm_size\(MPI_)o
(COMM_)o(ALL,)d(&size\);)j(/*)g(local)g(*/)162 1932 y(if\(\(me)g(\045)g(2\))h
(==)f(0\))228 1981 y(mpi_send\(...,)e(MPI_COMM_ALL,)g(\(\(me)i(+)g(1\))h
(\045)f(size\)\);)162 2031 y(else)228 2081 y(mpi_recv\(...,)e(MPI_COMM_ALL,)g
(\(\(me)i(-)g(1)h(+)f(size\))g(\045)h(size\)\);)162 2181 y(...)162
2231 y(mpi_end\(\);)75 2312 y Fl(Example)14 b(#1b)h(sc)o(hematically)f
(illustrates)i(message)f(exc)o(hanges)i(b)q(et)o(w)o(een)g(\\ev)o(en")f(and)f
(\\o)q(dd")g(pro)q(cesses)j(in)75 2362 y(the)c(\\all")f(comm)o(unicator.)75
2478 y Fg(3.11.2)55 b(Curren)n(t)19 b(Practice)g(#2)162 2554
y Fh(void)i(*data;)162 2604 y(int)g(me;)162 2654 y(...)162
2704 y(mpi_init\(\);)p eop
%%Page: 15 16
bop 75 -100 a Fm(3.11.)26 b(MOTIV)-5 b(A)m(TING)14 b(EXAMPLES)1120
b Fl(15)162 45 y Fh(mpi_comm_rank\(MPI_)o(COMM_)o(ALL,)18 b(&me\);)162
145 y(if\(me)j(==)g(0\))162 195 y({)249 244 y(/*)h(get)f(input,)f(create)h
(buffer)g(``data'')f(*/)249 294 y(...)162 344 y(})162 444 y
(mpi_broadcast\(MPI_)o(COMM_)o(ALL,)e(0,)k(data\);)162 543
y(...)162 593 y(mpi_end\(\);)75 687 y Fl(This)14 b(example)e(illustrates)i
(the)h(use)g(of)e(a)g(collectiv)o(e)h(comm)o(unication.)75
806 y Fg(3.11.3)55 b(\(Appro)n(ximate\))19 b(Curren)n(t)g(Practice)g(#3)162
883 y Fh(int)i(me;)162 933 y(void)g(*grp0,)g(*grprem,)f(*commslave;)162
983 y(...)162 1033 y(mpi_init\(\);)162 1082 y(mpi_comm_rank\(MPI_)o(COMM_)o
(ALL,)e(&me\);)43 b(/*)21 b(local)g(*/)162 1132 y(mpi_local_subgroup)o
(\(MPI_)o(GROUP)o(_ALL,)d(1,)k(``[0]'',)e(&grp0\);)g(/*)h(local)g(*/)162
1182 y(mpi_group_differen)o(ce\(MP)o(I_GRO)o(UP_AL)o(L,)e(grp0,)h(&grprem\);)
g(/*)i(local)f(*/)162 1232 y(mpi_comm_make\(MPI_)o(GROUP)o(_ALL,)d(grprem,)j
(&commslave\);)162 1331 y(if\(me)g(!=)g(0\))162 1381 y({)249
1431 y(/*)h(compute)e(on)h(slave)g(*/)249 1481 y(...)249 1531
y(mpi_reduce\(commslav)o(e,)e(...\);)249 1581 y(...)162 1630
y(})162 1680 y(/*)j(zero)f(falls)f(through)h(immediately)e(to)j(this)e
(reduce,)h(others)f(do)i(later...)e(*/)162 1730 y(mpi_reduce\(MPI_COM)o
(M_ALL)o(,)f(...\);)75 1823 y Fl(This)d(example)e(illustrates)i(ho)o(w)f(a)h
(group)g(consisting)f(of)g(all)g(but)h(the)g(zeroth)h(pro)q(cess)h(of)d(the)h
(\\all")e(group)i(is)75 1873 y(created,)g(and)f(then)h(ho)o(w)f(a)g(comm)o
(unicator)d(is)j(formed)f(\()p Fh(commslave)p Fl(\))f(for)i(that)g(new)h
(group.)21 b(The)16 b(new)f(com-)75 1923 y(m)o(unicator)d(is)h(used)h(in)f(a)
f(collectiv)o(e)i(call,)e(and)h(all)f(pro)q(cesses)k(execute)f(a)e(collectiv)
o(e)g(call)f(in)h(the)h Fh(MPI)p 1695 1923 14 2 v 15 w(COMM)p
1798 1923 V 15 w(ALL)75 1973 y Fl(con)o(text.)k(This)12 b(example)f
(illustrates)i(ho)o(w)e(the)i(t)o(w)o(o)f(comm)o(unicators)e(\(whic)o(h)i(p)q
(ossess)i(distinct)f(con)o(texts\))g(pro-)75 2023 y(tect)j(comm)o(unicatio)o
(n.)i(That)d(is,)f(comm)o(unication)d(in)k Fh(MPI)p 1035 2023
V 15 w(COMM)p 1138 2023 V 15 w(ALL)f Fl(is)g(insulated)h(from)e(comm)o
(unication)e(in)75 2073 y Fh(commslave)p Fl(,)h(and)h(vice)h(v)o(ersa.)158
2123 y(In)h(summary)m(,)d(for)j(comm)o(unication)d(with)j(\\group)g(safet)o
(y)m(,")f(con)o(texts)j(within)d(comm)o(unicators)f(m)o(ust)h(b)q(e)75
2173 y(distinct.)75 2292 y Fg(3.11.4)55 b(Example)19 b(#4)75
2369 y Fl(The)13 b(follo)o(wing)e(example)h(is)h(mean)o(t)e(to)i(illustrate)g
(\\safet)o(y")g(b)q(et)o(w)o(een)h(p)q(oin)o(t-to-p)q(oin)o(t)e(and)h
(collectiv)o(e)g(comm)o(u-)75 2419 y(nication.)75 2504 y Fh(#define)20
b(TAG_ARBITRARY)f(12345)75 2554 y(#define)h(SOME_COUNT)151
b(50)162 2604 y(int)21 b(me;)162 2654 y(int)g(*contexts;)162
2704 y(void)g(*subgroup;)p eop
%%Page: 16 17
bop 75 -100 a Fl(16)162 95 y Fh(...)162 145 y(mpi_init\(\);)162
195 y(mpi_contexts_alloc)o(\(MPI_)o(GROUP)o(_ALL,)18 b(2,)k(&contexts\);)162
244 y(mpi_local_subgroup)o(\(MPI_)o(GROUP)o(_ALL,)c(4,)k(``[2,4,6,8]'',)c
(&subgroup\);)i(/*)h(local)g(*/)162 294 y(mpi_group_rank\(sub)o(group)o(,)e
(&me\);)108 b(/*)21 b(local)g(*/)162 394 y(if\(me)g(!=)g(MPI_UNDEFINED\))162
444 y({)249 493 y(mpi_comm_bind\(subgr)o(oup,)d(context[0],)i(&pt2pt_comm\);)
f(/*)i(local)g(*/)249 543 y(mpi_comm_bind\(subgr)o(oup,)d(context[1],)i
(&coll_comm\);)41 b(/*)21 b(local)g(*/)249 643 y(/*)h(asynchronous)d
(receive:)h(*/)249 693 y(mpi_irecv\(...,)f(MPI_SRC_ANY,)h(TAG_ARBITRARY,)e
(pt2pt_comm\);)162 742 y(})162 842 y(for\(i)j(=)h(0;)f(i)g(<)h(SOME_COUNT,)e
(i++\))249 892 y(mpi_reduce\(coll_com)o(m,)f(...\);)75 1015
y Fg(3.11.5)55 b(Library)19 b(Example)f(#1)75 1095 y Fl(The)c(main)e
(program:)162 1183 y Fh(int)21 b(done)g(=)h(0;)162 1233 y(user_lib_t)e
(*libh_a,)g(*libh_b;)162 1283 y(void)h(*dataset1,)f(*dataset2;)162
1332 y(...)162 1382 y(mpi_init\(\);)162 1432 y(...)162 1482
y(init_user_lib\(MPI_)o(COMM_)o(ALL,)e(&libh_a\);)162 1532
y(init_user_lib\(MPI_)o(COMM_)o(ALL,)g(&libh_b\);)162 1582
y(...)162 1631 y(user_start_op\(libh)o(_a,)h(dataset1\);)162
1681 y(user_start_op\(libh)o(_a,)g(dataset2\);)162 1731 y(...)162
1781 y(while\(!done\))162 1831 y({)249 1880 y(/*)j(work)f(*/)249
1930 y(...)249 1980 y(mpi_reduce\(MPI_COMM)o(_ALL,)d(...\);)249
2030 y(...)249 2080 y(/*)k(see)f(if)g(done)g(*/)249 2129 y(...)162
2179 y(})162 2229 y(user_end_op\(libh_a)o(\);)162 2279 y(user_end_op\(libh_b)
o(\);)75 2366 y Fl(The)14 b(user)h(library)e(initialization)f(co)q(de:)75
2455 y Fh(void)21 b(init_user_lib\(voi)o(d)e(*comm,)i(user_lib_t)e
(**handle\))75 2504 y({)140 2554 y(user_lib_t)h(*save;)140
2604 y(int)i(context;)140 2654 y(void)f(*group;)p eop
%%Page: 17 18
bop 75 -100 a Fm(3.11.)26 b(MOTIV)-5 b(A)m(TING)14 b(EXAMPLES)1120
b Fl(17)140 45 y Fh(user_lib_initsave\(&)o(save\))o(;)19 b(/*)i(local)g(*/)
140 95 y(mpi_comm_group\(comm)o(,)e(&group\);)140 145 y(mpi_contexts_alloc\()
o(group)o(,)g(1,)i(&context\);)140 195 y(mpi_comm_dup\(comm,)d(context,)j
(save)g(->)g(comm\);)140 294 y(/*)h(other)f(inits)f(*/)140
344 y(*handle)h(=)g(save;)75 394 y(})75 484 y Fl(Notice)14
b(that)g(the)h(comm)o(unicator)c Fh(comm)i Fl(passed)i(to)e(the)i(library)e
(is)h(not)g(needed)h(to)f(allo)q(cate)f(new)h(con)o(texts.)75
537 y(User)h(start-up)g(co)q(de:)75 630 y Fh(void)21 b(user_start_op\(use)o
(r_lib)o(_t)e(*handle,)h(void)h(*data\))75 680 y({)162 730
y(user_lib_state)e(*state;)162 780 y(state)i(=)h(handle)e(->)h(state;)162
829 y(mpi_irecv\(save)e(->)i(comm,)g(...,)g(data,)g(...)g(&\(state)f(->)i
(irecv_handle\)\);)162 879 y(mpi_isend\(save)d(->)i(comm,)g(...,)g(data,)g
(...)g(&\(state)f(->)i(isend_handle\)\);)75 929 y(})75 1020
y Fl(User)15 b(clean-up)f(co)q(de:)75 1113 y Fh(void)21 b(user_end_op\(user_)
o(lib_t)d(*handle\))75 1163 y({)162 1213 y(mpi_wait\(save)h(->)j(state)e(->)i
(isend_handle\);)162 1262 y(mpi_wait\(save)d(->)j(state)e(->)i
(irecv_handle\);)75 1312 y(})75 1442 y Fg(3.11.6)55 b(Library)19
b(Example)f(#2)75 1523 y Fl(The)c(main)e(program:)162 1617
y Fh(int)21 b(ma,)h(mb;)162 1666 y(...)162 1716 y(list_a)f(:=)g(``[0,1]'';)
162 1766 y(list_b)g(:=)g(``[0,2{,3}]'';)162 1866 y(mpi_local_subgroup)o
(\(MPI_)o(GROUP)o(_ALL,)d(2,)k(list_a,)e(&group_a\);)162 1916
y(mpi_local_subgroup)o(\(MPI_)o(GROUP)o(_ALL,)e(2\(3\),)j(list_b,)f
(&group_b\);)162 2015 y(mpi_comm_make\(MPI_)o(GROUP)o(_ALL,)e(group_a,)i
(&comm_a\);)162 2065 y(mpi_comm_make\(MPI_)o(GROUP)o(_ALL,)e(group_b,)i
(&comm_b\);)162 2165 y(mpi_comm_rank\(comm)o(_a,)f(&ma\);)162
2214 y(mpi_comm_rank\(comm)o(_b,)g(&mb\);)162 2314 y(if\(ma)i(!=)g
(MPI_UNDEFINED\))228 2364 y(lib_call\(comm_a)o(\);)162 2414
y(if\(mb)g(!=)g(MPI_UNDEFINED\))162 2463 y({)228 2513 y(lib_call\(comm_b)o
(\);)228 2563 y(lib_call\(comm_b)o(\);)162 2613 y(})75 2704
y Fl(The)14 b(library:)p eop
%%Page: 18 19
bop 75 -100 a Fl(18)75 45 y Fh(void)21 b(lib_call\(void)e(*comm\))75
95 y({)162 145 y(int)i(me,)h(done)e(=)i(0;)162 195 y(mpi_comm_rank\(comm)o(,)
d(&me\);)162 244 y(if\(me)i(==)g(0\))249 294 y(while\(!done\))249
344 y({)337 394 y(mpi_recv\(...,)e(comm,)h(MPI_SRC_ANY\);)337
444 y(...)249 493 y(})162 543 y(else)162 593 y({)249 643 y(/*)i(work)f(*/)249
693 y(mpi_send\(...,)e(comm,)i(0\);)249 742 y(....)162 792
y(})162 842 y(MPI_SYNC\(comm\);)62 b(/*)22 b(include/no)e(safety)g(for)h
(safety/no)f(safety)h(*/)75 892 y(})75 975 y Fl(The)e(ab)q(o)o(v)o(e)g
(example)f(is)g(really)h(t)o(w)o(o)f(examples,)h(dep)q(ending)h(on)e(whether)
j(or)e(not)f(y)o(ou)h(include)g(rank)g(3)f(in)75 1025 y Fh(list)p
166 1025 14 2 v 15 w(b)p Fl(.)f(This)c(example)e(illustrates)i(that,)f
(despite)h(con)o(texts,)h(subsequen)o(t)g(calls)e(to)h Fh(lib)p
1510 1025 V 15 w(call)e Fl(with)i(the)g(same)75 1075 y(con)o(text)j(need)g
(not)f(b)q(e)h(safe)g(from)d(one)i(another)h(\(\\bac)o(k)f(masking"\).)20
b(Safet)o(y)15 b(is)g(realized)h(is)f(the)h Fh(MPI)p 1733 1075
V 15 w(SYNC)e Fl(is)75 1124 y(added.)k(What)c(this)g(demonstrates)g(is)g
(that)g(libraries)f(ha)o(v)o(e)h(to)g(b)q(e)g(written)h(carefully)m(,)d(ev)o
(en)j(with)e(con)o(texts.)158 1174 y(Algorithms)c(lik)o(e)g(\\com)o(bine")g
(ha)o(v)o(e)i(strong)f(enough)h(source)h(selectivit)o(y)f(so)f(that)h(they)g
(are)g(inheren)o(tly)g(OK.)75 1224 y(So)16 b(are)g(m)o(ultiple)d(calls)i(to)h
(a)g(t)o(ypical)e(tree)j(broadcast)g(algorithm)c(with)i(the)i(same)d(ro)q
(ot.)24 b(Ho)o(w)o(ev)o(er,)16 b(m)o(ultiple)75 1274 y(calls)g(to)h(a)g(t)o
(ypical)e(tree)k(broadcast)e(algorithm)d({)i(with)h(di\013eren)o(t)h(ro)q
(ots)f(|)f(could)h(break.)27 b(Therefore,)18 b(suc)o(h)75 1324
y(algorithms)9 b(w)o(ould)h(ha)o(v)o(e)h(to)f(utilize)h(the)h(tag)e(to)h(k)o
(eep)h(things)f(straigh)o(t.)17 b(All)10 b(of)g(the)i(foregoing)e(is)g(a)h
(discussion)h(of)75 1373 y(\\collectiv)o(e)f(calls")f(implem)o(en)o(ted)f
(with)i(p)q(oin)o(t)f(to)g(p)q(oin)o(t)h(op)q(erations.)17
b(MPI)11 b(implemen)o(tatio)o(ns)e(ma)o(y)f(or)j(ma)o(y)e(not)75
1423 y(implemen)o(t)k(collectiv)o(e)j(calls)g(using)f(p)q(oin)o(t-to-p)q(oin)
o(t)g(op)q(erations.)24 b(These)18 b(algorithms)13 b(are)k(used)f(to)g
(illustrate)75 1473 y(the)e(issues)h(of)f(correctness)j(and)c(safet)o(y)m(,)g
(indep)q(enden)o(t)j(of)d(ho)o(w)g(MPI)i(implem)o(en)o(ts)d(its)i(collectiv)o
(e)g(calls.)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF