Subject: latest context chapter (postscript)

From: Tony Skjellum <[email-masked]>
Date: Mon, 9 Aug 93 00:33:10 CDT

Dear Colleagues:

The following is the context postscript file, latest.  We definitely
will have incremental (but not major) improvements at the meeting,
particularly in the form of additional examples.

- Tony Skjellum

PS You can send me your comments before the meeting, if you
have any.

%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: unify5.dvi
%%Pages: 24 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
/BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2
array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}
imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{clear SS restore}B end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 19 118 df<00FF0003FF000F87001E07001C0700
1C07001C07001C07001C0700FFFF00FFFF001C07001C07001C07001C07001C07001C07001C0700
1C07001C07001C0700FFBFE0FFBFE01317809614>13 D<F0F0F0F004047D830A>46
D<0018001800380030003000700060006000E000C001C001800180038003000300070006000600
0E000C000C001C001800380030003000700060006000E000C000C0000D217E9812>I<7FFFF87F
FFF8703838603818E0381CC0380CC0380CC0380C00380000380000380000380000380000380000
380000380000380000380000380000380000380007FFC007FFC016177F9619>84
D<1FC03FF038F8103800781FF87FF8F838F038E03BE03BF8FB7FFE3F9C100E7F8D12>97
D<007E00007E00000E00000E00000E00000E00000E00000E00000E000FEE003FFE007C3E00700E
00F00E00E00E00E00E00E00E00E00E00F00E00701E007C3E003FFFC00FCFC012177F9614>100
D<0FC03FF078707038FFF8FFF8E000E000E000F00070187C381FF00FE00D0E7F8D10>I<03E007
F00F701E701C001C001C001C001C00FF80FF801C001C001C001C001C001C001C001C001C001C00
FF80FF800C1780960B>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C
FC001FFE001F0F001E07001C07001C07001C07001C07001C07001C07001C07001C0700FF9FE0FF
9FE01317809614>104 D<3C3C3C3C00000000007C7C1C1C1C1C1C1C1C1C1C1CFFFF081780960A>
I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C7F801C7F801C7C001CF0
001DE0001FC0001FE0001EF0001CF8001C78001C3C001C1E00FF3FC0FF3FC01217809613>107
D<FC00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C00FF80FF80091780960A>I<FCFC3F00FFFEFF801F0FC3C01E0781C01C0701C01C0701C0
1C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F8FF9FE7F81D0E808D1E>I<
FCFC00FFFE001F0F001E07001C07001C07001C07001C07001C07001C07001C07001C0700FF9FE0
FF9FE0130E808D14>I<07C01FF03838701C600CE00EE00EE00EE00EE00E701C38381FF007C00F
0E7F8D12>I<FDFE00FFFF001F0F801C07801C03C01C01C01C01C01C01C01C01C01C03C01E0780
1F0F801FFF001CFC001C00001C00001C00001C0000FF8000FF80001214808D14>I<3FC07FC0F1
C0E0C0F000FF007FC03FE003E0C0E0E0E0F1E0FFC0DF800B0E7F8D0E>115
D<180018001800180038007800FF80FF8038003800380038003800380038C038C038C03DC03F80
1F000A147F930E>I<FC3F00FC3F001C07001C07001C07001C07001C07001C07001C07001C0700
1C0F001E1F001FFFE007E7E0130E808D14>I E /Fb 1 50 df<18007800F80098001800180018
001800180018001800180018001800FF80FF8009107E8F0F>49 D E /Fc
1 50 df<0C001C00EC000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C
00FFC00A137D9211>49 D E /Fd 1 59 df<70F8F8F87005057D840C>58
D E /Fe 12 122 df<03FC0FFE1F1E3C1E780C70007000F000E000E000E000F000781C7C383FF0
0FE00F107E8F11>99 D<03F00FFC1E1C3C0E780E7FFE7FFEF000E000E000E000F000701C7C383F
F00FE00F107E8F11>101 D<01C003C003C003800000000000000000000000001F801F80070007
000700070007000F000E000E000E000E000E001E00FF80FF800A1A80990A>105
D<1FBF001FFF8007E7800783800703800703800707800F07800E07000E07000E07000E07000E0F
001E0F00FF9FC0FF9FC012107F8F15>110 D<01F007FC1E0E1807300770037003E007E007E007
E007600E701C38381FF00FC010107E8F13>I<0FDF800FFFE003F1F003C0F00380700380700380
700780700700700700700700F00701E00703E00F87C00FFF800E7E000E00000E00001E00001E00
001C0000FF8000FF80001417808F15>I<03F3800FFB001F1F003C0F00780700700700700F00F0
0F00E00E00E00E00E00E00F01E00703E007C7C003FFC001F9C00001C00001C00003C0000380000
380001FF0001FF0011177E8F14>I<1FFC1FFC07DC078C0780070007000F000E000E000E000E00
0E001E00FFC0FFC00E107F8F0F>I<07EC1FFC3C38381838183C003FC01FF00FF800F860786038
7078F8F0FFE0DFC00E107F8F0F>I<03000300060006000E000E003E007FE0FFC01C001C001C00
1C001C003C00380038C038C038C039C039803F801E000B177D960F>I<FC7EFC7E381C381C381C
381C383C783C703870387038707870F871F87FFE3F7E0F107C8F15>I<1FE3F81FE3F80381C003
818003838003830001C70001C60001CE0001CC0001D80000F80000F00000F00000E00000E00000
C00000C000718000F38000C700007E00007800001517808F14>121 D E
/Ff 32 121 df<01C003C007800F001E003C003800780070007000F000E000E000E000E000E000
E000E000F00070007000780038003C001E000F00078003C001C00A1D7A9914>40
D<E000F00078003C001E000F00070007800380038003C001C001C001C001C001C001C001C003C0
03800380078007000F001E003C007800F000E0000A1D7D9914>I<387C7E7E3E1E1EFCF870070A
7A8414>44 D<01C00003E00003E0000360000360000770000770000770000770000630000E3800
0E38000E38000E38000E38001FFC001FFC001FFC001C1C003C1E00FE3F80FE3F80FE3F8011177F
9614>65 D<07E60FFE1FFE3E3E3C1E780E700EF00EE000E000E000E000E000E000E000F00E700E
780E3C1E3E3C1FF80FF807E00F177E9614>67 D<FFFF80FFFF80FFFF801C03801C03801C03801C
03801C00001C38001C38001FF8001FF8001FF8001C38001C38001C00001C01C01C01C01C01C01C
01C0FFFFC0FFFFC0FFFFC01217809614>69 D<FFFF80FFFF80FFFF801C03801C03801C03801C03
801C00001C38001C38001FF8001FF8001FF8001C38001C38001C00001C00001C00001C00001C00
00FF8000FF8000FF800011177F9614>I<FE3F80FE3F80FE3F80380E00380E00380E00380E0038
0E00380E00380E003FFE003FFE003FFE00380E00380E00380E00380E00380E00380E00380E00FE
3F80FE3F80FE3F8011177F9614>72 D<FFFEFFFEFFFE0380038003800380038003800380038003
8003800380038003800380038003800380FFFEFFFEFFFE0F177E9614>I<FE7FFE7FFE7F383C38
7838F038F039E03BC03B803FC03FC03FE03EE03CF0387038783838383C383CFE3FFE3FFE3F1017
7F9614>75 D<FFC000FFC000FFC0001C00001C00001C00001C00001C00001C00001C00001C0000
1C00001C00001C00001C00001C00001C03801C03801C03801C0380FFFF80FFFF80FFFF8011177F
9614>I<FE0FE0FE0FE0FE0FE03B1B803B1B803B1B803B1B803BBB803BBB8039B38039B38039B3
8039F38038E38038E380380380380380380380380380380380FE0FE0FE0FE0FE0FE01317809614
>I<FE3F80FE3F80FE3F803B0E003B0E003B0E003B0E003B8E00398E00398E0039CE0039CE0039
CE0038CE0038CE0038EE00386E00386E00386E00386E00FE3E00FE3E00FE3E0011177F9614>I<
1FF07FFC7FFC701CF01EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00EF01E78
3C7FFC7FFC1FF00F177E9614>I<FFF800FFFE00FFFF001C0F001C07801C03801C03801C03801C
03801C07801C0F001FFF001FFE001FF8001C00001C00001C00001C00001C00001C0000FF8000FF
8000FF80001117809614>I<FFE000FFF000FFF800383C00381E00380E00380E00380E00381E00
383C003FF8003FF0003FF800387C00381C00381C00381C00381C00381DC0381DC0FE1FC0FE0FC0
FE078012177F9614>82 D<0FCC3FFC7FFCF87CF03CE01CE01CF000F8007F003FE01FF801FC003C
001E000EE00EE00EF01EF83CFFFCFFF8CFE00F177E9614>I<FFFF80FFFF80FFFF80E1C380E1C3
80E1C380E1C38001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C0000FF8000FF8000FF80011177F9614>I<FE7F00FE7F00FE7F001E38000E78000F
700007F00007E00003E00003C00001C00003C00003E00003E0000770000770000E78000E38001C
3C001C1C00FE3F80FE3F80FE3F8011177F9614>88 D<07F81FFC3FFC7C3C7818F000E000E000E0
00E000F00E780E7E1E3FFC1FF807F00F107E8F14>99 D<07E01FF83FFC7C3C781EF00EFFFEFFFE
FFFEE000F00E780E7E1E3FFC1FF807E00F107E8F14>101 D<07CF001FFF803FFF807C7F00783C
00701C00701C00783C007C7C003FF8007FF00077C0007800003FF8003FFE007FFF00F00F80E007
80E00380E00380F007807C1F007FFF001FFC0007F00011197F8F14>103
D<FF80FF80FF800380038003800380038003800380038003800380038003800380038003800380
0380FFFEFFFEFFFE0F177E9614>108 D<FFDF00FFFF80FFFF803CF3803CF38038E38038E38038
E38038E38038E38038E38038E38038E380FEFBE0FEFBE0FEFBE01310808F14>I<FCFC00FFFE00
FFFF001F0F001E07001C07001C07001C07001C07001C07001C07001C07001C0700FF9FE0FF9FE0
FF9FE01310808F14>I<07C01FF03FF8783C701CF01EE00EE00EE00EE00EF01E701C7C7C3FF81F
F007C00F107E8F14>I<FCFC00FFFE00FFFF001F8F801E03801C03C01C01C01C01C01C01C01C01
C01E03C01E07801F8F801FFF001FFE001CFC001C00001C00001C00001C00001C0000FF8000FF80
00FF80001218808F14>I<FF1F80FF7FC0FFFFC007F1C007C00007800007800007000007000007
0000070000070000070000FFFC00FFFC00FFFC001210808F14>114 D<1FF87FF8FFF8F038E038
F0007F803FF80FFC003EE00EE00EF83EFFFCFFF8CFF00F107E8F14>I<07000700070007000700
FFFCFFFCFFFC070007000700070007000700070E070E070E079E07FC03F801F00F157F9414>I<
FC3F00FC3F00FC3F001C07001C07001C07001C07001C07001C07001C07001C07001C07001C1F00
1FFFE00FFFE007F7E01310808F14>I<FE7F80FE7F80FE7F800E780007700007E00003E00001C0
0003C00003E0000770000E78000E3800FF7F80FF7F80FF7F8011107F8F14>120
D E /Fg 1 59 df<F0F0F0F004047D830B>58 D E /Fh 3 73 df<07E01FF83FFC7FFE7FFEFFFF
FFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E010107E9115>15 D<0003FC001FFE00703E01C0
1E03001C06001C0E00381C00301C0060380000380000700000700000F00018F00038F00078F000
78F00070F000F0F800F0F801E07C03E07F0FE03FF9C00FC1C00003800003800007000006003C0C
007FF8003FC00017207F9B19>71 D<00FC000303FE00070E3E000E181E000E381E001C701E001C
601C0038C01C0038003C0070003C0070003C00F0003800E0003FFFE0007FFFE0007001C0007001
C000F003C000E003C000E0038001E0038001C0078001C0078003C0078003800780038007830700
0786070007CC0E0007F8000003E0201D809B23>I E /Fi 50 122 df<000FF800007FFC0001FC
1E0003F01F0007E03F000FE03F000FC03F000FC03F000FC00C000FC000000FC000000FC000000F
C00000FFFFFF00FFFFFF000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F00
0FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F
000FC03F007FF0FFE07FF0FFE01B237FA21F>12 D<00003801C000003801C000007803C0000078
03C0000070038000007003800000F007800000F007800000E007000000E007000001E00F000001
E00F000001C00E000001C00E000003C01E007FFFFFFFFEFFFFFFFFFFFFFFFFFFFF000700380000
0F007800000F007800000E007000000E007000000E007000001E00F000001E00F000001C00E000
FFFFFFFFFFFFFFFFFFFF7FFFFFFFFE007803C0000070038000007003800000F007800000F00780
0000E007000000E007000001E00F000001E00F000001C00E000001C00E000003C01E000003C01E
000003801C000003801C0000282D7DA22F>35 D<0038007800F001E003C003C007800F000F001F
001E003E003E003C007C007C007C007800F800F800F800F800F800F800F800F800F800F800F800
F800F80078007C007C007C003C003E003E001E001F000F000F00078003C003C001E000F0007800
380D317BA416>40 D<E000F00078003C001E001E000F000780078007C003C003E003E001E001F0
01F001F000F000F800F800F800F800F800F800F800F800F800F800F800F800F800F001F001F001
F001E003E003E003C007C0078007800F001E001E003C007800F000E0000D317DA416>I<FFFCFF
FCFFFCFFFCFFFC0E057F8D13>45 D<7CFEFEFEFEFE7C07077C8610>I<00FE0007FFC00F83E01F
01F03E00F83E00F87C007C7C007C7C007CFC007CFC007EFC007EFC007EFC007EFC007EFC007EFC
007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C7C007C3E00F83E00F81F01F00F
83E007FFC000FE0017207E9F1C>48 D<00180000780001F800FFF800FFF80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE013207C9F1C
>I<03FC001FFF803C1FC0700FE0FC07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003F800
03F00007F00007E0000FC0000F80001F00003E00007C0000F80001F01801C0180380180700180E
00381FFFF03FFFF07FFFF0FFFFF0FFFFF0FFFFF015207D9F1C>I<01FF0007FFC01F07E01E03F0
3F03F83F01F83F81F83F01F83F03F80E03F80003F00007F0000FE0001F8001FF0001FF000007E0
0003F80001FC0000FC0000FE0000FE7C00FEFE00FEFE00FEFE00FEFE00FCFE01FC7803F83E07F0
1FFFE003FF0017207E9F1C>I<0000E00001E00003E00003E00007E0000FE0001FE0001FE00037
E00077E000E7E001C7E00187E00307E00707E00E07E00C07E01807E03807E07007E0E007E0FFFF
FEFFFFFE0007E00007E00007E00007E00007E00007E00007E000FFFE00FFFE17207E9F1C>I<18
00601E03E01FFFE01FFFC01FFF801FFF001FFC001BE00018000018000018000018000019FE001F
FF801F0FC01C07E01803F00003F00003F80003F80003F87803F8FC03F8FC03F8FC03F8FC03F8FC
03F06007F0780FE03C1FC01FFF0007FC0015207D9F1C>I<003FC001FFE003F07007C0F80F81F8
1F01F83E01F83E01F87E00F07C00007C0000FC0800FCFFC0FDFFF0FF81F8FF00F8FE007CFE007C
FE007EFC007EFC007EFC007EFC007E7C007E7C007E7E007E3E007C3E00FC1F01F80FC3F007FFC0
00FF0017207E9F1C>I<6000007800007FFFFE7FFFFE7FFFFE7FFFFC7FFFF87FFFF0E000E0E000
C0C001C0C00380C00700000E00000E00001C00003C0000380000780000780000F80000F00001F0
0001F00001F00001F00003F00003F00003F00003F00003F00003F00003F00001E00017227DA11C
>I<00FF0007FFC00F83E01E01F01C00F83C00783C00783E00783F00783FC0F83FF0F03FF9F01F
FFE01FFF800FFFE003FFF00FFFF81F7FFC3E1FFC7C0FFEF803FEF000FEF0007EF0003EF0001EF0
001EF8001C78003C7E00783F81F00FFFE003FF0017207E9F1C>I<01FF0007FFC01F83E03F01F0
7E00F87C00F8FC007CFC007CFC007CFC007EFC007EFC007EFC007EFC00FE7C00FE7C00FE3E01FE
3F03FE1FFF7E07FE7E00207E00007C00007C1E00FC3F00F83F00F83F01F03F03F03E07E01E1FC0
0FFF0003F80017207E9F1C>I<000070000000007000000000F800000000F800000000F8000000
01FC00000001FC00000003FE00000003FE00000003FE00000006FF000000067F0000000E7F8000
000C3F8000000C3F800000183FC00000181FC00000381FE00000300FE00000300FE00000600FF0
00006007F00000E007F80000FFFFF80000FFFFF800018001FC00018001FC00038001FE00030000
FE00030000FE000600007F000600007F00FFE00FFFF8FFE00FFFF825227EA12A>65
D<FFFFFF8000FFFFFFE00007F001F80007F000FC0007F0007E0007F0007E0007F0007F0007F000
7F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FE0007F000FC0007F003F80007FF
FFF00007FFFFF00007F001FC0007F0007E0007F0003F0007F0003F8007F0001F8007F0001FC007
F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0003F8007F0003F8007F0007F00
07F001FE00FFFFFFF800FFFFFFC00022227EA128>I<0007FE0180003FFFC38000FF01E78003FC
007F8007F0001F800FE0000F801FC0000F801F800007803F800003807F000003807F000003807F
00000180FE00000180FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000
FE00000000FE00000000FE000000007F000001807F000001807F000001803F800003801F800003
001FC00007000FE0000E0007F0001C0003FC00380000FF01F000003FFFC0000007FF000021227D
A128>I<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0001F8007F0000FC0
07F00007E007F00007E007F00007F007F00003F007F00003F007F00003F007F00003F807F00003
F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F000
03F007F00003F007F00003F007F00007E007F00007E007F0000FC007F0001F8007F0003F0007F0
007E0007F003FC00FFFFFFF000FFFFFF800025227EA12B>I<FFFFFFFCFFFFFFFC07F000FC07F0
003C07F0001C07F0000C07F0000E07F0000E07F0000607F0180607F0180607F0180607F0180007
F0380007F0780007FFF80007FFF80007F0780007F0380007F0180007F0180007F0180307F01803
07F0000307F0000607F0000607F0000607F0000E07F0000E07F0001E07F0003E07F001FCFFFFFF
FCFFFFFFFC20227EA125>I<FFFFFFF8FFFFFFF807F001F807F0007807F0003807F0001807F000
1C07F0001C07F0000C07F0000C07F0180C07F0180C07F0180007F0180007F0380007F0780007FF
F80007FFF80007F0780007F0380007F0180007F0180007F0180007F0180007F0000007F0000007
F0000007F0000007F0000007F0000007F0000007F00000FFFFE000FFFFE0001E227EA123>I<00
03FF00C0003FFFE1C000FF80F3C001FC003FC007F0001FC00FE0000FC01FC00007C01F800003C0
3F800001C07F000001C07F000001C07F000000C0FE000000C0FE00000000FE00000000FE000000
00FE00000000FE00000000FE00000000FE00000000FE000FFFFCFE000FFFFC7F00001FC07F0000
1FC07F00001FC03F80001FC01F80001FC01FC0001FC00FE0001FC007F0003FC001FC003FC000FF
80FFC0003FFFE3C00003FF00C026227DA12C>I<FFFFE0FFFFE003F80003F80003F80003F80003
F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800FF
FFE0FFFFE013227FA115>73 D<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
F0000007F0000007F0000007F0000007F0000007F0001807F0001807F0001807F0001807F00038
07F0003807F0007007F0007007F000F007F001F007F007F0FFFFFFF0FFFFFFF01D227EA122>76
D<FFF000000FFFFFF800001FFF07F800001FE006FC000037E006FC000037E006FC000037E0067E
000067E0067E000067E0063F0000C7E0063F0000C7E0061F800187E0061F800187E0060FC00307
E0060FC00307E0060FC00307E00607E00607E00607E00607E00603F00C07E00603F00C07E00601
F81807E00601F81807E00601F81807E00600FC3007E00600FC3007E006007E6007E006007E6007
E006003FC007E006003FC007E006001F8007E006001F8007E006001F8007E006000F0007E0FFF0
0F00FFFFFFF00600FFFF30227EA135>I<FFF8001FFEFFFC001FFE07FE0000C007FF0000C006FF
8000C0067F8000C0067FC000C0063FE000C0061FF000C0060FF800C00607F800C00603FC00C006
03FE00C00601FF00C00600FF80C006007FC0C006003FC0C006003FE0C006001FF0C006000FF8C0
060007FCC0060003FCC0060001FEC0060001FFC0060000FFC00600007FC00600003FC00600001F
C00600001FC00600000FC006000007C006000003C0FFF00001C0FFF00000C027227EA12C>I<00
07FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E001F80003F001F80003F00
3F00001F803F00001F807F00001FC07E00000FC07E00000FC0FE00000FE0FE00000FE0FE00000F
E0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00000FC07F0000
1FC07F00001FC03F00001F803F80003F801F80003F000FC0007E0007E000FC0003F001F80000FC
07E000003FFF80000007FC000023227DA12A>I<FFFFFF00FFFFFFE007F007F007F001FC07F000
FC07F0007E07F0007E07F0007F07F0007F07F0007F07F0007F07F0007F07F0007E07F0007E07F0
00FC07F001FC07F007F007FFFFE007FFFF0007F0000007F0000007F0000007F0000007F0000007
F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000FFFF8000FFFF8000
20227EA126>I<FFFFFE0000FFFFFFC00007F007F00007F001F80007F000FC0007F0007E0007F0
007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FC0007
F001F80007F007F00007FFFFC00007FFFFC00007F01FF00007F007F80007F003F80007F003FC00
07F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC
0607F001FE0E07F000FF1EFFFF807FFCFFFF800FF827227EA12A>82 D<03FE0C0FFF9C1F03FC3E
00FC7C007C78003CF8001CF8001CF8000CFC000CFE0000FF0000FFF0007FFF007FFFE03FFFF01F
FFF80FFFFC03FFFE007FFE0003FF0000FF00007F00003FC0001FC0001FC0001FE0001FE0001EF0
003EFC007CFF80F8E7FFF0C0FFC018227DA11F>I<07FE001FFF803F0FC03F07E03F07F03F03F0
1E03F00003F00003F001FFF00FFFF03FE3F07F03F07E03F0FE03F0FC03F0FC03F0FC07F0FE0FF0
7F1FF83FFDFF0FF0FF18167E951B>97 D<FF800000FF8000001F8000001F8000001F8000001F80
00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8FE0001FBFFC001F
F07E001FC03F001F801F801F801F801F800F801F800FC01F800FC01F800FC01F800FC01F800FC0
1F800FC01F800FC01F800FC01F800F801F801F801F801F001FC03F001FF0FE001E7FF8001C1FE0
001A237EA21F>I<01FF8007FFE01FC3F03F03F03E03F07E03F07C01E0FC0000FC0000FC0000FC
0000FC0000FC0000FC0000FC00007E00007E00003F00303F80701FE1E007FFC001FF0014167E95
19>I<0003FE000003FE0000007E0000007E0000007E0000007E0000007E0000007E0000007E00
00007E0000007E0000007E0000007E0001FE7E0007FFFE001FC3FE003F00FE003E007E007E007E
007C007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E007C00
7E007E007E003E00FE003F01FE001F83FE000FFF7FC001FC7FC01A237EA21F>I<01FE0007FF80
1F87E03F03E03E01F07E00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC0000FC0000
7E00007E00003F00181F80380FE0F007FFE000FF8015167E951A>I<003F8001FFC003F7E007E7
E007E7E00FC7E00FC3C00FC0000FC0000FC0000FC0000FC0000FC000FFFC00FFFC000FC0000FC0
000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
000FC0000FC0000FC0007FFC007FFC0013237FA211>I<1F003F803F803F803F803F801F000000
000000000000000000000000FF80FF801F801F801F801F801F801F801F801F801F801F801F801F
801F801F801F801F801F801F80FFF0FFF00C247FA30F>105 D<FF80FF801F801F801F801F801F
801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
1F801F801F801F801F801F801F80FFF0FFF00C237FA20F>108 D<FF87F80FF000FF9FFC3FF800
1FBC7E78FC001FF07FE0FE001FE03FC07E001FC03F807E001FC03F807E001F803F007E001F803F
007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E00
1F803F007E001F803F007E001F803F007E001F803F007E001F803F007E00FFF1FFE3FFC0FFF1FF
E3FFC02A167E952F>I<FF87F000FF9FFC001FF8FC001FF07E001FE07E001FC07E001FC07E001F
807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E00
1F807E001F807E001F807E00FFF1FFC0FFF1FFC01A167E951F>I<00FE0007FFC00F83E01E00F0
3E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C
3E00F81F01F00F83E007FFC000FE0017167E951C>I<FF8FE000FFBFFC001FF0FE001FC03F001F
803F801F801F801F801F801F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC0
1F800FC01F801F801F801F801F803F001FC07F001FF0FE001FFFF8001F9FE0001F8000001F8000
001F8000001F8000001F8000001F8000001F8000001F800000FFF00000FFF000001A207E951F>
I<FF1F80FF7FC01F77E01FE7E01FC7E01FC7E01F83C01F80001F80001F80001F80001F80001F80
001F80001F80001F80001F80001F80001F80001F8000FFF800FFF80013167E9517>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 /Fj 68 124 df<007E7E01FFFF07CFCF070F8F
0F0F0F0E07000E07000E07000E07000E0700FFFFF0FFFFF00E07000E07000E07000E07000E0700
0E07000E07000E07000E07000E07000E07000E07007F0FF07F0FF0181A809916>11
D<007E0001FE0007CF00070F000F0F000E0F000E00000E00000E00000E0000FFFF00FFFF000E07
000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07007F0FE07F0F
E0131A809915>I<007E1F8001FF7FC007C7F1E00707C1E00F07C1E00E0781E00E0380000E0380
000E0380000E038000FFFFFFE0FFFFFFE00E0380E00E0380E00E0380E00E0380E00E0380E00E03
80E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E07F8FE3FC7F8FE3FC1E1A809920
>14 D<F0F0F0F0F0F0F0F0F0F0606060606060606000000000F0F0F0F0041A7D990B>33
D<F1E0F9F0F9F0F9F0183018303870306070E0E1C0C1800C0B7F9913>I<F0F8F8F81818383070
E0C0050B7D990B>39 D<01C00380070007000E001C001C00380038007000700070006000E000E0
00E000E000E000E000E000E000E000E000E000E0006000700070007000380038001C001C000E00
07000700038001C00A267E9B0F>I<E0007000380038001C000E000E0007000700038003800380
018001C001C001C001C001C001C001C001C001C001C001C001C00180038003800380070007000E
000E001C00380038007000E0000A267E9B0F>I<E0F0F0F03030307060E0C0040B7D830B>44
D<FFC0FFC0FFC00A0380880D>I<F0F0F0F004047D830B>I<07801FE03870303070386018E01CE0
1CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C60187038703838701FE007800E187E9713>
48 D<03000700FF00FF0007000700070007000700070007000700070007000700070007000700
0700070007000700FFF0FFF00C187D9713>I<1FC03FF071F8F078F83CF83CF81C701C003C003C
0038007800F000E001C0038007000E0C1C0C380C7018FFF8FFF8FFF80E187E9713>I<0FC03FE0
78F078787C7878783878007800F001F00FE00FC000F00078003C003C003CF83CF83CF83CF87870
F87FF01FC00E187E9713>I<0070007000F001F001F00370077006700E700C7018703870307060
70E070FFFFFFFF0070007000700070007007FF07FF10187F9713>I<03F00FF81E783C78387870
7870006000E180EFE0FFF0F838F038F01CE01CE01CE01CE01C701C701C70383C701FE00FC00E18
7E9713>54 D<F0F0F0F00000000000000000F0F0F0F004107D8F0B>58 D<F0F0F0F00000000000
000000E0F0F0F03030307060E0C004177D8F0B>I<1FC07FF07070F038F038F038F038007800F0
01E003C0038007000700060006000600060000000000000000000F000F000F000F000D1A7E9912
>63 D<000C0000001E0000001E0000001E0000003F0000003F0000003F00000077800000678000
0067800000C3C00000C3C00000C3C0000181E0000181E0000181E0000300F00003FFF00003FFF0
000600780006007800060078000E003C001E003C00FF81FFC0FF81FFC01A1A7F991D>65
D<FFFF80FFFFE00F00F00F00780F003C0F003C0F003C0F003C0F003C0F00780F00F00FFFE00FFF
E00F01F00F00780F003C0F001E0F001E0F001E0F001E0F001E0F003C0F003C0F00F8FFFFF0FFFF
C0171A7F991B>I<007F0601FFE607E0FE0F803E1E001E3C001E3C000E78000E780006F00006F0
0000F00000F00000F00000F00000F00000F000067800067800063C000E3C000C1E001C0F803807
E0F001FFE0007F80171A7E991C>I<FFFFF8FFFFF80F00780F00380F00180F001C0F000C0F030C
0F030C0F03000F07000FFF000FFF000F07000F03000F03000F03060F00060F000C0F000C0F000C
0F001C0F001C0F0078FFFFF8FFFFF8171A7F991A>69 D<FFF3FFC0FFF3FFC00F003C000F003C00
0F003C000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC000FFFFC000F003C
000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F00
3C00FFF3FFC0FFF3FFC01A1A7F991D>72 D<FFF0FFF00F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF0FFF00C1A7F990E>I<0F
FF0FFF007800780078007800780078007800780078007800780078007800780078007800787078
F878F878F8F8F9F07FE01F80101A7F9914>I<FFF800FFF8000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00300F00300F00300F00
700F00700F00600F00E00F03E0FFFFE0FFFFE0141A7F9918>76 D<FF8001FFFFC003FF0FC003F0
0FC003F00DE006F00DE006F00DE006F00CF00CF00CF00CF00CF00CF00C7818F00C7818F00C7818
F00C3C30F00C3C30F00C3C30F00C1E60F00C1E60F00C1E60F00C0FC0F00C0FC0F00C0FC0F00C07
80F01E0780F0FFC78FFFFFC30FFF201A7F9923>I<FF00FFC0FF80FFC00FC01E000FC00C000FE0
0C000DF00C000CF00C000CF80C000C7C0C000C7C0C000C3E0C000C1F0C000C1F0C000C0F8C000C
078C000C07CC000C03EC000C01EC000C01FC000C00FC000C00FC000C007C000C003C001E003C00
FFC01C00FFC00C001A1A7F991D>I<007F000001FFC00007C1F0000F0078001E003C003C001E00
38000E0078000F0070000700F0000780F0000780F0000780F0000780F0000780F0000780F00007
80F000078078000F0078000F0038000E003C001E001E003C000F00780007C1F00001FFC000007F
0000191A7E991E>I<FFFF80FFFFE00F00F00F00780F00380F003C0F003C0F003C0F003C0F003C
0F00380F00780F00F00FFFE00FFF800F00000F00000F00000F00000F00000F00000F00000F0000
0F0000FFF000FFF000161A7F991A>I<FFFE0000FFFFC0000F01E0000F00F0000F0070000F0078
000F0078000F0078000F0078000F0070000F00F0000F01E0000FFFC0000FFFC0000F03E0000F01
F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0C00F00F9C0FFF07FC0FF
F01F801A1A7F991C>82 D<0FC63FF6787E701EE00EE00EE006E006F000FC007F807FF03FFC0FFE
01FE003F000F000FC007C007E007E00FF00EFC3CDFFCC7F0101A7E9915>I<7FFFFF007FFFFF00
781E0F00601E0300601E0300E01E0380C01E0180C01E0180C01E0180001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E000003FFF00003FFF000191A7F991C>I<FFF0FFC0FFF0FFC00F001E000F00
0C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F
000C000F000C000F000C000F000C000F000C000F000C000F000C000F801C000780180003C03800
01E0F00000FFE000003F80001A1A7F991D>I<FFC03FC0FFC03FC01F000E000F000C000F000C00
0F801C00078018000780180003C0300003C0300003C0300001E0600001E0600001E0600000F0C0
0000F0C00000F9C0000079800000798000003F0000003F0000003F0000001E0000001E0000001E
0000000C00001A1A7F991D>I<FFC7FF1FF0FFC7FF1FF01E00F803C01E007803800F007803000F
007803000F00FC03000780FC06000780FC060007819E060007819E0E0003C19E0C0003C30F0C00
03C30F0C0001E30F180001E70F980001E607980000F607B00000F607B00000FC03F000007C03E0
00007C03E000007801E000007801E000003801C000003000C000241A7F9927>I<FFE01FF0FFE0
1FF00F800F0007800E0003C00C0003E00C0001E0180001F0380000F0300000F86000007C600000
3CC000003FC000001F8000001F8000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F000000FFF00000FFF0001C1A80991D>89 D<1830387070E060C0E1C0C1
80C180F9F0F9F0F9F078F00C0B7B9913>92 D<18387060E0C0C0F8F8F878050B7E990B>96
D<7F80FFE0F1F0F0F0607000F01FF03FF07870F070E070E073E0F3F1F37FFE3F3C10107E8F13>
I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001CFC001FFE001F0F
001E07801C03801C01C01C01C01C01C01C01C01C01C01C01C01C03801E07801F0F001BFE0019F8
00121A7F9915>I<07F81FFC3C3C783C7018E000E000E000E000E000F0007000780C3E1C1FF807
E00E107F8F11>I<007E00007E00000E00000E00000E00000E00000E00000E00000E00000E000F
EE001FFE003C3E00781E00700E00E00E00E00E00E00E00E00E00E00E00E00E00700E00781E003C
3E001FFFC00FCFC0121A7F9915>I<07E01FF03C78701C701CFFFCFFFCE000E000E000F0007000
780C3E1C1FF807E00E107F8F11>I<00F803FC07BC0F3C0E3C0E000E000E000E000E00FFC0FFC0
0E000E000E000E000E000E000E000E000E000E000E000E007FE07FE00E1A80990C>I<0FDF1FFF
38777038703870387038703838703FE07FC0700070007FF83FFC7FFEF01FE00FE007E007F00F7C
3E3FFC0FF010187F8F13>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C0000
1C00001CF8001FFC001F1E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00
1C0E001C0E00FF9FC0FF9FC0121A7F9915>I<3C003C003C003C00000000000000000000000000
FC00FC001C001C001C001C001C001C001C001C001C001C001C001C00FF80FF80091A80990A>I<
01E001E001E001E000000000000000000000000007E007E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E060E0F1E0F3C0FF807F000B2183990C>I<FC0000FC00
001C00001C00001C00001C00001C00001C00001C00001C00001C7F801C7F801C7C001C70001CE0
001DC0001FC0001FE0001EF0001CF0001C78001C3C001C3C001C1E00FF3FC0FF3FC0121A7F9914
>I<FC00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C00FF80FF80091A80990A>I<FCFC3F00FFFEFF801F0FC3C01E0781C01C
0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0
FF9FE7F8FF9FE7F81D107F8F20>I<FCF800FFFC001F1E001E0E001C0E001C0E001C0E001C0E00
1C0E001C0E001C0E001C0E001C0E001C0E00FF9FC0FF9FC012107F8F15>I<07E01FF8381C700E
6006E007E007E007E007E007E007700E700E3C3C1FF807E010107F8F13>I<FCFC00FFFE001F0F
001E07801C03801C03C01C01C01C01C01C01C01C01C01C03C01C03801E07801F1F001FFE001DF8
001C00001C00001C00001C00001C0000FF8000FF800012177F8F15>I<07C6001FF6003E3E0078
1E00700E00F00E00E00E00E00E00E00E00E00E00F00E00700E00781E003C7E001FFE000FCE0000
0E00000E00000E00000E00000E00007FC0007FC012177F8F14>I<FDE0FFF01F701E701E001C00
1C001C001C001C001C001C001C001C00FFC0FFC00C107F8F0F>I<3FE07FE0F0E0E060E060F000
FF807FC01FE001F0C0F0E070E070F0F0FFE0DF800C107F8F0F>I<0C000C000C000C001C001C00
3C00FFC0FFC01C001C001C001C001C001C001C001C601C601C601C601EE00FC007800B177F960F
>I<FC7E00FC7E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C
1E001E3E000FFFC007EFC012107F8F15>I<FF3F80FF3F803C0E001C0C001C0C000E18000E1800
0E380007300007300007F00003E00003E00001C00001C00001C00011107F8F14>I<FF3F9F80FF
3F9F803C1E0E001C3E0C001C360C001C370C000E3718000E6318000E6398000763B00007C1B000
07C1F00007C1F0000380E0000380E0000380E00019107F8F1C>I<7F1FC07F1FC00F1E00071C00
03B80003B00001E00000E00000F00001F00003B800071C00061C001E0E00FF1FE0FF1FE0131080
8F14>I<FF3F80FF3F803C0E001C0C001C0C000E18000E18000E380007300007300007F00003E0
0003E00001C00001C00001C000018000018000618000F30000C70000FE000078000011177F8F14
>I<7FF87FF870F860F061E063C063C007800F181E181E183C387830F870FFF0FFF00D107F8F11>
I<FFFFC0FFFFC01202808A13>I E /Fk 8 118 df<78FCFCFCFC78000000000078FCFCFCFC7806
117D900C>58 D<FFFFF000FFFFFC000FC03F000FC00F800FC007C00FC003E00FC003E00FC001F0
0FC001F00FC001F80FC001F80FC001F80FC001F80FC001F80FC001F80FC001F80FC001F80FC001
F00FC001F00FC003F00FC003E00FC007C00FC00F800FC03F00FFFFFE00FFFFF0001D1A7E9922>
68 D<03FC001FFF003F1F007C1F007C1F00F80E00F80000F80000F80000F80000F80000FC0000
7C00007E01803F87801FFF0003FC0011117F9014>99 D<1E003F003F003F003F001E0000000000
000000007F007F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFC0FFC00A
1B809A0C>105 D<FF3F80FF7FC01FE7E01FC3E01F83E01F03E01F03E01F03E01F03E01F03E01F
03E01F03E01F03E01F03E01F03E0FFE7FCFFE7FC16117F9019>110 D<03F8000FFE003E0F803C
07807803C07803C0F803E0F803E0F803E0F803E0F803E0F803E07803C07C07C03E0F800FFE0003
F80013117F9016>I<1FF07FF07070E030F030FC00FFE07FF07FF81FFC01FCC03CE01CE01CF838
FFF8CFE00E117F9011>115 D<FF1FE0FF1FE01F03E01F03E01F03E01F03E01F03E01F03E01F03
E01F03E01F03E01F03E01F03E01F07E01F0FE00FFFFC07FBFC16117F9019>117
D E /Fl 83 126 df<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F06000000000F0F0F0F00419779816
>33 D<6030F078F078F078F078F078F078F078F078F078E038E0380D0C7C9916>I<0387000387
000387000387000387000387007FFFC0FFFFE0FFFFE0070E00070E000F1E000F1E000E1C000E1C
000E1C00FFFFE0FFFFE07FFFC01C38001C38001C38001C38001C38001C380013197F9816>I<38
03807C0380FE0780FE0780EE0F00EE0F00EE0E00EE1E00FE1E00FE3C007C3C0038780000780000
700000F00000F00001E00001E00001C00003C00003C0000783800787C00F0FE00F0EE00E0EE01E
0EE01E0EE03C0EE03C0FE03807C038038013207F9C16>37 D<03C0000FE0001FF0001EF0001C70
001C70001C70001CF7E01DF7E01FE7E01FCF000F8F001F8E003F1E007F1E007F9C00F7FC00F3FC
00E1F800E1F9C0F0F1C0F1F9C07FFFC07FFFC01F0F0013197F9816>I<1C3C3E1E0E0E0E1E1C3C
78F060070D799816>I<00E001E007C007800F001E003C0038007800700070007000F000E000E0
00E000E000E000E000E000F000700070007000780038003C001E000F00078007C001E000E00B21
7A9C16>I<E000F0007C003C001E000F000780038003C001C001C001C001E000E000E000E000E0
00E000E000E001E001C001C001C003C0038007800F001E003C007C00F000E0000B217C9C16>I<
01C00001C00001C00001C00071C700F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF80
71C70001C00001C00001C00001C00011127E9516>I<01C00001C00001C00001C00001C00001C0
0001C00001C000FFFF80FFFF80FFFF8001C00001C00001C00001C00001C00001C00001C00001C0
0011137E9516>I<387C7E7E3E0E1E3CFCF860070B798416>I<FFFF80FFFF80FFFF8011037E8D16
>I<70F8F8F8700505788416>I<000380000380000780000780000F00000F00001E00001E00003C
00003C0000780000780000F00000F00001E00001E00003C00003C0000780000780000F00000F00
001E00001E00003C00003C0000780000780000F00000F00000E00000E0000011207E9C16>I<03
E0000FF8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E00380E00380E0
0380E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF80003E00011197E98
16>I<0380038007800F801F80FF80FF80F3800380038003800380038003800380038003800380
03800380038003807FFC7FFC7FFC0E197C9816>I<0FF0001FFC007FFE00783F00F00F00F00780
F00380F00380000380000380000780000700000F00001E00003C0000780000F00003E00007C000
0F00001E03803C0380FFFF80FFFF80FFFF8011197E9816>I<0FF0003FFC007FFE00781F00780F
00780700300700000F00000F00003E0007FC0007F80007FC00001E00000F000007800003806003
80F00380F00780F00F00F81F007FFE003FFC000FF00011197E9816>I<007C0000FC0000DC0001
DC00039C00039C00071C000F1C000E1C001E1C003C1C00381C00781C00F01C00FFFFE0FFFFE0FF
FFE0001C00001C00001C00001C00001C0001FFC001FFC001FFC013197F9816>I<3FFE003FFE00
3FFE003800003800003800003800003800003800003800003FF0003FFC003FFE003C1F00380700
000780000380600380F00380F00780F00F00F83F007FFE003FFC000FF00011197E9816>I<00FC
0003FE000FFF001F8F003E0F003C0F00780600700000F04000F7F800FFFE00FFFE00F80F00F007
80F00780E00380F00380F00380700380780780780F003E1F001FFE000FFC0007F00011197E9816
>I<07F0001FFC003FFE007C1F00F00780E00380E00380E003807007007C1F001FFC0007F0001F
FC003C1E00700700F00780E00380E00380E00380F007807007007C1F003FFE001FFC0007F00011
197E9816>56 D<70F8F8F870000000000000000070F8F8F8700512789116>58
D<387C7C7C380000000000000000387C7C7C3C1C3C38F8F0600618799116>I<000380000F8000
1F80007E0000FC0003F00007E0001F80003F0000FC0000F80000FC00003F00001F800007E00003
F00000FC00007E00001F80000F8000038011157E9616>I<7FFF00FFFF80FFFF80000000000000
000000000000000000FFFF80FFFF807FFF00110B7E9116>I<E00000F80000FC00003F00001F80
0007E00003F00000FC00007E00001F80000F80001F80007E0000FC0003F00007E0001F80003F00
00FC0000F80000E0000011157E9616>I<00E00001F00001F00001B00001B00003B80003B80003
B800031800071C00071C00071C00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C
07001C0700FF1FE0FF1FE0FF1FE013197F9816>65 D<FFF800FFFE00FFFF001C0F001C07801C03
801C03801C03801C07801C07001FFF001FFE001FFE001C1F001C03801C03C01C01C01C01C01C01
C01C01C01C03C01C0780FFFF80FFFF00FFFC0012197F9816>I<03F18007FF800FFF801F0F803C
0780780780780380700380F00000E00000E00000E00000E00000E00000E00000E00000F0000070
03807803807803803C07801F0F000FFE0007FC0003F00011197E9816>I<FFF800FFFE00FFFF00
1C0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00E01C00E01C00E01C00E01C00E0
1C00E01C01C01C01C01C03C01C07801C0F80FFFF00FFFE00FFF8001319809816>I<FFFFC0FFFF
C0FFFFC01C01C01C01C01C01C01C01C01C00001C00001C1C001C1C001FFC001FFC001FFC001C1C
001C1C001C00001C00E01C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE013197F9816>I<FF
FFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001FFC001FFC001F
FC001C1C001C1C001C00001C00001C00001C00001C00001C0000FFC000FFC000FFC00013197F98
16>I<03F3000FFF001FFF003F1F003C0F00780F00780700700700F00000E00000E00000E00000
E00000E07FC0E07FC0E07FC0F00700700700780F00780F003C0F003F1F001FFF000FFF0003E700
12197E9816>I<FFBFE0FFBFE0FFBFE01C07001C07001C07001C07001C07001C07001C07001FFF
001FFF001FFF001C07001C07001C07001C07001C07001C07001C07001C07001C0700FFBFE0FFBF
E0FFBFE013197F9816>I<FFFEFFFEFFFE03800380038003800380038003800380038003800380
03800380038003800380038003800380FFFEFFFEFFFE0F197D9816>I<FF8FF0FF8FF0FF8FF01C
07801C0F001C1F001C3E001C7C001C78001CF0001DF0001FF0001FF8001FF8001FBC001F3C001E
1E001C1E001C0F001C0F001C07801C0780FF8FF0FF8FF0FF8FF01419809816>75
D<FFC000FFC000FFC0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00
001C00001C00001C00001C00001C00401C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE01319
7F9816>I<FC07E0FE0FE0FE0FE03A0B803B1B803B1B803B1B803B1B803BBB803BBB8039B38039
B38039B38039B38039F38038E38038E380380380380380380380380380380380FE0FE0FE0FE0FE
0FE013197F9816>I<FE3FE0FF3FE0FF3FE01D07001D87001D87001D87001DC7001DC7001CC700
1CC7001CE7001CE7001CE7001C67001C67001C77001C77001C37001C37001C37001C1700FF9F00
FF9F00FF8F0013197F9816>I<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E003
80E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780F00780780F
007FFF003FFE001FFC0011197E9816>I<FFF800FFFE00FFFF001C0F801C03801C03C01C01C01C
01C01C01C01C03C01C03801C0F801FFF001FFE001FF8001C00001C00001C00001C00001C00001C
00001C0000FF8000FF8000FF800012197F9816>I<FFE000FFF800FFFC001C1E001C0F001C0700
1C07001C07001C07001C0F001C1E001FFC001FF8001FFC001C3E001C1E001C0E001C0E001C0E00
1C0E701C0E701C0FF0FF8FF0FF87E0FF83C014197F9816>82 D<0FF3001FFF007FFF00781F00F0
0F00E00700E00700E00000F000007800007F80003FF8000FFC0000FE00000F0000078000038000
0380E00380E00380F00780F81F00FFFE00FFFC00CFF80011197E9816>I<FFFFE0FFFFE0FFFFE0
E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E0000FFE000FFE000FFE0013197F9816>I<FF8FF8FF8F
F8FF8FF81C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01
C01C01C01C01C01C01C01E03C01E03C00F07800F8F8007FF0003FE0000F8001519809816>I<FF
1FE0FF1FE0FF1FE03803801C07001C07001C07001C07000E0E000E0E000E0E000E0E00060C0007
1C00071C00071C00071C0003180003B80003B80003B80001B00001F00001F00000E00013197F98
16>I<FE0FE0FE0FE0FE0FE07001C07001C07001C030018038038038038038038038E38039F380
39F38039B38019B30019B30019B30019B30019B30019B3001913001B1B000F1E000F1E000E0E00
13197F9816>I<7F3F807F3F807F3F800E1E000E1C00073C0007380003B80003F00001F00001E0
0000E00001E00001F00003F00003B80007B800071C00071C000E0E000E0E001C0700FF1FE0FF1F
E0FF1FE013197F9816>I<FF1FE0FF1FE0FF1FE01C07001C07000E0E000E0E00071C00071C0007
1C0003B80003B80001F00001F00000E00000E00000E00000E00000E00000E00000E00000E00007
FC0007FC0007FC0013197F9816>I<FFFF80FFFF80FFFF80E00F80E00F00E01E00E03E00003C00
00780000F80000F00001E00003E00003C0000780000F80000F00001E03803E03803C0380780380
F80380FFFF80FFFF80FFFF8011197E9816>I<FFF0FFF0FFF0E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000FF
F0FFF0FFF00C20789C16>I<E00000E00000F00000F000007800007800003C00003C00001E0000
1E00000F00000F000007800007800003C00003C00001E00001E00000F00000F000007800007800
003C00003C00001E00001E00000F00000F0000078000078000038000038011207E9C16>I<FFF0
FFF0FFF00070007000700070007000700070007000700070007000700070007000700070007000
7000700070007000700070007000700070FFF0FFF0FFF00C207F9C16>I<FFFF80FFFF80FFFF80
11037E7E16>95 D<0C1E3C7870F0E0E0E0F0F87870070D789B16>I<1FE0007FF8007FFC00783C
00301E00000E00007E000FFE003FFE007FCE00F80E00E00E00E00E00F01E00F83E007FFFE03FFF
E01FC3E013127E9116>I<FE0000FE0000FE00000E00000E00000E00000E00000E7E000FFF800F
FFC00FC7E00F01E00F00F00E00F00E00700E00700E00700E00700F00F00F00E00F81E00FC7C00F
FFC00FFF800E7E001419809816>I<03FC0FFE1FFE3E1E780C7000F000E000E000E000E000F000
70077C073E1F1FFE0FFC03F010127D9116>I<007F00007F00007F000007000007000007000007
0007E7001FFF003FFF003E3F00780F00700F00F00700E00700E00700E00700E00700F00F00F00F
00781F007E3F003FFFF01FF7F007E7F014197F9816>I<07E01FF83FFC7C3E781FF00FF007FFFF
FFFFFFFFE000F000F007780F7E1F3FFE0FFC03F010127D9116>I<001F00007F8000FF8001E780
01C30001C00001C000FFFF00FFFF00FFFF0001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C00001C0007FFF007FFF007FFF0011197F9816>I<03E7C00FFFE01FFF
E01E3CE03C1E00380E00380E00380E003C1E001E3C001FFC003FF8003BE0003800003C00001FFE
003FFF807FFFC07807C0F001E0E000E0E000E0E000E0F001E07E0FC03FFF801FFF0007FC00131C
7F9116>I<FE0000FE0000FE00000E00000E00000E00000E00000E7E000FFF000FFF800FC7800F
03800F03800E03800E03800E03800E03800E03800E03800E03800E03800E0380FFE7F8FFE7F8FF
E7F81519809816>I<03C003C003C003C000000000000000007FC07FC07FC001C001C001C001C0
01C001C001C001C001C001C001C001C0FFFFFFFFFFFF101A7D9916>I<FE0000FE0000FE00000E
00000E00000E00000E00000E7FE00E7FE00E7FE00E1F000E3E000E7C000EF8000FF0000FF8000F
FC000FBC000F1E000E1F000E0F800E0780FFCFF0FFCFF0FFCFF01419809816>107
D<FFC000FFC000FFC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF801119
7E9816>I<FBC780FFEFC0FFFFE03E7CE03C78E03870E03870E03870E03870E03870E03870E038
70E03870E03870E03870E0FE7CF8FE7CF8FE7CF81512809116>I<FE7E00FFFF00FFFF800FC780
0F03800F03800E03800E03800E03800E03800E03800E03800E03800E03800E0380FFE7F8FFE7F8
FFE7F81512809116>I<03E0000FF8001FFC003C1E00780F00700700E00380E00380E00380E003
80E00380F00780700700780F003C1E001FFC000FF80003E00011127E9116>I<FE7E00FFFF80FF
FFC00FC7E00F01E00F00F00E00F00E00700E00700E00700E00700F00F00F00E00F81E00FC7C00F
FFC00FFF800E7E000E00000E00000E00000E00000E00000E0000FFE000FFE000FFE000141B8091
16>I<07E7001FF7003FFF007C3F00781F00F00F00F00F00E00700E00700E00700E00700F00F00
F00F00781F007C3F003FFF001FF7000FC700000700000700000700000700000700000700007FF0
007FF0007FF0141B7E9116>I<FF1FC0FF7FE0FFFFE007F1E007E0C007C0000780000780000700
00070000070000070000070000070000070000FFFC00FFFC00FFFC0013127F9116>I<1FEC3FFC
7FFCF03CE01CE01CF8007FC03FF007FC003EE00EE00EF00EF83EFFFCFFF8CFF00F127D9116>I<
070000070000070000070000070000FFFF00FFFF00FFFF00070000070000070000070000070000
070000070000070100070380070380070780078F8003FF0003FE0000F80011177F9616>I<FE3F
80FE3F80FE3F800E03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E07
800F0F800FFFF807FFF803F3F81512809116>I<FF1FE0FF1FE0FF1FE01C07001E0F000E0E000E
0E000E0E00071C00071C00071C00071C0003B80003B80003B80001F00001F00000E00013127F91
16>I<FFBFE0FFBFE0FFBFE038038038038038038038038038E38019F30019F30019B3001DB700
1DB7001DB7001DB7000F1E000F1E000F1E0013127F9116>I<7F3FC07F3FC07F3FC00F1C00073C
0003B80003F00001F00000E00001E00001F00003B800073C00071C000E0E00FF3FE0FF3FE0FF3F
E013127F9116>I<FF9FE0FF9FE0FF9FE01C07000E07000E0E000E0E00070E00071C00071C0003
9C00039C0003980001B80001B80000F00000F00000F00000E00000E00000E00001C00079C0007B
C0007F80003F00003C0000131B7F9116>I<7FFFC07FFFC07FFFC0700F80701F00703E00007C00
00F80001F00003E00007C0000F80001F01C03E01C07C01C0FFFFC0FFFFC0FFFFC012127F9116>
I<003F8000FF8001FF8001E00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0003C000FF8000FF0000FF0000FF800003C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001E00001FF8000FF80003F8011207E9C16>I<FE0000FF8000FFC00003C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001E00000FF80007F80007F8000
FF8001E00001C00001C00001C00001C00001C00001C00001C00001C00001C00003C000FFC000FF
8000FE000011207E9C16>125 D E /Fm 13 119 df<183878380808101020404080050C7D830D>
44 D<3078F06005047C830D>46 D<03CC063C0C3C181C3838303870387038E070E070E070E070
E0E2C0E2C0E261E462643C380F127B9115>97 D<3F00070007000E000E000E000E001C001C001C
001C0039C03E60383038307038703870387038E070E070E070E060E0E0C0C0C1C0618063003C00
0D1D7B9C13>I<01F007080C08181C3838300070007000E000E000E000E000E000E008E0106020
30C01F000E127B9113>I<01E007100C1018083810701070607F80E000E000E000E000E000E008
6010602030C01F000D127B9113>101 D<00F3018F030F06070E0E0C0E1C0E1C0E381C381C381C
381C383830383038187818F00F700070007000E000E0C0C0E1C0C3007E00101A7D9113>103
D<01800380010000000000000000000000000000001C002600470047008E008E000E001C001C00
1C0038003800710071007100720072003C00091C7C9B0D>105 D<3C3C26C2468747078E068E00
0E000E001C001C001C001C0038003800380038007000300010127C9112>114
D<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030C030806060C01F000E12
7D9111>I<00C001C001C001C00380038003800380FFE00700070007000E000E000E000E001C00
1C001C001C00384038403840388019000E000B1A7D990E>I<1E0300270700470700470700870E
00870E000E0E000E0E001C1C001C1C001C1C001C1C003838803838801838801839001C5900078E
0011127C9116>I<1E06270E470E4706870287020E020E021C041C041C041C0818083808181018
200C4007800F127C9113>I E /Fn 46 123 df<00030007001E003C007800F800F001E003E007
C007C00F800F801F801F003F003F003E003E007E007E007E007C00FC00FC00FC00FC00FC00FC00
FC00FC00FC00FC00FC00FC00FC00FC007C007E007E007E003E003E003F003F001F001F800F800F
8007C007C003E001E000F000F80078003C001E00070003103C7AAC1B>40
D<C000E00078003C001E001F000F00078007C003E003E001F001F001F800F800FC00FC007C007C
007E007E007E003E003F003F003F003F003F003F003F003F003F003F003F003F003F003F003E00
7E007E007E007C007C00FC00FC00F801F801F001F003E003E007C007800F001F001E003C007800
E000C000103C7CAC1B>I<3E007F00FF80FF80FFC0FFC0FFC07FC03EC000C000C001C001800180
0380070006000E001C00380030000A157B8813>44 D<FFFF80FFFF80FFFF80FFFF80FFFF80FFFF
8011067F9017>I<3E007F00FF80FF80FF80FF80FF807F003E0009097B8813>I<003F800001FFF0
0007E0FC000FC07E001F803F001F803F003F001F803F001F807F001FC07F001FC07F001FC07F00
1FC0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF
001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE07F001FC07F001FC07F001FC07F001FC0
3F001F803F001F801F803F001F803F000FC07E0007E0FC0001FFF000003F80001B277DA622>48
D<000700000F00007F0007FF00FFFF00FFFF00F8FF0000FF0000FF0000FF0000FF0000FF0000FF
0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF007FFFFE7FFFFE7FFF
FE17277BA622>I<00FFC00007FFF8001FFFFE003F03FF007E00FF807F007FC0FF807FC0FF803F
E0FF803FE0FF803FE0FF801FE07F001FE03E003FE000003FE000003FC000003FC000007F800000
7F800000FF000001FE000001FC000003F8000007E000000FC000001F8000003E00E0007C00E000
7800E000F001C001E001C0038001C007FFFFC00FFFFFC01FFFFFC03FFFFFC07FFFFF80FFFFFF80
FFFFFF80FFFFFF801B277DA622>I<007FC00003FFF00007FFFC000FC1FE001F80FF003FC0FF00
3FE07F803FE07F803FE07F803FE07F803FE07F801FC0FF800F80FF000000FF000001FE000003FC
000007F00000FFC00000FFF8000001FE000000FF0000007F8000007FC000003FC000003FE01E00
3FE07F803FE07F803FE0FFC03FE0FFC03FE0FFC03FE0FFC03FC0FFC07FC07F807F807F00FF803F
81FF001FFFFC0007FFF80000FFC0001B277DA622>I<0000070000000F0000001F0000003F0000
007F000000FF000000FF000001FF000003FF0000077F00000F7F00000E7F00001C7F0000387F00
00707F0000F07F0000E07F0001C07F0003807F0007007F000F007F000E007F001C007F0038007F
0070007F00E0007F00FFFFFFF8FFFFFFF8FFFFFFF80000FF000000FF000000FF000000FF000000
FF000000FF000000FF00007FFFF8007FFFF8007FFFF81D277EA622>I<0C0007000FC03F000FFF
FE000FFFFE000FFFFC000FFFF8000FFFF0000FFFC0000FFF00000E0000000E0000000E0000000E
0000000E0000000E0000000E7FC0000FFFF8000FC1FE000E007F000C007F8000003F8000003FC0
00003FC000003FE000003FE03E003FE07F003FE0FF803FE0FF803FE0FF803FE0FF803FC0FF003F
C07E007FC078007F803C00FF001F83FE000FFFFC0007FFF00000FF80001B277DA622>I<0007F8
00003FFC0000FFFE0001FE1F0007F81F000FE03F800FC07F801FC07F803F807F803F807F807F80
3F007F001E007F0000007F000000FF000000FF1FE000FF3FF800FF70FE00FFE03F00FFC03F80FF
801FC0FF801FC0FF801FC0FF001FE0FF001FE0FF001FE0FF001FE07F001FE07F001FE07F001FE0
7F001FE03F801FC03F801FC01F803F800FC03F8007F0FF0003FFFC0001FFF800007FE0001B277D
A622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF03FFFFFE07FFFFFC07FFFFF807FFFFF
807FFFFF0070001E0070003C0070007800E0007000E000F000E001E0000003C0000007C0000007
8000000F8000000F0000001F0000003F0000003F0000003F0000007E0000007E000000FE000000
FE000000FE000000FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE0000
01FE000000FC0000007800001C297CA822>I<007FC00001FFF80007FFFC000FC0FE000F003F00
1E001F001E001F803E000F803E000F803F000F803FC00F803FF01F803FF81F003FFE3F001FFFFE
001FFFFC000FFFF00007FFFC0003FFFE0003FFFF000FFFFF801FBFFFC03F0FFFC07E03FFE07C00
FFE0FC007FE0F8001FE0F80007E0F80007E0F80003E0F80003E0FC0003C07C0007C07E0007803F
000F801FC07F000FFFFE0007FFF80000FFC0001B277DA622>I<007FC00003FFF00007FFFC000F
E0FE001FC07E003F803F007F003F807F003F80FF001FC0FF001FC0FF001FC0FF001FC0FF001FE0
FF001FE0FF001FE0FF001FE07F003FE07F003FE07F003FE03F807FE01F80FFE00FE1DFE003FF9F
E000FF1FE000001FE000001FC000001FC00F001FC01F803FC03FC03F803FC03F803FC07F003FC0
7F003F80FE001F01FC001F07F8000FFFE00007FFC00001FE00001B277DA622>I<00007FF80180
0007FFFE0780001FFFFF8F80007FF80FFF8000FF8001FF8003FE00007F8007FC00003F8007F800
001F800FF000000F801FE000000F803FE0000007803FC0000007807FC0000003807FC000000380
7FC000000380FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000
000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000007FC000000000
7FC0000003807FC0000003803FC0000003803FE0000003801FE0000007800FF00000070007F800
000F0007FC00001E0003FE00003C0000FF8000F800007FF807F000001FFFFFC0000007FFFF0000
00007FF8000029297CA832>67 D<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FE001FE003FE0007F0
03FE0001F003FE0000F003FE0000F003FE00007003FE00007003FE00007003FE01C07803FE01C0
3803FE01C03803FE01C03803FE03C00003FE03C00003FE0FC00003FFFFC00003FFFFC00003FFFF
C00003FE0FC00003FE03C00003FE03C00003FE01C00E03FE01C00E03FE01C00E03FE01C01C03FE
00001C03FE00001C03FE00001C03FE00003C03FE00003803FE00007803FE0000F803FE0001F803
FE0003F803FE001FF8FFFFFFFFF0FFFFFFFFF0FFFFFFFFF027297DA82D>69
D<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FE003FC003FE000FE003FE0003E003FE0001E003FE00
01E003FE0000E003FE0000E003FE0000E003FE0000F003FE03807003FE03807003FE03807003FE
03800003FE03800003FE07800003FE0F800003FFFF800003FFFF800003FFFF800003FE0F800003
FE07800003FE03800003FE03800003FE03800003FE03800003FE03800003FE00000003FE000000
03FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE000000FFFFFE00
00FFFFFE0000FFFFFE000024297DA82B>I<00007FF003000007FFFE0F00001FFFFF9F00007FF0
0FFF0000FF8003FF0003FE0000FF0007FC00007F000FF800003F000FF000001F001FE000001F00
3FE000000F003FC000000F007FC0000007007FC0000007007FC000000700FF8000000000FF8000
000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000
FF8000000000FF8003FFFFF8FF8003FFFFF87FC003FFFFF87FC00001FF007FC00001FF003FC000
01FF003FE00001FF001FE00001FF000FF00001FF000FF80001FF0007FC0001FF0003FE0003FF00
00FF8003FF00007FF01FFF00001FFFFF3F000007FFFE1F0000007FF007002D297CA836>I<FFFF
FEFFFFFEFFFFFE01FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF
0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF
0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF00FFFFFEFFFF
FEFFFFFE17297FA81A>73 D<FFFFFE0000FFFFFE0000FFFFFE000003FE00000003FE00000003FE
00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003
FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE000000
03FE00000003FE00000003FE00000003FE0001C003FE0001C003FE0001C003FE0001C003FE0003
C003FE00038003FE00038003FE00078003FE00078003FE000F8003FE000F8003FE001F8003FE00
7F8003FE01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF0022297DA829>76 D<FFFF0000003FFFC0FF
FE007003FFFFC03A297DA841>I<0000FFE000000007FFFC0000003FC07F8000007F001FC00001
FC0007F00003F80003F80007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC00000
7F803FC000007F807FC000007FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF
8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF800000
3FE0FF8000003FE0FF8000003FE07F8000003FC07FC000007FC07FC000007FC03FC000007F803F
C000007F801FE00000FF001FE00000FF000FF00001FE0007F00001FC0003F80003F80001FC0007
F00000FF001FE000003FC07F8000000FFFFE00000000FFE000002B297CA834>79
D<00FF806003FFF0E00FFFFFE01FC0FFE03F001FE03E0007E07E0003E07C0003E0FC0001E0FC00
01E0FC0000E0FE0000E0FF0000E0FF800000FFF80000FFFFC0007FFFF8007FFFFE003FFFFF801F
FFFFC00FFFFFC007FFFFE001FFFFF0003FFFF00003FFF800001FF800000FF8000007F8E00003F8
E00001F8E00001F8E00001F8F00001F8F00001F0F80003F0FC0003E0FF0007E0FFE01FC0FFFFFF
80E1FFFE00C03FF8001D297CA826>83 D<FFFFF801FFFCFFFFF801FFFCFFFFF801FFFC03FE0000
070003FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003
FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE0000
070003FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003
FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE0000070003FE0000
070003FE00000F0001FE00000E0001FF00000E0000FF00001E0000FF80003C00007F8000780000
3FE001F800001FF807F0000007FFFFC0000001FFFF800000003FFC00002E297DA835>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 /Fo 33 91 df<001C0038007000E001E001C00380070007000E000E001C00
1C003C0038003800380070007000700070006000E000E000E000E000E000E000E000E000E000E0
0060006000700070003000380018001C000E0006000E2A7C9E10>40 D<01C000C000E000700070
003800380018001C001C001C001C001C001C000C001C001C001C001C001C001C001C0018003800
38003800380070007000E000E000E001C001C00380070007000E001C0038007000E0000E2A809E
10>I<3C3C7C7C3C0C1C18383870E040060D7E840C>44 D<7FF0FFE0FFE00C037F890E>I<7878F8
F87005057D840C>I<00F80003FE00070E000E07001C07001C07803C0780380780780780780780
780780780780F00F00F00F00F00F00F00F00F00F00F00E00E01E00E01E00E01C00E01C00E03800
70780078F0003FE0001F8000111B7C9A15>48 D<0010007003F01FF01C70007000F000E000E000
E000E000E001E001C001C001C001C001C003C0038003800380038003800780FFF8FFF80D1B7C9A
15>I<00FE0003FF00078F800F07C00F03C00F03C00F0780000780000F80001F00003E0003FC00
03F800001C00000E00000F00000F00000F00000F00780F00F80F00F81F00F81E00F03C00F07C00
7FF0001FC000121B7D9A15>51 D<07018007FF8007FF0007FC000600000E00000C00000C00000C
00000C00000DF8001FFE001F1E001C0F00180700000700000780000F80000F00F00F00F00F00F0
1F00F01E00E03C0070F8007FF0001FC000111B7D9A15>53 D<1800003FFFC03FFFC03FFFC07003
80600700600E00C00C00001C0000380000700000E00000C00001C0000380000380000780000700
000F00000F00000E00001E00001E00001E00001E00003E00003C00001C0000121C7B9B15>55
D<00FE0003FF0007C7800F03800E03C00E03C01E03801E03801F07801F8F000FFE000FFC0003F8
0007FE001EFE003C3F00781F00700F00F00700E00700E00700E00700F00E00701E007C7C003FF0
000FC000121B7D9A15>I<01F80007FE000F8E001E07003C07003C07807C078078078078078078
0780780F80780F80780F00781F00383F003FFF001FEF00021E00001E00001C00F03C00F03800F0
7800E0F000E3E000FF80003E0000111B7C9A15>I<00007000000070000000F0000000F0000001
F0000001F80000037800000378000006780000067800000C7800000C3C0000183C0000183C0000
303C0000303C0000603C0000601E0000FFFE0000FFFE0001801E0001801E0003001F0003000F00
07000F000F000F007FC0FFF0FFC0FFF01C1C7F9B1F>65 D<000FF030003FFC7000FC0EE003F007
E007C003E00F8001E01F0001E01E0000E03C0000C03C0000C0780000C07800000078000000F800
0000F0000000F0000000F0000000F0000000F0000380F000030078000300780007003C000E003E
001C001F003C000FC0F00003FFE00000FF00001C1C7C9B1E>67 D<0FFFFC000FFFFF8000F007C0
00F001E000F000F000F0007000F0007801F0007801E0003801E0003801E0003801E0003C01E000
3803E0003803C0007803C0007803C0007803C0007003C000F007C000E0078001E0078001C00780
03800780078007800E000F807C00FFFFF000FFFFC0001E1C7E9B20>I<0FFFFFE00FFFFFE000F0
03E000F001C000F000C000F000C000F000C001F060C001E060C001E060C001E0600001E1E00001
FFE00003FFC00003C1C00003C0C00003C0C00003C0C0C003C0C18007C001800780018007800300
078003000780070007800E000F803E00FFFFFE00FFFFFC001B1C7E9B1C>I<0FFFFFC00FFFFFC0
00F007C000F0038000F0018000F0018000F0018001F0018001E0618001E0618001E0600001E0E0
0001E1E00003FFC00003FFC00003C1C00003C0C00003C0C00003C0C00007C18000078000000780
00000780000007800000078000000F800000FFFC0000FFF800001A1C7E9B1B>I<000FF030003F
FC7000FC0EE003F007E007C003E00F8001E01F0001E01E0000E03C0000C03C0000C0780000C078
00000078000000F8000000F0000000F0000000F000FFF0F000FFF0F0000F80F0000F8078000F00
78000F003C000F003E001F001F001F000FC07F0003FFF60000FF82001C1C7C9B21>I<0FFF9FFE
0FFF3FFE00F003C000F003C000F003C000F003C000F007C001F007C001E0078001E0078001E007
8001E0078001FFFF8003FFFF8003C00F0003C00F0003C00F0003C00F0003C01F0007C01F000780
1E0007801E0007801E0007801E0007803E000F803E00FFF3FFE0FFF3FFC01F1C7E9B1F>I<0FFF
800FFF8000F00000F00000F00000F00000F00001F00001E00001E00001E00001E00001E00003E0
0003C00003C00003C00003C00003C00007C0000780000780000780000780000780000F8000FFF8
00FFF800111C7F9B0F>I<0FFFC00FFFC000F00000F00000F00000F00000F00001F00001E00001
E00001E00001E00001E00003E00003C00003C00003C00003C00603C00C07C00C07800C07801C07
80180780380780780F81F8FFFFF0FFFFF0171C7E9B1A>76 D<0FFC000FFC0FFC000FFC00FC001F
8000FC001F8000FC00378000DE00378000DE006F8001DE006F80019E00CF00019E00CF00019E01
8F00018F018F00018F031F00038F031F00030F061E00030F061E0003078C1E0003078C1E000307
983E000707983E000607B03C000607B03C000603E03C000603E03C000603C07C001E03C07C00FF
E387FFC0FFC387FF80261C7E9B26>I<0FF80FFE0FF80FFE00FC01E000FC00C000FE00C000DE00
C000DE01C001DF01C0018F0180018F8180018781800187C1800187C3800383C3800303E3000301
E3000301F3000300F3000300FF000700FF0006007E0006007E0006003E0006003E0006001E001E
001E00FFE01C00FFC00C001F1C7E9B1F>I<0007F000003FFC0000F81E0001E007000380038007
0003C00E0001C01E0001E03C0001E03C0000E0780000E0780000F0780000E0F00001E0F00001E0
F00001E0F00001E0F00003C0F00003C0F00007807800078078000F0038001E003C003C001E0078
000F81F00003FFC00000FE00001C1C7C9B20>I<0FFFFC000FFFFF0000F00F8000F0038000F003
C000F001C000F001C001F003C001E003C001E003C001E0038001E0078001E00F0003E03E0003FF
F80003FFE00003C0000003C0000003C0000007C00000078000000780000007800000078000000F
8000000F800000FFF80000FFF000001A1C7E9B1C>I<0FFFF8000FFFFE0000F00F8000F0038000
F003C000F001C000F001C001F003C001E003C001E003C001E0078001E00F0001E03E0003FFF800
03FFF80003C0FC0003C03C0003C03C0003C03E0007C03C0007803C0007803C0007803C0007803C
0007803C380F803E70FFF81FF0FFF00FE01D1C7E9B1F>82 D<007F0C01FFDC03C1F80780780F00
380E00380E00381E00381E00001F00001F80000FF8000FFF0007FFC001FFE0003FE00003E00001
E00000E00000E06000E06000E06001E07001C0780380FE0F80FFFE00C3F800161C7E9B17>I<1F
FFFFF03FFFFFF03C0781F038078060700780606007806060078060600F8060C00F0060C00F0060
000F0000000F0000000F0000001F0000001E0000001E0000001E0000001E0000001E0000003E00
00003C0000003C0000003C0000003C0000003C0000007C00001FFFE0001FFFE0001C1C7C9B1E>
I<FFF8FFE0FFF8FFE00F001E000F000C000F000C000F000C000F001C001F001C001E0018001E00
18001E0018001E0018001E0038003E0038003C0030003C0030003C0030003C0030003C0070007C
006000780060007800E0003800C0003C01C0003E0380001F0F00000FFE000003F800001B1C7A9B
1F>I<FFF01FF8FFF01FF80F0007C00F0003000F0007000780060007800C0007800C0007801800
0780180003C0300003C0300003C0600003C0600003C0C00003E0C00001E1800001E3800001E300
0001E7000001F6000000FE000000FC000000F8000000F8000000F0000000700000006000001D1C
7B9B1F>I<07FF8FFE07FF8FFE007C03E0003C0380003E0300001E0600001E0E00001F1C00000F
1800000FB0000007E0000007E0000003C0000003E0000003E0000007F000000EF000000CF00000
18F8000030780000707C0000E03C0000C03E0001801E0003801F000F801F00FFE07FF0FFE0FFF0
1F1C7F9B1F>88 D<FFF01FF8FFF01FF80F8007C00F8007000780060007C00C0003C0180003E038
0003E0300001E0600001F0C00000F1C00000F98000007B0000007E0000007E0000003C0000003C
00000038000000780000007800000078000000780000007800000070000000F000000FFF00000F
FF00001D1C7B9B1F>I<03FFFF8007FFFF0007E01F0007803E0007007C00060078000600F8000E
01F0000C03E0000C07C0000007C000000F8000001F0000003E0000007C0000007C000000F80C00
01F00C0003E0180003C0180007C018000F8038001F0030003E0070003E00F0007C03F000FFFFE0
00FFFFE000191C7E9B19>I E /Fp 80 125 df<003F1F8001FFFFC003C3F3C00783E3C00F03E3
C00E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC00FFFFFC000E01C0000E01
C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E
01C0000E01C0000E01C0007F87FC007F87FC001A1D809C18>11 D<003F0001FF8003C3C00783C0
0F03C00E03C00E00000E00000E00000E00000E0000FFFFC0FFFFC00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F87F87F8151D80
9C17>I<003FC001FFC003C3C00783C00F03C00E01C00E01C00E01C00E01C00E01C00E01C0FFFF
C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C07FCFF87FCFF8151D809C17>I<003F83F00001FFDFF80003E1FC3C000781F83C
000F01F03C000E01E03C000E00E000000E00E000000E00E000000E00E000000E00E00000FFFFFF
FC00FFFFFFFC000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00
E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007F
C7FCFF807FC7FCFF80211D809C23>I<7070F8F8FCFCFCFC7C7C0C0C0C0C1C1C181838387070F0
F060600E0D7F9C15>34 D<00030180000301800003018000070380000603000006030000060300
000E0700000C0600000C0600000C0600000C0600001C0E00FFFFFFFCFFFFFFFC00301800003018
00003018000070380000603000006030000060300000603000FFFFFFFCFFFFFFFC01C0E0000180
C0000180C0000180C0000381C00003018000030180000301800007038000060300000603000006
0300001E257E9C23>I<70F8FCFC7C0C0C1C183870F060060D7D9C0C>39
D<01C00380038007000E000C001C001800380038007000700070007000E000E000E000E000E000
E000E000E000E000E000E000E000E000E00070007000700070003800380018001C000C000E0007
000380038001C00A2A7D9E10>I<E0007000700038001C000C000E000600070007000380038003
80038001C001C001C001C001C001C001C001C001C001C001C001C001C001C00380038003800380
0700070006000E000C001C00380070007000E0000A2A7E9E10>I<018001C0018001806186F99F
7DBE1FF807E007E01FF87DBEF99F61860180018001C0018010127E9E15>I<70F8F8F878181818
383070E060050D7D840C>44 D<FFE0FFE0FFE00B0380890E>I<70F8F8F87005057D840C>I<0003
0003000700060006000E000C001C0018001800380030003000700060006000E000C000C001C001
800380030003000700060006000E000C000C001C001800180038003000700060006000E000C000
C00010297E9E15>I<07E00FF01C38381C781E700E700EF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00F700E700E781E381C1C380FF007E0101B7E9A15>I<030007003F00FF00
C70007000700070007000700070007000700070007000700070007000700070007000700070007
000700FFF8FFF80D1B7C9A15>I<0FE03FF878FC603EF01EF81FF80FF80F700F000F001F001E00
3E003C007800F001E001C0038007000E031C0338037006FFFEFFFEFFFE101B7E9A15>I<0FE03F
F8387C783E7C1E781E781E001E003C003C00F807F007E00078003C001E000F000F000F700FF80F
F80FF81EF01E787C3FF80FE0101B7E9A15>I<001C00001C00003C00007C00007C0000DC0001DC
00039C00031C00071C000E1C000C1C00181C00381C00301C00601C00E01C00FFFFC0FFFFC0001C
00001C00001C00001C00001C00001C0001FFC001FFC0121B7F9A15>I<301C3FFC3FF83FE03000
3000300030003000300037E03FF83C3C381E301E000F000F000F000FF00FF00FF00FF01E703E78
7C3FF80FE0101B7E9A15>I<01F807FC0F8E1E1E3C1E381E781E78007000F080F7F8FFFCFC1CF8
1EF80FF00FF00FF00FF00FF00F700F700F781E381E1E3C0FF807E0101B7E9A15>I<6000007FFF
807FFF807FFF80600700C00600C00E00C01C0000380000300000700000600000E00000C00001C0
0001C00003C0000380000380000380000780000780000780000780000780000780000780000780
00111C7E9B15>I<07E01FF83C3C381E701E700E700E780E7C1E7F3C3FF81FF00FF01FFC3DFC78
7E703FF00FE00FE007E007E007F00E781E3C3C1FF807E0101B7E9A15>I<07E01FF83C38781C78
1EF00EF00EF00FF00FF00FF00FF00FF01F781F383F3FFF1FEF010F000E001E781E781C783C7878
78F03FE01F80101B7E9A15>I<70F8F8F870000000000000000070F8F8F87005127D910C>I<70F8
F8F870000000000000000070F8F8F878181818383070E060051A7D910C>I<FFFFFFE0FFFFFFE0
0000000000000000000000000000000000000000000000000000000000000000FFFFFFE0FFFFFF
E01B0C7E8F20>61 D<00060000000F0000000F0000000F0000001F8000001F8000001F8000003F
C0000033C0000033C0000073E0000061E0000061E00000E1F00000C0F00000C0F00001C0F80001
80780001FFF80003FFFC0003003C0003003C0007003E0006001E0006001E001F001F00FFC0FFF0
FFC0FFF01C1C7F9B1F>65 D<FFFFC0FFFFF00F00F80F003C0F001C0F001E0F001E0F001E0F001E
0F001C0F003C0F00780FFFF00FFFE00F00F80F003C0F001E0F001E0F000F0F000F0F000F0F000F
0F000F0F001E0F003E0F007CFFFFF8FFFFC0181C7E9B1D>I<003FC18001FFF18003F07B800FC0
1F801F000F801E0007803C0003807C0003807800038078000180F0000180F0000000F0000000F0
000000F0000000F0000000F0000000F000000078000180780001807C0001803C0003801E000300
1F0007000FC00E0003F03C0001FFF000003FC000191C7E9B1E>I<FFFFC000FFFFF0000F007C00
0F001E000F000F000F0007000F0003800F0003C00F0003C00F0001C00F0001E00F0001E00F0001
E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C00F0003C00F0003800F00
07800F000F000F001E000F007C00FFFFF000FFFFC0001B1C7E9B20>I<FFFFFCFFFFFC0F007C0F
001C0F000C0F000E0F00060F03060F03060F03060F03000F07000FFF000FFF000F07000F03000F
03000F03030F03030F00030F00060F00060F00060F000E0F001E0F007CFFFFFCFFFFFC181C7E9B
1C>I<FFFFF8FFFFF80F00780F00380F00180F001C0F000C0F000C0F030C0F030C0F03000F0300
0F07000FFF000FFF000F07000F03000F03000F03000F03000F00000F00000F00000F00000F0000
0F0000FFF800FFF800161C7E9B1B>I<003FC18001FFF18003F07B800FC01F801F000F801E0007
803C0003807C0003807800038078000180F0000180F0000000F0000000F0000000F0000000F000
0000F000FFF0F000FFF078000780780007807C0007803C0007801E0007801F0007800FC00F8003
F03F8001FFFB80003FE1801C1C7E9B21>I<FFF3FFC0FFF3FFC00F003C000F003C000F003C000F
003C000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC000FFFFC000F003C00
0F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
000F003C00FFF3FFC0FFF3FFC01A1C7E9B1F>I<FFF0FFF00F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF0FFF00C1C
7F9B0F>I<FFF07FE0FFF07FE00F003E000F003C000F0078000F0070000F00E0000F01C0000F03
80000F0700000F0E00000F1E00000F3F00000F7F80000FFF80000FE7C0000FC3C0000F83E0000F
01F0000F00F0000F00F8000F007C000F007C000F003E000F001E000F001F00FFF07FF0FFF07FF0
1C1C7E9B20>75 D<FFF800FFF8000F00000F00000F00000F00000F00000F00000F00000F00000F
00000F00000F00000F00000F00000F00000F00000F00180F00180F00180F00180F00380F00300F
00700F00F00F01F0FFFFF0FFFFF0151C7E9B1A>I<FF8000FF80FFC001FF800FC001F8000FC001
F8000DE00378000DE00378000DE00378000CF00678000CF00678000CF00678000C780C78000C78
0C78000C780C78000C3C1878000C3C1878000C3C1878000C1E3078000C1E3078000C1E3078000C
0F6078000C0F6078000C0F6078000C07C078000C07C078000C07C078001E03807800FFC387FF80
FFC387FF80211C7E9B26>I<FF00FFC0FF80FFC00FC01E000FC00C000FE00C000DE00C000DF00C
000CF80C000CF80C000C7C0C000C3C0C000C3E0C000C1E0C000C1F0C000C0F8C000C078C000C07
CC000C03CC000C03EC000C01FC000C00FC000C00FC000C007C000C007C000C003C001E001C00FF
C01C00FFC00C001A1C7E9B1F>I<003F800001FFF00003E0F80007001C000E000E001C0007003C
00078038000380780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0
F00001E0F00001E0780003C0780003C0380003803C0007801E000F000E000E0007803C0003E0F8
0001FFF000003F80001B1C7E9B20>I<FFFF80FFFFE00F00F00F00380F003C0F001E0F001E0F00
1E0F001E0F001E0F001E0F003C0F00380F00F00FFFE00FFF800F00000F00000F00000F00000F00
000F00000F00000F00000F00000F0000FFF000FFF000171C7E9B1C>I<003F800001FFF00003E0
F80007803C000E000E001C0007003C00078038000380780003C0780003C0F00001E0F00001E0F0
0001E0F00001E0F00001E0F00001E0F00001E0F00001E0780003C0780003C0380003803C1F0780
1C3F87000E398E0007B0FC0003F8F80001FFF000003FE020000060200000602000007060000038
E000003FC000003FC000001FC000000F001B247E9B20>I<FFFF0000FFFFE0000F00F0000F0038
000F003C000F001E000F001E000F001E000F001E000F001E000F003C000F0038000F00F0000FFF
E0000FFFC0000F03F0000F00F0000F00F8000F0078000F0078000F0078000F0078000F0078000F
0078000F007C300F007E70FFF03FE0FFF00FC01C1C7E9B1F>I<07F1801FFD803C1F8070078070
0380E00380E00180E00180F00000F80000FE00007FE0003FFC001FFE000FFF0000FF80000F8000
07C00003C00001C0C001C0C001C0E001C0E00380F00780FE0F00DFFE00C7F800121C7E9B17>I<
7FFFFFC07FFFFFC0780F03C0700F01C0600F00C0E00F00E0C00F0060C00F0060C00F0060C00F00
60000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F000003FFFC0003FFFC001B1C7F9B1E
>I<FFF0FFC0FFF0FFC00F001E000F000C000F000C000F000C000F000C000F000C000F000C000F
000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C00
0F000C000F000C000F001C00078018000780380003C0700001F0F00000FFC000003F80001A1C7E
9B1F>I<FFE01FF0FFE01FF01F0007800F0003000F800700078006000780060007C00E0003C00C
0003C00C0001E0180001E0180001E0180000F0300000F0300000F870000078600000786000007C
E000003CC000003CC000001F8000001F8000001F8000000F0000000F0000000F0000000600001C
1C7F9B1F>I<FFE0FFE1FFFFE0FFE1FF1F001E007C0F001E00380F003F00300F003F003007803F
00600780678060078067806007C06780E003C0C3C0C003C0C3C0C003C0C3C0C001E1C3E18001E1
81E18001E181E18000F181E30000F300F30000F300F30000FB00F700007E007E00007E007E0000
7E007E00003E007C00003C003C00003C003C00001C0038000018001800281C7F9B2B>I<FEFEC0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07
297C9E0C>91 D<18183C3C383870706060E0E0C0C0C0C0F8F8FCFCFCFC7C7C38380E0D7B9C15>
I<FEFE060606060606060606060606060606060606060606060606060606060606060606060606
06FEFE0729809E0C>I<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 /Fq
61 123 df<001FF3F800FFFFFE03F87F3E07E07E3E0FC07E3E0F807C1C0F807C000F807C000F80
7C000F807C000F807C00FFFFFFC0FFFFFFC00F807C000F807C000F807C000F807C000F807C000F
807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C007FE1FFC0
7FE1FFC01F1D809C1C>11 D<7C0F80FE1FC0FF1FE0FF1FE0FF1FE0FF1FE07F0FE00300600700E0
0600C00E01C01C03803C0780780F00300600130F7E9C19>34 D<7CFEFFFFFFFF7F0307060E1C3C
7830080F7D9C0D>39 D<007000E001C003C007800F000F001E001E003C003C007C007800780078
00F800F800F000F000F000F000F000F000F000F800F8007800780078007C003C003C001E001E00
0F000F00078003C001C000E000700C297D9E13>I<E000700038003C001E000F000F0007800780
03C003C003E001E001E001E001F001F000F000F000F000F000F000F000F001F001F001E001E001
E003E003C003C0078007800F000F001E003C0038007000E0000C297D9E13>I<7CFEFFFFFFFF7F
0307060E1C3C7830080F7D860D>44 D<FFE0FFE0FFE0FFE00B047F8A10>I<0003800003800007
80000780000700000F00000F00001E00001E00001C00003C00003C0000380000780000780000F0
0000F00000E00001E00001E00001C00003C00003C0000380000780000780000F00000F00000E00
001E00001E00001C00003C00003C0000780000780000700000F00000F00000E00000E000001129
7D9E18>47 D<00600001E0000FE000FFE000F3E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E0007FFF807FFF80111B7D9A18>49 D<07F8003FFF00787F80F81FC0FC0FC0FC0FE0FC0FE0FC
07E07807E0000FE0000FE0000FC0001F80003F00003E00007C0000F00001E00003C0600780600F
00601C00E03FFFC07FFFC0FFFFC0FFFFC0FFFFC0131B7E9A18>I<00038000000380000007C000
0007C0000007C000000FE000000FE000001FF000001BF000001BF0000031F8000031F8000061FC
000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF8003001F8003001F800600
0FC006000FC00E000FE00C0007E0FFC07FFEFFC07FFE1F1C7E9B24>65 D<FFFFF800FFFFFF000F
C01F800FC00FC00FC00FC00FC00FE00FC00FE00FC00FE00FC00FE00FC00FE00FC00FC00FC01F80
0FFFFF000FFFFE000FC03F800FC00FC00FC007E00FC007E00FC007F00FC007F00FC007F00FC007
F00FC007F00FC007E00FC00FE00FC01FC0FFFFFF80FFFFFC001C1C7E9B22>I<001FF06000FFFC
E003FC1FE00FE007E01FC003E01F8001E03F0000E07F0000E07F0000E07E000060FE000060FE00
0000FE000000FE000000FE000000FE000000FE000000FE0000007E0000607F0000607F0000603F
0000E01F8000C01FC001C00FE0078003FC1F0000FFFC00001FF0001B1C7D9B22>I<FFFFF800FF
FFFF000FC01FC00FC007E00FC003F00FC001F80FC001F80FC000FC0FC000FC0FC000FC0FC000FE
0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FC0FC000FC0FC000
FC0FC001F80FC001F80FC003F00FC007E00FC01FC0FFFFFF00FFFFF8001F1C7E9B25>I<FFFFFF
00FFFFFF000FC01F000FC007000FC003000FC003800FC003800FC181800FC181800FC181800FC1
80000FC380000FFF80000FFF80000FC380000FC180000FC180000FC180600FC180600FC000E00F
C000C00FC000C00FC001C00FC001C00FC003C00FC00F80FFFFFF80FFFFFF801B1C7E9B1F>I<FF
FFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003800FC001800FC181800FC18180
0FC180000FC180000FC380000FFF80000FFF80000FC380000FC180000FC180000FC180000FC180
000FC000000FC000000FC000000FC000000FC000000FC00000FFFF0000FFFF0000191C7E9B1E>
I<001FF81800FFFE3803FC0FF807F003F80FC000F81F8000783F8000787F0000387F0000387E00
0018FE000018FE000000FE000000FE000000FE000000FE000000FE007FFFFE007FFF7E0001F87F
0001F87F0001F83F8001F81F8001F80FE001F807F003F803FE07F800FFFE78001FF818201C7D9B
26>I<FFFC3FFFFFFC3FFF0FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F0
0FC003F00FC003F00FC003F00FFFFFF00FFFFFF00FC003F00FC003F00FC003F00FC003F00FC003
F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F0FFFC3FFFFFFC3FFF201C
7E9B25>I<FFFFFFFF07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0
07E007E007E007E007E007E007E007E007E0FFFFFFFF101C7F9B12>I<FFFC07FFFFFC07FF0FC0
00E00FC003C00FC007800FC00F000FC01E000FC03C000FC070000FC0E0000FC3C0000FC7C0000F
CFE0000FDFF0000FFFF0000FF3F8000FE1FC000FC1FC000FC0FE000FC07F000FC03F000FC03F80
0FC01FC00FC00FE00FC00FE00FC007F0FFFC3FFFFFFC3FFF201C7E9B25>75
D<FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
000FC0000FC0000FC0000FC0000FC0030FC0030FC0030FC0070FC0070FC0060FC00E0FC01E0FC0
7EFFFFFEFFFFFE181C7E9B1D>I<FFC00003FFFFE00007FF0FE00007F00DF0000DF00DF0000DF0
0DF0000DF00CF80019F00CF80019F00C7C0031F00C7C0031F00C3E0061F00C3E0061F00C1F00C1
F00C1F00C1F00C1F00C1F00C0F8181F00C0F8181F00C07C301F00C07C301F00C03E601F00C03E6
01F00C01FC01F00C01FC01F00C01FC01F00C00F801F00C00F801F0FFC0701FFFFFC0701FFF281C
7E9B2D>I<FFE003FFFFF003FF0FF800300FF800300DFC00300CFE00300CFF00300C7F80300C3F
80300C1FC0300C0FE0300C07F0300C07F8300C03FC300C01FC300C00FE300C007F300C007FB00C
003FF00C001FF00C000FF00C0007F00C0003F00C0003F00C0001F00C0000F0FFC00070FFC00030
201C7E9B25>I<003FE00001FFFC0003F07E000FC01F801F800FC01F0007C03F0007E07F0007F0
7E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003
F87E0003F07E0003F07F0007F03F0007E03F800FE01F800FC00FC01F8003F07E0001FFFC00003F
E0001D1C7D9B24>I<FFFFF800FFFFFE000FC03F800FC01F800FC00FC00FC00FE00FC00FE00FC0
0FE00FC00FE00FC00FE00FC00FE00FC00FC00FC01F800FC03F800FFFFE000FFFF8000FC000000F
C000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000FFFC0000
FFFC00001B1C7E9B21>I<003FE00001FFFC0003F07E000FC01F801F800FC01F800FC03F0007E0
7F0007F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003
F8FE0003F87E0003F07E0003F07F0007F03F0F87E03FBFCFE01FB8EFC00FF07F8003F87E0001FF
FC00003FFC0800003E1800001FF800001FF800001FF800001FF000000FF000000FE0000007C01D
247D9B24>I<FFFFF00000FFFFFE00000FC03F00000FC01F80000FC00FC0000FC00FE0000FC00F
E0000FC00FE0000FC00FE0000FC00FE0000FC00FC0000FC01F80000FC03F00000FFFFE00000FFF
F800000FC0FC00000FC07E00000FC03E00000FC03F00000FC03F00000FC03F00000FC03F80000F
C03F80000FC03F80000FC03FC1800FC03FE380FFFC1FFF00FFFC07FE00211C7E9B24>I<07F860
1FFFE03E0FE07803E07001E0F000E0F00060F80060F80000FE0000FFF0007FFE007FFF803FFFC0
1FFFE007FFE0007FF00007F00001F00001F0C000F0C000F0E000F0E001E0F001E0FE07C0FFFF80
C3FE00141C7D9B1B>I<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060E01F8070C01F8030C0
1F8030C01F8030C01F8030001F8000001F8000001F8000001F8000001F8000001F8000001F8000
001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800007FFFE
0007FFFE001C1C7E9B21>I<FFFC03FFFFFC03FF0FC000300FC000300FC000300FC000300FC000
300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC0
00300FC000300FC000300FC000300FC000300FC0007007E0006007E000E003F001C001FC0F8000
7FFF00000FF800201C7E9B25>I<FFFC7FFE0FFCFFFC7FFE0FFC0FC007E000C00FC007F000C00F
E003F001C007E003F0018007E007F8018003F007F8030003F007F8030003F80CFC070001F80CFC
060001F81CFE060001FC187E0E0000FC187E0C0000FC387F0C00007E303F1800007E303F180000
7F601FB800003F601FB000003FE01FF000003FC00FF000001FC00FE000001FC00FE000000F8007
C000000F8007C000000F0003C0000007000380000007000380002E1C7F9B31>87
D<7FFE1FFE007FFE1FFE0007F001800003F803800001FC07000000FC06000000FE0C0000007F1C
0000003F380000003FB00000001FE00000000FE00000000FE000000007F000000003F800000007
F80000000FFC0000000CFE000000187E000000387F000000703F800000601F800000C01FC00001
C00FE000018007F000030007F000FFF03FFF80FFF03FFF80211C7F9B24>I<FFFC01FF80FFFC01
FF800FE000380007F000300003F800700003F800600001FC00C00000FE01C00000FE018000007F
030000003F870000003F860000001FCE0000000FFC0000000FF800000007F800000003F0000000
03F000000003F000000003F000000003F000000003F000000003F000000003F000000003F00000
0003F00000003FFF0000003FFF0000211C7F9B24>I<7FFFFC7FFFFC7E01FC7803F87007F0E007
F0E00FE0C01FE0C01FC0C03F80003F80007F0000FE0000FE0001FC0001FC0003F80607F00607F0
060FE0061FE00E1FC00E3F801C3F801C7F003CFE00FCFFFFFCFFFFFC171C7D9B1D>I<0C01801E
03C03C0780380700700E00600C00E01C00C01800FE1FC0FF1FE0FF1FE0FF1FE0FF1FE07F0FE03E
07C0130F7D9C19>92 D<04000E001F003F807BC0E0E0C0600B077A9C18>94
D<0FFC003FFF003E1F803E0FC03E07C01C07C00007C003FFC01FFFC07F87C07F07C0FE07C0FC07
C0FC07C0FE0FC07E3FE03FFBF80FE1F815127F9117>97 D<FF0000FF00001F00001F00001F0000
1F00001F00001F00001F00001F00001F00001F3FC01FFFF01FE1F81F80FC1F007C1F007E1F007E
1F007E1F007E1F007E1F007E1F007E1F007E1F00FC1F80FC1FE1F81CFFF0183FC0171D7F9C1B>
I<03FC001FFF003F1F007E1F007E1F00FC0E00FC0000FC0000FC0000FC0000FC0000FC0000FC00
007E01807F03803F87001FFE0003F80011127E9115>I<000FF0000FF00001F00001F00001F000
01F00001F00001F00001F00001F00001F007F9F01FFFF03F0FF07E03F07E01F0FC01F0FC01F0FC
01F0FC01F0FC01F0FC01F0FC01F0FC01F07C01F07E03F03F0FF01FFFFE07F1FE171D7E9C1B>I<
03FC000FFF003F0F803E07C07E03C07C03E0FC03E0FFFFE0FFFFE0FC0000FC0000FC00007C0000
7E00603F00E01FC3C00FFF8003FE0013127F9116>I<007F0001FFC003E7C007C7C00FC7C00F83
800F80000F80000F80000F80000F8000FFF800FFF8000F80000F80000F80000F80000F80000F80
000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800121D809C0F>I<07
F9F01FFFF83E1F787C0FB87C0F807C0F807C0F807C0F807C0F803E1F003FFE0037F80070000070
00007800003FFF803FFFE01FFFF07FFFF0F801F8F000F8F00078F00078F800F87E03F03FFFE007
FF00151B7F9118>I<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F0000
1F00001F1FE01F7FF01FF1F81FC0F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8
1F00F81F00F81F00F81F00F8FFE7FFFFE7FF181D7F9C1B>I<1E003F007F007F007F003F001E00
00000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F
001F00FFE0FFE00B1E7F9D0E>I<00F801FC01FC01FC01FC01FC00F80000000000000000000003
FC03FC007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C
707CF87CF8FCF9F87FF03F800E26839D0F>I<FF0000FF00001F00001F00001F00001F00001F00
001F00001F00001F00001F00001F0FF81F0FF81F03801F0F001F1E001F3C001F78001FF8001FFC
001FFE001F3E001F1F001F1F801F0F801F07C01F03E0FFC7FCFFC7FC161D7F9C19>I<FF00FF00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F00FFE0FFE00B1D7F9C0E>I<FF1FE0FF00FF7FF3FF801FF1FF8FC01FC0
FE07C01F80FC07C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F
00F807C01F00F807C01F00F807C01F00F807C01F00F807C0FFE7FF3FF8FFE7FF3FF825127F9128
>I<FF1FE0FF7FF01FF1F81FC0F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>I<01FC000FFF801F07C03E03E07C01F0
7C01F0FC01F8FC01F8FC01F8FC01F8FC01F8FC01F87C01F07C01F03E03E01F07C00FFF8001FC00
15127F9118>I<FF3FC0FFFFF01FE3F81F80FC1F00FC1F00FE1F007E1F007E1F007E1F007E1F00
7E1F007E1F00FE1F00FC1F81FC1FE3F81FFFF01F3FC01F00001F00001F00001F00001F00001F00
00FFE000FFE000171A7F911B>I<FE3E00FEFF801EEF801FCF801F8F801F87001F00001F00001F
00001F00001F00001F00001F00001F00001F00001F0000FFF000FFF00011127F9114>114
D<1FF87FF87078E018E018F000FF80FFF07FF83FF80FFC007CC03CE01CE01CF878FFF8CFE00E12
7E9113>I<030003000300070007000F000F003F00FFFCFFFC1F001F001F001F001F001F001F00
1F001F001F0C1F0C1F0C1F0C1F9C0FF803F00E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F01F81F01F81F87F80FFFFF03FC
FF18127F911B>I<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001
F60001F60001FE0000FC0000FC0000780000780000300016127F9119>I<FF8FF8FEFF8FF8FE1F
03E0301F03E0301F83E0700F83F0600F86F06007C6F0C007CEF8C007EC79C003EC7D8003F83D80
01F83F0001F83F0001F01F0000F01E0000E00E0000E00E001F127F9122>I<FFC7FCFFC7FC1F81
800F838007C70003EE0001FC0001F80000F800007C0000FE0001DF00039F00070F800607C00C03
E0FF07FCFF07FC16127F9119>I<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003
E30003E30001F60001F60001FE0000FC0000FC00007800007800003000003000006000706000F8
E000C0C000E380007F00003E0000161A7F9119>I<3FFF803FFF803C3F80307F00707E0060FC00
61FC0063F80003F00007E1800FE1801FC1801F83803F03007F0700FE0F00FFFF00FFFF0011127F
9115>I E /Fr 32 122 df<000FE000007FF00000F8780001E0780003C0780007807800070030
0007000000070000000700000007000000070000000700000007000000FFFFF800FFFFF8000700
780007003800070038000700380007003800070038000700380007003800070038000700380007
0038000700380007003800070038000700380007003800070038007FE1FF807FE1FF80192380A2
1B>12 D<70F8FCFC7C0C0C0C1C18183870E0E0060F7C840E>44 D<018003800F80FF80F3800380
038003800380038003800380038003800380038003800380038003800380038003800380038003
8003800380038003800380FFFEFFFE0F217CA018>49 D<03F8000FFE001E1F00380F807007C078
07C07C07C07807C07807C00007C00007C0000780000F80001F00003E0003FC0003F800001E0000
0F000007800007C00003E00003E07003E0F803E0F803E0F803E0F803E0E007C07007C0780F803E
1F000FFE0003F80013227EA018>51 D<1801801E07801FFF801FFF001FFC001FF0001800001800
0018000018000018000018000019F8001FFE001F0F001E07801C03C01803C00001C00001E00001
E00001E00001E07001E0F001E0F001E0F001E0E003C0E003C0700780380F803E1F000FFC0007F0
0013227EA018>53 D<03F8000FFC001F1E003C07003807807803807003C0F003C0F001C0F001C0
F001E0F001E0F001E0F001E0F001E0F003E07803E07803E03C07E03E0FE01FFDE007F9E00081E0
0001C00003C00003C0000380780780780700780F00781E00787C003FF8000FE00013227EA018>
57 D<000180000003C0000003C0000003C0000007E0000007E0000007E000000FF000000CF000
000CF000001CF800001878000018780000383C0000303C0000303C0000601E0000601E0000601E
0000C00F0000C00F0000C00F0001FFFF8001FFFF8001800780030003C0030003C0030003C00600
01E0060001E0060001E00E0000F01F0001F0FFC00FFFFFC00FFF20237EA225>65
D<000FF030007FFC3000FC1E7003F0077007C003F00F8001F01F0001F01F0000F03E0000F03C00
00707C0000707C0000707C000030F8000030F8000030F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F80000307C0000307C0000307C0000303E0000703E0000601F0000E0
1F0000C00F8001C007C0038003F0070000FC1E00007FFC00000FF0001C247DA223>67
D<FFFC3FFFFFFC3FFF078001E0078001E0078001E0078001E0078001E0078001E0078001E00780
01E0078001E0078001E0078001E0078001E0078001E007FFFFE007FFFFE0078001E0078001E007
8001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0
078001E0078001E0078001E0FFFC3FFFFFFC3FFF20227EA125>72 D<FFFE0000FFFE0000078000
000780000007800000078000000780000007800000078000000780000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780018007
8001800780018007800180078003800780038007800300078007000780070007800F0007803F00
FFFFFF00FFFFFF0019227EA11E>76 D<FFC00003FFFFE00007FF07E00007E007E00007E006F000
0DE006F0000DE006F0000DE006780019E006780019E006780019E0063C0031E0063C0031E0063C
0031E0061E0061E0061E0061E0061E0061E0060F00C1E0060F00C1E006078181E006078181E006
078181E00603C301E00603C301E00603C301E00601E601E00601E601E00601E601E00600FC01E0
0600FC01E00600FC01E006007801E01F807801E0FFF0783FFFFFF0303FFF28227EA12D>I<FFFF
E00000FFFFF8000007803E000007800F00000780078000078007C000078003E000078003E00007
8003E000078003E000078003E000078003E000078007C000078007800007800F000007803E0000
07FFF8000007FFF000000780F8000007803C000007801E000007801E000007800F000007800F00
0007800F000007800F800007800F800007800F800007800F800007800F818007800FC180078007
C380FFFC07E700FFFC03FF00000000FE0021237EA124>82 D<07F0600FFE601E1FE03807E07003
E07001E0E000E0E000E0E00060E00060F00060F00000F800007C00007F00003FF0001FFE000FFF
8003FFC0007FC00007E00001E00001F00000F00000F0C00070C00070C00070E00070E000F0F000
E0F801E0FC01C0FF0780C7FF00C1FC0014247DA21B>I<7FFFFFF87FFFFFF87C0780F870078038
6007801860078018E007801CC007800CC007800CC007800CC007800CC007800C00078000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
8000000780000007800000078000000780000007800000078000000780000007800003FFFF0003
FFFF001E227EA123>I<1FF0003FFC003C3E003C0F003C0F00000700000700000F0003FF001FFF
003F07007C0700F80700F80700F00718F00718F00F18F81F187C3FB83FF3F01FC3C015157E9418
>97 D<03FE000FFF801F07803E07803C0780780000780000F00000F00000F00000F00000F00000
F00000F000007800007800C03C01C03E01801F87800FFF0003FC0012157E9416>99
D<0000E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E003F8E00FFEE01F0FE03E03E07C01E07800E07800E0F000E0F000E0F000E0F000E0F000
E0F000E0F000E07000E07801E07801E03C03E01F0FF00FFEFE03F0FE17237EA21B>I<01FC0007
FF001F0F803E03C03C01C07801E07801E0FFFFE0FFFFE0F00000F00000F00000F00000F0000078
00007800603C00E03E01C00F83C007FF0001FC0013157F9416>I<0000F003FBF807FFB80F1F38
1E0F003C07803C07803C07803C07803C07803C07803C07801E0F001F1E001FFC001BF800180000
1800001C00001FFF000FFFC03FFFF07C01F0700078F00078E00038E00038E00038F000787800F0
3F07E01FFFC003FE0015217F9518>103 D<0E0000FE0000FE00001E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E3F800EFFE00FE1E00F80F00F00700F0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
FFE7FFFFE7FF18237FA21B>I<1E003E003E003E001E0000000000000000000000000000000000
0E00FE00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FF
C0FFC00A227FA10E>I<01C003E003E003E001C00000000000000000000000000000000001E00F
E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E0F1E0F1C0F3C0FF803E000B2C82A10F>I<0E0000FE0000FE00001E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FFC0E0FFC0E07E0
0E07800E07000E1E000E3C000E78000EF8000FFC000FFC000F1E000E0F000E0F800E07800E03C0
0E03E00E01E00E01F0FFE3FEFFE3FE17237FA21A>I<0E00FE00FE001E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E00FFE0FFE00B237FA20E>I<0E3FC0FF00FEFFF3FFC0FFE0F783C01F807E
01E00F003C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E00
3800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0FF
E3FF8FFEFFE3FF8FFE27157F942A>I<0E3F80FEFFE0FFE1E01F80F00F00700F00700E00700E00
700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FFFFE7
FF18157F941B>I<01FC0007FF000F07801C01C03800E07800F0700070F00078F00078F00078F0
0078F00078F00078F000787000707800F03800E01C01C00F078007FF0001FC0015157F9418>I<
0E7EFEFFFFEF1F8F0F0F0F000F000E000E000E000E000E000E000E000E000E000E000E000E00FF
F0FFF010157F9413>114 D<1FD83FF87878F038E018E018F018F8007F807FE01FF003F8007CC0
3CC01CE01CE01CF03CF878FFF0CFE00E157E9413>I<060006000600060006000E000E000E001E
003E00FFF8FFF80E000E000E000E000E000E000E000E000E000E000E0C0E0C0E0C0E0C0E0C0F1C
073807F803E00E1F7F9E13>I<0E0070FE07F0FE07F01E00F00E00700E00700E00700E00700E00
700E00700E00700E00700E00700E00700E00700E00F00E00F00E01F00787F807FF7F01FC7F1815
7F941B>I<FFC3FEFFC3FE1E00F80E00700E00E00700C00700C00700C003818003818003C38001
C30001C30000E60000E60000E600007C00007C00007C0000380000380000300000300000700000
6000006000F0C000F1C000F380007F00003E0000171F7F941A>121 D E
/Fs 16 121 df<78FCFCFEFE7E06060606060E0C0C1C383870E0C007147A8512>44
D<00003FE0030001FFFC030007F01E07001F800787003E0001CF00FC0000EF01F800007F03F000
007F03E000003F07C000001F0FC000001F0F8000000F1F8000000F3F000000073F000000073E00
0000077E000000077E000000037E000000037C00000003FC00000000FC00000000FC00000000FC
00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000
7C000000007E000000037E000000037E000000033E000000033F000000073F000000061F800000
060F8000000E0FC000000C07C000001C03E000001803F000003801F800007000FC0000E0003F00
01C0001F8007800007F01F000001FFFC0000003FE00028337CB130>67 D<00003FF001800001FF
FC01800007F81F0380001FC0038380003F0001E780007C0000E78001F800007F8001F000003F80
03E000001F8007C000000F800FC000000F800F80000007801F80000007801F00000003803F0000
0003803E00000003807E00000003807E00000001807E00000001807C0000000180FC0000000000
FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000
000000FC0000000000FC0000000000FC00000FFFFC7E00000FFFFC7E0000001FC07E0000000F80
7E0000000F803E0000000F803F0000000F801F0000000F801F8000000F800F8000000F800FC000
000F8007E000000F8003E000000F8001F000001F8001F800001F80007E00003F80003F00007780
001FC001E3800007F80FC1800001FFFF008000003FF800002E337CB134>71
D<03FF00000FFFC0001E03F0003E00F8003E007C003E003C003E003E001C001E0000001E000000
1E0000001E0000001E000003FE00007FFE0003FF1E0007F01E001FC01E003F001E007E001E007C
001E00FC001E00F8001E0CF8001E0CF8001E0CF8003E0CFC007E0C7C007E0C7E01FF1C3F87CFB8
1FFF07F003FC03C01E1F7D9E21>97 D<003FE001FFF803E03C07C03E0F003E1F003E3E003E3C00
1C7C00007C0000780000F80000F80000F80000F80000F80000F80000F80000F80000F800007C00
007C00007C00003E00033E00071F00060F800E07C01C03F07801FFF0003F80181F7D9E1D>99
D<003F800001FFF00003E1F80007807C000F003E001E001E003E001F003C000F007C000F807C00
0F8078000F80F8000780FFFFFF80FFFFFF80F8000000F8000000F8000000F8000000F8000000F8
0000007C0000007C0000007C0000003E0001803E0003801F0003000F80070007E00E0003F83C00
00FFF800003FC000191F7E9E1D>101 D<0F001F801F801F801F800F0000000000000000000000
0000000000000000000000000780FF80FF800F8007800780078007800780078007800780078007
80078007800780078007800780078007800780078007800780078007800FC0FFF8FFF80D307EAF
12>105 D<0781FE003FC000FF87FF80FFF000FF9E0FC3C1F8000FB803E7007C0007F001EE003C
0007E001FC003E0007E000FC001E0007C000F8001E0007C000F8001E00078000F0001E00078000
F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00
078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007
8000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>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 /Ft 8 117 df<00001FC00000FFF00001E078
0007803C000E001E001C001E0038001F0030001F0061801F0061801F00C0C01F00C0C01F00C0C0
1F00C1803E00C1803E00C3003C007E007C003C0078000000F0000001E0000003C000000F800007
FE000007FC0000001E0000000F000000078000000780000007C0000007C0000007C0000007C000
0007C000000FC03C000FC07E000FC07E000FC0FC001F80F8001F80F0001F00C0003E00E0003E00
60007C007000F8003803E0001C0FC0000FFF000003F80000203079AE25>51
D<0000007F8008000003FFE01800001FC0703800003E0018780000F8000CF00001F00007F00007
C00007F0000F800003F0001F000003E0003E000003E0007E000001E000FC000001E001F8000001
C001F8000001C003F0000001C007F0000001C007E0000001800FE0000001800FC0000001801FC0
000001801FC0000000003F80000000003F80000000003F80000000007F00000000007F00000000
007F00000000007F00000000007E0000000000FE0000000000FE0000000000FE0000000000FE00
00001800FE0000001800FE0000001800FE00000030007E00000030007E00000030007E00000060
007E000000C0003E000000C0003E00000180001F00000300001F00000600000F80000C000007C0
0018000003E00030000001F000E0000000FC07800000003FFE0000000007F80000002D3375B133
>67 D<0007E000001FF1C0003C3BE000F01FE001E00FE003E00FC007C007C0078007C00F8007C0
1F800F801F000F803F000F803F000F807E001F007E001F007E001F007E001F00FC003E00FC003E
00FC003E00FC003E04FC007C0CFC007C0C78007C0C7800FC187C01FC183C03FC183C077C301E1E
3C600FF81FC003E007801E1F799E25>97 D<0003F0001FFC007C1E00F00F03E00707C0070F8007
1F80071F00073F000E3E001C7E00787E0FF0FFFF80FFF000FC0000FC0000F80000F80000F80000
F80000F80000F80002F800037800067C000C3C00381E00F00F03C007FF0001FC00181F789E21>
101 D<001F000003FF000003FF0000003F0000003E0000003E0000003E0000003E0000007C0000
007C0000007C0000007C000000F8000000F8000000F8000000F8000001F0000001F0000001F000
0001F0FC0003E3FF0003E7078003FC07C003F803C007F003C007E003E007C003E007C003C00F80
07C00F8007C00F8007C00F8007C01F000F801F000F801F000F801F001F003E001F003E001F003E
003E003E003E027C003E067C007C067C007C067C007C0CF800780CF8007818F8007830F8003860
F0003FC060000F801F327AB125>104 D<003C01F80000FF07FC0001C78E0E0001879C0F000307
F007800307E007C00607E007C00607C007C00607C007C00C0F8007C00C0F8007C0000F8007C000
0F8007C0001F000FC0001F000FC0001F000FC0001F000FC0003E001F80003E001F80003E001F00
003E003F00007C003E00007C003E00007C007C00007C00780000FC00F80000FE01F00000FE03C0
0000FB87800001F1FF000001F0F8000001F000000001F000000003E000000003E000000003E000
000003E000000007C000000007C000000007C000000007C00000000F800000000F80000000FFFC
000000FFFC000000222D7E9E25>112 D<03C03F000FF0FF801C79C1C0187B81E0307F03E0307E
07E0607C07E0607C07C0607C0380C0F80000C0F8000000F8000000F8000001F0000001F0000001
F0000001F0000003E0000003E0000003E0000003E0000007C0000007C0000007C0000007C00000
0F8000000F8000000F8000000F8000000F0000000E0000001B1F7A9E1E>114
D<000E00001E00003E00003E00003E00003E00007C00007C00007C00007C0000F80000F80000F8
00FFFFC0FFFFC001F00001F00001F00003E00003E00003E00003E00007C00007C00007C00007C0
000F80000F80000F80000F80001F00001F00001F00001F00803E01803E01803E03003E03003E06
003E06003E0C001E38000FF00003C000122C79AB18>116 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin 
%%EndSetup
%%Page: 0 1
bop 820 996 a Ft(Chapter)25 b(3)476 1088 y Fs(Groups,)d(Con)n(texts,)f(Comm)n
(unicators)100 1270 y Fr(Lyndon)c(Clark)o(e,)e(T)l(om)h(Henderson,)f(Mark)h
(Sears,)g(An)o(thon)o(y)g(Skjellum,)d(Marc)j(Snir,)f(Rik)h(Little\014eld)814
1391 y(August)h(5,)f(1993)p eop
%%Page: 0 2
bop 884 862 a Fq(Abstract)75 953 y Fp(W)m(e)15 b(de\014ne)i(the)f(concepts)h
(of)e(group,)g(con)o(text,)h(and)f(comm)o(unicator)e(here.)24
b(W)m(e)15 b(discuss)i(op)q(erations)e(for)g(ho)o(w)75 1003
y(these)c(should)e(b)q(e)h(used)h(to)e(pro)o(vide)g(safe)h(\(safer\))g(comm)o
(unication)c(in)j(the)h(MPI)g(system.)16 b(W)m(e)9 b(start)h(b)o(y)f
(discussing)75 1053 y(in)o(tra-comm)o(uni)o(cation)j(in)j(full)f(detail;)h
(then)h(w)o(e)f(discuss)i(in)o(ter-comm)o(unicatio)o(n,)12
b(whic)o(h)k(builds)e(on)h(the)h(data)75 1103 y(structures)23
b(and)d(requiremen)o(ts)h(of)e(the)i(in)o(tra-comm)o(unicatio)o(n)d
(sections.)38 b(W)m(e)20 b(follo)o(w)f(with)h(discussion)h(of)75
1153 y(formalizations)11 b(of)j(the)h(lo)q(osely)e(sync)o(hronous)i(mo)q(del)
e(of)h(computing)e(\(vis)i(a)g(vis)g(message)g(passing\))g(and)g(o\013er)75
1202 y(examples.)p eop
%%Page: 1 3
bop 75 -100 a Fo(3.1.)31 b(INTR)o(ODUCTION)1343 b Fp(1)75 45
y Fn(3.1)70 b(In)n(tro)r(duction)75 167 y Fp(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 216 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 266 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 316 y(built)f(b)o(y)g(comp)q(osing)
f(sev)o(eral)i(parallel)f(mo)q(dules)f(\()p Fm(e.g.)p Fp(,)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
366 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 416 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 466 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 515 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 565 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
615 y(starting)17 b(from)d(zero,)k(and)e(call)g(this)h(n)o(um)o(b)q(ering)e
Fq(rank)k(in)f(group)p Fp(.)24 b(Th)o(us,)17 b(a)f Fq(group)f
Fp(is)i(an)f(ordered)i(set)g(of)75 665 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 731 y(Comm)o(uni)o(cation)f Fl(contexts)h
Fp(partition)g(the)j(message-passing)e(space)h(in)o(to)f(separate,)i
(manageable)d(\\uni-)75 781 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 831 y(are)17 b(iden)o(ti\014ed)f
(in)g(MPI)h(using)f(opaque)g Fq(con)o(texts)f Fp(that)h(reside)h(within)f
Fl(communicator)e Fp(ob)r(jects.)26 b(The)17 b(con-)75 880
y(text)e(mec)o(hanism)e(is)h(need)i(to)e(allo)o(w)f(predictable)j(b)q(eha)o
(vior)e(in)g(subprograms,)g(and)g(to)h(allo)o(w)e(dynamicism)e(in)75
930 y(message)h(usage)i(that)e(cannot)h(b)q(e)h(reasonably)e(an)o(ticipated)h
(or)g(managed.)j(Normally)m(,)9 b(a)k(parallel)e(pro)q(cedure)k(is)75
980 y(written)f(so)g(that)f(all)g(messages)g(pro)q(duced)i(during)e(its)h
(execution)g(are)g(also)f(consumed)g(b)o(y)h(the)g(pro)q(cesses)i(that)75
1030 y(execute)g(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 1080 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 1130 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 1179 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 1246 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
Fq(comm)o(unicator)p Fp(.)75 1295 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 1345 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 1395 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 1445
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
1495 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
1545 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 1594 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
1661 y(W)m(e)d(start)i(b)o(y)e(discussing)h(in)o(tra-comm)o(uni)o(cation)d
(in)i(full)f(detail;)i(then)g(w)o(e)g(discuss)h(in)o(ter-comm)o(unicatio)o
(n,)75 1710 y(whic)o(h)d(builds)g(on)g(the)h(data)f(structures)j(and)d
(requiremen)o(ts)g(of)g(the)h(in)o(tra-comm)o(uni)o(cation)c(sections.)18
b(W)m(e)10 b(follo)o(w)75 1760 y(with)k(discussion)h(of)e(formalizations)e
(of)j(the)h(lo)q(osely)e(sync)o(hronous)j(mo)q(del)c(of)i(computing)e(\(vis)i
(a)g(vis)g(message)75 1810 y(passing\))g(and)g(o\013er)g(examples.)75
2035 y Fn(3.2)70 b(Con)n(text)75 2156 y Fp(A)15 b Fq(con)o(text)e
Fp(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
2206 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 2256 y(opaque)h(ob)r(ject.)28
b(Only)17 b(one)h(comm)o(unicator)c(in)j(a)f(pro)q(cess)j(ma)o(y)c(bind)i
(the)h(same)e(con)o(text.)28 b(Con)o(texts)18 b(ha)o(v)o(e)75
2306 y(additional)g(attributes)j(for)e(in)o(ter-comm)o(unication,)e(to)j(b)q
(e)g(discussed)i(b)q(elo)o(w.)35 b(F)m(or)19 b(in)o(tra-comm)o(unicatio)o(n,)
75 2355 y(a)g(con)o(text)g(is)g(essen)o(tially)g(a)g(h)o(yp)q(er-tag)g
(needed)h(to)f(mak)o(e)f(a)g(comm)o(unicator)f(safe)i(for)g(p)q(oin)o(t-to-p)
q(oin)o(t)e(and)75 2405 y(MPI-de\014ned)e(collectiv)o(e)f(comm)o(unication.)
158 2554 y Fk(Discussion:)42 b Fj(Some)15 b(implemen)o(tations)i(ma)o(y)e
(mak)o(e)g(a)g(con)o(text)g(to)f(b)q(e)h(a)g(pair)h(of)e(in)o(tegers,)i(eac)o
(h)f(represen)o(ting)75 2604 y(\\h)o(yp)q(er)h(tags")f({)f(one)h(for)g(p)q
(oin)o(t-to-p)q(oin)o(t)i(and)e(one)g(for)f(\(MPI-de\014ned\))i(collectiv)o
(e)h(op)q(erations)g(on)e(a)f(comm)o(unicator.)75 2654 y(By)f(making)i(this)e
(concept)h(opaque,)g(w)o(e)e(reliev)o(e)j(the)e(implemen)o(tor)i(of)e(the)g
(requiremen)o(t)h(that)f(this)h(is)g(the)f(only)h(w)o(a)o(y)f(to)75
2704 y(implemen)o(t)i(con)o(texts)f(correctly)g(for)e(MPI.)p
eop
%%Page: 2 4
bop 75 -100 a Fp(2)158 45 y Fk(Discussion:)23 b Fj(Among)16
b(other)g(reasons,)g(includin)q(g)i(to)d(address)i(Jim)f(Co)o(wnie's)f
(concerns)i(ab)q(out)f(safet)o(y)g(and)g(to)75 95 y(mak)o(e)d(b)q(oth)g(p)q
(oin)o(t-to-p)q(oin)o(t)i(and)e(collectiv)o(e)i(comm)o(unication)g(safer)e
(on)g(an)f(in)o(tra-comm)o(unincato)q(r,)j(w)o(e)d(ha)o(v)o(e)h(opted)g(to)75
145 y(mak)o(e)i(con)o(texts)g(opaque,)h(at)f(the)g(exp)q(ense)h(of)e
(upsetting)i(those)g(who)e(w)o(an)o(t)h(to)g(b)q(e)g(able)g(to)g(set)g(con)o
(text)g(v)n(alues.)23 b(This)75 195 y(c)o(hange)15 b(is)f(crucial)i(to)e
(abstracting)h(MPI)f(from)g(sp)q(eci\014c)h(implemen)o(tations)q(,)h(and)f
(forces)e(sp)q(eci\014c)j(implemen)o(tations)h(to)75 244 y(pro)o(vide)d
(implemen)o(tation-sp)r(eci\014)q(c)h(functions)f(to)e(mak)o(e)h(the)f
(connotation)j(of)d(con)o(texts)h(with)f(sp)q(eci\014c)i(in)o(teger)g(v)n
(alues.)75 464 y Fn(3.3)70 b(Groups)75 554 y Fp(A)16 b Fq(group)f
Fp(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 604 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 654 y(an)e(in)o(teger)g Fq(rank)p Fp(,)f(starting)h(from)e
(zero.)158 704 y(Groups)17 b(are)g(represen)o(ted)i(b)o(y)e(opaque)f
Fq(group)i(ob)s(jects)p Fp(,)d(and)h(hence)i(cannot)f(b)q(e)g(directly)g
(transferred)75 754 y(from)12 b(one)i(pro)q(cess)i(to)e(another.)75
869 y Fi(3.3.1)55 b(Prede\014ned)18 b(Groups)75 946 y Fp(.)g(Initial)12
b(groups)i(de\014ned)h(once)g Fl(MPI)p 669 946 14 2 v 15 w(INIT)e
Fp(has)h(b)q(een)h(called)f(are)g(as)g(follo)o(ws:)137 1025
y Fh(\017)21 b Fl(MPI)p 248 1025 V 15 w(GROUP)p 373 1025 V
15 w(ALL)p Fp(,)40 b(SPMD-lik)o(e)13 b(siblings)g(of)g(a)h(pro)q(cess.)137
1106 y Fh(\017)21 b Fl(MPI)p 248 1106 V 15 w(GROUP)p 373 1106
V 15 w(HOST)p Fp(,)40 b(A)14 b(group)f(including)g(one's)h(self)g(and)g
(one's)g(HOST)137 1188 y Fh(\017)21 b Fl(MPI)p 248 1188 V 15
w(GROUP)p 373 1188 V 15 w(PARENT)p Fp(,)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
1269 y Fh(\017)21 b Fl(MPI)p 248 1269 V 15 w(GROUP)p 373 1269
V 15 w(SELF)p Fp(,)40 b(A)14 b(group)f(comprising)g(one's)h(self)158
1348 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 1398 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 1448 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 1498 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 1630 y Fk(Discussion:)k Fj(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
1850 y Fn(3.4)70 b(Comm)n(unicators)75 1940 y Fp(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 Fq(comm)o(unicators)d Fp(to)i(pro-)75 1990
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 2040 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 2090 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 2140 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 2190 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 2239 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 2289 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 2339 y(pro)o(vides)h(lo)q(cal)
f(pro)q(cess)j(addressing.)158 2471 y Fk(Discussion:)37 b Fj(`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 2521 y(drafts.)158
2654 y Fp(Comm)o(uni)o(cators)19 b(are)h(represen)o(ted)k(b)o(y)c(opaque)g
Fq(comm)o(unicator)h(ob)s(jects)p Fp(,)f(and)g(hence)i(cannot)e(b)q(e)75
2704 y(directly)14 b(transferred)i(from)c(one)i(pro)q(cess)i(to)d(another.)p
eop
%%Page: 3 5
bop 75 -100 a Fo(3.5.)31 b(GR)o(OUP)13 b(MANA)o(GEMENT)1197
b Fp(3)75 45 y Fq(Raison)15 b(d')o(^)-23 b(etre)16 b(for)f(separate)h(Con)o
(texts)f(and)h(Comm)o(unicators)39 b Fp(Within)13 b(a)h(comm)o(unicator,)e(a)
i(con-)75 95 y(text)20 b(is)g(separately)g(brok)o(en)g(out,)h(rather)g(than)f
(b)q(eing)f(inheren)o(t)i(in)e(the)i(comm)o(uni)o(cator)d(for)h(one)h(sp)q
(eci\014c,)75 145 y(essen)o(tial)15 b(purp)q(ose.)20 b(W)m(e)14
b(w)o(an)o(t)g(to)g(mak)o(e)e(it)i(p)q(ossible)h(for)f(libraries)g(quic)o
(kly)f(to)h(ac)o(hiev)o(e)h(additional)d(safe)i(com-)75 195
y(m)o(unication)d(space)k(without)e(MPI-comm)o(unicator-based)e(sync)o
(hronization.)18 b(The)c(only)e(w)o(a)o(y)h(to)g(do)g(this)h(is)f(to)75
244 y(pro)o(vide)d(a)g(means)f(to)h(preallo)q(cate)h(man)o(y)d(con)o(texts,)k
(and)e(bind)g(them)f(lo)q(cally)m(,)g(as)h(needed.)18 b(This)11
b(c)o(hoice)f(w)o(eak)o(ens)75 294 y(the)16 b(o)o(v)o(erall,)e(inheren)o(t)i
(\\safet)o(y")e(of)h(MPI,)g(if)f(programmed)f(in)i(this)g(w)o(a)o(y)m(,)f
(but)h(pro)o(vides)h(added)f(p)q(erformance)75 344 y(whic)o(h)f(library)f
(designers)i(will)d(demand.)75 461 y Fi(3.4.1)55 b(Prede\014ned)18
b(Comm)n(unicators)75 538 y Fp(Initial)12 b(comm)o(unicators)g(de\014ned)j
(once)f Fl(MPI)p 792 538 14 2 v 15 w(INIT)f Fp(has)h(b)q(een)h(called)f(are)g
(as)g(follo)o(ws:)137 622 y Fh(\017)21 b Fl(MPI)p 248 622 V
15 w(COMM)p 351 622 V 15 w(ALL)p Fp(,)40 b(SPMD-lik)o(e)13
b(siblings)g(of)g(a)h(pro)q(cess.)137 706 y Fh(\017)21 b Fl(MPI)p
248 706 V 15 w(COMM)p 351 706 V 15 w(HOST)p Fp(,)40 b(A)14
b(comm)o(unicator)d(for)j(talking)e(to)i(one's)g(HOST.)137
789 y Fh(\017)21 b Fl(MPI)p 248 789 V 15 w(COMM)p 351 789 V
15 w(PARENT)p Fp(,)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 873 y Fh(\017)21 b Fl(MPI)p
248 873 V 15 w(COMM)p 351 873 V 15 w(SELF)p Fp(,)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 923 y(purp)q(oses,)15
b(etc.\).)158 1007 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 1056 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 1106 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 1156 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\).)158 1289 y Fk(Discussion:)k Fj(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
1510 y Fn(3.5)70 b(Group)24 b(Managemen)n(t)75 1601 y Fp(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
1651 y(and)i(so)g(on.)75 1768 y Fi(3.5.1)55 b(Lo)r(cal)19 b(Op)r(erations)75
1845 y Fp(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.)158 1930 y Fq(MPI)p 257 1930 15
2 v 17 w(GR)o(OUP)p 453 1930 V 16 w(SIZE\(group,)j(size\))75
2058 y(IN)i(group)k Fp(handle)13 b(to)h(group)g(ob)r(ject.)75
2142 y Fq(OUT)i(size)k Fp(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.)158 2269 y Fq(MPI)p 257 2269
V 17 w(GR)o(OUP)p 453 2269 V 16 w(RANK\(group,)h(rank\))75
2397 y(IN)h(group)k Fp(handle)13 b(to)h(group)g(ob)r(ject.)75
2480 y Fq(OUT)i(rank)k Fp(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 Fl(MPI)p 1366 2480
14 2 v 15 w(UNDEFINED)d Fp(if)h(the)i(pro)q(cess)h(is)179 2530
y(not)d(a)f(mem)o(b)q(er.)158 2658 y Fq(MPI)p 257 2658 15 2
v 17 w(TRANSLA)l(TE)p 568 2658 V 18 w(RANKS)j(\(group)p 916
2658 V 15 w(a,)g(n,)g(ranks)p 1153 2658 V 17 w(a,)g(group)p
1344 2658 V 16 w(b,)f(ranks)p 1529 2658 V 17 w(b\))p eop
%%Page: 4 6
bop 75 -100 a Fp(4)75 45 y Fq(IN)16 b(group)p 271 45 15 2 v
16 w(a)21 b Fp(handle)14 b(to)f(group)h(ob)r(ject)h(\\A")75
128 y Fq(IN)h(n)21 b Fp(n)o(um)o(b)q(er)13 b(of)g(ranks)h(in)g
Fl(ranks)p 666 128 14 2 v 14 w(a)g Fp(arra)o(y)75 210 y Fq(IN)i(ranks)p
263 210 15 2 v 17 w(a)21 b Fp(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 292 y Fq(IN)i(group)p 271 292
V 16 w(b)k Fp(handle)14 b(to)g(group)f(ob)r(ject)i(\\B")75
375 y Fq(OUT)h(ranks)p 314 375 V 16 w(b)21 b Fp(arra)o(y)10
b(of)g(corresp)q(onding)i(ranks)f(in)g(group)g(\\B,")f Fl(MPI)p
1220 375 14 2 v 15 w(UNDEFINED)f Fp(when)i(no)g(corresp)q(ondence)179
425 y(exists.)75 541 y Fi(3.5.2)55 b(Lo)r(cal)19 b(Group)g(Constructors)75
617 y Fp(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.)158
703 y Fq(MPI)p 257 703 15 2 v 17 w(LOCAL)p 438 703 V 17 w(SUBGR)o(OUP\(grou)o
(p,)d(n,)j(ranks,)f(new)p 1179 703 V 17 w(group\))75 828 y(IN)h(group)k
Fp(handle)13 b(to)h(group)g(ob)r(ject)75 910 y Fq(IN)i(n)21
b Fp(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 Fl(new)p 1123 910 14 2 v 15 w(group)p Fp(\))75
993 y Fq(IN)j(ranks)21 b Fp(arra)o(y)13 b(of)g(in)o(teger)i(ranks)f(in)f
Fl(group)g Fp(to)h(app)q(ear)g(in)g Fl(new_group)p Fp(.)75
1075 y Fq(OUT)i(new)p 283 1075 15 2 v 17 w(group)j Fp(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 Fl(ranks)p Fp(.)75 1165 y(If)h(no)f(ranks)h(are)h(sp)q
(eci\014ed,)g Fl(new_group)d Fp(has)i(no)f(mem)o(b)q(ers.)158
1251 y Fq(MPI)p 257 1251 V 17 w(LOCAL)p 438 1251 V 17 w(EX)o(CL)p
584 1251 V 18 w(SUBGR)o(OUP\(gr)o(oup)o(,)g(n,)j(ranks,)g(new)p
1326 1251 V 17 w(group\))75 1376 y(IN)g(group)k Fp(handle)13
b(to)h(group)g(ob)r(ject)75 1458 y Fq(IN)i(n)21 b Fp(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
Fl(new)p 1123 1458 14 2 v 15 w(group)p Fp(\))75 1541 y Fq(IN)j(ranks)21
b Fp(arra)o(y)13 b(of)g(in)o(teger)i(ranks)f(in)f Fl(group)g
Fp(not)h(to)g(app)q(ear)g(in)f Fl(new_group)75 1623 y Fq(OUT)j(new)p
283 1623 15 2 v 17 w(group)j Fp(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 Fl(ranks)p
Fp(.)75 1713 y(If)h(no)f(ranks)h(are)h(sp)q(eci\014ed,)g Fl(new_group)d
Fp(is)h(iden)o(tical)h(to)f Fl(group)p Fp(.)158 1798 y Fq(MPI)p
257 1798 V 17 w(LOCAL)p 438 1798 V 17 w(SUBGR)o(OUP)p 732 1798
V 15 w(RANGES\(group,)h(n,)h(ranges,)h(new)p 1422 1798 V 17
w(group\))75 1924 y(IN)g(group)k Fp(handle)13 b(to)h(group)g(ob)r(ject)75
2006 y Fq(IN)i(n)21 b Fp(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 Fl(new)p 1123 2006 14 2 v
15 w(group)p Fp(\))75 2089 y Fq(IN)j(ranges)k Fp(a)15 b(one-dimensional)e
(arra)o(y)h(in)o(teger)i(triplets:)k(pairs)15 b(of)g(ranks)g(\(form:)k(b)q
(eginning)14 b(through)h(end,)179 2139 y(inclusiv)o(e\))h(to)g(b)q(e)g
(included)g(in)g(the)h(output)f(group)g Fl(new_group)p Fp(,)e(plus)i(a)g
(constan)o(t,)g(stride)h(\(often)f(1)g(or)179 2188 y(-1\).)75
2271 y Fq(OUT)g(new)p 283 2271 15 2 v 17 w(group)j Fp(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 Fl(ranges)p Fp(.)75 2361 y(If)18 b(an)o(y)f(of)g(the)i
(rank)f(sets)h(o)o(v)o(erlap,)f(then)h(the)f(o)o(v)o(erlap)g(is)f(ignored.)30
b(If)18 b(no)g(ranges)g(are)h(sp)q(eci\014ed,)h(then)e(the)75
2411 y(output)c(group)g(has)g(no)f(mem)o(b)q(ers.)158 2496
y Fq(MPI)p 257 2496 V 17 w(LOCAL)p 438 2496 V 17 w(SUBGR)o(OUP)p
732 2496 V 15 w(EX)o(CL)p 876 2496 V 17 w(RANGES\(group,)h(n,)i(ranges,)f
(new)p 1568 2496 V 17 w(group\))75 2621 y(IN)h(group)k Fp(handle)13
b(to)h(group)g(ob)r(ject)75 2704 y Fq(IN)i(n)21 b Fp(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
Fl(new)p 1123 2704 14 2 v 15 w(group)p Fp(\))p eop
%%Page: 5 7
bop 75 -100 a Fo(3.5.)31 b(GR)o(OUP)13 b(MANA)o(GEMENT)1197
b Fp(5)75 45 y Fq(IN)16 b(ranges)k Fp(a)13 b(one-dimensional)f(arra)o(y)h(of)
g(\(three)i(in)o(teger\))f(consisting)f(of)g(pairs)h(of)f(ranks)g(\(form:)k
(b)q(eginning)179 95 y(through)h(end,)i(inclusiv)o(e\))f(to)f(b)q(e)i
(excluded)f(from)e(the)j(output)e(group)h Fl(new_group)p Fp(,)e(plus)i(a)f
(constan)o(t)179 145 y(stride)c(\(often)h(1)e(or)h(-1\).)75
222 y Fq(OUT)i(new)p 283 222 15 2 v 17 w(group)j Fp(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 Fl(ranges)p Fp(.)75 299 y(If)k(an)o(y)g(of)g(the)h(rank)
f(sets)i(o)o(v)o(erlap,)e(then)h(the)g(o)o(v)o(erlap)f(is)g(ignored.)28
b(If)17 b(there)i(are)f(no)f(ranges)h(sp)q(eci\014ed,)h(the)75
348 y(output)14 b(group)g(is)g(the)g(same)f(as)h(the)g(original)f(group.)158
481 y Fk(Discussion:)k Fj(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
531 y(gies)h(supp)q(ort?)89 663 y Fq(MPI)p 188 663 V 17 w(LOCAL)p
369 663 V 17 w(GR)o(OUP)p 565 663 V 16 w(UNION\(group1,)g(group2,)g(group)p
1233 663 V 16 w(out\))89 784 y(MPI)p 188 784 V 17 w(LOCAL)p
369 784 V 17 w(GR)o(OUP)p 565 784 V 16 w(INTERSECT\(group1,)h(group2,)f
(group)p 1349 784 V 16 w(out\))89 905 y(MPI)p 188 905 V 17
w(LOCAL)p 369 905 V 17 w(GR)o(OUP)p 565 905 V 16 w(DIFFERENCE\(group1,)h
(group2,)g(group)p 1385 905 V 15 w(out\))75 1052 y(IN)h(group1)j
Fp(\014rst)c(group)f(ob)r(ject)h(handle)75 1129 y Fq(IN)h(group2)j
Fp(second)c(group)f(ob)r(ject)h(handle)75 1206 y Fq(OUT)h(group)p
322 1206 V 15 w(out)k Fp(group)14 b(ob)r(ject)g(handle)75 1283
y(The)g(set-lik)o(e)g(op)q(erations)g(are)h(de\014ned)g(as)f(follo)o(ws:)75
1354 y Fq(union)k Fp(All)c(elemen)o(ts)g(of)g(the)h(\014rst)g(group)f(\()p
Fl(group1)p Fp(\),)f(follo)o(w)o(ed)g(b)o(y)h(all)f(elemen)o(ts)i(of)e
(second)j(group)e(\()p Fl(group2)p Fp(\))179 1404 y(not)g(in)f(\014rst)75
1481 y Fq(in)o(tersect)18 b Fp(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
1559 y Fq(di\013erence)j Fp(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
1630 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 1680 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
1812 y Fk(Discussion:)k Fj(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
1862 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
Fg(:)8 b(:)e(:)158 2030 y Fq(MPI)p 257 2030 V 17 w(GR)o(OUP)p
453 2030 V 16 w(FREE\(group\))75 2137 y(IN)16 b(group)k Fp(frees)15
b Fl(group)d Fp(previously)i(de\014ned.)75 2208 y(This)d(op)q(eration)g
(frees)i(a)e(handle)g Fl(group)f Fp(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
2258 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 2390 y Fk(Discussion:)19 b Fj(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 2440 y(ob)r(jects;)j(ho)o
(w)o(ev)o(er,)g(it)f(is)h(arguable)h(that)e(this)h(sp)q(eci\014es)g(the)f
(implemen)o(tation)j(of)d(MPI)g(v)o(ery)g(strongly)m(.)27 b(W)m(e)16
b(p)q(olitely)75 2490 y(argue)e(against)g(this)g(approac)o(h.)158
2658 y Fq(MPI)p 257 2658 V 17 w(GR)o(OUP)p 453 2658 V 16 w(DUP\(group,)f(new)
p 826 2658 V 17 w(group\))p eop
%%Page: 6 8
bop 75 -100 a Fp(6)75 45 y Fq(IN)16 b(group)k Fp(extan)o(t)14
b(group)f(ob)r(ject)i(handle)75 131 y Fq(OUT)h(new)p 283 131
15 2 v 17 w(group)j Fp(new)14 b(group)g(ob)r(ject)h(handle)75
216 y Fl(MPI)p 144 216 14 2 v 15 w(GROUP)p 269 216 V 15 w(DUP)e
Fp(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 265 y(is)h(essen)o(tial)g(to)g
(the)g(supp)q(ort)h(of)e(virtual)g(top)q(ologies.)75 385 y
Fi(3.5.3)55 b(Collectiv)n(e)20 b(Group)f(Constructors)75 463
y Fp(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.)158
549 y Fq(MPI)p 257 549 15 2 v 17 w(COLL)p 402 549 V 17 w(SUBGR)o(OUP\(comm,)f
(k)o(ey)l(,)j(color,)f(new)p 1176 549 V 17 w(group\))75 669
y(IN)h(comm)21 b Fp(comm)o(unicator)11 b(ob)r(ject)k(handle)75
754 y Fq(IN)h(k)o(ey)21 b Fp(\(in)o(teger\))75 840 y Fq(IN)16
b(color)k Fp(\(in)o(teger\))75 925 y Fq(OUT)c(new)p 283 925
V 17 w(group)j Fp(new)14 b(group)g(ob)r(ject)h(handle)75 1010
y(This)g(collectiv)o(e)g(function)f(is)h(called)f(b)o(y)h(all)f(pro)q(cesses)
j(in)e(the)g(group)g(asso)q(ciated)g(with)g Fl(comm)p Fp(.)20
b Fl(Color)14 b Fp(de\014nes)75 1060 y(the)h(particular)f(new)h(group)f(to)g
(whic)o(h)g(the)h(pro)q(cess)h(b)q(elongs.)j Fl(Key)14 b Fp(de\014nes)i(the)f
(rank-order)f(in)g Fl(new)p 1707 1060 14 2 v 15 w(group)p Fp(;)f(a)75
1110 y(stable)h(sort)h(is)e(used)i(to)f(determine)g(rank)f(order)i(in)e
Fl(new)p 981 1110 V 16 w(group)f Fp(if)h(the)i Fl(Keys)e Fp(are)h(not)g
(unique.)158 1243 y Fk(Discussion:)21 b Fj(According)c(to)d(the)h(op)q
(eration)i(of)d(this)i(function,)g(the)f(groups)h(so)e(created)i(are)f(non-o)
o(v)o(erlapping.)75 1293 y(Is)e(there)g(a)g(need)h(for)e(a)h(more)h(complex)g
(functionalit)o(y?)75 1516 y Fn(3.6)70 b(Op)r(erations)22 b(on)h(Con)n(texts)
75 1617 y Fi(3.6.1)55 b(Lo)r(cal)19 b(Op)r(erations)75 1694
y Fp(There)c(are)f(no)g(lo)q(cal)f(op)q(erations)h(on)g(con)o(texts.)158
1780 y Fq(MPI)p 257 1780 15 2 v 17 w(CONTEXTS)p 541 1780 V
19 w(FREE\(n,)h(con)o(texts\))75 1901 y(IN)h(n)21 b Fp(n)o(um)o(b)q(er)13
b(of)g(con)o(texts)i(to)f(free)75 1986 y Fq(IN)i(con)o(texts)j
Fp(v)o(oid)13 b(*)h(arra)o(y)g(of)f(con)o(texts)75 2071 y(Lo)q(cal)j(deallo)q
(cation)g(of)g(con)o(text)h(allo)q(cated)f(b)o(y)h Fl(MPI)p
934 2071 14 2 v 15 w(CONTEXTS)p 1125 2071 V 14 w(ALLOC)f Fp(\(b)q(elo)o(w\).)
26 b(It)17 b(is)f(erroneous)i(to)f(free)g(a)75 2121 y(con)o(text)d(that)f(is)
g(b)q(ound)h(to)f(an)o(y)f(comm)o(unicator)f(\(either)j(lo)q(cally)e(or)h(in)
g(another)g(pro)q(cess\).)20 b(This)13 b(op)q(eration)g(is)75
2171 y(lo)q(cal)g(\(as)h(it)g(m)o(ust)e(b)q(e,)j(b)q(ecause)g(it)f(do)q(es)g
(not)g(p)q(ose)h(a)e(comm)o(unicator)e(in)j(its)g(argumen)o(t)e(list\).)75
2290 y Fi(3.6.2)55 b(Collectiv)n(e)20 b(Op)r(erations)75 2403
y Fq(MPI)p 174 2403 15 2 v 17 w(CONTEXTS)p 458 2403 V 19 w(ALLOC\(comm,)15
b(n,)g(con)o(texts,)g(len\))75 2533 y(IN)h(comm)21 b Fp(Comm)o(uni)o(cator)11
b(whose)k(group)f(denotes)h(participan)o(ts)75 2618 y Fq(IN)h(n)21
b Fp(n)o(um)o(b)q(er)13 b(of)g(con)o(texts)i(to)f(allo)q(cate)75
2704 y Fq(OUT)i(con)o(texts)j Fp(v)o(oid)13 b(*)g(arra)o(y)h(of)f(con)o
(texts)p eop
%%Page: 7 9
bop 75 -100 a Fo(3.7.)31 b(OPERA)m(TIONS)14 b(ON)g(COMMUNICA)m(TORS)924
b Fp(7)75 45 y Fq(OUT)16 b(len)j Fp(length)14 b(of)f(con)o(texts)i(arra)o(y)
158 125 y(Allo)q(cates)i(an)g(arra)o(y)g(of)f(opaque)h(con)o(texts.)28
b(This)17 b(collectiv)o(e)g(op)q(eration)g(is)g(executed)i(b)o(y)e(all)e(pro)
q(cesses)75 175 y(in)h(the)g Fl(MPI_COMM_GROUP\(comm)o(\))p
Fp(.)22 b(MPI)16 b(pro)o(vides)h(sp)q(ecial)f(con)o(textual)g(space)h(to)f
(its)h(collectiv)o(e)f(op)q(erations)75 224 y(\()d(including)p
Fl(MPI_CONTEXTS_A)o(LLOC)p Fp(\))d(so)j(that,)g(despite)h(an)o(y)f(on-going)f
(of)h(p)q(oin)o(t-to-p)q(oin)o(t)e(comm)o(unication)f(on)75
274 y Fl(comm)p Fp(,)19 b(this)g(op)q(eration)f(can)h(execute)i(safely)m(.)32
b(MPI)19 b(collectiv)o(e)g(functions)g(will)e(ha)o(v)o(e)h(to)h(lo)q(c)o(k)g
(out)f(m)o(ultiple)75 324 y(threads,)c(so)g(it)g(will)e(eviden)o(tly)i(ha)o
(v)o(e)g(capabilities)f(una)o(v)n(ailable)f(to)h(the)i(user)g(program.)158
374 y(Con)o(texts)d(that)f(are)g(allo)q(cated)f(b)o(y)h Fl(MPI)p
781 374 14 2 v 15 w(ALLOC)p 906 374 V 15 w(CONTEXTS)e Fp(are)i(unique)g
(within)g Fl(MPI_COMM_GROUP\(c)o(omm\))o Fp(.)75 424 y(The)h(arra)o(y)g(is)g
(the)g(same)g(on)f(all)g(pro)q(cesses)k(that)d(call)f(the)h(function)g
(\(same)f(order,)i(same)e(n)o(um)o(b)q(er)g(of)g(elemen)o(ts\).)158
552 y Fk(Discussion:)24 b Ff(MPI)p 457 552 12 2 v 13 w(CONTEXTS)p
630 552 V 11 w(ALLOC\(comm)o(,)17 b(n,)h(contexts\))13 b Fj(w)o(as)j(the)g
(previous)i(de\014nition)h(of)d(this)h(function,)75 598 y(then)g(w)o(e)e(c)o
(hanged)j(to)e(a)g Ff(group)e Fj(argumen)o(t)j(in)h(the)e(\014rst)g(slot,)i
(arguing)g(that)e(the)h(comm)o(unicator)h(w)o(as)e(unnecessary)m(.)75
643 y(W)m(e)f(ha)o(v)o(e)f(c)o(hanged)i(bac)o(k)f(b)q(ecause)h(the)e
(group-seman)o(tics)j(pro)o(v)o(ed)e(not)g(to)f(b)q(e)h(thread)g(safe,)f(so)h
(w)o(e)f(had)h(to)f(retain)i(the)75 689 y(approac)o(h)e(discussed)g(at)e
(length)h(at)g(the)f(previous)i(MPI)e(meeting.)18 b(\(In)12
b(case)g(y)o(ou)h(did)g(not)g(read)g(the)f(July)h(10)f(draft,)g(y)o(ou)75
735 y(ha)o(v)o(e)g(not)h(seen)f(a)g(c)o(hange)h(in)g(this)f(draft)g(compared)
h(to)f(the)g(June)g(24)g(draft!\))17 b(No)o(w,)11 b(w)o(e)h(ha)o(v)o(e)g
(stronger)h(justi\014cation)h(for)75 780 y(k)o(eeping)g(the)f(approac)o(h)h
(discussed)g(at)f(June)f(24)h(meeting.)18 b(W)m(e)13 b(ha)o(v)o(e)g(added)g
(the)g Ff(len)e Fj(parameter)i(yielding)j(the)c(curren)o(t)75
826 y(form)o(ulation,)j(b)q(ecause)f(con)o(texts)f(are)h(no)o(w)f(opaque,)g
(not)h(in)o(tegers.)158 872 y(W)m(e)e(ha)o(v)o(e)g(to)f(retain)h(the)g(c)o
(hic)o(k)o(en-and-egg)i(asp)q(ect)e(of)f(MPI)h(\()f(em)g(i.e.,)g(use)h(a)g
(comm)o(unicator)h(to)e(get)h(con)o(text\(s\))g(or)75 917 y(a)g(comm)o
(unicator\),)i(to)f(get)f(thread)h(safet)o(y)m(.)k(Y)m(et,)11
b(w)o(e)h(w)o(an)o(t)h(libraries)i(to)d(con)o(trol)h(their)h(o)o(wn)e(fate)g
(regarding)i(safet)o(y)m(,)f(not)75 963 y(to)h(rely)i(on)e(the)h(caller)h(to)
e(pro)o(vide)i(a)f(quiescen)o(t)h(con)o(text.)22 b(W)m(e)14
b(ac)o(hiev)o(e)i(this)g(b)o(y)e(adding)j(the)d Fe(quiescen)o(t)i(prop)q(ert)
o(y)j Fj(for)75 1009 y(MPI)13 b(collectiv)o(e)i(comm)o(unication)h
(functions.)i(W)m(e)13 b(m)o(ust,)g(in)h(fact,)e(push)i(this)g(requiremen)o
(t)g(to)f(the)g(collectiv)o(e)i(c)o(hapter,)75 1054 y(but)j(w)o(e)e
(demonstrate)j(here)e(wh)o(y)g(our)h(particular)h(collectiv)o(e)h(routines)f
(need)f(this)g(prop)q(ert)o(y)m(.)30 b(In)17 b(a)g(m)o(ulti-threaded)75
1100 y(en)o(vironmen)o(t,)k(it)e(is)g(clear)g(that)g(eac)o(h)g(temp)q(orally)
i(o)o(v)o(erlapping)g(call)f(to)e(a)h(collectiv)o(e)h(op)q(eration)h(m)o(ust)
d(b)q(e)h(with)g(a)75 1146 y(di\013eren)o(t)c(comm)o(unicator.)j(If)13
b(this)h(has)f(not)g(b)q(een)h(made)f(explicit,)i(it)f(m)o(ust)f(b)q(e.)158
1191 y(One)18 b(can)g(ha)o(v)o(e)g(on-going)h(p)q(oin)o(t-to-p)q(oin)o(t)h
(and)e(collectiv)o(e)i(comm)o(unications)g(on)e(a)g(single)h(comm)o
(unicator.)32 b(A)75 1237 y(con)o(text)14 b(is)g(de\014ned)h(to)f(b)q(e)g
(su\016cien)o(tly)h(p)q(o)o(w)o(erful)g(to)e(k)o(eep)h(b)q(oth)g(p)q(oin)o
(t-to-p)q(oin)o(t)i(and)f(collectiv)o(e)h(op)q(erations)f(distinct.)75
1283 y(Hence,)d(it)f(is)h(alw)o(a)o(ys)h(safe)e(to)h(call)g
Ff(MPI)p 644 1283 V 13 w(COMM)p 737 1283 V 13 w(MAKE)e Fj(and)i
Ff(MPI)p 973 1283 V 13 w(CONTEXTS)p 1146 1283 V 11 w(ALLOC)p
Fj(,)d(ev)o(en)j(if)f(p)q(ending)j(async)o(hronous)g(p)q(oin)o(t-)75
1328 y(to-p)q(oin)o(t)h(op)q(erations)g(are)e(on-going,)i(or)f(messages)g(ha)
o(v)o(e)g(not)g(b)q(een)g(receiv)o(ed)g(but)g(are)g(on)f(receipt)i(queue.)k
(With)14 b(these)75 1374 y(rules,)g(no)f(quiescen)o(t)i(comm)o(unicator)g(is)
e(required)i(in)f(order)f(to)g(get)g(new)g(con)o(texts.)18
b(W)m(e)13 b(ha)o(v)o(e)h(added)g(demands)g(on)g(the)75 1420
y(MPI)h(implemen)o(tation)j(while)e(making)h(con)o(texts)f(opaque)g(to)f(mak)
o(e)g(this)h(simpler)g(to)f(realize)i(without)f(sa)o(ying)g(ho)o(w)f(it)75
1465 y(m)o(ust)e(b)q(e)g(done.)158 1515 y(In)d(summary)m(,)h(libraries)i(ha)o
(v)o(e)d(to)g(get)h(the)f(comm)o(unicator)i(as)e(a)g(base)h(argumen)o(t)g(to)
f(retain)h(thread)g(safet)o(y)m(,)f(but)g(they)75 1565 y(can)j(alw)o(a)o(ys)h
(safely)f(get)g(comm)o(unication)i(con)o(texts)e(to)g(do)g(further)g(w)o
(ork.)k(The)12 b(concept)i(of)e(quiescence)j(is)e(banished)i(to)75
1615 y(b)q(e)h(a)f(small)i(detail)g(of)e(implemen)o(tation)q(,)j(rather)e
(than)g(a)f(cen)o(tral)i(tenet)e(of)g(library)j(design.)26
b(Users)15 b(m)o(ust)h(still)h(w)o(orry)75 1665 y(ab)q(out)d(temp)q(oral)g
(safet)o(y)m(,)f(whic)o(h)h(is)f(not)g(guaran)o(teed)i(b)o(y)e(con)o(texts)h
(alone)g(\(see)f(example)i(b)q(elo)o(w)e(in)h(section)g(3.11.6.)75
1882 y Fn(3.7)70 b(Op)r(erations)22 b(on)h(Comm)n(unicators)75
1982 y Fi(3.7.1)55 b(Lo)r(cal)19 b(Comm)n(unicator)h(Op)r(erations)75
2058 y Fp(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.)158 2144 y Fq(MPI)p 257 2144 15
2 v 17 w(COMM)p 434 2144 V 18 w(SIZE\(comm,)16 b(size\))75
2259 y(IN)g(comm)21 b Fp(handle)14 b(to)f(comm)o(unicator)e(ob)r(ject.)75
2337 y Fq(OUT)16 b(size)k Fp(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 Fl(comm)p Fp(.)158
2452 y Fq(MPI)p 257 2452 V 17 w(COMM)p 434 2452 V 18 w(RANK\(comm,)j(rank\))
75 2567 y(IN)g(comm)21 b Fp(handle)14 b(to)f(comm)o(unicator)e(ob)r(ject.)75
2646 y Fq(OUT)16 b(rank)k Fp(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 Fl(comm)p Fp(,)g(or)h
Fl(MPI)p 1550 2646 14 2 v 15 w(UNDEFINED)d Fp(if)i(the)179
2696 y(pro)q(cess)e(is)f(not)g(a)g(mem)o(b)q(er.)p eop
%%Page: 8 10
bop 75 -100 a Fp(8)75 45 y Fi(3.7.2)55 b(Lo)r(cal)19 b(Constructors)75
159 y Fq(MPI)p 174 159 15 2 v 17 w(COMM)p 351 159 V 18 w(GR)o(OUP\(comm,)14
b(group\))75 281 y(IN)i(comm)21 b Fp(comm)o(unicator)11 b(ob)r(ject)k(handle)
75 368 y Fq(OUT)h(group)j Fp(group)14 b(ob)r(ject)g(handle)75
454 y(Accessor)i(that)e(returns)h(the)g(group)f(corresp)q(onding)h(to)e(the)i
(comm)o(unicator)c Fl(comm)p Fp(.)158 541 y Fq(MPI)p 257 541
V 17 w(COMM)p 434 541 V 18 w(CONTEXT\(comm,)17 b(con)o(text\))75
662 y(IN)f(comm)21 b Fp(comm)o(unicator)11 b(ob)r(ject)k(handle)75
750 y Fq(OUT)h(con)o(text)j Fp(con)o(text)75 836 y(Returns)c(the)f(con)o
(text)h(asso)q(ciated)f(with)g(the)h(comm)o(uni)o(cator)d Fl(comm)p
Fp(.)158 922 y Fq(MPI)p 257 922 V 17 w(COMM)p 434 922 V 18
w(UNBIND\(comm\))75 1044 y(IN)k(comm)21 b Fp(the)14 b(comm)o(unicator)d(to)j
(b)q(e)h(deallo)q(cated.)75 1130 y(This)d(routine)h(disasso)q(ciates)h(the)f
(group)f Fl(MPI_COMM_GROUP\(com)o(m\))d Fp(asso)q(ciated)14
b(with)e Fl(comm)f Fp(from)g(the)i(con)o(text)75 1180 y Fl
(MPI_COMM_CONTEXT\()o(comm\))j Fp(asso)q(ciated)k(with)f Fl(comm)p
Fp(.)34 b(The)20 b(opaque)g(ob)r(ject)g Fl(comm)e Fp(is)i(deallo)q(cated.)35
b(Both)75 1230 y(the)19 b(group)g(and)f(con)o(text,)i(pro)o(vided)e(at)h(the)
g Fl(MPI)p 900 1230 14 2 v 15 w(COMM)p 1003 1230 V 15 w(BIND)f
Fp(call,)g(remain)f(a)o(v)n(ailable)g(for)h(further)h(use.)33
b(If)75 1280 y Fl(MPI)p 144 1280 V 15 w(COMM)p 247 1280 V 15
w(MAKE)16 b Fp(\(see)i(b)q(elo)o(w\))e(w)o(as)h(called)f(in)h(lieu)f(of)g
Fl(MPI)p 1040 1280 V 15 w(COMM)p 1143 1280 V 15 w(BIND)p Fp(,)f(then)i(there)
h(is)f(no)f(exp)q(osed)i(con)o(text)75 1330 y(kno)o(wn)13 b(to)h(the)h(user,)
f(and)g(this)g(quan)o(tit)o(y)f(is)h(freed)g(b)o(y)g Fl(MPI)p
1027 1330 V 15 w(COMM)p 1130 1330 V 15 w(UNBIND)p Fp(.)158
1416 y Fq(MPI)p 257 1416 15 2 v 17 w(COMM)p 434 1416 V 18 w(DUP\(comm,)h(new)
p 814 1416 V 17 w(con)o(text,)f(new)p 1097 1416 V 18 w(comm\))75
1538 y(IN)i(comm)21 b Fp(comm)o(unicator)11 b(ob)r(ject)k(handle)75
1625 y Fq(IN)h(new)p 232 1625 V 17 w(con)o(text)k Fp(new)14
b(con)o(text)h(to)e(use)i(with)f(new)p 945 1625 13 2 v 15 w(comm)75
1712 y Fq(OUT)i(new)p 283 1712 15 2 v 17 w(comm)k Fp(comm)o(unicator)11
b(ob)r(ject)k(handle)75 1798 y Fl(MPI)p 144 1798 14 2 v 15
w(COMM)p 247 1798 V 15 w(DUP)c Fp(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.)
75 1920 y Fi(3.7.3)55 b(Collectiv)n(e)20 b(Comm)n(unicator)g(Constructors)75
2034 y Fq(MPI)p 174 2034 15 2 v 17 w(COMM)p 351 2034 V 18 w(MAKE\(sync)p
629 2034 V 18 w(comm,)c(comm)p 926 2034 V 17 w(group,)e(comm)p
1217 2034 V 17 w(new\))75 2156 y(IN)i(sync)p 241 2156 V 17
w(comm)21 b Fp(Comm)n(unicator)13 b(whose)i(incorp)q(orated)h(group)f(\()p
Fl(MPI_COMM_GROUP\(comm)o(\))p Fp(\))d(is)j(the)h(group)179
2206 y(o)o(v)o(er)h(whic)o(h)g(the)h(new)g(comm)o(unicator)d
Fl(comm_new)g Fp(will)h(b)q(e)i(de\014ned,)h(also)e(sp)q(ecifying)g
(participan)o(ts)g(in)179 2256 y(this)d(sync)o(hronizing)g(op)q(eration.)75
2343 y Fq(IN)i(comm)p 274 2343 V 17 w(group)j Fp(Group)12 b(of)g(the)h(new)g
(comm)o(unicator;)c(often)k(this)f(will)f(b)q(e)i(the)g(same)e(as)h
Fl(sync)p 1665 2343 14 2 v 15 w(group)p Fp(,)f(else)179 2393
y(it)i(m)o(ust)g(b)q(e)i(subset)g(thereof;)75 2480 y Fq(OUT)h(comm)p
325 2480 15 2 v 17 w(new)k Fp(the)15 b(new)f(comm)o(unicator.)75
2566 y Fl(MPI)p 144 2566 14 2 v 15 w(COMM)p 247 2566 V 15 w(MAKE)f
Fp(is)h(equiv)n(alen)o(t)f(to:)140 2654 y Fl(MPI_CONTEXTS_ALLOC\()o(sync\\)o
(_comm)o(,)19 b(context,)h(1,)h(len\))140 2704 y(MPI_COMM_BIND\(comm\\)o
(_grou)o(p,)e(context,)h(comm_new\))p eop
%%Page: 9 11
bop 75 -100 a Fo(3.8.)31 b(INTR)o(ODUCTION)14 b(TO)g(INTER-COMMUNICA)m(TION)
723 b Fp(9)75 45 y(plus,)17 b(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 95 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
Fl(MPI)p 1602 95 14 2 v 15 w(COMM)p 1705 95 V 15 w(UNBIND)p
Fp(\).)75 145 y(It)f(is)g(erroneous)h(if)e Fl(comm)p 478 145
V 15 w(group)g Fp(is)g(not)h(a)g(subset)h(of)e Fl(sync)p 1028
145 V 15 w(group)p Fp(.)158 278 y Fk(Discussion:)30 b Ff(MPI)p
463 278 12 2 v 13 w(COMM)p 556 278 V 13 w(MAKE)17 b Fj(and)j
Ff(MPI)p 807 278 V 13 w(CONTEXTS)p 980 278 V 11 w(ALLOC)d Fj(b)q(oth)j
(require)g(b)q(o)q(otstrap)g(via)g(a)f(comm)o(unicator,)75
328 y(instead)g(of)f(just)g(the)f(group)i(of)f(that)g(comm)o(unicator)h(for)f
(thread)g(safet)o(y)m(.)31 b(W)m(e)18 b(ha)o(v)o(e)h(argued)f(this)h(bac)o(k)
f(and)h(forth)75 378 y(carefully)m(,)14 b(and)g(conclude)h(that)e(eac)o(h)g
(thread)h(of)f(an)g(MPI)g(program)h(will)g(ha)o(v)o(e)g(one)f(or)g(more)h
(con)o(texts.)75 605 y Fn(3.8)70 b(In)n(tro)r(duction)22 b(to)i(In)n
(ter-Comm)n(unicati)o(on)75 698 y Fp(This)14 b(section)g(in)o(tro)q(duces)h
(the)f(concept)h(of)e(in)o(ter-comm)o(unicatio)o(n)e(and)i(describ)q(es)j
(the)e(p)q(ortions)g(of)f(MPI)h(that)75 748 y(supp)q(ort)21
b(it.)37 b(It)20 b(describ)q(es)j(supp)q(ort)e(for)f(writing)f(programs)g
(whic)o(h)h(con)o(tain)g(user-lev)o(el)h(serv)o(ers.)39 b(It)21
b(also)75 798 y(describ)q(es)16 b(a)e(name)e(service)k(whic)o(h)d
(simpli\014es)g(writing)g(programs)f(con)o(taining)h(in)o(ter-comm)o
(unication.)158 931 y Fk(Discussion:)18 b Fj(Recommendation)e(and)e(plea)g
(for)f(patience:)19 b(MPI)13 b(Committee)h(tak)o(es)f(stra)o(w)g(p)q(oll)i
(on)e(whether)h(to)75 981 y(ha)o(v)o(e)h(in)o(ter-comm)o(unication)j(or)c
(not)h({)g(as)f(a)h(whole)g({)g(in)g(MPI1.)21 b(The)15 b(most)f(suitable)j
(time)e(w)o(ould)g(b)q(e)g(after)f(w)o(e)g(hear)75 1031 y(the)f(argumen)o(ts)
h(ab)q(out)g(the)f(in)o(terface)h(at)f(a)g(high)h(lev)o(el,)g(but)g(b)q
(efore)f(w)o(e)g(w)o(e)f(this)i(section)g(of)f(the)g(c)o(hapter.)75
1236 y Fi(3.8.1)55 b(De\014nitions)20 b(of)f(In)n(ter-Comm)n(unication)h(and)
f(In)n(ter-Comm)n(unicators)75 1315 y Fp(All)11 b(p)q(oin)o(t-to-p)q(oin)o(t)
g(comm)o(unication)e(describ)q(ed)14 b(th)o(us)f(far)f(has)h(in)o(v)o(olv)o
(ed)e(comm)o(unicati)o(on)f(b)q(et)o(w)o(een)j(pro)q(cesses)75
1365 y(that)e(are)h(mem)o(b)q(ers)e(of)g(the)i(same)e(group.)17
b(The)12 b(source)g(pro)q(cess)h(in)e(send)h(or)f(the)h(destination)f(pro)q
(cess)i(in)e(receiv)o(e)75 1415 y(\(the)16 b(\\target")e(pro)q(cess\))j(is)e
(sp)q(eci\014ed)h(using)f(a)f Fl(\(communicator,)19 b(rank\))14
b Fp(pair.)20 b(The)15 b(target)h(pro)q(cess)g(is)f(that)75
1465 y(pro)q(cess)d(with)d(the)h(giv)o(en)g(rank)f(within)h(the)g(group)g(of)
f(the)h(giv)o(en)f(comm)o(unicator.)14 b(This)c(t)o(yp)q(e)g(of)f(comm)o
(unication)75 1515 y(is)14 b(called)f(\\in)o(tra-comm)o(uni)o(cation")e(and)i
(the)i(comm)o(unicator)c(used)k(is)f(called)f(an)h(\\in)o(tra-comm)n
(unicator.")158 1566 y(In)f(mo)q(dular)f(and)h(m)o(ulti-disciplinary)d
(applications,)i(di\013eren)o(t)j(pro)q(cess)g(groups)f(execute)h(di\013eren)
o(t)g(mo)q(d-)75 1616 y(ules)g(and)f(pro)q(cesses)k(within)c(di\013eren)o(t)h
(mo)q(dules)f(comm)o(unicate)e(with)i(one)h(another)g(in)f(a)h(pip)q(eline)f
(or)h(a)f(more)75 1665 y(general)h(mo)q(dule)e(graph.)19 b(In)c(these)h
(applications)d(the)i(most)f(natural)g(w)o(a)o(y)f(for)h(a)h(pro)q(cess)h(to)
e(sp)q(ecify)h(a)f(target)75 1715 y(pro)q(cess)k(is)e(b)o(y)g(the)h(rank)f
(of)f(the)i(target)g(pro)q(cess)h(within)d(the)i(target)f(group.)25
b(In)16 b(applications)f(that)h(con)o(tain)75 1765 y(in)o(ternal)d(user)h
(lev)o(el)e(serv)o(ers,)j(eac)o(h)e(serv)o(er)i(ma)o(y)c(b)q(e)j(a)e(pro)q
(cess)j(group)e(that)g(pro)o(vides)g(services)i(to)e(one)g(or)g(more)75
1815 y(clien)o(ts,)j(and)f(eac)o(h)h(clien)o(t)f(ma)o(y)f(b)q(e)i(a)f(pro)q
(cess)i(group)f(whic)o(h)f(uses)i(the)f(services)h(of)e(one)g(or)h(more)e
(serv)o(ers.)25 b(In)75 1865 y(these)17 b(applications)e(it)h(is)g(again)e
(most)h(natural)g(to)h(sp)q(ecify)h(the)f(target)h(pro)q(cess)g(b)o(y)f(rank)
g(within)f(the)h(target)75 1914 y(group.)j(This)c(t)o(yp)q(e)f(of)g(comm)o
(unication)d(is)j(called)h(\\in)o(ter-comm)o(uni)o(cation")c(and)j(the)h
(comm)o(unicator)d(used)j(is)75 1964 y(called)f(an)f(\\in)o(ter-comm)o
(unicator.")158 2015 y(An)g(in)o(ter-comm)o(unication)d(op)q(eration)j(is)g
(a)g(p)q(oin)o(t-to-p)q(oin)o(t)f(comm)o(unication)e(b)q(et)o(w)o(een)k(pro)q
(cesses)i(in)d(dif-)75 2065 y(feren)o(t)18 b(groups.)26 b(The)17
b(group)g(con)o(taining)f(a)g(pro)q(cess)j(that)d(initiates)h(an)f(in)o
(ter-comm)o(unication)d(op)q(eration)k(is)75 2115 y(called)10
b(the)g(\\lo)q(cal)f(group,")h(that)g(is,)g(the)h(sender)h(in)d(a)h(send)h
(and)f(the)g(receiv)o(er)i(in)d(a)h(receiv)o(e.)18 b(The)11
b(group)f(con)o(tain-)75 2165 y(ing)h(the)h(target)g(pro)q(cess)i(is)d
(called)h(the)g(\\remote)f(group,")g(that)h(is,)f(the)i(receiv)o(er)g(in)e(a)
g(send)i(and)f(the)g(sender)h(in)e(a)75 2215 y(receiv)o(e.)22
b(As)15 b(in)f(in)o(tra-comm)n(unication,)d(the)k(target)g(pro)q(cess)i(is)d
(sp)q(eci\014ed)i(using)f(a)f Fl(\(communicator,)19 b(rank\))75
2264 y Fp(pair.)f(Unlik)o(e)13 b(in)o(tra-comm)o(uni)o(cation,)d(the)15
b(rank)f(is)f(relativ)o(e)h(to)g(the)g(remote)g(group.)158
2315 y(One)d(additional)e(needed)i(concept)h(is)e(the)h(\\group)f(leader.")17
b(The)11 b(pro)q(cess)h(with)e(rank)g(0)g(in)g(a)g(pro)q(cess)i(group)75
2365 y(is)i(designated)g(\\group)g(leader.")k(This)c(concept)h(is)f(used)g
(in)g(supp)q(ort)h(of)e(user-lev)o(el)h(serv)o(ers,)i(and)d(elsewhere.)75
2488 y Fi(3.8.2)55 b(Prop)r(erties)18 b(of)h(In)n(ter-Comm)n(unication)h(and)
f(In)n(ter-Comm)n(unicators)75 2567 y Fp(Here)c(is)f(a)f(summary)f(of)h(the)i
(prop)q(erties)g(of)e(in)o(ter-comm)o(unication)e(and)i(in)o(ter-comm)o
(unicators:)137 2654 y Fh(\017)21 b Fp(The)12 b(syn)o(tax)g(is)g(the)h(same)e
(for)h(b)q(oth)g(in)o(ter-)g(and)g(in)o(tra-comm)o(unicati)o(on.)j(The)d
(same)f(comm)o(unicator)f(can)179 2704 y(b)q(e)k(used)h(for)f(b)q(oth)g(send)
g(and)g(receiv)o(e)h(op)q(erations.)p eop
%%Page: 10 12
bop 75 -100 a Fp(10)137 45 y Fh(\017)21 b Fp(A)14 b(target)g(pro)q(cess)i(is)
e(addressed)h(b)o(y)f(its)g(rank)g(in)f(the)i(remote)e(group.)137
129 y Fh(\017)21 b Fp(Comm)o(uni)o(cations)14 b(using)i(an)h(in)o(ter-comm)o
(unicator)d(are)j(guaran)o(teed)g(not)f(to)h(con\015ict)g(with)f(an)o(y)g
(com-)179 179 y(m)o(unications)c(that)i(use)g(a)g(di\013eren)o(t)h(comm)o
(unicator.)137 263 y Fh(\017)21 b Fp(An)14 b(in)o(ter-comm)o(unicator)d
(cannot)j(b)q(e)h(used)f(for)g(collectiv)o(e)g(comm)o(unicatio)o(n.)137
347 y Fh(\017)21 b Fp(A)14 b(comm)o(unicator)d(will)h(pro)o(vide)i(either)h
(in)o(tra-)e(or)h(in)o(ter-comm)o(unicatio)o(n,)d(nev)o(er)k(b)q(oth.)137
431 y Fh(\017)21 b Fp(Once)15 b(constructed,)g(the)g(remote)f(group)f(of)h
(an)f(in)o(ter-comm)o(unicator)f(ma)o(y)f(not)j(b)q(e)h(c)o(hanged.)j(Comm)o
(u-)179 481 y(nication)13 b(with)g(an)o(y)h(pro)q(cess)i(outside)e(of)f(the)i
(remote)e(group)h(is)g(not)f(allo)o(w)o(ed.)158 565 y(The)e(routine)h
Fl(MPI_COMM_STAT\(\))7 b Fp(ma)o(y)i(b)q(e)j(used)g(to)e(determine)h(if)f(a)h
(comm)o(unicator)d(is)j(an)g(in)o(ter-)g(or)g(in)o(tra-)75
615 y(comm)o(unicator.)16 b(In)o(ter-comm)o(unicators)c(can)j(b)q(e)g(used)g
(as)f(argumen)o(ts)f(to)h(some)g(of)f(the)i(other)g(comm)o(unicator)75
665 y(inquiry)f(routines)i(\(de\014ned)g(ab)q(o)o(v)o(e\).)21
b(In)o(ter-comm)o(unicators)14 b(cannot)h(b)q(e)g(used)h(as)g(input)e(to)h
(an)o(y)g(of)f(the)i(lo)q(cal)75 714 y(constructor)k(routines)g(for)e(in)o
(tra-comm)o(unicators.)30 b(When)19 b(an)f(in)o(ter-comm)o(unicator)e(is)j
(used)h(as)f(an)f(input)75 764 y(argumen)o(t,)12 b(the)j(follo)o(wing)c
(table)j(describ)q(es)i(b)q(eha)o(vior)d(of)h(relev)n(an)o(t)g
Fl(MPI_COMM_*)d Fp(functions:)p 279 821 1392 2 v 278 871 2
50 v 709 856 a Fl(MPI)p 778 856 14 2 v 15 w(COMM)p 881 856
V 29 w Fp(F)m(unction)i(Beha)o(vior)p 1670 871 2 50 v 278 920
V 683 906 a(\(in)g(In)o(ter-Comm)o(unication)e(Mo)q(de\))p
1670 920 V 279 922 1392 2 v 279 932 V 278 982 2 50 v 304 967
a Fl(MPI_COMM_SIZE\(\))p 720 982 V 112 w Fp(returns)k(the)g(size)g(of)e(the)h
(remote)g(group.)p 1670 982 V 278 1032 V 304 1017 a Fl(MPI_COMM_GROUP\(\))p
720 1032 V 90 w Fp(returns)h(the)g(remote)e(group.)p 1670 1032
V 278 1082 V 304 1067 a Fl(MPI_COMM_RANK\(\))p 720 1082 V 112
w Fp(returns)i Fl(MPI_UNDEFINED)p 1670 1082 V 278 1131 V 304
1116 a(MPI_COMM_CONTEXT\()o(\))p 720 1131 V 47 w Fp(erroneous)p
1670 1131 V 278 1181 V 304 1166 a Fl(MPI_COMM_UNBIND\(\))p
720 1181 V 68 w Fp(erroneous)p 1670 1181 V 278 1231 V 304 1216
a Fl(MPI_COMM_DUP\(\))p 720 1231 V 134 w Fp(erroneous)p 1670
1231 V 279 1233 1392 2 v 75 1327 a Fq(Construction/D)o(estr)o(ucti)o(on)d(of)
k(In)o(ter-Comm)o(un)o(icator)o(s)75 1405 y Fp(Construction)e(of)g(an)f(in)o
(ter-comm)o(unicator)e(requires)k(t)o(w)o(o)f(separate)h(collectiv)o(e)f(op)q
(erations)g(\(one)g(in)f(the)i(lo)q(cal)75 1454 y(group)i(and)g(one)g(in)g
(the)h(remote)f(group\))g(and)g(a)g(p)q(oin)o(t-to-p)q(oin)o(t)e(op)q
(eration)i(b)q(et)o(w)o(een)i(the)f(t)o(w)o(o)e(group)h(lead-)75
1504 y(ers.)j(These)c(op)q(erations)e(ma)o(y)f(b)q(e)i(p)q(erformed)e(with)h
(explicit)g(sync)o(hronization)g(of)g(the)h(t)o(w)o(o)f(groups)g(b)o(y)g
(calling)75 1554 y Fl(MPI_COMM_PEER_MAK)o(E\(\))p Fp(.)g(The)d(explicit)f
(sync)o(hronization)g(can)h(cause)h(deadlo)q(c)o(k)e(in)g(mo)q(dular)f
(programs)g(with)75 1604 y(cyclic)h(comm)o(unicati)o(on)d(graphs.)16
b(So,)10 b(the)g(lo)q(cal)f(and)g(remote)g(op)q(erations)g(can)h(b)q(e)g
(decoupled)g(and)g(the)g(construc-)75 1654 y(tion)k(p)q(erformed)g(\\lo)q
(osely)f(sync)o(hronously")i(b)o(y)f(calling)f(the)i(t)o(w)o(o)e(routines)i
Fl(MPI_COMM_PEER_MAKE_)o(START)o(\(\))75 1703 y Fp(and)f Fl(MPI_COMM_PEER_MA)
o(KE_FI)o(NISH\()o(\))p Fp(.)158 1836 y Fk(Discussion:)35 b
Ff(MPI)p 468 1836 12 2 v 13 w(COMM)p 561 1836 V 12 w(PEER)p
653 1836 V 13 w(MAKE)p 746 1836 V 13 w(START\(\))9 b Fj(and)14
b Ff(MPI)p 1043 1836 V 13 w(COMM)p 1136 1836 V 12 w(PEER)p
1228 1836 V 13 w(MAKE)p 1321 1836 V 13 w(FINISH\(\))9 b Fj(are)k(b)q(oth)g
(collectiv)o(e)j(op-)75 1886 y(erations)g(in)f(the)f(lo)q(cal)i(group.)21
b(They)15 b(ma)o(y)f(lea)o(v)o(e)h(a)f(non-blo)q(c)o(kin)q(g)j(send)e(and)g
(receiv)o(e)g(activ)o(e)g(b)q(et)o(w)o(een)f(the)h(t)o(w)o(o)f(calls,)75
1936 y(where)h(the)h(group)g(leaders)h(exc)o(hange)g(lo)q(cal)g(comm)o
(unicator)g(information)h(as)d(necessary)m(.)25 b(Ho)o(w)o(ev)o(er,)16
b(they)g(are)f(not)h(a)75 1986 y(non-blo)q(c)o(king)g(collectiv)o(e)f(op)q
(eration.)38 b Fp(These)15 b(routines)f(can)g(construct)i(m)o(ultiple)11
b(in)o(ter-comm)o(unicators)h(with)h(a)75 2118 y(single)h(call.)j(This)d
(impro)o(v)o(es)e(p)q(erformance)i(b)o(y)f(allo)o(wing)f(amortization)g(of)h
(the)h(sync)o(hronization)g(o)o(v)o(erhead.)158 2168 y(The)g(in)o(ter-comm)o
(unicator)d(ob)r(jects)j(are)g(destro)o(y)o(ed)h(in)d(the)i(same)f(w)o(a)o(y)
g(as)g(in)o(tra-comm)o(unicator)d(ob)r(jects,)75 2218 y(b)o(y)k(calling)e
Fl(MPI_COMM_FREE\(\))p Fp(.)75 2327 y Fq(Supp)q(ort)h(for)i(User-Lev)o(el)f
(Serv)o(ers)75 2404 y Fp(W)m(e)f(consider)g(the)h(primary)d(feature)j(of)e
(user-lev)o(el)i(serv)o(ers)h(that)e(can)g(require)h(additional)d(supp)q(ort)
j(is)e(that)h(the)75 2454 y(serv)o(er)j(cannot)e(a)g(priori)g(kno)o(w)f(the)i
(iden)o(ti\014cation)f(of)f(the)i(clien)o(ts,)f(whereas)i(the)e(clien)o(ts)h
(m)o(ust)e(a)h(priori)f(kno)o(w)75 2504 y(the)h(iden)o(ti\014cation)g(of)f
(the)h(serv)o(ers.)20 b(In)14 b(addition,)f(a)g(user-lev)o(el)i(serv)o(er)g
(is)f(a)f(dedicated)i(pro)q(cess)h(group)e(whic)o(h,)75 2554
y(after)g(some)f(initialization,)e(pro)o(vides)j(a)f(giv)o(en)h(service)h(un)
o(til)e(termination.)158 2604 y(The)21 b(supp)q(ort)f(for)g(user-lev)o(el)h
(serv)o(ers)h(tak)o(es)e(in)o(to)g(accoun)o(t)g(the)h(prev)n(ailing)d(view)i
(that)g(all)f(pro)q(cesses)75 2654 y(\(p)q(ossibly)e(excepting)g(a)f(host)h
(pro)q(cess\))i(are)e(initially)d(equiv)n(alen)o(t)i(mem)o(b)q(ers)f(of)i
(the)g(group)f(of)g(all)g(pro)q(cesses.)75 2704 y(This)11 b(group)g(is)f
(describ)q(ed)j(b)o(y)e(pre-de\014ned)h(in)o(tra-comm)o(unicator)c
Fl(MPI_COMM_ALL)p Fp(.)g(The)j(user)h(splits)f(this)g(group)p
eop
%%Page: 11 13
bop 75 -100 a Fo(3.8.)31 b(INTR)o(ODUCTION)14 b(TO)g(INTER-COMMUNICA)m(TION)
702 b Fp(11)75 45 y(suc)o(h)17 b(that)f(pro)q(cesses)j(in)d(eac)o(h)h
(parallel)e(serv)o(er)i(are)g(placed)g(within)e(a)h(sp)q(eci\014c)i
(sub-group.)25 b(The)17 b(non-serv)o(er)75 95 y(pro)q(cesses)h(are)d(placed)g
(in)f(a)h(group)g(of)f(all)f(non-serv)o(ers.)23 b(Pro)o(vided)15
b(that)g(the)g(user)h(can)f(determine)g(the)h(ranks)75 145
y(of)c(the)h(serv)o(er)g(group)f(leaders)i(\()p Fm(i.e.,)d
Fp(rank)h(zero\))i(and)e(assign)g(some)f(tags)h(for)g(clien)o(ts)h(to)f(send)
h(a)f(message)g(to)g(the)75 195 y(group)h(leaders,)g(then)h(a)f(group)g
(leader)g(can)g(at)g(an)o(y)g(time)e(notify)h(a)h(serv)o(er)i(that)e(it)f
(wishes)i(to)f(b)q(ecome)g(a)f(clien)o(t.)158 245 y(MPI)18
b(pro)o(vides)g(a)f(routine,)h Fl(MPI_COMM_SPLITL\(\))p Fp(,)d(that)j(splits)
f(a)h(paren)o(t)g(group,)g(creates)h(sub-groups)75 294 y(\(in)o(tra-comm)o
(uni)o(cators\))d(according)h(to)g(supplied)g(k)o(eys,)h(and)f(returns)i(the)
f(rank)f(of)f(eac)o(h)i(sub-group)f(leader)75 344 y(\(relativ)o(e)i(to)f(the)
h(paren)o(t)h(group\).)32 b(This)18 b(allo)o(ws)g(a)g(pro)q(cess)j(that)d(do)
q(es)i(not)e(kno)o(w)g(ab)q(out)h(a)f(sub-group)h(to)75 394
y(con)o(tact)14 b(that)g(sub-group)f(via)g(the)h(sub-group)g(leader,)f(using)
h(the)g(paren)o(t)g(comm)o(unicator.)h(The)f(k)o(eys)g(ma)o(y)d(b)q(e)75
444 y(used)18 b(as)f(unique)f(tags.)27 b(This)17 b(information)d(ma)o(y)h
(also)h(b)q(e)h(used)h(as)f(input)g(to)f Fl(MPI_COMM_PEER_MAKE\()o(\))p
Fp(,)e(for)75 494 y(example.)75 603 y Fq(Name)i(Service)75
680 y Fp(MPI)g(pro)o(vides)g(a)f(name)g(service)i(to)f(simplify)c
(construction)17 b(of)e(in)o(ter-comm)o(unicators.)22 b(This)15
b(service)i(allo)o(ws)75 730 y(a)f(lo)q(cal)g(pro)q(cess)i(group)e(to)h
(create)h(an)e(in)o(ter-comm)o(unicator)e(when)j(the)g(only)e(a)o(v)n
(ailable)g(information)e(ab)q(out)75 779 y(the)i(remote)e(group)h(is)g(a)g
(user-de\014ned)i(c)o(haracter)g(string.)i(A)d(sync)o(hronizing)f(v)o(ersion)
g(is)g(pro)o(vided)g(b)o(y)g(routine)75 829 y Fl(MPI_COMM_NAME_MAK)o(E\(\))p
Fp(.)f(A)d(lo)q(osely)e(sync)o(hronous)j(v)o(ersion)e(is)g(pro)o(vided)g(b)o
(y)g(routines)h Fl(MPI_COMM_NAME_MAKE)o(_STAR)o(T\(\))75 879
y Fp(and)k Fl(MPI_COMM_NAME_MA)o(KE_FI)o(NISH\()o(\))p Fp(.)75
996 y Fi(3.8.3)55 b(In)n(ter-Comm)n(unication)20 b(Routines)75
1074 y Fq(Sync)o(hronous)13 b(In)o(ter-Comm)o(uni)o(cator)f(Constructors)75
1151 y Fp(Both)19 b(of)g(these)h(routines)g(allo)o(w)d(construction)j(of)f(m)
o(ultiple)d(in)o(ter-comm)o(unicators.)32 b(Eac)o(h)19 b(of)f(these)j(in)o
(ter-)75 1200 y(comm)o(unicators)11 b(con)o(tains)i(the)i(same)d(remote)h
(group)h(and)f(di\013eren)o(t)h(in)o(ternal)f(con)o(texts.)19
b(Therefore,)c(comm)o(u-)75 1250 y(nication)e(using)g(an)o(y)g(of)g(these)h
(in)o(ter-comm)o(unicators)e(will)g(not)h(in)o(terfere)h(with)f(comm)o
(unication)d(using)k(an)o(y)f(of)75 1300 y(the)h(others.)158
1385 y Fq(MPI)p 257 1385 15 2 v 17 w(COMM)p 434 1385 V 18 w(PEER)p
583 1385 V 18 w(MAKE\(m)o(y)p 833 1385 V 17 w(comm,)21 b(p)q(eer)p
1101 1385 V 16 w(comm,)g(p)q(eer)p 1368 1385 V 16 w(rank,)g(tag,)g(n)o(um)p
1706 1385 V 15 w(comms,)75 1435 y(new)p 161 1435 V 17 w(comms\))75
1554 y(IN)16 b(m)o(y)p 213 1554 V 17 w(comm)37 b Fp(lo)q(cal)13
b(in)o(tra-comm)n(unicator)75 1638 y Fq(IN)j(p)q(eer)p 241
1638 V 17 w(comm)k Fp(\\paren)o(t")14 b(in)o(tra-comm)o(uni)o(cator)75
1722 y Fq(IN)i(p)q(eer)p 241 1722 V 17 w(rank)k Fp(rank)14
b(of)f(remote)h(group)f(leader)i(in)e Fl(peer)p 1031 1722 14
2 v 15 w(comm)75 1806 y Fq(IN)j(tag)37 b Fp(\\safe")13 b(tag)75
1890 y Fq(IN)j(n)o(um)p 242 1890 15 2 v 16 w(comms)k Fp(n)o(um)o(b)q(er)13
b(of)h(new)g(in)o(ter-comm)o(unicators)e(to)h(construct)75
1974 y Fq(OUT)j(new)p 283 1974 V 17 w(comms)k Fp(arra)o(y)14
b(of)f(new)h(in)o(ter-comm)o(unicators)158 2058 y(This)k(routine)h
(constructs)h(an)e(arra)o(y)g(of)g(in)o(ter-comm)o(unicators)e(and)i(stores)i
(it)e(in)g Fl(new_comms)p Fp(.)29 b(In)o(tra-)75 2108 y(comm)o(unicator)9
b Fl(my_comm)i Fp(describ)q(es)j(the)e(lo)q(cal)f(group.)17
b(In)o(tra-comm)o(unicator)9 b Fl(peer_comm)h Fp(describ)q(es)k(a)e(group)75
2157 y(that)21 b(con)o(tains)f(the)h(leaders)h(\()p Fm(i.e.,)f
Fp(mem)o(b)q(ers)e(with)h(rank)h(zero\))g(of)f(b)q(oth)h(the)g(lo)q(cal)f
(and)g(remote)g(groups.)75 2207 y(In)o(teger)14 b Fl(peer_rank)d
Fp(is)j(the)f(rank)h(of)e(the)i(remote)f(leader)h(in)e Fl(peer_comm)p
Fp(.)k(In)o(teger)e(tag)f(is)g(used)h(to)g(distinguish)75 2257
y(this)19 b(op)q(eration)g(from)e(others)j(with)f(the)g(same)g(p)q(eer.)34
b(In)o(teger)20 b Fl(num_comms)d Fp(is)i(the)h(n)o(um)o(b)q(er)e(of)g(new)i
(in)o(ter-)75 2307 y(comm)o(unicators)12 b(constructed.)21
b(This)14 b(routine)g(is)g(collectiv)o(e)g(in)g(the)h(lo)q(cal)e(group)h(and)
g(sync)o(hronizes)i(with)d(the)75 2357 y(remote)j(group.)27
b(Eac)o(h)17 b(of)f(the)i(in)o(ter-comm)o(unicators)c(pro)q(duced)k(pro)o
(vides)f(in)o(ter-comm)o(unication)d(with)i(the)75 2407 y(remote)d(group.)158
2492 y Fq(MPI)p 257 2492 V 17 w(COMM)p 434 2492 V 18 w(NAME)p
601 2492 V 19 w(MAKE\(m)o(y)p 852 2492 V 17 w(comm,)j(name,)g(n)o(um)p
1257 2492 V 15 w(comms,)g(new)p 1528 2492 V 17 w(comms\))75
2620 y(IN)g(m)o(y)p 213 2620 V 17 w(comm)21 b Fp(lo)q(cal)13
b(in)o(tra-comm)n(unicator)75 2704 y Fq(IN)j(name)21 b Fp(\\name)12
b(kno)o(wn)h(to)h(b)q(oth)g(lo)q(cal)f(and)h(remote)f(group)h(leaders)p
eop
%%Page: 12 14
bop 75 -100 a Fp(12)75 45 y Fq(IN)16 b(n)o(um)p 242 45 15 2
v 16 w(comms)k Fp(n)o(um)o(b)q(er)13 b(of)h(new)g(in)o(ter-comm)o(unicators)e
(to)h(construct)75 130 y Fq(OUT)j(new)p 283 130 V 17 w(comms)k
Fp(Arra)o(y)14 b(of)f(new)i(in)o(ter-comm)o(unicators)158 223
y(This)e(is)g(the)g(name-serv)o(ed)g(equiv)n(alen)o(t)g(of)f
Fl(MPI_COMM_PEER_MAKE)d Fp(in)k(whic)o(h)g(the)g(caller)g(need)h(only)e(kno)o
(w)75 273 y(a)19 b(name)f(for)h(the)g(p)q(eer)i(connection.)34
b(The)20 b(same)e(name)g(is)h(supplied)g(b)o(y)g(b)q(oth)g(lo)q(cal)g(and)f
(remote)h(groups.)75 322 y(The)g(name)e(is)h(remo)o(v)o(ed)g(from)f(the)i(in)
o(ternal)f(name-serv)o(er)h(database)f(after)h(b)q(oth)g(groups)f(ha)o(v)o(e)
h(completed)75 372 y Fl(MPI_COMM_NAME_MAK)o(E\(\))p Fp(.)75
482 y Fq(Lo)q(osely)c(Sync)o(hronous)e(In)o(ter-Comm)o(uni)o(cator)f
(Constructors)75 560 y Fp(These)19 b(routines)f(are)g(lo)q(osely)f(sync)o
(hronous)i(coun)o(terparts)g(of)e(the)h(sync)o(hronous)h(in)o(ter-comm)o
(unicator)c(con-)75 609 y(struction)g(routines)f(describ)q(ed)i(ab)q(o)o(v)o
(e.)158 695 y Fq(MPI)p 257 695 V 17 w(COMM)p 434 695 V 18 w(PEER)p
583 695 V 18 w(MAKE)p 750 695 V 18 w(ST)l(AR)l(T\(m)o(y)p 1008
695 V 16 w(comm,)c(p)q(eer)p 1266 695 V 16 w(comm,)g(p)q(eer)p
1524 695 V 16 w(rank,)g(tag,)g(n)o(um)p 1844 695 V 15 w(comms,)75
745 y(mak)o(e)p 187 745 V 17 w(id\))75 865 y(IN)k(m)o(y)p 213
865 V 17 w(comm)37 b Fp(lo)q(cal)13 b(in)o(tra-comm)n(unicator)75
949 y Fq(IN)j(p)q(eer)p 241 949 V 17 w(comm)k Fp(\\paren)o(t")14
b(in)o(tra-comm)o(uni)o(cator)75 1034 y Fq(IN)i(p)q(eer)p 241
1034 V 17 w(rank)k Fp(rank)14 b(of)f(remote)h(group)f(leader)i(in)e
Fl(peer)p 1031 1034 14 2 v 15 w(comm)75 1118 y Fq(IN)j(tag)37
b Fp(\\safe")13 b(tag)75 1203 y Fq(IN)j(n)o(um)p 242 1203 15
2 v 16 w(comms)k Fp(n)o(um)o(b)q(er)13 b(of)h(new)g(in)o(ter-comm)o
(unicators)e(to)h(construct)75 1288 y Fq(OUT)j(mak)o(e)p 309
1288 V 17 w(id)j Fp(handle)14 b(for)f Fl(MPI)p 649 1288 14
2 v 16 w(COMM)p 753 1288 V 14 w(PEER)p 855 1288 V 15 w(MAKE)p
958 1288 V 15 w(FINISH\(\))158 1372 y Fp(This)18 b(starts)h(o\013)g(a)f
Fl(_PEER_MAKE)e Fp(op)q(eration,)j(returning)f(a)g(handle)h(for)f(the)g(op)q
(eration)h(in)e(\\)p Fl(make_id)p Fp(.")75 1422 y(It)f(is)f(collectiv)o(e)h
(in)f Fl(my_comm)p Fp(.)22 b(It)16 b(do)q(es)g(not)g(w)o(ait)f(for)g(the)h
(remote)f(group)h(to)f(do)h Fl(MPI_COMM_MAKE_STA)o(RT\(\))o
Fp(.)75 1472 y(The)g(\\)p Fl(make_id)p Fp(")e(handle)i(is)g(conceptually)g
(similar)d(to)j(the)h(comm)o(uni)o(cation)c(handle)j(used)h(b)o(y)e(non-blo)q
(c)o(king)75 1521 y(p)q(oin)o(t-to-p)q(oin)o(t)j(routines.)34
b(A)19 b Fl(make_id)e Fp(handle)i(is)g(constructed)i(b)o(y)e(a)g(\\)p
Fl(_START)p Fp(")e(routine)i(and)g(destro)o(y)o(ed)75 1571
y(b)o(y)g(the)g(matc)o(hing)e(\\)p Fl(_FINISH)p Fp(")g(routine.)33
b(These)20 b(handles)f(are)g(not)g(v)n(alid)e(for)i(an)o(y)f(other)h(use.)34
b(It)19 b(is)f(erro-)75 1621 y(neous)i(to)f(call)f(this)i(routine)f(again)f
(with)h(the)h(same)e Fl(peer_comm)p Fp(,)h Fl(peer_rank)e Fp(and)i
Fl(tag)p Fp(,)h(without)e(calling)75 1671 y Fl(MPI_COMM_MAKE_FIN)o(ISH\(\))10
b Fp(to)k(\014nish)g(the)g(\014rst)h(call.)158 1757 y Fq(MPI)p
257 1757 15 2 v 17 w(COMM)p 434 1757 V 18 w(PEER)p 583 1757
V 18 w(MAKE)p 750 1757 V 18 w(FINISH\(mak)o(e)p 1063 1757 V
17 w(id,)g(new)p 1232 1757 V 17 w(comms\))75 1876 y(IN)h(mak)o(e)p
258 1876 V 17 w(id)36 b Fp(handle)14 b(from)e Fl(MPI)p 650
1876 14 2 v 15 w(COMM)p 753 1876 V 15 w(PEER)p 856 1876 V 14
w(MAKE)p 958 1876 V 15 w(START\(\))75 1961 y Fq(OUT)k(new)p
283 1961 15 2 v 17 w(comms)36 b Fp(arra)o(y)14 b(of)f(new)h(in)o(ter-comm)o
(unicators)158 2045 y(This)9 b(completes)g(a)g Fl(_PEER_MAKE)e
Fp(op)q(eration,)j(returning)g(an)f(arra)o(y)g(of)f Fl(num_comms)g
Fp(new)i(in)o(ter-comm)o(unicators)75 2095 y(in)f Fl(new_comms)p
Fp(.)14 b(\(Note)c(that)g Fl(num_comms)d Fp(w)o(as)i(sp)q(eci\014ed)i(in)e
(the)h(corresp)q(onding)g(call)e(to)h Fl(MPI_COMM_PEER_MAKE_S)o(TART)o(\(\))p
Fp(.\))75 2145 y(This)i(routine)g(is)g(collectiv)o(e)f(in)h(the)g
Fl(my_comm)f Fp(of)g(the)h(corresp)q(onding)h(call)e(to)h Fl
(MPI_COMM_PEER_MAK)o(E_STA)o(RT\(\))o Fp(.)75 2195 y(It)g(w)o(aits)f(for)h
(the)g(remote)g(group)g(to)f(call)g Fl(MPI_COMM_PEER_MAKE_)o(START)o(\(\))e
Fp(but)j(do)q(es)h(not)e(w)o(ait)g(for)h(the)g(remote)75 2244
y(group)j(to)f(call)h Fl(MPI_COMM_PEER_M)o(AKE_F)o(INISH)o(\(\))p
Fp(.)158 2330 y Fq(MPI)p 257 2330 V 17 w(COMM)p 434 2330 V
18 w(NAME)p 601 2330 V 19 w(MAKE)p 769 2330 V 18 w(ST)l(AR)l(T\(m)o(y)p
1027 2330 V 16 w(comm,)i(name,)g(n)o(um)p 1431 2330 V 15 w(comms,)g(mak)o(e)p
1728 2330 V 17 w(id\))75 2450 y(IN)g(m)o(y)p 213 2450 V 17
w(comm)21 b Fp(lo)q(cal)13 b(in)o(tra-comm)n(unicator)75 2534
y Fq(IN)j(name)21 b Fp(\\name")12 b(kno)o(wn)h(to)h(b)q(oth)g(lo)q(cal)f(and)
h(remote)f(group)h(leaders)75 2619 y Fq(IN)i(n)o(um)p 242 2619
V 16 w(comms)k Fp(n)o(um)o(b)q(er)13 b(of)h(new)g(in)o(ter-comm)o(unicators)e
(to)h(construct)75 2704 y Fq(OUT)j(mak)o(e)p 309 2704 V 17
w(id)j Fp(handle)14 b(for)f(MPI)p 663 2704 13 2 v 16 w(COMM)p
817 2704 V 15 w(NAME)p 960 2704 V 16 w(MAKE)p 1105 2704 V 15
w(FINISH\(\))p eop
%%Page: 13 15
bop 75 -100 a Fo(3.8.)31 b(INTR)o(ODUCTION)14 b(TO)g(INTER-COMMUNICA)m(TION)
702 b Fp(13)158 45 y Fq(MPI)p 257 45 15 2 v 17 w(COMM)p 434
45 V 18 w(NAME)p 601 45 V 19 w(MAKE)p 769 45 V 18 w(FINISH\(mak)o(e)p
1082 45 V 17 w(id,)15 b(new)p 1251 45 V 17 w(comms\))75 162
y(IN)h(mak)o(e)p 258 162 V 17 w(id)k Fp(handle)14 b(from)e(MPI)p
648 162 13 2 v 15 w(COMM)p 801 162 V 15 w(NAME)p 944 162 V
16 w(MAKE)p 1089 162 V 15 w(ST)m(AR)m(T\(\))75 244 y Fq(OUT)k(new)p
283 244 15 2 v 17 w(comms)k Fp(arra)o(y)14 b(of)f(new)h(in)o(ter-comm)o
(unicators)158 325 y(These)j(are)e(the)h Fl(START/FINISH)d
Fp(v)o(ersions)j(of)e Fl(MPI\\_COMM\\_NAME\\_MAK)o(E\(\))p
Fp(.)19 b(They)d(ha)o(v)o(e)f(sync)o(hroniza-)75 375 y(tion)e(prop)q(erties)j
(analogous)c(to)i(the)h(corresp)q(onding)f Fl(\\_PEER\\_)f
Fp(routines.)75 483 y Fq(Comm)o(unicator)g(Status)75 559 y
Fp(This)d(lo)q(cal)g(routine)g(allo)o(ws)f(the)i(calling)e(pro)q(cess)j(to)e
(determine)g(if)g(a)g(comm)o(unicator)d(is)k(an)f(in)o(ter-comm)o(unicator)75
609 y(or)k(an)g(in)o(tra-comm)n(unicator.)158 694 y Fq(MPI)p
257 694 V 17 w(COMM)p 434 694 V 18 w(ST)l(A)l(T\(comm,)i(status\))75
811 y(IN)g(comm)21 b Fp(comm)o(unicator)75 893 y Fq(OUT)16
b(status)j Fp(in)o(teger)14 b(status)158 975 y(This)g(returns)i(the)f(status)
h(of)e(comm)o(uni)o(cator)e Fl(comm)p Fp(.)19 b(V)m(alid)13
b(status)i(v)n(alues)g(are)f Fl(MPI)p 1526 975 14 2 v 16 w(INTRA)p
Fp(,)e Fl(MPI)p 1742 975 V 16 w(INTER)p Fp(,)75 1025 y Fl(MPI)p
144 1025 V 15 w(INVALID)p Fp(.)158 1157 y Fk(Discussion:)18
b Fj(Should)d(there)e(b)q(e)g(an)o(y)h(other)f(status)h(v)n(alues?)75
1347 y Fq(Supp)q(ort)f(for)i(User-Lev)o(el)f(Serv)o(ers)75
1424 y Fp(This)h(collectiv)o(e)f(routine)h(is)f(used)i(to)e(mak)o(e)g(it)g
(easier)h(for)g(pro)q(cesses)i(to)d(form)f(sub-groups)i(and)g(con)o(tact)g
(user-)75 1474 y(lev)o(el)f(serv)o(ers.)158 1559 y Fq(MPI)p
257 1559 15 2 v 17 w(COMM)p 434 1559 V 18 w(SPLITL\(comm,)h(k)o(ey)l(,)h(nk)o
(eys,)f(leaders,)g(sub)p 1282 1559 V 16 w(comm\))75 1676 y(IN)h(comm)37
b Fp(extan)o(t)14 b(in)o(tra-comm)o(uni)o(cator)d(to)j(b)q(e)h(\\split")75
1758 y Fq(IN)h(k)o(ey)37 b Fp(k)o(ey)14 b(for)f(sub-group)i(mem)o(b)q(ership)
75 1840 y Fq(IN)h(nk)o(eys)36 b Fp(n)o(um)o(b)q(er)14 b(of)f(k)o(eys)h(\(n)o
(um)o(b)q(er)f(of)h(sub-groups\))75 1922 y Fq(OUT)i(leaders)35
b Fp(ranks)14 b(of)f(sub-group)h(leaders)h(in)e(comm)75 2004
y Fq(OUT)j(sub)p 273 2004 V 16 w(comm)k Fp(in)o(tra-comm)o(uni)o(cator)12
b(describing)i(sub-group)g(of)f(calling)g(pro)q(cess)158 2086
y(This)k(routine)h(splits)f(the)i(group)e(describ)q(ed)i(b)o(y)e(in)o
(tra-comm)o(unicator)d(comm)h(in)o(to)i(nk)o(eys)h(sub-groups.)75
2136 y(Eac)o(h)d(calling)e(pro)q(cess)k(m)o(ust)d(sp)q(ecify)h(a)g(v)n(alue)f
(of)g(k)o(ey)h(in)f(the)i(range)f([0)p Fd(:)7 b(:)g(:)t Fp(\()p
Fl(nkeys)p Fp(-1\)].)19 b(Pro)q(cesses)f(sp)q(ecifying)75 2185
y(the)f(same)f(k)o(ey)g(are)h(placed)g(in)f(the)i(same)d(sub-group.)27
b(Ranks)16 b(of)g(the)h(leaders)g(of)f(eac)o(h)h(sub-group)g(\(relativ)o(e)75
2235 y(to)i Fl(comm)p Fp(\))f(are)h(returned)i(in)d(in)o(teger)h(arra)o(y)g
(leaders.)34 b(This)18 b(routine)i(returns)g(a)e(new)i(in)o(tra-comm)n
(unicator,)75 2285 y Fl(sub\\_comm)p Fp(,)12 b(that)h(describ)q(es)j(the)f
(sub-group)f(to)g(whic)o(h)g(the)g(calling)e(pro)q(cess)k(b)q(elongs.)75
2401 y Fi(3.8.4)55 b(Implemen)n(tation)19 b(Notes)75 2478 y
Fq(Securit)o(y)13 b(and)j(P)o(erformance)d(Issues)75 2554 y
Fp(The)k(routines)h(in)e(this)h(section)g(do)g(not)g(in)o(tro)q(duce)g
(insecurit)o(y)h(in)o(to)e(the)h(basic)g(usage)g(of)f(MPI.)h(Sp)q
(eci\014cally)m(,)75 2604 y(they)d(do)g(not)g(allo)o(w)e(con)o(texts)j(to)f
(b)q(e)g(b)q(ound)g(in)g(m)o(ultiple)d(usable)j(comm)o(unicators.)158
2654 y(The)h(pro)o(vision)f(of)g(in)o(ter-comm)o(unicatio)o(n)e(do)q(es)j
(not)g(adv)o(ersely)g(a\013ect)h(the)f(\(p)q(oten)o(tial\))f(p)q(erformance)h
(of)75 2704 y(in)o(tra-comm)o(uni)o(cation.)p eop
%%Page: 14 16
bop 75 -100 a Fp(14)75 45 y Fq(\\Under)14 b(the)h(Ho)q(o)q(d")75
122 y Fp(A)d(p)q(ossible)g(implemen)o(tation)d(of)i(a)h(comm)o(unicator)d
(con)o(tains)j(a)f(single)h(group,)g(a)f(send)i(con)o(text,)g(a)f(receiv)o(e)
h(con-)75 172 y(text,)g(and)f(a)h(source)g(\(for)g(the)g(message)f(en)o(v)o
(elop)q(e\).)18 b(This)13 b(structure)i(mak)o(es)c(in)o(tra-)h(and)g(in)o
(ter-comm)o(unicators)75 221 y(basically)h(the)h(same)f(ob)r(ject.)158
271 y(The)i(in)o(tra-comm)o(uni)o(cator)d(has)j(the)g(prop)q(erties)h(that:)j
(the)d(send-con)o(text)g(and)e(the)h(receiv)o(e-con)o(text)i(are)75
321 y(iden)o(tical;)c(the)h(pro)q(cess)i(is)e(a)f(mem)o(b)q(er)g(of)g(the)h
(group;)g(the)g(source)h(is)f(the)g(rank)g(of)g(the)g(pro)q(cess)i(in)d(the)i
(group.)158 371 y(The)d(in)o(ter-comm)o(unicator)e(cannot)i(b)q(e)g
(discussed)i(sensibly)e(without)f(considering)h(pro)q(cesses)j(in)c(b)q(oth)h
(the)75 421 y(lo)q(cal)g(and)g(remote)g(groups.)18 b(Imagine)11
b(a)h(pro)q(cess)j Fq(P)d Fp(in)g(group)g(G)h(whic)o(h)f(has)h(an)f(in)o
(ter-comm)o(unicator)e Fl(Cp)p Fp(,)i(and)75 470 y(a)j(pro)q(cess)i
Fq(Q)d Fp(in)h(group)g(H)g(whic)o(h)g(has)g(an)g(in)o(ter-comm)o(unicator)d
Fl(Cq)p Fp(.)21 b(\(Note)16 b(that)f(G)g(and)f(H)i(do)e(not)h(ha)o(v)o(e)g
(to)75 520 y(b)q(e)g(distinct.\))20 b(The)15 b(in)o(ter-comm)o(unicators)d
(ha)o(v)o(e)i(the)h(prop)q(erties)h(that:)j(the)c(send)g(con)o(text)g(of)f
Fl(Cp)f Fp(is)i(iden)o(tical)75 570 y(to)h(the)h(receiv)o(e)g(con)o(text)g
(of)e Fl(Cq)p Fp(,)h(and)f(is)h(unique)g(in)g(H;)g(the)g(receiv)o(e)i(con)o
(text)e(of)g Fl(Cp)f Fp(is)h(iden)o(tical)g(to)f(the)i(send)75
620 y(con)o(text)d(of)f Fl(Cq)p Fp(,)f(and)h(is)g(unique)g(in)g(G;)g(the)g
(group)g(of)g Fl(Cp)g Fp(is)g(H;)g(the)h(group)f(of)f Fl(Cq)h
Fp(is)g(G;)f(the)i(source)h(of)d Fl(Cp)h Fp(is)g(the)75 670
y(rank)h(of)f(P)h(in)f(G,)g(whic)o(h)g(is)h(the)g(group)g(of)f
Fl(Cq)p Fp(;)g(the)h(source)h(of)e Fl(Cq)g Fp(is)h(the)g(rank)g(of)f(Q)h(in)f
(H,)h(whic)o(h)f(is)h(the)g(group)75 719 y(of)f Fl(Cp)p Fp(.)158
769 y(It)k(is)f(easy)h(to)f(see)i(that)f(in)f(terms)g(of)g(these)i(\014elds,)
f(the)g(in)o(tra-comm)o(unicator)c(is)k(a)f(sp)q(ecial)h(case)g(of)f(the)75
819 y(in)o(ter-comm)o(unicator.)f(It)c(has)h Fh(G)i Fp(=)e
Fh(H)g Fp(and)f(b)q(oth)h(con)o(texts)h(the)f(same.)k(This)c(ensures)h(that)f
(the)g(p)q(oin)o(t-to-p)q(oin)o(t)75 869 y(comm)o(unication)e(implemen)o
(tati)o(on)h(for)h(in)o(tra-comm)o(unicatio)o(n)f(and)i(in)o(ter-comm)o
(unicatio)o(n)e(can)i(b)q(e)h(iden)o(tical.)75 1006 y Fn(3.9)70
b(Cac)n(heing)75 1097 y Fp(MPI)14 b(pro)o(vides)g(a)f(\\cac)o(heing")h
(facilit)o(y)e(that)i(allo)o(ws)e(an)i(application)e(to)i(attac)o(h)g
(arbitrary)f(pieces)i(of)f(informa-)75 1147 y(tion,)g(called)h
Fm(attributes)p Fp(,)f(to)h(con)o(text,)g(group,)g(and)g(comm)o(unicator)d
(descriptors;)17 b(it)d(pro)o(vides)i(this)f(facilit)o(y)e(to)75
1197 y(user)g(programs)e(as)h(w)o(ell.)k(A)o(ttributes)d(are)g(lo)q(cal)e(to)
g(the)i(pro)q(cess)g(and)f(are)g(not)g(included)g(if)f(the)i(descriptor)g(w)o
(ere)75 1246 y(someho)o(w)g(sen)o(t)i(to)f(another)h(pro)q(cess)672
1231 y Fc(1)707 1246 y Fp(This)f(facilit)o(y)f(is)h(in)o(tended)h(to)f(supp)q
(ort)h(optimizations)d(suc)o(h)j(as)g(sa)o(ving)75 1296 y(p)q(ersisten)o(t)j
(comm)o(unicatio)o(n)13 b(handles)j(and)g(recording)h(top)q(ology-based)e
(decisions)i(b)o(y)e(adaptiv)o(e)h(algorithms.)75 1346 y(Ho)o(w)o(ev)o(er,)e
(attributes)h(are)f(propagated)g(in)o(ten)o(tionally)e(b)o(y)h(sp)q(eci\014c)
j(MPI)e(routines.)158 1396 y(T)m(o)k(summarize,)e(cac)o(heing)j(is,)g(in)f
(particular,)g(the)h(pro)q(cess)h(b)o(y)e(whic)o(h)h(implem)o(en)o
(tation-de\014ned)d(data)75 1446 y(\(and)e(virtual)f(top)q(ology)g(data\))g
(is)h(propagated)g(in)f(groups)h(and)g(comm)o(unicators.)158
1578 y Fk(Discussion:)k Fj(A)o(ttribute)c(propagation)h(m)o(ust)e(b)q(e)h
(discussed)h(carefully)m(.)75 1777 y Fi(3.9.1)55 b(F)-5 b(unctionalit)n(y)75
1853 y Fp(MPI)14 b(pro)o(vides)g(the)h(follo)o(wing)c(services)16
b(related)e(to)g(cac)o(heing.)k(They)c(are)h(all)d(pro)q(cess-lo)q(cal.)158
1939 y Fq(MPI)p 257 1939 15 2 v 17 w(A)l(TTRIBUTE)p 561 1939
V 18 w(ALLOC\(n,handle)p 942 1939 V 14 w(arra)o(y)l(,len\))75
2056 y(IN)k(n)21 b Fp(n)o(um)o(b)q(er)13 b(of)g(handles)h(to)g(allo)q(cate)75
2139 y Fq(OUT)i(handle)p 340 2139 V 15 w(arra)o(y)k Fp(p)q(oin)o(ter)14
b(to)g(arra)o(y)g(of)f(opaque)h(attribute)g(handling)f(structure)75
2221 y Fq(OUT)j(len)j Fp(length)14 b(of)f(eac)o(h)i(opaque)e(structure)75
2304 y(Allo)q(cates)18 b(a)g(new)h(attribute,)h(so)e(user)h(programs)e(and)h
(functionalit)o(y)f(la)o(y)o(ered)h(on)g(top)h(of)e(MPI)i(can)f(access)75
2353 y(attribute)c(tec)o(hnology)m(.)158 2439 y Fq(MPI)p 257
2439 V 17 w(A)l(TTRIBUTE)p 561 2439 V 18 w(FREE\(handle)p 866
2439 V 15 w(arra)o(y)l(,n\))75 2556 y(IN)i(handle)p 289 2556
V 15 w(arra)o(y)21 b Fp(arra)o(y)13 b(of)h(p)q(oin)o(ters)g(to)g(opaque)g
(attribute)g(handling)f(structures)75 2639 y Fq(IN)j(n)21 b
Fp(n)o(um)o(b)q(er)13 b(of)g(handles)h(to)g(deallo)q(cate)p
75 2665 720 2 v 121 2692 a Fb(1)139 2704 y Fa(The)d(deletion)e(of)j
(\015atten/un)o(\015at)o(ten)c(mak)o(es)i(this)h(p)q(oin)o(t)f(mo)q(ot.)p
eop
%%Page: 15 17
bop 75 -100 a Fo(3.9.)26 b(CA)o(CHEING)1438 b Fp(15)75 45 y(F)m(rees)15
b(attribute)f(handle.)158 130 y Fq(MPI)p 257 130 15 2 v 17
w(GET)p 376 130 V 18 w(A)l(TTRIBUTE)p 681 130 V 17 w(KEY\(k)o(eyv)m(al\))75
247 y(OUT)i(k)o(eyv)m(al)k Fp(Pro)o(vide)14 b(the)h(in)o(teger)f(k)o(ey)g(v)n
(alue)f(for)h(future)g(storing.)75 328 y(Generates)h(a)f(new)g(cac)o(he)h(k)o
(ey)m(.)158 413 y Fq(MPI)p 257 413 V 17 w(SET)p 365 413 V 18
w(A)l(TTRIBUTE\(handle,)10 b(k)o(eyv)m(al,)i(attribut)o(e)p
1196 413 V 14 w(v)m(al,)g(attribute)p 1484 413 V 14 w(len,)f(attribute)p
1774 413 V 14 w(destructor)p 2007 413 V 14 w(routine\))75 580
y(IN)16 b(handle)j Fp(opaque)14 b(attribute)g(handle)75 662
y Fq(IN)i(k)o(eyv)m(al)21 b Fp(The)14 b(in)o(teger)h(k)o(ey)f(v)n(alue)f(for)
g(future)i(storing.)75 744 y Fq(IN)h(attribute)p 339 744 V
14 w(v)m(al)21 b Fp(attribute)14 b(v)n(alue)g(\(opaque)g(p)q(oin)o(ter\))75
826 y Fq(IN)i(attribute)p 339 826 V 14 w(len)k Fp(length)14
b(of)f(attribute)h(\(in)g(b)o(ytes\))75 908 y Fq(IN)i(attribute)p
339 908 V 14 w(destructor)p 571 908 V 15 w(routine)i Fp(What)13
b(one)h(calls)g(to)g(get)g(rid)f(of)h(this)g(attribute)g(later)75
989 y(Stores)h(attribute)f(in)g(cac)o(he)h(b)o(y)e(k)o(ey)m(.)158
1074 y Fq(MPI)p 257 1074 V 17 w(TEST)p 398 1074 V 18 w(A)l
(TTRIBUTE\(handle,k)o(eyv)m(al,attrib)o(ut)o(e)p 1206 1074
V 14 w(ptr,len\))75 1191 y(IN)j(handle)j Fp(opaque)14 b(attribute)g(handle)75
1273 y Fq(IN)i(k)o(eyv)m(al)21 b Fp(The)14 b(in)o(teger)h(k)o(ey)f(v)n(alue)f
(for)g(future)i(storing.)75 1355 y Fq(OUT)h(attribute)p 389
1355 V 14 w(ptr)j Fp(v)o(oid)13 b(p)q(oin)o(ter)h(to)g(attribute,)g(or)g
(NULL)g(if)f(not)h(found)75 1437 y Fq(OUT)i(len)j Fp(length)14
b(in)f(b)o(ytes)i(of)e(attribute,)h(if)f(found.)75 1518 y(Retriev)o(e)h
(attribute)h(from)d(cac)o(he)j(b)o(y)e(k)o(ey)m(.)158 1603
y Fq(MPI)p 257 1603 V 17 w(DELETE)p 466 1603 V 18 w(A)l(TTRIBUTE\(handle,)h
(k)o(eyv)m(al\))75 1720 y(IN)i(handle)j Fp(opaque)14 b(attribute)g(handle)75
1802 y Fq(IN)i(k)o(eyv)m(al)21 b Fp(The)14 b(in)o(teger)h(k)o(ey)f(v)n(alue)f
(for)g(future)i(storing.)75 1883 y(Delete)g(attribute)f(from)e(cac)o(he)j(b)o
(y)f(k)o(ey)m(.)75 1990 y Fq(Example)75 2067 y Fp(Eac)o(h)g(attribute)g
(consists)h(of)e(a)g(p)q(oin)o(ter)h(or)g(a)f(v)n(alue)g(of)g(the)h(same)f
(size)h(as)g(a)f(p)q(oin)o(ter,)h(and)f(w)o(ould)g(t)o(ypically)f(b)q(e)75
2117 y(a)i(reference)i(to)d(a)h(larger)g(blo)q(c)o(k)f(of)g(storage)i
(managed)d(b)o(y)h(the)i(mo)q(dule.)h(As)f(an)e(example,)f(a)i(global)e(op)q
(eration)75 2166 y(using)h(cac)o(heing)g(to)f(b)q(e)i(more)e(e\016cien)o(t)h
(for)g(all)e(con)o(texts)j(of)e(a)h(group)f(after)i(the)f(\014rst)h(call)e
(migh)o(t)e(lo)q(ok)i(lik)o(e)g(this:)140 2255 y Fl(static)21
b(int)g(gop_key_assigned)e(=)i(0;)87 b(/*)21 b(0)h(only)f(on)g(first)g(entry)
g(*/)140 2305 y(static)g(int)g(gop_key;)173 b(/*)21 b(key)g(for)h(this)e
(module's)h(stuff)f(*/)140 2405 y(efficient_global_op)e(\(comm,)j(...\))140
2455 y(void)g(*comm;)140 2504 y({)184 2554 y(struct)g(gop_stuff_type)d
(*gop_stuff;)64 b(/*)21 b(whatever)f(we)h(need)g(*/)184 2604
y(void)43 b(*group)20 b(=)i(mpi_comm_group\(co)o(mm\);)184
2704 y(if)f(\(!gop_key_assigned\))105 b(/*)22 b(get)f(a)h(key)f(on)g(first)g
(call)g(ever)g(*/)p eop
%%Page: 16 18
bop 75 -100 a Fp(16)184 45 y Fl({)22 b(gop_key_assigne)o(d)d(=)j(1;)228
95 y(if)f(\()h(!)f(\(gop_key)f(=)i(mpi_Get_Attribute)o(_Key)o(\(\)\))d(\))i
({)271 145 y(mpi_abort)f(\("Insufficient)f(keys)i(available"\);)228
195 y(})184 244 y(})184 294 y(if)g(\(mpi_Test_Attribute)d
(\(mpi_group_attr\(gr)o(oup\),)o(gop_k)o(ey,&g)o(op_st)o(uff\)\))184
344 y({)k(/*)f(This)g(module)f(has)i(executed)e(in)h(this)g(group)g(before.)
293 394 y(We)g(will)g(use)g(the)h(cached)e(information)g(*/)184
444 y(})184 493 y(else)184 543 y({)i(/*)f(This)g(is)g(a)h(group)f(that)g(we)g
(have)g(not)g(yet)g(cached)g(anything)f(in.)293 593 y(We)h(will)g(now)g(do)h
(so.)249 643 y(*/)228 693 y(gop_stuff)d(=)j(/*)f(malloc)g(a)h(gop_stuff_type)
c(*/)228 792 y(/*)j(...)g(fill)g(in)g(*gop_stuff)f(with)h(whatever)f(we)i
(want)f(...)g(*/)228 892 y(mpi_set_attribu)o(te)e(\(mpi_group_attr\(g)o(roup)
o(\),)g(gop_key,)h(gop_stuff,)881 942 y(gop_stuff_destructo)o(r\);)184
992 y(})184 1041 y(/*)h(...)h(use)f(contents)f(of)h(*gop_stuff)f(to)h(do)h
(the)f(global)f(op)i(...)f(*/)162 1091 y(})162 1191 y(gop_stuff_destruct)o
(or)e(\(gop_stuff\))63 b(/*)21 b(called)g(by)g(MPI)g(on)h(group)f(delete)f
(*/)162 1241 y(struct)h(gop_stuff_type)e(*gop_stuff;)162 1290
y({)206 1340 y(/*)i(...)g(free)g(storage)g(pointed)f(to)h(by)h(gop_stuff)e
(...)h(*/)162 1390 y(})158 1599 y Fk(Discussion:)i Fj(The)16
b(cac)o(he)g(facilit)o(y)h(could)g(also)g(b)q(e)f(pro)o(vided)i(for)d(other)h
(descriptors,)i(but)e(it)g(is)g(less)g(clear)h(ho)o(w)75 1648
y(suc)o(h)12 b(pro)o(vision)i(w)o(ould)e(b)q(e)f(useful.)18
b(It)11 b(is)h(suggested)g(that)f(this)i(issue)f(b)q(e)f(review)o(ed)i(in)f
(reference)f(to)g(Virtual)i(T)m(op)q(ologies.)75 1964 y Fn(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 2039 y(Safet)n(y\))75 2154 y Fi(3.10.1)55 b(Basic)20
b(Statemen)n(ts)75 2247 y Fp(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 2296 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 2346 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 2396 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 2446 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
2496 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
2546 y(not)i(imp)q(ose)f(a)g(signi\014can)o(t)h(o)o(v)o(erhead.)158
2604 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
2654 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 2704 y(descriptor)d(to)f(b)q(e)g(v)n(alid)f(and)g(mo)q
(di\014able.)p eop
%%Page: 17 19
bop 75 -100 a Fo(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 Fp(17)75 45 y
Fi(3.10.2)55 b(Mo)r(dels)19 b(of)g(Execution)75 124 y Fp(W)m(e)h(sa)o(y)g
(that)h(a)f(parallel)f(pro)q(cedure)k(is)d Fm(active)h Fp(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 Fq(Nonreen)o(tran)o(t)i(parallel)i(pro)q(cedures)75 467 y
Fp(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 Fq(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 Fp(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 Fq(W)l(ell-nested)g(parallel)g(pro)q(cedures)75 2503
y Fp(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: 18 20
bop 75 -100 a Fp(18)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
Fl(MPI)p 1129 145 14 2 v 15 w(COMM)p 1232 145 V 15 w(MAKE)p
Fp(\))f(for)g(eac)o(h)i(new)f(in)o(v)o(o)q(cation.)75 254 y
Fq(The)i(General)d(case)75 331 y Fp(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 381 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
431 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 481 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
531 y(comm)o(unicator)11 b(creation)j(is)g(prop)q(erly)g(co)q(ordinated.)75
670 y Fn(3.11)70 b(Motiv)l(ating)23 b(Examples)75 844 y Fk(Discussion:)d
Fj(The)15 b(in)o(tra-comm)o(unication)i(examples)f(w)o(ere)e(\014rst)h
(presen)o(ted)g(at)f(the)h(June)f(MPI)g(meeting;)i(the)e(in)o(ter-)75
894 y(comm)o(unication)i(routines)e(\(when)f(added\))h(are)g(new.)75
1094 y Fi(3.11.1)55 b(Curren)n(t)19 b(Practice)g(#1)75 1171
y Fp(Example)12 b(#1a:)162 1256 y Fl(int)21 b(me,)h(size;)162
1305 y(...)162 1355 y(mpi_init\(\);)162 1405 y(mpi_comm_rank\(MPI_)o(COMM_)o
(ALL,)c(&me\);)162 1455 y(mpi_comm_size\(MPI_)o(COMM_)o(ALL,)g(&size\);)162
1554 y(printf\("Process)h(\045d)i(size)g(\045d\\n",)g(me,)g(size\);)162
1604 y(...)162 1654 y(mpi_end\(\);)75 1738 y Fp(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 1788 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 1838
y(comm)o(unication)10 b(itself.)75 1888 y(Example)i(#1b:)162
1972 y Fl(int)21 b(me,)h(size;)162 2022 y(...)162 2072 y(mpi_init\(\);)162
2122 y(mpi_comm_rank\(MPI_)o(COMM_)o(ALL,)c(&me\);)65 b(/*)21
b(local)g(*/)162 2171 y(mpi_comm_size\(MPI_)o(COMM_)o(ALL,)d(&size\);)j(/*)g
(local)g(*/)162 2271 y(if\(\(me)g(\045)g(2\))h(==)f(0\))228
2321 y(mpi_send\(...,)e(MPI_COMM_ALL,)g(\(\(me)i(+)g(1\))h(\045)f(size\)\);)
162 2371 y(else)228 2420 y(mpi_recv\(...,)e(MPI_COMM_ALL,)g(\(\(me)i(-)g(1)h
(+)f(size\))g(\045)h(size\)\);)162 2520 y(...)162 2570 y(mpi_end\(\);)75
2654 y Fp(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 2704 y(the)c(\\all")f(comm)o(unicator.)p eop
%%Page: 19 21
bop 75 -100 a Fo(3.11.)26 b(MOTIV)-5 b(A)m(TING)14 b(EXAMPLES)1120
b Fp(19)75 45 y Fi(3.11.2)55 b(Curren)n(t)19 b(Practice)g(#2)162
122 y Fl(void)i(*data;)162 172 y(int)g(me;)162 221 y(...)162
271 y(mpi_init\(\);)162 321 y(mpi_comm_rank\(MPI_)o(COMM_)o(ALL,)d(&me\);)162
421 y(if\(me)j(==)g(0\))162 470 y({)249 520 y(/*)h(get)f(input,)f(create)h
(buffer)g(``data'')f(*/)249 570 y(...)162 620 y(})162 719 y
(mpi_broadcast\(MPI_)o(COMM_)o(ALL,)e(0,)k(data\);)162 819
y(...)162 869 y(mpi_end\(\);)75 948 y Fp(This)14 b(example)e(illustrates)i
(the)h(use)g(of)e(a)g(collectiv)o(e)h(comm)o(unication.)75
1062 y Fi(3.11.3)55 b(\(Appro)n(ximate\))19 b(Curren)n(t)g(Practice)g(#3)162
1139 y Fl(int)i(me;)162 1188 y(void)g(*grp0,)g(*grprem,)f(*commslave;)162
1238 y(...)162 1288 y(mpi_init\(\);)162 1338 y(mpi_comm_rank\(MPI_)o(COMM_)o
(ALL,)e(&me\);)43 b(/*)21 b(local)g(*/)162 1388 y(mpi_local_subgroup)o
(\(MPI_)o(GROUP)o(_ALL,)d(1,)k(``[0]'',)e(&grp0\);)g(/*)h(local)g(*/)162
1438 y(mpi_group_differen)o(ce\(MP)o(I_GRO)o(UP_AL)o(L,)e(grp0,)h(&grprem\);)
g(/*)i(local)f(*/)162 1487 y(mpi_comm_make\(MPI_)o(COMM_)o(ALL,)d(grprem,)j
(&commslave\);)162 1587 y(if\(me)g(!=)g(0\))162 1637 y({)249
1687 y(/*)h(compute)e(on)h(slave)g(*/)249 1736 y(...)249 1786
y(mpi_reduce\(commslav)o(e,)e(...\);)249 1836 y(...)162 1886
y(})162 1936 y(/*)j(zero)f(falls)f(through)h(immediately)e(to)j(this)e
(reduce,)h(others)f(do)i(later...)e(*/)162 1986 y(mpi_reduce\(MPI_COM)o
(M_ALL)o(,)f(...\);)75 2065 y Fp(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 2114 y(created,)g(and)f(then)h(ho)o(w)f(a)g(comm)o
(unicator)d(is)j(formed)f(\()p Fl(commslave)p Fp(\))f(for)i(that)g(new)h
(group.)21 b(The)16 b(new)f(com-)75 2164 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 Fl(MPI)p 1695 2164 14 2 v 15 w(COMM)p
1798 2164 V 15 w(ALL)75 2214 y Fp(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 2264 y(tect)j(comm)o(unicatio)o
(n.)i(That)d(is,)f(comm)o(unication)d(in)k Fl(MPI)p 1035 2264
V 15 w(COMM)p 1138 2264 V 15 w(ALL)f Fp(is)g(insulated)h(from)e(comm)o
(unication)e(in)75 2314 y Fl(commslave)p Fp(,)h(and)h(vice)h(v)o(ersa.)158
2363 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
2413 y(distinct.)75 2527 y Fi(3.11.4)55 b(Example)19 b(#4)75
2604 y Fp(The)f(follo)o(wing)d(example)i(is)g(mean)o(t)g(to)h(illustrate)f
(\\safet)o(y")g(b)q(et)o(w)o(een)j(p)q(oin)o(t-to-p)q(oin)o(t)c(and)i
(collectiv)o(e)f(com-)75 2654 y(m)o(unication.)k(MPI)16 b(guaran)o(tees)h
(that)e(a)h(single)f(comm)o(unicator)e(can)j(do)f(safe)h(p)q(oin)o(t-to-p)q
(oin)o(t)e(and)i(collectiv)o(e)75 2704 y(comm)o(unication.)p
eop
%%Page: 20 22
bop 75 -100 a Fp(20)75 45 y Fl(#define)20 b(TAG_ARBITRARY)f(12345)75
95 y(#define)h(SOME_COUNT)151 b(50)162 145 y(int)21 b(me;)162
195 y(int)g(len;)162 244 y(void)g(*contexts;)162 294 y(void)g(*subgroup;)162
394 y(...)162 444 y(mpi_init\(\);)162 493 y(mpi_contexts_alloc)o(\(MPI_)o
(COMM_)o(ALL,)d(1,)k(&contexts,)d(&len\);)162 543 y(mpi_local_subgroup)o
(\(MPI_)o(GROUP)o(_ALL,)f(4,)k(``[2,4,6,8]'',)c(&subgroup\);)i(/*)h(local)g
(*/)162 593 y(mpi_group_rank\(sub)o(group)o(,)e(&me\);)108
b(/*)21 b(local)g(*/)162 693 y(if\(me)g(!=)g(MPI_UNDEFINED\))162
742 y({)249 792 y(mpi_comm_bind\(subgr)o(oup,)d(context,)j(0,)g(&the_comm\);)
e(/*)j(local)f(*/)249 892 y(/*)h(asynchronous)d(receive:)h(*/)249
942 y(mpi_irecv\(...,)f(MPI_SRC_ANY,)h(TAG_ARBITRARY,)e(the_comm\);)162
992 y(})162 1091 y(for\(i)j(=)h(0;)f(i)g(<)h(SOME_COUNT,)e(i++\))249
1141 y(mpi_reduce\(the_comm)o(,)f(...\);)75 1264 y Fi(3.11.5)55
b(Library)19 b(Example)f(#1)75 1344 y Fp(The)c(main)e(program:)162
1432 y Fl(int)21 b(done)g(=)h(0;)162 1482 y(user_lib_t)e(*libh_a,)g(*libh_b;)
162 1532 y(void)h(*dataset1,)f(*dataset2;)162 1582 y(...)162
1631 y(mpi_init\(\);)162 1681 y(...)162 1731 y(init_user_lib\(MPI_)o(COMM_)o
(ALL,)e(&libh_a\);)162 1781 y(init_user_lib\(MPI_)o(COMM_)o(ALL,)g
(&libh_b\);)162 1831 y(...)162 1880 y(user_start_op\(libh)o(_a,)h
(dataset1\);)162 1930 y(user_start_op\(libh)o(_a,)g(dataset2\);)162
1980 y(...)162 2030 y(while\(!done\))162 2080 y({)249 2129
y(/*)j(work)f(*/)249 2179 y(...)249 2229 y(mpi_reduce\(MPI_COMM)o(_ALL,)d
(...\);)249 2279 y(...)249 2329 y(/*)k(see)f(if)g(done)g(*/)249
2379 y(...)162 2428 y(})162 2478 y(user_end_op\(libh_a)o(\);)162
2528 y(user_end_op\(libh_b)o(\);)75 2615 y Fp(The)14 b(user)h(library)e
(initialization)f(co)q(de:)75 2704 y Fl(void)21 b(init_user_lib\(voi)o(d)e
(*comm,)i(user_lib_t)e(**handle\))p eop
%%Page: 21 23
bop 75 -100 a Fo(3.11.)26 b(MOTIV)-5 b(A)m(TING)14 b(EXAMPLES)1120
b Fp(21)75 45 y Fl({)140 95 y(user_lib_t)20 b(*save;)140 145
y(void)h(*context;)140 195 y(void)g(*group;)140 244 y(int)h(len;)140
344 y(user_lib_initsave\(&)o(save\))o(;)d(/*)i(local)g(*/)140
394 y(mpi_comm_group\(comm)o(,)e(&group\);)140 444 y(mpi_contexts_alloc\()o
(comm,)f(1,)k(&context,)e(&len\);)140 493 y(mpi_comm_dup\(comm,)e(context,)j
(save)g(->)g(comm\);)140 593 y(/*)h(other)f(inits)f(*/)140
643 y(*handle)h(=)g(save;)75 693 y(})75 777 y Fp(Notice)14
b(that)g(the)h(comm)o(unicator)c Fl(comm)i Fp(passed)i(to)e(the)i(library)e
Fm(is)h Fp(needed)h(to)f(allo)q(cate)f(new)h(con)o(texts.)75
827 y(User)h(start-up)g(co)q(de:)75 911 y Fl(void)21 b(user_start_op\(use)o
(r_lib)o(_t)e(*handle,)h(void)h(*data\))75 961 y({)162 1011
y(user_lib_state)e(*state;)162 1060 y(state)i(=)h(handle)e(->)h(state;)162
1110 y(mpi_irecv\(save)e(->)i(comm,)g(...,)g(data,)g(...)g(&\(state)f(->)i
(irecv_handle\)\);)162 1160 y(mpi_isend\(save)d(->)i(comm,)g(...,)g(data,)g
(...)g(&\(state)f(->)i(isend_handle\)\);)75 1210 y(})75 1294
y Fp(User)15 b(clean-up)f(co)q(de:)75 1378 y Fl(void)21 b(user_end_op\(user_)
o(lib_t)d(*handle\))75 1428 y({)162 1478 y(mpi_wait\(save)h(->)j(state)e(->)i
(isend_handle\);)162 1528 y(mpi_wait\(save)d(->)j(state)e(->)i
(irecv_handle\);)75 1577 y(})75 1695 y Fi(3.11.6)55 b(Library)19
b(Example)f(#2)75 1772 y Fp(The)c(main)e(program:)162 1857
y Fl(int)21 b(ma,)h(mb;)162 1907 y(...)162 1956 y(list_a)f(:=)g(``[0,1]'';)
162 2006 y(list_b)g(:=)g(``[0,2{,3}]'';)162 2106 y(mpi_local_subgroup)o
(\(MPI_)o(GROUP)o(_ALL,)d(2,)k(list_a,)e(&group_a\);)162 2156
y(mpi_local_subgroup)o(\(MPI_)o(GROUP)o(_ALL,)e(2\(3\),)j(list_b,)f
(&group_b\);)162 2255 y(mpi_comm_make\(MPI_)o(COMM_)o(ALL,)e(group_a,)j
(&comm_a\);)162 2305 y(mpi_comm_make\(MPI_)o(COMM_)o(ALL,)d(group_b,)j
(&comm_b\);)162 2405 y(mpi_comm_rank\(comm)o(_a,)e(&ma\);)162
2455 y(mpi_comm_rank\(comm)o(_b,)g(&mb\);)162 2554 y(if\(ma)i(!=)g
(MPI_UNDEFINED\))228 2604 y(lib_call\(comm_a)o(\);)162 2654
y(if\(mb)g(!=)g(MPI_UNDEFINED\))162 2704 y({)p eop
%%Page: 22 24
bop 75 -100 a Fp(22)228 45 y Fl(lib_call\(comm_b)o(\);)228
95 y(lib_call\(comm_b)o(\);)162 145 y(})75 228 y Fp(The)14
b(library:)75 311 y Fl(void)21 b(lib_call\(void)e(*comm\))75
361 y({)162 410 y(int)i(me,)h(done)e(=)i(0;)162 460 y(mpi_comm_rank\(comm)o
(,)d(&me\);)162 510 y(if\(me)i(==)g(0\))249 560 y(while\(!done\))249
610 y({)337 659 y(mpi_recv\(...,)e(comm,)h(MPI_SRC_ANY\);)337
709 y(...)249 759 y(})162 809 y(else)162 859 y({)249 909 y(/*)i(work)f(*/)249
958 y(mpi_send\(...,)e(comm,)i(0\);)249 1008 y(....)162 1058
y(})162 1108 y(MPI_SYNC\(comm\);)62 b(/*)22 b(include/no)e(safety)g(for)h
(safety/no)f(safety)h(*/)75 1158 y(})75 1241 y Fp(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 1290 y Fl(list)p
166 1290 14 2 v 15 w(b)p Fp(.)f(This)c(example)e(illustrates)i(that,)f
(despite)h(con)o(texts,)h(subsequen)o(t)g(calls)e(to)h Fl(lib)p
1510 1290 V 15 w(call)e Fp(with)i(the)g(same)75 1340 y(con)o(text)j(need)h
(not)e(b)q(e)h(safe)g(from)d(one)j(another)g(\(\\bac)o(k)f(masking"\).)20
b(Safet)o(y)c(is)f(realized)h(if)e(the)i Fl(MPI)p 1732 1340
V 16 w(SYNC)e Fp(is)75 1390 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 1440 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 1490 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 1539 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 1589
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 1639 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
1689 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 1739 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.)75 1855 y Fi(3.11.7)55 b(In)n(ter-Comm)n(unication)20
b(Examples)75 1932 y Fp(Examples)13 b(of)g(usage)h(of)g(all)e(routines)j(in)e
(this)h(section)p Fd(:)7 b(:)g(:)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF