current chapter version (changes in handlers and few addional
Marc Snir (snir@watson.ibm.com)
Thu, 21 Dec 1995 11:03:13 -0500
%!PS-Adobe-2.0
%%Creator: dvips 5.47 (RS/6000 1.0) Copyright 1986-91 Radical Eye Software
%%Title: temp.dvi
%%Pages: 28 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 250 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 1 1 df<FFFFC0FFFFC012027D871A>0
D E /Fb 5 62 df<03060C1C183830706060E0E0E0E0E0E0E0E0E0E06060703038181C0C060308
1E7E950D>40 D<C0603038181C0C0E06060707070707070707070706060E0C1C18383060C0081E
7E950D>I<06001E00FE00EE000E000E000E000E000E000E000E000E000E000E000E000E000E00
FFE0FFE00B137D9211>49 D<1F003FC061E0C0E0E070E0700070007000E000C001C0030006000C
30183030707FE0FFE0FFE00C137E9211>I<7FFFE0FFFFF0000000000000000000000000000000
000000FFFFF07FFFE0140A7E8B19>61 D E /Fc 6 113 df<0C000C001C003C00FC004C000C00
0C000C000C000C000C000C000C000C000C007FC07FC00A127E910F>49 D<7C00FF00E380418001
801F807F80E180C180C180E3807FF03CF00C0D7E8C0F>97 D<0E000E000E000000000000007E00
7E00060006000600060006000600060006000600FFE0FFE00B137E920F>105
D<0380038003800000000000003F803F8001800180018001800180018001800180018001800180
018001804180E380FF007C0009197F920F>I<FEE0FFF03BB03330333033303330333033303330
3330FFFCFFFC0E0D808C0F>109 D<F780FFC038E0387030303030303030303030387038E03FC0
37003000300030003000FC00FC000C137F8C0F>112 D E /Fd 2 81 df<00001C00003C0000F8
0001E00003C0000780000F00000E00001E00003C00003C00003C00007800007800007800007800
007800007800007800007800007800007800007800007800007800007800007800007800007800
007800007800007800007800007800007800007800007800007800007800007800007800007800
00780000780000780000780000780000780000780000780000F00000F00000F00001E00001E000
03C0000380000700000E00001C0000780000E00000E000007800001C00000E0000070000038000
03C00001E00001E00000F00000F00000F000007800007800007800007800007800007800007800
007800007800007800007800007800007800007800007800007800007800007800007800007800
007800007800007800007800007800007800007800007800007800007800007800007800007800
007800007800007800007800007800003C00003C00003C00001E00000E00000F000007800003C0
0001E00000F800003C00001C167C7B8121>40 D<FFFFFFFFE0FFFFFFFFF07800001FF07C000003
F03E000000F81F000000380F0000001C0F8000000C07C000000C03C000000603E000000001F000
000000F80000000078000000007C000000003E000000001E000000001F000000000F8000000007
C000000003C000000003C000000001800000000380000000030000000006000000000C00000000
1800000000380000000030000000006000000000C0000006018000000C038000000C030000001C
06000000380C000000F818000001F83800001FF03FFFFFFFF07FFFFFFFF0FFFFFFFFE0272A7E7F
2C>80 D E /Fe 6 103 df<70F8FCFC7C0C0C0C181838306040060E7C840D>59
D<000001C00000078000001E00000078000001E00000078000000E0000003C000000F0000003C0
00000F0000003C000000F0000000F00000003C0000000F00000003C0000000F00000003C000000
0E0000000780000001E0000000780000001E0000000780000001C01A1A7C9723>I<E000000078
0000001E0000000780000001E0000000780000001C0000000F00000003C0000000F00000003C00
00000F00000003C0000003C000000F0000003C000000F0000003C000000F0000001C0000007800
0001E00000078000001E00000078000000E00000001A1A7C9723>62 D<00F18003FDC0078F800E
07801C07803C07803C0700780700780700780700F00E00F00E00F00E00F00E18F01C30F03C3070
7C3078FC603FCFC00F078015147E9318>97 D<07803F803F000700070007000E000E000E000E00
1C001C001CF01FFC3F1E3E0E3C0F380F700F700F700F700FE01EE01EE01EE03CE03CE038607071
E03FC01F0010207E9F14>I<00007C0000FE00019E00039E00030C000700000700000700000700
000E00000E00000E0000FFF001FFF0000E00001C00001C00001C00001C00001C00003800003800
00380000380000380000700000700000700000700000700000E00000E00000E00000E00000C000
01C00031C000798000F300007E00003C000017297E9F16>102 D E /Ff
2 21 df<C0000CE0001C7000383800701C00E00E01C006018007038003870001CE0000FC000078
0000780000FC0001CE000387000703800601800E01C01C00E0380070700038E0001CC0000C1618
7A9623>2 D<000000C0000003C000000F0000003C000000F0000003C000000F0000001C000000
78000001E00000078000001E00000078000000E0000000780000001E0000000780000001E00000
00780000001C0000000F00000003C0000000F00000003C0000000F00000003C0000000C0000000
00000000000000000000000000000000000000000000000000FFFFFFC0FFFFFFC01A247C9C23>
20 D E /Fg 38 122 df<FFE0FFE0FFE00B037F8C10>45 D<F0F0F0F004047B830E>I<00C001C0
07C0FFC0FFC0FBC003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003
C003C003C003C003C003C003C003C003C003C0FFFFFFFFFFFF10227CA118>49
D<03F0000FFC001FFE003C1F003807807007C07003C0F003E0E001E06001E02001E00001E00001
E00001E00003C00003C0000780000780000F00001E00003C0000780000F00001E00001C0000380
000700000E00001C0000380000700000FFFFE0FFFFE0FFFFE013227EA118>I<01F00007FC001F
FF003E0F003807807003C02003C02003C00003C00003C00003C0000780000780000F00001E0003
FC0003F80003FE00000F000007800003C00003C00001E00001E00001E00001E00001E08001E0C0
03C0E003C07007803C0F801FFF000FFC0003F00013237EA118>I<001F00001F00002F00002F00
006F0000EF0000CF0001CF0001CF00038F00038F00078F00070F000F0F000E0F001E0F003C0F00
3C0F00780F00780F00F00F00FFFFF8FFFFF8FFFFF8000F00000F00000F00000F00000F00000F00
000F00000F00000F0015217FA018>I<01F00007FC000FFE001E0F003C07803C07807803C07803
C07803C07803C07803C03803803C07801E0F000F1E0007FC0003F8000FFE001E0F003C07807803
C07803C0F001E0F001E0F001E0F001E0F001E0F001E07803C07803C03C07803E0F801FFF0007FC
0001F00013237EA118>56 D<01F00007FC000FFE001E0F003C07003807807803807803C0F003C0
F001C0F001E0F001E0F001E0F001E0F001E0F001E07003E07803E07803E03C07E03E1FE01FFDE0
0FF9E003E3C00003C00003C0000380000780000700000F00101E00183C003FF8001FF00007C000
13237EA118>I<001F0000001F0000003F8000003F8000003B8000007BC0000073C0000071C000
00F1E00000F1E00000E0E00001E0F00001E0F00001C0F00003C0780003C078000380780007803C
0007803C0007003C000F001E000F001E000FFFFE001FFFFF001FFFFF001C000F003C0007803C00
078038000780780003C0780003C0700003C0F00001E0F00001E0E00001E01B237EA220>65
D<FFFC00FFFF80FFFFC0F007F0F001F0F00078F0003CF0003CF0003CF0003CF0003CF00038F000
78F000F0F003E0FFFFC0FFFF00FFFFC0F00FE0F001F8F00078F0003CF0001CF0001EF0001EF000
1EF0001EF0001EF0003CF0007CF000F8F003F0FFFFE0FFFFC0FFFE0017237BA220>I<FFFE0000
FFFFC000FFFFE000F003F000F000F800F0007C00F0003E00F0001E00F0000F00F0000F00F00007
80F0000780F0000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F000
03C0F00003C0F0000380F0000780F0000780F0000780F0000F00F0001F00F0001E00F0003C00F0
00FC00F003F800FFFFE000FFFFC000FFFE00001A237BA223>68 D<FFFFF0FFFFF0FFFFF0F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFE0FFFFE0
FFFFE0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000FFFFF8FFFFF8FFFFF815237BA21D>I<000FF000003FFE0000FFFF8001F81F8003
E00780078001000F0000001E0000001E0000003C0000003C000000780000007800000078000000
F0000000F0000000F0000000F0000000F0000000F0000000F000FFC0F000FFC0F000FFC0780003
C0780003C0780003C03C0003C03C0003C01E0003C01E0003C00F0003C0078003C003E003C001F8
0FC000FFFFC0003FFF00000FF8001A257DA321>71 D<F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00FFFFC0FFFFC0FFFFC012237BA21A>76 D<FC001EFE001EFE001EFE001EF7001EF7001EF3801E
F3801EF3C01EF1C01EF1C01EF1E01EF0E01EF0F01EF0F01EF0781EF0781EF0381EF03C1EF03C1E
F01E1EF01E1EF00E1EF00F1EF0071EF0071EF0079EF0039EF0039EF001DEF001DEF000FEF000FE
F000FEF0007E17237BA222>78 D<001FC000007FF00001FFFC0003F07E0007C01F000F800F801F
0007C01E0003C03C0001E03C0001E0780000F0780000F0780000F070000070F0000078F0000078
F0000078F0000078F0000078F0000078F0000078F0000078F0000078780000F0780000F0780000
F07C0001F03C0001E03E0003E01E0003C01F0007C00F800F8007C01F0003F07E0001FFFC00007F
F000001FC0001D257DA324>I<FFFE00FFFF80FFFFC0F003E0F000F0F00078F00078F0003CF000
3CF0003CF0003CF0003CF0003CF00078F00078F000F0F003E0FFFFC0FFFF80FFFE00F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
0016237BA21F>I<F0001F0001E0F0003F8001E0F0003F8001E078003F8001C078003B8003C078
007BC003C078007BC003C03C0073C007803C00F1C007803C00F1E007803C00F1E007801E00E1E0
0F001E01E0E00F001E01E0F00F001E01E0F00F000F01C0F01E000F03C0701E000F03C0781E0007
03C0781C00078380383C00078380383C000787803C3C000387003C38000387001C380003C7001C
780003CF001C780001CE001E700001CE000E700001CE000E700001EE000EF00000EC000EE00000
FC0007E00000FC0007E00000FC0007E00000780007C0002B237FA22E>87
D<07E01FF83FFC3C1E301E200F000F000F000F01FF0FFF3FFF7F0F780FF00FF00FF00FF80F7C3F
7FFF3FFF1F8F10167E9517>97 D<F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F1F000F7FC00FFFE00FC1F00F80F00F00780F00780F003C0F0
03C0F003C0F003C0F003C0F003C0F003C0F003C0F00780F00780F80F00FC3E00FFFE00F7F800F3
F00012237CA219>I<01FC0007FF000FFF801F07803C0180780000780000700000F00000F00000
F00000F00000F00000F000007800007800007800403C00C01F07C00FFFC007FF8001FC0012167E
9516>I<0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C003F3C00FFFC01FFFC03F0FC03C07C07803C07803C0F003C0F003C0F003C0F003C0F003
C0F003C0F003C0F003C07803C07803C03C07C03E0FC01FFFC00FFBC003E3C012237EA219>I<03
F00007FC001FFE003E0F003C0780780380780380F001C0FFFFC0FFFFC0FFFFC0F00000F00000F0
00007000007800007800003C00801F07800FFF8007FF0001F80012167E9516>I<01F0F807FFF8
0FFFF81F1F801E0F003C07803C07803C07803C07803C07801E0F001F1F001FFE001FFC0039F000
3800003800003C00003FFE001FFFC01FFFE03FFFF07801F0F800F8F00078F00078F00078F00078
7800F03E03E01FFFC00FFF8001FC0015217F9518>103 D<F0F0F0F0000000000000000000F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>105 D<F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F01F80F03F00F03E00F0
7C00F0F800F1F000F3E000F7C000FFC000FFC000FFE000FFE000FDF000F8F800F07800F07C00F0
3E00F01E00F01F00F00F00F00F80F007C012237CA218>107 D<F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>I<F0F807C0F3FE1FF0FFFF
7FF8FE0FF078FC0FE07CF807C03CF807C03CF007803CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C
1E167C9529>I<F1F8F7FCFFFEFE1EF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00F10167C9519>I<01FC0007FF000FFF801F07C03C01E07800F07800
F0700070F00078F00078F00078F00078F00078F000787800F07800F07C01F03E03E01F07C00FFF
8007FF0001FC0015167F9518>I<F1F000F7FC00FFFE00FC3F00F80F00F00780F00780F007C0F0
03C0F003C0F003C0F003C0F003C0F003C0F007C0F00780F00F80F80F00FC3E00FFFE00F7F800F3
F000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000012207C9519>I<
F0E0F3E0F7E0FFE0FF00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F0
00F000F0000B167C9511>114 D<07F01FFE3FFF3C0F7803780078007C003F003FF01FF80FFC01
FE001F000F000F400FE00FF81EFFFE3FFC0FF010167F9513>I<0F000F000F000F000F000F00FF
F8FFF8FFF80F000F000F000F000F000F000F000F000F000F000F000F000F000F000F080F1C07FC
07F803E00E1C7F9B12>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF01FF83F7FFF7FEF1F8F10167C9519>I<F007803CF00FC03CF00FC03C780DC078
781DC078781DE078781CE0783C18E0F03C38E0F03C38F0F01C38F0E01E3871E01E3071E01E7079
E00E7079C00E7039C00F603BC007603B8007601B8007C01F8007C01F8003C01F001E167F9521>
119 D<7801F07C01E03E03C01E07C00F0780078F0007DE0003FC0001FC0000F80000700000F800
01FC0003DC00039E00078F000F07801E07801E03C03C01E07800F0F800F81516809516>I<F001
E0F001E07803C07803C07C03C03C07803C07801E07801E07001E0F000F0F000F0E00071E00079E
00039C00039C00039C0001980001D80000F80000F00000F00000F00000E00000E00001E00001C0
0001C0004380007F80007F00007E000013207F9516>I E /Fh 16 119 df<387CFEFEFE7C3800
000000387CFEFEFE7C3807127D910D>58 D<00038000000380000007C0000007C0000007C00000
0FE000000FE000001FF000001BF000001BF0000031F8000031F8000061FC000060FC0000E0FE00
00C07E0000C07E0001803F0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000F
E00C0007E0FFC07FFEFFC07FFE1F1C7E9B24>65 D<FFFFF800FFFFFF000FC01FC00FC007E00FC0
03F00FC001F80FC001F80FC000FC0FC000FC0FC000FC0FC000FE0FC000FE0FC000FE0FC000FE0F
C000FE0FC000FE0FC000FE0FC000FE0FC000FC0FC000FC0FC000FC0FC001F80FC001F80FC003F0
0FC007E00FC01FC0FFFFFF00FFFFF8001F1C7E9B25>68 D<0FF8001FFE003E1F803E07803E07C0
1C07C00007C003FFC01FFFC03F87C07E07C0FC07C0FC07C0FC07C0FC0FC07E1FC03FFBF80FE1F8
15127F9117>97 D<03FC000FFE001F1F003E1F007C1F007C0E00FC0000FC0000FC0000FC0000FC
0000FC00007C00007E01803E03801F07000FFE0003F80011127E9115>99
D<01FC000FFF001F0F803E07C07C03C07C03E0FC03E0FFFFE0FFFFE0FC0000FC0000FC00007C00
007E00603E00C01F81C00FFF0001FC0013127F9116>101 D<1E003F003F007F003F003F001E00
00000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F
001F00FFE0FFE00B1E7F9D0E>105 D<FF00FF001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1D7F9C
0E>108 D<FF1FC0FF7FE01FE1F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>110 D<01FC000FFF801F07C03E
03E07C01F07C01F0FC01F8FC01F8FC01F8FC01F8FC01F8FC01F87C01F07C01F03E03E01F07C00F
FF8001FC0015127F9118>I<FF1FC0FFFFE01FC1F81F00F81F00FC1F007C1F007E1F007E1F007E
1F007E1F007E1F007E1F007C1F00FC1F80F81FC1F01F7FE01F1F801F00001F00001F00001F0000
1F00001F0000FFE000FFE000171A7F911B>I<FE3E00FE7F001ECF801F8F801F8F801F07001F00
001F00001F00001F00001F00001F00001F00001F00001F00001F0000FFF000FFF00011127F9114
>114 D<1FD83FF87038E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CF038FFF0CF
C00E127E9113>I<030003000300070007000F000F003F00FFFCFFFC1F001F001F001F001F001F
001F001F001F001F0C1F0C1F0C1F0C0F9807F003E00E1A7F9913>I<FF07F8FF07F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F01F80F03F80FFE
FF03F8FF18127F911B>I<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003
E30001F60001F60001FE0000FC0000FC0000780000780000300016127F9119>I
E /Fi 23 119 df<70F8F8F0E005057B840E>46 D<000007000000070000000F0000000F000000
1F0000003F0000003F0000006F0000006F000000CF000000CF0000018F0000038F0000030F0000
060F0000060F00000C0F80000C07800018078000180780003FFF80007FFF800060078000C00780
00C00780018007800180078003000780070007800F0007807FC07FF8FFC07FF81D207E9F22>65
D<01FFFFFE01FFFFFC001E003C001E001C001E001C003C000C003C000C003C000C003C00180078
0C1800780C1800780C0000781C0000F0380000FFF80000FFF80000F0380001E0300001E0300001
E0303001E0306003C0006003C0006003C000C003C001C007800180078003800780070007801F00
FFFFFF00FFFFFE001F1F7D9E1F>69 D<01FFFF0001FFFFC0001E01E0001E00F0001E0078003C00
78003C0078003C0078003C0078007800F0007800F0007801E0007803C000F00F0000FFFE0000FF
F80000F03C0001E01E0001E00E0001E00F0001E00F0003C01E0003C01E0003C01E0003C01E0007
803C0007803C1807803C1807803C30FFF81E30FFF00FE0000007C01D207D9E21>82
D<00F18003FDC0078F800E07801C07803C07803C0700780700780700780700F00E00F00E00F00E
00F00E30F01C60F03C60707C6078FCC03FCFC00F078014147C9317>97 D<07803F803F00070007
0007000E000E000E000E001C001C001CF01FFC3F1E3E0E3C0F380F700F700F700F700FE01EE01E
E01EE03CE03CE038607071E03FC01F0010207B9F15>I<007E0001FF000383800F07801E07801C
07003C0200780000780000780000F00000F00000F00000F00000F00000700200700700381E001F
F80007E00011147C9315>I<0000780003F80003F00000700000700000700000E00000E00000E0
0000E00001C00001C000F1C003FDC0078F800E07801C07803C07803C0700780700780700780700
F00E00F00E00F00E00F00E30F01C60F03C60707C6078FCC03FCFC00F078015207C9F17>I<007C
0001FF000783000F01801E01803C01803C0300780E007FFC007FE000F00000F00000F00000F000
007000007002007807003C1E001FF80007E00011147C9315>I<0000F80001FC0003BC00033C00
0718000700000700000E00000E00000E00000E00000E0001FFE001FFE0001C00001C00001C0000
380000380000380000380000380000700000700000700000700000700000700000E00000E00000
E00000E00001C00001C00001C0000180003380007B8000F300007E00003C00001629829F0E>I<
003C6000FF7001E3E00381E00701E00F01E00F01C01E01C01E01C01E01C03C03803C03803C0380
3C03803C07003C0F001C1F001E3F000FFE0003CE00000E00000E00001C00001C00301C00783800
F0F0007FE0003F8000141D7E9315>I<006000F000F000E000000000000000000000000000000F
001F80318031C063806380C3800700070007000E000E000E001C301C601C6038C018C01F800F00
0C1F7D9E0E>105 D<01E0000FE0000FC00001C00001C00001C000038000038000038000038000
0700000700000703C00707E00E0C600E10E00E21E00E61E01CC1C01F80001F00001FC00039E000
3870003870003838607070C07070C07070C0703180E03F00601E0013207D9F15>107
D<03C01FC01F8003800380038007000700070007000E000E000E000E001C001C001C001C003800
3800380038007000700070007180E300E300E300E6007E003C000A207C9F0C>I<1E07C0F8003F
1FE1FC0033B8730E0063E076070063C03C07006380380700C780780E000700700E000700700E00
0700700E000E00E01C000E00E01C000E00E01C000E00E038601C01C038C01C01C038C01C01C071
801C01C031803803803F001801801E0023147D9325>I<1E07C03F1FE033B87063E07063C03863
8038C780700700700700700700700E00E00E00E00E00E00E01C31C01C61C01C61C038C1C018C38
01F81800F018147D931A>I<007C0001FF000383800F01C01E01C01C01E03C01E07801E07801E0
7801E0F003C0F003C0F003C0F00780F00700700F00701E003838001FF00007C00013147C9317>
I<03C1E007E7F8067E3C0C7C1C0C781E0C701E18E01E00E01E00E01E00E01E01C03C01C03C01C0
3C01C07803C07803C07003C0E003E3C0077F80071E000700000700000E00000E00000E00000E00
001C0000FFC000FFC000171D809317>I<1E0F003F3F8033F1C063C1C063C3C06383C0C7838007
00000700000700000E00000E00000E00000E00001C00001C00001C00001C000038000018000012
147D9313>114 D<00FC03FE07070E0F0E0F0E0E1E000F800FF007F803FC003E001E701EF01CF0
1CE03860703FE01F8010147D9313>I<018001C0038003800380038007000700FFF0FFF00E000E
000E000E001C001C001C001C0038003800380038307060706070C071803F001E000C1C7C9B0F>
I<0F00601F80703180E031C0E06380E06380E0C381C00701C00701C00701C00E03800E03800E03
800E038C0E07180E07180E0F180E1F3007F3F003E1E016147D9318>I<0F01C01F83C03183E031
C1E06380E06380E0C380C00700C00700C00700C00E01800E01800E01800E03000E03000E06000E
06000F0C0007F80001E00013147D9315>I E /Fj 10 58 df<1F003F8060C04040C060C060C060
C060C060C060C060C06060C060C03F801F000B107F8F0F>48 D<18007800F80098001800180018
001800180018001800180018001800FF80FF8009107E8F0F>I<3F007F80F1C0F0E06060006000
E000C00180030006001C0038606060FFC0FFC00B107F8F0F>I<1F003F8071C071C031C001800F
800F0001C000E060E0F0E0F0E0F1C07F801F000B107F8F0F>I<070007000F001F001B003B0033
006300E300FFE0FFE00300030003001FE01FE00B107F8F0F>I<60807F807F007C00600060006F
007F8070C060E000E060E0E0E0E1C07F803F000B107F8F0F>I<07801FC039C061C06000C000DF
80FFC0E060C060C060C060606060C03F801F000B107F8F0F>I<60007FE07FE0C0C0C180018003
0006000E000C000C001C001C001C001C001C0008000B117E900F>I<1F003F8061C060C060C079
C03F801F803FC063E0C0E0C060C06060C03F801F000B107F8F0F>I<1F003F8060C0C0C0C060C0
60C060C0E07FE03F60006000C070C071807F003E000B107F8F0F>I E /Fk
41 122 df<00E001C0038007000E000E001C001C003800380038007000700070007000E000E000
E000E000E000E000E000E000E000E000E000E00070007000700070003800380038001C001C000E
000E000700038001C000E00B2A7E9E10>40 D<E000700038001C000E000E000700070003800380
038001C001C001C001C000E000E000E000E000E000E000E000E000E000E000E000E001C001C001
C001C0038003800380070007000E000E001C0038007000E0000B2A7E9E10>I<78787878383070
60E005097D830C>44 D<001C0000003E0000003E0000002E0000006700000067000000E7800000
C7800000C3800001C3C0000183C0000181C0000381E0000381E0000700F0000700F0000600F000
0E0078000FFFF8000FFFF8001FFFFC001C003C0018003C0038001E0038001E0070001F0070000F
0070000F00E0000780191D7F9C1C>65 D<FFF800FFFF00FFFF80F00FC0F003E0F000F0F000F0F0
00F0F000F0F000F0F001E0F007C0FFFF80FFFE00FFFF80F01FC0F003E0F000F0F00078F00078F0
0078F00078F00078F000F0F001F0F007E0FFFFC0FFFF80FFFC00151D7C9C1C>I<003FC000FFF0
03FFF007C0700F80001E00003E00003C0000780000780000780000F00000F00000F00000F00000
F00000F00000F00000F00000F000007800007800007800003C00003E00001E00000F800807C078
03FFF800FFF0003F80151F7D9D1B>I<FFFC00FFFF00FFFF80F00FE0F003F0F000F0F00078F000
78F0003CF0003CF0001CF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0003CF000
3CF0007CF00078F000F0F001F0F007E0FFFFC0FFFF00FFFC00171D7C9C1E>I<FFFFC0FFFFC0FF
FFC0F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80FFFF80F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0FF
FFC0121D7C9C19>I<FFFF80FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000FFFF00FFFF00FFFF00F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000111D7C9C18>I<003F8001FFF003FFF807C0F80F00
181E00003E00003C0000780000780000780000F00000F00000F00000F00000F00000F00000F007
F8F007F8F007F87800387800387800383C00383E00381E00380F003807C07803FFF801FFF0003F
80151F7D9D1C>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0FFFFF0FFFFF0FFFFF0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0141D7C9C1D>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0041D7C9C0C>I<F0003CF00078F000F0F001E0F003C0F00780
F00F00F01E00F03C00F07800F0F000F0E000F1F000F3F000F77800FE7C00FC3C00FC1E00F81F00
F00F00F00F80F00780F003C0F003E0F001E0F000F0F000F0F00078F0007C161D7C9C1D>75
D<F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
F000F000F000F000F000F000F000FFFEFFFEFFFE0F1D7C9C16>I<FC0007E0FC0007E0FC0007E0
EE000DE0EE000DE0EE000DE0E70019E0E70019E0E70019E0E78039E0E38031E0E3C071E0E3C071
E0E1C061E0E1C061E0E1E0E1E0E1E0E1E0E0E0C1E0E0F1C1E0E07181E0E07181E0E07181E0E03B
01E0E03B01E0E03B01E0E01E01E0E01E01E0E01E01E0E00001E01B1D7C9C24>I<FC0070FC0070
FE0070EE0070EF0070E70070E70070E78070E38070E3C070E3C070E1E070E1E070E0E070E0F070
E07070E07870E07870E03C70E03C70E01C70E01E70E00E70E00E70E00F70E00770E007F0E003F0
E003F0141D7C9C1D>I<003F000001FFE00003FFF00007C0F8000F807C001E001E003E001F003C
000F00780007807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0
F00003C0F00003C0F80007C078000780780007807C000F803C000F003E001F001F003E000F807C
0007C0F80003FFF00001FFE000003F00001A1F7E9D1F>I<FFFC00FFFF00FFFF80F007C0F003E0
F001E0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFFC00F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000141D7C9C1B>
I<FFF800FFFF00FFFF80F007C0F001E0F000E0F000F0F000F0F000F0F000F0F000E0F001E0F007
C0FFFF80FFFF00FFF800F03C00F01C00F01E00F00F00F00F00F00780F00780F003C0F003C0F001
E0F000F0F000F0F00078151D7C9C1B>82 D<03F8000FFE001FFF003E0F00780300780000F00000
F00000F00000F00000F800007C00007F00003FE0001FFC0007FE0001FF00001F800007800007C0
0003C00003C00003C00003C00003C0C00780E00780FC1F007FFE001FFC0007F000121F7E9D17>
I<FFFFFF80FFFFFF80FFFFFF80001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000
191D7F9C1C>I<F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F000
70F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F000F07800
E07801E03C03C01F07800FFF8007FE0001F800141E7C9C1D>I<F0000380F00003807800070078
000700780007003C000E003C000E003E000E001E001C001E001C000F0038000F0038000F003800
078070000780700003C0600003C0E00003C0E00001E0C00001E1C00001E1C00000F1800000F380
000073000000730000007B0000003E0000003E0000001C0000191D7F9C1C>I<F000F00070F000
F80070F000F800707800B8006078019C00E078019C00E078019C00E03C039C01C03C031E01C03C
030E01C01E030E01801E070F03801E070F03801E060F03800F060703000F0E0787000F0C078700
070C038600070C038600079C038E00079803CE00039801CC00039801CC00039801CC0001D001C8
0001D000D80001F000F80001E000F80000E0007000241D7F9C27>I<78000E007C001E003C003C
001E0038000F0070000F00F0000781E00003C1C00001C3C00001E7800000F70000007E0000003E
0000003C0000003C0000007E00000077000000E7800001E3800003C1C0000381E0000700F0000F
00F8000E0078001C003C003C003E0078001F0070000F00F0000F80191D7F9C1C>I<F80001E07C
0001C03E0003801E0007801F0007000F800E0007801E0007C01C0003E03C0001E0380001F07000
00F0F0000078E000007DC000003FC000001F8000001F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00001B1D809C1C>
I<0FC03FF07FF87038401C001C001C00FC0FFC3FFC781CE01CE01CE01CF07C7FFC7FDC3F1C0E12
7E9114>97 D<07E00FF81FFC3C1C70047000E000E000E000E000E000E000700070043C1C1FFC0F
F807E00E127E9112>99 D<07C01FE03FF078787018601CFFFCFFFCFFFCE000E000E00070007004
3C1C3FFC1FF807E00E127E9112>101 D<03C3C00FFFC01FFFC01C3800381C00381C00381C0038
1C00381C001C38001FF8001FF0003BC0003800003800001FFC001FFF003FFF80700780E001C0E0
01C0E001C0F003C07C0F803FFF001FFE0007F800121B7F9115>103 D<F0F0F0F0000000000000
00707070707070707070707070707070707070041D7E9C0A>105 D<E3F03F00EFF8FF80FFFDFF
C0F81F81E0F00F00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E
00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E01B127D9124>109
D<E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C0E12
7D9115>I<03F0000FFC001FFE003C0F00780780700380E001C0E001C0E001C0E001C0E001C0F0
03C07003807807803C0F001FFE000FFC0003F00012127F9115>I<E3E0EFF0FFF8F87CF01CE01E
E00EE00EE00EE00EE00EE00EE01CF03CF87CFFF8EFF0E3C0E000E000E000E000E000E000E000E0
000F1A7D9115>I<078E1FEE3FFE7C3E781E700EE00EE00EE00EE00EE00EE00EF00E701E7C3E3F
FE1FEE0F8E000E000E000E000E000E000E000E000E0F1A7E9115>I<E380E780EF80FC00F800F0
00F000E000E000E000E000E000E000E000E000E000E000E00009127D910E>I<1FC03FF07FF0F0
30E000E000F0007F003FC01FE000F0003800388038F078FFF07FE01FC00D127F9110>I<1C001C
001C001C001C001C00FFE0FFE0FFE01C001C001C001C001C001C001C001C001C001C001C001C20
1FF00FF007C00C187F970F>I<E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C
E01CE07CFFFC7FDC3F1C0E127D9115>I<E007E007700E700E780E381C381C1C181C380C380E30
0E7006700760036003C001C001C001800180030003000700FE00FC00F800101A7F9113>121
D E /Fl 66 124 df<003F0F0000FFBF8003C3F3C00703E3C00703C1800E01C0000E01C0000E01
C0000E01C0000E01C0000E01C000FFFFFC00FFFFFC000E01C0000E01C0000E01C0000E01C0000E
01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000
7F87FC007F87FC001A1D809C18>11 D<003F0000FF8003C1C00703C00703C00E01800E00000E00
000E00000E00000E0000FFFFC0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C07F87F87F87F8151D809C17>I<003FC000FFC003
C3C00703C00701C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC0FFFFC00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF87F
CFF8151D809C17>I<7070F8F8FCFCFCFC7C7C0C0C0C0C0C0C181818183030606040400E0D7F9C
15>34 D<70F8FCFC7C0C0C0C1818306040060D7D9C0C>39 D<00C00180030006000E000C001C00
18003800300030007000700060006000E000E000E000E000E000E000E000E000E000E000E000E0
00600060007000700030003000380018001C000C000E0006000300018000C00A2A7D9E10>I<C0
006000300018001C000C000E000600070003000300038003800180018001C001C001C001C001C0
01C001C001C001C001C001C001C0018001800380038003000300070006000E000C001C00180030
006000C0000A2A7E9E10>I<70F0F8F8781818183030706040050D7D840C>44
D<FFE0FFE0FFE00B0380890E>I<70F8F8F87005057D840C>I<00030003000700060006000E000C
001C0018001800380030003000700060006000E000C000C001C001800380030003000700060006
000E000C000C001C001800180038003000700060006000E000C000C00010297E9E15>I<030007
003F00FF00C7000700070007000700070007000700070007000700070007000700070007000700
07000700070007000700FFF8FFF80D1C7C9B15>49 D<07C01FF03878603C601EF01EF80FF80FF8
0F700F000F000E001E001C003C0078007000E001C0038007000E030C03180330067FFEFFFEFFFE
101C7E9B15>I<07E01FF03838301C781E781E781E381E001E003C0038007007E007E00038001C
001E000E000F000F700FF80FF80FF80EF01E601C38381FF007C0101D7E9B15>I<001C00001C00
003C00007C00007C0000DC0001DC00019C00039C00071C00061C000E1C000C1C00181C00381C00
301C00601C00E01C00FFFFC0FFFFC0001C00001C00001C00001C00001C00001C0001FFC001FFC0
121C7F9B15>I<70F8F8F870000000000000000070F8F8F87005127D910C>58
D<70F8F8F870000000000000000070F0F8F8781818183030706040051A7D910C>I<0FE03FF870
3C601CF01EF01EF01E001E003C007800E001C00180038003000300030003000300020000000000
0000000007000F800F800F8007000F1D7E9C14>63 D<00060000000F0000000F0000000F000000
1F8000001F8000001F8000001F80000033C0000033C0000033C0000061E0000061E0000061E000
00C0F00000C0F00000C0F000018078000180780001FFF80003FFFC0003003C0003003C0006001E
0006001E0006001E001F001F00FFC0FFF0FFC0FFF01C1D7F9C1F>65 D<FFFFC0FFFFF00F00F80F
003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00780FFFF00FFFE00F00F80F003C0F
001E0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F007CFFFFF8FFFFC0181C7E9B
1D>I<001F808000FFE18003F0338007801B800F000F801E0007801C0003803C00038078000380
7800018070000180F0000180F0000000F0000000F0000000F0000000F0000000F0000000F00000
007000018078000180780001803C0001801C0003001E0003000F00060007800C0003F0380000FF
F000001F8000191E7E9C1E>I<FFFFC000FFFFF0000F007C000F001E000F000F000F0007000F00
03800F0003C00F0003C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F
0001E00F0001E00F0001C00F0001C00F0003C00F0003800F0007800F000F000F001E000F007C00
FFFFF000FFFFC0001B1C7E9B20>I<FFFFFCFFFFFC0F007C0F001C0F000C0F000E0F00060F0306
0F03060F03060F03000F07000FFF000FFF000F07000F03000F03000F03030F03030F00030F0006
0F00060F00060F000E0F001E0F007CFFFFFCFFFFFC181C7E9B1C>I<FFFFF8FFFFF80F00780F00
380F00180F001C0F000C0F000C0F030C0F030C0F03000F03000F07000FFF000FFF000F07000F03
000F03000F03000F03000F00000F00000F00000F00000F00000F0000FFF800FFF800161C7E9B1B
>I<001F808000FFE18003F0338007801B800F000F801E0007801C0003803C0003807800038078
00018070000180F0000180F0000000F0000000F0000000F0000000F0000000F000FFF0F000FFF0
7000078078000780780007803C0007801C0007801E0007800F00078007800F8003F0398000FFF0
80001FC0001C1E7E9C21>I<FFF3FFC0FFF3FFC00F003C000F003C000F003C000F003C000F003C
000F003C000F003C000F003C000F003C000F003C000FFFFC000FFFFC000F003C000F003C000F00
3C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00FF
F3FFC0FFF3FFC01A1C7E9B1F>I<FFF0FFF00F000F000F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF0FFF00C1C7F9B0F>I<FF
F800FFF8000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
00000F00000F00000F00000F00180F00180F00180F00180F00380F00300F00700F00F00F01F0FF
FFF0FFFFF0151C7E9B1A>76 D<FF8000FF80FFC001FF800FC001F8000FC001F8000DE00378000D
E00378000DE00378000CF00678000CF00678000CF00678000C780C78000C780C78000C780C7800
0C3C1878000C3C1878000C3C1878000C1E3078000C1E3078000C1E3078000C0F6078000C0F6078
000C0F6078000C07C078000C07C078000C07C078001E03807800FFC387FF80FFC387FF80211C7E
9B26>I<FF00FFC0FF80FFC00F801E000FC00C000FC00C000DE00C000CF00C000CF00C000C780C
000C780C000C3C0C000C1E0C000C1E0C000C0F0C000C0F0C000C078C000C07CC000C03CC000C01
EC000C01EC000C00FC000C00FC000C007C000C003C000C003C001E001C00FFC01C00FFC00C001A
1C7E9B1F>I<003F800000FFE00003E0F80007803C000E000E001E000F003C0007803800038078
0003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0
F00001E0780003C0780003C0780003C03C0007803C0007801E000F000F001E0007803C0003E0F8
0000FFE000003F80001B1E7E9C20>I<FFFF80FFFFE00F00F00F00380F003C0F001E0F001E0F00
1E0F001E0F001E0F001E0F003C0F00380F00F00FFFE00FFF800F00000F00000F00000F00000F00
000F00000F00000F00000F00000F0000FFF000FFF000171C7E9B1C>I<FFFF0000FFFFE0000F00
F0000F0038000F003C000F001E000F001E000F001E000F001E000F001E000F003C000F0038000F
00F0000FFFE0000FFFC0000F01E0000F00F0000F0078000F0078000F0078000F0078000F007800
0F0078000F0078000F0078300F003830FFF03C60FFF01FE0000007C01C1D7E9B1F>82
D<07E0801FF9803C1F80700780700380E00380E00180E00180E00180F00000F000007C00007FC0
003FF8001FFE0007FF0000FF80000F800003C00003C00001C0C001C0C001C0C001C0E00180E003
80F00300FC0E00CFFC0083F800121E7E9C17>I<7FFFFFC07FFFFFC0780F03C0700F01C0600F00
C0E00F00E0C00F0060C00F0060C00F0060C00F0060000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F000003FFFC0003FFFC001B1C7F9B1E>I<FFF0FFC0FFF0FFC00F001E000F000C000F
000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C00
0F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C0007001800078018
000380300001C0300000E0E000007FC000001F00001A1D7E9B1F>I<FFE01FF0FFE01FF00F0007
800F0003000F000300078006000780060007C00E0003C00C0003C00C0003E01C0001E0180001E0
180000F0300000F0300000F03000007860000078600000786000003CC000003CC000003CC00000
1F8000001F8000001F8000000F0000000F0000000F0000000600001C1D7F9B1F>I<FFE0FFE1FF
FFE0FFE1FF1F001E007C0F001E00300F003F00300F003F00300F803F0070078067806007806780
60078067806003C0E780C003C0C3C0C003C0C3C0C001E0C3C18001E181E18001E181E18001E181
E18000F381F30000F300F30000F300F300007B00F600007E007E00007E007E00007E007E00003C
003C00003C003C00003C003C00001C0038000018001800281D7F9B2B>I<080818183030606060
60C0C0C0C0C0C0F8F8FCFCFCFC7C7C38380E0D7B9C15>92 D<0FE0001FF8003C3C003C1E00180E
00000E00001E0007FE001FFE003E0E00780E00F00E00F00E60F00E60F01E60783E603FFFC01F87
8013127F9115>97 D<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C0000
1C00001C7E001DFF001F87801E01C01C01E01C00E01C00F01C00F01C00F01C00F01C00F01C00F0
1C00E01C01E01E01C01F078019FF00187C00141D7F9C17>I<03F00FF81E3C383C78187000F000
F000F000F000F000F000780078063C061E0C0FF803E00F127F9112>I<001F80001F8000038000
038000038000038000038000038000038000038000038003E3800FFB801E0F8038078078038070
0380F00380F00380F00380F00380F00380F003807003807803803807801E1F800FFBF007E3F014
1D7F9C17>I<03E00FF01C38381C781E700EFFFEFFFEF000F000F000F000700078063C061E0C0F
F803E00F127F9112>I<007801FC039E071E0E0C0E000E000E000E000E000E00FFE0FFE00E000E
000E000E000E000E000E000E000E000E000E000E000E000E007FE07FE00F1D809C0D>I<000380
07E7C00FFDC03C3DC0381C00781E00781E00781E00781E00381C003C3C003FF00037E000700000
7000003000003FFC001FFF003FFF80700780E001C0E001C0E001C0E001C07003803C0F001FFE00
07F800121C7F9215>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00
001C00001C7C001DFF001F07001E03801E03801C03801C03801C03801C03801C03801C03801C03
801C03801C03801C03801C0380FF9FF0FF9FF0141D7F9C17>I<18003C007C003C001800000000
000000000000000000FC00FC001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C00FF80FF80091D7F9C0C>I<01C003E003E003E001C00000000000000000000000000FE00FE0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060
E0F1C0F1C07F803E000B25839C0D>I<FC0000FC00001C00001C00001C00001C00001C00001C00
001C00001C00001C00001C7FC01C7FC01C3E001C18001C30001C60001CC0001DE0001FE0001E70
001C78001C38001C3C001C1C001C0E001C0F00FF9FE0FF9FE0131D7F9C16>I<FC00FC001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C00FF80FF80091D7F9C0C>I<FC7E07E000FDFF9FF8001F83B838001E01E01C00
1E01E01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C
001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF80FF8FF8FF8021127F9124>I<FC
7C00FDFF001F07001E03801E03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C0380FF9FF0FF9FF014127F9117>I<03F0000FFC001E1E00380700780780700380
F003C0F003C0F003C0F003C0F003C0F003C07003807807803807001E1E000FFC0003F00012127F
9115>I<FC7E00FDFF001F87801E03C01C01E01C01E01C00F01C00F01C00F01C00F01C00F01C00
F01C01E01C01E01E03C01F07801DFF001C7C001C00001C00001C00001C00001C00001C0000FF80
00FF8000141A7F9117>I<03E1800FF9801E1F803C0780780780780380F00380F00380F00380F0
0380F00380F003807803807807803C07801E1F800FFB8007E38000038000038000038000038000
0380000380001FF0001FF0141A7F9116>I<FDE0FFF01F781E781E301C001C001C001C001C001C
001C001C001C001C001C00FFC0FFC00D127F9110>I<1F903FF07070E030E030E030F8007F803F
E00FF000F8C038C038E038E038F070DFE08FC00D127F9110>I<0C000C000C000C000C001C001C
003C00FFE0FFE01C001C001C001C001C001C001C001C001C301C301C301C301C301E600FC00780
0C1A7F9910>I<FC1F80FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03
801C03801C03801C03801C07800C0F800FFBF003E3F014127F9117>I<FF0FE0FF0FE01C07801C
03000E06000E06000E0600070C00070C00071C0003980003980003F80001F00001F00000E00000
E00000E00013127F9116>I<FF3FCFE0FF3FCFE01C0F07801C0F03001C1F03000E1B06000E1B86
000E1B86000E318E000731CC000731CC000760CC0003E0F80003E0F80003E0F80001C0700001C0
700001C070001B127F911E>I<7F8FF07F8FF00F0780070600038E0001DC0001D80000F0000070
0000780000F80001DC00038E00030E000607000F0380FF8FF8FF8FF81512809116>I<FF0FE0FF
0FE01C07801C03000E06000E06000E0600070C00070C00071C0003980003980003F80001F00001
F00000E00000E00000E00000C00000C00000C000F18000F18000C700007E00003C0000131A7F91
16>I<7FFC7FFC7838707060F060E061C063C00380070C0F0C0E0C1C1C3C1838187078FFF8FFF8
0E127F9112>I<FFFFF0FFFFF01402808B15>I E /Fm 57 123 df<007000E001C0038007800700
0E001E001E003C003C003C0078007800780078007000F000F000F000F000F000F000F000F000F0
00F000F000F000700078007800780078003C003C003C001E001E000E0007000780038001C000E0
00700C2E7EA112>40 D<E000700038001C001E000E0007000780078003C003C003C001E001E001
E001E000E000F000F000F000F000F000F000F000F000F000F000F000F000E001E001E001E001E0
03C003C003C00780078007000E001E001C0038007000E0000C2E7DA112>I<0006000000060000
000600000006000000060000000600000006000000060000000600000006000000060000000600
00000600000006000000060000FFFFFFF0FFFFFFF0000600000006000000060000000600000006
000000060000000600000006000000060000000600000006000000060000000600000006000000
0600001C207D9A23>43 D<787878781830306060E0050A7D830D>I<FFC0FFC0FFC00A037F8B0F>
I<03F00007F8001FFE001E1E003C0F00380700780780780780700380F003C0F003C0F003C0F003
C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C07807807807807807
803807003C0F001E1E001FFE000FFC0003F00012207E9E17>48 D<FFFFFFF0FFFFFFF000000000
00000000000000000000000000000000000000000000000000000000FFFFFFF0FFFFFFF01C0C7D
9023>61 D<001F0000001F0000003F8000003B8000003B8000007BC0000073C0000071C00000F1
E00000E1E00000E0E00001E0F00001E0F00001C0F00003C0780003C078000380780007803C0007
803C0007003C000FFFFE000FFFFE000FFFFE001E000F001E000F003C000F803C0007803C000780
780007C0780003C0780003C0F00003E01B207F9F1E>65 D<FFF800FFFF00FFFF80F00FC0F003E0
F001E0F000F0F000F0F000F0F000F0F000F0F001E0F003C0F01F80FFFF00FFFF00FFFF80F007E0
F001E0F000F0F00078F00078F00078F00078F00078F00078F000F0F001F0F007E0FFFFC0FFFF80
FFFC0015207B9F1E>I<001FC000FFF801FFFC03E03C07800C0F00001E00003E00003C00007C00
00780000780000780000F00000F00000F00000F00000F00000F00000F00000F000007800007800
007800007C00003C00003E00001E00000F000207800E03E03E01FFFC00FFF0001FC017227DA01D
>I<FFFC00FFFF80FFFFC0F007E0F001F0F000F8F00078F0003CF0003CF0001EF0001EF0000EF0
000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0001EF0001EF0001EF0003CF0
007CF000F8F001F0F007E0FFFFC0FFFF80FFFC0018207B9F21>I<FFFFC0FFFFC0FFFFC0F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80FFFF80
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFE0
FFFFE0FFFFE013207B9F1B>I<FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000FFFF00FFFF00FFFF00F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000012207B9F1A>I<00
1FE000FFF801FFFE03E03E07800E0F00001E00003E00003C00007C0000780000780000780000F0
0000F00000F00000F00000F00000F00000F003FEF003FE7803FE78001E78001E7C001E3C001E3E
001E1E001E0F001E07801E03E03E01FFFE00FFF8001FC017227DA01E>I<F00078F00078F00078
F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078FFFFF8FFFFF8
FFFFF8F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078
F00078F00078F0007815207B9F20>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F004207C9F0D>I<F0003EF0007CF000F8F001F0F003E0F007C0F00780F00F
00F01F00F03E00F07C00F0F800F1F000F3F800F3F800F7FC00FFBC00FF1E00FE1F00FC0F00F807
80F00780F003C0F003E0F001E0F000F0F000F8F00078F0003CF0003CF0001EF0001F18207B9F20
>75 D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000FFFF80FFFF80FFFF8011207B9F19>I<F80001F8FC0003F8FC0003
F8F4000378F6000778F6000778F6000778F7000F78F3000E78F3000E78F3801E78F3801E78F180
1C78F1C03C78F1C03C78F1C03C78F0C03878F0E07878F0E07878F0607078F070F078F070F078F0
30E078F039E078F039E078F019C078F019C078F019C078F00F8078F00F8078F00F8078F0000078
1D207B9F28>I<FC0078FE0078FE0078F60078F70078F70078F38078F38078F38078F3C078F1C0
78F1E078F1E078F0E078F0F078F07078F07078F07878F03878F03C78F03C78F01C78F01E78F00E
78F00E78F00E78F00778F00778F00378F003F8F003F8F001F815207B9F20>I<003F000000FFC0
0003FFF00007E1F8000F807C001F003E001E001E003C000F003C000F0078000780780007807800
0780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F8
0007C07800078078000780780007803C000F003C000F001E001E001F003E000F807C0007E1F800
03FFF00000FFC000003F00001A227DA021>I<FFF800FFFF00FFFF80F00FC0F003E0F001E0F000
F0F000F0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFF00FFF800F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000001420
7B9F1D>I<003F000000FFC00003FFF00007E1F8000F807C001F003E001E001E003C000F003C00
0F00780007807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F0
0003C0F00003C0F00003C0F00003C07800078078000780781E07803C0F0F003C0F8F001E079E00
1F03FE000F83FC0007E1F80003FFF00000FFF800003F780000007C0000003E0000001E0000001F
0000000F801A277DA021>I<FFF800FFFF00FFFF80F007C0F003E0F001E0F000F0F000F0F000F0
F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFF800F03C00F01E00F01E00F00F00F00F00
F00780F00780F003C0F001C0F001E0F000F0F000F0F00078F00078F0003C16207B9F1D>I<01FC
0007FF800FFFC01F03C03C00C03C00007800007800007800007800007800007C00003C00003F00
001FE0000FFC0007FE0001FF00003F800007C00003C00003E00001E00001E00001E00001E00001
E00001C0C003C0F007C0FC0F807FFF001FFE0003F80013227EA019>I<FFFFFFC0FFFFFFC0FFFF
FFC0001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000
001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
001A207E9F1F>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F07801E07801E03C03C03C03C01F0F800FFF0007FE0001F80014217B9F1F>I<F00001
E0F00001E0780003C0780003C0780003C03C0007803C0007803C0007801E000F001E000F001F00
0F000F001E000F001E0007801C0007803C0007803C0003C0380003C0780003C0780001E0700001
E0F00001E0F00000F0E00000F1E00000F1E0000071C000007BC000003B8000003B8000003F8000
001F0000001F00001B207F9F1E>I<F0007C000FF0007E000FF0007E000F78006E000E7800EE00
1E7800E7001E7800E7001E3C00E7003C3C01E7803C3C01C7803C3C01C3803C1E01C380781E03C3
C0781E0383C0780E0381C0700F0381C0F00F0781E0F00F0701E0F0070700E0E0078700E1E0078F
00F1E0078E00F1E0038E0071C0038E0071C003CE0073C001DC007B8001DC003B8001DC003B8001
DC003B8000F8003F0000F8001F0000F8001F0028207F9F2B>I<780007807C000F003E001F001E
001E000F003C000F807C000780780003C0F00003E1F00001F1E00000F3C000007FC000007F8000
003F0000001F0000001E0000003F0000007F8000007FC00000F3C00001F1E00001E0F00003C0F8
0007C0780007803C000F003E001F001E001E000F003C000F807C0007C0780003C0F00003E01B20
7F9F1E>I<F80000F87C0001F03C0001E03E0003E01F0003C00F0007800F800F8007C00F0003C0
1F0003E01E0001F03C0000F07C00007878000078F000003CF000001DE000001FE000000FC00000
078000000780000007800000078000000780000007800000078000000780000007800000078000
000780000007800000078000000780001D20809F1E>I<FFFFFFF0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0FFFFFF082D7DA10D>91
D<FFFFFF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
0F0F0F0FFFFFFF082D7FA10D>93 D<07E03FF87FFC701E401F000F000F000F003F07FF1FFF7E0F
F80FF00FF00FF00FF83F7FFF3FEF1F8F10147E9316>97 D<F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F1F000F7FC00FFFE00FC3E00F80F00F00F00
F00780F00780F00780F00780F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800
F1E00011207D9F17>I<03F00FFC1FFE3E0E3C0278007800F000F000F000F000F000F000780078
003C013E0F1FFF0FFE03F010147E9314>I<000780000780000780000780000780000780000780
00078000078000078000078000078007C7800FF7801FFF803E1F807C0780780780F80780F00780
F00780F00780F00780F00780F00780F00780780780780F803E1F801FFF800FF78007C78011207E
9F17>I<03F0000FFC001FFE003E1F003C0700780700700380FFFF80FFFF80FFFF80F00000F000
00F000007000007800003C01003E07001FFF0007FE0001F80011147F9314>I<007E01FE03FE07
8007000F000F000F000F000F000F000F00FFF0FFF0FFF00F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F20809F0E>I<03E0F00FFFF01FFFF03E3E003C1E
00780F00780F00780F00780F00780F003C1E003E3E001FFC003FF80033E0003000003800003FFE
003FFF801FFFC03FFFE07803F0F000F0F000F0F000F0F801F07E07E03FFFC00FFF0003FC00141E
7F9317>I<F000F000F000F000F000F000F000F000F000F000F000F000F1F8F3FCF7FEFC1FF80F
F80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10207D9F17>I<F0F0
F0F00000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F01F00F01E
00F03C00F07800F0F000F1E000F3C000F78000FFC000FFC000FFE000F9F000F8F000F0F800F07C
00F07C00F03E00F01E00F01F00F00F8011207D9F16>107 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F0FC07E0F3FE1FF0F7FF3FF8FE0F
F07CF807C03CF807C03CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803CF007803CF007803CF007803CF007803C1E147D9327>I<F1F8F3FCF7
FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10147D93
17>I<01F80007FE001FFF803F0FC03C03C07801E07801E0F000F0F000F0F000F0F000F0F000F0
F000F07801E07801E03C03C03F0FC01FFF8007FE0001F80014147F9317>I<F1F000F7FC00FFFE
00FC3E00F81F00F00F00F00F80F00780F00780F00780F00780F00780F00780F00F00F00F00F81F
00FC3E00FFFC00F7F800F1E000F00000F00000F00000F00000F00000F00000F00000F00000F000
00111D7D9317>I<03C7800FF7801FFF803E1F807C0F80780780780780F00780F00780F00780F0
0780F00780F00780F807807807807C0F803E1F801FFF800FF78007C78000078000078000078000
0780000780000780000780000780000780111D7E9317>I<F0E0F3E0F7E0FF00FC00FC00F800F8
00F000F000F000F000F000F000F000F000F000F000F000F0000B147D9310>I<07F01FFC3FFC78
0C7800780078007C003FC01FF00FF803F8007C003C003CC03CF07CFFF87FF00FC00E147F9311>
I<1E001E001E001E001E001E00FFF0FFF0FFF01E001E001E001E001E001E001E001E001E001E00
1E001E001E001E201FF00FF007C00C1A7F9910>I<F00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00FF01FF03FFFFF7FEF3F0F10147D9317>I<F01F00F0F01F80F0F01F
80F0781B81E0783B81E0783BC1E07839C1E03C31C3C03C71C3C03C71E3C01C70E3801E60E7801E
60E7801EE0E7800EE077000EC077000EC0770007C07E0007C03E0007803E001C147F931F>119
D<7801E07C03C03E07801E0F000F0F00079E0003FC0003F80001F80000F00001F00001F80003FC
00079E000F0F000E0F001E07803C03C07801E0F801F01414809315>I<F003C0F003C078078078
07807C07803C0F003C0F001E0F001E1E000E1E000F1C000F1C00073C0007380003B80003B80003
B00001F00001F00000E00000E00001C00001C00003C0000380000780007F00007E00007C000012
1D7F9315>I<7FFF7FFF7FFF003E003C007800F800F001E003E007C007800F001F001E003C007C
00FFFFFFFFFFFF10147F9314>I E /Fn 31 91 df<3078F8787005057C840D>46
D<007E0001FF0003C3800701C00E01C00E01E01C00E01C01E03C01E03C01E07801E07801E07801
E07801E07801E0F003C0F003C0F003C0F003C0F003C0F00380F00780E00780E00700E00F00E00E
00701E00701C003878003FF0000FC000131F7C9D17>48 D<000C001C00FC0FF80F380038003800
38003800700070007000700070007000E000E000E000E000E000E001C001C001C001C001C001C0
03C07FFEFFFE0F1E7C9D17>I<003F0000FFC001C1E00300F00600780600780F007C0F807C0F80
7C0F00780600780000F80000F00001F00001E00003C0000780000F00001C0000380000700000C0
000180000300600600601C00C03800C07FFFC0FFFF80FFFF80161E7E9D17>I<007F0001FFC003
83E00701E00700F00F00F00F01F00F01F00001E00001E00003C0000780000F0000FE0000F80000
0E000007000007800003C00003C00003C03007C07807C0F807C0F807C0F00F80C00F00601E0038
3C001FF80007E000141F7D9D17>I<0001C00003C00003C0000780000F80001B80003B80007380
00638000C7000187000307000707000E07000C0700180E00300E00600E00E00E00FFFFF0FFFFF0
001C00001C00001C00001C00001C00001C00003C0003FFC003FFC0141E7D9D17>I<03007003FF
F003FFE003FF8003FE000600000600000600000600000600000600000C7C000DFF000F87800E03
800C01C00C01C00001E00001E00001E00001E07003C0F003C0F003C0F00380C00780E00700600E
00383C001FF0000FC000141F7D9D17>I<000F80007FC000F0E001C0E00381E00701E00E00C01E
00001C00003C000038000079FC007BFE007E07007C0380F80380F803C0F003C0F003C0F003C0F0
03C0F00780E00780E00780E00700E00F00700E00701C003838001FF00007C000131F7C9D17>I<
003F0000FF8001C1E00380E00700700E00700E00700E00700E00E00F00E00F81C00FC38007F700
03FC0001FC0003FF000F3F801C0F803807C03803C07001C07001C0E001C0E001C0E001C0E00380
7003007007003C1C001FF80007E000141F7D9D17>56 D<007E0001FF000383800701C00E01C01E
01C01C01E03C01E03C01E07801E07801E07801E07801E07803E07803E03807C03807C01C0FC01F
FBC00FE380000780000780000700000E00600E00F01C00F03800E07000E0E0007FC0003F000013
1F7C9D17>I<0000180000003800000038000000780000007C000000FC000000FC000001BC0000
01BC0000033C0000033E0000061E0000061E00000C1E00000C1E0000181E0000181F0000300F00
00300F0000600F00007FFF0000FFFF0000C00F0001800780018007800300078003000780060007
80060007801F0007C0FFC07FFCFFC07FFC1E207E9F22>65 D<0003F808000FFE18003F07380078
01F801F000F803C000F007C00070078000700F0000701F0000701E0000703E0000603C0000607C
0000007C0000007C0000007C000000F8000000F8000000F8000000F8000000F80000C0780000C0
780001807C0001803C0003003C0003001E0006001E000C000F80180007E0700001FFC000007F00
001D217B9F21>67 D<07FFFF0007FFFFE0003C01F0003C00F80078007C0078003C0078001E0078
001E0078001E0078001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F01E0001E01
E0003E01E0003E01E0003E01E0003C01E0007C03C0007803C000F003C000F003C001E003C003C0
03C00F8007C03F007FFFFC00FFFFE000201F7E9E23>I<07FFFFF807FFFFF8003C00F8003C0078
007800380078003800780038007800380078003800780C3000F0183000F0180000F0180000F038
0000FFF80000FFF80001E0700001E0300001E0300001E0301801E0303001E0003003C0003003C0
006003C0006003C000E003C001C003C003C007C00FC07FFFFF80FFFFFF801D1F7E9E1F>I<07FF
FFF807FFFFF8003C00F8003C0078007800380078003800780038007800380078003800780C3000
F0183000F0180000F0180000F0380000FFF80000FFF80001E0700001E0300001E0300001E03000
01E0300001E0000003C0000003C0000003C0000003C0000003C0000003C0000007C000007FFE00
00FFFE00001D1F7E9E1E>I<0001FC04000FFF0C003F039C007800FC00F000FC03E0007803C000
78078000380F0000381F0000381E0000383E0000303E0000307C0000007C0000007C0000007C00
0000F8000000F8000000F8007FFCF8007FFCF80001E0780001E0780003C07C0003C03C0003C03C
0003C01E0003C00F0007C007800F8003E0398001FFF080003F80001E217B9F24>I<07FFC7FFC0
07FFC7FFC0003C007800003C007800007800F000007800F000007800F000007800F000007800F0
00007800F00000F001E00000F001E00000F001E00000F001E00000FFFFE00000FFFFE00001E003
C00001E003C00001E003C00001E003C00001E003C00001E003C00003C007800003C007800003C0
07800003C007800003C007800003C007800007C00F80007FFCFFF800FFF8FFF800221F7E9E22>
I<07FFE007FFE0003C00003C0000780000780000780000780000780000780000F00000F00000F0
0000F00000F00000F00001E00001E00001E00001E00001E00001E00003C00003C00003C00003C0
0003C00003C00007C000FFFC00FFFC00131F7F9E10>I<07FFF00007FFF000003C0000003C0000
00780000007800000078000000780000007800000078000000F0000000F0000000F0000000F000
0000F0000000F0000001E0000001E0000001E0000001E0018001E0018001E0030003C0030003C0
030003C0070003C0060003C00E0003C01E0007C07E007FFFFC00FFFFFC00191F7E9E1C>76
D<07FC0000FFC007FC0001FFC0003E0001F800003E00037800006E0003F000006E0006F000006E
0006F000006E000CF0000067000CF00000670018F00000C70019E00000C70031E00000C70031E0
0000C70061E00000C38061E00000C380C1E000018380C3C00001838183C00001838183C0000181
C303C0000181C303C0000181C603C0000301C60780000301CC0780000301CC0780000300F80780
000300F80780000700F00780000F80F00F80007FF0E0FFF800FFF0E1FFF8002A1F7E9E2A>I<07
FC03FFC007FC03FFC0003E007C00003E003800006F003000006F003000006F0030000067803000
00678030000063C0300000C3C0600000C3C0600000C1E0600000C1E0600000C0F0600000C0F060
000180F0C000018078C000018078C00001803CC00001803CC00001803CC00003001F800003001F
800003000F800003000F800003000F800007000780000F800700007FF0030000FFF0030000221F
7E9E22>I<0003F800001FFE00003C1F0000F0078001E003C003C001E0078001E00F8000F00F00
00F01F0000F01E0000F83E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8F80001F0F8
0001F0F80001F0F80001F0F80003E0780003E0780007C07C0007C07C000F803C000F003E001E00
1E003C000F00780007C1F00003FFC00000FE00001D217B9F23>I<07FFFF0007FFFFC0003C03E0
003C01F0007800F0007800F8007800F8007800F8007800F8007800F800F001F000F001F000F001
E000F003C000F00F8000FFFE0001FFF80001E0000001E0000001E0000001E0000001E0000003C0
000003C0000003C0000003C0000003C0000003C0000007C000007FFC0000FFFC00001D1F7E9E1F
>I<0003F800001FFE00003C1F0000F0078001E003C003C001E0078001E00F8001F00F0000F01F
0000F01E0000F83E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8F80001F0F80001F0
F80001F0F80001F0F80003E0780003E0780003C0780007C07C1E07803C3F0F003C619E001E61BC
000FC0F80007E1F00003FFC04000FEC0400000E0400000E0800000E1800000FF800000FF000000
FF0000007E0000003C001D297B9F23>I<07FFFC0007FFFF00003C07C0003C03E0007801E00078
01F0007801F0007801F0007801F0007801E000F003E000F003C000F0078000F01F0000FFFC0000
FFF00001E0380001E03C0001E01C0001E01C0001E01E0001E01E0003C03E0003C03E0003C03E00
03C03E0003C03E0603C03E0607C03E0C7FFC1F18FFFC0FF8000003E01F207E9E21>I<003F0400
7FCC01E0FC03807C03003C0700380600180E00180E00180E00180E00000F00000F00000FE00007
FE0003FF8001FFC0007FE00007E00001E00000E00000F00000F06000E06000E06000E06000E070
01C0700180F80380FE0F00C7FC0081F80016217D9F19>I<1FFFFFF81FFFFFF81E03C0F83803C0
38380780383007803870078018600780186007803860078030C00F0030000F0000000F0000000F
0000000F0000000F0000001E0000001E0000001E0000001E0000001E0000001E0000003C000000
3C0000003C0000003C0000003C0000003C0000007C00001FFFF0003FFFF0001D1F7B9E21>I<FF
FC7FF8FFFC7FF807800F80078007000F0006000F0006000F0006000F0006000F0006000F000600
1E000C001E000C001E000C001E000C001E000C001E000C003C0018003C0018003C0018003C0018
003C0018003C001800380030003800300038003000380060003C00C0001C00C0001E0180000F07
000007FC000001F800001D20799E22>I<FFF07FF83FF0FFF07FF83FF01F000F800F800F000F80
07000F000F8006000F000F8006000F001F800C000F001F800C000F00378018000F00378018000F
0063C03000078063C030000780C3C060000780C3C06000078183C0E000078183C0C000078383C0
C000078303E1800007C701E1800003C601E3000003C601E3000003CC01E6000003CC01E6000003
D801EC000003D801EC000003F001F8000001F000F8000001E000F8000001E000F0000001C000F0
000001C000E0000001C000E000002C207A9E2F>87 D<03FFC1FFC003FFC1FFC0003E007C00001E
007000001E006000000F00C000000F01C000000F83800000078300000007C600000003CC000000
03FC00000001F800000001F000000000F000000000F800000001F800000003FC000000033C0000
00063C0000000C1E0000001C1E000000381F000000300F000000600F800000C007800001C007C0
00038003C0000FC003E000FFF01FFE00FFE01FFE00221F7F9E22>I<03FFFFC003FFFFC003F007
8007C00F0007001F0007001E000E003C000C0078000C00F8000C00F0001801E0000003C0000007
8000000F8000000F0000001E0000003C0000007C00000078030000F0030001E0030003E0060003
C00600078006000F000E001F001C001E001C003C007C007801FC00FFFFF800FFFFF8001A1F7D9E
1C>90 D E /Fo 19 121 df<387CFEFEFE7C3807077C860F>46 D<00700000F0000FF000FFF000
F3F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000
03F00003F00003F00003F00003F00003F00003F00003F00003F00003F000FFFF80FFFF80111D7C
9C1A>49 D<07F0001FFE00383F007C1F80FE0FC0FE0FC0FE0FE0FE07E07C07E03807E0000FE000
0FC0000FC0001F80001F00003E0000780000F00000E00001C0600380600700600C00E01FFFE01F
FFC03FFFC07FFFC0FFFFC0FFFFC0131D7D9C1A>I<01FC0007FF000E0F801E0FC03F07E03F87E0
3F87E03F87E01F0FC00E0FC0000F80001F0001FC0001FC00000F800007C00003E00003F03C03F8
7E03F8FF03F8FF03F8FF03F8FF03F07E03F07C07E03C0FC00FFF8003FC00151D7E9C1A>I<0001
C00003C00007C00007C0000FC0001FC0003FC00077C00067C000C7C00187C00387C00707C00E07
C00C07C01807C03807C07007C0E007C0FFFFFEFFFFFE000FC0000FC0000FC0000FC0000FC0000F
C001FFFE01FFFE171D7F9C1A>I<3803803FFF803FFF003FFE003FFC003FF0003F800030000030
000030000030000033F8003FFE003C1F00380F80300FC0000FC0000FE0000FE0780FE0FC0FE0FE
0FE0FE0FE0FC0FC0780FC0601F80383F001FFC0007F000131D7D9C1A>I<FFFFFFE0FFFFFFE007
F007E007F001E007F000E007F0006007F0007007F0003007F0003007F0603007F0603007F06000
07F0600007F1E00007FFE00007FFE00007F1E00007F0600007F0600007F0600C07F0600C07F000
0C07F0001807F0001807F0001807F0003807F0007807F000F807F003F0FFFFFFF0FFFFFFF01E1F
7E9E22>69 D<07FC001FFF003F0F803F07C03F03E03F03E00C03E00003E001FFE00FFFE03F83E0
7E03E07C03E0F803E0F803E0F803E0FC07E07E0DE03FF9FE07E07E17147F9319>97
D<01FE0007FF801F83E03F01F07E00F07E00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00
007C00007E00003E00183F00380F807007FFE000FF8015147F9318>101
D<01FC3C07FFFE0F07DE1E03DE3E03E03E03E03E03E03E03E03E03E01E03C00F07800FFF0019FC
001800001800001C00001FFF801FFFF00FFFF83FFFFC7C007C70003EF0001EF0001EF0001E7800
3C78003C3F01F80FFFE001FF00171E7F931A>103 D<1C003F007F007F007F003F001C00000000
000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F00FFE0FFE00B217EA00E>105 D<FF00FF001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
00FFE0FFE00B207E9F0E>108 D<FE0FE03F80FE3FF0FFC01E70F9C3E01EC07F01F01F807E01F0
1F807E01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01
F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F0FFE3FF8FFEFFE3FF8FFE27147D
932C>I<FE0FC0FE3FE01E61F01EC0F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F8FFE3FFFFE3FF18147D931D>I<01FF0007FFC01F
83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E
00F83E00F81F83F007FFC001FF0017147F931A>I<FF1FC0FF7FF01FE1F81F80FC1F007E1F007E
1F003E1F003F1F003F1F003F1F003F1F003F1F003F1F003E1F007E1F007C1F80FC1FC1F81F7FE0
1F1F801F00001F00001F00001F00001F00001F00001F0000FFE000FFE000181D7E931D>I<FE3E
00FE7F801ECFC01F8FC01F8FC01F8FC01F03001F00001F00001F00001F00001F00001F00001F00
001F00001F00001F00001F0000FFF000FFF00012147E9316>114 D<0180018001800380038003
8007800F803F80FFFCFFFC0F800F800F800F800F800F800F800F800F800F800F860F860F860F86
0F8607CC03F801F00F1D7F9C14>116 D<FFE1FF00FFE1FF000F80700007C0E00007E0C00003E1
800001F3800000FF0000007E0000003E0000003F0000007F8000006F800000C7C0000183E00003
81F0000701F8000E00FC00FF81FF80FF81FF8019147F931C>120 D E /Fp
70 126 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8F8F870051C779B18>
33 D<03C00007E0000FF0001E78001C38001C38001C38001C38001C7BF01CF3F01EE3F00FE780
0FC7000F87000F0F001F0E003F8E007B9E0073DC00F1DC00E1FC00E0F800E07870F0F87071FE70
7FFFF03FCFE01F03C0141C7F9B18>38 D<007000F001F003C007800F001E001C003C0038007800
70007000F000E000E000E000E000E000E000E000E000F00070007000780038003C001C001E000F
00078003C001F000F000700C24799F18>40 D<6000F00078003C001E000F000780038003C001C0
01E000E000E000F00070007000700070007000700070007000F000E000E001E001C003C0038007
800F001E003C007800F00060000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9
CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001
C00011147D9718>I<00600000F00000F00000F00000F00000F00000F00000F0007FFFC0FFFFE0
FFFFE07FFFC000F00000F00000F00000F00000F00000F00000F00000600013147E9718>I<3C7E
7F7F7F3F0F0E1E7CF870080C788518>I<7FFF00FFFF80FFFF807FFF0011047D8F18>I<78FCFCFC
FC780606778518>I<000300000780000F80000F80000F00001F00001F00003E00003E00003C00
007C00007C0000F80000F80000F00001F00001F00003E00003E00007C00007C0000780000F8000
0F80001F00001F00001E00003E00003E00007C00007C0000780000F80000F80000F00000600000
11247D9F18>I<01F00007FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E000
E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803801C07
001F1F000FFE0007FC0001F000131C7E9B18>I<01800380078007800F803F80FF80FB80638003
800380038003800380038003800380038003800380038003800380038003807FFCFFFE7FFC0F1C
7B9B18>I<07F8001FFE003FFF007C0F807003C0F001E0F000E0F000E0F000E00000E00000E000
01E00001C00003C0000780000F00001E00003C0000780000F00003E00007C0000F80001E00E03C
00E07FFFE0FFFFE07FFFE0131C7E9B18>I<3C7E7E7E7E3C0000000000000000387C7E7E7E3E0E
1E3C78F060071A789318>59 D<000300000F80001F80003F0000FE0001FC0003F00007E0001FC0
003F80007E0000FC0000FC00007E00003F80001FC00007E00003F00001FC0000FE00003F00001F
80000F8000030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000000000000000000000FF
FFE0FFFFE0FFFFE07FFFC0130C7E9318>I<600000F80000FC00007E00003F80001FC00007E000
03F00001FC0000FE00003F00001F80001F80003F0000FE0001FC0003F00007E0001FC0003F8000
7E0000FC0000F8000060000011187D9918>I<00700000F80000F80000D80000D80001DC0001DC
0001DC00018C00038E00038E00038E00038E000306000707000707000707000707000FFF800FFF
800FFF800E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>65
D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07C01FFF
801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00701C00701C00F01C00E01C03E0FFFF
C0FFFF80FFFE00141C7F9B18>I<01FCE003FEE007FFE00F07E01E03E03C01E07800E07000E070
00E0F00000E00000E00000E00000E00000E00000E00000E00000E00000F000007000E07000E078
00E03C01E01E01C00F07C007FF8003FF0001FC00131C7E9B18>I<7FF800FFFE007FFF001C0F80
1C03C01C03C01C01E01C00E01C00E01C00F01C00701C00701C00701C00701C00701C00701C0070
1C00701C00F01C00E01C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>
I<FFFFF0FFFFF0FFFFF01C00701C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE
001FFE001FFE001C0E001C0E001C0E001C00001C00001C00381C00381C00381C00381C0038FFFF
F8FFFFF8FFFFF8151C7F9B18>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C
00001C1C001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C1C001C00001C00001C00001C
00001C00001C00001C0000FFC000FFC000FFC000131C7E9B18>I<01F9C007FFC00FFFC01F0FC0
1C03C03C03C07801C07001C07001C0F00000E00000E00000E00000E00000E00000E00FF0E01FF0
E00FF0F001C07001C07003C07803C03C03C01C07C01F0FC00FFFC007FDC001F9C0141C7E9B18>
I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFF
C01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C07F07
F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF0001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B18>I<7F07F0FF87F87F07F01C03C0
1C07801C07001C0F001C1E001C3C001C38001C78001CF0001DF0001DF8001FF8001FBC001F1C00
1E1E001E0E001C0F001C07001C07801C03801C03C01C01C07F03F0FF87F87F03F0151C7F9B18>
75 D<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00700E0070
7FFFF0FFFFF07FFFF0141C7F9B18>I<FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E03B8E
E03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E03870E03870E03800E03800
E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F01D
81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C
39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B
18>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E00380
E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780700700780F00
7FFF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C00
701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C00
001C00001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<0FF8003FFE007FFF0078
0F00700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E0
0380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE000FFC00001C0000
1E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF001C0F801C03801C03C0
1C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F001C07801C03801C0380
1C03801C03801C03801C039C1C039C1C039C7F03FCFF81F87F00F0161C7F9B18>I<07F3801FFF
803FFF807C1F80700780F00380E00380E00380E00000F000007800003F00001FF0000FFE0001FF
00001F800003C00001E00000E00000E06000E0E000E0E001E0F001C0FC07C0FFFF80FFFF00E7FC
00131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E0703800700000700000700000
700000700000700000700000700000700000700000700000700000700000700000700000700000
700000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C0070
1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070
1C00701C00701E00F00E00E00F01E007C7C003FF8001FF00007C00171C809B18>I<FE03F8FE03
F8FE03F87000707000707000703800E03800E03800E03800E03800E038F8E038F8E039DCE039DC
E019DCC019DCC019DCC0198CC01D8DC01D8DC01D8DC01D8DC00D8D800D05800F07800F07800E03
80151C7F9B18>87 D<7F8FE07F9FE07F8FE00E07000F0700070E00078E00039C0003DC0001F800
01F80000F00000F00000700000F00000F80001F80001DC00039E00038E00070F000707000E0780
0E03801E03C07F07F0FF8FF87F07F0151C7F9B18>I<FF07F8FF07F8FF07F81C01C01E03C00E03
800F0780070700070700038E00038E0001DC0001DC0001FC0000F80000F8000070000070000070
0000700000700000700000700000700000700001FC0003FE0001FC00151C7F9B18>I<3FFFE07F
FFE07FFFE07001C07003C0700780700700000F00001E00001C00003C0000780000700000F00001
E00001C00003C0000780000700000F00001E00E01C00E03C00E07800E07000E0FFFFE0FFFFE0FF
FFE0131C7E9B18>I<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC0078
3E00300F0000070000070001FF000FFF003FFF007F0700780700F00700E00700E00700F00F0078
3F007FFFF03FFBF00FE1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E00
000E00000E3E000EFF800FFFC00FE3E00F80F00F00700F00780E00380E00380E00380E00380E00
380F00380F00780F00700F80F00FC3E00FFFC00EFF80067E00151C809B18>I<01FE0007FF001F
FF803F07803C0300780000700000F00000E00000E00000E00000E00000F000007000007801C03C
01C03F07C01FFF8007FF0001FC0012147D9318>I<001F80003F80001F80000380000380000380
00038000038003F3800FFB801FFF803E1F80780F80700780F00780E00380E00380E00380E00380
E00380E00780F00780700780780F803E3F801FFFF00FFBF803E3F0151C7E9B18>I<03F0000FFC
001FFE003E1F00780780700380F003C0E001C0E001C0FFFFC0FFFFC0FFFFC0F000007000007801
C03C01C03F07C01FFF8007FF0001FC0012147D9318>I<001FC0007FE000FFE001F1E001C0C001
C00001C00001C0007FFFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<03F1F0
07FFF80FFFF81E1F303C0F003807003807003807003807003807003C0F001E1E001FFC003FF800
3BF0003800003C00001FFF001FFFC03FFFE07801F0F00078E00038E00038E00038F000787800F0
7E03F03FFFE00FFF8003FE00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E00
000E00000E3F000EFF800FFFC00FE1E00F80E00F00E00F00E00E00E00E00E00E00E00E00E00E00
E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007
C00007C0000380000000000000000000000000007FC000FFC0007FC00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FF
FF00111D7C9C18>I<0038007C007C007C003800000000000000000FFC1FFC0FFC001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C003C60
38F078FFF07FE03FC00E277E9C18>I<FE0000FE0000FE00000E00000E00000E00000E00000E00
000E3FF00E7FF00E3FF00E07800E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F1E
000E0F000E07800E03800E03C0FFC7F8FFC7F8FFC7F8151C7F9B18>I<7FE000FFE0007FE00000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B
18>I<7DF1F000FFFBF8007FFFFC001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C00
1C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF
807F1F1F001914819318>I<7E3F00FEFF807FFFC00FE1E00F80E00F00E00F00E00E00E00E00E0
0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>
I<01F0000FFE001FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001
E07001C07803C03C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00F
E3E00F80F00F00700F00780E00380E00380E00380E00380E00380F00380F00780F00700F80F00F
C3E00FFFC00EFF800E7E000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007F
C000151E809318>I<03F3800FFB801FFF803E1F80780F80700780F00780E00380E00380E00380
E00380E00380E00380F00780700780780F803E1F801FFF800FFB8003F380000380000380000380
000380000380000380000380003FF8003FF8003FF8151E7E9318>I<7F87E0FF9FF87FBFF803FC
7803F03003E00003C00003C00003C0000380000380000380000380000380000380000380000380
007FFE00FFFF007FFE0015147F9318>I<0FF7003FFF007FFF00F81F00E00700E00700F007007C
00007FF0001FFC0007FE00001F00600780E00380F00380F00780FC0F00FFFF00FFFE00E7F80011
147D9318>I<0180000380000380000380000380007FFFC0FFFFC0FFFFC0038000038000038000
0380000380000380000380000380000380000380400380E00380E00381E003C3C001FFC000FF80
007E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00
E00E00E00E00E00E00E00E00E00E00E00E01E00F07E007FFFC03FFFE01FCFC1714809318>I<7F
8FF0FF8FF87F8FF01E03C00E03800E03800E0380070700070700070700038E00038E00038E0003
8E0001DC0001DC0001DC0000F80000F80000700015147F9318>I<FF8FF8FF8FF8FF8FF83800E0
3800E03800E01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C00DDD800DDD800DDD800D8D80
0F8F800F8F8007070015147F9318>I<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F8
0000F80000700000F00000F80001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF01514
7F9318>I<7F8FF0FF8FF87F8FF00E01C00E03800E038007038007070007070003870003860003
8E0001CE0001CE0000CC0000CC0000DC0000780000780000780000700000700000700000F00000
E00079E0007BC0007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C0
700780000F00001E00007C0000F80001F00003E0000780000F00701E00703C0070780070FFFFF0
FFFFF0FFFFF014147F9318>I<0007E0003FE0007FE000FC0000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000E00001E0007FC000FF8000FF80007FC00001E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000FC00007FE0003F
E00007E013247E9F18>I<7C0000FF8000FFC00007E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000F000007FC0003FE0003FE0007FC000F00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00007E000FFC000FF80007C
000013247E9F18>125 D E /Fq 44 123 df<F8F8F8F8F805057B8410>46
D<007E0001FF8007FFE00FFFF01FC3F81F00F83E007C3E007C3C003C7C003E7C003E78001E7800
1EF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF800
1FF8001FF8001F78001E7C003E7C003E7C003E7C003E3E007C3F00FC1F00F81FC3F80FFFF007FF
E001FF80007E0018297EA71D>48 D<00180000380000F80007F800FFF800FFF800FFF800F8F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F8007FFFF07FFFF07FFFF07FFFF014287CA71D>I<00FE0003FF800FFFC01FFFE01F07
F03C01F87800FC78007C70007CF0003EF0003E60003E20003E00003E00003E00003E00007C0000
7C0000780000F80001F00001E00003E00007C0000F80001F00003E00007C0000F80001F00003E0
0003C0000780000F00001E00003C00007FFFFE7FFFFE7FFFFE7FFFFE17287EA71D>I<007E0003
FF8007FFE00FFFF01F81F83E00F87C007C78007C30007C10007C00007C00007C0000780000F800
00F80001F00007E000FFC000FF8000FFC000FFF00001F80000FC00007C00003E00003E00001F00
001F00001F00001F00001F80001FC0003EE0003EF0007E7C00FC3F01F81FFFF00FFFE003FFC000
FE0018297EA71D>I<0007E0000FE0000BE0001BE0001BE0003BE0003BE00073E00073E000F3E0
00F3E001E3E001E3E003E3E003C3E007C3E00F83E00F83E01F03E01F03E03E03E03E03E07C03E0
7C03E0F803E0FFFFFFFFFFFFFFFFFFFFFFFF0003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E018277EA61D>I<3FFFF83FFFF83FFFF83FFFF83E00003E00003E00003E00
003E00003E00003E00003E00003E00003E00003E3E003EFF803FFFE03FFFF03FC1F03F80F83F00
7C3E007C00007C00003E00003E00003E00003E00003E00003E00003E20003E60007C70007CF800
F87C01F87F07F03FFFE00FFFC007FF0001FC0017287EA61D>I<000FE0003FF800FFF801FFF803
F81807E0000F80000F80001F00003E00003E00003C00007C00007C02007C3FC0F8FFE0F9FFF0FB
FFF8FF80FCFE007CFE003EFC003EFC003FFC001FF8001FF8001FF8001FF8001F78001F7C001F7C
001F7C001E3C003E3E003E1E007C1F00FC0FC1F807FFF003FFE001FF80007E0018297EA71D>I<
FFFFFFFFFFFFFFFFFFFFFFFF00000F00001E00003C0000780000780000F00001F00001E00003E0
0003C00007C0000F80000F80000F00001F00001E00003E00003E00003C00007C00007C00007C00
00F80000F80000F80000F80000F80000F00001F00001F00001F00001F00001F00001F00001F000
18277EA61D>I<007E0003FFC007FFE00FFFF01F81F83F00FC3E007C7E007E7C003E7C003E7C00
3E7C003E7C003E3E007C3E007C1F00F80FC3F007FFE003FFC003FFC00FFFF01F81F83F00FC3E00
7C7C003E7C003EF8001FF8001FF8001FF8001FF8001FF8001F7C003E7C003E7E007E3F00FC1F81
F80FFFF007FFE003FFC0007E0018297EA71D>I<007E0001FF8007FFC00FFFE01F83F01F00F83E
00787C007C7C003C78003EF8003EF8003EF8001EF8001FF8001FF8001FF8001FF8003FFC003F7C
003F7C007F3E007F3F01FF1FFFDF0FFF9F07FF1F03FC1E00403E00003E00003E00007C00007C00
00F80000F80001F01803E01E0FC03FFF801FFF000FFE0003F80018297EA71D>I<0003F0000000
03F000000007F800000007F800000007780000000F7C0000000F3C0000000F3C0000001F3E0000
001E3E0000001E1E0000003E1F0000003C1F0000007C0F8000007C0F800000780F800000F807C0
0000F807C00000F007C00001F003E00001F003E00001E003E00003E001F00003E001F00003C001
F00007C000F80007FFFFF80007FFFFF8000FFFFFFC000FFFFFFC000F00007C001F00003E001F00
003E001E00003E003E00001F003E00001F003C00001F007C00000F807C00000F80F800000FC0F8
000007C0F8000007C0222A7EA927>65 D<0003FE00000FFFC0003FFFF000FFFFF001FE03F003F8
006007E0002007C000000F8000001F8000001F0000003E0000003E0000007C0000007C0000007C
0000007C000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F80000007C0000007C0000007C0000007C0000003E0000003E0000001F0000001F8000
000F80000007C0000007E0000803F8003801FE01F800FFFFF8003FFFF0000FFFC00003FE001D2C
7CAA25>67 D<FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
FFFFFF00FFFFFF00FFFFFF00FFFFFF00F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE01B2A7BA923>69 D<FFFFFF80FFFFFF80FFFFFF80FF
FFFF80F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000FFFFFC00FFFFFC00FFFFFC00FFFFFC
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000019
2A7BA921>I<0003FE00000FFFC0003FFFF8007FFFFC01FE01FC03F8007C07E0001807C000000F
8000001F8000001F0000003E0000003E0000007E0000007C0000007C0000007C000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8003FFCF8003FFCF8003FFC7C003F
FC7C00007C7C00007C7E00007C3E00007C3E00007C1F00007C1F80007C0F80007C07C0007C07E0
007C03F8007C01FE01FC007FFFFC003FFFF8000FFFC00003FE001E2C7CAA27>I<F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7B
A910>73 D<FE000000FFFE000000FFFE000000FFFF000001FFFB000001DFFB800003DFFB800003
DFFB800003DFF9C000079FF9C000079FF9C000079FF9E0000F9FF8E0000F1FF8E0000F1FF8F000
1F1FF870001E1FF870001E1FF878003E1FF838003C1FF83C007C1FF83C007C1FF81C00781FF81E
00F81FF81E00F81FF80E00F01FF80F01F01FF80F01F01FF80701E01FF80783E01FF80783E01FF8
0383C01FF803C7C01FF803C7C01FF801C7801FF801EF801FF801EF801FF800EF001FF800FF001F
F8007E001FF8007E001FF8007E001FF80000001F282A7BA933>77 D<0003FC0000000FFF000000
3FFFC00000FFFFF00001FE07F80003F801FC0007E0007E000FC0003F000F80001F001F00000F80
1F00000F803E000007C03E000007C07C000003E07C000003E07C000003E078000001E0F8000001
F0F8000001F0F8000001F0F8000001F0F8000001F0F8000001F0F8000001F0F8000001F0F80000
01F0F8000001F07C000003E07C000003E07C000003E07E000007E03E000007C03E000007C01F00
000F801F80001F800F80001F000FC0003F0007E0007E0003F801FC0001FE07F80000FFFFF00000
3FFFC000001FFF80000003FC0000242C7DAA2B>79 D<FFFFC000FFFFF800FFFFFE00FFFFFF00F8
007F80F8001FC0F80007C0F80003E0F80003E0F80001F0F80001F0F80001F0F80001F0F80001F0
F80001F0F80001F0F80003E0F80003E0F80007C0F8001FC0F8007F80FFFFFF00FFFFFE00FFFFF8
00FFFFC000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000001C2A7BA925
>I<FFFFE000FFFFFC00FFFFFE00FFFFFF80F8003FC0F8000FE0F80003F0F80001F0F80000F0F8
0000F8F80000F8F80000F8F80000F8F80000F8F80000F0F80001F0F80003F0F8000FE0F8003FC0
FFFFFF80FFFFFE00FFFFFC00FFFFE000F801F000F801F000F800F800F800F800F8007C00F8003C
00F8003E00F8001E00F8001F00F8000F80F8000F80F80007C0F80007C0F80003E0F80001E0F800
01F0F80000F8F80000F8F800007C1E2A7BA926>82 D<007FC00001FFF80007FFFE000FFFFF001F
C07F003F000F007E0006007C0000007C000000F8000000F8000000F8000000F8000000F8000000
FC0000007E0000007F0000003F8000001FF800000FFF000007FFE00003FFF80000FFFC00000FFE
000000FF0000003F0000001F8000000F8000000FC0000007C0000007C0000007C0000007C00000
07C0000007C000000F8060000F80F0001F00FC003F00FF80FE007FFFFC001FFFF80007FFE00000
FF80001A2C7DAA21>I<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE00001F000000001F000
000001F000000001F000000001F000000001F000000001F000000001F000000001F000000001F0
00000001F000000001F000000001F000000001F000000001F000000001F000000001F000000001
F000000001F000000001F000000001F000000001F000000001F000000001F000000001F0000000
01F000000001F000000001F000000001F000000001F000000001F000000001F000000001F00000
0001F000000001F000000001F000000001F000000001F00000232A7EA928>I<F80001F80001F0
F80003F80001F0FC0003FC0001F07C0003FC0003E07C0003BC0003E07C0007BC0003E03E00079E
0003C03E00079E0007C03E00079E0007C03E000F9F0007C01F000F1F0007801F000F0F000F801F
000F0F000F801F001F0F800F800F801E0F800F000F801E07801F000F801E07801F000F803E07C0
1F0007C03C07C01E0007C03C03C03E0007C03C03C03E0007C07C03E03E0003E07803E03C0003E0
7801E07C0003E07801E07C0001E0F801F0780001E0F001F0780001F0F000F0F80001F0F000F0F8
0000F0F000F0F00000F1E000F8F00000F9E00078F00000F9E00079F0000079E00079E0000079C0
0079E000007BC0003DE000007BC0003DE000003BC0003DC000003F80003FC000003F80001FC000
001F80001F8000001F00001F8000342A7FA937>87 D<01FC000FFF003FFF803FFFC03C07E03003
E00001F00001F00001F00001F00001F00003F001FFF007FFF01FFFF03FC1F07E01F0FC01F0F801
F0F801F0F801F0FC03F07E0FF07FFFF03FFFF01FF9F00FE1F0141B7E9A1C>97
D<007F8001FFE007FFF80FFFF81FC0783F00103E00007C00007C00007C0000F80000F80000F800
00F80000F80000F80000F800007C00007C00007C00003E00003F00181FC0780FFFF807FFF801FF
E0007F80151B7E9A1A>99 D<00007C00007C00007C00007C00007C00007C00007C00007C00007C
00007C00007C00007C00007C00007C00007C00FC7C03FF7C07FFFC0FFFFC1FC1FC3F00FC3E007C
7C007C7C007CFC007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007C7C007C7C007C
7E00FC3F00FC1F83FC1FFFFC0FFF7C03FE7C01F87C162A7EA91E>I<00FC0003FF0007FF800FFF
C01F87E03F01E03E00F07C00F07C0070F80078FFFFF8FFFFF8FFFFF8FFFFF8F80000F80000F800
007800007C00007C00003E00003F00181FC0F80FFFF807FFF801FFE0007F00151B7E9A1A>I<00
1FC0007FC000FFC001FFC003F00003E00007C00007C00007C00007C00007C00007C00007C00007
C00007C000FFFE00FFFE00FFFE00FFFE0007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C000122A7FA912>I<00F80F0003FE7F800FFFFF801FFFFF801F07C0003E03E000
3E03E0007C01F0007C01F0007C01F0007C01F0007C01F0003E03E0003E03E0001F07C0001FFFC0
003FFF80003BFE000038F8000078000000780000007C0000003FFF80003FFFF0001FFFF8001FFF
FC003FFFFE007C00FE007C003F00F8001F00F8001F00F8001F00F8001F00FC003F007E007E003F
81FC001FFFF8000FFFF00007FFE00000FF000019287E9A1D>I<F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F87E00F9FF00FB
FF80FFFFC0FF0FC0FE07E0FC03E0FC03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F8
03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0132A7BA9
1E>I<F8F8F8F8F800000000000000000000F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8052A7CA90E>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>108 D<F83F007E00F9FF83FF00FBFFC7FF
80FFFFEFFFC0FF07FE0FC0FE03FC07E0FC01F803E0FC01F803E0F801F003E0F801F003E0F801F0
03E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801
F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F8
01F003E0231B7B9A30>I<F87E00F9FF00FBFF80FFFFC0FF0FC0FE07E0FC03E0FC03E0F803E0F8
03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F8
03E0F803E0F803E0F803E0F803E0131B7B9A1E>I<007E0001FF8007FFE00FFFF01F81F83F00FC
3E007C7C003E7C003E78001EF8001FF8001FF8001FF8001FF8001FF8001FF8001F7C003E7C003E
7C003E3E007C3F00FC1FC3F80FFFF007FFE003FFC0007E00181B7E9A1D>I<F87E00F9FF80FFFF
C0FFFFE0FF0FE0FC03F0F801F8F800F8F800F8F800FCF8007CF8007CF8007CF8007CF8007CF800
7CF8007CF800FCF800F8F801F8F801F0FC03F0FE0FE0FFFFC0FFFF80FBFF00F8FC00F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000016277B9A1E>I<00
FC7C03FF7C07FFFC0FFFFC1FC1FC3F00FC3E00FC7E007C7C007CFC007CF8007CF8007CF8007CF8
007CF8007CF8007CF8007CFC007C7C007C7C007C7E007C3F00FC1FC3FC1FFFFC0FFF7C03FE7C01
F87C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C16
277E9A1E>I<F838F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC00F800F800F800F800F800F800F8
00F800F800F800F800F800F800F800F800F800F8000D1B7B9A14>I<07F8001FFF003FFF807FFF
807C0780F80100F80000F80000F80000FC00007F00007FF0003FFC001FFE0007FF0000FF80001F
C0000FC00007C00007C04007C0E007C0FC1F80FFFF807FFF001FFE0007F800121B7E9A16>I<07
C00007C00007C00007C00007C00007C00007C000FFFF80FFFF80FFFF80FFFF8007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C08007E38003FFC003FFC001FF0000FC0012227FA115>I<F803E0F803E0F803E0
F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0
F803E0F803E0F803E0F803E0F807E0F807E0FC1FE0FFFFE07FFBE03FF3E01F83E0131B7B9A1E>
I<7C001F803E003F003F003E001F807C000F80FC0007C0F80007E1F00003F3E00001F7E00000FF
C000007F8000007F0000003E0000003E0000003F0000007F800000FFC00001F3E00003E1E00003
E1F00007C0F8000F807C001F807C001F003E003E001F007C001F80FC000FC01A1B809A1B>120
D<FFFFF0FFFFF0FFFFF0FFFFE00007E00007C0000F80001F80001F00003E00007E00007C0000F8
0001F80001F00003E00007E00007C0000F80001F80001F00003E00007E00007FFFF8FFFFF8FFFF
F8FFFFF8151B7E9A19>122 D E /Fr 22 122 df<FFFFFFFFFFFFC00000FFFFFFFFFFFFFC0000
FFFFFFFFFFFFFF8000FFFFFFFFFFFFFFE000FFFFFFFFFFFFFFF800001FFF000003FFFC00001FFF
0000007FFE00001FFF0000003FFF00001FFF0000001FFF80001FFF0000000FFFC0001FFF000000
0FFFC0001FFF00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF00000003FFF0
001FFF00000003FFF0001FFF00000003FFF0001FFF00000003FFF0001FFF00000003FFF0001FFF
00000003FFF0001FFF00000003FFF0001FFF00000003FFF0001FFF00000007FFE0001FFF000000
07FFE0001FFF00000007FFC0001FFF0000000FFFC0001FFF0000000FFF80001FFF0000001FFF00
001FFF0000003FFE00001FFF0000007FFC00001FFF000001FFF800001FFF00000FFFE000001FFF
FFFFFFFF8000001FFFFFFFFFFC0000001FFFFFFFFFFF8000001FFFFFFFFFFFF000001FFF000000
FFFC00001FFF0000003FFF00001FFF0000000FFF80001FFF00000007FFE0001FFF00000003FFF0
001FFF00000001FFF0001FFF00000001FFF8001FFF00000000FFFC001FFF00000000FFFC001FFF
000000007FFE001FFF000000007FFE001FFF000000007FFE001FFF000000007FFF001FFF000000
007FFF001FFF000000007FFF001FFF000000007FFF001FFF000000007FFF001FFF000000007FFF
001FFF000000007FFF001FFF000000007FFF001FFF000000007FFE001FFF00000000FFFE001FFF
00000000FFFE001FFF00000001FFFC001FFF00000001FFFC001FFF00000003FFF8001FFF000000
07FFF0001FFF0000000FFFE0001FFF0000003FFFC0001FFF000001FFFF80FFFFFFFFFFFFFFFF00
FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFF000FFFFFFFFFFFFFF8000FFFFFFFFFFFFF8000048477C
C653>66 D<000000007FFC00000E0000000FFFFFC0001E0000007FFFFFF8003E000003FFFFFFFE
007E00000FFFFFFFFF80FE00003FFFF8007FC1FE0000FFFF80000FF3FE0003FFFC000003FFFE00
07FFF0000001FFFE000FFFC00000007FFE001FFF800000003FFE003FFF000000001FFE007FFC00
0000000FFE00FFFC000000000FFE01FFF80000000007FE03FFF00000000003FE03FFE000000000
03FE07FFE00000000001FE0FFFC00000000001FE0FFFC00000000000FE1FFF800000000000FE1F
FF8000000000007E3FFF8000000000007E3FFF0000000000007E3FFF0000000000003E7FFF0000
000000003E7FFF0000000000003E7FFF0000000000003E7FFE000000000000007FFE0000000000
0000FFFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000FF
FE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000FFFE0000
0000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000FFFE0000000000
00007FFE000000000000007FFE000000000000007FFF000000000000007FFF0000000000003E7F
FF0000000000003E3FFF0000000000003E3FFF0000000000003E3FFF8000000000003E1FFF8000
000000007E1FFF8000000000007C0FFFC000000000007C0FFFC00000000000FC07FFE000000000
00FC03FFE00000000000F803FFF00000000001F801FFF80000000003F000FFFC0000000003F000
7FFE0000000007E0003FFF000000000FC0001FFF800000001F80000FFFC00000003F000007FFF0
000000FE000003FFFC000001FC000000FFFF80000FF80000003FFFF8007FE00000000FFFFFFFFF
C000000003FFFFFFFF00000000007FFFFFFC00000000000FFFFFE00000000000007FFE00000047
497AC754>I<00000003FFF0000000000000007FFFFF80000000000003FFFFFFF000000000000F
FFFFFFFC00000000003FFF003FFF0000000000FFF80007FFC000000003FFE00001FFF000000007
FF8000007FF80000000FFF0000003FFC0000001FFE0000001FFE0000003FFC0000000FFF000000
7FF800000007FF800000FFF000000003FFC00001FFF000000003FFE00003FFE000000001FFF000
03FFC000000000FFF00007FFC000000000FFF80007FFC000000000FFF8000FFF80000000007FFC
000FFF80000000007FFC001FFF80000000007FFE001FFF00000000003FFE003FFF00000000003F
FF003FFF00000000003FFF003FFF00000000003FFF007FFF00000000003FFF807FFE0000000000
1FFF807FFE00000000001FFF807FFE00000000001FFF807FFE00000000001FFF80FFFE00000000
001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE000000
00001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE0000
0000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00
000000001FFFC0FFFE00000000001FFFC07FFE00000000001FFF807FFF00000000003FFF807FFF
00000000003FFF807FFF00000000003FFF803FFF00000000003FFF003FFF00000000003FFF003F
FF80000000007FFF001FFF80000000007FFE001FFF80000000007FFE001FFF80000000007FFE00
0FFFC000000000FFFC000FFFC000000000FFFC0007FFE000000001FFF80003FFE000000001FFF0
0003FFF000000003FFF00001FFF000000003FFE00000FFF800000007FFC000007FFC0000000FFF
8000007FFE0000001FFF8000003FFF0000003FFF0000000FFFC00000FFFC00000007FFE00001FF
F800000003FFF80007FFF000000000FFFF003FFFC0000000007FFFFFFFFF80000000000FFFFFFF
FC000000000003FFFFFFF00000000000007FFFFF8000000000000003FFF0000000004A497AC757
>79 D<00007FF00007000007FFFF000F00001FFFFFE01F00007FFFFFF83F0000FFFFFFFC7F0003
FFC00FFFFF0007FE0000FFFF000FFC00003FFF000FF800001FFF001FF000000FFF003FE0000007
FF003FE0000003FF007FE0000001FF007FC0000000FF007FC0000000FF00FFC00000007F00FFC0
0000007F00FFC00000003F00FFE00000003F00FFE00000003F00FFE00000001F00FFF00000001F
00FFF80000001F00FFFC0000001F00FFFE00000000007FFF80000000007FFFF8000000007FFFFF
800000003FFFFFFC0000003FFFFFFFC000001FFFFFFFF800001FFFFFFFFF00000FFFFFFFFFC000
07FFFFFFFFE00003FFFFFFFFF00001FFFFFFFFFC0000FFFFFFFFFC00003FFFFFFFFE00000FFFFF
FFFF000003FFFFFFFF8000007FFFFFFF80000003FFFFFFC00000003FFFFFC000000001FFFFE000
0000003FFFE0000000000FFFE00000000003FFF00000000001FFF00000000001FFF0F800000000
FFF0F8000000007FF0F8000000007FF0F8000000007FF0F8000000003FF0FC000000003FF0FC00
0000003FF0FC000000003FE0FE000000003FE0FE000000003FE0FF000000007FE0FF800000007F
C0FF800000007FC0FFC0000000FF80FFF0000001FF80FFF8000001FF00FFFE000003FE00FFFFC0
000FFC00FF7FFC007FF800FE3FFFFFFFF000FC0FFFFFFFC000F803FFFFFF0000F0007FFFFC0000
E00003FFE0000034497AC741>83 D<0003FFF0000000003FFFFF00000000FFFFFFE0000001FFFF
FFF8000003FF003FFC000007FF800FFE000007FF8007FF000007FF8003FF800007FF8003FFC000
07FF8001FFC00007FF8001FFC00003FF0000FFE00001FE0000FFE00000FC0000FFE00000000000
FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000000FFFFE00000
007FFFFFE0000007FFFFFFE000003FFFFCFFE00000FFFE00FFE00003FFF000FFE00007FFC000FF
E0000FFF0000FFE0001FFE0000FFE0003FFC0000FFE0007FFC0000FFE0007FF80000FFE000FFF8
0000FFE000FFF00000FFE000FFF00000FFE000FFF00000FFE000FFF00001FFE000FFF00001FFE0
00FFF80003FFE0007FFC0007FFE0007FFC000FFFE0003FFE001F7FF8001FFF80FE7FFFF007FFFF
FC3FFFF003FFFFF01FFFF0007FFFC00FFFF00007FE0003FFF0342E7DAD38>97
D<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC0
0000000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000
01FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000
00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001
FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00FFE000001FFC0FFFF
C00001FFC3FFFFF00001FFCFFFFFFC0001FFFFE01FFF0001FFFF0007FF8001FFFC0001FFC001FF
F80000FFE001FFF00000FFF001FFE000007FF001FFC000007FF801FFC000003FFC01FFC000003F
FC01FFC000003FFC01FFC000001FFE01FFC000001FFE01FFC000001FFE01FFC000001FFF01FFC0
00001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF
01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000
001FFE01FFC000001FFE01FFC000003FFE01FFC000003FFC01FFC000003FFC01FFC000003FF801
FFC000007FF801FFE000007FF001FFF00000FFE001FFF80001FFE001FFFC0003FFC001FF7F0007
FF0001FE3FC03FFE0001FC0FFFFFF80001FC03FFFFF00001F800FFFF800001F0001FF800003848
7CC741>I<00001FFF80000001FFFFF8000007FFFFFE00001FFFFFFF00007FF801FF8000FFE003
FFC003FFC003FFC007FF8003FFC007FF0003FFC00FFE0003FFC01FFE0003FFC01FFC0001FF803F
FC0000FF003FFC00007E007FFC000000007FF8000000007FF800000000FFF800000000FFF80000
0000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FF
F800000000FFF800000000FFF800000000FFF8000000007FFC000000007FFC000000007FFC0000
00003FFC000000003FFE000000001FFE000001F01FFF000001F00FFF000003F007FF800007E007
FFC00007C003FFE0000FC000FFF8003F80007FFF00FF00001FFFFFFC000007FFFFF0000001FFFF
C00000001FFC00002C2E7CAD34>I<0000000000FF8000000001FFFF8000000001FFFF80000000
01FFFF8000000001FFFF8000000001FFFF800000000007FF800000000003FF800000000003FF80
0000000003FF800000000003FF800000000003FF800000000003FF800000000003FF8000000000
03FF800000000003FF800000000003FF800000000003FF800000000003FF800000000003FF8000
00000003FF800000000003FF800000000003FF800000000003FF800000000003FF800000000003
FF8000001FF803FF800001FFFF03FF80000FFFFFE3FF80003FFFFFFBFF80007FFC03FFFF8001FF
E0007FFF8003FFC0003FFF8007FF80000FFF800FFF000007FF800FFE000003FF801FFE000003FF
801FFC000003FF803FFC000003FF803FFC000003FF807FFC000003FF807FF8000003FF807FF800
0003FF80FFF8000003FF80FFF8000003FF80FFF8000003FF80FFF8000003FF80FFF8000003FF80
FFF8000003FF80FFF8000003FF80FFF8000003FF80FFF8000003FF80FFF8000003FF80FFF80000
03FF80FFF8000003FF807FF8000003FF807FF8000003FF807FF8000003FF803FFC000003FF803F
FC000003FF803FFC000003FF801FFE000007FF800FFE000007FF800FFF00000FFF8007FF00001F
FF8003FF80007FFF8001FFE000FFFFC000FFF807FBFFFF003FFFFFE3FFFF000FFFFFC3FFFF0003
FFFE03FFFF00003FF003FFFF38487CC741>I<00003FFE00000001FFFFC000000FFFFFF800003F
FFFFFC00007FFC0FFE0000FFE003FF0001FF8000FF8003FF0000FFC007FF00007FE00FFE00003F
F01FFE00003FF01FFC00003FF03FFC00001FF83FFC00001FF87FFC00001FF87FF800001FFC7FF8
00000FFC7FF800000FFCFFF800000FFCFFFFFFFFFFFCFFFFFFFFFFFCFFFFFFFFFFFCFFFFFFFFFF
FCFFF800000000FFF800000000FFF800000000FFF800000000FFF8000000007FF8000000007FF8
000000007FFC000000007FFC000000003FFC000000003FFC0000007C1FFE0000007C0FFE000000
FC0FFF000000F807FF800001F803FFC00003F001FFE00007E000FFF8001FC0007FFF00FF80001F
FFFFFF000007FFFFFC000000FFFFF00000000FFF00002E2E7DAD35>I<00000000003F000000FF
F000FFC00007FFFE03FFE0003FFFFFCFFFF0007FFFFFFFCFF001FFE07FFE0FF003FF801FFC1FF0
07FF000FFE0FF00FFE0007FF0FF00FFE0007FF07E01FFC0003FF81801FFC0003FF80003FFC0003
FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003F
FC0003FFC0003FFC0003FFC0003FFC0003FFC0001FFC0003FF80001FFC0003FF80000FFE0007FF
00000FFE0007FF000007FF000FFE000003FF801FFC000001FFE07FF8000003FFFFFFE0000003FF
FFFFC000000787FFFE0000000780FFF0000000078000000000000F8000000000000F8000000000
000FC000000000000FC000000000000FE000000000000FF8000000000007FFFFFFF0000007FFFF
FFFF000007FFFFFFFFE00003FFFFFFFFF80003FFFFFFFFFC0001FFFFFFFFFE0000FFFFFFFFFF00
03FFFFFFFFFF800FFFFFFFFFFF801FF000001FFFC03FC0000001FFC07F800000007FE07F800000
003FE0FF000000003FE0FF000000001FE0FF000000001FE0FF000000001FE0FF000000001FE0FF
800000003FE07F800000003FC07FC00000007FC03FE0000000FF801FF8000003FF000FFE00000F
FE0007FFE000FFFC0001FFFFFFFFF000003FFFFFFF8000000FFFFFFE000000007FFFC000003444
7DAE3A>103 D<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000
000000FFFFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001
FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000
000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC007FE00
0001FFC03FFFC00001FFC0FFFFF00001FFC1FFFFFC0001FFC7F01FFC0001FFCFC00FFE0001FFDF
0007FF0001FFDE0007FF0001FFFC0007FF0001FFF80003FF8001FFF80003FF8001FFF00003FF80
01FFE00003FF8001FFE00003FF8001FFE00003FF8001FFC00003FF8001FFC00003FF8001FFC000
03FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001
FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003
FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF
C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF
8001FFC00003FF80FFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF
81FFFFFF38487BC741>I<00FC0001FF0003FF8007FF800FFFC00FFFC00FFFE00FFFE00FFFE00F
FFC00FFFC007FF8003FF8001FF0000FC0000000000000000000000000000000000000000000000
0000000000000000000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001
FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001
FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001
FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18497CC8
20>I<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FFFF
FF80FFFFFF80FFFFFF80FFFFFF80FFFFFF8019487CC720>108 D<00FF8003FF000003FF000000
FFFF801FFFE0001FFFE00000FFFF807FFFF8007FFFF80000FFFF81FFFFFC01FFFFFC0000FFFF83
F01FFE03F01FFE0000FFFF87C007FF07C007FF000003FF8F0007FF8F0007FF800001FF9E0003FF
9E0003FF800001FFBC0003FFBC0003FF800001FFF80001FFF80001FFC00001FFF80001FFF80001
FFC00001FFF00001FFF00001FFC00001FFE00001FFE00001FFC00001FFE00001FFE00001FFC000
01FFE00001FFE00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF
80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80592E7BAD62>
I<00FF8007FE0000FFFF803FFFC000FFFF80FFFFF000FFFF81FFFFFC00FFFF87F01FFC00FFFF8F
C00FFE0003FF9F0007FF0001FF9E0007FF0001FFBC0007FF0001FFF80003FF8001FFF80003FF80
01FFF00003FF8001FFE00003FF8001FFE00003FF8001FFE00003FF8001FFC00003FF8001FFC000
03FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001
FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003
FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF
C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF
8001FFC00003FF8001FFC00003FF80FFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF
81FFFFFFFFFFFF81FFFFFF382E7BAD41>I<00000FFE0000000001FFFFF000000007FFFFFC0000
001FFFFFFF0000007FF803FFC00000FFE000FFE00001FF80003FF00003FF00001FF80007FE0000
0FFC000FFE00000FFE000FFC000007FE001FFC000007FF003FFC000007FF803FF8000003FF803F
F8000003FF807FF8000003FFC07FF8000003FFC07FF8000003FFC0FFF8000003FFE0FFF8000003
FFE0FFF8000003FFE0FFF8000003FFE0FFF8000003FFE0FFF8000003FFE0FFF8000003FFE0FFF8
000003FFE0FFF8000003FFE0FFF8000003FFE07FF8000003FFC07FF8000003FFC07FF8000003FF
C07FF8000003FFC03FFC000007FF803FFC000007FF801FFC000007FF001FFC000007FF000FFE00
000FFE0007FF00001FFC0003FF00001FF80001FFC0007FF00000FFE000FFE000007FFC07FFC000
001FFFFFFF00000007FFFFFC00000001FFFFF0000000001FFF000000332E7DAD3A>I<007FC00F
FE0000FFFFC0FFFFC000FFFFC3FFFFF000FFFFCFFFFFFC00FFFFFFE03FFF00FFFFFF000FFF8003
FFFC0007FFC001FFF80003FFE001FFF00001FFF001FFE00000FFF001FFC00000FFF801FFC00000
7FFC01FFC000007FFC01FFC000003FFC01FFC000003FFE01FFC000003FFE01FFC000003FFE01FF
C000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001F
FF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC0
00001FFF01FFC000003FFE01FFC000003FFE01FFC000003FFE01FFC000007FFC01FFC000007FFC
01FFC000007FF801FFC00000FFF801FFE00000FFF001FFF00001FFE001FFF80003FFE001FFFC00
07FFC001FFFF000FFF0001FFFFC07FFE0001FFCFFFFFF80001FFC3FFFFF00001FFC0FFFF800001
FFC01FF8000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000
000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
C00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000FFFFFF800000
00FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF8000000038427CAD41>I<00FF80
7F00FFFF81FFC0FFFF87FFF0FFFF8FFFF8FFFF9F8FFCFFFF9F1FFE03FFBE1FFE01FFBC1FFE01FF
F81FFE01FFF81FFE01FFF01FFE01FFF00FFC01FFE007F801FFE003F001FFE0000001FFE0000001
FFE0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC00000
01FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC000
0001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0
000001FFC00000FFFFFFE000FFFFFFE000FFFFFFE000FFFFFFE000FFFFFFE000272E7CAD2F>
114 D<000FFE01C000FFFFC7C003FFFFFFC007FFFFFFC01FF001FFC03FC0007FC03F80003FC07F
00001FC07E00000FC0FE00000FC0FE000007C0FE000007C0FF000007C0FF800007C0FFC0000000
FFF8000000FFFFC000007FFFFE00007FFFFFE0003FFFFFF8001FFFFFFE000FFFFFFF0007FFFFFF
8001FFFFFFC0007FFFFFE0001FFFFFF00000FFFFF0000007FFF00000007FF80000001FF8F80000
0FF8F8000007F8FC000007F8FC000003F8FC000003F8FE000003F8FF000003F0FF000007F0FF80
0007F0FFC0000FE0FFF0001FC0FFFC00FF80FFFFFFFF00FC7FFFFC00F01FFFF000E003FF800025
2E7CAD2E>I<0001F000000001F000000001F000000001F000000001F000000001F000000003F0
00000003F000000003F000000007F000000007F000000007F00000000FF00000000FF00000001F
F00000003FF00000003FF00000007FF0000001FFF0000003FFF000000FFFFFFFC0FFFFFFFFC0FF
FFFFFFC0FFFFFFFFC0FFFFFFFFC0007FF00000007FF00000007FF00000007FF00000007FF00000
007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF000
00007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF0
0000007FF00000007FF00000007FF001F0007FF001F0007FF001F0007FF001F0007FF001F0007F
F001F0007FF001F0007FF001F0007FF001F0007FF003F0003FF803E0003FF807E0001FFC07C000
1FFE0F80000FFFFF800003FFFE000000FFFC0000001FE00024427EC12D>I<007FC00000FF80FF
FFC001FFFF80FFFFC001FFFF80FFFFC001FFFF80FFFFC001FFFF80FFFFC001FFFF8003FFC00007
FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF
C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF
8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC0
0003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF80
01FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00007FF8001FFC000
07FF8001FFC00007FF8001FFC0000FFF8001FFC0001FFF8000FFC0003FFF8000FFE0007FFF8000
7FE000FBFFC0007FF803F3FFFF003FFFFFE3FFFF000FFFFF83FFFF0003FFFE03FFFF00007FF003
FFFF382E7BAD41>I<FFFFFF0003FFFFFFFFFF0003FFFFFFFFFF0003FFFFFFFFFF0003FFFFFFFF
FF0003FFFF01FFE000001F8000FFE000001F0000FFF000003F00007FF000003E00007FF800007E
00003FF800007C00003FFC0000FC00001FFC0000F800001FFC0000F800001FFE0001F800000FFE
0001F000000FFF0003F0000007FF0003E0000007FF8007E0000003FF8007C0000003FFC007C000
0003FFC00FC0000001FFC00F80000001FFE01F80000000FFE01F00000000FFF03F000000007FF0
3E000000007FF87E000000003FF87C000000003FF87C000000003FFCFC000000001FFCF8000000
001FFFF8000000000FFFF0000000000FFFF00000000007FFE00000000007FFE00000000003FFC0
0000000003FFC00000000003FFC00000000001FF800000000001FF800000000000FF0000000000
00FF0000000000007E0000000000007E0000000000007E0000000000007C000000000000FC0000
00000000F8000000000001F8000000000001F00000001F0003F00000003F8003E00000007FC003
E0000000FFE007C0000000FFE00FC0000000FFE00F80000000FFE01F80000000FFE03F00000000
7FC0FE000000007F83FC000000003FFFF8000000001FFFE00000000007FF800000000001FE0000
00000038427EAD3D>121 D E /Fs 8 117 df<0000000F80000000000F80000000001F80000000
003F80000000007F80000000007F8000000000FF8000000001FF8000000003FF8000000003FF80
00000007FF800000000FFF800000001FFF800000001FFF800000003DFF8000000079FF80000000
F9FF80000000F1FF80000001E1FF80000003C1FF8000000781FF8000000F81FF8000000F01FF80
00001E01FF8000003C01FF8000007C01FF8000007801FF800000F001FF800001E001FF800003E0
01FF800003C001FF8000078001FF80000F0001FF80001F0001FF80001E0001FF80003C0001FF80
00780001FF8000F80001FF8000FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF800000
03FF8000000003FF8000000003FF8000000003FF8000000003FF8000000003FF8000000003FF80
00000003FF8000000003FF8000000003FF80000007FFFFFF800007FFFFFF800007FFFFFF800007
FFFFFF8029387DB730>52 D<0000001FFE0000E0000003FFFFE001E000001FFFFFF803E000007F
FFFFFE07E00001FFFC00FF0FE00007FFC0001FDFE0000FFF000007FFE0003FFC000001FFE0007F
F0000000FFE000FFE00000007FE001FFC00000003FE003FF800000001FE007FF800000001FE007
FF000000000FE00FFE0000000007E00FFE0000000007E01FFC0000000007E01FFC0000000003E0
3FFC0000000003E03FF80000000003E07FF80000000001E07FF80000000001E07FF80000000001
E07FF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000000000
0000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000
000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000007FF00000
000000007FF80000000000007FF80000000001E07FF80000000001E03FF80000000001E03FFC00
00000001E01FFC0000000001E01FFC0000000003E00FFE0000000003C00FFE0000000007C007FF
0000000007C007FF800000000F8003FF800000000F8001FFC00000001F0000FFE00000003E0000
7FF00000007C00003FFC000000F800000FFF000003F0000007FFC0000FE0000001FFFC007FC000
00007FFFFFFF000000001FFFFFFC0000000003FFFFE000000000001FFE0000003B3D7BBB46>67
D<003FFF00000001FFFFE0000007FFFFFC00000FF007FE00001FF801FF80001FF800FFC0001FF8
007FE0001FF8007FE0001FF8007FF0000FF0003FF00007E0003FF00003C0003FF0000000003FF0
000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF000007FF83FF00003FF
803FF00007FE003FF0001FFC003FF0003FF8003FF0007FF0003FF0007FE0003FF000FFE0003FF0
00FFC0003FF000FFC0003FF000FFC0003FF000FFC0007FF000FFC0007FF000FFE000FFF0007FE0
01DFF0003FF003DFFC001FFC0F9FFFE00FFFFE0FFFE001FFF807FFE0003FE001FFE02B267DA52F
>97 D<0003FF8000001FFFF000007FFFFC0000FF83FF0003FE00FF8007FC003F800FF8003FC01F
F8001FE01FF0001FE03FF0001FF03FF0000FF07FE0000FF07FE0000FF87FE0000FF8FFE0000FF8
FFE0000FF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFE0000000FFE0000000FFE0000000FFE00000
00FFE00000007FE00000007FE00000007FF00000003FF00000783FF00000781FF80000F80FF800
00F007FC0001F003FE0003E001FF000FC000FFC07F80003FFFFE00000FFFFC000001FFC0002526
7DA52C>101 D<00FF0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF0000
00000007FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003
FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003FF000000
000003FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003FF
000000000003FF003FE0000003FF01FFFC000003FF07FFFE000003FF0F81FF800003FF3C00FF80
0003FF3800FFC00003FF7000FFC00003FFE0007FE00003FFC0007FE00003FFC0007FE00003FF80
007FE00003FF80007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE000
03FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF0000
7FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003
FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007F
E00003FF00007FE000FFFFFC1FFFFF80FFFFFC1FFFFF80FFFFFC1FFFFF80FFFFFC1FFFFF80313C
7DBB36>104 D<00FF00FF8000FFFF0FFFF800FFFF3FFFFE00FFFFFE03FF00FFFFF000FFC007FF
E0007FE003FFC0003FF003FF80003FF803FF00001FF803FF00001FFC03FF00000FFC03FF00000F
FE03FF00000FFE03FF00000FFE03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF
000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF00000F
FE03FF00000FFE03FF00000FFE03FF00000FFC03FF00001FFC03FF00001FF803FF80003FF003FF
C0007FF003FFE000FFE003FFF001FF8003FFFE07FF0003FF3FFFFC0003FF0FFFF00003FF01FF00
0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
00FFFFFC000000FFFFFC000000FFFFFC000000FFFFFC00000030377EA536>112
D<00FE01F800FFFE07FF00FFFE1FFF80FFFE3E3FC0FFFE787FE007FE707FE003FEE07FE003FEE0
7FE003FFC07FE003FFC03FC003FF801F8003FF800F0003FF80000003FF80000003FF00000003FF
00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003
FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000
03FF00000003FF00000003FF000000FFFFFE0000FFFFFE0000FFFFFE0000FFFFFE000023267EA5
28>114 D<000F0000000F0000000F0000000F0000000F0000001F0000001F0000001F0000001F
0000003F0000003F0000007F0000007F000000FF000001FF000003FF000007FF00001FFFFFF0FF
FFFFF0FFFFFFF0FFFFFFF003FF000003FF000003FF000003FF000003FF000003FF000003FF0000
03FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF00
0003FF000003FF000003FF003C03FF003C03FF003C03FF003C03FF003C03FF003C03FF003C03FF
003C01FF807801FF807800FFC0F000FFE1F0003FFFE0000FFF800001FE001E377EB626>116
D E /Ft 73 124 df<000FC3E0007FEFF000E07C7801C0F8780380F83007007000070070000700
700007007000070070000700700007007000FFFFFF80FFFFFF8007007000070070000700700007
007000070070000700700007007000070070000700700007007000070070000700700007007000
0700700007007000070070007FE3FF007FE3FF001D20809F1B>11 D<001F80007FC001E0E00381
E00381E00701E0070000070000070000070000070000070000FFFFE0FFFFE00700E00700E00700
E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E07FC3FE7FC3FE1720809F19>I<001FE0007FE001E1E00381E00380E00700E00700E00700E007
00E00700E00700E00700E0FFFFE0FFFFE00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E00700E00700E00700E07FE7FE7FE7FE1720809F19>I<
000F80F800007FE7FE0000E06E060001C0FC0F000380F80F000700F00F00070070000007007000
000700700000070070000007007000000700700000FFFFFFFF00FFFFFFFF000700700700070070
070007007007000700700700070070070007007007000700700700070070070007007007000700
7007000700700700070070070007007007000700700700070070070007007007007FE3FE3FF07F
E3FE3FF02420809F26>I<7038F87CFC7EFC7E7C3E0C060C060C06180C180C381C301860304020
0F0E7E9F17>34 D<0078000000FC00000186000003860000030300000703000007030000070300
00070300000706000007060000070C00000718000003B81FFC03F01FFC03E003E003C0018003C0
030007C003000EE006001CE0060038700C0078780C0070381800F01C3000F01E3000F00E6000F0
07C000F003C0187801C0187807E0303E1E78701FF83FE007E00F801E227EA023>38
D<006000C001800300070006000C001C00180038003800300070007000700060006000E000E000
E000E000E000E000E000E000E000E000E000E0006000600070007000700030003800380018001C
000C00060007000300018000C000600B2E7DA112>40 D<C0006000300018001C000C0006000700
030003800380018001C001C001C000C000C000E000E000E000E000E000E000E000E000E000E000
E000E000C000C001C001C001C00180038003800300070006000C001C00180030006000C0000B2E
7DA112>I<70F8FCFC7C0C0C0C181838306040060E7C840D>44 D<FFC0FFC0FFC00A037F8A0F>I<
70F8F8F87005057C840D>I<00030003000700060006000E000C000C001C001800180038003000
3000700060006000E000C000C001C00180018001800380030003000700060006000E000C000C00
1C0018001800380030003000700060006000E000C000C000102D7DA117>I<03F0000FFC001E1E
001C0E00380700780780700380700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003
C0F003C0F003C0F003C0F003C0F003C0F003C07003807003807003807807803807001C0E001E1E
000FFC0003F000121F7E9D17>I<018003801F80FF80E380038003800380038003800380038003
80038003800380038003800380038003800380038003800380038003800380FFFEFFFE0F1E7C9D
17>I<03F0000FFC00183E00300F00600F80C00780F007C0F807C0F803C0F803C02003C00007C0
000780000780000F00000E00001C0000380000700000E00001C0000380000300000600C00C00C0
1800C03001807FFF80FFFF80FFFF80121E7E9D17>I<03F0000FFC001C1E00300F00780F80780F
80780780380F80000F80000F00000F00001E00003C0003F80003F000001C00000E00000F000007
800007800007C02007C0F807C0F807C0F807C0F00780600F80700F003C1E001FFC0003F000121F
7E9D17>I<000E00000E00001E00003E00003E00006E0000EE0000CE00018E00038E00030E0006
0E000E0E000C0E00180E00380E00300E00600E00E00E00FFFFF0FFFFF0000E00000E00000E0000
0E00000E00000E00000E0000FFE000FFE0141E7F9D17>I<3803003FFF003FFE003FF8003FE000
30000030000030000030000030000030000031F00037FC003E0E003C0700380780300380000380
0003C00003C00003C06003C0F003C0F003C0F00380C00780600700700E003C1E000FF80007E000
121F7E9D17>I<007C0001FE000783000E03800C07801C07803803003800007800007000007000
00F3F800F7FE00FC0E00F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003
C07003803803803807001C07000E1E0007FC0001F000121F7E9D17>I<6000007FFFC07FFFC07F
FF80600180C00300C00600C00600000C0000180000180000300000600000600000E00000C00001
C00001C00001C00003800003800003800003800007800007800007800007800007800007800007
8000030000121F7D9D17>I<03F0000FFC001E1E00380700300700700380700380700380700380
7807003E07003F0E001FDC000FF80003F80007FC001E7E00383F00700F80700780E003C0E001C0
E001C0E001C0E001C0F001807003803807001E0E000FFC0003F000121F7E9D17>I<03F00007F8
001E1C00380E00380700700700700380F00380F00380F003C0F003C0F003C0F003C0F003C07007
C07007C0380FC01C0FC01FFBC007F3C0000380000380000780000700300700780E00780E00701C
003078001FF0000FC000121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F8700514
7C930D>I<70F8F8F8700000000000000000000070F8F8F878181818183030606040051D7C930D>
I<7FFFFFE0FFFFFFF0000000000000000000000000000000000000000000000000000000000000
0000FFFFFFF07FFFFFE01C0C7D9023>61 D<0FC03FF070786038E03CF03CF03C603C003C007800
F000E001C00180038003000300030003000300030003000000000000000000000007000F800F80
0F8007000E207D9F15>63 D<0003800000038000000380000007C0000007C0000007C000000DE0
00000DE000000DE0000018F0000018F0000018F00000307800003078000030780000603C000060
3C0000603C0000E01E0000C01E0000FFFE0001FFFF0001800F0001800F0003800F800300078003
000780070007C0070003C00F8003C0FFE03FFEFFE03FFE1F207F9F22>65
D<FFFFE000FFFFF80007803E0007801F0007800F0007800F8007800F8007800F8007800F800780
0F8007800F0007801F0007803E0007807C0007FFF80007FFFC0007801E0007800F0007800F8007
800780078007C0078007C0078007C0078007C0078007C00780078007800F8007801F0007803E00
FFFFFC00FFFFF0001A1F7E9E20>I<001FC040007FF0C001F839C003C00DC0078007C00F0003C0
1E0003C03E0001C03C0001C07C0001C07C0000C0780000C0F80000C0F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000780000C07C0000C07C0000C03C0000C03E00
01801E0001800F0003000780030003C00E0001F81C00007FF000001FC0001A217D9F21>I<FFFF
E000FFFFFC0007803E0007800F0007800780078003C0078003E0078001E0078001F0078000F007
8000F0078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F8
078000F0078000F0078001F0078001E0078001E0078003C00780078007800F0007803E00FFFFFC
00FFFFE0001D1F7E9E23>I<FFFFFF00FFFFFF0007801F00078007000780030007800300078003
8007800180078001800780C1800780C1800780C0000780C0000781C00007FFC00007FFC0000781
C0000780C0000780C0000780C0600780C06007800060078000C0078000C0078000C0078001C007
8001C0078003C007800F80FFFFFF80FFFFFF801B1F7E9E1F>I<FFFFFF00FFFFFF0007801F0007
80070007800300078003000780038007800180078001800780C1800780C1800780C0000780C000
0781C00007FFC00007FFC0000781C0000780C0000780C0000780C0000780C00007800000078000
00078000000780000007800000078000000780000007800000FFFE0000FFFE0000191F7E9E1E>
I<FFF8FFF8FFF8FFF807800F0007800F0007800F0007800F0007800F0007800F0007800F000780
0F0007800F0007800F0007800F0007800F0007FFFF0007FFFF0007800F0007800F0007800F0007
800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F00
FFF8FFF8FFF8FFF81D1F7E9E22>72 D<FFFCFFFC07800780078007800780078007800780078007
8007800780078007800780078007800780078007800780078007800780078007800780FFFCFFFC
0E1F7F9E10>I<FFFE00FFFE000780000780000780000780000780000780000780000780000780
000780000780000780000780000780000780000780000780000780060780060780060780060780
0E07800E07800C07801C07803C0780FCFFFFFCFFFFFC171F7E9E1C>76 D<FF80001FF8FFC0003F
F807C0003F0007C0003F0006E0006F0006E0006F0006E0006F00067000CF00067000CF00067000
CF000638018F000638018F000638018F00061C030F00061C030F00061C030F00060E060F00060E
060F00060E060F0006070C0F0006070C0F0006070C0F000603980F000603980F000603980F0006
01F00F000601F00F000601F00F000F00E00F00FFF0E1FFF8FFF0E1FFF8251F7E9E2A>I<FF807F
F8FFC07FF807C0078007E0030007E0030006F0030006F0030006780300063C0300063C0300061E
0300061E0300060F0300060F0300060783000607C3000603C3000601E3000601E3000600F30006
00F30006007B0006007B0006003F0006001F0006001F0006000F0006000F000F000700FFF00700
FFF003001D1F7E9E22>I<001F800000FFF00001E0780007C03E000F801F000F000F001E000780
3C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F80001F0F80001F0F80001
F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03E0007C01E00
07800F000F000F801F0007C03E0001F0F80000FFF000001F80001C217D9F23>I<FFFFE000FFFF
F80007807C0007801E0007801F0007800F0007800F8007800F8007800F8007800F8007800F8007
800F0007801F0007801E0007807C0007FFF80007FFE00007800000078000000780000007800000
0780000007800000078000000780000007800000078000000780000007800000FFFC0000FFFC00
00191F7E9E1F>I<FFFF8000FFFFF0000780F80007803C0007803E0007801E0007801F0007801F
0007801F0007801F0007801E0007803E0007803C000780F80007FFF00007FF80000781C0000780
E000078070000780700007807800078078000780780007807C0007807C0007807C0007807C0C07
807E0C07803E0CFFFC1F18FFFC0FF0000003E01E207E9E21>82 D<07E0800FF9801C1F80300F80
700780600380E00380E00180E00180E00180F00000F000007800007F00003FF0001FFC000FFE00
03FF00001F800007800003C00003C00001C0C001C0C001C0C001C0C001C0E00180F00380F80700
FE0E00CFFC0081F80012217D9F19>I<7FFFFFE07FFFFFE0780F01E0700F00E0600F0060600F00
60E00F0070C00F0030C00F0030C00F0030C00F0030000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F000007FFFE0007FFFE001C1F7E9E21>I<FFFC7FF8FFFC7FF807
800780078003000780030007800300078003000780030007800300078003000780030007800300
078003000780030007800300078003000780030007800300078003000780030007800300078003
0007800300078003000380020003C0060003C0060001C00C0000E0180000783000003FE000000F
C0001D207E9E22>I<FFF07FF83FF0FFF07FF83FF00F0007800F800F00078003000F0007800300
07800FC0060007800FC0060007800FC00600078019E00E0003C019E00C0003C019E00C0003C039
E00C0001E030F0180001E030F0180001E030F0180000F06078300000F06078300000F060783000
00F0E07C30000078C03C60000078C03C60000078C03C6000003D801EC000003D801EC000003D80
1EC000003F000FC000001F000F8000001F000F8000001F000F8000000E00070000000E00070000
000E000700002C207F9E2F>87 D<7FF83FF87FF83FF807C00F8003C0060001E00E0001F00C0000
F0180000783800007C3000003C7000003E6000001EC000000FC000000F8000000780000007C000
0007E000000DE000001DF0000018F8000038780000307C0000603C0000E01E0000C01F0001800F
0003800780030007C00F8007C0FFE01FFEFFE01FFE1F1F7F9E22>I<0804180C30187038603060
30C060C060C060F87CFC7EFC7E7C3E381C0F0E7B9F17>92 D<1FE0003FF000783800781C00300E
00000E00000E00000E0003FE001FFE003E0E00780E00F80E00F00E30F00E30F00E30F01E30783F
703FEFE00F878014147E9317>97 D<0E0000FE0000FE00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E3F000EFF800FC3C00F00E00E00F00E00700E00780E00780E0078
0E00780E00780E00780E00780E00700E00F00F00F00F01E00FC3C00CFF800C3E0015207F9F19>
I<03F80FFC1E1E3C1E380C78007000F000F000F000F000F000F0007000780038033C031F0E0FFC
03F010147E9314>I<000380003F80003F80000380000380000380000380000380000380000380
00038000038003E3800FFB801E0F803C0780780380780380700380F00380F00380F00380F00380
F00380F003807003807003807807803807801E1F800FFBF803E3F815207E9F19>I<03F0000FFC
001E1E003C0F00380700780700700380F00380FFFF80FFFF80F00000F00000F000007000007800
003801801C03800F070007FE0001F80011147F9314>I<003C00FE01CF038F0306070007000700
0700070007000700FFF0FFF0070007000700070007000700070007000700070007000700070007
00070007007FF07FF01020809F0E>I<0001E003E3F00FFF701C1C703C1E00380E00780F00780F
00780F00780F00380E003C1E001C1C003FF80033E0003000003000003800003FFE001FFF803FFF
C07003E07000F0E00070E00070E00070F000F07801E03E07C00FFF0003FC00141F7F9417>I<0E
0000FE0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E000E
FF000FC3800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C0FFE7FCFFE7FC16207F9F19>I<1C001E003E001E001C000000000000
000000000000000E007E007E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E00FFC0FFC00A1F809E0C>I<00E001F001F001F000E00000000000000000000000000070
07F007F000F0007000700070007000700070007000700070007000700070007000700070007000
700070007000706070F0E0F1C07F803E000C28829E0E>I<0E0000FE0000FE00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E1FF00E1FF00E0F800E0E000E0C000E1800
0E30000E70000EF0000FF8000F38000E1C000E1E000E0E000E07000E07800E03800E03C0FFCFF8
FFCFF815207F9F18>I<0E00FE00FE000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B20809F
0C>I<0E3F03F000FEFF8FF800FFC1DC1C000F80F80E000F00F00E000E00E00E000E00E00E000E
00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00
0E00E00E000E00E00E000E00E00E00FFE7FE7FE0FFE7FE7FE023147F9326>I<0E3E00FEFF00FF
C3800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C0FFE7FCFFE7FC16147F9319>I<01F80007FE001E07803C03C03801C07000E0
7000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07801E03801C03C03C01E078007FE00
01F80014147F9317>I<0E3F00FEFF80FFC3C00F01E00E00F00E00F00E00780E00780E00780E00
780E00780E00780E00780E00700E00F00F00F00F01E00FC3C00EFF800E3E000E00000E00000E00
000E00000E00000E00000E0000FFE000FFE000151D7F9319>I<03E1800FF9801E1F803C078078
0780780380700380F00380F00380F00380F00380F00380F003807003807803807807803C0F801E
1F800FF38003E380000380000380000380000380000380000380000380003FF8003FF8151D7E93
18>I<0E78FEFCFF9E0F1E0F0C0F000E000E000E000E000E000E000E000E000E000E000E000E00
FFE0FFE00F147F9312>I<1F903FF07070E030E030E030F00078007F803FE00FF000F0C078C038
C038E038E038F070DFE08F800D147E9312>I<06000600060006000E000E001E003E00FFF8FFF8
0E000E000E000E000E000E000E000E000E000E000E180E180E180E180E18073007E003C00D1C7F
9B12>I<0E01C0FE1FC0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E03C00E03C0070FC007FDFC01F1FC16147F9319>I<FF87F8FF87F81E
01E00E01C00E01800E0180070300070300070300038600038600038E0001CC0001CC0001FC0000
F80000F80000700000700000700015147F9318>I<FF9FF3FCFF9FF3FC1C0780F01C0780601C07
C0E00E0FC0C00E0CC0C00E0CE0C0070CE18007186180071871800398730003B0330003B0330003
B03F0001F03E0001E01E0001E01E0000E01C0000C00C001E147F9321>I<7FC7FC7FC7FC0703E0
07038003830001C70000EE0000EC00007800003800003C00007C0000EE0001C700018700030380
0701C00F01E0FF87FEFF87FE1714809318>I<FF87F8FF87F81E01E00E01C00E01800E01800703
00070300070300038600038600038E0001CC0001CC0001FC0000F80000F8000070000070000070
0000600000600000600000C000F0C000F18000F380007F00003C0000151D7F9318>I<3FFF3FFF
380E301C703C6038607060F001E001C0038007830F030E031C073C063806701EFFFEFFFE10147F
9314>I<FFFFFCFFFFFC1602808C17>I E /Fu 47 122 df<70F8FCFC7C0C0C0C0C181830306040
060F7C840E>44 D<FFE0FFE0FFE00B037F8B10>I<70F8F8F87005057C840E>I<01F00007FC000E
0E001C07003803803803807803C07001C07001C07001C0F001E0F001E0F001E0F001E0F001E0F0
01E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001C07001C07803C038
03803803801C07000E0E0007FC0001F00013227EA018>48 D<018003800F80FF80F38003800380
038003800380038003800380038003800380038003800380038003800380038003800380038003
800380038003800380FFFEFFFE0F217CA018>I<03F0000FFC001C1F00300F806007806003C0C0
03C0F003E0F801E0F801E0F801E02003E00003E00003C00003C0000780000780000F00001E0000
1C0000380000700000E00001C0000380000700600E00600C00601800E03000C07FFFC0FFFFC0FF
FFC013217EA018>I<03F0000FFC001C1F003007807007807807C07807C07803C03807C00007C0
000780000780000F00000E00003C0003F80003F800001E00000F000007800007C00003C00003E0
2003E07003E0F803E0F803E0F003C06003C06007803007801C1F000FFC0003F00013227EA018>
I<000E00000E00001E00001E00003E00003E00006E0000EE0000CE0001CE00018E00030E00070E
00060E000E0E000C0E00180E00180E00300E00700E00600E00E00E00FFFFF8FFFFF8000E00000E
00000E00000E00000E00000E00000E0001FFF001FFF015217FA018>I<1000801C07801FFF001F
FE001FFC001FF00018000018000018000018000018000018000018F8001BFE001F0F001C078018
03801803C00001C00001E00001E00001E00001E06001E0F001E0F001E0F001C0C003C06003C060
03803007001C1E000FFC0003F00013227EA018>I<007E0001FF0003C1800701C00E03C01C03C0
1C0180380000380000780000700000702000F1FC00F3FE00F60700FC0380F803C0F801C0F001C0
F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801C03803C01803801C07000E0E00
07FC0001F00013227EA018>I<01F00007FC000E0F001807803803803001C07001C07001C07001
C07801C07803803E03803F07001FCE000FFC0003F80003FC000F7F001C3F80380F807007C07003
C0E001E0E000E0E000E0E000E0E000E0E000E07001C07001C03803801E0F000FFE0003F0001322
7EA018>56 D<01F00007FC000E0E001C0700380380780380700380F001C0F001C0F001C0F001E0
F001E0F001E0F001E0F001E07001E07003E07803E03807E01C0DE00FF9E007F1E00081C00001C0
0003C0000380000380300700780700780E00701C003838001FF0000FC00013227EA018>I<0001
80000003C0000003C0000003C0000007E0000007E0000007E000000FF000000CF000000CF00000
1CF800001878000018780000383C0000303C0000303C0000601E0000601E0000601E0000C00F00
00C00F0000C00F0001FFFF8001FFFF8001800780030003C0030003C0030003C0060001E0060001
E0060001E00E0000F01F0001F0FFC00FFFFFC00FFF20237EA225>65 D<000FE010003FF83000F8
1C7001E0067003C003F0078001F00F0000F01E0000F03E0000703C0000707C0000707C00003078
00003078000030F8000030F8000000F8000000F8000000F8000000F8000000F8000000F8000000
78000030780000307C0000307C0000303C0000603E0000601E0000600F0000C0078000C003C001
8001E0030000F80E00003FF800000FE0001C247DA223>67 D<FFFFF000FFFFFE0007801F000780
07C0078003C0078001E0078000F0078000F8078000780780007C0780003C0780003C0780003C07
80003E0780003E0780003E0780003E0780003E0780003E0780003E0780003E0780003E0780003C
0780003C0780007C0780007807800078078000F0078001E0078003E0078007C007801F00FFFFFE
00FFFFF8001F227EA125>I<FFFFFFC0FFFFFFC007800FC0078003C0078001C0078000C0078000
E0078000E007800060078060600780606007806060078060000780E0000781E00007FFE00007FF
E0000781E0000780E0000780600007806000078060180780601807800018078000300780003007
8000300780003007800070078000F0078001F0078007E0FFFFFFE0FFFFFFE01D227EA121>I<FF
FFFFC0FFFFFFC007800FC0078003C0078001C0078000C0078000E0078000E00780006007800060
078060600780606007806000078060000780E0000781E00007FFE00007FFE0000781E0000780E0
000780600007806000078060000780600007800000078000000780000007800000078000000780
00000780000007800000FFFE0000FFFE00001B227EA120>I<FFFCFFFC07800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
8007800780078007800780FFFCFFFC0E227EA112>73 D<FFC00003FFFFE00007FF07E00007E007
E00007E006F0000DE006F0000DE006F0000DE006780019E006780019E006780019E0063C0031E0
063C0031E0063C0031E0061E0061E0061E0061E0061E0061E0060F00C1E0060F00C1E006078181
E006078181E006078181E00603C301E00603C301E00603C301E00601E601E00601E601E00601E6
01E00600FC01E00600FC01E00600FC01E006007801E01F807801E0FFF0783FFFFFF0303FFF2822
7EA12D>77 D<FF800FFFFFC00FFF07C001F807E0006007F0006006F00060067800600678006006
3C0060063E0060061E0060060F0060060F0060060780600607C0600603C0600601E0600601E060
0600F060060078600600786006003C6006003C6006001E6006000F6006000F60060007E0060007
E0060003E0060001E0060001E01F8000E0FFF000E0FFF0006020227EA125>I<FFFFF000FFFFFC
0007803F0007800F8007800780078003C0078003C0078003E0078003E0078003E0078003E00780
03E0078003C0078003C00780078007800F8007803F0007FFFC0007FFF000078000000780000007
800000078000000780000007800000078000000780000007800000078000000780000007800000
07800000FFFC0000FFFC00001B227EA121>80 D<FFFFE00000FFFFF8000007803E000007800F00
000780078000078007C000078003E000078003E000078003E000078003E000078003E000078003
E000078007C000078007800007800F000007803E000007FFF8000007FFF0000007807800000780
3C000007801E000007800E000007800F000007800F000007800F000007800F000007800F800007
800F800007800F800007800F818007800FC180078007C180FFFC03E300FFFC01FE000000007C00
21237EA124>82 D<03F0200FFC601C0EE03803E07001E07001E0E000E0E000E0E00060E00060E0
0060F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E00000F000
00F0000070C00070C00070C00070C00070E00060E000E0F000C0F801C0EF0380C7FF0081FC0014
247DA21B>I<7FFFFFF87FFFFFF87C0780F8700780386007801860078018E007801CC007800CC0
07800CC007800CC007800CC007800C000780000007800000078000000780000007800000078000
000780000007800000078000000780000007800000078000000780000007800000078000000780
000007800000078000000780000007800003FFFF0003FFFF001E227EA123>I<0FE0001FF8003C
1C003C0E00180700000700000700000F0003FF000FFF003F07007C0700780700F00700F00718F0
0718F00F18780F187C3FB83FF3F00FC3C015157E9418>97 D<0E0000FE0000FE00001E00000E00
000E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F800E7FE00FC0F00F00
780E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0F00
380F80700FC1F00C7FC00C1F0017237FA21B>I<01FE0007FF000F07801C078038030078000070
0000F00000F00000F00000F00000F00000F00000F000007800007800C03C00C01E01800F030007
FE0001F80012157E9416>I<0000E0000FE0000FE00001E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E003F0E007FEE01F07E03C01E03800E07800E07000E0F000E0
F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03801E03C03E01E0EF00FFCFE03F0FE
17237EA21B>I<01FC0007FF000F07801C03C03801C07801E07000E0FFFFE0FFFFE0F00000F000
00F00000F00000F000007800007800603C00601E00C00F838007FF0000FC0013157F9416>I<00
3C00FE01CF038F038F070007000700070007000700070007000700FFF8FFF80700070007000700
07000700070007000700070007000700070007000700070007007FF87FF8102380A20F>I<0000
F001F1F807FFB80F1F381E0F001C07003C07803C07803C07803C07803C07801C07001E0F000F1E
001FFC0019F0001800001800001C00001FFF000FFFC01FFFE03801F0700070E00038E00038E000
38E000387000707800F01E03C00FFF8001FC0015217F9518>I<0E0000FE0000FE00001E00000E
00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F800E7FC00FC1E00F
80F00F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E
00700E00700E0070FFE7FFFFE7FF18237FA21B>I<1C001E003E001E001C000000000000000000
00000000000000000E00FE00FE001E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E00FFC0FFC00A227FA10E>I<01C003E003E003E001C00000000000000000000000
000000000001E00FE00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E000E060C0F1C0F1807F003E000B2C82A10F>I<0E0000FE
0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E
0FFC0E0FFC0E07E00E03800E07000E0E000E18000E30000E78000EF8000F9C000F1E000E0E000E
07000E07800E03C00E01C00E01E00E01F0FFE3FEFFE3FE17237FA21A>I<0E00FE00FE001E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E00FFE0FFE00B237FA20E>I<0E1FC07F00FE7FE1FF80
FEC0F303C01F807E01E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800
E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E0038
00E00E003800E0FFE3FF8FFEFFE3FF8FFE27157F942A>I<0E1F80FE7FC0FFC1E01F80F00F0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
0E0070FFE7FFFFE7FF18157F941B>I<01FC0007FF000F07801C01C03800E07800F0700070F000
78F00078F00078F00078F00078F00078F000787000707800F03800E01C01C00F078007FF0001FC
0015157F9418>I<0E1F80FE7FE0FFC1F00F00780E00780E003C0E003C0E001E0E001E0E001E0E
001E0E001E0E001E0E001E0E003C0E003C0F00780F80700FC1F00E7FC00E1F000E00000E00000E
00000E00000E00000E00000E00000E0000FFE000FFE000171F7F941B>I<0E3CFEFEFFCF1F8F0F
060F000E000E000E000E000E000E000E000E000E000E000E000E000E00FFF0FFF010157F9413>
114 D<0F883FF87078E038E018E018E018F0007F003FE01FF001F8003CC01CC01CE01CE01CF018
F878DFF08FC00E157E9413>I<060006000600060006000E000E000E001E003E00FFF8FFF80E00
0E000E000E000E000E000E000E000E000E000E0C0E0C0E0C0E0C0E0C0E08071803F001E00E1F7F
9E13>I<0E0070FE07F0FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E00
700E00700E00700E00700E00700E00F00E01F007037803FE7F01F87F18157F941B>I<FFC3FEFF
C3FE1E00F80E00600E00600700C00700C00700C003818003818003C38001C30001C30000E60000
E60000E600007C00007C00007C0000380000380017157F941A>I<FF8FF9FFFF8FF9FF1E01C07C
1C03C0380E03E0300E03E0300E0660300706706007067060070E7060038C30C0038C38C0039C38
C001D8198001D81D8001D81D8001F00F8000F00F0000F00F0000E007000060060020157F9423>
I<FFC3FEFFC3FE1E00F80E00600E00600700C00700C00700C003818003818003C38001C30001C3
0000E60000E60000E600007C00007C00007C000038000038000030000030000070000060000060
00F0C000F1C000F380007F00003E0000171F7F941A>121 D E /Fv 20 118
df<FFFF80FFFF80FFFF8011037F9016>45 D<FFFFFFE00000FFFFFFFC000007E0007F000003E0
000F800003E00007C00003E00001E00003E00000F00003E00000780003E000007C0003E000003E
0003E000003E0003E000001F0003E000001F0003E000000F8003E000000F8003E000000FC003E0
00000FC003E0000007C003E0000007C003E0000007E003E0000007E003E0000007E003E0000007
E003E0000007E003E0000007E003E0000007E003E0000007E003E0000007E003E0000007E003E0
000007E003E0000007C003E0000007C003E0000007C003E000000FC003E000000F8003E000000F
8003E000000F8003E000001F0003E000001F0003E000003E0003E000007C0003E00000780003E0
0000F80003E00001F00003E00007E00003E0000F800007E0007F0000FFFFFFFC0000FFFFFFE000
002B317CB033>68 D<FFFF80FFFF8007F00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00007F000FFFF80FFFF80
11317DB017>73 D<FFF00000007FF8FFF8000000FFF807F8000000FF0003F8000000FE00037C00
0001BE00037C000001BE00037C000001BE00033E0000033E00033E0000033E00033E0000033E00
031F0000063E00031F0000063E00031F0000063E00030F80000C3E00030F80000C3E00030F8000
0C3E000307C000183E000307C000183E000307C000183E000303E000303E000303E000303E0003
03E000303E000301F000603E000301F000603E000301F000C03E000300F800C03E000300F800C0
3E0003007C01803E0003007C01803E0003007C01803E0003003E03003E0003003E03003E000300
3E03003E0003001F06003E0003001F06003E0003001F06003E0003000F8C003E0003000F8C003E
0003000F8C003E00030007D8003E00030007D8003E00030007D8003E00030003F0003E00030003
F0003E00030003F0003E00078001E0003E000FC001E0007F00FFFC01E00FFFF8FFFC00C00FFFF8
35317CB03D>77 D<FFFFFFC000FFFFFFF80007E000FE0003E0001F0003E0000F8003E00007C003
E00003E003E00003F003E00001F003E00001F003E00001F803E00001F803E00001F803E00001F8
03E00001F803E00001F803E00001F003E00001F003E00003F003E00003E003E00007C003E0000F
8003E0001F0003E000FE0003FFFFF80003FFFFC00003E000000003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0
00000003E000000003E000000003E000000003E000000003E000000003E000000003E000000003
E000000007F0000000FFFF800000FFFF80000025317CB02D>80 D<007F802001FFE06007C0F860
0F001CE01E000FE03C0007E0380003E0780001E0700001E0700000E0F00000E0F00000E0F00000
60F0000060F0000060F8000060F80000007C0000007E0000003F0000003FC000001FF800000FFF
800007FFF80003FFFC0000FFFF00000FFF800000FFC000001FE0000007E0000003F0000001F000
0000F0000000F8000000F8C0000078C0000078C0000078C0000078C0000078E0000078E0000070
F00000F0F00000E0F80000E0FC0001C0FE000380E7800700C1F01E00C07FFC00800FF0001D337C
B125>83 D<01FE00000FFFC0001C03E0003C00F0003E0078003E003C003E001C0008001E000000
1E0000001E0000001E0000001E000001FE00003FFE0001FF1E0007F01E000F801E001F001E003E
001E007C001E007C001E00F8001E0CF8001E0CF8001E0CF8003E0CF8003E0C7C007E0C3E00DF1C
1F038FB80FFF07F003F803C01E1F7D9E21>97 D<003FC000FFF803E01C07801E0F003E1E003E1E
003E3C00087C00007C0000780000F80000F80000F80000F80000F80000F80000F80000F80000F8
00007C00007C00007C00003E00031E00031F00060F800E07C01C03F03800FFE0003F80181F7D9E
1D>99 D<000001E000003FE000003FE0000003E0000001E0000001E0000001E0000001E0000001
E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00000
01E0003F81E000FFE1E003E079E007800DE00F0007E01E0003E01E0001E03C0001E07C0001E07C
0001E0780001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0
F80001E0780001E07C0001E07C0001E03C0001E03E0003E01E0007E00F000FE007801DE003E071
F001FFE1FF003F01FF20327DB125>I<003F800000FFE00003E0F80007803C000F001E001E001E
001E000F003C000F007C000F007C000F8078000780F8000780FFFFFF80FFFFFF80F8000000F800
0000F8000000F8000000F8000000F8000000780000007C0000003C0000003C0001801E0001800F
0003000F80060007C00E0001F03C0000FFF000001FC000191F7E9E1D>I<0003E0001FF8003C38
00707C00F07C01E07C01E03803C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C000FFFFC0FFFFC003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00003C00007E0007FFF007FFF0016327FB114>I<000000F0007F03F8
01FFCF1C03C1FC1C0780F8180F0078001F007C001E003C003E003E003E003E003E003E003E003E
003E003E003E003E003E003E001E003C001F007C000F0078000780F0000FC1E0000DFFC0001C7F
000018000000180000001C0000001C0000001E0000000FFFF8000FFFFF0007FFFF800FFFFFC01E
0007E0380001F07000007070000078E0000038E0000038E0000038E0000038E000003870000070
780000F03C0001E01E0003C007C01F0001FFFC00003FE0001E2F7E9F21>I<07000F801F801F80
0F800700000000000000000000000000000000000000000000000780FF80FF800F800780078007
800780078007800780078007800780078007800780078007800780078007800780078007800780
078007800FC0FFF8FFF80D307EAF12>105 D<0781FE003FC000FF87FF80FFF000FF8E07C1C0F8
000F9803E3007C0007B001E6003C0007E000FC001E0007C000F8001E0007C000F8001E0007C000
F8001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00
078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007
8000F0001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83
FFF0341F7E9E38>109 D<0781FE0000FF87FF8000FF8E07C0000F9803E00007B001E00007E000
F00007C000F00007C000F00007C000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078000F000078000F000078000F000078000F000078000F000078000F0000FC001F800
FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC00000FFF80001E03C0007800F000F0007801E00
03C01E0003C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F8
0000F8F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C0
1E0003C00F00078007C01F0001F07C0000FFF800001FC0001D1F7E9E21>I<0783E0FF8FF8FF9C
7C0FB07C07F07C07E03807C00007C00007C0000780000780000780000780000780000780000780
000780000780000780000780000780000780000780000780000780000780000780000780000FC0
00FFFE00FFFE00161F7E9E19>114 D<01FC100FFF301E03F03800F0700070E00070E00030E000
30E00030F00030F800007E00003FF0001FFF000FFF8003FFE0003FF00003F8000078C0003CC000
3CC0001CE0001CE0001CF0001CF00018F80038FC0070EF01E0C3FFC080FE00161F7E9E1A>I<00
C00000C00000C00000C00000C00001C00001C00001C00003C00003C00007C0000FC0001FC000FF
FFE0FFFFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C03003C03003C03003C03003C03003C03003C03003C03001
E06001E06000F0C0007F80001F00142C7FAB19>I<078000F000FF801FF000FF801FF0000F8001
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078000F000078000F000078000F000078001F000078001F000078003F000038007F000
03C00EF00001F03CF80000FFF0FF80003FC0FF80211F7E9E25>I E /Fw
5 85 df<00000000600000000000E00000000000E00000000001E00000000001F00000000003F0
0000000003F00000000007F0000000000FF0000000000FF0000000001BF0000000001BF0000000
0033F00000000033F00000000063F00000000063F000000000C3F000000001C3F00000000183F0
0000000303F00000000303F00000000603F80000000603F80000000C01F80000000C01F8000000
1801F80000003801F80000003001F80000006001F80000006001F8000000C001F8000000C001F8
0000018001F8000001FFFFF8000003FFFFF80000070001F80000060001F800000C0001F800000C
0001F80000180001FC0000180001FC0000300000FC0000300000FC0000600000FC0000E00000FC
0000C00000FC0001C00000FC0003C00000FC000FE00003FC00FFFC003FFFE0FFF8003FFFE02B33
7CB234>65 D<000FFFFFFC00000FFFFFFF8000007F000FC000007E0003E000007E0001F000007E
0000F800007E00007C0000FC00007C0000FC00003E0000FC00003E0000FC00003E0001F800001E
0001F800001F0001F800001F0001F800001F0003F000001F0003F000001F0003F000001F0003F0
00001F0007E000003F0007E000003F0007E000003F0007E000003F000FC000003E000FC000007E
000FC000007E000FC000007E001F8000007C001F800000FC001F800000FC001F800000F8003F00
0001F8003F000001F0003F000003F0003F000003E0007E000007E0007E000007C0007E00000F80
007E00000F0000FC00001F0000FC00003E0000FC00007C0000FC0000F80001F80001F00001F800
07C00001F8000F800003F8007E0000FFFFFFF80000FFFFFFC0000030317BB035>68
D<000FFFFFFFF8000FFFFFFFF800007F0003F800007E0000F800007E00007800007E0000780000
7E0000300000FC0000300000FC0000300000FC0000300000FC0000300001F80000300001F80000
300001F80000300001F80000600003F00180600003F00180000003F00180000003F00180000007
E00300000007E00300000007E00700000007E01F0000000FFFFE0000000FFFFE0000000FC01E00
00000FC00E0000001F800C0000001F800C0000001F800C0000001F800C0000003F00180000003F
00180000003F00000000003F00000000007E00000000007E00000000007E00000000007E000000
0000FC0000000000FC0000000000FC0000000000FC0000000001F80000000001F80000000001F8
0000000003F800000000FFFFF0000000FFFFF00000002D317BB02E>70 D<000FFFFFE000000FFF
FFFC0000007F003F0000007E000F8000007E0007C000007E0003E000007E0003F00000FC0001F0
0000FC0001F00000FC0001F00000FC0001F00001F80003F00001F80003F00001F80003F00001F8
0003E00003F00007E00003F00007C00003F0000FC00003F0001F800007E0003F000007E0007C00
0007E000F8000007E007E000000FFFFF8000000FFFFF0000000FC00FC000000FC007E000001F80
03F000001F8001F000001F8001F800001F8001F800003F0001F800003F0001F800003F0001F800
003F0001F800007E0003F000007E0003F000007E0003F000007E0003F00000FC0007E00000FC00
07E00000FC0007E00000FC0007E01801F80007E03001F80007E03001F80007E06003F80003E060
FFFFE001F1C0FFFFC000FF80000000003E002D327BB033>82 D<07FFFFFFFFF007FFFFFFFFF00F
E007F007F00F8007E001F00E0007E000E00C0007E000E01C0007E000E018000FC000E018000FC0
00E030000FC000C030000FC000C030001F8000C060001F8000C060001F8000C060001F8000C0C0
003F00018000003F00000000003F00000000003F00000000007E00000000007E00000000007E00
000000007E0000000000FC0000000000FC0000000000FC0000000000FC0000000001F800000000
01F80000000001F80000000001F80000000003F00000000003F00000000003F00000000003F000
00000007E00000000007E00000000007E00000000007E0000000000FC0000000000FC000000000
0FC0000000000FC0000000001F80000000001F80000000001F80000000003F800000007FFFFF80
00007FFFFF8000002C3174B032>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 1 1
bop 75 361 a Fs(Chapter)31 b(4)75 568 y Fr(One)39 b(Sided)e(Comm)m
(unications)75 809 y Fq(4.1)59 b(Intro)r(duction)75 910 y Ft(Remote)11
b(Memory)f(Access)i(\(RMA\))e(extends)i(the)f(comm)o(unication)g(mec)o
(hanisms)h(of)e(MPI)h(b)o(y)g(allo)o(wing)75 967 y(transfer)i(of)g(data)f
(from)h(the)h(memory)f(of)g(one)g(pro)q(cess)h(to)f(the)g(memory)g(of)g
(another)g(pro)q(cess)h(to)f(o)q(ccur)75 1023 y(with)19 b(the)g(explicit)h
(in)o(v)o(olv)o(emen)o(t)f(of)f(one)h(of)f(the)h(t)o(w)o(o)e(pro)q(cesses)i
(only:)27 b(either)19 b(the)g(source)g(pro)q(cess)75 1080 y(\(put\))c(or)f
(the)i(destination)g(pro)q(cess)f(\(get\).)166 1136 y(This)g(mo)q(de)g(of)f
(comm)o(unication)h(facilitates)h(the)e(co)q(ding)i(of)e(some)g(applications)
j(with)d(irregular)75 1193 y(comm)o(unication)21 b(patterns)f(\(irregular)g
(in)h(time)f(or)g(in)h(space\).)35 b(One)21 b(situation)f(is)h(where)g(the)f
(ap-)75 1249 y(plication)f(is)g(a)e(distributed)j(memory)d(application)i
(that)e(needs)i(some)e(shared)h(memory)g(for)f(shared)75 1306
y(tables)g(that)e(are)h(accessed)h(\\randomly")e(\(quan)o(tum)h(c)o
(hemistry?\).)23 b(Some)16 b(of)g(the)g(pro)q(cesses)h(can)f(b)q(e)75
1362 y(used)k(as)f(\\memory)g(serv)o(ers",)h(and)f(the)h(other)f(pro)q
(cesses)h(access)g(the)f(data)g(using)h(get)g(calls.)34 b(An-)75
1418 y(other)15 b(o)q(ccurrence)h(is)f(with)h(a)e(distributed)j(memory)d(co)q
(de)i(where)f(the)g(data)g(distribution)h(is)g(\014xed)f(or)75
1475 y(slo)o(wly)j(c)o(hanging,)g(but)f(w)o(ere)g(the)g(\\use")g(pattern)g(c)
o(hanges)g(v)o(ery)g(dynamically)i(\(N-b)q(o)q(dy?)28 b(particle)75
1531 y(in)14 b(cell?\).)21 b(Eac)o(h)13 b(pro)q(cess)g(can)h(compute)f(what)f
(data)h(it)g(needs)h(from)f(remote)f(pro)q(cesses)i(and)f(generate)75
1588 y(the)h(required)g(\\receiv)o(es".)20 b(In)14 b(order)g(to)e(generate)i
(the)f(matc)o(hing)h(sends,)g(one)g(needs)g(to)f(compute)h(the)75
1644 y(in)o(v)o(erse)19 b(of)f(the)h(receiv)o(e)g(mapping,)h(whic)o(h)f(is)g
(time)g(consuming)h(\(P)o(arti,)e(Chaos\),)g(and)h(requires)g(all)75
1701 y(pro)q(cesses)d(to)e(co)q(ordinate)i(the)f(data)g(exc)o(hange.)20
b(The)15 b(use)h(of)f(get)g(calls)h(a)o(v)o(oids)f(the)g(needs)h(for)f
(sends.)75 1757 y(A)e(generic)h(example)g(of)f(this)h(nature)f(is)g(the)g
(execution)i(of)d(an)h(assignmen)o(t)g(of)g(the)g(form)g Fp(A)23
b(=)h(B\(map\))p Ft(,)75 1814 y(where)15 b Fp(map)g Ft(is)h(a)f(p)q(erm)o
(utation)g(v)o(ector,)f(and)h Fp(A,)24 b(B)15 b Ft(and)g Fp(map)g
Ft(are)g(distributed)h(in)g(the)f(same)g(manner.)166 1870 y(RMA)k(will)h(b)q
(e)g(supp)q(orted)f(on)g(distributed)h(memory)e(systems)g(b)o(y)h(an)f(\\RMA)
h(agen)o(t")f(at)g(the)75 1927 y(target)e(no)q(de)j(that)e(accepts)h(RMA)g
(requests)f(and)h(p)q(erforms)f(the)h(required)h(read)f(or)f(write)h
(accesses)75 1983 y(in)d(the)g(memory)f(of)g(the)h(target)e(pro)q(cess.)20
b(A)15 b(p)q(ortable)g(implemen)o(tation)h(ma)o(y)e(use)h(an)f(async)o
(hronous)75 2039 y(receiv)o(e)k(handler)g(to)e(implemen)o(t)i(this)f(RMA)g
(agen)o(t.)24 b(Systems)16 b(with)h(dedicated)h(put/get)f(hardw)o(are)75
2096 y(\(Cra)o(y)h(T3D\))g(should)i(b)q(e)f(to)g(tak)o(e)f(adv)m(an)o(tage)h
(of)f(that)h(hardw)o(are,)g(at)f(least)h(for)g(simple)h(transfers.)75
2152 y(More)f(complex)i(transfers)e(ma)o(y)g(require)h(a)g(soft)o(w)o(are)e
(agen)o(t)h(at)g(the)g(target)g(no)q(de.)34 b(Systems)20 b(with)75
2209 y(comm)o(unication)h(copro)q(cessors)f(\(P)o(aragon,)f(Meik)o(o\))h
(should)h(b)q(e)g(able)f(to)g(tak)o(e)f(adv)m(an)o(tage)h(of)g(that)75
2265 y(copro)q(cessor)13 b(in)h(order)f(to)g(run)h(the)f(RMA)g(agen)o(t)g
(without)g(in)o(terfering)h(with)g(the)f(application)i(pro)q(ces-)75
2322 y(sor)i(at)f(the)i(target)e(no)q(de,)i(at)f(least)g(for)g(common)g
(transfers.)25 b(On)18 b(shared)f(memory)g(systems,)g(if)h(the)75
2378 y(caller)h(can)f(directly)h(access)f(the)g(memory)f(of)h(the)g(target)e
(pro)q(cess,)i(then)h(it)f(should)h(b)q(e)f(p)q(ossible)i(to)75
2435 y(implemen)o(t)f(RMA)g(without)f(an)g(RMA)g(agen)o(t:)25
b(the)18 b(caller)h(pro)q(cess)f(can)g(directly)i(cop)o(y)e(data)f(to)g(or)75
2491 y(from)d(the)i(memory)e(of)h(the)g(target)f(pro)q(cess.)166
2548 y(W)l(e)g(shall)h(denote)f(b)o(y)g Fo(origin)h Ft(the)f(pro)q(cess)g
(that)g(p)q(erforms)f(the)i(call,)g(and)f(b)o(y)g Fo(target)g
Ft(the)g(other)75 2604 y(in)o(v)o(olv)o(ed)i(pro)q(cess.)k(Th)o(us,)14
b(in)i(a)f(put)g(op)q(eration,)g(source=origin)h(and)f(destination=target;)g
(in)h(a)e(get)75 2660 y(op)q(eration,)h(source=target)f(and)i
(destination=origin.)964 2828 y(1)p eop
%%Page: 2 2
bop 75 -100 a Ft(2)746 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)l
(TIONS)166 49 y Ft(The)f(last)f(section)h(of)f(this)h(c)o(hapter)g(co)o(v)o
(ers)e(an)i(additional)h(\\one-sided")f(comm)o(unication)h(mec)o(h-)75
106 y(anisms,)g(that)g(allo)o(w)g(to)g(trigger)f(an)h(activit)o(y)h(up)q(on)g
(completion)g(of)f(a)g(comm)o(unication)h(op)q(eration.)75
249 y Fq(4.2)59 b(Initialization)75 350 y Ft(The)12 b(initialization)i(op)q
(eration)d(allo)o(ws)h(eac)o(h)f(pro)q(cess)h(to)f(sp)q(ecify)l(,)i(in)f(a)f
(collectiv)o(e)i(op)q(eration,)f(a)f(\\mem-)75 407 y(ory)17
b(windo)o(w")g(that)g(is)h(made)g(accessible)h(to)e(accesses)h(b)o(y)f
(remote)g(pro)q(cesses.)27 b(The)18 b(information)f(is)75 463
y(attac)o(hed)d(to)g(a)h(comm)o(unicator)f(returned)i(b)o(y)e(the)h(call.)21
b(The)15 b(initialization)j(op)q(eration)d(sp)q(eci\014es)i(the)75
520 y(lo)q(cation)f(of)e(the)i(windo)o(w)f(in)h(memory)e(and)i(the)f(la)o(y)o
(out)f(and)h(t)o(yp)q(e)h(of)e(the)h(elemen)o(ts)h(in)g(the)f(windo)o(w.)75
576 y(In)h(addition,)g(the)f(windo)o(w)h(initialization)i(command)e(ma)o(y)e
(sp)q(ecify)j(an)e(arra)o(y)f(of)h(p)q(ersisten)o(t)h(request)75
633 y(ob)s(jects,)e(that)h(can)g(b)q(e)h(subsequen)o(tly)g(used)g(to)f(sync)o
(hronize)h(RMA)f(op)q(erations.)75 784 y Fm(MPI)p 160 784 14
2 v 16 w(RMA)p 275 784 V 17 w(INIT)f(\(base,)i(size,)f(t)o(yp)q(e,)g(numreq,)
e(a)o(rra)o(y)p 993 784 V 15 w(of)p 1045 784 V 16 w(requests,)k(comm)m(,)12
b(new)o(comm)n(\))117 861 y Fl(IN)155 b Fm(base)505 b Fl(initial)12
b(address)j(of)f(windo)o(w)f(\(c)o(hoice\))117 936 y(IN)155
b Fm(size)519 b Fl(n)o(um)o(b)q(er)12 b(of)f(elemen)o(ts)h(\(of)g(t)o(yp)q(e)
h Fk(t)o(yp)q(e)g Fl(in)e(windo)o(w)h(\(non)g(neg-)905 992
y(ativ)o(e)i(in)o(teger\))117 1068 y(IN)155 b Fm(t)o(yp)q(e)507
b Fl(data)14 b(t)o(yp)q(e)g(of)f(windo)o(w)h(elemen)o(ts)f(\(handle\))117
1143 y(IN)155 b Fm(numreq)443 b Fl(n)o(um)o(b)q(er)13 b(of)h(requests)i(\(in)
o(teger\))117 1218 y(OUT)108 b Fm(a)o(rra)o(y)p 416 1218 V
15 w(of)p 468 1218 V 16 w(requests)272 b Fl(arra)o(y)14 b(of)f(requests)j
(\(handles\))117 1293 y(IN)155 b Fm(comm)466 b Fl(comm)o(unicator)11
b(\(handle\))117 1368 y(OUT)108 b Fm(new)o(comm)393 b Fl(new)15
b(comm)o(uni)o(cator)d(to)h(b)q(e)i(used)g(for)e(RMA)h(\(handle\))75
1493 y Fp(int)23 b(MPI)p 245 1493 15 2 v 17 w(RMA)p 334 1493
V 17 w(init\(void*)f(base,)i(int)f(size,)g(MPI)p 1067 1493
V 17 w(Datatype)g(type,)g(int)g(numreqs,)393 1549 y(MPI)p 468
1549 V 17 w(Request)g(array)p 796 1549 V 16 w(of)p 860 1549
V 17 w(requests,)g(MPI)p 1188 1549 V 17 w(Comm)g(comm,)393
1605 y(MPI)p 468 1605 V 17 w(Comm)g(*newcomm\))75 1692 y(MPI)p
150 1692 V 17 w(RMA)p 239 1692 V 17 w(INIT\(BASE,)f(SIZE,)h(TYPE,)g(NUMREQ,)g
(ARRAY)p 1115 1692 V 17 w(OF)p 1180 1692 V 17 w(REQUESTS,)f(COMM,)i(NEWCOMM,)
393 1748 y(IERROR\))170 1805 y(<type>)f(BASE\(*\))170 1861
y(INTEGER)g(COUNT,)g(TYPE,)h(NUMREQS,)e(ARRAY)p 1009 1861 V
17 w(OF)p 1074 1861 V 17 w(REQUESTS\(*\),)g(COMM,)h(NEWCOMM,)170
1918 y(IERROR)166 2004 y Ft(This)d(is)h(a)e(collectiv)o(e)j(call)f(executed)g
(b)o(y)e(all)i(pro)q(cesses)g(in)f(the)g(group)g(of)f Fm(comm)m
Ft(.)31 b(It)20 b(returns)75 2061 y(a)e(comm)o(unicator)h(that)f(can)h(b)q(e)
g(used)g(b)o(y)g(these)g(pro)q(cesses)g(to)f(p)q(erform)h(RMA)g(op)q
(erations.)30 b(Eac)o(h)75 2117 y(pro)q(cess)16 b(sp)q(eci\014es)i(a)e(windo)
o(w)g(of)g(existing)h(memory)e(that)g(it)i(exp)q(oses)f(to)g(remote)f
(accesses)h(b)o(y)g(other)75 2174 y(pro)q(cesses,)22 b(for)e(RMA)h(op)q
(eration)g(that)f(use)h(comm)o(unicator)f Fm(new)o(comm)m Ft(.)34
b(The)20 b(windo)o(w)h(starts)f(at)75 2230 y(address)13 b Fm(base)p
Ft(.)20 b(It)14 b(consists)f(of)g Fm(size)g Ft(con)o(tiguous)h(elemen)o(ts,)f
(eac)o(h)h(of)e(t)o(yp)q(e)i Fm(t)o(yp)q(e)p Ft(,)g(where)f
Fm(t)o(yp)q(e)i Ft(is)e(a)g(basic)75 2286 y(MPI)i(datat)o(yp)q(e.)20
b(A)15 b(pro)q(cess)g(ma)o(y)g(elect)h(to)e(exp)q(ose)i(no)f(memory)g(b)o(y)g
(sp)q(ecifying)i Fm(count)f(=)g(0)p Ft(.)166 2343 y(The)c(pro)q(cess)h(also)f
(pro)o(vides)h Fm(numreq)d Ft(request)i(handles.)20 b(The)13
b(call)g(asso)q(ciates)f(with)g(eac)o(h)h(handle)75 2399 y(a)i(p)q(ersisten)o
(t)g(request)g(ob)s(ject)g(that)f(can)h(b)q(e)h(used)f(b)o(y)g(remote)g(pro)q
(cesses)g(to)f(signal)i(the)f(execution)h(of)75 2456 y(remote)f(accesses.)20
b(A)15 b(pro)q(cess)g(ma)o(y)g(elect)h(to)f(use)g(no)g(request)g(ob)s(jects,)
g(b)o(y)g(pro)o(viding)h Fm(numreq)d(=)j(0)p Ft(.)166 2512
y(A)i(comm)o(unicator)g(can)g(b)q(e)h(used)g(for)e(RMA)h(commands)g(only)h
(after)e(the)i(RMA)f(initialization)75 2569 y(call.)j(Suc)o(h)15
b(comm)o(unicator)f(can)h(also)f(b)q(e)h(used)g(for)f(other)g(MPI)h(calls,)g
(as)f(an)o(y)h(other)f(comm)o(unicator.)166 2625 y(The)19 b(v)m(arious)h(pro)
q(cesses)f(in)h(the)f(group)g(of)f Fm(comm)13 b Ft(ma)o(y)18
b(sp)q(ecify)j(completely)f(di\013eren)o(t)f(target)75 2682
y(windo)o(ws,)c(in)i(lo)q(cation,)e(t)o(yp)q(e)h(and)g(size.)21
b(The)16 b(n)o(um)o(b)q(er)g(of)f(requests)g(can)g(also)h(di\013er.)21
b(As)15 b(long)h(as)f(all)1967 46 y Fj(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 3 3
bop 75 -100 a Fn(4.2.)34 b(INITIALIZA)l(TION)1302 b Ft(3)75
49 y(the)16 b(gets)g(and)g(puts)g(to)g(a)f(particular)i(pro)q(cess)g(\014t)f
(its)g(sp)q(eci\014c)i(target)d(windo)o(w)h(this)h(should)g(p)q(ose)f(no)75
106 y(problem.)166 162 y(The)j(information)h(ab)q(out)f(the)g(set)h(of)e
(windo)o(ws)i(asso)q(ciated)f(with)h Fm(new)o(comm)14 b Ft(is)20
b(cac)o(hed)g(with)75 219 y(the)13 b(newly)i(created)e(comm)o(unicator)g
(\(in)h(the)g(same)f(manner)g(top)q(ology)g(information)h(is)g(cac)o(hed)f
(when)75 275 y(a)k(top)q(ology)g(is)h(created\).)25 b(Th)o(us,)18
b(this)g(information)f(is)h(transfered)f(to)f(the)i(newly)g(created)f(comm)o
(u-)75 332 y(nicator)i(if)g Fm(new)o(comm)14 b Ft(is)19 b(duplicated)i(b)o(y)
e(a)f(call)i(to)e Fm(MPI)p 1100 332 14 2 v 16 w(COMM)p 1258
332 V 17 w(DUP)p Ft(,)g(but)h(is)h(not)e(transfered)h(to)75
388 y(comm)o(unicators)c(created)g(b)o(y)g(other)g(calls.)189
488 y Fi(R)n(ationale.)39 b Ft(The)13 b(initialization)k(op)q(eration)d(allo)
o(ws)g(MPI)f(to)g(set)g(up)h(and)g(cac)o(he)g(with)g(the)g(new)189
545 y(comm)o(unicator)i(information)i(needed)g(to)f(access)g(e\016cien)o(tly)
i(the)e(remote)g(windo)o(w\(s\))f(asso)q(ci-)189 601 y(ated)c(with)g(this)h
(comm)o(unicator.)19 b(The)12 b(t)o(yp)q(e)h(information)f(facilitates)h
(data)f(format)f(con)o(v)o(ersion)189 658 y(in)17 b(a)e(heterogeneous)h(en)o
(vironmen)o(t:)22 b(as)16 b(for)f(send-receiv)o(e,)j(t)o(yp)q(e)e
(information)g(is)h(a)o(v)m(ailable)h(at)189 714 y(b)q(oth)c(pro)q(cesses,)g
(so)f(that)g(con)o(v)o(ersion)h(can)g(b)q(e)h(done)f(either)g(b)o(y)g(the)g
(sender)g(or)g(b)o(y)f(the)h(receiv)o(er)189 771 y(or)k(b)o(y)h(b)q(oth.)32
b(The)19 b(basic)g(datat)o(yp)q(e)g(of)g(the)g(windo)o(w)g(also)g(serv)o(es)g
(as)f(a)h(y)o(ardstic)o(k,)g(allo)o(wing)189 827 y(to)14 b(sp)q(ecify)j
(displacemen)o(ts)g(within)g(a)e(windo)o(w)h(in)g(an)f(arc)o(hitecture)h
(indep)q(enden)o(t)i(manner,)d(as)189 884 y(m)o(ultiples)i(if)e(the)h(basic)f
(datat)o(yp)q(e.)20 b(\()p Fi(End)15 b(of)i(r)n(ationale.)p
Ft(\))189 984 y Fi(A)n(dvic)n(e)c(to)h(users.)38 b Ft(One)13
b(can)g(pro)o(vide)g(m)o(ultiple)i(views)e(of)f(the)h(same)f(target)g(windo)o
(w,)h(sa)o(y)f(with)189 1040 y(di\013eren)o(t)j(datat)o(yp)q(es)f(or)h(la)o
(y)o(out,)f(b)o(y)h(calling)i Fm(MPI)p 1074 1040 V 16 w(RMA)p
1189 1040 V 16 w(INIT)e Ft(m)o(ultiple)i(times)e(and)g(using)h(the)189
1097 y(resulting)e(comm)o(unicators)f(to)g(distinguish)j(b)q(et)o(w)o(een)d
(the)h(di\013eren)o(t)g(views.)19 b(\()p Fi(End)14 b(of)h(advic)n(e)g(to)189
1153 y(users.)p Ft(\))166 1330 y Fh(Discussion:)34 b Fl(Changes)14
b(from)e(last)i(prop)q(osal:)134 1403 y(1.)22 b(RMA)13 b(comm)o(unicator)e
(can)j(also)g(b)q(e)g(used)h(for)e(regular)h(comm)o(unication.)134
1476 y(2.)22 b(Windo)o(w)12 b(t)o(yp)q(e)j(is)f(basic.)166
1555 y(In)h(the)h(previous)g(draft,)f(w)o(e)h(allo)o(w)o(ed)e(a)h(general)g
(datat)o(yp)q(e)h(as)f(windo)o(w)g(t)o(yp)q(e.)23 b(The)16
b(problem)e(with)h(this)75 1612 y(is)f(that)f(t)o(yp)q(es)i(built)e(with)h
Fk(MPI)p 587 1612 13 2 v 14 w(TYPE)p 709 1612 V 14 w(STRUCT,)f(MPI)p
985 1612 V 14 w(TYPE)p 1107 1612 V 14 w(HINDEXED)g Fl(or)h
Fk(MPI)p 1468 1612 V 15 w(TYPE)p 1591 1612 V 14 w(HVECTOR)p
Fl(,)e(i.e.)75 1668 y(t)o(yp)q(es)17 b(that)g(sp)q(ecify)g(displacemen)o(ts)e
(in)h(b)o(ytes,)i(are)e(not)h(p)q(ortable)f(across)h(distinct)g(arc)o
(hitectures.)27 b(It)17 b(is)f(not)75 1725 y(clear)f(ho)o(w)f(suc)o(h)h
(datat)o(yp)q(e,)f(de\014ned)h(at)g(the)g(origin)e(pro)q(cess,)j(should)e(b)q
(e)h(in)o(terpreted)h(at)e(the)h(target)g(pro)q(cess.)75 1781
y(This)c(implies)f(that)h(put/get)g(commands)e(should)i(b)q(e)h(restricted)i
(to)d(the)h(use)g(of)f(datat)o(yp)q(es)h(that)f(are)h(built)e(using)75
1838 y(the)j(constructions)i Fk(MPI)p 476 1838 V 14 w(TYPE)p
598 1838 V 14 w(CONTIGUOUS,)10 b(MPI)p 976 1838 V 14 w(TYPE)p
1098 1838 V 15 w(VECTOR)h Fl(and)i Fk(MPI)p 1445 1838 V 14
w(TYPE)p 1567 1838 V 14 w(INDEXED)p Fl(.)f(With)75 1894 y(suc)o(h)i(datat)o
(yp)q(es,)g(all)e(\014elds)h(are)h(of)f(the)h(same)e(basic)i(t)o(yp)q(e,)f
(and)g(all)g(displacemen)o(ts)f(are)i(in)f(terms)g(of)g(m)o(ultiples)75
1951 y(of)j(the)h(exten)o(t)g(of)f(this)g(basic)g(t)o(yp)q(e.)26
b(But,)17 b(then,)g(w)o(e)g(migh)o(t)d(as)i(w)o(ell)g(declare)h(the)g(windo)o
(w)e(to)h(b)q(e)h(tiled)f(with)75 2007 y(con)o(tiguous)c(copies)h(of)f(this)h
(basic)f(t)o(yp)q(e.)18 b(This)13 b(will)e(also)h(allo)o(ws)f(us)i(to)f(use)h
(displacemen)o(ts)g(that)f(are)h(measured)75 2063 y(in)h(terms)g(of)g(m)o
(ultiple)e(of)h(this)i(basic)f(t)o(yp)q(e.)20 b(Of)14 b(course,)h(the)g
(basic)g(t)o(yp)q(e)f(can)h(b)o(y)f Fk(MPI)p 1475 2063 V 14
w(BYTE)p Fl(,)f(in)h(whic)o(h)g(case,)75 2120 y(the)g(user)h(is)f(on)g(his)g
(or)g(her)g(o)o(wn.)166 2335 y Fh(Alternativ)o(es)o(:)134 2408
y Fl(1.)22 b(Allo)o(w)16 b(windo)o(ws)h(where)h(the)g(lo)q(cation)f(of)f(a)h
(bu\013er)i(in)e(target)g(memory)e(is)i(sp)q(eci\014ed)i(as)f(an)f(absolute)
189 2458 y(address,)i(rather)f(than)g(a)f(relativ)o(e)g(elemen)o(t)g(coun)o
(t.)30 b(The)18 b(comm)o(uni)o(cation)d(bu\013er)j(should)g(still)e(b)q(e)i
(a)189 2508 y(subset)c(of)e(a)h(\\monot)o(yp)q(e")e(memory)g(region.)17
b(This)c(w)o(ould)g(allo)o(w)e(one)i(to)g(do)g(p)q(oin)o(ter)g(c)o(hasing)g
(in)f(target)189 2558 y(memory)m(.)134 2631 y(2.)22 b(Giv)o(e)13
b(up)h(on)f(requests)j(for)e(put/get)g(sync)o(hronization)g(\(sa)o(ving)f(t)o
(w)o(o)g(parameters\).)134 2704 y(3.)22 b(Use)14 b(a)g(new)g(opaque)g(ob)r
(ject)h(for)e(windo)o(ws,)g(rather)i(than)f(o)o(v)o(erloading)e(comm)o
(unicators.)-32 46 y Fj(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 4 4
bop 75 -100 a Ft(4)746 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)l
(TIONS)189 49 y Fh(pros:)22 b Fl(W)m(e)10 b(don't)g(attac)o(h)g(new)h
(information)d(to)i(comm)o(unicators;)f(put/get)h(do)q(es)h(not)g(really)f
(need)h(a)f(sep-)289 99 y(arate)f(comm)o(unication)d(domain.)14
b(W)m(e)9 b(don't)g(ha)o(v)o(e)g(to)g(deal)g(with)g(the)h(seman)o(tics)f(of)f
Fk(MPI)p 1688 99 13 2 v 15 w(COMM)p 1833 99 V 14 w(DUP)p Fl(.)189
165 y Fh(cons:)22 b Fl(W)m(e)13 b(need)i(to)f(in)o(tro)q(duce)g(a)g(new)g(ob)
r(ject.)19 b(This)14 b(ob)r(ject)g(needs,)h(an)o(yho)o(w,)d(to)i(ha)o(v)o(e)g
(an)f(asso)q(ciated)289 215 y(group.)21 b(W)m(e)14 b(can)i(use)f(the)h(cac)o
(hing)f(mec)o(hanism)d(to)j(attac)o(h)g(windo)o(w)f(information)e(to)j(comm)o
(uni-)289 265 y(cators,)f(without)g(slo)o(wing)e(do)o(wn)i(regular)g
(send/receiv)o(e)i(calls)e(on)f(that)i(comm)o(uni)o(cator.)h(W)m(e)e(can)289
315 y(o)o(v)o(erload)f Fk(MPI)p 531 315 V 14 w(BARRIER)p Fl(,)e(so)j(as)g(to)
g(act)g(as)g(a)g(global)e(fence.)166 485 y Ft(In)18 b(some)g(systems,)f(RMA)h
(op)q(erations)g(ma)o(y)f(run)g(faster)g(when)h(accessing)h(sp)q(ecially)h
(allo)q(cated)75 542 y(memory)c(\(e.g.,)f(memory)h(that)f(is)i(shared)g(b)o
(y)f(the)g(other)g(pro)q(cesses)h(in)g(the)g(comm)o(unicating)g(group,)75
598 y(on)g(an)g(SMP\).)f(In)h(man)o(y)g(cases,)g(it)g(is)g(con)o(v)o(enien)o
(t)h(to)e(com)o(bine)i(windo)o(w)f(declaration)g(and)h(memory)75
655 y(allo)q(cation)e(for)f(the)g(windo)o(w)h(in)g(one)f(call.)75
805 y Fm(MPI)p 160 805 14 2 v 16 w(RMA)p 275 805 V 17 w(MALLOC\(base,)g
(size,)g(t)o(yp)q(e,)h(numreq,)d(a)o(rra)o(y)p 1072 805 V 14
w(of)p 1123 805 V 16 w(requests,)k(comm)m(,)12 b(new)o(comm)n(\))117
883 y Fl(OUT)108 b Fm(base)505 b Fl(initial)12 b(address)j(of)f(windo)o(w)f
(\(c)o(hoice\))117 958 y(IN)155 b Fm(size)519 b Fl(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(in)h(windo)o(w)f(\(non)h(negativ)o(e)f(in)o(teger\))117
1033 y(IN)155 b Fm(t)o(yp)q(e)507 b Fl(data)14 b(t)o(yp)q(e)g(of)f(windo)o(w)
h(elemen)o(ts)f(\(handle\))117 1108 y(IN)155 b Fm(numreq)443
b Fl(n)o(um)o(b)q(er)13 b(of)h(requests)i(\(in)o(teger\))117
1183 y(OUT)108 b Fm(a)o(rra)o(y)p 416 1183 V 15 w(of)p 468
1183 V 16 w(requests)272 b Fl(arra)o(y)14 b(of)f(requests)j(\(handles\))117
1258 y(IN)155 b Fm(comm)466 b Fl(comm)o(unicator)11 b(\(handle\))117
1334 y(OUT)108 b Fm(new)o(comm)393 b Fl(comm)o(unicator)11
b(to)j(b)q(e)h(used)f(for)g(RMA)f(\(handle\))75 1458 y Fp(int)23
b(MPI)p 245 1458 15 2 v 17 w(Rma)p 334 1458 V 17 w(malloc\(void)f(*base,)h
(int)h(size,)f(MPI)p 1115 1458 V 17 w(Datatype)g(type,)g(int)g(numreq,)393
1514 y(MPI)p 468 1514 V 17 w(Request)g(array)p 796 1514 V 16
w(of)p 860 1514 V 17 w(requests,)g(MPI)p 1188 1514 V 17 w(Comm)g(comm,)393
1571 y(MPI)p 468 1571 V 17 w(Comm)g(*newcomm\))75 1657 y(MPI)p
150 1657 V 17 w(RMA)p 239 1657 V 17 w(MALLOC\()f(BASE,)i(SIZE,)f(TYPE,)g
(NUMREQ,)g(ARRAY)p 1187 1657 V 16 w(OF)p 1251 1657 V 17 w(REQUESTS,)g(COMM,)g
(NEWCOMM,)393 1714 y(IERROR\))170 1770 y(MPI)p 245 1770 V 17
w(AINT)h(BASE)170 1827 y(INTEGER)f(COUNT,)g(TYPE,)h(NUMREQS,)e(ARRAY)p
1009 1827 V 17 w(OF)p 1074 1827 V 17 w(REQUESTS\(*\),)g(COMM,)h(NEWCOMM,)170
1883 y(IERROR)166 1970 y Ft(Lik)o(e)f(MPI)p 363 1970 14 2 v
17 w(RMA)p 489 1970 V 16 w(INIT)g(except)g(this)g(call)g(allo)q(cates)g
(memory)f(for)g(the)g(target)f(windo)o(w)i(and)75 2026 y(returns)15
b(the)g(address)h(in)g Fm(buf)p Ft(.)189 2132 y Fi(A)n(dvic)n(e)e(to)i
(implementors.)39 b Ft(This)15 b(function)g(pro)o(vides)f(the)h(opp)q
(ortunit)o(y)f(to)g(allo)q(cate)h(memory)189 2189 y(that)i(is)i(more)f
(easily)i(shared)e(within)i(the)e(sp)q(eci\014ed)j(comm)o(unicator.)29
b(The)19 b(implemen)o(tation)189 2245 y(ma)o(y)c(do)i(more;)f(e.g.,)g(on)g(a)
g(shared)h(memory)e(mac)o(hine,)j(it)e(can)h(mak)o(e)f(sure)g(that)g(the)h
(windo)o(w)189 2302 y(is)d(mapp)q(ed)g(in)g(the)g(address)f(space)h(of)f
(other)g(pro)q(cesses)h(in)h(the)e(comm)o(unicator)g(group,)h(so)f(that)189
2358 y(put/get)h(calls)j(can)e(b)q(e)h(implemen)o(ted)h(via)e(load/stores.)
189 2433 y(It)k(is)h(desirable)h(to)e(prev)o(en)o(t)h(remote)f(accesses)g(to)
g(memory)g(outside)i(the)e(windo)o(w)h(that)f(w)o(as)189 2490
y(exp)q(osed)e(b)o(y)g(the)f(pro)q(cess.)25 b(This,)17 b(b)q(oth)g(for)f
(debugging)i(purp)q(oses,)f(and)g(for)f(protection)h(with)189
2546 y(clien)o(t-serv)o(er)f(co)q(des)g(that)e(use)i(RMA.)f(\()p
Fi(End)g(of)i(advic)n(e)f(to)g(implementors.)p Ft(\))1967 46
y Fj(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 5 5
bop 75 -100 a Fn(4.3.)34 b(PUT)15 b(AND)g(GET)g(CALLS)1177
b Ft(5)166 49 y Fh(Discussion:)34 b Fl(W)m(e)13 b(use)h(in)g(F)m(ortran)f
Fk(MPI)p 852 49 13 2 v 14 w(AINT)h Fl(to)f(denote)i(a)e(\\C)h(p)q(oin)o(ter")
f(t)o(yp)q(e,)h(i.e.)j(an)d Fk(INTEGER)f Fl(of)75 106 y(the)j(size)g(needed)g
(to)f(store)h(an)f(address.)23 b(Most)15 b(\(all?\))21 b(F)m(ortran)15
b(compilers)f(that)h(MPI)g(targets)h(ha)o(v)o(e)f(supp)q(ort)75
162 y(for)f(\\C")f(or)h(\\Cra)o(y")f(p)q(oin)o(ters.)166 301
y Ft(A)18 b(bu\013er)f(allo)q(cated)i(b)o(y)f Fm(MPI)p 697
301 14 2 v 16 w(RMA)p 812 301 V 16 w(MALLOC)g Ft(is)g(freed)g(automatically)g
(when)g(the)g(comm)o(uni-)75 358 y(cator)e(that)g(w)o(as)g(created)h(b)o(y)g
(the)g(same)g(call)h(is)g(freed)f(b)o(y)g(a)f(collectiv)o(e)j(call)f(to)f
Fm(MPI)p 1582 358 V 15 w(COMM)p 1739 358 V 17 w(FREE)p Ft(.)75
414 y(The)g(comm)o(unicator)g(and)g(the)h(bu\013ers)f(are)g(deallo)q(cated)h
(only)g(after)e(all)i(ongoing)f(comm)o(unications)75 471 y(asso)q(ciated)e
(with)h(them)f(ha)o(v)o(e)g(completed.)189 577 y Fi(R)n(ationale.)55
b Ft(The)18 b(\\bu\013er)p 683 577 V 16 w(free")g(op)q(eration)g(need)g(b)q
(e)h(collectiv)o(e,)h(with)e Fm(new)o(comm)12 b Ft(as)17 b(argu-)189
633 y(men)o(t,)j(otherwise)h(it)f(lea)o(v)o(es)g(the)h(other)e(pro)q(cesses)i
(with)f(in)o(v)m(alid)j(information)d(on)g(a)o(v)m(ailable)189
690 y(windo)o(ws.)29 b(Since)20 b Fm(new)o(comm)12 b Ft(should)20
b(not)e(b)q(e)h(used)f(after)g(a)g(bu\013er)g(is)h(freed,)g(it)f(is)h
(logical)h(to)189 746 y(asso)q(ciate)14 b(the)g(\\bu\013er)p
597 746 V 16 w(free")f(op)q(eration)h(with)h(the)f(destruction)g(of)g(the)g
(comm)o(unicator.)19 b(\()p Fi(End)189 803 y(of)d(r)n(ationale.)p
Ft(\))75 909 y Fo(Example)i(4.1)k Ft(Example)16 b(of)f(use)g(of)g
Fm(MPI)p 836 909 V 16 w(RMA)p 951 909 V 17 w(MALLOC)p Ft(,)f(in)i(F)l(ortran)
e(with)i(p)q(oin)o(ter)g(supp)q(ort.)75 1015 y Fp(REAL)23 b(A)75
1072 y(POINTER)g(\(P,)g(A\(100,100\)\))70 b(!)24 b(no)g(memory)f(is)g
(allocated)75 1128 y(CALL)g(MPI_RMA_MALLOC\(P,)f(100*100,)h(MPI_REAL,)f(0,)i
(0,)f(COMM,)h(NEWCOMM,)e(IERR\))695 1185 y(!)i(memory)f(is)h(allocated)e(and)
i(window)f(is)h(set)166 1291 y Ft(Since)16 b(standard)e(F)l(ortran)f(77)h(do)
q(es)g(not)g(supp)q(ort)h(p)q(oin)o(ters,)f(this)h(co)q(de)g(is)g(not)f(F)l
(ortran)f(77)h(co)q(de.)75 1347 y(It)h(is)h(exp)q(ected)g(that)f(most)f
(\(all?\))21 b(F)l(ortran)14 b(compilers)j(o\013er)d(similar)i(facilities.)
166 1530 y Fh(Alternativ)o(es)o(:)35 b Fl(W)m(e)13 b(can)h(select)h(to)f(ha)o
(v)o(e)g(only)f(one)h(initialization)d(call,)i(rather)i(than)f(t)o(w)o(o.)134
1604 y(1.)22 b(Only)13 b Fk(MPI)p 368 1604 13 2 v 15 w(RMA)p
474 1604 V 14 w(INIT)p Fl(.)g(I.e.,)g(put/get)h(needs)i(to)d(b)q(e)i(supp)q
(orted)g(for)f(an)o(y)f(target)h(memory)e(lo)q(cation.)134
1679 y(2.)22 b(Only)16 b Fk(MPI)p 371 1679 V 15 w(RMA)p 477
1679 V 14 w(MALLOC)p Fl(.)h(I.e.,)f(put/get)i(is)e(supp)q(orted)j(only)d(in)g
(memory)e(dynamically)g(allo)q(cated)189 1729 y(b)o(y)f(MPI)h(for)g(that)g
(purp)q(ose.)19 b(V)m(ariables)13 b(accessed)j(b)o(y)e(put/get)g(m)o(ust)f(b)
q(e)i(allo)q(cated)e(dynamically)m(.)75 1980 y Fq(4.3)59 b(Put)20
b(and)g(Get)f(Calls)75 2081 y Ft(The)c(execution)g(of)f(a)g(put)h(op)q
(eration)g(is)g(similar)g(to)f(the)h(execution)g(of)f(a)g(send)i(b)o(y)e(the)
h(origin)g(pro)q(cess)75 2138 y(and)f(a)g(matc)o(hing)g(receiv)o(e)h(b)o(y)g
(the)f(target)f(pro)q(cess.)19 b(The)c(ob)o(vious)f(di\013erence)i(is)e(that)
g(all)h(parameters)75 2194 y(are)g(pro)o(vided)h(b)o(y)f(one)g(call)i({)e
(the)g(call)h(executed)g(b)o(y)f(the)h(origin)g(pro)q(cess.)-32
46 y Fj(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 6 6
bop 75 -100 a Ft(6)746 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)l
(TIONS)75 49 y Fg(4.3.1)49 b(Non-blo)q(cking)19 b(and)d(Blo)q(cking)i(Put)75
230 y Fm(MPI)p 160 230 14 2 v 16 w(PUT\()11 b(o)o(rigin)p 402
230 V 15 w(addr,)h(o)o(rigin)p 632 230 V 15 w(count,)h(o)o(rigin)p
884 230 V 15 w(datat)o(yp)q(e,)g(ta)o(rget)p 1200 230 V 16
w(rank,)f(ta)o(rget)p 1436 230 V 16 w(disp,)g(ta)o(rget)p 1663
230 V 17 w(count,)g(ta)o(r-)75 286 y(get)p 137 286 V 17 w(datat)o(yp)q(e,)k
(comm)m(,)c(ta)o(rget)p 601 286 V 16 w(request,)17 b(ta)o(rget)p
894 286 V 16 w(increment\))117 363 y Fl(IN)155 b Fm(o)o(rigin)p
427 363 V 16 w(addr)381 b Fl(address)15 b(of)f(origin)e(bu\013er)j(\(c)o
(hoice\))117 438 y(IN)155 b Fm(o)o(rigin)p 427 438 V 16 w(count)360
b Fl(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(sen)o(t)i(\(in)o(teger\))117
513 y(IN)155 b Fm(o)o(rigin)p 427 513 V 16 w(datat)o(yp)q(e)302
b Fl(datat)o(yp)q(e)14 b(of)g(elemen)o(ts)f(sen)o(t)i(\(handle\))117
589 y(IN)155 b Fm(ta)o(rget)p 433 589 V 17 w(rank)375 b Fl(rank)14
b(of)f(target)i(\(in)o(teger\))117 664 y(IN)155 b Fm(ta)o(rget)p
433 664 V 17 w(disp)384 b Fl(displacemen)o(t)20 b(from)f(start)i(of)f(windo)o
(w)g(to)h(target)g(bu\013er)905 720 y(\(in)o(teger\))117 795
y(IN)155 b Fm(ta)o(rget)p 433 795 V 17 w(count)353 b Fl(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(receiv)o(ed)j(\(in)o(teger\))117 870 y(IN)155
b Fm(ta)o(rget)p 433 870 V 17 w(datat)o(yp)q(e)295 b Fl(datat)o(yp)q(e)14
b(used)h(at)f(the)g(target)h(\(handle\))117 946 y(IN)155 b
Fm(comm)466 b Fl(comm)o(unicator)11 b(used)k(for)f(comm)o(unicati)o(on)d
(\(handle\))117 1021 y(IN)155 b Fm(ta)o(rget)p 433 1021 V 17
w(request)323 b Fl(index)14 b(of)f(request)j(at)e(target)g(pro)q(cess)i(\(in)
o(teger\))117 1096 y(IN)155 b Fm(ta)o(rget)p 433 1096 V 17
w(increment)270 b Fl(incremen)o(t)14 b(to)g(target)g(request)h(\(in)o
(teger\))75 1220 y Fp(int)47 b(MPI)p 269 1220 15 2 v 17 w(Put\()23
b(void)h(*origin)p 693 1220 V 16 w(addr,)f(MPI)p 924 1220 V
17 w(Aint)g(origin)p 1204 1220 V 17 w(count,)g(MPI)p 1460 1220
V 16 w(Datatype)393 1277 y(origin)p 540 1277 V 17 w(datatype,)f(int)i(target)
p 1035 1277 V 16 w(rank,)f(int)h(target)p 1434 1277 V 16 w(disp,)f(int)393
1333 y(target)p 540 1333 V 17 w(count,)g(MPI)p 796 1333 V 16
w(Datatype)g(target)p 1171 1333 V 16 w(datatype,)g(MPI)p 1498
1333 V 17 w(Comm)g(comm,)g(int)393 1390 y(target)p 540 1390
V 17 w(request,)f(int)i(target)p 1011 1390 V 16 w(increment\))75
1476 y(MPI)p 150 1476 V 17 w(PUT\()f(ORIGIN)p 430 1476 V 16
w(ADDR,)h(ORIGIN)p 734 1476 V 16 w(COUNT,)f(ORIGIN)p 1061 1476
V 16 w(DATATYPE,)g(TARGET)p 1460 1476 V 16 w(RANK,)393 1533
y(TARGET)p 540 1533 V 17 w(DISP,)g(TARGET)p 844 1533 V 16 w(COUNT,)g(TARGET)p
1171 1533 V 16 w(DATATYPE,)g(COMM,)393 1589 y(TARGET)p 540
1589 V 17 w(REQUEST,)f(TARGET)p 915 1589 V 17 w(INCREMENT,)g(IERROR\))170
1646 y(<type>)h(ORIGIN)p 484 1646 V 17 w(ADDR\(*\))170 1702
y(INTEGER)g(ORIGIN)p 508 1702 V 17 w(COUNT,)g(ORIGIN)p 836
1702 V 16 w(DATATYPE,)g(TARGET)p 1235 1702 V 16 w(RANK,)g(TARGET)p
1538 1702 V 17 w(DISP,)170 1758 y(TARGET)p 317 1758 V 17 w(COUNT,)g(TARGET)p
645 1758 V 16 w(DATATYPE,)g(COMM,)g(TARGET)p 1187 1758 V 16
w(REQUEST,)g(TARGET)p 1562 1758 V 17 w(INCREMENT)170 1815 y(IERROR)166
1901 y Ft(T)l(ransfers)d Fm(o)o(rigin)p 478 1901 14 2 v 16
w(count)i Ft(successiv)o(e)g(en)o(tries)f(of)g(the)g(t)o(yp)q(e)g(sp)q
(eci\014ed)i(b)o(y)d(the)h Fm(o)o(rigin)p 1685 1901 V 16 w(datat)o(yp)q(e)p
Ft(,)75 1958 y(starting)13 b(at)h(address)g Fm(o)o(rigin)p
568 1958 V 15 w(addr)g Ft(on)g(the)g(origin)h(no)q(de)f(to)g(the)g(target)f
(no)q(de)h(sp)q(eci\014ed)i(b)o(y)e(the)g Fm(comm)m Ft(,)75
2014 y Fm(ta)o(rget)p 190 2014 V 16 w(rank)19 b Ft(pair.)31
b(The)19 b(data)f(are)h(written)g(in)h(the)e(target)g(bu\013er)h(at)f
(address)h Fm(ta)o(rget)p 1624 2014 V 16 w(addr)g(=)g(win-)75
2071 y(do)o(w)p 154 2071 V 16 w(base)h(+)g(ta)o(rget)p 439
2071 V 16 w(disp)p Ff(\002)p Fm(extent\(wind)q(o)o(w)p 840
2071 V 19 w(t)o(yp)q(e\))p Ft(,)g(where)f Fm(windo)o(w)p 1266
2071 V 17 w(base)h Ft(and)f Fm(windo)o(w)p 1618 2071 V 17 w(t)o(yp)q(e)h
Ft(are)f(the)75 2127 y(base)c(address)h(and)f(windo)o(w)g(t)o(yp)q(e)h(sp)q
(eci\014ed)h(at)d(windo)o(w)i(initialization.)166 2184 y(The)f(target)f
(bu\013er)h(is)h(sp)q(eci\014ed)i(b)o(y)d(the)g(argumen)o(ts)f
Fm(ta)o(rget)p 1230 2184 V 17 w(count)i Ft(and)f Fm(ta)o(rget)p
1568 2184 V 17 w(datat)o(yp)q(e)p Ft(.)166 2240 y(The)25 b(outcome)f(is)h(as)
f(if)i(the)e(origin)i(pro)q(cess)f(executed)g(a)g(blo)q(c)o(king)h(send)f(op)
q(eration)g(with)75 2297 y(argumen)o(ts)c Fm(o)o(rigin)p 412
2297 V 15 w(addr,)i(o)o(rigin)p 653 2297 V 15 w(count,)h(o)o(rigin)p
916 2297 V 15 w(datat)o(yp)q(e,)g(ta)o(rget)p 1243 2297 V 17
w(rank,)e(tag,)h(comm)m Ft(,)d(and)h(the)h(tar-)75 2353 y(get)i(pro)q(cess)g
(executed)h(a)e(receiv)o(e)i(op)q(eration)f(with)h(argumen)o(ts)e
Fm(ta)o(rget)p 1398 2353 V 16 w(addr,)j(ta)o(rget)p 1649 2353
V 16 w(count,)h(ta)o(r-)75 2409 y(get)p 137 2409 V 17 w(datat)o(yp)q(e,)21
b(source,)g(tag,)f(comm)m Ft(,)d(where)i Fm(ta)o(rget)p 993
2409 V 16 w(addr)h Ft(is)g(the)f(target)f(bu\013er)h(address)h(computed)75
2466 y(as)15 b(explained)i(ab)q(o)o(v)o(e.)j(The)15 b(message)g(sen)o(t)g
(should)h(\014t,)f(without)g(truncation,)g(in)h(the)f(target)f(bu\013er.)166
2522 y(The)h Fm(ta)o(rget)p 374 2522 V 16 w(t)o(yp)q(e)g Ft(argumen)o(t)f
(can)g(b)q(e)h(a)g(basic)g(datat)o(yp)q(e)f(iden)o(tical)i(to)e(the)g(windo)o
(w)h(t)o(yp)q(e;)f(it)h(can)75 2579 y(b)q(e)20 b(a)f(deriv)o(ed)h(datat)o(yp)
q(e)f(constructed)g(from)f(this)i(basic)g(datat)o(yp)q(e,)f(using)h(the)g(t)o
(yp)q(e)f(constructors)75 2635 y Fm(MPI)p 160 2635 V 16 w(TYPE)p
293 2635 V 17 w(CONTIGUOUS,)g(MPI)p 712 2635 V 16 w(TYPE)p
845 2635 V 16 w(VECTOR)g Ft(and)f Fm(MPI)p 1232 2635 V 16 w(TYPE)p
1365 2635 V 17 w(INDEXED)p Ft(;)f(i.e.)28 b(a)18 b(deriv)o(ed)1967
46 y Fj(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 7 7
bop 75 -100 a Fn(4.3.)34 b(PUT)15 b(AND)g(GET)g(CALLS)1177
b Ft(7)75 49 y(datat)o(yp)q(e)18 b(built)h(from)f(the)g(basic)h(windo)o(w)f
(t)o(yp)q(e,)h(where)f(all)h(displacemen)o(ts)h(are)e(m)o(ultiples)i(of)e
(this)75 106 y(basic)e(datat)o(yp)q(e)f(exten)o(t,)f(rather)h(than)g(b)o(yte)
g(coun)o(ts.)166 162 y(The)22 b Fm(ta)o(rget)p 381 162 14 2
v 16 w(request)i Ft(argumen)o(t)d(is)i(an)f(index)h(in)o(to)f(the)g(arra)o(y)
e(of)i(requests)g(that)f(the)h(target)75 219 y(pro)q(cess)15
b(created)g(b)o(y)g(the)f(windo)o(w)h(initialization)j(call.)j(The)15
b(caller)h(ma)o(y)e(sp)q(ecify)i(that)e(no)h(up)q(date)g(of)75
275 y(a)g(target)f(request)h(ob)s(ject)g(should)h(o)q(ccur)f(b)o(y)h(sp)q
(ecifying)h Fm(ta)o(rget)p 1199 275 V 16 w(request)g(=)e(MPI)p
1499 275 V 16 w(UNDEFINED)p Ft(.)166 332 y(The)g(comm)o(unication)g(op)q
(eration)g(completes)h(at)e(the)h(origin)g(after)f(the)h(data)f(ha)o(v)o(e)h
(b)q(een)h(copied)75 388 y(out)g(of)g(the)h(origin)g(bu\013er,)g(p)q(ossibly)
h(b)q(efore)f(the)f(data)g(has)h(b)q(een)g(copied)h(in)o(to)f(the)f(target)g
(memory)l(.)75 444 y(The)d(target)f(request)i(is)f(incremen)o(ted)i(b)o(y)e
(the)g(v)m(alue)i Fm(ta)o(rget)p 1121 444 V 16 w(increment)d
Ft(after)g(data)h(ha)o(v)o(e)f(b)q(een)j(copied)75 501 y(in)o(to)g(the)g
(target)f(memory)l(.)20 b(The)15 b(seman)o(tics)h(of)e(target)g(requests)i
(is)f(explained)j(in)e(Section)g(4.6.)166 557 y(The)j(completion)h(of)e(the)h
(RMA)g(request)g(do)q(es)g(not)f(dep)q(end)i(nor)f(in)o(terfere)g(in)g(an)o
(y)g(w)o(a)o(y)f(with)75 614 y(other)d(concurren)o(tly)h(activ)o(e)f(MPI)g
(comm)o(unications)h(b)q(et)o(w)o(een)g(the)f(origin)h(and)f(target.)166
670 y(The)h(target)f(pro)q(cess)i(ma)o(y)e(b)q(e)i(iden)o(tical)h(with)f(the)
f(origin)h(pro)q(cess;)g(i.e.,)f(a)g(pro)q(cess)g(ma)o(y)g(use)g(a)75
727 y(put)f(call)i(to)d(mo)o(v)o(e)h(data)f(in)i(its)g(memory)l(.)j(The)d
(same)e(holds)i(true)f(for)g(all)h(other)f(RMA)g(calls.)166
783 y(The)g(function)h(returns)f(an)h(error)e(co)q(de)i(as)f(in)h(MPI.)189
872 y Fi(R)n(ationale.)54 b Ft(A)17 b(target)g(datat)o(yp)q(e)g(is)h(pro)o
(vided)g(in)g(the)g(put)g(call)g(so)g(as)f(to)g(allo)o(w)g(data)g(to)g(b)q(e)
189 928 y(scattered)f(\(put\))g(or)g(gathered)g(\(get\))f(in)i(the)g(remote)f
(memory)l(,)g(without)g(in)o(v)o(olv)o(emen)o(t)h(of)f(the)189
985 y(remote)e(pro)q(cess;)h(see)g(example)h(in)g(Section)g(4.3.3.)i(The)d
(constrain)o(ts)g(on)g(the)g(target)e(datat)o(yp)q(e)189 1041
y(ensure)i(that)g(it)g(is)g(consisten)o(t)h(with)f(the)g(windo)o(w)g(t)o(yp)q
(e:)20 b(it)15 b(sp)q(eci\014es)i(a)e(subset)g(of)g(the)g(windo)o(w)189
1097 y(elemen)o(ts.)189 1170 y(The)20 b(use)g(of)f(target)g(requests)h(allo)o
(ws)g(the)g(target)e(pro)q(cess)j(to)e(b)q(e)h(informed)h(that)e(a)h(remote)
189 1226 y(access)15 b(o)q(ccurred)h(in)g(its)f(memory)l(.)189
1299 y(RMA)h(calls)g(targeted)f(to)h(the)g(origin)g(o)o(wn)f(memory)h(ma)o(y)
f(b)q(e)h(b)q(ene\014cial)i(when)f(they)f(allo)o(w)g(to)189
1356 y(use)g(a)f(separate)h(engine)h(for)e(async)o(hronous)h(memory)f(to)g
(memory)h(transfers.)21 b(They)16 b(are)f(v)o(ery)189 1412
y(useful)j(with)g(Read)p 531 1412 V 17 w(Mo)q(dify)p 689 1412
V 17 w(W)l(rite)f(op)q(erations)h(\(Section)g(4.5\),)e(to)h(enforce)g
(atomicit)o(y)l(.)27 b(\()p Fi(End)189 1468 y(of)16 b(r)n(ationale.)p
Ft(\))189 1557 y Fi(A)n(dvic)n(e)11 b(to)i(implementors.)38
b Ft(In)11 b(a)g(homogeneous)g(en)o(vironmen)o(t)h(the)f Fm(ta)o(rget)p
1507 1557 V 16 w(datat)o(yp)q(e)i Ft(describ)q(es)189 1613
y(the)20 b(same)g(data)g(la)o(y)o(out)f(b)q(oth)i(in)g(the)f(origin)h(and)g
(target)e(pro)q(cesses.)35 b(In)21 b(a)f(heterogeneous)189
1670 y(en)o(vironmen)o(t)f(the)g(data)f(la)o(y)o(out)g(for)h(the)g(target)e
(pro)q(cess)j(is)f(computing)g(b)o(y)g(scaling)h(all)g(dis-)189
1726 y(placemen)o(ts)e(b)o(y)f(a)g(\014xed)h(factor;)f(this)h(factor)e(is)i
(set)f(when)h(the)g(windo)o(w)f(is)h(de\014ned,)h(and)f(the)189
1783 y(scaling)e(can)g(b)q(e)g(done)g(either)g(at)f(the)g(origin)h(or)f(at)g
(the)h(target.)j(The)d Fm(ta)o(rget)p 1537 1783 V 16 w(disp)h
Ft(argumen)o(t)d(is)189 1839 y(also)h(scaled)h(b)o(y)f(the)g(same)g(factor.)
189 1912 y(In)23 b(the)f(general)i(case,)g(a)e(put)h(call)g(requires)h(the)e
(transfer)g(of)g(a)g(descriptor)h(of)g(the)f(target)189 1968
y(datat)o(yp)q(e)g(to)f(the)i(target)e(pro)q(cess,)j(together)e(with)g(the)h
(data,)g(and)g(its)f(in)o(terpretation)h(b)o(y)189 2025 y(an)d(agen)o(t)f(at)
h(the)g(target)f(pro)q(cess)h(who)g(stores)f(the)h(data.)34
b(H/w,)21 b(micro)q(co)q(de,)h(or)e(lo)o(w-lev)o(el)189 2081
y(comm)o(unication)15 b(s/w)f(can)h(b)q(e)g(exp)q(ected)h(to)e(pro)o(vide)h
(high)h(p)q(erformance,)e(customized)i(agen)o(ts)189 2138 y(for)9
b(the)i(simpler)g(transfers,)f(on)h(man)o(y)f(systems.)17 b(E.g.,)10
b(transfer)g(of)g(con)o(tiguous)g(data,)g(where)h(the)189 2194
y Fm(ta)o(rget)p 304 2194 V 16 w(datat)o(yp)q(e)17 b Ft(can)e(b)q(e)h
(represen)o(ted)f(b)o(y)g(one)h(in)o(teger;)f(transfer)f(of)h(strided)g
(data,)g(where)g(the)189 2250 y Fm(ta)o(rget)p 304 2250 V 16
w(datat)o(yp)q(e)g Ft(is)f(represen)o(ted)g(b)o(y)f(three)h(in)o(tegers;)f
(etc.)20 b(\()p Fi(End)14 b(of)g(advic)n(e)h(to)g(implementors.)p
Ft(\))166 2415 y Fh(Alternativ)o(es)o(:)134 2485 y Fl(1.)22
b(W)m(e)c(can)h(giv)o(e)f(up)g(on)h(signaling)d(at)j(the)g(remote)f(pro)q
(cess)j(access)f(completion.)30 b(This)19 b(will)e(sa)o(v)o(e)h(t)o(w)o(o)189
2534 y(argumen)o(ts)11 b(in)h(the)h(call.)k(When)12 b(suc)o(h)i(signaling)c
(is)i(needed,)i(it)e(will)f(require)i(separate)h(comm)o(unicatio)o(n.)134
2604 y(2.)22 b(W)m(e)16 b(can)g(preserv)o(e)i(remote)e(signaling)f(but)i
(\014x)f Fk(ta)o(rget)p 1066 2604 13 2 v 15 w(increment)f Fl(to)i(b)q(e)g
(alw)o(a)o(ys)e(1.)25 b(\(remote)16 b(requests)189 2654 y(coun)o(t)c(op)q
(erations,)h(rather)g(than)f(user)h(de\014ned)h(incremen)o(ts\).)k(Th)o(us,)
12 b(the)h Fk(remote)p 1510 2654 V 13 w(increment)e Fl(argumen)o(t)189
2704 y(is)i(sup)q(er\015uous.)-32 46 y Fj(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 8 8
bop 75 -100 a Ft(8)746 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)l
(TIONS)134 49 y Fl(3.)22 b(W)m(e)15 b(can)g(giv)o(e)g(up)g(on)h(target)f
(datat)o(yp)q(es,)h(and)g(the)f(abilit)o(y)f(to)h(mo)o(v)o(e,)f(in)h(one)g
(op)q(eration,)h(data)f(that)g(is)189 99 y(noncon)o(tiguous)e(in)h(target)g
(memory)m(.)134 174 y(4.)22 b(W)m(e)15 b(can)h(allo)o(w)e(absolute)i
(addressing,)h(in)e(addition)g(to)h(relativ)o(e)f(displacemen)o(ts.)24
b(This)16 b(can)g(either)g(b)q(e)189 224 y(sp)q(eci\014ed)f(as)f(prop)q(ert)o
(y)h(of)e(the)i(windo)o(w,)d(or)i(via)f(an)h(additional)e(put)i(argumen)o(t.)
75 482 y Fm(MPI)p 160 482 14 2 v 16 w(IPUT\()21 b(o)o(rigin)p
425 482 V 15 w(addr,)i(o)o(rigin)p 666 482 V 15 w(count,)h(o)o(rigin)p
929 482 V 16 w(datat)o(yp)q(e,)g(ta)o(rget)p 1257 482 V 16
w(rank,)f(ta)o(rget)p 1504 482 V 16 w(disp,)h(ta)o(rget)p 1743
482 V 16 w(count,)75 539 y(ta)o(rget)p 190 539 V 16 w(datat)o(yp)q(e,)17
b(comm)m(,)12 b(o)o(rigin)p 648 539 V 15 w(request,)k(ta)o(rget)p
939 539 V 17 w(request,)g(ta)o(rget)p 1232 539 V 16 w(increment\))117
616 y Fl(IN)155 b Fm(o)o(rigin)p 427 616 V 16 w(addr)381 b
Fl(address)15 b(of)f(origin)e(bu\013er)j(\(c)o(hoice\))117
691 y(IN)155 b Fm(o)o(rigin)p 427 691 V 16 w(count)360 b Fl(n)o(um)o(b)q(er)
13 b(of)h(elemen)o(ts)f(sen)o(t)i(\(in)o(teger\))117 766 y(IN)155
b Fm(o)o(rigin)p 427 766 V 16 w(datat)o(yp)q(e)302 b Fl(datat)o(yp)q(e)14
b(of)g(elemen)o(ts)f(sen)o(t)i(\(handle\))117 841 y(IN)155
b Fm(ta)o(rget)p 433 841 V 17 w(rank)375 b Fl(rank)14 b(of)f(target)i(\(in)o
(teger\))117 916 y(IN)155 b Fm(ta)o(rget)p 433 916 V 17 w(disp)384
b Fl(displacemen)o(t)20 b(from)f(start)i(of)f(windo)o(w)g(to)h(target)g
(bu\013er)905 973 y(\(in)o(teger\))117 1048 y(IN)155 b Fm(ta)o(rget)p
433 1048 V 17 w(count)353 b Fl(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f
(receiv)o(ed)j(\(in)o(teger\))117 1123 y(IN)155 b Fm(ta)o(rget)p
433 1123 V 17 w(datat)o(yp)q(e)295 b Fl(datat)o(yp)q(e)14 b(used)h(at)f(the)g
(target)h(\(handle\))117 1198 y(IN)155 b Fm(comm)466 b Fl(comm)o(unicator)11
b(used)k(for)f(comm)o(unicati)o(on)d(\(handle\))117 1273 y(OUT)108
b Fm(o)o(rigin)p 427 1273 V 16 w(request)330 b Fl(request)16
b(at)d(origin)g(pro)q(cess)j(\(handle\))117 1348 y(IN)155 b
Fm(ta)o(rget)p 433 1348 V 17 w(request)323 b Fl(index)14 b(of)f(request)j(at)
e(target)g(pro)q(cess)i(\(in)o(teger\))117 1424 y(IN)155 b
Fm(ta)o(rget)p 433 1424 V 17 w(increment)270 b Fl(incremen)o(t)14
b(to)g(target)g(request)h(\(in)o(teger\))75 1548 y Fp(int)47
b(MPI)p 269 1548 15 2 v 17 w(Iput\()23 b(void)h(*origin)p 717
1548 V 16 w(addr,)f(int)g(origin)p 1115 1548 V 17 w(count,)g(MPI)p
1371 1548 V 17 w(Datatype)393 1605 y(origin)p 540 1605 V 17
w(datatype,)f(int)i(target)p 1035 1605 V 16 w(rank,)f(int)h(target)p
1434 1605 V 16 w(disp,)f(int)393 1661 y(target)p 540 1661 V
17 w(count,)g(MPI)p 796 1661 V 16 w(Datatype)g(target)p 1171
1661 V 16 w(datatype,)g(MPI)p 1498 1661 V 17 w(Comm)g(comm,)393
1717 y(MPI)p 468 1717 V 17 w(Request)g(*origin)p 844 1717 V
16 w(request,)g(int)g(target)p 1314 1717 V 17 w(request,)f(int)393
1774 y(target)p 540 1774 V 17 w(increment\))75 1860 y(MPI)p
150 1860 V 17 w(IPUT\()h(ORIGIN)p 454 1860 V 16 w(ADDR,)g(ORIGIN)p
757 1860 V 17 w(COUNT,)g(ORIGIN)p 1085 1860 V 16 w(DATATYPE,)g(TARGET)p
1484 1860 V 16 w(RANK,)393 1917 y(TARGET)p 540 1917 V 17 w(DISP,)g(TARGET)p
844 1917 V 16 w(COUNT,)g(TARGET)p 1171 1917 V 16 w(DATATYPE,)g(COMM,)393
1973 y(ORIGIN)p 540 1973 V 17 w(REQUEST,)f(TARGET)p 915 1973
V 17 w(REQUEST,)g(TARGET)p 1290 1973 V 17 w(INCREMENT,)g(IERROR\))170
2030 y(<type>)h(ORIGIN)p 484 2030 V 17 w(ADDR\(*\))170 2086
y(INTEGER)g(ORIGIN)p 508 2086 V 17 w(COUNT,)g(ORIGIN)p 836
2086 V 16 w(DATATYPE,)g(TARGET)p 1235 2086 V 16 w(RANK,)g(TARGET)p
1538 2086 V 17 w(DISP,)170 2143 y(TARGET)p 317 2143 V 17 w(COUNT,)g(TARGET)p
645 2143 V 16 w(DATATYPE,)g(COMM,)g(ORIGIN)p 1187 2143 V 16
w(REQUEST,)g(TARGET)p 1562 2143 V 17 w(REQUEST,)170 2199 y(TARGET)p
317 2199 V 17 w(INCREMENT,)f(IERROR)166 2286 y Ft(This)17 b(is)g(the)f(non)o
(blo)q(c)o(king)i(v)o(ersion)e(of)g(put.)23 b(It)17 b(is)f(iden)o(tical)j(to)
c Fm(MPI)p 1386 2286 14 2 v 16 w(PUT)p Ft(,)h(except)h(that)f(it)g(has)75
2342 y(an)h Fm(o)o(rigin)p 249 2342 V 15 w(request)h Ft(argumen)o(t.)24
b(The)17 b(origin)h(request)f(completes)g(after)f(data)g(ha)o(v)o(e)g(b)q
(een)i(copied)g(out)75 2398 y(of)d(the)h(origin)h(memory)l(,)e(p)q(ossibly)j
(b)q(efore)e(the)g(op)q(eration)g(has)g(completed)h(in)f(target)f(memory)l(.)
22 b(The)75 2455 y(origin)16 b(pro)q(cess)g(ma)o(y)f(test)g(or)h(w)o(ait)f
(for)g(the)h(comm)o(unication)g(op)q(eration)g(to)f(complete)h(at)f(the)h
(origin)75 2511 y(using)g(MPI)f(test)g(and)g(w)o(ait)g(constructs.)1967
46 y Fj(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 9 9
bop 75 -100 a Fn(4.3.)34 b(PUT)15 b(AND)g(GET)g(CALLS)1177
b Ft(9)75 49 y Fg(4.3.2)49 b(Non-blo)q(cking)19 b(and)d(Blo)q(cking)i(Get)75
230 y Fm(MPI)p 160 230 14 2 v 16 w(GET\()11 b(o)o(rigin)p 399
230 V 16 w(addr,)h(o)o(rigin)p 630 230 V 15 w(count,)h(o)o(rigin)p
882 230 V 15 w(datat)o(yp)q(e,)h(ta)o(rget)p 1199 230 V 16
w(rank,)e(ta)o(rget)p 1435 230 V 16 w(disp,)h(ta)o(rget)p 1663
230 V 16 w(count,)g(ta)o(r-)75 286 y(get)p 137 286 V 17 w(datat)o(yp)q(e,)j
(comm)m(,)c(ta)o(rget)p 601 286 V 16 w(request,)17 b(ta)o(rget)p
894 286 V 16 w(increment\))117 363 y Fl(OUT)108 b Fm(o)o(rigin)p
427 363 V 16 w(addr)381 b Fl(address)15 b(of)f(origin)e(bu\013er)j(\(c)o
(hoice\))117 438 y(IN)155 b Fm(o)o(rigin)p 427 438 V 16 w(count)360
b Fl(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(receiv)o(ed)j(\(in)o(teger\))117
513 y(IN)155 b Fm(o)o(rigin)p 427 513 V 16 w(datat)o(yp)q(e)302
b Fl(datat)o(yp)q(e)14 b(of)g(elemen)o(ts)f(receiv)o(ed)j(\(handle\))117
589 y(IN)155 b Fm(ta)o(rget)p 433 589 V 17 w(rank)375 b Fl(rank)14
b(of)f(target)i(\(in)o(teger\))117 664 y(IN)155 b Fm(ta)o(rget)p
433 664 V 17 w(disp)384 b Fl(displacemen)o(t)16 b(from)e(windo)o(w)i(start)g
(to)h(target)f(bu\013er)h(\(in-)905 720 y(teger\))117 795 y(IN)155
b Fm(ta)o(rget)p 433 795 V 17 w(count)353 b Fl(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(sen)o(t)i(\(in)o(teger\))117 870 y(IN)155
b Fm(ta)o(rget)p 433 870 V 17 w(datat)o(yp)q(e)295 b Fl(datat)o(yp)q(e)14
b(of)g(elemen)o(ts)f(sen)o(t)i(\(handle\))117 946 y(IN)155
b Fm(comm)466 b Fl(comm)o(unicator)11 b(used)k(for)f(comm)o(unicati)o(on)d
(\(handle\))117 1021 y(IN)155 b Fm(ta)o(rget)p 433 1021 V 17
w(request)323 b Fl(index)14 b(of)f(target)i(request)g(\(in)o(teger\))117
1096 y(IN)155 b Fm(ta)o(rget)p 433 1096 V 17 w(increment)270
b Fl(incremen)o(t)14 b(to)g(target)g(request)h(\(in)o(teger\))75
1220 y Fp(int)47 b(MPI)p 269 1220 15 2 v 17 w(get\()23 b(void)h(*origin)p
693 1220 V 16 w(addr,)f(int)h(origin)p 1092 1220 V 16 w(count,)f(MPI)p
1347 1220 V 17 w(Datatype)393 1277 y(origin)p 540 1277 V 17
w(datatype,)f(int)i(target,)f(int)g(target)p 1321 1277 V 16
w(disp,)h(int)393 1333 y(target)p 540 1333 V 17 w(count,)f(MPI)p
796 1333 V 16 w(Datatype)g(target)p 1171 1333 V 16 w(datatype,)g(MPI)p
1498 1333 V 17 w(Comm)g(comm,)g(int)393 1390 y(target)p 540
1390 V 17 w(request,)f(target)p 915 1390 V 17 w(increment\))75
1476 y(MPI)p 150 1476 V 17 w(GET\()h(ORIGIN)p 430 1476 V 16
w(ADDR,)h(ORIGIN)p 734 1476 V 16 w(COUNT,)f(ORIGIN)p 1061 1476
V 16 w(DATATYPE,)g(TARGET,)g(TARGET)p 1651 1476 V 16 w(DISP,)393
1533 y(TARGET)p 540 1533 V 17 w(COUNT,)g(TARGET)p 868 1533
V 16 w(DATATYPE,)g(COMM,)g(TARGET)p 1410 1533 V 16 w(REQUEST,)393
1589 y(TARGET)p 540 1589 V 17 w(INCREMENT,)f(IERROR\))170 1646
y(<type>)h(ORIGIN)p 484 1646 V 17 w(ADDR\(*\))170 1702 y(INTEGER)g(ORIGIN)p
508 1702 V 17 w(COUNT,)g(ORIGIN)p 836 1702 V 16 w(DATATYPE,)g(TARGET,)g
(TARGET)p 1426 1702 V 16 w(DISP,)170 1758 y(TARGET)p 317 1758
V 17 w(COUNT,)g(TARGET)p 645 1758 V 16 w(DATATYPE,)g(COMM,)g(TARGET)p
1187 1758 V 16 w(REQUEST,)g(TARGET)p 1562 1758 V 17 w(INCREMENT,)170
1815 y(IERROR)166 1901 y Ft(Similar)c(to)e Fm(MPI)p 468 1901
14 2 v 15 w(PUT)p Ft(,)h(except)f(that)g(the)h(direction)g(of)f(data)g
(transfer)g(is)h(rev)o(ersed.)26 b(Data)16 b(are)75 1958 y(copied)h(from)e
(the)h(target)f(memory)g(to)h(the)g(origin.)22 b(The)16 b Fm(ta)o(rget)p
1208 1958 V 17 w(request)h Ft(is)g(up)q(dated)f(after)g(the)g(data)75
2014 y(ha)o(v)o(e)e(b)q(een)h(copied)g(out)f(of)f(the)h(memory)g(at)f(the)h
(target)f(no)q(de.)20 b(The)15 b Fm(o)o(rigin)p 1400 2014 V
15 w(request)h Ft(completes)e(when)75 2071 y(the)h(data)g(ha)o(v)o(e)g(arriv)
o(ed)g(at)f(the)i(origin.)-32 46 y Fj(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441
y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 10 10
bop 75 -100 a Ft(10)728 b Fn(CHAPTER)15 b(4.)30 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(IGET\()22 b(o)o(rigin)p
423 49 V 16 w(addr,)i(o)o(rigin)p 666 49 V 16 w(count,)h(o)o(rigin)p
931 49 V 15 w(datat)o(yp)q(e,)h(ta)o(rget,)f(ta)o(rget)p 1410
49 V 16 w(disp,)g(ta)o(rget)p 1650 49 V 17 w(count,)g(ta)o(r-)75
106 y(get)p 137 106 V 17 w(datat)o(yp)q(e,)16 b(comm)m(,)c(o)o(rigin)p
595 106 V 15 w(request,)17 b(ta)o(rget)p 887 106 V 16 w(request,)g(ta)o(rget)
p 1180 106 V 16 w(increment\))117 183 y Fl(OUT)108 b Fm(o)o(rigin)p
427 183 V 16 w(addr)381 b Fl(address)15 b(of)f(origin)e(bu\013er)j(\(c)o
(hoice\))117 258 y(IN)155 b Fm(o)o(rigin)p 427 258 V 16 w(count)360
b Fl(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(receiv)o(ed)j(\(in)o(teger\))117
333 y(IN)155 b Fm(o)o(rigin)p 427 333 V 16 w(datat)o(yp)q(e)302
b Fl(datat)o(yp)q(e)14 b(of)g(elemen)o(ts)f(receiv)o(ed)j(\(handle\))117
408 y(IN)155 b Fm(ta)o(rget)475 b Fl(rank)14 b(of)f(target)i(\(in)o(teger\))
117 483 y(IN)155 b Fm(ta)o(rget)p 433 483 V 17 w(disp)384 b
Fl(displacemen)o(t)16 b(from)e(windo)o(w)i(start)g(to)h(target)f(bu\013er)h
(\(in-)905 540 y(teger\))117 615 y(IN)155 b Fm(ta)o(rget)p
433 615 V 17 w(count)353 b Fl(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(sen)o
(t)i(\(in)o(teger\))117 690 y(IN)155 b Fm(ta)o(rget)p 433 690
V 17 w(datat)o(yp)q(e)295 b Fl(datat)o(yp)q(e)14 b(used)h(at)f(the)g(target)h
(\(handle\))117 765 y(IN)155 b Fm(comm)466 b Fl(comm)o(unicator)11
b(used)k(for)f(comm)o(unicati)o(on)d(\(handle\))117 840 y(OUT)108
b Fm(o)o(rigin)p 427 840 V 16 w(request)330 b Fl(request)16
b(at)d(origin)g(pro)q(cess)j(\(handle\))117 916 y(IN)155 b
Fm(ta)o(rget)p 433 916 V 17 w(request)323 b Fl(index)14 b(of)f(target)i
(request)g(\(in)o(teger\))117 991 y(IN)155 b Fm(ta)o(rget)p
433 991 V 17 w(increment)270 b Fl(incremen)o(t)14 b(to)g(target)g(request)h
(\(in)o(teger\))75 1115 y Fp(int)47 b(MPI)p 269 1115 15 2 v
17 w(Iget\()23 b(void)h(*origin)p 717 1115 V 16 w(addr,)f(int)g(origin)p
1115 1115 V 17 w(count,)g(MPI)p 1371 1115 V 17 w(Datatype)393
1172 y(origin)p 540 1172 V 17 w(datatype,)f(int)i(target,)f(integer)f(target)
p 1416 1172 V 17 w(disp,)h(int)393 1228 y(target)p 540 1228
V 17 w(count,)g(MPI)p 796 1228 V 16 w(Datatype)g(target)p 1171
1228 V 16 w(datatype,)g(MPI)p 1498 1228 V 17 w(Comm)g(comm,)393
1285 y(MPI)p 468 1285 V 17 w(Request)g(*origin)p 844 1285 V
16 w(request,)g(int)g(target)p 1314 1285 V 17 w(request,)393
1341 y(target)p 540 1341 V 17 w(increment\))75 1427 y(MPI)p
150 1427 V 17 w(Iget\()g(ORIGIN)p 454 1427 V 16 w(ADDR,)g(ORIGIN)p
757 1427 V 17 w(COUNT,)g(ORIGIN)p 1085 1427 V 16 w(DATATYPE,)g(TARGET,)g
(TARGET)p 1675 1427 V 16 w(DISP,)393 1484 y(TARGET)p 540 1484
V 17 w(COUNT,)g(TARGET)p 868 1484 V 16 w(DATATYPE,)g(COMM,)g(ORIGIN)p
1410 1484 V 16 w(REQUEST,)393 1540 y(TARGET)p 540 1540 V 17
w(REQUEST,)f(TARGET)p 915 1540 V 17 w(INCREMENT,)g(IERROR\))170
1597 y(<type>)h(ORIGIN)p 484 1597 V 17 w(ADDR\(*\))170 1653
y(INTEGER)g(ORIGIN)p 508 1653 V 17 w(COUNT,)g(ORIGIN)p 836
1653 V 16 w(DATATYPE,)g(TARGET,)g(TARGET)p 1426 1653 V 16 w(DISP,)170
1710 y(TARGET)p 317 1710 V 17 w(COUNT,)g(TARGET)p 645 1710
V 16 w(DATATYPE,)g(COMM,)g(ORIGIN)p 1187 1710 V 16 w(REQUEST,)g(TARGET)p
1562 1710 V 17 w(REQUEST,)170 1766 y(TARGET)p 317 1766 V 17
w(INCREMENT,)f(IERROR)166 1853 y Ft(This)16 b(is)f(the)h(non)o(blo)q(c)o
(king)g(v)o(ersion)g(of)e Fm(MPI)p 937 1853 14 2 v 16 w(GET)p
Ft(.)75 1974 y Fg(4.3.3)49 b(Examples)75 2060 y Fo(Example)18
b(4.2)k Ft(W)l(e)f(sho)o(w)e(ho)o(w)h(to)g(implemen)o(t)h(the)g(generic)g
(indirect)h(assignmen)o(t)e Fp(A)j(=)h(B\(map\))p Ft(,)75 2117
y(where)15 b Fp(A,)23 b(B)15 b Ft(and)f Fp(map)g Ft(ha)o(v)o(e)g(the)h(same)f
(distribution,)i(and)e Fp(map)g Ft(is)h(a)f(p)q(erm)o(utation.)20
b(T)l(o)14 b(simplify)l(,)i(w)o(e)75 2173 y(assume)f(a)g(blo)q(c)o(k)h
(distribution)h(with)e(equal)h(size)g(blo)q(c)o(ks.)75 2279
y Fp(SUBROUTINE)22 b(MAP\()i(A,)f(B,)h(map,)f(m,)h(comm,)f(p\))75
2336 y(INTEGER)g(m,)g(map\(m\),)g(comm,)h(p)75 2392 y(REAL)f(A\(m\),)g
(B\(m\))75 2505 y(INTEGER)g(otypes\(p\),)f(oindex\(m\),)94
b(!)24 b(used)g(to)f(construct)g(origin)g(datatypes)266 2562
y(tytpes\(p\),)f(tindex\(m\),)94 b(!)24 b(used)g(to)f(construct)g(target)g
(datatypes)266 2618 y(count\(p\),)g(blen\(m\),)f(total\(p\))1967
46 y Fj(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 11 11
bop 75 -100 a Fn(4.3.)29 b(PUT)15 b(AND)g(GET)g(CALLS)1160
b Ft(11)75 49 y Fp(!)24 b(This)f(part)g(does)h(the)f(work)g(that)h(depends)f
(on)g(the)h(locations)e(of)i(B.)75 106 y(!)g(Can)f(be)h(reused)f(while)g
(this)g(does)h(not)f(change)75 219 y(DO)h(i=1,m)147 275 y(blen\(i\))e(=)i(1)
75 332 y(END)f(DO)75 444 y(DO)h(i=1,p)147 501 y(count\(i\))e(=)i(1)75
557 y(END)f(DO)75 670 y(CALL)g(MPI_RMA_INIT\(B,)f(m,)i(MPI_REAL,)e(0,)i(0,)g
(comm,)f(getcomm,)f(ierr\))75 783 y(!)i(This)f(part)g(does)h(the)f(work)g
(that)h(depends)f(on)g(the)h(value)f(of)g(map)h(and)75 840
y(!)g(the)f(locations)g(of)g(the)h(arrays.)75 896 y(!)g(Can)f(be)h(reused)f
(while)g(these)g(do)h(not)f(change)75 1009 y(!)h(Compute)f(number)g(of)g
(elements)g(to)h(be)f(received)g(from)g(each)h(process)75 1122
y(DO)g(i=1,m)147 1178 y(j)f(=)h(map\(i\)/m)147 1235 y(count\(j\))e(=)i
(count\(j\)+1)75 1291 y(END)f(DO)75 1404 y(total\(1\))g(=)g(0)75
1461 y(DO)h(i=2,p)147 1517 y(total\(i\))e(=)i(total\(i-1\))f(+)g
(count\(i-1\))75 1630 y(DO)h(i=1,p)147 1686 y(count\(i\))e(=)i(0)75
1743 y(END)f(DO)75 1856 y(!)h(compute)f(origin)g(and)g(target)g(indices)g(of)
h(elements)75 1912 y(!)g(received)e(from)i(each)f(process)75
1969 y(DO)h(i=1,m)147 2025 y(j)f(=)h(map\(i\)/m)147 2082 y(k)f(=)h
(MOD\(map\(i\),m\))147 2138 y(count\(j\))e(=)i(count\(j\)+1)147
2195 y(oindex\(total\(j\))d(+)j(count\(j\)\))f(=)g(i)147 2251
y(tindex\(total\(j\))e(+)j(count\(j\)\))f(=)g(k)75 2307 y(END)g(DO)75
2420 y(!)h(create)f(origin)g(and)g(target)g(datatypes)g(for)g(each)h(get)f
(operation)75 2477 y(DO)h(i=1,p)147 2533 y(CALL)f
(MPI_TYPE_INDEXED\(count\(i\))o(,)e(blen,)i(oindex\(total\(i\)\),)743
2590 y(MPI_REAL,)g(otype\(i\),)f(ierr\))147 2646 y(CALL)h
(MPI_TYPE_COMMIT\(otype\(i\),)d(ierr\))147 2703 y(CALL)j
(MPI_TYPE_INDEXED\(count\(i\))o(,)e(blen,)i(tindex\(total\(i\)\),)-32
46 y Fj(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 12 12
bop 75 -100 a Ft(12)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)743 49 y Fp(MPI_REAL,)23 b(ttype\(i\),)f(ierr\))147
106 y(CALL)h(MPI_TYPE_COMMIT\(ttype\(i\),)d(ierr\))75 162 y(END)j(DO)75
275 y(!)h(this)f(part)g(does)h(the)f(assignment)g(itself)75
388 y(DO)h(i=1,p)147 444 y(CALL)f(MPI_GET)g(\(A,)g(1,)h(otype\(i\),)e(i,)i
(0,)g(ttype\(i\),)e(comm,)910 501 y(MPI_UNDEFINED,)g(0,)i(ierr\))75
557 y(END)f(DO)75 614 y(RETURN)75 720 y Fo(Example)18 b(4.3)k
Ft(A)16 b(simpler)g(v)o(ersion)g(can)f(b)q(e)h(written,)g(that)e(do)q(es)i
(not)f(require)h(to)f(built)h(a)f(datat)o(yp)q(e)75 777 y(for)e(the)g(target)
f(bu\013er.)19 b(But,)13 b(then)h(one)f(needs)h(a)f(separate)f(get)h(call)h
(for)f(eac)o(h)g(elemen)o(t,)h(as)f(illustrated)75 833 y(b)q(elo)o(w.)28
b(This)19 b(co)q(de)f(is)g(m)o(uc)o(h)g(simpler,)h(but)f(m)o(uc)o(h)g(less)g
(e\016cien)o(t,)h(for)e(large)h(arra)o(ys,)f(unless)i(h/w)e(is)75
889 y(fast)d(enough)i(to)e(transfer)h(e\016cien)o(tly)h(single)h(w)o(ords.)75
996 y Fp(SUBROUTINE)22 b(MAP\()i(A,)f(B,)h(map,)f(m,)h(comm,)f(p\))75
1052 y(INTEGER)g(m,)g(map\(m\),)g(comm,)h(p)75 1109 y(REAL)f(A\(m\),)g
(B\(m\))75 1222 y(CALL)g(MPI_RMA_INIT\(B,)f(m,)i(MPI_REAL,)e(0,)i(0,)g(comm,)
f(getcomm,)f(ierr\))75 1334 y(DO)i(i=1,m)147 1391 y(j)f(=)h(map\(i\)/m)147
1447 y(k)f(=)h(MOD\(map\(i\),m\))147 1504 y(CALL)f(MPI_GET\(A\(i\),)f(1,)i
(MPI_REAL,)e(j,)i(k,)f(1,)h(MPI_REAL,)791 1560 y(getcomm,)f(MPI_UNDEFINED,)f
(0,)h(ierr\))75 1617 y(END)g(DO)75 1673 y(RETURN)75 1816 y
Fq(4.4)59 b(Accumulate)18 b(F)n(unctions)75 1918 y Ft(It)e(is)g(often)g
(useful)g(in)h(a)e(put)h(op)q(eration)g(to)f(com)o(bine)i(the)f(data)f(mo)o
(v)o(ed)g(to)g(the)h(target)f(pro)q(cess)h(with)75 1974 y(the)f(data)f(that)g
(resides)h(at)f(that)g(pro)q(cess,)h(rather)f(then)h(replacing)h(the)f(data)f
(there.)20 b(This)15 b(will)h(allo)o(w,)75 2031 y(for)f(example,)i(to)e
(accum)o(ulate)i(a)e(sum,)h(b)o(y)g(ha)o(ving)g(all)h(in)o(v)o(olv)o(ed)g
(pro)q(cesses)g(add)f(their)g(con)o(tribution)75 2087 y(to)f(the)g(sum)g(v)m
(ariable)i(in)f(the)f(memory)g(of)f(one)i(pro)q(cess.)1967
46 y Fj(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 13 13
bop 75 -100 a Fn(4.4.)34 b(A)o(CCUMULA)l(TE)15 b(FUNCTIONS)1029
b Ft(13)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(A)o(CCUMULA)l(TE\(o)o(rigin)p
598 49 V 15 w(addr,)25 b(o)o(rigin)p 841 49 V 15 w(count,)g(o)o(rigin)p
1105 49 V 15 w(datat)o(yp)q(e,)h(ta)o(rget)p 1434 49 V 16 w(rank,)e(ta)o
(rget)p 1682 49 V 16 w(disp,)h(ta)o(r-)75 106 y(get)p 137 106
V 17 w(count,)16 b(ta)o(rget)p 400 106 V 16 w(datat)o(yp)q(e,)g(op,)f(comm)n
(,)c(ta)o(rget)p 937 106 V 17 w(request,)16 b(ta)o(rget)p 1230
106 V 16 w(increment\))117 183 y Fl(IN)155 b Fm(o)o(rigin)p
427 183 V 16 w(addr)381 b Fl(initial)12 b(address)j(of)f(bu\013er)g(\(c)o
(hoice\))117 258 y(IN)155 b Fm(o)o(rigin)p 427 258 V 16 w(count)360
b Fl(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(bu\013er)h(\(non)f(negativ)
o(e)f(in)o(teger\))117 333 y(IN)155 b Fm(o)o(rigin)p 427 333
V 16 w(datat)o(yp)q(e)302 b Fl(data)14 b(t)o(yp)q(e)g(of)f(eac)o(h)i
(bu\013er)g(elemen)o(t)e(\(handle\))117 408 y(IN)155 b Fm(ta)o(rget)p
433 408 V 17 w(rank)375 b Fl(rank)14 b(of)f(destination)h(pro)q(cess)i(in)d
(comm)e(\(in)o(teger\))117 483 y(IN)155 b Fm(ta)o(rget)p 433
483 V 17 w(disp)384 b Fl(displacemen)o(t)20 b(from)f(start)i(of)f(windo)o(w)g
(to)h(target)g(bu\013er)905 540 y(\(in)o(teger\))117 615 y(IN)155
b Fm(ta)o(rget)p 433 615 V 17 w(count)353 b Fl(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(in)h(target)g(bu\013er)h(\(in)o(teger\))117
690 y(IN)155 b Fm(ta)o(rget)p 433 690 V 17 w(datat)o(yp)q(e)295
b Fl(datat)o(yp)q(e)14 b(used)h(at)f(target)g(\(handle\))117
765 y(IN)155 b Fm(op)541 b Fl(reduce)16 b(op)q(eration)e(\(handle\))117
840 y(IN)155 b Fm(comm)466 b Fl(comm)o(unicator)11 b(\(handle\))117
916 y(OUT)108 b Fm(ta)o(rget)p 433 916 V 17 w(request)323 b
Fl(index)14 b(of)f(target)i(request)g(\(in)o(teger\))117 991
y(IN)155 b Fm(ta)o(rget)p 433 991 V 17 w(increment)270 b Fl(incremen)o(t)14
b(to)g(target)g(request)h(\(in)o(teger\))75 1115 y Fp(int)23
b(MPI)p 245 1115 15 2 v 17 w(Accumulate\(void*)f(origin)p 812
1115 V 16 w(addr,)h(int)h(origin)p 1211 1115 V 16 w(count,)393
1172 y(MPI)p 468 1172 V 17 w(Datatype)f(origin)p 844 1172 V
16 w(datatype,)g(int)g(target)p 1338 1172 V 17 w(rank,)g(int)g(target)p
1737 1172 V 17 w(disp,)393 1228 y(int)h(target)p 636 1228 V
16 w(count,)f(MPI)p 891 1228 V 17 w(Datatype)g(target)p 1267
1228 V 16 w(datatype,)g(MPI)p 1594 1228 V 16 w(Op)h(op,)393
1285 y(MPI)p 468 1285 V 17 w(Comm)f(comm,)g(int)h(target)p
987 1285 V 16 w(request,)f(target)p 1362 1285 V 16 w(increment\))75
1371 y(MPI)p 150 1371 V 17 w(ACCUMULATE\(ORIGIN)p 575 1371
V 15 w(ADDR,)g(ORIGIN)p 877 1371 V 16 w(COUNT,)g(ORIGIN)p 1204
1371 V 17 w(DATATYPE,)f(TARGET)p 1603 1371 V 17 w(RANK,)393
1427 y(TARGET)p 540 1427 V 17 w(DISP,)h(TARGET)p 844 1427 V
16 w(COUNT,)g(TARGET)p 1171 1427 V 16 w(DATATYPE,)g(OP,)h(COMM,)393
1484 y(TARGET)p 540 1484 V 17 w(REQUEST,)e(TARGET)p 915 1484
V 17 w(INCREMENT,)g(IERROR\))170 1540 y(<type>)h(ORIGIN)p 484
1540 V 17 w(ADDR\(*\))170 1597 y(INTEGER)g(ORIGIN)p 508 1597
V 17 w(COUNT,)g(ORIGIN)p 836 1597 V 16 w(DATATYPE,)g(TARGET)p
1235 1597 V 16 w(RANK,)g(TARGET)p 1538 1597 V 17 w(DISP,)170
1653 y(TARGET)p 317 1653 V 17 w(DATATYPE,)f(OP,)i(COMM,)f(TARGET)p
955 1653 V 16 w(REQUEST,)g(TARGET)p 1330 1653 V 17 w(INCREMENT,)f(IERROR)-32
46 y Fj(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 14 14
bop 75 -100 a Ft(14)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(IA)o(CCUMULA)l(TE\(o)o(rigin)p
611 49 V 15 w(addr,)22 b(o)o(rigin)p 851 49 V 15 w(count,)h(o)o(rigin)p
1113 49 V 15 w(datat)o(yp)q(e,)g(ta)o(rget)p 1439 49 V 16 w(rank,)f(ta)o
(rget)p 1685 49 V 16 w(disp,)g(ta)o(r-)75 106 y(get)p 137 106
V 17 w(count,)16 b(ta)o(rget)p 400 106 V 16 w(datat)o(yp)q(e,)g(op,)f(comm)n
(,)c(o)o(rigin)p 931 106 V 16 w(request,)16 b(ta)o(rget)p 1223
106 V 16 w(request\))117 183 y Fl(IN)155 b Fm(o)o(rigin)p 427
183 V 16 w(addr)381 b Fl(initial)12 b(address)j(of)f(bu\013er)g(\(c)o
(hoice\))117 258 y(IN)155 b Fm(o)o(rigin)p 427 258 V 16 w(count)360
b Fl(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(bu\013er)h(\(non)f(negativ)
o(e)f(in)o(teger\))117 333 y(IN)155 b Fm(o)o(rigin)p 427 333
V 16 w(datat)o(yp)q(e)302 b Fl(data)14 b(t)o(yp)q(e)g(of)f(eac)o(h)i
(bu\013er)g(elemen)o(t)e(\(handle\))117 408 y(IN)155 b Fm(ta)o(rget)p
433 408 V 17 w(rank)375 b Fl(rank)14 b(of)f(destination)h(pro)q(cess)i(in)d
(comm)e(\(in)o(teger\))117 483 y(IN)155 b Fm(ta)o(rget)p 433
483 V 17 w(disp)384 b Fl(displacemen)o(t)20 b(from)f(start)i(of)f(windo)o(w)g
(to)h(target)g(bu\013er)905 540 y(\(in)o(teger\))117 615 y(IN)155
b Fm(ta)o(rget)p 433 615 V 17 w(count)353 b Fl(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(in)h(target)g(bu\013er)h(\(in)o(teger\))117
690 y(IN)155 b Fm(ta)o(rget)p 433 690 V 17 w(datat)o(yp)q(e)295
b Fl(datat)o(yp)q(e)14 b(used)h(at)f(target)g(\(handle\))117
765 y(IN)155 b Fm(op)541 b Fl(reduce)16 b(op)q(eration)e(\(handle\))117
840 y(IN)155 b Fm(comm)466 b Fl(comm)o(unicator)11 b(\(handle\))117
916 y(OUT)108 b Fm(o)o(rigin)p 427 916 V 16 w(request)330 b
Fl(request)16 b(at)d(origin)g(pro)q(cess)j(\(handle\))117 991
y(OUT)108 b Fm(ta)o(rget)p 433 991 V 17 w(request)323 b Fl(index)14
b(of)f(target)i(request)g(\(in)o(teger\))117 1066 y(IN)155
b Fm(ta)o(rget)p 433 1066 V 17 w(increment)270 b Fl(incremen)o(t)14
b(to)g(target)g(request)h(\(in)o(teger\))75 1190 y Fp(int)23
b(MPI)p 245 1190 15 2 v 17 w(Iaccumulate\(void*)f(origin)p
836 1190 V 16 w(addr,)h(int)h(origin)p 1235 1190 V 16 w(count,)393
1247 y(MPI)p 468 1247 V 17 w(Datatype)f(origin)p 844 1247 V
16 w(datatype,)g(int)g(target)p 1338 1247 V 17 w(rank,)g(int)g(target)p
1737 1247 V 17 w(disp,)393 1303 y(int)h(target)p 636 1303 V
16 w(count,)f(MPI)p 891 1303 V 17 w(Datatype)g(target)p 1267
1303 V 16 w(datatype,)g(MPI)p 1594 1303 V 16 w(Op)h(op,)393
1360 y(MPI)p 468 1360 V 17 w(Comm)f(comm,)g(MPI)p 819 1360
V 17 w(Request)g(*origin)p 1195 1360 V 16 w(request,)g(int)h(target)p
1666 1360 V 16 w(request,)393 1416 y(int)g(target)p 636 1416
V 16 w(increment\))75 1503 y(MPI)p 150 1503 V 17 w(IACCUMULATE\(ORIGIN)p
599 1503 V 14 w(ADDR,)g(ORIGIN)p 901 1503 V 16 w(COUNT,)f(ORIGIN)p
1228 1503 V 16 w(DATATYPE,)g(TARGET)p 1627 1503 V 16 w(RANK,)393
1559 y(TARGET)p 540 1559 V 17 w(DISP,)g(TARGET)p 844 1559 V
16 w(COUNT,)g(TARGET)p 1171 1559 V 16 w(DATATYPE,)g(OP,)h(COMM,)393
1615 y(ORIGIN)p 540 1615 V 17 w(REQUEST,)e(TARGET)p 915 1615
V 17 w(REQUEST,)g(TARGET)p 1290 1615 V 17 w(INCREMENT,)g(IERROR)170
1672 y(<type>)h(ORIGIN)p 484 1672 V 17 w(ADDR\(*\))170 1728
y(INTEGER)g(ORIGIN)p 508 1728 V 17 w(COUNT,)g(ORIGIN)p 836
1728 V 16 w(DATATYPE,)g(TARGET)p 1235 1728 V 16 w(RANK,)g(TARGET)p
1538 1728 V 17 w(DISP,)170 1785 y(TARGET)p 317 1785 V 17 w(COUNT,)g(TARGET)p
645 1785 V 16 w(DATATYPE,)g(OP,)g(COMM,)g(ORIGIN)p 1282 1785
V 17 w(REQUEST,)g(TARGET)p 1658 1785 V 16 w(REQUEST,)170 1841
y(TARGET)p 317 1841 V 17 w(INCREMENT,)f(IERROR)166 1928 y Ft(Accum)o(ulate)f
(the)f(con)o(ten)o(ts)g(of)g(the)h(origin)g(bu\013er)f(\(as)g(de\014ned)h(b)o
(y)g Fm(o)o(rigin)p 1517 1928 14 2 v 15 w(addr)p Ft(,)g Fm(o)o(rigin)p
1756 1928 V 16 w(count)75 1984 y Ft(and)c Fm(o)o(rigin)p 274
1984 V 15 w(datat)o(yp)q(e)p Ft(\))i(to)d(the)h(bu\013er)g(sp)q(eci\014ed)i
(b)o(y)e(argumen)o(ts)f Fm(ta)o(rget)p 1343 1984 V 16 w(count)i
Ft(and)f Fm(ta)o(rget)p 1684 1984 V 17 w(datat)o(yp)q(e)p Ft(,)75
2041 y(at)j(o\013set)g Fm(ta)o(rget)p 377 2041 V 16 w(disp)p
Ft(,)j(in)f(the)f(target)e(windo)o(w)j(sp)q(eci\014ed)g(b)o(y)f
Fm(ta)o(rget)p 1326 2041 V 16 w(rank)g Ft(and)g Fm(comm)m Ft(,)e(using)j(the)
75 2097 y(op)q(eration)15 b Fm(op)p Ft(.)166 2154 y(This)22
b(is)f(lik)o(e)h Fm(MPI)p 501 2154 V 16 w(PUT)f Ft(except)h(that)e(data)h(is)
g(com)o(bined)h(in)o(to)f(the)g(target)f(area)h(instead)g(of)75
2210 y(o)o(v)o(erwriting)14 b(it.)20 b(An)o(y)15 b(of)f(the)h(op)q(erations)g
(for)f Fm(MPI)p 977 2210 V 15 w(REDUCE)i Ft(can)f(b)q(e)g(used,)g(including)i
(user-de\014ned)75 2267 y(functions.)166 2323 y(F)l(or)22 b(example,)i(if)f
Fm(op)f Ft(is)h Fm(MPI)p 709 2323 V 16 w(SUM)p Ft(,)f(eac)o(h)h(elemen)o(t)g
(of)f(the)g(origin)h(bu\013er)f(is)h(added)g(to)f(the)75 2379
y(corresp)q(onding)16 b(elemen)o(t)g(in)g(the)f(target,)f(replacing)j(the)e
(former)f(v)m(alue)j(in)f(the)f(target.)166 2436 y(The)f(op)q(eration)g
Fm(op)g Ft(applies)i(to)d(elemen)o(ts)h(of)g(the)g(t)o(yp)q(e)g(sp)q
(eci\014ed)i(in)e(the)g(windo)o(w)g(initialization.)189 2542
y Fi(A)n(dvic)n(e)i(to)i(users.)50 b Fm(MPI)p 642 2542 V 16
w(PUT)17 b Ft(is)g(a)f(sp)q(ecial)j(case)e(of)f Fm(MPI)p 1235
2542 V 16 w(A)o(CCUMULA)l(TE)p Ft(,)h(with)g(the)g(\(asso-)189
2599 y(ciativ)o(e\))h(op)q(eration)h Fk(MPI)p 637 2599 13 2
v 14 w(LAST)g Ft(that)e(returns)i(the)f(second)h(argumen)o(t)e(\()p
Fe(f)5 b Ft(\()p Fe(a;)j(b)p Ft(\))16 b(=)i Fe(b)p Ft(\).)28
b(Th)o(us,)189 2655 y Fm(MPI)p 274 2655 14 2 v 15 w(A)o(CCUMULA)l(TE)20
b Ft(is)f(a)g(generalization)h(of)f Fm(MPI)p 1130 2655 V 15
w(PUT)p Ft(.)g(Note,)g(ho)o(w)o(ev)o(er,)g(that)f Fm(MPI)p
1771 2655 V 16 w(PUT)1967 46 y Fj(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959
1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959
1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959
1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959
1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959
1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959
2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959
2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959
2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 15 15
bop 75 -100 a Fn(4.5.)34 b(RMW)15 b(OPERA)l(TIONS)1209 b Ft(15)189
49 y(and)14 b Fm(MPI)p 361 49 14 2 v 16 w(A)o(CCUMULA)l(TE)h
Ft(ha)o(v)o(e)f(sligh)o(tly)i(di\013eren)o(t)f(atomicit)o(y)f(seman)o(tics)h
({)f(see)h(Section)g(4.9.)189 106 y(\()p Fi(End)g(of)i(advic)n(e)f(to)g
(users.)p Ft(\))75 212 y Fo(Example)i(4.4)k Ft(W)l(e)d(w)o(an)o(t)e(to)g
(compute)i Fp(B)p Ft(\()p Fp(j)p Ft(\))e(=)976 180 y Fd(P)1020
223 y Fc(map)p Fb(\()p Fc(i)p Fb(\)=)p Fc(j)1158 212 y Fp(A)p
Ft(\()p Fp(i)p Ft(\).)28 b(The)18 b(arra)o(ys)f Fp(A,)24 b(B)18
b Ft(and)g Fp(map)g Ft(are)75 268 y(distributed)f(in)f(the)f(same)g(manner.)
20 b(W)l(e)15 b(write)g(the)h(simple)g(v)o(ersion.)75 375 y
Fp(SUBROUTINE)22 b(SUM\()i(A,)f(B,)h(map,)f(m,)h(comm,)f(p\))75
431 y(INTEGER)g(m,)g(map\(m\),)g(comm,)h(p)75 488 y(REAL)f(A\(m\),)g(B\(m\))
75 601 y(CALL)g(MPI_RMA_INIT\(B,)f(m,)i(MPI_REAL,)e(0,)i(0,)g(comm,)f
(sumcomm,)f(ierr\))75 713 y(DO)i(i=1,m)147 770 y(j)f(=)h(map\(i\)/m)147
826 y(k)f(=)h(MOD\(map\(i\),m\))147 883 y(CALL)f(MPI_ACCUMULATE\(A\(i\),)e
(1,)j(MPI_REAL,)e(j,)i(k,)f(1,)h(MPI_SUM,)f(sumcomm,)910 939
y(MPI_UNDEFINED,)f(ierr\))75 996 y(END)h(DO)75 1052 y(RETURN)166
1158 y Ft(This)18 b(co)q(de)h(is)f(iden)o(tical)i(to)d(the)h(co)q(de)h(in)g
(Example)f(4.3,)f(page)h(12,)g(except)g(that)f(a)h(call)h(to)e(get)75
1215 y(has)f(b)q(een)h(replaced)h(b)o(y)e(a)f(call)j(to)d(accum)o(ulate.)23
b(\(Note)16 b(that,)f(if)h Fp(map)g Ft(is)h(one-to-one,)f(then)g(the)g(co)q
(de)75 1271 y(computes)c Fp(B)h Ft(=)g Fp(A)p Ft(\()p Fp(map)473
1255 y Fa(\000)p Fc(1)515 1271 y Ft(\),)f(whic)o(h)h(the)f(rev)o(erse)g
(assignmen)o(t)g(to)f(he)i(one)f(computed)h(in)f(that)g(example.\))75
1328 y(In)j(a)g(similar)g(manner,)g(w)o(e)f(can)h(replace)h(the)f(call)g(to)f
(get)h(b)o(y)f(a)h(call)g(to)f(accum)o(ulate)i(in)f(Example)g(4.2,)75
1384 y(page)g(10,)g(th)o(us)g(p)q(erforming)g(the)h(computation)f(with)h
(only)g(one)f(comm)o(unication)h(b)q(et)o(w)o(een)g(an)o(y)f(pair)75
1441 y(of)g(pro)q(cesses.)166 1630 y Fh(Alternativ)o(es)o(:)51
b Fl(LLo)o(yd)17 b(suggests)j(to)e(drop)g(the)g(non)o(blo)q(c)o(king)f(v)o
(ersion.)30 b(Reason:)d(shared)18 b(memory)75 1686 y(implemen)o(tatio)o(ns)13
b(will)h(need)i(to)f(main)o(tain)d(a)j(lo)q(c)o(k)g(to)g(exclude)h(other)g
(accum)o(ulate)e(calls.)21 b(Th)o(us,)16 b(one)f(should)75
1743 y(encourage)g(the)g(users)h(to)e(ha)o(v)o(e)g(short)h(accum)o(ulate)f
(bu\013ers,)h(whereas)h(non)o(blo)q(c)o(king)d(calls)h(w)o(ould)f(pro)o(vide)
h(the)75 1799 y(wrong)g(message.)75 2025 y Fq(4.5)59 b(RMW)19
b(op)r(erations)75 2126 y Ft(Remote)12 b(Read)p 343 2126 V
17 w(Mo)q(dify)p 501 2126 V 16 w(W)l(rite)g(op)q(erations)g(pro)o(vide)g
(atomic)f(test)g(and)h(up)q(date)g(of)f(a)g(remote)g(v)m(ariable.)75
2183 y(They)17 b(can)h(b)q(e)g(used)f(to)g(implemen)o(t)i(sync)o(hronization)
f(op)q(erations)f(suc)o(h)h(as)e(semaphores,)i(coun)o(ting)75
2239 y(semaphores,)d(etc.)-32 46 y Fj(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441
y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 16 16
bop 75 -100 a Ft(16)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(RMW\()10 b(inbuf,)i(outbuf,)g
(count,)g(datat)o(yp)q(e,)g(dest,)g(disp,)g(op,)f(comm)n(,)c(ta)o(rget)p
1421 49 V 17 w(request,)12 b(ta)o(rget)p 1710 49 V 16 w(increment)75
106 y(\))117 183 y Fl(IN)155 b Fm(inbuf)493 b Fl(address)15
b(of)f(input)f(bu\013er)i(\(c)o(hoice\))117 258 y(OUT)108 b
Fm(outbuf)465 b Fl(address)15 b(of)f(output)g(bu\013er)h(\(c)o(hoice\))117
333 y(IN)155 b Fm(count)482 b Fl(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h
(bu\013ers)h(\(in)o(teger\))117 408 y(IN)155 b Fm(datat)o(yp)q(e)424
b Fl(datat)o(yp)q(e)14 b(of)g(v)n(ariables)f(\(handle\))117
483 y(IN)155 b Fm(ta)o(rget)475 b Fl(rank)14 b(of)f(target)i(pro)q(cess)g
(\(in)o(teger\))117 559 y(IN)155 b Fm(disp)513 b Fl(displacemen)o(t)13
b(to)h(target)g(bu\013er)h(\(in)o(teger\))117 634 y(IN)155
b Fm(op)541 b Fl(read-mo)q(dify-write)12 b(op)q(eration)i(\(handle\))117
709 y(IN)155 b Fm(comm)466 b Fl(comm)o(unicator)11 b(\(handle\))117
784 y(OUT)108 b Fm(ta)o(rget)p 433 784 V 17 w(request)323 b
Fl(index)14 b(of)f(target)i(request)g(\(in)o(teger\))117 859
y(IN)155 b Fm(ta)o(rget)p 433 859 V 17 w(increment)270 b Fl(incremen)o(t)14
b(to)g(target)g(request)h(\(in)o(teger\))75 984 y Fp(int)23
b(MPI)p 245 984 15 2 v 17 w(Rmw\()h(void)f(*inbuf,)g(void)g(*outbuf,)g(int)g
(count,)g(MPI)p 1360 984 V 17 w(Datatype)g(datatype,)393 1040
y(int)h(target,)f(int)g(disp,)g(MPI)p 993 1040 V 17 w(Op)h(op,)f(MPI)p
1249 1040 V 17 w(Comm)g(comm,)g(int)393 1096 y(target)p 540
1096 V 17 w(request,)f(int)i(target)p 1011 1096 V 16 w(increment)f(\))75
1183 y(MPI)p 150 1183 V 17 w(RMW\()g(INBUF,)g(OUTBUF,)g(COUNT,)g(DATATYPE,)g
(TARGET,)g(DISP,)g(OP,)g(COMM,)393 1239 y(TARGET)p 540 1239
V 17 w(REQUEST,)f(TARGET)p 915 1239 V 17 w(INCREMENT,)g(IERROR\))170
1296 y(<type>)h(INBUF,)h(OUTBUF,)170 1352 y(INTEGER)f(DATATYPE,)g(TARGET,)g
(DISP,)g(OP,)h(COMM,)f(TARGET)p 1320 1352 V 16 w(REQUEST,)170
1409 y(TARGET)p 317 1409 V 17 w(INCREMENT,)f(IERROR)166 1495
y Ft(Accum)o(ulate)17 b(the)e(con)o(ten)o(ts)h(of)f(the)h(input)h(bu\013er)f
(at)f(address)h Fm(inbuf)p Ft(,)g(as)g(de\014ned)h(b)o(y)f
Fm(count)h Ft(and)75 1552 y Fm(datat)o(yp)q(e)p Ft(,)e(to)e(the)g(target)g
(bu\013er)g(in)h(the)g(windo)o(w)f(sp)q(eci\014ed)j(b)o(y)d
Fm(dest)i Ft(and)f Fm(comm)m Ft(,)c(at)j(o\013set)g Fm(disp)h
Ft(using)75 1608 y(the)h(op)q(eration)f Fm(op)p Ft(.)20 b(The)15
b(original)g(v)m(alue)h(of)e(the)h(target)e(bu\013er)h(is)h(returned)g(in)g
(the)g(output)f(bu\013er)h(at)75 1665 y(address)g Fm(outbuf)p
Ft(.)166 1721 y(Mo)q(di\014cation)f(of)f(the)h(target)e(bu\013er)i(is)g
(atomic:)k(no)c(other)f(MPI)g(op)q(eration)h(accesses)g(the)f(target)75
1778 y(bu\013er)i(while)i(the)e(op)q(eration)h(is)f(in)h(progress.)166
1834 y(This)g(call)g(can)f(b)q(e)h(used)g(to)e(implemen)o(t)i(test)f(and)g
(set)g(with)g Fm(MPI)p 1316 1834 14 2 v 16 w(LOR)h Ft(or)e
Fm(MPI)p 1572 1834 V 16 w(MAX)p Ft(,)h(test)g(and)75 1890 y(or)g(with)g
Fm(MPI)p 319 1890 V 16 w(BOR)h Ft(and)g(fetc)o(h)f(and)g(add)h(with)f
Fm(MPI)p 1005 1890 V 16 w(SUM)p Ft(.)166 1947 y(Additional)21
b(op)q(erations)f(for)f(sw)o(ap)h(and)g(compare&sw)o(ap)f(are)g
(prede\014ned.)35 b(The)20 b(sw)o(ap)g(op)q(er-)75 2003 y(ation)f(is)g(the)g
Fk(MPI)p 403 2003 13 2 v 14 w(LAST)g Ft(op)q(eration)g(that)f(has)g(already)h
(b)q(een)h(discussed,)h(de\014ned)f(b)o(y)e Fe(f)5 b Ft(\()p
Fe(a;)j(b)p Ft(\))17 b(=)i Fe(b)p Ft(.)75 2060 y(A)j(Read)p
235 2060 14 2 v 17 w(Mo)q(dify)p 393 2060 V 16 w(W)l(rite)g(with)g
Fk(MPI)p 726 2060 13 2 v 14 w(LAST)g Ft(stores)f(in)h(the)g(target)e
(bu\013er)h(the)h(v)m(alue)h(in)f Fm(inbuf)h Ft(and)75 2116
y(returns)d(the)g(previous)g(v)m(alue)i(of)d(the)h(target)f(bu\013er)h(in)h
Fm(outbuf)p Ft(.)35 b(The)20 b(compare&sw)o(ap)g(op)q(eration)75
2173 y Fk(MPI)p 152 2173 V 14 w(COMP)m(ARE)p 364 2173 V 13
w(AND)p 464 2173 V 15 w(SW)m(AP)14 b Ft(is)i(de\014ned)g(b)o(y)189
2297 y Fe(f)5 b Ft(\()p Fe(<)12 b(a)305 2304 y Fb(1)324 2297
y Fe(;)c(a)369 2304 y Fb(2)400 2297 y Fe(>;)g(<)k(b;)c(b)j(>)p
Ft(\))i(=)689 2225 y Fd(\()743 2268 y Fe(a)767 2275 y Fb(2)827
2268 y Ft(if)j Fe(a)893 2275 y Fb(1)924 2268 y Ft(=)d Fe(b)743
2325 y(b)64 b Ft(otherwise)75 2421 y(It)23 b(is)g(a)f(conditional)j(sw)o(ap,)
e(that)f(o)q(ccurs)h(if)g(k)o(eys)g(matc)o(h.)41 b(The)23 b(second)g(op)q
(erand)h(is)f(arti\014cally)75 2477 y(replicated,)16 b(to)f(mak)o(e)g(b)q
(oth)g(op)q(erands)g(of)g(the)h(same)e(t)o(yp)q(e.)166 2610
y Fh(Discussion:)37 b Fl(W)m(e)14 b(allo)o(w)f Fk(MPI)p 694
2610 V 15 w(RMW)h Fl(to)h(use)g(nonasso)q(ciativ)o(e)g(user-de\014ned)i
(functions:)i(the)d(compare)75 2659 y(and)c(sw)o(ap)g(op)q(eration)g(is)g
(not)h(asso)q(ciativ)o(e.)k(Suc)o(h)c(op)q(erations,)f(if)f(used)i(in)f
(reduce)i(calls,)e(yield)f(implemen)o(tation)1967 46 y Fj(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967
385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959
667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119
y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345
y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570
y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796
y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022
y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248
y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474
y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699
y(48)p eop
%%Page: 17 17
bop 75 -100 a Fn(4.5.)29 b(RMW)15 b(OPERA)l(TIONS)1214 b Ft(17)75
49 y Fl(dep)q(enden)o(t)16 b(results.)j(Do)14 b(w)o(e)g(w)o(an)o(t,)f(nev)o
(ertheless,)j(to)e(allo)o(w)e(the)j(use)g(of)e(suc)o(h)i(functions)f(in)g
(reduce)i(calls?)i(\(It)75 99 y(do)q(es)d(not)e(harm,)f(and)i(users)i(ma)o(y)
11 b(\014nd)j(useful)g(applications.\))166 156 y(If)d(not,)g(w)o(e)g(should)g
(extend)h(the)g Fk(comm)m(ute)d Fl(argumen)o(t)h(of)g Fk(MPI)p
1151 156 13 2 v 14 w(OP)p 1223 156 V 14 w(CREA)m(TE)p Fl(,)f(so)i(as)h(to)e
(ha)o(v)o(e)h(three)i(v)n(alues:)75 212 y(nonasso)q(ciativ)o(e,)j(asso)q
(ciativ)o(e,)f(asso)q(ciativ)o(e)h(and)g(comm)o(utati)o(v)o(e.)21
b(The)16 b(use)h(of)e(nonasso)q(ciativ)o(e)h(functions)f(will)75
268 y(b)q(e)g(allo)o(w)o(ed)d(only)h(in)h(RMW)f(calls.)189
457 y Fi(A)n(dvic)n(e)j(to)i(users.)47 b Ft(One)17 b(can)f(use)h(a)f(RMW)g
Fk(MPI)p 1069 457 V 14 w(BOR)g Ft(op)q(eration)g(on)h(an)f(arra)o(y)f(of)h(v)
m(ariables,)189 514 y(in)g(order)f(to)f(implemen)o(t)j(a)e(Bo)q(olean)g(OR)h
(on)f(more)g(than)g(32)g(\(or)f(64\))h(bits.)189 589 y(The)10
b Fm(MPI)p 362 589 14 2 v 16 w(RMW)g Ft(function)h(has)g(a)f(similar)h
(e\013ect)f(on)h(remote)e(memory)h(as)g Fm(MPI)p 1551 589 V
16 w(A)o(CCUMULA)l(TE)p Ft(,)189 645 y(but)17 b(also)h(returns)f(the)h(old)g
(v)m(alue)h(to)e(the)h(origin.)28 b(Th)o(us,)18 b Fm(MPI)p
1315 645 V 15 w(RMW)g Ft(is)g(a)f(generalization)i(of)189 702
y Fm(MPI)p 274 702 V 15 w(A)o(CCUMULA)l(TE)p Ft(.)i(Note,)g(ho)o(w)o(ev)o
(er,)g(that)f Fm(MPI)p 1130 702 V 15 w(RMW)h Ft(and)g Fm(MPI)p
1454 702 V 15 w(A)o(CCUMULA)l(TE)g Ft(ha)o(v)o(e)189 758 y(sligh)o(tly)16
b(di\013eren)o(t)f(atomicit)o(y)g(seman)o(tics)h({)f(see)g(Section)h(4.9.)j
(\()p Fi(End)d(of)g(advic)n(e)g(to)h(users.)p Ft(\))75 959
y Fm(MPI)p 160 959 V 16 w(IRMW\()d(inbuf,)i(outbuf,)h(count,)f(datat)o(yp)q
(e,)g(dest,)g(disp,)g(op,)f(comm)n(,)c(request)17 b(\))117
1036 y Fl(IN)155 b Fm(inbuf)493 b Fl(address)15 b(of)f(input)f(bu\013er)i
(\(c)o(hoice\))117 1111 y(OUT)108 b Fm(outbuf)465 b Fl(address)15
b(of)f(output)g(bu\013er)h(\(c)o(hoice\))117 1187 y(IN)155
b Fm(count)482 b Fl(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(bu\013ers)h
(\(in)o(teger\))117 1262 y(IN)155 b Fm(datat)o(yp)q(e)424 b
Fl(datat)o(yp)q(e)14 b(of)g(v)n(ariables)f(\(handle\))117 1337
y(IN)155 b Fm(ta)o(rget)475 b Fl(rank)14 b(of)f(target)i(pro)q(cess)g(\(in)o
(teger\))117 1412 y(INOUT)62 b Fm(disp)513 b Fl(displacemen)o(t)13
b(to)h(target)g(bu\013er)h(\(in)o(teger\))117 1487 y(IN)155
b Fm(op)541 b Fl(read-mo)q(dify-write)12 b(op)q(eration)i(\(handle\))117
1562 y(IN)155 b Fm(comm)466 b Fl(comm)o(unicator)11 b(\(handle\))117
1637 y(OUT)108 b Fm(o)o(rigin)p 427 1637 V 16 w(request)330
b Fl(request)16 b(ob)r(ject)e(\(handle\))117 1713 y(OUT)108
b Fm(ta)o(rget)p 433 1713 V 17 w(request)323 b Fl(index)14
b(of)f(target)i(request)g(\(in)o(teger\))117 1788 y(IN)155
b Fm(ta)o(rget)p 433 1788 V 17 w(increment)270 b Fl(incremen)o(t)14
b(to)g(target)g(request)h(\(in)o(teger\))75 1912 y Fp(int)23
b(MPI)p 245 1912 15 2 v 17 w(Irmw\()g(void)h(*inbuf,)f(void)g(*outbuf,)g(int)
g(count,)g(MPI)p 1384 1912 V 17 w(Datatype)g(datatype,)393
1969 y(int)h(target,)f(int)g(disp,)g(MPI)p 993 1969 V 17 w(Op)h(op,)f(MPI)p
1249 1969 V 17 w(Comm)g(comm,)g(MPI)p 1600 1969 V 17 w(Request)393
2025 y(*origin)p 564 2025 V 16 w(request,)g(int)h(target)p
1035 2025 V 16 w(request,)f(int)g(target)p 1505 2025 V 17 w(increment)f(\))75
2111 y(MPI)p 150 2111 V 17 w(IRMW\()h(INBUF,)g(OUTBUF,)g(COUNT,)g(DATATYPE,)g
(TARGET,)f(DISP,)i(OP,)f(COMM,)393 2168 y(ORIGIN)p 540 2168
V 17 w(REQUEST,)f(TARGET)p 915 2168 V 17 w(REQUEST,)g(TARGET)p
1290 2168 V 17 w(INCREMENT,)g(IERROR\))170 2224 y(<type>)h(INBUF,)h(OUTBUF,)
170 2281 y(INTEGER)f(DATATYPE,)g(TARGET,)g(DISP,)g(OP,)h(COMM,)f(REQUEST,)f
(TARGET)p 1534 2281 V 17 w(REQUEST,)170 2337 y(TARGET)p 317
2337 V 17 w(INCREMENT,)g(IERROR)166 2424 y Ft(Non)o(blo)q(c)o(king)16
b(v)o(ersion.)75 2530 y Fo(Example)i(4.5)k Ft(This)15 b(example)f(implemen)o
(ts)h(a)e(master-sla)o(v)o(e)g(framew)o(ork,)f(where)i(sla)o(v)o(es)g(pic)o
(k)g(w)o(ork)75 2586 y(from)e(a)h(w)o(ork)f(pile)j(and)e(execute)h(it.)19
b(A)14 b(form)e(of)h(guided)h(self-sc)o(heduling)i(is)d(used)h(for)f(load)g
(balancing,)75 2643 y(assuming)h(that)e(task)h(execution)h(time)g(is)g(not)f
(constan)o(t.)19 b(The)13 b(main)h(sla)o(v)o(e)f(routine)h(is)g(sho)o(wn)f(b)
q(ello)o(w.)-32 46 y Fj(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 18 18
bop 75 -100 a Ft(18)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fp(...)75 106 y(void)23 b(function)g(slave\()147
162 y(MPI_Comm)f(pile,)47 b(/*)24 b(communicator)e(for)i(window)f(containing)
1053 219 y(shared)g(work)h(pile)214 b(*/)147 275 y(MPI_Comm)22
b(counter,)h(/*)h(communicator)e(for)h(window)g(containing)910
332 y(shared)g(work)h(pile)f(counter)166 b(*/)147 388 y(int)47
b(master,)71 b(/*)23 b(rank)g(of)h(master)739 b(*/)242 444
y(numitems,)47 b(/*)23 b(number)g(of)h(work)f(items)g(in)h(pile)405
b(*/)242 501 y(itemsize,)47 b(/*)23 b(size)g(of)h(work)f(item)668
b(*/)242 557 y(minchunk,)47 b(/*)23 b(min)h(number)f(of)g(work)h(items)f
(picked)g(by)g(process)71 b(*/)242 614 y(maxchunk,)47 b(/*)23
b(max)h(number)f(of)g(work)h(items)f(picked)g(by)g(process)71
b(*/)147 670 y(float)23 b(bfactor,)g(/*)g(fudge)g(factor)g(for)h(load)f
(balancing)g(\(greater)g(than)552 727 y(1,)h(and)f(larger)g(if)h(tasks)f
(exhibit)g(more)g(variance\))g(*/)147 783 y(void)g(\(*task\))g(\()h(char)f
(*\))g(/*)h(pointer)f(to)h(work)f(function)309 b(*/)147 840
y(\))75 896 y({)75 953 y(int)23 b(numproc,)g(mychunk,)g(diff,)g(mystart,)g
(i;)75 1009 y(char*)g(mypile;)75 1122 y(MPI_Comm_size\(comm,)e(numproc\);)75
1178 y(mypile)i(=)h(\(char)f(*\)malloc\(numitems*itemsize)o(/\(numpr)o
(oc*bfac)o(tor\)\);)75 1291 y(do)h(while\(1\))e({)147 1348
y(mychunk)g(=)i(numitem/\(numproc*bfactor\);)147 1404 y(if)f(\(mychunk)g(>)h
(maxchunk\))e(mychunk)h(=)h(maxchunk;)147 1461 y(if)f(\(mychunk)g(<)h
(minchunk\))e(mychunk)h(=)h(minchunk;)147 1517 y(diff)f(=)h(-mychunk;)147
1574 y(MPI_RMW\(&diff,)e(mystart,)g(1,)i(MPI_INT,)f(master,)g(0,)g(MPI_SUM,)
839 1630 y(counter,)f(MPI_REQUEST_NULL,)g(0\);)147 1686 y(if)h(\(\(mystart)g
(+)h(mychunk\))e(<)i(0\))g(break;)147 1743 y(if)f(\(mystart)g(<)h(0\))f({)h
(mychunk)f(+=)g(mystart;)g(mystart)g(=)h(0;})147 1799 y(MPI_Get\(mypile,)d
(mychunk*itemsize,)h(MPI_CHAR,)h(master,)337 1856 y(mystart*itemsize,)f
(mychunk*itemsize,)g(MPI_CHAR,)862 1912 y(pile,)i(MPI_REQUEST_NULL,)d(0\);)
147 1969 y(for)i(\(i=0;)g(i<mychunk;)g(i++\))g(task\(mypile+i*itemsize\);)147
2025 y(})166 2207 y Fh(Alternativ)o(es)o(:)134 2282 y Fl(1.)f(Delete)15
b(the)h(remote)f(request)i(and)e(remote)g(incremen)o(t)g(argumen)o(ts)f(from)
f(the)j(call.)21 b(This)15 b(migh)o(t)e(mak)o(e)189 2332 y(sense)k(ev)o(en)f
(if)f(the)i(other)f(RMA)g(calls)f(ha)o(v)o(e)h(these)h(t)o(w)o(o)e(argumen)o
(ts.)23 b(If)15 b(these)j(RMW)d(op)q(erations)h(are)189 2382
y(used)e(as)g(in)g(a)f(shared)i(memory)d(en)o(vironmen)o(t,)g(then)i(the)h
(use)g(of)e(remote)g(requests)j(mak)o(es)d(little)g(sense.)134
2457 y(2.)22 b(Llo)o(yd)d(suggests)j(to)e(drop)g(the)h(non)o(blo)q(c)o(king)e
(v)o(ersion)i(of)f(RMW,)f(for)h(the)h(same)e(reasons)i(giv)o(en)f(for)189
2506 y(non)o(blo)q(c)o(king)d(accum)o(ulate:)26 b(some)17 b(implemen)o(tatio)
o(ns)f(will)h(require)i(a)f(lo)q(c)o(k)g(for)g(the)h(duration)f(of)f(the)189
2556 y(call,)i(and)g(it)g(is)g(wrong)h(to)f(suggest)h(to)f(users)i(to)e(use)h
(long)f(bu\013ers.)35 b(The)20 b(case)h(for)e(RMW)f(is)h(ev)o(en)189
2606 y(stronger)g(than)f(for)g(accum)o(ulate,)g(b)q(ecause)i(of)d(more)g
(stringen)o(t)i(atomicit)o(y)d(requiremen)o(ts)i(and)g(lo)o(w)o(er)189
2656 y(lik)o(elyho)q(o)q(d)12 b(that)i(these)h(op)q(erations)g(are)f(used)h
(for)e(long)g(transfers.)1967 46 y Fj(1)1967 103 y(2)1967 159
y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 19 19
bop 75 -100 a Fn(4.6.)34 b(COUNTING)16 b(T)l(AR)o(GET)e(REQUEST)947
b Ft(19)134 49 y Fl(3.)22 b(Llo)o(yd)16 b(suggest)i(that)f(RMW)g(calls)f(ma)o
(y)g(also)g(b)q(eha)o(v)o(e)i(implicitly)c(as)j(a)g(fence)h(call,)f(since)h
(RMW)e(will)189 99 y(often)e(b)q(e)g(used)h(to)f(acquire/release)h(a)e(lo)q
(c)o(k)h(that)g(protects)h(m)o(ultiple)d(RMA)i(calls.)75 350
y Fq(4.6)59 b(Counting)21 b(T)-5 b(a)n(rget)20 b(Request)75
451 y Ft(This)12 b(section)h(sp)q(eci\014es)g(the)f(syn)o(tax)f(and)h(seman)o
(tics)g(for)f(using)h(target)f(requests)h(in)g(RMA)g(op)q(erations.)166
508 y(Eac)o(h)21 b(suc)o(h)h(request)g(is)g(a)f(coun)o(ter,)h(and)g(is)g
(asso)q(ciated)g(with)g(a)f(threshold.)39 b(When)22 b(the)g(re-)75
564 y(quest)17 b(ob)s(jects)f(are)h(created)g(b)o(y)g(the)g(call)i(to)d
Fm(MPI)p 966 564 14 2 v 16 w(RMA)p 1081 564 V 17 w(INIT)g Ft(or)g
Fm(MPI)p 1342 564 V 16 w(RMA)p 1457 564 V 17 w(MALLOC)p Ft(,)g(then)i(eac)o
(h)75 621 y(coun)o(ter)g(is)g(initialized)j(to)d(zero)f(and)i(eac)o(h)f
(threshold)g(to)f(one.)28 b(The)19 b(requests)e(are)h(p)q(ersisten)o(t,)h
(and)75 677 y(initially)g(inactiv)o(e.)25 b(A)16 b(coun)o(ter)g(is)h
(incremen)o(ted)h(b)o(y)e(the)h(incremen)o(t)g(argumen)o(t)f(of)g(the)g(RMA)h
(op)q(er-)75 734 y(ation)g(that)e(references)j(it.)24 b(The)17
b(threshold)g(is)g(established)i(and)d(the)h(asso)q(ciated)g(request)f(activ)
m(ated)75 790 y(b)o(y)d Fm(MPI)p 221 790 V 16 w(SET)p 320 790
V 17 w(COUNTER)p 549 790 V 17 w(THRESHOLD)h Ft(or)f Fm(MPI)p
983 790 V 16 w(ST)l(ART)h Ft(at)f(the)g(target.)18 b(The)13
b(request)g(completes)75 847 y(when)18 b(the)g(coun)o(ter)f(reac)o(hes)h(the)
f(threshold.)28 b(When)18 b(the)g(program)e(\014nds)i(out)f(that)g(the)h
(request)f(is)75 903 y(complete)d(through)e(one)h(of)f(the)h(normal)g(MPI)g
(w)o(ait)f(or)h(test)f(calls,)i(the)f(threshold)h(is)f(subtracted)g(from)75
959 y(the)d(coun)o(ter.)18 b(T)l(o)10 b(reactiv)m(ate)h(the)f(request)g(it)g
(is)h(necessary)f(to)g(call)h Fm(MPI)p 1310 959 V 16 w(SET)p
1409 959 V 17 w(COUNTER)p 1638 959 V 17 w(THRESHOLD)75 1016
y Ft(to)j(reset)h(the)g(threshold)h(or)f(one)g(of)f(the)i Fm(MPI)p
871 1016 V 15 w(ST)l(ART)g Ft(calls)g(to)f(reuse)g(the)g(existing)h
(threshold)g(v)m(alue.)75 1167 y Fm(MPI)p 160 1167 V 16 w(SET)p
259 1167 V 17 w(COUNTER)p 488 1167 V 17 w(THRESHOLD)g(\(request,)h(count\))
117 1244 y Fl(IN)155 b Fm(request)452 b Fl(coun)o(ter)15 b(request)h
(\(handle\))117 1319 y(IN)155 b Fm(count)482 b Fl(n)o(um)o(b)q(er)13
b(of)h(units)g(\(non-negativ)o(e)f(in)o(teger\))75 1444 y Fp(int)23
b(MPI)p 245 1444 15 2 v 17 w(Set)p 334 1444 V 17 w(counter)p
519 1444 V 16 w(threshold\(MPI)p 847 1444 V 16 w(Request)g(request,)f(int)i
(count\))75 1530 y(MPI)p 150 1530 V 17 w(SET)p 239 1530 V 17
w(COUNTER)p 424 1530 V 16 w(THRESHOLD\(REQUEST,)d(COUNT,)i(IERROR\))170
1587 y(INTEGER)g(REQUEST,)g(COUNT,)g(IERROR)166 1673 y Ft(Set)15
b(the)g(threshold)h(asso)q(ciated)g(with)f Fm(request)i Ft(to)e
Fm(count)h Ft(and)g(activ)m(ate)f(the)g(request.)75 1824 y
Fm(MPI)p 160 1824 14 2 v 16 w(GET)p 264 1824 V 17 w(COUNTER)h(\(request,)g
(count\))117 1901 y Fl(IN)155 b Fm(request)452 b Fl(coun)o(ter)15
b(request)h(\(handle\))117 1976 y(OUT)108 b Fm(count)482 b
Fl(n)o(um)o(b)q(er)13 b(of)h(units)g(\(non)g(negativ)o(e)f(in)o(teger\))75
2101 y Fp(int)23 b(MPI)p 245 2101 15 2 v 17 w(Get)p 334 2101
V 17 w(counter\(MPI)p 615 2101 V 16 w(Request)g(request,)f(int)i(count\))75
2187 y(MPI)p 150 2187 V 17 w(GET)p 239 2187 V 17 w(COUNTER\(REQUEST,)d
(COUNT,)i(IERROR\))170 2244 y(INTEGER)g(REQUEST,)g(COUNT,)g(IERROR)166
2330 y Ft(Returns)16 b(the)f(curren)o(t)g(v)m(alue)h(from)f(the)g(coun)o(ter)
g(asso)q(ciated)h(with)f Fm(request)p Ft(.)189 2436 y Fi(A)n(dvic)n(e)j(to)h
(users.)58 b Ft(Note)18 b(that)g(coun)o(ter)g(seman)o(tics)g(are)g(carefully)
i(designed)f(to)f(a)o(v)o(oid)g(race)189 2493 y(conditions.)43
b(Since)24 b(coun)o(ters)e(are)h(only)g(incremen)o(ted)h(and)f(decremen)o
(ted)g(and)g(nev)o(er)g(set,)189 2549 y(incremen)o(ts)14 b(from)f(incoming)i
(puts)e(and)h(gets)f(are)h(nev)o(er)f(lost.)20 b(Also,)14 b(while)h(a)e
(request)h(is)g(activ)o(e)189 2606 y(the)j(asso)q(ciated)g(coun)o(ter)g(is)g
(monotonically)h(increasing.)26 b(The)18 b(only)f(thing)h(to)e(w)o(atc)o(h)g
(out)h(for)189 2662 y(is)e(that)g(a)g(coun)o(ter)g(ma)o(y)f(exceed)i(its)g
(threshold)g(v)m(alue.)21 b(\()p Fi(End)15 b(of)i(advic)n(e)f(to)g(users.)p
Ft(\))-32 46 y Fj(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 20 20
bop 75 -100 a Ft(20)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)166 49 y Fh(Alternativ)o(es)o(:)134 124 y Fl(1.)22
b(Mak)o(e)12 b(the)h(incremen)o(t)f(alw)o(a)o(ys)g(one.)18
b(This)12 b(cause)h(some)f(loss)g(of)g(functionalit)o(y:)k(it)c(is)g(con)o(v)
o(enien)o(t)h(for)f(the)189 174 y(user)k(to)e(attac)o(h)i(di\013eren)o(t)f(w)
o(eigh)o(ts)g(to)g(di\013eren)o(t)h(accesses,)h(to)e(indicate)g(ho)o(w)g(m)o
(uc)o(h)e(data)i(they)h(mo)o(v)o(ed)189 224 y(\(e.g.,)c(when)j(a)f(pro)q
(cess)h(w)o(aits)f(for)g(certain)g(n)o(um)o(b)q(er)f(of)h(items)f(to)g(b)q(e)
i(mo)o(v)o(ed)d(to)i(its)g(memory)m(,)d(and)i(eac)o(h)189 273
y(put)h(ma)o(y)e(mo)o(v)o(e)g(sev)o(eral)i(items\).)134 348
y(2.)22 b(Get)11 b(rid)f(of)h(remote)f(requests.)19 b(This)11
b(simpli\014es)f(all)f(functions,)i(but)h(require)f(additional)e(comm)o
(unication)189 398 y(for)k(pro)q(ducer/consumer)i(handshaking.)134
473 y(3.)22 b(Allo)o(w)17 b(additional)f(\(user-de\014ned?\))34
b(sync)o(hronization)19 b(op)q(erations)f(to)g(b)q(e)h(attac)o(hed)h(to)e
(RMA)g(calls.)189 522 y(E.g.,)12 b(conditional)h(put/get)h(seems)g(useful.)
134 597 y(4.)22 b(Use)11 b(new)h(coun)o(ter)f(ob)r(jects,)i(rather)e(than)g
(o)o(v)o(erloading)e(requests.)19 b(The)12 b(function)e Fk(MPI)p
1572 597 13 2 v 14 w(GET)p 1667 597 V 15 w(COUNTER)189 647
y Fl(will)i(ha)o(v)o(e)i(a)f(coun)o(ter)i(argumen)o(t,)e(rather)h(than)g(a)g
(request)h(argumen)o(t.)i(The)d(function)189 697 y Fk(MPI)p
266 697 V 14 w(SET)p 356 697 V 15 w(COUNTER)p 567 697 V 14
w(THRESHOLD)i Fl(has)g(an)g(input)g(argumen)o(t)e(that)i(is)g(a)g(coun)o
(ter,)g(and)g(an)g(output)189 747 y(argumen)o(t)d(that)i(is)f(a)g(request.)22
b(When)14 b(the)i(threshold)f(is)f(reac)o(hed,)i(then)f(the)g(coun)o(ter)g
(is)g(decremen)o(ted)189 796 y(b)o(y)i(the)i(threshold,)g(and)f(the)g
(request)h(is)f(mark)o(ed)f(completed.)29 b(The)19 b(only)e(functionalit)o(y)
f(lost)i(is)f(the)189 846 y(abilit)o(y)12 b(to)i(restart)h(a)e(coun)o(ter)i
(with)f(a)f(call)g(to)h Fk(MPI)p 1019 846 V 14 w(ST)m(ART)p
Fl(.)189 927 y Fh(pros:)22 b Fl(Av)o(oids)13 b(o)o(v)o(erloading)f(an)i
(existing)g(ob)r(ject.)k(Av)o(oids)c(the)g(error)h(of)e(passing)h(to)289
977 y Fk(MPI)p 366 977 V 14 w(SET)p 456 977 V 15 w(COUNTER)p
667 977 V 14 w(THRESHOLD)g Fl(a)g(regular)g(request.)189 1043
y Fh(cons:)22 b Fl(Ov)o(erloaded)14 b(requests)h(ma)o(y)d(b)q(ecome)h(more)f
(acceptable)j(if)d(MPI2)i(allo)o(ws)e(user-de\014ned)j(request)289
1093 y(t)o(yp)q(es.)75 1350 y Fq(4.7)59 b(F)n(ence)75 1452
y Ft(The)21 b(de\014nition)i(of)d(the)h(put)g(op)q(eration)g(implies)i(that)d
(the)h(comm)o(unication)g(ma)o(y)f(con)o(tin)o(ue)i(after)75
1508 y(the)f(call)h(completed.)38 b(A)21 b(mec)o(hanisms)g(is)h(needed)g(to)e
(c)o(hec)o(k)i(that)e(RMA)h(comm)o(unications)g(ha)o(v)o(e)75
1565 y(completed)f(at)d(the)i(target)e(pro)q(cess.)31 b(A)18
b(useful)i(construct)e(is)h(a)g(collectiv)o(e)h(call)g(that)e(ensures)h(that)
75 1621 y(all)h(RMA)f(calls)g(ha)o(v)o(e)g(completed)h(in)f(a)g(group.)30
b(This)19 b(will)i(allo)o(w)e(to)f(implemen)o(t)i(algorithms)f(that)75
1678 y(consists)c(of)f(successiv)o(e)i(phases,)f(where)g(a)g(new)g(phase)g
(starts)e(when)i(all)h(comm)o(unication)g(p)q(ertaining)75
1734 y(to)f(the)g(previous)h(phase)f(has)g(completed.)166 1790
y(The)g(MPI)h(collectiv)o(e)h(function)f Fm(MPI)p 824 1790
14 2 v 16 w(BARRIER\(comm)n(\))p Ft(,)c(when)k(called)h(with)e(a)g(comm)o
(unicator)75 1847 y Fm(comm)6 b Ft(used)13 b(for)f(RMA)g(comm)o(unication,)h
(has)f(the)g(additional)i(seman)o(tics)e(of)g(a)g(fence)g(with)h(resp)q(ect)g
(to)75 1903 y(put)i(and)g(get)g(calls)h(that)f(use)g(this)g(comm)o(unicator.)
20 b(All)c(the)f(put)h(and)f(get)g(calls)h(issued)g(on)f(the)g(com-)75
1960 y(m)o(unicator)d(b)q(efore)g(the)g(call)h(to)e Fm(MPI)p
713 1960 V 16 w(BARRIER)i Ft(will)h(complete)f(at)e(the)h(target)f(b)q(efore)
h Fm(MPI)p 1674 1960 V 16 w(BARRIER)75 2016 y Ft(completes.)166
2149 y Fh(Discussion:)48 b Fl(W)m(e)17 b(do)g(not)g(require)i(that)e(the)h
(calls)f(complete)g(also)g(at)g(the)h(origin)e({)h(the)h(caller)g(can)75
2199 y(ensure)d(this)f(b)o(y)g(using)g(a)f(W)m(aitall)f(call.)17
b(This)d(c)o(hoice)g(simpli\014es)e(implemen)o(tation.)166
2255 y(A)i(non)o(blo)q(c)o(king)e(barrier)j Fk(MPI)p 655 2255
13 2 v 14 w(IBARRIER\(com)n(m)m(,)c(request\))k Fl(will)e(help.)166
2394 y Ft(It)g(is)h(also)f(useful)h(to)e(ha)o(v)o(e)h(a)g(\\fence")g(mec)o
(hanism)h(that)e(guaran)o(tees)h(completion)h(of)f(puts)g(issued)75
2451 y(b)o(y)g(one)g(pro)q(cess.)19 b(This)13 b(is)g(useful)h(is)f(a)g(pro)q
(cess)g(has)f(to)g(mo)q(dify)i(atomically)f(a)g(structure)f(stored)g(in)i
(the)75 2507 y(memory)g(of)h(other)f(pro)q(cess\(es\).)19 b(The)d(op)q
(eration)f(ma)o(y)f(consists)h(of)f(a)g(lo)q(c)o(k,)h(follo)o(w)o(ed)h(b)o(y)
e(a)h(sequence)75 2564 y(of)i(gets)g(and)h(puts,)f(follo)o(w)o(ed)h(b)o(y)f
(an)h(unlo)q(c)o(k)g(op)q(eration.)27 b(One)18 b(has)g(to)e(ensure)i(that)f
(all)h(up)q(dates)g(of)75 2620 y(remote)d(data)f(ha)o(v)o(e)h(o)q(ccurred)h
(b)q(efore)f(the)h(unlo)q(c)o(k)g(op)q(eration)f(is)h(issued.)1967
46 y Fj(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 21 21
bop 75 -100 a Fn(4.8.)34 b(EXTENSIONS)1351 b Ft(21)75 49 y
Fm(MPI)p 160 49 14 2 v 16 w(FENCE\(comm)m(\))117 126 y Fl(IN)155
b Fm(comm)466 b Fl(comm)o(unicator)11 b(used)k(in)f(RMA)f(\(handle\))75
251 y Fp(int)23 b(MPI)p 245 251 15 2 v 17 w(Fence\(MPI)p 478
251 V 16 w(Comm)g(comm\))75 337 y(MPI)p 150 337 V 17 w(FENCE\()g(COMM,)g
(IERROR\))170 394 y(INTEGER)g(COMM,)h(IERROR)166 480 y Ft(The)12
b(call)h(returns)f(when)h(all)g(previous)g(RMA)f(calls)h(issued)g(b)o(y)f
(the)h(caller)g(on)f(this)g(comm)o(unicator)75 537 y(ha)o(v)o(e)j(completed)h
(at)f(their)g(targets.)166 676 y Fh(Discussion:)34 b Fl(W)m(e)13
b(can)h(extend)h Fk(MPI)p 793 676 13 2 v 15 w(FENCE)e Fl(to)g(\\fence")i
(also)e(message-passing)g(calls.)75 902 y Fq(4.8)59 b(Extensions)75
1005 y Fg(4.8.1)49 b(Global)18 b(Datat)o(yp)q(es)75 1091 y
Ft(The)12 b(execution)g(of)f(a)g(put/get)g(call)i(usually)g(requires)f(the)f
(transfer)g(of)g(the)h(target)e(datat)o(yp)q(e)h(argumen)o(t)75
1147 y(to)j(the)i(target)e(pro)q(cess.)20 b(When)15 b(the)g(same)g(target)f
(datat)o(yp)q(e)h(is)g(rep)q(eatedly)h(used,)g(the)f(problem)h(can)75
1204 y(b)q(e)g(alleviated)h(b)o(y)e(making)g(this)h(datat)o(yp)q(e)e
(\\globally)j(kno)o(wn".)75 1355 y Fm(MPI)p 160 1355 14 2 v
16 w(TYPE)p 293 1355 V 17 w(GLOBAL\(count,)f(t)o(yp)q(es,)g(comm)m(\))117
1432 y Fl(IN)155 b Fm(count)482 b Fl(n)o(um)o(b)q(er)13 b(of)h(t)o(yp)q(es)g
(\(in)o(teger\))117 1507 y(IN)155 b Fm(t)o(yp)q(es)490 b Fl(arra)o(y)14
b(of)f Fk(count)i Fl(t)o(yp)q(es)g(\(arra)o(y)f(of)f(handles\))117
1582 y(IN)155 b Fm(comm)466 b Fl(RMA)14 b(comm)o(unicator)d(\(handle\))75
1706 y Fp(int)23 b(MPI)p 245 1706 15 2 v 17 w(Type)p 358 1706
V 17 w(bcast\(int)f(count,)i(MPI)p 853 1706 V 16 w(Datatype)f(*type,)g(MPI)p
1323 1706 V 17 w(comm)g(comm\))75 1793 y(MPI)p 150 1793 V 17
w(TYPE)p 263 1793 V 16 w(BCAST\()g(COUNT,)g(TYPES\(*\),)g(COMM,)g(IERROR\))
170 1849 y(INTEGER)g(COUNT,)g(TYPES,)g(COMM,)h(IERROR)166 1936
y Ft(This)16 b(function)h(allo)o(w)g(pro)q(cesses)f(to)f(\\publish")j(the)e
(datat)o(yp)q(es)f(in)i(the)f(arra)o(y)f Fm(t)o(yp)q(es)i Ft(and)f(mak)o(e)75
1992 y(them)i(globally)i(kno)o(wn)e(to)g(all)i(pro)q(cesses)e(in)i(the)e
(group)g(of)g Fm(comm)n Ft(.)26 b(Eac)o(h)18 b(datat)o(yp)q(e)g(in)i(the)e
(arra)o(y)75 2049 y Fm(t)o(yp)q(es)e Ft(should)g(b)q(e)f(a)f(committed)h
(datat)o(yp)q(e,)f(and)g Fm(t)o(yp)q(es[i])i Ft(should)g(ha)o(v)o(e)e(the)h
(same)f(t)o(yp)q(e)h(signature)g(at)75 2105 y(all)j(pro)q(cesses,)f(for)g
(eac)o(h)g Fp(0)e Ff(\024)h Fp(i)f Fe(<)h Fp(count)g Ft(\()p
Fp(0)f Fe(<)h Fp(i)f Ff(\024)h Fp(count)p Ft(,)h(F)l(ortran\).)23
b(The)17 b(datat)o(yp)q(es)g(need)g(not)75 2162 y(ha)o(v)o(e)e(the)g(same)g
(displacemen)o(ts.)166 2218 y(If)g(a)f(pro)q(cess)g(subsequen)o(tly)i(uses)e
(one)h(of)f(the)g(datat)o(yp)q(es)g(it)h(published)i(in)e(the)f(arra)o(y)f
Fm(t)o(yp)q(es)j Ft(as)e(a)75 2275 y(target)h(datat)o(yp)q(e)h(for)g(an)g
(RMA)g(op)q(eration)h(with)g(comm)o(unicator)f Fm(comm)m Ft(,)d(then)k(the)f
(corresp)q(onding)75 2331 y(datat)o(yp)q(e)f(pro)o(vided)h(b)o(y)f(the)g
(target)f(pro)q(cess)h(will)i(b)q(e)f(substituted.)166 2464
y Fh(Alternativ)o(es)o(:)134 2538 y Fl(1.)22 b(Delete)12 b(this)g(function.)
17 b(It)12 b(is)f(not)h(needed)h(when)f(put/get)g(is)g(implem)o(en)o(ted)e
(via)h(shared)h(memory)e(access,)189 2588 y(or)i(lo)o(w-lev)o(el)g(hardw)o
(are/micro)q(co)q(de.)17 b(If)12 b(a)h(high-lev)o(el)e(implemen)o(tation)e
(is)k(used,)g(via)f(an)g(async)o(hronous)189 2638 y(serv)o(er)k(at)f(the)h
(target)g(pro)q(cess,)h(then)f(the)g(o)o(v)o(erhead)f(of)g(shipping)f(a)h
(datat)o(yp)q(e)h(descriptor)g(is)f(lik)o(ely)f(to)189 2688
y(b)q(e)g(relativ)o(ely)f(small.)-32 46 y Fj(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 22 22
bop 75 -100 a Ft(22)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)134 49 y Fl(2.)22 b(Use)15 b(another)f(de\014nition.)19
b(The)c(datat)o(yp)q(es)f(could)g(b)q(e)h(de\014ned)h(only)d(b)o(y)h(one)g
(pro)q(cess,)i(then)f(broadcast;)189 99 y(the)g(publication)e(of)h(a)g(datat)
o(yp)q(e)g(could)h(b)q(e)g(a)f(one-sided)h(op)q(eration,)f(whereb)o(y)h(a)f
(pro)q(cess)i(can)f(register)189 149 y(a)f(datat)o(yp)q(e)h(at)f(another)h
(pro)q(cess,)h(via)e(an)g(RPC-lik)o(e)g(mec)o(hanism.)k(W)m(e)c(could)g(mak)o
(e)f(these)j(datat)o(yp)q(es)189 199 y(global,)11 b(rather)k(than)f(asso)q
(ciating)f(them)h(with)f(a)h(sp)q(eci\014c)h(comm)o(unicator;)c(etc.)75
428 y Fg(4.8.2)49 b(Windo)o(w)17 b(Lo)q(ck)75 608 y Fm(MPI)p
160 608 14 2 v 16 w(WINDO)o(W)p 372 608 V 16 w(LOCK\(com)o(m)m(\))117
686 y Fl(IN)155 b Fm(comm)466 b Fl(comm)o(unicator)11 b(used)k(in)f(RMA)f
(\(handle\))75 810 y Fp(int)23 b(MPI)p 245 810 15 2 v 17 w(Window)p
406 810 V 17 w(lock\(MPI)p 615 810 V 16 w(Comm)g(comm\))75
896 y(MPI)p 150 896 V 17 w(WINDOW)p 311 896 V 16 w(LOCK\()g(COMM,)g(IERROR\))
170 953 y(INTEGER)g(COMM,)h(IERROR)166 1039 y Ft(The)15 b(function)g(lo)q(c)o
(ks)g(the)f(lo)q(cal)i(RMA)e(windo)o(w)h(asso)q(ciated)g(with)f
Fm(comm)9 b Ft(and)14 b(prev)o(en)o(t)h(accesses)75 1096 y(b)o(y)k(remote)f
(pro)q(cesses)i(to)e(that)g(windo)o(w.)32 b(This)20 b(is)f(a)g(lo)q(cal)h
(call.)32 b(Eac)o(h)19 b(pro)q(cess)h(can)f(lo)q(c)o(k/unlo)q(c)o(k)75
1152 y(its)d(windo)o(ws)g(indep)q(enden)o(t)i(of)d(other)g(pro)q(cesses.)22
b(This)16 b(call)h(pro)o(vides)f(an)g(e\016cien)o(t)g(mec)o(hanisms)h(for)75
1209 y(m)o(utual)e(exclusion)i(b)q(et)o(w)o(een)f(lo)q(cal)g(pro)q(cess)g
(and)f(other)g(pro)q(cesses)g(that)g(access)g(the)g(windo)o(w.)166
1348 y Fh(Discussion:)57 b Fl(This)19 b(prop)q(osal)g(w)o(as)h(made)e(b)o(y)i
(Saga)o(w)o(a-san)e(from)g(Hitac)o(hi.)34 b(Need)21 b(to)f(discuss)g(the)75
1404 y(usefulness)f(of)f(this)g(construct)i(and)d(the)i(exact)g(outcome)e(of)
g(a)h(remote)g(access)h(to)f(a)g(lo)q(c)o(k)o(ed)g(windo)o(w.)30
b(The)75 1461 y(prop)q(osal)13 b(of)f(Saga)o(w)o(a)g(is)h(that)g(an)g(up)q
(date)g(to)g(the)h(windo)o(w)e(is)h(a)g(no)q(op,)f(and)h(a)g(call)f(that)h
(is)g(supp)q(osed)h(to)f(access)75 1517 y(the)f(windo)o(w)f(and)g(return)h(a)
f(v)n(alue)g(fails.)16 b(The)c(problem)e(is)h(that)h(the)g(remote)f(pro)q
(cess)i(has)e(no)g(information)e(that)75 1574 y(its)i(up)q(date)g(failed.)16
b(Another)c(option)e(is)h(that)g(a)g(remote)f(access)j(to)e(a)f(lo)q(c)o(k)o
(ed)h(windo)o(w)f(is)h(alw)o(a)o(ys)f(erroneous,)i(and)75 1630
y(returns)17 b(a)e(sp)q(ecial)g(error)i(co)q(de)f Fk(MPI)p
670 1630 13 2 v 14 w(WINDO)o(W)p 863 1630 V 15 w(LOCKED)p Fl(.)e(One)i(can)f
(rede\014ne)i(the)f(standard)g(error)g(handler)75 1687 y(to)e(do)f(something)
g(reasonable)h(when)h(this)f(error)g(o)q(ccurs,)h(rather)g(than)f(ab)q
(orting)f(the)i(calling)d(pro)q(cess.)75 1912 y Fq(4.9)59 b(Semantics)18
b(of)i(Put)g(and)f(Get)h(Op)r(erations)75 2016 y Fg(4.9.1)49
b(Order)75 2101 y Ft(When)13 b(a)g(put)g(or)g(get)f(completes)i(then)f(the)h
(op)q(eration)f(has)g(completed)h(at)e(the)h(origin,)h(and)f(the)g(origin)75
2158 y(bu\013er)i(can)h(b)q(e)g(accessed.)21 b(In)16 b(the)f(case)g(of)g(a)g
(put,)g(the)h(data)f(has)g(b)q(een)h(copied)h(out;)d(in)j(the)e(case)g(of)g
(a)75 2214 y(get,)f(the)i(data)e(has)h(b)q(een)i(copied)f(in.)166
2271 y(When)j(a)f(put)g(or)g(get)g(up)q(dates)h(the)g(target)e(request,)i
(then)g(the)f(op)q(eration)h(has)f(completed)i(at)75 2327 y(the)d(target,)f
(and)h(the)g(target)f(bu\013er)h(can)g(b)q(e)h(accessed.)26
b(In)17 b(the)h(case)f(of)f(a)h(get,)f(the)i(data)e(has)h(b)q(een)75
2384 y(copied)f(out;)f(in)h(the)f(case)g(of)g(a)g(put,)g(the)g(data)g(has)g
(b)q(een)h(copied)h(in.)166 2440 y(Calling)k Fm(MPI)p 412 2440
14 2 v 16 w(BARRIER)h Ft(with)e(a)g(comm)o(unicator)g(returned)h(b)o(y)f(one)
g(of)g(the)g Fm(MPI)p 1658 2440 V 16 w(RMA)p 1773 2440 V 17
w(INIT)75 2497 y Ft(calls)j(has)f(the)g(additional)h(seman)o(tics)f(of)g(a)f
(fence)i(with)f(resp)q(ect)h(to)e(puts)h(and)g(gets.)40 b(All)23
b(RMA)75 2553 y(comm)o(unications)14 b(issued)g(on)e(the)h(comm)o(unicator)g
(b)q(efore)g(the)g(call)h(to)f Fm(MPI)p 1401 2553 V 15 w(BARRIER)i
Ft(will)f(complete)75 2609 y(at)e(the)h(target)e(b)q(efore)i
Fm(MPI)p 554 2609 V 16 w(BARRIER)h Ft(completes.)20 b(Similarly)l(,)15
b(a)d(call)i(to)e Fm(MPI)p 1449 2609 V 16 w(FENCE)h Ft(has)f(the)h(e\013ect)
1967 46 y Fj(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959
554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780
y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 23 23
bop 75 -100 a Fn(4.9.)34 b(SEMANTICS)16 b(OF)f(PUT)g(AND)g(GET)f(OPERA)l
(TIONS)632 b Ft(23)75 49 y(that)14 b(all)i(RMA)f(comm)o(unications)h(issued)g
(b)o(y)e(the)h(caller)h(b)q(efore)g(the)f(call)h(to)e(fence)h(will)i
(complete)f(at)75 106 y(the)f(target)f(b)q(efore)i(the)f(fence)h(call)g
(returns.)166 162 y(No)g(other)g(order)g(requiremen)o(ts)h(are)f(imp)q(osed)h
(on)g(RMA)f(op)q(erations.)24 b(Tw)o(o)15 b(RMA)i(op)q(erations)75
219 y(issued)d(consecutiv)o(ely)h(b)o(y)e(the)g(same)g(pro)q(cess)g(for)g
(the)g(same)f(target)g(can)i(execute)f(in)h(arbitrary)f(order,)75
275 y(unless)19 b(the)f(user)h(ensures)f(that)g(the)g(\014rst)f(op)q(eration)
i(has)f(completed)h(b)q(efore)f(it)g(issues)h(the)f(second)75
332 y(one.)h(Similarly)l(,)d(there)e(is)g(no)f(guaran)o(teed)g(order)h(of)f
(execution)h(b)q(et)o(w)o(een)g(message)f(passing)h(calls)h(and)75
388 y(RMA)k(calls,)h(ev)o(en)f(when)g(issued)g(b)o(y)g(the)f(same)h(pro)q
(cess)f(with)h(the)g(same)f(comm)o(unicator)g(and)h(the)75
444 y(same)c(destination.)189 551 y Fi(R)n(ationale.)40 b Ft(One)16
b(should)g(think)g(of)f(an)g(RMA)g(call)i(as)d(of)h(a)g(pair)h(of)f
(\(standard\))f(send/receiv)o(e)189 607 y(calls)22 b(that)e(are)h(p)q(osted)h
(and)f(matc)o(hed)g(sim)o(ultaneously)l(.)40 b(A)21 b(blo)q(c)o(king)i
(\(resp)e(non)o(blo)q(c)o(king\))189 664 y(put)16 b(is)i(constructed)e(as)h
(consisting)g(of)f(a)h(blo)q(c)o(king)h(\(resp)e(non)o(blo)q(c)o(king\))i
(send)f(matc)o(hed)g(b)o(y)f(a)189 720 y Fi(nonblo)n(cking)c
Ft(receiv)o(e.)20 b(A)15 b(blo)q(c)o(king)h(\(resp)e(non)o(blo)q(c)o(king\))h
(get)f(is)h(constructed)f(as)g(consisting)h(of)189 777 y(a)e(blo)q(c)o(king)i
(\(resp)f(non)o(blo)q(c)o(king\))h(receiv)o(e)g(matc)o(hed)e(b)o(y)h(a)g
Fi(nonblo)n(cking)d Ft(send.)20 b(An)15 b(accum)o(ulate)189
833 y(call)h(b)q(eha)o(v)o(es)f(as)g(a)g(put,)g(and)g(a)g(RMW)g(call)i(b)q
(eha)o(v)o(es)e(as)g(a)g(pair)g(of)g(send-receiv)o(e)i(calls.)189
908 y(Consider)d(the)h(case)f(of)g(a)g(blo)q(c)o(king)h(put,)f(immediately)i
(follo)o(w)o(ed)f(b)o(y)f(another)g(blo)q(c)o(king)h(put)g(to)189
965 y(the)j(same)h(destination.)31 b(Eac)o(h)18 b(\\send")h(matc)o(hes)f(its)
h(o)o(wn)f(\\receiv)o(e",)h(but)g(the)g(\014rst)f(\\send")189
1021 y(\(put\))10 b(ma)o(y)g(return)h(b)q(efore)g(data)g(has)f(b)q(een)j
(copied)f(in)f(the)g(remote)g(memory)l(.)18 b(Th)o(us,)11 b(the)g(up)q(date)
189 1077 y(of)k(the)h(target)f(memory)h(b)q(e)g(the)h(t)o(w)o(o)d(put)j
(calls)g(ma)o(y)e(o)o(v)o(erlap.)22 b(Consider)17 b(a)f(put,)g(follo)o(w)o
(ed)g(b)o(y)189 1134 y(a)h(get,)g(with)g(the)g(same)g(comm)o(unicator)g(and)h
(same)f(target)f(bu\013er.)26 b(The)17 b(put)h(ma)o(y)e(complete)189
1190 y(and)f(the)f(get)h(ma)o(y)f(start)f(b)q(efore)i(data)f(w)o(as)g
(written)h(in)h(the)f(target)e(bu\013er;)i(the)f(t)o(w)o(o)g(calls)i(ma)o(y)
189 1247 y(o)o(v)o(erlap,)e(and)h(the)f(get)g(need)i(not)e(return)h(the)f
(data)g(written)h(b)o(y)f(the)h(put.)20 b(\()p Fi(End)15 b(of)h(r)n
(ationale.)p Ft(\))75 1369 y Fg(4.9.2)49 b(A)o(tomicit)o(y)75
1454 y Ft(W)l(e)15 b(prop)q(ose)h(the)f(follo)o(wing)h(atomicit)o(y)f
(requiremen)o(ts)h(for)e(RMA)h(op)q(erations:)131 1548 y(1.)22
b(The)14 b(execution)h(of)e(a)h(Read)p 674 1548 14 2 v 17 w(Mo)q(dify)p
832 1548 V 17 w(W)l(rite)g(op)q(eration)g(at)f(the)h(target)f(pro)q(cess)h
(is)h(atomic)f(with)189 1605 y(resp)q(ect)j(to)f(other)g(Read)p
627 1605 V 17 w(Mo)q(dify)p 785 1605 V 17 w(W)l(rite)h(op)q(erations.)25
b(I.e.,)16 b(the)h(outcome)f(is)i(as)e(if)h(the)g(RMW)189 1661
y(op)q(erations)e(w)o(ere)g(serialized.)22 b(This)16 b(allo)o(ws,)f(for)f
(example,)i(to)f(use)g(an)g Fk(MPI)p 1516 1661 13 2 v 15 w(LOR)g
Ft(op)q(eration)g(on)189 1718 y(an)g(arra)o(y)f(of)g(v)m(ariables)j(as)e(one)
g(atomic)g(sync)o(hronization)h(op)q(eration.)131 1811 y(2.)22
b(The)13 b(execution)g(of)g(an)f(accum)o(ulate)h(op)q(eration)g(at)f(the)h
(target)f(pro)q(cess)h(is)g(atomic)f(with)h(resp)q(ect)189
1868 y(to)k(other)g(accum)o(ulate)h(op)q(erations)g(for)f(eac)o(h)h(up)q
(dated)h(elemen)o(t.)28 b(I.e.,)18 b(the)g(outcome)f(is)h(as)f(if)189
1924 y(all)h(accum)o(ulation)h(op)q(erations)f(o)q(ccurred)g(in)h(some)e
(serial)i(order)e(for)g(eac)o(h)h(elemen)o(t,)h(but)e(not)189
1981 y(necessarily)f(the)f(same)g(order)f(for)h(eac)o(h)g(elemen)o(t.)20
b(This)c(is)f(the)h(minimal)g(requiremen)o(t)g(needed)189 2037
y(for)11 b(concurren)o(t)g(accum)o(ulates)h(to)f(b)q(e)h(useful.)20
b(The)12 b(outcome)f(is)h(unde\014ned)h(is)f(the)g(user)g(accum)o(u-)189
2094 y(lates)17 b(in)o(to)g(v)m(ariables)h(that)f(partially)h(o)o(v)o(erlap;)
g(e.g.,)e(accum)o(ulating)i(in)o(to)f(complex)h(n)o(um)o(b)q(ers,)189
2150 y(of)12 b(t)o(yp)q(e)i Fk(MPI)p 416 2150 V 14 w(COMPLEX)p
Ft(,)e(and)h(concurren)o(tly)h(accum)o(ulating)g(in)o(to)f(the)h(real)f(or)g
(imaginary)h(part)189 2207 y(of)g(these)i(n)o(um)o(b)q(ers,)f(of)g(t)o(yp)q
(e)g Fk(MPI)p 784 2207 V 14 w(REAL)p Ft(.)131 2300 y(3.)22
b(The)15 b(outcome)g(of)f(concurren)o(t)i(puts)f(and)g(gets)g(that)f(access)h
(the)g(same)g(memory)g(is)g(unde\014ned.)189 2357 y(If)g(the)f(user)h(w)o(an)
o(ts)f(more)g(stringen)o(t)g(atomicit)o(y)h(requiremen)o(ts)g(on)g(put/get,)f
(he/she)h(will)h(need)189 2413 y(to)e(implemen)o(t)j(them)e(as)g(sw)o(ap)f
(RMA)i(calls,)g(or)e Fk(MPI)p 1123 2413 V 15 w(LAST)h Ft(accum)o(ulate)h
(calls.)166 2590 y Fh(Alternativ)o(es)o(:)35 b Fl(W)m(e)13
b(ma)o(y)f(w)o(an)o(t)i(to)f(w)o(eak)o(en)i(the)f(atomicit)o(y)e(requiremen)o
(ts)i(so)g(that)g(they)g(are)h(guaran-)75 2646 y(teed)c(only)f(for)g(RMA)g
(op)q(erations)h(with)f(the)h(same)e(comm)o(unicators.)14 b(If)c(the)h(the)g
(same)f(memory)e(is)i(concurren)o(tly)75 2703 y(accessed)15
b(using)e(t)o(w)o(o)g(distinct,)g(o)o(v)o(erlapping)f(windo)o(ws,)g(then)h
(the)h(outcome)e(is)h(unde\014ned.)19 b(This)13 b(will)f(allo)o(w)f(to)-32
46 y Fj(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 24 24
bop 75 -100 a Ft(24)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fl(use)f(a)f(lo)q(c)o(k)g(p)q(er)h(windo)o(w,)f(rather)h
(than)f(a)g(global)f(lo)q(c)o(k,)g(allo)o(wing)f(for)i(more)g(concurrency)m
(.)19 b(This)14 b(c)o(hoice)f(is)h(alos)75 106 y(more)h(consisten)o(t)j(with)
d(the)i(MPI)g(seman)o(tics)e(that)i(requires)g(that)f(comm)o(unication)d(in)j
(one)g(comm)o(unication)75 162 y(domain)c(do)q(es)i(not)g(in)o(terfere)h
(with)f(comm)o(uni)o(cation)d(in)i(another)i(domain.)75 367
y Fg(4.9.3)49 b(Progress)75 452 y Ft(Once)18 b(a)f(RMA)g(op)q(eration)h(is)g
(p)q(osted,)f(it)h(should)g(complete,)g(irresp)q(ectiv)o(e)h(of)d(other)h(op)
q(erations)h(o)q(c-)75 509 y(curring)e(in)g(the)f(system.)189
615 y Fi(R)n(ationale.)39 b Ft(This)15 b(is)g(consisten)o(t)g(with)g(the)g
(view)g(that)f(a)g(RMA)h(op)q(eration)f(b)q(eha)o(v)o(es)h(as)f(a)h(pair)189
672 y(of)f(sim)o(ultaneously)j(p)q(osted)e(and)h(matc)o(hed)f(sned/receiv)o
(e)h(calls.)21 b(\()p Fi(End)16 b(of)g(r)n(ationale.)p Ft(\))75
815 y Fq(4.10)60 b(Communication)16 b(handlers)75 916 y Ft(In)e(man)o(y)e
(situations)h(it)h(is)f(desirable)h(to)f(in)o(v)o(ok)o(e,)g(up)q(on)g
(completion)h(of)f(a)g(comm)o(unication,)g(a)g(handler)75 973
y(routine.)19 b(The)13 b(w)o(ait&call)h(function)f(in)o(tro)q(duced)g(b)q
(elo)o(w)h(can)e(b)q(e)h(used)g(to)f(implemen)o(t)i(the)e(generalized)75
1029 y(requests)h(in)o(tro)q(duced)h(in)g(the)g(External)f(In)o(terface)g(c)o
(hapter;)g(it)h(can)f(also)g(b)q(e)h(used)g(to)e(implemen)o(t)j(new)75
1086 y(non)o(blo)q(c)o(king)i(calls,)e(suc)o(h)h(as)f(non)o(blo)q(c)o(king)h
(comm)o(unication)g(or)f(task)f(spa)o(wning.)75 1237 y Fm(MPI)p
160 1237 14 2 v 16 w(POST)p 294 1237 V 17 w(HANDLER\(request,)j(extra)p
797 1237 V 16 w(state,)f(handler\))117 1314 y Fl(IN)155 b Fm(request)452
b Fl(comm)o(unication)11 b(request)k(\(handle\))117 1389 y(IN)155
b Fm(extra)p 416 1389 V 17 w(state)384 b Fl(extra)15 b(state)f(for)g(handler)
117 1464 y(IN)155 b Fm(handler)449 b Fl(receiv)o(e)15 b(handler)f
(\(function\))75 1588 y Fp(int)23 b(MPI)p 245 1588 15 2 v 17
w(Post)p 358 1588 V 17 w(handler\(MPI)p 639 1588 V 16 w(Request)f(request,)h
(void)h(*extra)p 1324 1588 V 16 w(state,)393 1645 y(MPI)p 468
1645 V 17 w(Request)p 653 1645 V 16 w(handler)f(handler\))75
1731 y(MPI)p 150 1731 V 17 w(POST)p 263 1731 V 16 w(HANDLER\(REQUEST,)f
(EXTRA)p 805 1731 V 17 w(STATE,)h(HANDLER,)f(IERROR\))170 1788
y(<type>)h(BUF\(*\))170 1844 y(INTEGER)g(REQUEST,)g(EXTRA)p
699 1844 V 17 w(STATE,)g(IERROR)170 1901 y(PROCEDURE)g(HANDLER)166
1987 y Ft(A)o(ttac)o(hes)h(the)g(handler)i Fm(handler)f Ft(to)f(the)h
(request)g Fm(request)p Ft(.)49 b(When)25 b(that)f(request)h(is)g(com-)75
2044 y(pleted,)i(MPI)d(in)o(v)o(ok)o(es)g(the)g(handler)h(routine.)47
b(If)24 b(the)g(request)g(completed)h(b)q(efore)f(the)g(call)i(to)75
2100 y Fm(MPI)p 160 2100 14 2 v 16 w(POST)p 294 2100 V 17 w(HANDLER)16
b Ft(then)f(the)g(handler)i(is)e(in)o(v)o(ok)o(ed)h(as)f(so)q(on)g(as)g(p)q
(osted.)166 2157 y(The)g(handler)i(is)e(a)g(routine)h(of)f(t)o(yp)q(e)75
2263 y Fp(typedef)23 b(int)g(MPI_Request_handler\()e(void)j(*extra_state,)767
2319 y(MPI_Request)e(*request\))166 2426 y Ft(in)16 b(C,)f(and)g(of)g(t)o(yp)
q(e)75 2532 y Fp(PROCEDURE)46 b(MPI_REQUEST_HANDLER\()22 b(EXTRA_STATE,)g
(REQUEST,)h(IERR\))99 2588 y(INTEGER)70 b(EXTRA_STATE,)23 b(REQUEST,)f(IERR)
1967 46 y Fj(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959
554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780
y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 25 25
bop 75 -100 a Fn(4.10.)34 b(COMMUNICA)l(TION)16 b(HANDLERS)939
b Ft(25)166 49 y(in)17 b(F)l(ortran.)k(When)c(in)o(v)o(ok)o(ed)f(b)o(y)g
(MPI,)f(the)i(receiv)o(e)g(handler)g(is)f(passed)h(the)f Fm(extra)p
1650 49 14 2 v 16 w(state)h Ft(argu-)75 106 y(men)o(t)g(that)g(w)o(as)f
(supplied)k(b)o(y)d Fm(MPI)p 714 106 V 16 w(POST)p 848 106
V 17 w(HANDLER)p Ft(,)h(and)f(a)g(handle)i(to)e(the)g(request)g(that)g(com-)
75 162 y(pleted.)166 219 y(An)d(MPI)g(exception)h(o)q(ccurs)f(if)h(the)f
(handler)h(returns)f(with)g(a)g(v)m(alue)h(other)f(than)f Fk(MPI)p
1674 219 13 2 v 15 w(SUCCESS)p Ft(.)166 275 y(The)d(request)g(ob)s(ject)g
(can)g(still)i(b)q(e)f(accessed)f(b)o(y)h(the)f(user,)h(after)e(the)h(call)i
(to)d Fm(MPI)p 1559 275 14 2 v 16 w(POST)p 1693 275 V 17 w(HANDLER)75
332 y Ft(completed.)26 b(The)17 b(user)g(can)g(cancel)h(the)f(request,)g(can)
g(test)f(it,)h(or)g(w)o(ait)f(on)h(it.)25 b(It)17 b(should)h(not)e(p)q(ost)75
388 y(another)d(handler)h(on)g(the)f(request.)20 b(If)13 b(the)h(user)f
(accesses)h(a)f(request)h(for)e(whic)o(h)j(a)e(handler)h(is)g(p)q(osted,)75
444 y(then)k(it)f(should)i(\014rst)e(lo)q(c)o(k)h(out)f(the)g(handler,)i
(using)f(the)g Fm(MPI)p 1198 444 V 16 w(LOCK)p 1333 444 V 16
w(HANDLER)g Ft(b)q(elo)o(w,)g(in)g(order)75 501 y(to)d(a)o(v)o(oid)g
(con\015icting)h(up)q(dates)g(to)e(the)i(request)f(ob)s(ject.)166
557 y(If)h(the)h(request)f(is)h(nonp)q(ersisten)o(t,)f(then)h(the)f(request)g
(is)h(not)f(automatically)h(deleted)g(b)o(y)f(MPI;)75 614 y(nor)11
b(is)g(a)g(p)q(ersisten)o(t)h(request)f(mark)o(ed)g(complete)g(b)o(y)g(MPI.)g
(The)h(handler)g(should)g(explicitly)i(delete)e(the)75 670
y(request)g(b)o(y)g(a)f(call)i(to)e Fm(MPI)p 541 670 V 16 w(REQUEST)p
760 670 V 18 w(FREE)p Ft(,)h(or)f(complete)i(the)f(op)q(eration)g(b)o(y)g(a)f
(call)i(to)f Fm(MPI)p 1737 670 V 15 w(W)l(AIT)p Ft(,)75 727
y Fm(MPI)p 160 727 V 16 w(TEST)k Ft(or)g(deriv)o(ed)h(functions.)24
b(The)16 b(handler)h(can)g(use)f(one)h(of)e(the)i(later)f(functions)h(to)e
(inquire)75 783 y(ab)q(out)g(the)g(status)g(of)f(the)i(completed)g(op)q
(eration.)166 840 y(If)i(the)g(request)g(is)g(p)q(ersisten)o(t,)h(then)f(the)
g(handler)g(is)h(\\p)q(ersisten)o(t",)f(to)q(o.)27 b(I.e.,)18
b(the)g(handler)g(is)75 896 y(still)f(p)q(osted)e(with)h(the)f(request,)g
(and)g(will)i(b)q(e)f(in)o(v)o(ok)o(ed)f(again)g(next)h(time)f(the)h(request)
f(completes.)189 1002 y Fi(A)n(dvic)n(e)h(to)h(users.)47 b
Ft(If)16 b(a)g(user)g(attempts)g(to)f(cancel)j(a)d(request)i(after)e(the)h
(handler)i(asso)q(ciated)189 1059 y(with)g(this)h(request)f(has)h(executed,)g
(then)g(it)g(ma)o(y)e(b)q(e)i(using)g(an)g(in)o(v)m(alid,)i(\\dangling")e
(handle)189 1115 y(to)f(a)g(request)h(that)e(has)i(b)q(een)h(deallo)q(cated.)
31 b(T)l(o)18 b(a)o(v)o(oid)h(this,)g(one)g(will)h(need)g(additional)g(co-)
189 1172 y(ordination)d(co)q(de)g(b)q(et)o(w)o(een)f(handler)i(and)e(user)h
(pro)q(cess.)24 b(E.g.,)15 b(the)i(handle)g(could)h(b)q(e)f(passed)189
1228 y(as)f(an)h(extra)p 417 1228 V 16 w(state)f(argumen)o(t)g(to)g(the)h
(handler,)h(whic)o(h)g(w)o(ould)f(then)g(set)g(it)g(to)f(NULL)i(b)q(efore)189
1285 y(deallo)q(cating)e(the)g(request.)k(\()p Fi(End)15 b(of)i(advic)n(e)f
(to)g(users.)p Ft(\))189 1391 y Fi(R)n(ationale.)38 b Ft(Con)o(tin)o(ued)12
b(access)g(to)g(the)g(request)g(after)g(a)f(handler)j(w)o(as)d(p)q(osted)h
(allo)o(ws)h(the)f(user)189 1447 y(to)f(cancel)i(a)f(p)q(osted)g(op)q
(eration.)19 b(The)12 b(user)g(can)h(prev)o(en)o(t)e(races)h(using)h
Fm(MPI)p 1506 1447 V 16 w(HANDLER)p 1730 1447 V 17 w(LOCK)p
Ft(.)189 1522 y(W)l(e)19 b(allo)o(w)g(most)g(\015exibilit)o(y)i(in)f(the)f
(handler)i(co)q(de,)f(b)o(y)f(passing)h(the)f(request)g(handle)h(as)f(an)189
1579 y(argumen)o(t.)28 b(If)18 b(the)h(handler)g(needs)g(access)f(to)g(the)g
(comm)o(unicator)g(used)h(b)o(y)f(the)g(op)q(eration,)189 1635
y(then)c(this)h(information)f(can)g(b)q(e)h(passed)f(using)h(the)g
Fm(extra)p 1204 1635 V 16 w(state)g Ft(argumen)o(t.)k(If)14
b(it)h(needs)g(access)189 1692 y(to)10 b(the)h(op)q(eration)g(status,)g(then)
g(it)g(can)g(obtain)g(the)g(status)f(b)o(y)h(calling)i Fm(MPI)p
1501 1692 V 16 w(TEST)p Ft(,)e Fm(MPI)p 1737 1692 V 15 w(W)l(AIT)p
Ft(,)189 1748 y(or)20 b(one)h(of)f(the)h(related)g(functions;)j(this)d(call)h
(will)g(also)f(deallo)q(cate)h(the)f(request)f(ob)s(ject,)h(if)189
1805 y(nonp)q(ersisten)o(t.)j(If)16 b(comm)o(unicator)g(or)g(status)g(are)g
(not)g(needed,)h(then)g(the)g(handler)g(need)g(not)189 1861
y(access)e(them.)20 b(\()p Fi(End)15 b(of)i(r)n(ationale.)p
Ft(\))166 2044 y Fh(Alternativ)o(es)o(:)134 2118 y Fl(1.)22
b(W)m(e)14 b(can)i(sp)q(ecify)f(that)h(the)f(request)i(is)e(automatically)d
(mark)o(ed)i(completed)h(\(and)g(deleted,)h(if)e(nonp)q(er-)189
2168 y(sisten)o(t\))f(after)f(the)g(handler)g(completes)g(execution.)18
b(This)12 b(a)o(v)o(oids)f(some)g(user)i(co)q(de)g(in)e(the)i(handler,)f(but)
189 2218 y(complicates)f(the)h(implemen)o(tation,)d(b)q(ecause)k(a)f(call)f
(to)h Fk(MPI)p 1171 2218 13 2 v 14 w(TEST)h Fl(or)f Fk(MPI)p
1426 2218 V 14 w(W)m(AIT)f Fl(inside)h(the)h(handler)189 2268
y(co)q(de)h(ma)o(y)e(ha)o(v)o(e)i(already)g(mark)o(ed)e(to)i(request)h(as)f
(complete,)f(and)h(p)q(ossibly)g(deleted)h(it.)134 2342 y(2.)22
b(W)m(e)12 b(can)h(sp)q(ecify)g(\(as)g(in)g(the)g(previous)g(v)o(ersion)g(of)
g(this)f(do)q(cumen)o(t\))h(that)g(the)g(request)i(is)d(not)h(passed)h(as)189
2392 y(an)h(explicit)h(argumen)o(t)f(to)h(the)g(handler.)24
b(Instead,)17 b(the)g(handler)f(is)g(passed)h(the)f(status)h(ob)r(ject.)25
b(This)189 2442 y(has)14 b(t)o(w)o(o)f(disadv)n(an)o(tages:)213
2523 y(\(a\))23 b(W)m(e)13 b(alw)o(a)o(ys)g(need)i(to)f(allo)q(cate)f(and)h
(set)g(the)h(status)g(ob)r(ject,)f(ev)o(en)g(if)f(it)h(is)g(not)f(required.)
211 2589 y(\(b\))23 b(W)m(e)12 b(do)h(not)g(ha)o(v)o(e)g(the)h(\015exibilit)o
(y)d(of)h(deciding,)h(within)f(the)i(handler)f(co)q(de,)h(whether)g(the)g
(\(p)q(ersis-)289 2639 y(ten)o(t\))g(request)i(should)d(b)q(e)i(deallo)q
(cated.)-32 46 y Fj(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 26 26
bop 75 -100 a Ft(26)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)134 49 y Fl(3.)22 b(W)m(e)10 b(could)g(sp)q(ecify)i(that)e(the)h
(request)i(b)q(ecomes)e(inaccessible)g(after)g(the)g(handler)g(is)f(p)q
(osted.)18 b(This)11 b(a)o(v)o(oids)189 99 y(the)k(problem)e(of)h(dangling)g
(p)q(oin)o(ters.)21 b(But,)15 b(then,)g(the)g(user)h(cannot)f(cancel)g(suc)o
(h)h(request.)22 b(Also,)14 b(this)189 149 y(in)o(tro)q(duces)21
b(an)f(asymmetry)f(b)q(et)o(w)o(een)i(p)q(ersisten)o(t)h(and)f(nonp)q
(ersisten)o(t)h(requests.)39 b(\(The)21 b(p)q(ersisten)o(t)189
199 y(requests)15 b(are)g(accessible)g(after)f(the)h(handler)f(is)f(p)q
(osted;)i(do)e(w)o(e)i(allo)o(w)d(there)j(calls)e(to)h(cancel?\))134
273 y(4.)22 b(Ma)o(y)13 b(prefer)i(handlers)f(to)g(b)q(e)h(nonp)q(ersisten)o
(t,)g(ev)o(en)f(if)f(the)i(request)g(is)f(p)q(ersisten)o(t.)75
532 y Fm(MPI)p 160 532 14 2 v 16 w(HANDLER)p 384 532 V 17 w(LOCK\(\))75
636 y Fp(int)23 b(MPI)p 245 636 15 2 v 17 w(Handler)p 430 636
V 16 w(lock\(\))75 722 y(MPI)p 150 722 V 17 w(HANDLER)p 335
722 V 16 w(LOCK\()g(IERR\))170 779 y(INTEGER)g(IERR)75 959
y Fm(MPI)p 160 959 14 2 v 16 w(HANDLER)p 384 959 V 17 w(UNLOCK\(\))75
1063 y Fp(int)g(MPI)p 245 1063 15 2 v 17 w(Handler)p 430 1063
V 16 w(unlock\(\))75 1150 y(MPI)p 150 1150 V 17 w(HANDLER)p
335 1150 V 16 w(UNLOCK\()g(IERR\))170 1206 y(INTEGER)g(IERR)166
1293 y Ft(The)10 b(call)i Fm(MPI)p 418 1293 14 2 v 15 w(HANDLER)p
641 1293 V 17 w(LOCK)e Ft(disables)i(the)e(execution)h(of)f(comm)o(unication)
h(handlers)g(p)q(osted)75 1349 y(b)o(y)k(the)f(calling)j(thread.)i(The)c
(call)h Fm(MPI)p 781 1349 V 16 w(HANDLER)p 1005 1349 V 17 w(UNLOCK)e
Ft(enables)i(them)f(bac)o(k.)k(The)c(calls)h(can)75 1405 y(b)q(e)g(executed)f
(within)i(a)d(handler,)i(in)f(whic)o(h)h(case)f Fm(MPI)p 1043
1405 V 16 w(HANDLER)p 1267 1405 V 17 w(LOCK)g Ft(disables)h(execution)g(of)e
(of)75 1462 y(the)h(thread)g(that)g(p)q(osted)g(the)h(handler)g(and)f(of)g
(an)o(y)g(additional)h(handler)h(p)q(osted)e(b)o(y)g(that)g(thread)166
1518 y(If)j(a)g(thread)g(is)h(blo)q(c)o(k)o(ed)g(b)q(ecause)g(of)f(an)g
(explicit)i(m)o(utex)e(call)h(\(in)g(a)f(m)o(ultithreaded)h(en)o(viron-)75
1575 y(men)o(t\),)f(or)g(a)g(blo)q(c)o(king)i(system)e(call,)i(then)f
(handlers)g(p)q(osted)g(b)o(y)f(this)h(thread)f(are)g(also)h(prev)o(en)o(ted)
75 1631 y(from)c(executing.)24 b(On)16 b(the)h(other)e(hand,)i(if)f(a)g
(thread)g(is)g(blo)q(c)o(k)o(ed)h(b)q(ecause)g(of)f(a)g(blo)q(c)o(king)h(MPI)
f(call,)75 1688 y(e.g.,)e Fm(MPI)p 256 1688 V 16 w(W)l(AIT)p
Ft(,)h(then,)g(handlers)h(p)q(osted)f(b)o(y)g(the)h(blo)q(c)o(k)o(ed)g
(thread)f(ma)o(y)f(still)j(execute.)166 1744 y(Handlers)f(can)f(execute)h
(MPI)f(calls)i(or)d(system)h(calls,)h(with)f(no)h(restrictions.)189
1850 y Fi(R)n(ationale.)72 b Ft(The)21 b(seman)o(tics)g(of)f(comm)o
(unication)h(handlers)h(should)g(accommo)q(date)e(b)q(oth)189
1907 y(single-threaded)h(and)f(m)o(ulti-threaded)h(en)o(vironmen)o(ts,)g(and)
f(pro)o(vide)h(reasonable)f(compati-)189 1963 y(bilit)o(y)f(b)q(et)o(w)o(een)
f(these)f(t)o(w)o(o.)26 b(Thread)17 b(sync)o(hronization)i(concepts)f(should)
g(not)g(a\013ect)e(single-)189 2020 y(threaded)c(implemen)o(tations.)20
b(T)l(o)13 b(ac)o(hiev)o(e)f(that,)g(w)o(e)g(need)i(reasonable)e(comp)q
(ositional)i(seman-)189 2076 y(tics)g(for)g(MPI)g(handler)h(exclusion)h
(calls)g(\()p Fm(MPI)p 1005 2076 V 15 w(HANDLER)p 1228 2076
V 17 w(LOCK)e Ft(and)h(the)f(m)o(utual)g(exclusion)189 2133
y(primitiv)o(es)i(of)f(the)g(thread)g(pac)o(k)m(age\).)189
2208 y(The)k(curren)o(t)g(de\014nition)i(aims)e(at)g(ac)o(hieving)h(these)f
(goals.)32 b(In)19 b(a)g(single-threaded)i(en)o(viron-)189
2264 y(men)o(t)e(one)g(needs)h(to)f(pro)o(vide)g(a)g(m)o(utual)h(exclusion)h
(mec)o(hanism)f(b)q(et)o(w)o(een)f(main)h(user)f(co)q(de)189
2321 y(and)f(async)o(hronous)f(handlers.)28 b(The)18 b(call)h(to)e
Fm(MPI)p 1095 2321 V 16 w(HANDLER)p 1319 2321 V 17 w(LOCK)g
Ft(supp)q(orts)h(m)o(utual)g(ex-)189 2377 y(clusion)d(b)q(et)o(w)o(een)f
(handlers)g(and)g(user)g(co)q(de.)20 b(In)14 b(a)g(m)o(ulti-threaded)g(en)o
(vironmen)o(t,)g(the)g(thread)189 2434 y(sync)o(hronization)20
b(functions)g(can)f(b)q(e)h(use)g(b)o(y)f(one)h(thread)f(or)f(b)o(y)i(the)f
(handlers)h(this)g(thread)189 2490 y(p)q(osted)11 b(to)g(protect)f(themselv)o
(es)i(against)f(other)f(threads,)i(and)f(their)h(asso)q(ciated)f(handlers.)20
b(The)189 2547 y Fm(MPI)p 274 2547 V 15 w(HANDLER)p 497 2547
V 17 w(LOCK)f Ft(call)h(can)e(b)q(e)i(used)f(for)f(m)o(utual)h(exclusion)h(b)
q(et)o(w)o(een)f(a)f(user)h(thread)189 2603 y(and)c(the)g(handlers)i(this)e
(thread)g(p)q(osted.)20 b(\()p Fi(End)c(of)g(r)n(ationale.)p
Ft(\))1967 46 y Fj(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959
554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780
y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 27 27
bop 75 -100 a Fn(4.10.)34 b(COMMUNICA)l(TION)16 b(HANDLERS)939
b Ft(27)189 49 y Fi(A)n(dvic)n(e)18 b(to)h(implementors.)59
b Ft(A)19 b(simple)h(mec)o(hanism)f(to)f(ac)o(hiev)o(e)h(the)f(desired)i
(seman)o(tics)e(in)189 106 y(a)e(m)o(ultithreaded)i(en)o(vironmen)o(t,)g(is)f
(to)g(sp)q(ecify)h(that)e(handlers)i(are)f(alw)o(a)o(ys)f(executed)i(in)g
(the)189 162 y(con)o(text)c(of)h(the)g(thread)g(that)g(p)q(osted)g(them.)189
237 y(An)i(implemen)o(tation)i(that)d(disables)j(all)g(handlers,)f(not)f
(just)g(those)g(asso)q(ciated)h(with)f Fm(comm)m Ft(,)189 294
y(is)e(incorrect)h(\(it)f(violates)h(the)f(progress)g(rule\).)20
b(\()p Fi(End)c(of)g(advic)n(e)g(to)h(implementors.)p Ft(\))166
475 y Fh(Discussion:)48 b Fl(The)17 b(previous)h(v)o(ersion)f(of)g(this)g
(text)h(had)f(handler)h(lo)q(c)o(ks)f(that)h(w)o(ere)g(sp)q(eci\014c)h(to)e
(one)75 525 y(comm)o(unicator)7 b({)i(the)h(call)e Fk(MPI)p
587 525 13 2 v 14 w(HANDLER)p 791 525 V 16 w(LOCK)h Fl(had)g(a)g
Fk(comm)s Fl(argumen)o(t)f(and)i(it)e(w)o(ould)h(lo)q(c)o(k)g(only)f
(handlers)75 574 y(asso)q(ciated)k(with)f(that)g(comm)o(unicator,)d(p)q
(osted)k(b)o(y)f(the)h(calling)e(thread.)18 b(The)11 b(problem)f(is)h(that)g
(this)g(de\014nition)75 624 y(mak)o(es)g(little)f(sense)k(when)e(the)g(lo)q
(c)o(k)f(call)g(is)h(made)e(b)o(y)i(a)f(handler:)17 b(Do)11
b(w)o(e)h(require)h(that)e(the)i Fk(comm)5 b Fl(b)q(e)13 b(iden)o(tical)75
674 y(to)j(the)h(comm)o(unicator)d(the)j(calling)e(handler)h(is)h(asso)q
(ciated?)26 b(Also,)16 b(the)h(lo)q(c)o(k)g(prev)o(en)o(ts)g(the)g(calling)e
(thread)75 724 y(from)d(executing,)i(but)g(the)h(execution)g(of)e(this)h
(thread)g(is)g(not)g(\\comm)o(unicator)d(sp)q(eci\014c")k(in)e(an)o(y)h
(sense.)166 780 y(The)h(curren)o(t)h(de\014nition)e(is)h(easier)g(to)g
(implemen)o(t,)c(and)k(is)f(unlik)o(ely)g(to)g(cause)i(signi\014can)o(t)e(p)q
(erformance)75 837 y(problems.)166 1052 y Fh(Alternativ)o(es)o(:)31
b Fl(Additional)8 b(functionalit)o(y)h(ma)o(y)f(b)q(e)i(pro)o(vided)g(for)g
(b)q(etter)i(sync)o(hronization)e(and)f(b)q(etter)75 1102 y(supp)q(ort)15
b(in)e(a)h(m)o(ulti-threaded)e(en)o(vironmen)o(t.)17 b(E.g.)134
1176 y(1.)22 b(Recursiv)o(e)12 b(lo)q(c)o(ks,)g(rather)g(than)g(simple)e(lo)q
(c)o(ks.)17 b(E.g.,)10 b(to)i(allo)o(w)e(a)h(handler)h(to)f(return)i(con)o
(trol)e(to)h(another)189 1226 y(handler,)h(without)h(releasing)g(the)g(lo)q
(c)o(k.)134 1300 y(2.)22 b(Abilit)o(y)14 b(to)i(p)q(ost)g(handlers)g(that)g
(can)g(execute)i(in)d(their)h(o)o(wn)f(thread,)i(or)f(in)f(an)o(y)g(thread,)i
(in)e(a)g(m)o(ulti-)189 1350 y(threaded)g(en)o(vironmen)o(t.)134
1424 y(3.)22 b(Finer)14 b(or)g(coarser)h(lo)q(c)o(king)75 1683
y Fm(MPI)p 160 1683 14 2 v 16 w(POST)p 294 1683 V 17 w(ANY)p
403 1683 V 17 w(HANDLER\(count,)h(requests,)h(extra)p 1057
1683 V 17 w(state,)f(handler\))117 1760 y Fl(IN)155 b Fm(count)482
b Fl(n)o(um)o(b)q(er)13 b(of)h(requests)i(\(in)o(teger\))117
1835 y(IN)155 b Fm(requests)435 b Fl(comm)o(unication)11 b(requests)k(\(arra)
o(y)f(of)g(handles\))117 1910 y(IN)155 b Fm(extra)p 416 1910
V 17 w(state)384 b Fl(extra)15 b(state)f(for)g(handler)117
1985 y(IN)155 b Fm(handler)449 b Fl(receiv)o(e)15 b(handler)f(\(function\))75
2109 y Fp(int)23 b(MPI)p 245 2109 15 2 v 17 w(Post)p 358 2109
V 17 w(any)p 447 2109 V 17 w(handler\(int)f(count,)h(MPI)p
989 2109 V 17 w(Request)g(*requests,)f(void)393 2166 y(*extra)p
540 2166 V 17 w(state,)h(MPI)p 796 2166 V 16 w(Request)p 980
2166 V 17 w(handler)f(handler\))75 2252 y(MPI)p 150 2252 V
17 w(POST)p 263 2252 V 16 w(ANY)p 351 2252 V 17 w(HANDLER\(COUNT,)g
(REQUESTS,)h(EXTRA)p 1085 2252 V 16 w(STATE,)g(HANDLER,)g(IERROR\))170
2309 y(<type>)g(BUF\(*\))170 2365 y(INTEGER)g(REQUESTS\(*\),)g(EXTRA)p
795 2365 V 16 w(STATE,)g(IERROR)170 2422 y(PROCEDURE)g(HANDLER)166
2508 y Ft(P)o(osts)17 b(handlers)i(for)f(an)g(arra)o(y)g(of)f(requests.)30
b(A)18 b(handler)i(will)g(b)q(e)f(in)o(v)o(ok)o(ed,)g(with)f(a)g(complete)75
2564 y(request)d(as)g(argumen)o(t,)f(as)h(so)q(on)g(as)g(one)g(of)g(the)g
(requests)g(in)h(the)g(list)g(complete.)166 2704 y Fh(Discussion:)34
b Fl(Ma)o(y)13 b(w)o(an)o(t)h(an)f(arra)o(y)h(of)f(handlers,)h(to)g(matc)o(h)
f(the)h(arra)o(y)g(of)f(requests.)-32 46 y Fj(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 28 28
bop 75 -100 a Ft(28)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(POST)p 294 49 V
17 w(ALL)p 391 49 V 16 w(HANDLER\(count,)h(requests,)h(extra)p
1044 49 V 16 w(state,)g(handler\))117 126 y Fl(IN)155 b Fm(count)482
b Fl(n)o(um)o(b)q(er)13 b(of)h(requests)i(\(in)o(teger\))117
202 y(IN)155 b Fm(requests)435 b Fl(comm)o(unication)11 b(requests)k(\(arra)o
(y)f(of)g(handles\))117 277 y(IN)155 b Fm(extra)p 416 277 V
17 w(state)384 b Fl(extra)15 b(state)f(for)g(handler)117 352
y(IN)155 b Fm(handler)449 b Fl(receiv)o(e)15 b(handler)f(\(function\))75
476 y Fp(int)23 b(MPI)p 245 476 15 2 v 17 w(Post)p 358 476
V 17 w(all)p 447 476 V 17 w(handler\(int)f(count,)h(MPI)p 989
476 V 17 w(Request)g(*requests,)f(void)393 533 y(*extra)p 540
533 V 17 w(state,)h(MPI)p 796 533 V 16 w(Request)p 980 533
V 17 w(handler)f(handler\))75 619 y(MPI)p 150 619 V 17 w(POST)p
263 619 V 16 w(ALL)p 351 619 V 17 w(HANDLER\(COUNT,)g(REQUESTS,)h(EXTRA)p
1085 619 V 16 w(STATE,)g(HANDLER,)g(IERROR\))170 676 y(<type>)g(BUF\(*\))170
732 y(INTEGER)g(REQUESTS\(*\),)g(EXTRA)p 795 732 V 16 w(STATE,)g(IERROR)170
789 y(PROCEDURE)g(HANDLER)166 875 y Ft(P)o(osts)16 b(handlers)j(for)d(an)i
(arra)o(y)e(of)h(requests.)26 b(The)18 b(handler)h(will)g(b)q(e)f(in)o(v)o
(ok)o(ed,)g(for)e(eac)o(h)i(of)f(the)75 932 y(requests,)e(in)h(some)f
(arbitrary)f(order,)h(when)g(all)i(the)e(requests)g(in)h(the)f(list)h
(complete.)75 1082 y Fm(MPI)p 160 1082 14 2 v 16 w(POST)p 294
1082 V 17 w(SOME)p 436 1082 V 17 w(HANDLER\(count,)g(requests,)h(extra)p
1090 1082 V 17 w(state,)f(handler\))117 1160 y Fl(IN)155 b
Fm(count)482 b Fl(n)o(um)o(b)q(er)13 b(of)h(requests)i(\(in)o(teger\))117
1235 y(IN)155 b Fm(requests)435 b Fl(comm)o(unication)11 b(requests)k(\(arra)
o(y)f(of)g(handles\))117 1310 y(IN)155 b Fm(extra)p 416 1310
V 17 w(state)384 b Fl(extra)15 b(state)f(for)g(handler)117
1385 y(IN)155 b Fm(handler)449 b Fl(receiv)o(e)15 b(handler)f(\(function\))75
1510 y Fp(int)23 b(MPI)p 245 1510 15 2 v 17 w(Post)p 358 1510
V 17 w(some)p 471 1510 V 16 w(handler\(int)g(count,)g(MPI)p
1013 1510 V 17 w(Request)g(*requests,)f(void)393 1566 y(*extra)p
540 1566 V 17 w(state,)h(MPI)p 796 1566 V 16 w(Request)p 980
1566 V 17 w(handler)f(handler\))75 1652 y(MPI)p 150 1652 V
17 w(POST)p 263 1652 V 16 w(SOME)p 375 1652 V 17 w(HANDLER\(COUNT,)g
(REQUESTS,)h(EXTRA)p 1109 1652 V 16 w(STATE,)g(HANDLER,)g(IERROR\))170
1709 y(<type>)g(BUF\(*\))170 1765 y(INTEGER)g(REQUESTS\(*\),)g(EXTRA)p
795 1765 V 16 w(STATE,)g(IERROR)170 1822 y(PROCEDURE)g(HANDLER)166
1908 y Ft(P)o(osts)11 b(handlers)i(for)e(an)h(arra)o(y)e(of)i(requests.)18
b(The)13 b(handler)f(will)i(b)q(e)f(in)o(v)o(ok)o(ed,)f(for)f(all)i(the)f
(requests)75 1965 y(that)i(completed,)i(in)g(some)f(arbitrary)g(order,)f
(when)i(some)f(of)g(the)g(requests)g(in)h(the)f(list)h(complete.)1967
46 y Fj(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF
-------------------
Marc Snir
IBM T.J. Watson Research Center
P.O. Box 218, Yorktown Heights, NY 10598
email: snir@watson.ibm.com
phone: 914-945-3204
fax: 914-945-4425